From b1cb070e31478bca9a28382cf93e9e19979424c7 Mon Sep 17 00:00:00 2001 From: Carlo Sala Date: Tue, 26 Sep 2023 11:21:26 +0200 Subject: [PATCH 1/4] update zxlib and sdks --- deps/ledger-zxlib | 2 +- deps/nanos-secure-sdk | 2 +- deps/nanosplus-secure-sdk | 2 +- deps/nanox-secure-sdk | 2 +- deps/stax-secure-sdk | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/deps/ledger-zxlib b/deps/ledger-zxlib index ca77800..b5e1e7d 160000 --- a/deps/ledger-zxlib +++ b/deps/ledger-zxlib @@ -1 +1 @@ -Subproject commit ca77800fd77065df82283e01955c2fa4c1c067ae +Subproject commit b5e1e7d6d99153cd42d0cca19c3acd66aed39340 diff --git a/deps/nanos-secure-sdk b/deps/nanos-secure-sdk index 131fb8f..12e5f6f 160000 --- a/deps/nanos-secure-sdk +++ b/deps/nanos-secure-sdk @@ -1 +1 @@ -Subproject commit 131fb8f2842ebf3caf513357e9c992fa2b0120f6 +Subproject commit 12e5f6f875bf5deb9464b944f50079aaca1a3b98 diff --git a/deps/nanosplus-secure-sdk b/deps/nanosplus-secure-sdk index c034a7e..94d7aa3 160000 --- a/deps/nanosplus-secure-sdk +++ b/deps/nanosplus-secure-sdk @@ -1 +1 @@ -Subproject commit c034a7e53659cfb3c670a7a6f75871231eaca872 +Subproject commit 94d7aa340f6393bedd83fe4275497a2898d2273c diff --git a/deps/nanox-secure-sdk b/deps/nanox-secure-sdk index 16328b8..7b829b7 160000 --- a/deps/nanox-secure-sdk +++ b/deps/nanox-secure-sdk @@ -1 +1 @@ -Subproject commit 16328b8049f4e49d41e2e5392f4e8ec234f65a4d +Subproject commit 7b829b7044b8ecdff07bc5d1b61b644e9342e584 diff --git a/deps/stax-secure-sdk b/deps/stax-secure-sdk index 11fdad0..af0acac 160000 --- a/deps/stax-secure-sdk +++ b/deps/stax-secure-sdk @@ -1 +1 @@ -Subproject commit 11fdad04784f4b802cb9a096d5751e653a851eab +Subproject commit af0acac6afaadbabffe0571d48652406f49dd5a7 From 71299dd7364fb338828528c979260a9b6ea16e24 Mon Sep 17 00:00:00 2001 From: Carlo Sala Date: Tue, 26 Sep 2023 11:29:01 +0200 Subject: [PATCH 2/4] add some safety checks and clarify error codes --- app/src/crypto.c | 17 ++++++++++------- app/src/crypto_helper.c | 8 ++++---- app/src/substrate/substrate_types.c | 20 ++++++++++++++++++-- 3 files changed, 32 insertions(+), 13 deletions(-) diff --git a/app/src/crypto.c b/app/src/crypto.c index 123a055..d5f3fe3 100644 --- a/app/src/crypto.c +++ b/app/src/crypto.c @@ -30,7 +30,7 @@ uint32_t hdPath[HDPATH_LEN_DEFAULT]; static zxerr_t crypto_extractPublicKey(key_kind_e addressKind, uint8_t *pubKey, uint16_t pubKeyLen) { if (pubKey == NULL || pubKeyLen < PK_LEN_25519) { - return zxerr_invalid_crypto_settings; + return zxerr_buffer_too_small; } zxerr_t error = zxerr_unknown; @@ -86,8 +86,8 @@ static zxerr_t crypto_extractPublicKey(key_kind_e addressKind, uint8_t *pubKey, } zxerr_t crypto_sign_ed25519(uint8_t *signature, uint16_t signatureMaxlen, const uint8_t *message, uint16_t messageLen) { - if (signature == NULL || message == NULL || signatureMaxlen < SIG_PLUS_TYPE_LEN) { - return zxerr_unknown; + if (signature == NULL || message == NULL || signatureMaxlen < SIG_PLUS_TYPE_LEN || messageLen == 0) { + return zxerr_buffer_too_small; } cx_ecfp_private_key_t cx_privateKey; uint8_t privateKeyData[SK_LEN_25519] = {0}; @@ -147,7 +147,7 @@ void zeroize_sr25519_signdata(void) { } zxerr_t copy_sr25519_signdata(uint8_t *buffer, uint16_t bufferLen) { - if (SIG_PLUS_TYPE_LEN > bufferLen) { + if (buffer == NULL || SIG_PLUS_TYPE_LEN > bufferLen) { return zxerr_buffer_too_small; } @@ -156,6 +156,9 @@ zxerr_t copy_sr25519_signdata(uint8_t *buffer, uint16_t bufferLen) { } static zxerr_t crypto_sign_sr25519_helper(const uint8_t *data, size_t len) { + if (data == NULL || len == 0) { + return zxerr_buffer_too_small; + } uint8_t privateKeyData[SK_LEN_25519] = {0}; uint8_t pubkey[PK_LEN_25519] = {0}; @@ -193,8 +196,8 @@ static zxerr_t crypto_sign_sr25519_helper(const uint8_t *data, size_t len) { } zxerr_t crypto_sign_sr25519(const uint8_t *message, size_t messageLen) { - if (message == NULL) { - return zxerr_unknown; + if (message == NULL || messageLen == 0) { + return zxerr_buffer_too_small; } uint8_t messageDigest[BLAKE2B_DIGEST_SIZE] = {0}; @@ -217,7 +220,7 @@ zxerr_t crypto_sign_sr25519(const uint8_t *message, size_t messageLen) { zxerr_t crypto_fillAddress(key_kind_e addressKind, uint8_t *buffer, uint16_t bufferLen, uint16_t *addrResponseLen) { if (bufferLen < PK_LEN_25519 + SS58_ADDRESS_MAX_LEN) { - return zxerr_unknown; + return zxerr_buffer_too_small; } MEMZERO(buffer, bufferLen); CHECK_ZXERR(crypto_extractPublicKey(addressKind, buffer, bufferLen)) diff --git a/app/src/crypto_helper.c b/app/src/crypto_helper.c index 28c6a63..a7af7c6 100644 --- a/app/src/crypto_helper.c +++ b/app/src/crypto_helper.c @@ -73,8 +73,8 @@ uint16_t crypto_SS58EncodePubkey(uint8_t *buffer, uint16_t buffer_len, } MEMZERO(buffer, buffer_len); - uint8_t hash[64]; - uint8_t unencoded[36]; + uint8_t hash[64] = {0}; + uint8_t unencoded[36] = {0}; const uint8_t prefixSize = crypto_SS58CalculatePrefix(addressType, unencoded); if (prefixSize == 0) { @@ -83,7 +83,7 @@ uint16_t crypto_SS58EncodePubkey(uint8_t *buffer, uint16_t buffer_len, memcpy(unencoded + prefixSize, pubkey, 32); // account id if (ss58hash((uint8_t *) unencoded, 32 + prefixSize, hash, 64) != CX_OK) { - MEMZERO(buffer, buffer_len); + MEMZERO(unencoded, sizeof(unencoded)); return 0; } unencoded[32 + prefixSize] = hash[0]; @@ -91,7 +91,7 @@ uint16_t crypto_SS58EncodePubkey(uint8_t *buffer, uint16_t buffer_len, size_t outLen = buffer_len; if (encode_base58(unencoded, 34 + prefixSize, buffer, &outLen) != 0) { - MEMZERO(buffer, buffer_len); + MEMZERO(unencoded, sizeof(unencoded)); return 0; } diff --git a/app/src/substrate/substrate_types.c b/app/src/substrate/substrate_types.c index a669a20..06a1306 100644 --- a/app/src/substrate/substrate_types.c +++ b/app/src/substrate/substrate_types.c @@ -244,6 +244,7 @@ parser_error_t _readClaim(parser_context_t* c, pd_Claim_t* v) parser_error_t _readDispatchableNames(parser_context_t* c, pd_DispatchableNames_t* v) { + CHECK_INPUT() CHECK_ERROR(_readUInt8(c, &v->value)) switch (v->value) { case 0: // Whole @@ -427,6 +428,7 @@ parser_error_t _readTax(parser_context_t* c, pd_Tax_t* v) parser_error_t _readAssetPermissions(parser_context_t* c, pd_AssetPermissions_t* v) { + CHECK_INPUT() CHECK_ERROR(_readUInt8(c, &v->value)) switch (v->value) { case 0: // Whole @@ -475,6 +477,7 @@ parser_error_t _readDocumentType(parser_context_t* c, pd_DocumentType_t* v) parser_error_t _readExtrinsicPermissions(parser_context_t* c, pd_ExtrinsicPermissions_t* v) { + CHECK_INPUT() CHECK_ERROR(_readUInt8(c, &v->value)) switch (v->value) { case 0: // Whole @@ -547,6 +550,7 @@ parser_error_t _readMultiSignature(parser_context_t* c, pd_MultiSignature_t* v) parser_error_t _readPortfolioPermissions(parser_context_t* c, pd_PortfolioPermissions_t* v) { + CHECK_INPUT() CHECK_ERROR(_readUInt8(c, &v->value)) switch (v->value) { case 0: // Whole @@ -801,6 +805,7 @@ parser_error_t _readPermissions(parser_context_t* c, pd_Permissions_t* v) parser_error_t _readPipId(parser_context_t* c, pd_PipId_t* v) { + CHECK_INPUT() CHECK_ERROR(_readUInt32(c, &v->value)) return parser_ok; } @@ -916,6 +921,7 @@ parser_error_t _readBecomeAgent(parser_context_t* c, pd_BecomeAgent_t* v) parser_error_t _readBeneficiary(parser_context_t* c, pd_Beneficiary_t* v) { + CHECK_INPUT() CHECK_ERROR(_readIdentityId(c, &v->identity)) CHECK_ERROR(_readBalance(c, &v->balance)) return parser_ok; @@ -992,12 +998,14 @@ parser_error_t _readCreateChildIdentityWithAuthAccountId(parser_context_t* c, pd parser_error_t _readCustomAssetTypeId(parser_context_t* c, pd_CustomAssetTypeId_t* v) { + CHECK_INPUT() CHECK_ERROR(_readUInt32(c, &v->value)) return parser_ok; } parser_error_t _readDocumentId(parser_context_t* c, pd_DocumentId_t* v) { + CHECK_INPUT() CHECK_ERROR(_readUInt32(c, &v->value)) return parser_ok; } @@ -1066,6 +1074,7 @@ parser_error_t _readLeg(parser_context_t* c, pd_Leg_t* v) parser_error_t _readLocalCAId(parser_context_t* c, pd_LocalCAId_t* v) { + CHECK_INPUT() CHECK_ERROR(_readUInt32(c, &v->value)) return parser_ok; } @@ -1219,6 +1228,7 @@ parser_error_t _readTupleExtrinsicIdbool(parser_context_t* c, pd_TupleExtrinsicI parser_error_t _readTupleIdentityIdbool(parser_context_t* c, pd_TupleIdentityIdbool_t* v) { + CHECK_INPUT() CHECK_ERROR(_readIdentityId(c, &v->identity)) CHECK_ERROR(_readBool(c, &v->val)) return parser_ok; @@ -1424,6 +1434,7 @@ parser_error_t _readCAId(parser_context_t* c, pd_CAId_t* v) parser_error_t _readCodeHash(parser_context_t* c, pd_CodeHash_t* v) { + CHECK_INPUT() CHECK_ERROR(_readHash(c, &v->hash)) return parser_ok; } @@ -1558,6 +1569,7 @@ parser_error_t _readVecCall(parser_context_t* c, pd_VecCall_t* v) parser_error_t _readAGId(parser_context_t* c, pd_AGId_t* v) { + CHECK_INPUT() CHECK_ERROR(_readUInt32(c, &v->value)) return parser_ok; } @@ -1695,6 +1707,7 @@ parser_error_t _readPortfolioName(parser_context_t* c, pd_PortfolioName_t* v) parser_error_t _readPosRatio(parser_context_t* c, pd_PosRatio_t* v) { + CHECK_INPUT() CHECK_ERROR(_readUInt32(c, &v->numerator)) CHECK_ERROR(_readUInt32(c, &v->denominator)) return parser_ok; @@ -1702,12 +1715,14 @@ parser_error_t _readPosRatio(parser_context_t* c, pd_PosRatio_t* v) parser_error_t _readProposalIndex(parser_context_t* c, pd_ProposalIndex_t* v) { + CHECK_INPUT() CHECK_ERROR(_readUInt32(c, &v->value)) return parser_ok; } parser_error_t _readSkippedCount(parser_context_t* c, pd_SkippedCount_t* v) { + CHECK_INPUT() CHECK_ERROR(_readUInt8(c, &v->value)) return parser_ok; } @@ -2986,6 +3001,7 @@ parser_error_t _toStringMemo( uint8_t pageIdx, uint8_t* pageCount) { + CLEAN_AND_CHECK() if (formatBufferData(v->_ptr, v->_len, outValue, outValueLen, pageIdx, pageCount) != zxerr_ok) { return parser_print_not_supported; } @@ -3111,7 +3127,7 @@ parser_error_t _toStringCondition( *pageCount += pages[i]; } - if (pageIdx > *pageCount) { + if (pageIdx >= *pageCount) { return parser_display_idx_out_of_range; } @@ -4419,7 +4435,7 @@ parser_error_t _toStringCall( pageIdx--; - if (pageIdx > *pageCount) { + if (pageIdx >= *pageCount) { return parser_display_idx_out_of_range; } From 7ba12dabc1de2fcab3a58949456cf8965915c534 Mon Sep 17 00:00:00 2001 From: Carlo Sala Date: Tue, 26 Sep 2023 11:36:35 +0200 Subject: [PATCH 3/4] bump minimum spec version --- app/src/substrate/substrate_coin.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/substrate/substrate_coin.h b/app/src/substrate/substrate_coin.h index 0ecfba0..61317dd 100644 --- a/app/src/substrate/substrate_coin.h +++ b/app/src/substrate/substrate_coin.h @@ -55,7 +55,7 @@ typedef enum { #define SUPPORTED_TX_VERSION_CURRENT LEDGER_MAJOR_VERSION #define SUPPORTED_TX_VERSION_PREVIOUS (LEDGER_MAJOR_VERSION - 1) #define SUPPORTED_SPEC_VERSION (LEDGER_MINOR_VERSION + 0) -#define SUPPORTED_MINIMUM_SPEC_VERSION 0 +#define SUPPORTED_MINIMUM_SPEC_VERSION 6000000 #define COIN_AMOUNT_DECIMAL_PLACES 6 From 4c6c6291ad01caf4733e411731b540533560242f Mon Sep 17 00:00:00 2001 From: Carlo Sala Date: Tue, 26 Sep 2023 11:43:51 +0200 Subject: [PATCH 4/4] bump version --- app/Makefile.version | 2 +- tests_zemu/package.json | 2 +- tests_zemu/snapshots/s-mainmenu/00004.png | Bin 437 -> 447 bytes tests_zemu/snapshots/s-mainmenu/00010.png | Bin 437 -> 447 bytes tests_zemu/snapshots/sp-mainmenu/00004.png | Bin 408 -> 411 bytes tests_zemu/snapshots/sp-mainmenu/00010.png | Bin 408 -> 411 bytes tests_zemu/snapshots/st-mainmenu/00001.png | Bin 14084 -> 14089 bytes tests_zemu/snapshots/x-mainmenu/00004.png | Bin 408 -> 411 bytes tests_zemu/snapshots/x-mainmenu/00010.png | Bin 408 -> 411 bytes 9 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/Makefile.version b/app/Makefile.version index 1079fbd..88ffbd4 100644 --- a/app/Makefile.version +++ b/app/Makefile.version @@ -3,4 +3,4 @@ APPVERSION_M=4 # This is the `spec_version` field of `Runtime` APPVERSION_N=6000000 # This is the patch version of this release -APPVERSION_P=0 +APPVERSION_P=1 diff --git a/tests_zemu/package.json b/tests_zemu/package.json index e294c3d..ab6ac0e 100644 --- a/tests_zemu/package.json +++ b/tests_zemu/package.json @@ -19,7 +19,7 @@ }, "dependencies": { "@zondax/ledger-substrate": "^0.41.1", - "@zondax/zemu": "^0.44.0" + "@zondax/zemu": "^0.44.2" }, "devDependencies": { "@types/jest": "^29.2.6", diff --git a/tests_zemu/snapshots/s-mainmenu/00004.png b/tests_zemu/snapshots/s-mainmenu/00004.png index 81aa32862125287e9187fd06670668daab333171..273923d80cd1c4625e865df589d9510f88abca77 100644 GIT binary patch delta 421 zcmV;W0b2gG1HS{1B!7lUL_t(|ob8$0&Vw)rfV*XT{|ENMU34J`NDo$u%9lTXA~vPt zR9aICf*=T<%F9U4x@^^c3nP^Q1J`r5mI~gc+8q2~Z+s@}hs@x+=5(k7Nd% zZCS`AMeSDDW&i=3nA9jD=gxq)#C9-JG(8#YAR}!ZfX%@z&VMD{^RJ6M|8W(gsVhOP z>)wm3)`-Iu=Ewr@JUnTpGOq-2E9}{&zGG3w@cQF}she;P%&{FIo->s;VF%Qm14fmg z4%{^CC()Y$Vlx-CBkch-2F+=n|IQ1~dxXE*?=c79W6pHE?woB9du~H^>i~G?#|QTS z?8yoS+JwbZrGI`*g<;Cu0FcUcZx^JeNUH<%S})$%6t8!T<$S?)MwogRl+kM)x!Vzi z_>?+vcDI712}v;yCyoKq~CR zuyOznVMx*(+W0YZm4X8tSg_Sc`PB9GF>TYrL%S);l^*p6K@bE%5CjrGHz)JxDrFH3 P00000NkvXXu0mjf^rOa1 delta 411 zcmV;M0c8Ha1GNK?B!7HKL_t(|ob8$0&ch%GfZeja{{#1;yKo^CC?0B&Illb)lTss& zlS)$xf*=U~m4}g@eLJds7e*=r2CnCBEfqXXwK@2~-gr&c51GMzLxL0@_wD;19?1+i z+p>^LirTHP%>V*6F{x2R&Yb~oiS1ydXnHc(K}Om-0GoqboPSHY=ifJZ{_846Q&)mo z*L@aQtr3SS%#{V;d3e%HWnKy5Ryeau{fR{x!|RU^rf$MHFvp$<@tmo&2|J+f9x$o| zb>QZ}eiOYJARgv|cBDO^#-KUP^WS~pxkmV_=RM{Ce9f7T*PXKsV$Wm99vuMh{P*&EB9J>Gj002ovPDHLk FV1oQz!*c)t diff --git a/tests_zemu/snapshots/s-mainmenu/00010.png b/tests_zemu/snapshots/s-mainmenu/00010.png index 81aa32862125287e9187fd06670668daab333171..273923d80cd1c4625e865df589d9510f88abca77 100644 GIT binary patch delta 421 zcmV;W0b2gG1HS{1B!7lUL_t(|ob8$0&Vw)rfV*XT{|ENMU34J`NDo$u%9lTXA~vPt zR9aICf*=T<%F9U4x@^^c3nP^Q1J`r5mI~gc+8q2~Z+s@}hs@x+=5(k7Nd% zZCS`AMeSDDW&i=3nA9jD=gxq)#C9-JG(8#YAR}!ZfX%@z&VMD{^RJ6M|8W(gsVhOP z>)wm3)`-Iu=Ewr@JUnTpGOq-2E9}{&zGG3w@cQF}she;P%&{FIo->s;VF%Qm14fmg z4%{^CC()Y$Vlx-CBkch-2F+=n|IQ1~dxXE*?=c79W6pHE?woB9du~H^>i~G?#|QTS z?8yoS+JwbZrGI`*g<;Cu0FcUcZx^JeNUH<%S})$%6t8!T<$S?)MwogRl+kM)x!Vzi z_>?+vcDI712}v;yCyoKq~CR zuyOznVMx*(+W0YZm4X8tSg_Sc`PB9GF>TYrL%S);l^*p6K@bE%5CjrGHz)JxDrFH3 P00000NkvXXu0mjf^rOa1 delta 411 zcmV;M0c8Ha1GNK?B!7HKL_t(|ob8$0&ch%GfZeja{{#1;yKo^CC?0B&Illb)lTss& zlS)$xf*=U~m4}g@eLJds7e*=r2CnCBEfqXXwK@2~-gr&c51GMzLxL0@_wD;19?1+i z+p>^LirTHP%>V*6F{x2R&Yb~oiS1ydXnHc(K}Om-0GoqboPSHY=ifJZ{_846Q&)mo z*L@aQtr3SS%#{V;d3e%HWnKy5Ryeau{fR{x!|RU^rf$MHFvp$<@tmo&2|J+f9x$o| zb>QZ}eiOYJARgv|cBDO^#-KUP^WS~pxkmV_=RM{Ce9f7T*PXKsV$Wm99vuMh{P*&EB9J>Gj002ovPDHLk FV1oQz!*c)t diff --git a/tests_zemu/snapshots/sp-mainmenu/00004.png b/tests_zemu/snapshots/sp-mainmenu/00004.png index 93a0459dbaaaf28390d14eb37a589feebf62dc1b..34a66905c4ef81ab5107b175a0d11284309dcc03 100644 GIT binary patch delta 384 zcmbQiJezrfN_~>2i(^Q|oVPb~i&_+T8WL~4^xgA+;tub6i^FL`2i|HaUikj=VqnS- z4x!lDLJSBX@#ysa({nc4*!C@s-yHn#;K!bKOP^MIt(+j0GpuD#mc3c_QCx}jrpA^>pZ-aEFYh~RFZ_~q##Y1BS#?@g zOMPb+JX!hQD5k~SBPyqJ@{aczev1F@e2ZuZ;Vu2snJfJF@}%qyy{(%suwAR;Tdx;Z z5xqE2zi;I?28qh>Pv@4(ZdrEyr_RHI1y-dI4UPL--tJZFfBZ*mZISf71FRXfr8|4} z`8rB-f7JEh{JJ*HFVdQ&MBb@0EUORIRF3v delta 381 zcmbQuJcD_HN`1Vii(^Q|oVPavCp9bZG$ii2JiFq*@>9Lv52mCEIYzT8{oUU#>*}W9 zu_ecg0Ra|ty8l;mb(ybsI%s|5%7VoDsO>?Y%$Hm>$vbe-#=ZQ3?s^`3^Jj`@mn&`h zcXs(RzN)QjTlb}G|GKPgErWCWjVBtx@6?s!O*ht`HZ^z7*ZLpBb?M;;!SAZ^_v2m6 z-q-Kz^ycw)oNrfXb$Cvu$Nl5_v;H|PQIKy9is`H081m}JAL9vg8v?n5m%m)SX!84& z!hLpc?Rl*q@=g--ex&lwxXZc2ew(G5LT;PYzXQuU|Gk=4Y|ty6zL4|IZ`+#kjfbLN z_5LjIiPmo@D^qpXJG;PS%L?af|`drkhRzL{@YEAxE&iwIuz1zTQklCGWKq$ZZ6 ze}ZFc_~oegoD;6ktFwD?r!nJJp8M2i(^Q|oVPb~i&_+T8WL~4^xgA+;tub6i^FL`2i|HaUikj=VqnS- z4x!lDLJSBX@#ysa({nc4*!C@s-yHn#;K!bKOP^MIt(+j0GpuD#mc3c_QCx}jrpA^>pZ-aEFYh~RFZ_~q##Y1BS#?@g zOMPb+JX!hQD5k~SBPyqJ@{aczev1F@e2ZuZ;Vu2snJfJF@}%qyy{(%suwAR;Tdx;Z z5xqE2zi;I?28qh>Pv@4(ZdrEyr_RHI1y-dI4UPL--tJZFfBZ*mZISf71FRXfr8|4} z`8rB-f7JEh{JJ*HFVdQ&MBb@0EUORIRF3v delta 381 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 literal 14084 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 delta 381 zcmbQuJcD_HN`1Vii(^Q|oVPavCp9bZG$ii2JiFq*@>9Lv52mCEIYzT8{oUU#>*}W9 zu_ecg0Ra|ty8l;mb(ybsI%s|5%7VoDsO>?Y%$Hm>$vbe-#=ZQ3?s^`3^Jj`@mn&`h zcXs(RzN)QjTlb}G|GKPgErWCWjVBtx@6?s!O*ht`HZ^z7*ZLpBb?M;;!SAZ^_v2m6 z-q-Kz^ycw)oNrfXb$Cvu$Nl5_v;H|PQIKy9is`H081m}JAL9vg8v?n5m%m)SX!84& z!hLpc?Rl*q@=g--ex&lwxXZc2ew(G5LT;PYzXQuU|Gk=4Y|ty6zL4|IZ`+#kjfbLN z_5LjIiPmo@D^qpXJG;PS%L?af|`drkhRzL{@YEAxE&iwIuz1zTQklCGWKq$ZZ6 ze}ZFc_~oegoD;6ktFwD?r!nJJp8M2i(^Q|oVPb~i&_+T8WL~4^xgA+;tub6i^FL`2i|HaUikj=VqnS- z4x!lDLJSBX@#ysa({nc4*!C@s-yHn#;K!bKOP^MIt(+j0GpuD#mc3c_QCx}jrpA^>pZ-aEFYh~RFZ_~q##Y1BS#?@g zOMPb+JX!hQD5k~SBPyqJ@{aczev1F@e2ZuZ;Vu2snJfJF@}%qyy{(%suwAR;Tdx;Z z5xqE2zi;I?28qh>Pv@4(ZdrEyr_RHI1y-dI4UPL--tJZFfBZ*mZISf71FRXfr8|4} z`8rB-f7JEh{JJ*HFVdQ&MBb@0EUORIRF3v delta 381 zcmbQuJcD_HN`1Vii(^Q|oVPavCp9bZG$ii2JiFq*@>9Lv52mCEIYzT8{oUU#>*}W9 zu_ecg0Ra|ty8l;mb(ybsI%s|5%7VoDsO>?Y%$Hm>$vbe-#=ZQ3?s^`3^Jj`@mn&`h zcXs(RzN)QjTlb}G|GKPgErWCWjVBtx@6?s!O*ht`HZ^z7*ZLpBb?M;;!SAZ^_v2m6 z-q-Kz^ycw)oNrfXb$Cvu$Nl5_v;H|PQIKy9is`H081m}JAL9vg8v?n5m%m)SX!84& z!hLpc?Rl*q@=g--ex&lwxXZc2ew(G5LT;PYzXQuU|Gk=4Y|ty6zL4|IZ`+#kjfbLN z_5LjIiPmo@D^qpXJG;PS%L?af|`drkhRzL{@YEAxE&iwIuz1zTQklCGWKq$ZZ6 ze}ZFc_~oegoD;6ktFwD?r!nJJp8M