Cleaning up tests IOS-1784
authorKrista 'DarthMama' Bennett <krista@pep.foundation>
Mon, 02 Sep 2019 17:14:54 +0200
branchIOS-1784
changeset 40443c784203722b
parent 4040 06031e3ea8a5
child 4045 af9bfb2b5c08
Cleaning up tests
.hgignore
test/convenience_scripts/gen_pgp_samples.sh
test/gen_pgp_samples.sh
test/include/AppleMailTests.h
test/include/BCCTests.h
test/include/BlacklistAcceptNewKeyTests.h
test/include/BlacklistTests.h
test/include/BloblistTests.h
test/include/CaseAndDotAddressTests.h
test/include/CheckRenewedExpiredKeyTrustStatusTests.h
test/include/CrashdumpTests.h
test/include/DecorateTests.h
test/include/DecryptAttachPrivateKeyTrustedTests.h
test/include/DecryptAttachPrivateKeyUntrustedTests.h
test/include/DeleteKeyTests.h
test/include/EncryptAttachPrivateKeyTests.h
test/include/EncryptForIdentityTests.h
test/include/EncryptMissingPrivateKeyTests.h
test/include/Engine358Tests.h
test/include/Engine463Tests.h
test/include/EngineTestIndividualSuite.h
test/include/EngineTestSessionSuite.h
test/include/EngineTestSuite.h
test/include/EnterLeaveDeviceGroupTests.h
test/include/ExpiredSubkeyTests.h
test/include/ExportKeyTests.h
test/include/ExternalRevokeTests.h
test/include/GetKeyRatingForUserTests.h
test/include/HeaderKeyImportTests.h
test/include/I18nTests.h
test/include/IOS1664Tests.h
test/include/IdentityListTests.h
test/include/IntegrityTests.h
test/include/KeyAttachmentTests.h
test/include/KeyResetMessageTests.h
test/include/KeyeditTests.h
test/include/KeyringImportTests.h
test/include/LeastColorGroupTests.h
test/include/LeastCommonDenomColorTests.h
test/include/LiteralFilenameTests.h
test/include/LookupTests.h
test/include/LotsOfKeysTests.h
test/include/MapAsn1Tests.h
test/include/Message2_0Tests.h
test/include/Message2_1Tests.h
test/include/MessageApiTests.h
test/include/MessageNullFromTests.h
test/include/MessageTwoPointOhTests.h
test/include/MimeTests.h
test/include/NewUpdateIdAndMyselfTests.h
test/include/NoOwnIdentWritesOnDecryptTests.h
test/include/OwnIdentitiesRetrieveTests.h
test/include/OwnKeysRetrieveTests.h
test/include/PepSubjectReceivedTests.h
test/include/PgpBinaryTests.h
test/include/PgpListKeysTests.h
test/include/ReencryptPlusExtraKeysTests.h
test/include/RevocationTests.h
test/include/RevokeRegenAttachTests.h
test/include/SenderFPRTests.h
test/include/SequenceTests.h
test/include/SignOnlyTests.h
test/include/SimpleBodyNotAltTests.h
test/include/StringlistTests.h
test/include/StringpairListTests.h
test/include/StrnstrTests.h
test/include/SubkeyRatingEvalTests.h
test/include/SuiteMaker.h
test/include/SyncTests.h
test/include/TestDriver.h
test/include/TrustManipulationTests.h
test/include/TrustwordsTests.h
test/include/URIAddressTests.h
test/include/UserIDAliasTests.h
test/include/UserIdCollisionTests.h
test/include/VerifyTests.h
test/include/pEpTestOutput.h
test/msg
test/msg.asc
test/msg1.asc
test/msg2.asc
test/msg3.asc
test/msg_no_key.asc
test/no_key.asc
test/pEpEngineTest.cc
test/pgp_mime_msg.txt
test/signature.asc
test/src/EncryptForIdentityTest.cc
test/src/MessageApiTest.cc
test/src/MessageTwoPointOhTest.cc
test/src/MimeTest.cc
test/src/SignOnlyTest.cc
test/still_no_key.asc
test/t1.txt
test/t2.txt
test/test_mails/msg1.asc
test/test_mails/msg2.asc
test/test_mails/msg3.asc
test/test_mails/msg_no_key.asc
test/tmp/README
     1.1 --- a/.hgignore	Sat Aug 31 15:23:52 2019 +0200
     1.2 +++ b/.hgignore	Mon Sep 02 17:14:54 2019 +0200
     1.3 @@ -81,5 +81,7 @@
     1.4  test/*.txt
     1.5  lldb-history
     1.6  *.swo
     1.7 +*.smp
     1.8  test/EngineTests
     1.9  test/googletest
    1.10 +test/tmp/*
     2.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     2.2 +++ b/test/convenience_scripts/gen_pgp_samples.sh	Mon Sep 02 17:14:54 2019 +0200
     2.3 @@ -0,0 +1,23 @@
     2.4 +#!/bin/bash
     2.5 +
     2.6 +# Use this to generate test msg.asc and signature.asc
     2.7 +
     2.8 +# Keys pair are : 
     2.9 +#
    2.10 +# pEp Test Alice (test key don't use) <pep.test.alice@pep-project.org>
    2.11 +# 6FF00E97
    2.12 +# 
    2.13 +# pEp Test Bob (test key, don't use) <pep.test.bob@pep-project.org> 
    2.14 +# C9C2EE39
    2.15 +# 
    2.16 +# pEp Test John (test key, don't use) <pep.test.john@pep-project.org>
    2.17 +# 70DCF575
    2.18 +
    2.19 +# msg.asc from msg.c
    2.20 +# Bob sends a message to Alice and John
    2.21 +gpg -u C9C2EE39 -s -e -r 6FF00E97 -r 70DCF575 --armor msg
    2.22 +
    2.23 +# signature.asc from t1.txt
    2.24 +# Bob signs the message
    2.25 +gpg --output signature.asc -u C9C2EE39 -sb --armor t1.txt
    2.26 +
     3.1 --- a/test/gen_pgp_samples.sh	Sat Aug 31 15:23:52 2019 +0200
     3.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     3.3 @@ -1,23 +0,0 @@
     3.4 -#!/bin/bash
     3.5 -
     3.6 -# Use this to generate test msg.asc and signature.asc
     3.7 -
     3.8 -# Keys pair are : 
     3.9 -#
    3.10 -# pEp Test Alice (test key don't use) <pep.test.alice@pep-project.org>
    3.11 -# 6FF00E97
    3.12 -# 
    3.13 -# pEp Test Bob (test key, don't use) <pep.test.bob@pep-project.org> 
    3.14 -# C9C2EE39
    3.15 -# 
    3.16 -# pEp Test John (test key, don't use) <pep.test.john@pep-project.org>
    3.17 -# 70DCF575
    3.18 -
    3.19 -# msg.asc from msg.c
    3.20 -# Bob sends a message to Alice and John
    3.21 -gpg -u C9C2EE39 -s -e -r 6FF00E97 -r 70DCF575 --armor msg
    3.22 -
    3.23 -# signature.asc from t1.txt
    3.24 -# Bob signs the message
    3.25 -gpg --output signature.asc -u C9C2EE39 -sb --armor t1.txt
    3.26 -
     4.1 --- a/test/include/AppleMailTests.h	Sat Aug 31 15:23:52 2019 +0200
     4.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     4.3 @@ -1,20 +0,0 @@
     4.4 -// This file is under GNU General Public License 3.0
     4.5 -// see LICENSE.txt
     4.6 -
     4.7 -#ifndef APPLE_MAIL_TESTS_H
     4.8 -#define APPLE_MAIL_TESTS_H
     4.9 -
    4.10 -#include <string.h>
    4.11 -#include "EngineTestIndividualSuite.h"
    4.12 -
    4.13 -using namespace std;
    4.14 -
    4.15 -class AppleMailTests : public EngineTestIndividualSuite {
    4.16 -    public:
    4.17 -        AppleMailTests(string suitename, string test_home_dir);
    4.18 -    private:
    4.19 -        void check_apple_mail_text_signed_encrypted();
    4.20 -        void check_apple_mail_html_signed_encrypted();
    4.21 -};
    4.22 -
    4.23 -#endif
     5.1 --- a/test/include/BCCTests.h	Sat Aug 31 15:23:52 2019 +0200
     5.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     5.3 @@ -1,21 +0,0 @@
     5.4 -// This file is under GNU General Public License 3.0
     5.5 -// see LICENSE.txt
     5.6 -
     5.7 -#ifndef BCC_H
     5.8 -#define BCC_H
     5.9 -
    5.10 -#include <string>
    5.11 -#include "EngineTestIndividualSuite.h"
    5.12 -
    5.13 -using namespace std;
    5.14 -
    5.15 -class BCCTests : public EngineTestIndividualSuite {
    5.16 -    public:
    5.17 -        BCCTests(string test_suite, string test_home_dir);
    5.18 -    protected:
    5.19 -	void setup();
    5.20 -    private:
    5.21 -        void check_single_BCC();
    5.22 -};
    5.23 -
    5.24 -#endif
     6.1 --- a/test/include/BlacklistAcceptNewKeyTests.h	Sat Aug 31 15:23:52 2019 +0200
     6.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     6.3 @@ -1,19 +0,0 @@
     6.4 -// This file is under GNU General Public License 3.0
     6.5 -// see LICENSE.txt
     6.6 -
     6.7 -#ifndef BLACKLIST_ACCEPT_NEW_KEY_H
     6.8 -#define BLACKLIST_ACCEPT_NEW_KEY_H
     6.9 -
    6.10 -#include <string>
    6.11 -#include "EngineTestSessionSuite.h"
    6.12 -
    6.13 -using namespace std;
    6.14 -
    6.15 -class BlacklistAcceptNewKeyTests : public EngineTestSessionSuite {
    6.16 -    public:
    6.17 -        BlacklistAcceptNewKeyTests(string test_suite, string test_home_dir);
    6.18 -    private:
    6.19 -        void check_blacklist_accept_new_key();
    6.20 -};
    6.21 -
    6.22 -#endif
     7.1 --- a/test/include/BlacklistTests.h	Sat Aug 31 15:23:52 2019 +0200
     7.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     7.3 @@ -1,19 +0,0 @@
     7.4 -// This file is under GNU General Public License 3.0
     7.5 -// see LICENSE.txt
     7.6 -
     7.7 -#ifndef BLACKLIST_H
     7.8 -#define BLACKLIST_H
     7.9 -
    7.10 -#include <string>
    7.11 -#include "EngineTestSessionSuite.h"
    7.12 -
    7.13 -using namespace std;
    7.14 -
    7.15 -class BlacklistTests : public EngineTestSessionSuite {
    7.16 -    public:
    7.17 -        BlacklistTests(string test_suite, string test_home_dir);
    7.18 -    private:
    7.19 -        void check_blacklist();
    7.20 -};
    7.21 -
    7.22 -#endif
     8.1 --- a/test/include/BloblistTests.h	Sat Aug 31 15:23:52 2019 +0200
     8.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     8.3 @@ -1,22 +0,0 @@
     8.4 -// This file is under GNU General Public License 3.0
     8.5 -// see LICENSE.txt
     8.6 -
     8.7 -#ifndef BLOBLIST_TESTS_H
     8.8 -#define BLOBLIST_TESTS_H
     8.9 -
    8.10 -#include <string>
    8.11 -#include "bloblist.h"
    8.12 -#include "EngineTestSuite.h"
    8.13 -
    8.14 -using namespace std;
    8.15 -
    8.16 -class BloblistTests : public EngineTestSuite {
    8.17 -    public:
    8.18 -        BloblistTests(string suitename, string test_home_dir);
    8.19 -    private:
    8.20 -        void check_bloblists();
    8.21 -        bool test_blob_equals(size_t size1, char* blob1, size_t size2, char* blob2);
    8.22 -        bool test_bloblist_node_equals(bloblist_t* val1, bloblist_t* val2);
    8.23 -};
    8.24 -
    8.25 -#endif
     9.1 --- a/test/include/CaseAndDotAddressTests.h	Sat Aug 31 15:23:52 2019 +0200
     9.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
     9.3 @@ -1,19 +0,0 @@
     9.4 -// This file is under GNU General Public License 3.0
     9.5 -// see LICENSE.txt
     9.6 -
     9.7 -#ifndef CASE_AND_DOT_ADDRESS_TESTS_H
     9.8 -#define CASE_AND_DOT_ADDRESS_TESTS_H
     9.9 -
    9.10 -#include <string>
    9.11 -#include "EngineTestSessionSuite.h"
    9.12 -
    9.13 -using namespace std;
    9.14 -
    9.15 -class CaseAndDotAddressTests : public EngineTestSessionSuite {
    9.16 -    public:
    9.17 -        CaseAndDotAddressTests(string suitename, string test_home_dir);
    9.18 -    private:
    9.19 -        void check_case_and_dot_address();
    9.20 -};
    9.21 -
    9.22 -#endif
    10.1 --- a/test/include/CheckRenewedExpiredKeyTrustStatusTests.h	Sat Aug 31 15:23:52 2019 +0200
    10.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    10.3 @@ -1,22 +0,0 @@
    10.4 -// This file is under GNU General Public License 3.0
    10.5 -// see LICENSE.txt
    10.6 -
    10.7 -#ifndef CHECK_RENEWED_EXPIRED_KEY_TRUST_STATUS_H
    10.8 -#define CHECK_RENEWED_EXPIRED_KEY_TRUST_STATUS_H
    10.9 -
   10.10 -#include <string>
   10.11 -#include "EngineTestIndividualSuite.h"
   10.12 -
   10.13 -using namespace std;
   10.14 -
   10.15 -class CheckRenewedExpiredKeyTrustStatusTests : public EngineTestIndividualSuite {
   10.16 -    public:
   10.17 -        CheckRenewedExpiredKeyTrustStatusTests(string test_suite, string test_home_dir);
   10.18 -    private:
   10.19 -        void check_renewed_expired_key_trust_status();
   10.20 -        void check_renewed_expired_key_trust_status_trusted_user();
   10.21 -        void check_renewed_expired_key_trust_status_pEp_user();
   10.22 -        void check_renewed_expired_key_trust_status_trusted_pEp_user();        
   10.23 -};
   10.24 -
   10.25 -#endif
    11.1 --- a/test/include/CrashdumpTests.h	Sat Aug 31 15:23:52 2019 +0200
    11.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    11.3 @@ -1,19 +0,0 @@
    11.4 -// This file is under GNU General Public License 3.0
    11.5 -// see LICENSE.txt
    11.6 -
    11.7 -#ifndef CRASHDUMP_H
    11.8 -#define CRASHDUMP_H
    11.9 -
   11.10 -#include <string>
   11.11 -#include "EngineTestSessionSuite.h"
   11.12 -
   11.13 -using namespace std;
   11.14 -
   11.15 -class CrashdumpTests : public EngineTestSessionSuite {
   11.16 -    public:
   11.17 -        CrashdumpTests(string test_suite, string test_home_dir);
   11.18 -    private:
   11.19 -        void check_crashdump();
   11.20 -};
   11.21 -
   11.22 -#endif
    12.1 --- a/test/include/DecorateTests.h	Sat Aug 31 15:23:52 2019 +0200
    12.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    12.3 @@ -1,19 +0,0 @@
    12.4 -// This file is under GNU General Public License 3.0
    12.5 -// see LICENSE.txt
    12.6 -
    12.7 -#ifndef DECORATE_TESTS_H
    12.8 -#define DECORATE_TESTS_H
    12.9 -
   12.10 -#include <string>
   12.11 -#include "EngineTestSessionSuite.h"
   12.12 -
   12.13 -using namespace std;
   12.14 -
   12.15 -class DecorateTests : public EngineTestSessionSuite {
   12.16 -    public:
   12.17 -        DecorateTests(string suitename, string test_home_dir);
   12.18 -    private:
   12.19 -        void check_decorate();
   12.20 -};
   12.21 -
   12.22 -#endif
    13.1 --- a/test/include/DecryptAttachPrivateKeyTrustedTests.h	Sat Aug 31 15:23:52 2019 +0200
    13.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    13.3 @@ -1,19 +0,0 @@
    13.4 -// This file is under GNU General Public License 3.0
    13.5 -// see LICENSE.txt
    13.6 -
    13.7 -#ifndef DECRYPT_ATTACH_PRIVATE_KEY_TRUSTED_H
    13.8 -#define DECRYPT_ATTACH_PRIVATE_KEY_TRUSTED_H
    13.9 -
   13.10 -#include <string>
   13.11 -#include "EngineTestSessionSuite.h"
   13.12 -
   13.13 -using namespace std;
   13.14 -
   13.15 -class DecryptAttachPrivateKeyTrustedTests : public EngineTestSessionSuite {
   13.16 -    public:
   13.17 -        DecryptAttachPrivateKeyTrustedTests(string test_suite, string test_home_dir);
   13.18 -    private:
   13.19 -        void check_decrypt_attach_private_key_trusted();
   13.20 -};
   13.21 -
   13.22 -#endif
    14.1 --- a/test/include/DecryptAttachPrivateKeyUntrustedTests.h	Sat Aug 31 15:23:52 2019 +0200
    14.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    14.3 @@ -1,19 +0,0 @@
    14.4 -// This file is under GNU General Public License 3.0
    14.5 -// see LICENSE.txt
    14.6 -
    14.7 -#ifndef DECRYPT_ATTACH_PRIVATE_KEY_UNTRUSTED_H
    14.8 -#define DECRYPT_ATTACH_PRIVATE_KEY_UNTRUSTED_H
    14.9 -
   14.10 -#include <string>
   14.11 -#include "EngineTestSessionSuite.h"
   14.12 -
   14.13 -using namespace std;
   14.14 -
   14.15 -class DecryptAttachPrivateKeyUntrustedTests : public EngineTestSessionSuite {
   14.16 -    public:
   14.17 -        DecryptAttachPrivateKeyUntrustedTests(string test_suite, string test_home_dir);
   14.18 -    private:
   14.19 -        void check_decrypt_attach_private_key_untrusted();
   14.20 -};
   14.21 -
   14.22 -#endif
    15.1 --- a/test/include/DeleteKeyTests.h	Sat Aug 31 15:23:52 2019 +0200
    15.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    15.3 @@ -1,41 +0,0 @@
    15.4 -// This file is under GNU General Public License 3.0
    15.5 -// see LICENSE.txt
    15.6 -
    15.7 -#ifndef DELETE_KEY_H
    15.8 -#define DELETE_KEY_H
    15.9 -
   15.10 -#include <string>
   15.11 -#include "EngineTestIndividualSuite.h"
   15.12 -
   15.13 -using namespace std;
   15.14 -
   15.15 -class DeleteKeyTests : public EngineTestIndividualSuite {
   15.16 -    public:
   15.17 -        DeleteKeyTests(string test_suite, string test_home_dir);
   15.18 -
   15.19 -        static constexpr const char* alice_fpr = "4ABE3AAF59AC32CFE4F86500A9411D176FF00E97";
   15.20 -        static constexpr const char* bob_fpr = "BFCDB7F301DEEEBBF947F29659BFF488C9C2EE39";
   15.21 -        static constexpr const char* carol_fpr = "8DD4F5827B45839E9ACCA94687BDDFFB42A85A42";
   15.22 -        static constexpr const char* dave_fpr = "E8AC9779A2D13A15D8D55C84B049F489BB5BCCF6";
   15.23 -        static constexpr const char* erin_fpr = "1B0E197E8AE66277B8A024B9AEA69F509F8D7CBA";
   15.24 -        static constexpr const char* fenris_fpr = "0969FA229DF21C832A64A04711B1B9804F3D2900";
   15.25 -
   15.26 -        static const string alice_user_id;
   15.27 -        static const string bob_user_id;    
   15.28 -        static const string carol_user_id;
   15.29 -        static const string dave_user_id;
   15.30 -        static const string erin_user_id;
   15.31 -        static const string fenris_user_id;
   15.32 -
   15.33 -    private:
   15.34 -        void import_test_keys();
   15.35 -        
   15.36 -        void check_delete_single_pubkey();
   15.37 -        void check_delete_pub_priv_keypair();
   15.38 -        void check_delete_multiple_keys();
   15.39 -        void check_delete_all_keys();
   15.40 -        void check_delete_key_not_found();
   15.41 -        void check_delete_empty_keyring();        
   15.42 -};
   15.43 -
   15.44 -#endif
    16.1 --- a/test/include/EncryptAttachPrivateKeyTests.h	Sat Aug 31 15:23:52 2019 +0200
    16.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    16.3 @@ -1,19 +0,0 @@
    16.4 -// This file is under GNU General Public License 3.0
    16.5 -// see LICENSE.txt
    16.6 -
    16.7 -#ifndef ENCRYPT_ATTACH_PRIVATE_KEY_H
    16.8 -#define ENCRYPT_ATTACH_PRIVATE_KEY_H
    16.9 -
   16.10 -#include <string>
   16.11 -#include "EngineTestSessionSuite.h"
   16.12 -
   16.13 -using namespace std;
   16.14 -
   16.15 -class EncryptAttachPrivateKeyTests : public EngineTestSessionSuite {
   16.16 -    public:
   16.17 -        EncryptAttachPrivateKeyTests(string test_suite, string test_home_dir);
   16.18 -    private:
   16.19 -        void check_encrypt_attach_private_key();
   16.20 -};
   16.21 -
   16.22 -#endif
    17.1 --- a/test/include/EncryptForIdentityTests.h	Sat Aug 31 15:23:52 2019 +0200
    17.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    17.3 @@ -1,19 +0,0 @@
    17.4 -// This file is under GNU General Public License 3.0
    17.5 -// see LICENSE.txt
    17.6 -
    17.7 -#ifndef ENCRYPT_FOR_IDENTITY_H
    17.8 -#define ENCRYPT_FOR_IDENTITY_H
    17.9 -
   17.10 -#include <string>
   17.11 -#include "EngineTestSessionSuite.h"
   17.12 -
   17.13 -using namespace std;
   17.14 -
   17.15 -class EncryptForIdentityTests : public EngineTestSessionSuite {
   17.16 -    public:
   17.17 -        EncryptForIdentityTests(string test_suite, string test_home_dir);
   17.18 -    private:
   17.19 -        void check_encrypt_for_identity();
   17.20 -};
   17.21 -
   17.22 -#endif
    18.1 --- a/test/include/EncryptMissingPrivateKeyTests.h	Sat Aug 31 15:23:52 2019 +0200
    18.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    18.3 @@ -1,21 +0,0 @@
    18.4 -// This file is under GNU General Public License 3.0
    18.5 -// see LICENSE.txt
    18.6 -
    18.7 -#ifndef ENCRYPT_MISSING_PRIVATE_KEY_H
    18.8 -#define ENCRYPT_MISSING_PRIVATE_KEY_H
    18.9 -
   18.10 -#include <string>
   18.11 -#include "EngineTestSessionSuite.h"
   18.12 -
   18.13 -using namespace std;
   18.14 -
   18.15 -class EncryptMissingPrivateKeyTests : public EngineTestSessionSuite {
   18.16 -    public:
   18.17 -        EncryptMissingPrivateKeyTests(string test_suite, string test_home_dir);
   18.18 -    protected:
   18.19 -        void setup();
   18.20 -    private:
   18.21 -        void check_encrypt_missing_private_key();
   18.22 -};
   18.23 -
   18.24 -#endif
    19.1 --- a/test/include/Engine358Tests.h	Sat Aug 31 15:23:52 2019 +0200
    19.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    19.3 @@ -1,19 +0,0 @@
    19.4 -// This file is under GNU General Public License 3.0
    19.5 -// see LICENSE.txt
    19.6 -
    19.7 -#ifndef ENGINE358_H
    19.8 -#define ENGINE358_H
    19.9 -
   19.10 -#include <string>
   19.11 -#include "EngineTestIndividualSuite.h"
   19.12 -
   19.13 -using namespace std;
   19.14 -
   19.15 -class Engine358Tests : public EngineTestIndividualSuite {
   19.16 -    public:
   19.17 -        Engine358Tests(string test_suite, string test_home_dir);
   19.18 -    private:
   19.19 -        void check_engine358();
   19.20 -};
   19.21 -
   19.22 -#endif
    20.1 --- a/test/include/Engine463Tests.h	Sat Aug 31 15:23:52 2019 +0200
    20.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    20.3 @@ -1,22 +0,0 @@
    20.4 -// This file is under GNU General Public License 3.0
    20.5 -// see LICENSE.txt
    20.6 -
    20.7 -#ifndef ENGINE463_H
    20.8 -#define ENGINE463_H
    20.9 -
   20.10 -#include <string>
   20.11 -#include "EngineTestIndividualSuite.h"
   20.12 -
   20.13 -using namespace std;
   20.14 -
   20.15 -class Engine463Tests : public EngineTestIndividualSuite {
   20.16 -    public:
   20.17 -        Engine463Tests(string test_suite, string test_home_dir);
   20.18 -    private:
   20.19 -        void check_engine_463_no_own_key();
   20.20 -        void check_engine_463_own_key();
   20.21 -        void check_engine_463_sender_expired_and_renewed();
   20.22 -	void check_engine_463_reply_recip_expired_and_renewed();
   20.23 -};
   20.24 -
   20.25 -#endif
    21.1 --- a/test/include/EngineTestIndividualSuite.h	Sat Aug 31 15:23:52 2019 +0200
    21.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    21.3 @@ -1,21 +0,0 @@
    21.4 -#ifndef ENGINE_TEST_INDIVIDUAL_SUITE_H
    21.5 -#define ENGINE_TEST_INDIVIDUAL_SUITE_H
    21.6 -
    21.7 -#include <cpptest.h>
    21.8 -#include <cpptest-suite.h>
    21.9 -#include <cpptest-textoutput.h>
   21.10 -#include <string>
   21.11 -#include "pEpEngine.h"
   21.12 -#include "EngineTestSuite.h"
   21.13 -
   21.14 -using namespace std;
   21.15 -
   21.16 -class EngineTestIndividualSuite : public EngineTestSuite {
   21.17 -    public:
   21.18 -        EngineTestIndividualSuite(string suitename, string test_home_dir);
   21.19 -        virtual ~EngineTestIndividualSuite();
   21.20 -    protected:
   21.21 -        virtual void setup();
   21.22 -        virtual void tear_down();
   21.23 -};
   21.24 -#endif
    22.1 --- a/test/include/EngineTestSessionSuite.h	Sat Aug 31 15:23:52 2019 +0200
    22.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    22.3 @@ -1,22 +0,0 @@
    22.4 -#ifndef ENGINE_TEST_SESSION_SUITE_H
    22.5 -#define ENGINE_TEST_SESSION_SUITE_H
    22.6 -
    22.7 -#include <cpptest.h>
    22.8 -#include <cpptest-suite.h>
    22.9 -#include <cpptest-textoutput.h>
   22.10 -#include <string>
   22.11 -#include "pEpEngine.h"
   22.12 -
   22.13 -#include "EngineTestSuite.h"
   22.14 -
   22.15 -using namespace std;
   22.16 -
   22.17 -class EngineTestSessionSuite : public EngineTestSuite {
   22.18 -    public:
   22.19 -        EngineTestSessionSuite(string suitename, string test_home_dir);
   22.20 -        virtual ~EngineTestSessionSuite();
   22.21 -        
   22.22 -        virtual void setup();
   22.23 -        virtual void tear_down();
   22.24 -};
   22.25 -#endif
    23.1 --- a/test/include/EngineTestSuite.h	Sat Aug 31 15:23:52 2019 +0200
    23.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    23.3 @@ -1,63 +0,0 @@
    23.4 -#ifndef ENGINE_TEST_SUITE_H
    23.5 -#define ENGINE_TEST_SUITE_H
    23.6 -
    23.7 -#include <cpptest.h>
    23.8 -#include <string>
    23.9 -#include <map>
   23.10 -#include <vector>
   23.11 -#include <utility>
   23.12 -#include "pEpEngine.h"
   23.13 -
   23.14 -using namespace std;
   23.15 -
   23.16 -class EngineTestSuite : public Test::Suite {
   23.17 -    public:
   23.18 -        EngineTestSuite(string suitename, string test_home_dir);
   23.19 -        virtual ~EngineTestSuite();
   23.20 -        
   23.21 -        void add_test_to_suite(std::pair<std::string, void (Test::Suite::*)()> test_func);
   23.22 -        void output_test_header(const char* test_name);
   23.23 -        void output_test_footer(const char* test_name);
   23.24 -
   23.25 -    protected:
   23.26 -        PEP_SESSION session;
   23.27 -        string test_home;
   23.28 -        string real_home;
   23.29 -        string prev_pgp_home;
   23.30 -        string name;
   23.31 -        
   23.32 -        string current_test_name;
   23.33 -
   23.34 -        messageToSend_t cached_messageToSend;
   23.35 -        inject_sync_event_t cached_inject_sync_event;
   23.36 -
   23.37 -#define TEST_FAILED_MESSAGE_BUFSIZE 1000        
   23.38 -        char failed_msg_buf[TEST_FAILED_MESSAGE_BUFSIZE];
   23.39 -        
   23.40 -        std::map<std::string, void (Test::Suite::*)()> test_map;                
   23.41 -        
   23.42 -        string my_name;
   23.43 -        
   23.44 -        unsigned int number_of_tests;
   23.45 -        unsigned int on_test_number;
   23.46 -        
   23.47 -        string temp_test_home;
   23.48 -        
   23.49 -        virtual void setup();
   23.50 -        virtual void tear_down();
   23.51 -        
   23.52 -        void set_full_env();
   23.53 -        void set_full_env(const char* gpg_conf_copy_path, const char* gpg_agent_conf_file_copy_path, const char* db_conf_file_copy_path);
   23.54 -        void restore_full_env();
   23.55 -        void initialise_test_home();
   23.56 -        void set_my_name();    
   23.57 -	
   23.58 -        void copy_conf_file_to_test_dir(const char* dest_path, const char* conf_orig_path, const char* conf_dest_name);
   23.59 -        
   23.60 -        std::vector<std::pair<std::string, std::string>> gpgdir_fileadd_queue;
   23.61 -        std::vector<std::pair<std::string, std::string>> homedir_fileadd_queue;
   23.62 -        void add_file_to_gpg_dir_queue(std::string copy_from, std::string dst_fname);    
   23.63 -        void add_file_to_home_dir_queue(std::string copy_from, std::string dst_fname);
   23.64 -        void process_file_queue(std::string dirname, std::vector<std::pair<std::string, std::string>> file_queue);
   23.65 -};
   23.66 -#endif
    24.1 --- a/test/include/EnterLeaveDeviceGroupTests.h	Sat Aug 31 15:23:52 2019 +0200
    24.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    24.3 @@ -1,34 +0,0 @@
    24.4 -// This file is under GNU General Public License 3.0
    24.5 -// see LICENSE.txt
    24.6 -
    24.7 -#ifndef ENTER_LEAVE_DEVICE_GROUP_H
    24.8 -#define ENTER_LEAVE_DEVICE_GROUP_H
    24.9 -
   24.10 -#include <string>
   24.11 -#include "EngineTestIndividualSuite.h"
   24.12 -
   24.13 -using namespace std;
   24.14 -
   24.15 -class EnterLeaveDeviceGroupTests : public EngineTestIndividualSuite {
   24.16 -    public:
   24.17 -        EnterLeaveDeviceGroupTests(string test_suite, string test_home_dir);
   24.18 -    private:
   24.19 -        void check_enter_device_group_no_own();    
   24.20 -        void check_enter_device_group_one_own_empty();    
   24.21 -        void check_enter_device_group_one_own_one();    
   24.22 -        void check_enter_device_group_one_reversed_by_many();    
   24.23 -        void check_enter_device_group_one_own_single_not_me();    
   24.24 -        void check_enter_device_group_one_own_single_many_w_not_me();    
   24.25 -        void check_enter_device_group_many_empty();    
   24.26 -        void check_enter_device_group_many_own_add_explicit();
   24.27 -        void check_enter_device_group_many_own_one();    
   24.28 -        void check_enter_device_group_many_own_many();    
   24.29 -        void check_enter_device_group_many_own_many_w_not_me();    
   24.30 -        void check_leave_device_group_empty();
   24.31 -        void check_leave_device_group_sole();
   24.32 -        void check_leave_device_group_one_in_one_out();
   24.33 -        void check_leave_device_group_three_in();
   24.34 -        void check_leave_device_group_two_in_one_out();
   24.35 -};
   24.36 -
   24.37 -#endif
    25.1 --- a/test/include/ExpiredSubkeyTests.h	Sat Aug 31 15:23:52 2019 +0200
    25.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    25.3 @@ -1,22 +0,0 @@
    25.4 -// This file is under GNU General Public License 3.0
    25.5 -// see LICENSE.txt
    25.6 -
    25.7 -#ifndef EXPIRED_SUBKEY_H
    25.8 -#define EXPIRED_SUBKEY_H
    25.9 -
   25.10 -#include <string>
   25.11 -#include "EngineTestIndividualSuite.h"
   25.12 -
   25.13 -using namespace std;
   25.14 -
   25.15 -class ExpiredSubkeyTests : public EngineTestIndividualSuite {
   25.16 -    public:
   25.17 -        ExpiredSubkeyTests(string test_suite, string test_home_dir);
   25.18 -    private:
   25.19 -        void expired_subkey_with_valid_subkeys_and_main_key();
   25.20 -        void expired_subkey_with_valid_subkeys_expired_main();        
   25.21 -        void all_valid_with_leftover_expired_subkeys();         
   25.22 -        void no_valid_encryption_subkey();       
   25.23 -};
   25.24 -
   25.25 -#endif
    26.1 --- a/test/include/ExportKeyTests.h	Sat Aug 31 15:23:52 2019 +0200
    26.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    26.3 @@ -1,22 +0,0 @@
    26.4 -// This file is under GNU General Public License 3.0
    26.5 -// see LICENSE.txt
    26.6 -
    26.7 -#ifndef EXPORT_KEY_H
    26.8 -#define EXPORT_KEY_H
    26.9 -
   26.10 -#include <string>
   26.11 -#include "EngineTestIndividualSuite.h"
   26.12 -
   26.13 -using namespace std;
   26.14 -
   26.15 -class ExportKeyTests : public EngineTestIndividualSuite {
   26.16 -    public:
   26.17 -        ExportKeyTests(string test_suite, string test_home_dir);
   26.18 -    private:
   26.19 -        void check_export_key_no_key();
   26.20 -        void check_export_key_pubkey();
   26.21 -        void check_export_key_secret_key();
   26.22 -        void check_export_key_no_secret_key();
   26.23 -};
   26.24 -
   26.25 -#endif
    27.1 --- a/test/include/ExternalRevokeTests.h	Sat Aug 31 15:23:52 2019 +0200
    27.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    27.3 @@ -1,19 +0,0 @@
    27.4 -// This file is under GNU General Public License 3.0
    27.5 -// see LICENSE.txt
    27.6 -
    27.7 -#ifndef EXTERNAL_REVOKE_H
    27.8 -#define EXTERNAL_REVOKE_H
    27.9 -
   27.10 -#include <string>
   27.11 -#include "EngineTestSessionSuite.h"
   27.12 -
   27.13 -using namespace std;
   27.14 -
   27.15 -class ExternalRevokeTests : public EngineTestSessionSuite {
   27.16 -    public:
   27.17 -        ExternalRevokeTests(string test_suite, string test_home_dir);
   27.18 -    private:
   27.19 -        void check_external_revoke();
   27.20 -};
   27.21 -
   27.22 -#endif
    28.1 --- a/test/include/GetKeyRatingForUserTests.h	Sat Aug 31 15:23:52 2019 +0200
    28.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    28.3 @@ -1,19 +0,0 @@
    28.4 -// This file is under GNU General Public License 3.0
    28.5 -// see LICENSE.txt
    28.6 -
    28.7 -#ifndef GET_KEY_RATING_FOR_USER_H
    28.8 -#define GET_KEY_RATING_FOR_USER_H
    28.9 -
   28.10 -#include <string>
   28.11 -#include "EngineTestIndividualSuite.h"
   28.12 -
   28.13 -using namespace std;
   28.14 -
   28.15 -class GetKeyRatingForUserTests : public EngineTestIndividualSuite {
   28.16 -    public:
   28.17 -        GetKeyRatingForUserTests(string test_suite, string test_home_dir);
   28.18 -    private:
   28.19 -        void check_get_key_rating_for_user();
   28.20 -};
   28.21 -
   28.22 -#endif
    29.1 --- a/test/include/HeaderKeyImportTests.h	Sat Aug 31 15:23:52 2019 +0200
    29.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    29.3 @@ -1,61 +0,0 @@
    29.4 -// This file is under GNU General Public License 3.0
    29.5 -// see LICENSE.txt
    29.6 -
    29.7 -#ifndef HEADER_KEY_IMPORT_H
    29.8 -#define HEADER_KEY_IMPORT_H
    29.9 -
   29.10 -#include <string>
   29.11 -#include "EngineTestIndividualSuite.h"
   29.12 -
   29.13 -using namespace std;
   29.14 -
   29.15 -class HeaderKeyImportTests : public EngineTestIndividualSuite {
   29.16 -    public:
   29.17 -        HeaderKeyImportTests(string test_suite, string test_home_dir);
   29.18 -    private:
   29.19 -        void base_64_minimal_round();
   29.20 -        void base_64_minimal_padded_1();
   29.21 -        void base_64_minimal_padded_2();
   29.22 -        void base_64_minimal_unpadded_1();
   29.23 -        void base_64_minimal_unpadded_2();    
   29.24 -        void base_64_minimal_leading_whitespace_round();
   29.25 -        void base_64_minimal_leading_whitespace_padded_1();
   29.26 -        void base_64_minimal_leading_whitespace_padded_2();
   29.27 -        void base_64_minimal_leading_whitespace_unpadded_1();        
   29.28 -        void base_64_minimal_leading_whitespace_unpadded_2();
   29.29 -        void base_64_minimal_trailing_whitespace_round();
   29.30 -        void base_64_minimal_trailing_whitespace_padded_1();
   29.31 -        void base_64_minimal_trailing_whitespace_padded_2();
   29.32 -        void base_64_minimal_trailing_whitespace_unpadded_1();        
   29.33 -        void base_64_minimal_trailing_whitespace_unpadded_2();
   29.34 -        void base_64_minimal_internal_whitespace_round();
   29.35 -        void base_64_minimal_internal_whitespace_padded_1();
   29.36 -        void base_64_minimal_internal_whitespace_padded_2();
   29.37 -        void base_64_minimal_internal_whitespace_unpadded_1();        
   29.38 -        void base_64_minimal_internal_whitespace_unpadded_2();
   29.39 -        void base_64_round();
   29.40 -        void base_64_padded_1();
   29.41 -        void base_64_padded_2();
   29.42 -        void base_64_unpadded_1();        
   29.43 -        void base_64_unpadded_2();
   29.44 -        void base_64_leading_whitespace_round();
   29.45 -        void base_64_leading_whitespace_padded_1();
   29.46 -        void base_64_leading_whitespace_padded_2();
   29.47 -        void base_64_leading_whitespace_unpadded_1();        
   29.48 -        void base_64_leading_whitespace_unpadded_2();
   29.49 -        void base_64_trailing_whitespace_round();
   29.50 -        void base_64_trailing_whitespace_padded_1();
   29.51 -        void base_64_trailing_whitespace_padded_2();
   29.52 -        void base_64_trailing_whitespace_unpadded_1();        
   29.53 -        void base_64_trailing_whitespace_unpadded_2();
   29.54 -        void base_64_kitchen_sink_round();
   29.55 -        void base_64_kitchen_sink_padded_1();
   29.56 -        void base_64_kitchen_sink_padded_2();
   29.57 -        void base_64_kitchen_sink_unpadded_1();        
   29.58 -        void base_64_kitchen_sink_unpadded_2();
   29.59 -        void check_header_key_import();
   29.60 -        
   29.61 -        bool verify_base_64_test(const char* input, const char* desired_output);
   29.62 -};
   29.63 -
   29.64 -#endif
    30.1 --- a/test/include/I18nTests.h	Sat Aug 31 15:23:52 2019 +0200
    30.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    30.3 @@ -1,19 +0,0 @@
    30.4 -// This file is under GNU General Public License 3.0
    30.5 -// see LICENSE.txt
    30.6 -
    30.7 -#ifndef I18N_H
    30.8 -#define I18N_H
    30.9 -
   30.10 -#include <string>
   30.11 -#include "EngineTestSessionSuite.h"
   30.12 -
   30.13 -using namespace std;
   30.14 -
   30.15 -class I18nTests : public EngineTestSessionSuite {
   30.16 -    public:
   30.17 -        I18nTests(string test_suite, string test_home_dir);
   30.18 -    private:
   30.19 -        void check_i18n();
   30.20 -};
   30.21 -
   30.22 -#endif
    31.1 --- a/test/include/IOS1664Tests.h	Sat Aug 31 15:23:52 2019 +0200
    31.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    31.3 @@ -1,19 +0,0 @@
    31.4 -// This file is under GNU General Public License 3.0
    31.5 -// see LICENSE.txt
    31.6 -
    31.7 -#ifndef I_O_S1664_H
    31.8 -#define I_O_S1664_H
    31.9 -
   31.10 -#include <string>
   31.11 -#include "EngineTestIndividualSuite.h"
   31.12 -
   31.13 -using namespace std;
   31.14 -
   31.15 -class IOS1664Tests : public EngineTestIndividualSuite {
   31.16 -    public:
   31.17 -        IOS1664Tests(string test_suite, string test_home_dir);
   31.18 -    private:
   31.19 -        void check_i_o_s1664();
   31.20 -};
   31.21 -
   31.22 -#endif
    32.1 --- a/test/include/IdentityListTests.h	Sat Aug 31 15:23:52 2019 +0200
    32.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    32.3 @@ -1,19 +0,0 @@
    32.4 -// This file is under GNU General Public License 3.0
    32.5 -// see LICENSE.txt
    32.6 -
    32.7 -#ifndef IDENTITY_LIST_H
    32.8 -#define IDENTITY_LIST_H
    32.9 -
   32.10 -#include <string>
   32.11 -#include "EngineTestSessionSuite.h"
   32.12 -
   32.13 -using namespace std;
   32.14 -
   32.15 -class IdentityListTests : public EngineTestSessionSuite {
   32.16 -    public:
   32.17 -        IdentityListTests(string test_suite, string test_home_dir);
   32.18 -    private:
   32.19 -        void check_identity_list();
   32.20 -};
   32.21 -
   32.22 -#endif
    33.1 --- a/test/include/IntegrityTests.h	Sat Aug 31 15:23:52 2019 +0200
    33.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    33.3 @@ -1,54 +0,0 @@
    33.4 -// This file is under GNU General Public License 3.0
    33.5 -// see LICENSE.txt
    33.6 -
    33.7 -#ifndef INTEGRITY_H
    33.8 -#define INTEGRITY_H
    33.9 -
   33.10 -#include <string>
   33.11 -#include "pEpEngine.h"
   33.12 -#include "message_api.h"
   33.13 -
   33.14 -#include "EngineTestIndividualSuite.h"
   33.15 -
   33.16 -using namespace std;
   33.17 -
   33.18 -class IntegrityTests : public EngineTestIndividualSuite {
   33.19 -    public:
   33.20 -        IntegrityTests(string test_suite, string test_home_dir);
   33.21 -        
   33.22 -    protected:
   33.23 -        void setup();
   33.24 -        void tear_down();
   33.25 -            
   33.26 -    private:
   33.27 -        const char* recip_fpr;
   33.28 -
   33.29 -        // used by each test
   33.30 -        string message;
   33.31 -        char* decrypted_msg;
   33.32 -        PEP_STATUS decrypt_status;
   33.33 -        PEP_rating rating;
   33.34 -        PEP_decrypt_flags_t flags;
   33.35 -        stringlist_t* keylist;
   33.36 -        char* dummy_ignore;
   33.37 -        
   33.38 -        void check_unsigned_PGP_MIME();
   33.39 -        void check_unsigned_PGP_MIME_attached_key();
   33.40 -        void check_unsigned_PGP_MIME_w_render_flag();
   33.41 -        void check_known_good_signed_PGP_MIME();
   33.42 -        void check_known_good_signed_PGP_MIME_attached_key();
   33.43 -        void check_unknown_signed_PGP_MIME_no_key();
   33.44 -        void check_unknown_signed_PGP_MIME_attached_key();
   33.45 -        void check_unsigned_PGP_MIME_corrupted();
   33.46 -        void check_signed_PGP_MIME_corrupted();
   33.47 -        void check_unsigned_2_0();
   33.48 -        void check_unknown_signed_2_0_no_key();
   33.49 -        void check_unknown_signed_2_0_no_key_known_signer();
   33.50 -        void check_unknown_signed_2_0_key_attached();
   33.51 -
   33.52 -        void check_integrity();
   33.53 -        
   33.54 -
   33.55 -};
   33.56 -
   33.57 -#endif
    34.1 --- a/test/include/KeyAttachmentTests.h	Sat Aug 31 15:23:52 2019 +0200
    34.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    34.3 @@ -1,38 +0,0 @@
    34.4 -// This file is under GNU General Public License 3.0
    34.5 -// see LICENSE.txt
    34.6 -
    34.7 -#ifndef KEY_ATTACHMENT_H
    34.8 -#define KEY_ATTACHMENT_H
    34.9 -
   34.10 -#include <string>
   34.11 -#include "EngineTestIndividualSuite.h"
   34.12 -
   34.13 -using namespace std;
   34.14 -
   34.15 -class KeyAttachmentTests : public EngineTestIndividualSuite {
   34.16 -    public:
   34.17 -        KeyAttachmentTests(string test_suite, string test_home_dir);
   34.18 -    protected:
   34.19 -        void setup();        
   34.20 -    private:
   34.21 -        void check_key_attach_inline();
   34.22 -        void check_key_plus_encr_att_inline();
   34.23 -        void check_encr_att_plus_key_inline();
   34.24 -        void check_key_plus_unencr_att_inline(); // not really unencrypted; just not encrypted before attachment
   34.25 -        void check_unencr_att_plus_key_inline(); // not really unencrypted; just not encrypted before attachment
   34.26 -        void check_many_keys_inline();        
   34.27 -        void check_many_keys_w_encr_file_inline();        
   34.28 -        void check_many_keys_w_unencr_file_inline(); // not really unencrypted; just not encrypted before attachment
   34.29 -        void check_many_keys_with_many_files_inline();
   34.30 -        void check_key_attach_OpenPGP();
   34.31 -        void check_key_plus_encr_att_OpenPGP();
   34.32 -        void check_encr_att_plus_key_OpenPGP();
   34.33 -        void check_key_plus_unencr_att_OpenPGP(); 
   34.34 -        void check_unencr_att_plus_key_OpenPGP(); 
   34.35 -        void check_many_keys_OpenPGP();        
   34.36 -        void check_many_keys_w_encr_file_OpenPGP();        
   34.37 -        void check_many_keys_w_unencr_file_OpenPGP();         
   34.38 -        void check_many_keys_w_many_files_OpenPGP();
   34.39 -};
   34.40 -
   34.41 -#endif
    35.1 --- a/test/include/KeyResetMessageTests.h	Sat Aug 31 15:23:52 2019 +0200
    35.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    35.3 @@ -1,70 +0,0 @@
    35.4 -// This file is under GNU General Public License 3.0
    35.5 -// see LICENSE.txt
    35.6 -
    35.7 -#ifndef KEY_RESET_MESSAGE_H
    35.8 -#define KEY_RESET_MESSAGE_H
    35.9 -
   35.10 -#include <string>
   35.11 -#include "EngineTestIndividualSuite.h"
   35.12 -#include "pEpEngine.h"
   35.13 -#include "message.h"
   35.14 -
   35.15 -using namespace std;
   35.16 -
   35.17 -class KeyResetMessageTests : public EngineTestIndividualSuite {
   35.18 -    public:
   35.19 -        KeyResetMessageTests(string test_suite, string test_home_dir);
   35.20 -        
   35.21 -        static PEP_STATUS message_send_callback(message *msg);
   35.22 -        
   35.23 -        static KeyResetMessageTests* fake_this;
   35.24 -        
   35.25 -        vector<message*> m_queue;
   35.26 -        
   35.27 -        static constexpr const char* alice_fpr = "4ABE3AAF59AC32CFE4F86500A9411D176FF00E97";
   35.28 -        static constexpr const char* bob_fpr = "BFCDB7F301DEEEBBF947F29659BFF488C9C2EE39";
   35.29 -        
   35.30 -        static constexpr const char* alice_receive_reset_fpr = "6A349E4F68801E39145CD4C5712616A385412538";
   35.31 -
   35.32 -        static const string alice_user_id;
   35.33 -        static const string bob_user_id;    
   35.34 -        static const string carol_user_id;
   35.35 -        static const string dave_user_id;
   35.36 -        static const string erin_user_id;
   35.37 -        static const string fenris_user_id;
   35.38 -
   35.39 -    protected:
   35.40 -        void setup();
   35.41 -                
   35.42 -    private:
   35.43 -        void check_key_reset_message();        
   35.44 -        void check_reset_key_and_notify();
   35.45 -        void check_non_reset_receive_revoked();
   35.46 -        void check_reset_receive_revoked();
   35.47 -        void check_receive_message_to_revoked_key_from_unknown();   
   35.48 -        void check_receive_message_to_revoked_key_from_contact();   
   35.49 -        void check_multiple_resets_single_key();
   35.50 -        void check_reset_ident_uid_only();
   35.51 -        void check_reset_ident_address_only();
   35.52 -        void check_reset_ident_null_ident();
   35.53 -        void check_reset_ident_other_pub_fpr();
   35.54 -        void check_reset_ident_other_priv_fpr();
   35.55 -        void check_reset_ident_other_pub_no_fpr();
   35.56 -        void check_reset_ident_other_priv_no_fpr();
   35.57 -        void check_reset_ident_own_pub_fpr();
   35.58 -        void check_reset_ident_own_priv_fpr();
   35.59 -        void check_reset_ident_own_priv_no_fpr();
   35.60 -        void check_reset_user_other_no_fpr();
   35.61 -        void check_reset_user_other_fpr();
   35.62 -        void check_reset_user_own_fpr();
   35.63 -        void check_reset_user_no_fpr();
   35.64 -        void check_reset_all_own_keys();
   35.65 -        void check_reset_all_own_no_own();
   35.66 -
   35.67 -        void send_setup();
   35.68 -        void receive_setup();     
   35.69 -        void create_msg_for_revoked_key();
   35.70 -        
   35.71 -};
   35.72 -
   35.73 -#endif
    36.1 --- a/test/include/KeyeditTests.h	Sat Aug 31 15:23:52 2019 +0200
    36.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    36.3 @@ -1,19 +0,0 @@
    36.4 -// This file is under GNU General Public License 3.0
    36.5 -// see LICENSE.txt
    36.6 -
    36.7 -#ifndef KEYEDIT_H
    36.8 -#define KEYEDIT_H
    36.9 -
   36.10 -#include <string>
   36.11 -#include "EngineTestSessionSuite.h"
   36.12 -
   36.13 -using namespace std;
   36.14 -
   36.15 -class KeyeditTests : public EngineTestSessionSuite {
   36.16 -    public:
   36.17 -        KeyeditTests(string test_suite, string test_home_dir);
   36.18 -    private:
   36.19 -        void check_keyedit();
   36.20 -};
   36.21 -
   36.22 -#endif
    37.1 --- a/test/include/KeyringImportTests.h	Sat Aug 31 15:23:52 2019 +0200
    37.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    37.3 @@ -1,23 +0,0 @@
    37.4 -// This file is under GNU General Public License 3.0
    37.5 -// see LICENSE.txt
    37.6 -
    37.7 -#ifndef KEYRING_IMPORT_TESTS_H
    37.8 -#define KEYRING_IMPORT_TESTS_H
    37.9 -
   37.10 -#include <string>
   37.11 -#include "EngineTestSessionSuite.h"
   37.12 -
   37.13 -using namespace std;
   37.14 -
   37.15 -class KeyringImportTests : public EngineTestSessionSuite {
   37.16 -    public:
   37.17 -        KeyringImportTests(string test_suite, string test_home_dir);
   37.18 -	protected:
   37.19 -        void setup();
   37.20 -        void tear_down();
   37.21 -    private:
   37.22 -        void import1();
   37.23 -        void import2();
   37.24 -};
   37.25 -
   37.26 -#endif
    38.1 --- a/test/include/LeastColorGroupTests.h	Sat Aug 31 15:23:52 2019 +0200
    38.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    38.3 @@ -1,19 +0,0 @@
    38.4 -// This file is under GNU General Public License 3.0
    38.5 -// see LICENSE.txt
    38.6 -
    38.7 -#ifndef LEAST_COLOR_GROUP_H
    38.8 -#define LEAST_COLOR_GROUP_H
    38.9 -
   38.10 -#include <string>
   38.11 -#include "EngineTestSessionSuite.h"
   38.12 -
   38.13 -using namespace std;
   38.14 -
   38.15 -class LeastColorGroupTests : public EngineTestSessionSuite {
   38.16 -    public:
   38.17 -        LeastColorGroupTests(string test_suite, string test_home_dir);
   38.18 -    private:
   38.19 -        void check_least_color_group();
   38.20 -};
   38.21 -
   38.22 -#endif
    39.1 --- a/test/include/LeastCommonDenomColorTests.h	Sat Aug 31 15:23:52 2019 +0200
    39.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    39.3 @@ -1,19 +0,0 @@
    39.4 -// This file is under GNU General Public License 3.0
    39.5 -// see LICENSE.txt
    39.6 -
    39.7 -#ifndef LEAST_COMMON_DENOM_COLOR_H
    39.8 -#define LEAST_COMMON_DENOM_COLOR_H
    39.9 -
   39.10 -#include <string>
   39.11 -#include "EngineTestIndividualSuite.h"
   39.12 -
   39.13 -using namespace std;
   39.14 -
   39.15 -class LeastCommonDenomColorTests : public EngineTestIndividualSuite {
   39.16 -    public:
   39.17 -        LeastCommonDenomColorTests(string test_suite, string test_home_dir);
   39.18 -    private:
   39.19 -        void check_least_common_denom_color();
   39.20 -};
   39.21 -
   39.22 -#endif
    40.1 --- a/test/include/LiteralFilenameTests.h	Sat Aug 31 15:23:52 2019 +0200
    40.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    40.3 @@ -1,19 +0,0 @@
    40.4 -// This file is under GNU General Public License 3.0
    40.5 -// see LICENSE.txt
    40.6 -
    40.7 -#ifndef LITERAL_FILENAME_H
    40.8 -#define LITERAL_FILENAME_H
    40.9 -
   40.10 -#include <string>
   40.11 -#include "EngineTestIndividualSuite.h"
   40.12 -
   40.13 -using namespace std;
   40.14 -
   40.15 -class LiteralFilenameTests : public EngineTestIndividualSuite {
   40.16 -    public:
   40.17 -        LiteralFilenameTests(string test_suite, string test_home_dir);
   40.18 -    private:
   40.19 -        void check();
   40.20 -};
   40.21 -
   40.22 -#endif
    41.1 --- a/test/include/LookupTests.h	Sat Aug 31 15:23:52 2019 +0200
    41.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    41.3 @@ -1,22 +0,0 @@
    41.4 -// This file is under GNU General Public License 3.0
    41.5 -// see LICENSE.txt
    41.6 -
    41.7 -#ifndef LOOKUP_H
    41.8 -#define LOOKUP_H
    41.9 -
   41.10 -#include <string>
   41.11 -#include "EngineTestSessionSuite.h"
   41.12 -
   41.13 -using namespace std;
   41.14 -
   41.15 -class LookupTests : public EngineTestSessionSuite {
   41.16 -    public:
   41.17 -        LookupTests(string test_suite, string test_home_dir);
   41.18 -	protected:
   41.19 -        void setup();
   41.20 -        void tear_down();
   41.21 -    private:
   41.22 -        void lookup();
   41.23 -};
   41.24 -
   41.25 -#endif
    42.1 --- a/test/include/LotsOfKeysTests.h	Sat Aug 31 15:23:52 2019 +0200
    42.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    42.3 @@ -1,19 +0,0 @@
    42.4 -// This file is under GNU General Public License 3.0
    42.5 -// see LICENSE.txt
    42.6 -
    42.7 -#ifndef LOTS_OF_KEYS_H
    42.8 -#define LOTS_OF_KEYS_H
    42.9 -
   42.10 -#include <string>
   42.11 -#include "EngineTestIndividualSuite.h"
   42.12 -
   42.13 -using namespace std;
   42.14 -
   42.15 -class LotsOfKeysTests : public EngineTestIndividualSuite {
   42.16 -    public:
   42.17 -        LotsOfKeysTests(string test_suite, string test_home_dir);
   42.18 -    private:
   42.19 -        void check();
   42.20 -};
   42.21 -
   42.22 -#endif
    43.1 --- a/test/include/MapAsn1Tests.h	Sat Aug 31 15:23:52 2019 +0200
    43.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    43.3 @@ -1,19 +0,0 @@
    43.4 -// This file is under GNU General Public License 3.0
    43.5 -// see LICENSE.txt
    43.6 -
    43.7 -#ifndef MAP_ASN1_H
    43.8 -#define MAP_ASN1_H
    43.9 -
   43.10 -#include <string>
   43.11 -#include "EngineTestSessionSuite.h"
   43.12 -
   43.13 -using namespace std;
   43.14 -
   43.15 -class MapAsn1Tests : public EngineTestSessionSuite {
   43.16 -    public:
   43.17 -        MapAsn1Tests(string test_suite, string test_home_dir);
   43.18 -    private:
   43.19 -        void check_map_asn1();
   43.20 -};
   43.21 -
   43.22 -#endif
    44.1 --- a/test/include/Message2_0Tests.h	Sat Aug 31 15:23:52 2019 +0200
    44.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    44.3 @@ -1,19 +0,0 @@
    44.4 -// This file is under GNU General Public License 3.0
    44.5 -// see LICENSE.txt
    44.6 -
    44.7 -#ifndef MESSAGE2_0_H
    44.8 -#define MESSAGE2_0_H
    44.9 -
   44.10 -#include <string>
   44.11 -#include "EngineTestSessionSuite.h"
   44.12 -
   44.13 -using namespace std;
   44.14 -
   44.15 -class Message2_0Tests : public EngineTestSessionSuite {
   44.16 -    public:
   44.17 -        Message2_0Tests(string test_suite, string test_home_dir);
   44.18 -    private:
   44.19 -        void check_message2_0();
   44.20 -};
   44.21 -
   44.22 -#endif
    45.1 --- a/test/include/Message2_1Tests.h	Sat Aug 31 15:23:52 2019 +0200
    45.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    45.3 @@ -1,28 +0,0 @@
    45.4 -// This file is under GNU General Public License 3.0
    45.5 -// see LICENSE.txt
    45.6 -
    45.7 -#ifndef MESSAGE2_1_H
    45.8 -#define MESSAGE2_1_H
    45.9 -
   45.10 -#include <string>
   45.11 -#include "EngineTestIndividualSuite.h"
   45.12 -
   45.13 -using namespace std;
   45.14 -
   45.15 -class Message2_1Tests : public EngineTestIndividualSuite {
   45.16 -    public:
   45.17 -        Message2_1Tests(string test_suite, string test_home_dir);
   45.18 -    private:
   45.19 -        bool verify_message_version_produced(message* enc_msg, unsigned int* maj_inout, unsigned int* min_inout);
   45.20 -        
   45.21 -        void check_message2_1_recip_2_0();
   45.22 -        void check_message2_1_recip_OpenPGP();
   45.23 -        void check_message2_1_recip_2_1();
   45.24 -        void check_message2_1_recip_1_0_from_msg_OpenPGP();
   45.25 -        void check_message2_1_recip_2_0_from_msg();
   45.26 -        void check_message2_1_recip_2_1_from_msg();
   45.27 -        void check_message2_1_recip_mixed_2_0();
   45.28 -        void check_message2_1_recip_mixed_1_0_OpenPGP();
   45.29 -};
   45.30 -
   45.31 -#endif
    46.1 --- a/test/include/MessageApiTests.h	Sat Aug 31 15:23:52 2019 +0200
    46.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    46.3 @@ -1,19 +0,0 @@
    46.4 -// This file is under GNU General Public License 3.0
    46.5 -// see LICENSE.txt
    46.6 -
    46.7 -#ifndef MESSAGE_API_H
    46.8 -#define MESSAGE_API_H
    46.9 -
   46.10 -#include <string>
   46.11 -#include "EngineTestSessionSuite.h"
   46.12 -
   46.13 -using namespace std;
   46.14 -
   46.15 -class MessageApiTests : public EngineTestSessionSuite {
   46.16 -    public:
   46.17 -        MessageApiTests(string test_suite, string test_home_dir);
   46.18 -    private:
   46.19 -        void check_message_api();
   46.20 -};
   46.21 -
   46.22 -#endif
    47.1 --- a/test/include/MessageNullFromTests.h	Sat Aug 31 15:23:52 2019 +0200
    47.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    47.3 @@ -1,26 +0,0 @@
    47.4 -// This file is under GNU General Public License 3.0
    47.5 -// see LICENSE.txt
    47.6 -
    47.7 -#ifndef MESSAGE_NULL_FROM_H
    47.8 -#define MESSAGE_NULL_FROM_H
    47.9 -
   47.10 -#include <string>
   47.11 -#include "EngineTestIndividualSuite.h"
   47.12 -
   47.13 -using namespace std;
   47.14 -
   47.15 -class MessageNullFromTests : public EngineTestIndividualSuite {
   47.16 -    public:
   47.17 -        MessageNullFromTests(string test_suite, string test_home_dir);
   47.18 -    protected:
   47.19 -        void setup();
   47.20 -    private:
   47.21 -        void check_message_null_from_no_header_key_unencrypted();
   47.22 -        void check_message_null_from_header_key_unencrypted();
   47.23 -        void check_message_null_from_encrypted_not_signed();
   47.24 -        void check_message_null_from_encrypted_and_signed(); 
   47.25 -        void import_bob_pair_and_set_own();
   47.26 -        void import_alice_pub();
   47.27 -};
   47.28 -
   47.29 -#endif
    48.1 --- a/test/include/MessageTwoPointOhTests.h	Sat Aug 31 15:23:52 2019 +0200
    48.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    48.3 @@ -1,19 +0,0 @@
    48.4 -// This file is under GNU General Public License 3.0
    48.5 -// see LICENSE.txt
    48.6 -
    48.7 -#ifndef MESSAGE_TWO_POINT_OH_H
    48.8 -#define MESSAGE_TWO_POINT_OH_H
    48.9 -
   48.10 -#include <string>
   48.11 -#include "EngineTestSessionSuite.h"
   48.12 -
   48.13 -using namespace std;
   48.14 -
   48.15 -class MessageTwoPointOhTests : public EngineTestSessionSuite {
   48.16 -    public:
   48.17 -        MessageTwoPointOhTests(string test_suite, string test_home_dir);
   48.18 -    private:
   48.19 -        void check_message_two_point_oh();
   48.20 -};
   48.21 -
   48.22 -#endif
    49.1 --- a/test/include/MimeTests.h	Sat Aug 31 15:23:52 2019 +0200
    49.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    49.3 @@ -1,19 +0,0 @@
    49.4 -// This file is under GNU General Public License 3.0
    49.5 -// see LICENSE.txt
    49.6 -
    49.7 -#ifndef MIME_H
    49.8 -#define MIME_H
    49.9 -
   49.10 -#include <string>
   49.11 -#include "EngineTestSessionSuite.h"
   49.12 -
   49.13 -using namespace std;
   49.14 -
   49.15 -class MimeTests : public EngineTestSessionSuite {
   49.16 -    public:
   49.17 -        MimeTests(string test_suite, string test_home_dir);
   49.18 -    private:
   49.19 -        void check_mime();
   49.20 -};
   49.21 -
   49.22 -#endif
    50.1 --- a/test/include/NewUpdateIdAndMyselfTests.h	Sat Aug 31 15:23:52 2019 +0200
    50.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    50.3 @@ -1,51 +0,0 @@
    50.4 -// This file is under GNU General Public License 3.0
    50.5 -// see LICENSE.txt
    50.6 -
    50.7 -#ifndef NEW_UPDATE_ID_AND_MYSELF_H
    50.8 -#define NEW_UPDATE_ID_AND_MYSELF_H
    50.9 -
   50.10 -#include <string>
   50.11 -#include "EngineTestSessionSuite.h"
   50.12 -
   50.13 -using namespace std;
   50.14 -
   50.15 -class NewUpdateIdAndMyselfTests : public EngineTestSessionSuite {
   50.16 -    public:
   50.17 -        NewUpdateIdAndMyselfTests(string test_suite, string test_home_dir);
   50.18 -	protected:
   50.19 -		char* uniqname;
   50.20 -		char* own_user_id;
   50.21 -		char* start_username;
   50.22 -		char* generated_fpr;
   50.23 -		char* default_own_id;
   50.24 -		char* alias_id;
   50.25 -        char* new_fpr;
   50.26 -        const char* alex_address;
   50.27 -        const char* alex_fpr;
   50.28 -        const char* alex_userid;
   50.29 -        const char* alex_username;
   50.30 -        const char* new_username;
   50.31 -    
   50.32 -        void setup();
   50.33 -        void tear_down();
   50.34 -    private:
   50.35 -        void myself_no_record_no_input_fpr();
   50.36 -        void myself_no_input_fpr_w_record();
   50.37 -        void myself_no_input_fpr_diff_user_id_w_record();
   50.38 -        void myself_replace_fpr();
   50.39 -        void myself_replace_fpr_revoke_key();
   50.40 -        void update_identity_w_matching_address_user_id_username();
   50.41 -        void update_identity_w_matching_address_user_id_new_username();
   50.42 -        void update_identity_w_matching_address_user_id_only();
   50.43 -        void update_identity_use_address_username_only();
   50.44 -        void update_identity_use_address_only();
   50.45 -        void update_identity_use_address_only_on_own_ident();
   50.46 -        void update_identity_non_existent_user_id_address();
   50.47 -        void update_identity_address_username_userid_no_record();
   50.48 -        void update_identity_address_username_no_record();
   50.49 -        void update_identity_address_only_multiple_records();
   50.50 -        void key_elect_expired_key();
   50.51 -        void key_elect_only_revoked_mistrusted();
   50.52 -};
   50.53 -
   50.54 -#endif
    51.1 --- a/test/include/NoOwnIdentWritesOnDecryptTests.h	Sat Aug 31 15:23:52 2019 +0200
    51.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    51.3 @@ -1,25 +0,0 @@
    51.4 -// This file is under GNU General Public License 3.0
    51.5 -// see LICENSE.txt
    51.6 -
    51.7 -#ifndef NO_OWN_IDENT_WRITES_ON_DECRYPT_H
    51.8 -#define NO_OWN_IDENT_WRITES_ON_DECRYPT_H
    51.9 -
   51.10 -#include <string>
   51.11 -#include "EngineTestIndividualSuite.h"
   51.12 -#include "pEpEngine.h"
   51.13 -#include "message.h"
   51.14 -
   51.15 -using namespace std;
   51.16 -
   51.17 -class NoOwnIdentWritesOnDecryptTests : public EngineTestIndividualSuite {
   51.18 -    public:
   51.19 -        NoOwnIdentWritesOnDecryptTests(string test_suite, string test_home_dir);
   51.20 -        ~NoOwnIdentWritesOnDecryptTests();
   51.21 -        message* _to_decrypt;
   51.22 -    private:
   51.23 -        void check_no_own_ident_writes_on_decrypt();        
   51.24 -        void check_address_only_no_overwrite();
   51.25 -        void check_full_info_no_overwrite();
   51.26 -};
   51.27 -
   51.28 -#endif
    52.1 --- a/test/include/OwnIdentitiesRetrieveTests.h	Sat Aug 31 15:23:52 2019 +0200
    52.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    52.3 @@ -1,19 +0,0 @@
    52.4 -// This file is under GNU General Public License 3.0
    52.5 -// see LICENSE.txt
    52.6 -
    52.7 -#ifndef OWN_IDENTITIES_RETRIEVE_H
    52.8 -#define OWN_IDENTITIES_RETRIEVE_H
    52.9 -
   52.10 -#include <string>
   52.11 -#include "EngineTestIndividualSuite.h"
   52.12 -
   52.13 -using namespace std;
   52.14 -
   52.15 -class OwnIdentitiesRetrieveTests : public EngineTestIndividualSuite {
   52.16 -    public:
   52.17 -        OwnIdentitiesRetrieveTests(string test_suite, string test_home_dir);
   52.18 -    private:
   52.19 -        void check_own_identities_retrieve();
   52.20 -};
   52.21 -
   52.22 -#endif
    53.1 --- a/test/include/OwnKeysRetrieveTests.h	Sat Aug 31 15:23:52 2019 +0200
    53.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    53.3 @@ -1,25 +0,0 @@
    53.4 -// This file is under GNU General Public License 3.0
    53.5 -// see LICENSE.txt
    53.6 -
    53.7 -#ifndef OWN_KEYS_RETRIEVE_H
    53.8 -#define OWN_KEYS_RETRIEVE_H
    53.9 -
   53.10 -#include <string>
   53.11 -#include "EngineTestIndividualSuite.h"
   53.12 -
   53.13 -using namespace std;
   53.14 -
   53.15 -class OwnKeysRetrieveTests : public EngineTestIndividualSuite {
   53.16 -    public:
   53.17 -        OwnKeysRetrieveTests(string test_suite, string test_home_dir);
   53.18 -    private:
   53.19 -        void check_own_keys_retrieve_single_private();
   53.20 -        void check_own_keys_retrieve_single_private_single_pub();
   53.21 -        void check_own_keys_retrieve_multiple_private();
   53.22 -        void check_own_keys_retrieve_multiple_private_and_pub();
   53.23 -        void check_own_keys_retrieve_multi_pub_only();
   53.24 -        void check_own_keys_retrieve_no_own();
   53.25 -        void check_own_keys_retrieve_multi_idents_one_key();
   53.26 -        void check_own_keys_retrieve_multi_idents_one_priv_key_multi_pub();
   53.27 -};
   53.28 -#endif
    54.1 --- a/test/include/PepSubjectReceivedTests.h	Sat Aug 31 15:23:52 2019 +0200
    54.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    54.3 @@ -1,19 +0,0 @@
    54.4 -// This file is under GNU General Public License 3.0
    54.5 -// see LICENSE.txt
    54.6 -
    54.7 -#ifndef PEP_SUBJECT_RECEIVED_H
    54.8 -#define PEP_SUBJECT_RECEIVED_H
    54.9 -
   54.10 -#include <string>
   54.11 -#include "EngineTestSessionSuite.h"
   54.12 -
   54.13 -using namespace std;
   54.14 -
   54.15 -class PepSubjectReceivedTests : public EngineTestSessionSuite {
   54.16 -    public:
   54.17 -        PepSubjectReceivedTests(string test_suite, string test_home_dir);
   54.18 -    private:
   54.19 -        void check_pep_subject_received();
   54.20 -};
   54.21 -
   54.22 -#endif
    55.1 --- a/test/include/PgpBinaryTests.h	Sat Aug 31 15:23:52 2019 +0200
    55.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    55.3 @@ -1,19 +0,0 @@
    55.4 -// This file is under GNU General Public License 3.0
    55.5 -// see LICENSE.txt
    55.6 -
    55.7 -#ifndef PGP_BINARY_H
    55.8 -#define PGP_BINARY_H
    55.9 -
   55.10 -#include <string>
   55.11 -#include "EngineTestSessionSuite.h"
   55.12 -
   55.13 -using namespace std;
   55.14 -
   55.15 -class PgpBinaryTests : public EngineTestSessionSuite {
   55.16 -    public:
   55.17 -        PgpBinaryTests(string test_suite, string test_home_dir);
   55.18 -    private:
   55.19 -        void check_pgp_binary();
   55.20 -};
   55.21 -
   55.22 -#endif
    56.1 --- a/test/include/PgpListKeysTests.h	Sat Aug 31 15:23:52 2019 +0200
    56.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    56.3 @@ -1,19 +0,0 @@
    56.4 -// This file is under GNU General Public License 3.0
    56.5 -// see LICENSE.txt
    56.6 -
    56.7 -#ifndef PGP_LIST_KEYS_H
    56.8 -#define PGP_LIST_KEYS_H
    56.9 -
   56.10 -#include <string>
   56.11 -#include "EngineTestSessionSuite.h"
   56.12 -
   56.13 -using namespace std;
   56.14 -
   56.15 -class PgpListKeysTests : public EngineTestSessionSuite {
   56.16 -    public:
   56.17 -        PgpListKeysTests(string test_suite, string test_home_dir);
   56.18 -    private:
   56.19 -        void check_pgp_list_keys();
   56.20 -};
   56.21 -
   56.22 -#endif
    57.1 --- a/test/include/ReencryptPlusExtraKeysTests.h	Sat Aug 31 15:23:52 2019 +0200
    57.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    57.3 @@ -1,20 +0,0 @@
    57.4 -// This file is under GNU General Public License 3.0
    57.5 -// see LICENSE.txt
    57.6 -
    57.7 -#ifndef REENCRYPT_PLUS_EXTRA_KEYS_H
    57.8 -#define REENCRYPT_PLUS_EXTRA_KEYS_H
    57.9 -
   57.10 -#include <string>
   57.11 -#include "EngineTestSessionSuite.h"
   57.12 -
   57.13 -using namespace std;
   57.14 -
   57.15 -class ReencryptPlusExtraKeysTests : public EngineTestSessionSuite {
   57.16 -    public:
   57.17 -        ReencryptPlusExtraKeysTests(string test_suite, string test_home_dir);
   57.18 -    private:
   57.19 -        void check_reencrypt_plus_extra_keys();
   57.20 -        void check_efficient_reencrypt();
   57.21 -};
   57.22 -
   57.23 -#endif
    58.1 --- a/test/include/RevocationTests.h	Sat Aug 31 15:23:52 2019 +0200
    58.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    58.3 @@ -1,22 +0,0 @@
    58.4 -// This file is under GNU General Public License 3.0
    58.5 -// see LICENSE.txt
    58.6 -
    58.7 -#ifndef REVOCATION_H
    58.8 -#define REVOCATION_H
    58.9 -
   58.10 -#include <string>
   58.11 -#include "EngineTestSessionSuite.h"
   58.12 -
   58.13 -using namespace std;
   58.14 -
   58.15 -class RevocationTests : public EngineTestSessionSuite {
   58.16 -    public:
   58.17 -        RevocationTests(string test_suite, string test_home_dir);
   58.18 -	protected:
   58.19 -        void setup();
   58.20 -        void tear_down();
   58.21 -    private:
   58.22 -        void revocation();
   58.23 -};
   58.24 -
   58.25 -#endif
    59.1 --- a/test/include/RevokeRegenAttachTests.h	Sat Aug 31 15:23:52 2019 +0200
    59.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    59.3 @@ -1,21 +0,0 @@
    59.4 -// This file is under GNU General Public License 3.0
    59.5 -// see LICENSE.txt
    59.6 -
    59.7 -#ifndef REVOKE_REGEN_ATTACH_H
    59.8 -#define REVOKE_REGEN_ATTACH_H
    59.9 -
   59.10 -#include <string>
   59.11 -#include "EngineTestSessionSuite.h"
   59.12 -
   59.13 -using namespace std;
   59.14 -
   59.15 -class RevokeRegenAttachTests : public EngineTestSessionSuite {
   59.16 -    public:
   59.17 -        RevokeRegenAttachTests(string test_suite, string test_home_dir);
   59.18 -    protected:
   59.19 -        void setup();
   59.20 -    private:
   59.21 -        void check_revoke_regen_attach();
   59.22 -};
   59.23 -
   59.24 -#endif
    60.1 --- a/test/include/SenderFPRTests.h	Sat Aug 31 15:23:52 2019 +0200
    60.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    60.3 @@ -1,19 +0,0 @@
    60.4 -// This file is under GNU General Public License 3.0
    60.5 -// see LICENSE.txt
    60.6 -
    60.7 -#ifndef SENDER_F_P_R_H
    60.8 -#define SENDER_F_P_R_H
    60.9 -
   60.10 -#include <string>
   60.11 -#include "EngineTestIndividualSuite.h"
   60.12 -
   60.13 -using namespace std;
   60.14 -
   60.15 -class SenderFPRTests : public EngineTestIndividualSuite {
   60.16 -    public:
   60.17 -        SenderFPRTests(string test_suite, string test_home_dir);
   60.18 -    private:
   60.19 -        void check_sender_f_p_r();
   60.20 -};
   60.21 -
   60.22 -#endif
    61.1 --- a/test/include/SequenceTests.h	Sat Aug 31 15:23:52 2019 +0200
    61.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    61.3 @@ -1,19 +0,0 @@
    61.4 -// This file is under GNU General Public License 3.0
    61.5 -// see LICENSE.txt
    61.6 -
    61.7 -#ifndef SEQUENCE_TESTS_H
    61.8 -#define SEQUENCE_TESTS_H
    61.9 -
   61.10 -#include <string>
   61.11 -#include "EngineTestSessionSuite.h"
   61.12 -
   61.13 -using namespace std;
   61.14 -
   61.15 -class SequenceTests : public EngineTestSessionSuite {
   61.16 -    public:
   61.17 -        SequenceTests(string suitename, string test_home_dir);
   61.18 -    private:
   61.19 -        void check_sequences();
   61.20 -};
   61.21 -
   61.22 -#endif
    62.1 --- a/test/include/SignOnlyTests.h	Sat Aug 31 15:23:52 2019 +0200
    62.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    62.3 @@ -1,19 +0,0 @@
    62.4 -// This file is under GNU General Public License 3.0
    62.5 -// see LICENSE.txt
    62.6 -
    62.7 -#ifndef SIGN_ONLY_H
    62.8 -#define SIGN_ONLY_H
    62.9 -
   62.10 -#include <string>
   62.11 -#include "EngineTestIndividualSuite.h"
   62.12 -
   62.13 -using namespace std;
   62.14 -
   62.15 -class SignOnlyTests : public EngineTestIndividualSuite {
   62.16 -    public:
   62.17 -        SignOnlyTests(string test_suite, string test_home_dir);
   62.18 -    private:
   62.19 -        void check_sign_only();
   62.20 -};
   62.21 -
   62.22 -#endif
    63.1 --- a/test/include/SimpleBodyNotAltTests.h	Sat Aug 31 15:23:52 2019 +0200
    63.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    63.3 @@ -1,20 +0,0 @@
    63.4 -// This file is under GNU General Public License 3.0
    63.5 -// see LICENSE.txt
    63.6 -
    63.7 -#ifndef SIMPLE_BODY_NOT_ALT_H
    63.8 -#define SIMPLE_BODY_NOT_ALT_H
    63.9 -
   63.10 -#include <string>
   63.11 -#include "EngineTestIndividualSuite.h"
   63.12 -
   63.13 -using namespace std;
   63.14 -
   63.15 -class SimpleBodyNotAltTests : public EngineTestIndividualSuite {
   63.16 -    public:
   63.17 -        SimpleBodyNotAltTests(string test_suite, string test_home_dir);
   63.18 -    private:
   63.19 -        void check_text_w_html_attach();
   63.20 -        void check_html_w_text_attach();
   63.21 -};
   63.22 -
   63.23 -#endif
    64.1 --- a/test/include/StringlistTests.h	Sat Aug 31 15:23:52 2019 +0200
    64.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    64.3 @@ -1,20 +0,0 @@
    64.4 -// This file is under GNU General Public License 3.0
    64.5 -// see LICENSE.txt
    64.6 -
    64.7 -#ifndef STRINGLIST_TESTS_H
    64.8 -#define STRINGLIST_TESTS_H
    64.9 -
   64.10 -#include <string>
   64.11 -#include "EngineTestSuite.h"
   64.12 -
   64.13 -using namespace std;
   64.14 -
   64.15 -class StringlistTests : public EngineTestSuite {
   64.16 -    public:
   64.17 -        StringlistTests(string suitename, string test_home_dir);
   64.18 -    private:
   64.19 -        void check_stringlists();
   64.20 -        void check_dedup_stringlist();
   64.21 -};
   64.22 -
   64.23 -#endif
    65.1 --- a/test/include/StringpairListTests.h	Sat Aug 31 15:23:52 2019 +0200
    65.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    65.3 @@ -1,20 +0,0 @@
    65.4 -// This file is under GNU General Public License 3.0
    65.5 -// see LICENSE.txt
    65.6 -
    65.7 -#ifndef STRINGPAIR_LIST_TESTS_H
    65.8 -#define STRINGPAIR_LIST_TESTS_H
    65.9 -
   65.10 -#include <string>
   65.11 -#include "EngineTestSuite.h"
   65.12 -
   65.13 -using namespace std;
   65.14 -
   65.15 -class StringpairListTests : public EngineTestSuite {
   65.16 -    public:
   65.17 -        StringpairListTests(string suitename, string test_home_dir);
   65.18 -    private:
   65.19 -        void check_stringpair_lists();
   65.20 -        bool test_stringpair_equals(stringpair_t* val1, stringpair_t* val2);
   65.21 -};
   65.22 -
   65.23 -#endif
    66.1 --- a/test/include/StrnstrTests.h	Sat Aug 31 15:23:52 2019 +0200
    66.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    66.3 @@ -1,35 +0,0 @@
    66.4 -// This file is under GNU General Public License 3.0
    66.5 -// see LICENSE.txt
    66.6 -
    66.7 -#ifndef STRNSTR_H
    66.8 -#define STRNSTR_H
    66.9 -
   66.10 -#include <string>
   66.11 -#include "EngineTestIndividualSuite.h"
   66.12 -
   66.13 -using namespace std;
   66.14 -
   66.15 -class StrnstrTests : public EngineTestIndividualSuite {
   66.16 -    public:
   66.17 -        StrnstrTests(string test_suite, string test_home_dir);
   66.18 -    private:
   66.19 -        void check_strnstr_equal();
   66.20 -        void check_strnstr_first_null();
   66.21 -        void check_strnstr_second_null();
   66.22 -        void check_strnstr_both_null();
   66.23 -        void check_strnstr_first_empty();
   66.24 -        void check_strnstr_second_empty();
   66.25 -        void check_strnstr_both_empty();
   66.26 -        void check_strnstr_first_letter_only();
   66.27 -        void check_strnstr_first_two_only();
   66.28 -        void check_strnstr_all_but_last();
   66.29 -        void check_strnstr_same_len_all_but_last();
   66.30 -        void check_strnstr_same_len_none();
   66.31 -        void check_strnstr_same_big_smaller();
   66.32 -        void check_strnstr_shift_one_no_match();
   66.33 -        void check_strnstr_shift_to_end();
   66.34 -        void check_strnstr_match_after_end();
   66.35 -        void check_strnstr_equal_but_size_too_small();
   66.36 -};
   66.37 -
   66.38 -#endif
    67.1 --- a/test/include/SubkeyRatingEvalTests.h	Sat Aug 31 15:23:52 2019 +0200
    67.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    67.3 @@ -1,29 +0,0 @@
    67.4 -// This file is under GNU General Public License 3.0
    67.5 -// see LICENSE.txt
    67.6 -
    67.7 -#ifndef SUBKEY_RATING_EVAL_H
    67.8 -#define SUBKEY_RATING_EVAL_H
    67.9 -
   67.10 -#include <string>
   67.11 -#include "EngineTestIndividualSuite.h"
   67.12 -
   67.13 -using namespace std;
   67.14 -
   67.15 -class SubkeyRatingEvalTests : public EngineTestIndividualSuite {
   67.16 -    public:
   67.17 -        SubkeyRatingEvalTests(string test_suite, string test_home_dir);
   67.18 -    private:
   67.19 -        void check_subkey_rating_eval();
   67.20 -        void check_subkey_rating_eval_no_es();
   67.21 -        void check_subkey_rating_eval_weak_s();    
   67.22 -        void check_subkey_rating_eval_ecc_s();
   67.23 -        void check_subkey_rating_eval_weak_e_strong_ecc_se();
   67.24 -        void check_subkey_rating_eval_bad_es();
   67.25 -        void check_subkey_rating_eval_bad_e();
   67.26 -        void check_subkey_rating_eval_bad_s_ecc_e();    
   67.27 -        void check_subkey_rating_eval_revoked_sign_no_alt();    
   67.28 -        void check_subkey_rating_eval_revoked_e_with_alt();            
   67.29 -
   67.30 -};
   67.31 -
   67.32 -#endif
    68.1 --- a/test/include/SuiteMaker.h	Sat Aug 31 15:23:52 2019 +0200
    68.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    68.3 @@ -1,25 +0,0 @@
    68.4 -// This file is under GNU General Public License 3.0
    68.5 -// see LICENSE.txt
    68.6 -
    68.7 -#ifndef SUITEMAKER_H
    68.8 -#define SUITEMAKER_H
    68.9 -
   68.10 -#include <cpptest.h>
   68.11 -#include <cpptest-suite.h>
   68.12 -#include <memory>
   68.13 -#include <vector>
   68.14 -
   68.15 -#include "EngineTestSuite.h"
   68.16 -
   68.17 -class SuiteMaker {
   68.18 -    public:
   68.19 -        static void suitemaker_build(const char* test_class_name, const char* test_home, Test::Suite** test_suite);
   68.20 -        static void suitemaker_buildall(const char* test_home, std::vector<Test::Suite*>& test_suites);
   68.21 -        static void suitemaker_buildlist(const char** test_class_names, int num_to_run, const char* test_home, std::vector<Test::Suite*>& test_suites);
   68.22 -
   68.23 -    private:
   68.24 -        static int num_suites;
   68.25 -        static const char* all_suites[];
   68.26 -};
   68.27 -
   68.28 -#endif
    69.1 --- a/test/include/SyncTests.h	Sat Aug 31 15:23:52 2019 +0200
    69.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    69.3 @@ -1,49 +0,0 @@
    69.4 -// This file is under GNU General Public License 3.0
    69.5 -// see LICENSE.txt
    69.6 -
    69.7 -#ifndef SYNC_H
    69.8 -#define SYNC_H
    69.9 -
   69.10 -#include <string>
   69.11 -#include <thread>
   69.12 -#include "EngineTestSessionSuite.h"
   69.13 -#include "locked_queue.hh"
   69.14 -#include "sync_api.h"
   69.15 -#include "Sync_impl.h"
   69.16 -
   69.17 -using namespace std;
   69.18 -
   69.19 -class Sync_Adapter {
   69.20 -public:
   69.21 -    utility::locked_queue< Sync_event_t * > q;
   69.22 -
   69.23 -    void processing();
   69.24 -
   69.25 -    static PEP_STATUS notifyHandshake(
   69.26 -            pEp_identity *me,
   69.27 -            pEp_identity *partner,
   69.28 -            sync_handshake_signal signal
   69.29 -        );
   69.30 -    static int inject_sync_event(SYNC_EVENT ev, void *management);
   69.31 -    static Sync_event_t *retrieve_next_sync_event(void *management, unsigned threshold);
   69.32 -    static PEP_STATUS messageToSend(struct _message *msg);
   69.33 -
   69.34 -    static void sync_thread(PEP_SESSION session, Sync_Adapter *adapter);
   69.35 -};
   69.36 -
   69.37 -class SyncTests : public EngineTestSessionSuite {
   69.38 -    public:
   69.39 -        SyncTests(string test_suite, string test_home_dir);
   69.40 -
   69.41 -        void setup();
   69.42 -        void tear_down();
   69.43 -
   69.44 -    private:
   69.45 -        Sync_Adapter adapter;
   69.46 -        PEP_SESSION sync = NULL;
   69.47 -        thread *sync_thread;
   69.48 -
   69.49 -        void check_sync();
   69.50 -};
   69.51 -
   69.52 -#endif
    70.1 --- a/test/include/TestDriver.h	Sat Aug 31 15:23:52 2019 +0200
    70.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    70.3 @@ -1,19 +0,0 @@
    70.4 -#ifndef PEP_TEST_DRIVER_H
    70.5 -#define PEP_TEST_DRIVER_H
    70.6 -
    70.7 -#include <cpptest.h>
    70.8 -#include <cpptest-suite.h>
    70.9 -#include <cpptest-textoutput.h>
   70.10 -#include <string>
   70.11 -#include <map>
   70.12 -#include "SuiteMaker.h"
   70.13 -#include "EngineTestSuite.h"
   70.14 -#include "EngineTestIndividualSuite.h"
   70.15 -#include "EngineTestSessionSuite.h"
   70.16 -
   70.17 -using namespace std;
   70.18 -
   70.19 -typedef map<string, EngineTestSuite> SuiteMap;
   70.20 -typedef set<string> NameSet;
   70.21 -
   70.22 -#endif
    71.1 --- a/test/include/TrustManipulationTests.h	Sat Aug 31 15:23:52 2019 +0200
    71.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    71.3 @@ -1,19 +0,0 @@
    71.4 -// This file is under GNU General Public License 3.0
    71.5 -// see LICENSE.txt
    71.6 -
    71.7 -#ifndef TRUST_MANIPULATION_TESTS_H
    71.8 -#define TRUST_MANIPULATION_TESTS_H
    71.9 -
   71.10 -#include <string>
   71.11 -#include "EngineTestSessionSuite.h"
   71.12 -
   71.13 -using namespace std;
   71.14 -
   71.15 -class TrustManipulationTests : public EngineTestSessionSuite {
   71.16 -    public:
   71.17 -        TrustManipulationTests(string suitename, string test_home_dir);
   71.18 -    private:
   71.19 -        void check_trust_manipulation();
   71.20 -};
   71.21 -
   71.22 -#endif
    72.1 --- a/test/include/TrustwordsTests.h	Sat Aug 31 15:23:52 2019 +0200
    72.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    72.3 @@ -1,19 +0,0 @@
    72.4 -// This file is under GNU General Public License 3.0
    72.5 -// see LICENSE.txt
    72.6 -
    72.7 -#ifndef TRUSTWORDS_TESTS_H
    72.8 -#define TRUSTWORDS_TESTS_H
    72.9 -
   72.10 -#include <string>
   72.11 -#include "EngineTestSessionSuite.h"
   72.12 -
   72.13 -using namespace std;
   72.14 -
   72.15 -class TrustwordsTests : public EngineTestSessionSuite {
   72.16 -    public:
   72.17 -        TrustwordsTests(string suitename, string test_home_dir);
   72.18 -    private:
   72.19 -        void check_trustwords();
   72.20 -};
   72.21 -
   72.22 -#endif
    73.1 --- a/test/include/URIAddressTests.h	Sat Aug 31 15:23:52 2019 +0200
    73.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    73.3 @@ -1,20 +0,0 @@
    73.4 -// This file is under GNU General Public License 3.0
    73.5 -// see LICENSE.txt
    73.6 -
    73.7 -#ifndef U_R_I_ADDRESS_H
    73.8 -#define U_R_I_ADDRESS_H
    73.9 -
   73.10 -#include <string>
   73.11 -#include "EngineTestIndividualSuite.h"
   73.12 -
   73.13 -using namespace std;
   73.14 -
   73.15 -class URIAddressTests : public EngineTestIndividualSuite {
   73.16 -    public:
   73.17 -        URIAddressTests(string test_suite, string test_home_dir);
   73.18 -    private:
   73.19 -        void check_uri_address_genkey();
   73.20 -        void check_uri_address_encrypt();        
   73.21 -};
   73.22 -
   73.23 -#endif
    74.1 --- a/test/include/UserIDAliasTests.h	Sat Aug 31 15:23:52 2019 +0200
    74.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    74.3 @@ -1,19 +0,0 @@
    74.4 -// This file is under GNU General Public License 3.0
    74.5 -// see LICENSE.txt
    74.6 -
    74.7 -#ifndef USERID_ALIAS_TESTS_H
    74.8 -#define USERID_ALIAS_TESTS_H
    74.9 -
   74.10 -#include <string>
   74.11 -#include "EngineTestSessionSuite.h"
   74.12 -
   74.13 -using namespace std;
   74.14 -
   74.15 -class UserIDAliasTests : public EngineTestSessionSuite {
   74.16 -    public:
   74.17 -        UserIDAliasTests(string suitename, string test_home_dir);
   74.18 -    private:
   74.19 -        void check_userid_aliases();
   74.20 -};
   74.21 -
   74.22 -#endif
    75.1 --- a/test/include/UserIdCollisionTests.h	Sat Aug 31 15:23:52 2019 +0200
    75.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    75.3 @@ -1,112 +0,0 @@
    75.4 -// This file is under GNU General Public License 3.0
    75.5 -// see LICENSE.txt
    75.6 -
    75.7 -#ifndef USER_ID_COLLISION_H
    75.8 -#define USER_ID_COLLISION_H
    75.9 -
   75.10 -#include <string>
   75.11 -#include "EngineTestIndividualSuite.h"
   75.12 -
   75.13 -using namespace std;
   75.14 -
   75.15 -class UserIdCollisionTests : public EngineTestIndividualSuite {
   75.16 -    public:
   75.17 -        UserIdCollisionTests(string test_suite, string test_home_dir);
   75.18 -    
   75.19 -    protected:
   75.20 -        void setup();
   75.21 -        void tear_down();
   75.22 -        
   75.23 -        // own user
   75.24 -        pEp_identity* user_alice;
   75.25 -        // real ID, only minimal info w/ username
   75.26 -        pEp_identity* real_alex;
   75.27 -        // tofu ID, only minimal info w/ username        
   75.28 -        pEp_identity* tofu_alex;
   75.29 -        // real ID, only minimal info w/o username
   75.30 -        pEp_identity* real_alex_0;
   75.31 -        // tofu ID, only minimal info w/o username
   75.32 -        pEp_identity* tofu_alex_0;
   75.33 -        // real ID, only minimal info w/o username
   75.34 -        pEp_identity* real_alex_1;
   75.35 -        // tofu ID, only minimal info w/o username
   75.36 -        pEp_identity* tofu_alex_1;
   75.37 -        // real ID, various kinds of info
   75.38 -        pEp_identity* real_alex_2;
   75.39 -        // tofu ID, various kinds of info
   75.40 -        pEp_identity* tofu_alex_2;
   75.41 -        // real ID, various kinds of info
   75.42 -        pEp_identity* real_alex_3;
   75.43 -        // tofu ID, various kinds of info        
   75.44 -        pEp_identity* tofu_alex_3;
   75.45 -        // tofu ID, various kinds of info        
   75.46 -        pEp_identity* tofu_alex_4;
   75.47 -        // real ID, various kinds of info
   75.48 -        pEp_identity* real_alex_4;
   75.49 -        // tofu ID, various kinds of info        
   75.50 -        pEp_identity* tofu_alex_5;
   75.51 -        // real ID, various kinds of info
   75.52 -        pEp_identity* real_alex_5;
   75.53 -        // tofu ID, various kinds of info        
   75.54 -        pEp_identity* tofu_alex_6a;
   75.55 -        // real ID, various kinds of info
   75.56 -        pEp_identity* real_alex_6a;
   75.57 -        // tofu ID, various kinds of info        
   75.58 -        pEp_identity* tofu_alex_6b;
   75.59 -        // real ID, various kinds of info
   75.60 -        pEp_identity* real_alex_6b;
   75.61 -        // tofu ID, various kinds of info        
   75.62 -        pEp_identity* tofu_alex_6c;
   75.63 -        // real ID, various kinds of info
   75.64 -        pEp_identity* real_alex_6c;
   75.65 -        // tofu ID, various kinds of info        
   75.66 -        pEp_identity* tofu_alex_6d;
   75.67 -        // real ID, various kinds of info
   75.68 -        pEp_identity* real_alex_6d;
   75.69 -        
   75.70 -        const char* const alice_keyfile = "test_keys/pub/pep-test-alice-0x6FF00E97_pub.asc";
   75.71 -        const char* const alice_keyid = "4ABE3AAF59AC32CFE4F86500A9411D176FF00E97";
   75.72 -        const char* const alice_email = "pep.test.alice@pep-project.org";
   75.73 -        const char* const alex_keyfile = "test_keys/pub/pep.test.alexander-0x26B54E4E_pub.asc";
   75.74 -        const char* const alex_keyid = "3AD9F60FAEB22675DB873A1362D6981326B54E4E";        
   75.75 -        const char* const alex_email = "pep.test.alexander@peptest.ch";        
   75.76 -        const char* const alex0_keyfile = "test_keys/pub/pep.test.alexander0-0x3B7302DB_pub.asc";
   75.77 -        const char* const alex0_keyid = "F4598A17D4690EB3B5B0F6A344F04E963B7302DB";
   75.78 -        const char* const alex0_email = "pep.test.alexander0@darthmama.org";                
   75.79 -        const char* const alex1_keyfile = "test_keys/pub/pep.test.alexander1-0x541260F6_pub.asc";
   75.80 -        const char* const alex1_keyid = "59AF4C51492283522F6904531C09730A541260F6";        
   75.81 -        const char* const alex1_email = "pep.test.alexander1@darthmama.org";                                
   75.82 -        const char* const alex2_keyfile = "test_keys/pub/pep.test.alexander2-0xA6512F30_pub.asc";
   75.83 -        const char* const alex2_keyid = "46A994F19077C05610870273C4B8AB0BA6512F30";
   75.84 -        const char* const alex2_email = "pep.test.alexander2@darthmama.org";                                
   75.85 -        const char* const alex3_keyfile = "test_keys/pub/pep.test.alexander3-0x724B3975_pub.asc";
   75.86 -        const char* const alex3_keyid = "5F7076BBD92E14EA49F0DF7C2CE49419724B3975";        
   75.87 -        const char* const alex3_email = "pep.test.alexander3@darthmama.org";                
   75.88 -        const char* const alex4_keyfile = "test_keys/pub/pep.test.alexander4-0x844B9DCF_pub.asc";
   75.89 -        const char* const alex4_keyid = "E95FFF95B8E2FDD4A12C3374395F1485844B9DCF";        
   75.90 -        const char* const alex4_email = "pep.test.alexander4@darthmama.org";                
   75.91 -        const char* const alex5_keyfile = "test_keys/pub/pep.test.alexander5-0x0773CD29_pub.asc";
   75.92 -        const char* const alex5_keyid = "58BCC2BF2AE1E3C4FBEAB89AD7838ACA0773CD29";        
   75.93 -        const char* const alex5_email = "pep.test.alexander5@darthmama.org";                
   75.94 -        const char* const alex6a_keyfile = "test_keys/pub/pep.test.alexander6-0xBDA17020_pub.asc";
   75.95 -        const char* const alex6a_keyid = "B4CE2F6947B6947C500F0687AEFDE530BDA17020";        
   75.96 -        const char* const alex6_email = "pep.test.alexander6@darthmama.org";                
   75.97 -        const char* const alex6b_keyfile = "test_keys/pub/pep.test.alexander6-0x503B14D8_pub.asc";
   75.98 -        const char* const alex6b_keyid = "2E21325D202A44BFD9C607FCF095B202503B14D8";        
   75.99 -        const char* const alex6c_keyfile = "test_keys/pub/pep.test.alexander6-0xA216E95A_pub.asc";
  75.100 -        const char* const alex6c_keyid = "3C1E713D8519D7F907E3142D179EAA24A216E95A";        
  75.101 -        const char* const alex6d_keyfile = "test_keys/pub/pep.test.alexander6-0x0019697D_pub.asc";
  75.102 -        const char* const alex6d_keyid = "74D79B4496E289BD8A71B70BA8E2C4530019697D";        
  75.103 -        
  75.104 -    private:
  75.105 -        void simple_tofu_collision();        
  75.106 -        void simple_tofu_collision_different_usernames();
  75.107 -        void tofu_collision_two_tofus();        
  75.108 -        void tofu_collision_two_tofus_diff_usernames();
  75.109 -        void real_followed_by_explicit_tofu();
  75.110 -        void merge_records_normal();
  75.111 -        void merge_records_set();
  75.112 -        void merge_records_set_2();
  75.113 -};
  75.114 -
  75.115 -#endif
    76.1 --- a/test/include/VerifyTests.h	Sat Aug 31 15:23:52 2019 +0200
    76.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    76.3 @@ -1,23 +0,0 @@
    76.4 -// This file is under GNU General Public License 3.0
    76.5 -// see LICENSE.txt
    76.6 -
    76.7 -#ifndef VERIFY_H
    76.8 -#define VERIFY_H
    76.9 -
   76.10 -#include <string>
   76.11 -#include "EngineTestIndividualSuite.h"
   76.12 -
   76.13 -using namespace std;
   76.14 -
   76.15 -class VerifyTests : public EngineTestIndividualSuite {
   76.16 -    public:
   76.17 -        VerifyTests(string test_suite, string test_home_dir);
   76.18 -    private:
   76.19 -        static constexpr const char *mary_fpr = "599B3D67800DB37E2DCE05C07F59F03CD04A226E";
   76.20 -        void check_revoked_tpk();
   76.21 -        void check_revoked_signing_key();
   76.22 -        void check_expired_tpk();
   76.23 -        void check_expired_signing_key();
   76.24 -};
   76.25 -
   76.26 -#endif
    77.1 --- a/test/include/pEpTestOutput.h	Sat Aug 31 15:23:52 2019 +0200
    77.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    77.3 @@ -1,44 +0,0 @@
    77.4 -
    77.5 -#ifndef PEP_TEST_OUTPUT_H
    77.6 -#define PEP_TEST_OUTPUT_H
    77.7 -
    77.8 -#include <cpptest.h>
    77.9 -#include <vector>
   77.10 -#include <string>
   77.11 -#include <utility>
   77.12 -
   77.13 -namespace Test {
   77.14 -    class pEpTestOutput : public Output {
   77.15 -        public:
   77.16 -            pEpTestOutput();
   77.17 -            ~pEpTestOutput() {};
   77.18 -            void finished(int tests, const Time& time);
   77.19 -            void initialize(int tests) {};
   77.20 -            void suite_start(int tests, const std::string& name);
   77.21 -            void suite_end(int tests, const std::string& name,
   77.22 -                           const Time& time);
   77.23 -            void test_start(const std::string& name);
   77.24 -            void test_end(const std::string& name, bool ok,
   77.25 -                          const Time& time);
   77.26 -            void assertment(const Test::Source& s);
   77.27 -            
   77.28 -            void outputCorrectPercentage(int num_tests, int failures, int width);
   77.29 -            
   77.30 -        private:
   77.31 -            static constexpr const char* huge_sepline = "///////////////////////////////////////////////////////////////////////////\n";
   77.32 -            static constexpr const char* alt_sepline = "++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n";
   77.33 -            static constexpr const char* big_sepline = "********************************************************\n";
   77.34 -            static constexpr const char* med_sepline = "-----------------------------------\n";
   77.35 -            static constexpr const char* sml_sepline = "++++++++++++++++++++++++++\n";
   77.36 -            static constexpr const char* lil_sepline = "~~~~~~\n";
   77.37 -            int _total_failed;
   77.38 -            int _total_tests;
   77.39 -            int _suite_failed;
   77.40 -            int _suite_total;
   77.41 -            std::string _suite_name;
   77.42 -            std::string _test_name;
   77.43 -            std::vector<Source> _test_errors;
   77.44 -            std::vector<std::pair<std::string,Source>> _all_errors;            
   77.45 -    };
   77.46 -}
   77.47 -#endif
   77.48 \ No newline at end of file
    78.1 --- a/test/msg	Sat Aug 31 15:23:52 2019 +0200
    78.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    78.3 @@ -1,22 +0,0 @@
    78.4 -GPG(1)                         GNU Privacy Guard                        GPG(1)
    78.5 -
    78.6 -NAME
    78.7 -       gpg - OpenPGP encryption and signing tool
    78.8 -
    78.9 -SYNOPSIS
   78.10 -       gpg [--homedir dir] [--options file] [options] command [args]
   78.11 -
   78.12 -DESCRIPTION
   78.13 -       gpg  is the OpenPGP part of the GNU Privacy Guard (GnuPG). It is a tool
   78.14 -       to provide digital encryption and signing services  using  the  OpenPGP
   78.15 -       standard.  gpg features complete key management and all bells and whis‐
   78.16 -       tles you can expect from a decent OpenPGP implementation.
   78.17 -
   78.18 -       This is the standalone version of gpg.  For desktop use you should con‐
   78.19 -       sider  using gpg2  ([On some platforms gpg2 is installed under the name
   78.20 -       gpg]).
   78.21 -
   78.22 -RETURN VALUE
   78.23 -       The program returns 0 if everything was fine, 1 if at least a signature
   78.24 -       was bad, and other error codes for fatal errors.
   78.25 -
    79.1 --- a/test/msg.asc	Sat Aug 31 15:23:52 2019 +0200
    79.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    79.3 @@ -1,36 +0,0 @@
    79.4 ------BEGIN PGP MESSAGE-----
    79.5 -Version: GnuPG v1
    79.6 -
    79.7 -hQEMA1oCBdlzCD9NAQf+NM15QA1chVbHLibULsUvJRvvlDlkYFC39pqOhHda41nw
    79.8 -+il9vvsHYYyY6igm5Hffv6TkvbONyCcimH14Qmh4N8RFJgw6qbh5k4HxRRKLd4on
    79.9 -fmXTBiN3X+exz0yEuQIqD5cZBfAUx1OKIPQlB+AcAxfx9uHfR8nWTrLkZrk7hZKG
   79.10 -P4ABgkhXEOxIMw/xliYb5NKg7ImY3IWV6FAk5mtklc9xmbW2GLG5R8NPHdbj9wgZ
   79.11 -wmEFcz3xnIU66ZimUzvVj2tIYGNpbRo9YGfbvAdf+1KDEZvrZO7ZdEYJwJTjnxCw
   79.12 -bqmk7NvOmuI9xlpyr/LEjAI+dUEkp1cfL9VU0bvtUIUBDAOYPRmfc6cbjgEH/Rxt
   79.13 -vK/fHPA/nOyJJlzEoeIA72sA292aeM/wOrlzn0CgJjC3DzVFX1R0Rr9xJRQrHAt7
   79.14 -prFBQM2MbXMYM4m81tQSndye6pyvR3KFVveVSs0dO4pGHJnyL6GnFbHKFiyI3w9Q
   79.15 -WdfGzbz2MoNV4IIXFc6sTN85nf3n56h/ZiYFYjFt2FISoG0XL8s8YcQayCBeNT06
   79.16 -WVTLzsrRMPFlZLjSQDrNdArdQN6AMERW7j5sWJens5xszq4egVpFAWpCs2tAgtKt
   79.17 -W9u9/coJ2k0EEVLkEQuafy52Ht5Tq3VHoYsqOAAcDLD7XSeX5PB1dw/9atHAePiG
   79.18 -RZC5bXMRe8HuDbzMF5jS6QFi2DL5sD8cGMCnHBs00hCT+JAOG4fuGJBZdx5R1JWr
   79.19 -7TKRTxoWSiezB8VfKpRC9haDc7q2xkaJ7bsTlljIJWJEbA71ZusVBeOTgsYBfXjh
   79.20 -8IdQBCIQXim7VliOfYn8hHd+5XdUY/TAmk1Niw6Zpxw8LvnVdHjji3CkPRLG91uM
   79.21 -cL0zl7LddKGWZ75QgrBGCMMT0ZXsOMqKw2e9QprX/JFj+W6drHIQ75F/Xl8i8168
   79.22 -+04nXdypQrHpi21D6DaKE0p/3RpYeDTlou8ttwDGZmsPbHOSdwgIkonESMTgByOV
   79.23 -0l0fu3tgVTqKakpwGD06iQXLDPp375NrSnlpB/sL3YL9rU6xI2Q9/qdrMdBuw1gR
   79.24 -0yHTVP/Q7utprycy+FGL6m0nAg63cKlbJcf6WCNLiHTaDf6a9GlC6t7kGrS6TeNQ
   79.25 -5KiKK7oHgua7e6psHhdqx5o8qzjWQ92KK3mdqUxsla9e0Kgcxypiw/cGFnRf7GzZ
   79.26 -68RL1pJp0p9cfqxyZ1zz81EGcXEqtezVDPdFCqLedfYlq4DqR+PQURyaCK8FvB1g
   79.27 -84sddc784GzxfnsYm8UvrKfaBkiSD+nw/cIzFJH7bassw7tRiwt8TyqE8HRfl0wh
   79.28 -NP0hpkid4BIIJGa9GtCHwGh1JO/iARxRGuUn4+mbYDdjWOTR/R9os5XuzPIO3im0
   79.29 -wM5t1l/aHV1vgmZby2PZjc+C4+PL7Ei6odVAakbm+6Wqr9ccDbl1kS1vPKVo/j7i
   79.30 -avP1gw3OjyCRo6Jp09dsOZxtpyi0w3+IHmvg2qrjqZJvoofBYKapWTo7q6Y8VX66
   79.31 -97ZF1ainjVViIS5Di5cAkv6opOxQ0Y3gkuvVZvkO20L60/xU2iq0lfPUYKebZTfM
   79.32 -WlnHFfczz3qEV4t5gkwj1D4DvWHNUtbW7Ijxi602HxLMR/qIZSz03tNMOuvht021
   79.33 -RsY+9HwLrnRz/loA2dcMZE1SeqmJKqpnxSu5sna0E9Rr+kscyTCRERZOAiRLO2Yb
   79.34 -8rJZltyq9yjjEzkXKqYnzl9C5i+wH06HK5UK9egZJpjfb1DxSMsTuJ8l4uvd3rVj
   79.35 -63QYjqMxQbPwCew6vNOpsVJ8r0VlRjCjKVBGe/Dt0MrFili+HDIsmoMyWR5tcH9y
   79.36 -OTMDD0uBhXVA5rTIAzHYpx1rghp/9i4hoJa7ZzgkJMAEexpK7TwkEjijMdSsvgFV
   79.37 -6KTzmuhXr9NKsXNu35YAmQ==
   79.38 -=/Ljx
   79.39 ------END PGP MESSAGE-----
    80.1 --- a/test/msg1.asc	Sat Aug 31 15:23:52 2019 +0200
    80.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    80.3 @@ -1,20 +0,0 @@
    80.4 -Subject: my =?utf-8?Q?s=C3=BCbject?=
    80.5 -From: Volker Birk <vb@dingens.org>
    80.6 -To: Patricia =?utf-8?Q?B=C3=A4dnar?= <trischa@dingens.org>
    80.7 -X-pEp-Version: 1.0
    80.8 -MIME-Version: 1.0
    80.9 -Content-Type: multipart/alternative; boundary="54fdd7c7_6b8b4567_1505"
   80.10 -
   80.11 ---54fdd7c7_6b8b4567_1505
   80.12 -Content-Type: text/plain; charset="utf-8"
   80.13 -Content-Transfer-Encoding: quoted-printable
   80.14 -Content-Disposition: inline
   80.15 -
   80.16 -my m=C3=A8ssage to yo=C3=BC
   80.17 ---54fdd7c7_6b8b4567_1505
   80.18 -Content-Type: text/html; charset="utf-8"
   80.19 -Content-Transfer-Encoding: quoted-printable
   80.20 -Content-Disposition: inline
   80.21 -
   80.22 -<html><body><p>my message to you</p></body></html>
   80.23 ---54fdd7c7_6b8b4567_1505--
    81.1 --- a/test/msg2.asc	Sat Aug 31 15:23:52 2019 +0200
    81.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    81.3 @@ -1,605 +0,0 @@
    81.4 -Return-Path: <vb@dingens.org>
    81.5 -X-Original-To: vb@dingens.org
    81.6 -Delivered-To: vb@dingens.org
    81.7 -Received: from localhost (localhost [127.0.0.1])
    81.8 -	by dragon.pibit.ch (Postfix) with ESMTP id AFEEF171C059
    81.9 -	for <vb@dingens.org>; Sat, 28 Mar 2015 10:07:34 +0100 (CET)
   81.10 -Received: from dragon.pibit.ch ([127.0.0.1])
   81.11 -	by localhost (dragon.pibit.ch [127.0.0.1]) (amavisd-new, port 10024)
   81.12 -	with ESMTP id LIqI5IZE3-af for <vb@dingens.org>;
   81.13 -	Sat, 28 Mar 2015 10:07:32 +0100 (CET)
   81.14 -Received: from localhost (161.238.195.178.dynamic.wline.res.cust.swisscom.ch [178.195.238.161])
   81.15 -	by dragon.pibit.ch (Postfix) with ESMTPSA id 4742A171C055
   81.16 -	for <vb@dingens.org>; Sat, 28 Mar 2015 10:07:32 +0100 (CET)
   81.17 -Date: Sat, 28 Mar 2015 10:07:31 +0100
   81.18 -From: Volker Birk <vb@dingens.org>
   81.19 -To: Volker Birk <vb@dingens.org>
   81.20 -Subject: Dingens
   81.21 -Message-ID: <20150328090731.GI44028@dingens.org>
   81.22 -MIME-Version: 1.0
   81.23 -Content-Type: multipart/mixed; boundary="cEobB2knsyc5ebfU"
   81.24 -Content-Disposition: inline
   81.25 -X-PGP-Key: http://fdik.org/vb.key
   81.26 -
   81.27 -
   81.28 ---cEobB2knsyc5ebfU
   81.29 -Content-Type: text/plain; charset=us-ascii
   81.30 -Content-Disposition: inline
   81.31 -
   81.32 -VB.
   81.33 --- 
   81.34 -Volker Birk
   81.35 -Oberer Graben 4, 8400 Winterthur, Schweiz
   81.36 -mailto:vb@dingens.org  http://fdik.org
   81.37 -
   81.38 ---cEobB2knsyc5ebfU
   81.39 -Content-Type: application/pdf
   81.40 -Content-Disposition: attachment; filename="pep_Dokument_Titel.pdf"
   81.41 -Content-Transfer-Encoding: base64
   81.42 -
   81.43 -JVBERi0xLjQNJeLjz9MNCjYgMCBvYmoNPDwvTGluZWFyaXplZCAxL0wgMzAzNTQvTyA4L0Ug
   81.44 -MjcyNjEvTiAxL1QgMzAxMjAvSCBbIDU3NiAxNTldPj4NZW5kb2JqDSAgICAgICAgICAgICAg
   81.45 -ICAgICAgIA14cmVmDTYgMTQNMDAwMDAwMDAxNiAwMDAwMCBuDQowMDAwMDAwNzM1IDAwMDAw
   81.46 -IG4NCjAwMDAwMDA4NDggMDAwMDAgbg0KMDAwMDAwMTE3NiAwMDAwMCBuDQowMDAwMDA0NjUz
   81.47 -IDAwMDAwIG4NCjAwMDAwMDgwNzkgMDAwMDAgbg0KMDAwMDAxMTQzOCAwMDAwMCBuDQowMDAw
   81.48 -MDEzNzY0IDAwMDAwIG4NCjAwMDAwMTcyNDkgMDAwMDAgbg0KMDAwMDAyMDQ3NyAwMDAwMCBu
   81.49 -DQowMDAwMDIzNzc5IDAwMDAwIG4NCjAwMDAwMjcwMzcgMDAwMDAgbg0KMDAwMDAyNzE1MCAw
   81.50 -MDAwMCBuDQowMDAwMDAwNTc2IDAwMDAwIG4NCnRyYWlsZXINPDwvU2l6ZSAyMC9Sb290IDcg
   81.51 -MCBSL0luZm8gNSAwIFIvSURbPEM4MjAyNjM5QTk2NzQwODJCNDI1MjY5OEY2RDg5M0I4PjxB
   81.52 -Qzg4QjY2Qzk4MDA0RjgzOUQzRTVEQzI2MDg2NUNDMT5dL1ByZXYgMzAxMTI+Pg1zdGFydHhy
   81.53 -ZWYNMA0lJUVPRg0gICAgICAgICAgICAgICAgICAgICAgICANMTkgMCBvYmoNPDwvRmlsdGVy
   81.54 -L0ZsYXRlRGVjb2RlL0kgOTUvTCA3OS9MZW5ndGggNzYvUyAzNj4+c3RyZWFtDQpo3mJgYOBm
   81.55 -YGDayAAE6boMmICFgQOJxw3FDAz5DDy8c9XO22zoqtU7dKf8yAYmqBJGBobMe0AaxLcHYlYG
   81.56 -hhIfiDjDVoAAAwAUHgw/DWVuZHN0cmVhbQ1lbmRvYmoNNyAwIG9iag08PC9NZXRhZGF0YSA0
   81.57 -IDAgUi9QYWdlTGFiZWxzIDEgMCBSL1BhZ2VzIDMgMCBSL1R5cGUvQ2F0YWxvZy9WaWV3ZXJQ
   81.58 -cmVmZXJlbmNlczw8L0RpcmVjdGlvbi9MMlI+Pj4+DWVuZG9iag04IDAgb2JqDTw8L0FydEJv
   81.59 -eFswLjAgMC4wIDU5NS4yNzYgODQxLjg5XS9CbGVlZEJveFswLjAgMC4wIDU5NS4yNzYgODQx
   81.60 -Ljg5XS9Db250ZW50c1s5IDAgUiAxMCAwIFIgMTEgMCBSIDEyIDAgUiAxMyAwIFIgMTQgMCBS
   81.61 -IDE1IDAgUiAxNiAwIFJdL0Nyb3BCb3hbMC4wIDAuMCA1OTUuMjc2IDg0MS44OV0vTWVkaWFC
   81.62 -b3hbMC4wIDAuMCA1OTUuMjc2IDg0MS44OV0vUGFyZW50IDMgMCBSL1Jlc291cmNlczw8L0V4
   81.63 -dEdTdGF0ZTw8L0dTMCAxNyAwIFIvR1MxIDE4IDAgUj4+Pj4vUm90YXRlIDAvVHJpbUJveFsw
   81.64 -LjAgMC4wIDU5NS4yNzYgODQxLjg5XS9UeXBlL1BhZ2U+Pg1lbmRvYmoNOSAwIG9iag08PC9G
   81.65 -aWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDM0MDg+PnN0cmVhbQ0KSIm0V02O5roN3H+n8AXa
   81.66 -kSiJkk6QRZBF8BY5wCAvA0x3gJfcH0hVUbI90/OSTYIG+nPZ+qHIYpFK5+j5SGcp8+CvuR3f
   81.67 -Xn/44y/p+Pu/Xunwnk8v9WizndbbkefZaj3++Td+m/nMfRwffM7p9JZ/Pq6kM8+qca3O0338
   81.68 -ZNyvr9/wPa0vfoyazzH55a/HP16/0Tr85WPa2Yvno890tm75+PKhefyfz9rK8ZbONNthOJoT
   81.69 -2KhHxZrHlxdQa0c7Ha/wPKcffk6fxxuOibXGmW1wHDaZ48ChWsWC7Uy5HzmfHRa9Daw1iYZr
   81.70 -LJ5KsetzLmcdTXMT5uYKeztWTlmD2znhcZiQGz762bCInbMuZBNn4bh4hl01V30qMHbZRZhL
   81.71 -Pt7qmZvtZZMsbY5hgI3r+znwnTZMr7R8GVHP0vvxNs88hixu8OgbTM7GX8PsITzSPmJr/JJj
   81.72 -XXwpaQjTCVi4z3xBTGgRCfoEhyhYV5Na4lnwzm5jGJJBy71VMDCBiTjmhAtTuMIMLxH4s2eS
   81.73 -jTjnTH/LwYAwGmew0YUKQggHpG7LkT6vF+/Ls4ptSX29qLk9X8B7hheG9y7vWZrcYSaXd6qD
   81.74 -DYhrF6cwsXvhDq3LFYgA44FBCEDtdSPxalk3QBXMa5MLmTjQyRqkFHz05VXl0X5OuKPhuZHC
   81.75 -Zaxn+iWe4M0JgmBvnr6cI3M82AqH9ly0kmOXt44R48AAEmHKWbGlwpwZCqSwaFiDXAUBmuIS
   81.76 -R4H18M7bfZSJEN8vtArjCOwiLr0X1Gu+SJdSvCmmcYVmMnDCYDjthAcgLN+lQLx5v9+YM/X5
   81.77 -ZnHjfvP1BYWZWBhZyGiVChXRYTqshJqsz6BdcbBpw3GW2v/D8EzSlXsCzM809/cmUBQmxw9E
   81.78 -dEif4ik0Cs9p+NKoAdchuZdGAYFNoVF4zvgJjerQSmy5NarD5FG2RnUoAiK7RKgjgZLdGuXz
   81.79 -HHXsr97h0EuhHByFBK909MZsCnlyUAeJG+pEAC0h89bj0iagTjkNacL81G5h4nK9b10CcspT
   81.80 -yBI2NubX3hlvU92iRBvtkiQfmFgeioQDebn0qON1t0t/cPoyH2rUkQo2thrBb0rjUCM4tYxx
   81.81 -GUHnm201QpQsX3K0I4nUg411XooEmPrWozYk8EuPgHjUS47grDrsVqPlykt76EzKx4VpyCVF
   81.82 -cNFam0oEpzDDLyGCF2owE3nZLUQtsrNjTPJbhzrNKluHcDDKzBKigdX9oUSDFcuWFA1a4EuL
   81.83 -FqBH1uNSIyBmw5KjwczOtyBhQfIlBAkg1UuR1t63JMG0Ybcmwe7stjWJLO/loUloVrrV6wUc
   81.84 -UswuSaK/+kORQLHM6hSCBE8PUSr0CIEYZg85uki/1Wi/uKRnseKpRb++/oK/dMTfNzwZjHbz
   81.85 -uwHi6DajA2IfRco9+q2hmP7X/ij9pI/706sefz5ebzhng+/20t2RUxSHa+lfZKPDsqdh/Dz+
   81.86 -Nztr5fy7O7eG94jX/2HrvfTPtv7Z9G+PTrNMCK6jSlQ2VyDp3Wmeycj7dzwZ6BndENKPNb01
   81.87 -viB5UN8rqYNMYmczIe+QTJYAWoIkKPH45WXq3gCAUEkSV3ArzDMyCrYjl9UUwOK3pORtUflA
   81.88 -eRxoAVOaszdIUcGdrW+fnYpcRz5I9clUNNUQJGhVl5KwfVHCs2XBD8odizVAWUcYfUMeVM1l
   81.89 -KjwkfcEVC01M+/Gdj0NCxTqNsf4Zw1sokoHZelDtVUoSYgavsvmmJeW4WlHsV31Bpljap/7Q
   81.90 -t6R20+T9NAWo/VSCSieYRadTWSHgk0pXN/ajSOfCffpQY82axoEU3DdKBuOTp5yXiiLJTioA
   81.91 -HdSHb8jTDM1ylk9rWj4UDbqs+uio6OizZ43QcJIPjSMPOa6HVck4cFAWcZau20JScJs8Ashm
   81.92 -nbLFsJFlLFjuNwhSXLAad9MsOLf6XpH1MrbWbll+WXagndFA2ZhVlDlQ9rN9KUccDP7L+8i8
   81.93 -oBUNkzvgdDQo4SfEg31x+DCASDbnhsvznDR3VJAUionixexilBVJZtfcUcY6XjRQDIBgN20p
   81.94 -cuDEzPrbLVCENBehPoiWrU5iDvXvD9iTLilovFD0xbKKfEcvLJJ5o1vQbBWOGkXXDJtMGTWF
   81.95 -sHlqr8njBqLt4ML7i41je8JedZmdIAeVSEfh9Qgty4xjmms7i2uV4QRT7VdWmiPbSrRpY+ig
   81.96 -dBij3HnTjeKFsusEHupRVKADupofFDokxvwOWrtTFzDaaXYEqGW8nSDLJp89X3n79cWupUV2
   81.97 -OrP1xjUuV3FT1M1KFw+I01Rq1RCHqg6cKJKm4KTsCzxSKChExVTqOcnGe66Suau90eUBidhn
   81.98 -DPWuqWzuMl+3K7lbXIGu7G7U7ftjb3WnN3uNZ37jjpKr7QwHMnBFSkNQ2CRVqRyGjohc4Hfi
   81.99 -nHpYdOSuto6dM+YAqVfGZtliF6/qpK2NsGGrM223+ZBupjphmerqRtZJctN9YIC9DHyWSxbO
  81.100 -alF45akify9qQbuJj9TfLy81uGQ57WBQwKMoYMuAVdrorb5KHmyoSowpwM6Ylx15uOsCxtzv
  81.101 -Ors2Tk3dAOsMk9/z8louygVqMm5Bpsaz9kA9utAZQ2vS+UqL2m8qKANqt1HQUQSFebrw6jLx
  81.102 -IaxrA1J8KJLhm8xO2qM+sk/1iEeyUKiuvnomHQD9Q/BFGqKSwv58KGNqVrTKuPRwhe4SRFJU
  81.103 -U3XTI5u1RxOwyLtlACLQ6mUe++jb9JVpcTAe1Shb9RK9BRHvyepsxpTktW9caBdcY0H6AdGi
  81.104 -cU/8ESKP214oamuBzgG1omRwkB9IIr3rLnB3u0qoSQSZf+CIFbRsj+QEbnd2AvVVmLkujh57
  81.105 -zukxVhjBZIdOyBC7VANoLMTqWaLYuXrS2EZJVnBk2gD5I2J5BomyhhbdLGAvOtVopVwn9boT
  81.106 -EojBvNLTkGw5vsIkoDR7iC0Qa4huo0O3U2NF1ckLHMyohS6OpLE1VCnVGWOFdzAyKkPQ7jt8
  81.107 -N1LW1IRenAh4cYL3v3GTIuDFAxRAnz/Cmwgx+hO+mNFVvjczuhR5M2NEW3oxg+l/EQNJXNpF
  81.108 -DFS48eDFUNA3L2bIxuIFK/Z88GLhzYsZSr14MXX52LyYURsuXnCbcRFj7NCLGCylD17A9jEv
  81.109 -XkDY8sUEnHqUR8cNnLxcvEA1XXqfhWw8aOFRMBctmtqxTYsI402Lha9QoCqW9gnftChY1W+p
  81.110 -KNDpdge+IIHYHODUgz1/yWp0bmzR77kuHMDo8Nu9PD4Xs+dq0QKz3gesfuOvrwoJKbwiDZS0
  81.111 -j1el6/uC7xsaCQJUJTDfI94wmsfYnu0zhkaCLPf4HzF/aGoFC2r5jHeXtCy98NdXQ0BcrTkc
  81.112 -9EHoI6oRmsDGBqYFqkRWoo1PbMiAWVg1145GhVPvPpHgQA3dJnIpGVkPbHHvSXBK46VON4cM
  81.113 -jjZTnwDtEhcag9PjJjH5scfQjvU2qupyY2xgtthAarKoa1xUmcTuUvvndWUCMYBI9ZWDQD7L
  81.114 -naGNXd/9FacOqjK1W93NUvRVjZ6eu6+i96LrqjwlNs9xveseY3ukQHJ9HUttitYVqXBodeHE
  81.115 -/6a6SpIcAWHYV/oJbDb4T/3/82iBpOeSigpCwJZlOW5QdIejxQ5v8F/GsLO7ItFiD9lHfGyP
  81.116 -fvC9uzdP/iP897SBUR8HXkWtpd0D4GXZ/g9BHYou7b2ifE3zVuzGlHPS9zofT8X3ISt3iWWv
  81.117 -GgKRAUpCTGUKWhaeNiEzAEtjFZUyUraL1/W+0yTX9HJEJeY3CO4XpYznw6E56Ze4hlK6t35b
  81.118 -oXJvU7+tGldU8dOwV78aS9il3bSDQOQr7e75A4Y0n9g9nfhXtdPUixt3IzbNqmo27v2V0Rie
  81.119 -CS2jjH35ChA5psm2ghMR9nLmVLsNXAzI/CsyDCDEahaXtl7MtGuruMkRMyhnqsjTp/ceQQ5K
  81.120 -/I8u27m67tNsQlmeIooMIP2OmDK2ZGBvoZVClyv9TW3TBKwmsg7X8rBgtL0dhezygxIbaENK
  81.121 -6za49wQEaNQTG9E8MTZSmJZWc9erCGxttyYNmzTwwsZPleB5hjjurAXS+z5MoG0v2gRLu6sn
  81.122 -iago/CM2crTR3iGqduukSAOUrorxQdKT0Kl9ixZzSeEnAsNiMscjrkypmJE53oAaptWCQHKt
  81.123 -71fo9Ms5lC7NHOyCwLOW3ff+ARp162cQdV84JtOfyMxSWOgwgLalgeqWXfp1EfYydldGcG6T
  81.124 -46TpM3Cs291p2BF6gKQpAl/QKIG2UzbVEXhoKKEceJInaG80oX5EjMjty4Zx4kV4Sgv3wCSI
  81.125 -rWNKOcxpq4rnQs6S7ljMZdDzThygXTLaiZxaSXGo2wYrgBEA2pLurpFNq+ozAQIDrVSnOYgl
  81.126 -0DjSmq6WkJw6JROLT5lKBlBC4YCWW81ZygI61hiv8pmjmU8lmIW5vprBcFpeiKNQWfZ7bLdw
  81.127 -hnbk1oFD9adiUHvgRrvuXhQFzqJC/fhQTZdUDBoO4tDycs6W3pn6nmXHW/c6xx22QpelY1HP
  81.128 -9NUzHlL+dvbP6rBvYEddevS5wRwOyb0gOzsp7lDTDHzRWFTgn38CDAC5cXuEDWVuZHN0cmVh
  81.129 -bQ1lbmRvYmoNMTAgMCBvYmoNPDwvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCAzMzU2Pj5z
  81.130 -dHJlYW0NCkiJZFdLbmy7DZz3KnoDboj6kNIaggyCDLIAI8EF4hvgZf+DVBUluf0ysbuOKInf
  81.131 -IuX11X0+P/rLSjwdyIDaa81K1BJNiHw+gKs14vDG1TKFPObT7bWqZN06Ze01cARwj8rVOrXa
  81.132 -sAWodBfqQdnyirKIq/cnUJuDyMKISki2uEN2rFfE86O+VvQnQF+daI5GVPskilJTtBTJjo7V
  81.133 -+Zo2iFqrRB7aWUKy8zWovr1mNa72MYj6qm+oQC/JClPrydUxgqhNIWpbXlZ7iq7Rn4Bd+tma
  81.134 -AM0tVTeAUVe6wKBWgSFOmyPWE/fJc731/K0IGDTKFVjdBrcgbnAlQoLT5E8EbHGlAjoiu6hR
  81.135 -nU5Q+5IpgxH99QioA4fiFNjy+xFwT9QNvx5O/RFF+A6mA/trNXvD8YqF8/xVq+THy3x+bw84
  81.136 -e7yfNltjrpU+NvZvCGVW3k5F8BMnF3zHz7GoYsMpADMtRQgmvLbo3ugGawCHUflVg2tzbFdN
  81.137 -pB9iv504kcYhxCUkluz32ggc4Wf4jJGeXYH7KMovoF4anRcWFzHbPGWFcUTnovmiaX0aj42C
  81.138 -Y4e8BFEkuslrBTugTmdKO/Z3qtqjCbVj01gHy3rJFmTL9hHPbVR3u2/jr4sRRKgIzHD4/2Nc
  81.139 -sdrGNU72EhUGr8EFABUGZSTzpuo3sDdy2xsZPpc3apWiHbVM4qgKoSOecE6tlodNMzkLeQC0
  81.140 -4EEgR64wwkMoZk93UB3gNbQ6Qo4tLSNOcxJB1rB33lU4tuqW5coIrzqXV0t2QlHeCjOBlnuG
  81.141 -LxigkjpU3/ljqWFB7TKbcDxtAw0qt2T3kKOIk9lQxAJL5IXTv9FOoIt7jefeiKu631Oh5NFA
  81.142 -d4JjwQZHH4Nr/GoL4+u2TLbAOQjysRMlY9cJ9GJL0Z7p35WI8h75oV/fJsq0DHtbbVknHexy
  81.143 -YoaayugqnixSZYJizRpdNxNwlbeUVZ5AL9DgyaGqRvAzw6ABqGfaJS7AKbu6M5UJu7/hqTZS
  81.144 -1LIAmmiDNA5AwvIhZ6GFFOV1QyyhnahmodxXkRb0IuQ2ohlIly/tm/EDk0GImUAoONhO1m2L
  81.145 -KBgQBkiGoIGEcIUlQL0q1K1KthUFs8+ZsmbCk/GDUVVNjNxO1JKQWktZYRfZQCeQBl1/8Xit
  81.146 -Fd/VTzyzU9B4ICcvVqoB0Nqt/l+Phfz2eza7KJIjoE08//vPs3pCA+hgK44L6sbm4N4Js1KU
  81.147 -a2xYRlHUef3e6DCzX5ZZDFsOJ6Ml7nW84aWp5Yhb4Ujyth3JxV527F+gNG4/+Bd2eLqkKuS/
  81.148 -9WEq5yYqk8itJeyCLWeIVehwfrDE6EJWhmiWcHRBTw6klyg9QOkijgLbCWsXc3BIICx7YupL
  81.149 -4l3WiFmoC5grxYPjwYHkpLrF94dWc301jXnDUxmrgizKVKYVNazVltY5M23qJJzNvplVltrb
  81.150 -OjzRL7cSDmvf5CrHRRx2JYxsjjLc1ahJr+FbWkMGbPFcX6Ewz5aHr5l+mOuIr3amyRtD+BF1
  81.151 -9KeQUhxcrOKbpgizF4vmgtJNQ8ZHzmiEnF4/OIP2vdk10NTStTwHOYEzM11MxkU5+QmYL7XM
  81.152 -SI82TEamniH/IQv2QJIuWHcx4L61Z0ErKHlR0pAkamByrVnTmmvgKbIcxBIinbZFV1d9e+c5
  81.153 -K+mAU2x/hzyB4vsDsrJn+Sz5Hx8i9v7VcvTI/ZYEkLs5LNSNv4Tr0GmT8yph1aQy5juqs+/d
  81.154 -tdTz4UsOiZ6XaYPLQg5BO3ltfI9I9HR3MVuvVWFR/rjGIMLBOh/izAyiya7BmbCwmlUKS9kI
  81.155 -OJWcbMaUvh/I+ISrKJWLyrAmtSMTrG3xFZHvoNDlRbnbLTUzt1PjOxk9s3NmQvV8o0Qk9CJ4
  81.156 -UqrluM0hvSnjSk/+35TQ9pMmtlsi3y3JXnDb0uwfs20+UiVEXW/shYSY6XK93wBjfZeRaZL9
  81.157 -fLx9KG3ukO12Mj3lm3LRI6twWrbnOAQSPXN1jmTWRJbSI+fQOuaW7iUH083DSq6iIVvZ4Rcm
  81.158 -mUXWtEVSaQ81tlY8KzHrYozDfbWomYd0gZ9a9vK1YXqRjMHmhw6M4OaYAm7+nR9qDmBQH2j0
  81.159 -dM1I2JbU46PuU9LssFSAvGHtDGiNcQEccecuijeR0f5AaHkcJxtCcpOqXIEx9htZi/ARzci3
  81.160 -a0tUpWjVq5cfolo+e13rmY2VqX6Rn4OZCkxOxEpwZXuLhFFz4L96RNfoO/KsWPkCOGp1FVXR
  81.161 -i1Val5rtKrS+ZrarMdLmLLrdrizfFadd0UXzTvqEzqnptiu6eGW7qlMRqTnATzZDwG5SZvS+
  81.162 -A8SBmBxABmZ0OUsyTpYw+7aPjCfHgnk+fOnDQPGTSie1I9MkPVnb2tU3+oKxY63zADSz7Nwc
  81.163 -16pga6KvOtQCrJynCi8hHC7t3N/gGZPvB9a5P+/uoofkPb1oHqB43o50svU8qiF7Sr2an65F
  81.164 -v2nNTEZWY2eMqEKhcbvlZASPtEx5kwu3x4pY4cKsJ5VYrWLnMwniPfoa9j3aVdy6+JCdc8jj
  81.165 -7FV/+rBaZD/SDgtV/z3B+NRobyei3COHjj7Oh3yl5odfj389/vbg0+YJC57l+ZfHH/pf8LdV
  81.166 -10ONUwS89/n7we/82yb84tj/d+x+34CHEOsHKc23yN3BCsmHaSm89iPQ8zCH7xP+pEF//vX5
  81.167 -41Q+HrG9oTA6K+scm6eeQ3+e+YdkxhoawGZnv+Bs/o/nf95v+/f7RR0ONyRQ5eMM/nmzGEGv
  81.168 -HMfJOYvDiajb9EZFLpZ2AFLPWZ4bhpJA+yYOQLxG9j7+5rREbkHbdPHy5+PC4MTxkfzjIiVB
  81.169 -g1s9e1xVcFyjzgZDBPP52DB1+Tpw61n3a1AW5HVp3b29KDNwMryLrXgF/b6I09/XY2iE/Ikw
  81.170 -4E26qIuWDkKMEDIohkyn2e3JmUN+ghQim+PLRryLJ3DS/olM9H1QUfPjhDS2JRgyNKemIRtB
  81.171 -HvzDeH3/2oEEfZ0wpvpsPed3XvZ5zUxFfl3FaPbvB726rhM4MxmTEfzX1ICGhqsuvuTYRhbI
  81.172 -ExLpdYaJc04l2fmJcYGG2kS4mFxqoHgVFq6RXTcwTYKfjw2bOv/XgXxzQiaQdtSk4ZUKRiKR
  81.173 -JMA+EDr0v2u10Xw+12xockNjCV2AoWqyziayEKA1Vrhz8O9KuC6OhyBb2eQ+tjsOBO0czzYS
  81.174 -31cjz+KusS1SLbYC9ePKI1wci6EQ6Y2rm9ZK522uCQO9l3r0kf1GEAFTdAGr0zbTVLgvl1ps
  81.175 -CkydlZPtRj7Ej+wj45mjDoFn/PwABNZyGhNkCPre53ozDU64SPm2A7fUXjOmn4+NxMQ3L8/P
  81.176 -E3fD0HDjbqLyfXCCvFQmTwW6DM9jzAkb2zvcmFGa9D0aRf6W6zmk5EpX5+rKuw1avrMSZIp9
  81.177 -HQg1mB1dI+BWkG/LdQ08kHv4NPEfP/9HdZVk1w3DsH1O0Qukz5ql82Sb+68LgKC+u4oRf9vi
  81.178 -ABLICIe2h1+AGjnCkQCfjbcFvJ2dkPoX1US9oV64a9mp1ZnQY6OqK3u2coRLrfJJBObvar6z
  81.179 -tDc7vYKv0aHbPyPEkTTODE1EjPNeMhBMyNY+mTAUy6sWi1iel85F3aBT9SsAapt+uUGy3DBz
  81.180 -YRgsr0saI+iEpb1Ku1QDbGt97j2zm+V1SKgkyysFXTXLAbi9guWQKbvMy3KqljVNJ4Bn5oCp
  81.181 -GLuvAVMpcO+96q+R5RRCl+Pctt0UhwRipwTFAab2e1DcMCkutTRNceia+LIoDpqNdSmeKChe
  81.182 -OQyaKU6wjylukBQ3TIobBhMBxr6FP2jIFwUM+QymV31fZdExrD5FL6KqXxwgKW6YFAc8mnmk
  81.183 -OFXRdGdXLp+enY28z+U+x/VRhKS4QVDcICluGBQH2Dc+lhGrIeNLyGcgiDmqXpcZISrRc4hV
  81.184 -VmKa4gZJccPb1gmX2u5Q9YniBJfgeDszIIK7iyNYLLFXGhaEYfEdCuUSBPd1EtwwCW5oDmJG
  81.185 -zJNhYHy8ZnnCq6L/F5KtYCLth820X0L4UdNyQ0wZh6FUVHndSqOE7mSI3498F7faCWnJGXSa
  81.186 -bO0q0yAkm2Sn7rHOLNXpO4FfjF8al7/DDld/ygxJuCVL5wnt2kIcPvSzOEoX6vOD2ITLB+2y
  81.187 -hdz2POkWWrQZWNjhYIl01lb7vdvkVGn5QF16A0pj/HO0OG2nWm2yPL/ELSKkgGIsS/5x9HgW
  81.188 -cvD9HdketMbQdxb2KxAFGsM4MqrUEvptOTKmpUlHc6faYX1TfcxEipWzwRiN4MBDeEaOuOB/
  81.189 -vgyxhYsqsE5RNtDk8qzyhWPV0Opzycryw6gmwmdSKfED3QIm3CNOyv2GVdf58Km+1jE3kuNb
  81.190 -GFWTD9FCfPtcj/YlPSm20ZYn6MgyVf7TVsLfD1xTBqsW/XajgQCiwgfBGESif74MuTZaPHeU
  81.191 -KHCCrocBDpEHrqcIDI3qqTXGMkKEIclLT+2Hq23Pk4DynuPCkK6i5McNkOqppSYYPGtaLUWb
  81.192 -ZxWlC7/480+AAQDBlngrDWVuZHN0cmVhbQ1lbmRvYmoNMTEgMCBvYmoNPDwvRmlsdGVyL0Zs
  81.193 -YXRlRGVjb2RlL0xlbmd0aCAzMjg5Pj5zdHJlYW0NCkiJbJdJkhu5EkT3PAUvoDQgAuMx+gw0
  81.194 -+1YLcvHvv2l3DwBJtWRaFJ+QAGJCDO0a1Z/5qs9+9VbwK6fyHFeq9vyVLm/P12NcPjrJxni+
  81.195 -gTbtma6qD82Nmxp/59l41CjY1K+RudLaeLZrjInf0/OzXmP6+v16+FXLgnx5mjy2t/X7l12G
  81.196 -P6/HwoKj69Ov1CFbu8wGTuv5wOvRrtZ9Y79abc9f9ZqtQjifk9BxhFSyTiwtcy1XQup9Q8Hm
  81.197 -Hh8S/WowxXujXRMXAJoTBnScVxqCTpP9PDJkmZmypDKen8OQwCpOyvWqIVErUB4UAtVSD0GI
  81.198 -QSsthml75taiG2kV/GeB8Wm91GFih5oOI85C4Q82WOxNnI0mbmXEMWV2ohUew5th/nYAHk9U
  81.199 -ZmOI8z68hMUxox5F4sql5hFhmeENw5hvk0647vPFXia+MINC/gdDeafdDCE1yo3pKviMokKX
  81.200 -POF5nJWvgTjICOOhk2uXOQ7zZh1l6S9crt7bF0NPmA2Ua9964t6cv/TcvPWEVnn8hbf7oZXl
  81.201 -fE5bOuOmcVPI8fqySMj58yU5bfShZgPHHJvBDs0VjSl3ylooW4JVuvTAJZB3MrbWUYE6G2Fd
  81.202 -ZcMyGLibERqFXxgSxVRy6LRKv7Jl0oTFDUGOC7E3VUl+2EuJvY5g5dmFWwufNaDdBLsU5o/N
  81.203 -eMVtxlbx0JPlQSmTquta/gG1VOPaxXym2DsvhyX/wvz+TRWL6+wKXbbC66ZFHeozxWxGWokg
  81.204 -waYc77zx44GwBOTxxC0ZkUqAvZDrYDGoxp3InA6n4jXTyTDrpkgs+HZxxurTYb5BEzfIg1MY
  81.205 -UYte1IXHLQY1aoarTFQEDI7Xb74dkEy+bV0uaHQIBGZq1XWAyvQpkPDF95oz4SsN5vMboae8
  81.206 -v3nphW0MlipLU55RNkn21OtZhTBZGZHRets5e5fwDhPXyJiIqc/DYciqJ+TyojO56xE5qg2o
  81.207 -psioSWQ3QcoCq92rJXyInXZTgQA9vhXjoSiN8p5Zf+PpMmLGgyF1PZeJhw4aTbVzSON9VvB7
  81.208 -M9BnoBcm7IH3DkTmanybSXl/4b0ZpXC962BDagxBqgV371+Crv3/Zbiq1S9mUfUnaN7hC8k6
  81.209 -lTzBjBqEGrNXUTvXKuKIxi6R+zyK4f8e/zz+/4Se+IegqBA8wfwTjUHH39fnwZXPg7UUTk8Q
  81.210 -Zv1kD6JEr1wWHMbvTarXML1qK9IOT3soniNYV3SnHkHvh/DSxv6W7OhL6ILNcNxQhFNLZBvT
  81.211 -J70uwEZEC/LWWoPm8cdyO1TQMTk/XYyihdPeh/E4Wt922prBlGNsvXUNWSZhh1W+f97W6TC5
  81.212 -zihZSTPXfM5fFLe/HpvLlmYxn5NUGFkpbAQlNHW/mHxLSFPRevxid6cjBhNGR8irP8thHxK+
  81.213 -ZUrws2qowhKtm8yfbIlm4QV3ZdHwW87q3Mr5zWD0+FAc7nsfPs5NMxzfThnin6K9eJNTRqph
  81.214 -nR49Ljam2+A/D+nbJwtrqK62l2lG7i64r6pK0fdtbEDRkS4L4Xy5ZqHrEaOFKkqcBZUcTeXs
  81.215 -G9gLs3ifteRaYxLGO1Zn2ZXwaRVT9UF0umyTK3vmMQWuR7fQVOnebKGbDm+QPhJG9Kro6m3u
  81.216 -Jvb1WOh6yO9HtAxAQ6izrdSa758FRS92CcMC741dVT+p+V8RxFTm26bct7Dr7VkUrz8wHIAx
  81.217 -IUKPDljqhQMWbAccS3RXw3JZFfJpQGeTNzIqtO8uivB6QJs0N8J9U5o31JwF7HS7PhQ21bb3
  81.218 -RiUC/M6+hUQ+TfXW9mCo94MZaUYDxGj9cLBaFbdxDqkKZLb18RvxWmN2WbMZlFxbkvIJjotW
  81.219 -LCtBoWOZ/V7TCBW7DsSBC+OutSuE+E3A1wNtU7b7cRwsay6s5TyQoc4jIiB+wztqbYIQl9qE
  81.220 -G6JRbYiOvoMUbm8QTlE/1Eku3HGJS+64hMg5BoZsG8rqQBfG5e+NIRcOsbkFXqPj9tXB7SvM
  81.221 -YLx6vcgPB5sU/Sr5/cUsW+I2pRmbA1CPLokjm2uQZWyVtmYkUzYthsjmjmhNEK+gmhVrNTMB
  81.222 -Z84CQ00QRi/OQkOdCspfztHVutIbPs3RfzKV6FtL48iTZdclrb5dHNrAtbP/BZdu7EGVQNiA
  81.223 -gXIMH7qHJajH6+PByAUSN5vx1hpVslBe1IBVPTw083hG05c9azQYSN7bmsifTTNvGnqpva0B
  81.224 -tUQEpKJVtvFb0+O30PSHw1FBMKyY0PA04zlPZM48NOewMmGVI2M7hJtQZ+1eRbmPFqkwATf1
  81.225 -VSyKZvFtT9HhoyxyNA1qVcR0SMqslRzYtLUixxPk1QJ3HrBI64EIfMQlx75+KgjuGyPf9YSy
  81.226 -1nsVER3+7/RS22XVlNFgpWYKyYGynNkIqzGsdR5iX72+FTeNMzxpKC1P+onjWt30om1Vx9Yq
  81.227 -5I1V9gBLZxwzwi9MPb49Jb9YPQzigMM0jqxOWgVIz/xmQ3qnD7vytU15VENnkOzSou11GS2F
  81.228 -I9xlJI/GzZVCM5+dOj+nIfDtiaTfpUVZNrUyfNTDOFot3gXYcsiETIfIMfYkkeoQMpY0ap4i
  81.229 -vNmVurU3F3nHYu8qW8YeYNEuxZt3Ld4cKY8nRfwy5+Ee7/1OejevAuzRYPzJkfGho60KwNOW
  81.230 -xuumRbsoby4a67S3RAQ29F8gRbXj5fCWZXS9I7A6r7NaSnyLbhnU4pTaa3yrjBipFdSjE2h1
  81.231 -kKaOqZNPzkpkUlcyMkaDVq1+U8o5vhVH9wBSwx4Pi1fauJ+dMXHZWUUKjR4thZq5tx0kDHqM
  81.232 -ubaHjw8ptyOj8fHopEEJu/KTWjipijAeSsK4zXrE+LoUzXubXyJhomvlrNbI3jTz/KJZZ3wr
  81.233 -LmqoQYOKo4lFb4BzVeLrLYLism4By1StRft0Q08jPhV3RQwoDQVlhS9xbAxSBEkw7awx6+Q9
  81.234 -joByU3CnFm4ZNW5UqB9kyIFmpG62iFutLnfoEovVDlWoZgQy05RxCil3EqNxx0lq8EqJQcDH
  81.235 -ARYCyb4YowusaXw4rpEO+Y5eWTUsMgaSTbyIwtUas1TRMLaJ4Z1D3MU5BMzR3PchahFwfSxx
  81.236 -reSz2nfetCYaUTmnhomfh6+xDyEHJ3we3nYlcJQ276pIrKXsZxdlVTQ0tIfNnKseU23Dy8Q5
  81.237 -ajFLYs1wFlsx5Qcl1ML0xOX8g3X0AugaONqun2e0dc46fR/leEgUD4SA3JRBEmhxUyv4PqzW
  81.238 -nAfVaP4QX56jW0ZcNjZWN0euc9Zi++J61YPOC3QUXUlVzy2ySosuZyKKHI+4H5E24bCwy2Lk
  81.239 -FyrXdyfVqdztGSWsH8qUPGqgetDNSOrJQ2YxGnueVtTQc9zFFSDVaVBilDivFLOebm1hdMQM
  81.240 -aNwk7yWqu1bxPNrct9401clshrGRFalDdIOUmLdEPi6q2t8ajRoK1WhZh1yPeyPXD1lZoRvN
  81.241 -7ib2LSvAxPiDBCuBbb1R5/Mb2+/S3NoJgyVAV+LdBGdJvHLaYibOz6PAss03O1o6mzF45ENI
  81.242 -LJNPazPfU3n+y3e15bgNw8B/n8IXCCBboh7HKPrRAwTtzyYLtPf/6MxQlL0oUCyQzcQmTZPU
  81.243 -cAjL8ziCQ8JvMEzJwU66WsQeQOlcAC/hu+fE3hUwzK7EGdDXcJ8Mv/nI6IkLZiElBAxTTsUL
  81.244 -gW61PARGE6NiNMyLk+F2uORzwgZOaRE43jQXsXA5FwAXq98D+44CNMa5AvoSLe7FOWp2rZsX
  81.245 -dvVRqpxO9QHUPcFUH4FCfUycJFllSpoGU+3FxI+IawhQriZNe1gF5Lh/EYrOgVlRczGbOIsu
  81.246 -wPaTZa83FRZ4Rme+zc7ITWy4VNiFY/c0ylw1BI/we7McmTjkHficTYy3Mg4JeU/lQirHc5sw
  81.247 -EmEorBJhcGyoK2kZuRGgvIxULMiEyE5MxVTkHUi7TVKYF+pqpcCnxMOLrkSXp4ScURevngUq
  81.248 -6SamytCoif7uTrvgR3BNoNhLAjcpYVhqNvmRsuSbZxw44NrWATTd13E7n1+9tYfdYnd6eN0w
  81.249 -7YT7kJ8K9jHqzSky4HVVrXTfPMNaK89biThynDE+ukeN7XDmc6R4zwULl0c/YTg9gdA1NXvK
  81.250 -hCmX9eLM3FxTgEZdK4yqWq6LMxxyUVtVBFfXpuh/bd/w93vnxE74LFjg7GyZzHfwDd8bL7y3
  81.251 -x9GwgGFScJx/p40uIKPqoU6aGvufn9uP/fPmrx3YPhBAB9vYgOhbDtP+6JDODGs6XEZo5CzK
  81.252 -ZP3KZdKSspD+MSgwwBpQCoVWullwg8KilCXxX/gRdVsPvHuoqEJm/7F1KU2WC/fwuFw87j7+
  81.253 -lwXoIqyUesTH7VHQsGfH6lKgXZqlcYsWB7Nq0pv+2eHsQx7GYK450HNjCVMN/Noo3zBY0Apd
  81.254 -MPmyASMdWspzXx/0Paspntv+V4ABAMjGeEoNZW5kc3RyZWFtDWVuZG9iag0xMiAwIG9iag08
  81.255 -PC9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDIyNTY+PnN0cmVhbQ0KSInsV0uOXDkO3Ocp
  81.256 -8gL1IJL6HmMwizlAYRoGJj1A9/0XE0FSyvSgbPTSi4SBsiL1RIpfBT/KJXpvlwy7f8hVxgJY
  81.257 -9f6hl1iL9ecNaJrkjl22uNN1EoxGoGb8rl7V1r1e2uX+IJRRAYs6tGt2A6xzuZhGZWKD2lrV
  81.258 -BBAjV2917wlu2HGq1bWBAUh8SIjTxffmtLtcTf3+HTvl6tb5oV2qkFWu0ql6rkkwKr6EZNdS
  81.259 -S5oQsMMVuDNOzPrEIQBqK2SLC+lwYLkMegCkTAj5doN63LBeC5Z/vzW4ZSR6AI06Yd0ogfro
  81.260 -RKsD6aVQv5FcA65S9wP3Sm9AWvm3QZZeNga8UbTl+vNWcRVLBI1T4JGukutyNcjgV0QfcW9E
  81.261 -ZLjNClPsqu2ATygdEJ5QPc44NRF72SLoYPi+O2ilYmdACYF0am/j+VlT3xmKjSq+MQe/qsU3
  81.262 -1orvjLLdz9iqvlbjd21ltKp/N+LmbdAbGoem0gHTbIPPG6zqkSJCV2ike10ro0LNg/YiHE3d
  81.263 -MYMJueZkcGWvUSKe6YEQEWG0FOlnzAxDMC2W1Gk1f4cXJ0M0Ow+ZMqgMP1NF5jWpMlLs+ws2
  81.264 -fP0gFizoAPgGqAzfVSTRRgU+cn8Ehpm4xmNDXAEXkYHCawADOSrd6ykAznXE1/YejGOJ9cpl
  81.265 -hxqWvIelwSRChdlCgxbyU6r7LDIFHyGdPI9ovbDWxhaM3+DroxTH7eyxYlwts0E9L/H5dKuQ
  81.266 -aoNQGvYQc09F9CKsqzvXQxfIvKphOyJqNMkzsqRmXn+hurihjacCqWvwU9VLjpECaF5Zs7yA
  81.267 -SLyyM7lubS3rRF2d53aEbKH+2o4nFSaMjgJbadYXOMOP5H4JP2zM8Gs96IQ/cBS/H51G2AHp
  81.268 -U2YCsk6YjpIAp+AjOXsImJvJlpogGoh/OH8wOnGWJjz/NJrBjSILq584zWxIwC9gGl3Ry4+o
  81.269 -6gHeNifCJUJw4JPyAeFEGgPQs2txbf20SSiU5UmLvnXS3D3Q0fJfvNPhxLH3hvdihe4DYAJc
  81.270 -hQ8DsnVE8x77/fJKHRDQjkmot+hj6Z2Dwx14QOYVUY+mcGD4R4c3ypRGtPXEeieEo+0aB9EL
  81.271 -sLRT79rzGYmyBCx1V6niKdKZ3QCgeh1GN1DShp7dQKs/CtERlG/8aQhAiFv0AzX/MYWjol+a
  81.272 -kKq/G7mnqYv9AEB6Pf1AYVGp2Q8AkDneDrBU78rRDxLuhqDlCoE4inVoZj+Q5fm9G0LC3RGU
  81.273 -7X/s3g3QLDvCAd4REp3i2DiyFojP9g7/wiP7WhwHR/iVb2v9Cmf4xUOwww909Pj6hJ9odwOA
  81.274 -3rMZ0KG6Ex6gl3kSXumVnf8A3W1kO0iw20HCp8WJox0oSdqxWOkyeVr8xGlh840vcFpcPSu2
  81.275 -NLw4x2Jf727g6CQ8QXQCLJunBlsBAdM5WwF0ld0JToq78XgIXx3T4cC29/q1nI2xEyTYnSDh
  81.276 -6QQbZ4X2TU3clI5IvLwOT7w7wR+3f9z+vIO64R84OGurINlnRVDIwD6/37jFvx9TmY2M9j//
  81.277 -7xRqtdq81zrgnPo8NIoT35JHfjy0cGjyEIg8y+acAktmN2MxM/LlDm7xVOsftQVeBFfOinCs
  81.278 -+1//vv3r/t9X6YuFC35Xm5O68ZQewj+e0j9exaN04WqX859XeRUtcqGCqyGUTNfnbREIz5HR
  81.279 -etBSDw57CClm1418UKilb/zghDHoHq8/HwfackYebNeJyOwr13Yt8SHiV1NV/elUVX8xVc1f
  81.280 -TlX6OlXN91T1nqreU9VvOFUVec9V77nqPVe956r3XPWeq95z1W80Vwn62GKzmgX9ZckPc5UZ
  81.281 -974YkUTYP/D+gwDhFHj4c+iI8SUnJXDemGH2oPX3hiQR2oZnGa2SI1h7yg/xW/qPwn8yIqFt
  81.282 -wkWo7YlI2Vj6aiNfcouJpyxy71piTOgk5a3YBvRozhOEA1R9xTmSQjTA5oNCw2iDO3M+QAcA
  81.283 -JUSwVsupwSGayYND0MAxpICHlBMSvgLkWwQA5tF9GEgQFNGHJ8K4zGPDvCjSsfRtQqgL8472
  81.284 -4imAjrycS/tb0PwhA73Bh3g2ndfP0chlzXJN6t7nSvTgXOAsp3fzqaM6KZvmA9+IAWvkGjJX
  81.285 -kGGi7ny0OdcNHzLJJNfkuYrcDhS0Fq4tbJjsInCmDxIxB/gIycGGpBtmxMhjdKs4Nx54MKFQ
  81.286 -vE83yzUHlurCiJj/DIvqzDVyU2Oq6WT0Mjn7BKPVwr9k/7iPhF9m55sY9xX4gUSx3WM4KZ7m
  81.287 -e1Sh9+F7jni+4nuD0Jmr97mldF64GgkIpxBS+hmTCJ+YinCh8pB+Cee1GpNWcGKvW+O5jXiX
  81.288 -OMI+yhPqUxzXn6gf0ulAw9tNnNjrkLURtcSJo/7laskXPak5ecBn7tgeNKpNRjLZWCtE1XMJ
  81.289 -pwpS68CSzyeD4zAY/wqCykcQ1R/MfbaRwNmk9Lb3eJyhsr3kpGtJOoWPjlXfM7esdqeYOjdw
  81.290 -Y1obe4+hYTgnHMIruYgyVnD3vggF9ydxd48KKiPZ/8uH5hJXW9zT6gVV/EM17vRp8SHTLVKD
  81.291 -YBDUGhJ1eVq1VB2RQYWwFYvtaIj46/KMDRK2RKyYXXBWoT0ynJaPRg2jjBy4pvc7CiUPw3ot
  81.292 -yTWqSiQ+mxzLelBqcjxS4kU/smMHcMUyzx4LZWR74IU7d8zd842MskMzG/NeosrEuSaXcA7f
  81.293 -vsLfq8kGTN+W76TzuNY0n8nCp4KMk6RU2DEM1Uw2MCVBPNigFrnHi7JBMV2CeGJ7JPEU9oi5
  81.294 -nI5wFgIj6E486TF8HNQNfQI+Jw1wajR0beEcxuypGLNnP3sSurQ1rtnAIKFbcEESxMpXjNSv
  81.295 -VSrzjoNMWLxG9UJNiH7sbxp4IBkweDVjuFJ3UQRs+tTIFu+x3LC3Fuc43maUlmctPXEAR7MV
  81.296 -RJMw+sdjQwQHYgAiwRk2KKi+Y5L6HAav5cv2utwxh5wddfwXUW9tg93CEkbd+yk2OyRVkHmJ
  81.297 -KE2uu1isnTBabbmj/powugewc3ze7v8TYAB5DXT9DWVuZHN0cmVhbQ1lbmRvYmoNMTMgMCBv
  81.298 -YmoNPDwvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCAzNDE1Pj5zdHJlYW0NCkiJbFdJjmy5
  81.299 -DdznKfIC9SyJ1MAT9LrRRyi4+wOuWti+P+CIoPQyC23Uol6kKIlDcFBr1+jzWa9m/fn1aAnL
  81.300 -5W5PgO4BYAugXqt0glqfn48Duccvm+3Hp4QA7Zq1nQPsGsV5dO8H4No8LaFdvbfcl3AuSvZo
  81.301 -+A6cRDDW06/SB7fhozmg+xPfzhUs4zOq5TeE+jVG7JV+hb6rn2+72tpihNAIun4dCG2tUnTZ
  81.302 -PHb0q7Z4OWJD7Pn1sHl1Gvz8vj+3K2xcq50jACaOzcM3yAh8PjY8rtjQr9kWRStM7ThkPq1f
  81.303 -rcQG2OfXguv3msNP+G6IIr6tLIAye8qVQketGE+DowddA9/g26Aw3AjXQ86wgecVqG1gAmix
  81.304 -D69XrPq6uCJA47WWlzUE2coVWinDKFiuYbxtmdbIFFxdgyBv7jXlKi/2pkCE4g8vL8R/7atL
  81.305 -GwTeGeYwBeLA0Xvuq85Qd59PgtV5w7oBuRncl5D+971v9UPTgBPuwC9w4y0DNmSQyrXq+PF5
  81.306 -wl6uhsDtsMMwa/voDfLaNNraZrb2eRAaIP04ksDwr/thNqJS5+Y5vl0W1nUDBDSlfNtHv2yY
  81.307 -GQ5gt304e1i77TuQe/x6/zi2gaN+9hq4fJuW4CT3hjejD5zinJ/cJv9kZuY24Ootc3tTOA1F
  81.308 -Krw8AJbE3Av9mvpGbu/vk9sbntzecKcfy0M/ZoBMfbxcsKFy+8/H74/y5F99/uvxj9/+qM+/
  81.309 -/vv4N1D+NhGlhRLUF3Y1KPH5LfnvB0pleg8l054f42pjJGxvcNcYfM3LRxILhkFiXuGiJiRe
  81.310 -6NcDTIVXPmAAzvl+wRnxBEBl/GAV6wQIC26qYjzgHLp4UZC6AuBQfE9+9mkSM5PYLANLdBbA
  81.311 -QqiQkl0rK6oEh7bF5BELfIeSpYJzBYkaB30+gK3Y22qvSxtxGtCYUpJukOxqUmw2rYZptTtQ
  81.312 -RQ3TlS0Y3wpOux/8RWxHpSdALVLCbXErix3QLDQSuDU5FcpLB+i34KhUfm7w+WC2O1FBHcJZ
  81.313 -UAq7sDTFeXi6BhN5QzAWeT1BTJyOKguAg2AZQJHggpuhSPZYeL4I4EZdnECZQD/R94npCZ7Z
  81.314 -VBqgviVifZY5yGfAOSotLzN4Yy1CTCKgPud2Guot8GJ5wAkW1Jt0III/PthGesqO0oijSHag
  81.315 -xn2wyq83RBp+gpdUcUi6w45v4amj4XKCKp9ExnWGlBgZSeAmlftKTqTLHJQWX4aQbVlbMohx
  81.316 -ZaHtAr3eLkyUDK0Jl6gsBVx8Zarf97P421EOoPaj986utElWIuLgInztYNC38Ez1Gssjccwf
  81.317 -2DLggcpe6a6MFL/DZ1JBAc+SwBDT7AHJLoR0rFMjj8IvJ2yMKFZRf1yWDrwxeUlsxrNKl18W
  81.318 -6Y57MxIowp9UcNJLHBCGFJTx4k4Xv+iKNlPUjzekv5lWFxowkav0NA0SB5+6VVH5mSHv2BW5
  81.319 -roZPbNKxYZ2oifwLrK2Mkx+fMwoNZWLNZDG5RjwtAxrPVlQMeTYICTSGZeQ1PoJQLWmBQ4Gs
  81.320 -bwYZUR1+EKyIrBvALEDgUHq9s1LcjGL9l+zG0XNVriqmjZ0kgVvPoUoUMgdoTkk2EjoQnGRf
  81.321 -zqcguDLSIi1hIYX/OZiXqpVxJnPPjRMMAJpLhy4QvLEWmoqVNAX2OokdIee8P7ODLMn21bOo
  81.322 -WspqFSU4ulZZEVCuMQQ00nGqsM8tW0NV1iAEHYJJjtJIP0Mjk+xIHTgniA6oZzTs1FyGgP1h
  81.323 -F2D68V6rGARrkmoKedd1I1omRYRWncUMtd6zGyD6RFVmWbI+NCUTmxKGTVCdDmQAMLwC2IQy
  81.324 -zt100Gp7K6sGD8b5DFi2Nmnuu89l6Gz21xprqrreEkFrPW6U6Oo6cnZRMrLrjrdvk40vzL7E
  81.325 -faFw1CXZVWVTiU30mbJkCn3MEpFVh/oUUWDF3DyzniTQSaUomWcVQ1cVGhr96RCPLP2Nqy20
  81.326 -kz8CFbYXUGuoqC3sFWayAfWUbSxxiF/RWl01ZRt7BOZ8BgE9d9SkMMMXIvdYPSO9TPnkoCxj
  81.327 -uzOoxY04XqbohiNJsbISGjKQV1QhDkpSoKogh+t+yrBUg9zSXGj4pmWJLM+IAylR/PTqw+DT
  81.328 -yRXt1yqJH9o5lRYcEnhuiUyh0nXP6ko3jR+caJvSzeopeiqDdF2covqBs/BIYnH7zz/vtdOo
  81.329 -Wr4LIaTch6xmY4KU5qqesFAhOzubYuKibCgojXgfzJEDWj5MqBkUaLHfMzOUAotDdsnuuVR+
  81.330 -8KpqHJ92YuMhZWwAexFJPOrZCFQzdfLYhlSYcS4F2lMpFToo1ZWssIuWZycni3Wfi2FsKJv2
  81.331 -rZyC9MyURnD6eKl7oniMydVjaO48bjjnHiflrceBqdFP98oPZfnL3S/sRTqV2NM+QW3auqzn
  81.332 -1toVi8KURvpknBooSpSlgRFOd6cLe+hRy6JMh5rQyJk/h3DgufoZ0YFi1TO+yy3+Gu6Bfb4t
  81.333 -jqyi2shXwXw7FqUyXyC8FB4sUY9C9O58aQvY0jLaYvky23YSeXt5gbjvSVSLw473Xih9fTAf
  81.334 -eHlQVxWZ1u5j0VzrFq2bRut59OFc5EdZjosrRUtOsxOt7ViJglPW7QNTuZUP9kzqmRI+z7x6
  81.335 -PHum1+P3vbpjsjfuiN3H7njuS3est0KbCUfdw5O05XAo7TwM20447EsPHWam937yFl7wY3fB
  81.336 -6rdwDsIFZQjv3r6LKydSAFtKrgGdgMaeqaciih5VskSioNu42l09AYbFW1aCanZnqaFgzPuV
  81.337 -ZJw15uuVZCwuWWs7FyMTmOXdaLdSPzTpAre0BREAMHm+kWAAkXHYgj72oN25yCcLXYtjXohl
  81.338 -JWUjXiMwdF//DzuJ/A7ZSolWHoYeSTQUmKr3ALHnEA/SAmX4FzofQTa5uR02+jiPU6A+xDGM
  81.339 -u8bKmYOy70Ot5Gi8tFq9HToyRN5fZGUI422RjywexDRjtxcROEpLtObja4VkS9nPRCgL0qyx
  81.340 -XZCcIrw9RFXm33H2uK+bgwf/ejji2zznJ7ISOIomrYqccNM/zkRomkB9aibqi13HOcnntIJY
  81.341 -u+tNwHkEJAWaI4NDGvhutq6W5JyF/FjsPYcVNnGK4upk4cKU5hzkxuGo59S9e4xkhavMIuJ8
  81.342 -lJO0sxoGUT8qLJ5UUeKkwhhCDWo6020lailb4l6ERUOXcESjYUUbh0ldlIIcGxYyy0lGJVi1
  81.343 -eEMuf2VuJ/y6YWW6wZdlSgM+FehpDvVoomVfUkhKlmB5etDTfItN6c6RLZF8UpiOexV05jui
  81.344 -aDRy9Peqc9nWITtzFbeiGwCtuT22hNLXVrbsykhMeANoZprwOQvUSz4vm6Vssww3UgI6RFLY
  81.345 -6RSkVMmnl+YcxrtG1kmRYWYL78hX2rYb+kw3hGXXq4pEj+zYAtby4eWRopbvF+IvahS+/o5P
  81.346 -ppw8OBiZEZk7SHpkd01y/4/pKkiOJAZh935FP8Fgg+1n7BtStZVD5rD/vyyS3DOpXEYxbWMM
  81.347 -QpQeTMjBZ1HmryuqlEX2i+QOPPmxVSoGntNVZANodvqd5NKAEpfrFf0oyupUjK2iFBhs90dN
  81.348 -BLJv/Frd55L1MgHeoHxIhiBCxQHNwNW+qBGsAvug8tdDtgdHsVa8w94rJtjnCDIWHc7R8NMq
  81.349 -MeCD+iPKHv4lEcYk+huLomHyLktDSiUF7jlpmdZPFAYxJCFi5Ad1xs9ILbFPxIjR3UFjsJbg
  81.350 -GPp2uzpQhuLJRB3d5REomDphYJWjGniZCH38jBO03S7cGME2JWJxivo6O2KeCDZTv3RG8Ajn
  81.351 -jF+oU408uGhrcycXMUGNYN/O+SPYueCDqKnnUnznw0wBds0PbRV2McpZbU7bPhkVpCb23Qph
  81.352 -cteFm1UgN/1reP03Ot4a9czBFe0j1+Fhfes8jBQygWZfIhid4g/34JFmPrwU6tpv1kJwS8s8
  81.353 -q5WHkxzGBKycbbSFtCnblC7ViBFo0WTDXa2qEPmjQkDxG6gN9gRIp0JbkU5/gHNQpeWOLsll
  81.354 -WFzONGFIcIakJ1s0PCDbbbi6U82aKcJmUBm4TlkRDwbnB3hLL6LGeQ8WB65TKJta+zxnLMl2
  81.355 -lD68U4GCVx6kCU++J+kGTQ07aeq1YHxMTBdPqaeJuhrTjUmiKRPFMdd7BEWSoB4IC7Cv1Hed
  81.356 -Dx0iQKWTSx9OSoHKmLWG3NlEGjIWZeb39ff6c/277W71Z/cMdNR9pyOVkHKvCyuvq9601fZ4
  81.357 -Z+bUqDKxUiTq1Ov8/rqY1PZZgvQzdTqH643jVtlVCtfD135HFBUbtwqL9EUDsGkyBMT5p2EH
  81.358 -u6Y3ieccyuohW1/EI3XgpG3kVkWxAnKYHN3ad5ryMLg6kex1icWsXnYuNZx5vcQVzkV+bxo7
  81.359 -ClHasBL0b+d+Q/vhSVFR0icQYF9XQdUDOKcsJZ9GpRg24UFBIWykuSOmikMkswZ+hyLrLWiX
  81.360 -kgkj0SY5hDkrs4DmKtuDhnNSgltRIi5HSbCCDwIFUzwYXS42yswMKpcMTbOKka0DGPrR4sks
  81.361 -HCQhkUH6z9gSp7SFgJY89SVd6ipE0wjB8saox301HwD+AC5NCKn3P82Gfa9cWJLnBgq+/wsw
  81.362 -AMl9eIMNZW5kc3RyZWFtDWVuZG9iag0xNCAwIG9iag08PC9GaWx0ZXIvRmxhdGVEZWNvZGUv
  81.363 -TGVuZ3RoIDMxNTg+PnN0cmVhbQ0KSIlsV0tyZKsOnHsV3oArACE+63HciB60J2//g5eZElS1
  81.364 -7Ul3pdEBfZJE+miPNur7R3/0td4/6mOb0GiDqO9x0OcbsLXxslr7Fir4sjz26EQ+G23LY67A
  81.365 -Nrg66o5TCPoIUDxMrRFq8/KocWark6hsmZY5w7Tgmw977N7fAXojmHM8gc8KywutxTZVn1Vz
  81.366 -HdGwaXvsnec37Aa8hnHVthFN5qVgv0E01s6wAtaumJ3AvUc6llCtmSyXaR9KrMcZnUfXx6xC
  81.367 -PEq2ewWu2qIN7dtaj+21T62yhZt9EpcyFFJr3HAhbIa7WmxPU3sMVpNna3HZJDKVmL9QOJj1
  81.368 -R6R6WSTelSPv7QXVnaYNWyEJ8IVVQDFqnGlYWQCr7PByIJQWVcRfd31n7HKujJUgil8sYVG1
  81.369 -+NHC74W/4EtGQuLhd0fECGYaV0vlb9GplA6jP2/jMXCaKzNfQF4E22jv49F2J+io8XgUpsDB
  81.370 -XDrrUWr+195h0YxgdQMoLAgAidIfkwwVAltjv4k0gZ6Nv72RpMZ1ngSECmxtYPjpQxvXPmTV
  81.371 -m27aBsEtb8DC/nYu5Gguu8rtWAjuETTesODvKfanmauIFTH8pau/QJw5e0DeVTgHFwCW2DFR
  81.372 -lq768YQaEccdRh7xc+W9xO8dN9/MlT9lCffZmbJaZefOZOpmdfGQhjYUC+nDdCnOiduDPNYL
  81.373 -aLhR5ITjKMLgb4uTuB0K7HKjLq4M131Yk9UeN9zPpMXJxXq0Hwh74yYLLVW14OYtMFPlNhcw
  81.374 -VXUs05bT2oF/Qb0Kisa13KDtV+DQH9wKULepcBP/AY2icseNJt5x16AxlZQX6ritQDvY4M5U
  81.375 -V8qA/IVaA/CLTBNQ3/OZQ+DpL4vbb6DVbpEkq8BtxplDqxaUM95AZNFVw+AtcKrJHlp1Epzs
  81.376 -0Zd6GfBHt7ANnhlDIZihWE8U+UpT4Qk5yA8R0Wp3V8piOrClkoWCk+4gawwznUVG5wpbhcKH
  81.377 -TLYKs6qiJwkVHJ2RL6WIOt7eM3sQq30zKyBDpf2sVR1f/RYLO44VhVUpqZDvp8pVKnE4kEp9
  81.378 -CIKYtkwthB8m/xLr821DcSSsOOnr0C7g38vCkMfAY/2DvenhcpcT0+LFGzpob6FWk2qtC5eh
  81.379 -OJ3Cz+eXuQGLAkTpWugwJJlCtbUnRKOSqHrU11KOcbN21ANXslIW+bB1v7+TDUKmK12voljV
  81.380 -joyfuinRBzaJvFfRZq5Q6KbrsfdTvRnP3AlP6K72hGny3HRHOcjYxH8vdokGUauh8ARtP3Vh
  81.381 -635dXUCx4jHhu87KheIjk/uE4foOAjL1iIQufSVEg9HkwHrwYAT5RFfC6tZT+QPDMxT5mn+D
  81.382 -phwFDL2pKBGRK9nsU4BCQlJ8FloEuyKyWW/qC13buBMvAg7c/WKgkVrfheYOFMVOzKT18H92
  81.383 -5XQWHTNmvM46Rs0QwTzHtHiGF1ctigFVA2BABLum81EaJJxhzkMNAPWohyczemB2ADhx4sZE
  81.384 -RfEBEEmoNyFta23xYGyulmohq+9ZT8hkKFHAWwS8cH38xKeGf95ak2Yllaho+WL+77+7dsjS
  81.385 -2CPydrJnoSnUClcMnoYxF49iNI929WXfqW6aprF2TSf2sJdjAh9Stq1wDysT3hAshOQHPiEf
  81.386 -++/4EJO4+CEmUfQcJCZQ7fZkJnDLyQQ1BurFDjUbCdSf1ARe/WKjavVDTaAaHU9Q8+BDTeLe
  81.387 -DjX57ehJTWy7k7Wipo7xQ822tWNQE8DXk5l0fq1kJuMMuoOMbSnVh5mAFlwkM1GNHc0pmQkU
  81.388 -nwUxAb34ISYLV/K9fz9VPcw8+NYBPZbtn/hJTWvq53+lUK4dCpmfVtNEoSd27EkUzQO0HGDV
  81.389 -GFOcIkwcXXEBH4ikyHXqu92iQ6ktTHcoSkfKDe192JL3QC30bVBoAXOGZQ8K1NeTC2gUlz+Z
  81.390 -Arz99leGux48IseALK+6unkkce7TQQHFd20JjCHTYhoP9p1pjfklbsFWPDa2IkF4asAUY8Vj
  81.391 -bOktjlkz9K/KI7v0kPN2uWLs0eMlRA5w1ooBAxQ1Np5Vj61ZmCYuiM/Y1WtgtUAzmoIVtujo
  81.392 -TQ0EWyAWZfR8+dOB0xUwXahCQObAokVg7pZC5yZbyVu41BI/rU2TaqAuAHuonbM6InW1qBEb
  81.393 -yApRNBPbhZo6CFNfQOjqEgcpATQjZEjjQUFKPr70r65oMRdpOjV9cWvkneUcSsmI4vYuJ7qt
  81.394 -CNRWONm02nbcJhKcnJHsVzXawCUkukIzkbG1ajaSp37ZZIqn2XOuoLQ8aGQt6D5ePeBN2dc/
  81.395 -aky9vueFa9mT/nnrK27vmVSIl67kgmgCDZHcOfOtmCqhIqp+J5UlOfhrx+1IwuEcoFrqpV8H
  81.396 -T9pd6+eB5WfgoteXPS3eozzRYuhKZxKdtvCJC0h4vqzK1Nk3Wl3Y5qFFtU5/yMbr62HqCSQX
  81.397 -M8b8LjNwd4305JGZuXTnn7zKAanHzXNi0xNCNKXChj/CvVLESNfE2kO3P6KfJYoKgQqdTag6
  81.398 -x+ojMx35M6glkI3QoSnkMS7GnAc87ivZWapx1A1JSFUK7QO27i+r3p9fDkhVe9kWPI5mT4ci
  81.399 -nXGKHCLj/cVd3IiIjLFQI8YNE1enzpckAFu9KSJaN32JbrIvHjt2MpVCDuW+nGd2urCSRfP9
  81.400 -OFTVPB13eZUyNAWDq7ZEeQUaU9ZJwxkgT5JigDwJ1H0+2c3LfVIfa1GU/CordvfMeuaJWev0
  81.401 -JplwfU2aZCRJoYwyCXZzkPTLDF2qKnv/EPfzzQ1tDtpkcf7rzTH9cVKAY2hJ0VxyOpSSAvTK
  81.402 -MSXUGrBxfoPyONcqpp8QQoACzxG+tzDkTWRfiR2hW3w2qFr8Pfik+NCGIWkcV6vWUPEiJSXw
  81.403 -23tqxx1zbvQsB5+e5th/x2duc5zxGz72nXPIL/iel/av2BhhgyQRoAiIagfYir1SngF7Y08N
  81.404 -b/kbbzj7a/4ehXmebYfZNNZgxxq7ISQY/3rVi8PUR8bULiNjWprIOorUVKu6dgIlrK/6XJsg
  81.405 -B75CJbL6TQTk++FTxb5TQeIzFTjf7OesmvBmYvBH/4lvJdL+Oz5TAbHfqYBorzMVODur9pwK
  81.406 -gGvMr1QtIPN2pgLnSGpPvfMdjU5goB09G6cC+hjNXkwFB5+pYLCtqWcqIKqWUwE2WvtlKtAx
  81.407 -/UwF/pxtJ4Hn9KqxwNnQzBwLGFrL1xVBrzu8fjIjbfbz1qIaa8wzFQAN38+xALjH8EdtYOUi
  81.408 -l0j1KesZCw6+hRgxpXzHz7Fg8Ka3c2m+Do5RAFlqEs9vkC9rbYlnO50msIUS45qghkD87KNI
  81.409 -DoG8CXGi/KTtXNGHcpX9rOfzDuBolc9bD8ghI9cgoP12pUAePUJ0pcPVkPNIXJTBVle2juIO
  81.410 -NRYhuwPdRHas8AmoRedIvSVSo9ak++OOVnzhiGboNfY7CFqosh58JAiez99w0+v4iluEnW0f
  81.411 -myKiaDvXnpGFWfXmTJmOeIAGXknmK/rXvneYutUzDgB1k22TqRUxgldRpjUgLhZAqdm/sl7M
  81.412 -zXn+WL7hzzWqIT9D2oGyYe6FLAQr9grnsCcosv7PdBldSQzCMLCVKyEkYJn+GzsJI9jPeZtk
  81.413 -wdjY89Zki0XRHID16GIHiAnJikdc+bws+RTN1/ZJ0sV77FPcu+1TVAIl/SSNL69+kuPp1k9R
  81.414 -TVLST1K+/egncdar0k8o884IBmUe7pUEpX77+RVltbrMSLP/+Cearz75J5RwnwVUhLgCCl7v
  81.415 -7b0CSo5vWEBJH2ABhbpsXAGFRo+0gK5VeOhHFY6vpUju/7WBBi+i2W2gJJSslYFeloGS5rgp
  81.416 -Rzl8xjVQcvawgepgENtA9wpc64rYnBsVhOFSJ8S4lQ7NSFXba/sd2z8JCu/xzxW5af8kZdmo
  81.417 -/FPEEB0BFcP+KShTkH+arn9qdTWwln8uTjsc2i6sqLN9xrzypzOYsH6KnmH9XDnTr36So+ZO
  81.418 -DU3QfGHj9Om5RJWn0/pJguVTyY+f/9cJ1GlpdSqqslgt3AV35RNZTc5SZGbZ80YR9QrMV7TL
  81.419 -dejkyfGsEoXiQBrVrxhEEt5VK61HPbvOhiX6rl81nLg6Zs3J1heo0X6nsrifMwdADTp+SlLt
  81.420 -PM3JbMp6kTWRmu5+po9U41j/yb2kYp1VkVM0soaY9tWjoUGFe2EZkLCCoGlDkGubo9WT2Uob
  81.421 -n/Wd3NFr3yHP7ZfBzPCbTOmW57PK1r2C3Xw4e3g5ahffWSybhVbw9y/AANF6dtINZW5kc3Ry
  81.422 -ZWFtDWVuZG9iag0xNSAwIG9iag08PC9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDMyMzI+
  81.423 -PnN0cmVhbQ0KSIlsV0mSZCsO3Ocp8gIVhsQgOEafIa3b/iJr0X3/Rbu7gBc1WJlVhvMECMc1
  81.424 -MMurrfn5w17d43OWVxXA//jt1Ql8zM+vD+AyK7H1z1ivmdPKIhgxNvj6AGz1+eQ1JzUnKrNp
  81.425 -yRa0nK/lS/v19gk0SxDRI6BwIxox03Z0uTPTdhSs66/SZNvpgMPVNO2tEbbp+shN/BWY8aDl
  81.426 -nqeawJxpnz8/Jub43PD7wB/t1bHSO17dPokatu2valMIRkADNOXK0w7+Fu6VuJnYnXURWV8X
  81.427 -Yd3S9lybB2suD9RfvW7utdEUsOgb6OitaNMJPyPwRw52q0StzWcT4DIGcbX4jPGa5LCC5nHR
  81.428 -oenB1jpXKlP31kYQdUjiB88bue4iSdASrlOXsYjgF7ytEZ/4XXoqZQzfEGDVIcMhfmxpmttm
  81.429 -pOUysAGQFsqrQwskq2i/WPFc6cbfH/98TKjQ6znNT2HTWSckMaHCMF0y/AVqUxdTqq4Rp1nC
  81.430 -HR8DXOkiJuQ8B4ReL/cTJt3ux/aaOMeeB45TG3tR7DzH3RKcM+y2OxtdhV5cavs8MxEy/qxL
  81.431 -Boy2e1OwhhMdh8jv9fZwf46yP+5T7ombg7vsZmhvutnbDv3CrVjwZW9cb1yVAYAqtgeqlD0Q
  81.432 -CazgqOXcqmsJHHEyUISQDQiWAsT62FwngbVq1eDvFvpN+kltRFqupdsdq5MEm7INKmcoUyWA
  81.433 -6cg8dj/OmHdi6LTPsoGF6t00cMi47oRU/jiLwLsHYbDEPWNkcFwCgBEQhx6idanb6BJ98Vi5
  81.434 -Emf68UfrIo+1tW25K69MKm6S0MTpj7PIs2MfTEdBbE+ZWib92uKScPL3oSiz+6FPiX9Tu0vC
  81.435 -oT0/7Ruxowjd111Td7n327e8fdkauJ5ugexzpHb2Cbew7vm37PxIZEtUzP0i2K+PVbFscrUq
  81.436 -BEzsPQuPfwLVkXR5I/KkspWZc82TIETywpJmeepJNEq/lAC2eiBALVkmB0EWvppmZplqm/FT
  81.437 -6bIbRYbFRF0s6mwZMqg04BW2lmXCweE7mqJZONUEEXGmKRAN96t1mlTY6l63K2g7/hBNZasY
  81.438 -OlXJEF6zpb8lFCe25KFlMNbIg9XMer7PVl14QIEkpN/oI1s+ntgkl1VhHPCfPKMOcSbKJG9h
  81.439 -F7Ix8hbqVOSarqg1Ob9INFCm2hHMbAvFcLWDv4VN5dRo3fI6IVFclVxqN92TwTpOqV3UrzI8
  81.440 -RVIkSVZaNSQryzf8g1gW+6qVW86LrvouNlz0nojLT1OtWtR6yQFtiZKY97urpx1PT6onH+4n
  81.441 -1QNJCSywPKEChZV0Jh8RqgoLV3TYMUn1oAyML9TVtZB0VAAL5PiTWPw4MhF+K+QRpDBZ7PT0
  81.442 -baT62c0JB20njpBU4oArMmwOz/Eap9vBb89FAydfI1Xb1bvCcmA4OyxgoL60TOVvaQvX2kZa
  81.443 -qvg1VT0gN10XuyUg6/o2vKdtyTrgXSuVlnpHh0gkbcWxVB9kg80iHf8TQoDRDlQhGIh2omg3
  81.444 -qAK9qsoAxSgKospBdAsEoVKY83a1q3VbijuUpS7WS5Fp72LZqsrSqJZ34F0HC5NtS0oUfuyv
  81.445 -21v4oTcft26ulf0fVhLwyEqoVaGBLo9s6uMucDOkCeklOfi6+jkUWWEC/NtAFuE9EFJAgZ4E
  81.446 -szvjC4LQfT49ODYY2QBnD/4PFgBvq2VvE9AsByS+HPjWQFv9xARh2Ok8iZT9Tl9qhXI/XSvR
  81.447 -KKejtQJB2BOHxLXdnotw5FoFZ7CC6tq0lM80h9qzsa5IToQ1BdWmkB5uaIWtbuvh4i5a1/c4
  81.448 -XXkuHqFaUVqa4/arfKFLhKi0x2/Qhj0ev9Gax7x+W7n5hH4D7p4z3TbmqXXdBtytJd02XFj1
  81.449 -N7cx4IyD7bax8s/rtrGyjje3ObBUAZ0XDtizz0BVEOpZnJdv6z6UwBgVCVXarfZ3WEe75vHI
  81.450 -RQf/64CrQftlwDdzq2cb0i1hNkxTTxMNFBX3SOvZ1D8NdByESr6mPieto+h7jZbXUnQ8T+uW
  81.451 -TbnNs3at4sqgA0Ibu/vQ/a7cqqx9/WO+f23ZV7BqSxvjra3hAOVNR6u0tLrQIuuE2XqRk1Ti
  81.452 -quOdtZGe/THw0HgHfAdO9f7QOE57dGhExk6mIq3dHxaRv7ckNotM4PGwiPYz21SxyJrzC4uo
  81.453 -LdmmJYsoLtUvT8gzXt9YRBrqz1cWEH9YZKLt7yy2Xc1FIlP2w2E7DerhcA88lDn8an8ZeHLl
  81.454 -zWw5gGRnyPzKvnXwLfbgXhlcTW0ki05pCasq0kwfOJAFovjM70ttlkXOjkz01XybT5N5UyS3
  81.455 -rM5Nj1AzUFXzOZWBjFqc01l9CHd7p7AG62ZP+eFAzP58H6ck4CfWiXyYDZlSLPreRn5XO9+U
  81.456 -ngSzdPGdQPNQk7YHvjWg9IWteKmAu41g3SHM/rA137upVMM/a9ubvrsVHaOs28mYsbzvlpGU
  81.457 -oOkrooQbClalklWTojvAlpqzLZNZ3XBkXZrbHEfY5WNf7tr9YPL55HNjXaon25OSkVVpEzqz
  81.458 -BvsamyHvStk96WBWYY4XCj1OWEE3malq9p9mSBv5lFl9w0yOteStYmCqoxxSzNRDiQSseGCq
  81.459 -90t6hqtNExzp6GcOZACu5vK9ZsM69t2rNTE1/XlwzxcZ04tuKx9XrnjgwzSfsxFbdflqpZU0
  81.460 -WM4jdlN6M4HkXM9bL8WfD0GpG2JavzjS5OF1lHEZzzEyTPOUOrijiBbdQSx1LZ4dOu/BlUGd
  81.461 -O+v6O+o8IcNSXUsIcvhpW9z0pjl9i6Mkjlv/gVg2r16A57hdjUOHa169AJ6lUy/OdjjrP4Xo
  81.462 -7GIFO6nwtpvkMcSxs1HMPoUxAeiZnUtJWFNBnjxzQDfWGQNAzUXjhPcXImAy4M7ATZo8yV8H
  81.463 -biV6BnxTMe2pRICx3gs6B7JURlqHjVuKnMJ+L+gkdvoNYcA2b0H39OEpRRjwarcUAe4iTP3x
  81.464 -AuNNgM49+9vXutYtRc6+uL6VIqqlxqlFFNNbMSKkdm4xOgOXNUOrkS+v3wZuMXoEe4uRMxNf
  81.465 -m593gEpO6qfSEu7W3vHbous0xL8NZA/5NuWPARQ11LA9UHq+T3hWwMz2zZegmgcWrVQQWiF/
  81.466 -qg1gK/rOdyuhnm23TmFgtjtA/8p+VLWEfBQRuqrHGSCPbR/IWpYTqQ/zh75H7rbaShR3N6k5
  81.467 -2FsDcl3CPFnXUyiWnZNMDcya5w47hcpDd3ALFXDNMOHrkhe1LJ9VMQVzat0cDZS5nm+ypc8t
  81.468 -C3CPz3vrVU+Ir0cGzxVhoYzp3wYe7fzn418f//1EBcM/+wyk7Qq/Rg9eE1b9+cEvPz+w50I+
  81.469 -LZi0fzINAmW/+AugEaPEzi+GA32mTFg25xv+52PCJ7sjdJYZJ98l//v3+czOqsORqUS/H1cM
  81.470 -O0Q9Yq3LFnX9iKTmExR8+sHfF+di39f+d8xEoeiDlu08qS681kPd3h/47pbmv0HsYW1jpvkf
  81.471 -7D6YznH+OQTVHnWJbCPc7mmuMcAOYORrjr3KJBp7qS4pHJytllzLd0eTRqnU/5Nd5chxxDAw
  81.472 -1yv8AhdJgNd7lHr/n7oPDndVCjEHbnQDaYn7ALpiuyY85r7p2fx4DeKIowwOwsYS0rJe8gxG
  81.473 -q3UHhylgKiRWLm6Irtm1VTxbCGTrQWpC/lrQ4Yj8KwdA+27Kw9wsPQgNyKkPALuMt4gGyCo+
  81.474 -Bzr2zF/dhIAxoegQ8NZibFvs/ZIsoijiPQxIlQOASjxuGniaS/F1Y9ZdBEAXZrkRY1gDZFuw
  81.475 -EB8lazRS74NA64c/TzAexFEci7fSQNc5di5eQbCe8mQBkyCOabGIOiLOBugH/76iedBCuYB2
  81.476 -rQqsaZNvdX2WGJGM4qlbcBqBZnPROMGN94ldNd83Fr3LGhdObib6m5NRrwhM7dNfSwaIANK5
  81.477 -phC1eD0Oqp4+MrY1d20vohH4ycbVZkp+JrBODVwrRHVm0OPaqlISReO3kMdoBnSCEwkjuE9s
  81.478 -WcW4IFuV6eDJ0SQR3d0EbBvomly1lpa1l2R6ObVX09J2BMBleLHM2WlL2M/Scw4VLPo27YFr
  81.479 -RQ0+mbSYs2X6fckV25S31Xpr64TpbTsx0WSUOUDa9lYAYGUKJGd7S/978ZbgCryuDPZBq/Xi
  81.480 -C3Fodc7tQw2AkvQpQX4hkNyoT5LF5VSiK5NHWLz9TwQd477FkPku1Z+oc64PvTwv4lpFK3Eg
  81.481 -7RElFOJ2zPMWDVWh4/m18mBYV7Ogk/gGwy09mINejObB2UgHXCzLgNNy2Ofe3MxcPRBSGe8x
  81.482 -fSK8U5vz2D7vSeDz/TfoaMendmwKupOO9a3ePJ6dTF+/n0KcuJ4qnah/FvH7689/AQYAnKh9
  81.483 -Qg1lbmRzdHJlYW0NZW5kb2JqDTE2IDAgb2JqDTw8L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5n
  81.484 -dGggMzE4OD4+c3RyZWFtDQpIiWxXO7YcOwjM7ypmA+4jJCTQepy8wN5/+qoAdfe1Hc0UrQ/f
  81.485 -Aum6rI3Pj3H11j+/v9QvbTPwkI/uay0ncv3Mdununx/zat0/P7+mXN3xcV3i+wO0fH1+2DWx
  81.486 -8aB9tWm5NrC0a+LAs1Xk2rg9ThbAcbWlWB73crleffZPKNUDOnbruta2gFuEy6GS6PN9XLbs
  81.487 -2d2vPdf79H7J6PftKpfJvnU78Kh+cBp29qbRcbQ9Lombd/krtLLbld8cDY/Ma6mEktMcnj8C
  81.488 -vWzY59fXHJfiir/wgB6TuNb/iQWajcLSPw2enJ+5LjX5yDW9f6ZfXSbBitj4tfognAgFzO78
  81.489 -pjYJFKbLNcbgwoTt6rZ5wb5kEY6xeOZuTsDbcCJ0ToB9dtle55sh9FRLeJtdbSNwPJIL17UZ
  81.490 -WKQDbiCiQS0cQNSZMlfTVWsj5teYYd9uDDlipTdCrLrW2mYvV+3Q+S98u7rW/4krVr++/vta
  81.491 -8JOfFb+/FnX1Z8fB54Za/gc8oTK4RictXfLGZ7n1y+wf+Nx21v+JBQ7QIxhZYExbQO8JrQHK
  81.492 -5TJv+JPnd6nvcCDghJ6EqA+gXWdNz8WJNXaHdvNU6+DyxpIgQmxx1xrjVbvQZdt6vjP2eRj4
  81.493 -AkjEy/HUDI6zmZcN6x9A3fldEHfAkYXuzXJ1L8PUJz/LSMhfwvACvDlXLm97hGAgzCdIMKCt
  81.494 -G0lU2U+kgKGi4QEUf2+CHAC+EbwAvkgmgPXm7+J3WDX8oQJHTjcNDL4AshZ1PaCzIxQ91lqY
  81.495 -BGzJEq3vj8MSCY5QCIHGim9b41zEi2Gclw5+NFMCcDgAzgaJqWgu9B2ktuEuoI00BOGNoS+0
  81.496 -THJt4LsWoNFS+4fAcK0VppJQQ5XmLQ8lFXlgGzkyAjVqQkft/Crhtpbm2QaCR/OcqbEW5CGh
  81.497 -dWfiVDQMGb5u5JHIP+9Y3UoatNnjbwHoJKKX6wv99+XoQCR6JhjrndiyZcCpQEH7Qn5FBLFq
  81.498 -Zh6xl8JnG07fkXh9fTaqL9oTwrPnZ6NI13pVHwRb9RZsRjGXK1J/I9Xd4vAdrAyBad2Gbrfn
  81.499 -JaGJg1IB+grUZhyNzslMK8GvLyzYs0pb4/ChWbobXWAjFU1exQrVxavRorZhF0sjGm26oY/U
  81.500 -tHnYjRRY1eYnviNgsbtFXh54Gu3BCDNqhXvZ7tBowfc8ekcmbC+Pth0M7tQT/cPldFpo7VOf
  81.501 -8qIDu53y2pq5To5QOihyFefGaAAHDc/2DuIDMrqDpdwDsRQzB8gA2M3mgyxjBH8Th5YwBISC
  81.502 -m7alBVhE1yLarIK8iapr5DaIjDHnvZn3tGDtpyqYMVUl/NquVt0KvROeYLNkVXSG2NmI49aO
  81.503 -0AGx47MqJkGwZapLA4RJRWJCAjvz+hZYJB2haJy2kMkiLO0YAY1RIG4ZFsctgjj3Nk5tS0Pa
  81.504 -T3nMkIZr5ny+G7Is+aolVA0GZTficjZR4+WG+BFai/xgvgeUsMbXqOUhQHysvkfF7vjvbJjI
  81.505 -PI3pIc6emZpMYV4u0SpQwmA94hFF2INouQNZEHWK9oYJkNjp+CjED23r1SR7P9Zy9IpGCbvo
  81.506 -DibCqWtiq9rLwqf/ql2hauhckfwuyx7nU75yPb9kOXcQeQRPkpaaZ/Re0c0NWoMB59ZXvCFx
  81.507 -I9fxGt1Z4z1SAIdbvxt0qD38RQo0VMzu8ZueaTO5lfVIX49Vt+705YxuQsU5GRLnfNKCMAJT
  81.508 -zx1zfW4IQTqZUEcWJqdaHkceYpRXLWdVsQhapgKHWtaIW+mznqn9VjjG9tucUdrT3v3QiVDJ
  81.509 -YpuWSc+Ow36d3vLZs19rlchsUecNp9DfLXN+Dn8iBOJ4xwccPi2CkYLqQ8KxSP5AkaLbvgs2
  81.510 -lxFqdZbtgV3W3fPyvinfB1vp4CvGImn59yOwqGbpqM9pOSxowNHiCbSjK4M3c0TjFILQdvJc
  81.511 -v2u+wx39zQkd6fXihM5J1e7dAudnqOp0CMT7fbug+ve6dQNkTt4t5f6OmAlr8Gxn0Myf82NS
  81.512 -DpdAgVbJukIdLRrYK/Fu2Zt7Egn0z5YJV8IOYvdntr4Nfqq8j9LhrMCvztcJek/f5w69lr2U
  81.513 -mNkASsUKwMuEitAx8gTwOOF7hLmhdMyM/h0XksROCeBAdTv1ge0jx8oqnw7uzPLj44JwJk/P
  81.514 -2Fzwua0EHJ5Y7Gc7pwRWK89vOS21pWUQ5/cgFBRXqvfwDdWvvC5G6myYrxUI83wfgLSIYfi5
  81.515 -QphBjw5iUZ+3jgc/iVWCMrK2lwfi+DfBxP2PA6nderz7zftYPdB7SAqZ479DEDwPlsCQJmPl
  81.516 -CJg1JINvoXdJDVKRnXFBBtIk36rsgYSR4EmRXC7JZ+jxTL8hYcRpswfC8jFreQjgmgHr7u1w
  81.517 -ncrrfORj32H9UaBa461fDcC3AU+JDFgqT2sk9p0n6NrhAe1VEdnZBvt5dWcSA1zWNfu7sz0f
  81.518 -n7Imsj0PtGdbt+RXSEbNr0vzlq1PXlHP2b7lGSzb0u95mL6wet1yIJbBx+1rIKaAz8MzEUvf
  81.519 -Rck5Et/4KZYS5FAc+7ucqZj3tRwMt5/g+DhjMR3dOFBUolF/f3cyuNX6ujsZ7A2PgId6ulBH
  81.520 -DHeyvDwmO1qZhzvgwGT+GM+OPzNrY7pUP0/ZidxBIusOBivBr0fw9LCXJJrYBB8X40YTI46x
  81.521 -625ivGW9n3L3vTxDZ0nWrGENplKC8W1l6Dr4G+6sZlnB1pks9wRbtXpBDUIKjVaSijHlgLul
  81.522 -HiMnUu2osZQ0DpXAY2dDXr0HlpFMJ0kUKtWverxZiG1k/0F4Aq+Z+bPmqh2zyo9TYWDNjKJ2
  81.523 -b6zazw79FgTMftL/IWBWIhYlSTUoCNPNa1JNZ63+fsPSneuYyhqHu7V2sFsR75pVZjY5hEhr
  81.524 -IvdYcYKIGmI6HrzD+5Ffk08gyXHJmV8QxENpRpVB7zmjlFkQdM5EkPddAdh0vxuzIBY6ZCZs
  81.525 -59S1MJvsINLGrgHoke+rR0IsMlyMNhtPBMKadAa0kUWu4lE7PbJwSlaXxmGsonFepbI4EY+3
  81.526 -Kis6z/0dfOYBh8+A0eDo7+CJBe5acXkLXTzfFkxZxGeBT/JhtjMHIOgrPEeOB9Ieb8jdA03S
  81.527 -NTg2h28KpmRlz/xu8UQcTOoHcqSv5fatHqlcm/+SkGKsBD1bJmuM9o0m91QI7wzzV4uD93pS
  81.528 -UbQ4+jojwfAyEtvimTpzaoQgSndFPAklejcH94M8pq5cLP5N2RaG/0PyqI+W7o/6EyT2aD+R
  81.529 -6/7WHmm4MxyhPaCksaH9nFnRt/YQxPOktI+sv7UvdGtf+NF1ks77vyR4FYkdASOOOmI6AKqF
  81.530 -ekNWQvFDD3VF94cvUInG5O4szrHi0UCBJ+1MdkLg4flUjTcY8GZ687XZ4lRLe2NKwK2G9Ksp
  81.531 -OQjEMI/4tyHBHGm5nyHBkNMjhwblYwDYW0/OH8HH3qI041LWILBJTn1OtgXmiETcZtzhKHHZ
  81.532 -twS+csm6jCEhb9kzn1D7f7arJbmSGITtc4pcIFV2+wfHmDOkKquZ+28jAcZ+k1Q2Ea/bbWyQ
  81.533 -xOP7bPJiEpCYHIuAxGdch1mEBWoa7fYIi/+14xEWSFf1eISN0yPsQHgEvF9LT48AaLWaHmFR
  81.534 -r2qaBG5PjxvF/mmxDhHxWPshKpzRKG5laT5xHI/zjrqRRkDVxkO6Kh6gHTn2Rm4h5GJeJ0bi
  81.535 -4h4J3gLK8s+x91aBwtn31LOhOwUszlv+OeyuGw/QzFpJqGRjMRfpV+OxqPr1+3A1Zct0g0XN
  81.536 -GY9H46TohNh4tCKAlVtF5w1H4MfYuKcyoZI9W43JYK3XdtyRbD4G3I9b8xGe3gPqq1+9h08s
  81.537 -ubXavumvT9kBpyIyAgNr2zrhGQmk4bjAqiVHPb9vRalrXjfQ8snFdEdxf7VfuqOPtc7WHeUy
  81.538 -I3UHsPd16Y6ym9fWHaUsb9kB0DYv2WFgScoOoVe5yc6BITs7cI4ae9tu/L9I8jYDZSRvM9u5
  81.539 -kriFNK5X/eDs5JqsAKtna8TNg/bFwtIgUNQy4GJRHKgePYi8HdWjYkaaqzXjUIUF0LEDf08g
  81.540 -L3+/8iPAGa1ZAClg/vkgd7wE9iu4dYj/80vgfDZe+RGgK+0ZCXvH4fApcJvBkuRmuDHgdrE3
  81.541 -I7LZG/XHr5J/3FIaHLHgEHt+B7qt4Pus3S8cuXLBVVfac2Izd0nE3NR82vUE3F4o/aKUIolt
  81.542 -6Nmin5ZWU3+isXeAawwJ7H3iUnzAk+gHibEClW8NI96vPJgWePogstzAM9LdCdPjnCvESFTm
  81.543 -hasJDkvl6+0P/t6/BRgA6y9qdQ1lbmRzdHJlYW0NZW5kb2JqDTE3IDAgb2JqDTw8L0FJUyBm
  81.544 -YWxzZS9CTS9Ob3JtYWwvQ0EgMS4wL09QIGZhbHNlL09QTSAxL1NBIHRydWUvU01hc2svTm9u
  81.545 -ZS9UeXBlL0V4dEdTdGF0ZS9jYSAxLjAvb3AgZmFsc2U+Pg1lbmRvYmoNMTggMCBvYmoNPDwv
  81.546 -QUlTIGZhbHNlL0JNL05vcm1hbC9DQSAxLjAvT1AgdHJ1ZS9PUE0gMS9TQSB0cnVlL1NNYXNr
  81.547 -L05vbmUvVHlwZS9FeHRHU3RhdGUvY2EgMS4wL29wIHRydWU+Pg1lbmRvYmoNMSAwIG9iag08
  81.548 -PC9OdW1zWzAgMiAwIFJdPj4NZW5kb2JqDTIgMCBvYmoNPDwvUy9EL1N0IDk+Pg1lbmRvYmoN
  81.549 -MyAwIG9iag08PC9Db3VudCAxL0tpZHNbOCAwIFJdL1R5cGUvUGFnZXM+Pg1lbmRvYmoNNCAw
  81.550 -IG9iag08PC9MZW5ndGggMjQ4MC9TdWJ0eXBlL1hNTC9UeXBlL01ldGFkYXRhPj5zdHJlYW0N
  81.551 -Cjw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+
  81.552 -Cjx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhN
  81.553 -UCBDb3JlIDUuNS1jMDE0IDc5LjE1MTQ4MSwgMjAxMy8wMy8xMy0xMjowOToxNSAgICAgICAg
  81.554 -Ij4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIy
  81.555 -LXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIK
  81.556 -ICAgICAgICAgICAgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIgog
  81.557 -ICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21t
  81.558 -LyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEu
  81.559 -MC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6c3RSZWY9Imh0dHA6
  81.560 -Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiCiAgICAgICAgICAg
  81.561 -IHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgICAgICAg
  81.562 -ICAgeG1sbnM6cGRmPSJodHRwOi8vbnMuYWRvYmUuY29tL3BkZi8xLjMvIj4KICAgICAgICAg
  81.563 -PHhtcDpDcmVhdGVEYXRlPjIwMTQtMDgtMTBUMjE6NTA6MjMrMDI6MDA8L3htcDpDcmVhdGVE
  81.564 -YXRlPgogICAgICAgICA8eG1wOk1ldGFkYXRhRGF0ZT4yMDE0LTA4LTEwVDIxOjUwOjIzKzAy
  81.565 -OjAwPC94bXA6TWV0YWRhdGFEYXRlPgogICAgICAgICA8eG1wOk1vZGlmeURhdGU+MjAxNC0w
  81.566 -OC0xMFQyMTo1MDoyMyswMjowMDwveG1wOk1vZGlmeURhdGU+CiAgICAgICAgIDx4bXA6Q3Jl
  81.567 -YXRvclRvb2w+QWRvYmUgSW5EZXNpZ24gQ0MgKE1hY2ludG9zaCk8L3htcDpDcmVhdG9yVG9v
  81.568 -bD4KICAgICAgICAgPHhtcE1NOkluc3RhbmNlSUQ+dXVpZDpkN2UxNWU4NC0yMjA0LWZhNGQt
  81.569 -YTNjMi0xODc0YjhkYTI4NDg8L3htcE1NOkluc3RhbmNlSUQ+CiAgICAgICAgIDx4bXBNTTpP
  81.570 -cmlnaW5hbERvY3VtZW50SUQ+eG1wLmRpZDplYjk4OTk1Yy00ZmZlLTRjOWMtOTNjNy1iZGQ4
  81.571 -ZDU0Y2U3MDk8L3htcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOkRv
  81.572 -Y3VtZW50SUQ+eG1wLmlkOjZjMmQ1ODhjLWJhMmItNGJkOS1hMWYxLTAxMDRkOTA1MmMyODwv
  81.573 -eG1wTU06RG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOlJlbmRpdGlvbkNsYXNzPnByb29m
  81.574 -OnBkZjwveG1wTU06UmVuZGl0aW9uQ2xhc3M+CiAgICAgICAgIDx4bXBNTTpIaXN0b3J5Pgog
  81.575 -ICAgICAgICAgICA8cmRmOlNlcT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VU
  81.576 -eXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+Y29udmVy
  81.577 -dGVkPC9zdEV2dDphY3Rpb24+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpwYXJhbWV0ZXJz
  81.578 -PmZyb20gYXBwbGljYXRpb24veC1pbmRlc2lnbiB0byBhcHBsaWNhdGlvbi9wZGY8L3N0RXZ0
  81.579 -OnBhcmFtZXRlcnM+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFk
  81.580 -b2JlIEluRGVzaWduIENDIChNYWNpbnRvc2gpPC9zdEV2dDpzb2Z0d2FyZUFnZW50PgogICAg
  81.581 -ICAgICAgICAgICAgICA8c3RFdnQ6Y2hhbmdlZD4vPC9zdEV2dDpjaGFuZ2VkPgogICAgICAg
  81.582 -ICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDE0LTA4LTEwVDIxOjUwOjIzKzAyOjAwPC9zdEV2
  81.583 -dDp3aGVuPgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgPC9yZGY6U2Vx
  81.584 -PgogICAgICAgICA8L3htcE1NOkhpc3Rvcnk+CiAgICAgICAgIDx4bXBNTTpEZXJpdmVkRnJv
  81.585 -bSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgIDxzdFJlZjppbnN0YW5j
  81.586 -ZUlEPnhtcC5paWQ6Mjg0NzZlZDgtM2VlYi00ZTlhLWI4NDMtNzJhYTU4MGFjYTVhPC9zdFJl
  81.587 -ZjppbnN0YW5jZUlEPgogICAgICAgICAgICA8c3RSZWY6ZG9jdW1lbnRJRD54bXAuZGlkOmVi
  81.588 -OTg5OTVjLTRmZmUtNGM5Yy05M2M3LWJkZDhkNTRjZTcwOTwvc3RSZWY6ZG9jdW1lbnRJRD4K
  81.589 -ICAgICAgICAgICAgPHN0UmVmOm9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOmViOTg5OTVj
  81.590 -LTRmZmUtNGM5Yy05M2M3LWJkZDhkNTRjZTcwOTwvc3RSZWY6b3JpZ2luYWxEb2N1bWVudElE
  81.591 -PgogICAgICAgICAgICA8c3RSZWY6cmVuZGl0aW9uQ2xhc3M+ZGVmYXVsdDwvc3RSZWY6cmVu
  81.592 -ZGl0aW9uQ2xhc3M+CiAgICAgICAgIDwveG1wTU06RGVyaXZlZEZyb20+CiAgICAgICAgIDxk
  81.593 -Yzpmb3JtYXQ+YXBwbGljYXRpb24vcGRmPC9kYzpmb3JtYXQ+CiAgICAgICAgIDxwZGY6UHJv
  81.594 -ZHVjZXI+QWRvYmUgUERGIExpYnJhcnkgMTAuMC4xPC9wZGY6UHJvZHVjZXI+CiAgICAgICAg
  81.595 -IDxwZGY6VHJhcHBlZD5GYWxzZTwvcGRmOlRyYXBwZWQ+CiAgICAgIDwvcmRmOkRlc2NyaXB0
  81.596 -aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgo8P3hwYWNrZXQgZW5kPSJyIj8+DWVu
  81.597 -ZHN0cmVhbQ1lbmRvYmoNNSAwIG9iag08PC9DcmVhdGlvbkRhdGUoRDoyMDE0MDgxMDIxNTAy
  81.598 -MyswMicwMCcpL0NyZWF0b3IoQWRvYmUgSW5EZXNpZ24gQ0MgXChNYWNpbnRvc2hcKSkvTW9k
  81.599 -RGF0ZShEOjIwMTQwODEwMjE1MDIzKzAyJzAwJykvUHJvZHVjZXIoQWRvYmUgUERGIExpYnJh
  81.600 -cnkgMTAuMC4xKS9UcmFwcGVkL0ZhbHNlPj4NZW5kb2JqDXhyZWYNMCA2DTAwMDAwMDAwMDAg
  81.601 -NjU1MzUgZg0KMDAwMDAyNzI2MSAwMDAwMCBuDQowMDAwMDI3Mjk1IDAwMDAwIG4NCjAwMDAw
  81.602 -MjczMjQgMDAwMDAgbg0KMDAwMDAyNzM3NSAwMDAwMCBuDQowMDAwMDI5OTMxIDAwMDAwIG4N
  81.603 -CnRyYWlsZXINPDwvU2l6ZSA2L0lEWzxDODIwMjYzOUE5Njc0MDgyQjQyNTI2OThGNkQ4OTNC
  81.604 -OD48QUM4OEI2NkM5ODAwNEY4MzlEM0U1REMyNjA4NjVDQzE+XT4+DXN0YXJ0eHJlZg0xMTYN
  81.605 -JSVFT0YN
  81.606 -
  81.607 ---cEobB2knsyc5ebfU--
  81.608 -
    82.1 --- a/test/msg3.asc	Sat Aug 31 15:23:52 2019 +0200
    82.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    82.3 @@ -1,17 +0,0 @@
    82.4 -From: =?ISO-8859-1?Q?=22Eifler@dontpanic.ulm.ccc.de
    82.5 -To: mail@ccc.de
    82.6 -MIME-Version: 1.0
    82.7 -Subject: =?ISO-8859-1?Q?elektronische_=DCbermittlung_von_Steuerdaten?=
    82.8 -Content-Type: text/plain; charset="iso-8859-1"
    82.9 -Content-Transfer-Encoding: 8bit
   82.10 -Status: RO
   82.11 -Content-Length: 1136
   82.12 -Lines: 29
   82.13 -
   82.14 -ab dem 1.1.2005 ist es verbindlich vorgeschrieben, dass die monatlichen
   82.15 -Steueranmeldungen an das Finanzamt bzgl. Lohnsteuer und Umsatzsteuer 
   82.16 -elektronisch, d.h. in aller Regel ber das Internet, bermitteln werden
   82.17 -mssen. Ein Ausweichen auf die Papierform ist nur in Ausnahmefllen
   82.18 -zulssig. 
   82.19 -Gru und macht weiter
   82.20 -
    83.1 --- a/test/msg_no_key.asc	Sat Aug 31 15:23:52 2019 +0200
    83.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    83.3 @@ -1,44 +0,0 @@
    83.4 -To: notreal@kgrothoff.org
    83.5 -From: Krista Grothoff <notreal@kgrothoff.org>
    83.6 -Subject: test3
    83.7 -Message-ID: <579B4AB5.4090402@kgrothoff.org>
    83.8 -Date: Fri, 29 Jul 2016 14:23:17 +0200
    83.9 -User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101
   83.10 - Thunderbird/38.8.0
   83.11 -MIME-Version: 1.0
   83.12 -Content-Type: multipart/encrypted;
   83.13 - protocol="application/pgp-encrypted";
   83.14 - boundary="Vkb6PtN2UuPCNGnI4hCGU6LNQN66590UU"
   83.15 -
   83.16 -This is an OpenPGP/MIME encrypted message (RFC 4880 and 3156)
   83.17 ---Vkb6PtN2UuPCNGnI4hCGU6LNQN66590UU
   83.18 -Content-Type: application/pgp-encrypted
   83.19 -Content-Description: PGP/MIME version identification
   83.20 -
   83.21 -Version: 1
   83.22 -
   83.23 ---Vkb6PtN2UuPCNGnI4hCGU6LNQN66590UU
   83.24 -Content-Type: application/octet-stream; name="encrypted.asc"
   83.25 -Content-Description: OpenPGP encrypted message
   83.26 -Content-Disposition: inline; filename="encrypted.asc"
   83.27 -
   83.28 ------BEGIN PGP MESSAGE-----
   83.29 -
   83.30 -hQEMAxqoixpCqEC5AQgAw2FSvhWUNOLTXDigj/0sSAvjsiRnywXoa+IWXECZhIy0
   83.31 -78J+Ib66VgdVUuHuxa2tw1EojKWtSrDlcxJUnWwcewRaRzwGmZ2OTTvMb+ri8y4B
   83.32 -YdwDsL0MthWiXO/V81kiYjyA5jn6e1p4kYPWJCHTeBu1DKZFreulD/ckMFBFgbwt
   83.33 -fttSaMMDuU3gjlQET3kOppWLatMevosXiwUOBr3fhDZvGIGu9OI6tiXlul0B1+aG
   83.34 -YSn81tIaZKPixlgVVmJYXVbz/P1PM2ilbGbOOyrcDvY2YDFiQfjdjh7V+noshB9u
   83.35 -n3MBQ/altgUdjfPX8KDp7RACddr2QuoY2SGF1PMcwNLAmgFZ4T1kAtaT4l7+/nF5
   83.36 -c/DhDccRFLtb3wNjuhMs1QJQy+2O5cJBvT42U+0TM72MFTwRNwXlWNkn8r8eJfZj
   83.37 -6TUyZqNK6LqKKZksNUIVhGPcore3HPhfiSVV8k7iRG8mZ2wfMe25hhGG/0+pCOiB
   83.38 -9/OCXKOgFNlWSVzfmbQ9dAvxaZVlDOrgy7weS8aGkH73B+u70SX9iXNvmfLoXv90
   83.39 -0oimyhfkMd+9lK9rFwqh/RankVun1V03lQJhyaPMotWOIw06Z+8s495G3h6UiUIu
   83.40 -vqBfr6mPzIVVrIuSeWSBY/lE+1+3DUUTbx5lDWynRxND7bd7m1uwcl2nIAcmsJ+R
   83.41 -JKm1+JTEwoYgcPBUT+lxshFexqXv19hk7NWIAmhNmEpRRsi27gqmk5IVDmeR4upr
   83.42 -w65H7Es9EN0no0C5ZjUdGke4jQ0ILL8akqDFTWp8vCUuQgKZNHRayQZ84cg=
   83.43 -=q/R9
   83.44 ------END PGP MESSAGE-----
   83.45 -
   83.46 ---Vkb6PtN2UuPCNGnI4hCGU6LNQN66590UU--
   83.47 -
    84.1 --- a/test/no_key.asc	Sat Aug 31 15:23:52 2019 +0200
    84.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    84.3 @@ -1,56 +0,0 @@
    84.4 ------BEGIN PGP PRIVATE KEY BLOCK-----
    84.5 -
    84.6 -lQOYBFdifLABCADG3TqnFQ8npE/XboLx7tv3kU/+qI5aI9fmJ4xZaiyc++/9YXeH
    84.7 -uUN5cTUpzSLIsrVuKDRn7hXorrok92ELrFhL5DbSfn0np6SLxr53821cmJKh2PxQ
    84.8 -3ucA8Mu/QgXE21HeVFGAbaLMaDm4B+0Tp3PAKNDnHNpWtc6+EQGCib4yW6HQ5+9e
    84.9 -aJhglGPbXGr2qanREDiyshuDCaDPrgrs+5CQnUR+vwNfPv7ovyPX7BLmxpaP0gve
   84.10 -4ehpYaK0rUpzvXCNbHt+Shu40aXa0uRU8JajF3tvisJwsXkZcpqVJsP+OGWka7rp
   84.11 -ikicjT0FOCBCYskjTRMfptQnfMF2z7J9yb4ZABEBAAEAB/9EV4IRKpUXOAoyTKnW
   84.12 -sBJLTdaSe2XUh43qbDv4/JqRZqmux+C2tY4BPc0Z7QQfuf7M+Sctcm54FRgmnRdu
   84.13 -Vg/QIQFQLKUhTCUp3ibV/UPftxVpZrMrrbbwpVA4Dd4CrabAg/SwcL0qh0USwDKS
   84.14 -9xC6AKzuSAWnF/sRabG9pU3GawkV5s9bjSCAWuZBQhL0aELGREE8ap+R3bBfz5Et
   84.15 -ModEKGtJwqp/5nRl8NdiO9qNE71MVKFwskSuLNKxPSmi6OBUgCa14713lq0AJdho
   84.16 -RxpOrTI/dhNXBZBhPOsnFTla7V4Z9dPkqoRDyfpki1dmFRSunJILmoR2zSFzWZQo
   84.17 -xts7BADbA8JkCdJClweAK0EyyRE8EzIzgz6QEwj4rHym2ZpQdPrNsKyndQA8PBkF
   84.18 -l9NbeagthSq5je0Ho7McDMX4YeCj2vgKrUu6LNZLb5585AEO5keG8JGeFQv/55Uz
   84.19 -cumrDvgNZLMWrIOi+Ez+wPvwSTNL8z45gxIDS4kD4QsopnH/GwQA6HJXcg8MNy72
   84.20 -bN9+rcZ0Q64RT6f4k8q82QTLTEbw973XswQ4yTJWTuoU5a9AbXFsYS/G8Jhxd3aJ
   84.21 -kdKaaUMaBaTq6/iSc/H+Z3DlNT1wpWDC6yx6UV+ho2xaX0MybM+wohe/E5y7b6/9
   84.22 -XHeDEx1r/r7eUE2syuNhBSMGAkUbptsEAKGFOM6cz44tONKfiJhYVe7M770Rbbld
   84.23 -dmH5AIhw6PFGtlM40DRiMiwLe5VH2ymyoTJ3cKg3Cd51Etgk8ph+w3VwUNh6C3Br
   84.24 -BDTbBpVG7B5CLRVFG+M+CV/UFKzCoR2lt2WEzviweI85IrKM7awyi34vM3uytoKA
   84.25 -savQ6HgApiehNQq0HVRlc3Qgbm8ga2V5IDx0ZXN0QG5va2V5LnBsb3A+iQE3BBMB
   84.26 -CgAhBQJXYnywAhsDBQsJCAcDBRUKCQgLBRYCAwEAAh4BAheAAAoJEAwGnPcHfiud
   84.27 -2iUH/iYCQVb4I2PIExOKPZZPFcoFFBrnifR+99G1X9bS65pTsN8aQ3h25DU1YvOY
   84.28 -tGhOFlx1qEBBy0YKzVMrmEl8HfZsqcjnJWvTmAcddENJQZ0ODJRnJC9JhSB5PUfR
   84.29 -X5+QG4At6pdxexKoEbZYsZf3QF8IzUlvybucl9t5sCMd2PBpscmLV2qbR6amivq4
   84.30 -WaBlu8oyenNTGKjGY4g5Xm2hchem87DFnyycY3bOYlWFBQrDe0Dr1Vkk5q7taErf
   84.31 -E561X06HKO2ee6EjHj0+fCKPsY/wbIAMSpwTJ5eFcXILxsH9C+KEt5JYrwe+vlrY
   84.32 -VGt2ytaUD//x+QZ8aHu4SzrqDnedA5gEV2J8sAEIALoZLH5f8bFukM495mR1symr
   84.33 -8cd6PI/Fqze1I3zDOt2cZ+ZdvhCSTAHNi+J9jj1/QG6HxvHp0y9XKjyLOsAiDUJ8
   84.34 -32cEmSdyH+TPWiBSyj+DVyJkQVuUB5++qjJJd53hOoC6/Y7yoCDE1vTaetwzxgAr
   84.35 -+30FjvmTg7uFzLEwclRL1n77x8dzUHqhL6OxTVGtEezF+rE4MYv4bElNp4AgsEaZ
   84.36 -XR4kKxwTE97nmBR78nmXuor2TsyUfLtlpuIE2jkQTDI+YZCAPsVrDy7/uTGtKeoa
   84.37 -8qvnINvl64uy3QZBTpGAL/dtwDjwgl8rO5SAOUs76UAQs+KNpAa1Ne2+Bx9GBlMA
   84.38 -EQEAAQAH/Rxrp8iNAoOkbRJHkHNF07IeLkiBOdUtzPOEWFe/a7Kt0OL07LKUhRhp
   84.39 -ZF7slIJ+d+qUFc/wHm5xE2Q3pyXx4rCFaDYlakuvOYEKIat6DqUbJn18GMx8PkXT
   84.40 -1SOPkL2tyJohny5A44TdoC5jXLawZCFhQNZbuPVoj9+y6WB4vkfHzTGy2y68hmbU
   84.41 -rKm0l8iqvelC4FP8WWNoVDcn992OJ0s/hsMjWAGE0h7KoDi/c50ZZ0JND2VuNMUk
   84.42 -FYH99q15wXQ4a6n9hC7wg632UW+O3MOdCCW9Wfve8DiyHuQ53ytQ7vto/fFKq3aY
   84.43 -TuKvUu4zjsPevVfyTxXXIdq1KfHgYqEEANbRRMXa3w20qutiid9K4Cj72vy4Ba7u
   84.44 -mg8Az65o6V1r1lykFzI4XP3+uSRDaeWt3GTQPtX3hanv/u6VdKqxyPhHsUoy+SqG
   84.45 -S/xqR08x1u55ySFfISNL9UU1tklbi5MJLxljTq2eVg4CSY41kFFllqmNBGro16zJ
   84.46 -I3tHla3Kx6c5BADdxnBWyOWjLyCnTJkK44YPxKXs5kT58zcNaILFxtVA6glKG1vb
   84.47 -7i1STOtYKFD6sI8k7zYXC09kzzuucO5ubh2yiapfUFVZ8WpF+ulM2ANX3n8/+yRL
   84.48 -Y9H886gcwVF3QqyZGh2jyyJoMIS04ePpQZxkJ2fbVM+V3tLKNFglT+6t6wP+Pbus
   84.49 -Pk4P/ALuJx8XIUe9wvMaKBXBeq1fEOKszhP3kTEPAgq0Xc2gHUULNvaBpz003o+t
   84.50 -87j9pMvCsN/bkZcFDvUCEL7Y55gZT8nhRq96JfRZFazXToq8OtlT6C4TJ1bx0KB6
   84.51 -MhWyHRjXWXRJ9406H+S9MnZA+5Ndjm0m7bExNyBLa4kBHwQYAQoACQUCV2J8sAIb
   84.52 -DAAKCRAMBpz3B34rnU9KB/99tygAltB4L2xLz/lOwvigD45Y3D54NKGvR+XtMUnP
   84.53 -lpsoL08KW1S7hugRGNrVMXy5BnTjDOY/IjCPGG2pkw9ZBvDev1ZR/9SFi8Qtp0Wv
   84.54 -+wKZHHGLo6s5FJ13JjwW7eGUsKDjlHl7ET6NZZxBuRS4cuFbnrgBmA3ugVKX0TLK
   84.55 -6sYoiubAZkanpJIusZeqT3cdZZV86B3urVDQqPwMkF+UBw/yBA3e2z7JFwhrzFnl
   84.56 -TZ05Tvx6m6NCxIWQh6ck34c+fQdcLSy8DF/dK0DKmMf5pIgJB7UVbVC5zuEoCa/i
   84.57 -/TBCkEmrTYZDJGv46Dx+ytdjKBHc1SvDyHYpMm1Z/b0d
   84.58 -=NB6+
   84.59 ------END PGP PRIVATE KEY BLOCK-----
    85.1 --- a/test/pEpEngineTest.cc	Sat Aug 31 15:23:52 2019 +0200
    85.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    85.3 @@ -1,360 +0,0 @@
    85.4 -// This file is under GNU General Public License 3.0
    85.5 -// see LICENSE.txt
    85.6 -
    85.7 -#include <iostream>
    85.8 -#include <fstream>
    85.9 -#include <stdexcept>
   85.10 -#include <string>
   85.11 -#include <vector>
   85.12 -
   85.13 -#include <assert.h>
   85.14 -#include <string.h>
   85.15 -#include <sstream>
   85.16 -
   85.17 -
   85.18 -#include "../src/pEpEngine.h"
   85.19 -#include "../src/keymanagement.h"
   85.20 -
   85.21 -using namespace std;
   85.22 -
   85.23 -typedef std::string Buffer;
   85.24 -
   85.25 -std::string slurp(const std::string& filename)
   85.26 -{
   85.27 -        std::ifstream input(filename.c_str());
   85.28 -        if(!input)
   85.29 -        {
   85.30 -                throw std::runtime_error("Cannot read file \"" + filename + "\"! ");
   85.31 -        }
   85.32 -
   85.33 -        std::stringstream sstr;
   85.34 -        sstr << input.rdbuf();
   85.35 -        return sstr.str();
   85.36 -}
   85.37 -
   85.38 -// no C++11, yet? So do our own implementation:1G
   85.39 -namespace{
   85.40 -    std::string to_string(unsigned long u)
   85.41 -    {
   85.42 -        char buf[32];
   85.43 -        snprintf(buf,31, "%lu", u);
   85.44 -        return buf;
   85.45 -    }
   85.46 -    
   85.47 -    std::string status(PEP_STATUS status)
   85.48 -    {
   85.49 -        char buf[32] = {0};
   85.50 -        if(status==0)
   85.51 -        {
   85.52 -            return "PEP_STATUS_OK";
   85.53 -        }else{
   85.54 -            if(status>0)
   85.55 -            {
   85.56 -                snprintf(buf,31, "%u (0x%x)", status, status);
   85.57 -            }else{
   85.58 -                snprintf(buf,31, "%d", status);
   85.59 -            }
   85.60 -        }
   85.61 -        return buf;
   85.62 -    }
   85.63 -
   85.64 -} // end of anonymous namespace
   85.65 -
   85.66 -
   85.67 -Buffer ReadFileIntoMem(const char *fname){
   85.68 -    cout << "opening " << fname << " for reading\n";
   85.69 -    ifstream txtFile (fname, ifstream::binary);
   85.70 -    assert(txtFile.is_open());
   85.71 -    if (!txtFile)
   85.72 -    {
   85.73 -        throw std::runtime_error( "error: cannot open file \"" + std::string(fname) + "\"" );
   85.74 -    }
   85.75 -
   85.76 -    Buffer buffer;
   85.77 -
   85.78 -    // get length of file:
   85.79 -    txtFile.seekg (0, txtFile.end);
   85.80 -    const size_t length = txtFile.tellg();
   85.81 -    txtFile.seekg (0, txtFile.beg);
   85.82 -    buffer.resize(length);
   85.83 -
   85.84 -    cout << "Reading " << length << " characters... ";
   85.85 -    txtFile.read (&buffer[0], length);
   85.86 -
   85.87 -    if (!txtFile)
   85.88 -    {
   85.89 -        throw std::runtime_error( "error: only " + to_string(txtFile.gcount()) + " could be read from file" + fname );
   85.90 -    }
   85.91 -
   85.92 -    cout << "all characters read successfully." << std::endl;
   85.93 -    return buffer;
   85.94 -}
   85.95 -
   85.96 -
   85.97 -int main(int argc, char* argv[])
   85.98 -{
   85.99 -    PEP_SESSION session;
  85.100 -
  85.101 -    cout << "calling init()\n";
  85.102 -    PEP_STATUS init_result = init(&session, NULL, NULL);
  85.103 -    
  85.104 -    cout << "returning from init() with result == " << status(init_result) << endl;
  85.105 -    assert(init_result == PEP_STATUS_OK);
  85.106 -
  85.107 -    PEP_SESSION second_session;
  85.108 -    cout << "second session test\n";
  85.109 -    PEP_STATUS second_init_result = init(&second_session, NULL, NULL);
  85.110 -    cout << "returning from second init() with result == " << status(second_init_result) << endl;
  85.111 -    assert(second_init_result == PEP_STATUS_OK);
  85.112 -    assert(second_session);
  85.113 -    cout << "dropping second session\n";
  85.114 -    release(second_session);
  85.115 -
  85.116 -    cout << "Importing keys...";
  85.117 -    string pub_key = slurp("test_keys/pub/pep-test-alice-0x6FF00E97_pub.asc");
  85.118 -    string priv_key = slurp("test_keys/priv/pep-test-alice-0x6FF00E97_priv.asc");
  85.119 -
  85.120 -    PEP_STATUS statuspub = import_key(session, pub_key.c_str(), pub_key.length(), NULL);
  85.121 -    PEP_STATUS statuspriv = import_key(session, priv_key.c_str(), priv_key.length(), NULL);
  85.122 -    assert(statuspub == PEP_STATUS_OK);
  85.123 -    assert(statuspriv == PEP_STATUS_OK);
  85.124 -
  85.125 -    pub_key = slurp("test_keys/pub/pep-test-john-0x70DCF575_pub.asc");
  85.126 -    priv_key = slurp("test_keys/priv/pep-test-john-0x70DCF575_priv.asc");
  85.127 -
  85.128 -    statuspub = import_key(session, pub_key.c_str(), pub_key.length(), NULL);
  85.129 -    statuspriv = import_key(session, priv_key.c_str(), priv_key.length(), NULL);
  85.130 -    assert(statuspub == PEP_STATUS_OK);
  85.131 -    assert(statuspriv == PEP_STATUS_OK);
  85.132 -
  85.133 -    pub_key = slurp("test_keys/pub/pep-test-bob-0xC9C2EE39_pub.asc");
  85.134 -
  85.135 -    statuspub = import_key(session, pub_key.c_str(), pub_key.length(), NULL);
  85.136 -    assert(statuspub == PEP_STATUS_OK);
  85.137 -    assert(statuspriv == PEP_STATUS_OK);
  85.138 -
  85.139 -
  85.140 -    cout << "creating message…\n";
  85.141 -    pEp_identity* alice = new_identity("pep.test.alice@pep-project.org", "4ABE3AAF59AC32CFE4F86500A9411D176FF00E97", PEP_OWN_USERID, "Alice Test");
  85.142 -    pEp_identity* bob = new_identity("pep.test.bob@pep-project.org", NULL, "42", "Bob Test");
  85.143 -
  85.144 -
  85.145 -    cout << "logging test\n";
  85.146 -    log_event(session, "log test", "pEp Engine Test", "This is a logging test sample.", "please ignore this line");
  85.147 -
  85.148 -    // Our test user :
  85.149 -    // pEp Test Alice (test key don't use) <pep.test.alice@pep-project.org>
  85.150 -    //                                 6FF00E97 -- won't work as search term with NetPGP
  85.151 -    //                         A9411D176FF00E97 -- won't work as search term with NetPGP
  85.152 -    // 4ABE3AAF59AC32CFE4F86500A9411D176FF00E97 -- full key fingerprint
  85.153 -    // 
  85.154 -    // Other peers :
  85.155 -    // pEp Test Bob (test key, don't use) <pep.test.bob@pep-project.org> 
  85.156 -    //                                 C9C2EE39 -- won't work as search term with NetPGP
  85.157 -    //                         59BFF488C9C2EE39 -- won't work as search term with NetPGP
  85.158 -    // BFCDB7F301DEEEBBF947F29659BFF488C9C2EE39 -- full key fingerprint
  85.159 -    // 
  85.160 -    // pEp Test John (test key, don't use) <pep.test.john@pep-project.org>
  85.161 -    //                                 70DCF575 -- won't work as search term with NetPGP
  85.162 -    //                         135CD6D170DCF575 -- won't work as search term with NetPGP
  85.163 -    // AA2E4BEB93E5FE33DEFD8BE1135CD6D170DCF575 -- full key fingerprint
  85.164 -
  85.165 -    const char *kflist[] = {
  85.166 -        "0x6FF00E97.asc",
  85.167 -        "0xC9C2EE39.asc",
  85.168 -        "0x70DCF575.asc",
  85.169 -        NULL
  85.170 -    };
  85.171 -
  85.172 -    const char** kf = kflist;
  85.173 -    while(*kf){
  85.174 -        const Buffer k_user_buffer =  ReadFileIntoMem(*kf);
  85.175 -        cout << "import_key(" << *kf << ")\n";
  85.176 -        PEP_STATUS import_status = import_key(session, k_user_buffer.data(), k_user_buffer.size(), NULL);
  85.177 -        assert(import_status == PEP_STATUS_OK);
  85.178 -        cout << "successfully imported key\n";
  85.179 -        kf++;
  85.180 -    }
  85.181 -
  85.182 -    const Buffer cipher_buffer = ReadFileIntoMem("msg.asc");
  85.183 -    cout << "\n" << cipher_buffer.data();
  85.184 -
  85.185 -    char *buf_text = NULL;
  85.186 -    size_t buf_size = 0;
  85.187 -    stringlist_t *keylist;
  85.188 -
  85.189 -    cout << "calling decrypt_and_verify()\n";
  85.190 -    PEP_STATUS decrypt_result = decrypt_and_verify(session, cipher_buffer.data(), cipher_buffer.size(), NULL, 0, &buf_text, &buf_size, &keylist);
  85.191 -
  85.192 -    cout << "returning from decrypt_and_verify() with result == " << status(decrypt_result) << endl;
  85.193 -    assert(decrypt_result == PEP_DECRYPTED_AND_VERIFIED);
  85.194 -    assert(buf_text);
  85.195 -    assert(keylist);
  85.196 -
  85.197 -    for (stringlist_t *_keylist=keylist; _keylist!=NULL; _keylist=_keylist->next) {
  85.198 -        assert(_keylist->value);
  85.199 -        cout << "signed with " << _keylist->value << endl;
  85.200 -    }
  85.201 -
  85.202 -    free_stringlist(keylist);
  85.203 -    buf_text[buf_size] = 0;
  85.204 -    const string plain(buf_text);
  85.205 -    pEp_free(buf_text);
  85.206 -    cout << "\n" << plain;
  85.207 -
  85.208 -    const Buffer t1_buffer = ReadFileIntoMem("t1.txt");
  85.209 -    const Buffer sig_buffer = ReadFileIntoMem("signature.asc");
  85.210 -
  85.211 -    cout << "\ncalling verify_text()\n";
  85.212 -    PEP_STATUS verify_result = verify_text(session, t1_buffer.data(), t1_buffer.size(), sig_buffer.data(), sig_buffer.size(), &keylist);
  85.213 -    cout << "returning from verify_text() with result == " << status(verify_result) << endl;
  85.214 -    assert(verify_result == PEP_VERIFIED || verify_result == PEP_VERIFIED_AND_TRUSTED);
  85.215 -    assert(keylist->value);
  85.216 -    cout << "signed with " << keylist->value << endl;
  85.217 -    free_stringlist(keylist);
  85.218 -
  85.219 -    const Buffer t2_buffer = ReadFileIntoMem("t2.txt");
  85.220 -
  85.221 -    cout << "\ncalling verify_text()\n";
  85.222 -    verify_result = verify_text(session, t2_buffer.data(), t2_buffer.size(), sig_buffer.data(), sig_buffer.size(), &keylist);
  85.223 -    assert(verify_result == PEP_DECRYPT_SIGNATURE_DOES_NOT_MATCH);
  85.224 -    free_stringlist(keylist);
  85.225 -
  85.226 -    keylist = new_stringlist("4ABE3AAF59AC32CFE4F86500A9411D176FF00E97");
  85.227 -    stringlist_add(keylist, "BFCDB7F301DEEEBBF947F29659BFF488C9C2EE39");
  85.228 -    stringlist_add(keylist, "AA2E4BEB93E5FE33DEFD8BE1135CD6D170DCF575");
  85.229 -
  85.230 -    buf_text = NULL;
  85.231 -    buf_size = 0;
  85.232 -
  85.233 -    cout << "\ncalling encrypt_and_sign()\n";
  85.234 -    PEP_STATUS encrypt_result = encrypt_and_sign(session, keylist, plain.c_str(), plain.length(), &buf_text, &buf_size);
  85.235 -    cout << "returning from encrypt_and_sign() with result == " << status(encrypt_result) << endl;
  85.236 -    assert(encrypt_result == PEP_STATUS_OK);
  85.237 -    free_stringlist(keylist);
  85.238 -
  85.239 -    buf_text[buf_size] = '\0';
  85.240 -    const string cipher2(buf_text);
  85.241 -    cout << "\n" << cipher2;
  85.242 -    pEp_free(buf_text);
  85.243 -
  85.244 -    cout << "\nfinding English trustword for 2342...\n";
  85.245 -    char * word = NULL;
  85.246 -    size_t wsize;
  85.247 -    trustword(session, 2342, "en", &word, &wsize);
  85.248 -    assert(word);
  85.249 -    cout << "the English trustword for 2342 is " << word << endl;
  85.250 -    pEp_free(word);
  85.251 -    cout << "\nfinding French trustword for 2342...\n";
  85.252 -    trustword(session, 2342, "fr", &word, &wsize);
  85.253 -    assert(word);
  85.254 -    cout << "the French trustword for 2342 is " << word << endl;
  85.255 -    pEp_free(word);
  85.256 -
  85.257 -    const string fingerprint = "4942 2235 FC99 585B 891C  6653 0C7B 109B FA72 61F7";
  85.258 -    char * words = NULL;
  85.259 -
  85.260 -    cout << "\nfinding German trustwords for " << fingerprint << "...\n";
  85.261 -    trustwords(session, fingerprint.c_str(), "de", &words, &wsize, 5);
  85.262 -    assert(words);
  85.263 -    cout << words << endl;
  85.264 -    pEp_free(words);
  85.265 -
  85.266 -    pEp_identity* identity  = new_identity(
  85.267 -            "leon.schumacher@digitalekho.com",
  85.268 -            "8BD08954C74D830EEFFB5DEB2682A17F7C87F73D",
  85.269 -            "23",
  85.270 -            "Leon Schumacher"
  85.271 -        );
  85.272 -    identity->comm_type = PEP_ct_pEp;
  85.273 -
  85.274 -    cout << "\nsetting identity...\n";
  85.275 -    PEP_STATUS pep_set_result = set_identity(session, identity);
  85.276 -    cout << pep_set_result << endl;
  85.277 -    assert(pep_set_result == PEP_STATUS_OK);
  85.278 -    free_identity(identity);
  85.279 -    get_identity(session, "leon.schumacher@digitalekho.com", "23", &identity);
  85.280 -    assert(identity);
  85.281 -    cout << "set: " << identity->address << ", " << identity->fpr << ", " << identity->user_id << ", " << identity->username << endl;
  85.282 -
  85.283 -    PEP_STATUS get_trust_result = get_trust(session, identity);
  85.284 -    assert(get_trust_result == PEP_STATUS_OK);
  85.285 -    cout << "trust of " << identity->user_id << " is " << identity->comm_type << endl;
  85.286 -
  85.287 -    free_identity(identity);
  85.288 -
  85.289 -    cout << "\ngenerating key for testuser\n";
  85.290 -    identity = new_identity(
  85.291 -            "testuser@pibit.ch",
  85.292 -            NULL,
  85.293 -            "423",
  85.294 -            "Alfred E. Neuman"
  85.295 -        );
  85.296 -
  85.297 -    assert(identity);
  85.298 -    PEP_STATUS generate_status = generate_keypair(session, identity);
  85.299 -    cout << "generate_keypair() exits with " << status(generate_status) << endl;
  85.300 -    assert(generate_status == PEP_STATUS_OK);
  85.301 -    cout << "generated key is " << identity->fpr << endl;
  85.302 -
  85.303 -    const string key(identity->fpr);
  85.304 -    free_identity(identity);
  85.305 -
  85.306 -    char *key_data = NULL;
  85.307 -    size_t size = 0;
  85.308 -
  85.309 -    cout << "export_key()\n\n";
  85.310 -    PEP_STATUS export_status = export_key(session, key.c_str(), &key_data, &size);
  85.311 -    cout << "export_key() exits with " << status(export_status) << endl;
  85.312 -    assert(export_status == PEP_STATUS_OK);
  85.313 -    cout << key_data << "\n\n";
  85.314 -
  85.315 -    cout << "deleting key pair " << key.c_str() << endl;
  85.316 -    PEP_STATUS delete_status = delete_keypair(session, key.c_str());
  85.317 -    cout << "delete_keypair() exits with " << status(delete_status) << endl;
  85.318 -    assert(delete_status == PEP_STATUS_OK);
  85.319 -    
  85.320 -    cout << "import_key()\n";
  85.321 -    PEP_STATUS import_status = import_key(session, key_data, size, NULL);
  85.322 -    assert(import_status == PEP_STATUS_OK);
  85.323 -    cout << "successfully imported key\n";
  85.324 -
  85.325 -    pEp_free(key_data);
  85.326 -    key_data=NULL;
  85.327 -
  85.328 -    cout << "deleting key " << key.c_str() << " again\n";
  85.329 -    delete_status = delete_keypair(session, key.c_str());
  85.330 -    cout << "delete_keypair() exits with " << status(delete_status) << endl;
  85.331 -    assert(delete_status == PEP_STATUS_OK);
  85.332 -
  85.333 -    cout << "finding key for pep.test.john@pep-project.org\n";
  85.334 -    PEP_STATUS find_keys_status = find_keys(session, "pep.test.john@pep-project.org", &keylist);
  85.335 -    cout << "find_keys() exits with " << status(find_keys_status) << endl;
  85.336 -    assert(find_keys_status == PEP_STATUS_OK);
  85.337 -    assert(keylist);
  85.338 -    cout << "found: " << keylist->value << endl;
  85.339 -    assert(keylist->next == NULL);
  85.340 -    free_stringlist(keylist);
  85.341 -
  85.342 -    cout << "searching for vb@ulm.ccc.de on keyserver\n";
  85.343 -    PEP_STATUS recv_key_status = recv_key(session, "vb@ulm.ccc.de");
  85.344 -    cout << "recv_key() exits with " << status(recv_key_status) << endl;
  85.345 -    assert(recv_key_status == PEP_STATUS_OK);
  85.346 -
  85.347 -    cout << "sending vb@ulm.ccc.de to keyserver\n";
  85.348 -    PEP_STATUS send_key_status = send_key(session, "vb@ulm.ccc.de");
  85.349 -    cout << "send_key() exits with " << status(send_key_status) << endl;
  85.350 -    assert(send_key_status == PEP_STATUS_OK);
  85.351 -
  85.352 -    PEP_comm_type tcomm_type;
  85.353 -    PEP_STATUS tstatus = get_key_rating(session, "BFCDB7F301DEEEBBF947F29659BFF488C9C2EE39", &tcomm_type);
  85.354 -    cout << "get_key_rating() exits with " << status(tstatus) << endl;
  85.355 -    assert(tstatus == PEP_STATUS_OK);
  85.356 -    assert(tcomm_type == PEP_ct_OpenPGP_unconfirmed);
  85.357 -    
  85.358 -    cout << "\ncalling release()\n";
  85.359 -    cout << endl << "End of pEpEngineTest for engine version " << get_engine_version() << endl;
  85.360 -
  85.361 -    release(session);
  85.362 -    return 0;
  85.363 -}
    86.1 --- a/test/pgp_mime_msg.txt	Sat Aug 31 15:23:52 2019 +0200
    86.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    86.3 @@ -1,64 +0,0 @@
    86.4 -From: Outlook Test <outlooktest@dingens.org>
    86.5 -To: Volker Birk <vb@dingens.org>
    86.6 -Subject: pEp
    86.7 -MIME-Version: 1.0
    86.8 -Content-Type: multipart/encrypted; boundary="74b0dc5119495cff2ae8944a625558ec";
    86.9 - protocol="application/pgp-encrypted"
   86.10 -
   86.11 ---74b0dc5119495cff2ae8944a625558ec
   86.12 -Content-Type: application/pgp-encrypted
   86.13 -
   86.14 -Version: 1
   86.15 ---74b0dc5119495cff2ae8944a625558ec
   86.16 -Content-Type: application/octet-stream
   86.17 -Content-Transfer-Encoding: 7bit
   86.18 -Content-Disposition: inline; filename="msg.asc"
   86.19 -
   86.20 ------BEGIN PGP MESSAGE-----
   86.21 -
   86.22 -hQIMA0v8ThRgMMUcARAAojvf51FXw3aLU01IttNWqIeASe1T1f6rVXQtem1LZf3d
   86.23 -osmQkTEvR/OJ6DRU4z2+XosSyPFLQM3er3Z/m3f9Pl+eI29ibwcAlkko6ihS8LSG
   86.24 -WALPaUIuF7wF9hCd4STuTSRcJmahGMaWIS96x28TSE+FEyKPZOBWbSR+VH2V47+R
   86.25 -ZhAZGwGAfAUi+2/hNqP5Kk1085F8OXgETzIvoNYm1AFIm3vshH4e3vu5fpl3y9gO
   86.26 -uxOIwtbWEqKEWi156yaaI/+NcSq3OUH0AS2rHFutBwqLJNhkOT2cnqZq8xFJXUVD
   86.27 -WCYDEDbf3yzSyvNR1zgHgLnPvWsgTj4kaQl3aJcAuV1knLaRAkOUM0/SVDMHQy9K
   86.28 -4Z/B6hSCuGtwhUWU5qZFIal+VR4JR39GVMYHKUOocJ9pWH0dN4v+LTNqNYUHV9z5
   86.29 -/4pIpqfC50JxvfD2K5KZV0JM4qZC96w6bJZI+mtfe3b29OHvMZPYObiI23F7x8d4
   86.30 -debhNsPLGd6jo7WGUEIUQwPuzJl9pK7QRl2PKWaSy2RNYp/jQMdlp+fWlpUcJLu9
   86.31 -C92ZB3vFMafNHl00VLF2dJ4/Kh+9g+7HkQk5yMfId0GLoC1y0O00mVx9SrU2I4oc
   86.32 -Uu8cNQEcD7MnML0fC5ounhQc9xrW+5OikbDbu9AzzwBz3dCzIR/1QdzM71SCY1eF
   86.33 -AgwDG1JJ1ISHNiMBD/9VPWOjJBudcaASm/lSx3+Pz6CVOsg4eiwUVEsTWRR6QF8i
   86.34 -WOoscQ0jesZk2mIfxdtPFCD0BgPWJVBMJuXNIvm6k70dBdVCxUWira7QFOErl6Sc
   86.35 -e/17srha+WM5lgSkvzyzQdmFvZwwk5QsiSlp43VU6G7zSOUx9ROQMq/zRjdcVRQc
   86.36 -opC4uSNXt0lXVjJV2DTRg8mkS52UxTy1XiYCfH4r88O/uCey+3M8tdsTGtA+BSGU
   86.37 -TLzPhDRVJqNSp2w0wXhxX31fNIwvY5RXHS4dRnR3QdbJuEiplUFsL6WxzD4UkTKY
   86.38 -gIQbtEq0NvQB7ktEOvAvn33zRe1U2mmtjuTAjNcrHSQ4OqHuSe9e4SQnNkqc0fGz
   86.39 -SHpPUcfb6qj+LEHYnOEkl2bfxSDjut5FT30adDJff0co9Qm3IdVAHSxC+36OHBxE
   86.40 -dbBK87tdZK1S1d59/F3v72b5fB0uRTCDDHSRfKalnqiqB5YvU2zysqwPUTbK+70K
   86.41 -yyq4URe+jCqo9fTNcDaPwTfgoWXKi4yBOc3or+acNN26dKfzGZIZvgADigIOH2vr
   86.42 -8T7ryx9Z6lVpEYETRqlbvNbjQY/4+6xriSGQbzv2pQQI+nBJRVbS/X30x+XBen+u
   86.43 -w7wKZLgoZaiWf4qRCQAshGPFo0DrzPupEUCL2N2FHwwL9MR/okAN2j7PPxTyAtLp
   86.44 -AZjQt49N9wHmcVWmPn7JwaYQNWotuZnPXKEQUIvzK/jN1HJWIZok3BIwjrvCp0EF
   86.45 -Fi1houL6RrxLm65pjtMHzmxx1McLgmnA1I3cJt7Em8p4v5LSkhCRZhupA/x9IeSq
   86.46 -ZUEsSONVeR/jc6AotWiK/uESMp3LoWbDbuiq0hpGH4zxBXa0XmWhaBOsSBkgjbra
   86.47 -cUxoqFoYyu8TsJaglbnpqRDAzROykKFNjnh2jpi4T1gpl4oNFZYI3JvEySR72IXJ
   86.48 -H+N9zYJjNpHzpLnBKENIxagGC05SQb/LhnJSx6CuXNMQQ36tUqh36pHHF1q0pGrY
   86.49 -lOBHy87L+10c85mH58g4qesDE294jWXezOu1RC0LgwO9hyM0cJ3h9wdBOZa0k8uU
   86.50 -LRov86C0OSxqwG/pBYt1apS30IDz2/juukbUayP0VYpEJEvYgyPEJHPviPAqiErT
   86.51 -96b1lFKf6x86+IR1AirXHys5xTyXEP3AghH2MtcCGmPXzLLSqRfcsgN/pW7o1SG8
   86.52 -uLD2zGmbXZlmSoxp4LTV9jsAYc95HsXXrEp4vMeML0WLe9wyr6yCwdUWsLsoANFi
   86.53 -KMpduMpMcKAFY6VPR9Pw7TfmnPaaaHEeXYBjYt8PUQutxaxnuHvi7Ee+WEkJZh75
   86.54 -WQmH5U6+rrGsWxE0SSQlRqD0pZiPBhwO6YhQSBfwO7DAvdLGSaQ1z+kFRlKI5X2a
   86.55 -BJRZZXEXKUE3X8fUXfmx57WNdduZ4hC0o3v+Fv4yTVXsqJ3ezoc/1JWf1WXZEwWF
   86.56 -6L4+mUHAfO+FcS0E+i+FaRNCDieF/te4E41evLcmwmCYLKsr0Cg8uUD/XHuhJskQ
   86.57 -sEEVqT9xlX5NShzfWx9HWNDXjjTBPJDb+Q0+G7SJU2Qo050joqkmZJwazoCrQZ1O
   86.58 -Mz6QzwVpoLbwB/15NvcxOEPf1drIdbADAjUYgj0Td8qYPHBnwyq65dlN0q+GLQYb
   86.59 -3FomPLxegdOr5DN54l1V2CBe5+5eiDySbWA0R+QbPMB+oLd6eyVMR6pxpX+GlAv1
   86.60 -8pv3BldSv/7pJ/w786wf9sLfNrREGHDKhdAFPWf3aewIzpiodjynzNFvTnUY23dU
   86.61 -ubIf1d1tm3M0bSEsyDHN82sSQjPrTJHopzrCATl4Tc52lnfSMGfigG6pUi4oLGcQ
   86.62 -Goz6CTj6j7oTMjTZycgV9JTNj8BnMBdUCJ51APU2EQ==
   86.63 -=SlpO
   86.64 ------END PGP MESSAGE-----
   86.65 -
   86.66 ---74b0dc5119495cff2ae8944a625558ec--
   86.67 -
    87.1 --- a/test/signature.asc	Sat Aug 31 15:23:52 2019 +0200
    87.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    87.3 @@ -1,12 +0,0 @@
    87.4 ------BEGIN PGP SIGNATURE-----
    87.5 -
    87.6 -xA0DAAgBqUEdF2/wDpcBy25iAAAAAABHcnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJy
    87.7 -cnJycnJycnJycnJycnJycnJycnJycnJycnJyISBJIG1lYW4sIHlvLiBHcmVldGluZ3MgdG8gTWVl
    87.8 -c3RpLgogLSBBbGljZcLAYgQAAQgAFgUCXA5z3wUDAAAAAAkQqUEdF2/wDpcAACPWCADKn9DvovER
    87.9 -KCQ2I7p0QnYYdxLB0C7rCOyLg16ut84R+C0iXAAC2/eTq75SAac9TF22eI5PJr8G3PRAaM0Cg4IQ
   87.10 -a9TvH08LjlhkOWz4wLRrcV2hfDC9W63EcWsYbq+p/SLKG8kI53vb7PV0zQqZot1ZSNwcgK0gpp2X
   87.11 -0BNbP3M/fcOtUGWCa8nMymx17eLuR3qdWpB7mkWniMwUPaUCTVmkOuAdfJxpo+2jUwSStNlvx5xi
   87.12 -oBOTJcrcN3RhUAUNvQ7DlxVqLB+3VC2gHUmkfUhtybrQ79s+qRa/KN6rYiw8YGLoP6nyKsFHHtzk
   87.13 -ir51+MOi8C2jApkQNkoa82bnYJE4
   87.14 -=4cwe
   87.15 ------END PGP SIGNATURE-----
    88.1 --- a/test/src/EncryptForIdentityTest.cc	Sat Aug 31 15:23:52 2019 +0200
    88.2 +++ b/test/src/EncryptForIdentityTest.cc	Mon Sep 02 17:14:54 2019 +0200
    88.3 @@ -162,8 +162,8 @@
    88.4      ASSERT_EQ(status, PEP_STATUS_OK);
    88.5      const string string3 = encoded_text;
    88.6  
    88.7 -    unlink("msg_encrypt_for_self.asc");
    88.8 -    ofstream outFile3("msg_encrypt_for_self.asc");
    88.9 +    unlink("tmp/msg_encrypt_for_self.asc");
   88.10 +    ofstream outFile3("tmp/msg_encrypt_for_self.asc");
   88.11      outFile3.write(string3.c_str(), string3.size());
   88.12      outFile3.close();
   88.13  
    89.1 --- a/test/src/MessageApiTest.cc	Sat Aug 31 15:23:52 2019 +0200
    89.2 +++ b/test/src/MessageApiTest.cc	Mon Sep 02 17:14:54 2019 +0200
    89.3 @@ -148,8 +148,8 @@
    89.4      const string string3 = text2;
    89.5      //free(text2);
    89.6  
    89.7 -    unlink("msg4.asc");
    89.8 -    ofstream outFile3("msg4.asc");
    89.9 +    unlink("tmp/msg4.asc");
   89.10 +    ofstream outFile3("tmp/msg4.asc");
   89.11      outFile3.write(string3.c_str(), string3.size());
   89.12      outFile3.close();
   89.13  
   89.14 @@ -181,7 +181,7 @@
   89.15      free_stringlist(keylist4);
   89.16  
   89.17      output_stream << "opening msg_no_key.asc for reading\n";
   89.18 -    ifstream inFile3 ("msg_no_key.asc");
   89.19 +    ifstream inFile3 ("test_mails/msg_no_key.asc");
   89.20      ASSERT_TRUE(inFile3.is_open());
   89.21  
   89.22      string text3;
    90.1 --- a/test/src/MessageTwoPointOhTest.cc	Sat Aug 31 15:23:52 2019 +0200
    90.2 +++ b/test/src/MessageTwoPointOhTest.cc	Mon Sep 02 17:14:54 2019 +0200
    90.3 @@ -187,8 +187,8 @@
    90.4      ASSERT_EQ(status , PEP_STATUS_OK);
    90.5      const string string3 = encoded_text;
    90.6  
    90.7 -    unlink("msg_2.0.asc");
    90.8 -    ofstream outFile3("msg_2.0.asc");
    90.9 +    unlink("tmp/msg_2.0.asc");
   90.10 +    ofstream outFile3("tmp/msg_2.0.asc");
   90.11      outFile3.write(string3.c_str(), string3.size());
   90.12      outFile3.close();
   90.13  
    91.1 --- a/test/src/MimeTest.cc	Sat Aug 31 15:23:52 2019 +0200
    91.2 +++ b/test/src/MimeTest.cc	Mon Sep 02 17:14:54 2019 +0200
    91.3 @@ -157,7 +157,7 @@
    91.4      free(result2);
    91.5      free_message(msg2);
    91.6  
    91.7 -    test_mime_decoding("msg1.asc");
    91.8 -    test_mime_decoding("msg2.asc");
    91.9 -    test_mime_decoding("msg3.asc");
   91.10 +    test_mime_decoding("test_mails/msg1.asc");
   91.11 +    test_mime_decoding("test_mails/msg2.asc");
   91.12 +    test_mime_decoding("test_mails/msg3.asc");
   91.13  }
    92.1 --- a/test/src/SignOnlyTest.cc	Sat Aug 31 15:23:52 2019 +0200
    92.2 +++ b/test/src/SignOnlyTest.cc	Mon Sep 02 17:14:54 2019 +0200
    92.3 @@ -89,7 +89,7 @@
    92.4      const char* alice_fpr = "4ABE3AAF59AC32CFE4F86500A9411D176FF00E97";
    92.5      string msg_text = "Grrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr! I mean, yo. Greetings to Meesti.\n - Alice";
    92.6      ofstream test_file;
    92.7 -    test_file.open("signed_text.txt");
    92.8 +    test_file.open("tmp/signed_text.txt");
    92.9      test_file << msg_text;
   92.10      test_file.close();
   92.11      char* signed_text = NULL;
   92.12 @@ -100,7 +100,7 @@
   92.13      PEP_STATUS status = sign_only(session, msg_text.c_str(), msg_text.size(), alice_fpr, &signed_text, &signed_text_size);
   92.14      ASSERT_EQ(status , PEP_STATUS_OK);
   92.15      output_stream << signed_text << endl;
   92.16 -    test_file.open("signature.txt");
   92.17 +    test_file.open("tmp/signature.txt");
   92.18      test_file << signed_text;
   92.19      test_file.close();
   92.20  
    93.1 --- a/test/still_no_key.asc	Sat Aug 31 15:23:52 2019 +0200
    93.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    93.3 @@ -1,56 +0,0 @@
    93.4 ------BEGIN PGP PRIVATE KEY BLOCK-----
    93.5 -
    93.6 -lQOYBFdisVYBCAC32OZTBZdKW9RwRdMyGxm8yG0hYp3ZA8Z7bUBlQQDwOOT0K2YV
    93.7 -1v5DEXYTIovVe4HYY4sPqmM1atpmCM/RlyYbghSIUha5OaH3/GOv9+Yg9WomrF4b
    93.8 -tPtGIlikcp/n69t/468hX9kzHf916VxwgVT7cSaHN0U6lKsPti08z3fDJKjr+O7S
    93.9 -7p1bYp+Lc9vsqSLBdTCoaPjs4RM1z2TLPHowKRVjwAKX/IjwwD0B9lg6fuOXqb+v
   93.10 -YBfRF0OZ/O+TX+k68y9qHgH1BPxUJAoAR7D/JgJzlH+H0kvVsCSnpph3a+dxnFsr
   93.11 -FFU1V4XRUsZtoR6URuOp3+0iC+LFE1HPt7F3ABEBAAEAB/0Vz46rpMspEDHoy+/d
   93.12 -TufDxMdloYx2dYMzm2d7W7XfyfAno4pt5t6tWEH4zS1nu0pRQKX7yswQR0f3uO3m
   93.13 -wJbNxqXm8k4t1U+I2xF8i91qZZMdWW+ku9jfni2D/PFJk2qsBnf9bqCW9uUauP+1
   93.14 -fTJ2zhqzCfSVmZOdvpApWbesl9YGqN/LLYVMjWhDs/QVL/n4MkJCrixdvVVELJty
   93.15 -j5E4nV3Z8PfsMjEE3goDzrhU0urPYubWHr/NXBcSG9mzhx48zacEPQyqcrSLc8Yy
   93.16 -rWZGSHgjYGdtYmajFDF4r3kr6efE5p2PRF1sU757oMLXW/J1eOq9Tal2halK/Jvm
   93.17 -2zEJBADCkUMr9vkSOhkpz2zAXx2wdtZBWb1pqQ0ZNDEaHTi0hbzO9nrRtvCEV60d
   93.18 -08xJDSVUfGi+WAihF+Woyg2yVTmsdcsnCHUH2yhNcke1buXGowxW7zcCT+mfB4Mh
   93.19 -gNJ/SIWvMj0Ku/P2JzAfvzngAIMpSNkq213f3yHNuHftH00y/QQA8eUiZvX+ST4b
   93.20 -XpV21S9wrCMJRVhWDJWX4uiQ1mEhxmJUF5AcqdgN66vGV5ZzJolnIvejLvFqkDzN
   93.21 -ftGM7aXnwGDNKaxd+X3x67EFVbSX+0tRATqG8xFTQYQ6wd0CmDtongdA8PPSJjO/
   93.22 -+/iBdTCKQggMro82ABW8WqIxeVGFIoMEAI78UWIBKF1dr4Ol4hP3Je27v0Duw+zi
   93.23 -EywJ84GFI3P9TKS3bYpxqQ7ymeVVUwFCpZeJEMIvX/GwsWsy9yZX5DADik3gwfGw
   93.24 -M5b9J0VYGp7UXP9npHM3rx3lMdfPUTUcYM5X6D0oXbPB+zbt1sBV7mPJK4nZ++qG
   93.25 -VWe/1eI2D8uvSWi0H1N0aWxsIG5vIGtleSA8c3RpbGxAbm9rZXkuYmx1cD6JATcE
   93.26 -EwEKACEFAldisVYCGwMFCwkIBwMFFQoJCAsFFgIDAQACHgECF4AACgkQOz+djmF7
   93.27 -X+NDFgf/Sp3BqUviZXCjxBMtL1XKWc8xouq/wnghfsURAKdUV9RXNghHTbAJftAb
   93.28 -SiQoTeGlhWWESMOJOq5rYbvIyzsVDqH2KeYCSJKucO09+viInrlw5Z9Sd7Mtp3+U
   93.29 -gMzE3mY9tJRy+OTv6B6KNDlplrTRhWpJkglLWKIB4qA0FZTRmcfub61+BOxgyiI0
   93.30 -KMCjxKYHH234T45ZELCT1XyBO5kZlItomrxQYpMkKIvDsm+ND73bi8rOafZaQoKj
   93.31 -ufG835AmGAvvFsiFm/AK98ZlI4rPNTfI6lHML1xozApi8Ga8Q/RSa/r5O6x3kdFb
   93.32 -DAutMCNn4F8i98v43f3M0KNlsOiJ450DmARXYrFWAQgAqnPL0cLdd1Tp0YB9RU0s
   93.33 -cwblmOBUaD3rN7lM0fqaw5eOqde0ZM75rhw/dvQH1pmC1AWHKo/3baqZLPAOHYr7
   93.34 -qlrGusEfm2SLuo6eGRi3InTIMB+dwaWaRuJDSQ+u0MAaCqEe3P7UijTZTVmj5DLL
   93.35 -lyCL2dh5x6HIe4jM9bJ1KjHmmMNurJ+zzIDxXyyZmQRGb8W6curR/KaiYP6sinMy
   93.36 -M+l7b9uhEqaLv9b0zOZjxSekfb6ICyVUvzJCONtEfaQ/QVK5XLMLhpbC4y27E7Vz
   93.37 -coa7381ewTrPaB6gS9R8/EgNGOQTIgYmestaZFeG/9UqtN+ox8+7a/XRVsm4PlE4
   93.38 -hwARAQABAAf9Gtey000NX2DUlD+DJXS/zpAu0WJn0yVdHiC6Q58O3EUecbTHHdD9
   93.39 -FOQx7Q5aZaXgf88sYrwv9OnsHAg50NaK8grq8jdo6NRur2m3kAWKYYy5MeA+Ebl9
   93.40 -5YfK8iiGw9eyF4EZa9KzBIjKEm+kFahs01c2xDmzrofVxfkx0xzQGAgTL3yGKEAM
   93.41 -S2Kr2J3nhejEOcEGjY2tvD1UMxZQCu6qpAyNU/lYBG8Fg3p67psUORWOBnAZkJNs
   93.42 -BTpsaVQR0/wja3x8efIjg41+W6O0NMQ7FE+vS2A9CBLOnKrLFw7jsVHQnk58MAnb
   93.43 -M3CPIusyhQXXOPrp0OnzfBA1hULF8EEKYQQAxvZXWFWuGoA1K5/Kn6nahHevYtkk
   93.44 -8rFb5uqIxTUqc2d0S/YJT2ksohyKwIa2wTWU51Dvi5WxmBJKAtWq96Xpvay99YgH
   93.45 -UZPw3xh5qi6Wv7JbhA/+lokURTxtyqofNcJDIAiGUwEryyjojhB1eEoV8mRfpL/B
   93.46 -78Uu7W/W1uY1rn8EANtRIvBnB1BrbTYpxH8n9V316BDTui6fCfb//2Ru5eJ/4ZSZ
   93.47 -dJ+8YncgoJAOrFDAT70xFp8tPwmJeak+PAMnt0ehLyZTzc4Dn1f3CTL/d9ZQmGau
   93.48 -w1hotJZBWgZAm10VI4UYuQkj3Iq20ENaY92XZMr40hlmmSeHAGXKy+hDlAH5A/9z
   93.49 -wP21mtgzGfLijeaXS9xzYQ5fgbWNJJ1bPALl1ZLGma/Ajbt8GgBgCSXnm8z9TYkt
   93.50 -j3R5PyFV3qTm+1L/JS3bepkGZnjy1Uqa0ZXIgKKOmYABuNJoFw1HfE47ZeZFwbmd
   93.51 -1MkC0L1eQqU1Dmz0Aq5Bj3yDuL5QOxBhxIb1wmrc2z6FiQEfBBgBCgAJBQJXYrFW
   93.52 -AhsMAAoJEDs/nY5he1/jekoH/1Bqm52W64DYJtGoxh0LOtTKYRk6fat1c1pzNctL
   93.53 -A2idl1ReT3XkI2pOZfDLXKiG4zHzUaOkO5P0a9oZxkUCRjuZjfHzaG/mmtCMJVPl
   93.54 -hcjD9Djzyw9HhXSubyWmMrbZ6uLaJfAs795b/ZXDkjghgN4IflEUX3NgqnIwciL/
   93.55 -8sdYE4olihmBHzcW5Pg8fQXXsGKeZfHdMnuMUrZk5htzkXN28FVcqrNHtSP+g3nw
   93.56 -YrOLfjw52fUDo7+SdGWUw0AUGYAFVoBdK38UkmWmhkeN8uqNI6/dqajzmMiMAwPQ
   93.57 -dvZ7djEg7DiKGSQ+dMVj9IzT27IuJqcXO+47fGHkU0iPpgI=
   93.58 -=3QWb
   93.59 ------END PGP PRIVATE KEY BLOCK-----
    94.1 --- a/test/t1.txt	Sat Aug 31 15:23:52 2019 +0200
    94.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    94.3 @@ -1,10 +0,0 @@
    94.4 -Content-Type: text/plain; charset=us-ascii
    94.5 -Content-Disposition: inline
    94.6 -Content-Transfer-Encoding: quoted-printable
    94.7 -
    94.8 -Ohne Anhang.
    94.9 ---=20
   94.10 -Volker Birk, Oberer Graben 4, CH-8400 Winterthur, Schweiz,
   94.11 -Erde, Solar-System, Orion Arm, Milchstrasse, Lokale Gruppe,
   94.12 -Virgo-Superhaufen, Coma-Virgo-Filament. mailto:dingens@bumens.org
   94.13 -http://fdik.org  D-IRCNet fdik!vb@dragon.pibit.ch
    95.1 --- a/test/t2.txt	Sat Aug 31 15:23:52 2019 +0200
    95.2 +++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
    95.3 @@ -1,1 +0,0 @@
    95.4 -Something else
    96.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    96.2 +++ b/test/test_mails/msg1.asc	Mon Sep 02 17:14:54 2019 +0200
    96.3 @@ -0,0 +1,20 @@
    96.4 +Subject: my =?utf-8?Q?s=C3=BCbject?=
    96.5 +From: Volker Birk <vb@dingens.org>
    96.6 +To: Patricia =?utf-8?Q?B=C3=A4dnar?= <trischa@dingens.org>
    96.7 +X-pEp-Version: 1.0
    96.8 +MIME-Version: 1.0
    96.9 +Content-Type: multipart/alternative; boundary="54fdd7c7_6b8b4567_1505"
   96.10 +
   96.11 +--54fdd7c7_6b8b4567_1505
   96.12 +Content-Type: text/plain; charset="utf-8"
   96.13 +Content-Transfer-Encoding: quoted-printable
   96.14 +Content-Disposition: inline
   96.15 +
   96.16 +my m=C3=A8ssage to yo=C3=BC
   96.17 +--54fdd7c7_6b8b4567_1505
   96.18 +Content-Type: text/html; charset="utf-8"
   96.19 +Content-Transfer-Encoding: quoted-printable
   96.20 +Content-Disposition: inline
   96.21 +
   96.22 +<html><body><p>my message to you</p></body></html>
   96.23 +--54fdd7c7_6b8b4567_1505--
    97.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    97.2 +++ b/test/test_mails/msg2.asc	Mon Sep 02 17:14:54 2019 +0200
    97.3 @@ -0,0 +1,605 @@
    97.4 +Return-Path: <vb@dingens.org>
    97.5 +X-Original-To: vb@dingens.org
    97.6 +Delivered-To: vb@dingens.org
    97.7 +Received: from localhost (localhost [127.0.0.1])
    97.8 +	by dragon.pibit.ch (Postfix) with ESMTP id AFEEF171C059
    97.9 +	for <vb@dingens.org>; Sat, 28 Mar 2015 10:07:34 +0100 (CET)
   97.10 +Received: from dragon.pibit.ch ([127.0.0.1])
   97.11 +	by localhost (dragon.pibit.ch [127.0.0.1]) (amavisd-new, port 10024)
   97.12 +	with ESMTP id LIqI5IZE3-af for <vb@dingens.org>;
   97.13 +	Sat, 28 Mar 2015 10:07:32 +0100 (CET)
   97.14 +Received: from localhost (161.238.195.178.dynamic.wline.res.cust.swisscom.ch [178.195.238.161])
   97.15 +	by dragon.pibit.ch (Postfix) with ESMTPSA id 4742A171C055
   97.16 +	for <vb@dingens.org>; Sat, 28 Mar 2015 10:07:32 +0100 (CET)
   97.17 +Date: Sat, 28 Mar 2015 10:07:31 +0100
   97.18 +From: Volker Birk <vb@dingens.org>
   97.19 +To: Volker Birk <vb@dingens.org>
   97.20 +Subject: Dingens
   97.21 +Message-ID: <20150328090731.GI44028@dingens.org>
   97.22 +MIME-Version: 1.0
   97.23 +Content-Type: multipart/mixed; boundary="cEobB2knsyc5ebfU"
   97.24 +Content-Disposition: inline
   97.25 +X-PGP-Key: http://fdik.org/vb.key
   97.26 +
   97.27 +
   97.28 +--cEobB2knsyc5ebfU
   97.29 +Content-Type: text/plain; charset=us-ascii
   97.30 +Content-Disposition: inline
   97.31 +
   97.32 +VB.
   97.33 +-- 
   97.34 +Volker Birk
   97.35 +Oberer Graben 4, 8400 Winterthur, Schweiz
   97.36 +mailto:vb@dingens.org  http://fdik.org
   97.37 +
   97.38 +--cEobB2knsyc5ebfU
   97.39 +Content-Type: application/pdf
   97.40 +Content-Disposition: attachment; filename="pep_Dokument_Titel.pdf"
   97.41 +Content-Transfer-Encoding: base64
   97.42 +
   97.43 +JVBERi0xLjQNJeLjz9MNCjYgMCBvYmoNPDwvTGluZWFyaXplZCAxL0wgMzAzNTQvTyA4L0Ug
   97.44 +MjcyNjEvTiAxL1QgMzAxMjAvSCBbIDU3NiAxNTldPj4NZW5kb2JqDSAgICAgICAgICAgICAg
   97.45 +ICAgICAgIA14cmVmDTYgMTQNMDAwMDAwMDAxNiAwMDAwMCBuDQowMDAwMDAwNzM1IDAwMDAw
   97.46 +IG4NCjAwMDAwMDA4NDggMDAwMDAgbg0KMDAwMDAwMTE3NiAwMDAwMCBuDQowMDAwMDA0NjUz
   97.47 +IDAwMDAwIG4NCjAwMDAwMDgwNzkgMDAwMDAgbg0KMDAwMDAxMTQzOCAwMDAwMCBuDQowMDAw
   97.48 +MDEzNzY0IDAwMDAwIG4NCjAwMDAwMTcyNDkgMDAwMDAgbg0KMDAwMDAyMDQ3NyAwMDAwMCBu
   97.49 +DQowMDAwMDIzNzc5IDAwMDAwIG4NCjAwMDAwMjcwMzcgMDAwMDAgbg0KMDAwMDAyNzE1MCAw
   97.50 +MDAwMCBuDQowMDAwMDAwNTc2IDAwMDAwIG4NCnRyYWlsZXINPDwvU2l6ZSAyMC9Sb290IDcg
   97.51 +MCBSL0luZm8gNSAwIFIvSURbPEM4MjAyNjM5QTk2NzQwODJCNDI1MjY5OEY2RDg5M0I4PjxB
   97.52 +Qzg4QjY2Qzk4MDA0RjgzOUQzRTVEQzI2MDg2NUNDMT5dL1ByZXYgMzAxMTI+Pg1zdGFydHhy
   97.53 +ZWYNMA0lJUVPRg0gICAgICAgICAgICAgICAgICAgICAgICANMTkgMCBvYmoNPDwvRmlsdGVy
   97.54 +L0ZsYXRlRGVjb2RlL0kgOTUvTCA3OS9MZW5ndGggNzYvUyAzNj4+c3RyZWFtDQpo3mJgYOBm
   97.55 +YGDayAAE6boMmICFgQOJxw3FDAz5DDy8c9XO22zoqtU7dKf8yAYmqBJGBobMe0AaxLcHYlYG
   97.56 +hhIfiDjDVoAAAwAUHgw/DWVuZHN0cmVhbQ1lbmRvYmoNNyAwIG9iag08PC9NZXRhZGF0YSA0
   97.57 +IDAgUi9QYWdlTGFiZWxzIDEgMCBSL1BhZ2VzIDMgMCBSL1R5cGUvQ2F0YWxvZy9WaWV3ZXJQ
   97.58 +cmVmZXJlbmNlczw8L0RpcmVjdGlvbi9MMlI+Pj4+DWVuZG9iag04IDAgb2JqDTw8L0FydEJv
   97.59 +eFswLjAgMC4wIDU5NS4yNzYgODQxLjg5XS9CbGVlZEJveFswLjAgMC4wIDU5NS4yNzYgODQx
   97.60 +Ljg5XS9Db250ZW50c1s5IDAgUiAxMCAwIFIgMTEgMCBSIDEyIDAgUiAxMyAwIFIgMTQgMCBS
   97.61 +IDE1IDAgUiAxNiAwIFJdL0Nyb3BCb3hbMC4wIDAuMCA1OTUuMjc2IDg0MS44OV0vTWVkaWFC
   97.62 +b3hbMC4wIDAuMCA1OTUuMjc2IDg0MS44OV0vUGFyZW50IDMgMCBSL1Jlc291cmNlczw8L0V4
   97.63 +dEdTdGF0ZTw8L0dTMCAxNyAwIFIvR1MxIDE4IDAgUj4+Pj4vUm90YXRlIDAvVHJpbUJveFsw
   97.64 +LjAgMC4wIDU5NS4yNzYgODQxLjg5XS9UeXBlL1BhZ2U+Pg1lbmRvYmoNOSAwIG9iag08PC9G
   97.65 +aWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDM0MDg+PnN0cmVhbQ0KSIm0V02O5roN3H+n8AXa
   97.66 +kSiJkk6QRZBF8BY5wCAvA0x3gJfcH0hVUbI90/OSTYIG+nPZ+qHIYpFK5+j5SGcp8+CvuR3f
   97.67 +Xn/44y/p+Pu/Xunwnk8v9WizndbbkefZaj3++Td+m/nMfRwffM7p9JZ/Pq6kM8+qca3O0338
   97.68 +ZNyvr9/wPa0vfoyazzH55a/HP16/0Tr85WPa2Yvno890tm75+PKhefyfz9rK8ZbONNthOJoT
   97.69 +2KhHxZrHlxdQa0c7Ha/wPKcffk6fxxuOibXGmW1wHDaZ48ChWsWC7Uy5HzmfHRa9Daw1iYZr
   97.70 +LJ5KsetzLmcdTXMT5uYKeztWTlmD2znhcZiQGz762bCInbMuZBNn4bh4hl01V30qMHbZRZhL
   97.71 +Pt7qmZvtZZMsbY5hgI3r+znwnTZMr7R8GVHP0vvxNs88hixu8OgbTM7GX8PsITzSPmJr/JJj
   97.72 +XXwpaQjTCVi4z3xBTGgRCfoEhyhYV5Na4lnwzm5jGJJBy71VMDCBiTjmhAtTuMIMLxH4s2eS
   97.73 +jTjnTH/LwYAwGmew0YUKQggHpG7LkT6vF+/Ls4ptSX29qLk9X8B7hheG9y7vWZrcYSaXd6qD
   97.74 +DYhrF6cwsXvhDq3LFYgA44FBCEDtdSPxalk3QBXMa5MLmTjQyRqkFHz05VXl0X5OuKPhuZHC
   97.75 +Zaxn+iWe4M0JgmBvnr6cI3M82AqH9ly0kmOXt44R48AAEmHKWbGlwpwZCqSwaFiDXAUBmuIS
   97.76 +R4H18M7bfZSJEN8vtArjCOwiLr0X1Gu+SJdSvCmmcYVmMnDCYDjthAcgLN+lQLx5v9+YM/X5
   97.77 +ZnHjfvP1BYWZWBhZyGiVChXRYTqshJqsz6BdcbBpw3GW2v/D8EzSlXsCzM809/cmUBQmxw9E
   97.78 +dEif4ik0Cs9p+NKoAdchuZdGAYFNoVF4zvgJjerQSmy5NarD5FG2RnUoAiK7RKgjgZLdGuXz
   97.79 +HHXsr97h0EuhHByFBK909MZsCnlyUAeJG+pEAC0h89bj0iagTjkNacL81G5h4nK9b10CcspT
   97.80 +yBI2NubX3hlvU92iRBvtkiQfmFgeioQDebn0qON1t0t/cPoyH2rUkQo2thrBb0rjUCM4tYxx
   97.81 +GUHnm201QpQsX3K0I4nUg411XooEmPrWozYk8EuPgHjUS47grDrsVqPlykt76EzKx4VpyCVF
   97.82 +cNFam0oEpzDDLyGCF2owE3nZLUQtsrNjTPJbhzrNKluHcDDKzBKigdX9oUSDFcuWFA1a4EuL
   97.83 +FqBH1uNSIyBmw5KjwczOtyBhQfIlBAkg1UuR1t63JMG0Ybcmwe7stjWJLO/loUloVrrV6wUc
   97.84 +UswuSaK/+kORQLHM6hSCBE8PUSr0CIEYZg85uki/1Wi/uKRnseKpRb++/oK/dMTfNzwZjHbz
   97.85 +uwHi6DajA2IfRco9+q2hmP7X/ij9pI/706sefz5ebzhng+/20t2RUxSHa+lfZKPDsqdh/Dz+
   97.86 +Nztr5fy7O7eG94jX/2HrvfTPtv7Z9G+PTrNMCK6jSlQ2VyDp3Wmeycj7dzwZ6BndENKPNb01
   97.87 +viB5UN8rqYNMYmczIe+QTJYAWoIkKPH45WXq3gCAUEkSV3ArzDMyCrYjl9UUwOK3pORtUflA
   97.88 +eRxoAVOaszdIUcGdrW+fnYpcRz5I9clUNNUQJGhVl5KwfVHCs2XBD8odizVAWUcYfUMeVM1l
   97.89 +KjwkfcEVC01M+/Gdj0NCxTqNsf4Zw1sokoHZelDtVUoSYgavsvmmJeW4WlHsV31Bpljap/7Q
   97.90 +t6R20+T9NAWo/VSCSieYRadTWSHgk0pXN/ajSOfCffpQY82axoEU3DdKBuOTp5yXiiLJTioA
   97.91 +HdSHb8jTDM1ylk9rWj4UDbqs+uio6OizZ43QcJIPjSMPOa6HVck4cFAWcZau20JScJs8Ashm
   97.92 +nbLFsJFlLFjuNwhSXLAad9MsOLf6XpH1MrbWbll+WXagndFA2ZhVlDlQ9rN9KUccDP7L+8i8
   97.93 +oBUNkzvgdDQo4SfEg31x+DCASDbnhsvznDR3VJAUionixexilBVJZtfcUcY6XjRQDIBgN20p
   97.94 +cuDEzPrbLVCENBehPoiWrU5iDvXvD9iTLilovFD0xbKKfEcvLJJ5o1vQbBWOGkXXDJtMGTWF
   97.95 +sHlqr8njBqLt4ML7i41je8JedZmdIAeVSEfh9Qgty4xjmms7i2uV4QRT7VdWmiPbSrRpY+ig
   97.96 +dBij3HnTjeKFsusEHupRVKADupofFDokxvwOWrtTFzDaaXYEqGW8nSDLJp89X3n79cWupUV2
   97.97 +OrP1xjUuV3FT1M1KFw+I01Rq1RCHqg6cKJKm4KTsCzxSKChExVTqOcnGe66Suau90eUBidhn
   97.98 +DPWuqWzuMl+3K7lbXIGu7G7U7ftjb3WnN3uNZ37jjpKr7QwHMnBFSkNQ2CRVqRyGjohc4Hfi
   97.99 +nHpYdOSuto6dM+YAqVfGZtliF6/qpK2NsGGrM223+ZBupjphmerqRtZJctN9YIC9DHyWSxbO
  97.100 +alF45akify9qQbuJj9TfLy81uGQ57WBQwKMoYMuAVdrorb5KHmyoSowpwM6Ylx15uOsCxtzv
  97.101 +Ors2Tk3dAOsMk9/z8louygVqMm5Bpsaz9kA9utAZQ2vS+UqL2m8qKANqt1HQUQSFebrw6jLx
  97.102 +IaxrA1J8KJLhm8xO2qM+sk/1iEeyUKiuvnomHQD9Q/BFGqKSwv58KGNqVrTKuPRwhe4SRFJU
  97.103 +U3XTI5u1RxOwyLtlACLQ6mUe++jb9JVpcTAe1Shb9RK9BRHvyepsxpTktW9caBdcY0H6AdGi
  97.104 +cU/8ESKP214oamuBzgG1omRwkB9IIr3rLnB3u0qoSQSZf+CIFbRsj+QEbnd2AvVVmLkujh57
  97.105 +zukxVhjBZIdOyBC7VANoLMTqWaLYuXrS2EZJVnBk2gD5I2J5BomyhhbdLGAvOtVopVwn9boT
  97.106 +EojBvNLTkGw5vsIkoDR7iC0Qa4huo0O3U2NF1ckLHMyohS6OpLE1VCnVGWOFdzAyKkPQ7jt8
  97.107 +N1LW1IRenAh4cYL3v3GTIuDFAxRAnz/Cmwgx+hO+mNFVvjczuhR5M2NEW3oxg+l/EQNJXNpF
  97.108 +DFS48eDFUNA3L2bIxuIFK/Z88GLhzYsZSr14MXX52LyYURsuXnCbcRFj7NCLGCylD17A9jEv
  97.109 +XkDY8sUEnHqUR8cNnLxcvEA1XXqfhWw8aOFRMBctmtqxTYsI402Lha9QoCqW9gnftChY1W+p
  97.110 +KNDpdge+IIHYHODUgz1/yWp0bmzR77kuHMDo8Nu9PD4Xs+dq0QKz3gesfuOvrwoJKbwiDZS0
  97.111 +j1el6/uC7xsaCQJUJTDfI94wmsfYnu0zhkaCLPf4HzF/aGoFC2r5jHeXtCy98NdXQ0BcrTkc
  97.112 +9EHoI6oRmsDGBqYFqkRWoo1PbMiAWVg1145GhVPvPpHgQA3dJnIpGVkPbHHvSXBK46VON4cM
  97.113 +jjZTnwDtEhcag9PjJjH5scfQjvU2qupyY2xgtthAarKoa1xUmcTuUvvndWUCMYBI9ZWDQD7L
  97.114 +naGNXd/9FacOqjK1W93NUvRVjZ6eu6+i96LrqjwlNs9xveseY3ukQHJ9HUttitYVqXBodeHE
  97.115 +/6a6SpIcAWHYV/oJbDb4T/3/82iBpOeSigpCwJZlOW5QdIejxQ5v8F/GsLO7ItFiD9lHfGyP
  97.116 +fvC9uzdP/iP897SBUR8HXkWtpd0D4GXZ/g9BHYou7b2ifE3zVuzGlHPS9zofT8X3ISt3iWWv
  97.117 +GgKRAUpCTGUKWhaeNiEzAEtjFZUyUraL1/W+0yTX9HJEJeY3CO4XpYznw6E56Ze4hlK6t35b
  97.118 +oXJvU7+tGldU8dOwV78aS9il3bSDQOQr7e75A4Y0n9g9nfhXtdPUixt3IzbNqmo27v2V0Rie
  97.119 +CS2jjH35ChA5psm2ghMR9nLmVLsNXAzI/CsyDCDEahaXtl7MtGuruMkRMyhnqsjTp/ceQQ5K
  97.120 +/I8u27m67tNsQlmeIooMIP2OmDK2ZGBvoZVClyv9TW3TBKwmsg7X8rBgtL0dhezygxIbaENK
  97.121 +6za49wQEaNQTG9E8MTZSmJZWc9erCGxttyYNmzTwwsZPleB5hjjurAXS+z5MoG0v2gRLu6sn
  97.122 +iago/CM2crTR3iGqduukSAOUrorxQdKT0Kl9ixZzSeEnAsNiMscjrkypmJE53oAaptWCQHKt
  97.123 +71fo9Ms5lC7NHOyCwLOW3ff+ARp162cQdV84JtOfyMxSWOgwgLalgeqWXfp1EfYydldGcG6T
  97.124 +46TpM3Cs291p2BF6gKQpAl/QKIG2UzbVEXhoKKEceJInaG80oX5EjMjty4Zx4kV4Sgv3wCSI
  97.125 +rWNKOcxpq4rnQs6S7ljMZdDzThygXTLaiZxaSXGo2wYrgBEA2pLurpFNq+ozAQIDrVSnOYgl
  97.126 +0DjSmq6WkJw6JROLT5lKBlBC4YCWW81ZygI61hiv8pmjmU8lmIW5vprBcFpeiKNQWfZ7bLdw
  97.127 +hnbk1oFD9adiUHvgRrvuXhQFzqJC/fhQTZdUDBoO4tDycs6W3pn6nmXHW/c6xx22QpelY1HP
  97.128 +9NUzHlL+dvbP6rBvYEddevS5wRwOyb0gOzsp7lDTDHzRWFTgn38CDAC5cXuEDWVuZHN0cmVh
  97.129 +bQ1lbmRvYmoNMTAgMCBvYmoNPDwvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCAzMzU2Pj5z
  97.130 +dHJlYW0NCkiJZFdLbmy7DZz3KnoDboj6kNIaggyCDLIAI8EF4hvgZf+DVBUluf0ysbuOKInf
  97.131 +IuX11X0+P/rLSjwdyIDaa81K1BJNiHw+gKs14vDG1TKFPObT7bWqZN06Ze01cARwj8rVOrXa
  97.132 +sAWodBfqQdnyirKIq/cnUJuDyMKISki2uEN2rFfE86O+VvQnQF+daI5GVPskilJTtBTJjo7V
  97.133 ++Zo2iFqrRB7aWUKy8zWovr1mNa72MYj6qm+oQC/JClPrydUxgqhNIWpbXlZ7iq7Rn4Bd+tma
  97.134 +AM0tVTeAUVe6wKBWgSFOmyPWE/fJc731/K0IGDTKFVjdBrcgbnAlQoLT5E8EbHGlAjoiu6hR
  97.135 +nU5Q+5IpgxH99QioA4fiFNjy+xFwT9QNvx5O/RFF+A6mA/trNXvD8YqF8/xVq+THy3x+bw84
  97.136 +e7yfNltjrpU+NvZvCGVW3k5F8BMnF3zHz7GoYsMpADMtRQgmvLbo3ugGawCHUflVg2tzbFdN
  97.137 +pB9iv504kcYhxCUkluz32ggc4Wf4jJGeXYH7KMovoF4anRcWFzHbPGWFcUTnovmiaX0aj42C
  97.138 +Y4e8BFEkuslrBTugTmdKO/Z3qtqjCbVj01gHy3rJFmTL9hHPbVR3u2/jr4sRRKgIzHD4/2Nc
  97.139 +sdrGNU72EhUGr8EFABUGZSTzpuo3sDdy2xsZPpc3apWiHbVM4qgKoSOecE6tlodNMzkLeQC0
  97.140 +4EEgR64wwkMoZk93UB3gNbQ6Qo4tLSNOcxJB1rB33lU4tuqW5coIrzqXV0t2QlHeCjOBlnuG
  97.141 +LxigkjpU3/ljqWFB7TKbcDxtAw0qt2T3kKOIk9lQxAJL5IXTv9FOoIt7jefeiKu631Oh5NFA
  97.142 +d4JjwQZHH4Nr/GoL4+u2TLbAOQjysRMlY9cJ9GJL0Z7p35WI8h75oV/fJsq0DHtbbVknHexy
  97.143 +YoaayugqnixSZYJizRpdNxNwlbeUVZ5AL9DgyaGqRvAzw6ABqGfaJS7AKbu6M5UJu7/hqTZS
  97.144 +1LIAmmiDNA5AwvIhZ6GFFOV1QyyhnahmodxXkRb0IuQ2ohlIly/tm/EDk0GImUAoONhO1m2L
  97.145 +KBgQBkiGoIGEcIUlQL0q1K1KthUFs8+ZsmbCk/GDUVVNjNxO1JKQWktZYRfZQCeQBl1/8Xit
  97.146 +Fd/VTzyzU9B4ICcvVqoB0Nqt/l+Phfz2eza7KJIjoE08//vPs3pCA+hgK44L6sbm4N4Js1KU
  97.147 +a2xYRlHUef3e6DCzX5ZZDFsOJ6Ml7nW84aWp5Yhb4Ujyth3JxV527F+gNG4/+Bd2eLqkKuS/
  97.148 +9WEq5yYqk8itJeyCLWeIVehwfrDE6EJWhmiWcHRBTw6klyg9QOkijgLbCWsXc3BIICx7YupL
  97.149 +4l3WiFmoC5grxYPjwYHkpLrF94dWc301jXnDUxmrgizKVKYVNazVltY5M23qJJzNvplVltrb
  97.150 +OjzRL7cSDmvf5CrHRRx2JYxsjjLc1ahJr+FbWkMGbPFcX6Ewz5aHr5l+mOuIr3amyRtD+BF1
  97.151 +9KeQUhxcrOKbpgizF4vmgtJNQ8ZHzmiEnF4/OIP2vdk10NTStTwHOYEzM11MxkU5+QmYL7XM
  97.152 +SI82TEamniH/IQv2QJIuWHcx4L61Z0ErKHlR0pAkamByrVnTmmvgKbIcxBIinbZFV1d9e+c5
  97.153 +K+mAU2x/hzyB4vsDsrJn+Sz5Hx8i9v7VcvTI/ZYEkLs5LNSNv4Tr0GmT8yph1aQy5juqs+/d
  97.154 +tdTz4UsOiZ6XaYPLQg5BO3ltfI9I9HR3MVuvVWFR/rjGIMLBOh/izAyiya7BmbCwmlUKS9kI
  97.155 +OJWcbMaUvh/I+ISrKJWLyrAmtSMTrG3xFZHvoNDlRbnbLTUzt1PjOxk9s3NmQvV8o0Qk9CJ4
  97.156 +UqrluM0hvSnjSk/+35TQ9pMmtlsi3y3JXnDb0uwfs20+UiVEXW/shYSY6XK93wBjfZeRaZL9
  97.157 +fLx9KG3ukO12Mj3lm3LRI6twWrbnOAQSPXN1jmTWRJbSI+fQOuaW7iUH083DSq6iIVvZ4Rcm
  97.158 +mUXWtEVSaQ81tlY8KzHrYozDfbWomYd0gZ9a9vK1YXqRjMHmhw6M4OaYAm7+nR9qDmBQH2j0
  97.159 +dM1I2JbU46PuU9LssFSAvGHtDGiNcQEccecuijeR0f5AaHkcJxtCcpOqXIEx9htZi/ARzci3
  97.160 +a0tUpWjVq5cfolo+e13rmY2VqX6Rn4OZCkxOxEpwZXuLhFFz4L96RNfoO/KsWPkCOGp1FVXR
  97.161 +i1Val5rtKrS+ZrarMdLmLLrdrizfFadd0UXzTvqEzqnptiu6eGW7qlMRqTnATzZDwG5SZvS+
  97.162 +A8SBmBxABmZ0OUsyTpYw+7aPjCfHgnk+fOnDQPGTSie1I9MkPVnb2tU3+oKxY63zADSz7Nwc
  97.163 +16pga6KvOtQCrJynCi8hHC7t3N/gGZPvB9a5P+/uoofkPb1oHqB43o50svU8qiF7Sr2an65F
  97.164 +v2nNTEZWY2eMqEKhcbvlZASPtEx5kwu3x4pY4cKsJ5VYrWLnMwniPfoa9j3aVdy6+JCdc8jj
  97.165 +7FV/+rBaZD/SDgtV/z3B+NRobyei3COHjj7Oh3yl5odfj389/vbg0+YJC57l+ZfHH/pf8LdV
  97.166 +10ONUwS89/n7we/82yb84tj/d+x+34CHEOsHKc23yN3BCsmHaSm89iPQ8zCH7xP+pEF//vX5
  97.167 +41Q+HrG9oTA6K+scm6eeQ3+e+YdkxhoawGZnv+Bs/o/nf95v+/f7RR0ONyRQ5eMM/nmzGEGv
  97.168 +HMfJOYvDiajb9EZFLpZ2AFLPWZ4bhpJA+yYOQLxG9j7+5rREbkHbdPHy5+PC4MTxkfzjIiVB
  97.169 +g1s9e1xVcFyjzgZDBPP52DB1+Tpw61n3a1AW5HVp3b29KDNwMryLrXgF/b6I09/XY2iE/Ikw
  97.170 +4E26qIuWDkKMEDIohkyn2e3JmUN+ghQim+PLRryLJ3DS/olM9H1QUfPjhDS2JRgyNKemIRtB
  97.171 +HvzDeH3/2oEEfZ0wpvpsPed3XvZ5zUxFfl3FaPbvB726rhM4MxmTEfzX1ICGhqsuvuTYRhbI
  97.172 +ExLpdYaJc04l2fmJcYGG2kS4mFxqoHgVFq6RXTcwTYKfjw2bOv/XgXxzQiaQdtSk4ZUKRiKR
  97.173 +JMA+EDr0v2u10Xw+12xockNjCV2AoWqyziayEKA1Vrhz8O9KuC6OhyBb2eQ+tjsOBO0czzYS
  97.174 +31cjz+KusS1SLbYC9ePKI1wci6EQ6Y2rm9ZK522uCQO9l3r0kf1GEAFTdAGr0zbTVLgvl1ps
  97.175 +CkydlZPtRj7Ej+wj45mjDoFn/PwABNZyGhNkCPre53ozDU64SPm2A7fUXjOmn4+NxMQ3L8/P
  97.176 +E3fD0HDjbqLyfXCCvFQmTwW6DM9jzAkb2zvcmFGa9D0aRf6W6zmk5EpX5+rKuw1avrMSZIp9
  97.177 +HQg1mB1dI+BWkG/LdQ08kHv4NPEfP/9HdZVk1w3DsH1O0Qukz5ql82Sb+68LgKC+u4oRf9vi
  97.178 +ABLICIe2h1+AGjnCkQCfjbcFvJ2dkPoX1US9oV64a9mp1ZnQY6OqK3u2coRLrfJJBObvar6z
  97.179 +tDc7vYKv0aHbPyPEkTTODE1EjPNeMhBMyNY+mTAUy6sWi1iel85F3aBT9SsAapt+uUGy3DBz
  97.180 +YRgsr0saI+iEpb1Ku1QDbGt97j2zm+V1SKgkyysFXTXLAbi9guWQKbvMy3KqljVNJ4Bn5oCp
  97.181 +GLuvAVMpcO+96q+R5RRCl+Pctt0UhwRipwTFAab2e1DcMCkutTRNceia+LIoDpqNdSmeKChe
  97.182 +OQyaKU6wjylukBQ3TIobBhMBxr6FP2jIFwUM+QymV31fZdExrD5FL6KqXxwgKW6YFAc8mnmk
  97.183 +OFXRdGdXLp+enY28z+U+x/VRhKS4QVDcICluGBQH2Dc+lhGrIeNLyGcgiDmqXpcZISrRc4hV
  97.184 +VmKa4gZJccPb1gmX2u5Q9YniBJfgeDszIIK7iyNYLLFXGhaEYfEdCuUSBPd1EtwwCW5oDmJG
  97.185 +zJNhYHy8ZnnCq6L/F5KtYCLth820X0L4UdNyQ0wZh6FUVHndSqOE7mSI3498F7faCWnJGXSa
  97.186 +bO0q0yAkm2Sn7rHOLNXpO4FfjF8al7/DDld/ygxJuCVL5wnt2kIcPvSzOEoX6vOD2ITLB+2y
  97.187 +hdz2POkWWrQZWNjhYIl01lb7vdvkVGn5QF16A0pj/HO0OG2nWm2yPL/ELSKkgGIsS/5x9HgW
  97.188 +cvD9HdketMbQdxb2KxAFGsM4MqrUEvptOTKmpUlHc6faYX1TfcxEipWzwRiN4MBDeEaOuOB/
  97.189 +vgyxhYsqsE5RNtDk8qzyhWPV0Opzycryw6gmwmdSKfED3QIm3CNOyv2GVdf58Km+1jE3kuNb
  97.190 +GFWTD9FCfPtcj/YlPSm20ZYn6MgyVf7TVsLfD1xTBqsW/XajgQCiwgfBGESif74MuTZaPHeU
  97.191 +KHCCrocBDpEHrqcIDI3qqTXGMkKEIclLT+2Hq23Pk4DynuPCkK6i5McNkOqppSYYPGtaLUWb
  97.192 +ZxWlC7/480+AAQDBlngrDWVuZHN0cmVhbQ1lbmRvYmoNMTEgMCBvYmoNPDwvRmlsdGVyL0Zs
  97.193 +YXRlRGVjb2RlL0xlbmd0aCAzMjg5Pj5zdHJlYW0NCkiJbJdJkhu5EkT3PAUvoDQgAuMx+gw0
  97.194 ++1YLcvHvv2l3DwBJtWRaFJ+QAGJCDO0a1Z/5qs9+9VbwK6fyHFeq9vyVLm/P12NcPjrJxni+
  97.195 +gTbtma6qD82Nmxp/59l41CjY1K+RudLaeLZrjInf0/OzXmP6+v16+FXLgnx5mjy2t/X7l12G
  97.196 +P6/HwoKj69Ov1CFbu8wGTuv5wOvRrtZ9Y79abc9f9ZqtQjifk9BxhFSyTiwtcy1XQup9Q8Hm
  97.197 +Hh8S/WowxXujXRMXAJoTBnScVxqCTpP9PDJkmZmypDKen8OQwCpOyvWqIVErUB4UAtVSD0GI
  97.198 +QSsthml75taiG2kV/GeB8Wm91GFih5oOI85C4Q82WOxNnI0mbmXEMWV2ohUew5th/nYAHk9U
  97.199 +ZmOI8z68hMUxox5F4sql5hFhmeENw5hvk0647vPFXia+MINC/gdDeafdDCE1yo3pKviMokKX
  97.200 +POF5nJWvgTjICOOhk2uXOQ7zZh1l6S9crt7bF0NPmA2Ua9964t6cv/TcvPWEVnn8hbf7oZXl
  97.201 +fE5bOuOmcVPI8fqySMj58yU5bfShZgPHHJvBDs0VjSl3ylooW4JVuvTAJZB3MrbWUYE6G2Fd
  97.202 +ZcMyGLibERqFXxgSxVRy6LRKv7Jl0oTFDUGOC7E3VUl+2EuJvY5g5dmFWwufNaDdBLsU5o/N
  97.203 +eMVtxlbx0JPlQSmTquta/gG1VOPaxXym2DsvhyX/wvz+TRWL6+wKXbbC66ZFHeozxWxGWokg
  97.204 +waYc77zx44GwBOTxxC0ZkUqAvZDrYDGoxp3InA6n4jXTyTDrpkgs+HZxxurTYb5BEzfIg1MY
  97.205 +UYte1IXHLQY1aoarTFQEDI7Xb74dkEy+bV0uaHQIBGZq1XWAyvQpkPDF95oz4SsN5vMboae8
  97.206 +v3nphW0MlipLU55RNkn21OtZhTBZGZHRets5e5fwDhPXyJiIqc/DYciqJ+TyojO56xE5qg2o
  97.207 +psioSWQ3QcoCq92rJXyInXZTgQA9vhXjoSiN8p5Zf+PpMmLGgyF1PZeJhw4aTbVzSON9VvB7
  97.208 +M9BnoBcm7IH3DkTmanybSXl/4b0ZpXC962BDagxBqgV371+Crv3/Zbiq1S9mUfUnaN7hC8k6
  97.209 +lTzBjBqEGrNXUTvXKuKIxi6R+zyK4f8e/zz+/4Se+IegqBA8wfwTjUHH39fnwZXPg7UUTk8Q
  97.210 +Zv1kD6JEr1wWHMbvTarXML1qK9IOT3soniNYV3SnHkHvh/DSxv6W7OhL6ILNcNxQhFNLZBvT
  97.211 +J70uwEZEC/LWWoPm8cdyO1TQMTk/XYyihdPeh/E4Wt922prBlGNsvXUNWSZhh1W+f97W6TC5
  97.212 +zihZSTPXfM5fFLe/HpvLlmYxn5NUGFkpbAQlNHW/mHxLSFPRevxid6cjBhNGR8irP8thHxK+
  97.213 +ZUrws2qowhKtm8yfbIlm4QV3ZdHwW87q3Mr5zWD0+FAc7nsfPs5NMxzfThnin6K9eJNTRqph
  97.214 +nR49Ljam2+A/D+nbJwtrqK62l2lG7i64r6pK0fdtbEDRkS4L4Xy5ZqHrEaOFKkqcBZUcTeXs
  97.215 +G9gLs3ifteRaYxLGO1Zn2ZXwaRVT9UF0umyTK3vmMQWuR7fQVOnebKGbDm+QPhJG9Kro6m3u
  97.216 +Jvb1WOh6yO9HtAxAQ6izrdSa758FRS92CcMC741dVT+p+V8RxFTm26bct7Dr7VkUrz8wHIAx
  97.217 +IUKPDljqhQMWbAccS3RXw3JZFfJpQGeTNzIqtO8uivB6QJs0N8J9U5o31JwF7HS7PhQ21bb3
  97.218 +RiUC/M6+hUQ+TfXW9mCo94MZaUYDxGj9cLBaFbdxDqkKZLb18RvxWmN2WbMZlFxbkvIJjotW
  97.219 +LCtBoWOZ/V7TCBW7DsSBC+OutSuE+E3A1wNtU7b7cRwsay6s5TyQoc4jIiB+wztqbYIQl9qE
  97.220 +G6JRbYiOvoMUbm8QTlE/1Eku3HGJS+64hMg5BoZsG8rqQBfG5e+NIRcOsbkFXqPj9tXB7SvM
  97.221 +YLx6vcgPB5sU/Sr5/cUsW+I2pRmbA1CPLokjm2uQZWyVtmYkUzYthsjmjmhNEK+gmhVrNTMB
  97.222 +Z84CQ00QRi/OQkOdCspfztHVutIbPs3RfzKV6FtL48iTZdclrb5dHNrAtbP/BZdu7EGVQNiA
  97.223 +gXIMH7qHJajH6+PByAUSN5vx1hpVslBe1IBVPTw083hG05c9azQYSN7bmsifTTNvGnqpva0B
  97.224 +tUQEpKJVtvFb0+O30PSHw1FBMKyY0PA04zlPZM48NOewMmGVI2M7hJtQZ+1eRbmPFqkwATf1
  97.225 +VSyKZvFtT9HhoyxyNA1qVcR0SMqslRzYtLUixxPk1QJ3HrBI64EIfMQlx75+KgjuGyPf9YSy
  97.226 +1nsVER3+7/RS22XVlNFgpWYKyYGynNkIqzGsdR5iX72+FTeNMzxpKC1P+onjWt30om1Vx9Yq
  97.227 +5I1V9gBLZxwzwi9MPb49Jb9YPQzigMM0jqxOWgVIz/xmQ3qnD7vytU15VENnkOzSou11GS2F
  97.228 +I9xlJI/GzZVCM5+dOj+nIfDtiaTfpUVZNrUyfNTDOFot3gXYcsiETIfIMfYkkeoQMpY0ap4i
  97.229 +vNmVurU3F3nHYu8qW8YeYNEuxZt3Ld4cKY8nRfwy5+Ee7/1OejevAuzRYPzJkfGho60KwNOW
  97.230 +xuumRbsoby4a67S3RAQ29F8gRbXj5fCWZXS9I7A6r7NaSnyLbhnU4pTaa3yrjBipFdSjE2h1
  97.231 +kKaOqZNPzkpkUlcyMkaDVq1+U8o5vhVH9wBSwx4Pi1fauJ+dMXHZWUUKjR4thZq5tx0kDHqM
  97.232 +ubaHjw8ptyOj8fHopEEJu/KTWjipijAeSsK4zXrE+LoUzXubXyJhomvlrNbI3jTz/KJZZ3wr
  97.233 +LmqoQYOKo4lFb4BzVeLrLYLism4By1StRft0Q08jPhV3RQwoDQVlhS9xbAxSBEkw7awx6+Q9
  97.234 +joByU3CnFm4ZNW5UqB9kyIFmpG62iFutLnfoEovVDlWoZgQy05RxCil3EqNxx0lq8EqJQcDH
  97.235 +ARYCyb4YowusaXw4rpEO+Y5eWTUsMgaSTbyIwtUas1TRMLaJ4Z1D3MU5BMzR3PchahFwfSxx
  97.236 +reSz2nfetCYaUTmnhomfh6+xDyEHJ3we3nYlcJQ276pIrKXsZxdlVTQ0tIfNnKseU23Dy8Q5
  97.237 +ajFLYs1wFlsx5Qcl1ML0xOX8g3X0AugaONqun2e0dc46fR/leEgUD4SA3JRBEmhxUyv4PqzW
  97.238 +nAfVaP4QX56jW0ZcNjZWN0euc9Zi++J61YPOC3QUXUlVzy2ySosuZyKKHI+4H5E24bCwy2Lk
  97.239 +FyrXdyfVqdztGSWsH8qUPGqgetDNSOrJQ2YxGnueVtTQc9zFFSDVaVBilDivFLOebm1hdMQM
  97.240 +aNwk7yWqu1bxPNrct9401clshrGRFalDdIOUmLdEPi6q2t8ajRoK1WhZh1yPeyPXD1lZoRvN
  97.241 +7ib2LSvAxPiDBCuBbb1R5/Mb2+/S3NoJgyVAV+LdBGdJvHLaYibOz6PAss03O1o6mzF45ENI
  97.242 +LJNPazPfU3n+y3e15bgNw8B/n8IXCCBboh7HKPrRAwTtzyYLtPf/6MxQlL0oUCyQzcQmTZPU
  97.243 +cAjL8ziCQ8JvMEzJwU66WsQeQOlcAC/hu+fE3hUwzK7EGdDXcJ8Mv/nI6IkLZiElBAxTTsUL
  97.244 +gW61PARGE6NiNMyLk+F2uORzwgZOaRE43jQXsXA5FwAXq98D+44CNMa5AvoSLe7FOWp2rZsX
  97.245 +dvVRqpxO9QHUPcFUH4FCfUycJFllSpoGU+3FxI+IawhQriZNe1gF5Lh/EYrOgVlRczGbOIsu
  97.246 +wPaTZa83FRZ4Rme+zc7ITWy4VNiFY/c0ylw1BI/we7McmTjkHficTYy3Mg4JeU/lQirHc5sw
  97.247 +EmEorBJhcGyoK2kZuRGgvIxULMiEyE5MxVTkHUi7TVKYF+pqpcCnxMOLrkSXp4ScURevngUq
  97.248 +6SamytCoif7uTrvgR3BNoNhLAjcpYVhqNvmRsuSbZxw44NrWATTd13E7n1+9tYfdYnd6eN0w
  97.249 +7YT7kJ8K9jHqzSky4HVVrXTfPMNaK89biThynDE+ukeN7XDmc6R4zwULl0c/YTg9gdA1NXvK
  97.250 +hCmX9eLM3FxTgEZdK4yqWq6LMxxyUVtVBFfXpuh/bd/w93vnxE74LFjg7GyZzHfwDd8bL7y3
  97.251 +x9GwgGFScJx/p40uIKPqoU6aGvufn9uP/fPmrx3YPhBAB9vYgOhbDtP+6JDODGs6XEZo5CzK
  97.252 +ZP3KZdKSspD+MSgwwBpQCoVWullwg8KilCXxX/gRdVsPvHuoqEJm/7F1KU2WC/fwuFw87j7+
  97.253 +lwXoIqyUesTH7VHQsGfH6lKgXZqlcYsWB7Nq0pv+2eHsQx7GYK450HNjCVMN/Noo3zBY0Apd
  97.254 +MPmyASMdWspzXx/0Paspntv+V4ABAMjGeEoNZW5kc3RyZWFtDWVuZG9iag0xMiAwIG9iag08
  97.255 +PC9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDIyNTY+PnN0cmVhbQ0KSInsV0uOXDkO3Ocp
  97.256 +8gL1IJL6HmMwizlAYRoGJj1A9/0XE0FSyvSgbPTSi4SBsiL1RIpfBT/KJXpvlwy7f8hVxgJY
  97.257 +9f6hl1iL9ecNaJrkjl22uNN1EoxGoGb8rl7V1r1e2uX+IJRRAYs6tGt2A6xzuZhGZWKD2lrV
  97.258 +BBAjV2917wlu2HGq1bWBAUh8SIjTxffmtLtcTf3+HTvl6tb5oV2qkFWu0ql6rkkwKr6EZNdS
  97.259 +S5oQsMMVuDNOzPrEIQBqK2SLC+lwYLkMegCkTAj5doN63LBeC5Z/vzW4ZSR6AI06Yd0ogfro
  97.260 +RKsD6aVQv5FcA65S9wP3Sm9AWvm3QZZeNga8UbTl+vNWcRVLBI1T4JGukutyNcjgV0QfcW9E
  97.261 +ZLjNClPsqu2ATygdEJ5QPc44NRF72SLoYPi+O2ilYmdACYF0am/j+VlT3xmKjSq+MQe/qsU3
  97.262 +1orvjLLdz9iqvlbjd21ltKp/N+LmbdAbGoem0gHTbIPPG6zqkSJCV2ike10ro0LNg/YiHE3d
  97.263 +MYMJueZkcGWvUSKe6YEQEWG0FOlnzAxDMC2W1Gk1f4cXJ0M0Ow+ZMqgMP1NF5jWpMlLs+ws2
  97.264 +fP0gFizoAPgGqAzfVSTRRgU+cn8Ehpm4xmNDXAEXkYHCawADOSrd6ykAznXE1/YejGOJ9cpl
  97.265 +hxqWvIelwSRChdlCgxbyU6r7LDIFHyGdPI9ovbDWxhaM3+DroxTH7eyxYlwts0E9L/H5dKuQ
  97.266 +aoNQGvYQc09F9CKsqzvXQxfIvKphOyJqNMkzsqRmXn+hurihjacCqWvwU9VLjpECaF5Zs7yA
  97.267 +SLyyM7lubS3rRF2d53aEbKH+2o4nFSaMjgJbadYXOMOP5H4JP2zM8Gs96IQ/cBS/H51G2AHp
  97.268 +U2YCsk6YjpIAp+AjOXsImJvJlpogGoh/OH8wOnGWJjz/NJrBjSILq584zWxIwC9gGl3Ry4+o
  97.269 +6gHeNifCJUJw4JPyAeFEGgPQs2txbf20SSiU5UmLvnXS3D3Q0fJfvNPhxLH3hvdihe4DYAJc
  97.270 +hQ8DsnVE8x77/fJKHRDQjkmot+hj6Z2Dwx14QOYVUY+mcGD4R4c3ypRGtPXEeieEo+0aB9EL
  97.271 +sLRT79rzGYmyBCx1V6niKdKZ3QCgeh1GN1DShp7dQKs/CtERlG/8aQhAiFv0AzX/MYWjol+a
  97.272 +kKq/G7mnqYv9AEB6Pf1AYVGp2Q8AkDneDrBU78rRDxLuhqDlCoE4inVoZj+Q5fm9G0LC3RGU
  97.273 +7X/s3g3QLDvCAd4REp3i2DiyFojP9g7/wiP7WhwHR/iVb2v9Cmf4xUOwww909Pj6hJ9odwOA
  97.274 +3rMZ0KG6Ex6gl3kSXumVnf8A3W1kO0iw20HCp8WJox0oSdqxWOkyeVr8xGlh840vcFpcPSu2
  97.275 +NLw4x2Jf727g6CQ8QXQCLJunBlsBAdM5WwF0ld0JToq78XgIXx3T4cC29/q1nI2xEyTYnSDh
  97.276 +6QQbZ4X2TU3clI5IvLwOT7w7wR+3f9z+vIO64R84OGurINlnRVDIwD6/37jFvx9TmY2M9j//
  97.277 +7xRqtdq81zrgnPo8NIoT35JHfjy0cGjyEIg8y+acAktmN2MxM/LlDm7xVOsftQVeBFfOinCs
  97.278 ++1//vv3r/t9X6YuFC35Xm5O68ZQewj+e0j9exaN04WqX859XeRUtcqGCqyGUTNfnbREIz5HR
  97.279 +etBSDw57CClm1418UKilb/zghDHoHq8/HwfackYebNeJyOwr13Yt8SHiV1NV/elUVX8xVc1f
  97.280 +TlX6OlXN91T1nqreU9VvOFUVec9V77nqPVe956r3XPWeq95z1W80Vwn62GKzmgX9ZckPc5UZ
  97.281 +974YkUTYP/D+gwDhFHj4c+iI8SUnJXDemGH2oPX3hiQR2oZnGa2SI1h7yg/xW/qPwn8yIqFt
  97.282 +wkWo7YlI2Vj6aiNfcouJpyxy71piTOgk5a3YBvRozhOEA1R9xTmSQjTA5oNCw2iDO3M+QAcA
  97.283 +JUSwVsupwSGayYND0MAxpICHlBMSvgLkWwQA5tF9GEgQFNGHJ8K4zGPDvCjSsfRtQqgL8472
  97.284 +4imAjrycS/tb0PwhA73Bh3g2ndfP0chlzXJN6t7nSvTgXOAsp3fzqaM6KZvmA9+IAWvkGjJX
  97.285 +kGGi7ny0OdcNHzLJJNfkuYrcDhS0Fq4tbJjsInCmDxIxB/gIycGGpBtmxMhjdKs4Nx54MKFQ
  97.286 +vE83yzUHlurCiJj/DIvqzDVyU2Oq6WT0Mjn7BKPVwr9k/7iPhF9m55sY9xX4gUSx3WM4KZ7m
  97.287 +e1Sh9+F7jni+4nuD0Jmr97mldF64GgkIpxBS+hmTCJ+YinCh8pB+Cee1GpNWcGKvW+O5jXiX
  97.288 +OMI+yhPqUxzXn6gf0ulAw9tNnNjrkLURtcSJo/7laskXPak5ecBn7tgeNKpNRjLZWCtE1XMJ
  97.289 +pwpS68CSzyeD4zAY/wqCykcQ1R/MfbaRwNmk9Lb3eJyhsr3kpGtJOoWPjlXfM7esdqeYOjdw
  97.290 +Y1obe4+hYTgnHMIruYgyVnD3vggF9ydxd48KKiPZ/8uH5hJXW9zT6gVV/EM17vRp8SHTLVKD
  97.291 +YBDUGhJ1eVq1VB2RQYWwFYvtaIj46/KMDRK2RKyYXXBWoT0ynJaPRg2jjBy4pvc7CiUPw3ot
  97.292 +yTWqSiQ+mxzLelBqcjxS4kU/smMHcMUyzx4LZWR74IU7d8zd842MskMzG/NeosrEuSaXcA7f
  97.293 +vsLfq8kGTN+W76TzuNY0n8nCp4KMk6RU2DEM1Uw2MCVBPNigFrnHi7JBMV2CeGJ7JPEU9oi5
  97.294 +nI5wFgIj6E486TF8HNQNfQI+Jw1wajR0beEcxuypGLNnP3sSurQ1rtnAIKFbcEESxMpXjNSv
  97.295 +VSrzjoNMWLxG9UJNiH7sbxp4IBkweDVjuFJ3UQRs+tTIFu+x3LC3Fuc43maUlmctPXEAR7MV
  97.296 +RJMw+sdjQwQHYgAiwRk2KKi+Y5L6HAav5cv2utwxh5wddfwXUW9tg93CEkbd+yk2OyRVkHmJ
  97.297 +KE2uu1isnTBabbmj/powugewc3ze7v8TYAB5DXT9DWVuZHN0cmVhbQ1lbmRvYmoNMTMgMCBv
  97.298 +YmoNPDwvRmlsdGVyL0ZsYXRlRGVjb2RlL0xlbmd0aCAzNDE1Pj5zdHJlYW0NCkiJbFdJjmy5
  97.299 +DdznKfIC9SyJ1MAT9LrRRyi4+wOuWti+P+CIoPQyC23Uol6kKIlDcFBr1+jzWa9m/fn1aAnL
  97.300 +5W5PgO4BYAugXqt0glqfn48Duccvm+3Hp4QA7Zq1nQPsGsV5dO8H4No8LaFdvbfcl3AuSvZo
  97.301 ++A6cRDDW06/SB7fhozmg+xPfzhUs4zOq5TeE+jVG7JV+hb6rn2+72tpihNAIun4dCG2tUnTZ
  97.302 +PHb0q7Z4OWJD7Pn1sHl1Gvz8vj+3K2xcq50jACaOzcM3yAh8PjY8rtjQr9kWRStM7ThkPq1f
  97.303 +rcQG2OfXguv3msNP+G6IIr6tLIAye8qVQketGE+DowddA9/g26Aw3AjXQ86wgecVqG1gAmix
  97.304 +D69XrPq6uCJA47WWlzUE2coVWinDKFiuYbxtmdbIFFxdgyBv7jXlKi/2pkCE4g8vL8R/7atL
  97.305 +GwTeGeYwBeLA0Xvuq85Qd59PgtV5w7oBuRncl5D+971v9UPTgBPuwC9w4y0DNmSQyrXq+PF5
  97.306 +wl6uhsDtsMMwa/voDfLaNNraZrb2eRAaIP04ksDwr/thNqJS5+Y5vl0W1nUDBDSlfNtHv2yY
  97.307 +GQ5gt304e1i77TuQe/x6/zi2gaN+9hq4fJuW4CT3hjejD5zinJ/cJv9kZuY24Ootc3tTOA1F
  97.308 +Krw8AJbE3Av9mvpGbu/vk9sbntzecKcfy0M/ZoBMfbxcsKFy+8/H74/y5F99/uvxj9/+qM+/
  97.309 +/vv4N1D+NhGlhRLUF3Y1KPH5LfnvB0pleg8l054f42pjJGxvcNcYfM3LRxILhkFiXuGiJiRe
  97.310 +6NcDTIVXPmAAzvl+wRnxBEBl/GAV6wQIC26qYjzgHLp4UZC6AuBQfE9+9mkSM5PYLANLdBbA
  97.311 +QqiQkl0rK6oEh7bF5BELfIeSpYJzBYkaB30+gK3Y22qvSxtxGtCYUpJukOxqUmw2rYZptTtQ
  97.312 +RQ3TlS0Y3wpOux/8RWxHpSdALVLCbXErix3QLDQSuDU5FcpLB+i34KhUfm7w+WC2O1FBHcJZ
  97.313 +UAq7sDTFeXi6BhN5QzAWeT1BTJyOKguAg2AZQJHggpuhSPZYeL4I4EZdnECZQD/R94npCZ7Z
  97.314 +VBqgviVifZY5yGfAOSotLzN4Yy1CTCKgPud2Guot8GJ5wAkW1Jt0III/PthGesqO0oijSHag
  97.315 +xn2wyq83RBp+gpdUcUi6w45v4amj4XKCKp9ExnWGlBgZSeAmlftKTqTLHJQWX4aQbVlbMohx
  97.316 +ZaHtAr3eLkyUDK0Jl6gsBVx8Zarf97P421EOoPaj986utElWIuLgInztYNC38Ez1Gssjccwf
  97.317 +2DLggcpe6a6MFL/DZ1JBAc+SwBDT7AHJLoR0rFMjj8IvJ2yMKFZRf1yWDrwxeUlsxrNKl18W
  97.318 +6Y57MxIowp9UcNJLHBCGFJTx4k4Xv+iKNlPUjzekv5lWFxowkav0NA0SB5+6VVH5mSHv2BW5
  97.319 +roZPbNKxYZ2oifwLrK2Mkx+fMwoNZWLNZDG5RjwtAxrPVlQMeTYICTSGZeQ1PoJQLWmBQ4Gs
  97.320 +bwYZUR1+EKyIrBvALEDgUHq9s1LcjGL9l+zG0XNVriqmjZ0kgVvPoUoUMgdoTkk2EjoQnGRf
  97.321 +zqcguDLSIi1hIYX/OZiXqpVxJnPPjRMMAJpLhy4QvLEWmoqVNAX2OokdIee8P7ODLMn21bOo
  97.322 +WspqFSU4ulZZEVCuMQQ00nGqsM8tW0NV1iAEHYJJjtJIP0Mjk+xIHTgniA6oZzTs1FyGgP1h
  97.323 +F2D68V6rGARrkmoKedd1I1omRYRWncUMtd6zGyD6RFVmWbI+NCUTmxKGTVCdDmQAMLwC2IQy
  97.324 +zt100Gp7K6sGD8b5DFi2Nmnuu89l6Gz21xprqrreEkFrPW6U6Oo6cnZRMrLrjrdvk40vzL7E
  97.325 +faFw1CXZVWVTiU30mbJkCn3MEpFVh/oUUWDF3DyzniTQSaUomWcVQ1cVGhr96RCPLP2Nqy20
  97.326 +kz8CFbYXUGuoqC3sFWayAfWUbSxxiF/RWl01ZRt7BOZ8BgE9d9SkMMMXIvdYPSO9TPnkoCxj
  97.327 +uzOoxY04XqbohiNJsbISGjKQV1QhDkpSoKogh+t+yrBUg9zSXGj4pmWJLM+IAylR/PTqw+DT
  97.328 +yRXt1yqJH9o5lRYcEnhuiUyh0nXP6ko3jR+caJvSzeopeiqDdF2covqBs/BIYnH7zz/vtdOo
  97.329 +Wr4LIaTch6xmY4KU5qqesFAhOzubYuKibCgojXgfzJEDWj5MqBkUaLHfMzOUAotDdsnuuVR+
  97.330 +8KpqHJ92YuMhZWwAexFJPOrZCFQzdfLYhlSYcS4F2lMpFToo1ZWssIuWZycni3Wfi2FsKJv2
  97.331 +rZyC9MyURnD6eKl7oniMydVjaO48bjjnHiflrceBqdFP98oPZfnL3S/sRTqV2NM+QW3auqzn
  97.332 +1toVi8KURvpknBooSpSlgRFOd6cLe+hRy6JMh5rQyJk/h3DgufoZ0YFi1TO+yy3+Gu6Bfb4t
  97.333 +jqyi2shXwXw7FqUyXyC8FB4sUY9C9O58aQvY0jLaYvky23YSeXt5gbjvSVSLw473Xih9fTAf
  97.334 +eHlQVxWZ1u5j0VzrFq2bRut59OFc5EdZjosrRUtOsxOt7ViJglPW7QNTuZUP9kzqmRI+z7x6
  97.335 +PHum1+P3vbpjsjfuiN3H7njuS3est0KbCUfdw5O05XAo7TwM20447EsPHWam937yFl7wY3fB
  97.336 +6rdwDsIFZQjv3r6LKydSAFtKrgGdgMaeqaciih5VskSioNu42l09AYbFW1aCanZnqaFgzPuV
  97.337 +ZJw15uuVZCwuWWs7FyMTmOXdaLdSPzTpAre0BREAMHm+kWAAkXHYgj72oN25yCcLXYtjXohl
  97.338 +JWUjXiMwdF//DzuJ/A7ZSolWHoYeSTQUmKr3ALHnEA/SAmX4FzofQTa5uR02+jiPU6A+xDGM
  97.339 +u8bKmYOy70Ot5Gi8tFq9HToyRN5fZGUI422RjywexDRjtxcROEpLtObja4VkS9nPRCgL0qyx
  97.340 +XZCcIrw9RFXm33H2uK+bgwf/ejji2zznJ7ISOIomrYqccNM/zkRomkB9aibqi13HOcnntIJY
  97.341 +u+tNwHkEJAWaI4NDGvhutq6W5JyF/FjsPYcVNnGK4upk4cKU5hzkxuGo59S9e4xkhavMIuJ8
  97.342 +lJO0sxoGUT8qLJ5UUeKkwhhCDWo6020lailb4l6ERUOXcESjYUUbh0ldlIIcGxYyy0lGJVi1
  97.343 +eEMuf2VuJ/y6YWW6wZdlSgM+FehpDvVoomVfUkhKlmB5etDTfItN6c6RLZF8UpiOexV05jui
  97.344 +aDRy9Peqc9nWITtzFbeiGwCtuT22hNLXVrbsykhMeANoZprwOQvUSz4vm6Vssww3UgI6RFLY
  97.345 +6RSkVMmnl+YcxrtG1kmRYWYL78hX2rYb+kw3hGXXq4pEj+zYAtby4eWRopbvF+IvahS+/o5P
  97.346 +ppw8OBiZEZk7SHpkd01y/4/pKkiOJAZh935FP8Fgg+1n7BtStZVD5rD/vyyS3DOpXEYxbWMM
  97.347 +QpQeTMjBZ1HmryuqlEX2i+QOPPmxVSoGntNVZANodvqd5NKAEpfrFf0oyupUjK2iFBhs90dN
  97.348 +BLJv/Frd55L1MgHeoHxIhiBCxQHNwNW+qBGsAvug8tdDtgdHsVa8w94rJtjnCDIWHc7R8NMq
  97.349 +MeCD+iPKHv4lEcYk+huLomHyLktDSiUF7jlpmdZPFAYxJCFi5Ad1xs9ILbFPxIjR3UFjsJbg
  97.350 +GPp2uzpQhuLJRB3d5REomDphYJWjGniZCH38jBO03S7cGME2JWJxivo6O2KeCDZTv3RG8Ajn
  97.351 +jF+oU408uGhrcycXMUGNYN/O+SPYueCDqKnnUnznw0wBds0PbRV2McpZbU7bPhkVpCb23Qph
  97.352 +cteFm1UgN/1reP03Ot4a9czBFe0j1+Fhfes8jBQygWZfIhid4g/34JFmPrwU6tpv1kJwS8s8
  97.353 +q5WHkxzGBKycbbSFtCnblC7ViBFo0WTDXa2qEPmjQkDxG6gN9gRIp0JbkU5/gHNQpeWOLsll
  97.354 +WFzONGFIcIakJ1s0PCDbbbi6U82aKcJmUBm4TlkRDwbnB3hLL6LGeQ8WB65TKJta+zxnLMl2
  97.355 +lD68U4GCVx6kCU++J+kGTQ07aeq1YHxMTBdPqaeJuhrTjUmiKRPFMdd7BEWSoB4IC7Cv1Hed
  97.356 +Dx0iQKWTSx9OSoHKmLWG3NlEGjIWZeb39ff6c/277W71Z/cMdNR9pyOVkHKvCyuvq9601fZ4
  97.357 +Z+bUqDKxUiTq1Ov8/rqY1PZZgvQzdTqH643jVtlVCtfD135HFBUbtwqL9EUDsGkyBMT5p2EH
  97.358 +u6Y3ieccyuohW1/EI3XgpG3kVkWxAnKYHN3ad5ryMLg6kex1icWsXnYuNZx5vcQVzkV+bxo7
  97.359 +ClHasBL0b+d+Q/vhSVFR0icQYF9XQdUDOKcsJZ9GpRg24UFBIWykuSOmikMkswZ+hyLrLWiX
  97.360 +kgkj0SY5hDkrs4DmKtuDhnNSgltRIi5HSbCCDwIFUzwYXS42yswMKpcMTbOKka0DGPrR4sks
  97.361 +HCQhkUH6z9gSp7SFgJY89SVd6ipE0wjB8saox301HwD+AC5NCKn3P82Gfa9cWJLnBgq+/wsw
  97.362 +AMl9eIMNZW5kc3RyZWFtDWVuZG9iag0xNCAwIG9iag08PC9GaWx0ZXIvRmxhdGVEZWNvZGUv
  97.363 +TGVuZ3RoIDMxNTg+PnN0cmVhbQ0KSIlsV0tyZKsOnHsV3oArACE+63HciB60J2//g5eZElS1
  97.364 +7Ul3pdEBfZJE+miPNur7R3/0td4/6mOb0GiDqO9x0OcbsLXxslr7Fir4sjz26EQ+G23LY67A
  97.365 +Nrg66o5TCPoIUDxMrRFq8/KocWark6hsmZY5w7Tgmw977N7fAXojmHM8gc8KywutxTZVn1Vz
  97.366 +HdGwaXvsnec37Aa8hnHVthFN5qVgv0E01s6wAtaumJ3AvUc6llCtmSyXaR9KrMcZnUfXx6xC
  97.367 +PEq2ewWu2qIN7dtaj+21T62yhZt9EpcyFFJr3HAhbIa7WmxPU3sMVpNna3HZJDKVmL9QOJj1
  97.368 +R6R6WSTelSPv7QXVnaYNWyEJ8IVVQDFqnGlYWQCr7PByIJQWVcRfd31n7HKujJUgil8sYVG1
  97.369 ++NHC74W/4EtGQuLhd0fECGYaV0vlb9GplA6jP2/jMXCaKzNfQF4E22jv49F2J+io8XgUpsDB
  97.370 +XDrrUWr+195h0YxgdQMoLAgAidIfkwwVAltjv4k0gZ6Nv72RpMZ1ngSECmxtYPjpQxvXPmTV
  97.371 +m27aBsEtb8DC/nYu5Gguu8rtWAjuETTesODvKfanmauIFTH8pau/QJw5e0DeVTgHFwCW2DFR
  97.372 +lq768YQaEccdRh7xc+W9xO8dN9/MlT9lCffZmbJaZefOZOpmdfGQhjYUC+nDdCnOiduDPNYL
  97.373 +aLhR5ITjKMLgb4uTuB0K7HKjLq4M131Yk9UeN9zPpMXJxXq0Hwh74yYLLVW14OYtMFPlNhcw
  97.374 +VXUs05bT2oF/Qb0Kisa13KDtV+DQH9wKULepcBP/AY2icseNJt5x16AxlZQX6ritQDvY4M5U
  97.375 +V8qA/IVaA/CLTBNQ3/OZQ+DpL4vbb6DVbpEkq8BtxplDqxaUM95AZNFVw+AtcKrJHlp1Epzs
  97.376 +0Zd6GfBHt7ANnhlDIZihWE8U+UpT4Qk5yA8R0Wp3V8piOrClkoWCk+4gawwznUVG5wpbhcKH
  97.377 +TLYKs6qiJwkVHJ2RL6WIOt7eM3sQq30zKyBDpf2sVR1f/RYLO44VhVUpqZDvp8pVKnE4kEp9
  97.378 +CIKYtkwthB8m/xLr821DcSSsOOnr0C7g38vCkMfAY/2DvenhcpcT0+LFGzpob6FWk2qtC5eh
  97.379 +OJ3Cz+eXuQGLAkTpWugwJJlCtbUnRKOSqHrU11KOcbN21ANXslIW+bB1v7+TDUKmK12voljV
  97.380 +joyfuinRBzaJvFfRZq5Q6KbrsfdTvRnP3AlP6K72hGny3HRHOcjYxH8vdokGUauh8ARtP3Vh
  97.381 +635dXUCx4jHhu87KheIjk/uE4foOAjL1iIQufSVEg9HkwHrwYAT5RFfC6tZT+QPDMxT5mn+D
  97.382 +phwFDL2pKBGRK9nsU4BCQlJ8FloEuyKyWW/qC13buBMvAg7c/WKgkVrfheYOFMVOzKT18H92
  97.383 +5XQWHTNmvM46Rs0QwTzHtHiGF1ctigFVA2BABLum81EaJJxhzkMNAPWohyczemB2ADhx4sZE
  97.384 +RfEBEEmoNyFta23xYGyulmohq+9ZT8hkKFHAWwS8cH38xKeGf95ak2Yllaho+WL+77+7dsjS
  97.385 +2CPydrJnoSnUClcMnoYxF49iNI929WXfqW6aprF2TSf2sJdjAh9Stq1wDysT3hAshOQHPiEf
  97.386 +++/4EJO4+CEmUfQcJCZQ7fZkJnDLyQQ1BurFDjUbCdSf1ARe/WKjavVDTaAaHU9Q8+BDTeLe
  97.387 +DjX57ehJTWy7k7Wipo7xQ822tWNQE8DXk5l0fq1kJuMMuoOMbSnVh5mAFlwkM1GNHc0pmQkU
  97.388 +nwUxAb34ISYLV/K9fz9VPcw8+NYBPZbtn/hJTWvq53+lUK4dCpmfVtNEoSd27EkUzQO0HGDV
  97.389 +GFOcIkwcXXEBH4ikyHXqu92iQ6ktTHcoSkfKDe192JL3QC30bVBoAXOGZQ8K1NeTC2gUlz+Z
  97.390 +Arz99leGux48IseALK+6unkkce7TQQHFd20JjCHTYhoP9p1pjfklbsFWPDa2IkF4asAUY8Vj
  97.391 +bOktjlkz9K/KI7v0kPN2uWLs0eMlRA5w1ooBAxQ1Np5Vj61ZmCYuiM/Y1WtgtUAzmoIVtujo
  97.392 +TQ0EWyAWZfR8+dOB0xUwXahCQObAokVg7pZC5yZbyVu41BI/rU2TaqAuAHuonbM6InW1qBEb
  97.393 +yApRNBPbhZo6CFNfQOjqEgcpATQjZEjjQUFKPr70r65oMRdpOjV9cWvkneUcSsmI4vYuJ7qt
  97.394 +CNRWONm02nbcJhKcnJHsVzXawCUkukIzkbG1ajaSp37ZZIqn2XOuoLQ8aGQt6D5ePeBN2dc/
  97.395 +aky9vueFa9mT/nnrK27vmVSIl67kgmgCDZHcOfOtmCqhIqp+J5UlOfhrx+1IwuEcoFrqpV8H
  97.396 +T9pd6+eB5WfgoteXPS3eozzRYuhKZxKdtvCJC0h4vqzK1Nk3Wl3Y5qFFtU5/yMbr62HqCSQX
  97.397 +M8b8LjNwd4305JGZuXTnn7zKAanHzXNi0xNCNKXChj/CvVLESNfE2kO3P6KfJYoKgQqdTag6
  97.398 +x+ojMx35M6glkI3QoSnkMS7GnAc87ivZWapx1A1JSFUK7QO27i+r3p9fDkhVe9kWPI5mT4ci
  97.399 +nXGKHCLj/cVd3IiIjLFQI8YNE1enzpckAFu9KSJaN32JbrIvHjt2MpVCDuW+nGd2urCSRfP9
  97.400 +OFTVPB13eZUyNAWDq7ZEeQUaU9ZJwxkgT5JigDwJ1H0+2c3LfVIfa1GU/CordvfMeuaJWev0
  97.401 +JplwfU2aZCRJoYwyCXZzkPTLDF2qKnv/EPfzzQ1tDtpkcf7rzTH9cVKAY2hJ0VxyOpSSAvTK
  97.402 +MSXUGrBxfoPyONcqpp8QQoACzxG+tzDkTWRfiR2hW3w2qFr8Pfik+NCGIWkcV6vWUPEiJSXw
  97.403 +23tqxx1zbvQsB5+e5th/x2duc5zxGz72nXPIL/iel/av2BhhgyQRoAiIagfYir1SngF7Y08N
  97.404 +b/kbbzj7a/4ehXmebYfZNNZgxxq7ISQY/3rVi8PUR8bULiNjWprIOorUVKu6dgIlrK/6XJsg
  97.405 +B75CJbL6TQTk++FTxb5TQeIzFTjf7OesmvBmYvBH/4lvJdL+Oz5TAbHfqYBorzMVODur9pwK
  97.406 +gGvMr1QtIPN2pgLnSGpPvfMdjU5goB09G6cC+hjNXkwFB5+pYLCtqWcqIKqWUwE2WvtlKtAx
  97.407 +/UwF/pxtJ4Hn9KqxwNnQzBwLGFrL1xVBrzu8fjIjbfbz1qIaa8wzFQAN38+xALjH8EdtYOUi
  97.408 +l0j1KesZCw6+hRgxpXzHz7Fg8Ka3c2m+Do5RAFlqEs9vkC9rbYlnO50msIUS45qghkD87KNI
  97.409 +DoG8CXGi/KTtXNGHcpX9rOfzDuBolc9bD8ghI9cgoP12pUAePUJ0pcPVkPNIXJTBVle2juIO
  97.410 +NRYhuwPdRHas8AmoRedIvSVSo9ak++OOVnzhiGboNfY7CFqosh58JAiez99w0+v4iluEnW0f
  97.411 +myKiaDvXnpGFWfXmTJmOeIAGXknmK/rXvneYutUzDgB1k22TqRUxgldRpjUgLhZAqdm/sl7M
  97.412 +zXn+WL7hzzWqIT9D2oGyYe6FLAQr9grnsCcosv7PdBldSQzCMLCVKyEkYJn+GzsJI9jPeZtk
  97.413 +wdjY89Zki0XRHID16GIHiAnJikdc+bws+RTN1/ZJ0sV77FPcu+1TVAIl/SSNL69+kuPp1k9R
  97.414 +TVLST1K+/egncdar0k8o884IBmUe7pUEpX77+RVltbrMSLP/+Cearz75J5RwnwVUhLgCCl7v
  97.415 +7b0CSo5vWEBJH2ABhbpsXAGFRo+0gK5VeOhHFY6vpUju/7WBBi+i2W2gJJSslYFeloGS5rgp
  97.416 +Rzl8xjVQcvawgepgENtA9wpc64rYnBsVhOFSJ8S4lQ7NSFXba/sd2z8JCu/xzxW5af8kZdmo
  97.417 +/FPEEB0BFcP+KShTkH+arn9qdTWwln8uTjsc2i6sqLN9xrzypzOYsH6KnmH9XDnTr36So+ZO
  97.418 +DU3QfGHj9Om5RJWn0/pJguVTyY+f/9cJ1GlpdSqqslgt3AV35RNZTc5SZGbZ80YR9QrMV7TL
  97.419 +dejkyfGsEoXiQBrVrxhEEt5VK61HPbvOhiX6rl81nLg6Zs3J1heo0X6nsrifMwdADTp+SlLt
  97.420 +PM3JbMp6kTWRmu5+po9U41j/yb2kYp1VkVM0soaY9tWjoUGFe2EZkLCCoGlDkGubo9WT2Uob
  97.421 +n/Wd3NFr3yHP7ZfBzPCbTOmW57PK1r2C3Xw4e3g5ahffWSybhVbw9y/AANF6dtINZW5kc3Ry
  97.422 +ZWFtDWVuZG9iag0xNSAwIG9iag08PC9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoIDMyMzI+
  97.423 +PnN0cmVhbQ0KSIlsV0mSZCsO3Ocp8gIVhsQgOEafIa3b/iJr0X3/Rbu7gBc1WJlVhvMECMc1
  97.424 +MMurrfn5w17d43OWVxXA//jt1Ql8zM+vD+AyK7H1z1ivmdPKIhgxNvj6AGz1+eQ1JzUnKrNp
  97.425 +yRa0nK/lS/v19gk0SxDRI6BwIxox03Z0uTPTdhSs66/SZNvpgMPVNO2tEbbp+shN/BWY8aDl
  97.426 +nqeawJxpnz8/Jub43PD7wB/t1bHSO17dPokatu2valMIRkADNOXK0w7+Fu6VuJnYnXURWV8X
  97.427 +Yd3S9lybB2suD9RfvW7utdEUsOgb6OitaNMJPyPwRw52q0StzWcT4DIGcbX4jPGa5LCC5nHR
  97.428 +oenB1jpXKlP31kYQdUjiB88bue4iSdASrlOXsYjgF7ytEZ/4XXoqZQzfEGDVIcMhfmxpmttm
  97.429 +pOUysAGQFsqrQwskq2i/WPFc6cbfH/98TKjQ6znNT2HTWSckMaHCMF0y/AVqUxdTqq4Rp1nC
  97.430 +HR8DXOkiJuQ8B4ReL/cTJt3ux/aaOMeeB45TG3tR7DzH3RKcM+y2OxtdhV5cavs8MxEy/qxL
  97.431 +Boy2e1OwhhMdh8jv9fZwf46yP+5T7ombg7vsZmhvutnbDv3CrVjwZW9cb1yVAYAqtgeqlD0Q
  97.432 +CazgqOXcqmsJHHEyUISQDQiWAsT62FwngbVq1eDvFvpN+kltRFqupdsdq5MEm7INKmcoUyWA
  97.433 +6cg8dj/OmHdi6LTPsoGF6t00cMi47oRU/jiLwLsHYbDEPWNkcFwCgBEQhx6idanb6BJ98Vi5
  97.434 +Emf68UfrIo+1tW25K69MKm6S0MTpj7PIs2MfTEdBbE+ZWib92uKScPL3oSiz+6FPiX9Tu0vC
  97.435 +oT0/7Ruxowjd111Td7n327e8fdkauJ5ugexzpHb2Cbew7vm37PxIZEtUzP0i2K+PVbFscrUq
  97.436 +BEzsPQuPfwLVkXR5I/KkspWZc82TIETywpJmeepJNEq/lAC2eiBALVkmB0EWvppmZplqm/FT
  97.437 +6bIbRYbFRF0s6mwZMqg04BW2lmXCweE7mqJZONUEEXGmKRAN96t1mlTY6l63K2g7/hBNZasY
  97.438 +OlXJEF6zpb8lFCe25KFlMNbIg9XMer7PVl14QIEkpN/oI1s+ntgkl1VhHPCfPKMOcSbKJG9h
  97.439 +F7Ix8hbqVOSarqg1Ob9INFCm2hHMbAvFcLWDv4VN5dRo3fI6IVFclVxqN92TwTpOqV3UrzI8
  97.440 +RVIkSVZaNSQryzf8g1gW+6qVW86LrvouNlz0nojLT1OtWtR6yQFtiZKY97urpx1PT6onH+4n
  97.441 +1QNJCSywPKEChZV0Jh8RqgoLV3TYMUn1oAyML9TVtZB0VAAL5PiTWPw4MhF+K+QRpDBZ7PT0
  97.442 +baT62c0JB20njpBU4oArMmwOz/Eap9vBb89FAydfI1Xb1bvCcmA4OyxgoL60TOVvaQvX2kZa
  97.443 +qvg1VT0gN10XuyUg6/o2vKdtyTrgXSuVlnpHh0gkbcWxVB9kg80iHf8TQoDRDlQhGIh2omg3
  97.444 +qAK9qsoAxSgKospBdAsEoVKY83a1q3VbijuUpS7WS5Fp72LZqsrSqJZ34F0HC5NtS0oUfuyv
  97.445 +21v4oTcft26ulf0fVhLwyEqoVaGBLo9s6uMucDOkCeklOfi6+jkUWWEC/NtAFuE9EFJAgZ4E
  97.446 +szvjC4LQfT49ODYY2QBnD/4PFgBvq2VvE9AsByS+HPjWQFv9xARh2Ok8iZT9Tl9qhXI/XSvR
  97.447 +KKejtQJB2BOHxLXdnotw5FoFZ7CC6tq0lM80h9qzsa5IToQ1BdWmkB5uaIWtbuvh4i5a1/c4
  97.448 +XXkuHqFaUVqa4/arfKFLhKi0x2/Qhj0ev9Gax7x+W7n5hH4D7p4z3TbmqXXdBtytJd02XFj1
  97.449 +N7cx4IyD7bax8s/rtrGyjje3ObBUAZ0XDtizz0BVEOpZnJdv6z6UwBgVCVXarfZ3WEe75vHI
  97.450 +RQf/64CrQftlwDdzq2cb0i1hNkxTTxMNFBX3SOvZ1D8NdByESr6mPieto+h7jZbXUnQ8T+uW
  97.451 +TbnNs3at4sqgA0Ibu/vQ/a7cqqx9/WO+f23ZV7BqSxvjra3hAOVNR6u0tLrQIuuE2XqRk1Ti
  97.452 +quOdtZGe/THw0HgHfAdO9f7QOE57dGhExk6mIq3dHxaRv7ckNotM4PGwiPYz21SxyJrzC4uo
  97.453 +LdmmJYsoLtUvT8gzXt9YRBrqz1cWEH9YZKLt7yy2Xc1FIlP2w2E7DerhcA88lDn8an8ZeHLl
  97.454 +zWw5gGRnyPzKvnXwLfbgXhlcTW0ki05pCasq0kwfOJAFovjM70ttlkXOjkz01XybT5N5UyS3
  97.455 +rM5Nj1AzUFXzOZWBjFqc01l9CHd7p7AG62ZP+eFAzP58H6ck4CfWiXyYDZlSLPreRn5XO9+U
  97.456 +ngSzdPGdQPNQk7YHvjWg9IWteKmAu41g3SHM/rA137upVMM/a9ubvrsVHaOs28mYsbzvlpGU
  97.457 +oOkrooQbClalklWTojvAlpqzLZNZ3XBkXZrbHEfY5WNf7tr9YPL55HNjXaon25OSkVVpEzqz
  97.458 +BvsamyHvStk96WBWYY4XCj1OWEE3malq9p9mSBv5lFl9w0yOteStYmCqoxxSzNRDiQSseGCq
  97.459 +90t6hqtNExzp6GcOZACu5vK9ZsM69t2rNTE1/XlwzxcZ04tuKx9XrnjgwzSfsxFbdflqpZU0
  97.460 +WM4jdlN6M4HkXM9bL8WfD0GpG2JavzjS5OF1lHEZzzEyTPOUOrijiBbdQSx1LZ4dOu/BlUGd
  97.461 +O+v6O+o8IcNSXUsIcvhpW9z0pjl9i6Mkjlv/gVg2r16A57hdjUOHa169AJ6lUy/OdjjrP4Xo
  97.462 +7GIFO6nwtpvkMcSxs1HMPoUxAeiZnUtJWFNBnjxzQDfWGQNAzUXjhPcXImAy4M7ATZo8yV8H
  97.463 +biV6BnxTMe2pRICx3gs6B7JURlqHjVuKnMJ+L+gkdvoNYcA2b0H39OEpRRjwarcUAe4iTP3x
  97.464 +AuNNgM49+9vXutYtRc6+uL6VIqqlxqlFFNNbMSKkdm4xOgOXNUOrkS+v3wZuMXoEe4uRMxNf
  97.465 +m593gEpO6qfSEu7W3vHbous0xL8NZA/5NuWPARQ11LA9UHq+T3hWwMz2zZegmgcWrVQQWiF/
  97.466 +qg1gK/rOdyuhnm23TmFgtjtA/8p+VLWEfBQRuqrHGSCPbR/IWpYTqQ/zh75H7rbaShR3N6k5
  97.467 +2FsDcl3CPFnXUyiWnZNMDcya5w47hcpDd3ALFXDNMOHrkhe1LJ9VMQVzat0cDZS5nm+ypc8t
  97.468 +C3CPz3vrVU+Ir0cGzxVhoYzp3wYe7fzn418f//1EBcM/+wyk7Qq/Rg9eE1b9+cEvPz+w50I+
  97.469 +LZi0fzINAmW/+AugEaPEzi+GA32mTFg25xv+52PCJ7sjdJYZJ98l//v3+czOqsORqUS/H1cM
  97.470 +O0Q9Yq3LFnX9iKTmExR8+sHfF+di39f+d8xEoeiDlu08qS681kPd3h/47pbmv0HsYW1jpvkf
  97.471 +7D6YznH+OQTVHnWJbCPc7mmuMcAOYORrjr3KJBp7qS4pHJytllzLd0eTRqnU/5Nd5chxxDAw
  97.472 +1yv8AhdJgNd7lHr/n7oPDndVCjEHbnQDaYn7ALpiuyY85r7p2fx4DeKIowwOwsYS0rJe8gxG
  97.473 +q3UHhylgKiRWLm6Irtm1VTxbCGTrQWpC/lrQ4Yj8KwdA+27Kw9wsPQgNyKkPALuMt4gGyCo+
  97.474 +Bzr2zF/dhIAxoegQ8NZibFvs/ZIsoijiPQxIlQOASjxuGniaS/F1Y9ZdBEAXZrkRY1gDZFuw
  97.475 +EB8lazRS74NA64c/TzAexFEci7fSQNc5di5eQbCe8mQBkyCOabGIOiLOBugH/76iedBCuYB2
  97.476 +rQqsaZNvdX2WGJGM4qlbcBqBZnPROMGN94ldNd83Fr3LGhdObib6m5NRrwhM7dNfSwaIANK5
  97.477 +phC1eD0Oqp4+MrY1d20vohH4ycbVZkp+JrBODVwrRHVm0OPaqlISReO3kMdoBnSCEwkjuE9s
  97.478 +WcW4IFuV6eDJ0SQR3d0EbBvomly1lpa1l2R6ObVX09J2BMBleLHM2WlL2M/Scw4VLPo27YFr
  97.479 +RQ0+mbSYs2X6fckV25S31Xpr64TpbTsx0WSUOUDa9lYAYGUKJGd7S/978ZbgCryuDPZBq/Xi
  97.480 +C3Fodc7tQw2AkvQpQX4hkNyoT5LF5VSiK5NHWLz9TwQd477FkPku1Z+oc64PvTwv4lpFK3Eg
  97.481 +7RElFOJ2zPMWDVWh4/m18mBYV7Ogk/gGwy09mINejObB2UgHXCzLgNNy2Ofe3MxcPRBSGe8x
  97.482 +fSK8U5vz2D7vSeDz/TfoaMendmwKupOO9a3ePJ6dTF+/n0KcuJ4qnah/FvH7689/AQYAnKh9
  97.483 +Qg1lbmRzdHJlYW0NZW5kb2JqDTE2IDAgb2JqDTw8L0ZpbHRlci9GbGF0ZURlY29kZS9MZW5n
  97.484 +dGggMzE4OD4+c3RyZWFtDQpIiWxXO7YcOwjM7ypmA+4jJCTQepy8wN5/+qoAdfe1Hc0UrQ/f
  97.485 +Aum6rI3Pj3H11j+/v9QvbTPwkI/uay0ncv3Mdununx/zat0/P7+mXN3xcV3i+wO0fH1+2DWx
  97.486 +8aB9tWm5NrC0a+LAs1Xk2rg9ThbAcbWlWB73crleffZPKNUDOnbruta2gFuEy6GS6PN9XLbs
  97.487 +2d2vPdf79H7J6PftKpfJvnU78Kh+cBp29qbRcbQ9Lombd/krtLLbld8cDY/Ma6mEktMcnj8C
  97.488 +vWzY59fXHJfiir/wgB6TuNb/iQWajcLSPw2enJ+5LjX5yDW9f6ZfXSbBitj4tfognAgFzO78
  97.489 +pjYJFKbLNcbgwoTt6rZ5wb5kEY6xeOZuTsDbcCJ0ToB9dtle55sh9FRLeJtdbSNwPJIL17UZ
  97.490 +WKQDbiCiQS0cQNSZMlfTVWsj5teYYd9uDDlipTdCrLrW2mYvV+3Q+S98u7rW/4krVr++/vta
  97.491 +8JOfFb+/FnX1Z8fB54Za/gc8oTK4RictXfLGZ7n1y+wf+Nx21v+JBQ7QIxhZYExbQO8JrQHK
  97.492 +5TJv+JPnd6nvcCDghJ6EqA+gXWdNz8WJNXaHdvNU6+DyxpIgQmxx1xrjVbvQZdt6vjP2eRj4
  97.493 +AkjEy/HUDI6zmZcN6x9A3fldEHfAkYXuzXJ1L8PUJz/LSMhfwvACvDlXLm97hGAgzCdIMKCt
  97.494 +G0lU2U+kgKGi4QEUf2+CHAC+EbwAvkgmgPXm7+J3WDX8oQJHTjcNDL4AshZ1PaCzIxQ91lqY
  97.495 +BGzJEq3vj8MSCY5QCIHGim9b41zEi2Gclw5+NFMCcDgAzgaJqWgu9B2ktuEuoI00BOGNoS+0
  97.496 +THJt4LsWoNFS+4fAcK0VppJQQ5XmLQ8lFXlgGzkyAjVqQkft/Crhtpbm2QaCR/OcqbEW5CGh
  97.497 +dWfiVDQMGb5u5JHIP+9Y3UoatNnjbwHoJKKX6wv99+XoQCR6JhjrndiyZcCpQEH7Qn5FBLFq
  97.498 +Zh6xl8JnG07fkXh9fTaqL9oTwrPnZ6NI13pVHwRb9RZsRjGXK1J/I9Xd4vAdrAyBad2Gbrfn
  97.499 +JaGJg1IB+grUZhyNzslMK8GvLyzYs0pb4/ChWbobXWAjFU1exQrVxavRorZhF0sjGm26oY/U
  97.500 +tHnYjRRY1eYnviNgsbtFXh54Gu3BCDNqhXvZ7tBowfc8ekcmbC+Pth0M7tQT/cPldFpo7VOf
  97.501 +8qIDu53y2pq5To5QOihyFefGaAAHDc/2DuIDMrqDpdwDsRQzB8gA2M3mgyxjBH8Th5YwBISC
  97.502 +m7alBVhE1yLarIK8iapr5DaIjDHnvZn3tGDtpyqYMVUl/NquVt0KvROeYLNkVXSG2NmI49aO
  97.503 +0AGx47MqJkGwZapLA4RJRWJCAjvz+hZYJB2haJy2kMkiLO0YAY1RIG4ZFsctgjj3Nk5tS0Pa
  97.504 +T3nMkIZr5ny+G7Is+aolVA0GZTficjZR4+WG+BFai/xgvgeUsMbXqOUhQHysvkfF7vjvbJjI
  97.505 +PI3pIc6emZpMYV4u0SpQwmA94hFF2INouQNZEHWK9oYJkNjp+CjED23r1SR7P9Zy9IpGCbvo
  97.506 +DibCqWtiq9rLwqf/ql2hauhckfwuyx7nU75yPb9kOXcQeQRPkpaaZ/Re0c0NWoMB59ZXvCFx
  97.507 +I9fxGt1Z4z1SAIdbvxt0qD38RQo0VMzu8ZueaTO5lfVIX49Vt+705YxuQsU5GRLnfNKCMAJT
  97.508 +zx1zfW4IQTqZUEcWJqdaHkceYpRXLWdVsQhapgKHWtaIW+mznqn9VjjG9tucUdrT3v3QiVDJ
  97.509 +YpuWSc+Ow36d3vLZs19rlchsUecNp9DfLXN+Dn8iBOJ4xwccPi2CkYLqQ8KxSP5AkaLbvgs2
  97.510 +lxFqdZbtgV3W3fPyvinfB1vp4CvGImn59yOwqGbpqM9pOSxowNHiCbSjK4M3c0TjFILQdvJc
  97.511 +v2u+wx39zQkd6fXihM5J1e7dAudnqOp0CMT7fbug+ve6dQNkTt4t5f6OmAlr8Gxn0Myf82NS
  97.512 +DpdAgVbJukIdLRrYK/Fu2Zt7Egn0z5YJV8IOYvdntr4Nfqq8j9LhrMCvztcJek/f5w69lr2U
  97.513 +mNkASsUKwMuEitAx8gTwOOF7hLmhdMyM/h0XksROCeBAdTv1ge0jx8oqnw7uzPLj44JwJk/P
  97.514 +2Fzwua0EHJ5Y7Gc7pwRWK89vOS21pWUQ5/cgFBRXqvfwDdWvvC5G6myYrxUI83wfgLSIYfi5
  97.515 +QphBjw5iUZ+3jgc/iVWCMrK2lwfi+DfBxP2PA6nderz7zftYPdB7SAqZ479DEDwPlsCQJmPl
  97.516 +CJg1JINvoXdJDVKRnXFBBtIk36rsgYSR4EmRXC7JZ+jxTL8hYcRpswfC8jFreQjgmgHr7u1w
  97.517 +ncrrfORj32H9UaBa461fDcC3AU+JDFgqT2sk9p0n6NrhAe1VEdnZBvt5dWcSA1zWNfu7sz0f
  97.518 +n7Imsj0PtGdbt+RXSEbNr0vzlq1PXlHP2b7lGSzb0u95mL6wet1yIJbBx+1rIKaAz8MzEUvf
  97.519 +Rck5Et/4KZYS5FAc+7ucqZj3tRwMt5/g+DhjMR3dOFBUolF/f3cyuNX6ujsZ7A2PgId6ulBH
  97.520 +DHeyvDwmO1qZhzvgwGT+GM+OPzNrY7pUP0/ZidxBIusOBivBr0fw9LCXJJrYBB8X40YTI46x
  97.521 +625ivGW9n3L3vTxDZ0nWrGENplKC8W1l6Dr4G+6sZlnB1pks9wRbtXpBDUIKjVaSijHlgLul
  97.522 +HiMnUu2osZQ0DpXAY2dDXr0HlpFMJ0kUKtWverxZiG1k/0F4Aq+Z+bPmqh2zyo9TYWDNjKJ2
  97.523 +b6zazw79FgTMftL/IWBWIhYlSTUoCNPNa1JNZ63+fsPSneuYyhqHu7V2sFsR75pVZjY5hEhr
  97.524 +IvdYcYKIGmI6HrzD+5Ffk08gyXHJmV8QxENpRpVB7zmjlFkQdM5EkPddAdh0vxuzIBY6ZCZs
  97.525 +59S1MJvsINLGrgHoke+rR0IsMlyMNhtPBMKadAa0kUWu4lE7PbJwSlaXxmGsonFepbI4EY+3
  97.526 +Kis6z/0dfOYBh8+A0eDo7+CJBe5acXkLXTzfFkxZxGeBT/JhtjMHIOgrPEeOB9Ieb8jdA03S
  97.527 +NTg2h28KpmRlz/xu8UQcTOoHcqSv5fatHqlcm/+SkGKsBD1bJmuM9o0m91QI7wzzV4uD93pS
  97.528 +UbQ4+jojwfAyEtvimTpzaoQgSndFPAklejcH94M8pq5cLP5N2RaG/0PyqI+W7o/6EyT2aD+R
  97.529 +6/7WHmm4MxyhPaCksaH9nFnRt/YQxPOktI+sv7UvdGtf+NF1ks77vyR4FYkdASOOOmI6AKqF
  97.530 +ekNWQvFDD3VF94cvUInG5O4szrHi0UCBJ+1MdkLg4flUjTcY8GZ687XZ4lRLe2NKwK2G9Ksp
  97.531 +OQjEMI/4tyHBHGm5nyHBkNMjhwblYwDYW0/OH8HH3qI041LWILBJTn1OtgXmiETcZtzhKHHZ
  97.532 +twS+csm6jCEhb9kzn1D7f7arJbmSGITtc4pcIFV2+wfHmDOkKquZ+28jAcZ+k1Q2Ea/bbWyQ
  97.533 +xOP7bPJiEpCYHIuAxGdch1mEBWoa7fYIi/+14xEWSFf1eISN0yPsQHgEvF9LT48AaLWaHmFR
  97.534 +r2qaBG5PjxvF/mmxDhHxWPshKpzRKG5laT5xHI/zjrqRRkDVxkO6Kh6gHTn2Rm4h5GJeJ0bi
  97.535 +4h4J3gLK8s+x91aBwtn31LOhOwUszlv+OeyuGw/QzFpJqGRjMRfpV+OxqPr1+3A1Zct0g0XN
  97.536 +GY9H46TohNh4tCKAlVtF5w1H4MfYuKcyoZI9W43JYK3XdtyRbD4G3I9b8xGe3gPqq1+9h08s
  97.537 +ubXavumvT9kBpyIyAgNr2zrhGQmk4bjAqiVHPb9vRalrXjfQ8snFdEdxf7VfuqOPtc7WHeUy
  97.538 +I3UHsPd16Y6ym9fWHaUsb9kB0DYv2WFgScoOoVe5yc6BITs7cI4ae9tu/L9I8jYDZSRvM9u5
  97.539 +kriFNK5X/eDs5JqsAKtna8TNg/bFwtIgUNQy4GJRHKgePYi8HdWjYkaaqzXjUIUF0LEDf08g
  97.540 +L3+/8iPAGa1ZAClg/vkgd7wE9iu4dYj/80vgfDZe+RGgK+0ZCXvH4fApcJvBkuRmuDHgdrE3
  97.541 +I7LZG/XHr5J/3FIaHLHgEHt+B7qt4Pus3S8cuXLBVVfac2Izd0nE3NR82vUE3F4o/aKUIolt
  97.542 +6Nmin5ZWU3+isXeAawwJ7H3iUnzAk+gHibEClW8NI96vPJgWePogstzAM9LdCdPjnCvESFTm
  97.543 +hasJDkvl6+0P/t6/BRgA6y9qdQ1lbmRzdHJlYW0NZW5kb2JqDTE3IDAgb2JqDTw8L0FJUyBm
  97.544 +YWxzZS9CTS9Ob3JtYWwvQ0EgMS4wL09QIGZhbHNlL09QTSAxL1NBIHRydWUvU01hc2svTm9u
  97.545 +ZS9UeXBlL0V4dEdTdGF0ZS9jYSAxLjAvb3AgZmFsc2U+Pg1lbmRvYmoNMTggMCBvYmoNPDwv
  97.546 +QUlTIGZhbHNlL0JNL05vcm1hbC9DQSAxLjAvT1AgdHJ1ZS9PUE0gMS9TQSB0cnVlL1NNYXNr
  97.547 +L05vbmUvVHlwZS9FeHRHU3RhdGUvY2EgMS4wL29wIHRydWU+Pg1lbmRvYmoNMSAwIG9iag08
  97.548 +PC9OdW1zWzAgMiAwIFJdPj4NZW5kb2JqDTIgMCBvYmoNPDwvUy9EL1N0IDk+Pg1lbmRvYmoN
  97.549 +MyAwIG9iag08PC9Db3VudCAxL0tpZHNbOCAwIFJdL1R5cGUvUGFnZXM+Pg1lbmRvYmoNNCAw
  97.550 +IG9iag08PC9MZW5ndGggMjQ4MC9TdWJ0eXBlL1hNTC9UeXBlL01ldGFkYXRhPj5zdHJlYW0N
  97.551 +Cjw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+
  97.552 +Cjx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhN
  97.553 +UCBDb3JlIDUuNS1jMDE0IDc5LjE1MTQ4MSwgMjAxMy8wMy8xMy0xMjowOToxNSAgICAgICAg
  97.554 +Ij4KICAgPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIy
  97.555 +LXJkZi1zeW50YXgtbnMjIj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIK
  97.556 +ICAgICAgICAgICAgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIgog
  97.557 +ICAgICAgICAgICB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21t
  97.558 +LyIKICAgICAgICAgICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEu
  97.559 +MC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgICAgICAgICAgeG1sbnM6c3RSZWY9Imh0dHA6
  97.560 +Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiCiAgICAgICAgICAg
  97.561 +IHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKICAgICAgICAg
  97.562 +ICAgeG1sbnM6cGRmPSJodHRwOi8vbnMuYWRvYmUuY29tL3BkZi8xLjMvIj4KICAgICAgICAg
  97.563 +PHhtcDpDcmVhdGVEYXRlPjIwMTQtMDgtMTBUMjE6NTA6MjMrMDI6MDA8L3htcDpDcmVhdGVE
  97.564 +YXRlPgogICAgICAgICA8eG1wOk1ldGFkYXRhRGF0ZT4yMDE0LTA4LTEwVDIxOjUwOjIzKzAy
  97.565 +OjAwPC94bXA6TWV0YWRhdGFEYXRlPgogICAgICAgICA8eG1wOk1vZGlmeURhdGU+MjAxNC0w
  97.566 +OC0xMFQyMTo1MDoyMyswMjowMDwveG1wOk1vZGlmeURhdGU+CiAgICAgICAgIDx4bXA6Q3Jl
  97.567 +YXRvclRvb2w+QWRvYmUgSW5EZXNpZ24gQ0MgKE1hY2ludG9zaCk8L3htcDpDcmVhdG9yVG9v
  97.568 +bD4KICAgICAgICAgPHhtcE1NOkluc3RhbmNlSUQ+dXVpZDpkN2UxNWU4NC0yMjA0LWZhNGQt
  97.569 +YTNjMi0xODc0YjhkYTI4NDg8L3htcE1NOkluc3RhbmNlSUQ+CiAgICAgICAgIDx4bXBNTTpP
  97.570 +cmlnaW5hbERvY3VtZW50SUQ+eG1wLmRpZDplYjk4OTk1Yy00ZmZlLTRjOWMtOTNjNy1iZGQ4
  97.571 +ZDU0Y2U3MDk8L3htcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOkRv
  97.572 +Y3VtZW50SUQ+eG1wLmlkOjZjMmQ1ODhjLWJhMmItNGJkOS1hMWYxLTAxMDRkOTA1MmMyODwv
  97.573 +eG1wTU06RG9jdW1lbnRJRD4KICAgICAgICAgPHhtcE1NOlJlbmRpdGlvbkNsYXNzPnByb29m
  97.574 +OnBkZjwveG1wTU06UmVuZGl0aW9uQ2xhc3M+CiAgICAgICAgIDx4bXBNTTpIaXN0b3J5Pgog
  97.575 +ICAgICAgICAgICA8cmRmOlNlcT4KICAgICAgICAgICAgICAgPHJkZjpsaSByZGY6cGFyc2VU
  97.576 +eXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDphY3Rpb24+Y29udmVy
  97.577 +dGVkPC9zdEV2dDphY3Rpb24+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpwYXJhbWV0ZXJz
  97.578 +PmZyb20gYXBwbGljYXRpb24veC1pbmRlc2lnbiB0byBhcHBsaWNhdGlvbi9wZGY8L3N0RXZ0
  97.579 +OnBhcmFtZXRlcnM+CiAgICAgICAgICAgICAgICAgIDxzdEV2dDpzb2Z0d2FyZUFnZW50PkFk
  97.580 +b2JlIEluRGVzaWduIENDIChNYWNpbnRvc2gpPC9zdEV2dDpzb2Z0d2FyZUFnZW50PgogICAg
  97.581 +ICAgICAgICAgICAgICA8c3RFdnQ6Y2hhbmdlZD4vPC9zdEV2dDpjaGFuZ2VkPgogICAgICAg
  97.582 +ICAgICAgICAgICA8c3RFdnQ6d2hlbj4yMDE0LTA4LTEwVDIxOjUwOjIzKzAyOjAwPC9zdEV2
  97.583 +dDp3aGVuPgogICAgICAgICAgICAgICA8L3JkZjpsaT4KICAgICAgICAgICAgPC9yZGY6U2Vx
  97.584 +PgogICAgICAgICA8L3htcE1NOkhpc3Rvcnk+CiAgICAgICAgIDx4bXBNTTpEZXJpdmVkRnJv
  97.585 +bSByZGY6cGFyc2VUeXBlPSJSZXNvdXJjZSI+CiAgICAgICAgICAgIDxzdFJlZjppbnN0YW5j
  97.586 +ZUlEPnhtcC5paWQ6Mjg0NzZlZDgtM2VlYi00ZTlhLWI4NDMtNzJhYTU4MGFjYTVhPC9zdFJl
  97.587 +ZjppbnN0YW5jZUlEPgogICAgICAgICAgICA8c3RSZWY6ZG9jdW1lbnRJRD54bXAuZGlkOmVi
  97.588 +OTg5OTVjLTRmZmUtNGM5Yy05M2M3LWJkZDhkNTRjZTcwOTwvc3RSZWY6ZG9jdW1lbnRJRD4K
  97.589 +ICAgICAgICAgICAgPHN0UmVmOm9yaWdpbmFsRG9jdW1lbnRJRD54bXAuZGlkOmViOTg5OTVj
  97.590 +LTRmZmUtNGM5Yy05M2M3LWJkZDhkNTRjZTcwOTwvc3RSZWY6b3JpZ2luYWxEb2N1bWVudElE
  97.591 +PgogICAgICAgICAgICA8c3RSZWY6cmVuZGl0aW9uQ2xhc3M+ZGVmYXVsdDwvc3RSZWY6cmVu
  97.592 +ZGl0aW9uQ2xhc3M+CiAgICAgICAgIDwveG1wTU06RGVyaXZlZEZyb20+CiAgICAgICAgIDxk
  97.593 +Yzpmb3JtYXQ+YXBwbGljYXRpb24vcGRmPC9kYzpmb3JtYXQ+CiAgICAgICAgIDxwZGY6UHJv
  97.594 +ZHVjZXI+QWRvYmUgUERGIExpYnJhcnkgMTAuMC4xPC9wZGY6UHJvZHVjZXI+CiAgICAgICAg
  97.595 +IDxwZGY6VHJhcHBlZD5GYWxzZTwvcGRmOlRyYXBwZWQ+CiAgICAgIDwvcmRmOkRlc2NyaXB0
  97.596 +aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgo8P3hwYWNrZXQgZW5kPSJyIj8+DWVu
  97.597 +ZHN0cmVhbQ1lbmRvYmoNNSAwIG9iag08PC9DcmVhdGlvbkRhdGUoRDoyMDE0MDgxMDIxNTAy
  97.598 +MyswMicwMCcpL0NyZWF0b3IoQWRvYmUgSW5EZXNpZ24gQ0MgXChNYWNpbnRvc2hcKSkvTW9k
  97.599 +RGF0ZShEOjIwMTQwODEwMjE1MDIzKzAyJzAwJykvUHJvZHVjZXIoQWRvYmUgUERGIExpYnJh
  97.600 +cnkgMTAuMC4xKS9UcmFwcGVkL0ZhbHNlPj4NZW5kb2JqDXhyZWYNMCA2DTAwMDAwMDAwMDAg
  97.601 +NjU1MzUgZg0KMDAwMDAyNzI2MSAwMDAwMCBuDQowMDAwMDI3Mjk1IDAwMDAwIG4NCjAwMDAw
  97.602 +MjczMjQgMDAwMDAgbg0KMDAwMDAyNzM3NSAwMDAwMCBuDQowMDAwMDI5OTMxIDAwMDAwIG4N
  97.603 +CnRyYWlsZXINPDwvU2l6ZSA2L0lEWzxDODIwMjYzOUE5Njc0MDgyQjQyNTI2OThGNkQ4OTNC
  97.604 +OD48QUM4OEI2NkM5ODAwNEY4MzlEM0U1REMyNjA4NjVDQzE+XT4+DXN0YXJ0eHJlZg0xMTYN
  97.605 +JSVFT0YN
  97.606 +
  97.607 +--cEobB2knsyc5ebfU--
  97.608 +
    98.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    98.2 +++ b/test/test_mails/msg3.asc	Mon Sep 02 17:14:54 2019 +0200
    98.3 @@ -0,0 +1,17 @@
    98.4 +From: =?ISO-8859-1?Q?=22Eifler@dontpanic.ulm.ccc.de
    98.5 +To: mail@ccc.de
    98.6 +MIME-Version: 1.0
    98.7 +Subject: =?ISO-8859-1?Q?elektronische_=DCbermittlung_von_Steuerdaten?=
    98.8 +Content-Type: text/plain; charset="iso-8859-1"
    98.9 +Content-Transfer-Encoding: 8bit
   98.10 +Status: RO
   98.11 +Content-Length: 1136
   98.12 +Lines: 29
   98.13 +
   98.14 +ab dem 1.1.2005 ist es verbindlich vorgeschrieben, dass die monatlichen
   98.15 +Steueranmeldungen an das Finanzamt bzgl. Lohnsteuer und Umsatzsteuer 
   98.16 +elektronisch, d.h. in aller Regel ber das Internet, bermitteln werden
   98.17 +mssen. Ein Ausweichen auf die Papierform ist nur in Ausnahmefllen
   98.18 +zulssig. 
   98.19 +Gru und macht weiter
   98.20 +
    99.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
    99.2 +++ b/test/test_mails/msg_no_key.asc	Mon Sep 02 17:14:54 2019 +0200
    99.3 @@ -0,0 +1,44 @@
    99.4 +To: notreal@kgrothoff.org
    99.5 +From: Krista Grothoff <notreal@kgrothoff.org>
    99.6 +Subject: test3
    99.7 +Message-ID: <579B4AB5.4090402@kgrothoff.org>
    99.8 +Date: Fri, 29 Jul 2016 14:23:17 +0200
    99.9 +User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101
   99.10 + Thunderbird/38.8.0
   99.11 +MIME-Version: 1.0
   99.12 +Content-Type: multipart/encrypted;
   99.13 + protocol="application/pgp-encrypted";
   99.14 + boundary="Vkb6PtN2UuPCNGnI4hCGU6LNQN66590UU"
   99.15 +
   99.16 +This is an OpenPGP/MIME encrypted message (RFC 4880 and 3156)
   99.17 +--Vkb6PtN2UuPCNGnI4hCGU6LNQN66590UU
   99.18 +Content-Type: application/pgp-encrypted
   99.19 +Content-Description: PGP/MIME version identification
   99.20 +
   99.21 +Version: 1
   99.22 +
   99.23 +--Vkb6PtN2UuPCNGnI4hCGU6LNQN66590UU
   99.24 +Content-Type: application/octet-stream; name="encrypted.asc"
   99.25 +Content-Description: OpenPGP encrypted message
   99.26 +Content-Disposition: inline; filename="encrypted.asc"
   99.27 +
   99.28 +-----BEGIN PGP MESSAGE-----
   99.29 +
   99.30 +hQEMAxqoixpCqEC5AQgAw2FSvhWUNOLTXDigj/0sSAvjsiRnywXoa+IWXECZhIy0
   99.31 +78J+Ib66VgdVUuHuxa2tw1EojKWtSrDlcxJUnWwcewRaRzwGmZ2OTTvMb+ri8y4B
   99.32 +YdwDsL0MthWiXO/V81kiYjyA5jn6e1p4kYPWJCHTeBu1DKZFreulD/ckMFBFgbwt
   99.33 +fttSaMMDuU3gjlQET3kOppWLatMevosXiwUOBr3fhDZvGIGu9OI6tiXlul0B1+aG
   99.34 +YSn81tIaZKPixlgVVmJYXVbz/P1PM2ilbGbOOyrcDvY2YDFiQfjdjh7V+noshB9u
   99.35 +n3MBQ/altgUdjfPX8KDp7RACddr2QuoY2SGF1PMcwNLAmgFZ4T1kAtaT4l7+/nF5
   99.36 +c/DhDccRFLtb3wNjuhMs1QJQy+2O5cJBvT42U+0TM72MFTwRNwXlWNkn8r8eJfZj
   99.37 +6TUyZqNK6LqKKZksNUIVhGPcore3HPhfiSVV8k7iRG8mZ2wfMe25hhGG/0+pCOiB
   99.38 +9/OCXKOgFNlWSVzfmbQ9dAvxaZVlDOrgy7weS8aGkH73B+u70SX9iXNvmfLoXv90
   99.39 +0oimyhfkMd+9lK9rFwqh/RankVun1V03lQJhyaPMotWOIw06Z+8s495G3h6UiUIu
   99.40 +vqBfr6mPzIVVrIuSeWSBY/lE+1+3DUUTbx5lDWynRxND7bd7m1uwcl2nIAcmsJ+R
   99.41 +JKm1+JTEwoYgcPBUT+lxshFexqXv19hk7NWIAmhNmEpRRsi27gqmk5IVDmeR4upr
   99.42 +w65H7Es9EN0no0C5ZjUdGke4jQ0ILL8akqDFTWp8vCUuQgKZNHRayQZ84cg=
   99.43 +=q/R9
   99.44 +-----END PGP MESSAGE-----
   99.45 +
   99.46 +--Vkb6PtN2UuPCNGnI4hCGU6LNQN66590UU--
   99.47 +
   100.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
   100.2 +++ b/test/tmp/README	Mon Sep 02 17:14:54 2019 +0200
   100.3 @@ -0,0 +1,1 @@
   100.4 +This directory is necessary for temp reads/writes in the older test cases. Ignore anything in here.