Merged in default ENGINE-434
authorKrista Bennett <krista@pep-project.org>
Thu, 24 May 2018 10:50:10 +0200
branchENGINE-434
changeset 26916e7b73c67701
parent 2687 b439ce4097ff
parent 2688 a34d253c9292
child 2695 187afdcf3e51
Merged in default
src/pgp_gpg.c
test/msg_2.0.asc
     1.1 --- a/Makefile	Thu May 24 05:40:05 2018 +0200
     1.2 +++ b/Makefile	Thu May 24 10:50:10 2018 +0200
     1.3 @@ -48,11 +48,7 @@
     1.4  .PHONY: test
     1.5  test: all
     1.6  	$(MAKE) -C test test
     1.7 -	$(MAKE) -C test unit_tests
     1.8  
     1.9 -.PHONY: unit_tests
    1.10 -unit_tests: all
    1.11 -	$(MAKE) -C test unit_tests
    1.12  
    1.13  .PHONY: package
    1.14  package: clean
     2.1 --- a/build-mac/pEpEngine.xcodeproj/project.pbxproj	Thu May 24 05:40:05 2018 +0200
     2.2 +++ b/build-mac/pEpEngine.xcodeproj/project.pbxproj	Thu May 24 10:50:10 2018 +0200
     2.3 @@ -977,6 +977,7 @@
     2.4  				ONLY_ACTIVE_ARCH = YES;
     2.5  				OTHER_CFLAGS = "-DSQLITE3_FROM_OS";
     2.6  				SDKROOT = iphoneos;
     2.7 +				VALID_ARCHS = arm64;
     2.8  			};
     2.9  			name = Debug;
    2.10  		};
    2.11 @@ -1032,6 +1033,7 @@
    2.12  				OTHER_CFLAGS = "-DSQLITE3_FROM_OS";
    2.13  				SDKROOT = iphoneos;
    2.14  				VALIDATE_PRODUCT = YES;
    2.15 +				VALID_ARCHS = arm64;
    2.16  			};
    2.17  			name = Release;
    2.18  		};
     3.1 --- a/src/etpan_mime.c	Thu May 24 05:40:05 2018 +0200
     3.2 +++ b/src/etpan_mime.c	Thu May 24 10:50:10 2018 +0200
     3.3 @@ -37,28 +37,28 @@
     3.4          int force_single
     3.5      )
     3.6  {
     3.7 -	struct mailmime * build_info;
     3.8 -	clist * list = NULL;
     3.9 -	int r;
    3.10 -	int mime_type;
    3.11 +    struct mailmime * build_info;
    3.12 +    clist * list = NULL;
    3.13 +    int r;
    3.14 +    int mime_type;
    3.15      char * attr_name = NULL;
    3.16      char * attr_value = NULL;
    3.17      struct mailmime_parameter * param = NULL;
    3.18      clist * parameters = NULL;
    3.19      char *boundary = NULL;
    3.20  
    3.21 -	list = NULL;
    3.22 +    list = NULL;
    3.23  
    3.24 -	if (force_single) {
    3.25 -		mime_type = MAILMIME_SINGLE;
    3.26 -	}
    3.27 -	else {
    3.28 -		switch (content->ct_type->tp_type) {
    3.29 -			case MAILMIME_TYPE_DISCRETE_TYPE:
    3.30 +    if (force_single) {
    3.31 +        mime_type = MAILMIME_SINGLE;
    3.32 +    }
    3.33 +    else {
    3.34 +        switch (content->ct_type->tp_type) {
    3.35 +            case MAILMIME_TYPE_DISCRETE_TYPE:
    3.36                  mime_type = MAILMIME_SINGLE;
    3.37                  break;
    3.38  
    3.39 -			case MAILMIME_TYPE_COMPOSITE_TYPE:
    3.40 +            case MAILMIME_TYPE_COMPOSITE_TYPE:
    3.41                  switch (content->ct_type->tp_data.tp_composite_type->ct_type) {
    3.42                      case MAILMIME_COMPOSITE_TYPE_MULTIPART:
    3.43                          mime_type = MAILMIME_MULTIPLE;
    3.44 @@ -76,60 +76,60 @@
    3.45                  }
    3.46                  break;
    3.47  
    3.48 -			default:
    3.49 +            default:
    3.50                  goto enomem;
    3.51 -		}
    3.52 -	}
    3.53 +        }
    3.54 +    }
    3.55  
    3.56 -	if (mime_type == MAILMIME_MULTIPLE) {
    3.57 -		list = clist_new();
    3.58 +    if (mime_type == MAILMIME_MULTIPLE) {
    3.59 +        list = clist_new();
    3.60          assert(list);
    3.61 -		if (list == NULL)
    3.62 -			goto enomem;
    3.63 +        if (list == NULL)
    3.64 +            goto enomem;
    3.65  
    3.66 -		attr_name = strdup("boundary");
    3.67 +        attr_name = strdup("boundary");
    3.68          assert(attr_name);
    3.69          if (attr_name == NULL)
    3.70              goto enomem;
    3.71  
    3.72 -		boundary = generate_boundary();
    3.73 +        boundary = generate_boundary();
    3.74          assert(boundary);
    3.75 -		attr_value = boundary;
    3.76 -		if (attr_value == NULL)
    3.77 -			goto enomem;
    3.78 +        attr_value = boundary;
    3.79 +        if (attr_value == NULL)
    3.80 +            goto enomem;
    3.81  
    3.82 -		param = mailmime_parameter_new(attr_name, attr_value);
    3.83 +        param = mailmime_parameter_new(attr_name, attr_value);
    3.84          assert(param);
    3.85 -		if (param == NULL)
    3.86 -			goto enomem;
    3.87 +        if (param == NULL)
    3.88 +            goto enomem;
    3.89          attr_name = NULL;
    3.90          attr_value = NULL;
    3.91  
    3.92 -		if (content->ct_parameters == NULL) {
    3.93 -			parameters = clist_new();
    3.94 +        if (content->ct_parameters == NULL) {
    3.95 +            parameters = clist_new();
    3.96              assert(parameters);
    3.97 -			if (parameters == NULL)
    3.98 -				goto enomem;
    3.99 -		}
   3.100 -		else {
   3.101 -			parameters = content->ct_parameters;
   3.102 +            if (parameters == NULL)
   3.103 +                goto enomem;
   3.104 +        }
   3.105 +        else {
   3.106 +            parameters = content->ct_parameters;
   3.107          }
   3.108  
   3.109 -		r = clist_append(parameters, param);
   3.110 -		if (r)
   3.111 -			goto enomem;
   3.112 +        r = clist_append(parameters, param);
   3.113 +        if (r)
   3.114 +            goto enomem;
   3.115          param = NULL;
   3.116  
   3.117 -		if (content->ct_parameters == NULL)
   3.118 -			content->ct_parameters = parameters;
   3.119 -	}
   3.120 +        if (content->ct_parameters == NULL)
   3.121 +            content->ct_parameters = parameters;
   3.122 +    }
   3.123  
   3.124      build_info = mailmime_new(mime_type, NULL, 0, mime_fields, content, NULL,
   3.125              NULL, NULL, list, NULL, NULL);
   3.126 -	if (build_info == NULL)
   3.127 -		goto enomem;
   3.128 +    if (build_info == NULL)
   3.129 +        goto enomem;
   3.130  
   3.131 -	return build_info;
   3.132 +    return build_info;
   3.133  
   3.134  enomem:
   3.135      if (list)
   3.136 @@ -141,17 +141,17 @@
   3.137              clist_free(parameters);
   3.138      if (param)
   3.139          mailmime_parameter_free(param);
   3.140 -	return NULL;
   3.141 +    return NULL;
   3.142  }
   3.143  
   3.144  struct mailmime * get_pgp_encrypted_part(void)
   3.145  {
   3.146 -	struct mailmime * mime = NULL;
   3.147 -	struct mailmime_fields * mime_fields = NULL;
   3.148 -	struct mailmime_content * content = NULL;
   3.149 +    struct mailmime * mime = NULL;
   3.150 +    struct mailmime_fields * mime_fields = NULL;
   3.151 +    struct mailmime_content * content = NULL;
   3.152      int r;
   3.153  
   3.154 -	content = mailmime_content_new_with_str("application/pgp-encrypted");
   3.155 +    content = mailmime_content_new_with_str("application/pgp-encrypted");
   3.156      if (content == NULL)
   3.157          goto enomem;
   3.158  
   3.159 @@ -159,7 +159,7 @@
   3.160      if (mime_fields == NULL)
   3.161          goto enomem;
   3.162  
   3.163 -	mime = part_new_empty(content, mime_fields, 1);
   3.164 +    mime = part_new_empty(content, mime_fields, 1);
   3.165      if (mime == NULL)
   3.166          goto enomem;
   3.167      mime_fields = NULL;
   3.168 @@ -169,7 +169,7 @@
   3.169      if (r != 0)
   3.170          goto enomem;
   3.171  
   3.172 -	return mime;
   3.173 +    return mime;
   3.174  
   3.175  enomem:
   3.176      if (content)
   3.177 @@ -191,12 +191,12 @@
   3.178      )
   3.179  {
   3.180      char * disposition_name = NULL;
   3.181 -	struct mailmime_fields * mime_fields = NULL;
   3.182 -	struct mailmime * mime = NULL;
   3.183 -	struct mailmime_content * content = NULL;
   3.184 -	struct mailmime_parameter * param = NULL;
   3.185 -	struct mailmime_disposition * disposition = NULL;
   3.186 -	struct mailmime_mechanism * encoding = NULL;
   3.187 +    struct mailmime_fields * mime_fields = NULL;
   3.188 +    struct mailmime * mime = NULL;
   3.189 +    struct mailmime_content * content = NULL;
   3.190 +    struct mailmime_parameter * param = NULL;
   3.191 +    struct mailmime_disposition * disposition = NULL;
   3.192 +    struct mailmime_mechanism * encoding = NULL;
   3.193      char* content_id = NULL;
   3.194      int r;
   3.195                  
   3.196 @@ -237,7 +237,7 @@
   3.197      disposition = NULL;
   3.198      content_id = NULL;
   3.199  
   3.200 -	content = mailmime_content_new_with_str(mime_type);
   3.201 +    content = mailmime_content_new_with_str(mime_type);
   3.202      if (content == NULL)
   3.203          goto enomem;
   3.204      
   3.205 @@ -248,7 +248,7 @@
   3.206              goto enomem;
   3.207      }
   3.208  
   3.209 -	mime = part_new_empty(content, mime_fields, 1);
   3.210 +    mime = part_new_empty(content, mime_fields, 1);
   3.211      if (mime == NULL)
   3.212          goto enomem;
   3.213      content = NULL;
   3.214 @@ -259,8 +259,8 @@
   3.215          if (r != 0)
   3.216              goto enomem;
   3.217      }
   3.218 -	
   3.219 -	return mime;
   3.220 +    
   3.221 +    return mime;
   3.222  
   3.223  enomem:
   3.224      free(disposition_name);
     4.1 --- a/src/pEpEngine.c	Thu May 24 05:40:05 2018 +0200
     4.2 +++ b/src/pEpEngine.c	Thu May 24 10:50:10 2018 +0200
     4.3 @@ -2809,7 +2809,8 @@
     4.4      sqlite3_reset(session->unset_identity_flags);
     4.5      if (result != SQLITE_DONE)
     4.6          return PEP_CANNOT_SET_IDENTITY;
     4.7 -        identity->flags &= ~flags;
     4.8 +
     4.9 +    identity->flags &= ~flags;
    4.10  
    4.11      return PEP_STATUS_OK;
    4.12  }
     5.1 --- a/test/msg_2.0.asc	Thu May 24 05:40:05 2018 +0200
     5.2 +++ b/test/msg_2.0.asc	Thu May 24 10:50:10 2018 +0200
     5.3 @@ -6,82 +6,82 @@
     5.4   <three-OMGWTFBBQ.edfddffd839274982347239847@pep-project.org>
     5.5  X-pEp-Version: 2.0
     5.6  MIME-Version: 1.0
     5.7 -Content-Type: multipart/mixed; boundary="eb7b9ff74466de835e191c92adc9bbb"
     5.8 +Content-Type: multipart/mixed; boundary="575522c015668e2f9cbd60105375cc"
     5.9  
    5.10 ---eb7b9ff74466de835e191c92adc9bbb
    5.11 +--575522c015668e2f9cbd60105375cc
    5.12  Content-Type: text/plain; charset="utf-8"
    5.13  Content-Transfer-Encoding: quoted-printable
    5.14  Content-Disposition: inline; filename="msg.txt"
    5.15  
    5.16  this message was encrypted with p=E2=89=A1p https://pEp-project.org
    5.17 ---eb7b9ff74466de835e191c92adc9bbb
    5.18 +--575522c015668e2f9cbd60105375cc
    5.19  Content-Type: application/pgp-encrypted
    5.20  
    5.21  Version: 1
    5.22 ---eb7b9ff74466de835e191c92adc9bbb
    5.23 +--575522c015668e2f9cbd60105375cc
    5.24  Content-Type: application/octet-stream
    5.25  Content-Disposition: attachment; filename="msg.asc"
    5.26  
    5.27  -----BEGIN PGP MESSAGE-----
    5.28  
    5.29 -hQEMA1oCBdlzCD9NAQf/d4eOBpt9wk0Spj3ycJFuY1l88eZXpkEhe18z2xWsUa99
    5.30 -NugifVTu2i2WUnpI8HAKm0kk32FWpn0WUEpi6V4d4W+1yTk8XMvwsKtzfjuATGeJ
    5.31 -Jw7DcNrYyH6Et9O7kuZLHEtFGjpXEjpqqmlYYdWy7hteRdbFJth1d9j7mSTurGbN
    5.32 -/9i8UAfVwRu8uJNrhGVLhBNR9VQKhukdQC6pxQxiCr/B+0mOcdY9cvU/XTFBnJ5O
    5.33 -thd7sPpjDISs11jOn+QkA/fCfJ5ABedcgEJJ5vo4Yjo/IpfX9KTiP9Vrt8Tw8nOy
    5.34 -fPMmQNQDj0r7+4Dh9U9thdLoNCGMs0tF6kA0jBJ0QoUBDAOo6/9vKSPoQgEIAJrX
    5.35 -Vtm7dSPlgcoySkN1sEyHTd4Gegap3tTnaLir6FL6Q2zLPYaGcHFiDuwqaelG6oIY
    5.36 -5bhFoJL3ZfpFFbm71g46AqsrIghhaGNtQo5mNn3ZY6t0LwptjKI1eyRDd0N7a0ui
    5.37 -y5qZ5gySdvwm53aOdPp014pPtgEQysbM/SkJV0wI/ICnROdDnFr/uERjyrTDWIbb
    5.38 -F1If9PqTA+oNBEOSUExOmubd1pByqMV0IzYqGBZFbuMEOkhGaypxxr/O3K2MjG5s
    5.39 -ZEDxpPNy6F9pZ/N6gU2/LC2PBkoFWJcesT7pea6Li6IAas88dZfAGbEvgeqzFzxW
    5.40 -ncNq5VDzX4gSrCO/u73S6wHbJ1gaF/+MBW1czs4u5UwppBvM+Auu3+/W3Y2VULpj
    5.41 -G7Xf/wEZz6sVvkXzdiY3LIuf4Oj78fhsWaQEQ34FgdE6PlzIcUyaUMFze+8zzaQy
    5.42 -lI13dvoMtRVOd+XLZRm0DRtIr3ME9QiLVNm+DhYEsvZKfBj20ZLQlNbgz5rn7+mf
    5.43 -o6I75CyP+nwRvHwJGUASdYxA2iQ9OEu9WCliOoCnD5MREepXkaToptzov4wE+jm2
    5.44 -yQbIllabM+gSFTcl2ufKRz7dPvAu6VB3j6HokN8zgGbC5Ddmd2MbEuqzr7/hXbaq
    5.45 -Z2TKLhm0A5pdIMSWYig1tn5vLrwX10NXooekCb6zW7OyLAz3s7vrpSroz6Kg1pzl
    5.46 -DwEGG71wbASy1+1jqqrNwO9x+cTYjKqpYkLhmFW7R9peyRhP3S5j6I+h2Su+AWK7
    5.47 -6GO24YzvOrqWEsmcXWbjnRG5RqfNBvqUbojciA9fyAq/rlsXWY47fpROOmyWxD71
    5.48 -VzNNq6WUSLA4QmVMLV0aVSty9BSNMkj7JUULfdhWaHGU/6t6AG6XWsF5ckCUONb+
    5.49 -T/WRUmsT0eF+eRO4d4hcYmqro4Wtx0jvgbTjcMU22IJP3UBiuWwlMI9kmtid6kNE
    5.50 -Q/liJ1NAtEchxXjFge8YeSJnfTZM9zokQi4axrRB3NFbiO0RqMUY5h5/h0ZfcvQr
    5.51 -30YujTqVgRVcDbG4aRQgjxu10NUdjdxCdcw98RLnbIvEFZGm87aMicxKxzE7yqMg
    5.52 -AZO/tl8BzM8ISW9ejbtuSWQtQmO0TFfIw7ef1pKllGUN3nkxf6WR46P6A4Yl1qWy
    5.53 -VwXwlZ/ZFGZ4wxONeWAgZvQM+2aWL56YpdV+58J0ulHg5l9cmQrXZPBjOIp6Ik9a
    5.54 -TkzGF1n0R8vH61F3LlF4hxoP/LufLuJKErLjD5QWyBfAVcQ+zrw+3Q0moe/OMwTQ
    5.55 -pM8jydtNGW6YKQJdFKtztDeF9iVz3p0z0H1Rz02jtTwzXi8kEfNrA6vOeg6u1TrK
    5.56 -gQVjF3MDQry0kCTc4qpVXcmkHSz6vdWeAEWs5UxsfalRnrQRNnPseM0GM59qxeLr
    5.57 -gi8EtbWmW/L2C13B3ZZLRumjuX3HpvjdnShaJZMrhrWVBo2I2E/AIAeA11TIH8Qm
    5.58 -b+y8YGUzORMn+gboxWZRhT8u+oF4rgvq1hbhBfKklV2DdkybeT1gLGRxbWNlHu9T
    5.59 -/4ClUvVNwrO0OoWKGbBrWgve+Qbwjxl4saPkbtQZKYGw3Ulfp2V4R8rQWjd3fccy
    5.60 -LEJctQaD/AbMeKDK69pb22K/PEUHeOJCOp/xeO+PaypREozBpfz9jPDkA61kkizC
    5.61 -/e/HZBrHVp1wpskccgWOT2XkA9LMhe5PRUsHjfMSUj71JcU8xcJi8zp8UZn1Ti2X
    5.62 -zIUDigY8co/GhPvhNg7m9E9j9teqRNOAylsh0ddRYR5zpUK0n7R1ZXhWQnqH/PzJ
    5.63 -piccWz2o6Ztyj8swcRmyE2A7bwRz2N/+eZRVJ1tHDtexTxWQ0buln+RdaYlep771
    5.64 -/O0tF04I5KJcgeOjER3MJZhdDxi0WCR2ZQZBffTeSWeEspewv7ttr9NwO8ViVTE6
    5.65 -dSXlIae/EOqQKwHMDAuLl4biOcSAOjx39e0nBOfSEkiOQEwBpcNsfky3GbgWz/TI
    5.66 -KbdGD3eICdFElMEkK5wyKbngGj0Lgb/Vw0iX/d9s6HjXQV7WQiLFyHLNXcQgDgEe
    5.67 -W5JWE5GmDwixJY6a9B8fEy7WDAoEY1HhSZxjeCSdYdyFppqaT/qkRI7Z2n0f6hfz
    5.68 -KhtuKoSbYew4BQ3I7n4otPiUtBv4Nn+TTTiI7jbPw6np4XUFezdHZPkod9LEnAhc
    5.69 -1h8JAkTdYigk4M4XAwnsaUxvrtkiAYmVZ8E315glkHYN7O6KeOI7dHZHwhTTv1dM
    5.70 -dcR7Bpx7OHWrpvx8hSYpK9H8z9QstBcYdjyPW0W1EZED4OdlxCHaE6/tp5t/fEBe
    5.71 -3t5/h2ctwN3RxpqKP6laePpdBM5oDDwqRr/UHdxzxgjPFf18HnIeiryqdO29r7Ey
    5.72 -3cxc5vDaWR0R1tRmaFA2uuIxvw5o7YeFHwLfSVhR8j0aZvpmUhVtE1K2RJBHwimy
    5.73 -ururtVU4+OX1bVjqxSaxdT+XnYaclO7YBhdvwSPZyjIj1P6MlTIupCN2fkeHVOvb
    5.74 -Hs8SB98GFxsuFXEI1OmcqPvqzEWSlihhS7YMYV2jm0mB3sJO0a8WCxGV15EqR5Xv
    5.75 -k+L7EdzJxWOALD0vvThoPorGsFQ3Q7nWdpBT3oSFPpS14OU9zjF5rXD/zlJta6Wo
    5.76 -nWAsUbF/fJqdBlRA9lfnH8cCyMsM/uWC4zIDqHmpiyvUQ626jw2awmlPiE8S2Cgx
    5.77 -EhhRxmiDvMhdzhLvVm0C/g1kp17A1KFia+HmnGJzDA+V5NOcR+PLSiowzeBhVVJh
    5.78 -c+7tjQEEkeKuTpHf5uBphfak7b7WkXmuMOc9jL5onLS2G0/Yn1mQtqYRCkngxmQ3
    5.79 -AQSAcydQuIUoxqBBmpXHf5FAdqUkXzq/KqROhgibPgCSJSfa/wkjM8i7S7BJoxEz
    5.80 -Kz+/+FD4RDK5LS1cmKdXzkVC9lgtqpYcdqDf7cnJeqdk9pWw7+mh944eErTZXjT9
    5.81 -yi/oTTF5DBo1BBqRaiHk3WNmG663woUKeFZ5D4/6k4Cnze8HmJNU3tcQOQJmWIv9
    5.82 -AWMfKxEyHdCSggt0ZEmxz8IubqpHI97UEKhm3xizO4yja5JVjIEi67S9aYA0aV7L
    5.83 -a6ADW2WAufbtNc5zSCs3eJrRj0eSvQwilHRuZAbZBvRjp6RrT8rQAf79cZBOg91c
    5.84 -ZdsGbBOLsAFI52xuVZea1rhJwoCy+qGyxzwS3dDn2VGXHRZCazx2p7c6ointGyA5
    5.85 -A0QYb9BuBHCfqEEJ
    5.86 -=hjMf
    5.87 +hQEMA1oCBdlzCD9NAQf+J35kigceuUv7sH8/z+fhiFkBjrDuppkEWQRE7/XrD1Br
    5.88 +YTIjoOpg4t/NrYXNIlXplnvuv+iXCpc2pKh7IySdgkROE3tDCEDkU6eAMOywsLbI
    5.89 +2T/UZ8fwr/4UOmSyfba4QkUhKUg+Qh165pGKNzMfwdSPbLl2eWexTRwRSQGrNoq6
    5.90 +WxfqwjIknXEGzb+O1duxbTszZooJC78c1vwwiZhU9PgjDsuQi/elkB8xkeq2cNen
    5.91 +pGDvODb2rp+lWpEIKbPiS6uOQLto2hJ3j80sWdgwwrcEOrtlfqwjWFCBJXQCGNOF
    5.92 +QlJ+X5obaSz3eWfSUFI8hyOJRCOpygsiAQVJ/FgSM4UBDAOo6/9vKSPoQgEH/jON
    5.93 +1PMlicRZU1kv2M/sdhWcO/kkz+5UNmciPglGX/KbS4TvIsulRoym3Z2HoTChTeKr
    5.94 +8bnBrLQazgqUtpP58gfLksQvbRkDW/tYPntgyvoWQst9i4NJhQv9soyfuJGkewpV
    5.95 +s4uBj//kEBPOtlBRVnFTnETBkSt3VxmMIPVnSne+X4pHIPk2lDquPI268HgLWiIZ
    5.96 +XdvsbIChLlykaMUBJDu5vULaBnNre6A7gJa2cn60BDnfE+PLahiBEssWT2SCJgOk
    5.97 +1gBuiuHD5Ld0PN8ZCPXeQ7WnugNfjS3atPGzUMKGbh4Iik4qF/iO/h6MXXJbLk2t
    5.98 +jk9A43x7jQr5V2D0SvvS6wH3z465jR/j1Qysm+YP+Ji6EMlc9nWsSI5tesrMEMUn
    5.99 +TbwjjLMJsSaufKVgd139lXiyr29NDogwfZb29qLcvGOU53MQXf6TBrcrFJDfOUaz
   5.100 +gcWvBczS89G3hfBxy3yn9ID5jdd24/gndCGv0Ps2g902tdt7sN3Y/wcGHpdvgDpR
   5.101 +MO3MkFVbevjyqcslYlr7/r8bvXXdST5eFRuq96xsT2smbanLLoIrt4j57K0d0ELx
   5.102 +DYh/Iq6JmnU0SEhElqg+VPvQVsWRIpcrjkMxvjV1v5z7Gx9YbUv5G2akW2BoMNMG
   5.103 +dq4372U1QXpvw+efpr9VGGQlTJLcXy5XJdmz/n+bt3XG7M6PA45Soj83E+84cNwM
   5.104 +lHT02edZnqQC6Tw1x5yLWby1KgKtajgNYw0qL6pZWRz5sO37Kms3gFUiMST6QANA
   5.105 +7JeBulhvBZiigcOq9vQIKg98JXuSzquIQUW8pCdf3xZ/FuAz28DdIBVep+Kaaujk
   5.106 +n5DqwyxmEBrJJEv4uuZBoWngBiyU++gJX/nItzqF40bWYts4v4tzkFlRa6kuE5Pq
   5.107 +h2vO8TvMt+IuYedy7DKNzpNYfSmC+KJyk8ffCZPVQPId/beDJLU4Aq3ONi99Len2
   5.108 +DoZFPVhENXw+wl4R0jyERr/d/E18QcF/HJz/YDJR8pfb4zUJPUIkbjt5+lSo/RB7
   5.109 +6gKzKJltvz6eB5dNkZ0LZbe2fJ7YnXQxQR1nEt+FPuoPiJ7JOXYOktSSwaAZ6cXW
   5.110 +KbXRTsTQ2A7YSCeQF+WJNLDl93OAJqRaJOrvjGiJ8+WQjFZX44GYV+3NXuuK8ufZ
   5.111 +twGVLOj6cM0rHyAi7BykQ2XK5fxFhEspK4ck7Nh7h9wCAgwEWFapTe7JjSqaJaGS
   5.112 +Si+CA5tZNIp6TsfNEt68QoCqzheEP95xI873QvCt3cMK3HXC2CbDic58RghWv2bZ
   5.113 +8QraqeHntJHhvxi5jXjBEZeqjf/WgAo5Y7hufmN2FIYeQBzy6nHkl9pIhz18JFKm
   5.114 +NJDRYXvUsTPcPjY1wTWN0MXoRVBNfgiZ+rkzGKZViqTlhLXmE8MgpqFcUQKJzn0i
   5.115 +IcvAvaG3pCXgSoJRCxqEC+cyX2KDMpcanqphddFLCYhkya5+1uzcW0vrNpfH7cs1
   5.116 +4sW4iqNrc91cHSOLs59i+dzAI73pk5YLwZhRCqOVA5EwWsJoic59iOvu+el8sgOj
   5.117 +PaYdIz8pGiDquuSye3JObp4aJblDP1LqAnUFS7mL4vpj4pc5jSaHq22lYYwA4kME
   5.118 +hUn8ES4+0RrLDOzkj4VEI43jlMBG16Zr+uxbawERrIJeOXrhBiVn4UCutr8DS8wG
   5.119 +RGD6x5t25/SXvV2FYNkO7RMpFg7dIYM2cNm3W9GUVZ5bdDzKcYONuNyfkDvgx1T8
   5.120 +2Qz57aUNasRKA9c6J8s+jihz63fii9aau7Npb2JSkpmedyQV9sLll3sycxjOcnoF
   5.121 +i5zFkDCy+sgNo7wRzkOkkjuQyjn0RoMIQJv7tUVnoBJPpZYkOStteryH3NJdvXd/
   5.122 +Yl4qb6KeE6EvTyjnf5DDdOFKPzLJBPyHS+3i4MfqvPz/KHXR7wNVy5Dvemcqjadc
   5.123 +N6zGlRVIL5DpgZXhO4lCt+VeqPFKvbO+1lU3IA5SVaeUmgpGbpoyLWsrcdbEUiaZ
   5.124 +rGTycegXOCunDrRRDR6org83shONzY3N3MUvJvH1rnSm4cJCaAja91MVRer3qs4M
   5.125 +i9FlWQjGksFNt5fezxESzvMotbfGh7MOepYZOXjbGijmqA1CSsUW9abhb9r0VeXU
   5.126 +brWlCJjNsBwvvGTvlBOcoJVXliA5Hp8gixL9XmBD51SsfNUMKupSOGEObIHvVCFG
   5.127 +9blBt+HgvaGj5XIzGLHm2BHah1bnex6zzgYZEpBwe7M2Y8IF4x61kEBy0BrFw6ID
   5.128 +rn76e8av9uF3Ps8p60mP4fBmNHQXRMRfkync5S563dHiHdkKzEy0e2CGCf8jup2q
   5.129 +3Dvur75MVsBce3FjOeUmWRhIQpsWHDzC+KpHGGkOakXbu7cK44x1KktZN37XdPGd
   5.130 +3VlBV8cgAQATeoFStPZTV9OUcKPWXDa+xF2uKZbY2P/c3KLvdlE9JRXCCvjVtkil
   5.131 +z+v15GJ69rMqjjrfEfFasWpWb0kck91GctAN1RGdVRq5mPHjcauPLONC0swG+uM6
   5.132 +WzupJFdlvlxA8LgAOa3tScTJfq7iY1yyqu4brte4479eJtys4IfqFKMo9cmGRCtv
   5.133 +Wkh65Z7zuV+MqwTyffgi9POu4HAqvfI8Xpt1I3iEx6WWIYsJYZBg6o/XqlNjvtiX
   5.134 +ejfTfxy/VqCOXT2oha5zbm0Fv8K6r3nLWNW8ZXbTvQOKoRBBTzB+b9sGaN+0mhIR
   5.135 +FCBP7D9plmeIzl7HwCBzqcaa/eIEoEkpHTnw1vFESqVbvRLUmHtBK/WPhOG6+M4h
   5.136 +4S2hLmj2jI0PJEmHQk3h1ICY9CAk9UvRRwdlcNhUDNrsYnpCNN7Oojp6LaJK5t7S
   5.137 +rBQOiE8gsGTBiyk8hZPT6hUXHA1IBbsOAI27kBhvQZztSlg1Ua2GxBBv+g9VRvxg
   5.138 +//kX1TXXLAYWJkwhrX4+aFQxFzOS6lBUb3z4bFDuRWPg+EfsISCvAWjdfqcnQpfC
   5.139 +lveWi+zqdA562WiT0MypYFSbm4S4uIo1s7aHIbziY8bIKMN9cMEf2PthM9TvPeWw
   5.140 +ryxOu63gQ3lJjtyEH+aoKOXGD7BXsHYk2Vu8l23Qt/nEQmF2ly5paET97RmjXmqU
   5.141 +ckNfjhrPn9LIIgAT2c8bwlXKQRcwA2mZCs+mPI5iXdT9eD0NLu0xMpbewATQ+/X3
   5.142 +qF17ExhcUuRnAvuNKtMG4woQVtOTO5Hv7cCQQ09seYczLT/8bvS5vj8KHfuKBktI
   5.143 +YLLGlEFMAVbSvS2sge10lcXJlg==
   5.144 +=EixP
   5.145  -----END PGP MESSAGE-----
   5.146  
   5.147 ---eb7b9ff74466de835e191c92adc9bbb--
   5.148 +--575522c015668e2f9cbd60105375cc--