diff --git a/VisualStudio/oqs/dll.def b/VisualStudio/oqs/dll.def index 17af59a39..2a3b4b8d3 100644 --- a/VisualStudio/oqs/dll.def +++ b/VisualStudio/oqs/dll.def @@ -10,15 +10,9 @@ EXPORTS OQS_KEM_frodokem_640_aes_decaps OQS_KEM_frodokem_640_aes_encaps OQS_KEM_frodokem_640_aes_keypair - OQS_KEM_frodokem_640_cshake_decaps - OQS_KEM_frodokem_640_cshake_encaps - OQS_KEM_frodokem_640_cshake_keypair - OQS_KEM_frodokem_976_aes_decaps - OQS_KEM_frodokem_976_aes_encaps - OQS_KEM_frodokem_976_aes_keypair - OQS_KEM_frodokem_976_cshake_decaps - OQS_KEM_frodokem_976_cshake_encaps - OQS_KEM_frodokem_976_cshake_keypair + OQS_KEM_frodokem_640_shake_decaps + OQS_KEM_frodokem_640_shake_encaps + OQS_KEM_frodokem_640_shake_keypair OQS_KEM_kyber_512_cca_kem_keypair OQS_KEM_kyber_512_cca_kem_encaps OQS_KEM_kyber_512_cca_kem_decaps diff --git a/VisualStudio/oqs/oqs.vcxproj b/VisualStudio/oqs/oqs.vcxproj index 3089c3de5..b5103ad85 100644 --- a/VisualStudio/oqs/oqs.vcxproj +++ b/VisualStudio/oqs/oqs.vcxproj @@ -35,7 +35,6 @@ - @@ -84,12 +83,36 @@ - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/VisualStudio/oqs/oqs.vcxproj.filters b/VisualStudio/oqs/oqs.vcxproj.filters index 0291b8ee2..1dbadfab3 100644 --- a/VisualStudio/oqs/oqs.vcxproj.filters +++ b/VisualStudio/oqs/oqs.vcxproj.filters @@ -1,4 +1,4 @@ - + @@ -25,23 +25,95 @@ kem - - frodo + + frodo\640aes - - frodo + + frodo\640aes - - frodo + + frodo\640aes - - frodo + + frodo\640aes - - frodo + + frodo\640aes - - frodo + + frodo\640shake + + + frodo\640shake + + + frodo\640shake + + + frodo\640shake + + + frodo\640shake + + + frodo\976aes + + + frodo\976aes + + + frodo\976aes + + + frodo\976aes + + + frodo\976aes + + + frodo\976shake + + + frodo\976shake + + + frodo\976shake + + + frodo\976shake + + + frodo\976shake + + + frodo\1344aes + + + frodo\1344aes + + + frodo\1344aes + + + frodo\1344aes + + + frodo\1344aes + + + frodo\1344shake + + + frodo\1344shake + + + frodo\1344shake + + + frodo\1344shake + + + frodo\1344shake sike @@ -161,9 +233,6 @@ kem - - frodo - sike @@ -274,9 +343,6 @@ {ceb9c773-d92e-44b7-916a-eb1d6a2ec89b} - - {10d21755-2db3-4ce1-a5ce-fbfe1aadcc53} - {620a9f8e-2013-4cb3-ad37-2ee4348ed893} @@ -286,5 +352,23 @@ {17171b11-2a2c-4084-a710-c555295e2484} + + {453e77f7-95b8-4adc-adc8-033fe561c018} + + + {c94df6b4-9bff-4578-afc4-b6231012249a} + + + {3c0ce99d-3db6-4a29-8c4d-d1fd4fcda1ab} + + + {0e47e6c0-e5f5-4614-8d31-e0d3caea98eb} + + + {90a8df32-f17b-431b-b488-7a21b1c7d2d3} + + + {de0439be-1a4f-42e3-90f1-e667ccad442b} + - \ No newline at end of file + diff --git a/VisualStudio/winconfig.h b/VisualStudio/winconfig.h index b6e6a4269..629894290 100644 --- a/VisualStudio/winconfig.h +++ b/VisualStudio/winconfig.h @@ -3,9 +3,11 @@ /* Enable schemes supported on Windows */ #define OQS_ENABLE_KEM_frodokem_640_aes -#define OQS_ENABLE_KEM_frodokem_976_aes -#define OQS_ENABLE_KEM_frodokem_640_cshake -#define OQS_ENABLE_KEM_frodokem_976_cshake +#define OQS_ENABLE_KEM_frodokem_640_shake +/* #define OQS_ENABLE_KEM_frodokem_976_aes */ +/* #define OQS_ENABLE_KEM_frodokem_976_shake */ +/* #define OQS_ENABLE_KEM_frodokem_1344_aes */ +/* #define OQS_ENABLE_KEM_frodokem_1344_shake */ #define OQS_ENABLE_KEM_kyber_512_cca_kem #define OQS_ENABLE_KEM_kyber_768_cca_kem #define OQS_ENABLE_KEM_kyber_1024_cca_kem diff --git a/config/features.m4 b/config/features.m4 index 5d6e31857..36a55299e 100644 --- a/config/features.m4 +++ b/config/features.m4 @@ -81,9 +81,11 @@ AC_DEFUN([CONFIG_FEATURES], AM_COND_IF([ENABLE_KEM_FRODOKEM], [ AC_DEFINE(OQS_ENABLE_KEM_frodokem_640_aes, 1, "Define to 1 when FrodoKEM-640-AES enabled") - AC_DEFINE(OQS_ENABLE_KEM_frodokem_640_cshake, 1, "Define to 1 when FrodoKEM-640-cSHAKE enabled") + AC_DEFINE(OQS_ENABLE_KEM_frodokem_640_shake, 1, "Define to 1 when FrodoKEM-640-SHAKE enabled") AC_DEFINE(OQS_ENABLE_KEM_frodokem_976_aes, 1, "Define to 1 when FrodoKEM-976-AES enabled") - AC_DEFINE(OQS_ENABLE_KEM_frodokem_976_cshake, 1, "Define to 1 when FrodoKEM-976-cSHAKE enabled") + AC_DEFINE(OQS_ENABLE_KEM_frodokem_976_shake, 1, "Define to 1 when FrodoKEM-976-SHAKE enabled") + AC_DEFINE(OQS_ENABLE_KEM_frodokem_1344_aes, 1, "Define to 1 when FrodoKEM-1344-AES enabled") + AC_DEFINE(OQS_ENABLE_KEM_frodokem_1344_shake, 1, "Define to 1 when FrodoKEM-1344-SHAKE enabled") ]) AM_COND_IF([ENABLE_KEM_SIKE], [ diff --git a/docs/algorithms/kem_frodokem.md b/docs/algorithms/kem_frodokem.md index 8e07a4a5a..988a29048 100644 --- a/docs/algorithms/kem_frodokem.md +++ b/docs/algorithms/kem_frodokem.md @@ -10,22 +10,25 @@ Summary - **Scheme authors**: Michael Naehrig, Erdem Alkim, Joppe Bos, Léo Ducas, Karen Easterbrook, Brian LaMacchia, Patrick Longa, Ilya Mironov, Valeria Nikolaenko, Christopher Peikert, Ananth Raghunathan, Douglas Stebila - **Authors' website**: https://frodokem.org/ - **Added to liboqs by**: Douglas Stebila +- **NIST Round 2 submission** Parameter sets -------------- | Parameter set | Security model | Claimed NIST security level | Public key size (bytes) | Secret key size (bytes) | Ciphertext size (bytes) | Shared secret size (bytes) | |---------------------|:--------------:|:---------------------------:|:-----------------------:|:-----------------------:|:-----------------------:|:--------------------------:| -| FrodoKEM-640-AES | IND-CCA | 1 | 9616 | 19872 | 9736 | 16 | -| FrodoKEM-640-cSHAKE | IND-CCA | 1 | 9616 | 19872 | 9736 | 16 | -| FrodoKEM-976-AES | IND-CCA | 3 | 15632 | 31272 | 15768 | 24 | -| FrodoKEM-976-cSHAKE | IND-CCA | 3 | 15632 | 31272 | 15768 | 24 | +| FrodoKEM-640-AES | IND-CCA | 1 | 9616 | 19888 | 9720 | 16 | +| FrodoKEM-640-SHAKE | IND-CCA | 1 | 9616 | 19888 | 9720 | 16 | +| FrodoKEM-976-AES | IND-CCA | 3 | 15632 | 31296 | 15744 | 24 | +| FrodoKEM-976-SHAKE | IND-CCA | 3 | 15632 | 31296 | 15744 | 24 | +| FrodoKEM-1344-AES | IND-CCA | 5 | 21520 | 43088 | 21632 | 32 | +| FrodoKEM-1344-SHAKE | IND-CCA | 5 | 15632 | 43088 | 21632 | 32 | Implementation -------------- -- **Source of implementation:** https://github.com/Microsoft/PQCrypto-LWEKE -- **Implementation version:** https://github.com/Microsoft/PQCrypto-LWEKE/commit/47da00a91270b6f103232314eef0b891b83bfd3b +- **Source of implementation:** https://github.com/Microsoft/PQCrypto-LWEKE/ +- **Implementation version:** https://github.com/PQClean/PQClean/commit/e72fd489baaef597715aa4335ceeea4362301b55 - **License:** MIT License - **Language:** C - **Constant-time:** Yes diff --git a/scripts/copy_from_pqclean.sh b/scripts/copy_from_pqclean.sh new file mode 100755 index 000000000..c16cd697c --- /dev/null +++ b/scripts/copy_from_pqclean.sh @@ -0,0 +1,14 @@ +#!/bin/bash + +set -e + +if [ "x${PQCLEAN_DIR}" == "x" ]; then + echo "Must specify PQCLEAN_DIR environment variable" + exit 1 +fi + +for SCHEME in frodokem640aes frodokem640shake frodokem976aes frodokem976shake frodokem1344aes frodokem1344shake; do + rm -rf src/kem/frodokem/pqclean_${SCHEME}_clean + cp -pr ${PQCLEAN_DIR}/crypto_kem/${SCHEME}/clean src/kem/frodokem/pqclean_${SCHEME}_clean + rm src/kem/frodokem/pqclean_${SCHEME}_clean/Makefile* +done \ No newline at end of file diff --git a/src/common/pqclean_shims/aes.h b/src/common/pqclean_shims/aes.h new file mode 100644 index 000000000..70c116b8c --- /dev/null +++ b/src/common/pqclean_shims/aes.h @@ -0,0 +1,29 @@ +#ifndef AES_H +#define AES_H + +#include +#include + +#include + +#define AES128_KEYBYTES 16 +#define AES192_KEYBYTES 24 +#define AES256_KEYBYTES 32 +#define AESCTR_NONCEBYTES 12 +#define AES_BLOCKBYTES 16 + +typedef void * aes128ctx; + +static void aes128_keyexp(aes128ctx *r, const unsigned char *key) { + OQS_AES128_load_schedule(key, r, 1); +} + +static void aes128_ecb(unsigned char *out, const unsigned char *in, size_t nblocks, aes128ctx *ctx) { + OQS_AES128_ECB_enc_sch(in, nblocks * AES_BLOCKBYTES, *ctx, out); + OQS_AES128_free_schedule(*ctx); + // FIXME: PQClean AES API expects that aes128_ecb can be called multiple + // times with the same key schedule, but this instantiation does not, since + // it frees the key schedule immediately +} + +#endif diff --git a/src/kem/frodokem/FrodoKEM-1344-AES.kat b/src/kem/frodokem/FrodoKEM-1344-AES.kat new file mode 100644 index 000000000..ebfcdfa97 --- /dev/null +++ b/src/kem/frodokem/FrodoKEM-1344-AES.kat @@ -0,0 +1,6 @@ +count = 0 +seed = 061550234D158C5EC95595FE04EF7A25767F2E24CC2BC479D09D86DC9ABCFDE7056A8C266F9EF97ED08541DBD2E1FFA1 +pk = FC1FFB174603ECD83AF919C395EAD2D2D0064F33015F262DED5AA411624A1F3346BDBA70C54372B6F0F573A7836E5BE5B7726F6FB0F81F9DA99A2BCF7E3D26B8A71E2DEC2B39F920BC8053CA82EAF6C7DC0AA3F4A376AC3ACAFE1BA6B4CB08E66731EE0650B18591A9B611A62ABDE672A9A9D628FC50FF356D429A805F65BF18AEDF8C9D297A3F5CD7CD7D83715682AB2FEE965AADBF84F6A07E84FE69614F37465297FE2E1D8A5A3F8DBC95DBE17A9722157B39C60F1A061CE28890A58196A8DB813BC185816FB73691925D14DC713658AB139A09E43F1E7E20384A90CC3B6D4DB387C2119727D5CCECDFCF34E87FEF0206EAD4A91923DABD52DD141D0A559B9E5D3B6F9BEACE8A2C2DA666266E113A3FB9D680C819584255ACC27C65D9E6B9095EC6210BE959EE94189B276BD2E21FF526D4E8F751B893742DE59E2A4FC1A595FF09FF130701949B612B141443D7418D164CF309B6916699B5FE6485022859DB9BCD9670CC1ED308E5CC89B62D4616AD3114ED36FE4646C43DE3E8B0DF37C8BDDE5D5EF034D0F596FC28FB9CF7AD2B161E3A979D0FEC82FB7375D62BB94F60B8BFA7990C780E43D76CC32D07C8684D46FE276DBE7B60AD67DFA6ABBCCEBEBA41D408BFB4B89AD8AFC2F3768A6F707212ECF8C8EFF396CC83E0580D839F1441C825CE6FB31D423A92329C9F68AC45678CEFD078DA37A3BA671B8D8626413E80952A93919B6F9DBB72E93EF4FD4F06EFB5B9A804F32998F42F6896406CAB27DFEC11F4E165298A5DDAB87CC6897B5ED7E69FEDBC4DA8AC6DEF9CD7002D9AAE5AB8BD34FA1AABC7474AAAB52933F08D6A1745845AD97E4639C4C179D8B30CD15F1E2BC53D7F5539CB1A4AAAB62F53D264DB16230C60E1B039C454CEFB5D14B7C34EACE3A5583B8730613D12D2B1ABF225D5647B2D3E31F216EBEF19FC49281D04D976A38BE43C24827137274AE7E695A81F1B0FE7B3E5CBB9BF2012A2EB3CEEC883A08BB890B90C418E981B062FE7646014BDD0B5AFFFA0753D7661E5AC75724E90008040DB57E95EBA349AF53A98133F383F2CF759E273329CB1F33BB04204ED08E6DEE939BC379CEF74BAA1BA6A46CC1F5A1A631D2100DD519E183CD2F7D956772F0EF8B6A5BE7953EE9CE7C85556F4E090B86C1773532330A7D06544CA1678CCFBC82A6B75C22658A063A0ABD67A85F64DD1179C684CDCCB1BF919BB3646FD316892E6D263C57535873725D5B54BFCE128173B4008E8F498363C97CE1CB9708A76A6424E6C7E5A01E0C7384F3F482BFA86D1A01A1CFEF68A75B607D5F20C2A6067F4C61A13982B19B3D5549929B6699C96D059C25C359545E6D6C29254891B91E064E70E1D179E3AFB9225E32072F48D7E0C9F47BAD05375419C3D594B17B1645535689C8AB2798C1737493215BA66DF2E20C2E22982CC427E9C2965AA4EC046E1EEDE52B5B986157C41F556D482212930A630D5BC6ADEAD05C186B41159935D448F8FA1050E23484B01A7EE19D35EA27F4112B1CA58016A2AA5E76D9F295D8D6D457154B6A1AF2D1DCAB231761083899F3F41A859118C242A886D72F1CD38664D8E6531B6E25259884DCFDBEC24DE5BA15429FBA8514125BADA88746DF938B6B87708846BE368F6483EE851455CF396DFB20C897BD68851AB01186CFBD2E1F6D3FA065847383DD829E27A54D852E05394FD899FF70524D3ECDCC4B35B5B43A495A938DFE5DE073B67E0C4A781787918ED2E98B55B095804E417C342E791067D37EB68997BC83AD5EB6C86CEA821C001F41656E4E2CC1497990979A1B6F025F7A599D9C7CF9428DFBBC7EA96D2CCB2C548DA5FBD32CDC333A603D805C1AE5F6C4D959990354F4C78B8BD1A941BF0D8A911F9AD3613488CD70334C2EDA59FAA0EFD125C28299F54697DBF672EA14BBDB06312FA3A94F527841568B29EFFD536754764759EBB7EFBC54045DC9EB24CA7FA1748E64B734466C070C4C0B6C22E4AE682DAFF93205392FE4546C2F7A2623DD2FB92D4A5D1B8D23A2EE8A98D170A32F60B234CBF73A862088FE227C5B4CF3E35AE5381234E31BC5F90A2430C8BFFA5EB1611F5AEA8E24C4D585371FB1359C230A1C6C3A300C1310EA51E700AF3773E261809F204E732E45C4CF751D1BF24D6B224AC7BF03FEA68C11D290874A089B1D2727B9583CD8B5283329649CC9395D67AB84275B532533387F8DCB3FB90D9A35CB62E2B83A4FC79B70DD0C94E2E6C37D274F61E40F9C89DF4CCCB2CB8BF81AEAF2176DD23CD6DD88EE8B3A127A110DFEAFC9BE4492BA3BB70363BECECEF05ADF7153D353511329437F0822FD2F3650891CC0EECC0D0759CCA7C86CB853EBF871BFF55EEC37B1B111913B6B11DF50CA57C582E51D5ABEFAEFB714042C186BF409D2DECD1042246493947DD4E0D15CD27CB4B247C56DC9A707E638E26D5B31A0939E8DCA5C31CDB6D6D505193B6718B2C85CDE5758B6F453DA0EE83F49FC0C5F266F17562CE51BB2491DB0223FF20E7DD1A3E46A0BC579DE10838F7CD6307F3A159B5CC3C49F0A8369B0D0F0452EB0DFC76613AD2BE149031D294BAF7A912E3D20B3F41DB8F38846B1CE24A4735289A751DB8653EA70C6C6B16B2B3A61256F6B4B2BF35F2C738B8B32D6A77A800E105B3D8FFFD0A4931FB0097BF2308618CF29EACC1EF1635E52A3CC1C2D0D7C54180A2B72E6F3A618410F0F2A9004A6190B9F90ABB9323D24944AC6C5A0F83FDAFADF9F796A0B755649887B0F5C21935AEE6BEA060619730AFAD95191ED137326B6D127C0F3E7843C987CC9D4D0BA841C78C5242640BFA6AD8B7ECE59F4D0BFE4E4612CD5CD39F02D5363F9B0BEF64B19DD7FCAB8585BA880C16254740505B58D982B74854034688F866808F2838276D9CB3926D9CB1674DE57107C4FDEE0E931C4C05E5D90462ACE250705CC50C039827B778F9C97E26D72FC0EA88DEB14F0FC9A53D054211AC4DC95360F3BC18A6A443FEBF1518520FD628AB1A98379AF608CFB81F78DE5D3BBE09F26B17C93CA01EE3C693015D46E3E0E00ECC544813B603B4BACB4476E8890A41D7A20C25CF642C84800C7DF8B15A1FDFE3A3BE2337BF1C04E78341897C34FE5F75D48BC971D25F2A2EDB89EEE72044662B23277F4E580EE6ECB6F628CED8CA837F2F92F8FA9A41A3CF23A670C601393C599A8859B78EC0406A96C3DDBA345551C6E00318C4016C1748038CEE3C9FAA92302CF86F4E26BC43B9BF18A6B937E6E3D69ABB52CB0DE2CEE28020AD87051B645D47D85F4853966C42A547A66B00BB38395B43BEB7DA5C9479168882101B8BC290E126B19982C234BB6393E6AEE23BCB1AC9E00C12EACBBC3352812F0A37142578626E25AD67443140A0EA88A2F65C154CB534C1023C1BF3025104BD52C97651331A774135AC579D7126F4C2CA297414F76984AECCD4E9B51C6AD92F52A27118D007D6C0C94D0EF35FD7587E1ED3C3E53CCACAEBF41853A7FDEFE31105E075F670101E3F5099F9EE8CD96B08B285090AD067042B1E3AFDBAC05F83DF262764E97EEC67FA921A961DA2C142E5E40D13C2361D489836BD5B9E24CCD482543370E832B7C581D5EA190D56718152701A02341708B4629C1E1B55E99BE195EB8941E5A26DA5D865596C0372843B483865B959FE132831C6158C79B9D81451854A6F4783E4CA1F2B9FC0FB9F697EA509FD2034F55F2FAF73ACDBF2B131BA5D6437F6FDEC72EB73335C82D5515E6F41D44DA9DBA23A1F867B95B7AFEB070D2BECC79BE0B0DBAD7FAB7FE8C0D43FE7F5E8587B8C4AD0EB70C7E3653559186D463096203F09678FC8F744411CAECD7B9A9244F5E4F745C465E9D9502BF8D91BD037DAB520E2E311EF71840C0E2C5D33E9389BE65C949D36F157D02EA95B4D411B30CD34012598500736846A396EE4734DF4ECCABB2757AC66FF44096ED328D14BB384F1E8C0D66B6EEFAFA08B352CA41DED01BBDDF56405E1B2FFB0915628B822D5ADD267F5699A0A9717E00E5738F996BCF69168F4155D383F4AB13B9C206E7336367BF89D4C709719A4C863D0D809E41FE1AD37F45D7F5A0AE9A9C9CA3029F9D9C25125ED62897609CB5213219357DE54BCA24CD933FFAFCF3819226204DA5CA3BBBBD1EEB52F9DE43967577612263976AC9C285691F22F8F2F152657697DEBB9E1008D0AAE385FB471FB486CBDF37D3F9C9B93B0A876B6F63A055B860F2ACF452DA753375BF6EE017E1E88A07944FF7A46A59BD2BE0A578A4784961B4CAB620F4BB892138CFDDAB99A7511752E8CBF2C5E692FF9EB4D0833CD06A8E9972B63948C0C30A49C22CE00C577168243C69BAB01DBE675C4F84D82A45F54F15C48FA307E29B5357682F46812C890DB6604F30773793C91DC01DE490380153AC81CA6BD4233778B83FCA51C35E7870E1D8FE3CCCBE02D74D86D553F0F446A4E49CCB66328FAE0888F5C183259A5838EEC777B9284E288090926F92200611AE27CA84FEE571F67E926B9C76343F0332FA770E5A15521ED6E81557762FDE88A9BFEE739BF7DBE3D4A3836123894FDC5EC20E189E3CC0B1DDAFD3B2879BC30AEECA0CD8AA53242E429E3A482B0D68DF6C4154D9A201D39D7FCA78119E6CC4325F40108A3D95D90C97D8C6CD71DB8349510D153DF5A39EEBEB004FAC7A414FAC1BF323F22624822BA6D35F7B31DA966351B50B3A309A31EA31B1B164F71A40367F847DBE959A0B005E17408F306BCA87A6DCF13CB8CE5F5B7D476C21B6CADBF7324575B5233B6855259D17C1E9ED6B52A6BBE81CC30A166579E9657BD519D978F19B564C1F20B5B5E4370AE562454671E0E264EEDC5DE35A69284F5D302AA3492AE5DFD8B0EC5456776E67E15206F31F6130BCDAA19DE8F931BC7E76F6888B3C966F594F2CE4538E671CB4D84E8B0474E3B4598B49D3E64ADC00645F87DB53046C4F5ECD34CA26967D852B74ED8FAFD61F85F1AFFDEC3179BC619102755418F8FC57D4D55F1DB0030B8642EAA13842A1FDDAE82990D11F05502859C25E775D0D1D4E5E33F520A9AC4E9E51D2A91FA4876C71FB59C105274C1E31FBF9ECF35B827693817F345ADEB91FF8696DAC4AB6211A7202063830BB443F33BCA95940D64BC90F9C4D3E59B06EB6A6EBC492DA25FE7AF23855FDF58BD5A96E8515E8C64126E4BC11096A9A8C0E904D0F303F67B9417A3309C230841E0FB1A8C69A2A6CEDDEFB82B176383CB564686F3AB298F03570A88394244E83B8662552E7AB86BA4AABAEF66E2ED1EF5A48CD25C909A4778B39D91D4C51C0EAF4BB467A4CB0AD7E3E86B2DFFAA6B6945C1A33E1FFDB8048EEEFBFB0E697C537849948E7C524DB23DAEFA7782FA0AEFCF60D5DD5FC81B0B6D2EEF9C34CC15B972C70F54ACC7B7E658EA0450D33E8C8B0E0372D628E8458C754D261BAE0BA90E4A57AB46C5791BFE75EFAECE591C9A5AD5392C3AAFD6B45946E3FB4F2B4905F051FE912C54A5B27E5F778FD8766322ECD38B7ED045B580F25807236D079DE36B6033D4EABC42838AF7AC2C26BB852898E8EBE1EED8D1B2AE1CE9ECD98F72C34AE06B45A86C7B6C659DE8A0098DD7A9C8EA136359514078629AA1D5303748D94DDC2DBFA3C93F2C8357F619EC976493E442A187628B5F70D707AD998FE3AD1B73903BAD4916EDF41D933C112589883C37B363F392AF07157F7C7A4EE0A11F46A45310B882C4F5F2E3C848485E7D43E50E1087BF584EFBC0AFB148F46D3FEDA79F2017D2B5726AC570DBF4550F18528F4B8ACCE4AFE6CE400FB71750BA64DECD8EA1225A6D4DF4C24E0D2C52631E981EE4D0DAD5B03A7B086D2E112C354B0E61357ABCBC454FB4C29E41F309F9F0C8A11710F82660EFD25C6165B3AE6C8E5C842F5A4DC9E000B12C0529B41433344FA7C7F46E6803ED6447697A22D5E172133B7AB9BD105250FE3374BE848A0BC451A7B06EBDE2CBF4F14CD8EF46167F203857170269500EFA5F34B47C75DED9B9D874EFFA7ADB83DFAC202BC72F4A4DE38D32C853B9EE6A163C417C68AF145FFE2187A9F1B6E2AF65410671FD5AF7EDD9BD5E7A57B3EEE08833FD38E70985E32E70A24064E0CF5A60A6B723AC6C75BF6ABCAF73EB7C61C65C370EB62E3A18BAF4E4DEB69758DC84A07FC991E2C754F13C2C580770D3946AD4940E826EC86F7AA8B374E788E7481F2927A32E9F8CB6E4C47EC76EBFDFC1C649C7E50D00D08134F5CA712AA160D1A05473DD9CE30C7B4D154C39ABB7342D98D723A9BB218EA0EF3205F0E6A4CF61096E9222EF98F11602DC18B9D0114E7AF0735B2572140CA9A0A4A9B6BC3AC7B7881727E11EC706EB258EC2024873FB7703E8E96F8188272604D1D771D3463FD5F3F45E42173138CF550A478A0C01D5B9EFAE5100479504BA74CF3D813AFB7A6AE5FE854F9280DBF36B20977C6133E153D236805AB9794960A5B2A9CDD93707CF544CD36F00485846A5975B3AF0C5C97A3F4DED111C7B6D29070ECFAABDBF1D0E009CB928BB5AF0203328256EC5DCB91A403737A64154B688DE524F17D96A71191F5008ED7CF3B4F7BBD0DE39E039C4F39DA31BCD027FCBA14BEE806DA545253E407ED2BBA79FDB5FA8F6BE52F207DFEF3FE2518752965BBE5C9785F48D5B23B82F2DE1EA32B91898F82BB54C6C7B4214EAEF1DADA8AF62D74ECA039701F583BB4B6CBDC697AA3A2BBF69A22189A311BF9C2378AA9CC404430DCDFA305BC9D075D9EFEA78586A3878442353D3B74B127E881E95DB0159B664AAD3C80F1B03E87DA6A69C0903E608D78BC9F5E5D36BB37435B4F045528E088CAD8A24D52DD1357F2393CDD64D520B9C0E296A822AF9ED06EBE11EACDFD77140EE6FEEBC20ADDCA58618E2A0DE98AA13593AA645BE6BFE1B5AEAAB1CF52F0ABD6F65A9E452FC132EAA620765D609198D2EB5C8188E900BC8CE29C14FE817F9C6BE1F91C5CB78D40F440BEC1B04706F3D258347963CD5B9190FB4A65C794CD4A3A149C200CBDFF183ABC8C0035EE6B35AFEFDD3E86D9551788064CC2B716353761785062018059B51C5D30D8869DADE74176818163843B6165280B6B354FD1E4336C7A8BB08F6BDDC5861384821817D30E463632472D86A9B32B693A8E88C54A214EEAB7F51DDF3C578B86EAA1D613E5F643B3584D7D05C58C67598D4581EF7E88E5A728E9EE09BDE4C1E7C969C0DA36AB89DCA64D8167FC50B2F6EC4BA7A6113CAF12274051A1F6624E6B58E0DA1E7F630488052D8CD3ED048D396E8571764594869E71C26BAC1231C61AACBDE2FA6346503F7A22B032874E64952C28DD39FD55F03FB1ECB32B16DA8C6212945E07B412EC34013D0C91CD81DFFF24D2068A9CC19D8AE03574A3C95F0A62FA02E7E28751B2690A1A2524AB23DBD8D08268ECD85F919E77792D594541C1D1816315B7CC3BC324155E3EA43B31A24BBC154FF046A2B0509869DA5B4D9CD0EACD7143B01C14A8366F881716F5064E7B3320CA05B1B061F171E69F4A3990601FC66E42BAB674060CE4F05886C890F79B79D4153AD32882D5CCF774FA9EC686F059D8FCA2B1538DCE6F8AC7A9288FCCCB440F04DA4D9F01A13AA082D4D28D9F58618E9209A369C1D576D454E142DF381270132FD6E568909550D4A06BDAFAF706A438A72AC892121E7FF8749FDFFC5CAD9DF02AFC97A55442E842533BC743FDA390BFC7460A0E076C3EE2759AB7336798FDD9CFCAB7486DF61B3D0D89B912D7902470C2EF5E9ECAFD667B1E41E7DCC2A38C9F7076AF894754D1257FD357B5965A98349BB89E4069A147D26F720AC850A26125D53F460B7E612569B4B0336750233F0F41C2217D7191E1E425DCA14F90F6584711B3A0431C3FF74A565EE693E1658CDD6A27E6BD3677AC5FC4A33DB372367A63461D57ABB15BE0359ADDB47F65E58201D831EFE42525E68AFE4F0481DDEB61D776C988A8613BBCFD62651F8AD1AFFE2A249B6036BEAA511988F742062F401E5CEFEFAF503C05BB1CBBCE9EF8C81DFB603EF1751CE00EF821FFA58308B7CE926297EFA2AF0169BE256360A3EAFF323EA5614F58CCEB780277DC6DE6CB3A01721A2553B4D5685B05B3647FE357DC4E2A89E3C03FAD69272A087908B174330B7F8C2112A84B4AAD6283630DC5CEAC1BB4114CB5CCB2F3AF20662BE47A2AFEFD3C383B29C90A11692B3BE38F46E1533A3DAE1EB31F2946442754C29B43D30DFDB5773AEC56135B09FB5DA6FC3B83C45E4ADEC2F24F95FA55E190725B94E7BDF5910D5998F2266274A6EB39444A436C9EBF23FFEA76806266CF588A7BCAE9C48E5ADBC3250C6AE7C11441D15EA29BFE2C7190509EAC6FE3266B90AE98B5EA6D170857DC9153B43F0CEF4CC05055A6C1A0914F126DBE299F85AA061EC33767B18B7CA63458A3A3C82DF01DB96E5619912948440E3C49EA229E2F6FB6EB7AA8C984EA2DDE6F607B6798BF7D2E7D33DC959AE748AC541E01B67D368661A79E5C46497670F478DC01864F18FCEF49F5ACB6AC5C84B6E1EAD9CFBEAFC48EE00084C321EA49D67625CEB5674F43D39C81E124A0114A91F617E084ECBBA87180953BC80D203F4B3A75F226C661E649407EE9D68937BD33CE7EC91E0AFA9C363A75CB65096C0FC133DA8252FB047804076735D7C904F636C905D4BF74392BA49920EA7221474F2BF73FD7BE6F19D05698036B4614E6308873BC2FFFEAB72C7FBBF0C0503F5E6EA49C900CE153ECA167AA4FA3D32AAFB2D1C0D0A7DC1AF9406C024B582388C1EE8D0353A4AB18051C18E2CFE0D479BD9E09652BB6DDD877F8B4D3808EEFB22AAAF5CC40F3B82B7169CCBB69A21C500B35F2AEA46E48F112D6813BC81AFEFFD7B9A36FBC3AADC6A19F6DB3EB1E8B2236CD06551FE5C578B6A6D0DDFF81AF0402E5F066BA6F4EA6AFB2BFB55DCEBEE95DBF0C93446193EB3748B425DC7C321EE965D39828C5B44F1CCED3069981B58F6A9F8D28C990E233B8BBF786CFC6A5CF9348068377BD3B64034E8EABE9F03C9D7D33386E72D8E2D741DE5EA84C070A4CA3B38F62804D05B2522D150B0A4ACB32569821AE30819E0CC93C7B7B42C90AA4BDCC4624277289C533B94C86CD163E5E51A3B70A8EF2B1A8306F0E0B0ABDBAABE5A2C58BEAAE5F0BE26A6755C70E087FCE5CFF24647C0ACC40449EF2F547D26EE55ED4E933707DE3ECA84FAB5A4F5F255034A48110389543BBE46B7A3D6C10B45EFFE9549A47524FB969B9C90F0F212507537D93832DC50C519322C87A4D8913639B461405CDDE487619F6EBBDFBE1B4DD4A6473BAF95635E2B7EF84A10AF13EF15CFCC7C42D7EAE58CE85F2201FF88DF824EFE0EDFDA4E99AC1F14D12C5F453DFA06D9ECB924460CFD9392FC30C3885CEB880E6E19A34366567825F7970D3FB3CAB15FDC9A460F4F7F8E9CCEA476F410201A2AEFA692B5950DFF4ED10D79375EC9CB5D4BCA16AC534C733FF1D0457CF93C6E25CAF7806A904637C903BD3E2A11064D9C79B50117B134E6F257C225E1A63E80DA8B471C4253360AF50338C10F598A62E37AC82BEE628DDD108966B56ADC9D382CCBE1A8881AAA1BAC2AC1FCB4ED29458B74407D02129794ED9BED63947885DA9CF14706227612565694A90D989998A2B1851DD55EB0AC88BBB04128D4DAFB8727FA4370830FC501F05F77059BCC77DB888ADE5F1DABC2CD029252A55019862EF60834C1C72663AABFE4D5B37FB913FCD9A164C7E8702B6EE4DF7290B361F8F63449BB666A01F1C3E44D45A5E680ECAAC99A063DC1DCDF96E5044E0F2B948702E2147B3545A6DF66C7B7503CD69EFED7934C89699355A3DBEAA02D39373F913CB154EA7EC0E9976151B11E2F6BE3A7C073AAA536D5ABD722C27C919DDFB227296E37E25419664B2ABBC6A33EFCEE112F57C8E4479DFFA211B690D6462BB492547C9A53D5505EFAC698F486CAFE0A8C17826B50E002B8D58D1039D8759F0480C3EF4220F75950A84C2C92E504744473B6E0694D33363972813179A0E58E9D98C2C6FE7A686C25AB5B9F8EE9A830C9CC589B04B0394455A22D45B4261239685AC2E38DCE67B5B73A1F0F533CF01905C6C3A7F7697D77A8D14E85B6490B1A93D0A4006B573AD03C23C2EA8AC8E55E70F18D658AAF03025B702B17666D73E4F719F2F727715581BF5112DB065B287C440670BF1510FF4334E2CAF317C654041BEEB6C58502D7CA245F2FC698EE302CE30AB7E04C754AB906871517504664BD0A985097B900A5371F0FACFE4A46D5B440EE59185CA86A37A411BE01ED8223A2CC8EAD5476A637573B50A148FBACF400D3DE835E6060F87D8E1FC4DEEC635733CF6CB6262B2AE1741651D530DFEE4A2831825934A583E2CA4D9AE79B0ED46B3FE23C256CD08DF00153B1ECDE702D6FDD4AEDCB096FEA45D5F8A01497081B191CA0965029615CF62BDA9FAC82D1BE8F669D685C131B636FC42E101D55478C17BC3C90EDA00D935FB0283DD6FB1DC98C0C470F5B293B5D9C0E22318B1C7098B75D557826531925EC1AE4BBC075BF8A127494351841A7BE3B60A780C4771BE3F3273B81DC8705D79AFFC6069BAAB443708A21513C07B9F8ACB2770C2A2577E79A3983E7B2685042B0CA0B2E4043DF5B92C3A98FCED8BA8A2D494EB67E9DD59E45D177BF30BA204A714B587A86C613EEB8EB318080DD63464665E2F52F25AAFE39ADA229EB059EA66E782A7746AD2FE93FA46A236BD3C5D2EA35AE09061A0E567DA23020CBAD1C2F12137B0D9396019B564001C840DCEC89145F09621DEE5A61FE14BD6366A17F5DC0BDE46E6555A76BA67E03FF67C48AD925799C9986DB844A501F3C869C5D8D4E6BDA5D7FD8E852E2BFEDE23DDF51E85BA28C53EBAFA11CC247EFE8D86657093B72F067B36F04A3D6351F1FAD45E3ED03103535BD0830BDCCE5B923E71ADBCFAF084C221AAD9D5C9628C7B7D3AD5B497C868F887A5B8416CD0990760D51CFB7AC7ACF9F1B9D6C97DCBAFB04E1DA5763C21D050527A7C3BF91215DF61977DC8A4E49310B8F0D19C41868C822C069D27F898E5876C99AF54C39F34C26E47FA7095E56E3A2293FD3D259E5A0B93A4262D5E4FE55C60899DFEDC376AFDF8157E5ED9BA65347BE93ED45FFC350E84DB8291AB58358DAC2D2C0CC311763FC283F4EE56842F085F03EBB896C370DD74CDFA8EF6C858FC7D042E132CDC0FB21AA03FDC5B014879A449267D3AA04914020C700350A100EEB82FF8F1CFD8E7A0906D0649A0966363C3F91780CE5D78295A2108ACE57D930275584C92B23AF6B39E5F1634C8DF0F4B858ECD53E2A313CFFA4B6F7C7741B8167596EB738F98837DDE7569CC9864DC7EBEC365C6769113FA4D97ED70DDCC91EE3F3B95F8A301ADB834752C8633011C2BEC67232FE5259DBF0123C9B8D81000AD6B1CFB89E9B520AED7C7332693A5CEAE5E3B54C3E3DA1FA7703DF24C3A3A26434FCDA265E19D9509A7638933972C577F584C392A5E87C094626F5709774F97C95A80F3F35FABDB40A7DED6E50AFAF390A9ECBB8DFA1D86A808379A795516BB6821D9529D6B66ACB56A1A1AC41878BE95B8EA31933D872108B7A69508ED5BDFC0BBA1E752D20E3353BCC27CE42321ECCA4063EAA5BB8EF7B8F8F1C628928B76BF2F327DB7ABDC920CA1252FDBB4DD152E793284DEBE75DB6D64CBB681949E0681E36CF44C4DE83C4D18200E8D8A1CE866FE89A0BEE019E748E36C6B169C0D3C791A7EFE6E4CDA3856CC9D521217F03A6999D6F3F5EA8724B8040E2A044724662445B7BFF3CD8C8D561441D338B475955FCE191403EEB4B2A1D44E9FDFB06966868085D7A726A8BDBF7958D0ACFA1C477D1C79AA39236690FD7EEC4B52474F0391D162549F668162614176B4CF880DF9C0A2965760B73A30BA269F151D8C0E128516D36BB80322647961F4ED05681378F6FC94444F8C04EE30B5F667706E5DCA0EEDD1A219B2E9ABBBAD43C93D0D4257494B1E1440D0B6D0C1169768C9B6698089061EDCCB88671637328ECA1CC7CBA0F780F28BDDC2E00D99200F05FE59C901BAA990E73715BA1ACB7E53A371C73D30FE10B54FE7864AD0749C025726FCBE8F361EE38A0FD94C0A88E5CFFDFEF22CDB4963294C2836EBDA0586171A764C91571F4B9718473027B22D31348C27F22FF73ED23E096ED8E5F9D90E0226CDCD18E7164CE25D35742C7E82FF555B34F6FAA4D5E200E447DB6BA695401238DF3C83CFBF961DE16F9E64A1DC31B76260AA380AF8452AC43790DFD07202E3E12887B2520BC01A36D35C5CD72D298ADD8D7A04ADC20A59E10E60B2824586B8646419C48DB372327034BB3168081AE9847F9663715C5153B5EC52907F4028FB3B5DF18614AEF46336D207C7F90B3B19B75FABEFDFAD06EEC3B54B5BF7D19D96CFCB7C60325BEC65574C040465951175AA63CD460734D50829911CBDD8A11A02906792D9B9B37E793F9C57E72CDB3E8FFCAD2079EAC80955651F01B9E194ACE2346C696A1EE28D651E49DC99064D65B3CA41250DBADC53E4A976625CDDB5C7E39375DFC108F6EDBE3536037FCC6115012E972D3B3AE6E50C1B3674BB914693A3DAEBAA1092D804A29E8E6D876B0710EF29146060E3AA4606F64318D9027B2ECE36F60DFF5AA427E3F1CDC15C745369AEFA41B7D4E03578EA614311619AE0521ED986215060642842934D45714FDC47910A529F1C46D72ECF731A4A65776A61161580A48474B8E11098B4A7B94A71818EF2BC535EC0A2A094F5992BAB43D6A7D0491569260052A5DCE2CF63490F30ADEEAF0AD56AEABF7B927235059A2E12D7E7176AE090A262EA4DA0676D7060249A6DE94BED8153AD85E55818B8DE18DE28A85934A37E5BFDD310D55310B7FC04F86FB5CC891BC780F07647C24C9B9E4B195E3A372FB872CBD91D2626803224B52DB990D5FF50311FA7B432D9D4FE747FBF120C01056C5E727E0829502406803DC2495814C7B446F237D7A98E11357718B07CD8313B026568F1D9D1506F15D0BC629A543D29DC858563B24A302447BF5EC4AF36A1E7B834F5E37D9909C98DE4EC907F7082886D6D4BD79A46F73B327BD625B44E8226CA1F6FB5263CD843FDAF95280DF240BD1AAB90821CE661D03284CF2D03FD2324496104D46F5B50F2641CFC612F718559686EA76B4542DE9E3BA71C490252B23A5138440E8201C2730E018C82908B3E3EB71088DA1752F6CF8008258040B3732FA6AFD55D6A44C5A27D0853AE404BB05E7FCDB8144BE329EF1051E66ADB118A5E4404AA07C642CD5B6C0EECD56D8887445EE77B66ADA699938EDF3E48A0D5FAA823459CD7099340CA82CB3AE95AA0F5B8D34BA7D3939578A35B31CF2666CD1DA48AC87D33132F93E40B2A7A58C2B8DF55971BC8AC97BEA274433F08BC1080263465EEF89CAC99ADA8DBD9B7A2DFCD3B541537147006D5828F4E0804B1AA1020FB308CBD29CE9EC8D741E6E79CCFB08D67E5E5301F7FD90D04480477518EE8E7AF96A8E5B74F64E0DF3E14A56ACD080F716AB67EDA365DA6FC3DBC802DDCC778E50B842CAC0B010DDF5D19DC2DB388EA93C6BF24589D48D7949B834D57BFEF3852E8F29097264338B0C04BC32942634A18C05486E58857BB28D7C1083783D9B5CAD4B01BC59834DDD43904FC4ABD52942F2622186B2F5988FE1D1DDEF914531D6F93E706C7E3F0A1492999DDFA3589AC751C3FDFEC8DCE22B05D2CC263EA7FA06B31C9B6BEDD8388786B81EFA8DDB16830482CDCDF1AD713DA8752423FB4A4B1CE567CA260FE9B26C01279B06FD12EA415EF43DF855BEA96343888B28D1F06AA467207BA1E1B72C7B115DF212A524E18ABB86CBDF5560DA770CA31BB3F1CBA7CE987A273886D28C09B80E6C273EBCA905146C4D9126BD113ADC56BCA9F0E4A883127F00EADCBA786FD6D197A4B0456892CBF882996377537BA6EBDC4E9E7B185896E407C12DA72EEC3BAAD6B0F99052B232C1BC82FA7237E8E71E188D734088B8E8ECFCD0A38E92B4D507BD51F2B4491CDE2A3BCA84BACBCD28FEC7E5BB4433F7572EDEDF87C46EC17B79D197B22302876FFB53A8AEEA93ABE02A78F94D1226746608437D1900D5CB27347538ACBAC489E555062331465E3054CCE1418FECEE14147847796420695567248A77BF66F7E49B881C123C920CECA1AA537DB5506BCCEC4540DBD5D0F02741112740EAFCFE6160E3EAE871F7BC336EAD1010880C8B118588B57527FB1A494CE970CC02AFFE781DA3AA7E5D257ECBCAE45EE0802E77FC9476A985A6E13286A19A6F8B77B2D0E61A0498F006696A0D5F54D36DF6C4E7E0551609D3ED30C7C6C1939C506841FE9010583694F0D9CF3B92E50C6C235E3443E8ECFF6BE61536690B4F5127CF291B24719759A2EA0C37F96CE99A35A698685AC316B2A341012C2BD01BE95AC5F65E2968CD6D4276D7E101EA5BC5473E91FB27879E4E54DBCF5BCB382AF531B543453405AA7BB4A2B8683116ACC47B3D2ECF35DF07184581F1D0A87176682AC2B8FA0E6154BF22601495BD675EABB5A8863C99CFB971D6900896402799A54C81B94E6829F7E26EF1A0F95BF16CAC64D8BBEA7E4363B020437C27641B6E1EE5A55AC45F40A12F838FCD0E08E3933C51DB3A8A625188654F7015E26128ED6A79FCA20AE0B8BD2A6BF78F92498455266794796BA28FF39D9F4D3DA0A9A3B1178CD39700B9DA6358E5D2174CF033354B65FB6D7A4A2F01688D70DD206E7EC2EEB9DDB302C8A81BA92774FEEE7D509354BE82E6B844E231E13803547FE8BF01AF86EECC05CAE433AA46815B17B212716E41CAF5BCB10ECCBC1B8DD41F0EA9C182BC76FCDD771FD6F2AB355A6DE78CFBE0A851F5A15885646CB09F98601AA0075C223A8D7C1CBDA308E2323813471797907D4087F80F64E6CF73C1000CB45DCD7C835CDD77EAA1319CAA4FC4C1592A4B600C9252BFDE8272A0B63EB019608E430052460527404E170EE3D2AC4CF82C4B207DF3B6C7178E8EDA92A6E55F36BC4168C4894D3C23E52C6658717EB5D3AF8A057799D072C816E6316747360CFF08B62F647952309F9F54626FC6331BF0E6B6FCCDA18AD1DA799723478CB3AF76D52641AC134F6F547EE0EDEB537F5B2C3E79168BECC6DE5CB199FCEEAD1E781C226BABC35A836FF984C5599235145634E86A7728FD6091D3317AC21C4B1EE63EC02ACAE0800D51FD34DE6D5782A8A7E4804F453E7C227A3568D4C773240C4FDDCCA6C0DF8FA555A7D473C1F0AA028723B9403E71A3A086324B0D99F72E9F8E0FDDB38A92C9870ABE97CB48F32885851B7ABEDFD9A9BC724F1218103E75DD88117AD1EC872EF6B7F5194564851C551EC8E7E90D5AB308302C5AB0EDC9117BDD247C01EDD82C404913BB5FC37526750190A6DD96815366B7F4B8D69843CA0252DB6EAB34F2F6ED5EA380025EB67521B0B1B13820EF145673ACC52AB8D0023B152651DC01B57D86719F7C0E9C987F8BA2E9A4D6180832EA2CBC89A64CC45DD7E195F9C488B6EC422A0A0C8A347A5B3F6B3071177507BD6F4544BF763F9EE2A365F3181C3F375FF99086B469001F2FAC082303EDDD0B40AAE3B14470C395671C96E0FFB1A5E30252B2A80C5A550FB3539EE52893C2F3340075EE3817930065F79BAA262DD6B4EAC9B5EBA02BAE993595FD88C6366AAC1917E52384D33A0929A86AABA69C43EC09724AA7FD44F52C696795A45DF9E0BB2C94FC8E53C6445E9E4CBD65E728117A300DC60444ED9F04086229DF86104A6AA0D96E6AB1E87814936E9B608291D1ADC2EC84147C806E6730C03E0936F9C012DAA8AD0810A361EEF7E94532FDC730028891306ED3DAC8F8A4046A2B3D547A1C46907F416FDA941B62278BEDC0AF08ABFAFFE8230DEDAE52E82347F881C7B3AAC6480F948F7EB03B57081932A19DC12313D44F2E9FFBB13B3F887F20D9AB6532BE479E3CF9F544CF7E676F20D74747AA8EBE39BC1A2B550A2D2E2A8C1EB0BE396F9298CBB24ADEE19441914801CE498ABB2CED00C2EB001F0B25125FAD42183EBE6384B8B3D158FB27DBE61ED57ED487B238AF94A0B849D83C1F151DFACA9D0F28F26639FCE7455C45229492AF0F1F2B0E165B1317E001D66ED748E47C84B6403AF4A579B03FC48202BCBCE91818CCBA1943B448D040A0A532DD470525D7A0DE97A4A4090BB1D59EA851F1F749CD52E9AC2D5AC015C3F138572E020CB87EC229BD1594BEB054F0552F558DC4B8193CDADE26E1B563B9927A6FD53D5E89B89E6A18DF6FCBF1531B0867814D310D22AB611CA9099BDCC45D78DE5137DB5196B8349C844DDBD61790B7A7955BC6B755121C6A5AF48824A3B032707BB3194C690287EA3F09A8FDCA9FF8E4746CBA3CD9C2CF02BEB6FA561D9B7A0A29683A8A8496F508DFD04CEF2FA5776E515EF8432DC0B21418F51E02B770879FBEBDFFFAFA83426051FC395CD0008CC3C5D78C3F901DFFE72DBF22F30A1E9D56F78A67C8382ACF5A933C4A19B99058352FC23EBD8A92760A67A143231740EF055D815330B6A68E9DEF5DE62F80F9AAED972DA015657A3688F96467F980C9C78A576B3362C2411B5056BDE54089564FC285339C96D5CACBE086F21A940DDB2D90E2D9440FF993F7365987AF1BB6ACE4DAEEC30B3E9651A9F4ED94B292F6A03404AB0048372B69F9CB492260A28E1062C543DF693EF6133222F969CDC6E7CDF85A58A60F4CFC0F331E27BE673C9F89AF02BE1483DCB3E36B797AD2A47617DA79FE37D4CF4A1F3A9DDF4ADE1FEC28F3154C0D816AA51D1054A3E0D4669B0DA718141CA0B6BC4D1246F445847B1AE3516BDC9080873EFB62D2268EC90213AC216C3A2D199CBF36635C880C9DF7E4146B446BB53040BF48CB08657A47F1F2532C46F9763DC3E751EBB69100E86F61AA68EE43A4F1A3B4576E231929837E603535916010E6CE34D58FB502B078408822CBA6ABE1EC0045C914F6AD4FF1E3C43345A1C1892F3C6629EB201E3DF5BDF0E4B20A754FF18CECDAC2B8AB8360A795BCFC544512B820A45C8CF6ECBDCC54235B0109DE5A985B6BF3F529F40B0008D261A684CF9ED78796B8B24BB75888DBCAF07415D4BC1A621CE8EB041BC305D3CBB76FCBF2FEF06B40D4F712EC6184B2D0E84738B219841480E87F7A51E25CC4F003289EB0DA6F637EEF9AC89FEE44B2BF7A342AE42548A2A16C20D6D604509897F885FDF2FB4843BFAF20674F0970D3A0AC9C5F4161E54AE0D89519571A08A05D1A6D76D7E6E416C70EF8A9CF289919E1DE817462A1922264685350335AE748F2098A281C468A55D4B4BAEC8F9A5E411D4F668C7D3033A7DC77E5A7BEA7B2DCC57F191E77BF5B2D3E1A3536D44E0C4D5D307441F4FE87B79AE12F3694292B91016F65E3B6F552E357247FAA7A4EB7000DCA88F0269D5001D4FB7AC563C0003EF133F2CA5F3B2007382F9F92177CB016CEF1258515A43BC984F40067C79757B1E566A309CCFB3A58B16D6E3021A8225040032FC4F841277690063F9E5B0A93B2C9750ADBF798F8017856ABF0BD80FAB973545E8AB01A180579F9BAA91CF2BC2F6B1F3F371829E660762D822566753DDD477FDC4F7E2A030DD300E55B9F17F1943FD9F1978AEE98C4AEFEA177BD52108B490B9290D8A6CE4B7E8198694AA44A5292E54C17F2ECF9FC1417E97B727CAF5B37790DB067C15D85A179C13F1C623BE844C3D18BDC27F72DCA5D0C220009FBB1AE544DA22C15AB4996FDD9D1618AFF3EF364DD7E19B52BF246C6D3419BD52F6A1D42C03C879B6EBCEB99909B641A7F5998C8AD4D4C1D7E2DDCE18B0813DA1873E25C8A27661587D322FAD0252A181AE7DF3B44460FDA96F560FD40B93733AAAD9EB775CB576A37FF6147320F5D9EF048EB91F12EE863EB80CEEEDF900DA267DCF0DBB6A2DF55F3AAEF1966F6CA3B36586711A7E7925CAFE3C406119C9E7A2EF9B7E6FF7AE03ADA0B3D1E945F906E157CED4A58ED73C369C25DB306A13128E90A365A46E6AD27FEAD31703848CDCFA7B5D34D3702BE6BFC0489D8FD752CEA484AFC7E236A05FB7C09753A1ED940A9D0284FA777229FF2BDF27BB10EE31BF8C6D8771BFAFE106BF9F49BB11BD046E0329DAA3DDB0CC7CE08768C55C8D1C2D838B6E62C97BB871C7FD3C2D977BA9DF28A45F4F4E3DA16EE21BF541BFB5322B2C825AEFDF15F00F6BB0FFDD3B8BA381623761E2F763DE74B108842A937D54CFB5657E111467D340C8978536D877EE221CBC9326E16A7E76C2DB5071AD1B5E69164B0DAA5EB7C3679AF7216930BF6BFBFE302C1C9B0657538BB5186BE440B51A835C47B653210B8D4A5F831B8CE25501D092DFDA36DBEBC31E75D265FC241818CDB953BDE16718A7DDD4933BF28415A7BCBB28BA45AB51A463B0C7F2CD4F8453C889325441C32D8B99C1D4CAB22EE6AE6113B266CC016110DCB1C9DB8FF0120FF20CD52901B39EB093CA06E1FDAD4A0117ECA2E3611C3FC6B903D60D9E8112A39FB46EADD1EAF4CBEC9548FBFBFEB0576583482A5DC2A98D6B040B785C4E2B14E8BB0106506A22090ECCF93E55687D09DAF7079BEE67650D217C2257FA6A21CC31BAC0C6A4CFF519E7C9821D8C2CC77EF53FA32910532F1BE7C0A44319A7AAB21FA439E79CCEC6996B1D7643455FE7D1B7375F846E1873D63D06FCA00EC6F1CCBEC0C2D4A5A94EB0DFA27DDD0EFF287BD761765BF8FDAF0BA659766906D47F6EA7496118A881AE4F65ED755D70634207989589F3A0025D33645AB653B60EF98A5F280A3608194FF919DFD801F1EA491B310412AB70E6B7812D5BF62688DA554532ED786B950615FF09A7869B52EBCE58E1AF5E35E6E75793D0721C18C36FAC7D4E34455F8F91F3954057EAA5EDCFE01DB0C5CD5B1169B05D2E1869653D299ED0BBB550D0481547C2F408332B780E7FAF5CF8B7B87FDF5151CAC978A3E9723174347790E276FBF11E12D70FCFE648F58F0DDD147A824EE4CD667372B2262EFB5BB85EE1AA58638DD72EC02D9A5F85381BA9D603AAAE01EBFAADFA4983FC430FDA61B07986F49902C129B69FF4BA9F2268A6A6CFCE4AFF6A476A113D90F97642CEA7D90880202E103FDB7543D2C1BD087C396AB0E3E31A1D5FAD2600119395137B46DEEEB4EC061DE4FB058CFD72BF4D729BEA9A985773C273232F9D85BA459A1D169D5B83D9E3BAB6842AA336159222FF85C470B88891990D43CF2CCC85B596AAF1B1E58FE1A6C99D02A49CB196C5696DCDDEB9EAC6A6F126F05DC03065CF1CED8FC510B9FEA6D6A6205EA558A5B1D5DF90DA41F4F3828A8CACF35A214841D3A1E995AB898BF8F17A4D3B609D3AB7BC8EC9380871D3626A76F04226DB32B26419298F2ADF2461520FA486585CF5203354B99B378649CAEAEE7A7BB2C2C1816A0E7E997F25048F6CD36A51A6099AA8C14137BAAFD88DDF61A5979682690F4BDF6C1B65EFA21C644B2D0BFCFF28DBA278C8282E3C8C3EC29621AA75C3374024D9F92D138407ED898AE4AC9153C92AE0CA730AA123F3D4F12BDB47BE18EAA4699CC84B3D7B0E37E7003589D24E34505AE13E8D1EB9E6C171623286E5766EFC95ED14594C4875F24AAA567D95841C4A4912030A737E77F69839CD61BE8B4502C0DC17DA369299685707610BC0D08B1578B1CE263EC503CB595F2879178F98696FED68D43CEEBC72D663A9C0F316BEE76F723EA4A0E0E5D20D96FEDD5001866D1B7236EBAA5BCF46EE76A48AB774D6E120A8E33853B117B65FF161552F994C2D3171DB2C4C59BA17488678AD81A9DEC714F1AFCB924C4D27E8538091C26FE0085E2F2D8C34C81B163A6F99838A0AE1416C18563E7FE546F79368299BABE07C1E52450D767B38088E07CF82A00B9F1C1FBF7400FE864616922D1A94D7B9BD0058CB49297AE7E2B5107BA202E1DFB7B10913324E10838F8447203A4D55726879D55E123FD9C26AEF15684899BC7CF6D96E0A65345D8DF62AE599F30C16615909537F1DCD87D8181733938A552D388EEA370B6D39A4006BE88765C43C04FE8318D3F632800D62680CDA5520539C57EAFEDE19DC0D23AD3A1A4145D4BA154A81E9DC900677A617E3A86CFF10BB343F0BAECF9BED434F6853CA5367E77756AE96FFF7CB1B18379724F56E914D47DC023EA31CAE8A62D26E7235FD80BF9B79A8E9053A2EC12DC1C4F8BB4D564D8AE08E5B896748A29AC8BE075820E445B0A29AEB395725AA28780287297F7C28BBD4C78A06B02D9A0AB09EC426BDDA87C8E8044E2051C7DCF72777A0FD75C3D725916BED3753D0CDD2F46EE3E78B50B2DCFC129CF1E689C592FDAF183B4550162F49463E23F1BC323641C44C9D7D6DD196F54AB78EE89C16F75371E1163C0B7A1AB775EDAF5069DBE8E7BA834C9C2427792133C472A111634AF2D152317A683DAAC15A5FA7F9FE1E3CEB3D2138F12BAD1EBF4567F8A6E836BB5A74337093200BB2ADD7A5DAC0DD3B0F6E11A705A1C01DC726A589B3F0627F2CAEDC8E0D5BB2F94A2478F1F45BFA98FFF485AEA08DF554BF5B10B5062B71E10B03A68CD996EC4C4F6E91930DDC743F71222E9BBE60834F9E310C5E18B81A0EF2C24D342C82877985A6E1F96FE5387F4443A2F45D0E584A9A5D85EB59ED55435CB9BFBDA364D7818B8495919C1A677800D92A7DB05DF9D33A9BDDDCD7D7BD1C5A5085F36DECA861C33AD01E717E52FBBC3F5F09652521D4D19AC8901C22897540A11E490073E275FE2FDB933D7B49E3AB7D740B75B79B56A668D534EFA74671DB682A10B6EACA21985A3E11CEB6BBD70B2BD53C6C5017DB1DA3FAC616790E1CF53AEFDB6AC9430C471C79D9E1B6D2BF87D2323198A80D4FE327B792550912BCBCD213A4CC53B3A219BA6114CEDCBD3050020323B435D729282231767E0C996DE2A09256B37EB17092620D7CE021E43AF50A0D889455AC0A9103AE0431AD2372CDD28A486D6D574EB3E071EA422FC4A2BC0337187E646266E85449952FA69CE6FF7FAA0D4D76ECF726D817F4693F88F3D75B3EDB61EFF38AC12AD93997F91F5AA32851CE7135DD1631841CEFB5F82F699ED16E4FED9B074C043C9D849C32D1EE491B5E37A436AA0348FB9E68A91F28B471AE0732A9E679B10DB62D1B5A677CC952166D20C98C62881C0CABBBE78FEBAB1D577292C560E750CF723B132144093B13183244E6D50D7F4C94D25256152A7380E719F6DB8972D81780ADD3EAE880F279B8ED18777C7AB3BB5A11D789BDEB87B18C370BCC1048123E282D32B9073CFE5988FD9351A72D31BEBCB33ABF43B61F461E7ABE9D130FE56918C4CF67DF97FC92EA6C33C37D804269288B27C7858D1287DAA2DE9963F1FC9329B222B2FDAD42E20C1E9328A34D1E5A2080021A18E6A38EA9C58E3BD8B01D08C35678F6804EC8E9A4B2B888CF73444D8D3C2CAEC5A4140495203B95922BF71E4EB8DCD6E2BA5DABFC003E1CA2F78AE837AC5716F4A2466E5E0B1F10FCDB922ECF3527C9E0C34999A5664F26D2D4ED4904CBD2F63B3B858A97201F158DC0CB735A95750CE382C6ED5381B686F9FD930C391C56B1B15490EA021C36126E7B2ECAABDE7063D2218A6AFCA2DD410173CE981017F94F332681F2C1AF9DD6F8418511DA08BAD52E0C547D3F06BACA0406722612E82F5F5E3E992DDD61732D466215CF7584A8C617C0DBABFC8C0B96B3A5475E228981E12C4F7C12BB26736E40E9AD041F306B4F571E9CBED882ED477B7AD10514AE77F15E0208EB0721BBB125C79CA3901AB2616748838F5313B0357AEC50B41E2BEEDDF57472F88068821CA6EFFE1334E363A5238B480D2B1AB43F30B3573FDBDFA566C99D23EB6AE88991632F9ACEBD0254B241A2C905D6D640CE35B2219A591B2C588607ECB75DC44425EDD4C623AB97E36497BBB92F0CB8F75612D9E5C29154FE7A607E43E44A838318F865D24872BE553958862D3DB30865B868FBF6A9651AE4FD9E83BB6AA22230DA376648A9368DB02DC394EEC4716AD32E4AE9891AD098B4177ED976FCAD1031E7482741D412C671ED667E0DB2B55810FEE96D6BEB915B54A9007765774385475261F466789E23F7AC5188391CDE230ECEA28BBB919686D730CFBFD81452B0D9AD322B2401B06810E846B05AD5822D3151130220571567E5FAAA594B28075FFB97E7C91C111B82CD8ED2FD2E5E41CA40F9D998B878AAF9747CD16C102FD2B60A04661918ACE2324718335E4537F8D1EFD60F17F0A2B66CCB3F374777B821B2F746049FB4A78C52B57C7462B0FF8CBE374CFFCFE73FFF274319FF16D4A32CD26B53C81A110F8771DB3C85DAD3C5828EB70D8C5B376511E30D49E1C78920851AF1ADC04BDA85A519AFE9C01E9848186CA485863E2B3A4A954FF8DBC86D588BD44836D4276D66640D5594E3C50D260786FA38A7C384313145F5DA9EE0788777DC21AD7C93D46947474DF90ADB68A15E6DA691BCD28E612840B2A9C6D8C8E85CA436C7A65F5B89D14699176197F7A2B14C207991763FDD9FDFA2D2B2D4A6F020BC593EE05F8AB24AFE8DC88253BC6C7BFC1DB5761F62B425A6E2E86EF67F62D2635F3F91B3ADD2C52CB6742B83601545CCAE73F76CC50391F3828965FD2A5D5801CE120B711F412DB1614C2431C8460CA327CA0132BB223552A4D3437216CC3A782B27C72A23F88E02FBB5EC7BEB7B66FBB7DA234B70B6D00FC18079A034C62D2CF4D92D2550F33723963DE40E3C252A256E04BBAF810581046F655CFF19F52CBB75C432F3CDAD49B4455CA5EAFCF6458A307DFEBE1B17CAB263676A6E1AC041236AC71C9465104E65A80559045A5BC7A51C61E8AA112E0A200EA4E7AC2F4F16683DDDDCA22598B04895729B328D4ADBF1790E4A7C614938E79AC4DE74E3EA8154CFCD2C28C6F167C2D0805274694B9068BDDE6A7043F8ED42380A222834CE8CBE954CB8876D7704C7D8DFACB9FF826376E928D81120697FB755B6783792BDDBB1F29DB25E78977267530EBD72587961B708C026FFF3356362957979C02DC5B417403CB4229A8AF9D80A82DD610DDF5F84202831FB5883B01C218D374C2C90931DCD9E98E580C11431AA672AF3A2709B67373AA2B91D9296509BCE313DC13E7A7CAC0F7EACCF30E803B95026DE5B1428C7FA76D4F8C81B28AE80C1504656278D7D91527C8F03176D6C99E8A6376D045989D04F2501EF146F07E5F4D73A18DD0794D0B1B3F2CA7EE4CDAD84DF4FAE4E836A517C1F1046A2B35771AD403720360A2C0A5B8EB8F6DE1B4AAA8E0D6AAC016EA5792C6783C6579042A36F4ECB8E2B8AD4A47527FB0D46EF8A2901FCDCBB76024FA545A91D12002854710625E4305278CBF3278C705480D41AAC4AD2222FD973B3EBCBC7A185D444D9D3A8432338F171A8D8797B31E66F9B748FB4186208A4E895154D063E379CC40CDB88D8CC5926AF4DFF6E26E8FA0F81951F4DCEA770048AE925927EA1E61684F5F9E491F4FE7FD567D251EB78C7096CF40287B52B03CBC95411851EA6B9531A0E1A1D9C802E64079027044E822F550A1E4DA4FC5370B8526B9CFF5739F9D4A8640711F001C7CCA8BAF3AAA74AA37260D371E364FE0D5E10C576E68A7C2A8153F80182A079A3FBD54AC391B4B691FFD9A4A89B35ADAD1B2645B7EE4EAECEFFB5C4235B1BE31253667E11B90BAC2DC200E7E086781F08416FFCE151BCB6D4028BE5E0E87C1A1F86123C269F0F480704AFFC54C160CB88074756E1F5CFDC6078183ED9113658F3FCD80800D2C3FCE5C1F82AB3C5661D68CCFE7BA55EDC36B01CC531897EA283D772497FECB093AD32249C1270FD500B1E4B8BE600450C886F722111DD4F838C5F8B9755B17B8CF9C307F0E00B54E632A7DE679A4A53081B774E381D164C96F8C369AEFC2BCAEE33A69F3AE1197EECD7F66E24CDA701D473BAE496E0B806EF17E7F719B0DF2A792CFBFFFFCB408E3E7E75BF2F731A220AA6F2DBDBE17C7501E541FE6A46A1E0F62D1D5D9F2B3FC2B7020E9344161508D6FCBF86A04A5DD39F33CD90273CCC1E19C0D9FEFF958645F4C186B2E8B566A2B8D3829C461F179974751997687CDAD2D64A409D0197DD72F7D4CEDDAE058BDC0B78BD3EDE117318F7D00D2C55BE1199839C1349703D9B40C0FBDDF266E7CE99A1F9248531C5E0E93F8283FD7BFEC6145D39A618CD8F010DA941F5C2B41C9F582A50D77A4FC69E4FC936CF4C412006CE0EE0A94CC8E90A8A3B9FC790CAEBC94984F9E0816B0DB5D48AEBA4B7F2710DA8306359ED68E096A701AD58C9740F96664D49B812E8975EA9DD74A295B0406E96C3BD6A9821E2787711D5A828B8F597479B8BC9E9AB87FB6D1C59DE48BDD923EA7E04D3E9996ABD4CF88D130C4886A71D431D61F7D420742F8E38D09A4CEFDD9DB1E3D24A8AB54BF62D04DBA839B53C81BEE910E05C08AF11E15BA2D7BC9677E39518D0B3A0228F87330E0696DA15DD97BC5F933D02146E6A7510BB7C6ED9FAB72C1B5F56C9E6984E3280D19AAC24B7FE6DA51748E83C3A6E1DE207A1E3B8D7C76D1ED17C703E3C56F753109D0A99FF251829760AE740C8E42450149D008DD44D92AD878F1C2F2B7A50820E6FE1AF0BFA253C93FF149C145315511E5B92BA637B6C4B14733011BAACF202214EA4E7C28148A302EF6D207733115B76219A6A37CB8DBF97811476DAF194027C6C78326C5AB334353CE840E32E0A0118FF27DE8F275048EA230D3742D94FC0E1F317BDAB320F8D39A456F664B4B17C7B900F71DC9BA0D01E78C940239C1B5AD8B8CD488AB0020A04D95B6194BD4A7DEA94C83CB909626FC24DCE89AE38944A78EC641D2C2EAE2FBC781946EA495B4E0C2C13F4EB5F653315D099D6DE2F798647E4B6FFDEBF24518CE71530FF04C6E6FAC6886916110D6F8D81C833981AF11CC75E51C850A02EE904D34E466857EBC11C3460A305DCEB6DF4E6B3BADFFFA57AFBA0CDDE4F8088179536FF46F2239CDECC30BBBD8822C08ECC27BD3158ECC57828EF0EF19E38FCE7DCEF24E15CFD72C637C442E58EABD7BB56E1006529312F48EE88E6489DC98696A69A5DDEF464F0B0F32BDB0912EFDABF4804B02D6407B7ADB255266B88AB6115AD3809874B757D99279AC409D362874B69A9ED8C3BB4199476DE3A70A4F9EDC6CB408675792214CC2F0B69AB3569821CEB0CCA56FD2057A2E651D0D5F248E0E08780AD57E231B7BB61EAE1C3D59E20D16E69A4887259911962CFCE8F097C3A99DA1564120253B55E018F18F64BBD04E323FC75F068E7A06A953AA96EE95B81A322851B8645A33B43F117645254F4EA1267B182508A59F52E814672D2FCCF678BC3A32F375A27159AFFCDB854EFAFE79E22CEF8C90A4766BD68ED1758CA42B1C70697EAFEE567194FE169DE480123C035977C8FAB5B8CC0ADC1E953C339FD55C9DD846495A0563610DA5F5D6B436942A5BE128E8614D630EF1843B48A683445B34723B48846381825E616F63A9193CA7B27E1718145667EA03638C36889CDCA363B5751E4766CC608C471B262CE2C8325350C433F4D780AF1B53F77ED8F19B9810C0FC4EF4A780D90F2C754481D41465AE7D80E3FEC447CD2377360EA2BAAF207C78FE097C5E14500AFF04E67040EA1AF9515EF2BF47E97EA6C6A3A02041DD2D02651C94C1BC2DF45096235ACFAD196212005D16A4FEE06DFEB3D50FD6D658E70F8C8CCDE18C2766A1C58D00C42A768119FC5B4F9FF2AB35041BFD0617528ABE9F6EA201CC041F7CB152B1B8AEE00D23E99A692A191BB4D835ED5E662F07452D9F961F8EAA6D4C4E37414F52E10539FD570D13369AAE4D9372EC439C5DC367FCD725FBBD1A52A37B4A008E5790D07DA69336C884D5ECC195F30DE9E862AE0FA60C961B0209C9286EF7352E4D234410CA95DAEDC4356EC7069D58902EB7DADEA3BFD6A2ABD7FA03FE6E00B748A71F7E32B8300DDED8715D7A01EA119E6881076FA86493ECC5A2249E3D09CA82179FAB85B823DF0C948FF864318A1C15966DB0D1053EF73F44EBAE778D0B704982B7BDAA785D9927FF55285B77072AC216A2109E1FE1D7D5B634FB7DE4B8915971EEA3AB481DE2C787F8CB030DCB3EB47503242E85E11E1393CC3BBE7BDE24C7F4747AC6242F80849E14830CA3DDDF7BB729EE304F1D95F4D282991554827277CF3525D4D6B15A325CCAB744C8048C3CD0AC444ADF2F07B43685FEB5D7303B17FE909329CE300BBEBD2CC1304DA43263DAEB184B103D61F2E60F2BD57B8B4EAA8BD217FBC99BC5160443F30E03D85B242B6F61FCCC4598450A6AB5E537D5BD21CD8B35DEC9D74480425FE69863CA9A14E7B4605E22CE1041B7E4B70CAAABF4B04DB6664722111017571B7D143234E7F38C5EB939D5FC28DCDB15753E16E5E3A804B3C806FD10AF889E3941CD944CE7C7480D8178E0A03A2D42C2B3B274550CFE285E53D186667949C3BB615166DD26CAE15B3F36B58FF55CCAFCECCB67A636E516BE54490F9D8D5C5FDF3730B995A65E2F8CF924F0A471E8D965ACD2275D3707C46354136C660FDA8969BCA7CFEE2B83BB3295F459BDA4013D30E06CA03577DE3EF11F6674DF3300D799B4BE1773314F40C6CDFBE3550004C9594D780F58C8E2C90B63D54F77C3613F9AA46DEEC615204D6D88434586E44C887714C609E87743E2CA1E52C62B3B79B091F8D777CD790C71C317C089332561313BB48B65B32E5F369BD6709DF45789DB6634B1826570E8323B2A5B695036A8C4337802E755C931B7A03A999DF92CCEFD768BE12A1739498020F28046D268F4A689899C7DE918D4AFE3F9915387CD2C9E67CC4FF24FA80F8215CFFF0D547A18C4CF1F54E378393C8CEC36E45B3E4AB55F1DC4C918B81A940F376158463BACABCE9F806642DF29871219348C6C35712CA468616467396A037A75C807414C86B0D0850C1209E10287137C88577E9E331FFC59719B42892BFB23DE02055933F2176B78D93EA704EB01C73DF0ECDBCE5917E985683D0C8BDB5C3A223E5D92FDEC51B79630DE34A1BD8122E0BF22E14D08DFDCE4B0712653B2C9227DEC980B477B4590E62A9BFDD0B32348AC9AF73B78533DC575640DE565934D994E99898881C73B4005D03D2AEBB0A1D0ECCFECF56AA6808CE6F38D45FE0B55C2F9C0F3687B010526F63386116687C8B639048FB01FB9244E886DA01A94A385652278CEF26DAD644DC735B53F30E1CDF88C5BD894D92F515D94EB5F3487088FF51E20BE7B6D18ACA1C0B20D8509BFAFDD112F895AD76CD497A95921C9A9AE658D0CB43187EA5989870B294B6D7839CB13EAA90189E38A5202915D3154F89209404638FB0B5C93BABAFDE96FC8C976715B4D8FBEFA7AACA71342F9710F551CA733DC41A9D8DC329C2B39DC2F8F2A907BB9E4E35DE4A9E98AE6BFAC7DA2DE106FC9367D5F81C6C3C8987277DD1E01D4CC006133853EF5AF1CE0CBA2A3F28CB0AEADCCBBC6BBD464B5EEA6BC1F6944F7708E5D53C04A09D54B2F108E74F99F61969130F69EBAB5729C3506F364C9DD72565B69060A2F955BBA8E8B655AE258B259C5731434E6B2BE68786B8B747DFBE3630B5FE10C1DEB140C4514B4F4D89CA3EA1676B58E99B0123CBC79902A875F738DE0E48B2381344474EBD800214FAD26361F213029DC1B6F2C31590BDBF9F18FE0DC3554093CEBCC2DBADF647C46771DE422C04BB62F4AAFFF68789D44C41290011E648BF09396831E8FD96679F6665353CE044EC16A1FD5B13ACEB7E48B0C2B6ADACD58F9836E3A9CDC369699E06DD40605931619D1E5077F44DDB58B9370D20C5C046E59CA6702FF5C65B055404C694EAE56C8621DF2CB896BF93487CA2EC10ACD995AE458AA13F56030D40AA5BAAF30D9C15C426752213FF2865084360B289E23FE9DC5F7E4C23630AC4304E3CE0BB3442C039CB2959E7A80FC579527946E7A45CCE95C1C13FE75E369BFA18938B5D71998FC8B1D1FEA115442BC460E8319FBC9B5D281BF5C384EB9CF84535EA93CB4FBC0A4E7BAD1A602FEA2AB83D06285E49839D3DFE0E0107A403AB201515270985DBEB356154A4532994F75CAE83F07F607F628E43D65B5C259B57371B722D3D784440E7034B48DAC35B7EE98CF405BA38CA67DEDD688BE8953B69FFD27231839DDCB288CF01B90C5D32FA02C803A8578B45BF2F4D569D1823129948641A72E92D5BEDEAD341D988B6B5808179E42CD56439FBE4E83DEBCED22903FC25D77D4F87792102FE8098068CA0147993ED27913912372F05CA34F143D8C0B437A06B8F56F3AD9E4D7B09D8EB63D5C0D8858C75052AFBF9D5A0AB852C3CC381EABE94E3BBC41BF3BC10BBE532526056A64C0E67067480A8E3183D137D02CC3066B877476E3478E9811A9E9797F5D9ACE467134292A9AA906169F64FA00A8063AF724861017FDF7EC55C8C2B7DFD6CABD4607AE8D27C35CE980E9373D5F405FE0548743C287A801C3599FE61CE7520304228618666F9BF199B350F379AE0C59647C246FF662675C6601DB2DFA19BD2E6DA4195DA42FD11D8164AE7F3A9F018DE62E4F701AE582F828052D2C9FEC4F4B9BD525FBC4A04191A38CF06699A92146C308FCB3AFF892F8B24571DD456FC4FC58BF67622C8E9D12F7325AA8E27A16221CF4D41C47F6209820814BE4F67479689FA25EB388FA5EC692738CE9ED072D0A250B596D036BC3764A0D840309E7FA113CE337EDDCE83FE768031B1927E0001D96DA57A5CC3430DCDE21598E5D1167DAD62C92AA76F228AA4F6BFC06B6FF008F279E4CAB3D0B03D2850AA6AEC8F65DCC53B6D17679E2F089734CF4AE773C2E51FA9C4C459464DC816A3F1F55FF7D137483AE9EAE6EBD96512B34DC06C0A8C534D2F2C98EBF2FF2BECFFD816DC2BC77B97A21B2C7C15D4B1CDBCE65E67A3F86FC8D6374BDEDECC4E05D10221544871741EC9FC46AE45094444A12736BB9770B168E3656C063E46E82B912B812D602407395C2B77A68BE7E970654039AC8E142A6E8B18B7284129E0BCAABEE89CFC110A912B4A292A3B9CC8220818AEAC32315F229337C6B8AE367C7273B826DD87AC0A0B9D0EEA7BA41E86786654C37B82AC27BEB93E91113E02254BD5CCAA924944FD1FB0409B660F61462B58376FFB6CD85B1556FFFBF9DD078289790225A814C11241F7A87FFC77356B848E21D48F21D0F4821F6148CB045A7BC5BA00A9E7C33DCE25CFA69D942273193048176F00744F257BF33FE94C3779B0DDBD3F10B0BE37B65EA6214300CADDE6C8EDDEEB5490AEF40584365D8756FCFEA6238383475B5BDB9D61E2242604C6EC7523FFCA70B7EC6B6BB4B553AD23E238D2673D03C2E135FC4255C6D506C1AD1F8FE47818E05721875014540EC8DB53D89BEBFE2619FE0F32D51366A3DDB0E5E60CFF03644DEB114A6573D8FBB3DE12A8F6C8AAD928EC0290407275CB209EF3A009F344FD248801965C5D81C9FBC755E73F63FA06DA5B6BDC8E9CDFE9A557E14722270CF9DCCA4862444D1D97CFD98B4F777A5696A7862265E79A8CBC5D5F7AE9A3DFE009500F6863D20420CA5E56AEF98053D54BEE467A5F54007D6D9D8793E4233A17D3AE6F0B889DA3F82F708B7970E1BBCDBCBA97786197DA12D81286F589B65D8B0D6F80DDA84B53AA6B1CBECB3C907C4901C87AE7622C9E75D5AE9C9A365D98608CADA8171D882801D3182BABCF91CFD52D55E4F15A26DE6FC229F9047008021A7384F5CA99ED8A280F90925E847EDC9EF81BE3D7CD03ED28782A56033685587242AF38CA339B9F491A5AAE1019C2DD059D5228A119E319A21A834C32703E0322CCF5FE7F95AD594272259A880689641AD940B7A8DD95B9DD9E8F3F45886A0A0CB4C9A0C20CEFC5180D0B18F82E745EF03DF078A351749C58DC1B6675014344E44CE422D45030208E3EB4B5F83A827401C489E4182990E4C44D48B2F84FD406FD54AF19924A740644BB4C8DE0725190C63242ADE37F652875FA4117986D61A23E4F464CDFFCED2FE4099F1C1F367E35D26F53DDDC8735F1E46BF7B6FF5231A8443F156394E92A3A71886C69067CE0D9F4733A2C0434FE554DF12462EBBDCDE40A47F1A01A6FA76150CF94260FFBEF88363CC04DE86176A462A62A53EAE69EAAF7826F61D4E1C56D09109DFAEE74F27913231D8418E3723B61A355591DD906728F1C54A556F8D6A647214085E21F02983A6EE4FA1A2C8036FEBA2398B8B16B95D30BD6DCEA0034306BE7D0CDA21E87B14BD86C44C2B8CA2C6451A3DC87300A66040FF71951E2347F2C81CB4A25DB050E1ED2D80FB3C445E783B37665391C9C547EB134A789F8B18A8417D29C499B841225A276DA35E7E33DE84D22477D8EE5BD14451B93C82A923139821009EBD2972F02199C8F3B10C066835BA7CBE52E9276B966033B0A5E922616C999886C5197B95C450F5FB1FA60DC2B56DF001661EABBF0A1E9B0B8E7A6FA74C10BC4FBCD4A880E6244B8AAAAC74D0FC172D121418FFE45E1C00C6FC614A74B1EA0938BF814C7F9DEB2F71585131698575EFA05BAE6B5DE7E85750597D4DF055EE640C2105C31D359F5B3722F73012002BD13505B986 +sk = 7C9935A0B07694AA0C6D10E4DB6B1ADD2FD81A25CCB148032DCD739936737F2DFC1FFB174603ECD83AF919C395EAD2D2D0064F33015F262DED5AA411624A1F3346BDBA70C54372B6F0F573A7836E5BE5B7726F6FB0F81F9DA99A2BCF7E3D26B8A71E2DEC2B39F920BC8053CA82EAF6C7DC0AA3F4A376AC3ACAFE1BA6B4CB08E66731EE0650B18591A9B611A62ABDE672A9A9D628FC50FF356D429A805F65BF18AEDF8C9D297A3F5CD7CD7D83715682AB2FEE965AADBF84F6A07E84FE69614F37465297FE2E1D8A5A3F8DBC95DBE17A9722157B39C60F1A061CE28890A58196A8DB813BC185816FB73691925D14DC713658AB139A09E43F1E7E20384A90CC3B6D4DB387C2119727D5CCECDFCF34E87FEF0206EAD4A91923DABD52DD141D0A559B9E5D3B6F9BEACE8A2C2DA666266E113A3FB9D680C819584255ACC27C65D9E6B9095EC6210BE959EE94189B276BD2E21FF526D4E8F751B893742DE59E2A4FC1A595FF09FF130701949B612B141443D7418D164CF309B6916699B5FE6485022859DB9BCD9670CC1ED308E5CC89B62D4616AD3114ED36FE4646C43DE3E8B0DF37C8BDDE5D5EF034D0F596FC28FB9CF7AD2B161E3A979D0FEC82FB7375D62BB94F60B8BFA7990C780E43D76CC32D07C8684D46FE276DBE7B60AD67DFA6ABBCCEBEBA41D408BFB4B89AD8AFC2F3768A6F707212ECF8C8EFF396CC83E0580D839F1441C825CE6FB31D423A92329C9F68AC45678CEFD078DA37A3BA671B8D8626413E80952A93919B6F9DBB72E93EF4FD4F06EFB5B9A804F32998F42F6896406CAB27DFEC11F4E165298A5DDAB87CC6897B5ED7E69FEDBC4DA8AC6DEF9CD7002D9AAE5AB8BD34FA1AABC7474AAAB52933F08D6A1745845AD97E4639C4C179D8B30CD15F1E2BC53D7F5539CB1A4AAAB62F53D264DB16230C60E1B039C454CEFB5D14B7C34EACE3A5583B8730613D12D2B1ABF225D5647B2D3E31F216EBEF19FC49281D04D976A38BE43C24827137274AE7E695A81F1B0FE7B3E5CBB9BF2012A2EB3CEEC883A08BB890B90C418E981B062FE7646014BDD0B5AFFFA0753D7661E5AC75724E90008040DB57E95EBA349AF53A98133F383F2CF759E273329CB1F33BB04204ED08E6DEE939BC379CEF74BAA1BA6A46CC1F5A1A631D2100DD519E183CD2F7D956772F0EF8B6A5BE7953EE9CE7C85556F4E090B86C1773532330A7D06544CA1678CCFBC82A6B75C22658A063A0ABD67A85F64DD1179C684CDCCB1BF919BB3646FD316892E6D263C57535873725D5B54BFCE128173B4008E8F498363C97CE1CB9708A76A6424E6C7E5A01E0C7384F3F482BFA86D1A01A1CFEF68A75B607D5F20C2A6067F4C61A13982B19B3D5549929B6699C96D059C25C359545E6D6C29254891B91E064E70E1D179E3AFB9225E32072F48D7E0C9F47BAD05375419C3D594B17B1645535689C8AB2798C1737493215BA66DF2E20C2E22982CC427E9C2965AA4EC046E1EEDE52B5B986157C41F556D482212930A630D5BC6ADEAD05C186B41159935D448F8FA1050E23484B01A7EE19D35EA27F4112B1CA58016A2AA5E76D9F295D8D6D457154B6A1AF2D1DCAB231761083899F3F41A859118C242A886D72F1CD38664D8E6531B6E25259884DCFDBEC24DE5BA15429FBA8514125BADA88746DF938B6B87708846BE368F6483EE851455CF396DFB20C897BD68851AB01186CFBD2E1F6D3FA065847383DD829E27A54D852E05394FD899FF70524D3ECDCC4B35B5B43A495A938DFE5DE073B67E0C4A781787918ED2E98B55B095804E417C342E791067D37EB68997BC83AD5EB6C86CEA821C001F41656E4E2CC1497990979A1B6F025F7A599D9C7CF9428DFBBC7EA96D2CCB2C548DA5FBD32CDC333A603D805C1AE5F6C4D959990354F4C78B8BD1A941BF0D8A911F9AD3613488CD70334C2EDA59FAA0EFD125C28299F54697DBF672EA14BBDB06312FA3A94F527841568B29EFFD536754764759EBB7EFBC54045DC9EB24CA7FA1748E64B734466C070C4C0B6C22E4AE682DAFF93205392FE4546C2F7A2623DD2FB92D4A5D1B8D23A2EE8A98D170A32F60B234CBF73A862088FE227C5B4CF3E35AE5381234E31BC5F90A2430C8BFFA5EB1611F5AEA8E24C4D585371FB1359C230A1C6C3A300C1310EA51E700AF3773E261809F204E732E45C4CF751D1BF24D6B224AC7BF03FEA68C11D290874A089B1D2727B9583CD8B5283329649CC9395D67AB84275B532533387F8DCB3FB90D9A35CB62E2B83A4FC79B70DD0C94E2E6C37D274F61E40F9C89DF4CCCB2CB8BF81AEAF2176DD23CD6DD88EE8B3A127A110DFEAFC9BE4492BA3BB70363BECECEF05ADF7153D353511329437F0822FD2F3650891CC0EECC0D0759CCA7C86CB853EBF871BFF55EEC37B1B111913B6B11DF50CA57C582E51D5ABEFAEFB714042C186BF409D2DECD1042246493947DD4E0D15CD27CB4B247C56DC9A707E638E26D5B31A0939E8DCA5C31CDB6D6D505193B6718B2C85CDE5758B6F453DA0EE83F49FC0C5F266F17562CE51BB2491DB0223FF20E7DD1A3E46A0BC579DE10838F7CD6307F3A159B5CC3C49F0A8369B0D0F0452EB0DFC76613AD2BE149031D294BAF7A912E3D20B3F41DB8F38846B1CE24A4735289A751DB8653EA70C6C6B16B2B3A61256F6B4B2BF35F2C738B8B32D6A77A800E105B3D8FFFD0A4931FB0097BF2308618CF29EACC1EF1635E52A3CC1C2D0D7C54180A2B72E6F3A618410F0F2A9004A6190B9F90ABB9323D24944AC6C5A0F83FDAFADF9F796A0B755649887B0F5C21935AEE6BEA060619730AFAD95191ED137326B6D127C0F3E7843C987CC9D4D0BA841C78C5242640BFA6AD8B7ECE59F4D0BFE4E4612CD5CD39F02D5363F9B0BEF64B19DD7FCAB8585BA880C16254740505B58D982B74854034688F866808F2838276D9CB3926D9CB1674DE57107C4FDEE0E931C4C05E5D90462ACE250705CC50C039827B778F9C97E26D72FC0EA88DEB14F0FC9A53D054211AC4DC95360F3BC18A6A443FEBF1518520FD628AB1A98379AF608CFB81F78DE5D3BBE09F26B17C93CA01EE3C693015D46E3E0E00ECC544813B603B4BACB4476E8890A41D7A20C25CF642C84800C7DF8B15A1FDFE3A3BE2337BF1C04E78341897C34FE5F75D48BC971D25F2A2EDB89EEE72044662B23277F4E580EE6ECB6F628CED8CA837F2F92F8FA9A41A3CF23A670C601393C599A8859B78EC0406A96C3DDBA345551C6E00318C4016C1748038CEE3C9FAA92302CF86F4E26BC43B9BF18A6B937E6E3D69ABB52CB0DE2CEE28020AD87051B645D47D85F4853966C42A547A66B00BB38395B43BEB7DA5C9479168882101B8BC290E126B19982C234BB6393E6AEE23BCB1AC9E00C12EACBBC3352812F0A37142578626E25AD67443140A0EA88A2F65C154CB534C1023C1BF3025104BD52C97651331A774135AC579D7126F4C2CA297414F76984AECCD4E9B51C6AD92F52A27118D007D6C0C94D0EF35FD7587E1ED3C3E53CCACAEBF41853A7FDEFE31105E075F670101E3F5099F9EE8CD96B08B285090AD067042B1E3AFDBAC05F83DF262764E97EEC67FA921A961DA2C142E5E40D13C2361D489836BD5B9E24CCD482543370E832B7C581D5EA190D56718152701A02341708B4629C1E1B55E99BE195EB8941E5A26DA5D865596C0372843B483865B959FE132831C6158C79B9D81451854A6F4783E4CA1F2B9FC0FB9F697EA509FD2034F55F2FAF73ACDBF2B131BA5D6437F6FDEC72EB73335C82D5515E6F41D44DA9DBA23A1F867B95B7AFEB070D2BECC79BE0B0DBAD7FAB7FE8C0D43FE7F5E8587B8C4AD0EB70C7E3653559186D463096203F09678FC8F744411CAECD7B9A9244F5E4F745C465E9D9502BF8D91BD037DAB520E2E311EF71840C0E2C5D33E9389BE65C949D36F157D02EA95B4D411B30CD34012598500736846A396EE4734DF4ECCABB2757AC66FF44096ED328D14BB384F1E8C0D66B6EEFAFA08B352CA41DED01BBDDF56405E1B2FFB0915628B822D5ADD267F5699A0A9717E00E5738F996BCF69168F4155D383F4AB13B9C206E7336367BF89D4C709719A4C863D0D809E41FE1AD37F45D7F5A0AE9A9C9CA3029F9D9C25125ED62897609CB5213219357DE54BCA24CD933FFAFCF3819226204DA5CA3BBBBD1EEB52F9DE43967577612263976AC9C285691F22F8F2F152657697DEBB9E1008D0AAE385FB471FB486CBDF37D3F9C9B93B0A876B6F63A055B860F2ACF452DA753375BF6EE017E1E88A07944FF7A46A59BD2BE0A578A4784961B4CAB620F4BB892138CFDDAB99A7511752E8CBF2C5E692FF9EB4D0833CD06A8E9972B63948C0C30A49C22CE00C577168243C69BAB01DBE675C4F84D82A45F54F15C48FA307E29B5357682F46812C890DB6604F30773793C91DC01DE490380153AC81CA6BD4233778B83FCA51C35E7870E1D8FE3CCCBE02D74D86D553F0F446A4E49CCB66328FAE0888F5C183259A5838EEC777B9284E288090926F92200611AE27CA84FEE571F67E926B9C76343F0332FA770E5A15521ED6E81557762FDE88A9BFEE739BF7DBE3D4A3836123894FDC5EC20E189E3CC0B1DDAFD3B2879BC30AEECA0CD8AA53242E429E3A482B0D68DF6C4154D9A201D39D7FCA78119E6CC4325F40108A3D95D90C97D8C6CD71DB8349510D153DF5A39EEBEB004FAC7A414FAC1BF323F22624822BA6D35F7B31DA966351B50B3A309A31EA31B1B164F71A40367F847DBE959A0B005E17408F306BCA87A6DCF13CB8CE5F5B7D476C21B6CADBF7324575B5233B6855259D17C1E9ED6B52A6BBE81CC30A166579E9657BD519D978F19B564C1F20B5B5E4370AE562454671E0E264EEDC5DE35A69284F5D302AA3492AE5DFD8B0EC5456776E67E15206F31F6130BCDAA19DE8F931BC7E76F6888B3C966F594F2CE4538E671CB4D84E8B0474E3B4598B49D3E64ADC00645F87DB53046C4F5ECD34CA26967D852B74ED8FAFD61F85F1AFFDEC3179BC619102755418F8FC57D4D55F1DB0030B8642EAA13842A1FDDAE82990D11F05502859C25E775D0D1D4E5E33F520A9AC4E9E51D2A91FA4876C71FB59C105274C1E31FBF9ECF35B827693817F345ADEB91FF8696DAC4AB6211A7202063830BB443F33BCA95940D64BC90F9C4D3E59B06EB6A6EBC492DA25FE7AF23855FDF58BD5A96E8515E8C64126E4BC11096A9A8C0E904D0F303F67B9417A3309C230841E0FB1A8C69A2A6CEDDEFB82B176383CB564686F3AB298F03570A88394244E83B8662552E7AB86BA4AABAEF66E2ED1EF5A48CD25C909A4778B39D91D4C51C0EAF4BB467A4CB0AD7E3E86B2DFFAA6B6945C1A33E1FFDB8048EEEFBFB0E697C537849948E7C524DB23DAEFA7782FA0AEFCF60D5DD5FC81B0B6D2EEF9C34CC15B972C70F54ACC7B7E658EA0450D33E8C8B0E0372D628E8458C754D261BAE0BA90E4A57AB46C5791BFE75EFAECE591C9A5AD5392C3AAFD6B45946E3FB4F2B4905F051FE912C54A5B27E5F778FD8766322ECD38B7ED045B580F25807236D079DE36B6033D4EABC42838AF7AC2C26BB852898E8EBE1EED8D1B2AE1CE9ECD98F72C34AE06B45A86C7B6C659DE8A0098DD7A9C8EA136359514078629AA1D5303748D94DDC2DBFA3C93F2C8357F619EC976493E442A187628B5F70D707AD998FE3AD1B73903BAD4916EDF41D933C112589883C37B363F392AF07157F7C7A4EE0A11F46A45310B882C4F5F2E3C848485E7D43E50E1087BF584EFBC0AFB148F46D3FEDA79F2017D2B5726AC570DBF4550F18528F4B8ACCE4AFE6CE400FB71750BA64DECD8EA1225A6D4DF4C24E0D2C52631E981EE4D0DAD5B03A7B086D2E112C354B0E61357ABCBC454FB4C29E41F309F9F0C8A11710F82660EFD25C6165B3AE6C8E5C842F5A4DC9E000B12C0529B41433344FA7C7F46E6803ED6447697A22D5E172133B7AB9BD105250FE3374BE848A0BC451A7B06EBDE2CBF4F14CD8EF46167F203857170269500EFA5F34B47C75DED9B9D874EFFA7ADB83DFAC202BC72F4A4DE38D32C853B9EE6A163C417C68AF145FFE2187A9F1B6E2AF65410671FD5AF7EDD9BD5E7A57B3EEE08833FD38E70985E32E70A24064E0CF5A60A6B723AC6C75BF6ABCAF73EB7C61C65C370EB62E3A18BAF4E4DEB69758DC84A07FC991E2C754F13C2C580770D3946AD4940E826EC86F7AA8B374E788E7481F2927A32E9F8CB6E4C47EC76EBFDFC1C649C7E50D00D08134F5CA712AA160D1A05473DD9CE30C7B4D154C39ABB7342D98D723A9BB218EA0EF3205F0E6A4CF61096E9222EF98F11602DC18B9D0114E7AF0735B2572140CA9A0A4A9B6BC3AC7B7881727E11EC706EB258EC2024873FB7703E8E96F8188272604D1D771D3463FD5F3F45E42173138CF550A478A0C01D5B9EFAE5100479504BA74CF3D813AFB7A6AE5FE854F9280DBF36B20977C6133E153D236805AB9794960A5B2A9CDD93707CF544CD36F00485846A5975B3AF0C5C97A3F4DED111C7B6D29070ECFAABDBF1D0E009CB928BB5AF0203328256EC5DCB91A403737A64154B688DE524F17D96A71191F5008ED7CF3B4F7BBD0DE39E039C4F39DA31BCD027FCBA14BEE806DA545253E407ED2BBA79FDB5FA8F6BE52F207DFEF3FE2518752965BBE5C9785F48D5B23B82F2DE1EA32B91898F82BB54C6C7B4214EAEF1DADA8AF62D74ECA039701F583BB4B6CBDC697AA3A2BBF69A22189A311BF9C2378AA9CC404430DCDFA305BC9D075D9EFEA78586A3878442353D3B74B127E881E95DB0159B664AAD3C80F1B03E87DA6A69C0903E608D78BC9F5E5D36BB37435B4F045528E088CAD8A24D52DD1357F2393CDD64D520B9C0E296A822AF9ED06EBE11EACDFD77140EE6FEEBC20ADDCA58618E2A0DE98AA13593AA645BE6BFE1B5AEAAB1CF52F0ABD6F65A9E452FC132EAA620765D609198D2EB5C8188E900BC8CE29C14FE817F9C6BE1F91C5CB78D40F440BEC1B04706F3D258347963CD5B9190FB4A65C794CD4A3A149C200CBDFF183ABC8C0035EE6B35AFEFDD3E86D9551788064CC2B716353761785062018059B51C5D30D8869DADE74176818163843B6165280B6B354FD1E4336C7A8BB08F6BDDC5861384821817D30E463632472D86A9B32B693A8E88C54A214EEAB7F51DDF3C578B86EAA1D613E5F643B3584D7D05C58C67598D4581EF7E88E5A728E9EE09BDE4C1E7C969C0DA36AB89DCA64D8167FC50B2F6EC4BA7A6113CAF12274051A1F6624E6B58E0DA1E7F630488052D8CD3ED048D396E8571764594869E71C26BAC1231C61AACBDE2FA6346503F7A22B032874E64952C28DD39FD55F03FB1ECB32B16DA8C6212945E07B412EC34013D0C91CD81DFFF24D2068A9CC19D8AE03574A3C95F0A62FA02E7E28751B2690A1A2524AB23DBD8D08268ECD85F919E77792D594541C1D1816315B7CC3BC324155E3EA43B31A24BBC154FF046A2B0509869DA5B4D9CD0EACD7143B01C14A8366F881716F5064E7B3320CA05B1B061F171E69F4A3990601FC66E42BAB674060CE4F05886C890F79B79D4153AD32882D5CCF774FA9EC686F059D8FCA2B1538DCE6F8AC7A9288FCCCB440F04DA4D9F01A13AA082D4D28D9F58618E9209A369C1D576D454E142DF381270132FD6E568909550D4A06BDAFAF706A438A72AC892121E7FF8749FDFFC5CAD9DF02AFC97A55442E842533BC743FDA390BFC7460A0E076C3EE2759AB7336798FDD9CFCAB7486DF61B3D0D89B912D7902470C2EF5E9ECAFD667B1E41E7DCC2A38C9F7076AF894754D1257FD357B5965A98349BB89E4069A147D26F720AC850A26125D53F460B7E612569B4B0336750233F0F41C2217D7191E1E425DCA14F90F6584711B3A0431C3FF74A565EE693E1658CDD6A27E6BD3677AC5FC4A33DB372367A63461D57ABB15BE0359ADDB47F65E58201D831EFE42525E68AFE4F0481DDEB61D776C988A8613BBCFD62651F8AD1AFFE2A249B6036BEAA511988F742062F401E5CEFEFAF503C05BB1CBBCE9EF8C81DFB603EF1751CE00EF821FFA58308B7CE926297EFA2AF0169BE256360A3EAFF323EA5614F58CCEB780277DC6DE6CB3A01721A2553B4D5685B05B3647FE357DC4E2A89E3C03FAD69272A087908B174330B7F8C2112A84B4AAD6283630DC5CEAC1BB4114CB5CCB2F3AF20662BE47A2AFEFD3C383B29C90A11692B3BE38F46E1533A3DAE1EB31F2946442754C29B43D30DFDB5773AEC56135B09FB5DA6FC3B83C45E4ADEC2F24F95FA55E190725B94E7BDF5910D5998F2266274A6EB39444A436C9EBF23FFEA76806266CF588A7BCAE9C48E5ADBC3250C6AE7C11441D15EA29BFE2C7190509EAC6FE3266B90AE98B5EA6D170857DC9153B43F0CEF4CC05055A6C1A0914F126DBE299F85AA061EC33767B18B7CA63458A3A3C82DF01DB96E5619912948440E3C49EA229E2F6FB6EB7AA8C984EA2DDE6F607B6798BF7D2E7D33DC959AE748AC541E01B67D368661A79E5C46497670F478DC01864F18FCEF49F5ACB6AC5C84B6E1EAD9CFBEAFC48EE00084C321EA49D67625CEB5674F43D39C81E124A0114A91F617E084ECBBA87180953BC80D203F4B3A75F226C661E649407EE9D68937BD33CE7EC91E0AFA9C363A75CB65096C0FC133DA8252FB047804076735D7C904F636C905D4BF74392BA49920EA7221474F2BF73FD7BE6F19D05698036B4614E6308873BC2FFFEAB72C7FBBF0C0503F5E6EA49C900CE153ECA167AA4FA3D32AAFB2D1C0D0A7DC1AF9406C024B582388C1EE8D0353A4AB18051C18E2CFE0D479BD9E09652BB6DDD877F8B4D3808EEFB22AAAF5CC40F3B82B7169CCBB69A21C500B35F2AEA46E48F112D6813BC81AFEFFD7B9A36FBC3AADC6A19F6DB3EB1E8B2236CD06551FE5C578B6A6D0DDFF81AF0402E5F066BA6F4EA6AFB2BFB55DCEBEE95DBF0C93446193EB3748B425DC7C321EE965D39828C5B44F1CCED3069981B58F6A9F8D28C990E233B8BBF786CFC6A5CF9348068377BD3B64034E8EABE9F03C9D7D33386E72D8E2D741DE5EA84C070A4CA3B38F62804D05B2522D150B0A4ACB32569821AE30819E0CC93C7B7B42C90AA4BDCC4624277289C533B94C86CD163E5E51A3B70A8EF2B1A8306F0E0B0ABDBAABE5A2C58BEAAE5F0BE26A6755C70E087FCE5CFF24647C0ACC40449EF2F547D26EE55ED4E933707DE3ECA84FAB5A4F5F255034A48110389543BBE46B7A3D6C10B45EFFE9549A47524FB969B9C90F0F212507537D93832DC50C519322C87A4D8913639B461405CDDE487619F6EBBDFBE1B4DD4A6473BAF95635E2B7EF84A10AF13EF15CFCC7C42D7EAE58CE85F2201FF88DF824EFE0EDFDA4E99AC1F14D12C5F453DFA06D9ECB924460CFD9392FC30C3885CEB880E6E19A34366567825F7970D3FB3CAB15FDC9A460F4F7F8E9CCEA476F410201A2AEFA692B5950DFF4ED10D79375EC9CB5D4BCA16AC534C733FF1D0457CF93C6E25CAF7806A904637C903BD3E2A11064D9C79B50117B134E6F257C225E1A63E80DA8B471C4253360AF50338C10F598A62E37AC82BEE628DDD108966B56ADC9D382CCBE1A8881AAA1BAC2AC1FCB4ED29458B74407D02129794ED9BED63947885DA9CF14706227612565694A90D989998A2B1851DD55EB0AC88BBB04128D4DAFB8727FA4370830FC501F05F77059BCC77DB888ADE5F1DABC2CD029252A55019862EF60834C1C72663AABFE4D5B37FB913FCD9A164C7E8702B6EE4DF7290B361F8F63449BB666A01F1C3E44D45A5E680ECAAC99A063DC1DCDF96E5044E0F2B948702E2147B3545A6DF66C7B7503CD69EFED7934C89699355A3DBEAA02D39373F913CB154EA7EC0E9976151B11E2F6BE3A7C073AAA536D5ABD722C27C919DDFB227296E37E25419664B2ABBC6A33EFCEE112F57C8E4479DFFA211B690D6462BB492547C9A53D5505EFAC698F486CAFE0A8C17826B50E002B8D58D1039D8759F0480C3EF4220F75950A84C2C92E504744473B6E0694D33363972813179A0E58E9D98C2C6FE7A686C25AB5B9F8EE9A830C9CC589B04B0394455A22D45B4261239685AC2E38DCE67B5B73A1F0F533CF01905C6C3A7F7697D77A8D14E85B6490B1A93D0A4006B573AD03C23C2EA8AC8E55E70F18D658AAF03025B702B17666D73E4F719F2F727715581BF5112DB065B287C440670BF1510FF4334E2CAF317C654041BEEB6C58502D7CA245F2FC698EE302CE30AB7E04C754AB906871517504664BD0A985097B900A5371F0FACFE4A46D5B440EE59185CA86A37A411BE01ED8223A2CC8EAD5476A637573B50A148FBACF400D3DE835E6060F87D8E1FC4DEEC635733CF6CB6262B2AE1741651D530DFEE4A2831825934A583E2CA4D9AE79B0ED46B3FE23C256CD08DF00153B1ECDE702D6FDD4AEDCB096FEA45D5F8A01497081B191CA0965029615CF62BDA9FAC82D1BE8F669D685C131B636FC42E101D55478C17BC3C90EDA00D935FB0283DD6FB1DC98C0C470F5B293B5D9C0E22318B1C7098B75D557826531925EC1AE4BBC075BF8A127494351841A7BE3B60A780C4771BE3F3273B81DC8705D79AFFC6069BAAB443708A21513C07B9F8ACB2770C2A2577E79A3983E7B2685042B0CA0B2E4043DF5B92C3A98FCED8BA8A2D494EB67E9DD59E45D177BF30BA204A714B587A86C613EEB8EB318080DD63464665E2F52F25AAFE39ADA229EB059EA66E782A7746AD2FE93FA46A236BD3C5D2EA35AE09061A0E567DA23020CBAD1C2F12137B0D9396019B564001C840DCEC89145F09621DEE5A61FE14BD6366A17F5DC0BDE46E6555A76BA67E03FF67C48AD925799C9986DB844A501F3C869C5D8D4E6BDA5D7FD8E852E2BFEDE23DDF51E85BA28C53EBAFA11CC247EFE8D86657093B72F067B36F04A3D6351F1FAD45E3ED03103535BD0830BDCCE5B923E71ADBCFAF084C221AAD9D5C9628C7B7D3AD5B497C868F887A5B8416CD0990760D51CFB7AC7ACF9F1B9D6C97DCBAFB04E1DA5763C21D050527A7C3BF91215DF61977DC8A4E49310B8F0D19C41868C822C069D27F898E5876C99AF54C39F34C26E47FA7095E56E3A2293FD3D259E5A0B93A4262D5E4FE55C60899DFEDC376AFDF8157E5ED9BA65347BE93ED45FFC350E84DB8291AB58358DAC2D2C0CC311763FC283F4EE56842F085F03EBB896C370DD74CDFA8EF6C858FC7D042E132CDC0FB21AA03FDC5B014879A449267D3AA04914020C700350A100EEB82FF8F1CFD8E7A0906D0649A0966363C3F91780CE5D78295A2108ACE57D930275584C92B23AF6B39E5F1634C8DF0F4B858ECD53E2A313CFFA4B6F7C7741B8167596EB738F98837DDE7569CC9864DC7EBEC365C6769113FA4D97ED70DDCC91EE3F3B95F8A301ADB834752C8633011C2BEC67232FE5259DBF0123C9B8D81000AD6B1CFB89E9B520AED7C7332693A5CEAE5E3B54C3E3DA1FA7703DF24C3A3A26434FCDA265E19D9509A7638933972C577F584C392A5E87C094626F5709774F97C95A80F3F35FABDB40A7DED6E50AFAF390A9ECBB8DFA1D86A808379A795516BB6821D9529D6B66ACB56A1A1AC41878BE95B8EA31933D872108B7A69508ED5BDFC0BBA1E752D20E3353BCC27CE42321ECCA4063EAA5BB8EF7B8F8F1C628928B76BF2F327DB7ABDC920CA1252FDBB4DD152E793284DEBE75DB6D64CBB681949E0681E36CF44C4DE83C4D18200E8D8A1CE866FE89A0BEE019E748E36C6B169C0D3C791A7EFE6E4CDA3856CC9D521217F03A6999D6F3F5EA8724B8040E2A044724662445B7BFF3CD8C8D561441D338B475955FCE191403EEB4B2A1D44E9FDFB06966868085D7A726A8BDBF7958D0ACFA1C477D1C79AA39236690FD7EEC4B52474F0391D162549F668162614176B4CF880DF9C0A2965760B73A30BA269F151D8C0E128516D36BB80322647961F4ED05681378F6FC94444F8C04EE30B5F667706E5DCA0EEDD1A219B2E9ABBBAD43C93D0D4257494B1E1440D0B6D0C1169768C9B6698089061EDCCB88671637328ECA1CC7CBA0F780F28BDDC2E00D99200F05FE59C901BAA990E73715BA1ACB7E53A371C73D30FE10B54FE7864AD0749C025726FCBE8F361EE38A0FD94C0A88E5CFFDFEF22CDB4963294C2836EBDA0586171A764C91571F4B9718473027B22D31348C27F22FF73ED23E096ED8E5F9D90E0226CDCD18E7164CE25D35742C7E82FF555B34F6FAA4D5E200E447DB6BA695401238DF3C83CFBF961DE16F9E64A1DC31B76260AA380AF8452AC43790DFD07202E3E12887B2520BC01A36D35C5CD72D298ADD8D7A04ADC20A59E10E60B2824586B8646419C48DB372327034BB3168081AE9847F9663715C5153B5EC52907F4028FB3B5DF18614AEF46336D207C7F90B3B19B75FABEFDFAD06EEC3B54B5BF7D19D96CFCB7C60325BEC65574C040465951175AA63CD460734D50829911CBDD8A11A02906792D9B9B37E793F9C57E72CDB3E8FFCAD2079EAC80955651F01B9E194ACE2346C696A1EE28D651E49DC99064D65B3CA41250DBADC53E4A976625CDDB5C7E39375DFC108F6EDBE3536037FCC6115012E972D3B3AE6E50C1B3674BB914693A3DAEBAA1092D804A29E8E6D876B0710EF29146060E3AA4606F64318D9027B2ECE36F60DFF5AA427E3F1CDC15C745369AEFA41B7D4E03578EA614311619AE0521ED986215060642842934D45714FDC47910A529F1C46D72ECF731A4A65776A61161580A48474B8E11098B4A7B94A71818EF2BC535EC0A2A094F5992BAB43D6A7D0491569260052A5DCE2CF63490F30ADEEAF0AD56AEABF7B927235059A2E12D7E7176AE090A262EA4DA0676D7060249A6DE94BED8153AD85E55818B8DE18DE28A85934A37E5BFDD310D55310B7FC04F86FB5CC891BC780F07647C24C9B9E4B195E3A372FB872CBD91D2626803224B52DB990D5FF50311FA7B432D9D4FE747FBF120C01056C5E727E0829502406803DC2495814C7B446F237D7A98E11357718B07CD8313B026568F1D9D1506F15D0BC629A543D29DC858563B24A302447BF5EC4AF36A1E7B834F5E37D9909C98DE4EC907F7082886D6D4BD79A46F73B327BD625B44E8226CA1F6FB5263CD843FDAF95280DF240BD1AAB90821CE661D03284CF2D03FD2324496104D46F5B50F2641CFC612F718559686EA76B4542DE9E3BA71C490252B23A5138440E8201C2730E018C82908B3E3EB71088DA1752F6CF8008258040B3732FA6AFD55D6A44C5A27D0853AE404BB05E7FCDB8144BE329EF1051E66ADB118A5E4404AA07C642CD5B6C0EECD56D8887445EE77B66ADA699938EDF3E48A0D5FAA823459CD7099340CA82CB3AE95AA0F5B8D34BA7D3939578A35B31CF2666CD1DA48AC87D33132F93E40B2A7A58C2B8DF55971BC8AC97BEA274433F08BC1080263465EEF89CAC99ADA8DBD9B7A2DFCD3B541537147006D5828F4E0804B1AA1020FB308CBD29CE9EC8D741E6E79CCFB08D67E5E5301F7FD90D04480477518EE8E7AF96A8E5B74F64E0DF3E14A56ACD080F716AB67EDA365DA6FC3DBC802DDCC778E50B842CAC0B010DDF5D19DC2DB388EA93C6BF24589D48D7949B834D57BFEF3852E8F29097264338B0C04BC32942634A18C05486E58857BB28D7C1083783D9B5CAD4B01BC59834DDD43904FC4ABD52942F2622186B2F5988FE1D1DDEF914531D6F93E706C7E3F0A1492999DDFA3589AC751C3FDFEC8DCE22B05D2CC263EA7FA06B31C9B6BEDD8388786B81EFA8DDB16830482CDCDF1AD713DA8752423FB4A4B1CE567CA260FE9B26C01279B06FD12EA415EF43DF855BEA96343888B28D1F06AA467207BA1E1B72C7B115DF212A524E18ABB86CBDF5560DA770CA31BB3F1CBA7CE987A273886D28C09B80E6C273EBCA905146C4D9126BD113ADC56BCA9F0E4A883127F00EADCBA786FD6D197A4B0456892CBF882996377537BA6EBDC4E9E7B185896E407C12DA72EEC3BAAD6B0F99052B232C1BC82FA7237E8E71E188D734088B8E8ECFCD0A38E92B4D507BD51F2B4491CDE2A3BCA84BACBCD28FEC7E5BB4433F7572EDEDF87C46EC17B79D197B22302876FFB53A8AEEA93ABE02A78F94D1226746608437D1900D5CB27347538ACBAC489E555062331465E3054CCE1418FECEE14147847796420695567248A77BF66F7E49B881C123C920CECA1AA537DB5506BCCEC4540DBD5D0F02741112740EAFCFE6160E3EAE871F7BC336EAD1010880C8B118588B57527FB1A494CE970CC02AFFE781DA3AA7E5D257ECBCAE45EE0802E77FC9476A985A6E13286A19A6F8B77B2D0E61A0498F006696A0D5F54D36DF6C4E7E0551609D3ED30C7C6C1939C506841FE9010583694F0D9CF3B92E50C6C235E3443E8ECFF6BE61536690B4F5127CF291B24719759A2EA0C37F96CE99A35A698685AC316B2A341012C2BD01BE95AC5F65E2968CD6D4276D7E101EA5BC5473E91FB27879E4E54DBCF5BCB382AF531B543453405AA7BB4A2B8683116ACC47B3D2ECF35DF07184581F1D0A87176682AC2B8FA0E6154BF22601495BD675EABB5A8863C99CFB971D6900896402799A54C81B94E6829F7E26EF1A0F95BF16CAC64D8BBEA7E4363B020437C27641B6E1EE5A55AC45F40A12F838FCD0E08E3933C51DB3A8A625188654F7015E26128ED6A79FCA20AE0B8BD2A6BF78F92498455266794796BA28FF39D9F4D3DA0A9A3B1178CD39700B9DA6358E5D2174CF033354B65FB6D7A4A2F01688D70DD206E7EC2EEB9DDB302C8A81BA92774FEEE7D509354BE82E6B844E231E13803547FE8BF01AF86EECC05CAE433AA46815B17B212716E41CAF5BCB10ECCBC1B8DD41F0EA9C182BC76FCDD771FD6F2AB355A6DE78CFBE0A851F5A15885646CB09F98601AA0075C223A8D7C1CBDA308E2323813471797907D4087F80F64E6CF73C1000CB45DCD7C835CDD77EAA1319CAA4FC4C1592A4B600C9252BFDE8272A0B63EB019608E430052460527404E170EE3D2AC4CF82C4B207DF3B6C7178E8EDA92A6E55F36BC4168C4894D3C23E52C6658717EB5D3AF8A057799D072C816E6316747360CFF08B62F647952309F9F54626FC6331BF0E6B6FCCDA18AD1DA799723478CB3AF76D52641AC134F6F547EE0EDEB537F5B2C3E79168BECC6DE5CB199FCEEAD1E781C226BABC35A836FF984C5599235145634E86A7728FD6091D3317AC21C4B1EE63EC02ACAE0800D51FD34DE6D5782A8A7E4804F453E7C227A3568D4C773240C4FDDCCA6C0DF8FA555A7D473C1F0AA028723B9403E71A3A086324B0D99F72E9F8E0FDDB38A92C9870ABE97CB48F32885851B7ABEDFD9A9BC724F1218103E75DD88117AD1EC872EF6B7F5194564851C551EC8E7E90D5AB308302C5AB0EDC9117BDD247C01EDD82C404913BB5FC37526750190A6DD96815366B7F4B8D69843CA0252DB6EAB34F2F6ED5EA380025EB67521B0B1B13820EF145673ACC52AB8D0023B152651DC01B57D86719F7C0E9C987F8BA2E9A4D6180832EA2CBC89A64CC45DD7E195F9C488B6EC422A0A0C8A347A5B3F6B3071177507BD6F4544BF763F9EE2A365F3181C3F375FF99086B469001F2FAC082303EDDD0B40AAE3B14470C395671C96E0FFB1A5E30252B2A80C5A550FB3539EE52893C2F3340075EE3817930065F79BAA262DD6B4EAC9B5EBA02BAE993595FD88C6366AAC1917E52384D33A0929A86AABA69C43EC09724AA7FD44F52C696795A45DF9E0BB2C94FC8E53C6445E9E4CBD65E728117A300DC60444ED9F04086229DF86104A6AA0D96E6AB1E87814936E9B608291D1ADC2EC84147C806E6730C03E0936F9C012DAA8AD0810A361EEF7E94532FDC730028891306ED3DAC8F8A4046A2B3D547A1C46907F416FDA941B62278BEDC0AF08ABFAFFE8230DEDAE52E82347F881C7B3AAC6480F948F7EB03B57081932A19DC12313D44F2E9FFBB13B3F887F20D9AB6532BE479E3CF9F544CF7E676F20D74747AA8EBE39BC1A2B550A2D2E2A8C1EB0BE396F9298CBB24ADEE19441914801CE498ABB2CED00C2EB001F0B25125FAD42183EBE6384B8B3D158FB27DBE61ED57ED487B238AF94A0B849D83C1F151DFACA9D0F28F26639FCE7455C45229492AF0F1F2B0E165B1317E001D66ED748E47C84B6403AF4A579B03FC48202BCBCE91818CCBA1943B448D040A0A532DD470525D7A0DE97A4A4090BB1D59EA851F1F749CD52E9AC2D5AC015C3F138572E020CB87EC229BD1594BEB054F0552F558DC4B8193CDADE26E1B563B9927A6FD53D5E89B89E6A18DF6FCBF1531B0867814D310D22AB611CA9099BDCC45D78DE5137DB5196B8349C844DDBD61790B7A7955BC6B755121C6A5AF48824A3B032707BB3194C690287EA3F09A8FDCA9FF8E4746CBA3CD9C2CF02BEB6FA561D9B7A0A29683A8A8496F508DFD04CEF2FA5776E515EF8432DC0B21418F51E02B770879FBEBDFFFAFA83426051FC395CD0008CC3C5D78C3F901DFFE72DBF22F30A1E9D56F78A67C8382ACF5A933C4A19B99058352FC23EBD8A92760A67A143231740EF055D815330B6A68E9DEF5DE62F80F9AAED972DA015657A3688F96467F980C9C78A576B3362C2411B5056BDE54089564FC285339C96D5CACBE086F21A940DDB2D90E2D9440FF993F7365987AF1BB6ACE4DAEEC30B3E9651A9F4ED94B292F6A03404AB0048372B69F9CB492260A28E1062C543DF693EF6133222F969CDC6E7CDF85A58A60F4CFC0F331E27BE673C9F89AF02BE1483DCB3E36B797AD2A47617DA79FE37D4CF4A1F3A9DDF4ADE1FEC28F3154C0D816AA51D1054A3E0D4669B0DA718141CA0B6BC4D1246F445847B1AE3516BDC9080873EFB62D2268EC90213AC216C3A2D199CBF36635C880C9DF7E4146B446BB53040BF48CB08657A47F1F2532C46F9763DC3E751EBB69100E86F61AA68EE43A4F1A3B4576E231929837E603535916010E6CE34D58FB502B078408822CBA6ABE1EC0045C914F6AD4FF1E3C43345A1C1892F3C6629EB201E3DF5BDF0E4B20A754FF18CECDAC2B8AB8360A795BCFC544512B820A45C8CF6ECBDCC54235B0109DE5A985B6BF3F529F40B0008D261A684CF9ED78796B8B24BB75888DBCAF07415D4BC1A621CE8EB041BC305D3CBB76FCBF2FEF06B40D4F712EC6184B2D0E84738B219841480E87F7A51E25CC4F003289EB0DA6F637EEF9AC89FEE44B2BF7A342AE42548A2A16C20D6D604509897F885FDF2FB4843BFAF20674F0970D3A0AC9C5F4161E54AE0D89519571A08A05D1A6D76D7E6E416C70EF8A9CF289919E1DE817462A1922264685350335AE748F2098A281C468A55D4B4BAEC8F9A5E411D4F668C7D3033A7DC77E5A7BEA7B2DCC57F191E77BF5B2D3E1A3536D44E0C4D5D307441F4FE87B79AE12F3694292B91016F65E3B6F552E357247FAA7A4EB7000DCA88F0269D5001D4FB7AC563C0003EF133F2CA5F3B2007382F9F92177CB016CEF1258515A43BC984F40067C79757B1E566A309CCFB3A58B16D6E3021A8225040032FC4F841277690063F9E5B0A93B2C9750ADBF798F8017856ABF0BD80FAB973545E8AB01A180579F9BAA91CF2BC2F6B1F3F371829E660762D822566753DDD477FDC4F7E2A030DD300E55B9F17F1943FD9F1978AEE98C4AEFEA177BD52108B490B9290D8A6CE4B7E8198694AA44A5292E54C17F2ECF9FC1417E97B727CAF5B37790DB067C15D85A179C13F1C623BE844C3D18BDC27F72DCA5D0C220009FBB1AE544DA22C15AB4996FDD9D1618AFF3EF364DD7E19B52BF246C6D3419BD52F6A1D42C03C879B6EBCEB99909B641A7F5998C8AD4D4C1D7E2DDCE18B0813DA1873E25C8A27661587D322FAD0252A181AE7DF3B44460FDA96F560FD40B93733AAAD9EB775CB576A37FF6147320F5D9EF048EB91F12EE863EB80CEEEDF900DA267DCF0DBB6A2DF55F3AAEF1966F6CA3B36586711A7E7925CAFE3C406119C9E7A2EF9B7E6FF7AE03ADA0B3D1E945F906E157CED4A58ED73C369C25DB306A13128E90A365A46E6AD27FEAD31703848CDCFA7B5D34D3702BE6BFC0489D8FD752CEA484AFC7E236A05FB7C09753A1ED940A9D0284FA777229FF2BDF27BB10EE31BF8C6D8771BFAFE106BF9F49BB11BD046E0329DAA3DDB0CC7CE08768C55C8D1C2D838B6E62C97BB871C7FD3C2D977BA9DF28A45F4F4E3DA16EE21BF541BFB5322B2C825AEFDF15F00F6BB0FFDD3B8BA381623761E2F763DE74B108842A937D54CFB5657E111467D340C8978536D877EE221CBC9326E16A7E76C2DB5071AD1B5E69164B0DAA5EB7C3679AF7216930BF6BFBFE302C1C9B0657538BB5186BE440B51A835C47B653210B8D4A5F831B8CE25501D092DFDA36DBEBC31E75D265FC241818CDB953BDE16718A7DDD4933BF28415A7BCBB28BA45AB51A463B0C7F2CD4F8453C889325441C32D8B99C1D4CAB22EE6AE6113B266CC016110DCB1C9DB8FF0120FF20CD52901B39EB093CA06E1FDAD4A0117ECA2E3611C3FC6B903D60D9E8112A39FB46EADD1EAF4CBEC9548FBFBFEB0576583482A5DC2A98D6B040B785C4E2B14E8BB0106506A22090ECCF93E55687D09DAF7079BEE67650D217C2257FA6A21CC31BAC0C6A4CFF519E7C9821D8C2CC77EF53FA32910532F1BE7C0A44319A7AAB21FA439E79CCEC6996B1D7643455FE7D1B7375F846E1873D63D06FCA00EC6F1CCBEC0C2D4A5A94EB0DFA27DDD0EFF287BD761765BF8FDAF0BA659766906D47F6EA7496118A881AE4F65ED755D70634207989589F3A0025D33645AB653B60EF98A5F280A3608194FF919DFD801F1EA491B310412AB70E6B7812D5BF62688DA554532ED786B950615FF09A7869B52EBCE58E1AF5E35E6E75793D0721C18C36FAC7D4E34455F8F91F3954057EAA5EDCFE01DB0C5CD5B1169B05D2E1869653D299ED0BBB550D0481547C2F408332B780E7FAF5CF8B7B87FDF5151CAC978A3E9723174347790E276FBF11E12D70FCFE648F58F0DDD147A824EE4CD667372B2262EFB5BB85EE1AA58638DD72EC02D9A5F85381BA9D603AAAE01EBFAADFA4983FC430FDA61B07986F49902C129B69FF4BA9F2268A6A6CFCE4AFF6A476A113D90F97642CEA7D90880202E103FDB7543D2C1BD087C396AB0E3E31A1D5FAD2600119395137B46DEEEB4EC061DE4FB058CFD72BF4D729BEA9A985773C273232F9D85BA459A1D169D5B83D9E3BAB6842AA336159222FF85C470B88891990D43CF2CCC85B596AAF1B1E58FE1A6C99D02A49CB196C5696DCDDEB9EAC6A6F126F05DC03065CF1CED8FC510B9FEA6D6A6205EA558A5B1D5DF90DA41F4F3828A8CACF35A214841D3A1E995AB898BF8F17A4D3B609D3AB7BC8EC9380871D3626A76F04226DB32B26419298F2ADF2461520FA486585CF5203354B99B378649CAEAEE7A7BB2C2C1816A0E7E997F25048F6CD36A51A6099AA8C14137BAAFD88DDF61A5979682690F4BDF6C1B65EFA21C644B2D0BFCFF28DBA278C8282E3C8C3EC29621AA75C3374024D9F92D138407ED898AE4AC9153C92AE0CA730AA123F3D4F12BDB47BE18EAA4699CC84B3D7B0E37E7003589D24E34505AE13E8D1EB9E6C171623286E5766EFC95ED14594C4875F24AAA567D95841C4A4912030A737E77F69839CD61BE8B4502C0DC17DA369299685707610BC0D08B1578B1CE263EC503CB595F2879178F98696FED68D43CEEBC72D663A9C0F316BEE76F723EA4A0E0E5D20D96FEDD5001866D1B7236EBAA5BCF46EE76A48AB774D6E120A8E33853B117B65FF161552F994C2D3171DB2C4C59BA17488678AD81A9DEC714F1AFCB924C4D27E8538091C26FE0085E2F2D8C34C81B163A6F99838A0AE1416C18563E7FE546F79368299BABE07C1E52450D767B38088E07CF82A00B9F1C1FBF7400FE864616922D1A94D7B9BD0058CB49297AE7E2B5107BA202E1DFB7B10913324E10838F8447203A4D55726879D55E123FD9C26AEF15684899BC7CF6D96E0A65345D8DF62AE599F30C16615909537F1DCD87D8181733938A552D388EEA370B6D39A4006BE88765C43C04FE8318D3F632800D62680CDA5520539C57EAFEDE19DC0D23AD3A1A4145D4BA154A81E9DC900677A617E3A86CFF10BB343F0BAECF9BED434F6853CA5367E77756AE96FFF7CB1B18379724F56E914D47DC023EA31CAE8A62D26E7235FD80BF9B79A8E9053A2EC12DC1C4F8BB4D564D8AE08E5B896748A29AC8BE075820E445B0A29AEB395725AA28780287297F7C28BBD4C78A06B02D9A0AB09EC426BDDA87C8E8044E2051C7DCF72777A0FD75C3D725916BED3753D0CDD2F46EE3E78B50B2DCFC129CF1E689C592FDAF183B4550162F49463E23F1BC323641C44C9D7D6DD196F54AB78EE89C16F75371E1163C0B7A1AB775EDAF5069DBE8E7BA834C9C2427792133C472A111634AF2D152317A683DAAC15A5FA7F9FE1E3CEB3D2138F12BAD1EBF4567F8A6E836BB5A74337093200BB2ADD7A5DAC0DD3B0F6E11A705A1C01DC726A589B3F0627F2CAEDC8E0D5BB2F94A2478F1F45BFA98FFF485AEA08DF554BF5B10B5062B71E10B03A68CD996EC4C4F6E91930DDC743F71222E9BBE60834F9E310C5E18B81A0EF2C24D342C82877985A6E1F96FE5387F4443A2F45D0E584A9A5D85EB59ED55435CB9BFBDA364D7818B8495919C1A677800D92A7DB05DF9D33A9BDDDCD7D7BD1C5A5085F36DECA861C33AD01E717E52FBBC3F5F09652521D4D19AC8901C22897540A11E490073E275FE2FDB933D7B49E3AB7D740B75B79B56A668D534EFA74671DB682A10B6EACA21985A3E11CEB6BBD70B2BD53C6C5017DB1DA3FAC616790E1CF53AEFDB6AC9430C471C79D9E1B6D2BF87D2323198A80D4FE327B792550912BCBCD213A4CC53B3A219BA6114CEDCBD3050020323B435D729282231767E0C996DE2A09256B37EB17092620D7CE021E43AF50A0D889455AC0A9103AE0431AD2372CDD28A486D6D574EB3E071EA422FC4A2BC0337187E646266E85449952FA69CE6FF7FAA0D4D76ECF726D817F4693F88F3D75B3EDB61EFF38AC12AD93997F91F5AA32851CE7135DD1631841CEFB5F82F699ED16E4FED9B074C043C9D849C32D1EE491B5E37A436AA0348FB9E68A91F28B471AE0732A9E679B10DB62D1B5A677CC952166D20C98C62881C0CABBBE78FEBAB1D577292C560E750CF723B132144093B13183244E6D50D7F4C94D25256152A7380E719F6DB8972D81780ADD3EAE880F279B8ED18777C7AB3BB5A11D789BDEB87B18C370BCC1048123E282D32B9073CFE5988FD9351A72D31BEBCB33ABF43B61F461E7ABE9D130FE56918C4CF67DF97FC92EA6C33C37D804269288B27C7858D1287DAA2DE9963F1FC9329B222B2FDAD42E20C1E9328A34D1E5A2080021A18E6A38EA9C58E3BD8B01D08C35678F6804EC8E9A4B2B888CF73444D8D3C2CAEC5A4140495203B95922BF71E4EB8DCD6E2BA5DABFC003E1CA2F78AE837AC5716F4A2466E5E0B1F10FCDB922ECF3527C9E0C34999A5664F26D2D4ED4904CBD2F63B3B858A97201F158DC0CB735A95750CE382C6ED5381B686F9FD930C391C56B1B15490EA021C36126E7B2ECAABDE7063D2218A6AFCA2DD410173CE981017F94F332681F2C1AF9DD6F8418511DA08BAD52E0C547D3F06BACA0406722612E82F5F5E3E992DDD61732D466215CF7584A8C617C0DBABFC8C0B96B3A5475E228981E12C4F7C12BB26736E40E9AD041F306B4F571E9CBED882ED477B7AD10514AE77F15E0208EB0721BBB125C79CA3901AB2616748838F5313B0357AEC50B41E2BEEDDF57472F88068821CA6EFFE1334E363A5238B480D2B1AB43F30B3573FDBDFA566C99D23EB6AE88991632F9ACEBD0254B241A2C905D6D640CE35B2219A591B2C588607ECB75DC44425EDD4C623AB97E36497BBB92F0CB8F75612D9E5C29154FE7A607E43E44A838318F865D24872BE553958862D3DB30865B868FBF6A9651AE4FD9E83BB6AA22230DA376648A9368DB02DC394EEC4716AD32E4AE9891AD098B4177ED976FCAD1031E7482741D412C671ED667E0DB2B55810FEE96D6BEB915B54A9007765774385475261F466789E23F7AC5188391CDE230ECEA28BBB919686D730CFBFD81452B0D9AD322B2401B06810E846B05AD5822D3151130220571567E5FAAA594B28075FFB97E7C91C111B82CD8ED2FD2E5E41CA40F9D998B878AAF9747CD16C102FD2B60A04661918ACE2324718335E4537F8D1EFD60F17F0A2B66CCB3F374777B821B2F746049FB4A78C52B57C7462B0FF8CBE374CFFCFE73FFF274319FF16D4A32CD26B53C81A110F8771DB3C85DAD3C5828EB70D8C5B376511E30D49E1C78920851AF1ADC04BDA85A519AFE9C01E9848186CA485863E2B3A4A954FF8DBC86D588BD44836D4276D66640D5594E3C50D260786FA38A7C384313145F5DA9EE0788777DC21AD7C93D46947474DF90ADB68A15E6DA691BCD28E612840B2A9C6D8C8E85CA436C7A65F5B89D14699176197F7A2B14C207991763FDD9FDFA2D2B2D4A6F020BC593EE05F8AB24AFE8DC88253BC6C7BFC1DB5761F62B425A6E2E86EF67F62D2635F3F91B3ADD2C52CB6742B83601545CCAE73F76CC50391F3828965FD2A5D5801CE120B711F412DB1614C2431C8460CA327CA0132BB223552A4D3437216CC3A782B27C72A23F88E02FBB5EC7BEB7B66FBB7DA234B70B6D00FC18079A034C62D2CF4D92D2550F33723963DE40E3C252A256E04BBAF810581046F655CFF19F52CBB75C432F3CDAD49B4455CA5EAFCF6458A307DFEBE1B17CAB263676A6E1AC041236AC71C9465104E65A80559045A5BC7A51C61E8AA112E0A200EA4E7AC2F4F16683DDDDCA22598B04895729B328D4ADBF1790E4A7C614938E79AC4DE74E3EA8154CFCD2C28C6F167C2D0805274694B9068BDDE6A7043F8ED42380A222834CE8CBE954CB8876D7704C7D8DFACB9FF826376E928D81120697FB755B6783792BDDBB1F29DB25E78977267530EBD72587961B708C026FFF3356362957979C02DC5B417403CB4229A8AF9D80A82DD610DDF5F84202831FB5883B01C218D374C2C90931DCD9E98E580C11431AA672AF3A2709B67373AA2B91D9296509BCE313DC13E7A7CAC0F7EACCF30E803B95026DE5B1428C7FA76D4F8C81B28AE80C1504656278D7D91527C8F03176D6C99E8A6376D045989D04F2501EF146F07E5F4D73A18DD0794D0B1B3F2CA7EE4CDAD84DF4FAE4E836A517C1F1046A2B35771AD403720360A2C0A5B8EB8F6DE1B4AAA8E0D6AAC016EA5792C6783C6579042A36F4ECB8E2B8AD4A47527FB0D46EF8A2901FCDCBB76024FA545A91D12002854710625E4305278CBF3278C705480D41AAC4AD2222FD973B3EBCBC7A185D444D9D3A8432338F171A8D8797B31E66F9B748FB4186208A4E895154D063E379CC40CDB88D8CC5926AF4DFF6E26E8FA0F81951F4DCEA770048AE925927EA1E61684F5F9E491F4FE7FD567D251EB78C7096CF40287B52B03CBC95411851EA6B9531A0E1A1D9C802E64079027044E822F550A1E4DA4FC5370B8526B9CFF5739F9D4A8640711F001C7CCA8BAF3AAA74AA37260D371E364FE0D5E10C576E68A7C2A8153F80182A079A3FBD54AC391B4B691FFD9A4A89B35ADAD1B2645B7EE4EAECEFFB5C4235B1BE31253667E11B90BAC2DC200E7E086781F08416FFCE151BCB6D4028BE5E0E87C1A1F86123C269F0F480704AFFC54C160CB88074756E1F5CFDC6078183ED9113658F3FCD80800D2C3FCE5C1F82AB3C5661D68CCFE7BA55EDC36B01CC531897EA283D772497FECB093AD32249C1270FD500B1E4B8BE600450C886F722111DD4F838C5F8B9755B17B8CF9C307F0E00B54E632A7DE679A4A53081B774E381D164C96F8C369AEFC2BCAEE33A69F3AE1197EECD7F66E24CDA701D473BAE496E0B806EF17E7F719B0DF2A792CFBFFFFCB408E3E7E75BF2F731A220AA6F2DBDBE17C7501E541FE6A46A1E0F62D1D5D9F2B3FC2B7020E9344161508D6FCBF86A04A5DD39F33CD90273CCC1E19C0D9FEFF958645F4C186B2E8B566A2B8D3829C461F179974751997687CDAD2D64A409D0197DD72F7D4CEDDAE058BDC0B78BD3EDE117318F7D00D2C55BE1199839C1349703D9B40C0FBDDF266E7CE99A1F9248531C5E0E93F8283FD7BFEC6145D39A618CD8F010DA941F5C2B41C9F582A50D77A4FC69E4FC936CF4C412006CE0EE0A94CC8E90A8A3B9FC790CAEBC94984F9E0816B0DB5D48AEBA4B7F2710DA8306359ED68E096A701AD58C9740F96664D49B812E8975EA9DD74A295B0406E96C3BD6A9821E2787711D5A828B8F597479B8BC9E9AB87FB6D1C59DE48BDD923EA7E04D3E9996ABD4CF88D130C4886A71D431D61F7D420742F8E38D09A4CEFDD9DB1E3D24A8AB54BF62D04DBA839B53C81BEE910E05C08AF11E15BA2D7BC9677E39518D0B3A0228F87330E0696DA15DD97BC5F933D02146E6A7510BB7C6ED9FAB72C1B5F56C9E6984E3280D19AAC24B7FE6DA51748E83C3A6E1DE207A1E3B8D7C76D1ED17C703E3C56F753109D0A99FF251829760AE740C8E42450149D008DD44D92AD878F1C2F2B7A50820E6FE1AF0BFA253C93FF149C145315511E5B92BA637B6C4B14733011BAACF202214EA4E7C28148A302EF6D207733115B76219A6A37CB8DBF97811476DAF194027C6C78326C5AB334353CE840E32E0A0118FF27DE8F275048EA230D3742D94FC0E1F317BDAB320F8D39A456F664B4B17C7B900F71DC9BA0D01E78C940239C1B5AD8B8CD488AB0020A04D95B6194BD4A7DEA94C83CB909626FC24DCE89AE38944A78EC641D2C2EAE2FBC781946EA495B4E0C2C13F4EB5F653315D099D6DE2F798647E4B6FFDEBF24518CE71530FF04C6E6FAC6886916110D6F8D81C833981AF11CC75E51C850A02EE904D34E466857EBC11C3460A305DCEB6DF4E6B3BADFFFA57AFBA0CDDE4F8088179536FF46F2239CDECC30BBBD8822C08ECC27BD3158ECC57828EF0EF19E38FCE7DCEF24E15CFD72C637C442E58EABD7BB56E1006529312F48EE88E6489DC98696A69A5DDEF464F0B0F32BDB0912EFDABF4804B02D6407B7ADB255266B88AB6115AD3809874B757D99279AC409D362874B69A9ED8C3BB4199476DE3A70A4F9EDC6CB408675792214CC2F0B69AB3569821CEB0CCA56FD2057A2E651D0D5F248E0E08780AD57E231B7BB61EAE1C3D59E20D16E69A4887259911962CFCE8F097C3A99DA1564120253B55E018F18F64BBD04E323FC75F068E7A06A953AA96EE95B81A322851B8645A33B43F117645254F4EA1267B182508A59F52E814672D2FCCF678BC3A32F375A27159AFFCDB854EFAFE79E22CEF8C90A4766BD68ED1758CA42B1C70697EAFEE567194FE169DE480123C035977C8FAB5B8CC0ADC1E953C339FD55C9DD846495A0563610DA5F5D6B436942A5BE128E8614D630EF1843B48A683445B34723B48846381825E616F63A9193CA7B27E1718145667EA03638C36889CDCA363B5751E4766CC608C471B262CE2C8325350C433F4D780AF1B53F77ED8F19B9810C0FC4EF4A780D90F2C754481D41465AE7D80E3FEC447CD2377360EA2BAAF207C78FE097C5E14500AFF04E67040EA1AF9515EF2BF47E97EA6C6A3A02041DD2D02651C94C1BC2DF45096235ACFAD196212005D16A4FEE06DFEB3D50FD6D658E70F8C8CCDE18C2766A1C58D00C42A768119FC5B4F9FF2AB35041BFD0617528ABE9F6EA201CC041F7CB152B1B8AEE00D23E99A692A191BB4D835ED5E662F07452D9F961F8EAA6D4C4E37414F52E10539FD570D13369AAE4D9372EC439C5DC367FCD725FBBD1A52A37B4A008E5790D07DA69336C884D5ECC195F30DE9E862AE0FA60C961B0209C9286EF7352E4D234410CA95DAEDC4356EC7069D58902EB7DADEA3BFD6A2ABD7FA03FE6E00B748A71F7E32B8300DDED8715D7A01EA119E6881076FA86493ECC5A2249E3D09CA82179FAB85B823DF0C948FF864318A1C15966DB0D1053EF73F44EBAE778D0B704982B7BDAA785D9927FF55285B77072AC216A2109E1FE1D7D5B634FB7DE4B8915971EEA3AB481DE2C787F8CB030DCB3EB47503242E85E11E1393CC3BBE7BDE24C7F4747AC6242F80849E14830CA3DDDF7BB729EE304F1D95F4D282991554827277CF3525D4D6B15A325CCAB744C8048C3CD0AC444ADF2F07B43685FEB5D7303B17FE909329CE300BBEBD2CC1304DA43263DAEB184B103D61F2E60F2BD57B8B4EAA8BD217FBC99BC5160443F30E03D85B242B6F61FCCC4598450A6AB5E537D5BD21CD8B35DEC9D74480425FE69863CA9A14E7B4605E22CE1041B7E4B70CAAABF4B04DB6664722111017571B7D143234E7F38C5EB939D5FC28DCDB15753E16E5E3A804B3C806FD10AF889E3941CD944CE7C7480D8178E0A03A2D42C2B3B274550CFE285E53D186667949C3BB615166DD26CAE15B3F36B58FF55CCAFCECCB67A636E516BE54490F9D8D5C5FDF3730B995A65E2F8CF924F0A471E8D965ACD2275D3707C46354136C660FDA8969BCA7CFEE2B83BB3295F459BDA4013D30E06CA03577DE3EF11F6674DF3300D799B4BE1773314F40C6CDFBE3550004C9594D780F58C8E2C90B63D54F77C3613F9AA46DEEC615204D6D88434586E44C887714C609E87743E2CA1E52C62B3B79B091F8D777CD790C71C317C089332561313BB48B65B32E5F369BD6709DF45789DB6634B1826570E8323B2A5B695036A8C4337802E755C931B7A03A999DF92CCEFD768BE12A1739498020F28046D268F4A689899C7DE918D4AFE3F9915387CD2C9E67CC4FF24FA80F8215CFFF0D547A18C4CF1F54E378393C8CEC36E45B3E4AB55F1DC4C918B81A940F376158463BACABCE9F806642DF29871219348C6C35712CA468616467396A037A75C807414C86B0D0850C1209E10287137C88577E9E331FFC59719B42892BFB23DE02055933F2176B78D93EA704EB01C73DF0ECDBCE5917E985683D0C8BDB5C3A223E5D92FDEC51B79630DE34A1BD8122E0BF22E14D08DFDCE4B0712653B2C9227DEC980B477B4590E62A9BFDD0B32348AC9AF73B78533DC575640DE565934D994E99898881C73B4005D03D2AEBB0A1D0ECCFECF56AA6808CE6F38D45FE0B55C2F9C0F3687B010526F63386116687C8B639048FB01FB9244E886DA01A94A385652278CEF26DAD644DC735B53F30E1CDF88C5BD894D92F515D94EB5F3487088FF51E20BE7B6D18ACA1C0B20D8509BFAFDD112F895AD76CD497A95921C9A9AE658D0CB43187EA5989870B294B6D7839CB13EAA90189E38A5202915D3154F89209404638FB0B5C93BABAFDE96FC8C976715B4D8FBEFA7AACA71342F9710F551CA733DC41A9D8DC329C2B39DC2F8F2A907BB9E4E35DE4A9E98AE6BFAC7DA2DE106FC9367D5F81C6C3C8987277DD1E01D4CC006133853EF5AF1CE0CBA2A3F28CB0AEADCCBBC6BBD464B5EEA6BC1F6944F7708E5D53C04A09D54B2F108E74F99F61969130F69EBAB5729C3506F364C9DD72565B69060A2F955BBA8E8B655AE258B259C5731434E6B2BE68786B8B747DFBE3630B5FE10C1DEB140C4514B4F4D89CA3EA1676B58E99B0123CBC79902A875F738DE0E48B2381344474EBD800214FAD26361F213029DC1B6F2C31590BDBF9F18FE0DC3554093CEBCC2DBADF647C46771DE422C04BB62F4AAFFF68789D44C41290011E648BF09396831E8FD96679F6665353CE044EC16A1FD5B13ACEB7E48B0C2B6ADACD58F9836E3A9CDC369699E06DD40605931619D1E5077F44DDB58B9370D20C5C046E59CA6702FF5C65B055404C694EAE56C8621DF2CB896BF93487CA2EC10ACD995AE458AA13F56030D40AA5BAAF30D9C15C426752213FF2865084360B289E23FE9DC5F7E4C23630AC4304E3CE0BB3442C039CB2959E7A80FC579527946E7A45CCE95C1C13FE75E369BFA18938B5D71998FC8B1D1FEA115442BC460E8319FBC9B5D281BF5C384EB9CF84535EA93CB4FBC0A4E7BAD1A602FEA2AB83D06285E49839D3DFE0E0107A403AB201515270985DBEB356154A4532994F75CAE83F07F607F628E43D65B5C259B57371B722D3D784440E7034B48DAC35B7EE98CF405BA38CA67DEDD688BE8953B69FFD27231839DDCB288CF01B90C5D32FA02C803A8578B45BF2F4D569D1823129948641A72E92D5BEDEAD341D988B6B5808179E42CD56439FBE4E83DEBCED22903FC25D77D4F87792102FE8098068CA0147993ED27913912372F05CA34F143D8C0B437A06B8F56F3AD9E4D7B09D8EB63D5C0D8858C75052AFBF9D5A0AB852C3CC381EABE94E3BBC41BF3BC10BBE532526056A64C0E67067480A8E3183D137D02CC3066B877476E3478E9811A9E9797F5D9ACE467134292A9AA906169F64FA00A8063AF724861017FDF7EC55C8C2B7DFD6CABD4607AE8D27C35CE980E9373D5F405FE0548743C287A801C3599FE61CE7520304228618666F9BF199B350F379AE0C59647C246FF662675C6601DB2DFA19BD2E6DA4195DA42FD11D8164AE7F3A9F018DE62E4F701AE582F828052D2C9FEC4F4B9BD525FBC4A04191A38CF06699A92146C308FCB3AFF892F8B24571DD456FC4FC58BF67622C8E9D12F7325AA8E27A16221CF4D41C47F6209820814BE4F67479689FA25EB388FA5EC692738CE9ED072D0A250B596D036BC3764A0D840309E7FA113CE337EDDCE83FE768031B1927E0001D96DA57A5CC3430DCDE21598E5D1167DAD62C92AA76F228AA4F6BFC06B6FF008F279E4CAB3D0B03D2850AA6AEC8F65DCC53B6D17679E2F089734CF4AE773C2E51FA9C4C459464DC816A3F1F55FF7D137483AE9EAE6EBD96512B34DC06C0A8C534D2F2C98EBF2FF2BECFFD816DC2BC77B97A21B2C7C15D4B1CDBCE65E67A3F86FC8D6374BDEDECC4E05D10221544871741EC9FC46AE45094444A12736BB9770B168E3656C063E46E82B912B812D602407395C2B77A68BE7E970654039AC8E142A6E8B18B7284129E0BCAABEE89CFC110A912B4A292A3B9CC8220818AEAC32315F229337C6B8AE367C7273B826DD87AC0A0B9D0EEA7BA41E86786654C37B82AC27BEB93E91113E02254BD5CCAA924944FD1FB0409B660F61462B58376FFB6CD85B1556FFFBF9DD078289790225A814C11241F7A87FFC77356B848E21D48F21D0F4821F6148CB045A7BC5BA00A9E7C33DCE25CFA69D942273193048176F00744F257BF33FE94C3779B0DDBD3F10B0BE37B65EA6214300CADDE6C8EDDEEB5490AEF40584365D8756FCFEA6238383475B5BDB9D61E2242604C6EC7523FFCA70B7EC6B6BB4B553AD23E238D2673D03C2E135FC4255C6D506C1AD1F8FE47818E05721875014540EC8DB53D89BEBFE2619FE0F32D51366A3DDB0E5E60CFF03644DEB114A6573D8FBB3DE12A8F6C8AAD928EC0290407275CB209EF3A009F344FD248801965C5D81C9FBC755E73F63FA06DA5B6BDC8E9CDFE9A557E14722270CF9DCCA4862444D1D97CFD98B4F777A5696A7862265E79A8CBC5D5F7AE9A3DFE009500F6863D20420CA5E56AEF98053D54BEE467A5F54007D6D9D8793E4233A17D3AE6F0B889DA3F82F708B7970E1BBCDBCBA97786197DA12D81286F589B65D8B0D6F80DDA84B53AA6B1CBECB3C907C4901C87AE7622C9E75D5AE9C9A365D98608CADA8171D882801D3182BABCF91CFD52D55E4F15A26DE6FC229F9047008021A7384F5CA99ED8A280F90925E847EDC9EF81BE3D7CD03ED28782A56033685587242AF38CA339B9F491A5AAE1019C2DD059D5228A119E319A21A834C32703E0322CCF5FE7F95AD594272259A880689641AD940B7A8DD95B9DD9E8F3F45886A0A0CB4C9A0C20CEFC5180D0B18F82E745EF03DF078A351749C58DC1B6675014344E44CE422D45030208E3EB4B5F83A827401C489E4182990E4C44D48B2F84FD406FD54AF19924A740644BB4C8DE0725190C63242ADE37F652875FA4117986D61A23E4F464CDFFCED2FE4099F1C1F367E35D26F53DDDC8735F1E46BF7B6FF5231A8443F156394E92A3A71886C69067CE0D9F4733A2C0434FE554DF12462EBBDCDE40A47F1A01A6FA76150CF94260FFBEF88363CC04DE86176A462A62A53EAE69EAAF7826F61D4E1C56D09109DFAEE74F27913231D8418E3723B61A355591DD906728F1C54A556F8D6A647214085E21F02983A6EE4FA1A2C8036FEBA2398B8B16B95D30BD6DCEA0034306BE7D0CDA21E87B14BD86C44C2B8CA2C6451A3DC87300A66040FF71951E2347F2C81CB4A25DB050E1ED2D80FB3C445E783B37665391C9C547EB134A789F8B18A8417D29C499B841225A276DA35E7E33DE84D22477D8EE5BD14451B93C82A923139821009EBD2972F02199C8F3B10C066835BA7CBE52E9276B966033B0A5E922616C999886C5197B95C450F5FB1FA60DC2B56DF001661EABBF0A1E9B0B8E7A6FA74C10BC4FBCD4A880E6244B8AAAAC74D0FC172D121418FFE45E1C00C6FC614A74B1EA0938BF814C7F9DEB2F71585131698575EFA05BAE6B5DE7E85750597D4DF055EE640C2105C31D359F5B3722F73012002BD13505B986FEFFFFFF00000200010001000000FFFFFFFFFFFFFFFF0000FFFF00000100FFFF0000FFFF00000100FEFF0000000000000000010002000100FFFFFFFFFFFF010000000000000002000000010003000000010002000200FFFF0100010000000100010001000000000000000000FFFF0000010000000000010000000200FFFF00000100FFFFFFFF0000FDFF0100FFFFFEFFFFFF01000200FCFF0000FFFF0100FFFFFFFF0000FDFF00000100FFFFFFFFFFFF020000000000FFFFFFFFFFFFFFFF010001000200FFFF01000200000001000000000002000100FEFF02000300FFFFFCFF0200FEFFFFFF030001000000FFFFFEFF000000000200FFFF020002000000FDFFFFFFFFFFFEFF0100000000000100FFFF0000FFFF0000FFFF00000000FFFFFFFFFFFFFEFFFFFF00000200FFFF01000200000000000100FFFFFFFF0300FEFFFFFF030002000000000002000100FFFF0200010001000000000001000000FEFF0000030002000300FEFF0000010000000100FEFFFFFF01000000FFFFFFFF000000000000000000000200020002000000010000000000FFFF0000FFFF01000000020001000100FEFFFFFFFEFF00000000FFFFFFFF0200FFFF03000000FDFF000001000100020001000000FEFFFFFF0000FEFF02000000FFFFFFFF0100000000000100FDFF0100FFFF0000010000000100FEFFFFFF00000000FDFF010000000200FFFF0200FFFF010000000100FDFFFDFFFFFFFFFFFFFF0200FDFF0000FEFF0000FFFF0100FFFF0100FFFFFFFF00000100FEFFFFFF01000200FFFF0000FFFF0100FFFFFEFFFDFFFEFF02000000FFFFFFFF00000100FFFF000002000100FDFF01000100FEFFFFFF0000FFFF00000300FFFF0100000001000200FEFF01000000FDFF01000300FFFFFFFF000001000100FEFF0000FFFF00000000FFFF0000010000000100FFFF0000FFFFFFFF020002000200FFFF0000FFFF00000000FFFF02000200FFFF000001000100FFFF010002000200020000000000000000000200FEFF000001000100FFFFFEFFFFFF000000000000000002000100FDFFFFFF0200FEFF0000000001000000FEFF010001000000FFFF0000FFFF040001000300FEFF000000000000FFFF0200000001000000FEFF0000FFFFFEFF000002000000FFFFFEFF000000000100FDFF0100FFFFFFFF00000100FEFF0000FFFF030002000200FFFFFFFFFFFFFEFFFFFF020001000100FFFF0000FFFF000002000000FEFFFFFF0100FEFF000001000000FFFF0000FFFF0000FFFF00000100FFFFFFFF0000FFFF02000000FFFFFCFFFEFF010000000300FFFFFEFF020000000100FFFF02000000FFFF00000000FDFFFFFF0000FFFF01000200FEFF0100010000000000FFFF0000FFFF02000000FEFFFDFF000000000100FDFF01000100FEFFFFFF0100020000000100FFFF020001000200FFFF020000000200FEFF01000100FEFF0300FFFFFFFF0200FEFFFEFF0100FEFFFFFF010003000100000000000100FFFF0000FEFFFFFF0000FFFF000002000200FFFF0200000001000200FEFFFDFF020002000000020003000000FEFFFEFF01000000FFFF0000FEFFFDFF000002000000FFFF0200FFFF0100000000000100FEFF0100010000000000FFFF0200FFFF0000FFFF0200FFFFFEFF0100FFFFFEFF0000FDFF0000FEFF0000000002000100030001000300FEFFFFFF00000200FEFFFEFF000001000100FEFFFFFF01000000FFFFFFFFFEFF0200010001000200FEFF0100010000000200000001000000FEFF000001000000FFFFFFFFFDFF01000000010002000000010001000100FFFF0200FFFFFFFF0100FFFFFFFF0000020000000000000000000200FFFFFFFF0100FFFF0000020000000000FEFF010000000200010001000000010002000000FFFF0000000000000000FFFFFEFFFFFF0200010002000000030001000200030001000000FEFF0000FFFF0200FFFFFFFF01000100FFFF01000100FFFF0000010001000200FFFF0300FFFF0100FFFFFEFF0000010000000000010001000100FEFFFEFFFFFF01000100FFFFFEFFFEFF0100FEFFFCFFFFFFFFFF01000200FFFF01000100FFFFFFFF0100FFFF0000010000000100010002000000FFFF0200000000000100FFFF0000FEFF01000200010001000000000001000200FEFF00000100FFFF000002000000000000000100FEFF0100FEFF0200FEFF0100020000000000FFFFFFFF02000000000001000100FFFFFEFF0000020001000000FEFF0000020001000000FEFF0000FEFF020001000000FFFF000001000000FEFFFFFF0100FFFFFFFF0300FFFF00000200FEFF00000100FFFF0200FFFFFFFF0000020000000100000000000000000000000000010001000000FEFF0200FFFF0000010001000000000002000100FEFF010000000100FCFF0200FFFFFEFFFFFFFFFF000001000200FFFFFEFF0000000000000000000000000100000000000300FFFFFFFF01000100010001000200FFFF03000000010001000100000001000100FEFF0000FEFF01000100FEFF01000200010000000100FFFF0000FFFF01000000000002000100000003000200FFFF01000000FFFF0000FFFF00000000FFFF010001000100FFFFFEFFFFFF000000000100FDFF00000100FEFF020000000200FFFFFFFF03000100FFFF01000000FFFF0000020001000100FFFFFFFF01000000FFFFFFFFFDFF00000100010000000100FFFFFFFF0100010000000200000001000000FFFFFFFFFEFFFEFFFFFF00000000010000000000FFFF0100FEFF0300FEFF00000200FCFF00000200FFFF0200FFFF000001000000FFFF0300FFFF010002000000FEFF020001000000FEFF02000000020000000100FEFF0000FEFF0200FEFFFDFF0000FFFF00000000FFFFFEFF0000FFFFFEFFFFFFFFFF01000000FDFF01000200FDFF00000000FFFF010000000100FEFFFFFF00000300010001000100FEFFFEFFFFFF0000000000000000FEFF01000100FFFFFFFFFFFF030002000100FEFFFFFF01000200FFFFFEFF00000200FFFF0100FFFF0000FFFF0200FDFFFFFFFEFFFDFF0100010001000200000000000000FFFF020001000100FFFFFDFF0000FFFF01000100010000000100010000000000FFFFFEFF000000000000FDFF020001000000FFFFFFFFFFFF0100FDFFFFFF01000000000001000000FEFFFFFF00000200FEFF01000100FEFF0200FDFF00000000FFFF010000000100FEFF0000000001000200000000000100000002000000FFFF000001000000FEFF0200010000000100FFFF00000100FFFF000001000300FFFF0000FEFF01000100FFFF010001000000010001000100FFFFFDFF000000000100FFFFFCFF0100FEFF0100FEFFFFFF02000200010000000100020001000200FFFFFDFF00000100FFFFFFFF010002000100FEFF00000000FFFF00000000010000000100020000000100FEFF0000FEFFFFFF0200FFFFFFFF0100FFFF0000020000000000FEFF00000000FFFFFFFF010000000200020001000200FEFF0300010000000200000001000000FDFF00000000FFFFFDFF010002000100FFFFFFFF000001000100FFFF0200030001000000FFFFFFFFFFFFFFFF0000FEFF030000000000000000000000010001000000FFFF0100FEFF0100FFFF0000FFFF02000000FFFF01000000FFFF0300010000000200FFFFFFFFFFFF00000100FFFFFDFF0000FDFFFFFF0100000000000100FFFF0000FFFF0000FFFF000000000000FFFF0000FFFF000000000200000000000000000001000000FDFF0100010001000100FFFFFEFF0300FFFF0100FFFF0200FFFFFFFFFEFFFFFF0100010001000000FCFF0100FFFFFDFF01000000FEFFFFFFFDFF00000000030002000000FFFF020001000100FFFFFEFFFEFF0100010002000100FFFFFEFF010000000000FFFF00000000FFFFFFFF01000100FEFF00000000FFFF010001000100FFFFFFFFFFFF00000200FFFF00000200FFFF00000200FFFFFDFFFFFF0000010000000300FEFFFFFFFEFF0100000002000200FFFF00000300FFFFFFFF0200000001000100FFFFFFFF0100FFFF0000FFFFFEFFFFFF0000FFFF0000000000000100000002000200FFFF01000100FEFFFFFFFEFF03000000FFFFFFFFFFFF00000000FEFF0200030002000200FEFF01000200FFFF00000200000002000200FFFFFEFF0000FDFF000000000100FEFF0100FDFFFFFFFDFFFFFF01000200FFFF00000100FFFF0300FFFF0000FFFF00000100FFFF0100FFFF01000000FDFF0100FFFF0100FFFF00000000FFFF010000000100FEFF00000400FDFF000001000000FFFF0300FFFF0200000000000000FEFFFFFFFFFFFEFF0000020000000100FFFF0000FFFF0100FEFF0100FFFF010002000100FFFFFEFF000001000000020000000000FFFFFFFFFEFFFEFFFEFF0000FFFF0000FDFFFFFFFFFF0100FDFF00000200FFFF01000100FFFF0100FEFF0100FFFF02000000000000000100FEFF02000100FFFF010004000100FEFFFFFF000000000100FFFF0000010001000000FFFFFFFFFFFF03000000FEFF0100010001000100000000000200FFFFFEFFFFFF0100FFFFFFFF0000FFFF000000000000FFFF0000FFFF01000200FFFF0000FFFF010000000100000002000200FFFF0100010000000400FFFF0100000001000000FFFF0100FFFF0100FFFF010000000100FFFFFDFF00000100FDFF0000FEFFFFFFFFFFFEFF00000100FDFFFEFF0100FEFF02000000010001000100FCFF0000FFFFFFFFFFFF00000000030001000100FFFF0100FFFF0200040001000100FFFFFFFFFEFF0000FFFF02000000000002000100FFFF0100FFFF00000100FEFFFFFF0000000000000100FFFF01000000FFFF000000000300FFFFFEFF000000000000FFFF0000FFFF0000000002000100020000000100FFFFFFFF0000FFFFFFFFFFFF00000100FDFFFEFF000002000200FEFF0300000000000000FFFF0200FFFF00000100FDFFFFFF00000000FFFF000001000200FFFFFFFFFEFFFFFF0200020001000000FFFF00000000FFFF0200FFFF0100FFFF0100FEFFFFFF0100FEFF01000100020001000100FFFF02000100FFFF00000100FEFF0000FEFF01000100FFFF0000FFFFFEFF0000FFFFFFFF0100FEFF0000FFFF00000400FFFFFFFF01000000FDFF010001000100FDFF010001000000FFFF010000000100020002000100FEFFFCFF0200FEFF010000000000FFFFFFFFFFFF0200010001000100FEFFFFFFFDFF00000200030001000000FEFF010000000200FFFFFFFFFFFFFFFF02000200FEFFFFFF0100FFFF0000FEFFFCFF0100FEFF010000000000FEFF0100FFFFFFFF02000000FEFFFEFF00000300FDFF010002000000FDFF0100000000000100020004000100FEFF00000300FEFF020001000200FFFF00000200010001000200FDFF0000030001000200FEFF00000000FFFF000002000000FEFF0000000001000000FFFFFDFFFDFF01000000000001000000FFFFFEFFFFFF01000000FFFF010000000000FDFF0100FFFFFFFF010001000100000001000300FFFF0100FFFF02000200020001000000FFFFFFFF01000100FFFFFEFF0000010000000100FFFFFFFF0100FEFF00000100FFFF0100FFFF01000000FFFF0100FFFFFEFF0000FFFFFFFF000000000000FFFF0100FFFF0100000000000200FEFF010001000100FDFF000001000000FFFF0100020000000100FDFF0200FEFF010001000200FEFF0000FEFFFFFFFEFF0000FEFF0000FFFF0100FFFF0200FEFFFFFFFEFF0100FFFFFEFF020002000100010001000200FCFF0000FFFFFFFF00000100FFFF02000000000000000000FFFF00000000010001000200FDFF0000FFFFFFFF0000FFFF0200FFFF0000FFFF0000FFFFFFFFFFFF00000000020000000100010000000000FFFFFFFF000002000000FFFF0000FFFF00000100FFFFFEFF010002000100FDFFFFFFFFFFFFFF0100000002000000FFFFFFFF01000100FFFFFFFF0100FEFFFFFF0000FEFF0000FFFFFEFF01000000FFFF0200FEFF0000000003000200FFFF00000100000000000000FFFF0100FFFF0200FEFFFFFF0300FFFF01000100FEFF0100000000000000FFFF01000000FFFF0000FEFF0200FEFF010004000000FFFF0200FFFF00000000FEFF0100000002000200000000000100FEFF0200FEFF0100FFFFFFFFFEFF02000000FFFF00000000FFFF01000100FEFFFEFF00000000010001000200FFFF000001000000FDFFFFFFFFFF0300000000000200FFFFFFFF0200FEFFFFFF00000100FFFFFFFFFFFF0000010001000300FEFFFFFF0200010001000100000002000000FFFF0200FEFF0000010002000100000000000100000001000100020000000100FEFF0100000001000100FFFF0000FFFFFDFF0100FFFFFFFF0000FFFF00000100000001000000FFFF02000300010000000000FFFFFFFF00000000FEFF0000FFFFFFFF0000FFFFFDFF00000000000001000200FEFF0100FDFFFEFF0000FFFFFFFFFFFF0000FFFF0100FDFFFFFF00000000FFFFFFFFFFFF0100FEFF010002000100010002000000FFFFFDFFFEFFFFFF00000300010001000200FFFF01000000000000000200000000000000010002000000FFFF0100000001000000FFFF0100FFFF0100FFFF000000000100FFFF0000000002000100FEFF020002000200FEFFFFFFFFFFFFFF030000000200FFFF0300FEFF00000100000001000200FFFF0000FEFF01000000FFFFFFFFFEFF0200000001000200000001000200FEFFFFFF0100010000000100FFFFFEFFFEFFFEFFFFFF00000000FEFF00000100FEFF000003000100FFFF0100FEFF0200000001000200020001000000010000000000010001000000FFFF03000000FEFF00000000010001000200FFFF0000FFFFFDFF0000FFFF02000000000001000400FFFF0000FFFFFEFF01000100FEFF000001000200010000000100FDFFFDFF010000000000FFFF020002000000000001000100030003000200FEFFFEFF01000100000002000100FFFF0000FFFF0200FFFFFFFF0200FFFFFFFF00000000FFFF00000000000001000000FFFF0300FEFF0000000001000000020001000100FEFF00000000FEFF00000000FFFFFDFFFFFF0000FDFFFEFFFEFF01000100FEFFFFFFFEFFFEFF0000FFFF00000100010000000000020000000000FFFF02000000FFFF0200FFFFFFFF01000100FFFF00000000FEFF000001000000FEFFFFFF0100010000000000FFFFFFFFFFFF0200000001000100FFFF0100FFFFFFFF000000000000010001000100FFFF010000000000FFFFFEFF01000000FEFFFEFF000000000300FFFFFFFF0000000001000000FEFF000003000000FFFF010002000100FEFF01000000FFFFFDFFFFFFFFFFFEFF020000000100FFFF0100FFFF02000000FEFFFFFF000000000100FEFF010002000000000000000000010001000100FFFFFDFFFFFF00000000010000000000FFFF0000FEFF01000000FFFF0000FFFFFDFF0100010001000100FEFF03000100010002000000FEFF0000FFFF0000FEFF000001000000FFFF000002000000FDFF0000000001000000FDFFFFFF00000000FEFF0200FEFFFEFFFFFF00000000010003000000FEFF0000010002000000FDFF0200000001000300FEFFFEFF01000000010000000200FFFF010000000000FFFF0100010000000100FDFFFFFFFEFF0000010000000200000000000100FEFF0100FFFFFFFF01000000FFFFFEFF02000200FEFFFFFF00000000FFFF0100FFFFFFFFFFFF000000000000000000000000FFFFFEFF0300030000000000FCFFFDFFFEFF00000100FFFF0200FFFFFEFF0100FDFF020000000000FEFFFEFF010001000000FFFF0100FEFF0000FDFFFEFF000001000000FEFF0000FFFF0100020002000100FFFF00000100010000000000FDFF000001000200010000000000FFFF0000010001000000FEFFFFFF0400FFFFFFFF020002000000FFFF0000FFFF02000000FFFF0200FEFFFFFFFFFF00000200000000000000000000000000000000000100FFFFFFFF01000100FFFF020002000100FDFF000000000100010002000100FEFF0000FFFFFEFF0000FFFFFFFF0000FFFF010000000100FFFF02000100FFFF020001000000FFFFFEFF00000100FEFFFDFFFFFFFFFF01000000FEFFFFFFFEFF010001000200FFFFFFFFFFFFFEFFFFFF0300FFFF01000000FEFF0100FFFF00000200FDFFFFFF000000000100FEFF0000000003000200FFFF00000000FFFFFFFFFEFFFFFFFFFF02000000FCFF0000FFFF0100FFFF000002000100FEFF00000300000002000000FEFFFFFFFFFF0100020002000000010001000200FEFF00000000FEFF0000FFFF01000000FFFFFEFFFFFF00000100FEFFFFFF00000000FFFFFDFFFFFF0100FEFFFFFFFFFF0200FEFFFFFFFFFF02000000FFFFFEFF010002000100020003000200FFFFFEFF00000000FFFFFEFFFFFF01000300010001000000000000000200FFFFFFFF00000200FFFF03000000FEFFFFFF010002000000000000000000FEFF010000000000020001000000FFFF0000FFFFFEFF0200FFFF00000300FEFF0000FFFFFEFF01000200FFFF0100000002000100FFFF0100FFFFFEFF0300FFFF00000100FEFF0100000001000100FEFF000000000100FEFFFEFFFEFF0100FFFF01000200FEFFFFFF0000FFFF00000000FEFF0100FFFF0000000000000000FFFF0000FEFFFFFFFCFFFFFF0000010002000100FFFFFFFFFFFFFEFF0200FFFFFDFF00000000FEFFFEFF0000FEFF0100020001000000FFFFFEFFFEFFFFFFFEFFFFFF0100FFFFFEFFFFFF0100FFFF010002000200FFFFFFFF0000FFFF00000000FFFF01000000FFFF020000000000010000000100FFFF02000200010000000000FFFFFFFF00000000030000000200010000000000FEFFFFFF0000FFFF010000000100FFFFFFFF0300FFFF01000000FFFF0000FFFFFFFFFFFF000002000000FFFFFEFF0000FEFF0000FEFF0100FFFFFFFF0000000000000000FDFF0200FFFF0100FFFF0100FEFF00000100FFFF000001000000FFFFFFFF0100FEFF00000000FEFFFFFF0100FFFF02000100FDFF00000100FFFFFEFFFFFFFDFF00000100FEFFFFFFFFFFFEFFFEFF01000100000000000200FEFF01000100FFFF0100FFFF0100FEFF0100FFFFFEFFFFFF0100FFFF00000000000001000200FFFFFFFF0200000002000100FFFF0000FFFF0200010000000000FEFFFFFFFEFF000001000300FEFFFFFFFEFF0200FEFF01000100FFFF000000000100000001000100000002000100FEFF0100FFFF0000FFFF01000000000000000000FFFFFFFFFFFF000003000100000000000100010000000000FFFF0100000000000200FFFF00000000FFFFFFFFFDFF01000000010001000100010000000000FEFF02000300FEFF0100FEFF0000FFFF0000FFFF02000200FFFF0000FFFF0000FEFF0100020000000200FEFF0000FEFFFFFF0100FFFF01000000FEFF000000000000FEFFFFFF0200010000000000020000000100FDFF00000000000000000000FFFF00000100FEFF0000FEFFFEFF0100FFFF0200FFFF00000000FFFF0000FFFF000001000000020003000100020002000100010000000100010000000300FFFF0000FFFF020001000200020002000100FFFFFDFF0000000000000200FEFF0200FFFFFFFF0100000002000100FEFFFFFF0100FFFF00000000FFFFFEFFFEFFFEFFFFFF0000FFFF0000FFFF0000FDFF000000000100000001000000FFFF0000010000000100FFFF000000000000FFFF0300FEFFFFFFFFFFFDFF02000000000001000000020001000000010002000100FEFF0100FFFF02000000FFFF0000FFFFFFFF01000000FDFFFFFF0000FFFF0100FFFFFFFFFFFF010001000200000000000100FEFF0000FEFF0100FEFF02000000FFFFFFFF01000000000003000000FFFF0300FFFF0000FFFFFFFF0100000001000300FEFFFEFF010000000000010000000100FFFF0100000001000200FEFF00000100FEFFFEFF010000000100FEFF0100FFFFFFFFFDFF00000100FFFFFFFF0100FFFFFFFF0200FFFFFFFF020000000000FEFFFFFFFEFF010000000200FFFFFFFFFFFF000000000000FFFF0100FFFF0000FEFF0000010000000100FEFFFFFFFFFFFEFF02000000FEFF00000000FFFF0200000000000000FFFFFFFFFDFFFFFF0200FFFF02000200FFFFFFFF00000200000002000000FEFFFEFFFEFF0200FEFFFEFF01000100FEFF03000000FEFF01000200FFFF00000000FFFF0200010001000100FFFF02000300FEFF0200FFFF02000200FDFF010002000200010001000000FEFF00000000FFFF0200FCFF02000000FFFF0200FFFFFFFFFEFF00000000FFFFFFFF000002000200FDFF00000100FFFF030000000000FEFF01000100FFFF0100FEFF0200FFFF00000100020000000100020000000000FFFFFFFF00000000FEFF0000FDFFFFFF000002000000FFFFFFFFFEFF000000000100FEFFFEFF020000000200000002000000000000000000FFFFFFFFFEFF0100FDFFFEFF0000FFFF0000FDFFFFFF00000100FFFFFFFF02000000FFFFFFFF0000FFFF0000FFFFFFFF0200FFFF00000000FFFF00000200000000000000FFFF00000000FBFF000001000200010001000100FEFFFFFFFFFFFEFF0100020000000000FDFF030000000000000002000100FFFF02000200FEFF0100FFFFFFFFFEFF00000100FFFF00000000FFFFFFFFFEFFFEFF000001000000020002000000000000000100FFFF0100000001000200000000000100FEFF0000FFFF01000200FFFFFFFFFFFF0200FFFFFFFF000002000100FDFF01000000FFFF0000020000000000FFFF0000FFFF00000000FFFF0100FFFFFFFFFEFF0000FEFFFEFFFFFF0200FFFF0200FFFF0100FEFFFFFF00000200020000000100FFFF020000000300FFFF0100FFFFFEFF01000000FEFF0000000001000100000000000100000002000100010002000100FFFF010000000000FFFFFEFFFFFF0200000000000100FFFF0000FEFF0000FFFF02000000FFFF010000000000FDFF0200010001000200FFFF01000000FFFF000001000000010000000000010000000100FEFF0000FFFFFEFF0000000001000100FFFF0100FDFF00000000FFFF0300010001000000FEFF0000FDFF01000000FEFF0100FFFF0200FFFF000000000100FFFFFFFFFEFFFEFF0000FFFFFEFF00000000FDFFFEFFFEFFFFFF00000100020001000000000002000200FFFF0100FFFF0000FFFFFFFF00000000FFFFFDFFFEFFFFFF0100000001000200FEFFFEFF03000000FFFF00000100FFFF0100FEFF010002000200FEFF0000FFFF01000000000000000000FEFFFFFF0100010001000200FFFF010002000000FEFFFDFF00000200FEFF0000FFFFFFFF0000FEFF00000000000001000000FFFFFFFFFFFF01000000FEFF010000000100FFFFFEFF0100FDFF0000FEFF0000FFFFFFFF0100FEFF0000FFFF0200010000000000FFFFFFFF01000000FFFF0000FFFFFDFF01000100000000000100FFFF0100FFFFFFFF0000FFFFFFFFFFFF010001000000FFFFFEFF040001000100010000000000FFFFFFFFFFFF010000000000FFFF020000000100020000000200FEFF0000FFFF0000FDFFFFFF01000200FFFFFFFFFFFF0100FFFF00000100FFFFFFFF0000FFFFFFFF01000100FFFFFEFF0000010002000100010002000100FFFFFEFF010002000000FFFF03000100FFFF0000010002000100FFFFFFFF000000000000FEFFFFFF00000100FFFF000001000200FFFF01000000FFFFFFFFFEFF00000000FFFF0100010000000200FEFF0000FFFF000001000100FFFFFEFFFDFF0100000001000000FFFF010001000100FFFF020000000000FEFF01000000020001000000FFFF02000200010001000100FDFF00000100FEFF0000FEFFFFFFFEFFFFFF0100FFFF00000200FFFF0000FFFF02000200FEFF020000000100FFFFFFFF0500FEFFFFFF0200000003000000010001000100FFFF02000200FCFF0300000000000000FDFF0000010001000200FEFF01000200010000000100FFFF0000FFFFFEFF0100FFFF0100FFFF020003000100000000000000020000000100FFFF0000FDFF00000000FEFFFEFF02000200FEFFFFFF0100FDFFFEFFFDFF0300FDFF0000FFFF010001000000010000000100FFFF0200010001000100FFFF0000FFFF00000000FFFFFEFFFFFF0000FFFF010001000000FEFF0000000000000300FFFF010002000000000001000000FFFFFFFFFFFFFFFFFEFF0000FDFF0000FEFF010002000200FFFF000000000200000004000000FFFFFFFFFFFF0100000002000200010001000000FFFF0200FFFF0100000001000100FEFFFFFF0000FEFF03000000000000000000000000000000FFFF020000000100FEFFFFFF01000100FFFFFFFF0100000001000200FFFF000002000300FDFF0000FFFFFEFFFEFFFFFFFFFFFDFF0000000002000100FEFF0000020003000300010002000200FFFF02000000FFFF0000FFFF01000100FFFF01000100000003000100FFFF01000000000001000000000000000200FFFF01000400FFFFFFFFFDFF0000FDFFFEFFFFFF0000FFFFFFFF00000200FFFF0000000002000000FEFF010000000100FFFF0300FFFFFDFFFFFF00000100FEFF030001000100FEFFFFFFFFFFFEFF0100020000000100FEFFFEFFFEFF0000010001000000FFFF01000000FEFF0100FFFF000002000100FDFF00000100FFFF01000100FFFF0200000000000000FFFF000000000000FEFF000003000000000001000000020001000100FFFF0400FEFF0300FEFF0300FFFFFFFFFEFF00000200FFFF00000200FFFF0100000001000200010001000000FFFFFEFFFEFF0200FFFFFEFFFEFFFFFFFFFF02000200FFFF0200FFFF01000300020000000000040000000000FFFF010002000000FEFF01000000FEFFFFFF020000000100FFFFFFFFFFFF0200FEFF0200FEFF000000000000FEFFFFFF0000FDFF000000000100FFFFFFFFFDFF00000000020001000100000000000000FFFF000000000100FEFF01000000030000000000020002000100FFFF030000000100FFFFFFFF02000200FFFF0000FFFF01000000000001000000FEFF0100FDFFFEFFFFFF0300FEFF0100010000000200FFFFFFFFFFFFFFFF0200FFFF0100020000000100FEFFFFFF000000000100000000000000FFFF00000100030001000000FEFFFFFF0000000000000000000003000200FFFF0000FFFF010001000100FFFF000001000100020001000300030000000200FDFFFFFF0200FFFFFFFF0000020001000000FFFF01000000FFFF01000100000004000300010001000100010000000000010002000100FFFFFEFFFFFFFEFF0000FEFF000004000200FEFF0300010000000000FFFF0000FFFF020002000000FFFF0000000002000300FFFF000002000000FFFFFFFF000000000200FFFFFEFF00000000030002000100FEFF0100FFFF0100FFFF010000000100FFFF010000000000000001000000FFFF0000FEFF00000100FFFF00000000FCFF010001000000010000000000FFFF02000200FFFF0000FFFFFEFFFFFF0200010000000000FFFFFFFFFFFFFEFFFFFF0100FEFF0100FEFF0000FEFF0000FFFF01000100FFFF02000000FEFF0100FFFF0100FFFF010000000100FFFFFEFF010002000000020002000200020000000200FEFFFFFFFEFFFCFF0100FFFF0100FFFFFFFFFCFFFFFFFDFFFFFF0400FFFF00000000FEFFFFFF000002000200FFFFFFFF0100FEFFFFFFFFFF0300FEFF0000FEFFFFFFFEFFFEFF010000000100FEFFFFFF0000FFFF0100FFFF0000FEFF000000000300FFFF01000000FFFFFFFF01000000FEFFFEFF030000000100FFFF020000000000FDFF01000000010000000000FFFF01000000FFFFFFFF0000FEFF00000000FDFF01000000FFFF0200FFFFFFFF0100FFFF0100010002000000FFFFFFFFFFFF01000100FEFF020001000100FEFF0200FFFF0200FCFFFEFF000001000100FFFF0200000001000000FFFFFFFF04000200FFFF0000FFFF0100FDFF00000000FDFF01000100000000000000FEFFFFFF020002000100000001000000FFFF0100FFFFFFFF000002000000FFFF000000000100FFFF01000000FEFFFEFF010000000000010000000100FEFF01000200000000000000FDFF00000000FFFF0000FFFF0100000001000100000000000100FDFF0100FFFFFEFF02000100FFFF0100FFFF0100FEFF0100FFFF000000000200FEFFFFFF02000100FDFF02000000FEFF0000FFFFFEFF01000000FFFF0100FFFF0000000001000100FFFF00000000000001000000FFFFFFFF0100FFFFFFFF01000000000001000200FEFF0000010000000300FFFF0000FFFF0000FDFF0100FEFF0000FFFF020000000000FEFF0100020002000200FEFFFFFF0100FEFF0100000000000000010000000100FEFFFFFF010002000200FEFFFFFF01000200FFFFFEFFFEFF00000100FFFF0300FFFF0100000000000200000000000000FFFF0000FFFFFFFFFEFFFEFF00000100FFFF000000000100FEFF000000000300FFFFFFFF0200000000000100FFFF000001000100000000000100FFFFFFFF00000100FEFFFFFFFFFF0000000001000200FCFFFFFF0100010000000000FFFF0000020000000000FFFF0000FEFF000001000100FFFF0000FFFF00000000FFFF00000100FEFF0000FEFFFFFFFDFFFEFF0000000003000000000000000200FFFFFDFF0100FEFFFFFF01000200FEFF010002000000FDFFFFFF0100FFFF0000FEFF0000FEFF00000300000001000100020001000400FEFF00000100FFFFFFFFFFFF000001000100010001000000FFFF0100FBFF010001000200FEFFFFFF0000FFFFFFFFFFFFFEFFFEFF010002000000FFFF00000100FFFFFFFF000000000100FFFFFFFF00000300FFFF02000100FEFF0200FEFF02000100FFFF0100FFFFFEFF0100FEFF0000FEFF01000000FFFF01000200FFFFFFFF0000FEFF0100FFFF0000FDFFFFFF0000FFFF01000000FFFF01000100FFFF0000010001000000FFFF00000000FFFF010001000000000001000000FDFF00000000000001000000FFFF01000000000001000300FFFFFEFFFEFF0000FDFF0100FFFFFFFF0100FEFF0300FFFF010001000200FFFF02000000FFFF02000000FEFF01000000FEFF0100FFFFFFFF0400FEFF03000000FFFF0100FDFFFFFFFFFF01000100FFFF000000000000FEFF0100FFFF01000100FFFFFFFFFFFFFFFF00000200000000000100FEFF00000200FFFFFFFF00000100000002000200FEFFFFFFFEFFFFFF0000FDFFFFFFFFFFFFFFFDFFFEFFFFFF0300FFFF0000000001000100FFFFFEFFFFFF000001000300FEFF01000000FFFF010002000000010001000000000000000100FFFF0100FFFF01000100FFFF0000FEFF00000000FEFFFEFFFFFF000001000300FFFFFEFF0100000002000000000002000100FFFF01000100FFFFFFFF0100010001000200000001000000FEFF01000000FFFF02000000000001000100020000000300FFFF000003000100000001000100FEFF0000000000000100FFFF0000FFFFFFFFFFFF0200000001000000010001000000FFFFFEFFFFFF01000000FFFF00000000010000000000FEFF03000100020001000000FEFF02000100FDFF02000000010002000100FEFF010001000100FFFF02000100FFFFFFFFFEFFFFFFFFFF0000FEFF00000100FDFF0100FFFF000000000100FDFF000001000100040001000000FFFF0100FEFFFFFF0100FFFF0200FFFF01000000FFFF00000000FFFF0200FFFF010001000000FEFF0200FFFF00000000FFFFFFFFFEFFFFFF0000FFFFFDFF0100FEFFFEFF000000000300010002000000FFFF0200FEFF0100FFFFFEFFFFFFFEFFFEFFFFFF0100010000000200010001000100FFFF0100FEFF0200FEFFFFFFFFFF00000300FFFFFEFFFDFF0000FFFF010001000000FEFF020000000100000001000200FFFFFDFF0100000000000200FFFFFEFF0100FFFFFEFFFFFFFEFF0100FFFFFEFF0200FEFF0200FFFF00000200FEFFFEFFFFFFFEFF01000000000001000300000000000100FEFFFEFFFFFF0000FFFF020000000100FFFFFFFFFEFFFEFF02000000010000000000FFFF03000200FFFF0000FFFF00000200020002000200000001000100FEFF010001000000000000000000FFFF0000FFFF0000000001000000020001000000FFFF01000100FFFFFFFFFFFF00000200FDFF0300FFFFFFFF0100FEFFFFFF0200FFFF00000200FFFFFFFFFEFF0100FFFF0000000001000000FFFF000001000100FDFF010000000000FEFF000000000100FCFF020001000300FFFF0200000000000000000001000000FFFFFDFFFFFF010000000100FCFFFFFF00000200FFFF0000FDFF010000000000FFFF0200FFFFFEFFFDFF0000000001000000FFFF00000200FFFF0000FFFFFFFFFEFF000001000000010000000300FFFFFEFFFFFFFEFF01000100000000000000FFFFFFFF0000FEFFFEFF0100FEFFFFFF0000FEFF000000000000FFFF02000000FFFF00000000FFFF030002000100000000000100FFFFFFFFFFFFFEFF0100FEFF01000100FFFFFFFF020002000000FDFFFFFFFFFFFDFFFFFF000000000200000001000100FFFF0100FEFFFFFFFFFF0200FFFF01000200FFFFFFFFFFFF0000FFFF000001000000FFFFFFFF0100FFFF000001000100FFFFFEFF0000FDFF000001000000FFFF0000FEFF000000000100000001000000FEFFFFFF0200FDFFFDFF0100FEFF0100FDFF0000FFFF01000100010000000100020000000300010001000000FFFF00000000FFFFFFFF0200FFFFFEFF04000000000001000100FFFF030001000000FEFF010001000100FEFF000000000000FDFF020002000000FFFF0300010001000100FFFFFDFF0100000001000100010000000000FFFF01000000FDFFFEFFFFFF010000000000FEFF0000FFFFFEFF03000200010001000100FFFF0000FFFFFFFF0000FFFFFEFF0000FFFFFEFFFDFF0000FEFF0100FEFF0000000000000100FFFF01000000FEFFFEFF0400FFFF00000200FFFF000000000100FFFF0000020001000200FEFF00000000FEFF0200000001000000FEFFFEFF000001000000FFFF0400FDFF0100FEFFFFFFFEFFFEFFFFFFFEFF04000000FFFFFFFF020000000000FDFF0000FFFF0200FFFFFEFF01000000000001000000FFFF010001000000FFFF00000000FFFF01000000FEFF0000FFFF0300FFFFFFFF00000100FFFF020001000100000000000100FFFF0100FEFF0300FEFF0000FFFF00000200010002000000030000000000FEFF010001000200FFFFFFFF000000000000FDFFFFFFFFFF02000000FFFFFFFF0100FEFF0000010000000000FFFF0100FFFF0000000001000000000001000100FFFF00000000FEFFFFFF0000010000000100FFFFFFFF0000FFFFFEFF0000FFFFFFFFFFFFFFFF01000000FFFF0000FFFF0200FEFFFDFF0100010000000000FDFF00000000FFFF020000000000FFFFFFFF0100010001000000FEFFFFFFFEFF02000100010004000000FFFF02000000FDFF0200FFFF00000000010001000000000002000200010000000100FFFF0000010000000100020001000000010000000100FFFF020000000400FDFFFFFF0000000001000100FDFFFFFF0100000000000000FFFF04000000000001000200FEFFFFFF0200FFFF010000000000020003000300FFFF0000010001000200000001000100020000000000FFFFFFFF00000000FFFF000002000000FFFFFDFFFEFFFFFF0000FFFFFEFF0100010003000000FFFFFDFF00000100FFFFFEFF000000000000010001000100FFFFFFFFFFFF00000100FFFFFEFF00000000000002000000FDFFFEFF010002000000020001000100FFFF0000FFFF01000200020001000100FEFF0100FFFFFFFF020000000000FDFF00000100FFFF00000100000001000100FDFFFEFF0200FFFF0100FEFFFFFF00000000FFFFFFFF00000000FEFF00000000FFFF030002000000FDFF0000FFFF0200000001000200FFFFFFFF0000010003000100010002000000FDFFFEFFFFFF0000FEFF0100FFFFFEFF0300000002000000FEFFFEFFFEFFFFFF0000FEFF0000FFFFFEFF0200010001000100FFFF0100010000000000FFFF0100FEFF000000000100FFFF0100FFFF01000000030000000300010000000000FEFF000002000000FFFF020001000100000002000100FFFFFFFF0000FFFFFEFFFFFF000000000100010001000100FEFF000002000100000000000300FFFF0000FFFFFFFFFFFF00000000000001000100FDFF01000100010002000000000000000100FFFFFFFFFFFF0000FCFF000000000000FFFF0000FFFFFFFFFFFF0100FFFF01000200FFFFFFFF0000010001000000FFFFFEFF00000000FEFF0200FFFFFDFF0200010001000000FFFFFEFF01000000000000000000FFFFFEFFFFFFFFFFFDFF01000200FFFF00000200FDFF01000000000001000000020000000200FFFF0100020001000100FEFF0200FFFF0200010002000200FFFF020000000000FFFFFFFFFFFF020001000100FFFFFDFF03000000FEFF0000FFFFFFFF010001000300FFFFFFFF0200000002000200FFFF01000100FEFFFFFF01000200FFFF01000100FFFF0100FEFFFFFF00000300000001000100FFFF0000020000000100FEFF0000FFFF0000FFFF00000000000001000100FFFF000001000200FFFF0100FFFFFEFFFFFF00000000FEFF01000100020001000100FFFFFFFFFEFFFFFF00000100FFFFFFFFFEFFFEFFFFFF0000FFFF000001000000FFFFFEFF010001000000FFFF0000FFFFFDFF0000FFFF01000300FEFF01000000010000000100010000000100FFFF000001000100000002000200FEFF02000000FFFFFEFFFFFF030000000300010001000000FEFF0300020001000000FFFF030002000200FFFFFFFFFFFF01000000FFFF00000100FEFFFEFF0000FFFF0000010005000000FEFF01000000FDFF0000FFFFFFFF02000100FEFFFFFF00000200FEFF000001000000FFFFFFFF000001000300010000000200010002000100FEFFFFFFFEFFFEFF03000300FEFF04000000000000000100FEFFFFFF0000FFFF0000FFFFFFFF0200FFFF0000FFFFFFFFFFFF00000300FEFF0000FEFFFDFF0200FFFF0100FEFFFFFFFDFFFDFFFFFF0100FFFFFEFF0000FFFF0200FEFF0100000001000000010000000100FFFF0200FFFF02000200020001000100FEFFFEFFFFFFFFFF01000100FFFFFFFF0000010000000100000002000300FFFF0300FEFF000000000100FFFF010001000000FFFF030000000100FFFFFEFF01000300FFFF0000000000000100FEFF01000200FFFFFFFF0200FFFF01000100FFFF010000000100FEFF020000000100FEFF01000000FFFF0100FDFF0300FEFF0000000002000300000001000000FEFF0000000000000200FEFF00000100FEFF00000100FFFF01000000020000000200FFFFFFFF0000FFFF0000FFFF0200FFFFFEFF010000000000FFFF01000100010000000000020000000100FFFF0100FEFF0000FFFFFDFFFFFF0000FFFFFFFF010002000000FEFFFFFF01000200FFFFFFFFFFFFFEFF0100FFFF0000FFFFFFFF0100FDFFFCFF00000200020000000100FFFF00000000000001000100FEFFFEFF0000FFFF0100FFFF0000FFFF0000FDFF0000FEFF000000000000FEFFFEFFFEFFFFFFFDFF02000000FFFF02000200FEFF0000FDFF01000000030002000000FEFF0000FCFFFDFF0000FFFF0000010000000000FDFFFDFFFEFFFEFF0200FEFF0000FDFF0000FFFF000001000200020000000100010001000000FEFFFFFF000000000000020003000200FFFFFEFF020000000000FEFF0100FDFF01000000FFFF0000FDFF00000000FFFF0300FFFFFFFFFEFF00000100FEFFFFFF00000000010002000000FFFF0000FFFF0000FEFFFFFF0000010001000000FEFFFFFF0100FEFFFFFF01000000000001000000FFFFFFFF0000010002000200000001000000FEFFFDFF0000FEFF0000FEFF0300FDFF000000000000FFFF00000100030002000300FFFFFFFFFEFFFEFFFFFFFFFF0200FEFFFDFF0000010001000000FFFF03000200FFFFFEFF010002000200010000000000FFFF0000FFFF000002000300FFFFFFFFFEFF0000FFFFFEFF0100FFFF00000200FFFF0100FEFF020001000000FFFFFDFFFEFFFEFF0200000002000100FEFFFFFF0200FFFF0000FFFF01000000FEFFFFFFFFFF01000000FFFFFFFFFEFFFDFFFFFF0100FEFFFEFFFFFF01000000FFFF010001000000000002000000020000000100020001000100020000000000FEFFFFFFFFFF000000000000FDFF0000000002000200FFFF020001000000FDFFFEFF0200FEFFFEFF01000200FFFF00000100010000000000FEFF0200FDFFFFFF0100010001000100FEFF000002000300FFFF0000000000000100FEFFFFFF000000000100FEFF03000100FFFFFFFF0000FEFF00000000FEFF010002000100000002000100FFFF0100010000000000030001000000FEFF01000000FFFF0000FFFF0200FFFF02000100FEFF0000FFFFFEFF00000200000002000000FFFF010000000000FDFF010000000100FFFFFFFFFFFF0000FFFFFFFFFEFF02000000000001000100FEFF0100FFFF0000FEFF000001000000FEFF0100000001000200FDFF0000FFFF0100FFFF0200FEFF0400FEFFFEFF0000050000000000FFFFFEFF01000000FEFF00000000FFFF02000000FFFFFEFF02000000FEFFFFFF0100010001000100FEFF0000000001000000000000000100000000000000000001000200FEFF010001000000FFFFFFFF03000000FFFF0200020001000100FFFFFEFFFFFF02000100030001000000FFFF0000000002000100FFFFFFFFFFFF00000000020000000000FEFFFFFF0100FFFF0100020000000200FDFF0000FFFF0000FEFF00000000FFFF030000000200040000000100FEFFFFFFFFFFFFFFFFFF0000FFFF000000000100FFFF02000100FEFFFEFF0100FEFF010000000000010000000100FFFF0100020001000100FFFFFFFF010001000000FFFFFDFF00000200FFFF01000000FEFF000000000300010001000000010002000100FEFFFFFF0100010002000100000000000000000001000300FEFFFFFF00000100FFFF030000000200000001000000000001000100FFFFFFFF0000FFFF0000FFFF0000010000000100000000000000FEFFFEFFFFFF0000FFFFFFFF0000FFFF020000000100FDFFFFFF000001000000000000000100000002000300000003000100FFFF01000200FFFFFFFF020002000000020000000000FFFF010001000000020001000200020001000200FFFF010001000300FFFFFFFF03000100FEFFFFFF02000000FDFF0100FFFF020001000000FDFFFFFF0100FFFFFEFF01000200FFFF0000010000000100FFFFFFFFFEFF000001000100FFFF020002000200FFFFFEFFFDFFFEFF0300000002000200FDFF0200FFFF000000000100FFFF02000100FFFF010000000000FFFF0000020000000000FFFFFFFF00000000FFFFFFFF040002000200FFFFFEFF02000200FEFF0200FFFFFFFFFFFF0000FFFFFFFF0200FFFFFEFFFFFF0100FFFFFEFF0300FFFFFFFF00000000FFFFFDFFFFFF00000200FFFFFEFF000000000000FEFF03000100010002000000000001000200FFFF02000000FEFFFEFF0100FFFFFFFFFEFF0200FFFF0200000000000100FEFF020001000000FFFFFFFFFEFF000000000200FFFFFEFF010000000100010001000100FEFFFFFF0000020001000100FFFF0000FFFF040003000000FFFF00000200FDFF0300FFFF0200FEFF0000FEFFFEFF010001000000000000000000FFFFFEFF01000000FEFF0200010002000100FFFF030003000100FEFF01000100FFFFFFFF0000020000000000020001000000000003000000FFFF0200FFFFFFFF0200FFFF00000000020000000000FFFFFFFFFEFFFEFF0200FFFF0100FEFFFFFF010001000100FFFF000000000300FFFF0100FFFF0000FDFF0100000000000100FFFF0100FEFF0100FEFF0000020000000100020002000200FFFFFEFF020003000100FEFF0000010002000000FFFF0200010000000100010000000200FFFFFEFF000000000000000001000000FFFF0100FFFF0300FFFFFFFFFCFF000000000200FFFF0000FFFF02000000010000000100000000000000FEFF0100FFFF0000FFFF030000000200FEFFFFFFFEFFFEFF0100FDFFFEFF0000FFFF000000000100010001000100FFFF00000000FFFFFFFFFEFFFFFF010000000200FFFF00000000FEFF0100FFFF01000200FFFF030000000100FFFF0100FDFF00000000FFFF0100FFFFFFFF0000FFFF00000000000001000100FFFF0200FDFFFFFFFFFF0100FEFF00000000FFFF02000100FDFF02000200FEFF01000000FFFF0200010000000200FDFFFFFFFFFF0300FEFFFFFF00000000FFFF0100FFFF0000FFFFFFFF01000000FFFF0000000000000000FFFFFEFFFFFFFFFFFDFF0100000001000000FFFF0000FEFFFEFFFEFF0200FFFF0000FFFF0200FEFFFFFFFFFFFFFF0100FDFF0300000001000200FDFF00000000FEFF0200FFFFFEFF0200FFFF02000000000000000000FDFF00000000FFFF010001000200FFFF000001000000010001000100FFFF01000200FEFF00000000000002000000FDFF02000000FFFF0000010000000300FEFFFFFF000000000000FFFFFFFF010001000000FDFF01000100FEFF0300FFFF0100FFFFFEFFFFFF020000000100010001000000FFFFFDFF020000000000000001000100FFFF01000100FFFFFCFF010002000100FFFF00000000000000000000FFFF0100FEFF0100020000000100010000000000FFFF0000FFFFFFFF0100010001000000FEFF010000000200FFFF01000100FEFF0200FFFF00000000FDFF01000300FFFF0000FFFFFDFF02000000FEFFFFFF010001000200FFFF02000000FEFF01000000FEFF00000000FFFFFEFFFEFF0200FDFF010000000400FFFFFFFF0100FEFFFFFF00000000FFFF00000100000001000000000000000200FFFF0300FFFFFFFF0300FCFFFFFF0200FFFF00000100000000000300FEFFFEFF010001000300FFFF0100010001000100FEFF0200010000000100000001000200FEFFFFFFFEFF000001000100FDFFFFFF02000200FEFF03000200FCFF01000100FFFF0100FEFFFEFF02000000FFFFFFFF00000100020000000000FFFF0000FDFFFFFF00000000FEFF0000FFFF00000000FDFF00000100FFFFFEFFFFFF000001000000FFFF00000100FEFF01000200FEFFFFFFFEFF0000FFFF0100FDFF0000FDFF02000100FFFF000001000100FEFF000000000000FFFF0000FFFFFFFFFFFF0100FFFFFFFFFFFFFFFFFFFF0000FFFF0000FEFFFEFFFFFF0200010003000100FEFFFFFF0000FDFF0000FEFF000001000100FFFFFEFF0300020000000000FFFF00000000FFFFFFFF00000100FCFF0100000000000000000001000000FFFFFEFFFFFFFFFF000000000000FFFF0100FFFFFEFF0300020001000200FDFFFEFFFFFF03000000FEFFFFFF00000200FFFF0000FFFF02000000FEFF03000000FFFFFEFF0100000002000000FEFF0000FFFF0100FEFF0000FFFF0100FFFFFFFFFFFF00000300FEFFFDFFFFFF02000300FFFFFFFF01000200FFFFFEFF00000200010002000200FFFFFFFF01000200FEFFFFFFFEFF0200FEFF010001000000FFFFFFFFFFFF000001000000FEFF0200FEFFFFFFFFFF0400FFFF0000010000000100FDFF0200FEFF02000100FFFF0100FEFF010001000100000000000100FEFF01000200FDFF0000FFFF010004000000FEFF0200000001000100FFFF02000100FFFFFEFF0000010000000000020001000000FFFFFFFF01000100020000000000FFFF0200020000000000FFFF01000100FFFFFEFFFEFF0000FEFFFEFF010000000000FCFFFFFF01000100FFFF0000FFFF0000FFFFFFFFFEFF000000000000FEFFFEFF0100FFFFFDFFFFFFFFFF0000FEFFFFFF0400FFFFFFFF0100FEFFFFFFFFFFFEFF0000FFFFFFFFFFFF00000100000000000100FEFF0200000000000000FEFF0100010000000000000000000000020002000200FFFFFDFFFFFF0300FDFF010000000200FEFF0000FEFF0100FFFFFFFFFEFFFFFFFCFF00000000010001000000FFFF00000000FFFF0000010000000300FFFFFFFF0100FFFFFFFF00000100000000000000000000000100FFFF0000FFFF01000000FEFF010001000000FFFF0100FFFF010000000000FFFFFFFFFFFF0100FEFFFFFF020000000000FDFFFFFF0000FFFFFEFFFEFFFEFF00000000FEFF020000000000FFFF02000100010000000100FFFF00000000FFFF000000000000FFFF0000010000000000FFFF01000000FDFF0100FFFFFFFF0000FFFFFFFF0000FFFF01000100FEFF0100FFFF00000200020000000100FEFF010002000200FFFF01000000FEFF0100FEFFFDFF0200FFFF0100000000000100010000000000FFFF000002000000020001000100010002000000FEFF01000100FEFF01000000FFFFFFFF0000FFFF000001000200000000000100FFFF0100FFFFFDFFFEFF0100FFFF030001000100FEFF0200FFFF0000FFFF00000100FEFFFEFF010001000100FEFF01000100FDFFFEFF02000100FEFF03000000020001000100FFFF000000000100FFFF000001000100FEFFFFFF02000000FFFF01000000000001000200FFFFFDFFFFFFFEFFFFFFFFFF0100FFFFFFFFFFFF01000000FFFF010003000100000002000100FFFF00000000FFFF03000000FFFF0100FEFFFFFF0000FFFFFFFFFEFF0100FFFFFEFF0300FFFF01000100FFFF02000000FEFF01000200FFFF0000FEFFFFFF00000000020001000100FEFF0000FEFF0000FDFFFFFFFFFFFDFFFFFF0100FEFF0200FFFF03000100FFFFFFFF0100FFFF02000000010002000100FFFF0100010001000000FFFF0000FEFF000000000000FFFFFFFF0100000001000100FEFF0100FFFF01000000FFFF010001000100FFFFFFFFFFFFFEFFFDFFFCFF01000100FDFFFFFF0000FEFF0000FDFF0200FFFF010000000000FFFF0100FDFFFFFFFFFF0200FEFFFFFF0000FFFF00000000FFFF0000FEFF0000010000000200FFFF01000100FFFFFEFF00000200FEFF0000000002000100020002000000FFFFFFFFFFFF0000FFFF0200FFFFFDFF03000000FFFF0200FFFFFFFFFEFFFDFF00000100FFFF0100FFFF000000000000020002000200FFFF010001000100010001000000FFFF0000FEFFFFFF0100FEFF0000FBFF000000000100000000000000FDFF0000FFFFFFFF000000000100000000000000FDFFFFFFFFFF0100010001000100FEFF0200FEFF01000300FEFFFEFFFFFF0000010000000100000000000000FFFFFFFF0200FFFFFFFF0100010001000000FDFF02000100000001000100FFFF0100FFFF0000000002000200020005000000010001000100000000000200FFFF0200020002000200FDFF0200020001000200FFFFFEFF00000000010000000000FFFF02000100000001000000FFFF02000000FFFF0100000003000100FFFFFEFF0100FFFFFFFFFEFF0300FEFF01000300FDFF0100FFFF020000000000FFFF020000000100FFFF0100FFFF0100FEFF01000000FFFFFFFFFFFF020000000000010000000100FFFF00000100FEFF02000200FEFFFEFF0000FFFF020000000100FFFF02000100FEFFFFFF030001000200FFFF04000000FFFF0300000000000100000001000000000001000100FFFF000000000100FFFF0000FEFFFFFFFEFF0000030002000200FFFF0100FFFFFEFFFFFF020002000000FEFF0200FEFF01000300FEFFFFFF010000000000000000000100010001000100000002000100FFFF0000FEFF0000FFFFFFFF0000FFFFFFFFFCFFFFFF02000000020002000100FCFF0100010001000000FEFF0100FFFFFFFFFEFFFEFFFFFFFFFFFFFFFEFFFEFF0000FFFF0000FEFF0000000000000200FEFF01000200FDFF000002000000FEFF000000000100FEFF0200FFFFFFFFFDFFFFFFFFFFFEFF01000300FFFF000001000000000000000000FFFF0000FFFF0100FEFF0100FDFF00000000FEFF0300FDFF0000020002000100FEFFFFFF0000FFFF0100020001000000FFFF0000FFFFFEFFFEFF0100FFFF00000200000000000000FDFF00000200FFFFFEFFFFFF02000100FFFF000002000100FFFF0000FEFFFFFFFEFF0000FFFFFFFFFEFFFFFFFFFF02000200FEFFFEFFFDFFFEFF020001000200FEFF0300FEFF0200FFFF010000000200FEFFFFFF0200FFFFFFFF0000FEFF0100FFFF0000FFFF0300FFFF00000000FEFF0200FEFF0100FFFF0100010002000000FFFF0300FEFF000000000100FFFFFFFFFFFFFFFFFEFFFEFF01000000FEFF0100030001000600FFFF0000FDFF0000FFFF000002000200FEFF0100000001000000000002000300FFFFFEFFFFFF0000FFFFFEFF0000FFFF00000000000000000100FEFF0000000000000100FFFFFDFF0000FFFF03000200FDFF0100000002000000FFFF0100FEFFFFFFFFFF0000FFFF00000100FFFF010000000200FFFFFEFF01000000FFFF0100FFFF0200FFFF0000FFFF0200010000000200000000000000FFFF020000000100FFFFFFFFFFFF0300FFFF000000000300010000000000020000000200FEFF02000100FFFF0000FFFFFEFFFFFF0100FFFF00000000FFFF01000100FEFF00000100000000000200010001000100FFFF0000FFFFFFFF0100030001000000FFFFFFFF01000200FEFF0000FFFF00000100020002000100FFFFFFFF0100FFFF0300FEFFFEFF00000200FEFF0000FEFF0100FEFF01000100FFFF0200FEFF0000FFFF0100000000000000FFFFFBFF02000100FFFFFDFF0200FEFF0100FEFF0100FFFF010002000100000000000100000001000100000000000100010002000100FFFF0200FFFF0000020000000100FFFF0000FEFF000001000000FFFF00000000FFFF00000000FFFF0000FEFFFFFFFEFF0000FEFF01000100FFFFFDFFFFFF020001000000FEFF0000010002000100FEFF0100FFFFFFFFFFFF00000000FEFFFEFF0100FFFF01000000010000000100FFFF010000000200FEFF0200FBFF0000030000000200000001000000FEFFFEFF000002000100010000000100FFFFFFFFFDFF0000FEFFFFFFFFFF010001000400FEFFFFFF0100FFFF0100000000000200FFFF00000300FFFF0200030001000000030001000000FFFFFFFF0100010003000000FEFFFFFFFEFF0000010001000000FEFFFFFF0000FFFF00000100FFFFFEFF0000FDFF01000200FFFF0000FEFF0200010001000200000001000300FFFF01000100030000000100FFFF0300FEFF00000100010001000200000003000000020000000000FFFF0200FEFFFEFF0100000000000000FEFF0300010000000100FFFF020000000100FDFF01000100000002000200FFFF01000100FFFF0400FEFF0200FFFF0000FEFF01000000020002000000FFFF00000100000000000000000002000100020000000200FDFF01000200FFFF0200FFFFFEFF0000010002000100FEFF000001000000FEFFFFFF0000FEFFFFFF02000100FFFFFFFFFFFF0100FFFF01000000FFFF020001000000000000000000FFFFFEFF00000000FEFFFFFF0100000003000200FFFF0100000001000000FFFF010001000200000000000000FEFF02000000FFFF0100000000000000FEFF030003000100FEFF0200010002000000FEFF00000100000001000200FFFF010001000100FEFFFFFFFFFFFFFFFEFF00000100FFFF0100020001000000FFFF01000000FFFF02000100FFFFFFFF02000100010002000100FFFF00000000FEFF01000100FFFF0100FFFFFFFF0000FEFFFFFF02000100FFFF00000100010001000000FEFF010000000000FFFF00000100FFFF00000100020001000100FFFFFEFFFFFFFEFF0200FFFF010000000200FEFF0100FFFF0000000000000000FEFF0100FFFFFDFF01000000000000000000FEFF0200010000000200FFFFFFFF02000000000000000000FEFF00000000FEFF0200FEFF010001000000010001000100FFFF0000FDFFFFFFFDFF0000FFFFFFFF0200FFFFFFFFFFFF0000FDFF01000100FFFF01000200FEFF0000FFFFFFFFFDFFFEFFFDFF0000FEFF0300FFFFFFFFFEFFFDFF02000000FFFF00000100FFFFFFFF0200FFFF00000300FDFFFFFF02000000FFFF020002000300FFFF0100FFFFFDFF01000000000000000200FFFF010001000000000001000100FEFF0300FFFFFFFFFEFF0100000001000100FFFF000000000100FDFFFFFFFEFFFFFF0200020002000200FDFF00000000FEFFFDFF01000000010001000000FEFFFFFF000000000000010002000100FFFFFFFF00000000FFFFFFFFFFFF0100FFFF0200FFFFFFFFFFFF000000000000000001000000020000000100FFFFFFFF000000000000FEFFFFFF0100000001000100FFFF000002000000FFFFFFFFFEFF000000000100FFFFFEFF0100FFFF00000000FEFF01000300FFFFFEFF010000000100FFFF00000000010001000000FFFF00000000FFFF0000FFFFFEFFFEFF0100FEFF0100FFFFFEFFFFFF0100FDFFFDFF00000100FFFF000002000100FFFF0000FFFF01000200FFFFFEFFFFFFFEFF0100FEFF0000010000000200FDFF02000000FFFF0000FEFF0000FEFF02000300FFFF00000100FEFFFEFFFFFFFDFFFEFF01000100FDFF0000000000000000FFFFFEFF0100FEFF01000400FDFF0100020002000300FEFF010000000000FCFFFFFFFFFF0200FEFFFFFFFFFFFFFF01000000FEFFFFFF01000100FDFFFFFF0000FFFF01000100010001000200000002000100000000000100FFFF010001000100FFFFFFFFFEFFFFFFFEFF00000000FFFF000001000000000002000200FFFFFFFFFFFF00000000FDFF00000100FFFFFFFFFEFF0100FFFF0200FFFF010000000200010001000200FEFF0000FFFF000002000200FFFF0300FAFF00000000FFFF0100FFFFFFFF0000FFFF0200FFFFFFFF000001000000FEFF00000100FEFF0200FCFF0000FFFF0100FEFF0000010000000100000001000200FFFF000000000000FEFFFFFF0100FFFF0200FDFF010001000000010001000000000003000000000002000100FFFF0100FDFFFEFF0000FFFF0200FDFF0000030000000000FFFFFFFF00000000FFFF0000020001000100FFFF0000020000000100FFFF010001000200FFFF00000100FEFFFEFFFFFF0200FFFFFEFF020001000000010000000100000002000200FEFF0000FDFF01000000FFFFFDFF00000000010000000000FFFF0000FBFF01000000FEFFFEFF0000FDFF0200FEFF0100FEFF0100000000000000FFFFFEFF0000020003000100FFFFFEFFFEFF0100FFFF0100FFFF01000200010001000000FFFFFFFFFFFF00000000FEFF00000300FEFFFFFFFFFF050001000000FFFF0000FFFFFEFFFFFF0100FFFFFFFF0100000003000000FFFF010000000000FEFFFEFF010000000100FFFF00000100010001000000FFFFFFFF0100FFFF0100FEFFFEFF0000FEFFFEFFFFFFFFFF0100FEFF01000200FFFF00000200020001000100010001000100FEFFFFFF0100FFFF0200FFFF0200000001000000FDFF0000FFFFFEFF00000100FFFFFEFF0000FEFFFEFF020001000000FEFF0200FFFF0200FCFFFFFF02000000FEFFFEFFFEFF0000000000000000FEFF0100020002000000FEFFFFFF0000FFFFFFFFFEFFFFFF000000000300000000000000FDFFFFFF0000000001000200FEFF010000000100020000000200FEFF000002000000FFFFFFFF00000000FCFF0100FEFF00000000FEFF000001000100FEFF00000000010000000100000002000000FFFF0000FEFF000002000200FEFFFEFFFFFFFDFF0000FFFFFEFF0200040000000100020000000200010001000200FFFF020002000000FEFF00000000FFFF0200FEFFFFFFFFFFFDFF010000000200FEFF01000200010003000100FFFF0300FFFF020000000000FEFF000000000100FFFF0100020002000000FFFFFFFF000001000200FFFF010000000000FEFFFFFF0100020000000200FFFF0000FFFF0300FFFFFFFFFEFF010000000100000000000300030000000300FEFF0100010001000100FCFFFEFF0100FEFFFFFF0100020002000000FFFF00000000FFFFFFFFFFFF0100FDFF0200FFFF0100FFFF00000000FFFF000001000200FFFF01000100FFFF010000000200FDFF4C893613C93652F6597B1C7CBC9EA79F9177DA37270EA4FA9FFDAE84FF4661AF +ct = 6421FA639715BCEA96CF544FFFEEEB03227281C0EE80416076FE9C0E066B570F8CB5228552B60641623A0318680D167CB1F37F27387843E293302596B7EA214D7F50BD26F847E6A1B04D1FFBE3986EA0141C3025BABDE4B72A4B949B04187BBA51402040BAD6F85C2F039F714655871A1E8BC50A6E68D4A35C4333E467CE9A6CDEA657361558A8AD9DA4F0E95E2F80CADD49205F2647B8416A54B7A5C7D3276937647543647F41FFF94482CD786E6E2D4206EF4EB48E8164BD37A3CE5112D52351AAAE9327A960FDD31AA1BC12EE79EF865ACA3DF25B37179EEE04D0CB91A483BF5C855E605047ADD336299BBB7354DAE01A059905DC302AD8260A0EBFD0ED5E02729B0B46A2D79DDB228DE1C6194073AC18BFD96683776E76602E118447132548ACC39CC13DB1BAC4FDA8D45D72C11E567CC64021A6D2309A76AF48FEAF46B1F41BF27A8967C33E02D08ECF8F48FB1018E4AD6397E8A0A24C34D71E2D458F77102802050D6E7642278481C1B69BE3C103CFAE670FAA22364F5B15FE6DA4E640C64A72B58F2E774AD65A6B762A91E515BC4E8B198ABFA4DB91CF3177810E0DE5C61974BFF5B1619BCCE12FD0BDF9AC0BEEAD68E0B5A509AE547B07F3AECE410BD397AB928B69B9F5D46B6749B6C4562F4AE59BA6D79B28991D416E9881E779E74DB4939D324B0D2E132EC7843BFFC99D63E4D5F06F2A1B9CE462A07F5F6EAA39423A538B92E811C482C483691364999C2BEA2C38A77CB904ADB8355683AF5C032BCF8A7BF88994BAE132B48AF3B40C68575A0536401B5CC5A94EE634995FC1D2280EBCFA45479897D2AB37DCC669F297356240039AA30D562AA8EA3C4205DDF9FB2F315159347C0589678AA766EE29BFCB60545C0690B378A98F118395C5551AACD7F5B225ECD62A49B69030E7A00926A497FDCBAB4F56B7C6C0A65D1FF6AFC9E4ECE135F38112B1C5DFE811A547619B412F5B5968E735E8D0727618C63636E8EDAED41C1D2097961A43E7F5B1205A8E2E34A7627CEA7296902C6F04A3FBE54F72EF171540903A7F12D77E7B69EEB9213D3B00837739F7BD71E2F4F92221E6F7DD2DEA0589A153B2DC293286156F88B6852C6C4A3A28534A700C6BA452B5A8FD909AB1262A87F3A5887EB430C5CE9E0AD57AA6A7033F0E3615657ACBD45E2390E8893980EDB4CFAC98C1B73D654766CF5898AF2E3D038D257C165C3296CAD3636212A53728C49A9E86E0C6158B378804E64087C1E1BE6B052F909B3249EB3E006912F45ADB6CDF87C7DD4BDD9518AE93AA43509EB1D21F3031DA143DF082AD0BF4DED71DA12CB8FBDBC79BFA93149175DE0E62FA6A70FEAE2BE5B9127D65DBBE9E85EDC93AAE479A0963390BA05E70C21A7452157F5B566305922992853EDAD94A8C018968F5D429D2E7BF3C3E7DD45302FE7BED1470CB6DF2A71D5CF999C3E5897273173BE1081A44B8DEB3158A77C9454BA5D64E026A7C55960EFA8C20A7BEF27CFA635C346F7DB38F03549119A6CDBDF089AAFEEE99F415C36A961E1DF8D693840AE301B70B0EA928D2D335C324556DBC2EC016AAC9B4EC31ACF693A41C8D930EFDE8D6C6C20AD1EDABDB3CFF61DCF6274BBA591F1F0E48BEAFBDCF6E149A586EA54228BF29D6ED70BBE165FC05D034389109EE475EFA88980426F7EE3553E827186E886AD94FBB3DFDA0C638D918A5A7ED6AB6D10F4D4591583FECEF89D34438F547D18FBBA1CD930AA39E45E13DEFFF60F7246F5DF7D4B16434ECA621891434C3E958B45060F0D4E878BE6BEBBE153BA318E4EDDE1FC58D89ABEB47B2B3F33E830175C1E6E6918C4B49A8B2FCAA96006A4501F84B183C9D747998CCD0DEFB07E6EA29A3C7CD877BF7758F3B8F2A32E7846E48B78FB3D11F5FAF07768660F38EF816815D4926D7BB416BFB6732FA079C98F6338408E583D361BEA3AB9EDCEF1E9A2DDD7B68BB5F7729E9E1CC7F009B5DE2E9CED9F0D57397E2C4D25C6999D413C9871A240403DD63FC169C55DFB0A2507C5E2677557C34DB8B57A36CF4796E4933D066E67FB8A16730F40724CDABC75F8BDC5663E06732844C40E4334E7B46D48B827AB3C82B10BA238DDB50A64B85FAE09B06BAC29D0F98E5939474851EAB1284E2154FE913BC2ADE6832C54053BE3C9A8FFDC266859A8DB994CB0FA229A90D5B82340503DA8F4655BA60340227D0F24D6EB2820C249AFCCF3B40386A8C5A0A4D09B32EC6FB14A6F640C5E70D35B35A0D20616BEB15119F80CC0C6F65F652C852B09F7A27328B5F304A1467CCC1E51F04389CA995B92677C4EE9331A2B9D194E73BD2050D4CA083C1F8E6C9762BD4C0D200C5231BA0D4D659647A4C6AFE26AE60440C2C9C25927FC838E8C1C2E0A3D6216778F9460B48269C03AC9BA97B39268B1B9EAB8ACDCBB32F83FCDC69682AD02878B12156CAA5D04139D7C873230623316519947F14913FA6E4EE5F63274AC87EB6C4C0FC3A4D1AA258FF6FD5D7D29FBA75FBAF68C76D12DEDCFA80528E38B77EF0F88513CD3E6F94B3BD63C1A275316258EB5C7CB13AB8B57DF0CDA7FA4747989DB4F37F5339B9665FD6BD2F02ED7F15ACD85B50AE18DC11C67E435D5D6599B2004B7C1F9B20B6102D5920399E29358E22EFEA57AE53B505067A170887CF5954E825DCE76A16AED5E94735E52E1814ECB2BD2683FC4F80388270CB484DD8A0450B49E8B6B99AB902E844A5343513818333FFE0DA3AD9EBFE0969A0B39DC189CBF404B1DF6F6FD9CCF84775C55C765BE9137401D2EDF0D9B04CBF5A3D624511C8AF48E35358257A6EAE4A69FB828F6D6E9D8BEBC5839068C91460AA6063F533CECFFD90E38BA33057AD2E20EF434AB63C6CFB3FD2E1EB07984CA173F11C23F1AB4A61A5081591BFFFA2DECE211D019CE51D0FDD29569717047F250C408C8795049E3ECA153CB16A1FA5E97CA977AA785EEFCD6BEE76E6D67BEFDCA56A5F45F46221AC133DBB14FDE9CAEE9D6EEE09B4390F0F5E97432D9802C0CB2C02F82457D650925FA168A33157E2D6A968C7694163E6DC0EE679C6E68DC3882006ED17F264003BB568459DE68CB00464B75647FF9470C0D495F1B79D0C45EB176E6E2E7DEB95D55A304EC8171C9CA07A33C15ED3C69870C394A34463A74BE77D00DCC0F03B30DA551A7026F389C8840770C4DE41788CA3C89BF781D46DDC14D26158CDD204E1728AB1CCFD8506F5C803A714617D6FCBEAE429EA881434AA2F895037DFF7F4490D3B67BCAC553C2E09875B117318E57774E5D8337ED1D62D243593562B174D82A228CA446D8AF47F27A63C0D7C2FF5948C099A88D3519E4353BBDC8BFF7986C41053EDFA5AD2720C28FB26871EC7F00AB099EE112CFC94DF2E59084ED556C5FF04BDCAFF0EC70B2941E0A1D443020E2241458F97B7DB525BF1A73D6561AD4C7C055E00FB365DBC1AC849D39BC5652814F62BB59734C63AD16CE07FB7FEF795F40EF13D5F526F8A8672BC781F61EE49427D99E03434B886C18B5DE167BDFA187ED6D4104AD185479C5DB92B486244CB159A84F625C6DBC1307881709EEF1FDF04DCACA24F361C9A40A9E994A7A2C6712885343207BDE38BE257993513026170BCB03F741EE8F1C22DB729C8718569E44D308D3B7C3C6BE6ED8E519947FD7B38D6C7D6273BF6E74B2E9126B5952FB6D27C3E44EB5581AF1C64F4DA458498FBC6E40CC142495A825BE3CA43E4CFDAFCDA33A9737A392E0684D1CA6447AADDA6B7F201404E0CB08E6A33B1E28DEE744A7AF78B6499EC745343F5632D2C98CE3DF55FD95A258D7455C99002D6758A527889DE82A6BCD3EAAD17EA526447F32E676276D200BEBA2EBF76A553C84CB0B74800D4C8524D2D17927D487179682B43BEFEB94098C6CF2CE387FAFB16859EC1EB4F75088F2F359DA5D612FC0ABBD578918B812E533923041B62CCCAFA5F499DC722B2277863547DF1B40F56A522680D9BB28BF9CC3D60D49C5A15DF0B4B350ABC27BEE0C5D46D453C8D7355CC6620AE9B9B38A4CDCA2F2901AD2DD393EDB7E3739589DC401AF66A8CE17DB62C6653213A2B7C3C9AE66D164409CFE44451AA62C16815AE20F3018BA5D61C8D737956BE3B21BE69091E99E84A6FF37D7F0E2859938D63B19C170E7797ADFEEF0D4CF3726BB8A877DC82CE1F69A31896B938E2A3E7AECD7C0AFF25191E0E9CDB1C0C6F6829C840BB465F563EFA0474A30E8FF675BE84D419A0193AFFF35E5AFCCE46A3B13C9CD2E91721E3714815ED6864543F67CD63F5E2318719009B2515E581683A857DD99058FEC801EBDFA6D1A94303FAAE791759824BBA8B4A3D6FB4428D99F12125C68496289C2032D61D14C2D708799F1FFC006AD652BC90BB7249AE8A5C7415CE38BFCD9B50F72FB7DFF8BC892A6C62873D53D3D9E3C8FB00863885EE9CF7B5215ED0E52B890D8748133A8852320BE1CAC3E203DFCA748F8E27508FFEE0D89677EB296370AFFEB6DD59D7855D2AECF4CBEBBE8A9E93CAC6B9235DCDEDACB854514352E967BB64A3D627D352B5E49A56BC16E8EB9DF16B60FA1B5C827FB05E723DCE6AE4CCC9D3C14DCD62DED905F0D48FE6FDD84DEBE9F9FBE1A7136108B615C0EC8399E4A32E276247817DFF4D3A10FD00EA394979147B7528DA8ABF61D069AA7DDC860F3267048EE09A102C9637C3E77DF1FC97F54E583E9BCEFD7F415210819EB445337EA1C6AC39DB4D41717570740DA3FA40E6930436A3B3CA53C3ED84FC4ABFD9E1A9AE51380D3AFC29645327E97CFB6CAA348DBD40C7589A85F2797607EEF8CA34FDCDC13E56D4D30670892335B4ACD274ABA81BFF39CFF1F348DE6A51834D2EBB9F6560274A9CB398DEAEC75479119F137D2EF77895050DFF20E568E134559C81B8D3D1824BB01FB8040F630A98ADA9E05D33957B95B9B51E1C572F819E1C977DFF6DE05461B69422E08C53E88AFFA2F4301D30603B229FBE4364352E836360FC2761E11D3A34C5AA121AF524EF251631A4133504540E715D22FE9D613E9A58D303DDD1BD92C3F52C9549CD07A8F50AFD796FFB82FC16B1683FEBF89529AC6F72F05DCEE6975C208EF475B89D85DFF3B735812C5A36DAF562D5EC26ABAC7428CAD022F865E5EC16E441F1B9AE4EFD3DCA51634098A55897C91B7CCFACCF42E984D521C59F8C77E66813176A7F3213C3C3C0B05EDA3F7194BE73FCFF73763247AD7E4980E3DDFB07F8BEE96A088CA5F16B3E735B29C1E54B3F2C7AFF614AA9870F0A25DE7389EA83DA9A480BA2C421C43B5127A05126DBFECBC897BA08005B9C9C9A724FD90126CE200B1E1C7EC75A6F29E19F2F4A32790CB28E82924DA4F53CB17CBF23A1052A27E2454980E46F6D4C5EDEB6B0E0574A138FC3824598CE3096E5BC6AC3C9A657761490A4FFA18F896C026E86A98E82045EAFC254A66CC0934AC6C50266D1E51937F9B26D3296FFDBA6EE3C9AD3B9E1E5B2265CE48E8C89F6CEEC6ACD90EF9DA8E562FD6FDCC921D3AB4ACDF11112E9EF57A1B16D4994BF020228E0FFF2D7083582AC3B2D6924598DA62A0BEF44643EAF26923A337042AEFF76EB988B59790C1AD765A901184DAF3496EB04B03A49BABBAD92AA2F1880E00C7D7B5E75447B239E19C648114E22EC076642F151A435603E8E2B6A4A89A12717C6BDE53F8B56A8FC4CB06C41419FF6E6D49873F84220AF5CE1D8E9D84C0BA053BD3F97E70CCC200C455E72D31CCA5D33FAA2A2E4F8464E77E7605514415F0FD316F85CA6BB7BE2AA9F2544A057E8584E0342B805221BF22E198407230F3F9A6DA6729B30AD8BB7754CC535137053724137465A61D39D7C52C7FE8B2E475E765C39C79F2D30980CBF43FC306C69D0F345DF3C46A270E52B4534009790482BFAFF47A9C7D0656B15C6C64F18FF8E7B0817B4C7DC45A6D884F668C45C145D4214E8C2568EF82133043B526B3FD8480A87A198BF65A7299612892BC0D9C016894612BA8BF0320F304C063B54DFB606B634430F37C9479705B85DCE3DDCAAB33E14D53035E0BA3E46E33129F7AAF880E71795E6762463872DCC13A7676D1A83A250B019E0290ECA8C84EF805BA3085CD8FE4942BACA64BBC3FC239FBB47D78022881A2E0FF9DC66CA0AA03557995C94D34C8409614C50AA09A100AF26CBDFFCFA387E9EF7DC2B44055CA15DAF1B2246EB3235026839DD6423569CCD12960A80D999425969097A990AA6B6749EDA3CD759ADA4C78592927FCCABB62CE1223AB35345B6A3779E9EC346359A02359BD1D98055687F2ED2ED250BFFDBFB46DED700250EF43CD28E7F0A10A6FA8814092B034CF45B2266FF9EA8E78DFDB6D17F253BBAAFD7F87EDD9B1D7B0122E98FEA6E14520751F57FC94430B9BB614CF4895BD97BFAF0586F3266D541E46E88C2EAC70B1B896A349377CBF30EFC1D682FA36A9413A9353987B6577B954A0DF2C9F406B6562975C4C5274F61055CE7128B868E48CDAEE399E1618636C488350C855493EA8831DEA8DCF56920E6AA2458CF54F4B22B345A82D62F48D5AF8A0D548901F8F3B753E6F3CABC82EFBD5BE70457710A4ED0C6464BF3311EDC27EEF664943A776BC42B073A5BB859737D2C36A9E34C772990CBCD2E71F6FC0485F27D5D5B3220EE6C53DD62DDEF977AABEDEA3067B6565C87B2D1DC37DD1F73E23CFC3E1D1BA9DB3073B1280B06A1232B5C825939BEA011DFC7052BBFFD29F5AF832C21716735AFD732F2509C1ED72E1B8CC9797723E4EF75F0BCE18A365FD32B7FC11C0BCA37AD648B39AFD0517DA789B0BBC939C80C8FC79A27BAD6511D50347044C53C2711184497E516E8C98DF9A5B5D77F1ED9E7EC3CB3BB67C095E160C7CA2AEE6319C584D713864647967623A275F88A152F124BD29C42603A858158C81BB18DF1D1B2DA0F05DB8395F219E1A8F4B35E509B83F2D9AED5F73CF70CB19617A51D8EF2A5D449D46B87C008AA79E9C0B71C76596C771CF660280309B8D59ED395EA45145FF80250189E9A757533BAFF2F6303DF95656F69B4A49BAE78330C084C6C5E7D7A836C6A164CD33B4187412F453B60D43382E6E7621ECBC3B28B3F0F586989406AB276E058A88EE63B9919A938BF93566CD7250932EB92097333FDB86B5A4DB2C3A009E2D1C53126E4F586FEA5A314704FF91F6502C2509FD07F668C303E7F8CB4271984ACBCBB020C59065F4B11BC48C31747E7DA1EBFDACFFE32C142094D463B30192F2C4F82C088B79DDE665563F0F80EDA9534BF2FE44EE301BFCAFF8CACE934C72A1B001CA3E1B2DADB249E8B061C0AF50C9511CE840828BD81E494E434AEF86004DB0072AEA53ADBBCDF311C27755610F13BBA14A949E0E70C229DA95A00FDF63E583DCF2B940FC320D42D9E231AA04692BCA2A28AE7A035D9C41B1B5EBFC32A205393FCA111950C62BE1C9152967345E4F9E85C425582A6DB967E37A48FEA7298F0695D4FB7EB107E674C769239B333DFCF61EB02BE54459895188E4158D6D7376E48F56EEFA26D6CB04BE8614572544D474F3BA80EDF07468CC9F2AC2594A115CD2F0F4D9245B23CCF6FC16396B200B358123786297BCB97FC0D288255EA1B78DC2B33398E7C444DB66F3F878D7F5E787F10ED3DCE9282D40ABCC2EA8C47A24BCED6120E9C02F39364BD1BF663D3016B123F957ADE1221F01EEBEA344A7300F09D621A223D419F6C5F314E46B525EDECC1DA5F5B4B70804E77D5DB5E288ABF17B601AC6101757C4052DAF2CA1D6C0A9AC4E4C2386349881490F9F588B1BBDE09C36C1DBD870A645ED036AEB65DD0A75EF3CE7F355AE9A4A2AD1D9111A383E7DD729B2083662593B9B602F5A28D33C4C313E2BCB63B531AFA6B591A5A5EF0150FA4A4FF1E2FB60A5873A635E10577B8E4DF9BBE87E75B1E8E34452214C8C66507552FFE006BC6EB8A08AADCA6837FFBA5BAEACE42E2AB2D4BB97E13A1E92B31DE7FEA2D394D57D0B025ACCC5E3B9AADC69CA40A0D44809D93782018DA23AD28AD913C5C09862A76B2DFBD12F2A08921F9A7CD850B7A08170F10A7F620A4A281ACACD0C5AE025622A8808190C0CDDE60744344248BCCB5256B06F9D798D993B1154E031E1A4FDCB4397B47E73C3CDC47A3EFD50E0883AC5AFB487FF9CCAFBFACFBAB132D6E5EBF4B37F7CE751B24A2EC0A794531E95375876821D04DC7533553D296A5D9B493A5B4DF5A448CECAF8FEBB2D505983F575946CD5C46BB61702165FF492D02D6EE5B53DF7110CBB0E8D5F68A15CBB853C8E8C26DD883F88AFB224508975E11DF356D3EC7CE58803DD047E0A44B370666CD24F6C424BFADFBA28B191F872BB64B61B54A53D49791C061FDAC35B4AACA7DAD5B56DE9A1DC199C6FDC99E4E18958BF3B819B9A06C2596A2F7C98A0D4BE435D971375EC4B7E6C480097CFCCA558506D5D72E206F712269CE853AF4D4647816B9E25CDDBABAA22751190BBD4D7FD3863CD663395CC66E8019A3352BBD8E6EDABA79647DD2EC71F12EF54FDDE3B39C7BF01AF6B4B1B616F58B789225943EDBC3A197007500B7E072E513E6D7D3FDEC95B72B50D345592A2239465BD0E6C75C2517A024765A74C4F70DC427375ECB7324D1FE8AB76288FC1E040A62DE4059B1B65334F84756746BF6139C502D5B1B19F60DB25EA7AD157C5E36706D66E5B49F52FDA6E0728179A23BA018BB001662C56EC4676DF7724CDB4D076B49CCA03A9FA4D976AC496C4348F0D2A85B321E59C8999FFB42397FD56BD0A4E70197A3D78972E9822ACEBCEC68E982D0FFEBDBF0D3AF6E06A1581B4E94F22B1AE4183C144D6831D2824F64007A664B125168FA9C4A1EE5939ED6AE9784FE5A606DFF99C9F637D2559EF18B7ED48F861A08D677D2D12DA376C3242673C5E734A2844395A90081408B002922273D00BF2A62533D05E710FBDF2914250CDBC9588604D9B46C49BC4A6E469D686ACED3C6F08C149421752D88190ED662B61C4BF4641CE1B2F0CA0E751DD935EE7382ECD5A24952F7AF950011091146B8BDCEA8542AE00EE3855365085B48B989FD195930EBA40402BB81A0C95A883DFAECDB4F643DF6F014278B7AAA4B40011E5EB3C1132B7B6EABF7AC560396E6B60A52847988BE76C82285A3AD02BCAF844A31D4ED6E527B3F0D3731DCACFE1EF770C1196DE9F70CF8182E863AD0B2BBF0A56E1BD65842A798BBEAF88978CA777A83E402915C11F5C8768F1EE94A8D169D3B966A6873551A006BEE9073FB3618ED97CD9306CABB601DC541175CD74E9D55969005562CEF05A0D91572A439912FE911D4C18111A1EC8FB4F4AC866BDB5F66F10CDA2FEEE72D4EE391E9709EB3699AC215164205E736538D8A6D108E38C42B193345E0B08CD82B0C21672994E571DA29EED71FE0578A62F14D02A74DFE3226921D93FE465AE95DB7CC03CF28E3A6DFD7405FBDAD3710A64CD851EBB34F01F35E38B9F4F9CF7B514528E6F3E7997F3540174F8018CB853349D6683F40ECD8CF5BB2D5917054B63E2C1DDF4353E52810039D276823AE319296AF3BE4B0AEEBE343E61F43B5FF39CDB1C21A92B9D1EECBC303C76178A43D2A502D3FBB27AC887267720BC2EACE780C4ADF8EED00E1A822441A87222E1C4389598BEBBA56AD7A56143BA13F8EE91BD8F9DC086080C118C3CE6BA882953F346FD0979E3E959052F7C7DF1969AA56390D268E31E6EB407E65246C2437605D809C9F796E09A04D7F8F883E14AECACB7219EDA96CD4466373B6515BDF9DF7EEBF4F176D1749D1292CC0402FCDD72EE1DB3AA930BC76189E980CF6646725CCE85F5CD95317483C6E101C292631FA98DE13F77123247D75992A891454F9E30D4AE22CB69E118F6D5348BE310F3334C3DB3DD4766A373D92FE7E79E311645F78968937BB1DF839DE0E95968B96830DF1BE68C12BA94EF4CA6B8E614CA08E2FE5C8AE05017C08BC77377FEAA4D0AF34BED66FFD878CB89EB0E17E4EC3EA0E5C0FE9529CAC784204A1032EFC41AC13F1A8D33B668FEF90CF1123D68360E93AB67948078010898072759A7C0120B28F2C145DD0FD3F7E275C66BC3226395B33259022968AA9ABC96045B0A61097C02ADD177BC0EF5D36806CE6535F6710236775A161B8161F3003882E8FE6DB03267C02D2B3D8DB0F17D0E28009C29AD7A1B7ECCB79AC540032716102A87D7B136E0FAAB745061FA1EF7930A9D4C5DB1CC1F5FAB8DF096CE1E75309DA0C1F2D8513016AB2E59BFD3F38137DD09B2B7888DAF3B1D5C3443C183FF905670E6EA928B0E0D56107A50B444C2497BAC0742EA42C5A9E341D208A1631B076BC7535883017F5AC926832599C8BF80741063DFC6E9DB6420D50804CF3B8D5ADD939882D21F68E96696BF8ADC98C0BD1E2692E313673B6ABA3AE188B5A99AE8AF95653691A8B2C52E78AC8A16292604EAE6F5A4CE8B5C5E27A42CCE785BA1319D528BA24C6D41CB2CA9848C171C64778B4A964A52F9F398FF7D75DC32636DB10BE30065678121E87890317B942C4F16D2E38B18B84B2827A1A622A8C3DC40D9220E2B5D839F2734E061A627BD5DBD278E7D947F3D11A9A0C1DE4C619302A23CB66E438BFBA91BED7276C8F280BDEA3E3DEFFD9DA33E9C22F66919F2985A3417B3E75597D3A1F0D79DAB90E24F77F4977BB342EEC33743E08F7B4918A824C106927E953A06FE83FC9510DDDDCA4E7AF279DE5492617E82A655757137FF219B57A90BBD02B7D611308BA8B4F44A1B02126B3597C673065801B37D2936E4198235A01B0641CF213BA2FA0EEA9D1FEA1657E2B9E2314197BF7D9F0B14B860616A6AECC0C3DF41EA984D5FD869265428070347C8A8751D83FCED6F79F3AB7DB10F22AC387EF5544D6B6B603B3B709BA19A6A0C5D00D66477F41AC74E9A4BF21D4A7F5FCB1F9E3FE8C8BA2B95B9F8938C51ECF63E6B876EAB9E1394A321DB08EFB70EC80093AECAE5EB512D6E161D33EF0B0AEC1BDD759A7F82B84D1100002BC8072D9A91E440DB781E81B6D985DDF32D34ADB1C233214064405C841B4403B14F508465D7D33A2F719DF58EFF4D36FDE622D5A7E53D7D58023B8A24E858CF59A4A4C91A73BD46D3F58CA014D21EA52FB6C7FC24D507E1B152A9B1D2827778C98C46B45C81BF8593C5EDAFA203E7EDF0AE5725EDE3694DF458705D1EC9D243A2CC536014E1BA655F092FCF2EE5A133897774DAEF3CB17821B25F30E79926E5FBD0CDB48268406E6492869EB34A300BA8906FCD5715D3384CAC59ACFC6CE52D0D11A4097EC86694867169D468ACD84FD091CC6F97B1EC2E7A6C9FCDC6874F6129A7AE04FCF71500CA91CBBCEF668FBBB7CAFEBC7B968F95AA5F16F554345FEFB9F7F4CE0ED7BCAEBEB1CFE78A763B8D99BADC5BA7E64EBA7CF40A5926906EF9BDDE9DFE041D4A27D0D3011013C308D07279D4F55C9D5EF92FCBA117009575447C07AF970FCDB8F51694295400E13F9F32662CD0421039555BB353150B36351496D58C4A193D745E965B05AFDC6E149959E1F76049A194BEA13C07F281B2DAEDF754D0FD0B69FFB6F3E925662E77B8280CFD6C428152C177F00A3515D06FD90A0D4805E07B5BD6AB79DD9353CF765BC721948998257E4B8826DF856A5515ED85B8B540C269CF2794AE22DBB61F6FA618689F0974305E642F5AC0465708EAAF5E801E71556FFF5914ECB1457C74547412F712244B3232F989C21FC26F7FD5D0598187E43512E123212E7791D067F68243400288BBC29B9EB9699401B1E3A1FCF833A6498F4C8B26621C13670BDD177849CEB363D9B3E26BEBB1E5084A7149EA284E10D4A45A52EF907080D70F87078F1A825FDBE0E827B03C167A5A45E9782F93EE00C8A3A2EF165875F6FC88A9B0B2E981DE93690F4E9F58E071B2FB53EBB1777F3A70533BFA9478E6C5105D26E8D33F09F32AD28B3CE63EBFC73741C3CDF84C850FDDF14B71B8AE036ADA99FEC34650A6E15237BA121200796AC9AD9C2AEEF49D3CE10BF3407C48C8E7D268102E85EE9D0558E71CC9A1DE74503E1E9732362A1FF0C141A6FF42584C283F56E1FA5C1B15EAE691C4CD2BF4F0BB25C83092342E39827F94757A8732333F6A34A476754B1FED5DEB114559C11EF32996AB4FBAD15E915A762D9DD6DDC0F4CC8D46861299A4D9EAFC8A4509FA051B35C7CE31AB606D6A2748739060580CA45B5E6581644AD6F6BF2E0853EC64609D04CC1A2FC2F35F358FA57095D1ACBF9029871E23BFAA871F41CD3A781090636AE352C2386FAE6D01317CCC828EC6BFBF688D836EA05004F24AB1CA89716D36F2FA2739FEC74A07393A6AABF91A5BE074E1A9F4D84CB29BA54BC11BD35B79BDEB9BF622409CD75BAF83C5C635EA27865D1B4D9E99A457906AAA2014C38F057B67C42BB6F197CBB08EE475DE0F177A7EC48ABBE4E4FC60C43C213B32C89FA2D28E69B20F00B4FE083D0C3647BDF1AB41DECE938697B819B1440AA5CF136202F1612CE12BE131962E004D081F4C4AB4451DBB07EC426186CDF8EDD41B9F92D9C79374CD499B54F2937947B37ACB4E1152ED2C3D44352034D1814EFF08B5EC697027ED89B579CB04AF1E94E95D7BE716828756104746E851B38B0C454937B7B11DE2686FC2823D8A32154D350010F34337407F5B1571037F7F7A4FEF53811FBE4C95E039662CBD5F8A35D529DAE9872B119AEEE7E76D417A7E10DDB5E9555BC3F12BB70E011F30E25D9B748AE17ED605638C28F5980E3CE8E3F64B7238C9617DBC8C2F3B54A3A0E62577A0EC463BCEAF298D1FD7491B3C1273BA68F029ED0E683AA4CD164318B83EEA60FA50305BAE2186B463BB12EA971C5F416E485362BA1942636154C99985314469A2CB71965F867A204A1112585056824310872C98031139EAEBE6D0761AB7E47699B54ACC48D8FB52EEDAB12F4B70A4D51538FA9B1E6D34270DEE12521A287DFDBD9478F1C62E315143D0D96920FE8299F9758D76151D8DC4B2A3E1B8E5415A9BD7E04E3100DF6B08A8FC8287BC2F67973B9B8AA4103209713078859BFADACDC4780C1156819706BB8C7B00D9E436973476B97F19A9BF473ACC508A874814A17BC5D2565D5C7699D14FCE9306657330CAA1250D81B8735D2C20C5A349FBDE6870B5B46E873B082D43E8FBDFE9B9B644C045701D6DC370FD8364CA938BB97B0FEEB2EF93EC44D9ED0F3F517C8865A4A76BF0073E64BAC87C4FC520C91DD7DDC0CEAB7CF4F96299F491F2DF4611B3F80EE41FEA6A57A23BEA157E9F2CBC325F1CFC2F668CDE1A1C6C1AB656D313CEE576AA77B76D3BBF53318B5162C11F14F957DBD1DA5295561400DF1B86C41D24AB1DA25A520216EFF67D1B5EA43B9349BEC22E906E05F605EEB88063671E5E8C9DB10B977488AF7B1ABC5E3EC5979387E4F1815CE6477A2D50609D18D8395762D6770A891651D72634624F7327451AB18CAD26B11437C65AAFE53578B78FC85E62B59353A343473DEBB2D50EAE08FB165AB7E91A5C4A22DB68559AE2D19308D521304843D28A0C04D5BE6736036A0DCAD8F6BBE11650D4722EFC779A355CCAE518D47EE7FB670DF6AD7D4B45DEE2C9361F1B9BE0FD367F85B34CC08BC4CB000D7F2BBFB65E9FA3D9F97E7BDB01262A5DE3567EB67C19C53262E33B77EE36CD82419A0F4AE57AEDAFA9DAD8A4E2C8008077FDC1262ABAE0CAE8100FB09DEFBAC3C242BB40D2AAC33BEB8CC897F7A82BAB16FCC8F1ADB6FA42E965F3D0E6EBA543C79F87B51AE4F8C16DD4FBF8829ED2D1E8B8480F5E1A990C699F6CA54D76E668DEABF4FAA80F0E2162B17D9453E3B5CEC1986E22BF634F04A1ECA80A4FFBFB82DDE731CEADE1AC23DE738F6171E756E682460577F3CC36B1CDE95B845A9EA70179C778B0128C467170B39612D73287020F97B7D9F9D98FD4A5EEC2D11EC65E63642ADAEAD035080B6A70FB08C84E00CD594CBC283622586B3309F3063F533DD7A992EDD16FBDE892797C7EBA9F5913B118EB75B994F9E44672D7C08AE66FE9DD35D754449F4F17DDD883867EC5A33271042E7396EFEF6C76A52C36517DFBA72D28765EFAF662359E8C466C344F689687345A0E1CA051F62C577BB30AC6F9662939EA4589FA5950E0859256D37A776371263617581D063C65AABD64B32DCB8131AD44890B8A8CE5FC3A7551B9AC7B82BF7AF20CD1ACA20800146AEFF692F6EDF5D58157C245E9B8E9A36E23CF6CF18CEF71EE5960BECD366730543AB5D8FDEA17781B18F068D53918A0EF920950A9E1966DA9A713A2C4F157555AE1FD72C1EBCFEA85394B63DE9C53101D35C529724FDA2E1CE46D8906F2014F6DC60E53CB0DFB9CAB5E14EB1BB33C1637B60C269883E8838B449E995F16F043D86109C5256226E1C428542E1B1D668A36DD7889EB667DAE54285D8A4D261FEEA676BB14EF1549DA5609B6FDB51101C9DBCA26378C1BB58AB9A8284C9BEDDCCF8262994E3004496934710B61EBD21A24FF0FF2549A7D906C57DE23365532FB740D333E3E15F0FA4FEA4F00C247CE707E38FADCF2D09D4CE68BA0B243F78ADD304D2FF250DAA5A82FBD83EE5CA9F7F1337854524A4DD23C9DBEAB89134FC206AE8FCCCAA1D79B86EC5BFE14FC4E4AB3535244CCA1332E7CE8CAAFBCF5656FF7971396832B24DA999931284C33D566207E234C488F1E62CD7E98D4FFCE4DE7650692747932F81B047690DAE65EC44BD6F678DA5C30D88FD5FA70883CE5C4D72B12878CD5118F90B486C2A29840D30E7DBEEA73D6E31BDFE5DE78C3A67EE1BB6777D4C611DDB768E1719C32D198392152DE5F7E006A63DCD1B293F0E8460BB7641C3F387C334604A9454F3FB75E4666F6BF42E695F547FC2F0293DB379136747C3CE6F590A468E1DA3542EE392C1999EF69B7772DF1299B5FB2FF323E4E80CAA402033C4847BE2E1942C4261A78FF14B30B5FDC19D8644B32AA9C01AA4A08D1A7C26774EB2E49728491E016FB8EBC96D2FE660A55F3980DD6E0665EC23C465EBED1AC856D4445A1F84E479C5D90F3B355450B8DA166BC99CBB93255DB4D9DB679894AF294E652DDE1DCD8A4BE1585DBAE2CB88A225E6AD4B5A3A5268C9DD9B7249090B5CDBAEAE830E61393A2E41C90EE74B7D8F4300CF928DD7158BC9A3C2053D71E363408A901BF5EC76BA09B0E6CEB3EDAE3291FCF2CC72673C4E87C99B0DE05762A52607E157DACBFAB4FA5CDF48C99D81FD8CD9C73BCD04B3814359F58F00FF2F37BC8610B793B7776353A697D05988AA4EFF086920A4F17942FE9BD1F2E18D3CE13CBA6657D11E930C166268463B6891B20BAF260BFCE5766FBCDDD7BDEB0D08C7A75C6B8E6B87926365C628DE6C55567A36E77B8A916E8A5220D30211C01D3A5D692ADA0204C7363E46CD4667B6F67B4E26AC8632F0DBB39D2D9E5B813EB76F48732689BA7CEA06BF92E8668AD3CE8DDB3A655613017E1DA50874316ADC13C697864C6A2FFD486F62CE8520274E4A8B6BFCCF5009EAA16B9C6F32146EC72892C09566ABD87EA4698C44092F8F8AC722E3A555E648D0BBF4390140C1B4A45AE08E6C75E2FF9754C0EB20365DB0F963F66DE2831292FE3A5AEAB13AB749E8404A91BAE942091F995CF27AA64321CD94E01F5E65301571889CA9D2D78C6E215674B22009C851F00ED722C5FC83D67019AB3122D0758A5280E126C70078BEDB36998B973259872187E7E418C2807D98FE03A99C419024350E1AD1503BFDA9828793AE46483D00221F48884DBAD531750DBD27B76D0116021BC0242FFC0C5CD52C55C06D33BE75AE8804D674C41D592BBCE958286E67141A87179379B990F909D7AF9B70B2DCB18DF401F383B2CB79E8C1C06BF9FF59B144AE9E7769E43C975214107127FE28D00F03ADC9F451EC9C91B04FD6FE4ABFE8087B268B7CCCB110E1E89B72E80D9C48FBAF698511CC7C6C85C9698F5644EE6EE1312671A905AA9CF7CC0EA977D077B1D6F1BD737A05DDFA441279B9A27FF461DCA62155F1601ADDA80698C30CDDE9B46B3805A7D3678A8FFD24DE0A5317C9EC660AD1EA005DE190924CD2665C1F64429BDB1D68321B60131B55497F42A69388DEBCDC475E48A6E999C01A11A5BE75CDC4E6B6224A5C19645EAC7DCCE32F04AF0B2423EE6FFB8F989F2C4036F20BE16FFE85D3FCF382CCA63A7DCD24FDC380C68D64387456EDADE5A4CE3F73602FB1CAD78CC6C5A051D89706FF34F10F3AB746369ADA43320FA7D9E2D1C0869F182227194FCCA2D8D0761C0BB0E33CB693A46EC0FD7EB673A71DC9BF947DE5536763C3076990EB44F563E9B722FBB7875A41989568C3F42246F717FC74F693DE3E0D9EF35BEA17100663FC0DB2EDAE44692F51A7AF5FAC851353C680CB62114A5E0DAAB3743F5E1B4CAA6CF4E205792166A9D525080BF5BDAB5FA86F8ACF0E089FD28537B9C279E1E8CA774750BC94CF2A4AA9E9420CF36206DAA0351F3CB95DEF7192239CA1103367E4B63088BE0A392F7147795C5BA6DADED86B61595ED750C5571B947E7C0DAED6BBE7BA9037D5291464EAC317BC3C32591EF0DB1F46272171479B19354BB55771635354843684DC1FD3C3C3084552B20DBB2D120C8AC5CB0B961A66650BFB7DE6F12C06781AA8B39976BC3DF0D1B08F9FB6C988752F09A41AD945F0BB7CEA2C6A9AD43CC296477B070AEDCB72D5439FC404984D18A1AAD5BACECBD9D8ED4ACC42F94908FC54D93F05C75F910C0C2280BB3B2CB479C9A10FF651A08536018EA68195366C95B46C5451009D3BF570D6EF9309BE337F796DEF0D6C34DCF539CF44B588A1A68704862C50CF9B8BEF5239E12B53CD4AB4A1278A26B1618C448BADF60CDC7EDA9260059E22A32A1809B53FCD3E18B2521FB9E615DBD8EC07ADD3A80137B38C986CE90667F8075FBA84DB0B3DE39E1A77C7BC27AAC278E2A9CDDFE213FE90A3C7D3D8804A1E15C9E2CAA20DDB1B63D28E706A2D1049A044EDA29333D8F31B71F9AFBD8CBC32B4C36DD9C2B3C364F2B35EB7E4C06DC564A6EFF2805925D356A581DB8114C38BEECD6E0FDEFA952CCD2D1AFB03243E276957B5B3A93EFD844CB207257097D59D921F049E22FD0D0B09CD66BAF5A19FB0333FA02549CDDB4C93ACAAC219A43C7059F8C9C12D86CDE63D2A86DCE462DCE84E9954E4E843479104985307B1E37929750AB588404C5B36C5DD539F1CB08E836612104A127D46CE9C5AABA2A2D5036198FDE52A6FE3EFB07E3612FA6CC49B2666A09CF2B21E2DE207FF2E77F281E080C655DA3D12AB346005ACE1F101DADFC0CDE138AD7B7D425A7AA86C9C2543C17A8A0A2B68452B9EA46AC6B22A62F7B62FA6804A1AFB5049DE26179AC3378A33D7BACDE41E8AAF30C21BADFF628570C15CC2FBAFD24AC7FCA77C844F6E14F6D24A4D79EA408F5748A6E738265A2EBBA39E96C4CC464350F7BB9CAA2B75BB065035EDC94D4BBB924600ADA2053C878CC2A0544A2A0A4CC3D2595DFD3B6B73A9C3DD88572B7897A00E11178DCE931891F5369BE88BB2D58ECBFDE43CD471189228A4181251F9EDB4B02D2A366CB53D1AC320CD034D52E0AABCDD66959B672DEBD656201DFEB103245425A02EA6F3667FA134A59C06E3E3A3F0B091790652B87E46B2283120AA9F994B9BA4B21E83DC9039034DF22C87BA084BBC8B4F8E515AEEDCE50F3369C9201AE7CC9ACEA812C90FFE6B52ED086C582FE18088691D200E8F7B230F8656B9D18626087D1C907DCF48C1F41107968501CA7425101AAA3D79D5B7069217B85C67F54C1AB97869C3665520C74326BADF2DC513CD3A1F8DA4E68509443D885DE7CBD21958BD12A60582EB71B0BC4F983A3FAD10FF6B9C9EC9568D45CC93B785E4692D68017E7FB0CEA4AE4D182895C0664CA70125D3934BA3480F9DF6705C1747B38E5EC82B65F6F960583CAA2ABB3AD40D8D354EF76FC7C48AB53EA24686511E348C158F9709919A6BF2C5CAD38EECB6F38E8639AAC7F34025CD14F35D52C7B10108F9F9BF88B7446BD5416FEE0A21C5FC88073B66DA1264AEC619E1584028C707847BE4C8DA6722DC41376D738BC1CB1734680B24484715C5D51418D9403A4627FAE7766971F50ABE8F4AF13B719BF412050DB13357DC0CB6629B06B31921D01E6194851B928D12B130F5FE1F38FE32211EBB44A6B4F5936DC8D8D8F44BEE3586AD1E9E10CAAAD96F350E876A92FFEFC633CD3C6F3CA128F8DF4CBBBE80BB3ACC5993A0BEDFD13B6459CEC4074050B6AE8A2BE2F062B9BB2FD7C7F91A80DA09220D69E4568B8F5A224777D2EF7C0815C5768195F9771D9F0213FE265DC1F70FA9AEDA030C46F03B2EF504C33257DB83D664BA56FFE16CF2D5120885488F99493E12390C2B4127AF45E4F73C385AB7F693E6DF53CF2E803D4FE2B3C66A98764FB6A788A50CFE3E351D6FDFEC318B034789A7B20219E5BD16631D99E8F05030BCA7A9CA0748B615F11449AABD13BE9FCCA0D38FD6B3B48D1CFF5E730A5C0D46CE41F31A9862323780EF43C1B92C81F143BA50C895B6C30C7CEB52FE23BE499AC4DFC47F24C52222C4908D62B7513165BCEBC5E6A8D9FDEC1B87ACAACBA2B480159D7FC17FF10BFE70F23DDFA5C1EA52E672F3F071AB880367D35A0C0AA08A22170BE97E06C11651985F0D236DE2486AA73F9B6095FA623F899B723FBFAE3C58CD183B1B246F4BF7293F7BA7A9879D5A4201438FFEB878381E8DF11472FEC2AF207DF8FB273DA44436CF6ADD47ACB42627E4B7607140875919E250CA9DFA49757B5BEB6729DDA678EF0585F69E08800A8D948774D917EC80F6C55780F401AB8C436EC134083582A80C856F3F5F6C53D581379C6F4A4DD5090F6D5366908A902D05C183EB123CB76DEAD1264DC26CBBFB658FEFB3B4FDE0D90E59559553C4E490D54EFC132F93F551FD90DB931DFD193C0F0A14A0815D782CB3D5C387F8CEA1DEE5FB72561524111B7A4BCB0C86B4218CB872728DB60A43463FF54A83C877B3356FEA35580590BB14E0A22CB08A5FA4BFF559E434ADF7C3F26E8B406DEE3E7D45037E4845E5BBFD5AD63CBE676FFD85E36A374CEBBB845515939C88299F41951DFAD4D4CB0C2604A8543448BD0F7FE973767A66847B6327CDF51F2BDEA633D6F0F7A52B36C8373BA3D6D3DA5C20785536665B3F31C60F20C168D151058DB7A06530CDE14382342928A18DD175D7AEB15900E852FB58B7B816DC4600C5480A9F9F924994D9203FBBB8E4146668B5535670B00AE93E9C055E2E5F7DA76ACC1C2C4CB066180A3F81D309758F4AF322886EE10085504CBCC129E2B6F43FD6581E36D337EF0BDE8E584D6AEA558E43895E5EE3123F78AAC60949D0E43E389172A3AB46D90F9E0ABFEA0B0757534649C37FE6FA3515140DE842EB60F4B2C6E14DAB59F799FE48C4DE2C2F471EF904747A92615FEEE0B038485440E03B2967C08BC4DA7FE881EA3C29EC2DB8F6585EC72439F2B60C37FE634E6394E779559B043FE54814DF9C00F3A20061D562D12DC0191C7CD105861EE49D77973C4845BA5DF2F34F9D4E8D2E9691DFD0ECEDD7C34B5DD357047ED553AE5DF1F5F18A239452293A5A6E5AE0E313C9F0007927DA267D0F33DB1F621193A1F762216DA442A5D0595C931013F1681148690DFA782BED8A57F7D976FD7BE2B568586D306F437945DBE0DDF18F1D1BE7438360006E50A94EA032B33DA1378075575E5639BB4F73E9CBA3BE2463293E6152C1FABFDFBCAA92A3E4405B1FEC8FD92409F37DE9C26C5D9CE2C1C89473E2E08E860397D024CAFEFC84AB52D634EB1FF4BF1C24860DD14B2FA229C12D71710BC8689237ECCC414D7AEEE29912D0838BE9D04F75410CFF701677D7963A8D7D1107B30114B2C87672296A3D05261EA46A06ED67E2688166C484A4BF7801A0CC16BA57109BBA2C1BB93E3F2DC964CCD7F12DD3C10814A33E88A16A249D1964F646E41B1AD051D432CD0F1E98B1B4BDC7B013D8E7FDB31F995F493851FC5CFD826C631D3BED6AC6382AE3FCB7EB935A25957E746BE719D420A27996F80EC6DC0B3EF3D85F83C276800BE316857B298D85BB1AA5EB56D43B1ACE432D455A1E4DFC0DA000265E5C097BF93364038DC5876EF985423AF4FA5AF606A6F65C9BF5B0D13C33EB2B03583488DE2B98553EB4099EC76D2DC1CE5F4720A14DAB9E8BBA0AB08413E886C9D62CC9AC054AA405D89F8124A77BDFC62B91FCEA9F29989046DF59F3A9D8A230E72135254D9EB39580EA947B6190EBBF2AEBEE4D46522CEF1124D9EF0A2E2FDB69D60A9D7CC708895E50E2F966585C945551F6ABEE52606C6493BC076DF7270DF0ADFC843FBDC79423ABD9070D61D3EC5F5DA0810A8F4963F78EB55D3584C3F9C91B261B5F97CFABBB823460B6291E63ABACA8128F354C26D732D1CD187517FAE16C87095F188CFAF92E46F3F2283CBB67BAB6BA407FF19DA0376E43010BB093B5E0702BA6E0301D62427EEC5CC9F240735EC3D4A66397709D1CEA86DB96A8D7EC32892C6CADC469C84D17FECA11B869AE0D8CFE74EA9CDF8444875CC0B6A4AE77B809669BD2B3CA5E1CE719164671BEC45BA1D93BA20713F3F0C112D1E0E2CFE0D11F10863A2CAD7984B597A5A4AF0D8CABC5A6AE93811CE5226787CDA60B792D2EDB68DB1E03EECF0D1887DC317E18AF9E25BA65631772A34A9F0758BBF07790FD1FFCE1B324605D8907822509AE76B0B04E930843E3EDC8F11C4C3FF4BC45B98C1F003026A41F6E14BDA46235DA154FFC0542C7430396EBC02C0E482FF0EA1859DF00A12169CA8112E576466B1F2BDFDFA6AF0BF3B298E952628E6951E0470CA51163A7221AC816FF0925E66C6D4F54C532DDEB955B8D97F4E22E9C53B5C0A5DB19F406043251BE67CFA80C2F701DD3D981CB06CA5A707427E01CBFC7824BC53488E84613591855CD10DFA5F6A50185ADF780E0D17E6D5EB329FCB6B83AE79FD94D829979C348255DDB924EB0BDB8EB234E9505B0FDC8B3848DDB4F2DB2FDC18BBE412687261A0EA70575D363DDF8B38A071F409C7A03D7BE52C9ADFB85E7631674E1494A126DD545BBDEEA5B85A2FE979447F67F99650820691406F4D27351048AC1E29236AAC86EFC8FCC86109582D5E9A29B7B8EB8B283EC1ACA5497A7C38115D915372B9BE44EABAC8084D95714313DCCF41D344F4E582D1447CE9EC2CAB264B54B0D47347935A300BA9BFBD579A86DCE2E3E670EC8DC8D9B556990FBDB0C5B4BD08BA6E4A2D0E93CE257E2FC006F059F3257C9E3581177AA3CAA8F0F7C739A2CD02BB14461F7F41AE834299E2BC2F7DD423F62C7574430F7A7A3BF87A21B3D47E6D3C4723E5283CB139B2CD7B471F9EA381678280A36131F59506C31379DFB8AD909FDAC5FC57EC29727A4E4112064A0DB6ED7E685C756632F3C4E4EDF8719AB76C26D9498CABBAE1980C33162BA3F5ABFCD1AAF8B7FB0E86918120BB1C25E2A0BA041ACA91DB7680B5D7FFEEFC447C908A33FC4A0BD1EE52124E0140B42F3E8C15966D8EC6916D9DE748FD4D4ABE897C16C088072FF18D82A476DD71E6A28BB925AB12DC11F225909BA55DE61FC297E5E27167E7134391AA1E6856E4F06BF7F8A8D7C105A84F8130A7D33AD92BF4B7CF2EC049EED6486C3145B1CF32C92717DE777158E6DC80CF1E542304E8959CC735A1C8CB1EDC376017024E0B6FBE83385DEB06B5345A3D499DDD3EDCD47E218D70552865744C1CB4B2D2AC0CA96F221A3053CE3C4F4F30BF0066DD688A7EA29EA32DFF0D4D2F32C92B4803417C3AA6B2A07BF47A1796D54859B776875C02F077D99F8321633215B09FD40713E3A7CE33BBAF742A4BD5E44179C5F53B56AF06CBFFA1BC145E85E4D327DC31E13CDEE513583BE9BBDDAA2AA74E776703ED8F467FD6CC66931DAE877CCBA16CD90F869ABB429C5B15C975E7BC354C22E24C2CF283BB0C5BB2DF37DD5623F4899B9CE6432CA3A826CAB6E72482C71EE763DC2229B41F1AB7DF2D4E094765F8B576E5127EB164CF0B6FE0A5C47FE64221ACD5CE1151620C3F4C8F1DDE4105FB9AA64498EF70ECD75B7F123B176DBCFD435F26CA42CABCDDDC20F03B5CCB70A768B4CB5F88753E259F451C0ADE41D81CD695034E0718FAFFE12A3AD14339816845DF0CAF01C1889716FA5D62E21C6A673E441DAB58CF52DAD65917325B2200EF6665E630BA320FE8A8D66761830DA8B79BACD7717ED65DE008B4F49C36442E30C168627548C43C9302D42122C2E2875FDCB426C7D43750E6F126D0505EF5F3049534D9641B0D2E6B4BF77CDE211F6E31398DF26A14CE254717D403CD3C61462A2251BD397801E07F99F9687264B21FA5F97CEC2CD8BA29AEB765E59541C57964E7BF3F2BCCEA91B8A4B529837214010024EB991F8DB2005CF9CBD36C61A3E600BC5D3812E37A05BA634586C6D48F75889504066B41BD34042040280529D2121170A2211314D7C3CEBAC5A030BBE391B7158F833FC9DC2AB74DFFE5EB28D04BD2F35600ADDDB21F4D7F54FE81E481997D7D42025FB8F03D0085FD4AFBFE819E8AA2C34E4B3FC1386C331A5D9DF1C58F2BBB69C4279092663BCA8085281D2540FFFDEFB13D578A2DED698A41383FB1839CFD4D990FD0631340B08C845C7E912D946CF3C0840385E0C8075B9C24E713FFFC1B5DF99B33BD8A4F3FA4AD1CB51B41199909BB59837D3AF9B51A2A878B77A7B0401BEEC7D90EF803C7093D01A617830A0A29F661B90378562F450AF15F93F9EFCBF6ECFBD098F4A5EA224C62AA9EC9FCDD300C61B1130721E7D259DA540D8297B1C6B6E566D9E139B60AE72901BD4502567BE36F2B97CC2769BC1A1B36CC17CDCAB7A0DD2540F3F81171296D799DD91389527D6D99AA032E91B81CDBF9F664907F085640EB59781B7BB2289217BE3335495F3929053E1A3027395B73B25EFFDF929F63829217D003AA525F1EB65DC25F6B74E3977302941574B4188518FB02EB007125A03CA006C2CEA5FF89A9AA68D32A0D18A8194CDF0A351516F62BB311EC0939C4424B7522B5D8CBCC00C0B9B9ADBA504808B24CFCCCD548A4B1561FA23137974F9DC7B1F198341066E89D79CD9B6B5ED6B8DF98B263269766CC284E559953227FDB9C7ED5870E0E62BBC88B0F74D1594DE17C1EAABE6452E0C81E821F7A525FFED16E9603180F72FC897985FAF1DA66F1DCE446539A7E07B3959B5E4A91C54FBBA610B7BEF0DEA5796D40F482868B789CB83710E59F28019CF3C652B829D9A0C74E0EED18E2B7B2C59BFA8C9D1DD85EE5885040A008D6E8BFE30210E325E95109C2AC00CF44B5DFB1445F403CB641E34CCAD0DE349D41C2B139505872D6709B123A89E89EBC5AF774E48DF38620BE813C3B73CC01808D9DFEC7DEDE3E361BCB5ADF4BCEDCC562C148682D1807EF3374A4C9F861FCA181C9A1E9C1E53DA8F55129BC5283EB282E5E965DB74E297F9C5024EC2AD6FA9AC46413492E49C50036270266364DCF55D88FEA7AB1C9AF0CD5927D51128EF75E0F26D97946FB939C53751D1085063301E956A11BF2F52C4501253B5C19711FDD72D76CC16B0BDBDC448E2BE79EAA02DE99CBE561EF25F137BA2A9A62F8BD2869CF360457881D3BC3A1ED411C80FA74D21D2A67B8FDE32500AEB9CEDBA69D569200C9A97DE557FA3AA16535E2A51FE3FE3FF9A3D163B2C75D4FCBE8467F2F55279C4AE3FFC4535980F63237B1856D0041F133BB442F8469B89BC5C09E7EF45542564A06E34B0E12DDF54160C0430D296A9A9DA93EDD732D5C817FA81E066A0DF4A64FA2CFF5F38FD859772D09ADD066C197641AF77486470A160A066BBC40CFBF18A12869D566FA8CEF108C5A5F46787D955F6A5B7D5203C70555534D236D152BF38E37DDD8136C6345A66F38FD41B0A6420479AD24A8D2289157568E32F25F8B8BE698DB2B5D98950D1EE9653B31C9D6C5F07FD8C36D3B8ABE1B85D3C6220A5407AC36A1E24DE1680B5BF877BC32292539B7EC875DD9619538B3C440D24CB8D8FC5522A784EDF47F8B95896A5336DF1CD22265F79747B4FDD3A2D18E8FDEF497506B976FD6A0A1D3C3562073E4EC02AF5E8920659E0C4BC89773DEAF13B95813C23DC0E093407CF534595B1B5F64C130C790365AE0C516E6914FDFFE5FCFA9D809D3C8C481B9DC21AEAF8832A106EDB517B48DB32AADA6891D27BBA8BCFE23B898D8E354A34FF89BF7595B002AFF4089B2D3CEBEA0A19A42341D22F1F0EDB5235DC0935075940D7A9AF4681D8CEA17FDBC322C627CB89E30488835EEDC9A9D1D8373BBF30BE9BE34EA95BB8297831CFBFE7F05E66DBA2F6A1514AFD76ACFF022EF0D790230627978B8F273ED17A82B71E50BF468FC8F942AED0AF79BA1C58DC887D972CE352AEB0F093B2C71E5F783BF0DAECC05B93C4421F78BC96B4BA58FB6F7B35AD0ABDDCD3BD956DCA3AD8C8264609FDB719828F9986C5372ED063FC334511DB0B9B1D1EBA02FC40AEF49ADB34B643E0454B934800CAD6428D72A60B7E41797539CC14658039C6B27763803C1FC9B63FAC840C2322BB42B592E37EC8D9307A5E5634B60C798154944A23D84E5419B4579AAA3F8309A6864E2C89CF0BA7173672DDF064EF4F6207CDD5AE23C256F5484AC9F1E938B32993D6375E6A685EE1D04F7020C6533327F8D739F5C4B9997598E6FDC48F2D63C91F66BC853EE0EB03F1767671F99C4A24227517419722DEAD35E43B744DD6F5CCBE29106566FE10A98675248E18F2E7B6C1CCFEA523EBA95C1E4ADF59378DCDE073FBB809FE75891D8470D6FDC09F6D9193A1B6DD319D32DC51A8B88C95F982BCCAE1873A626073DD4A6277D2D636789FA6D75ADB0444825E0A819393AD353FDE9214E150BA9102CA2F892774D6466D925F53A9FF6288EFFEAB7EBC641D8FEBA343BAEEF7298BE1FD0F4E5061EDBB632D32330B139E1334BF6BACFDEF3314B45BB6BB33ED1940A395DB3728287B7CDF856D5DA97528A12C619E92618FFF17642419632A081E4DD73ABB0E4CB60E2B1C4CBA17F6E8B4C55F736814DBF5561C45A21B4AE481083C433C2FBADC64543CFF1E44F1743A6C981589C5656447E547D445387D094C564E4682473F99D82317D3ECA2A511D33F90AF45FF946B923BA2D7C8E02185BAEA6710BD7EF6810DCB58F4013AD6A2317BA0660065F9E0BEE97636AE1F94547E69F6DC257848B0C6FC5E1532CCFA9933EE8F8973529598660EA6C18E714FB68BEC21A46AA2CE23E6E147897B2124FC38CC6442195DDF918C23FA4458816861318FA01FFF6C342A5DD5523A03BD71350BF25847750C6BACB90C8BEA1A02288587B18198CEC65A04223F6227DDB6AC12A7A0FA7A78ECA35924E7A0BF6FEF48C1A0F83A1AFBCF21917CF9CCFDCB62B2B5BCEA8BF3004FE32C24E2BECF6CCCEB8B783021A87633EC9802EB035294E14BDBD429BFBBE1B7B7BA2B1F7477CBA87F52623E0AFF4525CD00797D81D2A91FEC966792E2E54BC31CB1CEAB7497F6201CF45427E3D4133A8FA3F2413E8F02083FD0BC42DF4224F14E732BAE03E075A9DC407860D6D7A1E265B5213429D5379D6545B2353C01F404A4DCA3F33B266BAA0D95A3AF3E5F49CEC58DA3F91446EE26E2DBD21B98B19A694C8BC1BD24CC2E7AEA80C226FE14D8E8EE04253F644155646C668ED942454BD07142502E2E32937DB3673B2D77060058A8FF78AAD3EFBC81A99995BD6E7534D85FC71E31CA246F60678947BA721DD803A928D699BB23AD03D97321DBFA9433686CC6F84325FCB13E1ACC6A0F34CF53DB7F0ECDF051AF3E4EA60F88DFAFBF6CDBF1CB333341BC54C65C64A21ABBE0742BB23EDD23577EF211C72AA52D1EE792CA7972672A0EB44FCA512CC8C119C8C6E5AD4291B9D2DF23A61E1A792093DD82D02398FF51CA45638033835676D1BEC90D08CDDC6DCAF91EC808592024B78EDDEB2BB4A408B4E399E644FA97B944CDFDF2A38A66C1BAFEB236E85FFA5EB8D45E391D324147537E1D5025AF3FC55294EA0743451864749DCCC24DDFC598D8318F266077EE023FA095A46C36C4BBF03F68F3BAEE1CB973A70387E532F92E59EFF435D674CBDAD150C22259AF1B9262F7E530B44E41F3667842DD40C8CA29164FD5FE867D0ED6720D5A4D5D21E3F56FCB70EE93EC13402EEC6C371EFB72906A1923E229D5D9CEC29EBB6C4D88EA930C8363CC84BEFAB677B965969BCD649FA6034A9C9F966595EA1A370D806647FE3C88B52C128947F1A35C88EE24571EE262A1C18BFC27E3F07F3AD76B88A0DD78419492E7D62FEF863A27C42C0B5BD8139CE8922A84B554F62D7B427FB9EEDF1FD090B14874AD16F736D67F9908FBE6D9082CC931D8C8BDDFEF56B55B4992A61DF6252E897AA16FD4BA22C80E96074BC858CB493A2CB6A89350B79E0E0A2E5F2230051B88291391CEB0D348FAAA7E8701C7B585C7945E419CF743CD5BC000E27F6231EF604779D9B4B7631F25666046D3699579612E52F76B6F303E63951CF49900DC6427E68AA88C107F29F65FFABFC26591157466CB101A676B67E3CB0624602A1EEADD11693D11A0BBFA1C7D245ED5AB394D91307F649CF06D4CF25CAB79CB4E1E1B0ECC6949370E007028D7C5F850A5D6930D1185CB8AE564ABFBE9E0580ED784883E6E9CAC6D06412EFB2DFF8D527D9FF25D7B5F3026D9E39C2E4215EA3642A839514AC6E894E17373320C81EFB31A89B98E1D8C9777526D37913E5FEA22EFBB89068D3E24D844E1D7ED30AFC2EFB96A48EBDDA084F0065A8C12FD53D356B0DD9A1489A6F4048A62893BDD9B98C9D5C8EDFDDC7DAF39238C2FF5C3051745004E4E4F28609CC2DC66080164D37D3008A111478F0F76879330B222089E2D4A1093FF59DF2B96AFD4DE52409648238D01ECE6CF8C073CD7F904475A31BB780A1E3A63483551E30574300C58644F5877022C14EDC4F2BAAB7FB3A9DBE910CB58FCF3B1887B77F4BCF5C5FBA932044349FF1DA0AE0F3AE8E9AC74B2D8C13A1F8D9BE11F1AA9EA5BFC3483BE889F84F7D2ABFA43EE2E178E8FD73FB5122504CA05F23513683D076FBEE104A1DF2ADA09B0B1904E4271D23949875D304397154AE2932507AE3ADC87BA5D88123EBBFCF4762B48053E268C68BC1EB06CAA95000BCFCACC356FAB3F8BEABAE418E0CAAA6AD046CB264FD4600ED472AE0AE315FAC1EE4DECD5510E52EA84BA471CA70F8D7E43A9CC75E633B2D32E3D9F725BA172EAB1CAF657214608C07888553965F139D39C0502AE58E9FE36ECD70FC9097D9EDF50C6E2041BC7F2CF4A646985383E920938D8B2D329E338327C69DBD693D284E2CE7391457BA191050D3F5906A6EE70E6BB76AAE7251203A4EEBC7AB4BCD43E2DC11F22175134959EE7F00EFBC3FB209D3C2EB9C6E0B0F165485B60826D239C0BCB1CE5C7FB9C80A480B5A5E7522A4CACFC08E837BBCD3C9CA3010458CA6EF5711FB186B4EDBE8F1C371AF2CDC2EF4A6D1F0721413B9A4D7A36878550907040D4EA34407A02413DEA8D42767036D88F38281E381289E92B4DED8E63286F37324C1DB1D849BE1E2FD18FBD59F683C36DD2FD79E40A1DBE469E873157AF28811A19246A3AE6801CE9F579E08CBDBEA01AFA360B3A03DD5E0FB7327465408678FAAEA3C04A2C9D624FAB000483480CF2115025822594E95BD6133D364A78E4E806D92F2B3735BD992CE75E8272BF5E3FE992D19C8F69C78A5BC2821738E07DCF52A38CF174888DF2B1503DC971CB16E2CDEB77B3F87847003E88A78C8218317D5242A0C8C459124DD0F4ABD83F6522B139213153A4F0DF97F6001129FE7C5E07F4A68D3C0450A985F36FE936AFD24EFF8EF7EBF1AE85D0C8740F37BE0C74570236B62C9DE81D229A39BB6A1F7CE26E581C756D57D615F29765D82776A34813E9C43C0E567068489D2A374AE7B8C51D827EF15CBF4526F423C1E70C509831D3C824478FE5577D36D272BE2EB2E40D17ADD4EF8103D09FFDC779A9211ED1B41854349E5E54CF7FEA880B4244C1D1C2D8F1163B89E4A70C83783F130083D6F4654EE386F9D584BB4D972415D4EAE170EA30CB198EF3C44F935B8F373B3D00B5585BA570598646C91B3484B8A86CB1C4C764A5BE6FE03A48D49885CAC7DA5126C11F598BCE3A05B18B202C50A02E207588732D9B25F4972807769D22B7D92E0685CE08CAD2192EC6AD2D5DD772AC78B2DCED3179CC7723BA478D2C8B21B82189058CD70D3CEB55CF866334A4BCB48C1F7F5F08D86A040F2C3A5C9A79B7313543E89E2BA336BDD02E6FD37B7688ADDB8656BE037C0385E0E8FBDB548D66033412EF8B2ACDC586628C2B3CA6995B7E782ED1476A14F7276D966A312A7EE398F43ED195512E28040A5F08B727BF17C0855416906EE199105C7E3BC3BE8352A445A3F877AD07F838474F7FBEEA929C5A97B1E5969277DCBE583835408EDE89240D26F89947B0A2080DD85E656DB5B96E19F3FFE9C3B8D3A12E3D1057B8D0824677E3993AFB3ECE74C7450B32ECBD615EE8AD1A842499DB9419DD0440CFFFB83DF92329D44F56F5A85A0D9FCEC62CC8646CD8E2C0F45828DD46F9E4B361691A75406FDBEA7DFD466F7049672AD3192980F9EAC61D1C6B50149A8078194C719B2086CB6ED1CAD34E740BB8DD9D5067E1524A24CE52753E3050382C7C13518D2B00AB2B127FABD2C7B2ACA233FB6D51F96E39E0BB22E8BCD6DF967B9BFDE391A83E682E21D64E7796151C7702B93DADE17BCDBFBD371D926B5F1BE6136DC29B3E6FEE747D6541CCFB555FAA528E7A63BBABD83BA1BAA81828C6C0ED926AC713519C68653088B0F074030FE23736CF9FEFCBABAA55BAD7DDB6CEE188BDD462DD7D04E2CEB81C28FAACFCD98BEF77C70AAAFC399BF49A40405CFC8E8593169ED50CA6A8265229F011F93265D0442D9888488FF683AB72FC967DA5E55179F73CDDDEB442A78F251369F1DDBCF5047E24EAB476EB3C268333B930E0252A9E0B0B72598FA6CB84930B0404D8BB1B223477FEC7D0FC0C19993BCEF6033271B54F15554457046E87302B55CD7A88BD1ABD4EEDCED2E803A82E3E2218336597BAFC8A7A4C8EE822F07FF8562081B78756230090CE6E9D2FEDB51B0ED97235FE95F86A79E212A2E997A54F450A4F3769DD2187882623C827E72116E7EDCF0646E41BDA6430B6454CC30AF2695EB5675E3F7581A6EAEE7BDD40336D2DF0DB458F29AB987308559B19106A5EE902DAD7A824DF5399D57BFFF7D91F10FE4BF3B2E7B14CC2F19452506839F59DD74E818B0ADDCDA7D5D65D8E35792B62D4B3E0AA2BCE52A1FAAD1DEC591E0C933DC53EFB6C1B801F1BBF0EAEF7249EB9A0EAE12E6DDC97087DE7E3655BB4CC37CC9DC157C753527333AF0F71ECB8863C138547F67671BED6742058F23E896DB1F188FC00EE2512C7436CBE9A27845A994B77F4BF4044EC61BC2F88A3E1C4E8FE94E073DEC73C0A6A00A2E005C15A8006E7CA548076E0693B76A073948B380D9BECB6DD4D966EB48EFA65A9A53FC420318C91948852C6D16DD1DBBB337B37AB7ED37620C10FD13F2C09D6966BA34D91E0A6365701C311571D1404274040120A69424DBC7B97CCA7657380B4C703D8A374366B2B740E256D59B7342B1F2D0FBC9FFBA66820FF4AAD8E286E3D53A915D356EA33C1AFD669920FAF1922FFC18535B97074D241CC0A72E9C408A4201AA5291E7E6910DA642F1C2EFE75FDBE3FD00EBE3579AFE19129F267A67CFD60C01598574D786C28E79840BDE6988CB934D96FAB4B0E07E40210ECC6F22FA3BF7F1F8E7D5369DE7F047F547FF208A6E99684C449EEC0792127A6DE3992A1D8C47618E3CD235492EFF3D6DCA1860B6B17D222AFDD4DCFC5895C2ECF95158592E25E4E52A1D6B4CBB47EB4DEE3776045B677B04BF31E4F413A76B9FC208DC074BD6665639C1C950148F51AD0FD7B34C6A0BAF577B425ABB6230ABF908F2F15A65A8AF016B79DFE4F41E721C2C6F1B09BED264D991FE5605599EE41BBEAC858BE243D5D84E5A9BC3D75B07F046250D47EA67DA8C54F33073C3490C36951C03CB82AADB71DE1EF5B8AC1A041297BD8AD8E11A4246DA79003ED93E80046BFB40EEBE1EC7BC1FBEC46AE788467376853148CBA53439A5FA8C01841CE069FA722F405B5538D65BAF990D27E4A726018AFB28FA5CB1901489680ECC54EC71F5469B52971598F0B20B8CA8809ABEFD7B695361BA5FFD14F44241003D07751EAD99087FDFA0EECB511C3948429D165D3808472C9D309D9AD664A328BC55CB5FE215DA663EF7534E237E2AA0976E6ACBAF26A9853D15F00D5BB0FCF545A8FCC6D31B5B5AC5E93E9654290DA73C76171E69660103619F3BBC6F36E5C3172062B470E4DE39BB07393DA9774BD706408946B520EC9C598CB4BD031941AFC1832B63DBDFD9EA90B02800DCB4267634628AC6DFC15C12E4C4B2279DFE67D9C1CAED0D279D0E036D2F54FFB17A3B5AD7BE292C8B8FD6F2E97125B3082B789830B4D6BB9072900D3AAF372597909F0313148A19F330E8B2B9A38CF4EBC849262E7EDE4E8396F4FCBAC59F176D7F682A105CC11FC932BFE864CD807494A7C388B2D706F4E1D07991F9D7EFDDF76C7483F5A2016BA237C56845D1142440F5C064F22CF38BB054B1CCF947DBE1DE4A4214AAA5E8A1B90793DF8DBC96C5F9F2AC7E69207092D771A2968452AE638E8A37A33B4C007FE286509F1FE96376456359A594BFC +ss = B243FE6D7C9B3829252D5AEC090A4709F5E396FDEFE4EF1AA4AE6C9498CBCE15 diff --git a/src/kem/frodokem/FrodoKEM-1344-SHAKE.kat b/src/kem/frodokem/FrodoKEM-1344-SHAKE.kat new file mode 100644 index 000000000..f3387db0c --- /dev/null +++ b/src/kem/frodokem/FrodoKEM-1344-SHAKE.kat @@ -0,0 +1,6 @@ +count = 0 +seed = 061550234D158C5EC95595FE04EF7A25767F2E24CC2BC479D09D86DC9ABCFDE7056A8C266F9EF97ED08541DBD2E1FFA1 +pk = FC1FFB174603ECD83AF919C395EAD2D2E4625BE3A4328C928AB22BD32915C25B5D6DFB805C8089B8078A6833299283AC83D9033D6D000AA6720C8CB88B5D7E84A45FC8E579FD0003E6B981D1A243F7A0E66B7040501D9DDA56F7FBD4795B373B0A3AEEC94F4C4D1BCE97344DCCD9615CD9FE0D94474F1C856432956A20D8A04F07A00C0CEBE21D38503B1E4178C4AD6A89E65A41E051CF37EBCA66FA926BCCA9FBA0322370F7AAC6A7EC35CAEBEAE83A0F40CBF0C6A3216C28385BF3FE42E82621E7EE7A3DD34A61598E60EB5FB74F9DC8F245C02FC2AA8B6EB0F5D397BA51EA63C392B05DCEC3ECC658F3BCA888228C8882814FFD86CD109E1AD575A7CCD8BFE17BE6CCF6A25C3558B3D851C37A4CC5D69ECFBE2D982415888C2514F2EA2389A830C0C408B3BBD265DFF7B7B7FCFD39061C55CF75731ECC8D9740BE64BC11B1FE724070AEFA3342739E32F00EE7865C7CF45A9D2FE748D0D66E736A2E85EF5387A75DFE61686D9E82218EC4C0ED2DE504843827930752F69E537F83339BBEDA857853DEFC92E4C981A51CAB3EB44FBF28B3ED5EDCDF7AA94A406C97CBEBAE9FAC73D91E55002360EF0C0D1A960E874E77F0BFF9BA736552F9A3706BC17560A26C9F2956FC8AB3CA71804303382EF5068AC1AB71A34AF83C97814345D5A7DFE7A743C95BF851275DC346492E3303FBAA46EF5FCDBC20EC9FB84FD34BF56F7C1DE4A4FBC8751F030A4FA4824712E4DF5F27E7A3EB359A227729D59CDFC65943B3ED29E4DB4C1EDFCB780B31545ED05A234211194E6E3928C4B2F778DAA78818B2C7482440A2F66AD15608F8825FB1BBED83BC7D5CB204098184866DBDAEAE08A17E73B47B7CC1C9FCA7136DBAE9A3E5C17278095FB116064AB36A0DB4ACE23DBD7BD542E071CE2891BC0C6032B56A0AB5747F8917D5762FA23087A154AA12542A02CE9F5E956B80248A7F02965CCEB2330F861244F022B2CD9D9FF7CC5447C5D801E4E8C11BBBECDEBCD2BC7353638EDC9E446927CE445FD6AE6C13DA5BE9D45D94607D423FB909BF7B50F944D07A49DC921931633902CF71EDA1DF246CA482DD30209FA6AD4D6564DD54487EB51FE071C6666A94F9A3E46DD393FB3B48590B93E32F1B9ADCB80848ACCA8D09384492FECA66FE42D74B80CF45EF7DA32AE65A2E37B63C537CB8D82A93D1FCA7F652B465FA84CF59C8F8BF2BE45A3F63A44B39902C0105B4687B111DA7C4F25965DE39EB2F35273AB8946184D257617A11D74861FB93F8D57FCC114716D5E511D3C923FD0305D4BFAAA74169B5C090698FB2850935A31AF5DDE21BED386CD2356ACDADDDA4AD816A1F8D47601C262CED3EB6EB9713D931D8A46994BF5B00B42914398CE4D64C336181DE48435D63BF73079C0161C592346B0762AA6B5273190BE9D93D7E25DBF3B4BE7E5BCD5276D7DB3857CFB20858DD0E82FD8B7366B6A6AE91134F2A27A0BBF952DE1DA0E4718CCB2E6576B6BA0A803F3EDED3B578838E8C892C75C5021D486364329D0DE8A6B8D409BC0A40C3009CB053E99DEC213F3C14F4F944C7D50F5F79AB66D8568F7A7E2D4E29D53534C955EDEB91072C6B101FC4066CAC1DAEB6ADF4FC388AA5747AB58AA503984081B157F666DC1A339549135B2ACD696E48DA9D3595F5A7A91571F6938F50CDAA7546081B28B755B165B906DC0E1EE8E723541E3614B5AB40C4FA682C61CEBA70C32EA817C0C5AA5865C65EA456E8FD4ADF4C6256C4508DDA717743499427EF2DDD8354B2CA6D469B2474177B1402ACAAABB9AC934A2B01A2CA97F38677A36795D9F337EF6735147FC275BE8F2FB353E3D621D1DF78CB9A6B9AA933C7BC37293E48F8A5554353796B74E7E404D8112B8A6B109C77093F3B35D3C92DD9B8EA3038B925D6A1E1E364A6CB3E35FC318CDC68A30E408E730FC66685212BAA3C6E285E5A53F39EF917B9392ED3D1E6B2986400BC130644CBD85B93BA058F91054AF837D877BB0D192110B68EB2D6C74C11E8C1734D24DF026242661C5DB83F17421FA865AAACC354B7019DE9752D5B452B690278AE1DF1973E41A7CCA0C69CA49D7062B2413AEFB0F2558B72C59EF8AA15E27CCF877BC5BD32B80744CE0C2EC8F41FAC22676D158A67FD34FBEC0CAB0314F2497105B0F4D3C9AFA89E3CA6883C44EEC15DF9A91077ACF25013F653C00BF8D33884459A760383E4513B7ACB6D90E2B1D12F7EEAB6805B5E676E42A07F4406E7C8DA536505DB9882BCE111EF0B8FF6BD850D9003DB0730903E97D6E6AB5FC53BDA959C29737B243E77B41D63D72A4C5CA773025DCD8E1FCCCFF3232C176EA1EA10363407F6DB57BE1951C893E2205D1F576AD701294DA90EB67DE8789A06C833D6EF31AC266DFB8AF0E1A360D801165873732BFCE01BD9DD24F6C033DE9580C5A0B0BA4626BDABF11E1C07026C7443514935B36603FD8ED19A8C02B416693EB61501DE528DFC4D724A7DF4A913407C85637E5B4B39FB2742FD7D9E9C1499D6AF37BBCAA09C1626FA5A5106A17F984034C1FCE06C6CEA87379A9E92981AA32C90C32285925C4099D3FBE4F00A723A4B1331F4332218A38A6E98C151DBF7851949A593023AF55A2822CB87B32C6AB23CA90844CD3143E9E74AE0D88F8402354A8A0B7D62D08BE70470454E3FF6C9BEFE9F79B034029EC5CD9409E0B867F647364A64EF9602A657632A10BCEA7C1152B15B9F9338D0AC1DC8C8FEA4AFE3E09E18A8D5DDFADFF194B105701FE24FFC77F8E1712B253D5EA24CF55D9FE61CFFBD47C5A1F6CEAD70552DA10BB804F3E11BBBE1124F6A62CABFB07D41168D69F78F95AAA1843D9A70449D5550A34C91F4E77F303E260F79E4DF6ECC3C6C9604176B553C60E0DA438D6343464BFCE7D93FF47133D7C5E833AF664E2EACF72E1C11D32B22BF69F0F5888CD1CA65E312BFB0FD3602E50BC4E5FA961E959CE8392CB7811ACF9E9BAD53C7D79808B53DAA22AC8CB491FF063C4DE4F43BF46613243D69F7400EB820F4E6C976E27ADD9827B5B5197DBC20D090884237EBFD32D32EDF6A14315B22BEC6B9F22CD2EFFE9C4B199C97707078ECA20915FF08796BDBA78CA14FEA467D81485C94B3F86A793135386F3D473308C764D1DF8857FA7EDCE712E9E7BA5AF29858BE11314C1C77A0A44B06251E5105C84767B7BE107C14C092E92A9561E07E3E679079084A78CB86E1634527DBD9E69B77A108449EB271AE5EF8880B957D1C57641636F74A26216BAE5A95BA017DA558BD67259103F26377923C6F4174DA869DA9219FE7F4DC6FDA349F43990C42CA724015BCEB186ECE49C5C1E3E22FCA4AF2044C99CC1AF85D3ADFE9033C666971F7D25247189703D71B3D986DBCF97036E02F00D0A1243DCBCE3421BAEA5AD82D49ED684196DD6A861B7F9CE57C114B316199432BC893B0A0E41486D892787FD9D79CFEDA4CCC1FF1D0024076C47405FF83C330B42A01E019D3B7DA995FB690D2141EB875D53926239763EB019A2568F0A383D347267867A81876CFC7D851362EA729A14109D4B6E93F11A5409C8B28D611F4E48D3DE754B3F7ECCD14ED045EE25236B78023841ABAFDC6B67195F2A0663F8B784FD60EE80F7F91B673823FC84B9054BE777E0851373217A158AA5A8142B98265EF52DEB7502D0A4A55CB37DE6D8DF99AF3EA2CA2FCBC732C38C122AA5CE76FFCC2993DE15D408BD0AAD1AFF70975090AC65A1D9D9D98CA467D49046E9BBDF6468DE50650092351C4FE2DBD451B048BBB32EF3A1EFF7161935EC0AC9F7DE2E3EBD0C6834C1FBD6F4CB369E491DB0298BC925922B9EDB2326F08D4DED8B2309112461BE3673F9090C1F905D43A5A85D61FCD87B9B3367B754C4F40378352396655F76013DC4226BCC56BB501050639C94713CF37E4E7E1FE70F777B8BB809750659C09AD1F96CF3FB05D839E49E07161A75C7027E3B6F40FE24BCC5B42E59C77F100BC5923C13DB5F13F5D3DD8B9BE27F59F309481B1BBB17459190ECCEDEE158F935C9AA344D2734E63E6801035B13B763FD211A897FDE74C1B41D92909F4C0721F7F3D573105FC666033FDF29AD0C22B931C63C8519A58353F43BE1050EE0DAC6009D37DB37E30DFE0C740A9D7DB044561E85907A92E772F76562560ADECBD4ACDA9E3874715A5C511003EA4E0D5A40714596410234B7E693F36DB452F25EDBAC5CD74FB3DDBA465F19F8F035C806289671706C85B6657BA82F91C48BFD6BE0E8BD1E46E64DDCF67B027114CFB722EB3D289346D6AFECDA0D3E4854EBA9A9F784528D9BACBC3A8371478BA2E7EA084728D2D4294BD71ECDFB753FEBF5E8FEAF77723574BCE94B8F99E2FB3056AA2729927CCA27C0DA7570ED53065D195CC3FCF6C2501739216F89C2178EA5C0B8524F7F5DBB00A0C6B6D686783680C17CEAA3AF67E7D8607ADA99BE4565AF2375FCFB17DA0C28106F6FA1B1DBD70951DA0A3DC7A9E71A6B76258F815FB069A5F48FAE1DA689BCBAD2726B57817BF0DE7AE6366F433607B450F78E545C2CB96F28CBADEA1B4C22EA3BA0420ACCFC87CD2EC73A44AD5D27B1EC93C32D68E2D8035A3C315A7C5E6B44DB7975E0E3D88EB7927E44984F07CC6BB7342DEBEF4D2E32E2B5A8EB7768DA515887C21C86CEB2328A28DB3CB473B119E03174BFC318B4A92FE2B05F0A9F4825465F299A42B4FBB6B5A71ECBAA3FE458F80E289E4C1DE9C56E811252E75E225A54232156F5FD52B494CD9BCAD36FBB003586FDE32C25F08B1E255B8858665B2F2FD364899CDDC3469976A4B8294B2FD5578DCFC15099570D3CD61AF5FB513BF1BE925782CB0E26691C1A2CE1A4A05795652C1A7FCB24ED6A479AC0EEEAD48E4AE8128109D22A671CDAFDBDA8394DA4E277D9CBD48AAD8B8F7263A6C1210DE23D944F621694419BDBC313D93D565150759950025D4974C41DBC199D1D79CAD05F4CBA60A2E4498AEF0BC897A2F97309FCEC93AF3E1AB2B854CE98027A73400A868243BB2697F7EC59E13DC16F03E523EAA6954239064D02DD8B07B0C1DA9CCD40E6725672E2C20507B37682AA80087515EBE9934E2C645F9CE5CCE3116E51C3332E0EE69BFDDA2A3A3D67E4B0BFB94F2E188F159506841A4E21F5FAB16F843A686F4B449845B343B5D44304EFB52749811F4637936D7366AEB0E8AF08CF3FA24EDA551AD469ADBF3D2053A35A35FB1B7AFEAE48822DEE6640B23DBD3AE0059BA70DF13B04E99F76FFB03E3E1B013C17128E526AA5C2BD9A0DDD604C4413C72FA16B70AC170D4F7ED5F5E8FDD65F7F16006DA4D90750E57F0BBDA69E5D3ADF74142206AC9F14B6B2A043A11809F0C94ECD1BF844754DF00A3414AB8CCE583A565FC8B36E7A6EC0BBEEDE7AC1675B8A2C615568F7B8F8A127E0E4AF96EC1B59F6B6011AC755557A348DB64787666B1852DC227A725DCA2A8353E73CC57AFBAA231E72D65C9ECCD343CEE2084084DBEF3D275FD0A514C84362B0181E5FF7EC632625CC5E9379D151876F8A6E7A7B30DFA2D59DFF446D999636F6D153323E15FE7E4FFF9848C778041E5A5746E000596865C9F19367D31A469CA661B88519C96015117EB06E11423F20ABCC15883FD0D64CF2D47638AECF9262CE0BB96FF850D19800B1484166478A5124981FF4D189221EEFD32C4D77B39AC38815559EF04DEA5DFABE1566F920D6E5AFA7CA26681B83323F1A14F3BAF80D3C995230FB568FAC509A6D9D50687E9F6235FAE877FD0757A0FF045F31CB043408F10769FB357B07F273CF6180D8B6B58F51D91B87794F7C57C162FD89D17B7F7A6AE84E5993F2EF0AD04C7E03175FF125289D9DA846B3CFF3E5DB289799686452BE7F668F2B57F0D3BAEA97E14C6F84DBBA528268AE90B3C92F0FB9A5DCD30747AA580B857AA8A52197EE11D59738452D19A22610941C1AC4FD0CEE2244BEE582642B97CDF844A00DC5FC70E6C101E74E3120C1656F279AA4CCBBB1FC0F07B754363E3405A62A009DAE69D7089842298DE5263823D854EDED1D9E8D439FE2F4E1979BBF45EDC944BE53BD4686645AC37F18CBEA9FCCB317BC9F9C9A21DC4A66759E31F72217FDF65D11C6D0AE7B21C050F0961D0812502C86E3A93ECF82A4DA5FB2C681BFDC03B230E88750B3EEF9FE6240D0371436C2D9BB20BABFF09D6101543C561EA6B2A1EF731F0E4AF11B3D50ABAE6190078517FDD26309B8CC26C9AAFCE0D586EAEF0EB4B7AD64F7CCA9A5244459D065CC389728BA029E4151AAD780FB4F924C46535B883D9EDFA5C910BC3C0AED54C44529676E326E58A97C52A5869A3FF1FFB1EA3AF9C772D97DDD00F92082D1E5EB0BDC8FC3786446F34A5B6D34D63BCE545245650B008059A78C169B924EB5B5273C3D69651C70390878A5BF55A463CA183E1BFED5B4211E2195ACC4B13A3D8C1CF34104D237FD4E640FF892718139A6BE7F39C1FA8DB06A1695831C5C7EC0DC2D7AF299AD0DC572C4B89CC2FAF7CF3EC781C3367A98A754240A0C648D6871FFC412157421897E57438AE6C5CF3F9900FF3A592E4017969F480E33EAA6815EBFDCDD00BB4556F2F588BB221BC94C8F1BCA1C26901D1BBF09BFBA336BD2851D0F83BCB4A0CDF25216B0F880CF3070FA4981A1AE57693033C6523F2E9A8FB3588A3F0A0B7789A9B2AB567DF435622B78A744FA703D6F4FE0CAA6730C73843018460277378F7286A0ED1A9E214518A68049800E4D86573160A7DC1B13DAB81469E3D4558D162274EF39E810B18C5D5FFD39A9EE879783499C766B7F61746BE65D02BE3CB4AC03C63FD2EFB36449AC2FDB58D89132A864A995901FC3CC8DFBFF52967AF7A9F1A6C59ACBB3219713200E0C1A297B396737AA3C94F77B727B3273CDF729CA9371F6E885A8077E4AFF00489A704F675B2CC1B44E15090D360FB683BA4F892CA85B0A0AA8BA59BD121D4112D694C380101C27B0C5CF90AC1C4DC08414BEC3DAC4DE4E5614567E61013B3835E6397D64E6416EA997037DF02EE6F4E9B48201B0C33F3F90FE9BC002238C9537A2C7EE6F1B1C41E351880A034CAD8C389DE6DF5F48B6C35BB0B9626787C22341882C13DEFB67780A57BB34E4ACEE763049ADF1F894F54A30B34213DED7E8FB46449533BAF0222D4ECBA359A98322B5A64E841D8EC6C9CBD62E6906C24AD3EB3885E3001D576F765A6CC90542F1076724413BAEE465601527C2A2B2D46847894A5D503C740122D07D789D1FD27AD7258542C1B84C726FC2D39DDD8E4A47ED7318D8C60CBBDE7144D4FADCD1A79EF6103B9A521F5F6781E222DD3778FAA8AF603340BE4651767F721D028F5B8E91F978479A8E46212F3A76D022C0370F4079ACC51B92AF1B3BC894D3E4B6FD06B8D585BE01244B8462BFE211197D8BBC413BDD656F119DA358B8BAFEF833637331FA83EC5B313BF35DCCF09FE6DB611AB7F5BA6D3C0DBE0582EE28843597C4C9788730B649E576BB61F036807D3A4DCF9B0D3DCA18047E8AE1622779DE6720BEEEE64CB5FC7E2B0F9885BBF1E23055C1640F528B81D90ABCBE080A940F6892687FFEBD3C66C8EB90415F6D966FEFEBC94CE70C5DA49FBF1B7D8C62ED92FC5F6D32E8C162D178CFA8A709E0E58CA8A23CECE8E7F68D8E04AC359EB9EFECEF661381796240DEDE6B719B28963074E5D30730621CB020024B8B50E9315AEF8A46251DC06DAA86BC9D2D37AD44DCE0C2633D29E4EBB2EF53D7328F75552DF18855A86DFAAA815711D7A4266C751C7DB69640B797451A47ACAEAAB27AA26738FD5049466B549744D988E44746DBEC3B1A58DB28BB4D7534F15093BD921C6E8385AF2951E7201D356DD57C593EF8103E1DBC4E009BA689ADE70A2467B2514D62C0569C2F0F45A8DD8C8B6401F4C15EA53899E07A047347396BD1C8844B2EC12551F8CD087A19B38CB42B8DFCA99439EFDCA72E048CF078F3C48A694E9CC95C8AB1ABDB823E0318BE998DE30B2EBFC6DEC26F3EAC14E6C50C7222F1E7816B6F7487FD9206B3A4FD8CF833B6BAF5BB9CF87A45704C035C479ADB9B2AE70B66D500EE37A9562C33D1E7BC62536088BB303D72F596040A2C90E569B19DFD5B39E2C993506D7F13552437BBF19164749491E6C42FD6BDD96A2193D90D259E22259239F57B97B253F7E0BAB5F2A7DFA7B4E239B0331F0CF7B90C444FCEA6B118D5EAB37EB51EF29063D9127A145686C1D884156D286ABECB274542306E7A41907493FD9C486DBA99E6458442060FCAB00AF522A1E05E96DCCAB18480BDFCBAFBD314AE55558B771DD7CFEDB757F3C16EDDB3142BF1BE88AF5A44A13875BA1E1FE0E1B18A5E7C371A058D5B652930FB83658E21C23E2E1CEF33F59499A333C2DB3F76AD45E7AC3C44DC0A5CD57BFA49165A77F4B4D2396F15413CFB127A32A1F6C5EB9275CFF1989B308A7732118752C841554D64FF5047B28F9101D41A44B6616A5A0467C0370F714C50DB47F22AD4A36C16FA49430886D24A5E58036FFC06D5762885141BCD4070A0EC7E9C35F35ABCBA512F53E89E6FA2510C97329D5A080F0B366E4CCEB96CF75576B2294608397C3965EA1561F1734CB17B6EB0CB3FCC6C3DA8325C0A993F1AC00C47060409C7C0F4B2210A0929192F15485369EEDA4447F5CB6D8F115AACDBBE5D3C0AD63434318A5DA8291143F2D72C16D6DCA984F994BF0757BAF29EBF4A9CD3AEB3ABCD33ED124E0B3C98BF2FDFD89B0344BC65050E97B280758EA1183A1FE3655DDF48B2074E0BD60A74BF45CE11DC61EA1291D9AD0C97341358CFCB367734C65E3A96314284B33A72DE81C6B125A42BDAB876E0710389CA599AE8C83B0F67F2CF00E6F7D4A7E553CAC16C68870856DFD51514784B4622D9575C01F4156500EAAE3DA7F8829ABA4D717B3EA3C28D290C0EF9183E5506F945B984728EC3B0E7B1742515AFF924506F779AB59D3051BAF84301ED2ABBE0B09006BD820FA579EABA4AE016E895133A6968147376BD0A43962FD9FAAE86809D70FCB5A14AD884AAD7C7813BE28A539539620A1E73BA276A31BEFC5955C0081F2AC6270B5F41485E0F4CCF8DE474F14F984866DF7980CFDE8F94B94F6006B333E7D91A54DD51654406F597695221E172ACF50E36376659A96EAF53A6EFB438F4515953650F0DFB3980553773D27EAC2E87749EF21C7C5B25048773743E1530CD04013B079BF2D984CAB24FC6EBAC5CEAC480B2F68736D1319F942763CECED914507BE7B82FA7D3D6CDA842C2F21EF8F480983F73D09CDD9CD749F8E04825303A63365231895CCC560F18C13019F2F60DB26DC2CB1E91F0B8E1B32C43C80385682328C91783BF6F61D3D916674DC84D48D4D1252361C9A4C76C09A67501B3DD180F9984034CDFBFA29BDF888838E4DB037A78761A0F4582E9E0110E00440C2C547B24BFED539AF0A1B9C944CB36D591BA4085EBE57BB7E164D3E2AE511DEB2F954FBC86C06C211DA7EC44FFF4CD1BB19E57F96B48236D451D0DA11DEBEE1C6DD18ED12DB0E409740E6473BECD4EFA87E09EEB1D205F90491AFD3EDB3BF7888E779E273B097119C3141C33470D0B698914EDB7973264D200C5EE829E4D75986F4449249B8BCFC2E79BA049C6B08EA9C5AD9B7B2572986894D063FA7CCCB3105E9DAD5892C74976DECD1E51B5D7DB5A20A67AD2F4ABFF8BB6E676DA377EA29CF293C2162F6A5540FCA3664A84D7A94447D448A317D39821495EEE71A633A31E974ACAF1DACFE93713D52FB25CAAB0285A605989167F9EDBEC15FA8D9AFA4870C6AC3F92336BAB76327EFE8A4D304E024477F5FB5DABA8B261280AFC08D1BEC364B290F98E92A7970C96179F079F350E2FA6B7F081DB4F38207E9CC378116DC526537C6CF102C1BEA4E3305C6F80F014552806991E32F12F07E26351591C273BAE9031896755B303481021CD5AFF0C55069DC80B82527E8036F526B297DC98E4CF3DBB67B33D97F0A433FD0C6FD85F297D2D0F62EAA5DB1E39D9A571D01AEEF2D128A83CA738F3C9B1566B66597CC8002456CEF190F68406E55DB62F1DC1B74989F1DDBD61914E46F207336DC71050C781D4D97B4271DC2070E694D9DF12E32938EEBD7BEA09B85D7C12007E4BA71F4D85253917D23AE582F9AADE76F60C64F4BB9A720C90D9D1F11092C6973BE569D4DEBC60DC901DA4D51D68549739E23844C726C501BD6D38F5E6EA72EFA21FD7F8FF8070CEA8EBC365AFE0BAE59FD87C65198576AA25DC3FEDE55D1C94BE359F8470F17ADBCEFCB3BBD58692BB43F2DF54A11A834A28C725980348C0A68E5E9D056F1AE16F5D29C24E9449D30E2B85832A7C15EA0292C7BD4E62CD05AA1838CE3AE52CC482A45820A5BA4D93A776CCF48FB6F70557ABDB7D2D29A058EE4D17FE26EFE30C82479193AB43EA50D306D3D2D4A5C821C376B6B6C9B882B796193083CEA8DDB00741BA80F43793A989E6B3667FB1FB2228F0076C0F1960E7EF74B95E498D56B0C3F8CD2317F1B8079162A0DFB471143244D1130E6284018910679107FC822186AD8F3D907BF036CCC80719102250517BDC53DA13B5546C9C43333D4C8846F8C64B3365CA976DAAA90210D28463B7540CCA8F823B1CFD26BAB9A6DAEC04E373F5EE098F0B718F83632F3909196622CCD4723D0735358C87C3ED5C94582CAD4C2CC86CF51E4A6FD9ACFD611BEED06BFE9E50810D17C185D71767F165C063818BB8085716FFAA3F3B2F9E025CDE61E1BC0604ABCE2FB18C7FA1795A8828A234696F136B94A2F7A1510B548E749527D9FE5C43AC543D59940220A4BAC3985FBE2A4FBB63F94EB785D88799FA9261CF3B8444C5A6C7454C1C6CBADC5D669833D3485A59CCFE5E6DB500B2E780B3A2551AB0A431C96CC844BABF5A3C99CA6680A3C6BE8B69089A2B2C1C2DC4980DC78509576C5788D923DB4A312FA6D1489DD4B5362E95EA7F0176A71023290555532EEA44230E7AC42EC57C17F8FAC681DF68CD2C8150308C832C66897283868C1BBAC09A807F0E9CE9DFC6346A43FF286AEEAEB9C569832A4E959E6DDE57F995794157A0DBFA82139970C8ACA98AEACBB2691204EAB654877E6D57CC3A9907AEAEB93CD4B31A1F5D54F8D9B4B6F2A2058BBFC06FD053AAC363216FC6CFB47537040C991B0C168934B9A0AD5A6C0075243B52FFD5E487DFE9259102A87504EC9F1EC8424D07502288609BD2DB0AEE445DD88462CCE7D1CDC6DA73AA1B0B7DF8D6DADE9F4AEF27BB62F6E6B4C3E94F7E0CFC4124B400999E19638F2D7672D3371754326B94245F6FAABACBBCE51AC4652EE4CDF5E03EC9EC21CF022F00752F9A73FA17867DD357BC1569DB916402A1142A65E60F1C339F843E8FAD6F43CE1FE7AE535A4DF083C69579927AA12B55A0D852496CE482DE9DB7CFDA12B8A24B42A3A3D59422BB6EA66E90FF02F1FB6EBF35C6F2AF9C5B2930CA0EAAAA8D7F90D629948F0F06EE971D5F5746850982CA6552086599E6188E98E8993DCEEC9094348E1E46C75D9CB96AAB40DFBF169D088E3662F2D1E6CB6E365BC5300FB7EB02B88CCCEA0A0CF5F060CACF3386B9033127E94261E11D333FA4638BACAB38A3C3AE4F88EDE82C4ECE8566600CE4B1231B83BB54107172603C26E9A47B1A946B4BD2B2DA27847D6A90B584A073AD7BF6497098C663F135D50420C4477D6310CE9F2BBEFB3EB077C53EE9D8A195BAAD39BAA2ED8C23316E6E4BECCE8039D84C6BD89B41EF30837A35434AAB433800F7ED812091400EB51D05087394E59B0E26591823A3135EB9C208AC7248048FB782A2AA390382D4FD6EC38E3059F9FBF0C90E16E9C06A0275CA2AC225EBF6458AC40FE52EF373ED3C5E47310C0D27C431C1AD6F52249259F664766EE7754B37B335830513808A789A9FC4641C6FAE5527C81B0709E3C71FD7C35872608B774ECA4A2C4601561BD8E49FC18007ECC506DD58239087226948BAA677500F6B80827CF033CD6225CAB3C0E6C24BB05CE5D778F61A22CBD775328DC1EC77A0AF09FF7E33BB29A71A9DD5889349412FA6C2108507110297699D839A2B5E75F4EF54C00A4812F767B0F26483E72E92DD06D7259C59F4345EC6451A2884A2924A7CCEE3A97BFE7385AAAF8196DD77AA1FA054236FDEAB0FE5F2217F921306C3C6F82DC5DF7F4937EBCEACC6BE15AD1D18662A5497F5964C7E66434D4222A5815324BC6422F9F9F1346E226B160977342E1EA34DB6B4FD6DE90F0C218B5969610A2129164FD7F5D50AF8D49D95E47A9CDAA13E9B937C9A4E8E9A74991D43E55E38624BE79B9AD640C581101EAEF60B52AEA1A6EAC5222900731C17B1170F368426A91C390E62A044EE4047CDB1845949389C4A1D9F6D34E053C155CE73188109907CF083B828309483F913BC7D94B90C19D45B0BCA6DDA00791DA9C4F6DFFBEBD8B916795510D5553959A6148F3F594DCB2B278323ABED63D2C239D37CF2D70131EBFC2FFBEEFD28FC09F4A95D3B2EBB9C35C85F7FD3CAD7E6C75C673C6D89BD82B925351905B31B97E2128401FD989B4216A28AAAADD3EEE74A97B8E5776474AF6BDBBDAB139CA2E5E245C395C0E62BA9112ADBF51B108DAEA2F7766EAB7EF2D9E12579757120AFF202CE49E8C47C75E7E15F45F680A9086C8F201F404FB28189ACA9072621EEC110632B7EF438790B4380338B78104EE9809D92E366D10C26B502D2A47E1BBDBD7B0D6CF048741D9F48C06FB176FCE86601F1ED529B713EE7A27053D097311685136CD8A3D2866B16CD4CDE78D8F9642CCAF0416F3305D9D99921ED63DAA34103B455D7C294D139991289CD1886CB5226D75686F76B6540591D89136E1C8A073D7E651B256B77DA869EA16036AEE6B705389EC6647DFB5C9EE8DE8FD8482BEC76DF0FC9667AE59FB4FDFA5866DED6754F6155D8EEB5590FA27DA568FDA0639D8B48EC913BAEFAAF3C8E2591BBB488B59EA2042591095769BDDCD081D8241DD79779174468A38F8CA55AA83787526DC51A1E1D64607B6AF637036E5F45870EAFF200C1766857E6978A7720E6C652DC5FBF9D18FF3E3E28B1035B86C30E154E8D29D14E1403BAC43DFA82D09F4ABF3BDB11D8EB4E101F23B7A334B958980FC7392EEC4F915B08DAC4C96AC7C84E7B395648C6396F797CC6D62475118CD0140B874A20A8C53D7C765C05B5F5CF85225897121364228FA8A518559DB31A33492CC38B3E04819BA5C0895E082335C6FE9F218E6E9FA852B6A06E929C07B18D8B528AA755ACAF5B94FA9862DE7650FBABFEB945E3A0E3BC8C1267B7C982F082FD5113D4975860920A25EEAE42FA49D5C814E576550529780DD0029EFB44C8313035AB3490DB95051A00F9C5F2A5819E4A36917436D91E8E5E2DF652A6997F60AAC59AA8A64357446D8D1F03BDA8A39E8D661954B29933E852C685E389D3646EC34A24C63D3F3DFE1B55690D51C54B840D4991B326712911273DCAF341F150F2C01B725B31B49700B62ACCF1786B81C16BFBBC15596F5B0521179BE6563CAABA6626B52E94509BA5B99E7C31E93F3C44E50DD7E67C525263E42182A91C6EB6712E1B29386E0D25E514E37C00D0E842F8817020E4F27047659880E3D304AF2C178E06D2C54EF7E8C7421EC59A103B27AAEFDD1C06544AC016FBB53BAF538B867B3782D74DF1CE883121490428C756FA49508FA5B19E52CE06943B9E762E23662C3A62A5019E77121DBF00544751EDC91CE82C6277FE6D0F8F1BEEE25BA83D616D71764D6FB1AE98B194DD3F92F1AACE8BE9904FDE0F89B81BC0384EDB0A82E90E44AB08C0DC003690F4F5E723CA1CF1ABBD3AB9F74DC422EA714BC91780072D89CE507A8F9642F34A6E7DF255F823D61A6C16455831D0FDE8F3BC2A5FAD2CADE2FE11A3BE89498AEF886891FA92B96FDD8507163CE876932B91924B9DFB8680DA7FFFCD28E239A54E919AF890BAD28E993E035940724A31E89C8930954DAF2A44D595A1E94A6C1270864105B5D387558050A83A5A88C71FD863B6941D83E9C0CCF35EE88DA5E8F0C841C5B2C6763F5328FA35756F3B54847D01D5540AD1F9B69E77C0A39F9B2DA9E62811154915CADBAFE55698BE597F1F29E28F19F4F9121CD94714FFB226DC625EC115CB1F106AAA07C4B9F45173B3FB493769324E433A106046D6F940FE29FA9D491A158258FDCECB6A24E3E851AA7A95BE986264D917A628A27F675F60A44176F5725F6F6F78B52D3FDF160D3B1DDA9B9CE549F4533C0E9EE3681A6C8E22B659BD2A0A756F5A0075423DF922D35EDC32A041AEAB3630785ED1ED5EDC9C6ECC3D0CE4985FED848B85EA2B779E60CF5D47CEF865378EE92520C8B2410A2F649E07CFDFEF025FF4211061EAA98D2FEF35F117054737F4287A6E80D5982B14E2962716974160544AA054C4B43247BD1842737AE46CCB5C42EA7441E3249BFE6F77C4A1EC91A3B09FCF4053D00E77826286B7600BB3D0D11AF1D2E041B7B2998B7E02F92E1DB0641B44978344B2240C16ECAD19B94E84E7CE15269018FE64AF2E2098119A877D872EE9A435908547A00013AB5487F0FB936C76DA6DB3C26E47A5F7479C6E72AA53F7BC446F9FEBCE2FB68587BD0A8BE5E168D779F2F6C0D4784C1DC1399027C0DE9BB49DA655F236747DCA5F085EAB1E845C4A670D390ABDCD172AEB35373C5A41B49EE418162FE5F20BE8E15DDAB654485CAC9A3F2D09136013B26D712764B827E48ABD81D8D49205415E7221A9DBFFA3381DB4E49F97602D5EFC24C7A91042FD6D359D4A99435816BAEDD929BD9D39A3EECC6D5009B4CB70F15E0A9F22FEDBE26B9156F8230994441392D96EA30CE7BF8C14E437DFA0FF9D2AFF7073B6829150C2BC84AD50B59747DE2B09AD3761B1DE03708DF59411ED925175132965B3643B14048767E240966718FA14F0B5EF2B917259950A588773267CD793ACA46315BC80722D474DE88FAAF886BB5276EEDC362C4187D500863B3BC184B88B1685893005D8C08310206BAB16F0FABB9345773E1F4B5F28847214597876A84797ED38FDBF88B639C708357639F21496A0CDCAB1368E8396A5DE12CF8E90CF23A5FA22EA0EAAEED3C8E8AA2A3997B474324E276BD424AEECE66DF490E7832713A860F494CE8973918C5616EA4B2B312F92946EDD8B06CEF0AE6D1C05B4C75185551FC4E158CCEF98E082F9AD699A3CDB31149A0A666220FB498811CCDB085A653A913C90DF0774332671895A48308EDD60EE3E72F6C0FD6F4CBD04D1B23ECF231049B69206D5386C10AC26BF1B68FE76F2F7C3014B86A09FD076FCF138BF4A1CA4E3AA1AFFE0FBA6E08AAF569B1AF4D56555A578BC2A98D9443591D273B3A5DDD071C8E8B5595DBDE2D571F144B1A24A78965590DD8511C945C8217C12CFAF5AD4A4FCF334371C5A11611F6694A15FE43173C6BB851E89D7B3CDD583CF892F70CCB6EC84A303797D77103D719DE7E1F3C45716FA57D1AC59A24C3086D2C44688AB0F6EFFDFBBEC6D53B60A1AED7DF7529274FAE803674433FCF8C781D529816CCE13099C97D2756C21F09D2E9D11A6CAEB72CFD44F5C9F6C802B4AB3D018E0C6A905E282FDCD9FCD7B561A1D9AE2C0D67599E5AC764E4D37AB621E377762876A1D72305A9B3FE83B5B06F34FDD591F57ECBA822ACCCBDD1B5597B34A28BA6CCDDA3578A23F779BCF9911B53A85845DFB1F00D98E1E279F6AC6517258D712B811A545BE8668827679E7E873501F2DF05D1842497D7CFD63BDE1B98F1EEDDC414D033899F0698536435E23BD1F359E415589CEC88EEADC010F41519C00D47977608625EBB52521CB873316B6B05A4EE140828AF0336974FA2510F7500C9DF3114CFBD1492820801EFD0E5FB1917A1A6555D9CCE475628269BA540E7A5ACD872B1B1D3F3ED45305BAF7093DFA7D6640802BFC61473D8E4503CD890CB0BE897242BF89C626E71998F5AD423298782198DCFA31F2E22F9B6FDDF3A1D30887597675B2E7517958662F90770A20280D80A4048C3448C475DD4F3D29719469215F1144A4D05CDBF5500F14A13FF075B6FD65D8276B1FBC946043BB23CB4E04C8CC42822A8913001118FF6B033DCDDA7C6491FCDBD9F76564473C414805B47B9A0AC9EC087B2BFE8E10EF0119D4EB5E60AD61E6D17330D838AC0878298EF17CB86EEAE215C829EED6C5B72E51A602C15E73ACC75C584431D5AD22D4F2EE63A18D482BD08872E2BE429F0B4B9A66206D361CCF90045E77EE670F9D27F91E7FF14BA19656136FACC50D62925FAB1A3253A4072536A0C2038820D8442FD3C68082F37CDF8A09512574EBCAB9744519603AD972EDE4FBF6528BFE31278D39BA5F43BEF4B0F5BEC0853114B7A1E8B751120A45C4021E70B762EF676667D21F794443F6384D1459002C7790D2FEAA4F4CFD5EAE4282F6925BB61510575B899F377280727585096F9238F98097D8AEF38AB2E6EF2DF272490992311BE9AC354D90702E816CF33FDDB7AE1EFA47A3DF3603227D7D5DEB6E9A3EAA49144AE48E79FEB7677BC4514FCF83C88E26013E6D54E4211D7CE0251949ECF4149B93FD169969C092B4C818A921828DAA14F43CE017AD2C7611EE24BA9F6B249E9EE3AD75FDA690D236981BD63FE372A7E0403E1CE44EB72944284119642149805F497F0D676166AE6534B23F478AC0A876E97DE015C95190617A8A254FA90FC8BB0397FA51A1AEC2CFCE39B78309B6B18280D1A6836CACE6734EE44C8129FB205AA218F94895E78B1764A54A85D247BB892F9A8CA5E51814DA7821FD78410B2C2C0BA80E0BA3DC84F77080C69DE1BF453D270AEFBB27565784EEDA0D6A1557A50A55A0C06FFCE4AEB338BBB873B822E35FD5BC2B4AB673E681A9CDF0980189DAD62D64E217C58E435C22804AB08467984AFE12E123081A38E6CD271DECC3C725298B5ED9CAE3CB83E7F7C7582929220CDB236C2EC1734C280DB1D82900B143DF7CB36AE866E208F735802C218031BA9C0BE2EAF962892CEC13E9C01613B3EE932157D3DD8DE6989DE24540A5B02803A470A1327C6FCCA26636D01AAE1E542A9D9D2294A830619F13B5CD9F691F9ABBD644229F09E9EB89B7D5CB89C118ED13B5943CA5BC31ECD295E088B458047B4D2AF3BA7FBD84A9E59460D614FD0F13B4F1B023FCCF0865E617474790C732B604CF3A87A35F978A52A6D9F2DFC6C525CDDA3D513D9E79D1D739AE87396BB58E9B5B347AB26A3BC1C21A88724B7EC3F9E4B78872309CE8233215965C03FD9EACB61D76DCC62AA06827AE0ACEBA352791270744873A161AAD3CE488D4A6028A8675578A60071C83540686B2FD8B56E5CF8B3187789AAC38C2ABF7865CC5564476245AF71BA5C5D69D7227F06C43E1F733BA455D2AD19D2191F88B595130116D3D60BFB58267CD2D10CBDA76ECCD06D3BA92004DE01AAD75F204020EDFB36FCC298F7A545892C6D43A9788D8AF16C584EF076E87D172648C72D76A7C7B2F4F317C9CBFECE4001F4AB4EC72F9C38F64D4555A682D9DEE247AA7930D343A62283F3716B8ABE9DDBB9810D1EEBDEE1D7DEBB005525EEF7F647E5634BF1A9942480E62EBD7C8C3799E28F9A7DAD2A8E6E15D933B3185BFD04016F02AFEB23463E2938368E47A0F90DADDED4A72C3A544D4484964F09CF890DE6C1D950B5C626E98D90E88956817655EAD7A1A9A8B0D03866D5332C9E200CD984A2BE19B228C5E32D7B47ED0758E813E43477469DA93CC1CADA6F7866AA6A03E9A4B19AFB200354F261B87CEE9CFDFD65A5517EE016BFE648D25CC5D7A1500A7B83A08143491AF9A3D5E6590A253DC5383D1C0E9F8F8637644992C6DD294BFB91E13D49339FA99818E93E22FF5156B7D01B3B035761CC8F35F88A2963A16B746584D8E98063ED80C687209789DD7893C5E44841C54FA829D3454D14665B35F25EB14C7B68D11F0861EAA9DB90F88908ECF2393AA3BECCC147063978E6C1252A4FF669A4AA97B64ED496C4E2EF09C77952208F86CAFC4AC35DF2AAFE69430FB45D99DAAD4F242F7BAF8EBD5B55FFA6160B2D95F1DAC2E2147E822EDC8AD775A53156BD96141410861CE25D8CEFC879E4ECDF4AB3C46222E4ED02EED765BDDA86959EBA27527FB92BDAFA97EC0606973A02639B910820BEA865318EB624D0DC4B4C9C6EE79994F78635C085883031255CC0F2A1445F94EF9D9871178507AC8251D328CD4EA0E223669485FA5E77C667B497E72DE1F8C6181339CCC88C7AD04F74CD13195C009F372FE33B8A5C093D66538822C5C27F828A28D855F698A1CEAE61CEF958FB2E5E86F5C7B4ED0442B003387C24DFF4415A04DBA8A12F31B43C742830C7AEB2DC0A36F7D5619A2DEC904F2C7B454F538E32C133D6452C72A1F580ED71237F9F7C776BF9048B49386EA6391F48C896269E2BB442E530E60E23FC2321D82BDCA734290E9189D0CE807F339B566B1817BEE3A89125F0C6CEC9F2AC4BD43DED389C4CD6C2A60CE6B2156E7FB3486F6EA28F2FB83D5A3D322627BC5A7C5853E6DBEC67216DD3437E99D831CD6B8AF695B040A6233EB1F9F5080CF09610EE765066EEA34D8414D3AC8C67A77D87E217DC7B204603B5D5EEDDA9965B99DB2164DF599DA7F5F7741F452751EB5EE56D7B0614DBC372913D431370460E504ED5A0DFC7B78EB2A916F50012F16359C3BD8F6C92B2C7E805454CD00018FBAD7B4A8286BCF0968761530409048291BBDCF5946721185F61F267697F4888401A6E6AEEE5C6D5C13F56EC7963062232965D1BAF92EFCFCD4D0A3D8EC84412A508BC497C3E9704CF379A27756A3B4B1EA68EB79C923E2CF8C234A38E3ADA746C7959546CD06DBF4230C7B6157255CE9E7AEFE850D37693440FFDAF42E8CCB1CCC6A0B3E64A3AFA7CB353FC80E9EE546186785BB97A6109ED34990D8E56663759A76E94C2A2C46A4B900E6B8E5393C973E82FE3DD5FD8F42D3562305FBD9ED71EB2763FE0647A1784C56317050E6531DB4363FBCF0D79F30CB77681A153293F9807412736F723500733CEFB20EC3C8434720512FD90455C584BBE8DD48A0FD526320C16B9CDC85E5054D4F11BEC45C8DD77AD4894D2EBFEC7911FF4E293EE53AF3D7848C069EC3A07E41F8879CD15AAE845206A129F0589E854DF87B0A71A6899664F914AE42F105A48D6BD6B8B7F073CDCE2513A0017529103F326787D55D657E3B24859A301029B93E9512795CCBBA6904FE23EBF98C991EDCBBC066D797614ED9542262399A6E0787ACB142036DD41622FB9001F98CEBCAEB7E990CE06380809CB36E4CC802F17E44496AB48E69C09BC9C2578C85E6121F2E25BDEFFDA787DF5AF2FFFB0363770CE46ADC64D98B62B4FFBF0A9D3D16C54C43AECEAB084467793AD0051D52CC20460DB9C4F807FEB88CA173CD1ECBAEF96A932BC02661E1341879B08BC879DD3BB38FA0955B7D7094ECB07964385C55B0C0FC8969B383503D795F56F48390F4FB8E1ECCF5EDCAD4F373C4670528E7B26566A46E0E6B53FFB38D7EF7C5BEE77B5D6B61465338D2E5A23EED1B35F649C924321F3AE3A53A34ADB601A83DE9658533282E86DBF4790FD1249A9825706EE1947994D95D28EE454A5DA82CB23D97521AEEA4658EFDFD4945B1D6CD64D52D4897D4601754DAD93700257154741278082D937254AC6917FF30575B9C8C4EBEEEC92518A06E02BA24860DE50902926ABDEEE57D303368B3757DB1B4FCEAA0FC9617B54C2F284713E1AF6CAC52C92ECFD443670EED23B7164E445622F9633FD18B2485B72A74C74903B6ADE7F93DAA25DBEE3F86DB893D2FA7CE1140CD08729BBB63EB1475FFDF63856043FECCAC9E5396599B3BCA72AB3C7DCCD347A0A562A6AA814C4963DAA3B03528D7EA1430DCB16A70ED7549B742C05B8FB7CF46281971DB76A3EB10D71D77422F37D75560DCE4A6F42A3EA37209F7A95C472748B0A0BB5AF0D5755FCE38FFB11C7A13F5C780DAF3F5CC6D192031DD7CB4A976D9643479C7BC2F391687550A859AF9B35A8942C1B39ABEB831B51F85DF3D15C939235160068D9F182CDF2F1DDC6644D565E5F3E49C61942CE00B7EFF7CAF838D8CB374086D6E48B5F1A98E81374818C662C14E2410879ED80E2BAB0B84CDB510B1D41683C8391527038AC042C2E4642B891CDC8D4519E5BFF18BC7D03F20D3411E25AFA2D016913625DF7C2268FF47D406BF45C9F2FBC64DE29A6F0D78BB59D2D394B2B9D2C653735B4A92D458E23F5535E63BEE9EB788F5FEDFAF76E8C628C0AD31233E0A3A09D2A78878A628709B8A9A1D7D053FED719C5498F304A8320F246641007608AD6E7C39B4266EB69C2953DA3987697473FF42D86693C86BC269CBF4D5169E4456ED86FC2D3E1907168D443D9975EAD9B830644BF60D65548EF1C35EA12D93B836DBCD10AB532C7F2CE2527733AF4FAC203966BB1CB12DE9C5A59D57F8161710CE9BCC83896E07BF926EABE2815347A77AAE39C4E20B8147D0483649E63938C654977F59A5E977C3B8502261F4D92E288E32ABB9743194587EBBBFE4227EE3E7DFB1B8F47A0B4A4E747F9F34075336AC0140845962DAD30B8E1E3E3D186DED9C37AAED42EFE1133FD3E8E369A335886848821F0E10877B9AF45466F05A9E96ADDDAE78A1289381E40705A9BFE81C0398C2E73CD35D366C8BA8186D1DAEF07E50C79607A607CCB8B16F41C1699B0EE247EB03360486E5BD975256B4FD28DBFCB02E473F61E38D92F15434D7EF34B075FF5EF9401633047AB58BBB51926FBE7BF049FCA3BB522172CE23E99A80783A1995B9E664F1BAA56C6450F46875C4F56751EB6504C2F5FC754E18CE7E0E7B9B54AC5298098A871DC3DE2AF4D45061142248189999F8E72016DB65763C7A293AB0A8721C4C8E68C9C6C3AC7947CEED0FFA43E6B7F1095A5CFB3EECA8C19045D9083611A9C726A834554DF05F482A5F33717565196CBF40F0D726C1A46B432F10FD08C2CDD16701911CB754129E0A01C1EF8E03CCE8D4B7872B1036DC29203C11521E76EC2C83F2EAE33D3A1BFA5D40FE81E27DFB198F00ED4D0A75BF1CF23B54DFC16B9986CAD67FF5EA14BBF0E1EEF486746F071080CD3F650CA5F62542E5AA6FDE94B65ABDA0BC8522F8E13B0199440EF915229F6F1F6626D3FC81CBB21B6C837EFC744E3EBCD83F33E723FA2AF237D692434C57DFCDDAC86E57D3A452C75F3338FBD62E32E4C593F5286CD88E79F90CE1BA4A2A63DCF268DB8EB6A792533918F1EE4F50E611E2B16D066908E438CD234D46F13D92140E68BFD61DFA062A6141AC67211329C0D45F2651763DACEA89227C1A01918543867869AA4882A4053B1680F422A806E80DE2ACFC3D2BEEA6CA6C3CF6D8077171AD5142A709EC33FCE167A0C55AA02789658EDDBBC721AE01D7628AF986C8E411969987D51F3D3FADCAFF4ADEB288024B23F8581ADA580271A501BC6D4BA150C03C7C396370C5E9844E414AA33F81EADC797A32B7FD5DD5FB9B05F264D5E4B34F46D3FC151C5D2AB01B478FEA05FAC94E329619662B968FDC5DB3E4C7B4F42E7DDCEE0C3165D4712F753D2CAABC93B60E00E40A5AD1C3363B082E5AC2A946CC85898CB3649DDF7F578744B685AECD16A2E1D9EA630431D1D883B878FA5FAB4E4E1DEF6E636749C566736C20A9B642B15EE3DE63F846585045D5867FC7804E32E3568F634F34AFAC393A53AA9F847AB194DFA5C950B457961A0ABAE612FD4D871434EC857549067F2E8B0DDB24332EF8326C5D27E534DA69D2E2B61BE027F3F8DB0464F09F6C825DB70F799A98420B9C0D19B10E7A82B62DE9A9F8FEE44FA94C4B8913202D3375E93AEC4031CF396069ECD4A03637925ABC04FADCA31EACE4D0AC2BC057BE923429CB6A19D3F706AA08FC40A9F4949016ACC02B15AD7ABB0519EDF296DF306784B44B6F86F55FEDF666E6F62197012AD8FDD7E4C6559E40586C13F21E153BA5D3D4E3DA23AFF97429BEE9EAA34ABE7C099A89EE0D6C1E04B30FF49A431149632F9AD6E203AD4CA2B9440B4CB480BF8C4CD591BDA5AE1806926F4C3772F83877F0FAF1FA696963E44D26FA23480EB1C844D23C78999E14E4CE258E15DE294DE3302A03F159796C96542E86E26C79271F8F4CCEAD274E21F2A865124F70430422C08E65B1BE1B9E8311202CEAF8D4248C1DFBFF1B6911256B46CEF9347A31DD1A98CE69D27F5E05D1BAF1621D4A19F5D40FD8D799443365C6B8BE52C76FB2054C238915AD22121CE5C4398B0CF9C323A01C9EF827D4907B50B1457ACAD8488C35CECABC8D9FDDE6A44AF720CF6FA74CC0770812A729B2B568EC60CCC491DACF0AC755B519401389EDEE4F5214CB9192E3EDE5A6A1FA51F5A3D66E68D671C03834B5FD03F373D1054C3F1FD086551C27BFE48F6FFF07B19BAEFB90380B67A05720D8B69830BAF47A37F3317F254D06429C1EE6C783EBDDE07EE526D2153C8FD7EDC703BB2313D8E706997EED4F40A4F7F47AAF10173DC4C50995B35DB6FC9073D3830F4B1FB37D24F16F70D3ABED83316819E17CC55D85BA0137CEC58E24B06B77586F009DD63C8DD1EA4263A7BE649CC25715F6D750813B3B5497167419FF0B9C69ACAEE45BF9F116FE8B5E25E32041E1AB87234D3A5F728F12226E8C63EB7ACC6BAC5A954927323DFCFB3ED88F8767F43ED37AE4860E086E641D7559EBB61C3266B15DF1124734B063D6BAD24C5A49BB2C07F7DFE9D172DE4BD0FEB5CE0B8AB3B4917CD1991A3707D133DEB7984932596D938EB95FA0552CB62684227735F17137C359F4ADE57D73C67175BD084987EE8E247EEE146C807344BFF09C182F1E2EC350243120A98594199048CD7A81C3107418B3551F740718185D0452E5A2492D5E4AF1BFDE44EF96365698C9A1BA7D9747AF861A1429AA6E90BFDC1B9DF9AD21044491E2A6E21144E59742F88563AE7E2AFC897BC0C2841E79D08F9903ACF597D04A1F7791F2BFE6C3B93E96330F4973BD9E5E8DDF2426DEFAAD954C8AC89C58262B80BC80713BDC747FED247644EC7E3EC5219205DCE9A769C593B2536E65F4F1CED664650B68F2F7D36D7AA04FDD400B2A48CA8CAA831029314593888265E943F851D55762338DF9A4B1413F288AFE1ED6F18F3C9299CD9D6A22D72A0373F56966ED0AE5549FCB6100B02CFE3EA02D81FCAB4CB0BB23ACA1978E36A5B5BA47BD4FC0DD3AD91DDC8F7F9C76A101C3B6D6E981734E833794142A5EE56DE3B2EEA92DB4751B2FC81B70517ACC5FD97BA44B8717BEDBA922735DF6197972F87A8C9B3694B33BD1D53C99732D98F7128981EAAD01CE0862463B0A64701BC1CB346E7926AD057691EA1F89A03806E7D3AA61CE67266A1A84086A6526EC6D87E46D21CF9A59A08D3FE08A8C7AF6D24A164E8BD88C5E794D70A9F1673E69F8BF351AC827FDCDF2A5D34632660770D53DEEC81D96EC0CEE2FAEF43F149EF0FBB4B1160F8CCE0419E6A7039C0A0E41A5A84565504EFC79CC5EBB1B867E914B0D951488FDF65E2CCE3C7B0FB81D18E4EDFC647C9FD1AD233EAF33780A05DBD762C2A509A0DB328D176DF04D36AD16EAC5F5A5A38146B60989017DA362BFF6A27D561C4AC606431F371CEE08878E577346F5D3A03080ACE67605F6F829F632E3A7719D8694CA3055963CC84450F5EE9E1D4224A22B691CA9DBF57D0C8FFE6E9763C665412C11C051CEAC8F4E35A6463F5B4343EED548A8C1D5F8AC8DC1130DE53CA2B7A5E5038972210FAB9ADC1068AE0CE769004EE5DC9972D3A8ED87E83D0891D219DAA30F692A0359DBE4ABB52CC10480FC152088CED8D5A23BD4978F4C0BE51FED180C34E6E751E1C28D481C9DDBFBE73DFAD7726AD734B1384AF8F2519A524FBB104FD04FBF84645C64CA964E7C464441422E8206D25E1B5CE447A8F28A819305904C3385A1E83D72D0B3ED535F8D350EFF3BC4F97F419D0D8006708EFABBC3532D0AF34CD8805FEF33EC6561D07D6B6EBA5D2F9CBDF83E74FD49F8715BE01674A4504D497DED49D68B7B4032302F2FD702CEC7D3729B270643BDEACB27988C492CAC7690AF633775DA37AB330F32BB2502BED5B721DB6506667C6B3F06A6BA68780EC8EAF1608E13AE0ADA98361572915ECE8F266869968B1B80E6CC5A4BDFB2AC72989FF21ECC05AD05D7D5F682F0B6909D7F3786519089B31EC11EEA2505E7808A9E68461C3F26F78F180F619BAF9E13C474EAB2481EB29B1895DF5A8EF2C0FD97A82BE0400C53E7FDECC92644DABFA0D00BEB4939B47FE7105E39F2077D6F3840764738C19EADD3B8803F67A85142DA0C3B77BF6B39677B8CE4FA4262665BCDD13D896812473BB4013B804B4DA6C7C847F513984B31E9EA05E6D72DD975393E03F8FD14ECDC1159FDEBE58F7109CFEF2B3C52C27A6F81D854810C4F9E18C6F5CB22F8EFF1A5D0058935C55E6A30260933BB5F8EB2022E64AB51B3D733CC3671ACB9FA7EE523AD4343F8B60FBE11482566B9C8CC37ED8EB75889907A31A310D83CEFD6621F85AE1E78E7F0072CAB8107013996008DB4032FF056AB0136CDBE106C20CA5CF2D32F369EA7A9FEDEFA57797522847EBDDA9E7BB2554035750E1F78604C195EB64F4C4402B3EAAE412AD515A999ACB99DC7895398055362B40C658973FEFBD0EA9E733543EB764D0094E9058144D595EE4EF5D97CFACEF1F7E6780886C141C48AA7E11D59C41C9AB6CD30853F78E869B014BE1A24E219A2BA2D182DE0D7DF45F4986034309CA884306CE1391CEFDCB2E45ED57E60FE62CF829361ABF310E977FA66C769E548C3CCB58FEA89AEC76F37B22ADC5CEB95875364AD610C9E1C77337E3BD5D2421B71EDC433649159F434F9D05A4CFB3BC5328834543A51176ABB9346F4AF1619CC6E5CB12DDAE74EFE9D62389847B6916863EE051FFF4317FC8DA3465C2D8B3DB487987DACF39159C814B65697BAF46CAE71C8AC45DE396F97717A187675F95374A3B3357AC0E765BDFF4FE2B9BE01ED5BE0825CC70289A5A544559CCCAE735E52827FAAE072B60743786E2CD5E2B359C4309FE99EE048E113D542F067BB9CE0886117EA0056FF0FEC2702BB901AD167E375E43CC6664683BA41971BCA710C89EECD3EF452B85DE60C5FADD09EFD37F7BD373C6D154C8F79E559BD1D7330FC5A2BE99D22684C4D3BAE81A0577052A05EB6F56517176CCBAD983FAA19513B528C71A696E646A13FCF3A8D77C76F270D6D1CB3444097C7489FF946CCAA52D2B3A736028796B07F86E31B48FFFA376FAFDF00E62605AA08EB352182AAF794A87F6DC46FCA40156A62F3A981978E0338EDB7C9D6A9FAF5D3250BA5CED4AA34FB5B4F24F4C1A163B64B7D007A564595E8830506ED7C9987E0941999172C158A47473A20020074A893ED69D30D78804871F6B8121017E1D795C82D7F9107520049D66CEB8A88AC1363F98821A02E1BCCAA6C5945A2791EC553943379E3151591A0A03A955D5E00249146927EA887EC598301D9E5F08B695AE37A173BE59EA56D910E378558090E42A3782294E0355C74DDB41E37F668A92D79C25B2EA4D78A4D47F355668629F186EC1867C4B56F09F093C45B31A65B9B7245D4705C6BCEE5154A77BB5E955469D834DAA0466E87AD6FD1F20168DD14AF911F26C6A13927E44754B89E8109CBBEFEF76D0069B06E735470BA30ED19D660798058296067321F5EA7AFFB16F150635CD545306D1F6AD5068C64E54BCD34608BB7D443662C8FF4ED5665186F3ADD9347C50CFD0C54EAC0D23EFF3455595F9B900303EC1EF3F0C1DB88C67BF7DD78295204AF857090F85120B7E5F774521F58C1B14BA58485AC2A8E89BA63213C4AE54331A526F85CDF40F7EFDACBA41A1C71EC39488575BD33AE77A0EA292C53768C6EC5BB5C6E1855979C9E01086BC476A0FD2087C2E88F40B96928CF09ED51278A3C3AC6676CF2F8EF6E622099C110AF73F711DE7F54B4569BB6FE831AF5CE24805B53BB494A442BCDF285B9BCF38FF1FA4DFB774216353A58F72DA52CB93D84A834E9079F61E8B7B566F341C707AE31F5B1808A9BB617F4823195D0E0BC41764E77D1579E9C961BFA67CF4762F9F75BFF87C1BE384EE9D68F77463629821D194D3683386DB28B6131D22128672CB27F761F2448153493A57B353C3482764CF27BB236FEBF4C7BE52E711A32F94163A534CC8DF20ECE9B28D8828F66BC5C75779A50C6D7734309B031D168427AE031121354AD3895066D6627770CE382C3D5CA8CA600F909824CEDFCA24EE79B6A68711EBEDC079BFF3047E17F023B1B9B6087288126EDB8341CDBAB3D1740C4025F0974F0F1E1935C4EBD666B37E54D39EAC6380643AFDC9FBB7945C18B466B566A4B6921B658F6DB0511510D5B9FB583BDED64F5B1545EB3F45E4018C9553D1EF4352314EA583B0C90AB53E7BC99F3B14807ADD63B26CF57AF1364F6478252E3FCAA5B738DFD1EF4115F4296CEE3C44C5A1D202F19C282E8BA6782C436CA6504799F207599B67E530D0FE04D0D6A539D295EB46846D8BBC9CCFB43CC008B84FCC5C26EA13D605047880BAACBDFCF49EE6A6DD690DF4B985E41E0D34A43EF1F9F72FA30072159F695079EC1072E52ACDD15CE99F84D886FAA610D7726B68F9B603741C76035AFF460DBB45A16B163A570AB4424608C0F99C813042C61F38075F237F610D022825749CD9A3DF9D83F6762CFAE907F2BD2FCD8D09B605FF4A0117203581E2FAB8182E0981FCF3E78926F7B58CAB95D310088703CAC5D279F02953FF1A6F393D1F77B7BB79CD1EEC18B5CED82DCCFBB51D50E236CF8683B1430664AA7E9E4742C0548149F91282B18D3101B7D6E52ABF2A2FCF4C4E4150849A6EB27A39E64FEE8D01396AC1F3CDBE7FBB4BAAFDE296BF11F88970115DD40E2DADD06616CFE44C8DB96A3EA4B63DFB3898ECA20A11950D6E61368FFF355FF3546482815CED1C2C4EECA67B9606D48201B0A9323988A014B55E1E046C718DE331A613848330FF8E9711CC2DF543F8FC9E4638FB1E09D654DBFE4D18B3E89699DA721FD69C8D6C8766F4B908F91ADB066ABFED5BF0357174205ED2C51F4BA0595414217C4CF7C0F653E990B6F1235A811D22B45546C173998F61BEEC4E06725ED1BE6F0220AD06BCE537FE4B238567CA3979D443451D9EE7084027F75A3126EECF8E656C7694036890343AB5631D7AD5B7966F45A27C67DF554C62302E5338088D8B646DAAF89BF7F0B29F38BBC6AB0834A0F9467E76B3C41E82298B49B0698EB28CA5FFA4AE0700ACB748136D036E5956C03A3B3D2AAED693DF6D06CF192F6DAA2AE358489F43BA64F94669FB829CDFA1B0B4E3E61775A7BC42FAA58FEBD68983E5BCA4171CCE25F8F70CA3F9C7FD783628925CA763746F5620DBC489BFF64629850FDB1C66E355934E109CE6704448AEBD379AD78154FB528B51A3369981F080EBF01991994A8FD544D4A3B9B8A11359B3EBB93C2F5D8428D4663AEC2FE096D2F3745637BF67FCC4DD76E4A52A2A35BBA33A9649B16CF2F51AD22EF44C418524D1CEAFB6BA9CD0BD6265A3D38FAE92C0A422AADA448A00F7C4F3CF1A1B93384CB8F80FE500AEAF32CFCEA3B19E484A729F9FA5E82C664E27A1E65CC2E7627A5FB43827E3FF3FB904B970AAF2D7D12619588FDEE336F1882E65D5E2B137A3C2C2303EEE4654D6468E2A6F0B360AEEA013626C1B87A3E24EC8FA43B4DB59AE789123EAA2B98B568260D6693031CAAB4E736F2B7474AB4958CB03F71AD4A7D0314C263C22C94EAEE316D2A138046DBA30F404E65E75FAAA0B1157395096584745823ED23869032D79911665E44552414960BC318E08DD0E7544CA8BE73761FB282E8341E3856759586904A06FFE8DD6D5C77DB9D2EF42501F1B89A5EEAA38A7911B7434CDD58254318D2DE0C370B60CC612FD57BF84EB6484B435C22904E9FDDCF69C76A11B98DC77FE2F24CEEEDAAC0E88CA162C49F051E39E88CEB81FDA15BFB4EE443093D94E1B726190CFB5DA36EA714910D22ECAAD39AEDD70087ABA18FAFE45157D4F0B386212C028A215FAAAF02288E2AA3984C6E3DB097C5DA13921EF03B585114F92BEFD2CDB62F88158EA32A7E5AFDCED37DB9DB414DB8E65B738B8167B5210D14996B563374BCD771A109C758B6DCE56711E060C4C687145BB572F6F3BEF3A9D61F5F99368E2563B0D3177402149E657110B60CAABA69D497C12B35B222774B99F361700229A8A7E7F07C0579DBEF3F2D2BA950D2E3C7B561F7FEF6FB85899EA49E716D4F751281FE186AF90ED1776ACDE82967213E7AEA65ACAD46248F8AB14827E2B3C2F1ED9C3A6AA7F9BCAE89CBCE696B48474457671063575C8E6B303B44DB1C3FC4C254D10291EAC1FF935C8BE1EDC6715A249A093A72DAB4D876BE1EF7A2F1CB90161B10C587DCAEC5B34F8449922653AE425B50435ED1F08D9987BDAACB318DD5668ECD364008A31A6DC430824BB2B1BA3A454B9C61B960971125FDC567A6510CE13EC378B6EA5B977C9338652BC9FB8CD07F967A864632D1382993002E4C730A5370226E1E025C52148B52073E9A8E73BBB32FED7F3DC37DB0F175DE752CC7CC4B92557F8FFFB07D44D6604F2BC1EC8ED20C53D3F3856D0B3ADA30141D5D1B2B0BAA1F10C887217885911F2205C1D749C88E6EF4915A1AEC72B664867EA1EF8CFBC211D3631C8FE4FEC74E775CB7EEE774A1764F26F555DD415FFD71A10E26BDCD4EDA687AF18271A24D66C22478796438E40281202C4B82330D7AA5689FE3B21A7D194693C13BF55CDBD40A06C0CE9784930B1F5926982188120DE305E3BC68CF884B1A275512451A1EC7101D432A3AA1FE5C5309AA6DD15A0E0692414EF01EC43098DA45A8442C37B811C4858589729E17A870BF671DC42A5FF944306D65FAD010479150AC370158295058F5862DDF1E03C2DEB28A2E9A0E7EAFEED264A7F113972FF31F9D6376D2C823463C4A65D5B8EFB8E4EAE5E84E2B9A6A149F9D001753B28766C51F9FE856453F191BA8A1D11E0E6628A6B7785A1BFBDA1F6E56A214B26863C27BBD569AA583AB7EA610BB3CF9F26B60C53D5B257E96316723F19C84A4E078AF10423E2940E0B79768313334EFE515E5025354D1A93900817889A7855668FECBB61073F4E0C60FEBA8B3230E9DF5B4AC1B679EF6514FA7095C4AB70B136043E750FE76055E7D5F19B8205E7451079E17B4937F7DDB312F127F562560D18C0A45E77EE2F5A874478ACC754213148AA3F67AFE839080B6EB45C29D5F4256A5C1471EB6E55E8F6D07FE814D3E2227DA9EBC27196AFDD1A4D1B34DE7224E8E1DC289A896C66DD27E522AA3BEC2787703AC0D15E9A6750F62C4A683CE3036FEEFE0827229ABE9C77241C7C0D57D00C441626CA89048611B6EB62835CAFC4F3A220E2D85D9546393E3D7476B779BCBEB30CA3AD2B00BB9697DA5B402A8C63439D994600837184A9C3178802F97A01C2698279CD55436268AA96D8A52D5895E790387AFD7BC4112ACBF5DE2BE5E79916B6C03E8439695DE27852E2E6AE30F877E3C558C29C7C2572F3AC3EDE27328BED0C29A33227A992E5FB3647E21DFF4A5E11B67B462F6C77B8CEB17C1D58B6530B83351264649FB496F7D6D3816DC0C4F65C6688EFC5F0022DDDFFE2DBD8FE202FD8E4D0F8F373884CF96E7F2FCD9FDBA02F6ED6A29A6B7C7E058CF5D83A6CA3418989930156B06C4F5D527D4F741E301631F3A78626D5A9F7D3253EC111F91890F1C69C9E7E9D9A0C6815C33272A23D30049B9C843417B932C8BE74145FCA41A71FC0DC91FFC127D758389C055123C777EA5B54CCB07F61F6DC3A0B245DE0820A28264E12F95D0E322AF4C1207531C86C0F2B2F43EDC9B9D411D06498E6B79D87AFBD7B8D06B0FBAD2463AB09AF93A32C4316BCE38D57A7F28AF9E4EA9843EAF37C03E2F587B4DA33A6073C1BA9C4273205056F8E218E740E05494CC128D92D73BBBC11390F511DC988E150C7A176C16F92F0F4752018F8C989E2DD8FB17BC2AEBF98D7A4722EF4957A5377FFEB541B932225091BC2D38C331B0A73D389467E457077FFAF05647CC7ACA4B76B4776F7BA5E83CF2475C592A68BB730339736780C9AA335B0A9D79B00CCB8D823295E4AA3C3A4F3D41F939731DC06D97E63E0FC2176A014F474BB4058A38518D4D9D29722B758E2CF9E2C9C5D133F1619F85F011E3D059DD76EC435BFB5ED45FBD41A5CE4B3CB3D2C8CFB901137801065A87E5A931C64928149F0151BA47FBA9AC35E28C0C20033E837CFB0C8BE0EF13E4D68F6CCD9B25EE1A7C1A2C8A85BBD811C5EEA7C50A9B5D62D2C2F3E42919E5D0C9F99BED2BE30EBF64A1219D108F0AE87E5DAB93299F7E75D060AA9E5F195C4D1D9860C75C3787467D761DB122E921BF183CD76740FD5F27B566BC35070641410D0226EA7774AD0C10B00CE499DE9603CE1F7CB91F8F08B5C66AB7002C7FBE0D86CE88EA82552A81B70F1ADD5BE019C4C036CFE888D8A45E36F69F56458ECA45EF142E55816057A5F0834838DB440DE1F15954586A8D3AEE6EB7475 +sk = 7C9935A0B07694AA0C6D10E4DB6B1ADD2FD81A25CCB148032DCD739936737F2DFC1FFB174603ECD83AF919C395EAD2D2E4625BE3A4328C928AB22BD32915C25B5D6DFB805C8089B8078A6833299283AC83D9033D6D000AA6720C8CB88B5D7E84A45FC8E579FD0003E6B981D1A243F7A0E66B7040501D9DDA56F7FBD4795B373B0A3AEEC94F4C4D1BCE97344DCCD9615CD9FE0D94474F1C856432956A20D8A04F07A00C0CEBE21D38503B1E4178C4AD6A89E65A41E051CF37EBCA66FA926BCCA9FBA0322370F7AAC6A7EC35CAEBEAE83A0F40CBF0C6A3216C28385BF3FE42E82621E7EE7A3DD34A61598E60EB5FB74F9DC8F245C02FC2AA8B6EB0F5D397BA51EA63C392B05DCEC3ECC658F3BCA888228C8882814FFD86CD109E1AD575A7CCD8BFE17BE6CCF6A25C3558B3D851C37A4CC5D69ECFBE2D982415888C2514F2EA2389A830C0C408B3BBD265DFF7B7B7FCFD39061C55CF75731ECC8D9740BE64BC11B1FE724070AEFA3342739E32F00EE7865C7CF45A9D2FE748D0D66E736A2E85EF5387A75DFE61686D9E82218EC4C0ED2DE504843827930752F69E537F83339BBEDA857853DEFC92E4C981A51CAB3EB44FBF28B3ED5EDCDF7AA94A406C97CBEBAE9FAC73D91E55002360EF0C0D1A960E874E77F0BFF9BA736552F9A3706BC17560A26C9F2956FC8AB3CA71804303382EF5068AC1AB71A34AF83C97814345D5A7DFE7A743C95BF851275DC346492E3303FBAA46EF5FCDBC20EC9FB84FD34BF56F7C1DE4A4FBC8751F030A4FA4824712E4DF5F27E7A3EB359A227729D59CDFC65943B3ED29E4DB4C1EDFCB780B31545ED05A234211194E6E3928C4B2F778DAA78818B2C7482440A2F66AD15608F8825FB1BBED83BC7D5CB204098184866DBDAEAE08A17E73B47B7CC1C9FCA7136DBAE9A3E5C17278095FB116064AB36A0DB4ACE23DBD7BD542E071CE2891BC0C6032B56A0AB5747F8917D5762FA23087A154AA12542A02CE9F5E956B80248A7F02965CCEB2330F861244F022B2CD9D9FF7CC5447C5D801E4E8C11BBBECDEBCD2BC7353638EDC9E446927CE445FD6AE6C13DA5BE9D45D94607D423FB909BF7B50F944D07A49DC921931633902CF71EDA1DF246CA482DD30209FA6AD4D6564DD54487EB51FE071C6666A94F9A3E46DD393FB3B48590B93E32F1B9ADCB80848ACCA8D09384492FECA66FE42D74B80CF45EF7DA32AE65A2E37B63C537CB8D82A93D1FCA7F652B465FA84CF59C8F8BF2BE45A3F63A44B39902C0105B4687B111DA7C4F25965DE39EB2F35273AB8946184D257617A11D74861FB93F8D57FCC114716D5E511D3C923FD0305D4BFAAA74169B5C090698FB2850935A31AF5DDE21BED386CD2356ACDADDDA4AD816A1F8D47601C262CED3EB6EB9713D931D8A46994BF5B00B42914398CE4D64C336181DE48435D63BF73079C0161C592346B0762AA6B5273190BE9D93D7E25DBF3B4BE7E5BCD5276D7DB3857CFB20858DD0E82FD8B7366B6A6AE91134F2A27A0BBF952DE1DA0E4718CCB2E6576B6BA0A803F3EDED3B578838E8C892C75C5021D486364329D0DE8A6B8D409BC0A40C3009CB053E99DEC213F3C14F4F944C7D50F5F79AB66D8568F7A7E2D4E29D53534C955EDEB91072C6B101FC4066CAC1DAEB6ADF4FC388AA5747AB58AA503984081B157F666DC1A339549135B2ACD696E48DA9D3595F5A7A91571F6938F50CDAA7546081B28B755B165B906DC0E1EE8E723541E3614B5AB40C4FA682C61CEBA70C32EA817C0C5AA5865C65EA456E8FD4ADF4C6256C4508DDA717743499427EF2DDD8354B2CA6D469B2474177B1402ACAAABB9AC934A2B01A2CA97F38677A36795D9F337EF6735147FC275BE8F2FB353E3D621D1DF78CB9A6B9AA933C7BC37293E48F8A5554353796B74E7E404D8112B8A6B109C77093F3B35D3C92DD9B8EA3038B925D6A1E1E364A6CB3E35FC318CDC68A30E408E730FC66685212BAA3C6E285E5A53F39EF917B9392ED3D1E6B2986400BC130644CBD85B93BA058F91054AF837D877BB0D192110B68EB2D6C74C11E8C1734D24DF026242661C5DB83F17421FA865AAACC354B7019DE9752D5B452B690278AE1DF1973E41A7CCA0C69CA49D7062B2413AEFB0F2558B72C59EF8AA15E27CCF877BC5BD32B80744CE0C2EC8F41FAC22676D158A67FD34FBEC0CAB0314F2497105B0F4D3C9AFA89E3CA6883C44EEC15DF9A91077ACF25013F653C00BF8D33884459A760383E4513B7ACB6D90E2B1D12F7EEAB6805B5E676E42A07F4406E7C8DA536505DB9882BCE111EF0B8FF6BD850D9003DB0730903E97D6E6AB5FC53BDA959C29737B243E77B41D63D72A4C5CA773025DCD8E1FCCCFF3232C176EA1EA10363407F6DB57BE1951C893E2205D1F576AD701294DA90EB67DE8789A06C833D6EF31AC266DFB8AF0E1A360D801165873732BFCE01BD9DD24F6C033DE9580C5A0B0BA4626BDABF11E1C07026C7443514935B36603FD8ED19A8C02B416693EB61501DE528DFC4D724A7DF4A913407C85637E5B4B39FB2742FD7D9E9C1499D6AF37BBCAA09C1626FA5A5106A17F984034C1FCE06C6CEA87379A9E92981AA32C90C32285925C4099D3FBE4F00A723A4B1331F4332218A38A6E98C151DBF7851949A593023AF55A2822CB87B32C6AB23CA90844CD3143E9E74AE0D88F8402354A8A0B7D62D08BE70470454E3FF6C9BEFE9F79B034029EC5CD9409E0B867F647364A64EF9602A657632A10BCEA7C1152B15B9F9338D0AC1DC8C8FEA4AFE3E09E18A8D5DDFADFF194B105701FE24FFC77F8E1712B253D5EA24CF55D9FE61CFFBD47C5A1F6CEAD70552DA10BB804F3E11BBBE1124F6A62CABFB07D41168D69F78F95AAA1843D9A70449D5550A34C91F4E77F303E260F79E4DF6ECC3C6C9604176B553C60E0DA438D6343464BFCE7D93FF47133D7C5E833AF664E2EACF72E1C11D32B22BF69F0F5888CD1CA65E312BFB0FD3602E50BC4E5FA961E959CE8392CB7811ACF9E9BAD53C7D79808B53DAA22AC8CB491FF063C4DE4F43BF46613243D69F7400EB820F4E6C976E27ADD9827B5B5197DBC20D090884237EBFD32D32EDF6A14315B22BEC6B9F22CD2EFFE9C4B199C97707078ECA20915FF08796BDBA78CA14FEA467D81485C94B3F86A793135386F3D473308C764D1DF8857FA7EDCE712E9E7BA5AF29858BE11314C1C77A0A44B06251E5105C84767B7BE107C14C092E92A9561E07E3E679079084A78CB86E1634527DBD9E69B77A108449EB271AE5EF8880B957D1C57641636F74A26216BAE5A95BA017DA558BD67259103F26377923C6F4174DA869DA9219FE7F4DC6FDA349F43990C42CA724015BCEB186ECE49C5C1E3E22FCA4AF2044C99CC1AF85D3ADFE9033C666971F7D25247189703D71B3D986DBCF97036E02F00D0A1243DCBCE3421BAEA5AD82D49ED684196DD6A861B7F9CE57C114B316199432BC893B0A0E41486D892787FD9D79CFEDA4CCC1FF1D0024076C47405FF83C330B42A01E019D3B7DA995FB690D2141EB875D53926239763EB019A2568F0A383D347267867A81876CFC7D851362EA729A14109D4B6E93F11A5409C8B28D611F4E48D3DE754B3F7ECCD14ED045EE25236B78023841ABAFDC6B67195F2A0663F8B784FD60EE80F7F91B673823FC84B9054BE777E0851373217A158AA5A8142B98265EF52DEB7502D0A4A55CB37DE6D8DF99AF3EA2CA2FCBC732C38C122AA5CE76FFCC2993DE15D408BD0AAD1AFF70975090AC65A1D9D9D98CA467D49046E9BBDF6468DE50650092351C4FE2DBD451B048BBB32EF3A1EFF7161935EC0AC9F7DE2E3EBD0C6834C1FBD6F4CB369E491DB0298BC925922B9EDB2326F08D4DED8B2309112461BE3673F9090C1F905D43A5A85D61FCD87B9B3367B754C4F40378352396655F76013DC4226BCC56BB501050639C94713CF37E4E7E1FE70F777B8BB809750659C09AD1F96CF3FB05D839E49E07161A75C7027E3B6F40FE24BCC5B42E59C77F100BC5923C13DB5F13F5D3DD8B9BE27F59F309481B1BBB17459190ECCEDEE158F935C9AA344D2734E63E6801035B13B763FD211A897FDE74C1B41D92909F4C0721F7F3D573105FC666033FDF29AD0C22B931C63C8519A58353F43BE1050EE0DAC6009D37DB37E30DFE0C740A9D7DB044561E85907A92E772F76562560ADECBD4ACDA9E3874715A5C511003EA4E0D5A40714596410234B7E693F36DB452F25EDBAC5CD74FB3DDBA465F19F8F035C806289671706C85B6657BA82F91C48BFD6BE0E8BD1E46E64DDCF67B027114CFB722EB3D289346D6AFECDA0D3E4854EBA9A9F784528D9BACBC3A8371478BA2E7EA084728D2D4294BD71ECDFB753FEBF5E8FEAF77723574BCE94B8F99E2FB3056AA2729927CCA27C0DA7570ED53065D195CC3FCF6C2501739216F89C2178EA5C0B8524F7F5DBB00A0C6B6D686783680C17CEAA3AF67E7D8607ADA99BE4565AF2375FCFB17DA0C28106F6FA1B1DBD70951DA0A3DC7A9E71A6B76258F815FB069A5F48FAE1DA689BCBAD2726B57817BF0DE7AE6366F433607B450F78E545C2CB96F28CBADEA1B4C22EA3BA0420ACCFC87CD2EC73A44AD5D27B1EC93C32D68E2D8035A3C315A7C5E6B44DB7975E0E3D88EB7927E44984F07CC6BB7342DEBEF4D2E32E2B5A8EB7768DA515887C21C86CEB2328A28DB3CB473B119E03174BFC318B4A92FE2B05F0A9F4825465F299A42B4FBB6B5A71ECBAA3FE458F80E289E4C1DE9C56E811252E75E225A54232156F5FD52B494CD9BCAD36FBB003586FDE32C25F08B1E255B8858665B2F2FD364899CDDC3469976A4B8294B2FD5578DCFC15099570D3CD61AF5FB513BF1BE925782CB0E26691C1A2CE1A4A05795652C1A7FCB24ED6A479AC0EEEAD48E4AE8128109D22A671CDAFDBDA8394DA4E277D9CBD48AAD8B8F7263A6C1210DE23D944F621694419BDBC313D93D565150759950025D4974C41DBC199D1D79CAD05F4CBA60A2E4498AEF0BC897A2F97309FCEC93AF3E1AB2B854CE98027A73400A868243BB2697F7EC59E13DC16F03E523EAA6954239064D02DD8B07B0C1DA9CCD40E6725672E2C20507B37682AA80087515EBE9934E2C645F9CE5CCE3116E51C3332E0EE69BFDDA2A3A3D67E4B0BFB94F2E188F159506841A4E21F5FAB16F843A686F4B449845B343B5D44304EFB52749811F4637936D7366AEB0E8AF08CF3FA24EDA551AD469ADBF3D2053A35A35FB1B7AFEAE48822DEE6640B23DBD3AE0059BA70DF13B04E99F76FFB03E3E1B013C17128E526AA5C2BD9A0DDD604C4413C72FA16B70AC170D4F7ED5F5E8FDD65F7F16006DA4D90750E57F0BBDA69E5D3ADF74142206AC9F14B6B2A043A11809F0C94ECD1BF844754DF00A3414AB8CCE583A565FC8B36E7A6EC0BBEEDE7AC1675B8A2C615568F7B8F8A127E0E4AF96EC1B59F6B6011AC755557A348DB64787666B1852DC227A725DCA2A8353E73CC57AFBAA231E72D65C9ECCD343CEE2084084DBEF3D275FD0A514C84362B0181E5FF7EC632625CC5E9379D151876F8A6E7A7B30DFA2D59DFF446D999636F6D153323E15FE7E4FFF9848C778041E5A5746E000596865C9F19367D31A469CA661B88519C96015117EB06E11423F20ABCC15883FD0D64CF2D47638AECF9262CE0BB96FF850D19800B1484166478A5124981FF4D189221EEFD32C4D77B39AC38815559EF04DEA5DFABE1566F920D6E5AFA7CA26681B83323F1A14F3BAF80D3C995230FB568FAC509A6D9D50687E9F6235FAE877FD0757A0FF045F31CB043408F10769FB357B07F273CF6180D8B6B58F51D91B87794F7C57C162FD89D17B7F7A6AE84E5993F2EF0AD04C7E03175FF125289D9DA846B3CFF3E5DB289799686452BE7F668F2B57F0D3BAEA97E14C6F84DBBA528268AE90B3C92F0FB9A5DCD30747AA580B857AA8A52197EE11D59738452D19A22610941C1AC4FD0CEE2244BEE582642B97CDF844A00DC5FC70E6C101E74E3120C1656F279AA4CCBBB1FC0F07B754363E3405A62A009DAE69D7089842298DE5263823D854EDED1D9E8D439FE2F4E1979BBF45EDC944BE53BD4686645AC37F18CBEA9FCCB317BC9F9C9A21DC4A66759E31F72217FDF65D11C6D0AE7B21C050F0961D0812502C86E3A93ECF82A4DA5FB2C681BFDC03B230E88750B3EEF9FE6240D0371436C2D9BB20BABFF09D6101543C561EA6B2A1EF731F0E4AF11B3D50ABAE6190078517FDD26309B8CC26C9AAFCE0D586EAEF0EB4B7AD64F7CCA9A5244459D065CC389728BA029E4151AAD780FB4F924C46535B883D9EDFA5C910BC3C0AED54C44529676E326E58A97C52A5869A3FF1FFB1EA3AF9C772D97DDD00F92082D1E5EB0BDC8FC3786446F34A5B6D34D63BCE545245650B008059A78C169B924EB5B5273C3D69651C70390878A5BF55A463CA183E1BFED5B4211E2195ACC4B13A3D8C1CF34104D237FD4E640FF892718139A6BE7F39C1FA8DB06A1695831C5C7EC0DC2D7AF299AD0DC572C4B89CC2FAF7CF3EC781C3367A98A754240A0C648D6871FFC412157421897E57438AE6C5CF3F9900FF3A592E4017969F480E33EAA6815EBFDCDD00BB4556F2F588BB221BC94C8F1BCA1C26901D1BBF09BFBA336BD2851D0F83BCB4A0CDF25216B0F880CF3070FA4981A1AE57693033C6523F2E9A8FB3588A3F0A0B7789A9B2AB567DF435622B78A744FA703D6F4FE0CAA6730C73843018460277378F7286A0ED1A9E214518A68049800E4D86573160A7DC1B13DAB81469E3D4558D162274EF39E810B18C5D5FFD39A9EE879783499C766B7F61746BE65D02BE3CB4AC03C63FD2EFB36449AC2FDB58D89132A864A995901FC3CC8DFBFF52967AF7A9F1A6C59ACBB3219713200E0C1A297B396737AA3C94F77B727B3273CDF729CA9371F6E885A8077E4AFF00489A704F675B2CC1B44E15090D360FB683BA4F892CA85B0A0AA8BA59BD121D4112D694C380101C27B0C5CF90AC1C4DC08414BEC3DAC4DE4E5614567E61013B3835E6397D64E6416EA997037DF02EE6F4E9B48201B0C33F3F90FE9BC002238C9537A2C7EE6F1B1C41E351880A034CAD8C389DE6DF5F48B6C35BB0B9626787C22341882C13DEFB67780A57BB34E4ACEE763049ADF1F894F54A30B34213DED7E8FB46449533BAF0222D4ECBA359A98322B5A64E841D8EC6C9CBD62E6906C24AD3EB3885E3001D576F765A6CC90542F1076724413BAEE465601527C2A2B2D46847894A5D503C740122D07D789D1FD27AD7258542C1B84C726FC2D39DDD8E4A47ED7318D8C60CBBDE7144D4FADCD1A79EF6103B9A521F5F6781E222DD3778FAA8AF603340BE4651767F721D028F5B8E91F978479A8E46212F3A76D022C0370F4079ACC51B92AF1B3BC894D3E4B6FD06B8D585BE01244B8462BFE211197D8BBC413BDD656F119DA358B8BAFEF833637331FA83EC5B313BF35DCCF09FE6DB611AB7F5BA6D3C0DBE0582EE28843597C4C9788730B649E576BB61F036807D3A4DCF9B0D3DCA18047E8AE1622779DE6720BEEEE64CB5FC7E2B0F9885BBF1E23055C1640F528B81D90ABCBE080A940F6892687FFEBD3C66C8EB90415F6D966FEFEBC94CE70C5DA49FBF1B7D8C62ED92FC5F6D32E8C162D178CFA8A709E0E58CA8A23CECE8E7F68D8E04AC359EB9EFECEF661381796240DEDE6B719B28963074E5D30730621CB020024B8B50E9315AEF8A46251DC06DAA86BC9D2D37AD44DCE0C2633D29E4EBB2EF53D7328F75552DF18855A86DFAAA815711D7A4266C751C7DB69640B797451A47ACAEAAB27AA26738FD5049466B549744D988E44746DBEC3B1A58DB28BB4D7534F15093BD921C6E8385AF2951E7201D356DD57C593EF8103E1DBC4E009BA689ADE70A2467B2514D62C0569C2F0F45A8DD8C8B6401F4C15EA53899E07A047347396BD1C8844B2EC12551F8CD087A19B38CB42B8DFCA99439EFDCA72E048CF078F3C48A694E9CC95C8AB1ABDB823E0318BE998DE30B2EBFC6DEC26F3EAC14E6C50C7222F1E7816B6F7487FD9206B3A4FD8CF833B6BAF5BB9CF87A45704C035C479ADB9B2AE70B66D500EE37A9562C33D1E7BC62536088BB303D72F596040A2C90E569B19DFD5B39E2C993506D7F13552437BBF19164749491E6C42FD6BDD96A2193D90D259E22259239F57B97B253F7E0BAB5F2A7DFA7B4E239B0331F0CF7B90C444FCEA6B118D5EAB37EB51EF29063D9127A145686C1D884156D286ABECB274542306E7A41907493FD9C486DBA99E6458442060FCAB00AF522A1E05E96DCCAB18480BDFCBAFBD314AE55558B771DD7CFEDB757F3C16EDDB3142BF1BE88AF5A44A13875BA1E1FE0E1B18A5E7C371A058D5B652930FB83658E21C23E2E1CEF33F59499A333C2DB3F76AD45E7AC3C44DC0A5CD57BFA49165A77F4B4D2396F15413CFB127A32A1F6C5EB9275CFF1989B308A7732118752C841554D64FF5047B28F9101D41A44B6616A5A0467C0370F714C50DB47F22AD4A36C16FA49430886D24A5E58036FFC06D5762885141BCD4070A0EC7E9C35F35ABCBA512F53E89E6FA2510C97329D5A080F0B366E4CCEB96CF75576B2294608397C3965EA1561F1734CB17B6EB0CB3FCC6C3DA8325C0A993F1AC00C47060409C7C0F4B2210A0929192F15485369EEDA4447F5CB6D8F115AACDBBE5D3C0AD63434318A5DA8291143F2D72C16D6DCA984F994BF0757BAF29EBF4A9CD3AEB3ABCD33ED124E0B3C98BF2FDFD89B0344BC65050E97B280758EA1183A1FE3655DDF48B2074E0BD60A74BF45CE11DC61EA1291D9AD0C97341358CFCB367734C65E3A96314284B33A72DE81C6B125A42BDAB876E0710389CA599AE8C83B0F67F2CF00E6F7D4A7E553CAC16C68870856DFD51514784B4622D9575C01F4156500EAAE3DA7F8829ABA4D717B3EA3C28D290C0EF9183E5506F945B984728EC3B0E7B1742515AFF924506F779AB59D3051BAF84301ED2ABBE0B09006BD820FA579EABA4AE016E895133A6968147376BD0A43962FD9FAAE86809D70FCB5A14AD884AAD7C7813BE28A539539620A1E73BA276A31BEFC5955C0081F2AC6270B5F41485E0F4CCF8DE474F14F984866DF7980CFDE8F94B94F6006B333E7D91A54DD51654406F597695221E172ACF50E36376659A96EAF53A6EFB438F4515953650F0DFB3980553773D27EAC2E87749EF21C7C5B25048773743E1530CD04013B079BF2D984CAB24FC6EBAC5CEAC480B2F68736D1319F942763CECED914507BE7B82FA7D3D6CDA842C2F21EF8F480983F73D09CDD9CD749F8E04825303A63365231895CCC560F18C13019F2F60DB26DC2CB1E91F0B8E1B32C43C80385682328C91783BF6F61D3D916674DC84D48D4D1252361C9A4C76C09A67501B3DD180F9984034CDFBFA29BDF888838E4DB037A78761A0F4582E9E0110E00440C2C547B24BFED539AF0A1B9C944CB36D591BA4085EBE57BB7E164D3E2AE511DEB2F954FBC86C06C211DA7EC44FFF4CD1BB19E57F96B48236D451D0DA11DEBEE1C6DD18ED12DB0E409740E6473BECD4EFA87E09EEB1D205F90491AFD3EDB3BF7888E779E273B097119C3141C33470D0B698914EDB7973264D200C5EE829E4D75986F4449249B8BCFC2E79BA049C6B08EA9C5AD9B7B2572986894D063FA7CCCB3105E9DAD5892C74976DECD1E51B5D7DB5A20A67AD2F4ABFF8BB6E676DA377EA29CF293C2162F6A5540FCA3664A84D7A94447D448A317D39821495EEE71A633A31E974ACAF1DACFE93713D52FB25CAAB0285A605989167F9EDBEC15FA8D9AFA4870C6AC3F92336BAB76327EFE8A4D304E024477F5FB5DABA8B261280AFC08D1BEC364B290F98E92A7970C96179F079F350E2FA6B7F081DB4F38207E9CC378116DC526537C6CF102C1BEA4E3305C6F80F014552806991E32F12F07E26351591C273BAE9031896755B303481021CD5AFF0C55069DC80B82527E8036F526B297DC98E4CF3DBB67B33D97F0A433FD0C6FD85F297D2D0F62EAA5DB1E39D9A571D01AEEF2D128A83CA738F3C9B1566B66597CC8002456CEF190F68406E55DB62F1DC1B74989F1DDBD61914E46F207336DC71050C781D4D97B4271DC2070E694D9DF12E32938EEBD7BEA09B85D7C12007E4BA71F4D85253917D23AE582F9AADE76F60C64F4BB9A720C90D9D1F11092C6973BE569D4DEBC60DC901DA4D51D68549739E23844C726C501BD6D38F5E6EA72EFA21FD7F8FF8070CEA8EBC365AFE0BAE59FD87C65198576AA25DC3FEDE55D1C94BE359F8470F17ADBCEFCB3BBD58692BB43F2DF54A11A834A28C725980348C0A68E5E9D056F1AE16F5D29C24E9449D30E2B85832A7C15EA0292C7BD4E62CD05AA1838CE3AE52CC482A45820A5BA4D93A776CCF48FB6F70557ABDB7D2D29A058EE4D17FE26EFE30C82479193AB43EA50D306D3D2D4A5C821C376B6B6C9B882B796193083CEA8DDB00741BA80F43793A989E6B3667FB1FB2228F0076C0F1960E7EF74B95E498D56B0C3F8CD2317F1B8079162A0DFB471143244D1130E6284018910679107FC822186AD8F3D907BF036CCC80719102250517BDC53DA13B5546C9C43333D4C8846F8C64B3365CA976DAAA90210D28463B7540CCA8F823B1CFD26BAB9A6DAEC04E373F5EE098F0B718F83632F3909196622CCD4723D0735358C87C3ED5C94582CAD4C2CC86CF51E4A6FD9ACFD611BEED06BFE9E50810D17C185D71767F165C063818BB8085716FFAA3F3B2F9E025CDE61E1BC0604ABCE2FB18C7FA1795A8828A234696F136B94A2F7A1510B548E749527D9FE5C43AC543D59940220A4BAC3985FBE2A4FBB63F94EB785D88799FA9261CF3B8444C5A6C7454C1C6CBADC5D669833D3485A59CCFE5E6DB500B2E780B3A2551AB0A431C96CC844BABF5A3C99CA6680A3C6BE8B69089A2B2C1C2DC4980DC78509576C5788D923DB4A312FA6D1489DD4B5362E95EA7F0176A71023290555532EEA44230E7AC42EC57C17F8FAC681DF68CD2C8150308C832C66897283868C1BBAC09A807F0E9CE9DFC6346A43FF286AEEAEB9C569832A4E959E6DDE57F995794157A0DBFA82139970C8ACA98AEACBB2691204EAB654877E6D57CC3A9907AEAEB93CD4B31A1F5D54F8D9B4B6F2A2058BBFC06FD053AAC363216FC6CFB47537040C991B0C168934B9A0AD5A6C0075243B52FFD5E487DFE9259102A87504EC9F1EC8424D07502288609BD2DB0AEE445DD88462CCE7D1CDC6DA73AA1B0B7DF8D6DADE9F4AEF27BB62F6E6B4C3E94F7E0CFC4124B400999E19638F2D7672D3371754326B94245F6FAABACBBCE51AC4652EE4CDF5E03EC9EC21CF022F00752F9A73FA17867DD357BC1569DB916402A1142A65E60F1C339F843E8FAD6F43CE1FE7AE535A4DF083C69579927AA12B55A0D852496CE482DE9DB7CFDA12B8A24B42A3A3D59422BB6EA66E90FF02F1FB6EBF35C6F2AF9C5B2930CA0EAAAA8D7F90D629948F0F06EE971D5F5746850982CA6552086599E6188E98E8993DCEEC9094348E1E46C75D9CB96AAB40DFBF169D088E3662F2D1E6CB6E365BC5300FB7EB02B88CCCEA0A0CF5F060CACF3386B9033127E94261E11D333FA4638BACAB38A3C3AE4F88EDE82C4ECE8566600CE4B1231B83BB54107172603C26E9A47B1A946B4BD2B2DA27847D6A90B584A073AD7BF6497098C663F135D50420C4477D6310CE9F2BBEFB3EB077C53EE9D8A195BAAD39BAA2ED8C23316E6E4BECCE8039D84C6BD89B41EF30837A35434AAB433800F7ED812091400EB51D05087394E59B0E26591823A3135EB9C208AC7248048FB782A2AA390382D4FD6EC38E3059F9FBF0C90E16E9C06A0275CA2AC225EBF6458AC40FE52EF373ED3C5E47310C0D27C431C1AD6F52249259F664766EE7754B37B335830513808A789A9FC4641C6FAE5527C81B0709E3C71FD7C35872608B774ECA4A2C4601561BD8E49FC18007ECC506DD58239087226948BAA677500F6B80827CF033CD6225CAB3C0E6C24BB05CE5D778F61A22CBD775328DC1EC77A0AF09FF7E33BB29A71A9DD5889349412FA6C2108507110297699D839A2B5E75F4EF54C00A4812F767B0F26483E72E92DD06D7259C59F4345EC6451A2884A2924A7CCEE3A97BFE7385AAAF8196DD77AA1FA054236FDEAB0FE5F2217F921306C3C6F82DC5DF7F4937EBCEACC6BE15AD1D18662A5497F5964C7E66434D4222A5815324BC6422F9F9F1346E226B160977342E1EA34DB6B4FD6DE90F0C218B5969610A2129164FD7F5D50AF8D49D95E47A9CDAA13E9B937C9A4E8E9A74991D43E55E38624BE79B9AD640C581101EAEF60B52AEA1A6EAC5222900731C17B1170F368426A91C390E62A044EE4047CDB1845949389C4A1D9F6D34E053C155CE73188109907CF083B828309483F913BC7D94B90C19D45B0BCA6DDA00791DA9C4F6DFFBEBD8B916795510D5553959A6148F3F594DCB2B278323ABED63D2C239D37CF2D70131EBFC2FFBEEFD28FC09F4A95D3B2EBB9C35C85F7FD3CAD7E6C75C673C6D89BD82B925351905B31B97E2128401FD989B4216A28AAAADD3EEE74A97B8E5776474AF6BDBBDAB139CA2E5E245C395C0E62BA9112ADBF51B108DAEA2F7766EAB7EF2D9E12579757120AFF202CE49E8C47C75E7E15F45F680A9086C8F201F404FB28189ACA9072621EEC110632B7EF438790B4380338B78104EE9809D92E366D10C26B502D2A47E1BBDBD7B0D6CF048741D9F48C06FB176FCE86601F1ED529B713EE7A27053D097311685136CD8A3D2866B16CD4CDE78D8F9642CCAF0416F3305D9D99921ED63DAA34103B455D7C294D139991289CD1886CB5226D75686F76B6540591D89136E1C8A073D7E651B256B77DA869EA16036AEE6B705389EC6647DFB5C9EE8DE8FD8482BEC76DF0FC9667AE59FB4FDFA5866DED6754F6155D8EEB5590FA27DA568FDA0639D8B48EC913BAEFAAF3C8E2591BBB488B59EA2042591095769BDDCD081D8241DD79779174468A38F8CA55AA83787526DC51A1E1D64607B6AF637036E5F45870EAFF200C1766857E6978A7720E6C652DC5FBF9D18FF3E3E28B1035B86C30E154E8D29D14E1403BAC43DFA82D09F4ABF3BDB11D8EB4E101F23B7A334B958980FC7392EEC4F915B08DAC4C96AC7C84E7B395648C6396F797CC6D62475118CD0140B874A20A8C53D7C765C05B5F5CF85225897121364228FA8A518559DB31A33492CC38B3E04819BA5C0895E082335C6FE9F218E6E9FA852B6A06E929C07B18D8B528AA755ACAF5B94FA9862DE7650FBABFEB945E3A0E3BC8C1267B7C982F082FD5113D4975860920A25EEAE42FA49D5C814E576550529780DD0029EFB44C8313035AB3490DB95051A00F9C5F2A5819E4A36917436D91E8E5E2DF652A6997F60AAC59AA8A64357446D8D1F03BDA8A39E8D661954B29933E852C685E389D3646EC34A24C63D3F3DFE1B55690D51C54B840D4991B326712911273DCAF341F150F2C01B725B31B49700B62ACCF1786B81C16BFBBC15596F5B0521179BE6563CAABA6626B52E94509BA5B99E7C31E93F3C44E50DD7E67C525263E42182A91C6EB6712E1B29386E0D25E514E37C00D0E842F8817020E4F27047659880E3D304AF2C178E06D2C54EF7E8C7421EC59A103B27AAEFDD1C06544AC016FBB53BAF538B867B3782D74DF1CE883121490428C756FA49508FA5B19E52CE06943B9E762E23662C3A62A5019E77121DBF00544751EDC91CE82C6277FE6D0F8F1BEEE25BA83D616D71764D6FB1AE98B194DD3F92F1AACE8BE9904FDE0F89B81BC0384EDB0A82E90E44AB08C0DC003690F4F5E723CA1CF1ABBD3AB9F74DC422EA714BC91780072D89CE507A8F9642F34A6E7DF255F823D61A6C16455831D0FDE8F3BC2A5FAD2CADE2FE11A3BE89498AEF886891FA92B96FDD8507163CE876932B91924B9DFB8680DA7FFFCD28E239A54E919AF890BAD28E993E035940724A31E89C8930954DAF2A44D595A1E94A6C1270864105B5D387558050A83A5A88C71FD863B6941D83E9C0CCF35EE88DA5E8F0C841C5B2C6763F5328FA35756F3B54847D01D5540AD1F9B69E77C0A39F9B2DA9E62811154915CADBAFE55698BE597F1F29E28F19F4F9121CD94714FFB226DC625EC115CB1F106AAA07C4B9F45173B3FB493769324E433A106046D6F940FE29FA9D491A158258FDCECB6A24E3E851AA7A95BE986264D917A628A27F675F60A44176F5725F6F6F78B52D3FDF160D3B1DDA9B9CE549F4533C0E9EE3681A6C8E22B659BD2A0A756F5A0075423DF922D35EDC32A041AEAB3630785ED1ED5EDC9C6ECC3D0CE4985FED848B85EA2B779E60CF5D47CEF865378EE92520C8B2410A2F649E07CFDFEF025FF4211061EAA98D2FEF35F117054737F4287A6E80D5982B14E2962716974160544AA054C4B43247BD1842737AE46CCB5C42EA7441E3249BFE6F77C4A1EC91A3B09FCF4053D00E77826286B7600BB3D0D11AF1D2E041B7B2998B7E02F92E1DB0641B44978344B2240C16ECAD19B94E84E7CE15269018FE64AF2E2098119A877D872EE9A435908547A00013AB5487F0FB936C76DA6DB3C26E47A5F7479C6E72AA53F7BC446F9FEBCE2FB68587BD0A8BE5E168D779F2F6C0D4784C1DC1399027C0DE9BB49DA655F236747DCA5F085EAB1E845C4A670D390ABDCD172AEB35373C5A41B49EE418162FE5F20BE8E15DDAB654485CAC9A3F2D09136013B26D712764B827E48ABD81D8D49205415E7221A9DBFFA3381DB4E49F97602D5EFC24C7A91042FD6D359D4A99435816BAEDD929BD9D39A3EECC6D5009B4CB70F15E0A9F22FEDBE26B9156F8230994441392D96EA30CE7BF8C14E437DFA0FF9D2AFF7073B6829150C2BC84AD50B59747DE2B09AD3761B1DE03708DF59411ED925175132965B3643B14048767E240966718FA14F0B5EF2B917259950A588773267CD793ACA46315BC80722D474DE88FAAF886BB5276EEDC362C4187D500863B3BC184B88B1685893005D8C08310206BAB16F0FABB9345773E1F4B5F28847214597876A84797ED38FDBF88B639C708357639F21496A0CDCAB1368E8396A5DE12CF8E90CF23A5FA22EA0EAAEED3C8E8AA2A3997B474324E276BD424AEECE66DF490E7832713A860F494CE8973918C5616EA4B2B312F92946EDD8B06CEF0AE6D1C05B4C75185551FC4E158CCEF98E082F9AD699A3CDB31149A0A666220FB498811CCDB085A653A913C90DF0774332671895A48308EDD60EE3E72F6C0FD6F4CBD04D1B23ECF231049B69206D5386C10AC26BF1B68FE76F2F7C3014B86A09FD076FCF138BF4A1CA4E3AA1AFFE0FBA6E08AAF569B1AF4D56555A578BC2A98D9443591D273B3A5DDD071C8E8B5595DBDE2D571F144B1A24A78965590DD8511C945C8217C12CFAF5AD4A4FCF334371C5A11611F6694A15FE43173C6BB851E89D7B3CDD583CF892F70CCB6EC84A303797D77103D719DE7E1F3C45716FA57D1AC59A24C3086D2C44688AB0F6EFFDFBBEC6D53B60A1AED7DF7529274FAE803674433FCF8C781D529816CCE13099C97D2756C21F09D2E9D11A6CAEB72CFD44F5C9F6C802B4AB3D018E0C6A905E282FDCD9FCD7B561A1D9AE2C0D67599E5AC764E4D37AB621E377762876A1D72305A9B3FE83B5B06F34FDD591F57ECBA822ACCCBDD1B5597B34A28BA6CCDDA3578A23F779BCF9911B53A85845DFB1F00D98E1E279F6AC6517258D712B811A545BE8668827679E7E873501F2DF05D1842497D7CFD63BDE1B98F1EEDDC414D033899F0698536435E23BD1F359E415589CEC88EEADC010F41519C00D47977608625EBB52521CB873316B6B05A4EE140828AF0336974FA2510F7500C9DF3114CFBD1492820801EFD0E5FB1917A1A6555D9CCE475628269BA540E7A5ACD872B1B1D3F3ED45305BAF7093DFA7D6640802BFC61473D8E4503CD890CB0BE897242BF89C626E71998F5AD423298782198DCFA31F2E22F9B6FDDF3A1D30887597675B2E7517958662F90770A20280D80A4048C3448C475DD4F3D29719469215F1144A4D05CDBF5500F14A13FF075B6FD65D8276B1FBC946043BB23CB4E04C8CC42822A8913001118FF6B033DCDDA7C6491FCDBD9F76564473C414805B47B9A0AC9EC087B2BFE8E10EF0119D4EB5E60AD61E6D17330D838AC0878298EF17CB86EEAE215C829EED6C5B72E51A602C15E73ACC75C584431D5AD22D4F2EE63A18D482BD08872E2BE429F0B4B9A66206D361CCF90045E77EE670F9D27F91E7FF14BA19656136FACC50D62925FAB1A3253A4072536A0C2038820D8442FD3C68082F37CDF8A09512574EBCAB9744519603AD972EDE4FBF6528BFE31278D39BA5F43BEF4B0F5BEC0853114B7A1E8B751120A45C4021E70B762EF676667D21F794443F6384D1459002C7790D2FEAA4F4CFD5EAE4282F6925BB61510575B899F377280727585096F9238F98097D8AEF38AB2E6EF2DF272490992311BE9AC354D90702E816CF33FDDB7AE1EFA47A3DF3603227D7D5DEB6E9A3EAA49144AE48E79FEB7677BC4514FCF83C88E26013E6D54E4211D7CE0251949ECF4149B93FD169969C092B4C818A921828DAA14F43CE017AD2C7611EE24BA9F6B249E9EE3AD75FDA690D236981BD63FE372A7E0403E1CE44EB72944284119642149805F497F0D676166AE6534B23F478AC0A876E97DE015C95190617A8A254FA90FC8BB0397FA51A1AEC2CFCE39B78309B6B18280D1A6836CACE6734EE44C8129FB205AA218F94895E78B1764A54A85D247BB892F9A8CA5E51814DA7821FD78410B2C2C0BA80E0BA3DC84F77080C69DE1BF453D270AEFBB27565784EEDA0D6A1557A50A55A0C06FFCE4AEB338BBB873B822E35FD5BC2B4AB673E681A9CDF0980189DAD62D64E217C58E435C22804AB08467984AFE12E123081A38E6CD271DECC3C725298B5ED9CAE3CB83E7F7C7582929220CDB236C2EC1734C280DB1D82900B143DF7CB36AE866E208F735802C218031BA9C0BE2EAF962892CEC13E9C01613B3EE932157D3DD8DE6989DE24540A5B02803A470A1327C6FCCA26636D01AAE1E542A9D9D2294A830619F13B5CD9F691F9ABBD644229F09E9EB89B7D5CB89C118ED13B5943CA5BC31ECD295E088B458047B4D2AF3BA7FBD84A9E59460D614FD0F13B4F1B023FCCF0865E617474790C732B604CF3A87A35F978A52A6D9F2DFC6C525CDDA3D513D9E79D1D739AE87396BB58E9B5B347AB26A3BC1C21A88724B7EC3F9E4B78872309CE8233215965C03FD9EACB61D76DCC62AA06827AE0ACEBA352791270744873A161AAD3CE488D4A6028A8675578A60071C83540686B2FD8B56E5CF8B3187789AAC38C2ABF7865CC5564476245AF71BA5C5D69D7227F06C43E1F733BA455D2AD19D2191F88B595130116D3D60BFB58267CD2D10CBDA76ECCD06D3BA92004DE01AAD75F204020EDFB36FCC298F7A545892C6D43A9788D8AF16C584EF076E87D172648C72D76A7C7B2F4F317C9CBFECE4001F4AB4EC72F9C38F64D4555A682D9DEE247AA7930D343A62283F3716B8ABE9DDBB9810D1EEBDEE1D7DEBB005525EEF7F647E5634BF1A9942480E62EBD7C8C3799E28F9A7DAD2A8E6E15D933B3185BFD04016F02AFEB23463E2938368E47A0F90DADDED4A72C3A544D4484964F09CF890DE6C1D950B5C626E98D90E88956817655EAD7A1A9A8B0D03866D5332C9E200CD984A2BE19B228C5E32D7B47ED0758E813E43477469DA93CC1CADA6F7866AA6A03E9A4B19AFB200354F261B87CEE9CFDFD65A5517EE016BFE648D25CC5D7A1500A7B83A08143491AF9A3D5E6590A253DC5383D1C0E9F8F8637644992C6DD294BFB91E13D49339FA99818E93E22FF5156B7D01B3B035761CC8F35F88A2963A16B746584D8E98063ED80C687209789DD7893C5E44841C54FA829D3454D14665B35F25EB14C7B68D11F0861EAA9DB90F88908ECF2393AA3BECCC147063978E6C1252A4FF669A4AA97B64ED496C4E2EF09C77952208F86CAFC4AC35DF2AAFE69430FB45D99DAAD4F242F7BAF8EBD5B55FFA6160B2D95F1DAC2E2147E822EDC8AD775A53156BD96141410861CE25D8CEFC879E4ECDF4AB3C46222E4ED02EED765BDDA86959EBA27527FB92BDAFA97EC0606973A02639B910820BEA865318EB624D0DC4B4C9C6EE79994F78635C085883031255CC0F2A1445F94EF9D9871178507AC8251D328CD4EA0E223669485FA5E77C667B497E72DE1F8C6181339CCC88C7AD04F74CD13195C009F372FE33B8A5C093D66538822C5C27F828A28D855F698A1CEAE61CEF958FB2E5E86F5C7B4ED0442B003387C24DFF4415A04DBA8A12F31B43C742830C7AEB2DC0A36F7D5619A2DEC904F2C7B454F538E32C133D6452C72A1F580ED71237F9F7C776BF9048B49386EA6391F48C896269E2BB442E530E60E23FC2321D82BDCA734290E9189D0CE807F339B566B1817BEE3A89125F0C6CEC9F2AC4BD43DED389C4CD6C2A60CE6B2156E7FB3486F6EA28F2FB83D5A3D322627BC5A7C5853E6DBEC67216DD3437E99D831CD6B8AF695B040A6233EB1F9F5080CF09610EE765066EEA34D8414D3AC8C67A77D87E217DC7B204603B5D5EEDDA9965B99DB2164DF599DA7F5F7741F452751EB5EE56D7B0614DBC372913D431370460E504ED5A0DFC7B78EB2A916F50012F16359C3BD8F6C92B2C7E805454CD00018FBAD7B4A8286BCF0968761530409048291BBDCF5946721185F61F267697F4888401A6E6AEEE5C6D5C13F56EC7963062232965D1BAF92EFCFCD4D0A3D8EC84412A508BC497C3E9704CF379A27756A3B4B1EA68EB79C923E2CF8C234A38E3ADA746C7959546CD06DBF4230C7B6157255CE9E7AEFE850D37693440FFDAF42E8CCB1CCC6A0B3E64A3AFA7CB353FC80E9EE546186785BB97A6109ED34990D8E56663759A76E94C2A2C46A4B900E6B8E5393C973E82FE3DD5FD8F42D3562305FBD9ED71EB2763FE0647A1784C56317050E6531DB4363FBCF0D79F30CB77681A153293F9807412736F723500733CEFB20EC3C8434720512FD90455C584BBE8DD48A0FD526320C16B9CDC85E5054D4F11BEC45C8DD77AD4894D2EBFEC7911FF4E293EE53AF3D7848C069EC3A07E41F8879CD15AAE845206A129F0589E854DF87B0A71A6899664F914AE42F105A48D6BD6B8B7F073CDCE2513A0017529103F326787D55D657E3B24859A301029B93E9512795CCBBA6904FE23EBF98C991EDCBBC066D797614ED9542262399A6E0787ACB142036DD41622FB9001F98CEBCAEB7E990CE06380809CB36E4CC802F17E44496AB48E69C09BC9C2578C85E6121F2E25BDEFFDA787DF5AF2FFFB0363770CE46ADC64D98B62B4FFBF0A9D3D16C54C43AECEAB084467793AD0051D52CC20460DB9C4F807FEB88CA173CD1ECBAEF96A932BC02661E1341879B08BC879DD3BB38FA0955B7D7094ECB07964385C55B0C0FC8969B383503D795F56F48390F4FB8E1ECCF5EDCAD4F373C4670528E7B26566A46E0E6B53FFB38D7EF7C5BEE77B5D6B61465338D2E5A23EED1B35F649C924321F3AE3A53A34ADB601A83DE9658533282E86DBF4790FD1249A9825706EE1947994D95D28EE454A5DA82CB23D97521AEEA4658EFDFD4945B1D6CD64D52D4897D4601754DAD93700257154741278082D937254AC6917FF30575B9C8C4EBEEEC92518A06E02BA24860DE50902926ABDEEE57D303368B3757DB1B4FCEAA0FC9617B54C2F284713E1AF6CAC52C92ECFD443670EED23B7164E445622F9633FD18B2485B72A74C74903B6ADE7F93DAA25DBEE3F86DB893D2FA7CE1140CD08729BBB63EB1475FFDF63856043FECCAC9E5396599B3BCA72AB3C7DCCD347A0A562A6AA814C4963DAA3B03528D7EA1430DCB16A70ED7549B742C05B8FB7CF46281971DB76A3EB10D71D77422F37D75560DCE4A6F42A3EA37209F7A95C472748B0A0BB5AF0D5755FCE38FFB11C7A13F5C780DAF3F5CC6D192031DD7CB4A976D9643479C7BC2F391687550A859AF9B35A8942C1B39ABEB831B51F85DF3D15C939235160068D9F182CDF2F1DDC6644D565E5F3E49C61942CE00B7EFF7CAF838D8CB374086D6E48B5F1A98E81374818C662C14E2410879ED80E2BAB0B84CDB510B1D41683C8391527038AC042C2E4642B891CDC8D4519E5BFF18BC7D03F20D3411E25AFA2D016913625DF7C2268FF47D406BF45C9F2FBC64DE29A6F0D78BB59D2D394B2B9D2C653735B4A92D458E23F5535E63BEE9EB788F5FEDFAF76E8C628C0AD31233E0A3A09D2A78878A628709B8A9A1D7D053FED719C5498F304A8320F246641007608AD6E7C39B4266EB69C2953DA3987697473FF42D86693C86BC269CBF4D5169E4456ED86FC2D3E1907168D443D9975EAD9B830644BF60D65548EF1C35EA12D93B836DBCD10AB532C7F2CE2527733AF4FAC203966BB1CB12DE9C5A59D57F8161710CE9BCC83896E07BF926EABE2815347A77AAE39C4E20B8147D0483649E63938C654977F59A5E977C3B8502261F4D92E288E32ABB9743194587EBBBFE4227EE3E7DFB1B8F47A0B4A4E747F9F34075336AC0140845962DAD30B8E1E3E3D186DED9C37AAED42EFE1133FD3E8E369A335886848821F0E10877B9AF45466F05A9E96ADDDAE78A1289381E40705A9BFE81C0398C2E73CD35D366C8BA8186D1DAEF07E50C79607A607CCB8B16F41C1699B0EE247EB03360486E5BD975256B4FD28DBFCB02E473F61E38D92F15434D7EF34B075FF5EF9401633047AB58BBB51926FBE7BF049FCA3BB522172CE23E99A80783A1995B9E664F1BAA56C6450F46875C4F56751EB6504C2F5FC754E18CE7E0E7B9B54AC5298098A871DC3DE2AF4D45061142248189999F8E72016DB65763C7A293AB0A8721C4C8E68C9C6C3AC7947CEED0FFA43E6B7F1095A5CFB3EECA8C19045D9083611A9C726A834554DF05F482A5F33717565196CBF40F0D726C1A46B432F10FD08C2CDD16701911CB754129E0A01C1EF8E03CCE8D4B7872B1036DC29203C11521E76EC2C83F2EAE33D3A1BFA5D40FE81E27DFB198F00ED4D0A75BF1CF23B54DFC16B9986CAD67FF5EA14BBF0E1EEF486746F071080CD3F650CA5F62542E5AA6FDE94B65ABDA0BC8522F8E13B0199440EF915229F6F1F6626D3FC81CBB21B6C837EFC744E3EBCD83F33E723FA2AF237D692434C57DFCDDAC86E57D3A452C75F3338FBD62E32E4C593F5286CD88E79F90CE1BA4A2A63DCF268DB8EB6A792533918F1EE4F50E611E2B16D066908E438CD234D46F13D92140E68BFD61DFA062A6141AC67211329C0D45F2651763DACEA89227C1A01918543867869AA4882A4053B1680F422A806E80DE2ACFC3D2BEEA6CA6C3CF6D8077171AD5142A709EC33FCE167A0C55AA02789658EDDBBC721AE01D7628AF986C8E411969987D51F3D3FADCAFF4ADEB288024B23F8581ADA580271A501BC6D4BA150C03C7C396370C5E9844E414AA33F81EADC797A32B7FD5DD5FB9B05F264D5E4B34F46D3FC151C5D2AB01B478FEA05FAC94E329619662B968FDC5DB3E4C7B4F42E7DDCEE0C3165D4712F753D2CAABC93B60E00E40A5AD1C3363B082E5AC2A946CC85898CB3649DDF7F578744B685AECD16A2E1D9EA630431D1D883B878FA5FAB4E4E1DEF6E636749C566736C20A9B642B15EE3DE63F846585045D5867FC7804E32E3568F634F34AFAC393A53AA9F847AB194DFA5C950B457961A0ABAE612FD4D871434EC857549067F2E8B0DDB24332EF8326C5D27E534DA69D2E2B61BE027F3F8DB0464F09F6C825DB70F799A98420B9C0D19B10E7A82B62DE9A9F8FEE44FA94C4B8913202D3375E93AEC4031CF396069ECD4A03637925ABC04FADCA31EACE4D0AC2BC057BE923429CB6A19D3F706AA08FC40A9F4949016ACC02B15AD7ABB0519EDF296DF306784B44B6F86F55FEDF666E6F62197012AD8FDD7E4C6559E40586C13F21E153BA5D3D4E3DA23AFF97429BEE9EAA34ABE7C099A89EE0D6C1E04B30FF49A431149632F9AD6E203AD4CA2B9440B4CB480BF8C4CD591BDA5AE1806926F4C3772F83877F0FAF1FA696963E44D26FA23480EB1C844D23C78999E14E4CE258E15DE294DE3302A03F159796C96542E86E26C79271F8F4CCEAD274E21F2A865124F70430422C08E65B1BE1B9E8311202CEAF8D4248C1DFBFF1B6911256B46CEF9347A31DD1A98CE69D27F5E05D1BAF1621D4A19F5D40FD8D799443365C6B8BE52C76FB2054C238915AD22121CE5C4398B0CF9C323A01C9EF827D4907B50B1457ACAD8488C35CECABC8D9FDDE6A44AF720CF6FA74CC0770812A729B2B568EC60CCC491DACF0AC755B519401389EDEE4F5214CB9192E3EDE5A6A1FA51F5A3D66E68D671C03834B5FD03F373D1054C3F1FD086551C27BFE48F6FFF07B19BAEFB90380B67A05720D8B69830BAF47A37F3317F254D06429C1EE6C783EBDDE07EE526D2153C8FD7EDC703BB2313D8E706997EED4F40A4F7F47AAF10173DC4C50995B35DB6FC9073D3830F4B1FB37D24F16F70D3ABED83316819E17CC55D85BA0137CEC58E24B06B77586F009DD63C8DD1EA4263A7BE649CC25715F6D750813B3B5497167419FF0B9C69ACAEE45BF9F116FE8B5E25E32041E1AB87234D3A5F728F12226E8C63EB7ACC6BAC5A954927323DFCFB3ED88F8767F43ED37AE4860E086E641D7559EBB61C3266B15DF1124734B063D6BAD24C5A49BB2C07F7DFE9D172DE4BD0FEB5CE0B8AB3B4917CD1991A3707D133DEB7984932596D938EB95FA0552CB62684227735F17137C359F4ADE57D73C67175BD084987EE8E247EEE146C807344BFF09C182F1E2EC350243120A98594199048CD7A81C3107418B3551F740718185D0452E5A2492D5E4AF1BFDE44EF96365698C9A1BA7D9747AF861A1429AA6E90BFDC1B9DF9AD21044491E2A6E21144E59742F88563AE7E2AFC897BC0C2841E79D08F9903ACF597D04A1F7791F2BFE6C3B93E96330F4973BD9E5E8DDF2426DEFAAD954C8AC89C58262B80BC80713BDC747FED247644EC7E3EC5219205DCE9A769C593B2536E65F4F1CED664650B68F2F7D36D7AA04FDD400B2A48CA8CAA831029314593888265E943F851D55762338DF9A4B1413F288AFE1ED6F18F3C9299CD9D6A22D72A0373F56966ED0AE5549FCB6100B02CFE3EA02D81FCAB4CB0BB23ACA1978E36A5B5BA47BD4FC0DD3AD91DDC8F7F9C76A101C3B6D6E981734E833794142A5EE56DE3B2EEA92DB4751B2FC81B70517ACC5FD97BA44B8717BEDBA922735DF6197972F87A8C9B3694B33BD1D53C99732D98F7128981EAAD01CE0862463B0A64701BC1CB346E7926AD057691EA1F89A03806E7D3AA61CE67266A1A84086A6526EC6D87E46D21CF9A59A08D3FE08A8C7AF6D24A164E8BD88C5E794D70A9F1673E69F8BF351AC827FDCDF2A5D34632660770D53DEEC81D96EC0CEE2FAEF43F149EF0FBB4B1160F8CCE0419E6A7039C0A0E41A5A84565504EFC79CC5EBB1B867E914B0D951488FDF65E2CCE3C7B0FB81D18E4EDFC647C9FD1AD233EAF33780A05DBD762C2A509A0DB328D176DF04D36AD16EAC5F5A5A38146B60989017DA362BFF6A27D561C4AC606431F371CEE08878E577346F5D3A03080ACE67605F6F829F632E3A7719D8694CA3055963CC84450F5EE9E1D4224A22B691CA9DBF57D0C8FFE6E9763C665412C11C051CEAC8F4E35A6463F5B4343EED548A8C1D5F8AC8DC1130DE53CA2B7A5E5038972210FAB9ADC1068AE0CE769004EE5DC9972D3A8ED87E83D0891D219DAA30F692A0359DBE4ABB52CC10480FC152088CED8D5A23BD4978F4C0BE51FED180C34E6E751E1C28D481C9DDBFBE73DFAD7726AD734B1384AF8F2519A524FBB104FD04FBF84645C64CA964E7C464441422E8206D25E1B5CE447A8F28A819305904C3385A1E83D72D0B3ED535F8D350EFF3BC4F97F419D0D8006708EFABBC3532D0AF34CD8805FEF33EC6561D07D6B6EBA5D2F9CBDF83E74FD49F8715BE01674A4504D497DED49D68B7B4032302F2FD702CEC7D3729B270643BDEACB27988C492CAC7690AF633775DA37AB330F32BB2502BED5B721DB6506667C6B3F06A6BA68780EC8EAF1608E13AE0ADA98361572915ECE8F266869968B1B80E6CC5A4BDFB2AC72989FF21ECC05AD05D7D5F682F0B6909D7F3786519089B31EC11EEA2505E7808A9E68461C3F26F78F180F619BAF9E13C474EAB2481EB29B1895DF5A8EF2C0FD97A82BE0400C53E7FDECC92644DABFA0D00BEB4939B47FE7105E39F2077D6F3840764738C19EADD3B8803F67A85142DA0C3B77BF6B39677B8CE4FA4262665BCDD13D896812473BB4013B804B4DA6C7C847F513984B31E9EA05E6D72DD975393E03F8FD14ECDC1159FDEBE58F7109CFEF2B3C52C27A6F81D854810C4F9E18C6F5CB22F8EFF1A5D0058935C55E6A30260933BB5F8EB2022E64AB51B3D733CC3671ACB9FA7EE523AD4343F8B60FBE11482566B9C8CC37ED8EB75889907A31A310D83CEFD6621F85AE1E78E7F0072CAB8107013996008DB4032FF056AB0136CDBE106C20CA5CF2D32F369EA7A9FEDEFA57797522847EBDDA9E7BB2554035750E1F78604C195EB64F4C4402B3EAAE412AD515A999ACB99DC7895398055362B40C658973FEFBD0EA9E733543EB764D0094E9058144D595EE4EF5D97CFACEF1F7E6780886C141C48AA7E11D59C41C9AB6CD30853F78E869B014BE1A24E219A2BA2D182DE0D7DF45F4986034309CA884306CE1391CEFDCB2E45ED57E60FE62CF829361ABF310E977FA66C769E548C3CCB58FEA89AEC76F37B22ADC5CEB95875364AD610C9E1C77337E3BD5D2421B71EDC433649159F434F9D05A4CFB3BC5328834543A51176ABB9346F4AF1619CC6E5CB12DDAE74EFE9D62389847B6916863EE051FFF4317FC8DA3465C2D8B3DB487987DACF39159C814B65697BAF46CAE71C8AC45DE396F97717A187675F95374A3B3357AC0E765BDFF4FE2B9BE01ED5BE0825CC70289A5A544559CCCAE735E52827FAAE072B60743786E2CD5E2B359C4309FE99EE048E113D542F067BB9CE0886117EA0056FF0FEC2702BB901AD167E375E43CC6664683BA41971BCA710C89EECD3EF452B85DE60C5FADD09EFD37F7BD373C6D154C8F79E559BD1D7330FC5A2BE99D22684C4D3BAE81A0577052A05EB6F56517176CCBAD983FAA19513B528C71A696E646A13FCF3A8D77C76F270D6D1CB3444097C7489FF946CCAA52D2B3A736028796B07F86E31B48FFFA376FAFDF00E62605AA08EB352182AAF794A87F6DC46FCA40156A62F3A981978E0338EDB7C9D6A9FAF5D3250BA5CED4AA34FB5B4F24F4C1A163B64B7D007A564595E8830506ED7C9987E0941999172C158A47473A20020074A893ED69D30D78804871F6B8121017E1D795C82D7F9107520049D66CEB8A88AC1363F98821A02E1BCCAA6C5945A2791EC553943379E3151591A0A03A955D5E00249146927EA887EC598301D9E5F08B695AE37A173BE59EA56D910E378558090E42A3782294E0355C74DDB41E37F668A92D79C25B2EA4D78A4D47F355668629F186EC1867C4B56F09F093C45B31A65B9B7245D4705C6BCEE5154A77BB5E955469D834DAA0466E87AD6FD1F20168DD14AF911F26C6A13927E44754B89E8109CBBEFEF76D0069B06E735470BA30ED19D660798058296067321F5EA7AFFB16F150635CD545306D1F6AD5068C64E54BCD34608BB7D443662C8FF4ED5665186F3ADD9347C50CFD0C54EAC0D23EFF3455595F9B900303EC1EF3F0C1DB88C67BF7DD78295204AF857090F85120B7E5F774521F58C1B14BA58485AC2A8E89BA63213C4AE54331A526F85CDF40F7EFDACBA41A1C71EC39488575BD33AE77A0EA292C53768C6EC5BB5C6E1855979C9E01086BC476A0FD2087C2E88F40B96928CF09ED51278A3C3AC6676CF2F8EF6E622099C110AF73F711DE7F54B4569BB6FE831AF5CE24805B53BB494A442BCDF285B9BCF38FF1FA4DFB774216353A58F72DA52CB93D84A834E9079F61E8B7B566F341C707AE31F5B1808A9BB617F4823195D0E0BC41764E77D1579E9C961BFA67CF4762F9F75BFF87C1BE384EE9D68F77463629821D194D3683386DB28B6131D22128672CB27F761F2448153493A57B353C3482764CF27BB236FEBF4C7BE52E711A32F94163A534CC8DF20ECE9B28D8828F66BC5C75779A50C6D7734309B031D168427AE031121354AD3895066D6627770CE382C3D5CA8CA600F909824CEDFCA24EE79B6A68711EBEDC079BFF3047E17F023B1B9B6087288126EDB8341CDBAB3D1740C4025F0974F0F1E1935C4EBD666B37E54D39EAC6380643AFDC9FBB7945C18B466B566A4B6921B658F6DB0511510D5B9FB583BDED64F5B1545EB3F45E4018C9553D1EF4352314EA583B0C90AB53E7BC99F3B14807ADD63B26CF57AF1364F6478252E3FCAA5B738DFD1EF4115F4296CEE3C44C5A1D202F19C282E8BA6782C436CA6504799F207599B67E530D0FE04D0D6A539D295EB46846D8BBC9CCFB43CC008B84FCC5C26EA13D605047880BAACBDFCF49EE6A6DD690DF4B985E41E0D34A43EF1F9F72FA30072159F695079EC1072E52ACDD15CE99F84D886FAA610D7726B68F9B603741C76035AFF460DBB45A16B163A570AB4424608C0F99C813042C61F38075F237F610D022825749CD9A3DF9D83F6762CFAE907F2BD2FCD8D09B605FF4A0117203581E2FAB8182E0981FCF3E78926F7B58CAB95D310088703CAC5D279F02953FF1A6F393D1F77B7BB79CD1EEC18B5CED82DCCFBB51D50E236CF8683B1430664AA7E9E4742C0548149F91282B18D3101B7D6E52ABF2A2FCF4C4E4150849A6EB27A39E64FEE8D01396AC1F3CDBE7FBB4BAAFDE296BF11F88970115DD40E2DADD06616CFE44C8DB96A3EA4B63DFB3898ECA20A11950D6E61368FFF355FF3546482815CED1C2C4EECA67B9606D48201B0A9323988A014B55E1E046C718DE331A613848330FF8E9711CC2DF543F8FC9E4638FB1E09D654DBFE4D18B3E89699DA721FD69C8D6C8766F4B908F91ADB066ABFED5BF0357174205ED2C51F4BA0595414217C4CF7C0F653E990B6F1235A811D22B45546C173998F61BEEC4E06725ED1BE6F0220AD06BCE537FE4B238567CA3979D443451D9EE7084027F75A3126EECF8E656C7694036890343AB5631D7AD5B7966F45A27C67DF554C62302E5338088D8B646DAAF89BF7F0B29F38BBC6AB0834A0F9467E76B3C41E82298B49B0698EB28CA5FFA4AE0700ACB748136D036E5956C03A3B3D2AAED693DF6D06CF192F6DAA2AE358489F43BA64F94669FB829CDFA1B0B4E3E61775A7BC42FAA58FEBD68983E5BCA4171CCE25F8F70CA3F9C7FD783628925CA763746F5620DBC489BFF64629850FDB1C66E355934E109CE6704448AEBD379AD78154FB528B51A3369981F080EBF01991994A8FD544D4A3B9B8A11359B3EBB93C2F5D8428D4663AEC2FE096D2F3745637BF67FCC4DD76E4A52A2A35BBA33A9649B16CF2F51AD22EF44C418524D1CEAFB6BA9CD0BD6265A3D38FAE92C0A422AADA448A00F7C4F3CF1A1B93384CB8F80FE500AEAF32CFCEA3B19E484A729F9FA5E82C664E27A1E65CC2E7627A5FB43827E3FF3FB904B970AAF2D7D12619588FDEE336F1882E65D5E2B137A3C2C2303EEE4654D6468E2A6F0B360AEEA013626C1B87A3E24EC8FA43B4DB59AE789123EAA2B98B568260D6693031CAAB4E736F2B7474AB4958CB03F71AD4A7D0314C263C22C94EAEE316D2A138046DBA30F404E65E75FAAA0B1157395096584745823ED23869032D79911665E44552414960BC318E08DD0E7544CA8BE73761FB282E8341E3856759586904A06FFE8DD6D5C77DB9D2EF42501F1B89A5EEAA38A7911B7434CDD58254318D2DE0C370B60CC612FD57BF84EB6484B435C22904E9FDDCF69C76A11B98DC77FE2F24CEEEDAAC0E88CA162C49F051E39E88CEB81FDA15BFB4EE443093D94E1B726190CFB5DA36EA714910D22ECAAD39AEDD70087ABA18FAFE45157D4F0B386212C028A215FAAAF02288E2AA3984C6E3DB097C5DA13921EF03B585114F92BEFD2CDB62F88158EA32A7E5AFDCED37DB9DB414DB8E65B738B8167B5210D14996B563374BCD771A109C758B6DCE56711E060C4C687145BB572F6F3BEF3A9D61F5F99368E2563B0D3177402149E657110B60CAABA69D497C12B35B222774B99F361700229A8A7E7F07C0579DBEF3F2D2BA950D2E3C7B561F7FEF6FB85899EA49E716D4F751281FE186AF90ED1776ACDE82967213E7AEA65ACAD46248F8AB14827E2B3C2F1ED9C3A6AA7F9BCAE89CBCE696B48474457671063575C8E6B303B44DB1C3FC4C254D10291EAC1FF935C8BE1EDC6715A249A093A72DAB4D876BE1EF7A2F1CB90161B10C587DCAEC5B34F8449922653AE425B50435ED1F08D9987BDAACB318DD5668ECD364008A31A6DC430824BB2B1BA3A454B9C61B960971125FDC567A6510CE13EC378B6EA5B977C9338652BC9FB8CD07F967A864632D1382993002E4C730A5370226E1E025C52148B52073E9A8E73BBB32FED7F3DC37DB0F175DE752CC7CC4B92557F8FFFB07D44D6604F2BC1EC8ED20C53D3F3856D0B3ADA30141D5D1B2B0BAA1F10C887217885911F2205C1D749C88E6EF4915A1AEC72B664867EA1EF8CFBC211D3631C8FE4FEC74E775CB7EEE774A1764F26F555DD415FFD71A10E26BDCD4EDA687AF18271A24D66C22478796438E40281202C4B82330D7AA5689FE3B21A7D194693C13BF55CDBD40A06C0CE9784930B1F5926982188120DE305E3BC68CF884B1A275512451A1EC7101D432A3AA1FE5C5309AA6DD15A0E0692414EF01EC43098DA45A8442C37B811C4858589729E17A870BF671DC42A5FF944306D65FAD010479150AC370158295058F5862DDF1E03C2DEB28A2E9A0E7EAFEED264A7F113972FF31F9D6376D2C823463C4A65D5B8EFB8E4EAE5E84E2B9A6A149F9D001753B28766C51F9FE856453F191BA8A1D11E0E6628A6B7785A1BFBDA1F6E56A214B26863C27BBD569AA583AB7EA610BB3CF9F26B60C53D5B257E96316723F19C84A4E078AF10423E2940E0B79768313334EFE515E5025354D1A93900817889A7855668FECBB61073F4E0C60FEBA8B3230E9DF5B4AC1B679EF6514FA7095C4AB70B136043E750FE76055E7D5F19B8205E7451079E17B4937F7DDB312F127F562560D18C0A45E77EE2F5A874478ACC754213148AA3F67AFE839080B6EB45C29D5F4256A5C1471EB6E55E8F6D07FE814D3E2227DA9EBC27196AFDD1A4D1B34DE7224E8E1DC289A896C66DD27E522AA3BEC2787703AC0D15E9A6750F62C4A683CE3036FEEFE0827229ABE9C77241C7C0D57D00C441626CA89048611B6EB62835CAFC4F3A220E2D85D9546393E3D7476B779BCBEB30CA3AD2B00BB9697DA5B402A8C63439D994600837184A9C3178802F97A01C2698279CD55436268AA96D8A52D5895E790387AFD7BC4112ACBF5DE2BE5E79916B6C03E8439695DE27852E2E6AE30F877E3C558C29C7C2572F3AC3EDE27328BED0C29A33227A992E5FB3647E21DFF4A5E11B67B462F6C77B8CEB17C1D58B6530B83351264649FB496F7D6D3816DC0C4F65C6688EFC5F0022DDDFFE2DBD8FE202FD8E4D0F8F373884CF96E7F2FCD9FDBA02F6ED6A29A6B7C7E058CF5D83A6CA3418989930156B06C4F5D527D4F741E301631F3A78626D5A9F7D3253EC111F91890F1C69C9E7E9D9A0C6815C33272A23D30049B9C843417B932C8BE74145FCA41A71FC0DC91FFC127D758389C055123C777EA5B54CCB07F61F6DC3A0B245DE0820A28264E12F95D0E322AF4C1207531C86C0F2B2F43EDC9B9D411D06498E6B79D87AFBD7B8D06B0FBAD2463AB09AF93A32C4316BCE38D57A7F28AF9E4EA9843EAF37C03E2F587B4DA33A6073C1BA9C4273205056F8E218E740E05494CC128D92D73BBBC11390F511DC988E150C7A176C16F92F0F4752018F8C989E2DD8FB17BC2AEBF98D7A4722EF4957A5377FFEB541B932225091BC2D38C331B0A73D389467E457077FFAF05647CC7ACA4B76B4776F7BA5E83CF2475C592A68BB730339736780C9AA335B0A9D79B00CCB8D823295E4AA3C3A4F3D41F939731DC06D97E63E0FC2176A014F474BB4058A38518D4D9D29722B758E2CF9E2C9C5D133F1619F85F011E3D059DD76EC435BFB5ED45FBD41A5CE4B3CB3D2C8CFB901137801065A87E5A931C64928149F0151BA47FBA9AC35E28C0C20033E837CFB0C8BE0EF13E4D68F6CCD9B25EE1A7C1A2C8A85BBD811C5EEA7C50A9B5D62D2C2F3E42919E5D0C9F99BED2BE30EBF64A1219D108F0AE87E5DAB93299F7E75D060AA9E5F195C4D1D9860C75C3787467D761DB122E921BF183CD76740FD5F27B566BC35070641410D0226EA7774AD0C10B00CE499DE9603CE1F7CB91F8F08B5C66AB7002C7FBE0D86CE88EA82552A81B70F1ADD5BE019C4C036CFE888D8A45E36F69F56458ECA45EF142E55816057A5F0834838DB440DE1F15954586A8D3AEE6EB7475FEFFFFFF00000200010001000000FFFFFFFFFFFFFFFF0000FFFF00000100FFFF0000FFFF00000100FEFF0000000000000000010002000100FFFFFFFFFFFF010000000000000002000000010003000000010002000200FFFF0100010000000100010001000000000000000000FFFF0000010000000000010000000200FFFF00000100FFFFFFFF0000FDFF0100FFFFFEFFFFFF01000200FCFF0000FFFF0100FFFFFFFF0000FDFF00000100FFFFFFFFFFFF020000000000FFFFFFFFFFFFFFFF010001000200FFFF01000200000001000000000002000100FEFF02000300FFFFFCFF0200FEFFFFFF030001000000FFFFFEFF000000000200FFFF020002000000FDFFFFFFFFFFFEFF0100000000000100FFFF0000FFFF0000FFFF00000000FFFFFFFFFFFFFEFFFFFF00000200FFFF01000200000000000100FFFFFFFF0300FEFFFFFF030002000000000002000100FFFF0200010001000000000001000000FEFF0000030002000300FEFF0000010000000100FEFFFFFF01000000FFFFFFFF000000000000000000000200020002000000010000000000FFFF0000FFFF01000000020001000100FEFFFFFFFEFF00000000FFFFFFFF0200FFFF03000000FDFF000001000100020001000000FEFFFFFF0000FEFF02000000FFFFFFFF0100000000000100FDFF0100FFFF0000010000000100FEFFFFFF00000000FDFF010000000200FFFF0200FFFF010000000100FDFFFDFFFFFFFFFFFFFF0200FDFF0000FEFF0000FFFF0100FFFF0100FFFFFFFF00000100FEFFFFFF01000200FFFF0000FFFF0100FFFFFEFFFDFFFEFF02000000FFFFFFFF00000100FFFF000002000100FDFF01000100FEFFFFFF0000FFFF00000300FFFF0100000001000200FEFF01000000FDFF01000300FFFFFFFF000001000100FEFF0000FFFF00000000FFFF0000010000000100FFFF0000FFFFFFFF020002000200FFFF0000FFFF00000000FFFF02000200FFFF000001000100FFFF010002000200020000000000000000000200FEFF000001000100FFFFFEFFFFFF000000000000000002000100FDFFFFFF0200FEFF0000000001000000FEFF010001000000FFFF0000FFFF040001000300FEFF000000000000FFFF0200000001000000FEFF0000FFFFFEFF000002000000FFFFFEFF000000000100FDFF0100FFFFFFFF00000100FEFF0000FFFF030002000200FFFFFFFFFFFFFEFFFFFF020001000100FFFF0000FFFF000002000000FEFFFFFF0100FEFF000001000000FFFF0000FFFF0000FFFF00000100FFFFFFFF0000FFFF02000000FFFFFCFFFEFF010000000300FFFFFEFF020000000100FFFF02000000FFFF00000000FDFFFFFF0000FFFF01000200FEFF0100010000000000FFFF0000FFFF02000000FEFFFDFF000000000100FDFF01000100FEFFFFFF0100020000000100FFFF020001000200FFFF020000000200FEFF01000100FEFF0300FFFFFFFF0200FEFFFEFF0100FEFFFFFF010003000100000000000100FFFF0000FEFFFFFF0000FFFF000002000200FFFF0200000001000200FEFFFDFF020002000000020003000000FEFFFEFF01000000FFFF0000FEFFFDFF000002000000FFFF0200FFFF0100000000000100FEFF0100010000000000FFFF0200FFFF0000FFFF0200FFFFFEFF0100FFFFFEFF0000FDFF0000FEFF0000000002000100030001000300FEFFFFFF00000200FEFFFEFF000001000100FEFFFFFF01000000FFFFFFFFFEFF0200010001000200FEFF0100010000000200000001000000FEFF000001000000FFFFFFFFFDFF01000000010002000000010001000100FFFF0200FFFFFFFF0100FFFFFFFF0000020000000000000000000200FFFFFFFF0100FFFF0000020000000000FEFF010000000200010001000000010002000000FFFF0000000000000000FFFFFEFFFFFF0200010002000000030001000200030001000000FEFF0000FFFF0200FFFFFFFF01000100FFFF01000100FFFF0000010001000200FFFF0300FFFF0100FFFFFEFF0000010000000000010001000100FEFFFEFFFFFF01000100FFFFFEFFFEFF0100FEFFFCFFFFFFFFFF01000200FFFF01000100FFFFFFFF0100FFFF0000010000000100010002000000FFFF0200000000000100FFFF0000FEFF01000200010001000000000001000200FEFF00000100FFFF000002000000000000000100FEFF0100FEFF0200FEFF0100020000000000FFFFFFFF02000000000001000100FFFFFEFF0000020001000000FEFF0000020001000000FEFF0000FEFF020001000000FFFF000001000000FEFFFFFF0100FFFFFFFF0300FFFF00000200FEFF00000100FFFF0200FFFFFFFF0000020000000100000000000000000000000000010001000000FEFF0200FFFF0000010001000000000002000100FEFF010000000100FCFF0200FFFFFEFFFFFFFFFF000001000200FFFFFEFF0000000000000000000000000100000000000300FFFFFFFF01000100010001000200FFFF03000000010001000100000001000100FEFF0000FEFF01000100FEFF01000200010000000100FFFF0000FFFF01000000000002000100000003000200FFFF01000000FFFF0000FFFF00000000FFFF010001000100FFFFFEFFFFFF000000000100FDFF00000100FEFF020000000200FFFFFFFF03000100FFFF01000000FFFF0000020001000100FFFFFFFF01000000FFFFFFFFFDFF00000100010000000100FFFFFFFF0100010000000200000001000000FFFFFFFFFEFFFEFFFFFF00000000010000000000FFFF0100FEFF0300FEFF00000200FCFF00000200FFFF0200FFFF000001000000FFFF0300FFFF010002000000FEFF020001000000FEFF02000000020000000100FEFF0000FEFF0200FEFFFDFF0000FFFF00000000FFFFFEFF0000FFFFFEFFFFFFFFFF01000000FDFF01000200FDFF00000000FFFF010000000100FEFFFFFF00000300010001000100FEFFFEFFFFFF0000000000000000FEFF01000100FFFFFFFFFFFF030002000100FEFFFFFF01000200FFFFFEFF00000200FFFF0100FFFF0000FFFF0200FDFFFFFFFEFFFDFF0100010001000200000000000000FFFF020001000100FFFFFDFF0000FFFF01000100010000000100010000000000FFFFFEFF000000000000FDFF020001000000FFFFFFFFFFFF0100FDFFFFFF01000000000001000000FEFFFFFF00000200FEFF01000100FEFF0200FDFF00000000FFFF010000000100FEFF0000000001000200000000000100000002000000FFFF000001000000FEFF0200010000000100FFFF00000100FFFF000001000300FFFF0000FEFF01000100FFFF010001000000010001000100FFFFFDFF000000000100FFFFFCFF0100FEFF0100FEFFFFFF02000200010000000100020001000200FFFFFDFF00000100FFFFFFFF010002000100FEFF00000000FFFF00000000010000000100020000000100FEFF0000FEFFFFFF0200FFFFFFFF0100FFFF0000020000000000FEFF00000000FFFFFFFF010000000200020001000200FEFF0300010000000200000001000000FDFF00000000FFFFFDFF010002000100FFFFFFFF000001000100FFFF0200030001000000FFFFFFFFFFFFFFFF0000FEFF030000000000000000000000010001000000FFFF0100FEFF0100FFFF0000FFFF02000000FFFF01000000FFFF0300010000000200FFFFFFFFFFFF00000100FFFFFDFF0000FDFFFFFF0100000000000100FFFF0000FFFF0000FFFF000000000000FFFF0000FFFF000000000200000000000000000001000000FDFF0100010001000100FFFFFEFF0300FFFF0100FFFF0200FFFFFFFFFEFFFFFF0100010001000000FCFF0100FFFFFDFF01000000FEFFFFFFFDFF00000000030002000000FFFF020001000100FFFFFEFFFEFF0100010002000100FFFFFEFF010000000000FFFF00000000FFFFFFFF01000100FEFF00000000FFFF010001000100FFFFFFFFFFFF00000200FFFF00000200FFFF00000200FFFFFDFFFFFF0000010000000300FEFFFFFFFEFF0100000002000200FFFF00000300FFFFFFFF0200000001000100FFFFFFFF0100FFFF0000FFFFFEFFFFFF0000FFFF0000000000000100000002000200FFFF01000100FEFFFFFFFEFF03000000FFFFFFFFFFFF00000000FEFF0200030002000200FEFF01000200FFFF00000200000002000200FFFFFEFF0000FDFF000000000100FEFF0100FDFFFFFFFDFFFFFF01000200FFFF00000100FFFF0300FFFF0000FFFF00000100FFFF0100FFFF01000000FDFF0100FFFF0100FFFF00000000FFFF010000000100FEFF00000400FDFF000001000000FFFF0300FFFF0200000000000000FEFFFFFFFFFFFEFF0000020000000100FFFF0000FFFF0100FEFF0100FFFF010002000100FFFFFEFF000001000000020000000000FFFFFFFFFEFFFEFFFEFF0000FFFF0000FDFFFFFFFFFF0100FDFF00000200FFFF01000100FFFF0100FEFF0100FFFF02000000000000000100FEFF02000100FFFF010004000100FEFFFFFF000000000100FFFF0000010001000000FFFFFFFFFFFF03000000FEFF0100010001000100000000000200FFFFFEFFFFFF0100FFFFFFFF0000FFFF000000000000FFFF0000FFFF01000200FFFF0000FFFF010000000100000002000200FFFF0100010000000400FFFF0100000001000000FFFF0100FFFF0100FFFF010000000100FFFFFDFF00000100FDFF0000FEFFFFFFFFFFFEFF00000100FDFFFEFF0100FEFF02000000010001000100FCFF0000FFFFFFFFFFFF00000000030001000100FFFF0100FFFF0200040001000100FFFFFFFFFEFF0000FFFF02000000000002000100FFFF0100FFFF00000100FEFFFFFF0000000000000100FFFF01000000FFFF000000000300FFFFFEFF000000000000FFFF0000FFFF0000000002000100020000000100FFFFFFFF0000FFFFFFFFFFFF00000100FDFFFEFF000002000200FEFF0300000000000000FFFF0200FFFF00000100FDFFFFFF00000000FFFF000001000200FFFFFFFFFEFFFFFF0200020001000000FFFF00000000FFFF0200FFFF0100FFFF0100FEFFFFFF0100FEFF01000100020001000100FFFF02000100FFFF00000100FEFF0000FEFF01000100FFFF0000FFFFFEFF0000FFFFFFFF0100FEFF0000FFFF00000400FFFFFFFF01000000FDFF010001000100FDFF010001000000FFFF010000000100020002000100FEFFFCFF0200FEFF010000000000FFFFFFFFFFFF0200010001000100FEFFFFFFFDFF00000200030001000000FEFF010000000200FFFFFFFFFFFFFFFF02000200FEFFFFFF0100FFFF0000FEFFFCFF0100FEFF010000000000FEFF0100FFFFFFFF02000000FEFFFEFF00000300FDFF010002000000FDFF0100000000000100020004000100FEFF00000300FEFF020001000200FFFF00000200010001000200FDFF0000030001000200FEFF00000000FFFF000002000000FEFF0000000001000000FFFFFDFFFDFF01000000000001000000FFFFFEFFFFFF01000000FFFF010000000000FDFF0100FFFFFFFF010001000100000001000300FFFF0100FFFF02000200020001000000FFFFFFFF01000100FFFFFEFF0000010000000100FFFFFFFF0100FEFF00000100FFFF0100FFFF01000000FFFF0100FFFFFEFF0000FFFFFFFF000000000000FFFF0100FFFF0100000000000200FEFF010001000100FDFF000001000000FFFF0100020000000100FDFF0200FEFF010001000200FEFF0000FEFFFFFFFEFF0000FEFF0000FFFF0100FFFF0200FEFFFFFFFEFF0100FFFFFEFF020002000100010001000200FCFF0000FFFFFFFF00000100FFFF02000000000000000000FFFF00000000010001000200FDFF0000FFFFFFFF0000FFFF0200FFFF0000FFFF0000FFFFFFFFFFFF00000000020000000100010000000000FFFFFFFF000002000000FFFF0000FFFF00000100FFFFFEFF010002000100FDFFFFFFFFFFFFFF0100000002000000FFFFFFFF01000100FFFFFFFF0100FEFFFFFF0000FEFF0000FFFFFEFF01000000FFFF0200FEFF0000000003000200FFFF00000100000000000000FFFF0100FFFF0200FEFFFFFF0300FFFF01000100FEFF0100000000000000FFFF01000000FFFF0000FEFF0200FEFF010004000000FFFF0200FFFF00000000FEFF0100000002000200000000000100FEFF0200FEFF0100FFFFFFFFFEFF02000000FFFF00000000FFFF01000100FEFFFEFF00000000010001000200FFFF000001000000FDFFFFFFFFFF0300000000000200FFFFFFFF0200FEFFFFFF00000100FFFFFFFFFFFF0000010001000300FEFFFFFF0200010001000100000002000000FFFF0200FEFF0000010002000100000000000100000001000100020000000100FEFF0100000001000100FFFF0000FFFFFDFF0100FFFFFFFF0000FFFF00000100000001000000FFFF02000300010000000000FFFFFFFF00000000FEFF0000FFFFFFFF0000FFFFFDFF00000000000001000200FEFF0100FDFFFEFF0000FFFFFFFFFFFF0000FFFF0100FDFFFFFF00000000FFFFFFFFFFFF0100FEFF010002000100010002000000FFFFFDFFFEFFFFFF00000300010001000200FFFF01000000000000000200000000000000010002000000FFFF0100000001000000FFFF0100FFFF0100FFFF000000000100FFFF0000000002000100FEFF020002000200FEFFFFFFFFFFFFFF030000000200FFFF0300FEFF00000100000001000200FFFF0000FEFF01000000FFFFFFFFFEFF0200000001000200000001000200FEFFFFFF0100010000000100FFFFFEFFFEFFFEFFFFFF00000000FEFF00000100FEFF000003000100FFFF0100FEFF0200000001000200020001000000010000000000010001000000FFFF03000000FEFF00000000010001000200FFFF0000FFFFFDFF0000FFFF02000000000001000400FFFF0000FFFFFEFF01000100FEFF000001000200010000000100FDFFFDFF010000000000FFFF020002000000000001000100030003000200FEFFFEFF01000100000002000100FFFF0000FFFF0200FFFFFFFF0200FFFFFFFF00000000FFFF00000000000001000000FFFF0300FEFF0000000001000000020001000100FEFF00000000FEFF00000000FFFFFDFFFFFF0000FDFFFEFFFEFF01000100FEFFFFFFFEFFFEFF0000FFFF00000100010000000000020000000000FFFF02000000FFFF0200FFFFFFFF01000100FFFF00000000FEFF000001000000FEFFFFFF0100010000000000FFFFFFFFFFFF0200000001000100FFFF0100FFFFFFFF000000000000010001000100FFFF010000000000FFFFFEFF01000000FEFFFEFF000000000300FFFFFFFF0000000001000000FEFF000003000000FFFF010002000100FEFF01000000FFFFFDFFFFFFFFFFFEFF020000000100FFFF0100FFFF02000000FEFFFFFF000000000100FEFF010002000000000000000000010001000100FFFFFDFFFFFF00000000010000000000FFFF0000FEFF01000000FFFF0000FFFFFDFF0100010001000100FEFF03000100010002000000FEFF0000FFFF0000FEFF000001000000FFFF000002000000FDFF0000000001000000FDFFFFFF00000000FEFF0200FEFFFEFFFFFF00000000010003000000FEFF0000010002000000FDFF0200000001000300FEFFFEFF01000000010000000200FFFF010000000000FFFF0100010000000100FDFFFFFFFEFF0000010000000200000000000100FEFF0100FFFFFFFF01000000FFFFFEFF02000200FEFFFFFF00000000FFFF0100FFFFFFFFFFFF000000000000000000000000FFFFFEFF0300030000000000FCFFFDFFFEFF00000100FFFF0200FFFFFEFF0100FDFF020000000000FEFFFEFF010001000000FFFF0100FEFF0000FDFFFEFF000001000000FEFF0000FFFF0100020002000100FFFF00000100010000000000FDFF000001000200010000000000FFFF0000010001000000FEFFFFFF0400FFFFFFFF020002000000FFFF0000FFFF02000000FFFF0200FEFFFFFFFFFF00000200000000000000000000000000000000000100FFFFFFFF01000100FFFF020002000100FDFF000000000100010002000100FEFF0000FFFFFEFF0000FFFFFFFF0000FFFF010000000100FFFF02000100FFFF020001000000FFFFFEFF00000100FEFFFDFFFFFFFFFF01000000FEFFFFFFFEFF010001000200FFFFFFFFFFFFFEFFFFFF0300FFFF01000000FEFF0100FFFF00000200FDFFFFFF000000000100FEFF0000000003000200FFFF00000000FFFFFFFFFEFFFFFFFFFF02000000FCFF0000FFFF0100FFFF000002000100FEFF00000300000002000000FEFFFFFFFFFF0100020002000000010001000200FEFF00000000FEFF0000FFFF01000000FFFFFEFFFFFF00000100FEFFFFFF00000000FFFFFDFFFFFF0100FEFFFFFFFFFF0200FEFFFFFFFFFF02000000FFFFFEFF010002000100020003000200FFFFFEFF00000000FFFFFEFFFFFF01000300010001000000000000000200FFFFFFFF00000200FFFF03000000FEFFFFFF010002000000000000000000FEFF010000000000020001000000FFFF0000FFFFFEFF0200FFFF00000300FEFF0000FFFFFEFF01000200FFFF0100000002000100FFFF0100FFFFFEFF0300FFFF00000100FEFF0100000001000100FEFF000000000100FEFFFEFFFEFF0100FFFF01000200FEFFFFFF0000FFFF00000000FEFF0100FFFF0000000000000000FFFF0000FEFFFFFFFCFFFFFF0000010002000100FFFFFFFFFFFFFEFF0200FFFFFDFF00000000FEFFFEFF0000FEFF0100020001000000FFFFFEFFFEFFFFFFFEFFFFFF0100FFFFFEFFFFFF0100FFFF010002000200FFFFFFFF0000FFFF00000000FFFF01000000FFFF020000000000010000000100FFFF02000200010000000000FFFFFFFF00000000030000000200010000000000FEFFFFFF0000FFFF010000000100FFFFFFFF0300FFFF01000000FFFF0000FFFFFFFFFFFF000002000000FFFFFEFF0000FEFF0000FEFF0100FFFFFFFF0000000000000000FDFF0200FFFF0100FFFF0100FEFF00000100FFFF000001000000FFFFFFFF0100FEFF00000000FEFFFFFF0100FFFF02000100FDFF00000100FFFFFEFFFFFFFDFF00000100FEFFFFFFFFFFFEFFFEFF01000100000000000200FEFF01000100FFFF0100FFFF0100FEFF0100FFFFFEFFFFFF0100FFFF00000000000001000200FFFFFFFF0200000002000100FFFF0000FFFF0200010000000000FEFFFFFFFEFF000001000300FEFFFFFFFEFF0200FEFF01000100FFFF000000000100000001000100000002000100FEFF0100FFFF0000FFFF01000000000000000000FFFFFFFFFFFF000003000100000000000100010000000000FFFF0100000000000200FFFF00000000FFFFFFFFFDFF01000000010001000100010000000000FEFF02000300FEFF0100FEFF0000FFFF0000FFFF02000200FFFF0000FFFF0000FEFF0100020000000200FEFF0000FEFFFFFF0100FFFF01000000FEFF000000000000FEFFFFFF0200010000000000020000000100FDFF00000000000000000000FFFF00000100FEFF0000FEFFFEFF0100FFFF0200FFFF00000000FFFF0000FFFF000001000000020003000100020002000100010000000100010000000300FFFF0000FFFF020001000200020002000100FFFFFDFF0000000000000200FEFF0200FFFFFFFF0100000002000100FEFFFFFF0100FFFF00000000FFFFFEFFFEFFFEFFFFFF0000FFFF0000FFFF0000FDFF000000000100000001000000FFFF0000010000000100FFFF000000000000FFFF0300FEFFFFFFFFFFFDFF02000000000001000000020001000000010002000100FEFF0100FFFF02000000FFFF0000FFFFFFFF01000000FDFFFFFF0000FFFF0100FFFFFFFFFFFF010001000200000000000100FEFF0000FEFF0100FEFF02000000FFFFFFFF01000000000003000000FFFF0300FFFF0000FFFFFFFF0100000001000300FEFFFEFF010000000000010000000100FFFF0100000001000200FEFF00000100FEFFFEFF010000000100FEFF0100FFFFFFFFFDFF00000100FFFFFFFF0100FFFFFFFF0200FFFFFFFF020000000000FEFFFFFFFEFF010000000200FFFFFFFFFFFF000000000000FFFF0100FFFF0000FEFF0000010000000100FEFFFFFFFFFFFEFF02000000FEFF00000000FFFF0200000000000000FFFFFFFFFDFFFFFF0200FFFF02000200FFFFFFFF00000200000002000000FEFFFEFFFEFF0200FEFFFEFF01000100FEFF03000000FEFF01000200FFFF00000000FFFF0200010001000100FFFF02000300FEFF0200FFFF02000200FDFF010002000200010001000000FEFF00000000FFFF0200FCFF02000000FFFF0200FFFFFFFFFEFF00000000FFFFFFFF000002000200FDFF00000100FFFF030000000000FEFF01000100FFFF0100FEFF0200FFFF00000100020000000100020000000000FFFFFFFF00000000FEFF0000FDFFFFFF000002000000FFFFFFFFFEFF000000000100FEFFFEFF020000000200000002000000000000000000FFFFFFFFFEFF0100FDFFFEFF0000FFFF0000FDFFFFFF00000100FFFFFFFF02000000FFFFFFFF0000FFFF0000FFFFFFFF0200FFFF00000000FFFF00000200000000000000FFFF00000000FBFF000001000200010001000100FEFFFFFFFFFFFEFF0100020000000000FDFF030000000000000002000100FFFF02000200FEFF0100FFFFFFFFFEFF00000100FFFF00000000FFFFFFFFFEFFFEFF000001000000020002000000000000000100FFFF0100000001000200000000000100FEFF0000FFFF01000200FFFFFFFFFFFF0200FFFFFFFF000002000100FDFF01000000FFFF0000020000000000FFFF0000FFFF00000000FFFF0100FFFFFFFFFEFF0000FEFFFEFFFFFF0200FFFF0200FFFF0100FEFFFFFF00000200020000000100FFFF020000000300FFFF0100FFFFFEFF01000000FEFF0000000001000100000000000100000002000100010002000100FFFF010000000000FFFFFEFFFFFF0200000000000100FFFF0000FEFF0000FFFF02000000FFFF010000000000FDFF0200010001000200FFFF01000000FFFF000001000000010000000000010000000100FEFF0000FFFFFEFF0000000001000100FFFF0100FDFF00000000FFFF0300010001000000FEFF0000FDFF01000000FEFF0100FFFF0200FFFF000000000100FFFFFFFFFEFFFEFF0000FFFFFEFF00000000FDFFFEFFFEFFFFFF00000100020001000000000002000200FFFF0100FFFF0000FFFFFFFF00000000FFFFFDFFFEFFFFFF0100000001000200FEFFFEFF03000000FFFF00000100FFFF0100FEFF010002000200FEFF0000FFFF01000000000000000000FEFFFFFF0100010001000200FFFF010002000000FEFFFDFF00000200FEFF0000FFFFFFFF0000FEFF00000000000001000000FFFFFFFFFFFF01000000FEFF010000000100FFFFFEFF0100FDFF0000FEFF0000FFFFFFFF0100FEFF0000FFFF0200010000000000FFFFFFFF01000000FFFF0000FFFFFDFF01000100000000000100FFFF0100FFFFFFFF0000FFFFFFFFFFFF010001000000FFFFFEFF040001000100010000000000FFFFFFFFFFFF010000000000FFFF020000000100020000000200FEFF0000FFFF0000FDFFFFFF01000200FFFFFFFFFFFF0100FFFF00000100FFFFFFFF0000FFFFFFFF01000100FFFFFEFF0000010002000100010002000100FFFFFEFF010002000000FFFF03000100FFFF0000010002000100FFFFFFFF000000000000FEFFFFFF00000100FFFF000001000200FFFF01000000FFFFFFFFFEFF00000000FFFF0100010000000200FEFF0000FFFF000001000100FFFFFEFFFDFF0100000001000000FFFF010001000100FFFF020000000000FEFF01000000020001000000FFFF02000200010001000100FDFF00000100FEFF0000FEFFFFFFFEFFFFFF0100FFFF00000200FFFF0000FFFF02000200FEFF020000000100FFFFFFFF0500FEFFFFFF0200000003000000010001000100FFFF02000200FCFF0300000000000000FDFF0000010001000200FEFF01000200010000000100FFFF0000FFFFFEFF0100FFFF0100FFFF020003000100000000000000020000000100FFFF0000FDFF00000000FEFFFEFF02000200FEFFFFFF0100FDFFFEFFFDFF0300FDFF0000FFFF010001000000010000000100FFFF0200010001000100FFFF0000FFFF00000000FFFFFEFFFFFF0000FFFF010001000000FEFF0000000000000300FFFF010002000000000001000000FFFFFFFFFFFFFFFFFEFF0000FDFF0000FEFF010002000200FFFF000000000200000004000000FFFFFFFFFFFF0100000002000200010001000000FFFF0200FFFF0100000001000100FEFFFFFF0000FEFF03000000000000000000000000000000FFFF020000000100FEFFFFFF01000100FFFFFFFF0100000001000200FFFF000002000300FDFF0000FFFFFEFFFEFFFFFFFFFFFDFF0000000002000100FEFF0000020003000300010002000200FFFF02000000FFFF0000FFFF01000100FFFF01000100000003000100FFFF01000000000001000000000000000200FFFF01000400FFFFFFFFFDFF0000FDFFFEFFFFFF0000FFFFFFFF00000200FFFF0000000002000000FEFF010000000100FFFF0300FFFFFDFFFFFF00000100FEFF030001000100FEFFFFFFFFFFFEFF0100020000000100FEFFFEFFFEFF0000010001000000FFFF01000000FEFF0100FFFF000002000100FDFF00000100FFFF01000100FFFF0200000000000000FFFF000000000000FEFF000003000000000001000000020001000100FFFF0400FEFF0300FEFF0300FFFFFFFFFEFF00000200FFFF00000200FFFF0100000001000200010001000000FFFFFEFFFEFF0200FFFFFEFFFEFFFFFFFFFF02000200FFFF0200FFFF01000300020000000000040000000000FFFF010002000000FEFF01000000FEFFFFFF020000000100FFFFFFFFFFFF0200FEFF0200FEFF000000000000FEFFFFFF0000FDFF000000000100FFFFFFFFFDFF00000000020001000100000000000000FFFF000000000100FEFF01000000030000000000020002000100FFFF030000000100FFFFFFFF02000200FFFF0000FFFF01000000000001000000FEFF0100FDFFFEFFFFFF0300FEFF0100010000000200FFFFFFFFFFFFFFFF0200FFFF0100020000000100FEFFFFFF000000000100000000000000FFFF00000100030001000000FEFFFFFF0000000000000000000003000200FFFF0000FFFF010001000100FFFF000001000100020001000300030000000200FDFFFFFF0200FFFFFFFF0000020001000000FFFF01000000FFFF01000100000004000300010001000100010000000000010002000100FFFFFEFFFFFFFEFF0000FEFF000004000200FEFF0300010000000000FFFF0000FFFF020002000000FFFF0000000002000300FFFF000002000000FFFFFFFF000000000200FFFFFEFF00000000030002000100FEFF0100FFFF0100FFFF010000000100FFFF010000000000000001000000FFFF0000FEFF00000100FFFF00000000FCFF010001000000010000000000FFFF02000200FFFF0000FFFFFEFFFFFF0200010000000000FFFFFFFFFFFFFEFFFFFF0100FEFF0100FEFF0000FEFF0000FFFF01000100FFFF02000000FEFF0100FFFF0100FFFF010000000100FFFFFEFF010002000000020002000200020000000200FEFFFFFFFEFFFCFF0100FFFF0100FFFFFFFFFCFFFFFFFDFFFFFF0400FFFF00000000FEFFFFFF000002000200FFFFFFFF0100FEFFFFFFFFFF0300FEFF0000FEFFFFFFFEFFFEFF010000000100FEFFFFFF0000FFFF0100FFFF0000FEFF000000000300FFFF01000000FFFFFFFF01000000FEFFFEFF030000000100FFFF020000000000FDFF01000000010000000000FFFF01000000FFFFFFFF0000FEFF00000000FDFF01000000FFFF0200FFFFFFFF0100FFFF0100010002000000FFFFFFFFFFFF01000100FEFF020001000100FEFF0200FFFF0200FCFFFEFF000001000100FFFF0200000001000000FFFFFFFF04000200FFFF0000FFFF0100FDFF00000000FDFF01000100000000000000FEFFFFFF020002000100000001000000FFFF0100FFFFFFFF000002000000FFFF000000000100FFFF01000000FEFFFEFF010000000000010000000100FEFF01000200000000000000FDFF00000000FFFF0000FFFF0100000001000100000000000100FDFF0100FFFFFEFF02000100FFFF0100FFFF0100FEFF0100FFFF000000000200FEFFFFFF02000100FDFF02000000FEFF0000FFFFFEFF01000000FFFF0100FFFF0000000001000100FFFF00000000000001000000FFFFFFFF0100FFFFFFFF01000000000001000200FEFF0000010000000300FFFF0000FFFF0000FDFF0100FEFF0000FFFF020000000000FEFF0100020002000200FEFFFFFF0100FEFF0100000000000000010000000100FEFFFFFF010002000200FEFFFFFF01000200FFFFFEFFFEFF00000100FFFF0300FFFF0100000000000200000000000000FFFF0000FFFFFFFFFEFFFEFF00000100FFFF000000000100FEFF000000000300FFFFFFFF0200000000000100FFFF000001000100000000000100FFFFFFFF00000100FEFFFFFFFFFF0000000001000200FCFFFFFF0100010000000000FFFF0000020000000000FFFF0000FEFF000001000100FFFF0000FFFF00000000FFFF00000100FEFF0000FEFFFFFFFDFFFEFF0000000003000000000000000200FFFFFDFF0100FEFFFFFF01000200FEFF010002000000FDFFFFFF0100FFFF0000FEFF0000FEFF00000300000001000100020001000400FEFF00000100FFFFFFFFFFFF000001000100010001000000FFFF0100FBFF010001000200FEFFFFFF0000FFFFFFFFFFFFFEFFFEFF010002000000FFFF00000100FFFFFFFF000000000100FFFFFFFF00000300FFFF02000100FEFF0200FEFF02000100FFFF0100FFFFFEFF0100FEFF0000FEFF01000000FFFF01000200FFFFFFFF0000FEFF0100FFFF0000FDFFFFFF0000FFFF01000000FFFF01000100FFFF0000010001000000FFFF00000000FFFF010001000000000001000000FDFF00000000000001000000FFFF01000000000001000300FFFFFEFFFEFF0000FDFF0100FFFFFFFF0100FEFF0300FFFF010001000200FFFF02000000FFFF02000000FEFF01000000FEFF0100FFFFFFFF0400FEFF03000000FFFF0100FDFFFFFFFFFF01000100FFFF000000000000FEFF0100FFFF01000100FFFFFFFFFFFFFFFF00000200000000000100FEFF00000200FFFFFFFF00000100000002000200FEFFFFFFFEFFFFFF0000FDFFFFFFFFFFFFFFFDFFFEFFFFFF0300FFFF0000000001000100FFFFFEFFFFFF000001000300FEFF01000000FFFF010002000000010001000000000000000100FFFF0100FFFF01000100FFFF0000FEFF00000000FEFFFEFFFFFF000001000300FFFFFEFF0100000002000000000002000100FFFF01000100FFFFFFFF0100010001000200000001000000FEFF01000000FFFF02000000000001000100020000000300FFFF000003000100000001000100FEFF0000000000000100FFFF0000FFFFFFFFFFFF0200000001000000010001000000FFFFFEFFFFFF01000000FFFF00000000010000000000FEFF03000100020001000000FEFF02000100FDFF02000000010002000100FEFF010001000100FFFF02000100FFFFFFFFFEFFFFFFFFFF0000FEFF00000100FDFF0100FFFF000000000100FDFF000001000100040001000000FFFF0100FEFFFFFF0100FFFF0200FFFF01000000FFFF00000000FFFF0200FFFF010001000000FEFF0200FFFF00000000FFFFFFFFFEFFFFFF0000FFFFFDFF0100FEFFFEFF000000000300010002000000FFFF0200FEFF0100FFFFFEFFFFFFFEFFFEFFFFFF0100010000000200010001000100FFFF0100FEFF0200FEFFFFFFFFFF00000300FFFFFEFFFDFF0000FFFF010001000000FEFF020000000100000001000200FFFFFDFF0100000000000200FFFFFEFF0100FFFFFEFFFFFFFEFF0100FFFFFEFF0200FEFF0200FFFF00000200FEFFFEFFFFFFFEFF01000000000001000300000000000100FEFFFEFFFFFF0000FFFF020000000100FFFFFFFFFEFFFEFF02000000010000000000FFFF03000200FFFF0000FFFF00000200020002000200000001000100FEFF010001000000000000000000FFFF0000FFFF0000000001000000020001000000FFFF01000100FFFFFFFFFFFF00000200FDFF0300FFFFFFFF0100FEFFFFFF0200FFFF00000200FFFFFFFFFEFF0100FFFF0000000001000000FFFF000001000100FDFF010000000000FEFF000000000100FCFF020001000300FFFF0200000000000000000001000000FFFFFDFFFFFF010000000100FCFFFFFF00000200FFFF0000FDFF010000000000FFFF0200FFFFFEFFFDFF0000000001000000FFFF00000200FFFF0000FFFFFFFFFEFF000001000000010000000300FFFFFEFFFFFFFEFF01000100000000000000FFFFFFFF0000FEFFFEFF0100FEFFFFFF0000FEFF000000000000FFFF02000000FFFF00000000FFFF030002000100000000000100FFFFFFFFFFFFFEFF0100FEFF01000100FFFFFFFF020002000000FDFFFFFFFFFFFDFFFFFF000000000200000001000100FFFF0100FEFFFFFFFFFF0200FFFF01000200FFFFFFFFFFFF0000FFFF000001000000FFFFFFFF0100FFFF000001000100FFFFFEFF0000FDFF000001000000FFFF0000FEFF000000000100000001000000FEFFFFFF0200FDFFFDFF0100FEFF0100FDFF0000FFFF01000100010000000100020000000300010001000000FFFF00000000FFFFFFFF0200FFFFFEFF04000000000001000100FFFF030001000000FEFF010001000100FEFF000000000000FDFF020002000000FFFF0300010001000100FFFFFDFF0100000001000100010000000000FFFF01000000FDFFFEFFFFFF010000000000FEFF0000FFFFFEFF03000200010001000100FFFF0000FFFFFFFF0000FFFFFEFF0000FFFFFEFFFDFF0000FEFF0100FEFF0000000000000100FFFF01000000FEFFFEFF0400FFFF00000200FFFF000000000100FFFF0000020001000200FEFF00000000FEFF0200000001000000FEFFFEFF000001000000FFFF0400FDFF0100FEFFFFFFFEFFFEFFFFFFFEFF04000000FFFFFFFF020000000000FDFF0000FFFF0200FFFFFEFF01000000000001000000FFFF010001000000FFFF00000000FFFF01000000FEFF0000FFFF0300FFFFFFFF00000100FFFF020001000100000000000100FFFF0100FEFF0300FEFF0000FFFF00000200010002000000030000000000FEFF010001000200FFFFFFFF000000000000FDFFFFFFFFFF02000000FFFFFFFF0100FEFF0000010000000000FFFF0100FFFF0000000001000000000001000100FFFF00000000FEFFFFFF0000010000000100FFFFFFFF0000FFFFFEFF0000FFFFFFFFFFFFFFFF01000000FFFF0000FFFF0200FEFFFDFF0100010000000000FDFF00000000FFFF020000000000FFFFFFFF0100010001000000FEFFFFFFFEFF02000100010004000000FFFF02000000FDFF0200FFFF00000000010001000000000002000200010000000100FFFF0000010000000100020001000000010000000100FFFF020000000400FDFFFFFF0000000001000100FDFFFFFF0100000000000000FFFF04000000000001000200FEFFFFFF0200FFFF010000000000020003000300FFFF0000010001000200000001000100020000000000FFFFFFFF00000000FFFF000002000000FFFFFDFFFEFFFFFF0000FFFFFEFF0100010003000000FFFFFDFF00000100FFFFFEFF000000000000010001000100FFFFFFFFFFFF00000100FFFFFEFF00000000000002000000FDFFFEFF010002000000020001000100FFFF0000FFFF01000200020001000100FEFF0100FFFFFFFF020000000000FDFF00000100FFFF00000100000001000100FDFFFEFF0200FFFF0100FEFFFFFF00000000FFFFFFFF00000000FEFF00000000FFFF030002000000FDFF0000FFFF0200000001000200FFFFFFFF0000010003000100010002000000FDFFFEFFFFFF0000FEFF0100FFFFFEFF0300000002000000FEFFFEFFFEFFFFFF0000FEFF0000FFFFFEFF0200010001000100FFFF0100010000000000FFFF0100FEFF000000000100FFFF0100FFFF01000000030000000300010000000000FEFF000002000000FFFF020001000100000002000100FFFFFFFF0000FFFFFEFFFFFF000000000100010001000100FEFF000002000100000000000300FFFF0000FFFFFFFFFFFF00000000000001000100FDFF01000100010002000000000000000100FFFFFFFFFFFF0000FCFF000000000000FFFF0000FFFFFFFFFFFF0100FFFF01000200FFFFFFFF0000010001000000FFFFFEFF00000000FEFF0200FFFFFDFF0200010001000000FFFFFEFF01000000000000000000FFFFFEFFFFFFFFFFFDFF01000200FFFF00000200FDFF01000000000001000000020000000200FFFF0100020001000100FEFF0200FFFF0200010002000200FFFF020000000000FFFFFFFFFFFF020001000100FFFFFDFF03000000FEFF0000FFFFFFFF010001000300FFFFFFFF0200000002000200FFFF01000100FEFFFFFF01000200FFFF01000100FFFF0100FEFFFFFF00000300000001000100FFFF0000020000000100FEFF0000FFFF0000FFFF00000000000001000100FFFF000001000200FFFF0100FFFFFEFFFFFF00000000FEFF01000100020001000100FFFFFFFFFEFFFFFF00000100FFFFFFFFFEFFFEFFFFFF0000FFFF000001000000FFFFFEFF010001000000FFFF0000FFFFFDFF0000FFFF01000300FEFF01000000010000000100010000000100FFFF000001000100000002000200FEFF02000000FFFFFEFFFFFF030000000300010001000000FEFF0300020001000000FFFF030002000200FFFFFFFFFFFF01000000FFFF00000100FEFFFEFF0000FFFF0000010005000000FEFF01000000FDFF0000FFFFFFFF02000100FEFFFFFF00000200FEFF000001000000FFFFFFFF000001000300010000000200010002000100FEFFFFFFFEFFFEFF03000300FEFF04000000000000000100FEFFFFFF0000FFFF0000FFFFFFFF0200FFFF0000FFFFFFFFFFFF00000300FEFF0000FEFFFDFF0200FFFF0100FEFFFFFFFDFFFDFFFFFF0100FFFFFEFF0000FFFF0200FEFF0100000001000000010000000100FFFF0200FFFF02000200020001000100FEFFFEFFFFFFFFFF01000100FFFFFFFF0000010000000100000002000300FFFF0300FEFF000000000100FFFF010001000000FFFF030000000100FFFFFEFF01000300FFFF0000000000000100FEFF01000200FFFFFFFF0200FFFF01000100FFFF010000000100FEFF020000000100FEFF01000000FFFF0100FDFF0300FEFF0000000002000300000001000000FEFF0000000000000200FEFF00000100FEFF00000100FFFF01000000020000000200FFFFFFFF0000FFFF0000FFFF0200FFFFFEFF010000000000FFFF01000100010000000000020000000100FFFF0100FEFF0000FFFFFDFFFFFF0000FFFFFFFF010002000000FEFFFFFF01000200FFFFFFFFFFFFFEFF0100FFFF0000FFFFFFFF0100FDFFFCFF00000200020000000100FFFF00000000000001000100FEFFFEFF0000FFFF0100FFFF0000FFFF0000FDFF0000FEFF000000000000FEFFFEFFFEFFFFFFFDFF02000000FFFF02000200FEFF0000FDFF01000000030002000000FEFF0000FCFFFDFF0000FFFF0000010000000000FDFFFDFFFEFFFEFF0200FEFF0000FDFF0000FFFF000001000200020000000100010001000000FEFFFFFF000000000000020003000200FFFFFEFF020000000000FEFF0100FDFF01000000FFFF0000FDFF00000000FFFF0300FFFFFFFFFEFF00000100FEFFFFFF00000000010002000000FFFF0000FFFF0000FEFFFFFF0000010001000000FEFFFFFF0100FEFFFFFF01000000000001000000FFFFFFFF0000010002000200000001000000FEFFFDFF0000FEFF0000FEFF0300FDFF000000000000FFFF00000100030002000300FFFFFFFFFEFFFEFFFFFFFFFF0200FEFFFDFF0000010001000000FFFF03000200FFFFFEFF010002000200010000000000FFFF0000FFFF000002000300FFFFFFFFFEFF0000FFFFFEFF0100FFFF00000200FFFF0100FEFF020001000000FFFFFDFFFEFFFEFF0200000002000100FEFFFFFF0200FFFF0000FFFF01000000FEFFFFFFFFFF01000000FFFFFFFFFEFFFDFFFFFF0100FEFFFEFFFFFF01000000FFFF010001000000000002000000020000000100020001000100020000000000FEFFFFFFFFFF000000000000FDFF0000000002000200FFFF020001000000FDFFFEFF0200FEFFFEFF01000200FFFF00000100010000000000FEFF0200FDFFFFFF0100010001000100FEFF000002000300FFFF0000000000000100FEFFFFFF000000000100FEFF03000100FFFFFFFF0000FEFF00000000FEFF010002000100000002000100FFFF0100010000000000030001000000FEFF01000000FFFF0000FFFF0200FFFF02000100FEFF0000FFFFFEFF00000200000002000000FFFF010000000000FDFF010000000100FFFFFFFFFFFF0000FFFFFFFFFEFF02000000000001000100FEFF0100FFFF0000FEFF000001000000FEFF0100000001000200FDFF0000FFFF0100FFFF0200FEFF0400FEFFFEFF0000050000000000FFFFFEFF01000000FEFF00000000FFFF02000000FFFFFEFF02000000FEFFFFFF0100010001000100FEFF0000000001000000000000000100000000000000000001000200FEFF010001000000FFFFFFFF03000000FFFF0200020001000100FFFFFEFFFFFF02000100030001000000FFFF0000000002000100FFFFFFFFFFFF00000000020000000000FEFFFFFF0100FFFF0100020000000200FDFF0000FFFF0000FEFF00000000FFFF030000000200040000000100FEFFFFFFFFFFFFFFFFFF0000FFFF000000000100FFFF02000100FEFFFEFF0100FEFF010000000000010000000100FFFF0100020001000100FFFFFFFF010001000000FFFFFDFF00000200FFFF01000000FEFF000000000300010001000000010002000100FEFFFFFF0100010002000100000000000000000001000300FEFFFFFF00000100FFFF030000000200000001000000000001000100FFFFFFFF0000FFFF0000FFFF0000010000000100000000000000FEFFFEFFFFFF0000FFFFFFFF0000FFFF020000000100FDFFFFFF000001000000000000000100000002000300000003000100FFFF01000200FFFFFFFF020002000000020000000000FFFF010001000000020001000200020001000200FFFF010001000300FFFFFFFF03000100FEFFFFFF02000000FDFF0100FFFF020001000000FDFFFFFF0100FFFFFEFF01000200FFFF0000010000000100FFFFFFFFFEFF000001000100FFFF020002000200FFFFFEFFFDFFFEFF0300000002000200FDFF0200FFFF000000000100FFFF02000100FFFF010000000000FFFF0000020000000000FFFFFFFF00000000FFFFFFFF040002000200FFFFFEFF02000200FEFF0200FFFFFFFFFFFF0000FFFFFFFF0200FFFFFEFFFFFF0100FFFFFEFF0300FFFFFFFF00000000FFFFFDFFFFFF00000200FFFFFEFF000000000000FEFF03000100010002000000000001000200FFFF02000000FEFFFEFF0100FFFFFFFFFEFF0200FFFF0200000000000100FEFF020001000000FFFFFFFFFEFF000000000200FFFFFEFF010000000100010001000100FEFFFFFF0000020001000100FFFF0000FFFF040003000000FFFF00000200FDFF0300FFFF0200FEFF0000FEFFFEFF010001000000000000000000FFFFFEFF01000000FEFF0200010002000100FFFF030003000100FEFF01000100FFFFFFFF0000020000000000020001000000000003000000FFFF0200FFFFFFFF0200FFFF00000000020000000000FFFFFFFFFEFFFEFF0200FFFF0100FEFFFFFF010001000100FFFF000000000300FFFF0100FFFF0000FDFF0100000000000100FFFF0100FEFF0100FEFF0000020000000100020002000200FFFFFEFF020003000100FEFF0000010002000000FFFF0200010000000100010000000200FFFFFEFF000000000000000001000000FFFF0100FFFF0300FFFFFFFFFCFF000000000200FFFF0000FFFF02000000010000000100000000000000FEFF0100FFFF0000FFFF030000000200FEFFFFFFFEFFFEFF0100FDFFFEFF0000FFFF000000000100010001000100FFFF00000000FFFFFFFFFEFFFFFF010000000200FFFF00000000FEFF0100FFFF01000200FFFF030000000100FFFF0100FDFF00000000FFFF0100FFFFFFFF0000FFFF00000000000001000100FFFF0200FDFFFFFFFFFF0100FEFF00000000FFFF02000100FDFF02000200FEFF01000000FFFF0200010000000200FDFFFFFFFFFF0300FEFFFFFF00000000FFFF0100FFFF0000FFFFFFFF01000000FFFF0000000000000000FFFFFEFFFFFFFFFFFDFF0100000001000000FFFF0000FEFFFEFFFEFF0200FFFF0000FFFF0200FEFFFFFFFFFFFFFF0100FDFF0300000001000200FDFF00000000FEFF0200FFFFFEFF0200FFFF02000000000000000000FDFF00000000FFFF010001000200FFFF000001000000010001000100FFFF01000200FEFF00000000000002000000FDFF02000000FFFF0000010000000300FEFFFFFF000000000000FFFFFFFF010001000000FDFF01000100FEFF0300FFFF0100FFFFFEFFFFFF020000000100010001000000FFFFFDFF020000000000000001000100FFFF01000100FFFFFCFF010002000100FFFF00000000000000000000FFFF0100FEFF0100020000000100010000000000FFFF0000FFFFFFFF0100010001000000FEFF010000000200FFFF01000100FEFF0200FFFF00000000FDFF01000300FFFF0000FFFFFDFF02000000FEFFFFFF010001000200FFFF02000000FEFF01000000FEFF00000000FFFFFEFFFEFF0200FDFF010000000400FFFFFFFF0100FEFFFFFF00000000FFFF00000100000001000000000000000200FFFF0300FFFFFFFF0300FCFFFFFF0200FFFF00000100000000000300FEFFFEFF010001000300FFFF0100010001000100FEFF0200010000000100000001000200FEFFFFFFFEFF000001000100FDFFFFFF02000200FEFF03000200FCFF01000100FFFF0100FEFFFEFF02000000FFFFFFFF00000100020000000000FFFF0000FDFFFFFF00000000FEFF0000FFFF00000000FDFF00000100FFFFFEFFFFFF000001000000FFFF00000100FEFF01000200FEFFFFFFFEFF0000FFFF0100FDFF0000FDFF02000100FFFF000001000100FEFF000000000000FFFF0000FFFFFFFFFFFF0100FFFFFFFFFFFFFFFFFFFF0000FFFF0000FEFFFEFFFFFF0200010003000100FEFFFFFF0000FDFF0000FEFF000001000100FFFFFEFF0300020000000000FFFF00000000FFFFFFFF00000100FCFF0100000000000000000001000000FFFFFEFFFFFFFFFF000000000000FFFF0100FFFFFEFF0300020001000200FDFFFEFFFFFF03000000FEFFFFFF00000200FFFF0000FFFF02000000FEFF03000000FFFFFEFF0100000002000000FEFF0000FFFF0100FEFF0000FFFF0100FFFFFFFFFFFF00000300FEFFFDFFFFFF02000300FFFFFFFF01000200FFFFFEFF00000200010002000200FFFFFFFF01000200FEFFFFFFFEFF0200FEFF010001000000FFFFFFFFFFFF000001000000FEFF0200FEFFFFFFFFFF0400FFFF0000010000000100FDFF0200FEFF02000100FFFF0100FEFF010001000100000000000100FEFF01000200FDFF0000FFFF010004000000FEFF0200000001000100FFFF02000100FFFFFEFF0000010000000000020001000000FFFFFFFF01000100020000000000FFFF0200020000000000FFFF01000100FFFFFEFFFEFF0000FEFFFEFF010000000000FCFFFFFF01000100FFFF0000FFFF0000FFFFFFFFFEFF000000000000FEFFFEFF0100FFFFFDFFFFFFFFFF0000FEFFFFFF0400FFFFFFFF0100FEFFFFFFFFFFFEFF0000FFFFFFFFFFFF00000100000000000100FEFF0200000000000000FEFF0100010000000000000000000000020002000200FFFFFDFFFFFF0300FDFF010000000200FEFF0000FEFF0100FFFFFFFFFEFFFFFFFCFF00000000010001000000FFFF00000000FFFF0000010000000300FFFFFFFF0100FFFFFFFF00000100000000000000000000000100FFFF0000FFFF01000000FEFF010001000000FFFF0100FFFF010000000000FFFFFFFFFFFF0100FEFFFFFF020000000000FDFFFFFF0000FFFFFEFFFEFFFEFF00000000FEFF020000000000FFFF02000100010000000100FFFF00000000FFFF000000000000FFFF0000010000000000FFFF01000000FDFF0100FFFFFFFF0000FFFFFFFF0000FFFF01000100FEFF0100FFFF00000200020000000100FEFF010002000200FFFF01000000FEFF0100FEFFFDFF0200FFFF0100000000000100010000000000FFFF000002000000020001000100010002000000FEFF01000100FEFF01000000FFFFFFFF0000FFFF000001000200000000000100FFFF0100FFFFFDFFFEFF0100FFFF030001000100FEFF0200FFFF0000FFFF00000100FEFFFEFF010001000100FEFF01000100FDFFFEFF02000100FEFF03000000020001000100FFFF000000000100FFFF000001000100FEFFFFFF02000000FFFF01000000000001000200FFFFFDFFFFFFFEFFFFFFFFFF0100FFFFFFFFFFFF01000000FFFF010003000100000002000100FFFF00000000FFFF03000000FFFF0100FEFFFFFF0000FFFFFFFFFEFF0100FFFFFEFF0300FFFF01000100FFFF02000000FEFF01000200FFFF0000FEFFFFFF00000000020001000100FEFF0000FEFF0000FDFFFFFFFFFFFDFFFFFF0100FEFF0200FFFF03000100FFFFFFFF0100FFFF02000000010002000100FFFF0100010001000000FFFF0000FEFF000000000000FFFFFFFF0100000001000100FEFF0100FFFF01000000FFFF010001000100FFFFFFFFFFFFFEFFFDFFFCFF01000100FDFFFFFF0000FEFF0000FDFF0200FFFF010000000000FFFF0100FDFFFFFFFFFF0200FEFFFFFF0000FFFF00000000FFFF0000FEFF0000010000000200FFFF01000100FFFFFEFF00000200FEFF0000000002000100020002000000FFFFFFFFFFFF0000FFFF0200FFFFFDFF03000000FFFF0200FFFFFFFFFEFFFDFF00000100FFFF0100FFFF000000000000020002000200FFFF010001000100010001000000FFFF0000FEFFFFFF0100FEFF0000FBFF000000000100000000000000FDFF0000FFFFFFFF000000000100000000000000FDFFFFFFFFFF0100010001000100FEFF0200FEFF01000300FEFFFEFFFFFF0000010000000100000000000000FFFFFFFF0200FFFFFFFF0100010001000000FDFF02000100000001000100FFFF0100FFFF0000000002000200020005000000010001000100000000000200FFFF0200020002000200FDFF0200020001000200FFFFFEFF00000000010000000000FFFF02000100000001000000FFFF02000000FFFF0100000003000100FFFFFEFF0100FFFFFFFFFEFF0300FEFF01000300FDFF0100FFFF020000000000FFFF020000000100FFFF0100FFFF0100FEFF01000000FFFFFFFFFFFF020000000000010000000100FFFF00000100FEFF02000200FEFFFEFF0000FFFF020000000100FFFF02000100FEFFFFFF030001000200FFFF04000000FFFF0300000000000100000001000000000001000100FFFF000000000100FFFF0000FEFFFFFFFEFF0000030002000200FFFF0100FFFFFEFFFFFF020002000000FEFF0200FEFF01000300FEFFFFFF010000000000000000000100010001000100000002000100FFFF0000FEFF0000FFFFFFFF0000FFFFFFFFFCFFFFFF02000000020002000100FCFF0100010001000000FEFF0100FFFFFFFFFEFFFEFFFFFFFFFFFFFFFEFFFEFF0000FFFF0000FEFF0000000000000200FEFF01000200FDFF000002000000FEFF000000000100FEFF0200FFFFFFFFFDFFFFFFFFFFFEFF01000300FFFF000001000000000000000000FFFF0000FFFF0100FEFF0100FDFF00000000FEFF0300FDFF0000020002000100FEFFFFFF0000FFFF0100020001000000FFFF0000FFFFFEFFFEFF0100FFFF00000200000000000000FDFF00000200FFFFFEFFFFFF02000100FFFF000002000100FFFF0000FEFFFFFFFEFF0000FFFFFFFFFEFFFFFFFFFF02000200FEFFFEFFFDFFFEFF020001000200FEFF0300FEFF0200FFFF010000000200FEFFFFFF0200FFFFFFFF0000FEFF0100FFFF0000FFFF0300FFFF00000000FEFF0200FEFF0100FFFF0100010002000000FFFF0300FEFF000000000100FFFFFFFFFFFFFFFFFEFFFEFF01000000FEFF0100030001000600FFFF0000FDFF0000FFFF000002000200FEFF0100000001000000000002000300FFFFFEFFFFFF0000FFFFFEFF0000FFFF00000000000000000100FEFF0000000000000100FFFFFDFF0000FFFF03000200FDFF0100000002000000FFFF0100FEFFFFFFFFFF0000FFFF00000100FFFF010000000200FFFFFEFF01000000FFFF0100FFFF0200FFFF0000FFFF0200010000000200000000000000FFFF020000000100FFFFFFFFFFFF0300FFFF000000000300010000000000020000000200FEFF02000100FFFF0000FFFFFEFFFFFF0100FFFF00000000FFFF01000100FEFF00000100000000000200010001000100FFFF0000FFFFFFFF0100030001000000FFFFFFFF01000200FEFF0000FFFF00000100020002000100FFFFFFFF0100FFFF0300FEFFFEFF00000200FEFF0000FEFF0100FEFF01000100FFFF0200FEFF0000FFFF0100000000000000FFFFFBFF02000100FFFFFDFF0200FEFF0100FEFF0100FFFF010002000100000000000100000001000100000000000100010002000100FFFF0200FFFF0000020000000100FFFF0000FEFF000001000000FFFF00000000FFFF00000000FFFF0000FEFFFFFFFEFF0000FEFF01000100FFFFFDFFFFFF020001000000FEFF0000010002000100FEFF0100FFFFFFFFFFFF00000000FEFFFEFF0100FFFF01000000010000000100FFFF010000000200FEFF0200FBFF0000030000000200000001000000FEFFFEFF000002000100010000000100FFFFFFFFFDFF0000FEFFFFFFFFFF010001000400FEFFFFFF0100FFFF0100000000000200FFFF00000300FFFF0200030001000000030001000000FFFFFFFF0100010003000000FEFFFFFFFEFF0000010001000000FEFFFFFF0000FFFF00000100FFFFFEFF0000FDFF01000200FFFF0000FEFF0200010001000200000001000300FFFF01000100030000000100FFFF0300FEFF00000100010001000200000003000000020000000000FFFF0200FEFFFEFF0100000000000000FEFF0300010000000100FFFF020000000100FDFF01000100000002000200FFFF01000100FFFF0400FEFF0200FFFF0000FEFF01000000020002000000FFFF00000100000000000000000002000100020000000200FDFF01000200FFFF0200FFFFFEFF0000010002000100FEFF000001000000FEFFFFFF0000FEFFFFFF02000100FFFFFFFFFFFF0100FFFF01000000FFFF020001000000000000000000FFFFFEFF00000000FEFFFFFF0100000003000200FFFF0100000001000000FFFF010001000200000000000000FEFF02000000FFFF0100000000000000FEFF030003000100FEFF0200010002000000FEFF00000100000001000200FFFF010001000100FEFFFFFFFFFFFFFFFEFF00000100FFFF0100020001000000FFFF01000000FFFF02000100FFFFFFFF02000100010002000100FFFF00000000FEFF01000100FFFF0100FFFFFFFF0000FEFFFFFF02000100FFFF00000100010001000000FEFF010000000000FFFF00000100FFFF00000100020001000100FFFFFEFFFFFFFEFF0200FFFF010000000200FEFF0100FFFF0000000000000000FEFF0100FFFFFDFF01000000000000000000FEFF0200010000000200FFFFFFFF02000000000000000000FEFF00000000FEFF0200FEFF010001000000010001000100FFFF0000FDFFFFFFFDFF0000FFFFFFFF0200FFFFFFFFFFFF0000FDFF01000100FFFF01000200FEFF0000FFFFFFFFFDFFFEFFFDFF0000FEFF0300FFFFFFFFFEFFFDFF02000000FFFF00000100FFFFFFFF0200FFFF00000300FDFFFFFF02000000FFFF020002000300FFFF0100FFFFFDFF01000000000000000200FFFF010001000000000001000100FEFF0300FFFFFFFFFEFF0100000001000100FFFF000000000100FDFFFFFFFEFFFFFF0200020002000200FDFF00000000FEFFFDFF01000000010001000000FEFFFFFF000000000000010002000100FFFFFFFF00000000FFFFFFFFFFFF0100FFFF0200FFFFFFFFFFFF000000000000000001000000020000000100FFFFFFFF000000000000FEFFFFFF0100000001000100FFFF000002000000FFFFFFFFFEFF000000000100FFFFFEFF0100FFFF00000000FEFF01000300FFFFFEFF010000000100FFFF00000000010001000000FFFF00000000FFFF0000FFFFFEFFFEFF0100FEFF0100FFFFFEFFFFFF0100FDFFFDFF00000100FFFF000002000100FFFF0000FFFF01000200FFFFFEFFFFFFFEFF0100FEFF0000010000000200FDFF02000000FFFF0000FEFF0000FEFF02000300FFFF00000100FEFFFEFFFFFFFDFFFEFF01000100FDFF0000000000000000FFFFFEFF0100FEFF01000400FDFF0100020002000300FEFF010000000000FCFFFFFFFFFF0200FEFFFFFFFFFFFFFF01000000FEFFFFFF01000100FDFFFFFF0000FFFF01000100010001000200000002000100000000000100FFFF010001000100FFFFFFFFFEFFFFFFFEFF00000000FFFF000001000000000002000200FFFFFFFFFFFF00000000FDFF00000100FFFFFFFFFEFF0100FFFF0200FFFF010000000200010001000200FEFF0000FFFF000002000200FFFF0300FAFF00000000FFFF0100FFFFFFFF0000FFFF0200FFFFFFFF000001000000FEFF00000100FEFF0200FCFF0000FFFF0100FEFF0000010000000100000001000200FFFF000000000000FEFFFFFF0100FFFF0200FDFF010001000000010001000000000003000000000002000100FFFF0100FDFFFEFF0000FFFF0200FDFF0000030000000000FFFFFFFF00000000FFFF0000020001000100FFFF0000020000000100FFFF010001000200FFFF00000100FEFFFEFFFFFF0200FFFFFEFF020001000000010000000100000002000200FEFF0000FDFF01000000FFFFFDFF00000000010000000000FFFF0000FBFF01000000FEFFFEFF0000FDFF0200FEFF0100FEFF0100000000000000FFFFFEFF0000020003000100FFFFFEFFFEFF0100FFFF0100FFFF01000200010001000000FFFFFFFFFFFF00000000FEFF00000300FEFFFFFFFFFF050001000000FFFF0000FFFFFEFFFFFF0100FFFFFFFF0100000003000000FFFF010000000000FEFFFEFF010000000100FFFF00000100010001000000FFFFFFFF0100FFFF0100FEFFFEFF0000FEFFFEFFFFFFFFFF0100FEFF01000200FFFF00000200020001000100010001000100FEFFFFFF0100FFFF0200FFFF0200000001000000FDFF0000FFFFFEFF00000100FFFFFEFF0000FEFFFEFF020001000000FEFF0200FFFF0200FCFFFFFF02000000FEFFFEFFFEFF0000000000000000FEFF0100020002000000FEFFFFFF0000FFFFFFFFFEFFFFFF000000000300000000000000FDFFFFFF0000000001000200FEFF010000000100020000000200FEFF000002000000FFFFFFFF00000000FCFF0100FEFF00000000FEFF000001000100FEFF00000000010000000100000002000000FFFF0000FEFF000002000200FEFFFEFFFFFFFDFF0000FFFFFEFF0200040000000100020000000200010001000200FFFF020002000000FEFF00000000FFFF0200FEFFFFFFFFFFFDFF010000000200FEFF01000200010003000100FFFF0300FFFF020000000000FEFF000000000100FFFF0100020002000000FFFFFFFF000001000200FFFF010000000000FEFFFFFF0100020000000200FFFF0000FFFF0300FFFFFFFFFEFF010000000100000000000300030000000300FEFF0100010001000100FCFFFEFF0100FEFFFFFF0100020002000000FFFF00000000FFFFFFFFFFFF0100FDFF0200FFFF0100FFFF00000000FFFF000001000200FFFF01000100FFFF010000000200FDFF3888D1AE429F0ABC85756F8E14B3F659446D45FFA950CAA31832EC32C3AEE63E +ct = EB36789847B8CE976C4CBB69533206686EBE6A7421B9141CB63259BF9DE9212463E096CB72F8CF1114EC6F79C157FB24473F7FA57A01ED29B21DBE4C8810B7524B120BF16A46273C323C3067FEBC1332971BD521E07846C4A11FE9264FCFCFE8E4753992FB54F6F797204C4DD033C274DE0156B6847C0625438ACA8EE5144B9697BD00E62158AB04A8CB871BFF6A0ECAE5911DBE59E360FC1C48B7A44FFA053B4BE8EB35ABD207B4768EB92BDF6BAA9D28F6C99512E8841248FD31C03FFDF14FF52BF30368DA32A9117E1A9521E9C47D8D005F4A789DF2E5666163AC44A5F62FDB7541E4A1934D8D508B248671E3220D62402B05C3591300D54876903C1BA92BDE6613441E8376EFE9D9266EAAF7AA84E58BD930E151C2A95BC02626F19ED923F3A89298D11DD8D7645CCC4BF6E3F2FE167CECAFE6A4C32C621679423591C5A981591269A150FF28E25590536DD5C0EC9E560AC31672054A00BF36BE8854F4C6B6895C2418CFF85E968EA99DD56730D6182E5A41814F09ED8FC8DBD49D27288B0A60ED87DB092999FD77C8B45607E84A444747B8941AEE5356DED3BFA1338CBA377127352A1BA5965649DCA5ABDB07961A4AEBCA86B018862D19A0B2A7A4A3474B58260ADB9B0512DD5483FA23A4551884E268CBD3EC7ADBBEDA4DFBCDE263837761BAE5AE587A22DF4047D28F2DE14483F76D4AFC845094C56EA1AC875326AD0253AF8AC726E590F0BC558BCF460589A681943392A318EE72D7BEEC8AA95EC91CD50797FFCFAFD27A750C9AF6C8D581EEEE0C6634313C3ED4F16D2ADBEC676F718A3BC620CC7CBFFB42946317FBA1F4EC493801DA7178E3663067A3AF092F1CD0A9ADA4768B53170EB1234543C524EB6F730C5EEBB58C2DFF9420E72A41D62CB07AE3B99AE255A15E94C05F80F1A6FDD82A56B258C07515E73E0CB3C982C058B97E01461C5083E8A34B8EE8A9F9AF4F125AF7069A4F8D2A9E42A74A3469AB2DD576A9DA19CE6A3FFD356EA241396FBD2B0559EF708CADC229B4F3C8C8D9AC2226D379B0BEE3B2B3CDE5CDB76AA6FAA1037EA491E5168730CE7CFDB7939FB1C58E803B431BE57D9BF37940A709B62E10E004291DCC109654E7FCE1CA1E406B64A17CD421168F62168A9F95642DE3C6FC411A4A362BCCA13AE34EB99DF63CBCE5ADDECEA53D35392AB5A77BDF02AEC5B6F181F08F8D437FAA7D07880FDFB4603777437E46E7F8B1D28D5F756BC5120DE866C90D39CF09585D74BAF6E425B36359680CE08798F83BD1FC665469AAE3E13452C622680EF5802F765C1CFEBDEC87A8BFBA3DCBE22B84A5F1FEB3D3421EA41137337658FE3DD726628474F5B56ED56F70CAE7C7C09D503523F5952AFEC85E5136E171B6AD4559FB2C13E2587BA92E9FE819C5D363867DC45B28DE238785D9EE33B725C968AED7791218491680E3E83D38D6BDAFAF89F7F0F2CDD74E0B49B036B718789F05C358956D06CFB775D0CF83AB915992E797F8B36F1EF08788E9D61921596D269CB4435217A737523E9AC8C5459FF859CE0D03E9253278D7D061C1140B15C6AD59EB44C26269768D241E1BECAD3E17E155C0E11852A659D92A3D8F8DB95F28CC3CD084762BBBABE8C3231DA10F19F920E0D55A72542157CE877369F42B8C267F0BE787E32AD43C9EEE048D5ED6B6A06EECA83BF68B0EF7D4111602FA3AC706BABD45D0DA9B43D6C90A911B81254E170E6A8B6CDA8040FDE589CF754A015F1141E25B75159885882D600805BC22BEF37AF5A906C4FF6CC05C68C26EF33482739EB3F72CAF8BC7C950E34BA87ECB969391A7992D934458572DC376FCF371B03FD1891DC3C4BAB5FA80137EA3FBD4536BE06692314621A042AB995A2677590F00EFE943F951B237A76BBC712B5849A57848176093DE4BD31BF7AEB38AE747AF6B933203D0F6ED12ECD2F76FB310D4782883C3D89D42F3D8E659667503244CF9169B98D075AEB69D9DCD130F8E3304E28B910BC16923E56D2A39A16F19B6080E7CC3627C7F2B484DDA89DEE20499AFF2BC15138EC65329B3C19F8705331F12D75AAB04E8FDF577AEDF3E1748786E50F07023BB6741F4E86DDC4E056C757FD07904CA44B65EE3D241FE87829C6231929E55E73888DFD60201FF693B9B5BF5DA3E4C3DD5FF957868173F85DAD8C4EC19863F4EB6EE0463D4A0C614BEA15930161293876A63B90AAEC5477FB367BCF0964BAF405BDAB35771A4360E60A6B8752FA84F5E2FD2C913481DE4800A30CA7DFD5ADF544EF1C93197E47B34A931AB5A46C52CB99FF486178D078C0ACBD5B092BD920C0957CBDF762AEE0549A70F9E1D7FE1BE3D0C40BDB025C11F58436992CBB8C4E9809F94192C8EC595839B1BF5E78577E53673B5929BE2AB6DAF0C7BBDCB6A2C959A03F7578022A19E4D3AC4B973D06422CA7956A378EE4C24B6490C2421F5A2A3D5853D06E17EA9929E7050ADE97DC0C7D0DB8D06697D0235A1A61E5A97141B87E43CFF7B34FDE4C25AA85D18FA100F389F968CC8281D4789FE58227CCD59E7D484648B060CE2CFF6A528312B0ED8073A00F4BBFC63645A4AA0C0B73DC334B39E8D3171464AE44F36788D2EA9D19F2F1630870359AFCDD1C0908C7F3D96C843AE89FBFD730748CD3E3134C88C61A83451504DDDB0CDB6A5D4F758ABD218F46E9700458ABED42A654D4D81BE6F2781BBC14C17DB49DA05519534AC65DED5750F0CB2B9758C379735CD73A5D5C3DEEBA1F91E544263B0C1D386F37200783110B75AAE5D733B444C4D31B929723E9C5F723717A2949D422AC32A5B597BCBE0A7CCACEF571CA1A1C0F3CAFD4464919608DED19A606B1272D367BC8F4731C2DFF8BDC17CAD80017C7AE798B1AEAF59A8911259C23C2CF7898A9F87C59FA9DB5D4B3F3CB250F24AAE39F18179DFC4938CA2E6D9F37B2425D42F5A34F81B19D066D69394E9EBDECE4F8409ED68164A7FD3B1619E59AA6F7E9BA7EC7D0FB16A0B75CC1F2EFA3BA25DF7C8B8B15E5A7FFFA060720072C207A75BB0DB961F7FB6CBC1AFF74175156EF008B9BD5BE2C77BD25A785A36A743197EDC7DA212D9EC6288A39243D4ED8550FE4F0DE8E5F162C059A1AFC98260F6BAAE13E8443D3ABB02E0B8EEB77B28BDF2C24B6BE184FB78BAA172062C5085ECEEA92A85DE156D38C56CA8063176090AEF164759CF0EA348B5F57DA9F6BC0112EFA0A634FBFED14D45633C8A42D64D98B2AE7B2917E3E17D3DE1FB61261D79144ECBD5441C1C4E989E991806EA502FD3BD64D903F79F2BF7A4E2792B136C6717FE44841E84D7A756701F357B678BB72B713EC84D278F5FA031C082AF1CDA5F45E94166C7313E37FDB3E63B627682197FD5FE5ADA86AF9BE7FADC6E444287E823CE5AA4990E8FF3CCE67252A8758E3B0C7FD3C78C175C2D0A1909BBE8826B6F1EF024DD6B3A98BFD62780897B18D6E09A2392C8CFD6B94851E78D269D159FFEC39D9827B431E527F3C040CA8E350AC34E39D0AD390D6EEC3F9EC6F9C92363B742A11AFA1E193A81B6628E35A1E2C8A0553EE3BC582695DE82EC34883FD2791C6CECD88B709ECDA29821F9EAA280F8579231A0A7F51C9E9FC46D7CA9B07CAC0AC629200B469F7F151A09DF41B85A7D47BA4C2CA2F212C0F424C7998B7FCCC517E2BEC08D9F978B7D47D11A3317C8F3A4CDAC5F7C12F059DC37C37C4BC83D54B824D8B0C3A8C1E0C7F66EE91B2A2A58D38D07B53920BFFC8B418B2D745735F94ECC69CA66F7A59BBBE51315F95FEE6DDDB96F228EF112457E611CC6951B2E49E53D70FBE4E065E43C477EEDC107718B68170B46EAF27C4D2A2083289EEFEFB176E628A90776121F09FA3789C810332A4E4927A5E896FE7CBF30D3AE92E29CA79CF0ABECA505C914EA0B90AD0EBB6183070174E41EF66A22FE603670BB17380A3B6399268DEE896154EBBD324527139192771E810D212A5D311F64E33544883E6A72017716E643159F60CA78D613490ABB5DA6C8A00FD5C581DFC4491BC5D2F88CC8308A6A9AEA83228536B1D9379E60DE39C45496771A2E98BE8ADFACFF2F75E494126B390E6DF131F321907FAEAF3ED41D87A19F84B33B68D79D7889E459DCF43EDDFC4B4A13BCDFF06A12814E1574B131E3E832F0C9B8E8FDBDEAA68C3394A2D8BEE06D589415C10A7D4627257DC6AED68C5409839D9F11279844F371B9D72626FCEB69A4EB3642766970A0D1539DFD60DA09BA6E454E770CF88E48570378BC33AD6A6836F7D4FFA0D4EFA92A5074269087CEDFC2C7DF7EBD9246E21B9BC48CD04D951A2D05830A4BDB95380D024DD45EE2736BBB5BEDB6BDA1460B2AAB8D0C84C7C10437E1251856C5C37D167EF2C412CECB8DC443692A302E7F56E4F217D18635D6456707C47B25090992121512FFF282C0994A4974448AE812BE8F9B88BF0B3074F8BD77153EB414C30CB9A9FF65A261F23B937FA8AE95E14D96CF4536DDF9D240AB54B1ACCB4C612D021C2CB60EF29A7FDA6EA3EB74AF2848FF42E7AC448B9129C9A112DAA58DA55E93BC00968768C29AB92BAC5911F45840A46CCE17AFBBFCB4C71033832D070910C98E8E3D29B8A0935CD74A5EC3CBF858E1CD1DD584A56703CE5D9C33523C11E9A6BF7603B9C5D61ECEF34E2DAE27D8922D4E4EB61431B36C736B157E2B128BCCE1EF90A36F1F4AB2C9742E60A4EA40566FC8E006EA3A8382EFCA8109744CE5AFFFD70E05E12BA1A645664A66931517EF1C74E853DC5752BC7360503D8B7BE2C7A53BC3C2DAFA26C464B752E999AF9E0344C3E38242E61A9DE17E9CAB5CCDFFF4B82FC68B17FE60E53AD43780893E2CCA6BAB6C4048E64A0DF2E1D4B0EFAD1EB7AE61E92DD8CD863832F02A118673FF6D64B474D8FEBCFC51074526E9A8D6251E9629116A80DAB9B62DC8AAFDF2072AF6FB7A211A0713445B8DC470F05981A61875B9E10DF711F7D82375F05E2E287D5A998D96D11C1EC3B7596396C27FF11BA41AD9E4FA01C58E75AF54C317F58C0F8A7498FB7AC1B413648F964C17B26F4F54C6AC23F585BF0BEE5E256C74D80CF4C303C8433FB334A1B82D2DDAC06279AD85E973435E9D6797AD3E60BFCCA219965BF135F5DB72F54162C921A7FB64B9DEC05E376243619079661A5835D02C956853F3C7B84E85EEED157A8B5EF7DBB2D4038107F67376490A94378D34792A23BD8ED39E9555C220279349A531FAEEA8FA290BC36A37C9355D5766C30C185AE960D159252ED07731C612682384A4256215F512CFD5888941BFBFB2AAB4B9A84F6084D9E2078250221A182FCBB4F67AEE9A6FAEB590666E2805C8F15B0E279E6591F2FAC2089B8A72695DB451B9DE9E313DF81A126357301CAD74045822F4D8382A73AD4999293B85CBAEEF9BF7C67BF0F8EE1573EE148B4B9783332E3FCFB41487B40598165270B38E4BB2BC0BDE342FE010A70361DAAA7424379D8C977A9E3FB7488BBB7029C16F397C6BA0CE5C11A1431D64EB8D9D0B5B10D189A3A3C7671429B2C54F4DC5FD744BAB10AE5234B1176B3854C4456B1102E46468ED189D53D68A40FE5DDCBBE2C3676C8C0257CDC1AAC739D95CF715D2BC322FC0622D258CBEE29D3E851DB17D3DB0BAE8A09F24D96A00E58CC9ED447CE2141B217CDFA60B3E3E4EDFAB3C17BA141DAEBAC7031679B1ABF46F3B1CEFB5739CFC866BA03C21DC70711B4FB53D5F97BF9983AFFDE4704E348FBDF9FF99A4FDE5A6BE6E95B1A390D15D19E7193A8B0A3E016C02C1889488ABA3F48627462DDC60DEBA1519FFD766F11ABF0F9634A6957454025F1E957A1DA60BB6DD308810A9D154F0C390BDB0957422FF7932E2AFC6DF87E91519C535CF3352EAC268B1F9A584161E01960A10B00EB51C4A1DABB266904244CC5875C35C85A77A460E24C9690313E398B38C0C8F22CC7C0D65FF8BAEBA1C62370AA28152809303BC0C2FF49DF4A98C51E5CC31717DF4E3F4E20594931F43ACA8BCDDEA513B2E1CD4EA8227F96C6C84E4263DF6C9F558970C1947EA68D009F483131FC01F075B01E0D63DA2F7D0F8DCF52874D14E3F250BF48889FFC55073F8AD30251E170D2D1CEC4E659C43084916213FB6BFB23E249C160CCC5F7D91E4C2D0C36ED4ABF57A13E5A36EAC4DD160372C4F40D7C346680486EE4BE202BAA52331F4349BD6BE22BA0F62F7B845518E36D70755E80DED1B698018D65594262C0802CD7D879D5FF1812501C398B819B12F89594A14BF6766018B89476038EDEC0238A1675CF3FE777665750AB36533A20E110CD23BB1083DF18DF8593FD6E6C3A671E1619411DEE619A80E1F4D6BF4E6AB82D436E8593072573667ACD0FA909E7A63F22C11808BB40675A74C843D4B07640B45CDC3395A1BC9FB8BDE1DE1838BB8CB79C66A3E76948B80938F976609B6A45AA505B5FE56A6D828F7FECF7EA7CC7D0A9209FF89FC8BA462A1E1FED0F86DB8E7128C6EB59ECECDE44405EE6DEEC9AA412DF7F1583E9F1F618604E4A8317D69F7C346D614F726BB1D4538E50A4EB11B4BBA1F80F60A42EF9A58664540E5E79954AF530CCA4F9BC89EB5091E0B136CFB0A5D5ADB4BEFCBD7BFCFF87BE6D512A2F1E5755327F0F1EB3A75996EACD2D2C044B5532D5EA69A18D101573FFF4BAD97F8F20A9F63E82434AC8E8741F9E8CA5DC2749D48D2D13E11FD23F27F8F32FB6317B66F848FB29160B55934B67FD0B734FC745F130C87CC82C4CB0634EA422494245DBC539B6ECC2082F664654D35E1439631D1FD2A6FE15E1BE429E8CA25B401C30FBDE5DA830F09DEC6159736FEDC12E42276A76326F161A830A56CB91C6CFA7A1F4E50DC5F3E0A53C837C51614FBEB6B5136CC7739DD245D02EF2A883EFCE68AD6467D28ED53F526F50CDE2AAD7E53E46BE233FF575C01C58561C60131205C1530F7150A4CFF6CA1B3D76ECD6AD3534825FEC6ACDA723D31AFE7BEE6A4E061765DFF8A88FCBE0A1FF8A3E0F1D60FFB1A197FB500814FB159DC63F15FECB99166BCCD5BAA4F5BD63D5A92017257646287F5770DAF08530F2056B9EDD8F98CF721FA73ACD5847980121196911360B276D37E2B2E933EC88FD366377095D04A32E76F36AB52F8F4D5305624DC5DCCEC41CDA26224044A1FC8B3F22E3911AB5E5BA14B65E6FC85AA9333F6E20B45601B1D630D0A2B15C7A5D69B698C780BB54218B640771469C2802153AF7877D5EE9271A36A6097EC5DDED1185C98447B0F7AF29D0BD1ED059AAC3B11ACB9641D6E89F25B15B699091C65904E0729185D1364196BA9B51C6FE3CC9D2478A305B9D60FF533BF8235560022B9D76C3FAF39929B23E051E6B6640D309F1EA37B04519967EE8B0918C067647C043D4656A458C8A8CAB3822F9BB29CC12E7D50F1C478894E2C5E3952B1A4E6A9F7EA97F20C2BF6816751E48BA3533E8E8ECE76262E7CF13C56D3574E2AD3AFB8A7F0B5500A6C015D8007C3E12D4BD101AA6FBA229CEA7D88670278B3117D077195D96AC090E18A2227B6449B49FDB842BF0CC6F60363F3747845691504171D1F7953076C7BEF30184AE65E6B0BD7711039D572CEB62C84B89C5E6318CEF61CF586AE4114C06D3D69E9699B54017DA30BC86BA89E9CD96E61DD41E69FD09CE6A0066D2D3E7249D3896E562C042F8003C317F4B8892C268D2C3C53F9E43A0F26F0CBA29ECC9082DCCFAC3D7EFA5BFF4D053BBEE54CBA5F1091098A940180936EDC1B24549B2B81F803C521B3FB9D2CF08D824712F39353B387BBB44592C5F22E675B3066F93C67A7FC0B278EA8435B57247187E331F42B8962F5B32E8915D50506C208D3BC3B4C656788937D109352368BC2CB8BB6F64EFDCF568BC8E5E48878520C7DFDBBE2261844DACB9F0050B725CA38318A7CB50A282C96A626824B452464F3325227343F02CDED3878D40DF86FF74C3DF445BF97E08D0E7225786FB25E908BC7FACAC58D6C174C558A3AEFC58EA7A0231EDDFC944AB19EF7E16876C6924A73D4A7B1909E9A5E920363BFB3FAB15BDA2F49549632F13B8B93ADBAB719D3AFBBF824B627589AA7C0049BCB11520985F392AA409B937B3A40F9F38978D18096883C7785A66B10E5501DF58712DE20CB3DFB7E2BC9A1384F0722D3ED2ED9C930F9CC4D64DD5A262B92270B5F47C07AD9168ACA4B48C7E0FC28A29B32EA5CBAE1C36AEFB0671FB9013FEAF5CCD55F2464CD1550E411990D44DAC23171E3F1DAAE55B33B4C59EA49D7F71EE1A478BFD1883D15D069903BB581FBCAC43D7B63BB11B6EAD0EB3919624426391AF0419FC42EC0D144C71D830402628A15584C03DE87DF98138A613F256EB4392C674E763AD18C388243A5E28CCEE5B1554BC09A957FE81E3CC391F76E451298C1E9E3FFB29C64410AC0DC46EFF163B968F59FA00B48D8754BCC08577B7C6631FFE98855891C7DD5A6DDFFDC5193CD14816BC9C2DD62A7926AB6DA02E62F89A125209712B959CD86DBBF698406EED091A8ED55945EB4339074A2074805454B25FE47ABE9BAC862FBF9119203FBB8DD5E37789C209A3F86A8B5CDDAE3F0959EE9716FF59C75A053D1994B0E0D473449EEEE1CF680866B906D2B1B83249BDC0F0746FE5C96053C0FE057059334A41CEBFBC8BB7F09D60A2EE9EF524E124B5348AE6EFBA7BAFECE702D94A0F95D3CFCFF45A52A290E2DD1BF19EEAFD790175FBC42A44ED736597D3D44BEE0311AD5ACA5A8C897BB4FC6E9749A679630FD2CF94916458D3B9BE20D2C7829FD6B20A7C702FC552BC2D2B7775693E33CEC783F1DF67E5CD70E9A48EAD28A01B4D207E2100D4184F06584FEA359D82C99C83C42462C38CF08BA2EBBA05F9ECCDFD01508BD6F9D015515640659B9BF3BF49F3388ED1CF30EDF9AE6962D9C704B774AAD9135D35B78C78C5DA129FB49ED7235E063565D3C70DC12AF8F197469D1F51C75192F3E1BBC54AFFCA81152B3920B1DE95E09AB91ED85053290F353B01E76340BD275C1059FE5C7D8BFA4802EB26056508E8F6D114802B493D9EE4FC17269C4C149DAA18E7BBDE53847ED2E34315E011EB804CC29C58B29591EE43795952CCCB1A9D609595C9D922D9B94249320C7D1F1915A1BBFB1A8A1DF2E3119C0F1B0513897633623E1147D3654E8A2CE183F2982D5E27F492659C04AA7C6D64CA74A53C1188AC28D9C980287AFA9B2547DC58C61009790408F15E03F18FE8DB07875A0A958B0AB227F2C26CC8D93C2FD10861C12B677307D659377FBDC6B6DA32DF702C3173C2599FE1464C7FD7526533BBB70B1A4B8D9912EB026B20B5D3079FCC87C6E03A0B1611A3C5E38E41B1BB8BB7CDA0A55BC4DF14E0BBC95C53653B5734A3F58B95C8332D41A2DFAEB488A596821332AB212BE694E1AF64B3D5197D658688FFE6D0659C781FE6FE7834BEEF13807734CCD67C17F693850B407B59340A91FD3830FFCEEC9E63E5214403A2200800A37024535C12362FB15BA71300257D660D13A2851AB176C7B493C8132B15AC6B644AED691BB0D7CC453D750F5DB63C99AF0056173FDBEED3228B2B05B90429564C3AAFED49297B755AFCFB657761BFB9F2D2ECBE2308DB4796E36DADFCF002E97C62AE6C221FE905DC798AF2C1BA4CD1B9F43241161ECF78EF3FC2186D905BD3B2A04362BAC455144A1D5DACCF7479CDFAE31B03E158B64A6DCDAC34330BD33C7A7BB47EB1AB1D42DC82841D4D2D2AD152B588AB62AC7548BFEF31DFFD33C72E3FA29A9933B472803987EEF41F017AC397468320FFE10371C831D30223D0C1828AEC5CD6A687C4BD663EBCA139D246C7461BF5D04C9DF5148DF2B232B57FE419EF7FB73372F94A0B40637445411896A57E1C691A65A45B3A5CFB9BA204FF7120FE643DDADD036C2EF3B112D3770D4FD222432EA065DF0EA6B16FC0039ADE0FEC232DCE6A48D6B76840075BC3EB0CAB7AD150574FC0983A77C89842D59914E18648A53E24DD8FBDFB2A859557F219D01A56F82B545F18B56D2F3C360B51A563D589404609DC77358E6BBECE6220318DFCB8ECE2782A9D0EB9D4ACD8172852B6726FE3F0A2D6C91D0582D98D6E0E29552F5EE831A7971AABB0DC94E35EF67488AEF02B3177AEE84FD63C20EFE6EA6EEBE0DC3B077143040210B2FB6B8093E870F37C0B218143CA61DEA92F6609BB0F82333A8AB184D48E0A384435371538168F08005E268AFEE9FD5809DA421A166875EA449F6A692E7FB572DF7AA05AD38D51090D92C65B96CE859DAC3C16F422009F8C41CABAF1283CCBC59EB53EA6647B92F1C24FF5564C0DBA1B29F158D28B4BAE6A93021A04A21E4405DF077AA027017CECBB98EE84101386460BA6FD4682A11BAB8BF18C9AEEE6B0FF3BC8AC25AF0720D8874DFBCBF42D4B09AB5E89385513347F54833BB8E9EFE77B96232B7CB06A1CDAC9FA716D2B3DC2FD7C2A0A823C2E84CC23EC7D56EA8D7A0EB1A7393B044F097B67A9F3FFA37325788B57C37033E350F96D11BCB8789BC90F636DE1BF6A3294BC1CA13E69A25A4BD52FE6C16BC0C572D717B8E2FA0BD6831E8580EE99CC281B587F19A66C6A0C304A70675C9B1B13379BE1726F6EDD70CD639B51301669107A77F753C365429BDDA2B66019B451E74FFCAA21A0E70C4093668260694D4AA660D7B02A32ABEBF3369F3BC7128FA5ED699B19D19F86F1903E71F97723A49DB643DE0778C7A6DD65B1F81CB1134F857CD08F91CD2155E4C11068C271C6662F96E1C7BA5E62B5D3FC5C141B1B4EA34DC7FE31BB07662B72C9803B7422BAA3E32CD9C5ADDBD4BB3A5910D96439E7219DD16A9561C3272889D01642E0C5DB634C15F7C1CDD8150304CEA416F3229BB71D750CBF6E6051E623A1551F194506D3D39F5021DFD03BDBBCC653B1BF214EAD4CD3AC7E24B95899DF595BA08D21BFF0664AECF6BDA59E80F2E82DA08E85BA596B9F220308B2C90184F7BA3964A35AD5E54AC6723D5650D995038740BFA3DA5179E220439A22308D6A658D76F4FDCEE6E43FBAA9CD31B79C5F9DEAFCAE4DD0B7AAB2ECDB3F0D0F1F47B02CD56AADA235EA30272F03979DCB5268A744EFF1AEDE600FBD43FBA145DD6EC9EC8C9C378FA32423DD58690B0A19129359C59583C2EBBB73085E460DCEC1534F16D458C1CC402B975EAD0932196C1C0C35055EA14FF96B1767306C8C2022E587A8CCF18DC47C560A59AE201A984285393319CA8F1A8E962FA55545EA18AAEE5A6887F59D1050111097AF84EFE6ACAB8139051645888F33A3B7D683F06A0D643152AA35470660BEA5494E2475E72FEC6F39639222CBB1E838AB5519C182964AD51C77F77D1300BD0D46DEAD369ADF0575140CF19D8EA86F427D995A0B9BCF383AF09EE0CF0E30F27E3BBBB51ED6E6E5908FBD93DEFC5F15E685B36CD8D0B60AD7D12427B9387132B1CB9268F1C22B653D5A6112CB168A3788B63969D202640A4D155D34AEF66DE3E5A052FE0BB63EF6527E552FF086C5939A58EBD5B06FD677B7E110A58DD5CEF6E8272328E233722D7110A17F3E522391FD24190F7F3110AF68F8A251A8AD2FE3ED8E95EBBED4BF94907C2EC289172C452C439B406593DF0F079FEEE5B3C032217A1AE08A68AACAAA06388F124AA72D444D0B0F126839FFFD128B5F080AF43508C4B503B84E43DBAA2BF798AA6B68B4430058465DB5C4C904F4A163086CF68D6E8942E935879B1F502493BE71233CD6545FE35C342EB31DC05585EC744F3D0278B2F062E2CF79EEDFED1277107B6473F67A3E739412778B9BD963FE2DE5CB3B32AF5FAEB711AB6EEEB9A5B2EA8CCBF1D395415824D889D588D8ED404331553D2A1555486A5D0F7EAB2E66115F3C355ECDF9034B193A0002ACD834FBAC9066803211AABFAA2B05065E74C996FE94F9BB8899AD632F8F7D4278919513589C252EB1492203E355018140A7713FF081EBB0CAEA196A51450FB9BFB14BBF079A1DA00B9F2FB8E526D46F6A697239ACA7836CDD9E201FBCB2EEB04B95518447AB1EA0921F8BBA8297B1F794BDCBEC6D9CC2C6FD3168B4B0ABD9C9D86FE11AE5860AEE7426E9D3A122CBE23E8B9D830C711B56A45968C9C812B38996AF6B3D57E8EE0B5B4B8CEA2DD7CA3205A4BD46CA74FFB4F607BAD3D321956AD12CB51B5CEE63DC004766A34D58C7FC8F0A4475ABC1E6EF4FF34AB46E87663B2314CA4BA7AF32AC2F7450E1C2722E85CFCC9541A97991FB37CA6BA46AA6BBFE6CCC92E06E6DE725879D6F7FD2F60C32EAD23B5F750A36DF879FF13CBFE213607398EABB4456E861411560442BB9EF41D449A053A7ACDE6114E45FF741C500B45805ABACC4A22D5592B01ABA884ED06A74AC6E69D0FF63700298492D226F687D231FCAEFACEBBB70D556BD8E53252DF7C2137398A17993EA61E08C047A700C5989125C61B196E899562510ECAFE69EE9AE50540FF89B80262449C6C4AD4D8CFFDD4357A814E27A6F5BBE22EDDF9E4DCE120B430F7BFCA0E39A1C71B989AB32C5F2B0C26229E0009AAC93F7ACEEE3575505D429D33F114E0B95C54B5D95EAD61B2C9D33675523AFBD2F4DD9DD24F9ACF6083465A515ED1D599AB8C3221E49DED133678265EF89B2D30A9A584DF67DAFAE0BF016531C82D0E6D2BC1CE30436D932C04C94969378026D443EDAF5DA9F071C7A7E8419DB6636DCFD3BCDE7B07B8FBABA838974C38FF8ABABDB24F710583D3BF2F809367249D3443A382B318CED195514F173B3C9ACBB1F03C66DFAA91BA26259A98370A42EEBB1230D53DA0B4D9BF8489767761078F8F47C4305F7735F8CA9CE2D8ABD0F6E89D06F783C5D177442B93C4A28EC2849F1FDF0085DC0FA7C3675A0D76C78E522CD7205FDA2F548D8F44F8B5A3C051FF8902630F8CA621A17EDF8D90B11353A94D56C827A4A8570384D54EA18F850E6CD85F61A3733194B705B912C8476203C3CBD8B37CDBF75F2E1EC8A20C97F38F8B01613D36694C6767CD57E4D5C4424CAAF60FD84732C6554F981B3C36FA6970A3383A9CB1AE264AC276020948FF85415AC268F256D09000FB82737698E914613935712081FE240938963462CDC12D44F3B72C7ADA23C4052A9DEBDD698CCD14A4818C7990098466B3BB44DEE6FE5CAA29D4A04616A655AC2BA2056446F613A0BD2A0B13B0C36567F5F6B200C5028E22E9706CD59498200489A43F1D98F02580C14FE181363810FA97A33700DC05208368008D120AFAF3F17CE49D19E64E31425B98F9ADA6E6058B8DD8B7B9414CACA504DF8587DED35EF23AC6B735DEB45687A2B73401F083D0FB0878D88414B2F30D7C29B0BC64495A7E25594692EBF46F8917E45FFBC211F663C09D18373C111EBC2456EC43F44D11A45083C15C2F51B03F8C1CC0BB21F8A67BF954B6C598B90B73ACCB4825E4B7FF36E14A9C9EBC993766C353DDCF0DBA1EA54D2155411347AA407D1B18A916D0506AC31F5D25F5465E918808E541AACBD1DBB4185D5E48F96354D41E4A204F455122F40411F9EC46107F3D956FFA41237C10E9E5E7194D7A5227026D5A40F054CEC327A15A8CB60FC11BD43B93D61BBDAB08DA18A3346B59DEB6DB8333A18F0803A2885F9C37425A71AA5558C8B11DB1722DAAA687708205B5B8A02FBC2474419ED3EA6CE11462B3B651A67A6F273FDA0DEC254F936C871BEAF2D75AF3712F73519601B5219C47E523C2D5CD6E6E77F9DB99EC3E6E87884258FD584DD2CA22373441878C5F2F34045993E09E017F627629F5A928C9E5068711FBF1A623B9D2DC9D92B235E545E4CB9C2C36C54FEEF03AB79D4D9E68EF0BA01864B473D50F5F18F1FEB14150E98736F77E29B24A1489BB4A7680F1A9BD4A611A448FA02926EE63DF62EB8B2A40A1535B506BFC67FB01D37F99DE301815D1E5B9D8289F1C4D6E57C635DDE6E75E033E8D374DE92C71EFB04657D6B94FED63CB31A9399ED2E453F6CC0CD80B27E1981C8435B3468D2CF24379C7B8BC0FEA6A7E9CAF3E1EFAB8BCBECE0F498F92CA125E93CBCAA2C9717B98AB704A5E9AE2B07F17A2B6359933AFF81D532C4AD5BAC916C94261190B30B0BE73B93FC26013E2CA9D4E48A3812649E65B89616F191996FEF4D53F6E5F53F560B080F0866F80AE9B771CC31196883141F9FF6F16B6738FC971230D1E42FFD340D43603A8E63A9607895E228CF8402D4D9A3392E0134382D345A572CD03AB377568AE7A8BBD439225003B43DCAA0B5BE33BE1BA6A39819E2FE48A960F62B5D189238360123D1D7B18A0B99C06C383EC6255F7A0ACEF6C23CCB02C345E284335574F08C217B92CD39DC2A817CF1155EFB85F444AD7FBE3F837F2F42964D7E9257C2BF349FB1D82859ABDA14A7E2AFC9E36D0E0FF2B6B7B4B38E08F6F97F2D888F19AA1BB36C8E4423A0180A6B4A8B1AF4DFFBC05DD2CCA15AC9F6E5C96F3A933C939FDC25AD37BDC0410C12BA1D61070B79553C3DFF5A86C55717ACE0BC99D154C5A1F5A586F5CB8EDEBA2D5E436C3155F113424D9480E08115BCD435713F883CFEF2BA4ABCB0B6880122DFED6B761CC9B6ED4376A69C05C6E379EB458E86F3770329C695FBAFC5505DC49E9138E2252158BC9F4EB3DAB3389876264D7182581662A3346BC4333356B86F680CB3462C28D9003E6763CBEEE1DACFB694E39CB873637680809B452333CC844D341A651098B91BCE19835B87ECCBE2DA09DAB553B2751C5C4649DD12B0A389AAD9DA05209661BA77E864A0E5C29684E7D52F2FD370E516A0E5868B887421E8844584A9D6AE82F7304AE7CDECC3FAA5D2766C7B0CEBBBE56741BC0E4A841266D877EAB4F479E9D64AE4A40462D2E49E6E96835FB3FFD21982FD37A102272A32B215E9F81115BD7898B2417C559ECC957F6EA5E627838A83C3A8F4FBCC975DE1B2E82F2D554D454FFF91CFDC1B43CDC9632BEB5A89F037CE69CA7D677BAE982D24BEAA826EA5A725AE1A38AF04F7FAFED0FE7FD0F96A915F64436D26BF2E218B580990B721F005B010D456FDDEA51B27CF569F7A1F17E3247F78933D64F5AE5637BAC429911E7B56E6125EB94AF7A3359C78ACD6C6CE25FE598E4AA8EF6B44F20CA2D8DF7B56D2C308E5DA0507BB3020C32B6C7FCD0D3629EAD0AAE5CE242F0ED4EB13BE8F108CAFED030DF34D559957A0ABC400DA7BB23CD828E046899EE5A33032AD11C4BBEBC7CF8A256B973C6BBE6279F73D12FF421269F0BECF74861DF505C163103EFAA5145C878BB47A5417BC86012192548A7DDC856F6ABA8D0771C16BD3BA606FCAC3DC566BB82284BF39AA1B250C1E7D48CFCE6468A31603A38AE0F8A816FE4ED73FBE56B5A18F317D10F9DA43282062C647411E7ABEDC6A8517BF45FDD9AEDACFD06672C6F5F308729F54F10E7F5DC0494DD7962C359CA67E26B550D8363DF02B1591D4C2BA416141B15B6EA57AB569944173DA36F7E9517392809BCDFF2AEFA1D4313DAF5CC09B7590110038432FB2AFBE5E173DA1E2284E088209AAE46B575FF08020B67DEFEEC896B9E39D1FF0F7E9EEBA6A5916B2B80BC62A1CA287421925D618E39AF469C3AE4038C64256AEEE704CFBE36C9117A7877D3F0C8C8CD73017C454E837DFEA1FE959EB3EFBDED8484055FB81CE1FDE93401D900F2BD963285F1C5568DACF46F83E78E272B1B89FC505B3908230F0D313C596F6A2C393CE35E9C0C5E3E7CA589E3F05CF3D1EA43EB30C7464BEFF3E18209F48AF25C997D3324ABBFF8505BFFDF417A820D28D47FBA8BF1A5F37BFC6BBD10A7B88C16E73C5FE832131397DDF913367DA899EC2823CEF34F6F0808C6F507849443FC7B0FA19D5D09BCBB6C474ED94446EA2855BA4CAB6D7263D0C0E2AD4AC1EAEC4666EACB25EB6B1856882E260C84778F416F2214CD5818A4DB0E3BF88755AC3D2E62CAB6AE7719A440B03F591A2F3B8E317537C5500E096A33060B7B2092BB7113E58DCDA34032788B72E66D73BFE5226FB44C43D022E19DE236EFFBCC8FA1013B86F8ABBBED442372397594B2035522E5B4CE3C45F744F425CDD9B824CA042CA0AC70A3FCAEC6D0062CD2B70BF7C96AE4AB6088BFF8C8C95B0B38B71DB290106D8F5A3EDDB22F4931FD2C74DD8DFF812979275D4D0E85ED61149F7F857D2E7409D4E349D5F753B1756998C811D0717A521E3D2C7F38EE6620E1C2B27A9B605D48D0CEB2C54649787077913ADF60710D850BC9C97FA9AC6D9B7EDCB9D15E5079AB574963CC91ADB040200A598673A7A5F5AFD0E17FFFB9AE26AD82BD48AF499A58136B1CBEDE9B9788C8EB96CD191D9F7867C7EEE04E7836ABD817FAE045C00DDCF9E5D19EDD0011387503A73C833B37DA2C9C262621734A0C92CC6B4F68CA60046AC7FD5C8B4F1B36F96EB49B517C53D00C1CA43E245083F58D443EF4E577A0BE4EE53118C8D282BC5B8452166929B65B96015BC73BAF221FB753F5B1DF581C3A04247C9391C407E1FA745694F3272C5B647A9FCCB99A728D6AF6CE36D4A0EE51AC71999B6AF2A417BA08770FB0CC9302C5014CC9E1199CD753AEC899BEB8F898EFFFFDCC556EBC05915B8B1C656C47EFA6FEC37C5E0DF4E7D19C3EEC9E49C88EBEC55A3D7EABB0D62805A399D46B5B1748AF8D2CE58038768EB9B0A753AD98C2C65286346D2A8F66A9F58F8606934AEABB29C89FF8E67218BB15F1F4C5DA12479C0D896F6931B5031829FC2EA1567C0C76FC8293D0F2994679B8DF89C1C2F9186B0C770D2FC7B6894C225A1653F61DD06E7879D3D27C5C89E416948A1A5C5F7B646FE702816B59E9FF532F654B2434DC8FAD7CA781FB64EB55CFC80CEBBF1EA8DA05C736FA05B192962111504440A421FA2D21612419BD42EFFA4EA65A0254AB01C3A76A46148DDFA5265BD47A0696F550AB2600AD272B829D5AADC7AC7AA7986CE0BFCDE3561AF0B9C30869AFB7ADFA6A3B32070AA52E1E70B1AA6F1ED5E57A11CAF6D271921C3BB55FA0EB258A38EE20B08AB43E52BCC048A20B26E1E8BA0DF86EE6368DA21D89E3539D2117FCDFC348CE402E8FDDA41331D9033AB052AE739094650A9BD75C232F02DB5B53EF64DF713DA9E673E61D6515708F619D505AB1BCCDA5508146738367BAB3DD82763EF599289DB4E3896ECC8C77EACC0A7F48593DFADB47F0FA520138BA721A0B30743538451C02B17A84117E1BE0F434880EBF2BEAA75AAC96A8EB36ED99A21EEDD5368342DA7917DD5A3998CDD3DACFDB1827BED269BE7D9DBDBDC4EDA27F27C0F44570A63F95DE2F11D625170D6DF690A59A69FB6FA08124CEE69D3272CD33D7B565075F6622F927DF880036B12876B1A6EA524D57A91CDA1B7523F515189AE042156C57A18BD7538383339F2F91DD72B71FFDA37ACCF20BDDFB772C553732A2085A27000145839BAD4DE7B4CCE957C6A3B23ABDDA765CA0C79799C24863E269D75CA63C666E8F4248C157B75236E78BEA1D8CC6EBD9461B9A1894570E6154AD783226DB7C7BA6C55984D920AA2BEB1575B65C4A0FF859D84E11B22CDF852DD84F6E443DF100E6E9DD9F7D3155DD1735925CADB587F99577B822F4A00BA6525435C52E84B0EB36E94D3C1415073C4D2C3520EC0AF661C560153E462BB13F795D855A8DE87A3F072C771A7C73BB768E400C5320E07147F6D197E54965D1792093FF746CA85E3F6FF6FCBCFEA9DBF6A55F2F2796EAC961B562DC17D63B58E9A30817E8413FF12C17DB64EB5950047A3EA7A211C3DF50A8F16C7E37915264E7C8311326087B263D5F81A11AA717B34965706CA9BEDE35BD684D8924B43E3B6760655C2861B52F8F1284E99B39B499C5284B39AE6F26C9156C3DC07076E1F1BB918EB39800AC6237E3E9065E7C4C9D37009B07D0457EDD9C30911423A6E8FE438548F9EE181C1E708654C2FE1083FFC1D7F0AB8CED23870A8D5665B7CCFF2AFED3D14256585C7FC33FDCD5C6349E4EB64DD284034AA712240B09CAC5D79A3E0888CFED965E21554DBE16E16C9F484F9FDB9CDF18EDFBF54989EB95EE6E47FC62775A140AE5D4CC7D7FCE6E29496B4BDC41DAEC15171A0A3416737ADED6893CEC119E1BB127619A379FFAACC34DF2B729EB724ADD5D2BCBB6AD22A144C17EF19E6E4AFF577836448EB44297358FF3951AA9352A9A510C5484F16459DEC4DFC070E2B518BDA9642AE01CDCCCC580BBC3147D55114A0B3903E5355EC5E4C5DFEB4C765FE95367109E099199CF2A881324760EBE923D851A90894EEDE99FA9CEFC75D45B311E3CE736529A41AFDA18E26E8CD34E169D44D7FF63F0E2A18208658DC7183CB3C565642A7998B85498C9D0B51E97D70DC77849795F6D9E1146813C96067D304B3501E10CD2308B7F05C03EAB95F9DA66DB76D1BEAE16ABA18248B6CB9BF54F0919FC837D3BCEDA4AF3443368A638780721EA94FE2E7734A46F83428E4D5FCAE11DEE92E945DF5684D72CDEC5F46DD52CB8B80A1BE457C11AC98015131EFDE92BAB0867A140CACC72433E60E59F1D328C1A8357F923981243E871A535874928038E06653ACC8E89E7351030B186803A70959E5535E2F117E2D7D2E9FD82F911A9CB029E9F15A6F97343B8E5FBC11DE3A68928035AA77CCA2D16F53510B84E418A4FAC5CB65997BDB6F92998058746319D270B2259E30062D4ABA8F00DDF1D0F61DE919ACF708B505A60A5B678BB0A1050A04CCE2EF4C643F376D73F13CCCB73F0F6766538EE55CB457772D1864E552C77B1A28EB893922FE5AF8AE6208471C0DB246EDA16B8EDB57B0A672488E2E05256C53C4A329283B8601E1BDE5FD6C386B0D87AF76B141F4C6512BB0EE08BE8C203EC477DED0524D8A1AD72D897195B90C4E1D18A086F046512C9CC82389FDB3A0186814EE0B50E06A57B5399EAECE3C64453E1F60797FF5FFE83877ED5172C0A7F4243D10051A379999DA883C916F8B501CF011054A06F07226E31654CEB6CC0AEF55003AA9509B71705A2384E0F98A0C810F6925612EEB79A68D95CF8C6361FDB902BCC0B9A1EB3D344A34C115159E4F891E17DADF60062FEFD8F5B35ACC32E9F9B2661D43E7B0B9C6A16B6175FD411D673EDD60804CA0E9C451786F5391B2642F81099E3DCCD66A4BE164A4A627310529DDF19282A1C707C90D19745BD4AA3A169A9E0F067F1C40E45C533B724D5C4B1E05FCE8A1B6317A0BE7845A85F514D5484A20EC352DF49E98532ACC01450F009E76F6C1CCF0A70B7BF95814126E3FFC3DC973E1A50547C76F5835981B7D68BA243EB2723F6608ADDDC15B58A4158DD9E04BCF087866777ED299333C1107B9D6E294A5B1D9C17B1DED6E221CF3088D80C505B4406A0D129C3AB2CD0C7D13D53C385697BAE9B8F3431EF13ECB00C58EB75287583899D4260796615C249C6CE3A5DCB4B9A85224923A362763DD55C918310A07537496940EA20E4F781DF0E969413E7E21A0723F4659DC26CD51B985BC433EB8A87266FB4AC1AAF43A45FB9B3327085C8A11FABF6B3F6960DF31AB1EB95FDE8EA2DB579252DB15FD48A934CC4A4B3671CBBEB848AEA225F8E04BF584CF91BB3A5097E7B8581C53EFEEB68D67DFC8999D4F158CB60D492BF4D192584763D1FB5B043E6EFC5028B57D38F6309471625C648B991AFE79F8914DD94830D61C4C9AE1EB755B55362FD4BD00B3D86A5077D01A33A1BDBD7514EE4DD067A6F9B0C633E8225D3642997E4B72600829817DED178891FE41C86C32F79258AF9C0D15A3F42EBB348A6EF464B471D2BC4AAA47513F1502322F8458EF1567F826E4BB38215ACB14C02D28CFDE04526D194A461E38755E1130A22098EC91B7130D50961EDA2552BE468845BB1692586551AAB7A8CDF91C03AD6BC11B7149F6A9A540AB93D94BF431E10A36907191C2492C4B3450533EBDE55061B7F4C3B9068BA33DAFDD164E88AF5C3DCBD96A1CF52E336D9C20EF35D1AEDAAC360ABCE2E0615AEE79ADB376D069AE4B4F77A5BE5FB59A893158F1DDE4307946D848591EA0CC2E315AAD02E34BFE6A52782D4DB6BA781FFBD755A4B36651AD91248B747344FDA2FE31EC0332FA27D27C2946D3931ED6C6305D95CB209CE63D0DAF0191F75C3385250AFE1F80CA150AD6E1F1AB13C701237612C5B6E883CF829C1AE371A83CC80C22478091822C6A56822B8B68990954644BAAF58350D8A86C1702F048385146AFE709B5C51BD32CECEF461754282F855BF71CF98FFDA361CFD91A9A642FDAB32ADF4AFDD97FAC2EE6A9150B5437DFF476266ACE48B9C0BCF96F67DCC894D76645F6D8FB3C4513B4139E8702C672E8D5992851C78D1F3C042985C3C9ACEBF51BE84B184848652673E0E58E8CD1CEFE90EF85331A5CFDF207CF73D6DF9869235C0670489605AFD2F2FE9E9819A43A1D5F2A66DF2626A94579B2DABC7B731D3B6564C0ADEEC3001E4735C9FA2F226E5231991CDD34461D33F1B254823771E4E80DB33D961D4CC2BCB1788B36BC80B4FCA84D78D80C9A6206EC8F33F2DBAA9E4E1581F7F0678B05D909EE864143CFC31069E1456A0009ABDF9D6061790CB73FD43890CAB2549AA45795A398DA5498DA188A7540DE8A23F7F98C359296F20F94080BF58464CEE1FB5447BB5BE10C85114A2B591EE53D183E227FBA08FDE30EB36F831D1212D60C524D0062722B2984BB93805D242D1A40DD8C3D4768D0BCD4AF83CEA4425EFABD933691B8919E3A8D3E69BBD651E9E23F921809AB3616F834A92D5A04943898C9FCAE79ACC8CF528A49732F020B81DB454662ADAE937C1067DE744F9BBAD07B1E575967FD87EC1ADEB1A5D7BC71841A3E0532BA92888CB252EE9A35FC63F34FC534AB6291DCB4F0430B439A2AEDACC284A7AAD0BB7FAEED53968C295BC29B45DAA201E1E5871551A14702CBD5DFA801511B4C660C1508C04B6F7A31FE39E2F1D8C66878505FA8D9C288557409622FFA47E97F43894B8774ABCF7B083B894A9645343641346D5E96E2275224932875411813B2E287B5C34586F82DAB03DDB93924FC4D4B9D4DCC95CCF5D9169763366B7B6CC8AB1F3913C88D98C63FE020C5362FE110B28593C84DDAC50444A6A8AA2D5018B9B2AFED1707C4E217595737E253893360F65A9B3280A0446FBA62E7F7AE1D1A002E972A6327A81D89137557A8755A761DDF67700B61C4E290BF5C7C5BF23A88EE4CEEC91ABA7002FA4E020A795D74BDBF294D53654C770CF5AA1B25B5F1BC908F4181E663FBEFD39F2D60CD66BA81B69F648DF9A269ABC58531AE220B67EEF0CB9F749E9CF7E352CE7E1C78523D2CD5C04FA3367905C66BC457A21B536639C9D5B03103EF612AC15BC157F06C3DCEC67A51A8AF97AB8890FB7917EF187D0645BF510EE90B92B3D8EBCC6B4F49BE963BDE66E3A2A7E0A34B7155CB4CC097F3F34291ABED8849D5534C167280EE11C42329DD72AD98DB3391A00CC4C17FB54A95E87C4F676F858DDC408088477979C290DC84B76D8E8B57A44317BBE5D7D566BEF0BA5A19C9BACE4BB4EFDFC623F18E2AE00A3E636667736198C3F5350987C45FF8EE75FE4C687EDB68D76CE5DB954726BFECD5643FA6D09AF5DA9D8BC8BBB4D8D77B7CAE3B46318B526DC50D2C3CB093BECD5561EAA98881B9755AB6C81CE062C727500F0889D0E2BE7863473751549FB4FCE2B97EC7DF7313ED3108F6FEE9BB565EB9392CA7448FDF3ED80291C36EFDBC9BD93D8D48E7E790B5AC2B572EEEE18B20BA2C1556F2EB27E9BA5820106E140971EA638FC2BAFD9C6BB0BDEE06CB273674ACB7EF7A45AB3404891D800278D642D9DBE10112AD06C2C0952B69B711B99AB5222382D22140EE3F7C8028409ABEE2A56A451396513F646C78471A35B0618932A9F999A3A8AF8298E3FA2C1187C6770853D222B508AA9B252507A2EFF96E0026DE15FD300C8C8B17131CA2B7ADD1096FBB898AFC07927AD8F861513DBB7A5743493ECB58CCAD7F23A4AFC439383166EDCE0B8C3BA0C586D0D9B6798CCFDC8C114F5C68534D4ED8AFA0EEC1CDD0F4980EF0148733AE62A3CC8945677662BBE7F9E5BAF6C44E42BD84CF87B64D62483FEC0FE007BCA47D00872D541553B47E7B3E07E8A8318A30009EC71050ED8E5C5EEDD79D2A73E600F469FE0C5B146A12A76F296C3E91B183C775D6824F53250A293845D9EAE6D641531B7FB73A4DE5EB5071BE2F802D910B5E82BBCD1970E8860A494E802F98E66AB3D7321282DB0D7C4B703BFC22610E70E0D52B0FD2CAFA99471C5EBFE4191A8DF9B73A55222439149EF3A4BE4F229BD04E2FF3743C8A767BC6B918EA54153D51A20710342547DDB37C6A8C2C61729316E4EB2497FD4208F964115B9B7D31BEAEBF906459CC63F7B23CCCBAFC8F288891F81244850D6BEDE316CE4FB069C3C0E7B9743BE9095022E5F809F0329190D65CDD1B7E6A50BDF71B705AA91DDEB6C66A637C69EA0FBAA8C312C13C96ABD08A22BB0309793C4E81DEAC12A392BC61FF651016C7296DF82B28F09CFEADEDDDA99AF8B197B7D272FD111AC972312D4485FEAA487ADFF55FDA91F7507DE331EF3E28F9DD650E0AFCDB76EED4803AC9AC7DBE4B39EE860CD53C67E6AF4691C3B9E41D61CA8A44DFA977FE9500A8CCB70024745CE9C5802BE4C9A648C16325B60E941BD51C88F0474C27654CC1640E5BD9494882F81EC2936114AEDED88B4C1A12DFFBA35CEF752CFB93E594E56F3D474B85E7B42C816D653F6788848CC12A9DE2BE7706BE2B496DE71B52C2D51F3CCCA20058FE9BC04C149850BC6042D64031335578336B953FC9FAAE7DAD738BC2BC27C72F72FAC21E442E407FDF2B369D832229B64F7D0BFDDB88FA8D4FB2FE345E149242096FF87C599CEB2C204DEF150A10806889BF06B2C3D4B75331CE0D70D7F12308F96F2880A849B49CE952875E465D5CF473E256604BBDE1E7E6FABFC17D494152B4B817846D3906F8ED46F5E52EAD201345AA31DBEAC1CB387322CA6F241EC1FE2FBF4C5347333CEA5E0800403A730E76677D6E9EBBED9F492A4450F29BBFBB3B2B98418140747507C31CF3300AEABB51ABE60F8606686469626CB01991C393AA26F8325551A986B15B17A30E5172D08E7FEFF1ED339DBC5AB2C01FAE67B2E2824C52B2DB2A40A686F88DF730F567750CF8C9BD09F503574FCEEEC2B7ED918F89F72438C718E880C677A0CC04E80F8F15035DFD6731728DC0AD9A6EF53F900745EDB08C6C26F840643802C6F6C40227E722534F5DE0BB99151937497F335A17BDA23592F22F59BBFDFFB1CA7D4E8CA42C603673E91396A52B3ECA085D8D110486FA596363AC7264753E8C781DBE382BD46D246A56EA79DCF194DDF1FCF3A90FB36E3A380FDBBDAFD8EB7499F16255B58FA82ACA2E3F72ED4552632C9E636D76FFAAAA370939BFD6FC191F43A6E4EAAEFC3AE1C53B7575560C85E9FCDFF8DCAD53DB04F0EB95FF71E0989FA9E5BC193EC2D38D5C0A21F18F70BEF8E15202C1D23CB34096E9D28A2214FE22B241BAEDADDA1FABF5164EC87C8D42D6A3FFA65DB4AD3A01702AD4129E95C9BE9DE33EAB4C157ACADD260BAB52080442FE53B5D02166539564845BB1B07AB6F3E0E9D0FEBF587D9D55E7DFD8C9FC9DC8C2D781ABCA6CF3EE055F3DCBF55520151F062B9F858DF9D46BA885F8DDA83D5FB40F2FA32D2C6240A3463986D2686EBC48ECBC9FEDABB0B4C4B16F515E12B910332CA3FE0797049D95414EB9490F7D35193667BF8C54681300B14C09A8997E904EBEE6182101273DCA3B8F3763E94E1BC99118F98B2CE6B4E2111D2A51971CA0DCC554F9169ECAEA9DC5A883FD62E22CD80B792D151354F4813339B9F3894D407D8272E75F748F387FAFBDE8FAA4EA04F9E988844372018CD88DA696FBB4E119D1E5693964F8631AA23CA03E7C079447230FB14CEF0BE7BCE0D9DBEDD63C5589700351B353ED929D9795BC09431DF2283FBEF8644487A6CF368EB597553D54EE54C5236A3ABE1BE2298050022E4498AB78D819B7D5C09F0C8465EA9C64C0EEC1390EE672DC1A60DD1C6DFFB7196645A2D300E5DE086DAF411CB0124C33096B8D78ABD22485AD88F2CFCAE09733368C67C4A789FDDD9105E9CFBFA5142B9726A35BE9D8643AA11706F1A21F061569B656FB733F09858E604D6B7A62C93FAA1BB0514867BAE78B94C346DDB1C6DD339F128B41F483C477CD8E961D38E68136395E145D19469D07850121AD44DAFF3211F04A5C1B7BD6806DA099E2D4751C80916F5426BD83AE13CBFBBAA31AA6D8D7C492EBA8C2767E241B970FE254EBA1C46025812A3D4B9C8BE284C7DE4569EFA7F91C83994F8009F37F5D0D375AE3568BF104C8CACC5B8028A8C7CA9351C3A9FDD3AB653FD16B41D0806764485090ADC73DFB803C5914608AC6FBD8EB081C2AB21DC897E2A66B010376D17B968CF5F215A70B21F903ABA5450CD43AAC1846262C1B337FE9DE5495A4E5A56DAC0A243B05FF5A8C46302F77EA3E1E0DBA2A869483F14A5CCBA544AB5C78F21F6BEB61452DFA380D10B16DAC064E26337E44DD054F3D7EF0F6894622638FA38AA3796232C7707CF871EF2CB66E194790A1E5F52AFD5520E854650FB0252583C2839557179108B4351A899EDEB0E29154B768DA48E910B87B86F903BCB8EFCFE39BEF51CEF0EC12E7FE9A0D9A49F6B139BF70DD7D34CF0A348068D4F626F03BFE24B0E863BD91CCA64EDF3AB2547CFDF7040DF2F01D03974A8E69890B622070603591C3B66FF68316389F558D2FE6AC7FCAD6639425993A706498ECF67EBC400819D59553E0A24A22B0E4E9DC5EA9D59AFB14139595ADA2FBE0B1CEEAE07D4BB75EA69C34A2E49FEEFE2BA11C7920008EC00228EFAAFD737AA576EC7053FF0143DECF5A23E60997A21F1F40D2A26AFE015BE87432AAB90444CAA5CD25F105F9BAA7066747D4E3032E2D8035A7409BD521B1E25BEA8BC0C9CA70381B224F84BBDD2F1F7B94AED2C0F24C085FDF1A62F0F062E70B1F1032E055BEDB4301F78E43D0FF6702287AADD9868D9B44CE53CFC50873B1E17C6D797AA2CCE6BA83DD76B23200280FE2C420F9B181C2C71B16251787184AC19861B92D2590E08D4E5B97EBE1161F75EBEBAC361455257658032B01CEDA3D869B12442C99FF3D305FCF403456098144F88D0A262B4C5B2B8BBBA770FA727137B8E001818623C017AF892A2637FBD8B31B63BC9B637B22361D21E277AC37A1CA4AB8893886FE610076FE6B1EDA2F8420E6899937C43F02AA74BA03E1E94819EB8C3281BF4F56CBE12F45CD68EEF1387B511C4E630F50A59F1F66F8CE1D234F80AE2DF2D43723CD91091DBCBF011EC6278230F01F3740EBA45C415FFD5B876C86A214F7BCFFD67704686A0F32A01C45070B67850889973C80BF5E00C2A34268BBB047A979A7BF53A5C72DEB80C4BB7673AA3984204AD7E031138B775F40EF6AFAB68AAE96A1B833D98E3C251D0B32322BC24F2D7407EAAE8390B15B92F33CF35A055EE6A91E0E4C99A1466C9911430F3FD68A621F0B8059236039653AECC086F7D0FC7D2057463106AD6C80A5161A6133BD849F05B9DFC197549DFA11143DDB895E0ECEAEE4EDF3FF57220D5A3A0106B96447BA256B562AB17E20EF35EA85CBE0915893DD4937B2DD6A0416E8A701D91408526B1F94BBF2ED604D4E283C9FDD860D77A1BBC163E13F10833261435D420D60104C7C7D519668896C3E23F20CDB14953574C36AF127B41B6F3B789EABF56853FBE02854846BE0C5DB4625B2F6E6EC1B127750C6DD9BE07F4B76D528134B3A124385D9A896E66E5EA77FAD74419DAA9312A2FCCB559B3B4A2C23EC6C67F057275DAE2FD6EFA77D5B6B5DDD76A2F3DDC66778D0AB2C6F2B87206F9177A3E0499408B6D76366C4B96B59BD441F4F6D9D4D089CF9C0DB04D346FC3A1B0380A01CFDE9A16461B2AE722DA847FBE08B941FCD506DF9C8A78B44BF637B0C86C547D2ECB7B0B2DE9CA1B85329F2FC284C84A9DC7AE9A426D9B6FCA303E2F1BB799717C1834FDF8291914A26127D8F5218C591A6DE47EFDFBE42FB189786AEA20C39D51E63E3DDED8FFB77CBF951333133A0D775FCCE80F368281EAF386EAF18F2949BEE504888E1D3F895764A91FCEDD2C9E065991E01446CD2B3FFBE37C218B677A4F427F2308789B9850538249DBFAD3F86BD33ADBDDA0109BC47E46EC29A16DADF3498E2E7BAB7E06578FD46E057C2138137FA99C2D795AE0856F6E567982F6846A8B85023333D4D268BE825A5FAFB44009C3A095B021B567713E228463BD58C026D2356CF3D746388D821651588AA514C367C1C29338531AF61886C229B54B257B7E6EE523A373E86600B866075C0A3C137E0FBB02B45E92F2E6275A53955C6798308E78D9EA522C38ED4F79C87ECCAD5026F45398C602373EC70063DF08492D62D68B840C3C023AD9C05929E71303AD2EE6B00941397F6DCA0313739332FC9CCB95AB8741D1712704CE5032EB8679207F044D772AFE3B64B6F3CCD7BF00D2BF872ECCC5539475A959E5BDB35D0CA447502D4FF4A66A04350E797F5EC76E8993A6FF73EB1450A174F69DEC5A4A9B03A2315237DFBCEECC3F08585706EB647972E36C342E2681A78BF9CA944B9B1054B2AB90B42A3BC19C5B36B463BCDF4C11A51C32768E1BEF1CF8C7D4EAC9F337C07599863F8DF73058998B563A8C3ADA539EF0F983F1F65677A99A5E96EF65B2E5D17C898FC2EDD8A2E4530AE1DECD73EDAD6FDCFD9A6E3845E16CFD8A737C7F8CBA5F15062202B776BE51D92E4E86B257C70E1F73713803C8EE7019390546A5A69BB3BEAE2AE402FFC718277CD3EA931113E53E96C6B7CFB0977C16FA854218C00B7C8C7E1C79C72EBCF7E4666AC8015234CE805788351CA0A59E41848E535B5909647BF4133EE03E3D882A15EAD0AB1A69C987CC1C5F0B14145E21E42081B3BC5E003BFB21AD1C079AF15CDF4F871906F9C8FB89C3BFD2DCE89D3AF20D743963A348171DB286F50096D1FEE30A84E4F0CEB56F3F3AEC438CEFAAB7473358607F16FA2659A5DE68ED60C85DB04432A7ECE0C35F9005B154BF0E3256F21FAE2FD4545B080DA8052A9E48954F1B028783250E3BF1B8F5ACFF5B978174D60232BED6073D568D3CB29FA1E577D04CEAEACF424ACE0C8FDF4083B2781B9225475FD5EA38BCAF602556BDC862A69421E8D4887B1BAA0D8EDE06C5E9B6CDA523DD888CE570BDE75988772C05DE9C56648200A45BD26B050F119ABB469FAB623210F32E6EAEE028BC21AA0D33317F75BF9E0D522DAB49529AA7CB4CE1318E9664BA9E71675F7099E86968852896F2B744B7FDB1DF06D2813515E99DFA19B9B651355E12F5F01D2589B91DA5298CDA0CAD94B706FF938938BA8B3817FE84445523D51B7B1662995E77AF6015123CA82AA481B83A9143F66C8B1400637436FEB73F4E96BF06DF0E6873D63FB1E5D20B8D162B15EA95DF1F9EAC3743F61B4F229711EB0F099B9490F189E175A9395FE34099C34E3E47A1BF2463012CBC8453AA69B5C7B47967FB0ADACA7B90CC8831550A8261A143AD07C9922520C52D28750094157409767EA1217B89A81B04C6B74FC2B944ED86E5226EE78C83B2A3E54923E40E285A14B694F3AFF8411E7C4C4778A226C9270E445DBFE546D9AF2B868ECE43AB0181B5BFFBEAD09535AEA1BAA9902AC9BF9BA5BC48718C7E8594B38FCE6EDBF401807F3866DD4EA8845020B72F57B66C8CC26CE6BEDCE5DAD65361E3B41CBD6DF1A59F45BF506FDBDD06802D1C53889AD1503F4496D0470DA5B351DE67BCB505198586FB6C1B9BCD4F96F1030A262355C51349E71CAD26CB54FE33CA2A3793594551B2746B244B8706F1B452AE535642FE6EA536E2EE1B4253BEB1E841DB07A4E8B07722D8085F1E1B470D084A56CED6735C285A3048F14B9A509D5ECA3CBD9D21FA8D3E181E78C60CAB98762FAFD4EE3EB4AF9373A209794E59486C30F449EF9D5683AE954CB2C67840EA6D7D23BAC3AE1A49002D3F2E721D95D366A2935F01384530FA89054E5F9ABA879817F95B59317857DA21636DBC20F8155AB253C89C193807CF1924E9E8CA622ED8CE096FC6D1042802EF6A179C03405D060C9D69A20AB02428539E5F717F4A4F2F2496C802ECA85296695E981403B04247FBF26ED2AD21DBCD1EE544817F17C833F2B2CA1D45238B7BA4168063A95CE77A5DBD80852170BBE7E0075D75EEF79D2A106BCD88585994F51D5AD47605547125ADE81A456AFDF26666854D96D6699B7E4F1E5535E44980EEF278875361D9BA90B953C57F085EA3FF7C0B8376B667D7BE6725988ED75020630F4FA333B64ED280ACFD0F9E4E32C108986F04F15C52C6C35D72700934ECC0DDAEE9EEFACDCC3944461D875F94DFCA9D703F4A1C3C8B99A98143109D5F23BB233997E0E06F847F54944AECD14BC26809DCDC9E971D95FF65BAFAABF821A3F65B5EDCBD9D8B9C5A87EB101573E12BAEBE807F234E2FCD08EB748B0C4C6396F2D96DE54C7A15D50A686F75264794ACE3A97FE655107981D061193DBD290239803CC7B6E747E4F056E3F8EE825E03D0F34C67F80895320C7E77E8B1FC91D232DE9C62A054DC59AC6C18B6FA289F5921949229F14B520B69439B9AEA39043C6B4676E84D46C735E9527E51A6A9F864848DEDE6DA7B607D671ADA47DDD797BA8B56B5790F56ECD560A6F433BF0282138F2099E6B0FBE1950EF1157A43F7A394C2E0B494874B8643C1B2685A565B3E1C0FC31C4B1F24548331F23D7DA3DF8CDF2CE24CC50055FB001BAC466A2E870977A1D22248940354505846CE2C5E286D6CC93F46C4761C4D92615A98DAC4305C72CF5A02E6100F10DDFFF4B1C4D46CFED36AA7E2D493ECEC67532D1838F59FCD0984EA6CBBE0016FC17C1A89360FB022C63100486FB71BC4F9B2678322C07EE20A139F9B553E52679BD3D722002FA6215E51C64D926E0A4B4A69DD355DB58CE66A85106E96C7191CB3F942D77B147F0F9D7B3FF395F194333876C689FD6A57FF343A34B4695C6B1104E9F1D307D29325545CAA46DD3A3111186070617C0E4C24B3F126B93446186BF46DCF1BA71A9BCBACCA24FC10EB6273874C8053C050BABFEBFC450A58A6D32CB86716614706648D4CECB9D2CD904DC563C568C08241D5669BF6AAB62BD9139A1FC10FD56C55579A9D13C0670A9FD73987CA5F2BD1067BC7FCB254215329C828CFAE1E4059822F6B993C98CEBD402BCB8D7282F9F215C672AF322CDF43F71F7BFF709DC1C930BD60956B75046062F54DFACF60399B26F2F73E4BA05D69B8806778F3AF2BC12F0643166DEEF9521597C2F5994AAE3F53A064404ABDE99B5B3585209713F6E3733D47B4F776ED3C946666B2354F26E7D4CD62E85015B57C413E197659D2B867E1FAD4BD5B18873A87B62CE8270C2E67D87247B54026AC2165C6F09548B1D5D41FD30F64262FFDE7939B5EA505DD428A8335361BF88C09F8573B1DF7D70FF58EDFE10881097BEFA608C2C9D7F0F2A5A0FF92A0ADE85566ECA59EFAB2DDBE347EC357395ED09734221248F02CF8B76F8CFF6FD7D154BAE81A4912181287110277E4663D52C94BD04943D64386193D5E3BF418BAB44A605FD7A2622A0AC972F89DF0CAB2C669F4671E002148C1203AEBA0A28D2F1D9BC2197E9EC8C32E20D66CD61EC2E1B7E765EB32E9BC0DD5975A6D6307C092146248CBB8E4F649F9D646ED39D7FC346B2EF4D15AED03DEB69E3324AA284FB549812ADED1A1355183A4C5B285269E5C47A9DCB4386639531599627289AEB7A054309BCCF2615C25DA0018CB42912463532186A692EC77F6249F981331DA9E156BC78D1AF53487220DE73ADAF7B6C643438F4C0FCCA5BDA7045A4D39986E9DE9B1CA4B7CC9C5AF08E369774CBE0404085474E8A9BCA07E0DF8942440573F1B8EAA274D42822A0C02ABFB8AA7BFC3EFB59EF32954CFAEE8EF59BD95E41294A5489CDA386EDE88864167B2C472FCC2373204CA69D819AF1AD5290D1F11D2EB7AD83293A08BC976BAD45E48058447737016147B45B91B51AAA4BEE017FE411D86E4614B97191D708C470732CEC71145F00E9404A5FA970078072DF921410BFBCB8705ED2F7F50798D6A567B1CA00C1E2B705A7EF4F3448FDF529C30F5AC49943B6261BF2EB4DD91231FCDA866CA9336D8554F05A45DB8DED6F99D6441E43915EB74558E1A9F38A9F819DA83F21AA3D74177B7890CA16FE16AB4604F863B602852B062182CBB071F41ED2782059EF81DF24CCB31690DB656929DC7B4CAA950F198DB16A3C5E01E1EAC1B459793D25C13AB9B0515BB9FF9A1AE840D900F6C0A7F7CFB580F2F5E149D6EE21B9BF8F00B2233DC2A531B7DC18B2FDA87F22D608641F30A9504E8192D23F7A7E76A128A47F629A4AB5B7DA361F8D32AE46F684F1FDB46235B1A4447EE0768EBF9D0643FCD1BAB407120D0DAA998211AB4AFB3F23F11173EB14C6172687CA4C96B8952AAB345E14B1811546F989C98F5D942935A4D94E819E60D0BE5449BE887BB57C2D1FCB7571AD485F73F0F28CA5902E2BDF5535336DAE01E6C6B937529B966F647F7E10B26EA5B50B393A8CAD891F2452944D5CFE8E7090280A90E500A4B99E768E63B5AFEF813F72A0DDB4EF20384056998707BD85A5E4DFC480ED6C9DAD305F8BF3EAD4225776629B5CA1B15AB093673FC706F05A4C39CBC93E6F7700CB00E7D228A7B2E660C454C9676C8CB47D91804864FD1960C5559413D81864C13B6FE40A382 +ss = 6D69DF1A90968EABADA69CD30EC6813A4406309DAC174429A0120852BF826460 diff --git a/src/kem/frodokem/FrodoKEM-640-AES.kat b/src/kem/frodokem/FrodoKEM-640-AES.kat index 15b5f6f09..653ab7d65 100644 --- a/src/kem/frodokem/FrodoKEM-640-AES.kat +++ b/src/kem/frodokem/FrodoKEM-640-AES.kat @@ -1,6 +1,6 @@ count = 0 seed = 061550234D158C5EC95595FE04EF7A25767F2E24CC2BC479D09D86DC9ABCFDE7056A8C266F9EF97ED08541DBD2E1FFA1 -pk = A86E38C5361EDF155D46E596A156144BB957728E88EF94DD5BE49DA25B0A983AC84A6477966B93BFBA9AAE76723D943B9C42E32B8043CDDDE266CA47277B214D7CF731A43EAD0C5421C19F87A2B40D9E22078EAEEB6AF49B86717BBF541DE8F53BFA4299217222DDE91B574478B6C3E5A8F5205BB68FD1EA9FD51B353C84FA8794A8B5EC4D4FE3BEF738929072C46A17ECAB78D9CADBE5E797F9A1EE4CD0B7B9B286126B96B00AA29169C019394E1AEC474AFCB34E44427F5FFF72B40DC2A70E503658BDA932A8FE35910FFA2463501C6479231CCE2DC6CFEA58DDF493CC354D95C57234EDEF5ABC2C35421BDF8BC9CBDEECEA02EA4D6BC5D173369752950D6FA1766BCD4D5CA8901BDE9C571ED7E5056579EB366494FE690D968E67C3905B637377144B573AB491C10FE375EA90ABB3B06CE6C320CE1C8C6E1D66963E0252BECB4BCC46CC298F30F4D895216577AA571F75DF0738819457E1813933414B4D4D901CA7F66C510D833E4BB1B8AE8DB2B87BEBE827CA263C3673D05BC29657EA97191C0F40961626CD0734C99CEDE216454F24115923E0F6736A10C568033E452DA689C237F36E7ED26376851ACE7AFB5165BE445C300B883520604A3CA8859F35C03F0B921CF7BE1177661871179CD2D2916CC427C94FD2E35C975368F26D5F95B5E974D3130C79F240776586962FBB9F78761E618DFB3403E8F75BBD2AB6530CDF8831B6F56AC2EBE6A86D2BA43C3AD67C4ABB9B52B3E9FF93E9C79CD30C511D9178AAA550E884180B2C13D1EEE7D736DBD82610D40C799BDA921E76D984590C432C174EFF38B138DB55A304A5FE896B420D8566BA21F2BA64FD7802C49D97052EF605D1FA8E8D6BF3E2346D6DAB2329FCE243923388F2B8AD04047F1B1C671AFBFA8A452E82BE7957F713F1EE6BA8E51B9CA6663DBCDFCAA80B103A7E754C93E090158296576C6226DCE8C84EC955436929F9BBE1975650D8E921F05A6B4BFC86E84F0EF4C0CA1861FCBFEA00541D1864AF3AB043E5B26AF239CC3E3A5D17A99585FA275481BA315EF23784091C7CBF3274E29E2605389711F3AB228BF046739636604541E9504074D01803522A5097242B75B97D7D495DEDF7CF93E540D81EC4D0D48D9DF1D1FC5EB56EEC60A8AEBC041BBFB0EEB44EB56D611B082F1859FED52916C63A7BD977303A3D553148F390CA53577E148CB3E7A63CB420807A8D860C2AE06315DBC000EC54C60C59EEF67056F674A40F4B6DE21A1DACE153AC6888871E98410F94A04EC7C0AFC6D71C07216D1567823C6551960D1BC5EEDE20A27D1FE1992CAE26538AB8D57FC8AD029BCD99B1EF77403A5C8C7577ED82279C639BBDA5CEC3FF7AC4FDA9B0802638BB8438E2054852897EDBDB7523F8E41BE0AC187D13A53DAFA4A662754B07517E39FF5998E9935C78D9BEFEDA50A63B12327B4BCF61BFCAC08EB4E0F1A18AF6BED6CC7B8C86C7951E1BFA8DD72F84D21D827A4B584003E4BB32BD6A2CF4EC2077FEFADF68EA981AECFADC2C91ACEA08AEFD83995DD7F984CEB02569107C19733E4E3508BAE8376B4D9327DBE24511CC46223E9621A3824A2B13C3AA184CD7C4BF20B3D8110E716C935E149DE76F158BD08ECCE060B4DADE4E24CA0A4257B11E291D0F711CC959C7A80BC28339A022A0E85F326FE65C06AB38DCDBB66AA604D6016D72E7BAFD4F10060F7FD2449455E01C49D2220E786405B4EA5D96080B3E9D4FDDC94080F5B726672502B3EC1641C01E48E8F949673AB37E5CBB0C052BD93395828A59BF8A418AB6C25E37B58C2A5315943BFA4DE888664B07466BBC142548DC68C7FF96A53A4D678E94A6830195158A4950B0EE7D3E7BA06F676868EB1605229D55294A4F73D27B97728872D020AE204B280D24651C14908F865D08E0A0902C27F420ECA4948A18D12E1478C2A3439B2951CFA9B7E5712FE66B569D928E8F34AB448AC05CE86E06D595B3C21DE30B25D78806AC836F4E8140BA96D7CA7E04B628044F3F9BC9DABABB019FAAB0294BF08C6846074A59F47E3E57F80DBF07CAB311ADE4C9FE6251A144F80DD97F98FA30D7394E2AC9880821E6A19C06066B077C279326A35963CACAF8C7CA3DFC5AA10D26394EE258CC92AD84B9C14B21959F134E9F6D376051925187E766D335C5FEDD6465E630FF218EDB7AF9833EBCFF2A0CEB73C6DCA65963EBA39C0AF7E0C792734EC4B57A095F994BBDAA8E2285A3F76981CCF121DB73304C244A65322A93C2A78BE355C8609B352233748E8FF9FBF0CE34F1A95F608E3E8193E037972A3DE19B414E4A760FA0CB2D76F5E0974B7A27AF58EE71559DF91141AC1843B35E3D9E89BF7C4115E69EE014C7ED92EB622A5E634CF8C616A53D123EA6570257FCCFAC51F377B5527B473611FA5A8FC202128203C3269E807282FECF46BBE9758443704D675D3D56AF09C6B41D1F8F126D33CD08DE564D4BD13E364365E888D2B7DA21D755FF6D17C6F2F27E6D0BBF3347637F4292D2C906C75B1EDF7EBFE6EE1E09744D8FBEC1CA2601147460FC3B1AC9F17951CAF589077E7C792F5D9ED56609EBFD96C6378978963F723BFE7CD01FB1D44F34BF880C139C1361D77BA67DCEE8968B5C1D766B4A6EB6196BE97ACB010D27A6D438BF85A9D0D09317906D6F4706F0DEF0529F12661BA822FD36B64588EEF6E7DB9EE315981CA3CA8BE8B15E644AF8AC39DCE6632A5D1D29801509F213982508FAD21669E1A95018136ED771995D437B803CAF416BC2994F842668B2015525D2712F8A3CE9377FC8F23D62F72A9799466EA85C6B8C73CDD1AECE07500EFEF54B241CE51167D25792DB39B2A36832D57C1AF51D5F3D749B765A9198401489D80E94CD386B7F38ADEE3083CD861F77201CD78622EBCB7FE3874DDBBC836B7BEACD42883394F90B54A32BA0BEB1658208E081BAB3011B30ABE574F083C9311844B3342442F19EE9C0C7E93F1212AB5A3CFD668FB84D636A70FF682E856F07D3B923B9C4983971E1E38C52A750175E4F664A95352F86EE907051A7F0B8B5A311FCC016C3675C4DA1B5DEF628DFBFC118B3E23EC829589B56B105B119078360ED50AF080D44E7E9DAC8B65C91F53EC7222B4907D0F5FB455ECF7DC8FAB9681C153493180420EC6858245855E614D286CC2C0D22C006DF6D83DF9450747C3E032DCE3791656216241047192D236EFE3D6583D7D89622097C04387582910DCB9EDFAB9ADCEF16E6CBB37CAE0AF2F57D282BDB19E333775C1A8DE2EF59FFC0332D3EAEEA6B52826EA4AB40EE4012DA7E9BC36EB8FB0F85F39EBB155BB7E9D4E16B65722BA83E3032B5B04CB81A524ED792E13E42D978342AC1E49A529201DC3083195E99C6AAE83E68C469A1D7183CAAFE51ED309E17726AA6657A4B2DD8561A19EC050182F660D67A4D4E3F40382E61FF9F4A0228D803F052EBBF0C9FB059AD9EB900EC90D0159617026F93522E3DF4653C6F3790FADCD249C4580F39B469D685AD4435132AAEA214A35A05D0E6D7268B224978C1C7DE1B861C3334D029C15299E10F3D110C67527DCA154C04358B9210BEADAD8B7BE5A0B4CF58D2BC27800CC52D6F576C4E3275EC394781E89D7BCB9F508AD5EE103814206C50C6823FDEC7E83876BC76120BCA8D861C5975C46ADEE049E067C228E6E129822FC158403919DF7870859735822350DF898F33FAFB36D4F43CDB3660DC80A7CF2A0325CE86F0DBB22826253E83B56994360AF5FB7B72BA1F46E82F75B43F374BA1A23D03DEBD916643A92704555EEA28DB4C79141FE3CDAC3957A3950F66A449512A79B9E3FAF3F894A66AC0583700F45BDBF2D9D60720C9612A2DECD99D175860967F30D9403E7326A37C20FBB83AAEC9ACD11B8D2AA44DCCD6324E40F52AED83FAF25B7A9F6C297034CA7B979127B39FCBEEA873EED45439B785137120E768E57EF308429FE9355ADA99A5A34CA3D57355B049FB45C5DEFCEBD510EC01123F818A656CD91A487FD4381645BBB79FEE02317DD841E95A645A98FB67BDE5A1906915FA5CA88F871695091D88C2B32A142D2E4FEB6BC9EC999FF2ED0AFBBC541ED9E27E061E9E22962DEA75DD41E838FCECE7C285B64095109A0D1637EA5EEEDAB8DB7E941B2A41E45786F0ADA5C5BB4BBD12DE161425C1603362FDBCC8EB50E4B250A91CBF787217CDBFB9DB0C5FA18405B239C049B5AC67C00EF69D7C43C518D60A14A3D1B7CDE3D2A79BCC6872A9FA9D73E98E1244482D4D8418064DDC823D1C0EF7439F20FE97FFB4884DADCD3C0A078D2FA9DC8E3D8DFD1A7A14D2527281EB776A70BBC02134E885FA5920F024D24EE6C84EB1EBA3D94089E933ADFDB42E5C4C3B67E88F1362E259002288BD978C6C52DBA38143A64D4EC7905E5857F4F5E91CCC48F91AD3576423160C31A742330DD8B2087950A87CA02EE23E4EF5ECEC0021C0BCA1D930A628DA5A33B64BF719DC0DFD35E4D793708401829411A1D61201C42140BAB3F4844B822491B7C867ABB8CA9AB75CB183B21A168CBB391E52BA83EBEDE2C325F1AF82E69713E7CFF3E5BB945AB3D32102CEBB2D132A6CA8D297136FAF27D2A493A477EDED4AE644D01A45CD7071A16AFA9FEAD9A63B9758CF55AB1515170BA6009C407236F6C0CD0976E0E8C253C0F62684EE17F1362BD2F4996D655F3EB9478F5613FB57E929860604F04C73AAEF4308AEE92FF27FB3C69B8AF864EDAAD7A8FE99CF4D4A59DAE491649D237EC6617590BBF849EECB36281CF8565946C9FB8038B5B2AD86A39FA282316146507C65B0E55ABE4FC90A21A39FC6398EA4D67296BCBB021B8C272074EB77BECC49FF515A97E6DFF0E279EC9C447B49FD6E074A6CFD0081AF49A567ADCF3D005C2391783BD3C7B8563C1E00E4AACBBC5DDA577DA769478602F943D7864E4A6E1CB2770ED9EEFE9D16927F1D6779FA5950B7C591EF61CB5957994CA3E81443D0710D5A56939AC926AFFE7028FA55B76581580A98A0853AC9E082645977944BF91DFAF624512DDE3D4D4306236A5893EA6E2DCE2185ADC593C55AF61C890BC4A86A16AE68E8D9175A0F551A9C03C40B025622957A1DC8B30463A33D652398E04D3D7246F84E0F980A8CF0FB7D28FCEEED755491514D7EAE9AA62E09B1037F8574F9AE59A5010CC85C881A362563BB6CFD8959B4A01031C521E552BBFDCE3CEAFC4D3D17B8C293252015E2436F8B2E8B972797C48DC21E752CC6BE7AE810C8C4983464AC883A962D2F4D27DCF763B3F2E4A610CC7EE75BAB0CB89CD615184AD900E3974620527165CE8771A1B97A66E15240527A2A1646F0899EE7FF3753D3EDBF2106D6487CF33823FD5D6680DE97BD25750198CF29D7B98D22F9F111E595F2DADB9B1D2558927A1B7FCFB29BE8DBA1B4A0519EC2478346B781C500A4029B4E96A0746D1ECA9DA5C4E1AE6498CD4D4FD14FB8691C98E99F83376553764576911009F3702FCB898BBB4DDF0C2FDB5ED17EF90C49A94E820419361C06DED35B6A72E02B76BAEE29F6DF8C10D60A9C840EE59FCA81E7E2B04BF0EC6AF7D21C0FA8581AA50C7B1C7490FFE54EF06E7A4AC88F523683A4DBD3E935A5B3FF2F0CF595C3C40610C7AA72EE334F75ED58B6767FF676E6BBD1F780B73475E3CF561B7DD7B7BA9C589AF3ACC769B8A7388096B40B2C59F293A91AE4D66CE28480B0EC8516B294E321862ABF4C586E1A19D1E3F7542844E03201121D3B14C12ED89FCA7D976EE0A08DD163A0B48EC4847D4DB2F265E3D3BA590FA7A14983288714D38B8842DAC537FDFD9FF6E83A855990A19FC5BC1D25D8AF314374E3758AF8232E491F3038B06CFC84F3876B737B8DAC579270408B84360683F8F50809E94AE7309A694C1D3BA3A62008ADCA3FDB7F9C5A5CAF7093856D87E3E1B1E6DFD451C8F08C6217CE7FE1BA3CA980F0202CD6A9F7BCA22D092BCC900C0B9F203F27753368D49B937757C270FE3A07876514FCD26A12DFE837B665E2A2499504D957DDA61680C4F0B663FBAB223977E978E9CA8014765970001E14F0C6F272C840F325946A8986AED973606CE859588F581ACB4E5DD62DFD1B33EFBE61F9D5F1620211040F2A57A966D08DFD1FA5BD096681D5E2AED1C4C5B5A0D10457265F5EF96A871FD4E7B2AFA43BE97FF5BC47B3625798E33F8B58CF854038B5198A4A2949570F692A6FB5012905889761BF0300EA90D474BB0EFF2ECAD94189C97A0F900E93F23482792D848681B8D73B6B0D647A7B2FE5290DA9F586ADAF2439AE489560F8FFB86C49AFA682D78291B9B6144E82ADB9635857DC08C7273C2EB7756E5033E54FFB9C6C7AC9C7B034B60E07A5094FC2A002B363B331BAFEDEFB1727110D20E79A001E95F7377C139AD73F57D512FD6AC1CC8F9A03B61B67DB470F1A8C4C4A95FB9AB7E51C34C68995280769FB6B6C893CF79D5872F403C507FDEE2510F13995029ADC514AC0A01080505DDB22A7CF341875F6678F3E77850640671605D62BEF9D4DF5F1E3C00F03E22CF8FA16D7E34B391981809E206CD97129B5C11388E1DA48B6D5CBB159E49214D1D44CC3A02C2A17FD28B590C100CCB6A87E23C87B4E0B5BBC36F22072E95F2AEE803410C54BB8E4338BCDBE10BE124F4E8B3F5F6EEA80C83A6BEA516068D6F2E689789390D34EBB3F7387219066F903FF457563B83B5F632FB0A2955B0D61D3D82A00A58294C568A5ED65EF87D5EA23483CB1937C40C390B412DDBAB4969BCD470B1B45F9C92175C07347799B9A7E80E8206CCDABAC0C7EFD2BC5EE75A0396CC24A4EFC689AAE345245A20C3A55F1FED4CA9F5BB24E42EF6532EB0D5E1045FCAE8ED2360163DD215328F9077536FFED70085E468B0A9D72C123109C782B041DB2AA6854636B7F054B8B38C55CC05FEA2010D23FC241A02A7AD4905FC116837C93CC5EA23DAC9A5875579A19A7BA1EF65DB396DD1CE639CAD22C002CB8FB4AEBA810118ECC0FFACCDE37488A21A62EDAC789E517B74F8C04173896F8E647CF2945F449B8B242B913C43A2D76C67C4B03A700B0917579E4370A5303C6DDE6BE4A2665F8436BFC869F1219971F39ABC5213D34070FDADB18C9E775D5AF9D1B70788DAE25507345E3E61C43FB1C0176599F1834BC69679B0EA0F795286821C618A7E3FE5BBAFE5E8191B82D4B5792032C54B460DEC7B5B5F8A4975FA3247E26671910D8919471B5FC4C70E918F333AF5E016A252540E86B47055A59782A607FE3E5F68B8A03105E0D6457B4DD9767761DBFFC250076D5B2167D0905999296DDE193F6963331E893037279FEDD44C3923369399A612C802E2897F6CAE9B2A6F1EC817DCA5AD501268B1522495CA46223E35AC9B1C841272B7C4C93DD5FFEC21D9D57FC02AD2A3CDFB38A3F0866FA9925787389BDBB0A304C8E0E0761159306C8888BCEB2A8E1B800A67DC683F73C8A5FDD767B24C56FA43270C4E79FA90810CE051CEA7D946C0BA904D3FBA1829DAEF8807CAD6708BE5CC7BA4FC958BD876B698E82E4329044B32D04D39E13BA82E116EBA9AA629F4E4F3311D143D06A9AF4C21634E83005C17822D2B8E2731E06481C8CA44DDF62AE21B1AD13F29DE9D5BCE98A407B60F4F72B3BB4179DFC15C08ECD83BE1AB2735B91DB9B2A426E06ECA8AA4C3177A87479F90E8875FE05B14FAEC675CE832272CE342B626F9B7CE0B9F63346822F0174C23711F38D319C4D4C79A7C786B222F2CDC3734FD0746206DD7B695892EB43FD6CDBDCB76035ECC72F869896B94F0A0B1BCE235A59E1B5C70BE7418CE0673916356E658585E058EA3E313534F55D862E7B58DB08A0BC2A5DC3515D53349D4418D02C204E830BB577BEE3D8960BD74519667E8FF7093E423B71D09CB7A7235DE763C090B2D9C9834E4F87F96B42285954D6E5FD9E4716901DCF793D79EBDA8A655B4633DF39475CB6E283235DD6D6F274B298FF9DB8572517B13C7B9E2D29A383CEEEF535F7AC28677B1E3814BC5DB8CF6FE2160FF42914D2BD9822226736B926980BE470B87B85810351C92B324DFB8A435CBBA3D499FA144161A0427389F259010C6BAE4A2F26151E8DCE20FC9073EEC3DAD85727B2D0D42FE8459B603691739E7BFA6716028630CA11C61042BA3CCC6FC20A1F659EC5A72C63452E7B215D00D1D252784592BA8AE30B9BB24193F7EC05BE2D207512046747C0162F5316915277C79E1FD2F95357289E7FF809D8498D942D36EF9372E0550C701886D798F585EC3E8AABE57F689A1D21A6017DDB922513CB2FF44DD7277C414A12CBE9905F3352995E186B1A14F62ED9582754C69266E63B39043A3ADA93CB8BD32ADD7ABE841D60D8EF54917034BC49C76083A96C1FFC71A4EA7FFACA21B2CEC41FBCCA523E6E8A475481D4AC4754F5BFF7EA9B037297074A8C03A5EEB3E67E53AD89A3B0029E73A3392D273B4176F92CB345341D3893B7E312FBA9E49ED8EFC49E4AB13D006C1B8266F62CC8F5145070A8559FADC9274670CB84DE860DFF639C01C6CFBC57684177C93DEEEE624B1C01059533AEEFAE805BD09D0967B0D7CD3EA78FF243DCBD47D18B99EB666CE3C9F3EB9F3AE739962D4BF638C883EA3C1CB98D758E47910EAD88C86D83BAA979C0787F98D2D22F7D7E512A6B771EBDEF63A44F990423E4118559BF6C186FF000F5DE93AEF2A46A1465164D91CF5B5B737CC2C5176559DC6FC63148DDE32316824781822D1F99433C4A6F5138D0999621C985A67588BA34CDF0F35017445C40810E3E49C2F10BEB183C3F96BE43614FB8A7DD053145AC9F1623F10BD474F0AF6EFEDEC427A5C27AFBE5E427E65DDECD596EB056AADC75F282358CDA81262F552DEDA8C24E01F7D0BF54DF7E27825D9052F3D9A0E6B3AFB713CD5CD16BD7013397DADFAD9D3AD8F53C714F1F3FAD8CB74F37C6AAFBA704F511EAD3133393E70816107F849D2220E517B916AD710771BFD049F98FA23403916A6ACE7E97FAE310CB296F782BE067BC8EE5EE4E5B5447AEDF04CCB854C3856FF7ED4B0CFD15C2F8820E71007BD3DB0A370517FF32C6E14913C34AB3A3A10ACBA9E8C9BECF8D2D6379E4DB60BFC2E1B2CA442B5538773C25CC1A986391264100B164D442B3407E67C5D527C20A7B9608AE75E4DE8EDE031DA11560805AF0082387B8357388E90C387ECBCF142DFE3A9B7F20B5DCF8D1626DD081BCF8B07769A37EEE2377F8A3163F9BDBFBDABDD665E533507380A08D19F27EE964F91E76DB232E01012BE0DA27B2BF1F09DE6135C92BB55447B957E30AD4F21E63316A363DFEEB17F61A523284A412E937274B3E6F87D9FE36115FE6F46943B5436242CD3560BF34D17EAF688389AB4F8162967BEB075FD15D44FEA3A466C6CAE42FDD8186450916ADF11E916A93BE8937E3B12EB813B1A1F7DA0F42BE90EBF6E3FBE7391A066B10457C2ACB798922EFA1B74B282F291CBD3436926611FE989CED6F3660122921335DA38FEF354D360580C67A4D883274219850601432D6CECAAFC29B176AA6D6AF511DA25A8E03AFF57BF23F4BA36FC0B77AB959547B29E4EBCB4361AD94DFB89648900BC85610761279C060690109209F7C8CCCB1DCE491C822BBAA7BC7692873FA90C06A0D3B79A2C10C32E575CB1A4328CFBAA34342A0B90CAEC409CF02BFD19EACAF7A7D2975AD333C5588B0A63C8820896FFFFDCAEA0CE6A96DF15F64CCE3430CD73633802079A2750CDBA3E8FBF446C55A3CEDC86D5064FFF6DE170EC6E64A49246EC0150E491FDCC9414977FCF4D3325BF5370DBF58D2D24F8BE32025E90BF64DCA587CD67B3CEBFBC79330C4B218661D3A26E83DB903E7F14B53FC94070A301448BE903E7A10425EE7D299871E89832BC0D38511A6B7B133BDA440AAC818D9681ED1899173DF3357A30A7990948E385C52626588B3B5563EC878954EA65F6EDE14451A58B6D57D7C92616C25A868482BE071594D77EFE90858CAC93FB94664A1DD53379ACE4780AE9ABEC46C153CAB791ADB73AC921AF51CA3EDB46D0CF33F45FE4DF18DDB02569A51706EAB8CCB044635CBECDA2959DB60CE84DFCBCF96CDB4E312715816CC98B26C6965A562C226027AAB7EE3F2B30418ADB27C9B3072CCB3318C1B39A10FC93CA9E1966C799407FB5978A439A9C5BD4B1CBC744C14BCFB328A7DE0247339C12CE73B5841D822C8B5186091BCFFE42896565CA37379694F4E495DBBB0518603AB81E1AB1BC77BF9BE3A98B4D67DE4C84BED91A6197AA91AEFB07FE8ECA1720A702FA4B7A21D2C5FB19CCB207AE0D83258C7E52C7F8BBF6620ADCA3B051BE4E63998E914503C362013303D284307AEC00F0260BC0FB5043AF934D3F241C063070C7D58C139A73A8165957783B8DD6F65B9586577B86B3504A0DF33D252D76333D82EFF27A28480924E78A15C821EAAE2FA9FDCF8226B6B90EBD54A6E7574146ECBA3AB95DF0DFF26E2F903F98958D4D11C4494C31B2E7317F2B1BC411CE495A812879979BF061A6962C8227EB350CBEE735784B6A0DFF31E21738D2F4E6ADAC71ACA4BAEA7777010AB2640C5FAD074EF1867E9A84B681DCB20A7CEC9F2F3B98B4868F7100CFA5FBB874BBE7D4CFC331F413F2A68E893DD156915765013F3287118E4DADA30AFFD4974EF06762BA48E26BAB3223624E8609AFBB5F40C9B6BD7B7458DE45D1DFD3ACE9A09E69B967341D019084E1C6C6F54B9B8F934102E29FD6E78817612BF036AA8C08EEB9FEC66E7B62DDBA31C668CCA39671B7A1FCD21EA7D604B8FE0ECAE83CF89491B5A07C7E9C1447E35F9144FD966F8F5B28A95675E16CCBFEAB8DA887E1455366CBF5BFE9E06FCE07DC14E46EA21069698EDA3DDBA4316563072211247466E9B9286A1A222CB57887C06989A2D1B5C4C6B4DEBBDFCB7C47E3EDF3D9A6253AC5F43F42E5BC4CFB5BF8AF19058350AFCB9D34B67A6478EAF0BD3FC8237AE2AE42F322FB77616DC39F39879A3E32A43F5D292AFDFCEDB6864A1FFF50CD71FE8DEC1E21AEBB23D67D34E3F0CD185D2D7269485D4A367572B3840B05348F48D1386332F488D13FCC1F7F24585718FECABA485950580B1DAB21EB46AE5AF567C67FC520EB722359F62627D440663EE7846EA7CDC8400CCBA3FC8EF0DA3BC10B0BF29473292FBEAAA8061146F0F6D0E1206443C2FF92DC77FF1B14F9CF4C7E170F811B9E999A8A87EB18DBAB34F5F7468217F81CD4DBE3DEF32D2EDF985EE7CD5F647123DEC40BFA9288C2BAFCFA8CC46BC0EA1B60BCA5CED2C32A9D25FCD53837607C2F774058CBA4CA498FF4425105772E4521111D0909E3158F44BD58873895CECED80FD7A8E78089A90340E2B39EB5BE51BD5BC016A899E1841C8CC7E36D76A05E695516A6074DC1A3BE11FC216E1FBC12E29D60508A88CCC8DD0667026C6DB2455B9E0AEBAF4BBD8BF80082E850B74E15E09E79D021749AA132E599F103AE9AEB16F815B7126465466F9BFF28709A20870BFCE388DA6C88D572E160E96B7CF659474250211FD7FB5E100F69D25E3342F7147AF4EB29616B6612F67968E6692E62A8B88D8F5D50C8333295E0FAC88598BAFA9B6BE200F222BA386FB623135CB8CBFB00294CAA7EA2EF385F855019C9BEC52F630CFDD9A5E81B8CEA970BD1147659B0E4A58BFF7E3D7F2584B82DC57DEEBA3CD419F6382438ED4698A6DCE4FB37E28744797511EE03EAF0FC106ABB646C4474AB14869FE16CCAAB6B2086F50C1CD6D3E72E155A4DEE9EA649EC173E680D83FF64AC077C86EFB23C6B2C05BBB8A6E5CFB3FF0E07EF32E0AE584F44B30BED43A5EC364734881F111AD5884A2D136DEC5C620D0AD45082045684403420F6EAACB8B708C61F61ECBF224A5AF874FB365CC42AC0AB58A857F73DB2867B95C0D8CE35ADAF4D530BF7CF0A4988E33E52D9962AA9C950677CA6894192A4A14A1BE6D93E3D5E5DD51EBA4DE5C5132A9CC8D1F769AE3E8FACC4CA0B5A78BCD5951287368B97CC3B9E4CC75F9DBE207C4F4739339E1C88AD0725E3943F80F443ADF7D613A2B068151E637071B82233065464683A73EF14516A3524B230C54865CCF6E2C2F4E3441B8484BCACC86DCFB24A664F222461C79E8033AFF979A758184B7F0E5B85E6B6B82EA60B358FCC3763D46597F5B9AAED68035A529D3678C98212043BC343371D2976895EC3221FFE61B4F8ACA5422F30F57A81208D9DCCCF2295AC241E2415A7F83E09AD2DA00DC47B697A0D6B8B2D49268A6ABC75E10494AF2D876A69A41DAADAFB1DCCD5A4C7AD6293A9788601758804B4F000ED49AC90F54AEB60961F72E13D053C5A4C1C5368DC793B2111D4B76F962CB3A75E6929A4897FB077C8FD59972A2BDD29118C5E8387A73E91721C08D023AC6EDAE708D4714C4D3680273A8D9AB74DF8DAF9803BFA2275251D868E023BCD1E0834926ED1540CB0EDE810B22674872D5076A1050A1D2638C7AA7C07EFE818453D870749AF195D3E60CF6558532DF4156832866E8F3D1FCD8620FFDB8510260E446881EC36E9EE5B285A698F29FB48F242FAFA9C1E0997D6587AC308FB9B6F43BDC1936F325A56FD69DD1FA840A066DEC5AE89D01107EACF7C728783D6123AB70324810B5EACFDAB48DDABFA2DCF3A7082CA2A76B939FE3CFA2A5F4104009A8108FC58630C48FF48C3B59486D872098F5862B5283ABC056AC77226B6D7437B3F1CABD0EFB5E74496F3FB52E2F4494B1B5CD060E6A131AF03C4626D9E5617DE601ECDD377B8221154D0DA58243C7347274DB643A12B4C60789A571EB3E0CFEE53CEC6782D2E46AF96F21AD3EFDF21DCA238A272E1391DFDAB699C6A85B0D8EB2A6ADF0EC5945497B4493D19BBB6E66749AF245DF9510006B5522E07362B4CF328EDA793BCA5DD982053F5FA027C79E97A703676ACCE418E230B76692DC73FFFC1DCAD62FA44923205DC25D8829FF7E3A70A7BECE577AB0064A2617BF32B36E9DFA57BD96D5206FF2C0A3F97AD7F1A5D4F3D5FB68C9552FA3DD3E34BF23ACADC019A1606AC404A40DB7BE7A50B7BFC30F15BBC203F07CA33FFEC2467AC28CF9061B183AA98D0BAAAF30A8C36192E2DE3C4D80E983E0C9FB95CB174C6B6AEC3E3CF3AD61BCFF58671CB85BE10C539EE860D8F688D4582F37C8666B40BFEA8043A3718586115A051149F4A09CF1587FE1DCAE4BBD91E54CA286D23D57BACD71161F8FF7E36694D7A552EB4E9B7B48E47E6214A7B98EF1FE9AC6F16AB4AFA3B7529AE18218852BD658F69BE528EB0E53A220EA9AAAB5DEFB965864332F371CEA415E49B964A5A323B09DDC5FC9773953D38A9645C71A3A853E3DFA6FE4433E862E2F92E04D0402F198D3B54AC138116494D321876DE59A49D1DAD07B5E0B50A5EB58BE59DA5BFDE6F058A2EB36922BB6C773EC41530559C53A938121B3899DA309B230A97D7FCA2EF4D7EFF136CAB5C9AFBDEEFED6336E30222568D6C575F3F78C1AD70BFCFB0BF874B287C8AAF8E083891FE9CD3B0E3A57698BD21B0FE56E43DC1DA1AF7D03FC5137E90E043B77789FE2319CF9E7D9C3E2CAD15BEDE6F2CD963F6EE788C4DD71E6A161CDBFFB4009F45458073E9F612FFB5F891DB2B7B14A3F5F211E44BCF616893189E44787E5BF7B47187239FB5072B92B1424687EF9CA8B -sk = 7C9935A0B07694AA0C6D10E4DB6B1ADDA86E38C5361EDF155D46E596A156144BB957728E88EF94DD5BE49DA25B0A983AC84A6477966B93BFBA9AAE76723D943B9C42E32B8043CDDDE266CA47277B214D7CF731A43EAD0C5421C19F87A2B40D9E22078EAEEB6AF49B86717BBF541DE8F53BFA4299217222DDE91B574478B6C3E5A8F5205BB68FD1EA9FD51B353C84FA8794A8B5EC4D4FE3BEF738929072C46A17ECAB78D9CADBE5E797F9A1EE4CD0B7B9B286126B96B00AA29169C019394E1AEC474AFCB34E44427F5FFF72B40DC2A70E503658BDA932A8FE35910FFA2463501C6479231CCE2DC6CFEA58DDF493CC354D95C57234EDEF5ABC2C35421BDF8BC9CBDEECEA02EA4D6BC5D173369752950D6FA1766BCD4D5CA8901BDE9C571ED7E5056579EB366494FE690D968E67C3905B637377144B573AB491C10FE375EA90ABB3B06CE6C320CE1C8C6E1D66963E0252BECB4BCC46CC298F30F4D895216577AA571F75DF0738819457E1813933414B4D4D901CA7F66C510D833E4BB1B8AE8DB2B87BEBE827CA263C3673D05BC29657EA97191C0F40961626CD0734C99CEDE216454F24115923E0F6736A10C568033E452DA689C237F36E7ED26376851ACE7AFB5165BE445C300B883520604A3CA8859F35C03F0B921CF7BE1177661871179CD2D2916CC427C94FD2E35C975368F26D5F95B5E974D3130C79F240776586962FBB9F78761E618DFB3403E8F75BBD2AB6530CDF8831B6F56AC2EBE6A86D2BA43C3AD67C4ABB9B52B3E9FF93E9C79CD30C511D9178AAA550E884180B2C13D1EEE7D736DBD82610D40C799BDA921E76D984590C432C174EFF38B138DB55A304A5FE896B420D8566BA21F2BA64FD7802C49D97052EF605D1FA8E8D6BF3E2346D6DAB2329FCE243923388F2B8AD04047F1B1C671AFBFA8A452E82BE7957F713F1EE6BA8E51B9CA6663DBCDFCAA80B103A7E754C93E090158296576C6226DCE8C84EC955436929F9BBE1975650D8E921F05A6B4BFC86E84F0EF4C0CA1861FCBFEA00541D1864AF3AB043E5B26AF239CC3E3A5D17A99585FA275481BA315EF23784091C7CBF3274E29E2605389711F3AB228BF046739636604541E9504074D01803522A5097242B75B97D7D495DEDF7CF93E540D81EC4D0D48D9DF1D1FC5EB56EEC60A8AEBC041BBFB0EEB44EB56D611B082F1859FED52916C63A7BD977303A3D553148F390CA53577E148CB3E7A63CB420807A8D860C2AE06315DBC000EC54C60C59EEF67056F674A40F4B6DE21A1DACE153AC6888871E98410F94A04EC7C0AFC6D71C07216D1567823C6551960D1BC5EEDE20A27D1FE1992CAE26538AB8D57FC8AD029BCD99B1EF77403A5C8C7577ED82279C639BBDA5CEC3FF7AC4FDA9B0802638BB8438E2054852897EDBDB7523F8E41BE0AC187D13A53DAFA4A662754B07517E39FF5998E9935C78D9BEFEDA50A63B12327B4BCF61BFCAC08EB4E0F1A18AF6BED6CC7B8C86C7951E1BFA8DD72F84D21D827A4B584003E4BB32BD6A2CF4EC2077FEFADF68EA981AECFADC2C91ACEA08AEFD83995DD7F984CEB02569107C19733E4E3508BAE8376B4D9327DBE24511CC46223E9621A3824A2B13C3AA184CD7C4BF20B3D8110E716C935E149DE76F158BD08ECCE060B4DADE4E24CA0A4257B11E291D0F711CC959C7A80BC28339A022A0E85F326FE65C06AB38DCDBB66AA604D6016D72E7BAFD4F10060F7FD2449455E01C49D2220E786405B4EA5D96080B3E9D4FDDC94080F5B726672502B3EC1641C01E48E8F949673AB37E5CBB0C052BD93395828A59BF8A418AB6C25E37B58C2A5315943BFA4DE888664B07466BBC142548DC68C7FF96A53A4D678E94A6830195158A4950B0EE7D3E7BA06F676868EB1605229D55294A4F73D27B97728872D020AE204B280D24651C14908F865D08E0A0902C27F420ECA4948A18D12E1478C2A3439B2951CFA9B7E5712FE66B569D928E8F34AB448AC05CE86E06D595B3C21DE30B25D78806AC836F4E8140BA96D7CA7E04B628044F3F9BC9DABABB019FAAB0294BF08C6846074A59F47E3E57F80DBF07CAB311ADE4C9FE6251A144F80DD97F98FA30D7394E2AC9880821E6A19C06066B077C279326A35963CACAF8C7CA3DFC5AA10D26394EE258CC92AD84B9C14B21959F134E9F6D376051925187E766D335C5FEDD6465E630FF218EDB7AF9833EBCFF2A0CEB73C6DCA65963EBA39C0AF7E0C792734EC4B57A095F994BBDAA8E2285A3F76981CCF121DB73304C244A65322A93C2A78BE355C8609B352233748E8FF9FBF0CE34F1A95F608E3E8193E037972A3DE19B414E4A760FA0CB2D76F5E0974B7A27AF58EE71559DF91141AC1843B35E3D9E89BF7C4115E69EE014C7ED92EB622A5E634CF8C616A53D123EA6570257FCCFAC51F377B5527B473611FA5A8FC202128203C3269E807282FECF46BBE9758443704D675D3D56AF09C6B41D1F8F126D33CD08DE564D4BD13E364365E888D2B7DA21D755FF6D17C6F2F27E6D0BBF3347637F4292D2C906C75B1EDF7EBFE6EE1E09744D8FBEC1CA2601147460FC3B1AC9F17951CAF589077E7C792F5D9ED56609EBFD96C6378978963F723BFE7CD01FB1D44F34BF880C139C1361D77BA67DCEE8968B5C1D766B4A6EB6196BE97ACB010D27A6D438BF85A9D0D09317906D6F4706F0DEF0529F12661BA822FD36B64588EEF6E7DB9EE315981CA3CA8BE8B15E644AF8AC39DCE6632A5D1D29801509F213982508FAD21669E1A95018136ED771995D437B803CAF416BC2994F842668B2015525D2712F8A3CE9377FC8F23D62F72A9799466EA85C6B8C73CDD1AECE07500EFEF54B241CE51167D25792DB39B2A36832D57C1AF51D5F3D749B765A9198401489D80E94CD386B7F38ADEE3083CD861F77201CD78622EBCB7FE3874DDBBC836B7BEACD42883394F90B54A32BA0BEB1658208E081BAB3011B30ABE574F083C9311844B3342442F19EE9C0C7E93F1212AB5A3CFD668FB84D636A70FF682E856F07D3B923B9C4983971E1E38C52A750175E4F664A95352F86EE907051A7F0B8B5A311FCC016C3675C4DA1B5DEF628DFBFC118B3E23EC829589B56B105B119078360ED50AF080D44E7E9DAC8B65C91F53EC7222B4907D0F5FB455ECF7DC8FAB9681C153493180420EC6858245855E614D286CC2C0D22C006DF6D83DF9450747C3E032DCE3791656216241047192D236EFE3D6583D7D89622097C04387582910DCB9EDFAB9ADCEF16E6CBB37CAE0AF2F57D282BDB19E333775C1A8DE2EF59FFC0332D3EAEEA6B52826EA4AB40EE4012DA7E9BC36EB8FB0F85F39EBB155BB7E9D4E16B65722BA83E3032B5B04CB81A524ED792E13E42D978342AC1E49A529201DC3083195E99C6AAE83E68C469A1D7183CAAFE51ED309E17726AA6657A4B2DD8561A19EC050182F660D67A4D4E3F40382E61FF9F4A0228D803F052EBBF0C9FB059AD9EB900EC90D0159617026F93522E3DF4653C6F3790FADCD249C4580F39B469D685AD4435132AAEA214A35A05D0E6D7268B224978C1C7DE1B861C3334D029C15299E10F3D110C67527DCA154C04358B9210BEADAD8B7BE5A0B4CF58D2BC27800CC52D6F576C4E3275EC394781E89D7BCB9F508AD5EE103814206C50C6823FDEC7E83876BC76120BCA8D861C5975C46ADEE049E067C228E6E129822FC158403919DF7870859735822350DF898F33FAFB36D4F43CDB3660DC80A7CF2A0325CE86F0DBB22826253E83B56994360AF5FB7B72BA1F46E82F75B43F374BA1A23D03DEBD916643A92704555EEA28DB4C79141FE3CDAC3957A3950F66A449512A79B9E3FAF3F894A66AC0583700F45BDBF2D9D60720C9612A2DECD99D175860967F30D9403E7326A37C20FBB83AAEC9ACD11B8D2AA44DCCD6324E40F52AED83FAF25B7A9F6C297034CA7B979127B39FCBEEA873EED45439B785137120E768E57EF308429FE9355ADA99A5A34CA3D57355B049FB45C5DEFCEBD510EC01123F818A656CD91A487FD4381645BBB79FEE02317DD841E95A645A98FB67BDE5A1906915FA5CA88F871695091D88C2B32A142D2E4FEB6BC9EC999FF2ED0AFBBC541ED9E27E061E9E22962DEA75DD41E838FCECE7C285B64095109A0D1637EA5EEEDAB8DB7E941B2A41E45786F0ADA5C5BB4BBD12DE161425C1603362FDBCC8EB50E4B250A91CBF787217CDBFB9DB0C5FA18405B239C049B5AC67C00EF69D7C43C518D60A14A3D1B7CDE3D2A79BCC6872A9FA9D73E98E1244482D4D8418064DDC823D1C0EF7439F20FE97FFB4884DADCD3C0A078D2FA9DC8E3D8DFD1A7A14D2527281EB776A70BBC02134E885FA5920F024D24EE6C84EB1EBA3D94089E933ADFDB42E5C4C3B67E88F1362E259002288BD978C6C52DBA38143A64D4EC7905E5857F4F5E91CCC48F91AD3576423160C31A742330DD8B2087950A87CA02EE23E4EF5ECEC0021C0BCA1D930A628DA5A33B64BF719DC0DFD35E4D793708401829411A1D61201C42140BAB3F4844B822491B7C867ABB8CA9AB75CB183B21A168CBB391E52BA83EBEDE2C325F1AF82E69713E7CFF3E5BB945AB3D32102CEBB2D132A6CA8D297136FAF27D2A493A477EDED4AE644D01A45CD7071A16AFA9FEAD9A63B9758CF55AB1515170BA6009C407236F6C0CD0976E0E8C253C0F62684EE17F1362BD2F4996D655F3EB9478F5613FB57E929860604F04C73AAEF4308AEE92FF27FB3C69B8AF864EDAAD7A8FE99CF4D4A59DAE491649D237EC6617590BBF849EECB36281CF8565946C9FB8038B5B2AD86A39FA282316146507C65B0E55ABE4FC90A21A39FC6398EA4D67296BCBB021B8C272074EB77BECC49FF515A97E6DFF0E279EC9C447B49FD6E074A6CFD0081AF49A567ADCF3D005C2391783BD3C7B8563C1E00E4AACBBC5DDA577DA769478602F943D7864E4A6E1CB2770ED9EEFE9D16927F1D6779FA5950B7C591EF61CB5957994CA3E81443D0710D5A56939AC926AFFE7028FA55B76581580A98A0853AC9E082645977944BF91DFAF624512DDE3D4D4306236A5893EA6E2DCE2185ADC593C55AF61C890BC4A86A16AE68E8D9175A0F551A9C03C40B025622957A1DC8B30463A33D652398E04D3D7246F84E0F980A8CF0FB7D28FCEEED755491514D7EAE9AA62E09B1037F8574F9AE59A5010CC85C881A362563BB6CFD8959B4A01031C521E552BBFDCE3CEAFC4D3D17B8C293252015E2436F8B2E8B972797C48DC21E752CC6BE7AE810C8C4983464AC883A962D2F4D27DCF763B3F2E4A610CC7EE75BAB0CB89CD615184AD900E3974620527165CE8771A1B97A66E15240527A2A1646F0899EE7FF3753D3EDBF2106D6487CF33823FD5D6680DE97BD25750198CF29D7B98D22F9F111E595F2DADB9B1D2558927A1B7FCFB29BE8DBA1B4A0519EC2478346B781C500A4029B4E96A0746D1ECA9DA5C4E1AE6498CD4D4FD14FB8691C98E99F83376553764576911009F3702FCB898BBB4DDF0C2FDB5ED17EF90C49A94E820419361C06DED35B6A72E02B76BAEE29F6DF8C10D60A9C840EE59FCA81E7E2B04BF0EC6AF7D21C0FA8581AA50C7B1C7490FFE54EF06E7A4AC88F523683A4DBD3E935A5B3FF2F0CF595C3C40610C7AA72EE334F75ED58B6767FF676E6BBD1F780B73475E3CF561B7DD7B7BA9C589AF3ACC769B8A7388096B40B2C59F293A91AE4D66CE28480B0EC8516B294E321862ABF4C586E1A19D1E3F7542844E03201121D3B14C12ED89FCA7D976EE0A08DD163A0B48EC4847D4DB2F265E3D3BA590FA7A14983288714D38B8842DAC537FDFD9FF6E83A855990A19FC5BC1D25D8AF314374E3758AF8232E491F3038B06CFC84F3876B737B8DAC579270408B84360683F8F50809E94AE7309A694C1D3BA3A62008ADCA3FDB7F9C5A5CAF7093856D87E3E1B1E6DFD451C8F08C6217CE7FE1BA3CA980F0202CD6A9F7BCA22D092BCC900C0B9F203F27753368D49B937757C270FE3A07876514FCD26A12DFE837B665E2A2499504D957DDA61680C4F0B663FBAB223977E978E9CA8014765970001E14F0C6F272C840F325946A8986AED973606CE859588F581ACB4E5DD62DFD1B33EFBE61F9D5F1620211040F2A57A966D08DFD1FA5BD096681D5E2AED1C4C5B5A0D10457265F5EF96A871FD4E7B2AFA43BE97FF5BC47B3625798E33F8B58CF854038B5198A4A2949570F692A6FB5012905889761BF0300EA90D474BB0EFF2ECAD94189C97A0F900E93F23482792D848681B8D73B6B0D647A7B2FE5290DA9F586ADAF2439AE489560F8FFB86C49AFA682D78291B9B6144E82ADB9635857DC08C7273C2EB7756E5033E54FFB9C6C7AC9C7B034B60E07A5094FC2A002B363B331BAFEDEFB1727110D20E79A001E95F7377C139AD73F57D512FD6AC1CC8F9A03B61B67DB470F1A8C4C4A95FB9AB7E51C34C68995280769FB6B6C893CF79D5872F403C507FDEE2510F13995029ADC514AC0A01080505DDB22A7CF341875F6678F3E77850640671605D62BEF9D4DF5F1E3C00F03E22CF8FA16D7E34B391981809E206CD97129B5C11388E1DA48B6D5CBB159E49214D1D44CC3A02C2A17FD28B590C100CCB6A87E23C87B4E0B5BBC36F22072E95F2AEE803410C54BB8E4338BCDBE10BE124F4E8B3F5F6EEA80C83A6BEA516068D6F2E689789390D34EBB3F7387219066F903FF457563B83B5F632FB0A2955B0D61D3D82A00A58294C568A5ED65EF87D5EA23483CB1937C40C390B412DDBAB4969BCD470B1B45F9C92175C07347799B9A7E80E8206CCDABAC0C7EFD2BC5EE75A0396CC24A4EFC689AAE345245A20C3A55F1FED4CA9F5BB24E42EF6532EB0D5E1045FCAE8ED2360163DD215328F9077536FFED70085E468B0A9D72C123109C782B041DB2AA6854636B7F054B8B38C55CC05FEA2010D23FC241A02A7AD4905FC116837C93CC5EA23DAC9A5875579A19A7BA1EF65DB396DD1CE639CAD22C002CB8FB4AEBA810118ECC0FFACCDE37488A21A62EDAC789E517B74F8C04173896F8E647CF2945F449B8B242B913C43A2D76C67C4B03A700B0917579E4370A5303C6DDE6BE4A2665F8436BFC869F1219971F39ABC5213D34070FDADB18C9E775D5AF9D1B70788DAE25507345E3E61C43FB1C0176599F1834BC69679B0EA0F795286821C618A7E3FE5BBAFE5E8191B82D4B5792032C54B460DEC7B5B5F8A4975FA3247E26671910D8919471B5FC4C70E918F333AF5E016A252540E86B47055A59782A607FE3E5F68B8A03105E0D6457B4DD9767761DBFFC250076D5B2167D0905999296DDE193F6963331E893037279FEDD44C3923369399A612C802E2897F6CAE9B2A6F1EC817DCA5AD501268B1522495CA46223E35AC9B1C841272B7C4C93DD5FFEC21D9D57FC02AD2A3CDFB38A3F0866FA9925787389BDBB0A304C8E0E0761159306C8888BCEB2A8E1B800A67DC683F73C8A5FDD767B24C56FA43270C4E79FA90810CE051CEA7D946C0BA904D3FBA1829DAEF8807CAD6708BE5CC7BA4FC958BD876B698E82E4329044B32D04D39E13BA82E116EBA9AA629F4E4F3311D143D06A9AF4C21634E83005C17822D2B8E2731E06481C8CA44DDF62AE21B1AD13F29DE9D5BCE98A407B60F4F72B3BB4179DFC15C08ECD83BE1AB2735B91DB9B2A426E06ECA8AA4C3177A87479F90E8875FE05B14FAEC675CE832272CE342B626F9B7CE0B9F63346822F0174C23711F38D319C4D4C79A7C786B222F2CDC3734FD0746206DD7B695892EB43FD6CDBDCB76035ECC72F869896B94F0A0B1BCE235A59E1B5C70BE7418CE0673916356E658585E058EA3E313534F55D862E7B58DB08A0BC2A5DC3515D53349D4418D02C204E830BB577BEE3D8960BD74519667E8FF7093E423B71D09CB7A7235DE763C090B2D9C9834E4F87F96B42285954D6E5FD9E4716901DCF793D79EBDA8A655B4633DF39475CB6E283235DD6D6F274B298FF9DB8572517B13C7B9E2D29A383CEEEF535F7AC28677B1E3814BC5DB8CF6FE2160FF42914D2BD9822226736B926980BE470B87B85810351C92B324DFB8A435CBBA3D499FA144161A0427389F259010C6BAE4A2F26151E8DCE20FC9073EEC3DAD85727B2D0D42FE8459B603691739E7BFA6716028630CA11C61042BA3CCC6FC20A1F659EC5A72C63452E7B215D00D1D252784592BA8AE30B9BB24193F7EC05BE2D207512046747C0162F5316915277C79E1FD2F95357289E7FF809D8498D942D36EF9372E0550C701886D798F585EC3E8AABE57F689A1D21A6017DDB922513CB2FF44DD7277C414A12CBE9905F3352995E186B1A14F62ED9582754C69266E63B39043A3ADA93CB8BD32ADD7ABE841D60D8EF54917034BC49C76083A96C1FFC71A4EA7FFACA21B2CEC41FBCCA523E6E8A475481D4AC4754F5BFF7EA9B037297074A8C03A5EEB3E67E53AD89A3B0029E73A3392D273B4176F92CB345341D3893B7E312FBA9E49ED8EFC49E4AB13D006C1B8266F62CC8F5145070A8559FADC9274670CB84DE860DFF639C01C6CFBC57684177C93DEEEE624B1C01059533AEEFAE805BD09D0967B0D7CD3EA78FF243DCBD47D18B99EB666CE3C9F3EB9F3AE739962D4BF638C883EA3C1CB98D758E47910EAD88C86D83BAA979C0787F98D2D22F7D7E512A6B771EBDEF63A44F990423E4118559BF6C186FF000F5DE93AEF2A46A1465164D91CF5B5B737CC2C5176559DC6FC63148DDE32316824781822D1F99433C4A6F5138D0999621C985A67588BA34CDF0F35017445C40810E3E49C2F10BEB183C3F96BE43614FB8A7DD053145AC9F1623F10BD474F0AF6EFEDEC427A5C27AFBE5E427E65DDECD596EB056AADC75F282358CDA81262F552DEDA8C24E01F7D0BF54DF7E27825D9052F3D9A0E6B3AFB713CD5CD16BD7013397DADFAD9D3AD8F53C714F1F3FAD8CB74F37C6AAFBA704F511EAD3133393E70816107F849D2220E517B916AD710771BFD049F98FA23403916A6ACE7E97FAE310CB296F782BE067BC8EE5EE4E5B5447AEDF04CCB854C3856FF7ED4B0CFD15C2F8820E71007BD3DB0A370517FF32C6E14913C34AB3A3A10ACBA9E8C9BECF8D2D6379E4DB60BFC2E1B2CA442B5538773C25CC1A986391264100B164D442B3407E67C5D527C20A7B9608AE75E4DE8EDE031DA11560805AF0082387B8357388E90C387ECBCF142DFE3A9B7F20B5DCF8D1626DD081BCF8B07769A37EEE2377F8A3163F9BDBFBDABDD665E533507380A08D19F27EE964F91E76DB232E01012BE0DA27B2BF1F09DE6135C92BB55447B957E30AD4F21E63316A363DFEEB17F61A523284A412E937274B3E6F87D9FE36115FE6F46943B5436242CD3560BF34D17EAF688389AB4F8162967BEB075FD15D44FEA3A466C6CAE42FDD8186450916ADF11E916A93BE8937E3B12EB813B1A1F7DA0F42BE90EBF6E3FBE7391A066B10457C2ACB798922EFA1B74B282F291CBD3436926611FE989CED6F3660122921335DA38FEF354D360580C67A4D883274219850601432D6CECAAFC29B176AA6D6AF511DA25A8E03AFF57BF23F4BA36FC0B77AB959547B29E4EBCB4361AD94DFB89648900BC85610761279C060690109209F7C8CCCB1DCE491C822BBAA7BC7692873FA90C06A0D3B79A2C10C32E575CB1A4328CFBAA34342A0B90CAEC409CF02BFD19EACAF7A7D2975AD333C5588B0A63C8820896FFFFDCAEA0CE6A96DF15F64CCE3430CD73633802079A2750CDBA3E8FBF446C55A3CEDC86D5064FFF6DE170EC6E64A49246EC0150E491FDCC9414977FCF4D3325BF5370DBF58D2D24F8BE32025E90BF64DCA587CD67B3CEBFBC79330C4B218661D3A26E83DB903E7F14B53FC94070A301448BE903E7A10425EE7D299871E89832BC0D38511A6B7B133BDA440AAC818D9681ED1899173DF3357A30A7990948E385C52626588B3B5563EC878954EA65F6EDE14451A58B6D57D7C92616C25A868482BE071594D77EFE90858CAC93FB94664A1DD53379ACE4780AE9ABEC46C153CAB791ADB73AC921AF51CA3EDB46D0CF33F45FE4DF18DDB02569A51706EAB8CCB044635CBECDA2959DB60CE84DFCBCF96CDB4E312715816CC98B26C6965A562C226027AAB7EE3F2B30418ADB27C9B3072CCB3318C1B39A10FC93CA9E1966C799407FB5978A439A9C5BD4B1CBC744C14BCFB328A7DE0247339C12CE73B5841D822C8B5186091BCFFE42896565CA37379694F4E495DBBB0518603AB81E1AB1BC77BF9BE3A98B4D67DE4C84BED91A6197AA91AEFB07FE8ECA1720A702FA4B7A21D2C5FB19CCB207AE0D83258C7E52C7F8BBF6620ADCA3B051BE4E63998E914503C362013303D284307AEC00F0260BC0FB5043AF934D3F241C063070C7D58C139A73A8165957783B8DD6F65B9586577B86B3504A0DF33D252D76333D82EFF27A28480924E78A15C821EAAE2FA9FDCF8226B6B90EBD54A6E7574146ECBA3AB95DF0DFF26E2F903F98958D4D11C4494C31B2E7317F2B1BC411CE495A812879979BF061A6962C8227EB350CBEE735784B6A0DFF31E21738D2F4E6ADAC71ACA4BAEA7777010AB2640C5FAD074EF1867E9A84B681DCB20A7CEC9F2F3B98B4868F7100CFA5FBB874BBE7D4CFC331F413F2A68E893DD156915765013F3287118E4DADA30AFFD4974EF06762BA48E26BAB3223624E8609AFBB5F40C9B6BD7B7458DE45D1DFD3ACE9A09E69B967341D019084E1C6C6F54B9B8F934102E29FD6E78817612BF036AA8C08EEB9FEC66E7B62DDBA31C668CCA39671B7A1FCD21EA7D604B8FE0ECAE83CF89491B5A07C7E9C1447E35F9144FD966F8F5B28A95675E16CCBFEAB8DA887E1455366CBF5BFE9E06FCE07DC14E46EA21069698EDA3DDBA4316563072211247466E9B9286A1A222CB57887C06989A2D1B5C4C6B4DEBBDFCB7C47E3EDF3D9A6253AC5F43F42E5BC4CFB5BF8AF19058350AFCB9D34B67A6478EAF0BD3FC8237AE2AE42F322FB77616DC39F39879A3E32A43F5D292AFDFCEDB6864A1FFF50CD71FE8DEC1E21AEBB23D67D34E3F0CD185D2D7269485D4A367572B3840B05348F48D1386332F488D13FCC1F7F24585718FECABA485950580B1DAB21EB46AE5AF567C67FC520EB722359F62627D440663EE7846EA7CDC8400CCBA3FC8EF0DA3BC10B0BF29473292FBEAAA8061146F0F6D0E1206443C2FF92DC77FF1B14F9CF4C7E170F811B9E999A8A87EB18DBAB34F5F7468217F81CD4DBE3DEF32D2EDF985EE7CD5F647123DEC40BFA9288C2BAFCFA8CC46BC0EA1B60BCA5CED2C32A9D25FCD53837607C2F774058CBA4CA498FF4425105772E4521111D0909E3158F44BD58873895CECED80FD7A8E78089A90340E2B39EB5BE51BD5BC016A899E1841C8CC7E36D76A05E695516A6074DC1A3BE11FC216E1FBC12E29D60508A88CCC8DD0667026C6DB2455B9E0AEBAF4BBD8BF80082E850B74E15E09E79D021749AA132E599F103AE9AEB16F815B7126465466F9BFF28709A20870BFCE388DA6C88D572E160E96B7CF659474250211FD7FB5E100F69D25E3342F7147AF4EB29616B6612F67968E6692E62A8B88D8F5D50C8333295E0FAC88598BAFA9B6BE200F222BA386FB623135CB8CBFB00294CAA7EA2EF385F855019C9BEC52F630CFDD9A5E81B8CEA970BD1147659B0E4A58BFF7E3D7F2584B82DC57DEEBA3CD419F6382438ED4698A6DCE4FB37E28744797511EE03EAF0FC106ABB646C4474AB14869FE16CCAAB6B2086F50C1CD6D3E72E155A4DEE9EA649EC173E680D83FF64AC077C86EFB23C6B2C05BBB8A6E5CFB3FF0E07EF32E0AE584F44B30BED43A5EC364734881F111AD5884A2D136DEC5C620D0AD45082045684403420F6EAACB8B708C61F61ECBF224A5AF874FB365CC42AC0AB58A857F73DB2867B95C0D8CE35ADAF4D530BF7CF0A4988E33E52D9962AA9C950677CA6894192A4A14A1BE6D93E3D5E5DD51EBA4DE5C5132A9CC8D1F769AE3E8FACC4CA0B5A78BCD5951287368B97CC3B9E4CC75F9DBE207C4F4739339E1C88AD0725E3943F80F443ADF7D613A2B068151E637071B82233065464683A73EF14516A3524B230C54865CCF6E2C2F4E3441B8484BCACC86DCFB24A664F222461C79E8033AFF979A758184B7F0E5B85E6B6B82EA60B358FCC3763D46597F5B9AAED68035A529D3678C98212043BC343371D2976895EC3221FFE61B4F8ACA5422F30F57A81208D9DCCCF2295AC241E2415A7F83E09AD2DA00DC47B697A0D6B8B2D49268A6ABC75E10494AF2D876A69A41DAADAFB1DCCD5A4C7AD6293A9788601758804B4F000ED49AC90F54AEB60961F72E13D053C5A4C1C5368DC793B2111D4B76F962CB3A75E6929A4897FB077C8FD59972A2BDD29118C5E8387A73E91721C08D023AC6EDAE708D4714C4D3680273A8D9AB74DF8DAF9803BFA2275251D868E023BCD1E0834926ED1540CB0EDE810B22674872D5076A1050A1D2638C7AA7C07EFE818453D870749AF195D3E60CF6558532DF4156832866E8F3D1FCD8620FFDB8510260E446881EC36E9EE5B285A698F29FB48F242FAFA9C1E0997D6587AC308FB9B6F43BDC1936F325A56FD69DD1FA840A066DEC5AE89D01107EACF7C728783D6123AB70324810B5EACFDAB48DDABFA2DCF3A7082CA2A76B939FE3CFA2A5F4104009A8108FC58630C48FF48C3B59486D872098F5862B5283ABC056AC77226B6D7437B3F1CABD0EFB5E74496F3FB52E2F4494B1B5CD060E6A131AF03C4626D9E5617DE601ECDD377B8221154D0DA58243C7347274DB643A12B4C60789A571EB3E0CFEE53CEC6782D2E46AF96F21AD3EFDF21DCA238A272E1391DFDAB699C6A85B0D8EB2A6ADF0EC5945497B4493D19BBB6E66749AF245DF9510006B5522E07362B4CF328EDA793BCA5DD982053F5FA027C79E97A703676ACCE418E230B76692DC73FFFC1DCAD62FA44923205DC25D8829FF7E3A70A7BECE577AB0064A2617BF32B36E9DFA57BD96D5206FF2C0A3F97AD7F1A5D4F3D5FB68C9552FA3DD3E34BF23ACADC019A1606AC404A40DB7BE7A50B7BFC30F15BBC203F07CA33FFEC2467AC28CF9061B183AA98D0BAAAF30A8C36192E2DE3C4D80E983E0C9FB95CB174C6B6AEC3E3CF3AD61BCFF58671CB85BE10C539EE860D8F688D4582F37C8666B40BFEA8043A3718586115A051149F4A09CF1587FE1DCAE4BBD91E54CA286D23D57BACD71161F8FF7E36694D7A552EB4E9B7B48E47E6214A7B98EF1FE9AC6F16AB4AFA3B7529AE18218852BD658F69BE528EB0E53A220EA9AAAB5DEFB965864332F371CEA415E49B964A5A323B09DDC5FC9773953D38A9645C71A3A853E3DFA6FE4433E862E2F92E04D0402F198D3B54AC138116494D321876DE59A49D1DAD07B5E0B50A5EB58BE59DA5BFDE6F058A2EB36922BB6C773EC41530559C53A938121B3899DA309B230A97D7FCA2EF4D7EFF136CAB5C9AFBDEEFED6336E30222568D6C575F3F78C1AD70BFCFB0BF874B287C8AAF8E083891FE9CD3B0E3A57698BD21B0FE56E43DC1DA1AF7D03FC5137E90E043B77789FE2319CF9E7D9C3E2CAD15BEDE6F2CD963F6EE788C4DD71E6A161CDBFFB4009F45458073E9F612FFB5F891DB2B7B14A3F5F211E44BCF616893189E44787E5BF7B47187239FB5072B92B1424687EF9CA8BFDFF0000FAFF0300FFFFFFFF04000400FDFFF8FF00000000FEFFFDFFFCFF070001000400FEFFFCFF00000000FFFFFDFFFFFFFEFFFFFF0000020000000200FFFF03000000020001000400060004000000FCFF05000100FFFF0300FBFF010001000300FBFF020000000700FEFFFFFF03000400FFFFFCFF040001000200000001000400FDFF0200000001000000FFFFFFFF00000000FEFF01000300FDFF0400000003000000FFFFFDFF0100FDFF010004000000FDFFFDFFFFFF0100FFFFFCFF000002000100FFFFFEFFFDFF0200FCFF01000100FAFF0000000002000300FCFFFCFFFFFF03000500FFFFFCFF0000FEFFFFFFFCFF0700FFFF000005000000FBFF0100FDFFFDFF020000000200FFFFFEFF0100FDFFFFFFFFFF0400FDFF0000FEFF0100FCFF0400FFFFFDFF0100FEFF0200FEFF0000030000000100FDFF0100FDFF00000000FBFF01000000FEFF010001000100FEFF010001000000FFFF0200000000000200FEFF010000000100000001000100FBFFFFFFFDFF0300FFFF00000000FFFF00000400040000000200FCFF0000FAFF0200FCFF0000FAFFFCFFFCFFFEFF00000300FCFF03000500FDFFFAFFFFFF0000010000000100FEFFFCFFFEFFF8FFFEFFFDFF0500F9FF00000200070002000300FBFFFEFFFAFFFFFFFBFF05000100FDFFFCFFFFFFFFFFFEFFFFFF02000200FEFF0000FFFFFDFFFEFF0000FEFFFCFF00000300FCFF000005000000FCFF0400FDFF01000100FFFFFCFF01000400040002000400FCFFFDFFFFFF0300050002000300FCFF0600FEFF0100FBFFFFFFFFFFFEFF00000000FDFF02000200010001000100FEFFFEFF0200FDFF00000500FCFFFEFFFFFFFEFFFFFFFFFF0100FEFFFEFFFBFF070002000300FDFFFFFF020004000000FDFF0500FBFFFBFF0200FEFFFFFFFFFF02000300FFFF0000FEFF030003000100FDFF0200FEFF0300FAFF0100FEFFFEFF0000030002000000FDFFFDFF03000400FEFFFFFFFFFFFFFF0200040002000000FFFF0300FCFF0000FBFFFBFFFEFFFFFFFEFFFEFFFCFFFDFF0200FEFF00000100FDFF02000000FBFFFBFFFCFFFFFF03000300FDFF0400FEFFFFFFF9FFFCFF010003000200F9FF00000100FCFF05000400FFFF0300FDFF0000FCFF00000600FCFFFCFF0000FCFF0300FDFF0200FCFF0100FEFFFCFF05000300FEFFFDFF010000000300FFFF0200FEFF0300FFFF0200FDFF02000100FFFF0000FDFF000003000000FEFF0000FDFF080004000000FFFFFBFF0700020002000200FEFF00000300FCFF00000300FEFF02000400020004000200FDFF0300FEFF0200FCFFFEFFF9FFFDFFFFFF0300010001000000FEFFF9FF0000FFFFFFFFFFFF0100FEFF0500FDFF0700FEFFFDFF0000030003000100FCFF0600FFFFFFFF00000000FDFFFDFF0000FFFFFDFF0400FFFF000003000100FDFF0100FFFF03000000FFFF0100020003000100020000000100FEFF02000000030001000400FCFF0200040001000000010003000000FFFFFEFFFFFF0000FEFFFEFFFFFF010001000400010000000300FFFF03000200FFFF01000200000001000600020001000400FEFFFCFF0300FDFF01000100FDFFFDFF0200FBFF0200000004000000FFFF0100FEFFFFFF04000200FEFF000000000200FFFF040001000200FDFFFDFF02000200010004000100060001000400FFFF0200FBFF0000FEFF0000FFFF02000300010001000200FFFF01000000020003000400FDFFFDFF03000600FEFF0000FEFFFFFFFAFF050003000000FFFFFEFFFFFF0000FEFFFEFFFCFFFDFF0200FFFF0100FCFFFFFF0600FFFFFCFF0000FFFFFDFF01000000FDFFFDFF0200FFFF0300000001000300000002000100040002000000F8FF020003000200FCFF00000100FFFF0500FBFFFCFFFEFF0000010001000100FFFF010003000000FEFFFCFFFDFF010008000000FFFF0300030001000100FEFF03000000FCFFFFFF0000000000000300FBFFFFFF010001000100FDFF02000400030001000100000001000100FFFF03000600FDFFFCFFFEFF0000FAFFFFFFFFFF0000FDFFFEFF0100000001000900000004000600FFFFFBFF02000100FEFFFDFF0000FEFF01000300FFFF01000100010001000000FFFFFEFF00000600FCFFFEFF0100FEFF00000200FEFF03000000FBFFFEFFFFFF0300FFFFFDFF0000FAFF03000400010006000100FEFF0000FFFFFFFF030003000100FEFF0400FFFF0000FFFF0000FAFFFEFF01000100FFFF0100FDFFFCFF0200010000000000FDFF0300FCFF0000020003000300000003000400FCFFFFFF0300FFFFFFFF04000200FEFF01000400FBFF00000100010003000100000004000600FCFF0200FFFF0300FEFF03000000FDFFFFFF020001000200FEFFFDFFF9FFFCFF01000100FEFF0200FFFF00000000FCFFFCFF01000300F9FF02000100FEFF03000200FFFFFFFF01000300020000000200FFFF0300FDFF0000010001000300FFFF0300FDFFFFFFFFFF01000000020000000300FCFF0200FDFF040001000100FEFFFCFF0200FFFFFDFF0200FDFFFFFFFFFF0700FDFF03000200FFFFFFFFFFFFFEFFFEFFFEFF04000200FAFFFBFF0300050000000400FEFF05000000FFFF0200FCFF05000500FFFF0200FFFFFDFF0000FDFF0000FCFF000001000200FFFFFBFF04000100FFFF0300020003000200FEFFFEFF04000300FFFF0100FEFFFDFFFEFF02000000FFFF0100FFFFFAFF0200FFFF02000200FDFFFAFFFEFF00000300FEFFFFFFFEFFFFFFFBFF0400030006000200050008000100FFFF0300FCFFFEFFFEFFFEFF03000300FEFFFEFFFEFF03000200FEFFFEFF0200000001000000FEFFFDFFFEFF0200FCFFFFFF020001000200FFFFFFFFFFFF0000FEFF00000100FDFFFFFF0100FFFF05000000020001000300FFFFFDFF0300FDFF0000FFFF00000200000002000700FFFFFFFFFFFF0500FFFF0000010002000200FFFF00000100010000000000FFFFFEFF030002000200010004000000FFFFFFFFFDFF0500FDFFFCFF00000000010002000000FEFFFFFF010000000000FDFF00000000FEFFFFFF0000FCFF0200030002000000FDFFFFFF0000050001000100040002000000020002000000FEFFFFFFFEFFFCFFFFFFFEFF0100FAFF01000200FFFF0300FCFF00000000FEFFFDFFFCFFFBFF0200020002000300FEFF00000400FDFF0300FFFFFEFFFFFF010001000100FFFFFDFF0000FDFFFEFF010000000100020002000000FEFFFDFF0000FEFF0000FCFF0100010002000000FEFFFFFF0200FEFF03000300000000000000FEFF0400000002000300FFFF03000100FDFFFFFF03000000010003000400FEFF0300FDFF0100FEFFFAFF0200FFFF0100030001000500FFFFFEFF010001000200FDFFFBFFFFFFFFFF000001000700FCFFFFFF0600FEFFFFFFFEFF01000100000004000200000001000200FFFF0000FFFF0200FDFF0200FCFF04000100FEFFFFFF01000000FBFF0200FFFFFFFF0600010003000000030000000100FDFF000001000300FBFF010001000300FDFFFDFFFEFF010000000200FEFF00000200FEFF0000FBFF0200020003000300FCFF0300FDFFFFFF01000400FFFF0100FFFFFFFF0500FFFF0200020001000100FFFF0300FEFFFCFFFFFFFFFFFFFFFFFFFAFFFEFF0300FEFF0300FDFF0000FEFF0200FDFFFEFFFFFFFFFF010005000000FDFFFDFFFFFF0400FAFFFEFF03000100FFFF0300FCFF0100FFFF0200FFFFFDFF0000FEFF0100FAFFFEFF0100010004000300FBFFFFFFFFFFFDFF0000FCFF020003000000FDFFFFFF0100FBFFFFFF0100020003000200FEFF00000500020000000100FFFFFDFFFFFF01000300FFFF0400FEFF03000100FCFF0100FDFF0500FCFF02000100030004000400FEFFFEFFFFFF02000100FEFFFDFF0300FFFF0100FEFF020003000000FFFF05000500FFFF0000020001000000FEFF0500010001000200FDFFFFFFFFFF04000100FEFF0100FEFF0500FFFFFDFFFEFFFFFFFEFFFCFFFFFFFEFF0100000000000100FDFF01000200020001000000020000000200FEFFFBFFFCFFFCFF00000000FFFFFDFF0100020001000100FCFFFEFF07000000FFFFFEFFFFFFFFFFFEFFFEFF0100FCFFFFFF05000400FFFFFCFFFEFFFDFF0000FEFF0000FDFF0300FDFF0300010001000400010000000800020004000000020003000100FFFFFCFFFFFFFFFFFFFFFAFFFFFF0200FEFF04000000FBFFFFFFFEFF0200FDFFFFFFFFFFFCFFFFFF00000400FFFFFAFF0000FEFFFDFF00000100FFFFFEFFFDFF0200FDFFF8FFFEFF0500010000000400FEFFFFFF02000100FEFFFCFF0000030004000100F9FFFDFFFEFFFCFF0000FEFF01000500FBFFFCFFFFFF03000100FEFF00000100FEFFFDFF0200FDFFFEFF0400FEFF0000FFFF0300FFFF00000300FEFF020000000200040002000100FDFF0200FEFF0000FCFF0200FDFF0000FFFFFCFFFEFF0200FEFFFFFFFFFF02000000FEFFFFFF0400FFFF00000200FCFF0200FFFFFDFF02000100FDFF00000300FFFF06000100FEFF000001000000FDFF0200FBFFFFFF02000200FDFF0100FEFFFDFF010003000100030002000200FEFF020000000100FEFFFFFF00000200FCFFFEFFFAFFFFFFFFFF09000200F9FF010002000200FFFF01000200FEFFFFFF03000000030002000200FFFFFFFF0100FFFFFCFFFFFFFEFFFAFFFAFF0100FCFFFFFF040005000500FEFF040002000200FDFFFDFF0200FEFFFFFF0200FEFFFEFF0000FBFFFEFF0100FEFFFCFF0200FEFF0000FEFFF9FFFFFF02000100FFFFFFFF0300FFFF0000FFFFFFFFFDFF04000000FDFFFFFF05000600F7FFFCFFFDFFFAFF02000100030005000200FDFF01000100000003000000010004000100FBFFFFFFFEFF020004000100FCFF0300FCFF0100FBFF0300FEFF0500FFFFFFFFFEFF0200010006000200FFFFFEFF0200020003000200FFFF0000FFFFFEFF04000400FDFFFDFF01000200FFFF00000300FFFFFEFF0700FBFFFCFFFFFF0100FEFF030003000000FCFF03000100FEFF01000300FEFF020003000000010002000100FFFFFFFFFFFF0200FFFFFBFFFFFFFFFF060002000100FEFFFEFFFEFFFFFFFEFFFBFFFDFFFBFFFFFF000003000000FEFF0100030004000000FFFF0000FEFF0000FBFF0300020003000300FDFF050003000400010001000600FFFF01000200020000000400030001000000000001000200FDFF0000020000000000FEFF0100FCFF0100FCFFFFFF0100FDFF0500FFFF02000100040003000300FFFFFEFF000000000300FBFF0500040005000100FEFFFEFFFEFFFBFFFEFF02000600FFFFFEFFFFFF0000FCFFFCFF000005000000FCFF0100FEFFFCFF0200FFFFFFFF030000000300030000000000FDFF00000600000000000200FDFFFDFFFFFF0200FEFFFEFF020002000800FFFFFFFF0000FEFF0000FDFF00000100FFFF03000100FAFFFDFFFDFFFDFF02000300FFFF02000300FFFF0300010000000700FCFF00000400FEFF01000300FFFF02000000FDFF02000000FEFFFEFFFDFF0100FDFFFFFF02000000FBFF0000FFFF0100000000000200000004000100FFFFFDFFFEFF0500FFFF02000100FCFFFCFF000002000300020001000000FFFF0400FFFF000000000000FFFF040006000100F8FFFEFFFEFFFEFF0000FEFF01000000FDFF0100FDFF0400FDFFFCFF030000000300FFFF0200FFFFFFFFFDFF00000000FEFFFEFF0000FFFF04000100FBFF0400040001000700FBFFFDFF000004000300FFFF010002000100FFFFFFFF0200FDFFFDFF000000000200FDFFFFFF04000300FCFFFCFFFFFF080003000000050003000600FFFF020006000000FDFF040002000200FFFF01000000FFFFFFFF020001000400FEFFFFFFFDFFFFFF0000FEFF0200FFFFFFFF01000100FFFFFEFF0400FDFFFFFF0100FEFFFEFFFDFF01000000FEFF0200FBFF01000700FDFFFFFF0300FDFFFFFF0000FEFF050001000500FCFF00000300FFFF0200FFFF0300FEFFFFFFFFFFFDFFFCFF01000200FFFFFBFFFEFFFBFF0000FDFFFCFFFFFF0200FDFF0100FCFF0000FCFF0200FFFFFFFF0000FDFF0100FEFF0300FFFFFEFF0100FDFFFDFFFDFFFFFF01000000030004000400000001000100FFFFFDFFFEFFFEFFFEFFFEFFFFFF0500FFFFFFFFFEFFFEFFFEFF00000400FEFF000001000200FFFFFFFF000000000000FFFFFFFF0200FDFFFDFF03000100FEFFFFFFFFFFFFFF0000FDFF0000010004000300FCFFFFFF0000020001000200FDFF0000FAFF0000FCFF030000000300FFFFFAFFFFFFFDFF0500FCFF020000000400010000000100FEFFFBFFFFFF05000100050004000500010002000000000000000200FFFF0200FEFF000000000100FEFFFCFFFFFFFBFFFEFF010001000200FDFF0200FBFFFFFF0600FCFFFEFF0000FFFFFFFFFFFFFEFFFFFFFDFFFDFF03000500FDFFFFFF0100FFFF010003000100FFFF030002000100FFFF02000300FFFF03000000FFFFFFFF00000100FFFF010000000000FDFFFDFFFEFF0400FCFF03000000FEFF0100FCFF0400FFFF00000300020003000000FEFF0400010000000200FCFF040004000200010001000400FFFF050001000200FEFF01000100FEFF0100FDFF0100000002000000FAFF010002000500FEFFFEFF000002000100FDFF0500FEFF0100FFFFF9FFFBFF03000100FEFFFDFFFEFF0200FDFF0200FCFFFEFFFEFF0100FFFF0200FEFFFEFFFCFF05000400010001000100FCFF080001000200FCFFFEFF0100FCFF020003000100FFFF0100FCFFFFFF0200FFFFFDFF0200FEFF04000000FBFFFCFF0200FEFFFDFF04000500FCFF060005000000010002000200FFFFFFFF0200FCFF020002000200FFFFF8FFFDFFFCFFFFFF0100FDFF0200FBFFFDFF01000000FDFF0100FBFFFFFF0400050001000500030004000000FFFF0100FBFF0100FEFF0400FFFFFFFF0100FDFF01000200FEFFFEFF01000000FDFFFFFFFCFF02000100030004000100FEFF0600FDFF0000FDFFFFFF010003000300FFFF040001000500FFFF02000200FFFF0500010000000000FBFF0500FFFFFDFF01000100FDFFFDFFFDFFFDFF0100FDFF0300000000000000010006000000FDFFFDFF0000FEFFFFFFFEFFFEFF010001000200010004000500FAFFFBFFFDFF0200FEFFFEFF0100FEFF02000600FEFF01000200FDFF0000FEFF0100FFFF0100FCFF0200FFFF0100000003000200FEFFFEFFFEFF0200000001000200030001000000FFFF03000400FEFFFEFFFEFFFFFFFAFF0300FFFFFFFF010000000300FFFF05000000FFFF00000300FDFFFEFF0400FCFFFEFF02000500FEFF00000300FCFF00000200FEFFFDFFFCFF0500FEFF0400FFFF0000FBFF0000FFFF0000FCFF03000100FFFF01000100FCFFFFFF0300FFFFFDFF04000300FDFF0400FDFF0600FFFF0300FFFF000000000000010001000100FDFFFEFF05000000FEFFFBFF010003000000FDFF00000300FEFFFFFF01000000FDFF0500FCFFFBFFFEFF040001000100FBFFFFFF04000400060004000100FDFF020000000400000004000100FBFF0500FDFFFDFF00000000FDFFFDFF0000FEFFFFFF0100040003000200FFFF0200FEFFFCFF0500FEFFFFFF0000010002000200FEFF0200000004000100020008000200FCFF020000000200FBFF0000060000000100FDFFFFFFFEFF0700FEFFFEFFFFFF0400FFFF0300FFFF0500FEFF0200FEFFFCFFFEFFFDFFFBFF0100FDFFFEFF0100FDFF0100FEFF0300FEFF0400FCFF0000FFFF05000300FAFF0200FEFF02000300FFFFFEFFFFFFFFFFFFFF0000FCFF0400FEFFFFFF0000050000000000FEFFFDFF03000000FBFF02000300FCFF0400FDFF0400FDFFFFFF0000FEFFF9FFFEFFFFFFFBFFFEFFFFFFFFFFFCFFFDFFFEFF02000200FCFF000005000200FDFFFBFFFFFFFDFF030005000100010003000100030001000700FEFF00000000FCFF05000200000002000000FEFF0200FEFF020003000300040003000400FDFFFDFFFBFF02000200040004000000FCFF0000FFFF01000100FFFF0000FEFF0500010001000100FEFFFDFFFDFFFFFF0100FAFFFBFF0000FDFF0200FFFF010000000000FFFF0300FCFFFCFFFEFF0600FEFF03000100FCFFFFFFFDFFFDFFFBFF030002000100FFFF00000200FCFFFFFF0100FEFFFFFF010000000000FEFF0200010004000000020002000100000003000000FDFFF9FFFBFFFBFF00000000030000000300FDFFFDFFFAFF0100FBFFFCFF03000300FCFF0300FCFF02000100FFFF0200FEFFFEFF00000400FAFF0000FDFFFDFF010004000100FFFF0000FFFFFEFF07000200FFFFFFFF04000400FFFF0000FDFF02000300FCFF0000FFFFFCFF01000400FEFFFFFF0400000004000300FEFFFDFF00000100FFFFFCFF00000200000003000100010002000000020003000400FFFFFEFF0300FDFF0400000000000100FFFF01000500FFFF030001000500FFFF01000100FDFFFEFFFCFFFEFFFDFF05000100FEFFFFFF01000000FFFFFCFF0300FEFFFCFFFFFFFDFFFEFFFFFF0200FCFFFEFF050004000000FAFFFFFF0400FDFFFCFFFCFFFEFFFFFFFFFFFEFFFCFF0100FFFF05000200FDFF0100010000000300FCFFFEFFFEFF0100FEFF010004000200FEFFFFFFFFFFFCFF04000600FDFF0000FFFF0400010003000500FFFFFDFF02000200FCFFFFFFFBFFFDFF02000100020008000300FFFF0700FBFF0300FEFF0200FEFFFEFF0100050001000000FFFF0000FEFFFFFFFCFFFEFF0200FEFF010001000100FFFF0200FFFF00000000FBFF0100FBFFFFFFFDFF01000100020006000400FEFFFBFFFFFF03000000FEFF030000000300FEFF0000FDFF0000FFFF060001000300FBFF04000200FFFF020004000200030000000100FFFF01000100FFFF0000010000000600030001000500FDFFFFFF0000FFFF00000200020000000000020000000200020003000400FEFF01000400FFFF0000FFFFFEFF0100FFFFFFFF000000000200FCFF050003000500030001000000FFFF0400020002000200FDFF0000FEFF00000000FBFFFFFFF9FF00000400F9FF010001000300FBFF01000100030003000000FFFFFFFF010002000100FFFF010000000200FCFFFFFF040002000300FFFFFEFF0100030004000300FAFFFFFFFDFF0100FDFFFBFF020004000100FEFFFFFFFEFFFCFF0000F9FF00000100FDFFFEFFFFFF0700FFFF010002000200030002000100FEFFFBFF0000FFFFFEFFFFFFFEFF0400FBFFFFFF07000000060001000200FEFFFCFF00000400FDFF0600FEFFFFFF0100FDFF01000300FFFFFEFF0700FFFF0000000002000100FBFF00000000FEFF0000FFFFFDFF0500020005000200FAFF05000500FCFF00000000FEFFFDFFFEFF00000000020000000100020001000100FAFFFFFFFBFFFAFF0000030000000200FDFFFDFF0000FFFF0300FCFFFEFFFEFF05000300FFFF0100FEFFFCFFFEFF0200000001000000FCFF04000300FFFF00000000FEFFFAFFFFFF0400FEFFFBFFFEFFFFFF0000FDFF0200FFFF03000200FFFF01000300FFFFFCFF0400FDFF00000100FEFF0400FFFFFCFF0000040004000100020004000300FFFF0200FFFFFFFF0200FEFF03000100FFFFFCFF0400FBFFFEFFFAFFFEFF0500FFFFFEFFFFFF0100FFFF000003000400FEFFFFFF0200FFFFFEFF0200FDFF0100050001000100FCFF0000FFFFFFFF0300FFFFFFFF03000000FEFFFDFF0000FFFFFEFF00000200FDFFFEFFFDFFFEFF0000FEFFFDFFFFFFFEFFFDFF0500FEFF01000200FFFF0000FEFF00000200030000000000FFFFFEFF0000FDFF0100FFFF0300000000000000020001000000FFFFFFFF0000010003000300FDFFFEFF01000000FFFF02000000FDFF010000000100FCFFFEFF0000FEFF030002000200FDFF00000600FEFFFFFFFDFFFEFFFEFF02000000FDFF0200FDFFFCFFFFFFFAFF00000100FEFFFCFF0400FFFF040001000000FEFF0100010001000100FBFF0000FCFF04000300FFFFFFFFFCFF0000FFFF0900FEFF0100FBFF0300FDFFFAFFFBFF01000200050000000000FCFF03000400FDFF020002000500FDFFFDFFFFFFFDFF0300FBFF0100FFFF030002000100FEFF0100FFFFFFFFFDFFFDFF010005000100FFFFFEFFFCFFFFFF020006000100F8FF0100010000000200FEFFFDFF0000000001000200FDFF03000100030003000500010006000500FDFFFFFF04000100FCFF000001000300FFFFFEFFFFFF0300FFFF02000200030001000200000002000100FEFFFEFF0200FEFFFBFFFEFF0300FEFF0300FEFFFCFFFFFF0300020001000100FDFFFBFF0100FEFFFFFFFFFFFFFF0100FFFF02000000FFFF0300FAFF01000000FDFFFDFF040000000100FCFF0200FFFF0200FCFF00000600FEFFFFFFFDFF05000100FCFFFBFF0300FFFF0200FFFFFFFFFFFFFEFF0100FAFF0000FFFFFFFFFBFFFEFFFCFF0100FDFF0600FFFFFFFFFDFF00000100FFFF0500FEFFFCFF0000FCFF0000FFFF02000000FBFF010000000300FDFFFFFF0100FEFFFFFF03000000FCFFFFFFFDFF0000010000000000FFFF03000100FDFF01000200FFFF0100FFFFFAFF02000200FCFF0100000002000200010001000000040000000400FDFF02000500FDFF03000600FCFF0200FDFFF8FF0500FDFF020006000300030002000000FEFFFFFFFCFF0300FEFFF9FF05000200FEFFFDFF0400FFFF0100050001000400FDFF0000FEFFFDFFFDFF0100FDFF0100FCFF0000000000000100FCFFFDFFFFFF0200030000000100FFFF0000FEFF070002000400FEFFFBFFFDFFFFFF0400FCFF020004000100030002000100FFFF00000100FDFFFFFF0400FBFFFDFFFEFF0200FFFF010001000300FFFFFAFF0000FDFF0000FFFF0000FFFFFFFF0400030002000600000004000200FDFFFCFFFBFFFFFF0000FDFFFFFF0300FDFF040000000500FEFF0000FDFF0000030002000000FCFFFEFF0000040004000100FDFF0100FDFF00000700050002000200FCFF0100FFFF08000400000004000100F9FFFFFFFDFFFDFF04000000010001000300FDFF0200FDFF0200FEFF0200FDFFFFFF0300FEFF03000000FEFF0300FEFF030004000000010004000100FCFFFEFF0200FEFF04000100FDFF01000200FDFFFEFFFCFFFEFFFDFF00000300FDFF0400FFFF03000100FDFF04000100FEFF0200FFFFFFFF0100FCFF0100FDFF0300FFFFFDFF0000FFFFFEFFFFFFFEFFFEFF01000300FEFFFFFFFFFFFEFF000001000200FDFF0000FFFFFFFFFCFF02000500FDFFFEFF0200FDFF00000000FFFFFEFF010002000100FDFF0100FFFFFEFFFEFFFFFF00000200FFFFFFFF0100030000000600FEFF070003000100FDFF01000300010000000500FEFF03000100F9FF0300FEFFFDFFFEFF0500FFFF0200FFFF0400FFFF01000300030001000000FEFF02000200FEFFFEFF04000100FCFF0100030000000100FFFF020000000100000000000200FEFFFCFF0000FDFFFAFFFBFFFBFFFEFF0000FEFF0100FDFFFFFFFDFF0000FFFFFEFF0300040005000100FFFFFFFFFDFF0100FFFF0500FDFF0100020000000100FEFF0500FCFF01000300FFFFFDFF0200FFFFFDFF0000FEFF0000FFFFFDFF000001000000FEFF0300FAFF0400FFFFFBFF0400FFFFFEFF03000400FDFFFBFFFCFFFEFF04000100FCFFFCFFFDFF0000FEFFFDFFFBFF02000000FDFFFFFFFCFFFAFFFDFF01000100FDFF02000500FEFF0400FFFFFBFFFFFFFDFF0000FEFF0200000002000200FFFF05000200FEFFFFFF0300FFFFFBFF0100FEFFFDFFFFFF0300FCFFFFFFFEFF010002000400FFFFFEFF01000200FCFF00000600FFFF00000400020003000000010002000100FCFFFDFFFFFFFEFFFEFFFCFF020001000400F9FF010003000700040003000300FDFF05000400FFFF060002000100050001000300FDFF000002000300FDFF00000000FCFFFEFF00000300FFFF00000000010001000000F9FFFFFF00000500FFFF0300020003000200FDFF02000300FEFF010001000300000003000200FEFFFEFFFFFFFBFFFBFFFEFF0100FEFFFDFFFBFF0300FFFFFEFF030000000000FFFF0100FEFF01000700FBFFFFFFFBFFFEFF0300FEFF03000400FFFF01000600FFFF0200FFFFFBFFFFFF030001000000FFFF05000100010002000000FFFF0300040002000400FEFFFCFFFFFF02000600FAFF0400FDFFFEFF030002000400FDFFFEFF000003000300FFFF0200FEFFFFFFFEFF0400FFFFFCFFFEFFFDFF00000100FEFFFEFFFEFF03000000FFFF0600FFFF0000FCFFFEFF0300FFFFFCFF0100010002000400FCFF00000200010002000100FBFFFEFF0100FDFF030004000000FEFF010001000100FFFF00000200FAFF000000000300FFFF0100FCFF03000100FFFF0300FCFF01000100FEFF0100030000000400FFFFFDFF0300FEFFFCFFFDFF0000FFFF0000FCFFFFFF02000300FFFF00000200FDFF0000FEFF0200FDFF020002000300010002000000030001000100FFFF0000FDFFFFFF0400FFFF04000300FEFF02000200FDFFFCFF03000100FEFFFFFFFEFFFDFFFEFFFDFF000000000100FAFF04000000FFFF04000200FEFF0400FFFFFCFF030002000300FCFF03000700FDFFFDFFFFFFFFFF0400FDFF0200FEFFFCFFFDFFFEFFFCFFFFFF05000000000000000300FDFFFDFFFDFFFBFFFEFF0400FEFF0300FFFF0500FEFFFDFF0200FEFFFEFF00000400040003000400FDFFFFFF020001000300000001000000FCFF04000000010002000000FEFF0000FEFF0000FEFF0000FFFFFFFFFDFF0100FCFF0100FEFF020000000000FAFF010001000100FCFFFEFFFEFF000000000500FDFFFFFF0200010003000000FAFF0400FFFF0100FFFFFEFFFFFF0200FCFFFFFFF9FF05000200FEFFFEFFFEFFFEFF02000000040004000100FCFFFFFF0200FFFFFAFFFFFF030003000100FFFF020005000300FFFF0200FFFF01000300FFFFF9FFFEFF040003000100030005000200FCFF0100FFFF0100FBFF0000FCFF03000100FEFFFBFF020004000200FEFF0200FEFFFFFFFEFF0100FCFFFFFF0300FFFF0200FFFF02000200FFFFFDFF000002000200FBFFFCFF0100FEFFFDFFFEFFFDFFFFFF0200FFFF0000020004000200FFFF03000200FFFF05000100FDFF030000000400FCFFFDFFFEFFFFFF01000200FEFF0000040003000100FEFF0200FDFF0000FEFF03000300FAFFFFFFFCFFFFFF00000000FCFFFFFF02000000050001000300FCFFF8FFFFFF0000FCFF0300FEFFFDFF010000000300010002000100FBFFFEFF06000200FBFF0100FEFF0200FFFF0200FCFF040003000100FEFF00000100FDFF0300FEFF0000FFFFFEFF060004000000FEFFFCFFFEFF0100FEFF0300FCFF03000200FDFF0100FAFF0200FDFFFEFF0400FEFFFFFF01000400070002000100FFFF0200FFFF0000FFFF0100FFFF00000800FDFF0300FCFFFEFF050005000100FFFF0000FCFF0300FEFF0200FBFFFEFFFDFFFFFF0200FCFFFDFF00000100FDFFFEFFFEFF0300FDFFFBFFFFFF06000100FCFFFBFF00000200FBFF0100FEFF0200FFFFFFFF0200FDFFFEFFFEFFFAFF05000000020002000300FBFF01000300030000000200FEFFFFFF080000000000FFFF000001000300FCFF01000300FDFF02000100FEFF0100FEFFFCFFFDFF0100FCFF02000100FFFFF9FF03000300FBFF03000500FBFF0000FFFFFEFF0200FDFFFDFFFEFFFFFFFFFFFDFF010002000200FFFF0000FEFFFFFF030000000100FEFF0300FFFFFAFF00000000FDFF0100FDFF0100030000000100FFFF0000000000000400FBFFFFFFFFFFFDFF02000200FDFFFEFF0100000002000000FBFF02000400FEFF0100010003000500030003000000FEFF00000000FBFFFEFF020001000200FFFFFFFFFFFF000004000000FFFF0000FFFF0300FFFF0200020000000200FFFF0100020001000100FDFF0300FDFF0400FCFFFEFF0000FCFFFDFF0300FEFF02000100FAFF0000FEFFFFFFF9FF0000FFFF040000000000000001000200020003000200FFFFFAFFFFFF0300FFFFFEFF0100FEFFFEFF0000FEFFFEFFFFFF010002000100000005000000FFFF0400020004000400FFFFFDFF04000100FDFF0200FEFF0300FEFF0100FFFF030002000300FAFF00000100FFFF0500FBFF03000100FFFFFFFF0100FEFF0000FDFFFDFF0300FFFF0000FEFF0000FBFFFDFF00000000FEFF0100FFFF0200010000000300FBFF0200FEFFFDFFFEFFFCFFFFFF0400FDFFFEFFFDFF06000100FCFF0300010001000400020002000100FFFF0000FEFF01000500FFFF030002000300FAFF04000200FEFFFFFF04000100000000000100FCFF0400FDFFF9FFFEFFFFFFFDFF0300FFFF00000100FAFF00000100010000000200FEFF0100FEFF010001000500FAFFFEFF0100FCFF0500FDFFFBFFFEFFF8FFFEFF04000600FDFF010002000200000000000000 -ct = 5EB8C7928BC405FA7ED596A47965E48203E9581AE5D503D3F88BD7B633877551C1C96CDBE53D7E029DF868BCCD7273C00E683850E1FFF65FA96F23C0DEECFCC91C886D8A354BD51B72E7025250EADCF82FFE7DD733202B82A05FF53C4D4629176E55CFE4B02655150A854A7E60275EFA275A4DE92AA3B49DF51533F73C242E24B36AF32502253FBFDB7E6DC9088A6AE4C408D06AEB63BC3EC08725C891161CBE2C8F7688C2C14763D8D6829DB3004FAC7EA38E1B074113A572A7282F4F06F820FEA7E4A4B388CCEE47A90F82AFAD28CA42B69634041D2248B24FF07C756B112E23B51EE06538ECA0BBD9E3507D4748B4822C8B48FB6F59D5D11FEC94B7F2DB9D3333719461F891E4B9ADAE7FDEF0071545E64BCF9844250547DC225FC3CA75428FF5CEE2C2F0D326261689DEB48F933F221AB3446446420BBA908A04C94EBFEE4D6D812A1411346496C158CD19466B2808189A4C7508A31067D346630B7FC84C46C1D315CD9AC5228EC4E0EC167CD680B5D3E5F13B32A1101BD5D5A6B1749412148DE33216FBECD68871E6EA3C407E322756A2398182EB3A43C4C3A95E48DA444705737F7ABE54FD3F70BC65B23CC2BF956BE2ABDB2363828DFA00AD387D3ABEAA75FCB959A301F95A65946D691F627E66E722BB740ED2EB9A3DE8F03AD4B550CC989B853C17101E7D6EDFBA4C51A3CCA16B7BEF9143EA5C19672AFC50A0C53557A76F7B78311FDBD9EEAE5F61DB98ACD66C3E0B247A3151CB2F2E8D18BA2F68AF0E2B2A8EDD7FCA50CC49AFE1A3B7FDB1BD74A1EFB05904AB9ABE8A7146AFF79B49B89E4FB1AC727CA9EF7645665D1879DAAEDC56489A0750A8F32E09C2112256EDFECE8C8ADC767AD6DAA36BFA084134A2EA33CA2B47F3BEACF37A35EFA740284D1AC961580AD9423CFA5FEF844AF35B206BBC76F8F5DA00730C20E2BD7883B51B87F5FE79E16D5C291C205D2C1E0528827ACB31395D56FE0B24B69AF2CB44264D3D982722ACD7E31E7E8A2523F61FE402597698BA0F9C9538B1D5D32C0D9F35C1CD43A65E5737D5AB6DC1FA442F2CB2A24B03A757A131C37F0FADF70C814339F9130F7F3F51CFA4A9BB988DEF8EE7C95BF8BCF5DC47D04487A97A2925D4DD9F7E670D8B071D4356412D26D800D91786C2E872B632D4DFDD2FCD9B7E51E5103541A697B439E720702CB199CF7E1631F2E15B063EF168C9E560AAEC98D20A7DB44AA29B4A5355FE6F3B607157D3EC6093CD3B5FA3666BC6AB31441ABE45EC5F0190F9FC51B0FF9CFC6BF947E4EF5B42D6B7FEABBFEA9023D5C418A97BCCDD0E6D57A32092B3838A435931B346EAE25BED556C2393FF27B8A0AE9173AC3F6673383DF5E8838D098B23543CBBF44680FE9A936C0C767BA289F83BE36B139EB3859B72A0D363B6EC0F527C3F30CDDF9B05234D4AC598D15DE1289A74C70D6CF41E2EA505033A703E28C9EC977DF8696E9A960090EBE58928D69F94713B83069C5668F3B70A0BA686681139CEB8FBE4EDC0AF3D70932FACB665489AC4CC8E2FFF99588397F32D39AB5D097D306062DFF2438166399782C61936C725AA1471CFDB209ECC4739C35DC7B5F05BADE293A0CDAB0024630F0B1FC4F4F0372FE5B2F4A16502B380CB353C3D7894E50A04FF67224497FFD80ED8AD9CA5D31579366E3D3D77BB4B3C9532D23A2A251058C21BF522ADD227F4B132A77A9B0C6AB17FE1FB0850267B7D29482200FA0A66665D4A0A076F01BCE2348214AC59D02A320D5F8DB4438687ECE1C2E6E25B94EC2BC84BB4ECB81759FAEE8DC9EF2B0B8A52E04C668B4E5848A5708AEC7327C640A475B7F3E4E852A70415A9CB2F08A844741DB3F4C59B176EF4AFFC89765165687387E122C3EBB4966A6AC77EEB8DEAB9D32073E6DB16F0EC87A66844F58CD57A67B13AE71A8AAC5D06358AFFC9923BAFD1AF93F39FCD79220FB36428731C4813C8BB9B055D764B5834D3059745D47B421CB2A67E350CE5F409DFD68411E22B8CA33AD6039D0D126355C92A3D89DF1FA6C049F87061A8EF8C739DE0A3D5DA12AC4E8612BD05837C689BED7F5684222BE695D4D696C2DDC750A6F206AE36BDB459CAEABFC8BD265BE4CCA2F2CE6FC0BBEBA09F1C4077159275A55EA7D8D5C287D65119A6AEB25C1F7AB04BB06702D8B1398C42A471FA861B8F24E6E6A787C9E357CCB102689DE388FEDE1F49D37618A6260DF72CA251A71EFA7B557997226BA7C03F714B8F10B8B7FF0FE9E0D9509AE42E8AA622EC2967B3D19247FD5F01CEF5133CAC218977599C36BECEB9D8BD5C9B7B8847FFB851C29B02DB24EB6D2F2C72E74725C38D87B5E29E3B8B08DB614318B643B09FF713493E42D49F0AB3C3126CA2DAC32D0F457B7E0D3A90AEB76BAA3C3EC73141DCB1DB54E86BF9A14AF083317BA1EFE23F0724EA05C3375D81A01A1CC254FE139C2FD148F08D6C0AA78B2E5742239A3D2D16D5793699ED396AC9A1DAD3757018D2D0ACA110FBE80EF9748772937624AEE4E536A0B0CF0CE37F6025C583842D7582FABF857A8143A202B0B946F10A469B6060C5BB7BB2F1134D11114C168D9B85096B080E6BEBAC8FD374AC512BE490083680B4681350EED4165946FE67CA04A52E9FDCD6C1B17B66B79C2F96B8111A84C86C7CA240BB502F27F6A75F87A3BA9CBE3DD0267A8567FAEE7BD9DB430FE15FC8653B0F740B8D15ECA607FDD54FE7B5A8F9FEE7D924A4A9CAB25E06B6DAD65E8A6467C3EA58BAADEFF955386C5E8539E1C4E4D6A86B33996C497CF75295D3DE696B7BFAB7611A1BEA3665E3FB2DD7E44DFD3EEE250BB28313142C64ED78CE9A3F5BD3B36449BD4FEC1F2A2D9A92BA8D589A52A488A8FB4BD3CC1D00BF370CF130E9156F45D2AC5263506F7D060BCD20FB047E6F75D087DD544E57C63E90F29BF723D36DE3F0BF32B84A6CDD4F5AFCC47F4ABCD1F3C326B0848184E2F3DACC2A62F027CC7E648391A71003441C4FBAF522880F65008D917019C569F051E667EE5A8E4A75C616B1734DBC1EF563B0AD74966F196EA17B9EAB999DEB853231A72137DCBCE17D4005919E80D6DEC678BEAD7F79D82EA09D257E99F2F5C6B427AC77089AB4D811193040FA235061B4D103617B52D40329B684DAE0261F4356204E365166199A763C49E755C9BB07B605B0B9F9F120B00C8560D3E6DFE719F4662F675BB438B57E202461064EA4336F1E76FA7EF45A32967CF07683C7F86B7263AA2AF8158C46255A9C7FB5EA7A55EEE9FAFACAC28651DA9B9203CC8072102C9184E2342398076D60D35EDDDED7F8ECE0340C31533D8FB6853E7DB28350570F2A402811BF9B87F7D4E4144AC9E8A2FCED7F306B83206D001197F9E0F544CAF6C2BE53FC059FBFF1E6FAF7BE6BA2ADF6A0992CBBDD8CA38FC35E5689C2FF29061A2F0771F0ADCCE9596443498F7ECE124080960DD5BE973F530281EE44D950CFC0CD64BC4211E19BD7AE406AC67B93C4F25A4799E77002F1C0D5F2F940CC87FA0FC77735C266E6CEC3D4C40520A5AFDE1594E09FB1AB5AE4390F19AA398D9E6A5EE1BBF2801186C065E478DC6FDE2C5874D61762C46A33F7B0982DBE54A90A0DFDB22590B47CD4C9D575164D75F5CD5652C1AE5772208A9D98DF1AC98F61B16A949BA0D7C3EFD1C720ECC2CEB4419FA9CB04C8B9EE231C1C41BA86B6C5CAC385DBC11B565B3C3628EF9EEDC09C188CBE06CB19DCCD8D19921B144DD598C58DD1292690FBD061B207099B4CC2DA65093606F00C775F79D671FE3C933FBE5107DC41DCAC104544BFEB8059F7F29997F07996BB91C6CFE5B47BBD2F9C1E45891A0651889CD6DADEA3E162E8B98C622FD0B7D408BE7271E637F9A4C6741693215FDE323D0B652129D34F085C168EBC671D6A191ADDBFDAF24A882403F7267268F5DEC5E53B179C5B9D8EE2BE9EEFFA659B99E72A52A469254C794FC854EDCE3328190C9E8CA4B55F1F1BABEB97364FACC8CB09AEB43A0D0D30A45D5C8EE416D3BB7CDD7230E4C824394B36E325D0EED1608BF2E02D81C7A9018496C14192935A4E4DA9AA552155AFBFC8CA26FD41C551329DA1E7B71A4319AF420754FDD35520CC7E724C7BE9C90ADD015F6DCA122371E747156AF9774DE7500B430E909897D7DA0DFCDFA32916805BD680423B8CC46C6B4B86035D04D8C63A8AD4C4F054438478A2067400E4BCC55642D09FBC8847695F6B947491717EACDC7C866E78421F441A69AA21DC834CA2A1A0C7B9F60BD8EFB733C2EA0C70DBE32910F10121C53398ADDDB72D6D3EEB37EBE5FF1006BA39E01E1B0744E1854BD80B5CC5EFD77C31974B6CA9F976864AA0A338475FFEF8C3B397770A11D6DE6AEC944A7A9944CAF99C1C5973E4242F07DF0E09935D1758DF482711429829046130CC6FCA7C42E4338A99B9C4930C9533F57C2CFD0841B43A9536DE1DFDD65AA41845B3F3751F8DD3B8C5E19B0DA88A942C8DBFB7EC250776AB53CDDFD4C7895702DBDBED713097E44749C14CBAB73620D4187C9D77BF38C6405013E06AB3F4BB74177E28EC5DA83DB628A579C936ACBA011B6F2DC30B420B7DACC2AC40F4EA21F0240023246B8CEDFC95F7DBE98251BF4F36A114E4B3B5CB41061B50B3479AF209B8BA58B03922D0ABC1E7FEADA9EF636C60D8B96E43D3B454A67E80DDB9C9EF0D98098CB3A4A961ED86391685AAF53F68AA202CA22D3C5A423366844463E122055E2AB176CBB6BAFB7E52FD0DD2980FDA2EC399A5B20825024ADD5C4EDF4B881DD1157AE354411C16C18940609878EB1B712018F123CB59C2B485A24193AFBBDEF29A8635CD33B313D96B5E76D8030DA77617AADD23AFD15D57B97C4F674C9ED7405CAE7FC6E3D23231D11FD563BD4657520B4664BF308CD78E6128E756C98386CE850BBBEB36B8C052DEADD4C3B4A022F15794A4F3F785B8784288171D06A7A67A314513EBAE450298B3D97A17D0CDFB6F8EADA2E10006CE66B5A29A5A42A15EA2F7684ED487D02EBD2A6149B33737AB54984A626D15571C56EF4627C5592214F1C4D1EB791402670E9E2E7E5EDFB24880B6143E3EEE14BFDFCBD4E8A6E47593DA326FDD080D53F5AA286C1F912DB71BD9C8C6D3BFF9145896FFB69A66FC423E949884FB1D296ED5C0DF9DBBCB3114D98ACF9873E4E744074A9C1A310C12F1A8741FE017CA70C2B8D1B212C0BE76D84CAC63DA705F96B49AFC44AF0D15B6248DFF8A421E122C95544A0465A6EAA45AE55E57FFC3305B3A13340E3B26E936EAB63729F9BF05A54A7F2B96D38AE0DE639316EBC04EF7B25FCFD83A18F936F841E26923AB61D94B31AE8DCAB3223F1024BC15656A957AD8E32DF1CB89967CF92E1518AFE2CBF8A33F07ADBEDF76FB7D5DBAB6A7C2A5F329931077E1F67E58DED3ADD16C8E7D0EAA2BA706FED991A4168D8D890A1EBFFE65F59E18A0AB350F1E2B796E5E14FFAD6B80EE46D150258285EEDE71491948773231BA938C65AD728E824449A663860CFAB5EDEF2A854FBA79BAD8B48F8949D383696D0D62BC57CAE7153578DC2075D814DC9C0DB97437D862F664C3BC2599D7DA4A6C2981E2A5F348BC70D233EB6615D42A8074226D87FFB78FDD97799988FDF08C5CFF381C64B75414CD9FC8997064256619D86FD79E9217B40382CA12B6E527E35534D702D4E7F56B1774254412EAC853CF9A7AFB084DFA19B3FF153F52D3B017E91AE98B891DCF7E35C4F7914007A94FE3E0C8818F377E87AC6F141B9A9DC3AAD0708F0B8FD4FD2BE9C6AF2F272F8BE5176B59B2B9929E775AD4DE95DE858874A66E02D0013130C0A308CD60CAD753516881908FC03885902CB4CAA0599F7FBC02266B3799BF2183F73A555A8E034E0AF50D7A30966333E164C05EBAFEDC749738149E1FD3A2FFE401050E926CE6BF9EC73B13304F3875773647D01BA25548CF83CFA2F05BE036EB0163DA9FB81B87842B5311C5FB5611B2C3FB525B7571B3709FC49096F55644818FE0160B6F764D9D0C114A33C4F539C5BB3AE69EE195E0D05C938AD1841F76B49EB6FB73DA16FC604F875DBE12CB2E3A3EAD56ACB5D5D9AE75AB38A557EBF5516151F4D0DE6FD8B850BDF3C73046932F6B44BEC278A1E4F34EDEB8CCD1CCDBCF2EBB17FD536A8FA37D6A1F181BF4878137D665B67132BC0F6CFA604B9389E98E9E5A3F372A14837BC21ED8D4A4D293B23E5B07ACB348F2D44EDE55FE0AC9FAD2A5976DE7B3953B6EC12520920D96E2BC58267776410B6E2DAE9D703310CD963FB2EB8F3AB1DC398C19568451D4A8DBBA0C70A223CD30BE203E682262B3DB9F958319BCB20EE66ED7E7698517CFE4724408502A04BE63741C2009D19B97E729B39FD92A310891728A004B8F4DD96F063B4036880AE7D2CF1DADD00479EE1A71944AECAC28297F156E31A77D2B33F967F0189263C9E078D8048D37889C6BFB10DD5E7DB756816DC828B736858559CF463F96FDF5763C68DC0F28FA5B882F605AF80B5A11D01798CFF3AEF8E4A19B45226E3EF765DCBF6326E3F8E08898B375DD667B9AA2F3CC783B99B6961360A3E0D24FC8D864C73B64F82849BDC19300AAD907E0B1AC30890417D7BF06651DE4C571EDBE0D124CCB8446C9D5DB80501A5920EAD9B5A8A766DD001C4ED5517C9B10E09DD8656319CC0BE5539CADB2FCF75BACB1AE2ED658C7C7EAAEC81F67A11ED60FE30B6E90EAF88012A99F3C29AB02D154BBD6090A8FCABD501E75190215544727E3C71687F6703D93F1C020304090F34D724BF9293EB9AC7C9FB7FC3FE0BD74474F26D95E8D37F7D95EAF4C3E5005DC6DA6992F406A31017D1357910E902C2C1845BAFDAF1873DEB455430D72B54FAEFC920EC98B2338816870E85751065ADFF76BCE72B6355FF7113B0E60996DD466DB31536E3511993B669FFA8B5753D273B9D14A8171DE5C934906F980BFE98556B757C596B02C08D0AACFC759AA42E749E02C881E4AF9B79865BADF29921AC3DB8035CB3321940E3E2A196DE07B89E5CD865A49D23FD056A874CEB501EB5827439B4024DFA67E5C1FB0E13270212EA21C9786634DF3382DC50313D9C6224B2EFF772884EF0D90297CAFDDB39CEDAE6A282BFA8E3CB9E157F265B47EF6BA70C67285075BD6A524383D68354D2D863C6BC2A6FDE5CF07A0305E9AEBDBA9E3868D663612E6385305508125AB97B3955673C88A4A3913667D98F779BDE5E7418310152D8B8B561091A245328B24BF22C73F8A79E7E78384B6C2ED48304ECC4B9DA88CAF819A3A4D197CA803B9F4D5DF5F9FB8AFC8FE6D2496FF26F935D4EFE8213F4C2EEA2F39A597E8E3BCA6BC94B7694C97DD5DFE587A6729322DC912D2A8B336D0AE82001A542CE2ED0E5A2DB18B30D3EE7D7684B65EA1C10978845CFB681F7E3FFE56AB1F14BA91B6859B7A4AEC27E6F6AF269F471C2BE6AD57A7CE13B9AC146A7A65D5B812F67138B9413A35F11854904CDCC72704FF2C040E26AED081241D15860FFBBD3236C4F1450559CC96C35205422674B4D3ECFDD0A882092505E23EDADE928F9BB09D6AF1FB9EF82294D9C95FC7AA0668EBD6F2218FEB75FF89564BE9D11ABDA8F57A28D5E342324E6C2CE44B64B68A700CFDF259DCE59E336C56D8E8C82C0000131FF0A900C4E8BF06F601CD4F3AFABEEF4B958C570226D82C1B099F8B60EA01092994AA8B9DAAD289ED102C2771B86EF667FE4DA07C2E5CBADF04DB35DC3234BC497459930505E27BE44C0C4D6CB01981B3F06CA6C80D5A2490636EC1292426CF1B8B1FC5DDCDA7BA0A53D443659D1B095E907189086B12803726EBB3F71ED505BF4D7CF6E925FC040E3BC88530008417B5057C85E557DA91F2B5D0B253EF1A6D3224F202B37DD00F47FAB4E5159D6C97F563444824E57B8FBE21EC4A2BBADC90FB7BA26774F7219E75AC29E40D84E8974E535455910AB222BA7FA5FB26F42208D4E02703108861399C1A2FAECFA4F4D5340987A85FA61D84FCEAE8BB848A0F12BDFDE89E6F6C4362FE4CD6A3DF50DC9B46B0F8CD32E416E15EFC8C82AF5C48E32CB7163D2CDB63BBD14818EFC61C6C356D7B93E906FFF7FE96A8B2B2031A504662A78230B03073C78C702C316CAAD2762411B732AEBC452E216BF055F449BCD8B230DFF5D97C12FAEBD2E4F99F6F869CDE70881C9F0A17D2C77208ABBF3FC40310A0BC43724FC4CBE9352109EFFED9655D3BF6644866BA187F44E75A9794409DB2F171104BB3B52C868DF0EFFEA290296B84877CA83B706072F2FE28662DC83BAFDD616CA92FB9D08C77283584CF441435BFDC592E30704BAE206E7005AC715FFE1DE6E570D330BE48A0269BA07CC8D5042FB44864671FD27DD9B9B2A9323DCC27100D2E98257E71A81B288031ECD55E39CFD50E006118745FEEB6181318F215D2FAF6BF659083902064173F52D39162BB6655500B34B6266486EA35DE71E0424402E80DF54C081326C43319EFEFF16B9D8A416D199640E6719EBAA1FFAAF67A3F3AD39CC97102396C6092DEA7AB595B2A16BBEEA1FF819977E4D3090C7E8887F698AD8197BBCE79BB07F90DE760E01898B3E0A754859B8E3C5E54DB6BABB254FDADB0498D72679E19DD75C84384F5808AEFEDEC45F9E1C2761C6B399003FCD1911EA149C75F2E486C895C839869166BE34E47FF27CA4C0C55FD45EF049D7F915C8E74319BF6EB351F6B6B797830FBE59E866131AAB295BF0A29F2306F121C9F437FFAA3FCDA11D47EF425BEB20BDE5F2E18AD7C9D370D4A19F2A353C9564C2EB41E0371D606899FB6E0055DFDB18E4BBFFE7442BA4831993820EF54C94AA15E1F78A21870964859531B69D24F81E193A0B0F5AF77E6B49E49EC651EC16C6900EF24282FA2E452DC0ECA70E1EAF8F9F3ABE3844AAFCA17DC595F7FD913FE050DC1BF080D2513C8BB937282C9F3819CAE036AA967577B6E1BC350717BA1CEF655E5F2ABF1F1E4D3B6F8DAAACFB03940A3CCAC9667B085A160B1E49008EE70E153B9BF4D671E7ACB7351AEA8197E2D8B2DC27512D71049C08BD3DB62F2BB92CD34C7B450045383F903A76B8B8806B87D66AE7262EDADBD6F745B458421C6AC5E0E9C03DCF2E9B500448243A86D5555C46735A0F0C41FC249AD61189EB9B033EDBF4CEF449157D0B25759A8CC47BC397FA02C3293B1F9A3F6314AA6FF008A308236DCD9FA12EA6A471C83B148C94C03E08224FB76A89C4EDDF6E20BCF0728325768A77E1E9B3842B1D8BA6686E3DAEFFAFF2BF5EA2B135A06CC448547FB9A21BAEEF8F33A77F1E6A51311F729786AD94A4BBB5062786DF1CCB27DE7E776D6B1A6E0CAD0FE6F86AF55D9A3D002D8955861977BE3BA42B1E4498868634199BF31C21A22D3AB80F3EB42FB8A6DEA9573A08D1ED9F3078FB2DB93026B853B0B387DC78806280C1761BA05FB4252355FE54E59AA0F063B9A751537E51846D7FEB6F72345595EC8520A0718D0887CBBD3F29B89AEBD94F5B85505DC6508ED3BF957CDC64E09A1D311E4DBF7005BCCE3ECB8866A7625E84BBA2F3144003BDB5C3119B1F5C4173C0EF1D90A7168AADBE5B930ABCD3C823059D15875D2E77A01DFAB0E450112BFD586B43A3C696BAF776CA2FB12D6AEC0874C0D2DBAAF6A0D2D1F1FFED1137A6A20DBF5084A9FB787CACF2F3B3F6CA8580CB042F6AC6913EAE67A0E4095AB753011F9595F4F82208E4D020F3E1B3740A6E5BDB55C5FB79CE23561036FCF9FB9AEA16502A37692C2101DC843CA9A844211D4E0696B5F5A8EE91C804CB564F0B61668321E687DA937988916A83A1276AC817AF19E1CCED2DBC218DD89894FF32AE47DE08DF8E88481E6A3E0BF963D7A318C723FB96D186E2FC52A293AEB71E751DEAAE80255614ED5B69633D6C36A769C96E3DBCC1FF3BBFA7EA1FE3A48CD1D501D2AB0A8030A8FA0EED98B1A98FA9B8E7C722755222E10CDB5453CB484DDCB74089F9A2DCB5440B63E017239741E4480C4B181847189228B11E8CC820E78EA3B79FC4A9E9C15F9AA501DDF0ABC5EE8BE11B151A78DC16795221DF5EDCE095C6B2036D69223AA3E9F81922C71616D266051FC12FC0C8CE7B69E940351443D927DD4D999D63F5428D978661BF76A08EC7F4D9C25445BB0093E899040171E817ED3A491A7788AA9D5C33E15EE52875E4B321ECEA16649D6B48C213430601E635C2B86F6D275521C2421EF30D19C2DF7489E515AE5558FFC8AE7F39B82E73D9918F8DEAF120F14938A20CEB8C7D0F97D715A854ED601F00697E33DC5A9D93B606E2B270B68B492152D834E5DB120D4FA72AD9FF319D6197D5008C8635551BFEF2C059F6D3BA53DAB5E5C5ABFA38299F033DEADD79523B7DCAAE50BE1F3EE859EF53D4D9554A1BB3C7F462461559765DC56AE8DA176AA54C39AEA92A962803C5E20CD0DF63E8B32E02D0355B219C29B7200A76C4434E918FE09FBD2AC7F59A36AB35F5822B69C5E1C4CE7A2CDDAB16E1E9926967C19D6E24D21F1214826AFF82878D3872F78D1AF4B93C90A9D5A58A18FA559A5F8B1D7A0F5C98AB45D3C3E3F17C99A983E8C72679E828BD1530340501CB29F624DA07CFA2DF58BA2FB8A30BA49572BF23A1093997D71DEBD0738CCE4D8AF73A8D4D842E84F76871B610F932EE71D78761F3B3FB9827FDF93DF65211031A94446264262BDC6D32402BA51E8695521800CF0FD0FB0644E40738ADE47D7442D861FA23450099F07E199952DDFDB9958524848C5AFB4DD7DED4A0EE7E7780CB3EDA13AD50C08CBE43D12BC63110D428952326267FA7E0EE830883013DC283151E9631B4B290C5D76AD36F8E062897CA701390C1FD94AB126986CFE3A8B3431546A467F69E924DA34BA66A24066FB71A195B592200F61DB733E5269281F8B16CC08089F0B16430150074260AB2210E801445AC6C54BCEF7FDC26B575EBBBC6812B528B980B4CE8D3989B719C0B95D8D4CE35494E5AED44A922EB3C3D9C9A477F6E7E8E1154D977B9658A9DCCDE3D131266A7DD3EE88CA9E5DCC925A5F4A9797C9122EC72A1A168E129A326053DE8A1692A660FD09493DA05A366A58BB4630FA84F7A40AC8F24DB970267DB46B0636AADE1B28439C5C84B2E466BBAA92CB387B5DF47BFB0A5026E0250ACC8E9EEF9CCCC5860EB94B807380D9536DCD532F662A2E5CB6DDDBB3C7979125AD2919E8F4677766B830E8FF13338BF40D4AE3E09F758DDE3CBB0DC130554052BAF538F51150EA74792C7A7DA89FE2A6CE303DBFFF269DE14929E63EB197EA610F4D7AE44B64F441126A0622AD4ECCBC65F8429FF6F1DD1F10C2E940719418115BDB91BDC60C2DB8F4A7466690562B9A22FF993DF8B08DDA611E9591932DACA0E02E4F063D5CD4AC999A795E703B90BBCEED2705B61C8437D70AE42537CAA3A36776DBA4F948B3291A7FC6066C5C1FE0D0506CB15EF0A11BB32AFD14BFA483B7FC0CF683B241FDD4887F79DD429EE433FC828FA41A9D9A8DBDCA5B14934C9C4BAB29109ED9ED8D50280343D3C88D358CE57E07085E7524A860F47784C1A593D722B16305EDA51CA7330437DE57C6E40CEAE1F1C3FBE383D97E60FC75AD1ABBE0EB083F091C14AB81A2E078549D3EED510CB80C274B9172D8047CEA158BEB873EF0F154FBE37D6C394B9A2FC8F4D6F822050B764C6F24D14AF9115E8E8FCA13A991B7963E83C9BDC6DE2C6572581D7640F534ABBE1B2204591778F0ED9AF3E15C95B614BBBFDC9CF45AF1EA0CCE7C5A9FB0173A22CA4D1E14244E7999774D46700DF7155F8799F5F30F80F19ABD95039D46F4385CB2079560E73ADBB420ED25C371A63F9CB487DEB2E6DDE5EE5D34C885DE80DD8906540029D3F262259B814885761AE534AF07F40B9A2F7DAA11815EEA2239DE27A7C03122D164A95C8D583277CACCF4DD2746A4DFBB793A5314834FE2F0E35CFBAB818F1FB382AD647864728BA258620D766BF9D68C49A89F410C48A36DE9DD8CCE8EECF665CB7438BDAED66CF4E430153949F8CC0E1897DAD04743FAD8469CD7E32D119DA4E775E72FCCAE875ABEDEF0EA896C4670291224642C9F0E9BD3CC9D9692BBB700B5E8B6F227FDA396C007A4E74AABB3BAD05A915C91A0F251F73504280433C97BBA99307263086488EA8A11835F0B9E8C257FCEB4172B9C45C7C9B656F13D3A11FB7F6D5479D7E26E207B28EB2D71EF52BB5607655556CE3EE11236948BABD8D7CFF0F96D20509D592B4557F9A24FD6F37149C057CF43F2B93301B3A747E71895367BDDC9D923089D29491E568C168743B4595177C16EF39EEF3CF4C930491907761AAB9A51595C307F26714A7EB3B19C4BB144CA44323BC8DC0B7A4ECD4C1C1BD3F29FC1600C4168394040E0D446FD7D23711A0FB44A24B038113FA196162B2B4BCCA59C1FF12160B03328B7D2C18CE5B2CDFAF9E7AB7415710498483D72883F3C60380196B0B85EEC8C9DBAE213721CE94EBEE1487BBFC929505383B6B7271A3903658AC02CFCFB62CD8C276D0F751BA6A1E2C6438D7D98D61636AAB47BA340A20808BE8A14852D53E89EEDF61ED3A31B9992D89C820CF0235DF927CC868467D159B003DDB9F5FB7343AD07CBE29226BF957005713FEE580843A337A1B1575BE6232A563FFD5D440D83BECFCFB0A303E2FAF2D1A41815D32109F19749D05F5CA031B3C67968706392F3F5C157B468AFBB1E52F9751453DDADE3FDFF7F285A6CAC97347DA0DD1FFC8ECFF8F9554F84548A3A7CFB5F7B85692B7691A9FED506DAEE8C0B702306FC97E3BBE39A4FE7C625A6864DFC9402B4A04FBF5FFFF2F4D9E425DC1081C569D9EA1BAFFA9ABB90FB2808DD9360E1BEE01E736B80F87B30A32D9CB3345F030F4824513D7EE8AF61B568A8837D26B075AC2450D9AB482DF357EE8DB750BA02BBF19951391C57F28A31399599FA2FB652E48521227ACFCC16287526925B2236EB336FC9923483C68D11A408608E78DA8F6578A30C3EDCB20F66AB5CF6B9DDD9291D2F81F64790719A875B302FDC6CFB0679436B19FAF534A905084701F47110A2FA1F652AD35C234316B0AAE0E9411EB5D7550D66BAC1E0B0F681447405F320F7B031E0355EC6476AA21BAB22012F6A74FC166CCB1D53B4138A4E24D9360085A42D59BA655C8BBECB614CE78482E218BEC4FA50811543245B3AF5CA442D7F6D950D5D5B87B3CE16A8CF2E078D11A3D8B3AF6772B4E5487F45079735DE3051DAB9B2CCE4F86679F83123692021B2D63A279D9C0628E4D6D2950F37E0DA055B5B12A86AA10CBC48A7D44C71130EF2E7A07BC315BE4931AFCDB4175A1A8778CF9FA646357A440EA375BDFAE87D59691DB1647AD1CF69D79912F6F026DA52F5088E602C88C3EB40396286857411382AE7AF00E68FC44310C40B8DF35B8E434CE9BC50EE7190FDCB411607DCF5BA9CA5EB1EAE839AF915A04CEF682B52FC4E82D9D27F49E4572CD45B6451FED3ABB7BF9D78DDF29A49F5C55B706DF429AFFB00AF5871E8D92027213DEA71A8EF565EA54C98891007445DFC47B26DC10852A3AA439EB52A5D14B9FA8B8B7DD7551FB61F9B9A6DAC4A4F807B64F89E2FC9A98BC21F923E98E2E155B339B1E6A96DDD5CD2B39B3D7D2A67C1200CB8CB8AA39C96D42BDA035665FEED808F1CA81D11197A66EA19D7F5342547EB67C8C7BC77E881A573239B5907296B61B3ED71A115DC7FDE3F46538839B220EA7E2A50DE7D0206E998454626F1DC15F07DCBB7580F5B8DD793685E087009504BB37F440DA631EFB8FB2D9F00E8D81DC6500F585CB9F4E26FA0516F337F553FD80012FBA3DBBD399C538307CD10C04A0A4EE83E4E930382AA4F98 -ss = 4072E222F9803943488F4253C12FF06F +pk = 5E41C63CD4A9FB576AAE6D989B5D9D8C857853BBFBDD69CFD074FF0216B807856758E17ED9D70DD20DEE212D9AEF0BF158CC440A3E6DDEC1C82A325663190059542057BCA0EC52D2C38B177A6703187064B8E40F19D69214A0376A3D499A7FE2941F84CCD077437A7F0F0713C542FFB499672F07A85A5696B2DEEC2A4FBB31FC16E552662A9DC1B3540C06798BAFC45ADFE2CC468F439BE2901A8C425AD018ABE412A37FB557BB1EE4074A42D3E30465A43B90633C45CE2BFDE2AEFE376F0942813B24AB61C4C01F6CEC9A19D38C7E3E9C51FF41675376AD8BAA54EC974CDD3CAD293FF3A073B12211264E5C46D5286E033AB72FE1EC71D801E22E2E45371C21604EE9933A90461CC7AB585231D9C4305829F4B5CA73E0BF9ADFFED0ED4DED9937F40E44C833E01632441981D73F2E65EA5CE1C7516D4F380B9FF5C5819BE4D22F4298D675B18D7988730D126CF9847ED96DBD8CE7BAC0AB1933D207C189829D687C0D9254BBA8507C7D00960447CFE6A5795DE9980EDB4AB20424FBC0C20B03806A09191F803E567F88BEDC06E8F0754AE6A46D98B913A1A7DF9257D831F1C469FAC8C26D41FA9ED5FE2B8F584A037F7F6475438B864BAC74039BE6828C6E371CCD7DDEF8EEAE1358534A6105C4556765357004C91046B889C0FF5EE09F64E74A368D60D7A12ACBD155D4D14348C6DFA1B7DF1F0EEB153C5F8EB34B8D05DC9E10C66BA0FBB23DD10B0959527074C42681098557E87CEEE26188E3B0DFBCDFDC98EE40EB45EA104CD9FBE79EFB2CDE9AADD5E79F4B59200B0288B0BB8624728D4D9465B2FEB0AC49BB2D5E2703D917534272A5EE3CAF25210E09123B579ECA7136A7A58284B9B766799DAFFFA0EE5F0F3C1A4D00E38AA72CD247547C176F82EA444EA4E23B8387FCB8D6C881970228C156040D0E1D89A8BAC917E893AEBD2E52EFA825AD4052445BC0A42F7398A121774BE10CED9A278E9EBE5F0640340E02C5D6F4D19D798BCBC312CD8052278D9B40B2B0CB1C59B257A368C000888E267484D241E783C0BCA84E9139EAB16D1FB343EBC02C7C5144D0DD8D47999DADBC276B870EC35E3B919035376EE989F9994636BD7A421946A113E1120A1A4BB9AFB495AB6DAADB6CE52B8A700544D1C37FB630C07BB30A99E1EAB46BF2FC03F4A3609C1DB2A15497A5CE3B6F9B6E18D1341F0F1F4602D3A53D9F80930DF7CB0C6019ABA9C37B0644F006FD384D96BBDCD27E0616D8508F258F862FCF958334F1FAC7EDE4533ADFCF4A9EC7B3BC84AEA8C0DCBF044B312DC15C2DD673EC33C2F74B4B659CFF6C63E09019616B412AF583AD2724C0E8C24E824CDE2A095FE10B4D8F30E613B77ACED6830DCD618AEF60FB3AC3BFFA055B73790D2817C0F15A73166FC884E539FEA9E7E1F39FA699104D71522DFBFF84F2E63ABF783EB80A23A7EC3CCC9504B7408B1B1AEE41BC6D873652019CD87C68D127878FB9DD6818CDCAC1618CEFCE7799B1A20734BB951B2AE8B38A5BFEECA1ED2E06270EFB18FD2E68F80D89D0FCC431BF8D38705B1C9143A1235C6703672E0C626DAC4FB3F2DBE9C212B8EF327BCCF423AA47086865CA46C421A0A421A46CDAE1AA1FF1C68B242A96341C95B834F2B98B073E6A796A4C644071022B282670CE74EEB6CB484F2986D6C123E7A58DD3AC36A2C10951BABEB00D7181A682177B2DD4E180F43DC3A60940BDD411F70BCB32A11DE5EA84B13A91E1F8D76E2419525ECE95271F3F24D687E116B72E3D9781DB894A58FB3262E6AB53080ED3A14CC1BC0B7DBFBC3AE4992D5E5FC2826AE6C83E31DD89EA31B9127D56F61084B70399360189A2C9CA2472FFFBF8B5BD949C2C5060BCF3A2C52566D9DFBFF5C43AC3BCA6ED71BD401EAEDBE1270D2395EFCB7C08452B3E52AA4C4C489F2A981DF0F4D253A3420CFB193EA8CA6F574E2A9EE17A98FEBD36F8DCAB914E143484E85DBB583542D40666F28ECF29F0A25F335DB012A5D76A186D1CE584498621678C61A32246CB9C6118635F5B26C838753196986D513561B0721617B2035F967072DB303E375BD7091E3A53EAF0BAFBCEA53290E6BDCE0F1D18DBBCE3DC729E96F5A2F5261F75203D51383D1FD3B4E4ADA408D05F641B1F7B29551174C73CFC68A3DBE40516FC2DD7D95DAD81FE8AFC721ABF88E7D925834CD7A4B79832603A974D6F098F0965453F1FCA510FC2CF712EF117AD16743FB6A8B364C491CE6DD5CC85F63925221621F206D8691C1C09D49C3D3AF34CDBB58544EEB492E94B1D46A8B71B5FB13AD590621853D5F4F8597F3C11F4E2008CCEF6EA1C23F42C28D39A6CAD6BC8C8273A1B791691CD0F1ED1148AD0E4706BB4CD00FD6BDD2BA7609019872B7EFFBA239F0ACD31F7A78C1D8F4A1AC422C948BE0AB254A76624416CB8EB95FF62F3D8D348AB4664682C1E11C1D051D020BE2493B32937FD0AD46B463B4443FDD4CD0BEF0D23CCF79A302A35B355DEA6835F1862032A2A32896A8D1717881CEB321C152F9677D1FE4EE33C686FC7B5D37104886B257A9D2DA06689952B9E80889084B3D69A27851229AD075BCC33D5BBC7393BAC5BB913C36039C6E7443E34210C2A4E37727C2531FCB2898BDC7832A7E3A928C1693BCF252DA8F2B8B506DE1B6D2AB4CFAF4F6B8EB4D1807D55D48CC8C65F7CF13F1CED5141FB88D0161287D683BB5B73A7AA7C5CC9BB5A0DD29AC5E3D6B8E73EC60034A6E09EF482A6705FF9E80A219E3963C0DCDD21495948C0E0B18E879510FB6369DAE57DC93591BB22282C0261F19793DDF856DCEB839CAAD27581B09BC525E6861DF0864FC71544743A6C069DCD24A245CB281E6254E251066475257BD0E4758FE39774A888B924D59B2A050EC4CD856053D137071AA105B2BF402D4DA502787F4716AFD598B1064A2CB5A28265D2609B65C5651C32E0DD787216C0031A882C5A4A3624F846E9FE2BA956B857595D605F14D8F6FB6DB52582080C1AB7490E94BD7E4AFE06439045CD818FB77B08808DF39058AEFAC219CDD88F4BC2A469E3AF8AE67AD91B167C6C668A57E5B08DABC68150261EF0DB83186B1883173BF507F7C942AFE3489C0180CCF55571E1ECC945D0AA7146E1436F4F4DB7C346768047D96F7867A82B95A89124890D811568041540CF24C9478142A9AFF01610BB581D96EFD6A4623611FDF92D92D237A19B6547FFA17F261CD1D2C838BEA1FE17AB9CD8D6B6E340B01DC3849E9777891EC994AC7EC1DDF119952DB12FCDB8E711FEF6686352AADEBFBDBE717FFD86881D412D0BC5648962CCBB8AB1F3D0A90B769351121D6FDC9E4BBA047E6812EFCE7A68442ED9D88DC8BD70A76FC9CD2BA9FF3F906B99741D7E3643B10DCEAE1F6AA2F5A2F6535F0F9B5F292822CD0EBC8948BC35B3ECC24CB93C20FB19598ECC409B15BC87440695CC8D94D5FD51BA5C8AD52CD865906DB63B630679E511119DB4ABBDB723781B960E911B8A1A3566057DFBFE7A4308FBB88B677A55F8645363A26566FF8427EA04416C08E2D7DD28E8900A8D981FF8BF369E0A75510AFDC855F72BB1AF7C40148226B49B36B654259F1F18802467F8B3F1971E5F0ABF538A5550FE889193504EE6007A7A9F5F6A8923F2658AB930BFA46144D3E141A2676555D34463EE32E1D9DCACBC1C12769439D56892DB253694D42891A33CD6490048530ECA67C8E9AAF8E3B56ECD9BEBD314413C07931D2E2C781DF97B389893D1025E55EE84F6DF8CC5586CFA2071526B9683FB75FAC82A644571FDECF27325CA25BA773D6DAF74A00964E1D403F6E8403BFB11F9E69203800C2869E0FAB9502CF3E8D5A3692EA8023901E6F0D8DBBEEE7A086130E434C54129C12C73AB0C850E0DEA7CCD22B12CE2B10811F9FB808EB39FAE75AC2A59DFDAC6B633C3234489C599863629BB998C769EDF0EC2B6AC8FAA571CE75341F3D05243B97CD1643B4AC90D2F8650F3440E39EAB8C6EDB45EA95E5E880FE410C3A510D70558114B9EBA58A8F6F4BEA6FEB8473BD948EFBEC9700F4684F04401021127435C55FD5308F7AA6B054A43F3CCF5B1A4B0589418F707A38056ACBB01D3CE4AB488748B2B27BEAFF39EC4912EE462760F130D593A4AE6C9794CA9CA423FB5C4754CC6B1AB5CBC8498969F9CF1A3F4CB82EB70E944B195803A3BF5DA39816A999E3649FC5783D96D61C8A7B9A1247F716AF3A7487BF6590A171223214BE85965BCF10872BCCB473BADBFF0A0D620EE15B06D0C041D6A19B5E8CE5F7D67A97B8172CEC3BB9992F0D5D2D09A9CF3A88DE3CEC30C50E4E44AC32346D030BFE14A0F31D6555B9204F6362AD21B5BC086AB4EE354DED24D4308536E8CA2A77B169FECDD228FA367B67473FD85CF073CA3463284AFAB3D8B19B9D55972FAB977004D1A80AAAFB1331DCCDF39A24E7D062A8E9A8A0AF2547C8FFB9F9A857B3C357E2F5F9AFE5EBA040B1E8BE5198DA4B442CA37ACC6710A64F94CFC0BE3B0513E2D7CCED61BDB2B5202BAEC444916FD438FEBE7C981B56F612B4906871ECC9F447ACB3A7A95F214717B0F763B51711FC1FF4EA1F45159B760316670A2D1C8EE6C0D03764EC3E5F22A0138945F92520A3DFF2B3073300A556A0B8EE60FE501EC9DEFA9EEF0BF7D842B0A98852478E49FB2DE919D631BE0FF174F6E424AAF786613F8A64DAE76216BE3293C73F89771E21CF90819AB0B7E56FD6DB612D98ADDF539CBAB9B367C3E1B647D3E4E89639757EEF2348485BA3B198F0979D9DE8B2FDCE557CB31AB4EDBD067AFEF2B122D38A2D14E1C7EC50D371AD16A49D12092B48524785064A8D7803C154C461D4DE2D6134EE53EC8B4CCBA570AD5284383686CA2DA1F51786DA5A5B5F872E4C21C6FE47F1C5CE4C021643347631D64078D241BE4EDA171828FA7E5A31484CFAD4BE72885E64CE921E8F9F56A6734655DE586A82AC72223679AA44C380EC045224932C988A31853CC872EA7E7B368BA405B9A4E0242DB21704E88C4B15EE22D5958F2ADC6D7C2B1183C676FE4E1AC630932F6AA005FA146CC7D7DC9952E5DAB83E55969F7679A663242B1D5121115D9A630EF21585382913E280E55621B09A76FA4739F76CCAB50527DF163AAD2067E3638C08F3C4B27E6ABBBF44FF48E07779DF238794E8377AF48C366971193A366BC39D212FA857E15BC9537E091F912C89A4519664269B1D90F1C5041C27108271EED92363760A8D5F0C9D219C224079B686ED4DEF343CFA9E8E3DBF54138C6DC8237682AE9E8AA2575D2B9323373E6B0B5CA0EC1E70DCBF33A3787C2E7DF25A632EE102D32C7DE396DCE06C0801167B65C289CD019ED2C8ACA55516236AE3000DAB30C0A654451AE5B8F2AC902141026B1A16C3CE2ABBAD68B629953B06930632EC568890540F85885C83AF0F7D61B0A644E5062ED9CD2DA7C01549C1E57BA6249366A1F3EE22E4C3CBB18FFB13AD657E0B2A080BEEAA0CE7B3C4C165385E6E91AB941E49C994D4EB4D646FE87EFB534982B1D146E56C757679EEB3769CD55D5B71756375E320D9FFA0FEAF914035DFF6DD9AC1B5350BBF1AFC81D6B262B2E20A446EFFE62A2FB69D3E713527A2E16A2F6F61EF7A96A7DB64F1E324FDDE484C5F765CA241669D8C471A7DA89829D141B90E0CCE3779E2A8DB58B144A693E33FB19A53F050034E89913E6EA3B09FBA76D535A3F534C1223C890DA03EAE57E4963C33CC03FE752F0BB766787E1146D8893A58050E3CD089EC63572609E98972AACA68A1675873B46D7A189DA26C4C4F6A8339E278F342E2C898302B9AF4C7D71F32EFD9EAE91D21F0384D7AAFA586EF3CFD17EBA0FD13433EA26E3F972E2266EF4E1096068B7FE2954FBE8A349C95F3D3635759EAAD614462B654E81291945D3D4637774BAAF6AB120369BBE5081AF180FE79A8568912007733CB95EF0E7761C63D28055B5C6A9777985705390440E9FD2DF704DB76DE3C5ED296F7DA1A03FBA37E36522CAEF729429EE586621A3DC800D8FB01738E72295A67B1305BB95760FAE3280EA09768450A3A4AFEB51C4CFAABB539F874803D39B9B4CB0A692A54C227BD2A58BBB2544E0053FB99A7762014261AFD5CD667A5D605E3C0BCCDCE3A69DCD49D0A4676C12C8FBE9B1A7D5713F42329B199BAA909BC67203164B389B0EF0F2FDAC1AA1A16C34A20E10F8E85B0A5DE621C5BFEA09E0A0B1E300533803DE0721F1FAE2E7125423DE13868B0460DA263F93B23AE003CA76F64AD25983787A6536463197E8301648F40490276CE7D81CF7D037E7F5DCBFC4E909E0231844EDAC14B98C0B905412BCCA913370BD404415ED2A6956B1A7D17F9B6180EC6A107C194875D4F9147AE9FF89EB6A991A7C41CE59EBD802DF940821363C5A2C5FB4365EB1856A645C7B2EE59AE750108CDE65599BF6394B66E442B48CEAE6E519B5C1FAAAEAB0CCA73BF08A06A6596162A00F59BEA92938ED1DECD6C13D25FBD77F0954092BAB1D444F5BA732E8333CC7D1052D4E96949249ADE82FBABEA3583CA34A8A5351940BB9479FB74BC7B0F80DF0FCA072F5DE1462799324295E7E70021214F8F4F734453D9DD777E5776EA2F864FC4E4B27948FD88969EF065ABD9955E020D0ED46C4FCC2077D23070ABBE2F1C14490A1663DD5709F682286BB9D7461318D01D8293604CFAF217F47305CB94BA8E8818A96B6915884E2EF8A3F3CB07616121E7E7929B259BF67EA9925611735B52F42E44AD8BE7E497659C74A55D044CD58EBD63C399A20FF7ECC76D94978718CDD971CF402065F3B1A25D970E41D1341A6D552542DB1A7D1E0F558546ED411159831075B9B7B352CD1696801972EB18C6648941DFB645CF7126DD2FD0C8B783FC13358B2D2570B3234D10FC5BBFE68DF18737E2B6F0CC91C793140D32A77D40265DFEF8E30DD8080C4CED114E1D3FDCB852385F46115ECA1E21F084DC28AF68A320BCCB55A365F4189493FD8A09B3E0BE099C2364E956D41718A371034DFDAD2DCEE740FA817A1A48D4A3A0EA18EFAD4F4FE0BDE89A59B546F393EC762B3D2382536626CE1905E789D6E86FE31828A6BB52D24391912748199CCD0BB8CE007054AF14723EFF21D59FFB3F81CEC18A611B5918DA1DDF16C1DE4D8D7ABC71889803BC542D791B59F825ACA1D83A3C496F675AA7AE16828B5F55B8F87231971F77291930AD58A9FCBFA8376A531AD7B5F21370B314D7A08802B1EF3BB06AC90461D42F5AA8D8EE4F9D16878BF749AF68F53D2E03279386AD7BF56D5933E4647966AD5F3520058A7B10658915078E4297EA83680EA8B83027D50AC2CC4A64E93806E8DCAF69F751916D1004EA5107E922BBEB5647B45A5F3608ED8355EA100F38203718C15AFF19AD0AF9AF7B67912B9B70C65D4D6E1C9CEEC9D88E6751B6AFDDF1967BEDA0023293585167F3E7E32ED3408BB3DDB175D4C0254469A84B73836BB7DDD09956C40FD9B1483921A7E6A4840F56ECD22A36EAE1E4C221445751C774DD4FBB28DEF075D850CB7F2A2C04A67DB5724448AF64749217542545EC71B9926CE1EBA921B6B70333142B18FB7D4CFECA208114310CE266F9D9F6D2A2307F7E9C0D335683CA1CA7BA0248C356EFA6716A5008D54D89A03F96AEF3812EE94AFFA99B47D7A1E8988E71ADA269EB65CDAEDA40A9620102A98D9C147D5ED58F5687801317797D2C69DE6EE44C1153B2B319A168F5A389E9FC2FB69B5F0A0CC9135A6893178BEE57F52B3FBF256C41AA56F201FF53E720C2A0C0B6148567106200D1C15F01E61DDEE44FBBFCA1F9B995F81E8F9DB2A255CA395255B65F9B8AD6E310FDE0F3FFF022B1AED7B34BCCE0A0B70EAE3164A74AF88E20916E4B6E18AE0C1C40E65315052CA472633E224379104E95DF7812778E894E6F115CCF708AA4AB3EAAC41E607A46D73D4FF0593CE78882B08038D423B186D353DF78FF0695882D1F7BBB0653EC3CE4EF6D034015BA3EAF27A219152EC4156540E1FAC0A9BA2FD16035F5070322AE8E4CE93D9AD0CBECACCE37AD9A2330BD1F0517F971846ABED761EDB2451760654487FD2A25499970822D3E981C9B78E76748EF2BE395A7A7A223AD63081710B21D1041081307A41DA4DD7BC8EBDD4D3511067893536CA29E4D6ADD817CE3C9F78FC93AEA74190CBD6798717F4BDFB75210D0432C74E3CE7DDB2E7DEDDF375C2D6A996090381518BA0F81182602CE7FE171DD3C37B9DE4DFEC595DAC59E2F152CB76BAA332981ED7B8C6D90FA8F0FF14CDB211F982093626B61D3BCA1B0B68A5256B5F2C149D2582528B69A430984DB0437B03EC9741938E95691504BB41DFBEF1569B442DD0C780F445FA0D0B93585C295509BA9EFC7395C1ACE53A825979D46925B4FC23FAD3B66352C4625D82C370ABFB554D51E1F5722165219284409A590ADDEE44596845C63427651421A42E84D737192A0B61C905A335F2F52B0867502A21BD8AA5DBA37D81DC7046580A049EA537A88CD8A2BF815FED6DC36A8704F90D8F4197BC8296F5DC0CE55954348101F97F361673CC01C77607E6A360B833CFD6788F9C1535344E3C8388B8BC0771A5F49907EA8A82D55EEFE185E4FF181E28FDD41D8302908357482A0A2F0846A0C3762CE09256BA2730AE1D16CEEA8B8D2F6319E7BA700E0B5B63B8B8C956BC51EF4E3FF70AC98D157DC2B8806FC9CE836FE5E08ADEF0AF441A6BED2FD5A29F8A4C10144CBB1A01CE80D0AA348A5BBE3DC69C1D321C8AF5F794850311D608DD1CF6E63E2575F1C0B346E4B0A9649460D8B11013D375A2B2C792D13A8F55C252F642260D07EA0DFED6FD9B49D6CD4C2A0D6D20173C2B39CF718BA9BAEC94CA4E774C4591D69AE943E0F8C99478B37E6C360B30086D0593D551585C376EDB2A4211F0AA50668C76896E6A31AB109285D662AA66F0399CD890E2383AA1439BF11B4C40855AF5B44DCCD17FD0C6D40307C461B54B0851036EED6135F34B22048309C507166E2815118AD3F59F0F8AA8B74F750C9206C24F736A9514F4E6FBE54B0E9E6107C90A87ABF0B8F6A7769393338E3DC424E7569D585C0810ACC42C2992FB3D2C8B65659906BF04BE4E77211ADD66E639122473308166F9957FD88A9DB50438CB407F1E2EC1C758DD0F65FE65AD00E5B41A1B518DAA9BEA792E10B020C0C241E56F31815AF698570BC0743AC277DA78295D3DF116763CCFF7EC88469F685B1FF5552F7D73BE815B9A13107481054E2859363AD4A734FB2AA34404A45CF9F6BF7757C42BB751A4BD6C7388905D3EBDBFE166A2D264A34AFE3AF05DC5E2C9D2A5D13C6AA2AC921F75F65B9FBF08F986CCCCACC4968A1383AF4AB6893EF1A0DEF12CD11ADAB1F226B27D5A03D05AC5D24CA6C2FEFAF9A9792975B51513A3A6FEEEBD2C3E66182293ED062D5D6EFD8FE22BF6876E81B3AF019B880B159F4FA1EF472F71F5EBFA9053ECA70A95C2AF9BC06FEC09FFD36A060C14D159B20CE61E8C3F505B0823E15FFCD5E4155D9046C227D33E000D3E2E2581CDB7A1CA2C1F17D382E4153566C6EDE61F795DDB0E24E53B3A0211BAEEA64B7A5F94406067C32A71A169974F941C7EF4B26182933035B2A2AA02DFBF90F9688DBB1C35873C062D23F15677E658FFAFC9ED630A52CED2997D34A7061A9AEEE7EE3145824B74C83CBC71231B0F8555C47A7DA0BA2C3D6EDA6508360A62E6A2B9B4F679719FCA381E34766C86DCD65090419D9E5F3C7DA7837AD1DCA05BCB5789368E750A8A7CDF32B573536B7EDF7DE991D4CAD4B5655CD74E4DB0D054BC585B17D951034184844A80BD34C0CA86D78F1DD2F21B386C4E1D13309F58014956EECB19F96959CBFB61D63CD493EC059157AAE83B7F52A70B0EA8B627014993D2F83032D05AD6E6E27F689A159F349B088B99C7A731C4CFE499D9C5E94609EEB362B43DC1C56BFF31B745989D6893DD97B13C75EA7883E6565FA205743D79B3CBECA474608AF7031EADC2315E8067291067D459D1C631E2AB23E3CB1F58CC8E09C90C50D50E284163F8D63A57C5CACFA18E0CA5AA566F3A96931374AE773A004E28BEB6CF58002ED529A2681EE1DC79EC73DF61E61E7DA5C53B65407509A1AFED02BCE607EBE69D174B7A017629A742833498C8B7D20F247D5A45841598BC4F5882536CAF69510BBB940BC0DDD965E4B0AADE52004F1232DB5BA4073582BECC122B2C39CBDEC267BD7A07EF2E418B4601B25509085FDC8B0F874CFE7E0F25533B766AAF2CC4C5374404295AD294F7E5875054D56D98D21A101B1015D1BE985170380344F186E0B8AF3C55DF88DA5EA9460FE0875B28FDB1C358DD79326D9E8484822857B403F8024C8B9321DB863B648579FE06851460424F58BA347EF9F9D1C26B3F661F9C35B7498535602ADAEC4BB58194A03F1B7EB5317E1EFDD0A605EA23CA2FD7128DAB4F4551C949D0AD12404AF8D51FD343D2D5FCBD1BE55EB915AAF832BE1618F941B517338A9C481D69A39758AB6D52A76CA22075D5B51267BF0307D6E47B31A36EC341EDA0789A52686E374FD75230930B7A7D100BD6EAC6B9839450F133BEF5A5DCC03DEAEFA7F42B1D7D0DE7FACB27ED33ED0A7F82848BA90EFC7048C60D8538F79C3C7A065A6A4A7D5E06DD891C5F1443CEBA4B09685649FA0975FFBAE6F129713FB4DB407E3EBAAAE3EF80390BF6743FF5C63E946703E0DDC0B71277C3E925526DF8D42FF96A8E73BBA0EEAAE728C2012C1D6241FFA71802EC5A7C8553B1FD3103CD76510CE2F7669038638C11A6A378629D057673D1625855A66F27A7FFF341034FD77E83672518AEAC975583F6D9DE64540803280877365507066FCB3800B294EC39E339B25CC3FACB45E97B2803E9F395BD67C2C73C062E4330B9354C1A41D2B7DB9E02344D10B56A6ACDE7F64A244BBEAFD9E6D9A08BF67BE2EEA9BF49C2CF64E480F3A4CF3BEF20D40D5EA484F197C58FD3BA2AA4D728B9AC317B1F215D200FD558C8B9D7D9AAC63B928806BEEB3E1ED1CE2004E3750DCEFCB577BD069C6D202B45F122CB1CBC2F7D450D5DA50616EE970C77E726DDCFAEA16ADF55D0E3AF5FAE80EDD65620D5EEE2288D61B7F58CB88A83B20E6C70C21A53E2F4AAB059EBBF20AEACEE5089B7783D44F817EDF770ADC2214443674B4C0D6C0229570089648FFAC5F43AADBF61B6DF323020AD415D598FED460BC728DB58C4B6A97A4D13E4FCE7823F85AF793900249520254B8157BB16EA160887FAA53DE51002D75175A7A6894BAD06B7C25A587CE9F0CBE330A98EF7E356A12C7536E514B1CE9EE5DDAB003B9CC34DFF6890DECD9FADEF893712B749B32D8C77AB7DAAD3FDF03C152DB6F37D71933065CA24C76C4520C9C209CFA3A9C73892162575D18BB2F58DB373A54B626139FA214B9C833A2268ACAAE9451511BEAE67CA7F462FE579AEDA114FEBDD38083B92E9D9D966E40808890B2A768218926C30E8F8383F415A435170C041363E611285CA2116C51C5D6410C7DE08B983E37C72A4965F4891C41A4354A89151242EA5E4FEDCB508DE797139D01A9E551BAF68E10E64748D84A8CFC48BB91E0CFE2A6387537F4FB42EE8F804C30214740BE53D532253C7D818AB0879E889A764EC71BC72FC5D648ACBA68C936BEE2B49DD48CD3E29F6B50E30E50F6A6A63D555A4302558D42FB898454D0D7830F3B75F0819602AA93D8188FA93E7A8BBB09856791A7625A12FF2025F37365EDB95C63EC0CB7E1990C19617D722AFA17A6F9D6F01E26C741C293F9A4626860D24333A9924DB7473AC7BDAADF80F0C008C431980C0DC7F3E63F603F798A1C153DC4CEBD4D278F710499447B2FE57DF5E875267F89263C9939E2F8CDCF0A593CAD34E55969A2219C5E25F4163746E26711BA84A260100E5AD11546D9B1F7411596928DA8A0A7606A628C0FFB45428C248A4C22C4FBC162C29B502F9A8A292C2D734AFE8CB33E6882D7E5AD1D5EBF65EE219C439AD876CC868290E6B2B6B044DE0B00060F21C81240AD71A36E1F008E850C13739C4AFDC5F4A4E400A812CA82F0E06F9196AB3DB0AE71F1D9E7A7450674F5202E05E83A1B5711AE7DDC44254913999CF1431734641BAEA5662BD7DB2EE3AAA58FB91B3C7FA722C23C4CC243B84F81A6A38022B440CD60D75F5E30885209D8CDE3BEC0591817E0AF225B16EB31294CB5475E695284F5A6A4299766DB99A4F94FC083505371EF1E60CA3CA97F0DAB4D77D595D0183B936D18731B45DAD041664DD0B8ADCBAC39CB151AD1DA2F7A6AA2655CC7AE505570570E2B3FFA6D459F97A12D3347400FA0B4301B1ED35323937BA1E3BA906FD12F7DCD3539D5B0D89A72F40B43F63E232D07C73F183950EEE77502F8553BA0AE70757CDBCF1A853C4A01E8293313276CE99F43EDC50D876C0E0E370DEABC6B4561D0357A61FE0A4904CBB469962B4DA82282CC6FB8CD9D9B64CAAAFFE0925637B5C7544DF692A4E6C87E8EFD68B8B164F2848568D0576D4BCC00E43EFD535AE37CDEA16C6E199D59D907A1736FE89FA6D24C4D0DA1C65ADC070D7BA5EE6ADDEC9B5E7AAFAF5F10BF9CC9053E316ADEF2065946B02817A0673CCE5EFC23B005C0785EDAAEA409B8B6A000562CFBC038C9FE1408221BAC09A1402085E5A2C1D96BD0B93A71767E6E34986C33E6A4848A43FC0F634BBA80B91E13CB68028B3B98D7ECAB03053068A9EDE1461C7AD37F28C45F3DF1A27EE6384E3ECBDF94BBD6A84BDCF0FB4934FF55A26C929A70401B261ED966FCACC6D34E1277736BD91EA4F9BB7C857B23A30688C8B77312FEE801E4622B5CFBBD1F600BD980325CDBE68D41B29440AABA43F1127D2C2F49E951E00055C8AD12AD0E32E479755E6897EF451759D90CF8E3073FA1E275E908BA0C8D1A21D6DF5D75716E7B9D832DC943A2590E7550101E0BB3F5DAAB9FDA752AB6A3E2D2284068CA4F621846981D5BC0A5BC029CE7FCB6AE7CEB6D68F238A93C2DDB6348B68B37F676C089631534868EE9105D47EAA84845334F68EC5EC935C7EDEABA5FF839BB4A14B1AD30DC1503B4F82E5ACEBB0D7D9BA996E1EE048844C47C97314B4EA06CBC82486D358B0E524BC39CF3E04F4ED27ED7259AB39B1145152FCCBC3C5E1E41D2DED96855A22F185BD3327F881D44139BAB6F50268E262CBE529B5FE2CCDCD71715AF2932995CB5FA67C9F0377C4FB2FC4504242F6AE7025579BDA18C20B77AC02904DE0E932F1AF669C92221A3BB9288AC81A9649A5E65E19D349A94B58760EE5172F25A3072569FF92416226F2AA2BD84D22E61D617C36321A06C253E9CAF9E987C2F1300F1579D65B7CC50B0030D43536B0E95B21FFDAB0370D6639AF5FA8E12B92971BEEAF0DC409F2D778190D74090C92B58F11D7167A77F1663C5CAADF5C3DA3B03B8633CE27E9CC1B789D0CBC4B9D43BE9B903FAA8B41C88E641533638FFBC15BE57076D3CD65C62D263F84B627447ABB10DEEDAD3F18C03C05D049E35224489BED627C6777EB55368AD11BB9ABB5881E7AF3A39B5565AFDA36BAEBDB0550B2501F0DA6A305BE7F0BBAC9E0FC87AACE40942A1E3E302B0CDA2E38525A52E96D6310271D6BBE1717F20851773173332C9583F5904DDE2857C32E960938F68C0011C97143B818C8DD1BFDED6B +sk = 7C9935A0B07694AA0C6D10E4DB6B1ADD5E41C63CD4A9FB576AAE6D989B5D9D8C857853BBFBDD69CFD074FF0216B807856758E17ED9D70DD20DEE212D9AEF0BF158CC440A3E6DDEC1C82A325663190059542057BCA0EC52D2C38B177A6703187064B8E40F19D69214A0376A3D499A7FE2941F84CCD077437A7F0F0713C542FFB499672F07A85A5696B2DEEC2A4FBB31FC16E552662A9DC1B3540C06798BAFC45ADFE2CC468F439BE2901A8C425AD018ABE412A37FB557BB1EE4074A42D3E30465A43B90633C45CE2BFDE2AEFE376F0942813B24AB61C4C01F6CEC9A19D38C7E3E9C51FF41675376AD8BAA54EC974CDD3CAD293FF3A073B12211264E5C46D5286E033AB72FE1EC71D801E22E2E45371C21604EE9933A90461CC7AB585231D9C4305829F4B5CA73E0BF9ADFFED0ED4DED9937F40E44C833E01632441981D73F2E65EA5CE1C7516D4F380B9FF5C5819BE4D22F4298D675B18D7988730D126CF9847ED96DBD8CE7BAC0AB1933D207C189829D687C0D9254BBA8507C7D00960447CFE6A5795DE9980EDB4AB20424FBC0C20B03806A09191F803E567F88BEDC06E8F0754AE6A46D98B913A1A7DF9257D831F1C469FAC8C26D41FA9ED5FE2B8F584A037F7F6475438B864BAC74039BE6828C6E371CCD7DDEF8EEAE1358534A6105C4556765357004C91046B889C0FF5EE09F64E74A368D60D7A12ACBD155D4D14348C6DFA1B7DF1F0EEB153C5F8EB34B8D05DC9E10C66BA0FBB23DD10B0959527074C42681098557E87CEEE26188E3B0DFBCDFDC98EE40EB45EA104CD9FBE79EFB2CDE9AADD5E79F4B59200B0288B0BB8624728D4D9465B2FEB0AC49BB2D5E2703D917534272A5EE3CAF25210E09123B579ECA7136A7A58284B9B766799DAFFFA0EE5F0F3C1A4D00E38AA72CD247547C176F82EA444EA4E23B8387FCB8D6C881970228C156040D0E1D89A8BAC917E893AEBD2E52EFA825AD4052445BC0A42F7398A121774BE10CED9A278E9EBE5F0640340E02C5D6F4D19D798BCBC312CD8052278D9B40B2B0CB1C59B257A368C000888E267484D241E783C0BCA84E9139EAB16D1FB343EBC02C7C5144D0DD8D47999DADBC276B870EC35E3B919035376EE989F9994636BD7A421946A113E1120A1A4BB9AFB495AB6DAADB6CE52B8A700544D1C37FB630C07BB30A99E1EAB46BF2FC03F4A3609C1DB2A15497A5CE3B6F9B6E18D1341F0F1F4602D3A53D9F80930DF7CB0C6019ABA9C37B0644F006FD384D96BBDCD27E0616D8508F258F862FCF958334F1FAC7EDE4533ADFCF4A9EC7B3BC84AEA8C0DCBF044B312DC15C2DD673EC33C2F74B4B659CFF6C63E09019616B412AF583AD2724C0E8C24E824CDE2A095FE10B4D8F30E613B77ACED6830DCD618AEF60FB3AC3BFFA055B73790D2817C0F15A73166FC884E539FEA9E7E1F39FA699104D71522DFBFF84F2E63ABF783EB80A23A7EC3CCC9504B7408B1B1AEE41BC6D873652019CD87C68D127878FB9DD6818CDCAC1618CEFCE7799B1A20734BB951B2AE8B38A5BFEECA1ED2E06270EFB18FD2E68F80D89D0FCC431BF8D38705B1C9143A1235C6703672E0C626DAC4FB3F2DBE9C212B8EF327BCCF423AA47086865CA46C421A0A421A46CDAE1AA1FF1C68B242A96341C95B834F2B98B073E6A796A4C644071022B282670CE74EEB6CB484F2986D6C123E7A58DD3AC36A2C10951BABEB00D7181A682177B2DD4E180F43DC3A60940BDD411F70BCB32A11DE5EA84B13A91E1F8D76E2419525ECE95271F3F24D687E116B72E3D9781DB894A58FB3262E6AB53080ED3A14CC1BC0B7DBFBC3AE4992D5E5FC2826AE6C83E31DD89EA31B9127D56F61084B70399360189A2C9CA2472FFFBF8B5BD949C2C5060BCF3A2C52566D9DFBFF5C43AC3BCA6ED71BD401EAEDBE1270D2395EFCB7C08452B3E52AA4C4C489F2A981DF0F4D253A3420CFB193EA8CA6F574E2A9EE17A98FEBD36F8DCAB914E143484E85DBB583542D40666F28ECF29F0A25F335DB012A5D76A186D1CE584498621678C61A32246CB9C6118635F5B26C838753196986D513561B0721617B2035F967072DB303E375BD7091E3A53EAF0BAFBCEA53290E6BDCE0F1D18DBBCE3DC729E96F5A2F5261F75203D51383D1FD3B4E4ADA408D05F641B1F7B29551174C73CFC68A3DBE40516FC2DD7D95DAD81FE8AFC721ABF88E7D925834CD7A4B79832603A974D6F098F0965453F1FCA510FC2CF712EF117AD16743FB6A8B364C491CE6DD5CC85F63925221621F206D8691C1C09D49C3D3AF34CDBB58544EEB492E94B1D46A8B71B5FB13AD590621853D5F4F8597F3C11F4E2008CCEF6EA1C23F42C28D39A6CAD6BC8C8273A1B791691CD0F1ED1148AD0E4706BB4CD00FD6BDD2BA7609019872B7EFFBA239F0ACD31F7A78C1D8F4A1AC422C948BE0AB254A76624416CB8EB95FF62F3D8D348AB4664682C1E11C1D051D020BE2493B32937FD0AD46B463B4443FDD4CD0BEF0D23CCF79A302A35B355DEA6835F1862032A2A32896A8D1717881CEB321C152F9677D1FE4EE33C686FC7B5D37104886B257A9D2DA06689952B9E80889084B3D69A27851229AD075BCC33D5BBC7393BAC5BB913C36039C6E7443E34210C2A4E37727C2531FCB2898BDC7832A7E3A928C1693BCF252DA8F2B8B506DE1B6D2AB4CFAF4F6B8EB4D1807D55D48CC8C65F7CF13F1CED5141FB88D0161287D683BB5B73A7AA7C5CC9BB5A0DD29AC5E3D6B8E73EC60034A6E09EF482A6705FF9E80A219E3963C0DCDD21495948C0E0B18E879510FB6369DAE57DC93591BB22282C0261F19793DDF856DCEB839CAAD27581B09BC525E6861DF0864FC71544743A6C069DCD24A245CB281E6254E251066475257BD0E4758FE39774A888B924D59B2A050EC4CD856053D137071AA105B2BF402D4DA502787F4716AFD598B1064A2CB5A28265D2609B65C5651C32E0DD787216C0031A882C5A4A3624F846E9FE2BA956B857595D605F14D8F6FB6DB52582080C1AB7490E94BD7E4AFE06439045CD818FB77B08808DF39058AEFAC219CDD88F4BC2A469E3AF8AE67AD91B167C6C668A57E5B08DABC68150261EF0DB83186B1883173BF507F7C942AFE3489C0180CCF55571E1ECC945D0AA7146E1436F4F4DB7C346768047D96F7867A82B95A89124890D811568041540CF24C9478142A9AFF01610BB581D96EFD6A4623611FDF92D92D237A19B6547FFA17F261CD1D2C838BEA1FE17AB9CD8D6B6E340B01DC3849E9777891EC994AC7EC1DDF119952DB12FCDB8E711FEF6686352AADEBFBDBE717FFD86881D412D0BC5648962CCBB8AB1F3D0A90B769351121D6FDC9E4BBA047E6812EFCE7A68442ED9D88DC8BD70A76FC9CD2BA9FF3F906B99741D7E3643B10DCEAE1F6AA2F5A2F6535F0F9B5F292822CD0EBC8948BC35B3ECC24CB93C20FB19598ECC409B15BC87440695CC8D94D5FD51BA5C8AD52CD865906DB63B630679E511119DB4ABBDB723781B960E911B8A1A3566057DFBFE7A4308FBB88B677A55F8645363A26566FF8427EA04416C08E2D7DD28E8900A8D981FF8BF369E0A75510AFDC855F72BB1AF7C40148226B49B36B654259F1F18802467F8B3F1971E5F0ABF538A5550FE889193504EE6007A7A9F5F6A8923F2658AB930BFA46144D3E141A2676555D34463EE32E1D9DCACBC1C12769439D56892DB253694D42891A33CD6490048530ECA67C8E9AAF8E3B56ECD9BEBD314413C07931D2E2C781DF97B389893D1025E55EE84F6DF8CC5586CFA2071526B9683FB75FAC82A644571FDECF27325CA25BA773D6DAF74A00964E1D403F6E8403BFB11F9E69203800C2869E0FAB9502CF3E8D5A3692EA8023901E6F0D8DBBEEE7A086130E434C54129C12C73AB0C850E0DEA7CCD22B12CE2B10811F9FB808EB39FAE75AC2A59DFDAC6B633C3234489C599863629BB998C769EDF0EC2B6AC8FAA571CE75341F3D05243B97CD1643B4AC90D2F8650F3440E39EAB8C6EDB45EA95E5E880FE410C3A510D70558114B9EBA58A8F6F4BEA6FEB8473BD948EFBEC9700F4684F04401021127435C55FD5308F7AA6B054A43F3CCF5B1A4B0589418F707A38056ACBB01D3CE4AB488748B2B27BEAFF39EC4912EE462760F130D593A4AE6C9794CA9CA423FB5C4754CC6B1AB5CBC8498969F9CF1A3F4CB82EB70E944B195803A3BF5DA39816A999E3649FC5783D96D61C8A7B9A1247F716AF3A7487BF6590A171223214BE85965BCF10872BCCB473BADBFF0A0D620EE15B06D0C041D6A19B5E8CE5F7D67A97B8172CEC3BB9992F0D5D2D09A9CF3A88DE3CEC30C50E4E44AC32346D030BFE14A0F31D6555B9204F6362AD21B5BC086AB4EE354DED24D4308536E8CA2A77B169FECDD228FA367B67473FD85CF073CA3463284AFAB3D8B19B9D55972FAB977004D1A80AAAFB1331DCCDF39A24E7D062A8E9A8A0AF2547C8FFB9F9A857B3C357E2F5F9AFE5EBA040B1E8BE5198DA4B442CA37ACC6710A64F94CFC0BE3B0513E2D7CCED61BDB2B5202BAEC444916FD438FEBE7C981B56F612B4906871ECC9F447ACB3A7A95F214717B0F763B51711FC1FF4EA1F45159B760316670A2D1C8EE6C0D03764EC3E5F22A0138945F92520A3DFF2B3073300A556A0B8EE60FE501EC9DEFA9EEF0BF7D842B0A98852478E49FB2DE919D631BE0FF174F6E424AAF786613F8A64DAE76216BE3293C73F89771E21CF90819AB0B7E56FD6DB612D98ADDF539CBAB9B367C3E1B647D3E4E89639757EEF2348485BA3B198F0979D9DE8B2FDCE557CB31AB4EDBD067AFEF2B122D38A2D14E1C7EC50D371AD16A49D12092B48524785064A8D7803C154C461D4DE2D6134EE53EC8B4CCBA570AD5284383686CA2DA1F51786DA5A5B5F872E4C21C6FE47F1C5CE4C021643347631D64078D241BE4EDA171828FA7E5A31484CFAD4BE72885E64CE921E8F9F56A6734655DE586A82AC72223679AA44C380EC045224932C988A31853CC872EA7E7B368BA405B9A4E0242DB21704E88C4B15EE22D5958F2ADC6D7C2B1183C676FE4E1AC630932F6AA005FA146CC7D7DC9952E5DAB83E55969F7679A663242B1D5121115D9A630EF21585382913E280E55621B09A76FA4739F76CCAB50527DF163AAD2067E3638C08F3C4B27E6ABBBF44FF48E07779DF238794E8377AF48C366971193A366BC39D212FA857E15BC9537E091F912C89A4519664269B1D90F1C5041C27108271EED92363760A8D5F0C9D219C224079B686ED4DEF343CFA9E8E3DBF54138C6DC8237682AE9E8AA2575D2B9323373E6B0B5CA0EC1E70DCBF33A3787C2E7DF25A632EE102D32C7DE396DCE06C0801167B65C289CD019ED2C8ACA55516236AE3000DAB30C0A654451AE5B8F2AC902141026B1A16C3CE2ABBAD68B629953B06930632EC568890540F85885C83AF0F7D61B0A644E5062ED9CD2DA7C01549C1E57BA6249366A1F3EE22E4C3CBB18FFB13AD657E0B2A080BEEAA0CE7B3C4C165385E6E91AB941E49C994D4EB4D646FE87EFB534982B1D146E56C757679EEB3769CD55D5B71756375E320D9FFA0FEAF914035DFF6DD9AC1B5350BBF1AFC81D6B262B2E20A446EFFE62A2FB69D3E713527A2E16A2F6F61EF7A96A7DB64F1E324FDDE484C5F765CA241669D8C471A7DA89829D141B90E0CCE3779E2A8DB58B144A693E33FB19A53F050034E89913E6EA3B09FBA76D535A3F534C1223C890DA03EAE57E4963C33CC03FE752F0BB766787E1146D8893A58050E3CD089EC63572609E98972AACA68A1675873B46D7A189DA26C4C4F6A8339E278F342E2C898302B9AF4C7D71F32EFD9EAE91D21F0384D7AAFA586EF3CFD17EBA0FD13433EA26E3F972E2266EF4E1096068B7FE2954FBE8A349C95F3D3635759EAAD614462B654E81291945D3D4637774BAAF6AB120369BBE5081AF180FE79A8568912007733CB95EF0E7761C63D28055B5C6A9777985705390440E9FD2DF704DB76DE3C5ED296F7DA1A03FBA37E36522CAEF729429EE586621A3DC800D8FB01738E72295A67B1305BB95760FAE3280EA09768450A3A4AFEB51C4CFAABB539F874803D39B9B4CB0A692A54C227BD2A58BBB2544E0053FB99A7762014261AFD5CD667A5D605E3C0BCCDCE3A69DCD49D0A4676C12C8FBE9B1A7D5713F42329B199BAA909BC67203164B389B0EF0F2FDAC1AA1A16C34A20E10F8E85B0A5DE621C5BFEA09E0A0B1E300533803DE0721F1FAE2E7125423DE13868B0460DA263F93B23AE003CA76F64AD25983787A6536463197E8301648F40490276CE7D81CF7D037E7F5DCBFC4E909E0231844EDAC14B98C0B905412BCCA913370BD404415ED2A6956B1A7D17F9B6180EC6A107C194875D4F9147AE9FF89EB6A991A7C41CE59EBD802DF940821363C5A2C5FB4365EB1856A645C7B2EE59AE750108CDE65599BF6394B66E442B48CEAE6E519B5C1FAAAEAB0CCA73BF08A06A6596162A00F59BEA92938ED1DECD6C13D25FBD77F0954092BAB1D444F5BA732E8333CC7D1052D4E96949249ADE82FBABEA3583CA34A8A5351940BB9479FB74BC7B0F80DF0FCA072F5DE1462799324295E7E70021214F8F4F734453D9DD777E5776EA2F864FC4E4B27948FD88969EF065ABD9955E020D0ED46C4FCC2077D23070ABBE2F1C14490A1663DD5709F682286BB9D7461318D01D8293604CFAF217F47305CB94BA8E8818A96B6915884E2EF8A3F3CB07616121E7E7929B259BF67EA9925611735B52F42E44AD8BE7E497659C74A55D044CD58EBD63C399A20FF7ECC76D94978718CDD971CF402065F3B1A25D970E41D1341A6D552542DB1A7D1E0F558546ED411159831075B9B7B352CD1696801972EB18C6648941DFB645CF7126DD2FD0C8B783FC13358B2D2570B3234D10FC5BBFE68DF18737E2B6F0CC91C793140D32A77D40265DFEF8E30DD8080C4CED114E1D3FDCB852385F46115ECA1E21F084DC28AF68A320BCCB55A365F4189493FD8A09B3E0BE099C2364E956D41718A371034DFDAD2DCEE740FA817A1A48D4A3A0EA18EFAD4F4FE0BDE89A59B546F393EC762B3D2382536626CE1905E789D6E86FE31828A6BB52D24391912748199CCD0BB8CE007054AF14723EFF21D59FFB3F81CEC18A611B5918DA1DDF16C1DE4D8D7ABC71889803BC542D791B59F825ACA1D83A3C496F675AA7AE16828B5F55B8F87231971F77291930AD58A9FCBFA8376A531AD7B5F21370B314D7A08802B1EF3BB06AC90461D42F5AA8D8EE4F9D16878BF749AF68F53D2E03279386AD7BF56D5933E4647966AD5F3520058A7B10658915078E4297EA83680EA8B83027D50AC2CC4A64E93806E8DCAF69F751916D1004EA5107E922BBEB5647B45A5F3608ED8355EA100F38203718C15AFF19AD0AF9AF7B67912B9B70C65D4D6E1C9CEEC9D88E6751B6AFDDF1967BEDA0023293585167F3E7E32ED3408BB3DDB175D4C0254469A84B73836BB7DDD09956C40FD9B1483921A7E6A4840F56ECD22A36EAE1E4C221445751C774DD4FBB28DEF075D850CB7F2A2C04A67DB5724448AF64749217542545EC71B9926CE1EBA921B6B70333142B18FB7D4CFECA208114310CE266F9D9F6D2A2307F7E9C0D335683CA1CA7BA0248C356EFA6716A5008D54D89A03F96AEF3812EE94AFFA99B47D7A1E8988E71ADA269EB65CDAEDA40A9620102A98D9C147D5ED58F5687801317797D2C69DE6EE44C1153B2B319A168F5A389E9FC2FB69B5F0A0CC9135A6893178BEE57F52B3FBF256C41AA56F201FF53E720C2A0C0B6148567106200D1C15F01E61DDEE44FBBFCA1F9B995F81E8F9DB2A255CA395255B65F9B8AD6E310FDE0F3FFF022B1AED7B34BCCE0A0B70EAE3164A74AF88E20916E4B6E18AE0C1C40E65315052CA472633E224379104E95DF7812778E894E6F115CCF708AA4AB3EAAC41E607A46D73D4FF0593CE78882B08038D423B186D353DF78FF0695882D1F7BBB0653EC3CE4EF6D034015BA3EAF27A219152EC4156540E1FAC0A9BA2FD16035F5070322AE8E4CE93D9AD0CBECACCE37AD9A2330BD1F0517F971846ABED761EDB2451760654487FD2A25499970822D3E981C9B78E76748EF2BE395A7A7A223AD63081710B21D1041081307A41DA4DD7BC8EBDD4D3511067893536CA29E4D6ADD817CE3C9F78FC93AEA74190CBD6798717F4BDFB75210D0432C74E3CE7DDB2E7DEDDF375C2D6A996090381518BA0F81182602CE7FE171DD3C37B9DE4DFEC595DAC59E2F152CB76BAA332981ED7B8C6D90FA8F0FF14CDB211F982093626B61D3BCA1B0B68A5256B5F2C149D2582528B69A430984DB0437B03EC9741938E95691504BB41DFBEF1569B442DD0C780F445FA0D0B93585C295509BA9EFC7395C1ACE53A825979D46925B4FC23FAD3B66352C4625D82C370ABFB554D51E1F5722165219284409A590ADDEE44596845C63427651421A42E84D737192A0B61C905A335F2F52B0867502A21BD8AA5DBA37D81DC7046580A049EA537A88CD8A2BF815FED6DC36A8704F90D8F4197BC8296F5DC0CE55954348101F97F361673CC01C77607E6A360B833CFD6788F9C1535344E3C8388B8BC0771A5F49907EA8A82D55EEFE185E4FF181E28FDD41D8302908357482A0A2F0846A0C3762CE09256BA2730AE1D16CEEA8B8D2F6319E7BA700E0B5B63B8B8C956BC51EF4E3FF70AC98D157DC2B8806FC9CE836FE5E08ADEF0AF441A6BED2FD5A29F8A4C10144CBB1A01CE80D0AA348A5BBE3DC69C1D321C8AF5F794850311D608DD1CF6E63E2575F1C0B346E4B0A9649460D8B11013D375A2B2C792D13A8F55C252F642260D07EA0DFED6FD9B49D6CD4C2A0D6D20173C2B39CF718BA9BAEC94CA4E774C4591D69AE943E0F8C99478B37E6C360B30086D0593D551585C376EDB2A4211F0AA50668C76896E6A31AB109285D662AA66F0399CD890E2383AA1439BF11B4C40855AF5B44DCCD17FD0C6D40307C461B54B0851036EED6135F34B22048309C507166E2815118AD3F59F0F8AA8B74F750C9206C24F736A9514F4E6FBE54B0E9E6107C90A87ABF0B8F6A7769393338E3DC424E7569D585C0810ACC42C2992FB3D2C8B65659906BF04BE4E77211ADD66E639122473308166F9957FD88A9DB50438CB407F1E2EC1C758DD0F65FE65AD00E5B41A1B518DAA9BEA792E10B020C0C241E56F31815AF698570BC0743AC277DA78295D3DF116763CCFF7EC88469F685B1FF5552F7D73BE815B9A13107481054E2859363AD4A734FB2AA34404A45CF9F6BF7757C42BB751A4BD6C7388905D3EBDBFE166A2D264A34AFE3AF05DC5E2C9D2A5D13C6AA2AC921F75F65B9FBF08F986CCCCACC4968A1383AF4AB6893EF1A0DEF12CD11ADAB1F226B27D5A03D05AC5D24CA6C2FEFAF9A9792975B51513A3A6FEEEBD2C3E66182293ED062D5D6EFD8FE22BF6876E81B3AF019B880B159F4FA1EF472F71F5EBFA9053ECA70A95C2AF9BC06FEC09FFD36A060C14D159B20CE61E8C3F505B0823E15FFCD5E4155D9046C227D33E000D3E2E2581CDB7A1CA2C1F17D382E4153566C6EDE61F795DDB0E24E53B3A0211BAEEA64B7A5F94406067C32A71A169974F941C7EF4B26182933035B2A2AA02DFBF90F9688DBB1C35873C062D23F15677E658FFAFC9ED630A52CED2997D34A7061A9AEEE7EE3145824B74C83CBC71231B0F8555C47A7DA0BA2C3D6EDA6508360A62E6A2B9B4F679719FCA381E34766C86DCD65090419D9E5F3C7DA7837AD1DCA05BCB5789368E750A8A7CDF32B573536B7EDF7DE991D4CAD4B5655CD74E4DB0D054BC585B17D951034184844A80BD34C0CA86D78F1DD2F21B386C4E1D13309F58014956EECB19F96959CBFB61D63CD493EC059157AAE83B7F52A70B0EA8B627014993D2F83032D05AD6E6E27F689A159F349B088B99C7A731C4CFE499D9C5E94609EEB362B43DC1C56BFF31B745989D6893DD97B13C75EA7883E6565FA205743D79B3CBECA474608AF7031EADC2315E8067291067D459D1C631E2AB23E3CB1F58CC8E09C90C50D50E284163F8D63A57C5CACFA18E0CA5AA566F3A96931374AE773A004E28BEB6CF58002ED529A2681EE1DC79EC73DF61E61E7DA5C53B65407509A1AFED02BCE607EBE69D174B7A017629A742833498C8B7D20F247D5A45841598BC4F5882536CAF69510BBB940BC0DDD965E4B0AADE52004F1232DB5BA4073582BECC122B2C39CBDEC267BD7A07EF2E418B4601B25509085FDC8B0F874CFE7E0F25533B766AAF2CC4C5374404295AD294F7E5875054D56D98D21A101B1015D1BE985170380344F186E0B8AF3C55DF88DA5EA9460FE0875B28FDB1C358DD79326D9E8484822857B403F8024C8B9321DB863B648579FE06851460424F58BA347EF9F9D1C26B3F661F9C35B7498535602ADAEC4BB58194A03F1B7EB5317E1EFDD0A605EA23CA2FD7128DAB4F4551C949D0AD12404AF8D51FD343D2D5FCBD1BE55EB915AAF832BE1618F941B517338A9C481D69A39758AB6D52A76CA22075D5B51267BF0307D6E47B31A36EC341EDA0789A52686E374FD75230930B7A7D100BD6EAC6B9839450F133BEF5A5DCC03DEAEFA7F42B1D7D0DE7FACB27ED33ED0A7F82848BA90EFC7048C60D8538F79C3C7A065A6A4A7D5E06DD891C5F1443CEBA4B09685649FA0975FFBAE6F129713FB4DB407E3EBAAAE3EF80390BF6743FF5C63E946703E0DDC0B71277C3E925526DF8D42FF96A8E73BBA0EEAAE728C2012C1D6241FFA71802EC5A7C8553B1FD3103CD76510CE2F7669038638C11A6A378629D057673D1625855A66F27A7FFF341034FD77E83672518AEAC975583F6D9DE64540803280877365507066FCB3800B294EC39E339B25CC3FACB45E97B2803E9F395BD67C2C73C062E4330B9354C1A41D2B7DB9E02344D10B56A6ACDE7F64A244BBEAFD9E6D9A08BF67BE2EEA9BF49C2CF64E480F3A4CF3BEF20D40D5EA484F197C58FD3BA2AA4D728B9AC317B1F215D200FD558C8B9D7D9AAC63B928806BEEB3E1ED1CE2004E3750DCEFCB577BD069C6D202B45F122CB1CBC2F7D450D5DA50616EE970C77E726DDCFAEA16ADF55D0E3AF5FAE80EDD65620D5EEE2288D61B7F58CB88A83B20E6C70C21A53E2F4AAB059EBBF20AEACEE5089B7783D44F817EDF770ADC2214443674B4C0D6C0229570089648FFAC5F43AADBF61B6DF323020AD415D598FED460BC728DB58C4B6A97A4D13E4FCE7823F85AF793900249520254B8157BB16EA160887FAA53DE51002D75175A7A6894BAD06B7C25A587CE9F0CBE330A98EF7E356A12C7536E514B1CE9EE5DDAB003B9CC34DFF6890DECD9FADEF893712B749B32D8C77AB7DAAD3FDF03C152DB6F37D71933065CA24C76C4520C9C209CFA3A9C73892162575D18BB2F58DB373A54B626139FA214B9C833A2268ACAAE9451511BEAE67CA7F462FE579AEDA114FEBDD38083B92E9D9D966E40808890B2A768218926C30E8F8383F415A435170C041363E611285CA2116C51C5D6410C7DE08B983E37C72A4965F4891C41A4354A89151242EA5E4FEDCB508DE797139D01A9E551BAF68E10E64748D84A8CFC48BB91E0CFE2A6387537F4FB42EE8F804C30214740BE53D532253C7D818AB0879E889A764EC71BC72FC5D648ACBA68C936BEE2B49DD48CD3E29F6B50E30E50F6A6A63D555A4302558D42FB898454D0D7830F3B75F0819602AA93D8188FA93E7A8BBB09856791A7625A12FF2025F37365EDB95C63EC0CB7E1990C19617D722AFA17A6F9D6F01E26C741C293F9A4626860D24333A9924DB7473AC7BDAADF80F0C008C431980C0DC7F3E63F603F798A1C153DC4CEBD4D278F710499447B2FE57DF5E875267F89263C9939E2F8CDCF0A593CAD34E55969A2219C5E25F4163746E26711BA84A260100E5AD11546D9B1F7411596928DA8A0A7606A628C0FFB45428C248A4C22C4FBC162C29B502F9A8A292C2D734AFE8CB33E6882D7E5AD1D5EBF65EE219C439AD876CC868290E6B2B6B044DE0B00060F21C81240AD71A36E1F008E850C13739C4AFDC5F4A4E400A812CA82F0E06F9196AB3DB0AE71F1D9E7A7450674F5202E05E83A1B5711AE7DDC44254913999CF1431734641BAEA5662BD7DB2EE3AAA58FB91B3C7FA722C23C4CC243B84F81A6A38022B440CD60D75F5E30885209D8CDE3BEC0591817E0AF225B16EB31294CB5475E695284F5A6A4299766DB99A4F94FC083505371EF1E60CA3CA97F0DAB4D77D595D0183B936D18731B45DAD041664DD0B8ADCBAC39CB151AD1DA2F7A6AA2655CC7AE505570570E2B3FFA6D459F97A12D3347400FA0B4301B1ED35323937BA1E3BA906FD12F7DCD3539D5B0D89A72F40B43F63E232D07C73F183950EEE77502F8553BA0AE70757CDBCF1A853C4A01E8293313276CE99F43EDC50D876C0E0E370DEABC6B4561D0357A61FE0A4904CBB469962B4DA82282CC6FB8CD9D9B64CAAAFFE0925637B5C7544DF692A4E6C87E8EFD68B8B164F2848568D0576D4BCC00E43EFD535AE37CDEA16C6E199D59D907A1736FE89FA6D24C4D0DA1C65ADC070D7BA5EE6ADDEC9B5E7AAFAF5F10BF9CC9053E316ADEF2065946B02817A0673CCE5EFC23B005C0785EDAAEA409B8B6A000562CFBC038C9FE1408221BAC09A1402085E5A2C1D96BD0B93A71767E6E34986C33E6A4848A43FC0F634BBA80B91E13CB68028B3B98D7ECAB03053068A9EDE1461C7AD37F28C45F3DF1A27EE6384E3ECBDF94BBD6A84BDCF0FB4934FF55A26C929A70401B261ED966FCACC6D34E1277736BD91EA4F9BB7C857B23A30688C8B77312FEE801E4622B5CFBBD1F600BD980325CDBE68D41B29440AABA43F1127D2C2F49E951E00055C8AD12AD0E32E479755E6897EF451759D90CF8E3073FA1E275E908BA0C8D1A21D6DF5D75716E7B9D832DC943A2590E7550101E0BB3F5DAAB9FDA752AB6A3E2D2284068CA4F621846981D5BC0A5BC029CE7FCB6AE7CEB6D68F238A93C2DDB6348B68B37F676C089631534868EE9105D47EAA84845334F68EC5EC935C7EDEABA5FF839BB4A14B1AD30DC1503B4F82E5ACEBB0D7D9BA996E1EE048844C47C97314B4EA06CBC82486D358B0E524BC39CF3E04F4ED27ED7259AB39B1145152FCCBC3C5E1E41D2DED96855A22F185BD3327F881D44139BAB6F50268E262CBE529B5FE2CCDCD71715AF2932995CB5FA67C9F0377C4FB2FC4504242F6AE7025579BDA18C20B77AC02904DE0E932F1AF669C92221A3BB9288AC81A9649A5E65E19D349A94B58760EE5172F25A3072569FF92416226F2AA2BD84D22E61D617C36321A06C253E9CAF9E987C2F1300F1579D65B7CC50B0030D43536B0E95B21FFDAB0370D6639AF5FA8E12B92971BEEAF0DC409F2D778190D74090C92B58F11D7167A77F1663C5CAADF5C3DA3B03B8633CE27E9CC1B789D0CBC4B9D43BE9B903FAA8B41C88E641533638FFBC15BE57076D3CD65C62D263F84B627447ABB10DEEDAD3F18C03C05D049E35224489BED627C6777EB55368AD11BB9ABB5881E7AF3A39B5565AFDA36BAEBDB0550B2501F0DA6A305BE7F0BBAC9E0FC87AACE40942A1E3E302B0CDA2E38525A52E96D6310271D6BBE1717F20851773173332C9583F5904DDE2857C32E960938F68C0011C97143B818C8DD1BFDED6B0000FFFF0100FDFF000000000300FFFFFFFFFAFF0200FDFFFEFF0300FCFFFFFF0200FFFFFEFF00000000FEFFFEFF06000200FFFF01000300FBFF00000000FBFF00000000FAFF040001000000FCFF030000000100FCFFFEFFFDFFFFFFFDFFFBFFFFFF0000FBFFFFFFFDFFFBFF0600FDFF0000FEFF0900FDFF000001000200FEFFFFFF0600030000000000FCFF0000FFFFFFFFFFFFFBFFFFFF010000000200FFFF0100F9FF030000000100FFFFFEFF010001000200FEFF0400FEFF03000100FFFF0100FCFF000000000000FFFFFFFFFCFFFFFFFAFF0300FDFFFCFF000000000200FBFFFFFF0100FFFFFBFF0200FEFF0300000000000400FCFF02000600FCFF010003000000FFFFFAFFFFFF0100FDFFFEFF0000020000000000FFFFFFFF0100FEFFFFFF000002000100FFFFFDFF03000200FDFF03000100FFFFFAFF000001000400FFFFFFFFFFFFFFFF0000FCFFFEFF04000300070000000100FEFF06000100FFFFFDFFFDFF0100FDFFFFFFFDFF030002000100FCFFFBFFFDFFFDFF00000200FFFF000003000000FFFFFDFFFFFF0800FFFFFEFF0200FFFFFBFF0400020002000200FEFF0200000000000000FFFF02000100FBFF0500FFFFFFFFFBFF000006000000FFFFFEFF0200000002000100FAFFFFFFFFFF01000000FCFFFDFFFCFFF9FFFFFFFDFFFEFFF9FF01000400010002000200FDFF020001000000FCFF0200FFFFFEFF0500FFFFFEFF01000200FCFFFFFF04000000FBFFFEFFFFFFFBFF06000400FEFF030001000100FBFF0200040001000200010003000400010002000700040003000000FFFF000002000300FFFF020000000100020000000000FEFFFEFFFFFFFCFFFDFFFFFF0500FDFFFEFF01000400FEFFFCFFFCFFFFFF00000400FFFF03000200FEFF0100FEFF00000200FFFF00000500FEFF0500FEFFFDFF0200FEFFFDFFFEFFFFFFFDFF0200FCFF0200FEFF0200FFFF04000200FCFF050002000700FEFF0200F9FF02000000000001000100FAFFFEFFFFFF02000200000001000300FDFFFEFFFDFF0100FFFF020003000000FEFF020000000200020001000400FDFFFFFF010006000000010000000000FFFF0000FFFF030000000300FDFF04000300040000000000FFFFFDFF06000700FFFF01000000FDFF04000000FDFF0200FFFF000000000400FCFF0400FEFF01000400FDFF00000000FEFFFDFF0200020002000000FFFF0100FDFFFEFFFDFF0000FEFFFFFF0000FCFFFDFF050002000100FFFFFDFFFDFF08000300FEFF010002000300FEFF010000000300070000000300FBFF02000100FFFF02000000FDFF0300FEFF0100040002000600FBFFFDFF0100FCFFFFFF0200010000000100FFFFFFFF02000200FDFFF8FF0000FEFF010000000000FCFF0000FFFFFDFFFDFFFFFF02000100FDFF0300FEFFFBFFFFFF01000400040000000100020002000100070000000300FBFF0100FEFF01000500FBFFFAFFFFFF0400FDFF01000200FDFF02000100FDFFFFFF01000100020001000500010003000500020001000100FEFF0400000001000000FFFF02000100FDFF060000000000FDFF0100010005000400FCFF0100FEFF0100FCFF0100FFFF0100FCFF00000800FDFFFFFFFEFFFDFFFEFFFFFFFFFF0200030003000400FDFF02000000040001000100FFFFFBFFFDFF0300FCFF0000FEFFFDFFFEFF03000100FDFF010000000100FEFF0300FFFF040001000200FFFFFFFF010001000200F9FF0000FEFF00000300FAFFFEFF01000100010000000000FFFFFFFF0500FDFFFFFF0100FFFF0100020001000200FEFF03000600FFFF0100FEFFFFFF0200FFFFFFFF0200FFFF01000000040000000100FFFF05000100FFFF0200FFFF0200FCFF010001000000FEFFFFFF01000400FBFF040002000200FAFFFEFFFEFF000002000000FEFF0400FEFF0100FDFF04000400FFFF0000FBFF0000FDFF0600FEFF030000000400FDFF0300FEFFFCFFFEFF0200FFFF0000FEFF0300010004000100FDFF01000200FFFF0200FFFF00000100FDFFFEFF0300FEFF0300FBFF0300010002000000FEFF06000400FEFF010003000500FEFF010000000200FCFF01000000FCFF0200FFFF0300FDFF0100FFFFFFFF0200FEFF0000FCFF0200FFFFFCFF030004000100FFFF00000300FFFFFFFFFFFF01000100FEFFFCFFFFFFFDFF0100FFFFFEFF02000500FEFF0000FEFF00000500FDFFFFFF070000000000FEFF0000FFFF0500030001000300FFFF0100FEFF02000200FAFFFBFFFEFFFDFFFEFFFEFFFCFF01000300FFFFFEFF020000000000FDFF00000100FFFF02000000FEFFFEFF0300030000000100FEFFFFFF010004000200FFFF0900FDFF0100FDFFFEFF0000FEFFFEFFFAFFFCFF0300FDFF00000000FAFFFFFF0200FCFF0000FEFF00000100FFFF040000000200F8FF0000FCFFFDFF040006000400FFFFFFFF00000000030005000100FEFFFFFFFFFFFDFFFEFFFCFF030001000400FFFFFFFFFEFF0300FEFFFEFF0400FFFFFAFF0200000003000200FEFFFEFF0000020003000000F9FFFDFF00000500FBFF0100FDFF000004000000FEFF01000200FEFF03000200FBFF0000FEFF0100FCFFFEFF03000100FFFFFEFFFEFF0000FFFFFFFF0100010000000200FEFF0100FBFFFFFF0100FCFFFBFF0200FEFF00000000FBFF0400FBFF0500FFFFFCFF010002000000FAFF0300FFFFFFFFFEFF0300010000000300F8FFFEFFFFFF0400FDFFFBFF01000200FCFF02000100FFFF010003000100FEFF0300020001000500000001000400FEFFFFFF03000300FFFFFCFF02000500FDFF0200FEFF0300020000000200020003000100FDFFFEFFFEFFFDFFFDFF0200FFFF0400FEFF0000FFFFFEFFFFFF0100000003000200060003000200F7FFFFFFFCFFFFFF01000200FFFF0000FEFFFEFF0000FDFFFFFF0000FEFFFDFF0000FFFF0300FEFFFDFF03000600020001000000FDFF0100FCFF0200FFFF02000200FBFF010004000000FFFF01000100010004000000FFFF0100FCFFFCFF0800020000000100FCFFFFFF00000100F9FF0000FFFF0100FEFF0400010003000000FEFF02000000FFFFFFFF00000200FEFF0100FDFFFEFF0000FFFFFEFFFCFF0200030000000200FFFF040000000000FFFFFBFFFEFFFEFF0300FDFF0600FBFFFFFF03000500FEFF0100010001000100FCFFFEFFFFFF0300FFFFFEFF02000100FEFF0200020000000100FCFF0000FFFF0100FDFF030002000000FFFFFDFF0100FEFFFDFF000003000500FCFFFEFFFFFF030000000300050001000000FDFF0200000003000100FEFF000005000000FEFF0500FEFF02000300000000000300FDFF00000200FAFF040001000000010000000300FFFF00000100FBFF0200FBFF01000500FDFF00000100FFFF00000000FFFF0100FAFF0200FCFF01000200FBFF0100000001000300FEFF040003000200FEFF010002000600FBFF01000100FFFF01000200010003000300FEFFFCFF0100FCFF060003000400000002000100FDFFFBFFFDFFFDFF0300F9FF0500030000000100020002000300FEFF0000FFFF0400FFFFFFFF0600FBFF0100000002000100000001000000040002000000FBFF0500FCFFFCFFFFFFFFFF0000FFFFFFFF00000000FEFF0100FEFF01000100FFFF0000FDFF00000200FFFF0200FEFF020004000300FBFF0400FEFFFEFFFEFF040003000000060002000300FEFFFCFF03000000FFFFFBFFFFFF0200010002000000FBFFFCFF0100FAFF050003000000FCFF0000FFFFFDFF04000300020003000100000000000200FFFFFEFF010003000000FFFF03000100FEFF020002000000FFFF020001000300FDFF020002000300FBFFFBFFFFFFFEFF01000000F9FFFEFF0300FBFF00000300FCFFFDFF03000300FEFF02000100FFFFFDFFFEFFFEFF00000100F9FFFEFFFFFFFDFF0000FEFFFFFF04000300FEFFFFFF0100000007000000FCFFFBFFFEFF0400FDFF0000FEFFFEFF03000000FFFFFBFF02000100FEFF0100FEFF00000700FEFF0400FFFFFFFF0300FAFF03000000FEFFFFFF04000100FEFF010002000300FBFFFEFF0100FDFFFDFFFDFFFBFF0300FAFF0500FFFFFEFFFFFFFFFFFDFFFEFFFDFF0200FCFF0400FFFF0300FFFFFDFFFCFF0200FFFF0300FFFFFDFF0200FFFF03000100030000000000FAFFFBFF0100FDFFFFFFFFFF0100FEFFFFFFFFFF00000400FCFFFFFF04000000FEFFFFFFFFFFFEFF0000FCFFFEFF0200FDFF0700000005000400FBFF01000200020004000200FEFFFDFF00000100FDFF0500FCFF0200FEFFFDFF0100FCFFFCFF0000FDFF070001000000FDFF04000100020003000300FBFF0300FDFFFFFFFCFF08000400000001000100FDFFFEFFFCFF0200FFFFF8FFFBFFFCFF0300FDFFFEFF010000000200FEFFFDFF01000000010002000100FEFF0200000001000300FDFFFEFFFEFFFEFFFEFFFFFF04000100FEFF010002000000FFFFFEFF040006000600FCFFFEFF010000000000FDFF0300050001000100FBFFFEFF00000200FDFF0100FFFFFFFF05000100FCFFFEFF0000030001000000FFFFFFFFFFFFFEFF04000100FDFFFEFF070001000300000004000000FEFF030001000400FFFF040004000600FBFF0000FDFFFEFF05000300FFFF0300020000000100010004000200FFFF000005000000FCFFFFFFFDFFFBFF0000010000000200FEFF000001000100FAFF0400FFFF0000FBFFFDFF040003000300FDFFFEFFFDFF0400FFFF0100FFFFFDFFFDFFFEFF020002000400FAFFFFFFFDFF03000000FBFF01000000FDFF0100FBFFFDFF0400FEFFFDFFFCFF0500FEFFFDFF02000100030004000400F8FFFEFF0000FCFF03000700FDFFFFFF0300FFFF0000FDFF0200FDFFFBFF010003000500FFFF07000000FEFF0400FFFF0000FCFFFDFF04000200FCFF01000000FBFFFEFFFDFF00000400FFFF020002000200FFFF010000000400010003000400FFFF01000200FEFF0200FDFFFFFF0100FFFF0200FFFFFFFFFCFF0100FDFFFFFF00000400FBFF0200FDFF010004000300000000000100FEFFFFFFFBFFFDFFFDFFFEFF0500FEFF03000100FFFFFEFF0400FCFFFEFFFCFF0000FEFFFBFFFFFF0100FEFFFCFF02000000FFFF00000500FFFFFEFFFFFF0300020003000200FFFF04000600FEFF0200020001000200020001000200FDFFFFFF0100050001000000FFFFFDFFFEFF050004000300FCFFFFFF0300FFFF01000000FFFFFDFF0200FFFF0300FDFF0200010004000100010004000000FEFF0400FEFFFDFF0300FDFF0000FEFF0300FEFF0300FFFF03000100FEFFFBFFFFFF04000000000002000300FEFFFEFFFEFFFDFF000000000200FBFF0100FDFFFCFFFFFFFEFF0300FFFF0200FFFF01000000FFFF0200FFFFFDFF0000020001000100FFFF0300FFFF03000100FFFFFDFFFCFF01000100FAFF07000000FFFF0200FFFFFBFF00000000000000000400FFFF01000100FEFFFFFF01000000FEFFFFFFFDFF0200010001000000FFFF0100040001000100FFFF01000000FDFF0300FCFFFFFF0200000001000400010003000100000002000200000000000000030000000000FFFF04000200FEFF0100FCFFFBFF05000000FDFF020000000100FEFFFFFF0000FEFFFFFF010004000100FEFFFCFF0200FFFFFBFF0100FCFF0200FEFF0100FDFFFDFF0000FCFF0100FFFFFDFFFDFFFFFF010001000000000000000000FFFFFFFF020000000200FDFFFFFFFEFF01000000020001000000FFFF0000FEFF04000100FFFF0200FEFF01000000FCFF01000100FFFFFAFFFFFFFFFF020003000100FFFFFDFF0000FEFF04000300FEFFFEFF0000FAFFFDFF000000000100020000000100FEFF0100FDFF0200FFFF0400FEFF0300050002000200FFFF0300FDFFFBFF0500FFFF0000030001000200FDFFFFFF030002000100FBFF00000200FFFFFAFF05000200FFFF040000000200FEFF040003000000FCFF0200FFFF000001000100FCFF050001000400FEFFFFFF0300FFFF0200FEFF00000100FDFF0200FFFF0200FDFFFFFF04000200FFFFFEFF000000000200030002000200000000000000FEFF02000200FEFF010000000100FEFF0300FFFF0100FFFF0200FCFF010000000600FEFF0000FEFF0400030000000000030003000000040003000000020003000500FDFF0300FFFF0000FEFF0000FFFFFBFF00000000050000000300010001000400FFFFFFFFFBFFFBFFFDFFFEFFFEFF0000FEFF0100FCFF0100040003000100FCFFFFFFFCFF0000FCFFFFFF01000000010000000600FCFF01000000FFFF020000000100050000000100FFFF0100FEFF01000200010001000200FFFF0100F9FFFFFF00000300FAFF010006000300FFFF04000900FDFFFBFFFFFFFDFF0400FDFF03000000FFFFFCFFFEFFFCFF00000000FBFFFFFFFCFF0300040002000000FFFFFAFFFEFFFEFF09000300030001000300FCFF03000000FEFFFDFFFDFF0100FFFFFAFF0100FCFFFEFFFEFFFFFFFFFFFCFFFFFF0400FFFF02000500FEFFFCFF0400FFFFFAFFFCFFFCFF04000200010003000200FFFFFEFFFFFFFFFF0000FFFFFAFFFDFFFEFFFCFF07000500FEFF01000000FEFF010000000200FCFF050001000000FEFFFCFF03000000FEFF0100FFFF0000FFFFFEFFFEFFFDFF01000100040003000000060001000600FDFF03000000FCFF0600FFFF0300FCFFFCFFFFFFFCFFFDFF01000300FBFF0500020003000100010005000000FDFF010001000000FBFF01000300FEFF0300040001000000FCFF00000700FEFF010000000200FFFF0100FEFFFBFF030002000200FFFFFFFF000005000000000000000400FFFF0400FFFF0300FCFF0300FDFF01000000020005000400FAFF01000000040000000400FDFF0200FDFF0200FFFF00000100FBFFFEFF00000400030001000200FFFFFEFF0000FEFF020000000400000002000300FDFF0400FEFFFFFFFFFF02000200FFFF04000200FDFFFFFF0000FDFFFAFF07000000FCFF0200010001000200FEFFFEFFFFFF00000100FEFF0400FCFF060001000200FFFFFFFF03000600FAFF0300030006000200FCFF000004000400FBFF0400FCFF0200FDFFFEFF00000000FEFF0000FBFFFDFFFEFF0200FEFFFFFFFEFFFCFF0000FEFF0600FAFFFEFF0100FEFF0300FCFFFFFFFAFF0300FEFF0100FAFFFEFF0000FDFFFCFF0000FEFF0000FDFFFFFF0100FCFFFDFF0100080004000400FCFF00000200000000000300FEFF0100FFFFFEFF0000020000000500F9FF0600FEFFFBFF000003000100FFFF0200010000000000020002000000000002000400FCFFFFFF0000FFFF0100FEFFFFFFFEFF020002000000FFFFFDFF0800FBFFFFFFFFFF000001000000FCFFFCFF01000000FEFF01000000FFFF0200000000000000FEFFFFFF00000100FEFF00000400FFFF03000300FFFFFCFFFFFFFEFF05000200FFFFFEFFFBFFFCFFFDFF0300F9FFFFFFFEFFFDFF000002000000000003000000010004000200FFFF0100FDFFFFFF0000020003000000FAFF0600000002000300FCFFFDFFFEFFFFFFFFFFFEFFFDFFFEFF040000000100FEFFFDFFFFFFFEFF03000100FCFFFCFF0000FCFFFCFF0300010001000100FFFFFFFFFEFFFDFF020006000200FFFF00000400FDFF0100FFFF0100FFFF06000300FFFF000002000200FEFFFBFF0300000002000300FEFFFDFF04000500010000000100FCFF0400010003000200FEFFFEFFFCFF0200FEFFFBFFFFFF00000000FCFF03000200030002000000FEFF0400FFFFFEFFFEFFFFFFFFFF0700F9FF0100FCFFFEFF00000100FEFFFFFF0200010003000300FFFF02000300FCFF05000300FDFF0100030000000200FEFFFFFF0100FEFF0200FDFF0100FFFF040005000100FDFF04000400030000000100000003000000FEFF0500010003000500020002000000FCFF05000100FAFFFFFFFBFFFCFFFEFF03000200030001000000FEFF060001000000FCFF0500FFFFFFFF020003000200FFFF0000FEFF04000000000000000300FFFFFBFFFBFF0100010002000000FFFFFFFFFDFF0400FEFF060000000000FCFFFDFF0700FFFF0400FFFF0300010001000100FEFF0000000002000100FEFFFFFFFFFF000001000000010001000500FFFFFBFFFEFF00000200FFFF0000FFFF000004000600FCFFFFFF01000300FFFF00000000FBFF02000200FFFF04000100FDFF0000050002000100FEFFFFFF0500FEFFFAFFFEFFFFFFFAFFFEFFFFFFFCFFFBFF0100020001000400010004000100FBFF05000200010001000200FFFFFEFFFFFF0000FCFF01000100020001000500FCFF00000000FCFFFDFF010003000000FEFFFFFF00000100FDFFFAFF010000000100FFFF0200050003000300FEFFFEFF0200030001000100FEFF0000FEFF0200FEFF0400FEFF0000FDFF0300000006000400FEFF04000200FEFFFFFF0100FBFF0000060001000700000002000400FFFF000001000300FEFF0000000002000300FFFF00000000020000000200FAFF0100030001000300FEFF00000200FFFFFFFF000002000700FEFFFFFFFDFF02000000010004000300FDFFFEFF0300FFFFFBFF02000100FEFF0200030003000200000001000000FFFF020001000300FFFFFEFFFEFFFDFF00000600FBFF0200000002000000FDFF0000FDFF01000400FFFFFFFFFFFF02000300FDFF0000FEFFFDFFF9FF03000400FFFF0000FEFFFFFF0300F8FF030000000000040005000100FBFF03000000FFFF0000FDFF0400020001000400FDFFFEFF02000100FCFFFEFF0400FEFFFFFF04000300FCFFFCFF06000600FFFFFCFFFCFF0100020001000400FEFFFFFFFFFF0300FFFF0200030000000000FEFFFFFFFFFF0000050002000100FDFF0300040003000100FFFF01000400FCFF01000300FCFF0300FCFF02000200FCFF000005000100FEFF0200FDFFFDFF0200FEFF020000000800FFFFFDFF0000FEFF0100FDFFFCFFFDFF050001000400020006000300FFFF02000100FCFF0000FAFF0300FAFFFDFFFFFF0400040008000000050002000000FEFFFCFFFDFFFDFF0500FEFFFFFF0000FEFF03000100FFFFFFFF0200FEFFFFFFFEFF00000100FDFF0200FEFF0300FFFF00000100040001000000FCFF030001000500FEFF0100FEFFFCFF02000300FDFFFEFF00000000FCFF020000000000F9FFFDFFFEFF0000FFFF0200000003000000FEFF0000FAFFFDFF00000000FEFF0200FEFF01000100FAFF0100FEFF03000500FEFF0200000001000200010001000200F8FFFDFFFDFF05000000FDFFFEFFFEFFFBFF0300010000000100FCFFFEFF01000100FFFF030000000100FDFFFFFF0100FEFF0400FEFF0400000003000100050001000300030000000000FCFF010003000000FCFF0200FEFF0200FFFF0500030004000000FEFF0500FFFF04000100FFFFFEFF050000000100FCFFFEFF0300FBFF04000000020001000500FEFFFFFFFEFFFFFFFFFFFFFF0100FDFF0200FBFF06000000FDFF0100FEFF0200FDFFFCFF01000100000004000700000001000000FEFF0400FEFFFEFF0100FDFFFFFFFCFFFDFF00000200FEFF0200FBFF03000500FDFFFEFF0400FEFFFEFF0100FBFFFFFFFFFFFFFFFEFF0600050003000200FBFFFFFFFAFF030000000300000005000200FFFF000002000200010001000000000001000000010003000100FFFFFFFFFEFF0100FFFF0000FFFF00000200FFFF0200FCFF0000FDFFFEFFFDFFFDFFFAFF0100FFFFFCFF0000FDFF0000FCFFFCFF0300010000000100FAFF0000FEFF0300FFFFFEFF0100FDFFFEFFFCFF000003000400FFFF0100030000000000FCFF03000300030000000400FDFF0200FCFF03000100FDFF02000600FDFFFCFF0200010002000200FCFFFEFFFDFFF9FFFFFF02000000FBFF0100FAFFFBFF0100FFFFFDFFFEFF0300000000000600FBFFFDFFFFFF0300000006000300FEFFFFFF00000100FFFFFFFF0200FEFF0500FFFF00000100FFFF0600FCFF01000200FAFF01000800FEFFFBFFFEFF010002000600FDFF03000400020004000000FBFF0300FDFF0200010000000300030000000300FCFF000002000100FBFFFFFFFFFF01000500FFFFFCFFFEFF0200020000000100FFFF0200FEFFFFFFFDFFFFFFFCFF0500FFFF02000300FEFF01000500FDFF0100000003000100FEFF0000FDFFFEFF02000300FDFFFFFF02000400FDFFFFFF0100FFFF0300FFFFFFFF00000000FFFF00000600FFFF0100FFFFFFFFFCFFFDFFFEFF0100FFFFFFFF04000100FBFF020002000200FEFF0A000500FDFFFFFF0100000001000000000001000000FFFF00000300FFFFFFFF00000200FFFFFFFFFEFF00000400FEFF0000FFFFFEFF030001000100FEFF0200FDFF00000300FFFFFFFF03000200FFFF0500FEFFFFFFFDFFFEFF02000000FDFF05000200FEFFFDFF0100FFFF050001000500000005000000FFFF000001000100FEFFFCFF010001000200FFFFFFFFFDFFFEFF0300FDFFFBFF020001000000FDFF03000100FEFF050001000000FAFFFEFF0500FAFF0100FEFFFCFFFCFF0000FEFF0200050006000600050001000300010001000200FEFF04000200020002000300FCFF05000400FDFF020003000300FCFFFDFFFCFFFBFF03000600FEFF0200FBFF0200FDFF0500FDFFFEFFFDFFFFFFFFFFFBFFFFFF0200FEFFFBFFFFFF00000200FFFF0600010000000000050002000000FFFFFCFF0000FEFF06000000FDFFFBFF0100010004000100FEFF0000010001000100FFFFFFFF03000000FFFF0000FDFF02000500FFFFFFFFFFFFFFFFFFFF01000300000002000200FAFFFDFFFCFF03000100FEFF0000FEFFFFFF02000100040002000100FDFF04000300020003000200000006000100FDFF0100FFFFFFFFFFFF0300FFFF0400FCFF00000300FDFFFEFF0500FDFFFFFFFEFFFFFF0200FFFFFCFFFDFFFEFF040001000000FFFFFCFF0000000000000500FCFFFEFF00000000FFFFFEFF03000200FFFF010002000100FCFF020001000000FEFF02000100FDFF01000000FEFFFEFF0500FEFFFBFF02000400FCFFFCFFFFFF010000000100FFFF02000000FCFFFDFF0200FEFFF8FF0000FEFF0100F9FFFFFFFBFF0200FFFF0300FFFFFCFF0300FAFF000003000300FEFFFCFF0800FAFF0100FEFF0200FEFF0400FDFF000003000000FBFFFCFFFCFFFFFF0000FCFFFFFFFFFF0200FFFFFEFF02000100FBFF010001000200F9FF0100000006000100F9FF03000500FCFF03000000FDFFFCFF0700020000000300FEFF0000FDFFFBFF0100FCFFFEFF00000300FFFF010001000000FEFFFFFF0100FDFFFDFFFEFFFFFF0100FFFFFDFFFDFFFFFF01000100020002000000010000000100FCFF010005000400FFFF0000FCFFFBFFFFFF0100FCFF0000FEFFFEFF0400010001000100FEFF0300FFFFFEFF01000000FFFFFDFFFFFFFFFF0200FDFFFFFFFFFFFCFFF9FF0300FDFFFEFFFDFFFFFF010006000600070000000400FDFFFEFF0000FFFFFFFFFEFFFEFFFBFFFCFF0600FCFFFEFF030000000400FEFFFDFFFDFFFDFFFEFF0100FDFFFEFF000001000500FDFF02000300FBFF03000300020001000100F9FFFCFF01000100FEFF0000FDFF0200FAFFFEFF04000000FEFF020001000100040003000100FCFF01000200FFFF00000300FFFFFDFFFCFFFCFFFDFF0000FFFFFFFF02000100080000000000FBFF010002000400FFFFFDFF0000FDFFFCFFFDFF00000300FEFF0400FDFFFCFF0200FFFF000001000200FFFF0100060003000300FEFF03000100FDFFFDFF060001000100FEFFFCFF03000100FCFFFCFF0100000004000500FFFF0300000002000100040001000300FDFF0000FDFF02000600FFFFFEFFFFFF0300FCFF0100010003000100FFFF01000100FFFFFBFF050005000000F9FF00000100FFFF0100FFFF0100020002000200FFFF040002000000FBFFFFFFFFFFFFFFFCFF0000FEFF01000300FCFFFFFFFEFFFDFF0600FDFFFAFFFFFFFEFF040000000100FFFFFBFF0200FEFF030006000100FDFFFEFF000001000000010004000300010000000100FFFF0400FEFF01000100FBFF0400010001000200FCFFFCFFFFFFFBFFFFFFFCFFFDFF0200FEFFFFFF030002000000FDFFFEFF020001000100FDFFFFFF0400FDFFFFFFFDFF000002000000FEFF0500F9FFFFFFFDFFFEFFFEFFF9FFFFFFFBFF010002000000000005000300000000000100FFFFFDFF0600FFFF0000FEFF0300FDFFFAFF02000000020000000400FFFFFCFFFEFF02000000030000000300FFFF02000000FFFFFFFF0200FFFF01000300FFFF0200FEFF00000100FAFF00000000FDFFFEFF0100FDFF02000100020002000200010000000000FEFFFCFF02000300FFFFFCFFFFFF010000000100020002000000FEFF0200FEFFFCFFFBFF03000400FAFF0700020000000500FDFFFCFFFCFF01000100FFFF0500FFFF00000400040001000200FEFF0200FDFFFFFFFEFFFDFFFAFF0000FDFFFBFFFCFFFFFFFCFF010003000100FDFFFBFFFAFFFEFFFBFFFFFF0500040001000200FEFF0400FEFF07000400FFFFFDFFFFFFFFFFFCFF000000000700FFFF02000300FFFF0100FDFF0300FDFF00000100FFFF0200F9FFFBFFFCFF0000FCFF05000000FDFFFFFFFEFF04000300FDFF0300FDFF01000000FFFFFDFF0400FCFFFEFF03000500FDFFFBFF0500FFFFFEFFFFFFFEFF0100FEFF03000300FEFF030000000000FEFF0200FBFF0000010004000300010000000000FCFFFDFF0000FDFF03000300FFFF000001000400FCFFFEFFFDFF0100010001000100FFFFFFFF040002000100020001000100FEFF04000300FFFFFFFF01000500FEFFFEFF0100FDFF0200FBFF03000400040003000300FDFF0000FFFF0200000004000300FEFFFFFF0300020002000200FFFF0200FDFF04000000FBFF030004000300FFFF0200FCFFFEFF01000400FAFF02000600FEFFFFFFFEFF020000000100FAFF00000500FBFFFFFF0000FFFFFDFF020001000300FEFF0500FFFF000002000100FEFFFCFFFFFF0900010000000100FDFFFEFFFCFFFEFF04000300FDFFFAFFFBFF0000FFFFFDFFFEFFFDFFFEFF00000000FAFFFCFF0000FEFFFCFFFFFF03000300FDFFFCFF02000000FFFF020005000000010004000500010003000300FDFF05000100030001000300FAFFFEFF010001000200FBFF020001000300FEFF020005000000FBFFFDFF05000400FDFF0500FCFFFDFF0200FCFFFCFF000003000000030000000100FBFF06000200F9FF0200FFFFFCFFFDFF030005000300FBFF0200010000000400FDFF0200FEFF040003000100FDFFFCFFFDFF03000300FFFFFFFFFBFF010003000400FFFFFDFF020000000300000000000100FFFFFEFF0100FEFF00000400FBFFFFFF01000100FDFF0100030001000000FDFF0100FFFF00000100020002000000FDFF0100FFFFFEFF0300FFFF04000100FBFFFFFFFEFFFFFF0200FFFFFFFF0300FCFFFFFFFFFFFFFFFFFF000000000100F9FF07000300040001000100FAFF01000000080004000500FFFFFBFF040003000000FDFF01000500FAFF010000000000040000000100000001000000FFFF0100FAFF03000600FEFFFCFFFDFF0200FAFFFEFFFDFFFFFF020004000400020000000000FDFFFEFFFEFFFFFF01000300FDFFFDFF01000500FCFF0200FDFF0200010004000100050002000200FFFFFDFF010003000100FFFF07000100010002000000030000000000FEFF0100FFFF000003000100FBFF0300FDFF00000200FDFF02000400FEFFFFFF0200FEFFFDFF01000000FFFF0000FAFFFFFF0200FCFF020000000300FEFF0000FCFF0700FFFF02000000030002000000FEFF000004000000FFFF01000200FFFF0300F9FFFEFFFFFF01000100FFFF00000100020002000200FBFF060003000400FBFFFFFFFFFF0200FEFF0300FDFF000002000000FEFFFFFFFBFFFDFFFDFFFBFF0400FDFFFEFF0000FBFFFEFFFDFF0300FEFFFFFFFDFF04000200FFFF010001000300FAFF0000FFFF00000200FEFF010000000200020000000300FDFFF9FF0100FCFF0000FDFFFFFF02000000FFFF04000200FEFF0000FDFF0000FFFF02000200FBFF0000FFFFFDFFFFFFFEFFFFFF00000400010002000200FFFFFBFF0300FBFF0200FEFF0100FFFFFCFF05000200FDFFFEFF060000000100010001000400FEFFFFFFFEFFFDFF0200FFFFFCFF050001000400FEFF0700FFFFFEFF0100010002000400FCFF0100FFFFFFFFFDFFFAFFFDFFFDFFFDFFFCFFFEFF0000FDFFF9FF0000FDFF0100010004000100F7FF0100FDFFFFFF00000000FAFFFCFF0200FCFF0100FDFF01000300FDFF0100FEFF0300FEFFFDFF02000200FFFF020002000100000000000100020001000100000002000100FEFFFFFF04000200FEFFFFFF04000200FFFFFEFF050001000600FBFF0200FEFF01000300000001000300FFFFFFFFFFFFFAFF01000300F5F29A7656078895F00CBC0F52967278 +ct = 344C74C3503715BBF62A58BCFF7E6B90993E3036B6A04AC6437325DEC81FA32D17C10AB1E78235EF7D65620E4D992E367EB06DA5907DDDC41B5BB3EF98750F0FFB1C00DF8C55D0C5079B519D732F8E7BB380980565B9A4A9A6F4F6EE1BC82FE1EE88773D4A6F23DDEF3186031A23686EBDDABED3CB49F31B21D4C739870FFD50095F3A23B799D4A703093866CA93E788D5F283FFAD1888EE13E402604686585C5932CC90D195F6D3306E4BD88420F3276471245B983BAFCEE4A09BC931FAB8DDCE8EF9ACCA6EDC0B96BC78B77CBDEBD300710D658F190353B5DBF242C0644D1F6D8B59D645B853A888F4A3A6657FBE54EF62BEF5BD83D99E7A4D4487E3958E3557E3541511AE5268BCF67A9EB6F9D847A666FA5F1E069ADF93AAFBFB41463422ACAD046E3579B269E87E9FBAC70C0C56D0743223AB0627CA9D9B3B77EF075B3AF93A36D46B7EC823BA2F022789CB6E81BCDA19C9542CBB3819F3E70F3AC9BB971FC78359A509A79CF8F8D309A17166C6F83395EC010D14177D33BDCA02F97EE6C9DDFD706DC5777620717E96ED0AE387AA1DFD96B3A8A6FEC5C7CC996B6A64DAA5BC0AEBF5478182DCB9D9F0F5263B6FB991A9C6163D7C8B4DAA8704BBDA48A358F7C2A7A186FD113ED97DAA2426B1F76CBF20EE9431E73EF18A074FBC0C268308DCF5E4BF5E587F33B677EF2F021C6D174FB22CA9A25F6D12A92A290847590DF9DE90169E69582B8299092EDA5AEF26D57735B04C9EE4F10885BAA2DFA2060CCB8F984164CF75FE99A41F718D987E4CF9375E88557801AC7F030ED8760AC02E94BB00F151C91BB9131070EC9F01715E3633D4026A29C6DCF542550902AF8A93184994A8F933DD7098D774E2C28BA32777067468F93B395F60A464B5A4F4D8836A3DF9635076B5D9BC29A54A59EFD156294F9EBE13D3F63CD6DC254DD5F3595F4AB17EC4123E408F0290B1C94CDC8629743E9F9CA4677B351A19EF9FA5B3CA29FFC56F4207925AC56084038E503FF8E1F902F1DAB55C76CA2D94CE7E713204A94DC590C4A05194F8A35E31EBABC6D467D420FBD14F6BBBB124D05B7FD1BB85B330AFDC81CA3F635D6EB2B19F5EDFA7C6B03B462104613AD85F30CCB3F5664F841B8AC348FF7551C77515212C772352A40ABEBC7AE3BE8986BDA2B723A1F663DAC4F851CE5E1545AD8E4EAFBA233C7B59C57921A22003169EFCB0B4EFA71E1FD95673401FB241CB51EB8CEA9546A92C582EE4A47245910DE39E467EC14ABC8712DA4A60476E743E6041EFAC0EB413A972DF3161B812B32AE4205AB4DAAC2196EE3D4E50C8629A08F3373B92A6FDE41BD821A4F2873846E7190D2A6F41C815F710D291D51AC3461E41BE41D54432ECCB039464931296818B70B3AFE2772165F375C0C600E845C4F964C584C955198A181BB38619EA2FD16C1F35E4891A8E0F7436656560D96A3D974E5AB58BA109FB6DB1F14E43474EA31EB6CAEDAE52BFDA7118EC5A02DBBFD2CDD75E5973F31C894E789AE30FC623D4DA5B09DB3ED2AFDC72E0CA89D816A86E08B0001A61F823F3A6B267433D105F416AF0AD4B76A26E6B75BF6A409F0F25BD18888169FD151633B66D063CA832063130480592064571A18ED67C660399C6C1DBBCB89F260081A5F1CD8D2805AA1481023DD139AAE1B04D3A0A4B5E9C3380A541EA0A6A4D6A20DCBAC10C6B1EA52A222978944D5B6C3D740105D91867B6C98CF8A1EACC61DD2D628FAD5A8CAFD964FAE1F304EECAAD5D929A613D075A498A3EBDB1091819B8AF1780EF5AD5068B812F718B048A5AB7A57790BE247155AD6B33AEF056B01705ED6CF7350758804DCAEF83915E900E23C7989236BF64C7AAF11D39E078197F2FE743943329A654E2734A40A6312073CC507D6759A9D9EB15D41CC45918CE0BC6D24B6E60017344408BF68F07E8B3E2E36419297BE73CE9266250B51F4DE8F1CFDA897935598FD8605D5870B056C6EFF22A679B23CFD40D06C2EF45DA4FE9B9E85BEDAD5669D78BE129C7BC83057334C3F4711DCEB264E3ACD1BBC171505A55B31D56B4BDBE072236707CDE921727F24904DEAC6FBBBF8AB46664881BAF934D87199D10C625737B9E9B50C7E7EDF583B4D762641E5263540815278A355D4F20C9BCA1782A23CF958A30E14F09D6C900D3AEBA49C7CB5959ACD846F6857CE2320C96BD64050EAC670D295F591F75A5A34F15A46F50F0F064F9C479E904F5C2B3FEFF73921449523511A1516E9A5724FBC90DD89131E1EE1108215525F369D8597EE1472BD2CC292125EFE101876EB6B68DABEB39C91EB3DEC19CAA5F28E31C3EB5F3A3D57F50003D16FA7D10DB7D4B613935F8EE68BB1EC8CAD6DC22791984650744A9BFA62AB3B3BCE9D399F9848D85BAFB7618008CD2EE8DFC1EE690A79A3127B7F1C34C388D0AA8A8E05A4A19A465D789C024C1F9686A4714C3AB7C7DC7CD2C2A367BD20082883B9995FA0636EBBBB468B1B6534B07B8C923E077097B53BB661FA7B538980FD605566F42C0DC89A0CCD578184CBA7AC6228D7A226413AF159D42002794B901D379FEE6A78D6986E48E7965464C4FF01A8E8171DBB8F8ADDBE21194738B993F7F0C34497AEF7609BBBF9D227956D39F5842684CBE3AC2A248ED794A0EA32FCAB175B6F073E80F1EC4C1C088D9F671CE984B864217251C17162595E443CAC35CB052CDC9E811524E115E184C6C7A5A51FFFFB57C535114A6F2D6BD4462B8C5E1E3AF3285F209A27F0112581BB1F7AC0D7E769A6089511574732B2AE7E8DAF6E1665EE91C18B6CB987CF2E57FD196BA7E78009C977EDF9FF64A135AE3A1C90711B936C4EE344451FA15622BF585AFCDF3EBDB19166F9847A0D9490D557B3D8421607E67025D8E1701B35B600F33D34ED54D98E9C77F898B90C4539AFCAAC05005B457F571659C46DDAD4C966173208776D2A4FC0D98FBDA3031FA7DD3F51BB7AD88B974990497C944A398C1C3340754BFD2D1116C80B1576BCFD6741A6A312D29045E505FAF66AEB5DA1521039BA72974AE63EB665D8DD93D336CC34E07A03EB51D986A7939F04D5B34CB3B4F00205CF94809073394DA422F54995DFF70149E7F282FD9D4117669009F4AC4DD57950018C9511344022756C70BDEDC50FD01C66744DA9E755FAF39604F8DEB885D29EE4A931B273C4CAFF5C79E3AAF54DA406A0E8C052CCA554F2FF5C4316CB0236C37357C9E79C01F36285C1C9D85490EF62D60F15DAF4DDAD9C5A9565EB91BD44540DE0E146752EC3BF8BB574DFF165EE388D98DDCF4BAA0B5B48C94D8462D35E8448E7D5388249F21C25FB3D3AB4E24026114BD28E068192CFBC4AC0CD0EB615DE43C9EF52BF97117BE5F69ADE9BE23B766FD831D7FA386A933D9A8B00406B92FD9A4CC2A3D3E9CE607F87958C6C65551AFA123CF4E97CA61DDE97896CDF78C5C7632C7BF0060A4D80BCB5E420BC697951AC2CDF44D2176BD44358AB82470471555CB5EC0183AB6B351EDB30134B651870C90ABFDD311BF2BF4883454D859D1A1F89F112DFC399EE071477A5B33BC31BA4D3DB31FB4B51CA46F1BABDCBEDF6D73D1845BDA19AC19E8B070C954605F5688D88C2B60DCDDE5B25BFBEBEF16F017F9AE0A5A6BA08DF773315743EBDE699615BDB53B4D06ACB123A48B30447BBEC2ADFFEE130C4C2B8248D4B3BA0F709C6197574A666C7B990FC85B360A4B586EB691D37DD827AF9A71E6DDE75278AD629D9F54DD9FE443CCF11F78B2142A0D50951FF2771EBE51B66F4451B23EB85D29DDEC606A340D8BEA2C63646D680FFABDFF3CF1FC2888A4F4B11C71A7C327384344C2EF605180583CCA345C8ECB47304A9542A6775BC65AD7624FED962377E19AF87DEF616BB29AE4B3F226272202C665995A3E3E520AF20B5A5105B79901EA9DD97E2DF7A09F0030918CCF4342C7C4AD9D4337149ADCE52B85A7375838A0C6963178B35EA1E6B8F14E4F720565645E5B4153DAE6E6F54F55B37917F7024A2DC33BF1C3CB7787DC231C494F4DFFAC50DB072157C6EAE34D897E0A9EE58C50DF19A16D72630E9D9E7C187D3E1EE3591A19BCB84C49917F92EE9DBF03A61EEE96AE7DAEE48E6DD9D255C6655AE72424BE3F3EC1C62A7E2FB7647D9BD6860C4E0D1FC7765E5B7D637E8AFC7C83EEB1E4E837D0FE29BC6514D074361AD8F87828669E861ECDD54036C2A10683568D3255F8E8905A20CE99025C1B4B8F90C2D09983954FF04720BEAC82C73444FB9B48C59F43827E743B52986DD886D432DB177274E8A8CB470E724FF366576EA04B46670D9EA243EBC84A369DFF7F0317908E9FC16475309BCEB6B8D97CD0A219051D8317079E486B0E0049F5DBE382774DA9ADDB2591E0112AFA2E0AF2949E0EA3F5130A7E2ED2DB1AF50E69CDCF1E9EFF215451739DE9C8E09A34152EBF108FBD5049AF3EDF5BA7F9708029A13080C3EC16666BBA16EC18E60DDC3C357C63D084FA1890C56B57BACBE2561000E339C3E1E22561EF17C5CE08AE5483FCDBD19996E498FF44E5D7B6A2387EF89FEEECCB904E0AA2052EF81DF19ECE1ECE3C2BBB8861CBDC32C1DB5ED10A2D588711CD779C227A4D81280E1349613A49BBF49B960773409194096573F1CE22635B018D78CB066ECC45BD1DE3D0926BC2FEBB8328E49858D6FB03A4DE50059E39451192AFFE1D09130EDA9414BA69D53D423C25E15127ACC7B1F6DB1C9C3AF51AAFA252A6942761F511E0CF09DA9B77BE0A3728649FAE32260D39CBD9BEFD7B3A0AF7888C030B1D83B2241C79A218D600EA0097C0E828C4EFFEF719EDBD3512EC6584C3FADD9D4CA8666885D2543C2F1D94730ECE26F2914AA9C3A37AEFACF7E29ACB0DF734F7DEE7328294AD4E4F88D017BE08D9D1C38EF126D3A6EEC5B08264886EDBDF11EB120109E36EF26F6B962B833B19D781EE270678AC1AA26A0EE9AEA28DF284EEEA82DFE2F9F462DA3E48E7C05FA0665D788A37E986B0CD25722963FE4C26C9F1AC502B9F23E0107D2CBEE6EFF0301F58509A903A502CD3C25E296F640437351A7FD2FD780B22C0F421B1A857383BFE7E3D5ADFD6AE3C6A310C3A1471368C15E1DA92C0A7B8835663A74A3FCC6EB3B844E619D69B988DD01AE466CC2B28B5F44C6BE70FB94D795AE197BE32AE8BADC02793CBFEA18C6DB3A2EC64CA2652487F17C25434BE794296E0DB6B9B2131962ADD51A854A91A261A56924335B027FC1AFF5CAE7A28339E75B6F9884F4AEC353DED0B83BC286C9102ECE901758D9E4B1AD94FA0F69B39C91DCE2DDCB55FDB8EED26216CA19C6B0C0BB82DD01B89A106375344F7866B117199A722ABF57A0BA38D2E23E6909808034A0144E26D6AE377E3C2648EC2A04254A0EB2FD0B988BD8A22020D6EE5909669CCE98463BF09FE2C610B6EAB4D403005936980491EF4B61754B6510CD6D1BA994FB8757102600A7CD3F27D190E71CCE80997F142230489D59C432013BEDD9F9A155F219A6709A0200951AFB4150B6565213588D978E22CE56C7B336BDC59BA25005DE826A7723EF07207363400F59CE86E8A73FE3CFE51BDB27D5D3025E4ED46F9D22831F59534D98C480C204FC17C777E1CC470C16CCC171369051A54F3CD54E0C00BAB940B4BB445C2163B5FDA28A00EA168E9032CC11F78DCDC2687B748B0393F06C6783CE1FB7F5DB38EFCBE730E0CAF14D149CCAF47DE1917C030BD5B4B775FC6E2B952A07A9E20741982AF5E429B31228F8BE905D0A8E55C62595DBCD3864C15E32E340D72173EA971DBE05A5D641B72117C1ADFA54F9D25689871023DA823009FA2819C89B53751AB67A385E8F1540F26535CD98D5246070366AC2E5D736E6C5972568B55F5C1BDAF5F107E2520B21EB2DD5B7A5F22DB47AEF5BE6D9D4ED36FC70557EBF98AB2CAFDF5757323A53F7548B686AB8A21DAE7939D404DD95F7C96B8CA9EED53C9BC013E9C6AFD8BE1A851FA7E3AED1F61DD72392C6A21EA4050E9345A142BF0B3F9F122BA3AA758BE6246A883AF4727AE14E1F0417CAD39A9DD888250D4DF8822F03CFE881799F737E2796B781CE8805FBF83534B70E45DBDE9B06FABDD699717E562D0A8D794FA93C0C6C16F528B7844AD080DC529B12D43E8E60D3A8C3FC246A7453F5214E3F64B59C36989648E7F0190CFC48064AD8266CE3CCA306A727393A5C04DAAFE84AB1889F4E7CDA3ECD57AD5989568B0185113898B4DAEB7252AAA9CE421D7D7EA4A9F8DC12C09D73FB044172A966DFB27FA125C76C50BF5C6930D321EA7C9D8DECE48F2F79E4F6C6B482996BB6E3459B526449A262EA08B8A11467320655B7F2008A8C15E5E75C5750D4C9A8C71F424E930FE0A42985750E0B3628EA391EC6E11C4631CE5C1B1B867C169BE3E75A11037966CDF2673E9E4600DBD2A7721EE254AB11119599837DD4217CDF66CBF9D64CEC1B010D764846F2565F3212ECF64AAD4A2C2A749D5F154F920ABED62853C77054811D1E26D03C8EDEF34895758199492CDA9206847DE76241E89942577B838923002979C93BFE12F4F407C239A22571D7F1753BA884B7A191083786FA8B393B38A5EB6925F08B3117BC8B4D7E750C27C780B5F0F039712B3B743B75C2017A990294CD23AA40EA159288153F9F6B9F7B21F1B6BFA049FDFBC37993EB6953E6DD439D4B86A2CDDD4A73FB0C9A77DD6F4D58B5FF5A4373D99F5841F294002D2E9A5C6235D88F03AC5591B794901EA3F74A8B119F0EDA1C0E4BC39356B62B9769E5F31504CD24F312C6828E4F5A87BDEB740953D6542E9C7C29A16B84A75B7B62407516C5F46563C92AF783D2E4D764662E1E3ECD8F0C6E0D354680BF6F26A9B51F1AD6A3494A3611BD84868EEBEFC76CBF9DFE79408175C8FC027C1CE27FCF058A6279691AB7947BAB35C38B8788F6331F1388BD6A3B253C27DF82BD2AD1322994140D0477CEDF2CA5A8D5BC47FAD554BE185B2F813771A0D243B4C2F8BF424012C1190BF75CF918DED5DA0AC781A276469419768A9535C302BF5E6BB669E4F68788450ADB4994E38705B31363E0E8056B33941559ADDD65EF793E3038E3FBE05063CF0C03254ADBF074C9801981074DB9F0568C6A95E2FA3766A4EB5056C3CABE74A899B3F2106C4D7AB69703A81C127D49A29D00B75223C2D7F323F0C74C8D557642286070218CA6F45DCD2046013C4936B0064E06E97104A649D12CCBCBCC5F1038F82E286D5795AAE60A5BC36E87F12FBBAE1D4DB9E567AD7F3093154E199AF6DC3A9B3B651ACB421FA3B354386F553E372E3954CB70EE784A09B3E467C03A97B66D2F36395E65F4D6C76F5F0524C381F1D968BB930B365FB5DFC922A9B26400AB9D93D9730FA98F73EBD901D648FA2E9B597EDBA168753ECE160117B7BD7084329D7C8FEFCAA3788DD718DC1BF883D2CDCA66851F8BDD09CC123656B5371714337EDF952F1648DC9074CCB983F1F964EFD7340314026536B4D777CEAE6EDFC63CF985D11603358DE0C1DF9D702FE4413A52DD354BD657D0D69AA44A21C27A8444AE502EE3AE3A7622349CBFEBB320A83EAC8D5BE292D5FA1637424ABE340071E09B93AEBFED1C55304B88F4B6DD44B13171A38D5380ED7EDF3EC9AAD62067BEFFA624998A2E1F7720DA7AFE7872969EF47CB913BFF62915B0408396000C87CF5D30328221A04DD3B5773AFD1334465DEA014344D52B9ABB7F28BE8F357A8D53024BC9C9B05BB99F784C19D5E8757CC7DC87CE4300ECA02B975B7D203E270D0133F8471BEFFF02A89F40521D0FD7552205ED39FCD312C510B42656A5E68625358747E3BCDAC08A50D5A408B7468BD18F33D9F2CFC390D9A2C541359574C41433AA391A72B8BEEAE30E3CC0AA83F80748AC91721006B4FB69264D48B1CC0E2B22BC35A6CEBB7F1D1DCC4D4F8C5A6714B05A0F7543CDD409598B6A883A774279A2C7FB194052CA9FA0EA41B3180CFD7EEB480932775ED7C7616123CF0305C6B2A935BA7640DD4D6EF6F642BF881F26FC4971C5DE5E0970032F9E954309E8292BCC48296B1431FCC3E64B2A19D14AAC233B7E728E0847421D6A602B48190B2F261B3D6A2AFC3DF6412FC982CFF4DF6B90064FA639163D175E26D690F1149575321C4411AE94D6ECEFC126CBAAC4FDFEBB573B293B8EC715C0FEFD2C323174698A8630DC6D2CDE91A6A36D64D6DCF2CE0F399611F90239135403167DB573A11DF135F630B51E8A3B112F3503FE07844A114C6F499725B23963A29AF91704FA738A924C5E4BDF2B5602A8461A1ADCD8F499F6A14DB94E3104DD7DBAF262029F974182536C6D2EC4E3E3BFE16287E6A2B8F03384B56DB9F3B4AAF1F832827BDCB99E6A7A9EA8ACDDABAA873E01F4C70EC77549C4734BEB777BBFB52208C074104680AF07E791E5C49903306B515D6449854FD6F04B87D342B91F10A1A6EBD670DD21E9ED718991DDEFBB82C05DDBC4D3A5A111A3B2F44C75AE485100714CA8142A3CB4AA379FA367BBA4C3089F3769B9B2CFF5891F18DC6080E272E18AC4D32A203C6AC0DD9E9B3C2BEECF5D33DD879F7D6F2937FB11D3719D3268C10A94FF4BF6CAD2AFDE50703E81A75CA57564787D1124D0D6251A2B2125C73730F307AAEAE70D264948019627DDFC44D3E6955A35C9AB9A57BFD6A2360E4C52E3F55EB41ADB1294A0EDA735C1FA2EEF100E79CF95725DC19F7F9DC327D2F57B380F41C1DD1B07F27AED3F6F92ABE7354DA09C99EF111E008DC9213339BD06FE47E77109B1BB525A4517165AD554D3A8EDA57623B6871DEB50FF15DF9F3C92A6CE86AED588783362A79437D7AD9AF3DD8FD080C5FFA226D3A3EA7CDA5C2593CD9E78EACF6C02861BFBD65B11780CAB9CC7F3384958129AE2CCB95AAAC3D36054E9A11CAD7E47DC21DAC9972711EDADD95419364A21C4976EADCFF1A6F60F51453CC164CD050A19988ECDF950B2654CDBBB1945DFBBA498C97FC78AA350149E41D354578D86A5CDAE44A9AC83475BCD36A1FA6AD240D04485B275EA328CC79F8957C4DB87C6D38A67C6C294667F78B918F56C2A5CD27E4518647D3164A37AF03FFA878B91B2A53633C6D9400C9F12EA925DEBAF6896E05E0804A1BE1C15F3166AE599E57B36C6DE06D558B61BFF0FD73F722FFD987FE2B44EDEFE2811AD3E63459EC445EE4B30798A7F5DB5E7C52FAB96D4849ACD5A609584188B107B4E7C559A9775B89FE84E6695DDD049891D3C0B1E9885390C13EC4E493DD60E0DA53FD238EA31E54E42DD39E1915D7D66EE0E42487D9E825F87AC79360220B928D9A34298C0141C1B54D52AB7053D6EB13EBA1CD6CB10F77C7DBBF49C330C00BA10D7D341DF7F3A3EF5579D071E08DB131C1A3252AD4FE6BD904A6B686070D1C6DB56C9C2B8D0D9C0625FAE6E6A7C570B156E5C0D0522E9D1071258DF9EF537A38C72B770126913B8D446B26E60B9F874A86CC272A0C55F5D97AAEECB8FF045BB85DE082C97F6C8B062C071F2094C000C1C87EB30C67B0D6A6B9CAB17A1029EED891EDF5856E40783E284A82C76FB384C2293617BC060BBEA13DA8C800D56E99C17843E3501688A9839DE10674C3329E0E0F4AA985561C10C3AABD3D7C4F980A77B5445B6A12FD0EFD0E796DDB4C892D32E1E9E0F443040F6ED5E6A8A3B1ED8042B08DF70B4194A14DF6BBBF63048F9287452F9DE60A69FE19C04FF1641DF2E383C05CACD31FAE0DB74D8769232389BC056335D10A939F3172EB01A5C0EBF51F3CE14DD9271D741823CEE8AB27415A792D7A9741C02E4B200DAB42BFF46FC4EAF1838B08AF844177046BCED19EAA91D484D4F9719B3716438BD0400F1D1181FF20DAD4464D7C8CA25A2CCB2A6C7D43DA07440AB01F68C2D12DFB7E534973EE546A05177A817EAE92F937AA90B9415C736052BDDE04EDF9F8B162076942A3A5EAA8C43C87BAA33C4971B999723156084C92F11B10B5D27D3959503EEDFB058857DE8DDE97D8FF499C346D4B3A1A98AD00FA3E73967D9FC31FE4807647EEE3D027B371B6C3985F40EF43BE70D1CAED9370530B81D6EFFC8662CC35C8C52DF7A249596DC62D685D2F3AD6790BE2CB4F9D20A37BF6AFE695204A843D8B6B8A62AE2B5A1B9498D9A703FEA67A915E1365D14A7F56C6F9B342E5077EDC597C81D28E1649C8C65E52640B4688F3ABDB5CFDDFD4F31DE49A82F5E40C778FEBC79DC2400C7A826D7BB1E7756FFDEBF092007EC2E816400EB99FC437B3D7E213E6D1A503B24E0299A41224685B8CD11C9FFA06995BE3210BCB576F936198C3A210D69040181B192B9C2763555CC94696304C6F27E33E1606C26ACA0CA92CCE6FE6DDB77567FB86F21196DE256439B5D33518F236FF914B230D596549FE3F941F6B53042E37539F513DA43C4AA0C9516B25F5ED40CA95A2851CDA2509AC68BC252740F17A148C5C2490853F1D735939E8CD6C250A0A797FD5E559CE63D92AE0DC71D78A63CD23637DD9B50F43549053A4F4A4CD4BBC3F593DEB0061F09D265F82FC60C59B7EF93D448FDBC7F91A895167D5569004E9495F2AC1FEBE009A87F458925478D4C73E6923DC54B0FB667F87C5A30A74F6BB9F78DC4429053F890659F9789F6A905FD4F8ECE4C87E45AEC6A33BB1C8C375AFEF443A9B087C0DBC26359E48A38E6345B986DADC3E7862EE3D6B59BC03C7ADB4AE793AC2E9A2AAB0A947D01014D9C67126B82A2BD0BF4D29DC141ACBC7349F8A8D158BD5108DF87160B3D88E7F3FD92B1878999BEF11D50ABE323D53E3C83B7A331CF4338774F30ACC9EEEAC387AA2A66613B499536C493F4B2744C98D306365CAB773EF7995BE4BC78F9D30CE2CB1EC81C39967A45B570031B63620893BDAEF49DF265B9AE8549E96800158B7E8BF7FCB31597FCE70DD0394D0A0457A16932B2F520832024083C85F7E0F8D00082C3668FFA273E52DF3B0BB160C67F8A1A69127C5544450BA5E796E52F23DE7AF689F57ACA9ACF69C60BDB746FDCB5C87320B5BB031D9F3730BB171E373FABE1BF7A7C01D60BC019BD416342E3891F7F3F668CCB29987AFE94C17826931243C1EE3AED9E5BEC7E870827717C375082BAD8286518CA1B77FBCCC8589F08323C1F6E2D7C1A5DC67764731729A0CFDE4D1CFEC83D43C2A50136225457C888E398D5CBD979B7B321A84C46E49C48753BF48C898BF7A21CBA46E0719422FF44AEA0E8897EF2760EF168919918515CE8709ED3DE15C22B7BB482AD725EEC6F007B131EE37E7E4E9F7B90481BAE13346B78EFA726565ECB6B3677C82A953903EDA83D3FF0A4E92B4A61CFAD35989C5A12E0A1522A5DF1AF539CF01F4A5E9682582D8CB8D6BB4E3E5A4897E647033E09DABDF349527ECE53ECDDEFABC9CAD6514A4121CB82AD712A72B6EF09ED659FF96A193119748CE347601E103E49D751AD2B8687E57C2AF3B50D38797CDAC9398215A95EE253F85A8DE3D8A80EED26D396FCAEC588CF635D6614B17F2B20CAB9D43D1EA36609B3D9F201E78A9EA89D20EA59AD1B4B48361A41C4FFAE1CA578F5559D6035F69B8509846E91069990A8036B0285C97B3EBB43D80A8FDCA6847BED68BE4C66F7AE674B9BD433B497FCBA11151445BB2426ED6CD16DD9433D7E435516B3D6F1A9B0EC86367CF52EE1824B01E8D1C6FDA358001C31658EBEB35CAB679074A17E6B73F1B899826255F68FD0451DEAE0C38DCEB96E469199247600AFFEFA77E99238DA7199917E3939FC99115F362833D58AE92B41362DC9CAFE8BA92E930D9D147375EE7ABC857924CB89B494F66F221D433AEF6A0A2F50606CD451A4CCC0AC34A90465D45206C28812BC5E7671CD01EB9315770C1096FD8B17B1486EA150896D35680570190913D070408ED3C5C5E7AD21B273E1DC875D1958BE9918E45F582233598D13038B19788206342E07AA2B5522AFB9A06BEC5411430F8FF70EA71FAC355262E0D6A5824CC071B4EF5767DA18A08A9C9FAC6FBE9F9E46EB06E80D90D7D8D9B01DA1850468BB3F09F691488CCDBEDE57730ABCBFBCFB29150C8196B1C29D5A3914D671181370948DDCE82B0C871C889434CB86754B51B583BE7D4A960DB7662F696F3108904C6B38EB566F1AA616939C41792B62585576A560A27632D757F6AFA781AF5AD002136B6BE7975AD8FB2766B70A3B994EA556A412DC30937C806018885DEEC2ADADCDB6714AD7AC1B0187F9F09787B30373364AF717FC23C0129186881CB0C6330C278D3058C801E64F5F9C0803FF94B04BE91A70B805CD4087CF60BED89C5156CF4A8CBF18A453617AF05F8CB7951829E32CFF1C38C78C9AA6CD01EFF97F13474AD76663DCD325799F07065BCCB2A054BCE72F50ED10BFE6271BA0EA77DB21EB9E36AE5BEAEC8BA802B13C3BA9834D19F18F0AF7659EA033CB6413A71665B96736DB220408717055ECDED69782C369D3E71379A28F1A4E07505E92F68600FFFF8054FD928F50FB9353074C3A7CC6F78D56E299F849993022F5D4FAE05A6A66F54147649C1BDDFF785130193DB805A9DAD92AD7C9E4DA5113E5B09112CEB2ED0B40872456E6C6B547BA472A3ED5DE7C29D19C743993CA5A470E58EE2AC70BAB51B5C247954A2652D16622E7A57EC7C3BC43A4CFFC3AC9BC01DE57CB90F4031C9306208D389DA6EE0F1031F1664F36238B0D6F23A28EB7867EEFFCCAB769B019A0F38B782F2BDFC8DA5EDA57D26F9E39DEFDE7BFBFE6EB507BBDE4D49C42DA8E1A8273CEDADF87B93B2A6FCEBAE6743D8B2A6A445231E88A97D5DBDDC8417D39233141CA47B76AC96ABDA89DEC38B68FC21551828E06B8E64A18A4868663AF739AB0090F08E6FAFC183A16220C665A44E66B703A21A66D5674DD0C94D82409C87369ED64784DC007D1D477DB7E9C725BA95C207CD6F06C29E0AD86F8E275C16E073A68A1C37C0C0A91497BE39A5BDEF6819E3034688B71D02BFC9C6DCA2CFCD02E1B42885B4FB238BFB433F09AD8B467F8BF88A238BA9486A74825DF3DF184D4818B5EF880E2BAFF45285D4E943AD8D4B4D07D5DAA5E2DC1B00B9EA92CB1AA9D10C45E9E221872F67670214C3C81B49C435155B1B0D446F10348BC6E8B5ED20F48772D7684B00970F0AF56A13D06B792F0140F7637347C4B2E29610CE53F77881C9E8A914D1592B03B5CFA5B25A4719006BF62AD96D9899AAD89FD0A960F1871A76602E3AD5E469207E912359B931E64B05B9E9E8D58BBE948830B2121D7D0EDE6D75353F3CD46A7B66CBC0A0D40905E4D28AE61D68469A94C110B079B4A39268E5856FBE7ABB666178D0B2AE27E6850510FBB6946881E561BF4F3213C30C8436F17900C8254B78DCC532DC4D1C94D58F74A6AE4F138890786112B7036EFBA1AE35922626B62C9A228B39233B955B356BA68444FD4249DD2E95E2BDA16176790C63D8171A7E92CCB85EB8CD035C3CE60EB5A06D114C6D8EC5A3FAEBAFDEF2A6A2B208E046B10D88DB49E133031BEB71FAF7FBECA37B44042D9F9377B4AF0D5E80772EE20C7C590E0550CE416E2F69B900BEEC82E821ABEF264895F35B13CA2BE2204275A891A40A38929C86F1604E2A9BA8B61FFB1B204C8A6F4E2B8EA7A871E58F37B4EF7F67929AFF05C802C219F205E69AD82352913195032FCD4A889E6907DFA5E56F9487AC8776EDEDB9A29EC1BE91ED61A12A4DBD322DD700428E8A45FFC52420C974CC7FC51CF182736B44B89A31F32BAF3ADF6AAF956F12D710B77C4F8C389051102705B2A95029BD5060A96E183122E10F4F76E8B83066E207AE4D9A7F7EE1539150B6A419D2D8FDA33D66AD9D +ss = 9F54377D452090F3631E45B9399A2892 diff --git a/src/kem/frodokem/FrodoKEM-640-SHAKE.kat b/src/kem/frodokem/FrodoKEM-640-SHAKE.kat new file mode 100644 index 000000000..19ed76e2f --- /dev/null +++ b/src/kem/frodokem/FrodoKEM-640-SHAKE.kat @@ -0,0 +1,6 @@ +count = 0 +seed = 061550234D158C5EC95595FE04EF7A25767F2E24CC2BC479D09D86DC9ABCFDE7056A8C266F9EF97ED08541DBD2E1FFA1 +pk = 5E41C63CD4A9FB576AAE6D989B5D9D8C75DFBE665310B5B7F8F80228AF0E9A0B2B08277863189CECB5879EE8FF17F0D1A73267EDB46C65626919CE4B7FDCB33089A764CBA695F43868B6D04B63722412D88ABA009D6756482600EC4CA5DF295C34B1780FA5586247AB88C055F13CD556A8FF8E958F1DA2A26839452460719B96E929A86A980D7328D7E2582322AEEB080742B78CC458D8DF4D032C3DC8D77AD6AC5E58CF58A61F73643A7885DED8014379E3A8CA3572D80C4D70247E0EA632883A5C4C176FBF1746E8E694F2FAA35EE89A16E072F612A8EEF538B79673FE7413497B03301765953834976DACCA296575F7F25349D21751CFCCF1B3BC6CF612A7AA8E1FF1E84AD79E984A363E1B97C32AF74E7D7A0836D5E0CFF83D28D4E2A5B3F0A9B9A938E0B91EC1B59B3356588DF9210F78835C1589ACDCACBD3F3067076E1D9A42045AD37AC87EF6020C12E3C4989DAE0A9154E7C004A137EC90BB013E5A6299A9E0695F5BDBD635E91028CB4BD944D00CBD5DC8CD95D62FC3383E6043D3BD371C151880E1293F3696759F4E39AAD45AD743A879D5582D49D44EB9D8CF4271693D69D25213DA6D0AE0C6FEE4BEB31AEE1CB627C1DA11A6989B1F7E4D72DC0D321960B4AA8D17406284E3C7503F64FD3F4C9498B758272CD75186D6E9A8F3BABB82A6234BF1A2E6E0A0E74C6A10070D86CC9C1334F18501E9CD93D8FD5FAD60CF30D4EA0AD0E8CB5AA24D56F23F59E69EA02E70C1320C915D691B83965C76ECEB00FFC34BCA13E826C8C6B7C01ECFC504D26E05C9B087E2CC881297080301CA939C9C01A9D71C589D31E128DC489C49B3B6BF33F99A82246B0D0CFA5B983E4B4114BF86EC2471C063634FF9F18B06EDCDED21847F2F160902A9DA58B388E56AA7D941783CD0C51CBDF3BED149A760C3CA63758F8DEEC2D5B37BA648AFC16E521541286C1632890775A2DD6C3B470D014E124931AC5D2B1E866561A8C0E374922678701DC2E36B9ABAF3336AC31CB40D8088B228B240399995F6ED77BF6C7683C1510B3C5FB83DBDF5AA6134EB8119F5E771399E63CCD16578E146FA1BD1178A7EC7328471A1625512109D9BA6A130615C66B1115530411DB82A16744D8A6B47F9D2BC276A286B32D339043FE21E294A31BD10884A3276C2A67502D8C66008751E7FB35ED0906ECD8EF23799D5770752D6FAABD37B77C69638771EA0CC82D5DBF01316A4C2C5A5BCBCF161B9CD00AC3A459527D487E6C66695CE5FD54AC2F882320CBD6AF4527177C9C9B06F14BE6EA67D41840BCECFA79886B1376DAF60C8C51962BFC87C5FC2E10994859B1EB0525636E21AF58492A537D1729737F2C5AABB6471BC31F3F6F8C8481237E6D68E9572B3EE5449CD6A023637ED280762CF010C44D673875A71E76439422A20BF6603C4339BE1E2EF4AC430AC400601F467189BD202AD8A9B00FDF17F0BA84BD3A9D17ADC063E948A01AB573DB432AA01EC5A6B5907B92492444769B9E6BA635E2DEC69ACD4F2F81C150CC21A9ED52E30B88A909625700C1F714856FFF7F348DCA7F94870FD710A4056E2429522BFA107D14456CC17BECBF7031040504B5E0110EFB4AC3D718B83975E6D6D33EF4AA007F59DFDC4D3F500224FB0383E3FD7505087720334B4F3A07E376B8D1BB5D6487096297C3E01CB44BB58A79A8833DE209F0187824E77FD73708D4E39D53D3202ABDFA703B22C9A02B9A33E5A1CDB96D2C0DD4C4E25067992577403BACDCF034DF3A73B3A1ABC343262F65C06BE0B665A95D5D96C184DFCF53AC1E7AC77196EE75E1EA4A31E039D4FB730B896572BEEC56487BA4A68A693513AE36E6EF501EBB75F87982A1517A1833256D7F7A83E4FE88B23A1A130E62B1916A95A2A06EF3B563FFC1FE20E9E4E7858F606145B1734E5579AB299D0BDF1021B9A0B1D2464552C93898F10C8D5FD27B95EBEA9A21A1557E49F4276DAFA1594E2125E833834A666E0A44AD065CB16B48DBE47E4628D22967E2770C3584FCFA3B857AF453EBC379D9DD3B7C32921D2D3F5419DB188C5D5A08BD1E257A7D9BFE06F9F9CA85B71654DF3E53F6D65C2623A71B50DAA196C7EE026359C00EC796329A19934DAD208E1C90EA217385B16F4EBC0439AB5479C6A4438DF46E0EC05A3C21C0540736370B0322DCA727B88136696D4A67BF5B3BC03E145A0851BCDBD8577DE61FE550BBAB6F890BF4BC39ED7DE9C7FAC1EB532EC16A3282F3D1B44944E9A0B981B953129D4EA16A53C90069A9F3FC5D5C6AB2107BE6A51EFF63F8AC8A38D40488C0B56AF8D8196002D5157316C4A3524B67818D64D35DEB2A25085E3A4A2A5F3FAA860885DAED4B08029B230366720B8260C91DFC03993E3C020D0F379873343EA0E14D5C5EDF9424F0DD82DB7693580C849A39C8D9793748894979DE1DD5929F829EE1EE9F35CBD37D1E387DD3038D205159C32E67868674D3A56EF8CDD3BF5E54B28638ADF9633701E0A499CF337E883841CED36DF29BD32AAC967EE2C017871053F8371C0BE3B35799913672EFBEBD29488BD0C3BCBF8BE91CC64508B70678E53071826F6A21370E6086F9DE82C6B57EAAB043F17703AFBE1474087D8C4DA6D882E81846FF1B70C5538AC0DBA94CF4B733AFCD814C079F4A611DF535DECE2EED1BB7415F0CEC5693DF24AC9B987108615E2CAA3D630D074A907EBF871EC7BEACC1E1A922B59C3F0AD71426FB87CC2E5D6C25284F900A67E99413B9DAB609D2E6A0A7DA5166EE0080B904B4149045609535CEA42B45BF49F764B30088C22A2724201742932B4BA5F350E7A32082C296CFF5089F15E80BC14591B8489938FE0A89B58A923881A97ACADEAFDAF9660943565A05C8BB44C901E5C701D6BEE6BE8487E7C1C8BCF7036084310991B800B0D0FC32B0AB9C56878DA0CF2FF56CCA5E63E653B3CDAEFF5964CC1E41FDD6103E9E9E69225F56496F8F31A08300296C1A08C752C2BFFECD7C1CBC32663AB119F710F1C724C4B87DD6B5D612E86E1EE322EED76FDE4F170FF4958D4513BFA9F74970DBE22EC1C3847D897820EFDD6E5518125CFEF47194441203184229724C000E7BD67A364FD150B6EF93021FAE8BB2D8A00147D93015A66FAD1B66F2C8B75AD0A099B97AC4C64AD115C054D4AB2C5AB8A0FCBB4F5FC55172A1E6B53DB39F155FC406F22DF1DCF942769F9A960792314F3B4CA127BD4786650CDFB84CA7D5F8C0A56519D0CD8040BAF23BDD0EBB3E43E7A276108F589FCA1FDC8391C11E7BC7C5218BBAFE452E3A9A266F88B35A7FCBFAC51B82B398BCF29662C3E5F1D7B7A8D7B778256F1931FBE2BBA6F9D1BB9309B0EAF7F0102643C6F8CB06C124E6AF80B1AA344C769DBD20B6A84A35B6DF1FB53C90F13597DABD87CF9644B8F814F7ABD0A4DB9AA2EF7FFFADFD4834EFDB40567C913495B784BFAB41F8B4F8364927FA6440EC28BD7AEE2E9F30E86552CF98AF8C410A10DB8BF8DCFB4895EEF0587EDF1A7D75A9AEC0A1B212C60EB1D056C081A26A8BA964C073D5EB0A380A0ACEC3925A83A317E36C4825AA2264BCD0F0862B60AA38F169125068957E999BE923EA4C6BE29C3903922DE7004481A05E090E45EB1288FB62934F3C7DA462D2FBCF64513CC156C5B311694FEF69E42BD1B9356A13A42A9C42E26D2D33AB760CA6966833092D1F468484900178B9D062CFC59B8D18FF0C41CB67C72A6420F6328187D96E686BB8B55729E39EEC46809515E3C6E07637441A303A4F80410A55E06BEA350BE7F69EB802BD4F5B73FBD815F13DE77A4F44FA2838F457ED0D880065797F67AABFA4AD999233FAB1CA3647C696CC9C53385618CBF1400C870844AA0491FF41D9F0B7ADB57E3482F79C91B595DC62E8021E308B51D369683E278039E8A6C7D2604CB8DF911489322416E04E04C71C1FB3638D262A9F637FEEC4898BF2FC80E386A4EEF9D91A93C6B12DCB7453E2CC66F57FA3816E3A85053237635A186CBECE8067C1693903FBD693782D967AA584411EEC1B2F68B78F0EDF4175752136C61F5804B4349EE194B30C867BAC76A46588573E7F4EDFE45ACB4D91707A5BF151F246310C3490AFBF2C3C5479382ED97BB4B83E6F51954EA2C8EA4738002ABB208B32543B98081CD9F517D2A8175E399DAAA6A89B13EE4F818E6A868C8DA4984D68E62232577F63F6B5C893879306093B35418CD409E5DA0EA32780D137010918C05618EBCD7A6E3745288BAB427C17F5E7D1272BAF5A6C09E854A29D70B318D1E73271367FF68E27D86108EA5DD28F2B088295D82D4BAF814DF79A9B09ABDD11E567B13EF3B651D4DABB2B210F606DC7ACE9698D54C23904287AD7C14454850AC19B8863B365F106AEB09B54C02D4EDF120DC98F0EB88345942D75DFC7EEBAE37A39E61A5E45E19A614DFED25178445D5EA5D2CB6C64D319852AF8CAB46B5B658F5EF9FDB1F57BCBA911B170A94F3935613B9E5EBA0E467126B61DD836EF79788717C67EB0AA49BD5E692EA9943A3ED1AD4DD6353DAE96E7DE72E9B511F9C9DBEF744D1FEBF9F7676698A9D66A02937DD9A702978C04DC4B984F530F03AAA91FF5191C784B8A26575CBD815A64C887B076D48FC90ED8BC815EFB3805CBE7C7C2A32DEA289798C6B14739150583B17CAE020C725E8F85574F20A123F82CA684D29F3948BB4640379D403A3EDC42A3BD2CE2AD84F39B36F949B559186BE718598503FEBCB99C75106C80D602F566233DA1CEE8BF6044708F0D68AE0ED5BEF6F2F508BED1EDEBDCF29D99AC81E103A96A6A4A859755433A26068B80B7B6C79A31D731DE669C3E4112914B8740A7C8BDAB2B9C92877E79057D2ED2C8790B704C93DA69522361EBE78384E91C0ACCBF7E26BBCB09CBDAE55016ECF2C5904F577F9A8723FD366D158D910B68949C20B20D04CC35BB3DAFD9E0E579FB4913F253624CED98DB2C27051B8D409125DA3C459B97E32E07FF8BB22BB76955178AF565A2BB1D51ABF591FF90481A13EBF8797145C0DFA0E4870BA89C87CE4EA8B18D52D3B10003932292A40166115A0D5221F3AF152C4F1D47B14F659B834D697B2A5024CB70D0D74A59117F5C92519CF96A510D70DCA39F108C38ADBD1FDA1D09AEEFD7A9CCBB8DB0A6B3DC8536A3D567A40A76CFCAEDF7A7CD4515AE7B30DA0E2E2D8C38CB54B9437278F97C699C1F612FDF59BFA0CAAF071ACEB991484FDD62DC75DDCD80E06835A82D2E6AE64C01F3AC06285D806EF371B0E8CDEC1F2CBD8AC3F5290C88807B2EAE3A2B7628E8E76DA8EA9A21A10070696703131D66422C43FA0102A466C95EAAE3A7881EB910AF1B19452B410A005312D30A4550121633ECB7EEC8EF6FAD5A111757E02D9CA9E9799BD600CFA9C13DCC9B8A08696CD9647C59CE9C4CFAFD60FEA9C31C4125CF8A2DCC3CFABD9876B2959E26804E40D03CC85B93190C7ED02A5B5D99557E8A598690FE4AF3CF4D4A6CCFFD5D7BF93B11F9741CB8455A5711C128CE9205F035A5AD9F188A6DE0C80C559AC944F81C478A1713171877F71BE30F4C584F2990DE612DDC8ECD97C6077B2C7ECDA5AEA25AFF8F0DA8C2033E7A891AE6705E490F5AE88E4CCC9EBF2459DB5A0C6ED5072FD8A9302FBBD6AFFF85D229B08770CD7D92345B25799D04884F8EC1606B6AF4201018FB8633CC1A1312BD4605B2775335C70EF1CE573AECC5A14EE9DC8D220642D135968209541D424B126BB630523A6E9D0426DA45101BC6358465C73A9B4E16CC500EB6EA13DFBA70667039E59B8B26BA42D8F7D34B56F83273F1203B67961FF9E0E8B41126050EE8D62505DA5204910689E086E319222C28274ECCD4F011E26E7C8504F075FB90BEFF0EE7C54C1FEF4C505DD3C51BE1254842AE5D2690AFBB5BF8229AA5E90F81BD8C168E4C302FEAA9D1F3ABB5EEEEE77D4F2720A3440B1597AF57E1B0DB7C9809A442A62ED00E9CC2642822F5996B6337852CB2FD03952BB49081453A052AC78599BDD415A12FCFC65E9871E98302AB0126A0CF4B981B8440168938F2C946C09097502F7BBDEB6C473A0744DBAC01431196384BE2C20C385D9AFB5E6B883B849C0260B2FF4A442430CDB6EFD9E13A290E8F93CD59880734F5EFC44342078196F5EC2B26671D7DA43954422C1A3ADBC51897C8BFB38E1E376518DD0D7033E48793885AA89610C0AE7FF7F04A7B0057C8EF0BC713EB21E2E9CBA470E522B78EFB0950E9352934F2B92B2CC9E156C6F3EA2DDABD7E4B2CEAD76BE7C4C45F295DADC8D15DCE400707D83A5AC932E226A7F6753BD69965B9E6514DB369705D50EDD4D0BFD1E20565BCE72605D71F219BC3F40AF7F40DBCCC96C2D19074D88FE30ED595D7A1988273F3FBAB9EB3ECF02FE3E733DD39AFBB20D2A84DCE4AA36125727446D235189C9AD9EC91E6A4DA2297ECB6267990DBBA8A19FB21D9204CC297BC2F366A055CD275C49B35A486DB5675DBC7C99ABAA364ED667013559FEA3F418AFD2B0765B3D231051EEDC4D51EF4AE498CAF8D2BDBAF2F21F488201538350DFB88869C3736A6A48A0BCCAE30D9B845A75E4AA15AC0785317E30371D7F435AA4860DC3E9F3884D81E0120F2086EF0610128335F5F50D8FFA57216B82892D19CE40ACDE1F38939896C40E537DDDEB1D6FFDA318FC1527A6013784AE3F0BE67142EB41A70E8B7E6253B182DA6C736114BC5D5A1C0CDFF8C33E6BCBF46DF71A0D3A6496A6C8872967C9CA8D34F9B7D3B7A830821476361DFC96674FE41C75BBEEBFD99B13DC155F272FCB23BA5C4FA15E8CEB566302EE61E41B4684D39B4BCA2736B36A8004AD3C93435EFA5018615191323978129E0FCF4F63ACD4D17A6C227CB3F253AABB39546AEA2A69DC85AD08AFA320F9E06C2452A11C777B40074992D060739F28EC8B65602345CBABF2F31C55288B339A2BB797E9311F7CB3EE9B7173BADEF2882CB1C93FF5CA91DD696F08E44C2536B195ABEAD178E351687D32EF2ECCEA5E5B43C2769969BA015CC808B6DFB5C16828510DBC339C4AAC404982CCE201C353F9EFEB7409DBBF984C3C383BA44ACBF7D4197052CD7B2958DC22228108CFF076646EC53C50C4904924A7E23A43A3242947607FA324B64004D2A22CFA313C4A6ECBE544B957C8179F74AA046D4BF3D95B8F8174178003FC594D11DA9721F4FFAA60B54845111D8D5D01A7FF4168D2772C40D775C2AED7E43E654AF9475C2021C31395BD7C9B51C1ADCD500C7EED2B7812ED5C5126F20C2CAA67FE494F81DEA6390556F129EB7D9092459A30D9615ABAA184DCA5B3E9A3654DB6587DEE2170FFA005E8BF05B55D9F93B022A3AE7DC1C98314B0F7362DD4384465F2D9FE9F374A3F315779CC138E6F31E2D0DB354FF95DE83BDC299F53C75FBECA3485173AB09A9F38592BA033C13C5E9DE392AB20B7640889EE19B95226C92C2887498E0854CC99517D453FEE193A60791229232BB4232C95004E201EF720EE3074B08D84985D03C190EB26297020D35A12C7880699B5B76B4A6B375F5B32E41F95C73B842F300B025BAE4718EA51999B441B21ED8136C29810BBABBBE7189F869696BF13F0115986D6549146A3898482A9A6F57AED0A75781C3DFEC4DED1747246D94D4757FEA2EC90D5D6680A0307ABD18D45D0A332EA5776C0C5FE6EA21DB80241777CC051B12D3D069EB944CA2DF73951FAFC2624523E65D6D67EB8229C07A6F78557BF7F4E6D8DB9633775332189027ADF9CA24FDF295524D92803281CADF9049B569AEB2345FACA792F1C87027058805FB3EF20B0A52763372FEB6EA8CD078022B81F334A1B6A15780D2ABFC4223497C8FED42DD8C985FDFE69F83778C56615E44AEC11A3E2AF132C43616973A87CA957B2DAB5229C0B27A9675C4284D5B287EC9EF3B89AD80325556A9EA7B99553C54FFB3EB1B75A5695223073E3C3EFE4A2C63308F99D4A3005899511D305CB3C255744020DB69B6C5B939A0398A23635A0985091A5F2D85FC6354F3FAB307EA9FB7A62E007A1B2F982E3518C9D9DC092C01D84E3B013F825A24D85E92E86B067FE47D169DCA72772C094F8971957E992666E060A3CCD71AFEC850316D0DC130078A1976010794FD82259C03F7DBDC2756644A7C3E82F9840347048922E16917D7E1E94AF3A1307B2E76FA2156E4CCB9DB2E1C1D4733108E7B6209D0DF75A69EE1C89CA28CF29B4869D9CE06CF70BB1267A87BD519E5BF8D7E1346DEA5349BE86FA50B5E6D36787A4034232DBD540193A82720C085307EB12F34047A5DDA8404193B740D062A1AC902243CD5F80719A943A721CA52F1BF095EE521AFCD379E730A010E315B260C84BF95243913F0929FAFE09266943A12747356EE8F71B985892F947277214F3DF3720745AE0EAE55389EDF9AE29DE0533A90C227A29360479D59B3FFB62DE456A0F770217B694107C6FA145F703428527507FCCE5575BA90DE6CE4F61051B68832008F9869AF87BF5D2129FE80CCB66CEC70D5DF847AB3C0114C711F1C7ECA5570E7D4BA259F1A992E546D4B3A5382DFE51A0DAADA2942CECF1E2F8FD11B2C8EC585AF9F32B60CD94B64DC68ED018E8A150B08A772FD64DC79A68658F613A71AEACAFDAF14354217CA9B11CCB77DFB875BD9562A7B8F56A34DBC3E62F28FE930CC9C3E080C5A10458EF0D4D5923537F5116BC472FD1B7FB0FDB438ADEA82EB414DFA2D3B34F3C8FFEFCA51830E8FA2DB85FA0659BA3615A5FD73EF94585058A8B82C2CEBE3BB0E3409885550DA29271EB846A8405855290801CB1DBF8EDEAF6358423B9FC80500F106002F1900D67200B686424440612E5AAF53C93D7A6F8DBB39E2D2F3C1025338069AD94DC2061EF3F70730E41D2E53EE64B9F42D8596C677522AC95EB5DEBD8F8913B986C804E4FBD0E4500A643A5F9D4F04DCAD84DF82F955C5F56199B119B9A8CF0A811C5B3CB3A9260B2AF4FA00A1DD145B777401E45A104144BDF226241EEB21CB4D733B93C8AB8B1281A9E9017F6268F5EF17BC1BD6FE7CAABF330EBE5A22C50D960942A66FC5B1612504F4FB0FA69F1C98656AA8C7B2F14498F6B74EC24C49A3E143B1FAD8B4F4E570358DFB98B1121C793F754A9308DF8B3D736983978AD03366EE079FDD433F1181A7EDC4EAA8A5574AE547E2046D92C5595AF815198A65EB0F87CA67F0149907F6BA12447FF2C582DEA1897671BC65BF6EC11E4656E1A88DC32F05AFD1FDE5B9DB29229126788E01473D3540376F4B4EBDB70A7B52E9FA834537E645CAEA2CD4839DAA73E521A44D552342D2A6FFA283EE544D574504A80FD00D2EC10A851D7B872B446DEB4819BA65AA0498C83F02E0C2AD4DE0328E09B036F29472A59512DE6CB8EE655EED5E4F45500BD947C62BAA6846F533D28E5F35E0931E9515C7F875F6A2E2503CEF2D8D6160DA38E017EE862D6E93005ED956E915144B7E6601B734C7F244DC67EEB71DF44892F943E59B6CEF5B70F68063060578DBE89B40086F486B7821D43C08508474EA7C96F5B15FD950284E34978046A36E1CA2ABF115BD8C20F40AE0374556AC98A829B409DEE3E7723FA8E9B08AC2BB9CE27F63494473F036EB7F036C07DB24E145D7AA8F7AE37656A82D22D81A7D2D3AC35F4018762CAA7D3D2941596331F30DE527876F05662366322E7CB6648C800EB5C2CC290BCDEB6CB6A7142DA5AAB77E04A60E38BFA96CF6885E9A0BD1301231723B730BA5D241272C6026C9B30B0A5349561C97BFBBFA45A2831DE84DE937BD5617517A41FFE932D7D467091D832CED393922F287B92FA748E3C0A0ACDFEDCACB55C8F4D55FD89EEA8FF18850A525D1DCAA08ECC726C30A923A238D616F83D5E58A7E22215FEF00CD64D76A6E0C6671164EA43CBBB1E8B56F2FB10913DF5AC63086D13AED8E090951F22D64269C39722C2011BE92B02367A0AD2A183FA5F1391B59229B20CDF6A89E8A67113762DD0A1A0990D39DD63C489F3CEBA0A68CDA439B827B1FA5F60E23C64CB54B807561B020DB3AB0C1FF66A7258961D252BF6A96E3E04239B9DFC1DD071F0225FC980836B8EB55D0FAB2DAC93CCD666B32DF9DF1DD48969BD2CD61AACAF4A137660A1E50BB9E4AC0CA194E6B10E63136331C0EF76CDD45A57FE290B9EDACDBE289202CD499840729683B768446A570C38A0105AF4CC088041EEB3D59B7B5A510D8EFC1DA6EEFF5D4F5067C393FE572C3A48888E63B98030BF354409AF28AABF30C6AC3A5A57871E4871B37676B76B0FC158B23295A871092CA86E84233966383D4F7EC633CC6F2B8C1986076EC5E48A50750E65C0435FFE607B32E0667EE7C281621F400F39FE8D2B2402383103FC45A14922F5015B9952CADEC6046365BD296D768BCC15C3182ABE93D59B29B2286240942FF26599952FB25261820324C826CDE1D51E55929ABF548E7621405201A9693ED05516E17DBD4572A3A5438D6A6417ACD8B6836F49BCA6C7C6660A7384951FE633C7EFA7F2386326DD1114A53B85C09B6D1481DD8231488AF8BBD3B2914780C34414F89D381ABD802C5000D2C7392ABF3D93BAA3CF45C41938EDE8C2B414BA786A5A2C92A7514A5EAC9044397D923928CD7AEF80672EA9F8CD7A632908C53F4D20C7A6D32090D3F168FE80C2D540EE4CECE4B568C287365A85BD8C78FC49C00DEE513D6052F216176543E69A0203166E3B56D914C80A2CE28432DC64E31292C06FED2DFA06893A9A5CE8ABF655E8401B4A3B6BC466BC595E4129BF3146AAFED98212580FFF76CA03208311A282EE11B97FA89FAF0D73C1776CFE41B642ED933C272967C8A0C692FFCF2C4EFD053256A3891131AB062E760794C2CECFF0E3CF4896A5EF5AF925C11843D23EDBF41EEA146EB9F097F3940D3A5E89667F842A061231F3B5AB25EEDED3AD734529102550A5BE0E5AA89D089A26E5814A3BEA7663F991DF9D30F22CF8B3061A9068E275CF600B518709A9AD9517DA35A774575385329215F749B259FAD55B585B0194403B8F6F6132C057E6BE7225BA3E29D30D1FC58FDA2006D1C2AAEAFE71A75B35E1F0CCD10D5D208EFD9001D6F3060403E62609FAF00E4CBA2FA58DF3E834B8C8DFD3157F173B91625FF42BEABE6E64C82D954114FA1B94DF24A6109F1E469597BCB8954807697A80F479F7BDEFDDFC098928E2B3B7B62D85F8AE1EE7746A1466A4EB14455B63D06E2C2DDB065E3594D524AC7D459005F38038B9211A47789A3EA4120B9A22CCBB4639AD14AE761F61B0027552176B8716D180F4169A013C799F9E27DCA4AE2BD7AE26731737F1D25163470D55129059DFEC8C0C2F320ED21E93CD3865B067C22230DCCD193EEA50D35F3F41DE9657C6C72A1748F2607A75BC81EE90738B90338F31DE73DF185B1D11FD889EEEB66AF9C9CE5FC554BF6094C1C52034AC5D1F0E6FA93ABA8EC8CB884D8785B481E258308B6486B0262EA32E990BADB62354452E7708D0826B98F0417964C112102C1125BAFEF9B866D24B609550052E712FF376955A4270DC32C247085F79855F444FEB83B16ECBC2DEAA37E261A6BE73816CD14C9E0F8FA273F8945885C219E01305A329D39E440E3D3044263778BADC6E3BE4915AF0E51374FD3115D570500CA6196382A7F958F7411DB65BA6CCB6CCB2BD3F58F8B8BF4737118F54D79AFA8B61A68AE4C4FD440D6D38F0CCAB50B96A73C97F694C8B9FB1507CD269779DFCB3972AF21C61F135F7756598993ED81E4F921275801728977BD2826A562A12777C638FC855605C9EC667CB103436869E5CA05EBCA2C887AEDC214056EA5B97C818623C784715614E69C4E37FF6E8CBF00E47B5123740BF7CFAF6D49FC6BB873F28E24C65AC9BBE0BF2FB7A075DDE3EB48CF4758FE6A8C2C312D6D6C63C0323988284606BC35F00A97116582168D32DEF8C295BF9496E0B771C30DC27D98F6B23C3E8E00E155DAD4464B6CD07D6582D363BF0952F0FA5944FA0707B025AAE1CD6836B1BBCDDB7FA07C77948D6F527AD4CCA321C80BFAB819AE2EBD0B6A63A59031FDFBD6D779E3A03979F5C19E27CD2352C964996280BDF5B7D4D88AE8E73B08A0DA1AB28905139149DC8E7F8222671A7EC7074DBC97BCA367A847CD3A23B08AB5D09F9F47DE58890A5C190107515E577852EBAAA07BA20D5AC465DC57DBA8BBDB03B487A7D7E384711EE015796374A0FF9A8A96A2FE89BB7FFBE72C47688C48FC506F4B9E3ECD09D218D623989611F9B1EEC0BBFB5459B16A49C1AF11FB458AA8D427E63AC2C6C1F834CBFC16C7949F6CBD94E82B4EA1FEFEDFA55AFDBFA62114B850808C6D4E30B5A7BF85CCD195C03ED28D492D19243917EB1BBA52013257C6A90A9523FC130E58AE1D9377DAA5CE1128DD00864BE9B45D6237826B1805000C23465592ADD0DB990105C4128D4EF846C5A02C5D7D7F7A3A441E0ADE7AF1B20F6ABA39DCD103A720570618E5CB981D7C1C9F14A43B218A044C7D5E67CA3BCCEA0B3C19CAED77D95A101463D903C00076C8FF37426B898D66025C438AAC42EF5BD432CAB85EFE970D749F02229FEDAE899CA2530E827CDFD18E7F327729649DDFA52F66AB1273766FF4C8AB0FFFB862AC464D4D7582629B7ACC4B87C90173B83E65005D3F584310E9421956B9362B2D40E26E7134AB476DF35E61B820A365614F8C1C4E59A0F27EDB62B651B46FB53434AF812A8FA6B87DC711CF07DC102CBC5BDD5C003077BA8C327B58BBAF99D1FCAC577EF57D920CD8AF8B17CB1D081B9978860D6A175F9AF4F1221D2D8A05ED4FFC9EC90D6EFBCF41B404CD219727BDDFDB57D215930294A11E1119DFAB3F8A4AEC1788BC6F817A09AB3021721FDBD568D47FE5D594B53DA9494D72EBAAF67209DFB6434264563C66DA60D9E85048D05D1B94B1A173C306ECA67B4A4EDDA8A757DC1E31582A2BC748D03E97364CCDD909AEC8225CEDEC7CB910798462C50F448C986C6BB3C2DD22E98B1EFC7964407B72E8EBB3B1C3BBAC91A5562C688EBF9B214659371E50E9B8F5D9349B5895C59421632412421B89F345F52BABE5EDD253DD5F83664EE4920AF449A91BFAF7C37B83466ED008013EBBC2F182F83F77920E765EE8D09194EA1C6CD4438C30760F045C2940449A14CD0AA7F3AE83B97CE0806BDE4A1A02B1E055B2B11BD59308D4420C102D43D52BF20113EA2322E7D64FDF903C1715F10A38ECD3A9425373B36C943DA184B849FD1F794940F772CF49BD76280435E2D01B496A71F6798D56957C1E62C5063A517D99BEA1BDCB0593AD55B63B52E8D0BA47905B9E5833790C73A885F19744115DDA8AA6F4AD1EB26282F29D003091874D0F090204224C3E41DD826BEDB071642B0F9CAF6504E384AD9B0C00263CBE2AAFEC6F861D5334A8946A5CA381CDE28100047469D2EB2BA99B6F875C389FD4FA5809F981758425CF005868469233BC5DFCF9FDB4F9D4D397591C0A25F9BD2557D1F662FCDD5B0F2907B7C2AD83A831249523E144DFDE36BA02CD7E5B15E68B614EC92023B4210AE69475F9807E936ECF84A6BDBEE3FE79C837A1281D70957FCCDE41CE116CBF859961EBCD17186D960F938328CEBDC026F0CA12C283F3FEA818D60C8A83E10C514908187D2ABB440E839427ECB7EF996BDF0DFEA265D8D9C7594F4 +sk = 7C9935A0B07694AA0C6D10E4DB6B1ADD5E41C63CD4A9FB576AAE6D989B5D9D8C75DFBE665310B5B7F8F80228AF0E9A0B2B08277863189CECB5879EE8FF17F0D1A73267EDB46C65626919CE4B7FDCB33089A764CBA695F43868B6D04B63722412D88ABA009D6756482600EC4CA5DF295C34B1780FA5586247AB88C055F13CD556A8FF8E958F1DA2A26839452460719B96E929A86A980D7328D7E2582322AEEB080742B78CC458D8DF4D032C3DC8D77AD6AC5E58CF58A61F73643A7885DED8014379E3A8CA3572D80C4D70247E0EA632883A5C4C176FBF1746E8E694F2FAA35EE89A16E072F612A8EEF538B79673FE7413497B03301765953834976DACCA296575F7F25349D21751CFCCF1B3BC6CF612A7AA8E1FF1E84AD79E984A363E1B97C32AF74E7D7A0836D5E0CFF83D28D4E2A5B3F0A9B9A938E0B91EC1B59B3356588DF9210F78835C1589ACDCACBD3F3067076E1D9A42045AD37AC87EF6020C12E3C4989DAE0A9154E7C004A137EC90BB013E5A6299A9E0695F5BDBD635E91028CB4BD944D00CBD5DC8CD95D62FC3383E6043D3BD371C151880E1293F3696759F4E39AAD45AD743A879D5582D49D44EB9D8CF4271693D69D25213DA6D0AE0C6FEE4BEB31AEE1CB627C1DA11A6989B1F7E4D72DC0D321960B4AA8D17406284E3C7503F64FD3F4C9498B758272CD75186D6E9A8F3BABB82A6234BF1A2E6E0A0E74C6A10070D86CC9C1334F18501E9CD93D8FD5FAD60CF30D4EA0AD0E8CB5AA24D56F23F59E69EA02E70C1320C915D691B83965C76ECEB00FFC34BCA13E826C8C6B7C01ECFC504D26E05C9B087E2CC881297080301CA939C9C01A9D71C589D31E128DC489C49B3B6BF33F99A82246B0D0CFA5B983E4B4114BF86EC2471C063634FF9F18B06EDCDED21847F2F160902A9DA58B388E56AA7D941783CD0C51CBDF3BED149A760C3CA63758F8DEEC2D5B37BA648AFC16E521541286C1632890775A2DD6C3B470D014E124931AC5D2B1E866561A8C0E374922678701DC2E36B9ABAF3336AC31CB40D8088B228B240399995F6ED77BF6C7683C1510B3C5FB83DBDF5AA6134EB8119F5E771399E63CCD16578E146FA1BD1178A7EC7328471A1625512109D9BA6A130615C66B1115530411DB82A16744D8A6B47F9D2BC276A286B32D339043FE21E294A31BD10884A3276C2A67502D8C66008751E7FB35ED0906ECD8EF23799D5770752D6FAABD37B77C69638771EA0CC82D5DBF01316A4C2C5A5BCBCF161B9CD00AC3A459527D487E6C66695CE5FD54AC2F882320CBD6AF4527177C9C9B06F14BE6EA67D41840BCECFA79886B1376DAF60C8C51962BFC87C5FC2E10994859B1EB0525636E21AF58492A537D1729737F2C5AABB6471BC31F3F6F8C8481237E6D68E9572B3EE5449CD6A023637ED280762CF010C44D673875A71E76439422A20BF6603C4339BE1E2EF4AC430AC400601F467189BD202AD8A9B00FDF17F0BA84BD3A9D17ADC063E948A01AB573DB432AA01EC5A6B5907B92492444769B9E6BA635E2DEC69ACD4F2F81C150CC21A9ED52E30B88A909625700C1F714856FFF7F348DCA7F94870FD710A4056E2429522BFA107D14456CC17BECBF7031040504B5E0110EFB4AC3D718B83975E6D6D33EF4AA007F59DFDC4D3F500224FB0383E3FD7505087720334B4F3A07E376B8D1BB5D6487096297C3E01CB44BB58A79A8833DE209F0187824E77FD73708D4E39D53D3202ABDFA703B22C9A02B9A33E5A1CDB96D2C0DD4C4E25067992577403BACDCF034DF3A73B3A1ABC343262F65C06BE0B665A95D5D96C184DFCF53AC1E7AC77196EE75E1EA4A31E039D4FB730B896572BEEC56487BA4A68A693513AE36E6EF501EBB75F87982A1517A1833256D7F7A83E4FE88B23A1A130E62B1916A95A2A06EF3B563FFC1FE20E9E4E7858F606145B1734E5579AB299D0BDF1021B9A0B1D2464552C93898F10C8D5FD27B95EBEA9A21A1557E49F4276DAFA1594E2125E833834A666E0A44AD065CB16B48DBE47E4628D22967E2770C3584FCFA3B857AF453EBC379D9DD3B7C32921D2D3F5419DB188C5D5A08BD1E257A7D9BFE06F9F9CA85B71654DF3E53F6D65C2623A71B50DAA196C7EE026359C00EC796329A19934DAD208E1C90EA217385B16F4EBC0439AB5479C6A4438DF46E0EC05A3C21C0540736370B0322DCA727B88136696D4A67BF5B3BC03E145A0851BCDBD8577DE61FE550BBAB6F890BF4BC39ED7DE9C7FAC1EB532EC16A3282F3D1B44944E9A0B981B953129D4EA16A53C90069A9F3FC5D5C6AB2107BE6A51EFF63F8AC8A38D40488C0B56AF8D8196002D5157316C4A3524B67818D64D35DEB2A25085E3A4A2A5F3FAA860885DAED4B08029B230366720B8260C91DFC03993E3C020D0F379873343EA0E14D5C5EDF9424F0DD82DB7693580C849A39C8D9793748894979DE1DD5929F829EE1EE9F35CBD37D1E387DD3038D205159C32E67868674D3A56EF8CDD3BF5E54B28638ADF9633701E0A499CF337E883841CED36DF29BD32AAC967EE2C017871053F8371C0BE3B35799913672EFBEBD29488BD0C3BCBF8BE91CC64508B70678E53071826F6A21370E6086F9DE82C6B57EAAB043F17703AFBE1474087D8C4DA6D882E81846FF1B70C5538AC0DBA94CF4B733AFCD814C079F4A611DF535DECE2EED1BB7415F0CEC5693DF24AC9B987108615E2CAA3D630D074A907EBF871EC7BEACC1E1A922B59C3F0AD71426FB87CC2E5D6C25284F900A67E99413B9DAB609D2E6A0A7DA5166EE0080B904B4149045609535CEA42B45BF49F764B30088C22A2724201742932B4BA5F350E7A32082C296CFF5089F15E80BC14591B8489938FE0A89B58A923881A97ACADEAFDAF9660943565A05C8BB44C901E5C701D6BEE6BE8487E7C1C8BCF7036084310991B800B0D0FC32B0AB9C56878DA0CF2FF56CCA5E63E653B3CDAEFF5964CC1E41FDD6103E9E9E69225F56496F8F31A08300296C1A08C752C2BFFECD7C1CBC32663AB119F710F1C724C4B87DD6B5D612E86E1EE322EED76FDE4F170FF4958D4513BFA9F74970DBE22EC1C3847D897820EFDD6E5518125CFEF47194441203184229724C000E7BD67A364FD150B6EF93021FAE8BB2D8A00147D93015A66FAD1B66F2C8B75AD0A099B97AC4C64AD115C054D4AB2C5AB8A0FCBB4F5FC55172A1E6B53DB39F155FC406F22DF1DCF942769F9A960792314F3B4CA127BD4786650CDFB84CA7D5F8C0A56519D0CD8040BAF23BDD0EBB3E43E7A276108F589FCA1FDC8391C11E7BC7C5218BBAFE452E3A9A266F88B35A7FCBFAC51B82B398BCF29662C3E5F1D7B7A8D7B778256F1931FBE2BBA6F9D1BB9309B0EAF7F0102643C6F8CB06C124E6AF80B1AA344C769DBD20B6A84A35B6DF1FB53C90F13597DABD87CF9644B8F814F7ABD0A4DB9AA2EF7FFFADFD4834EFDB40567C913495B784BFAB41F8B4F8364927FA6440EC28BD7AEE2E9F30E86552CF98AF8C410A10DB8BF8DCFB4895EEF0587EDF1A7D75A9AEC0A1B212C60EB1D056C081A26A8BA964C073D5EB0A380A0ACEC3925A83A317E36C4825AA2264BCD0F0862B60AA38F169125068957E999BE923EA4C6BE29C3903922DE7004481A05E090E45EB1288FB62934F3C7DA462D2FBCF64513CC156C5B311694FEF69E42BD1B9356A13A42A9C42E26D2D33AB760CA6966833092D1F468484900178B9D062CFC59B8D18FF0C41CB67C72A6420F6328187D96E686BB8B55729E39EEC46809515E3C6E07637441A303A4F80410A55E06BEA350BE7F69EB802BD4F5B73FBD815F13DE77A4F44FA2838F457ED0D880065797F67AABFA4AD999233FAB1CA3647C696CC9C53385618CBF1400C870844AA0491FF41D9F0B7ADB57E3482F79C91B595DC62E8021E308B51D369683E278039E8A6C7D2604CB8DF911489322416E04E04C71C1FB3638D262A9F637FEEC4898BF2FC80E386A4EEF9D91A93C6B12DCB7453E2CC66F57FA3816E3A85053237635A186CBECE8067C1693903FBD693782D967AA584411EEC1B2F68B78F0EDF4175752136C61F5804B4349EE194B30C867BAC76A46588573E7F4EDFE45ACB4D91707A5BF151F246310C3490AFBF2C3C5479382ED97BB4B83E6F51954EA2C8EA4738002ABB208B32543B98081CD9F517D2A8175E399DAAA6A89B13EE4F818E6A868C8DA4984D68E62232577F63F6B5C893879306093B35418CD409E5DA0EA32780D137010918C05618EBCD7A6E3745288BAB427C17F5E7D1272BAF5A6C09E854A29D70B318D1E73271367FF68E27D86108EA5DD28F2B088295D82D4BAF814DF79A9B09ABDD11E567B13EF3B651D4DABB2B210F606DC7ACE9698D54C23904287AD7C14454850AC19B8863B365F106AEB09B54C02D4EDF120DC98F0EB88345942D75DFC7EEBAE37A39E61A5E45E19A614DFED25178445D5EA5D2CB6C64D319852AF8CAB46B5B658F5EF9FDB1F57BCBA911B170A94F3935613B9E5EBA0E467126B61DD836EF79788717C67EB0AA49BD5E692EA9943A3ED1AD4DD6353DAE96E7DE72E9B511F9C9DBEF744D1FEBF9F7676698A9D66A02937DD9A702978C04DC4B984F530F03AAA91FF5191C784B8A26575CBD815A64C887B076D48FC90ED8BC815EFB3805CBE7C7C2A32DEA289798C6B14739150583B17CAE020C725E8F85574F20A123F82CA684D29F3948BB4640379D403A3EDC42A3BD2CE2AD84F39B36F949B559186BE718598503FEBCB99C75106C80D602F566233DA1CEE8BF6044708F0D68AE0ED5BEF6F2F508BED1EDEBDCF29D99AC81E103A96A6A4A859755433A26068B80B7B6C79A31D731DE669C3E4112914B8740A7C8BDAB2B9C92877E79057D2ED2C8790B704C93DA69522361EBE78384E91C0ACCBF7E26BBCB09CBDAE55016ECF2C5904F577F9A8723FD366D158D910B68949C20B20D04CC35BB3DAFD9E0E579FB4913F253624CED98DB2C27051B8D409125DA3C459B97E32E07FF8BB22BB76955178AF565A2BB1D51ABF591FF90481A13EBF8797145C0DFA0E4870BA89C87CE4EA8B18D52D3B10003932292A40166115A0D5221F3AF152C4F1D47B14F659B834D697B2A5024CB70D0D74A59117F5C92519CF96A510D70DCA39F108C38ADBD1FDA1D09AEEFD7A9CCBB8DB0A6B3DC8536A3D567A40A76CFCAEDF7A7CD4515AE7B30DA0E2E2D8C38CB54B9437278F97C699C1F612FDF59BFA0CAAF071ACEB991484FDD62DC75DDCD80E06835A82D2E6AE64C01F3AC06285D806EF371B0E8CDEC1F2CBD8AC3F5290C88807B2EAE3A2B7628E8E76DA8EA9A21A10070696703131D66422C43FA0102A466C95EAAE3A7881EB910AF1B19452B410A005312D30A4550121633ECB7EEC8EF6FAD5A111757E02D9CA9E9799BD600CFA9C13DCC9B8A08696CD9647C59CE9C4CFAFD60FEA9C31C4125CF8A2DCC3CFABD9876B2959E26804E40D03CC85B93190C7ED02A5B5D99557E8A598690FE4AF3CF4D4A6CCFFD5D7BF93B11F9741CB8455A5711C128CE9205F035A5AD9F188A6DE0C80C559AC944F81C478A1713171877F71BE30F4C584F2990DE612DDC8ECD97C6077B2C7ECDA5AEA25AFF8F0DA8C2033E7A891AE6705E490F5AE88E4CCC9EBF2459DB5A0C6ED5072FD8A9302FBBD6AFFF85D229B08770CD7D92345B25799D04884F8EC1606B6AF4201018FB8633CC1A1312BD4605B2775335C70EF1CE573AECC5A14EE9DC8D220642D135968209541D424B126BB630523A6E9D0426DA45101BC6358465C73A9B4E16CC500EB6EA13DFBA70667039E59B8B26BA42D8F7D34B56F83273F1203B67961FF9E0E8B41126050EE8D62505DA5204910689E086E319222C28274ECCD4F011E26E7C8504F075FB90BEFF0EE7C54C1FEF4C505DD3C51BE1254842AE5D2690AFBB5BF8229AA5E90F81BD8C168E4C302FEAA9D1F3ABB5EEEEE77D4F2720A3440B1597AF57E1B0DB7C9809A442A62ED00E9CC2642822F5996B6337852CB2FD03952BB49081453A052AC78599BDD415A12FCFC65E9871E98302AB0126A0CF4B981B8440168938F2C946C09097502F7BBDEB6C473A0744DBAC01431196384BE2C20C385D9AFB5E6B883B849C0260B2FF4A442430CDB6EFD9E13A290E8F93CD59880734F5EFC44342078196F5EC2B26671D7DA43954422C1A3ADBC51897C8BFB38E1E376518DD0D7033E48793885AA89610C0AE7FF7F04A7B0057C8EF0BC713EB21E2E9CBA470E522B78EFB0950E9352934F2B92B2CC9E156C6F3EA2DDABD7E4B2CEAD76BE7C4C45F295DADC8D15DCE400707D83A5AC932E226A7F6753BD69965B9E6514DB369705D50EDD4D0BFD1E20565BCE72605D71F219BC3F40AF7F40DBCCC96C2D19074D88FE30ED595D7A1988273F3FBAB9EB3ECF02FE3E733DD39AFBB20D2A84DCE4AA36125727446D235189C9AD9EC91E6A4DA2297ECB6267990DBBA8A19FB21D9204CC297BC2F366A055CD275C49B35A486DB5675DBC7C99ABAA364ED667013559FEA3F418AFD2B0765B3D231051EEDC4D51EF4AE498CAF8D2BDBAF2F21F488201538350DFB88869C3736A6A48A0BCCAE30D9B845A75E4AA15AC0785317E30371D7F435AA4860DC3E9F3884D81E0120F2086EF0610128335F5F50D8FFA57216B82892D19CE40ACDE1F38939896C40E537DDDEB1D6FFDA318FC1527A6013784AE3F0BE67142EB41A70E8B7E6253B182DA6C736114BC5D5A1C0CDFF8C33E6BCBF46DF71A0D3A6496A6C8872967C9CA8D34F9B7D3B7A830821476361DFC96674FE41C75BBEEBFD99B13DC155F272FCB23BA5C4FA15E8CEB566302EE61E41B4684D39B4BCA2736B36A8004AD3C93435EFA5018615191323978129E0FCF4F63ACD4D17A6C227CB3F253AABB39546AEA2A69DC85AD08AFA320F9E06C2452A11C777B40074992D060739F28EC8B65602345CBABF2F31C55288B339A2BB797E9311F7CB3EE9B7173BADEF2882CB1C93FF5CA91DD696F08E44C2536B195ABEAD178E351687D32EF2ECCEA5E5B43C2769969BA015CC808B6DFB5C16828510DBC339C4AAC404982CCE201C353F9EFEB7409DBBF984C3C383BA44ACBF7D4197052CD7B2958DC22228108CFF076646EC53C50C4904924A7E23A43A3242947607FA324B64004D2A22CFA313C4A6ECBE544B957C8179F74AA046D4BF3D95B8F8174178003FC594D11DA9721F4FFAA60B54845111D8D5D01A7FF4168D2772C40D775C2AED7E43E654AF9475C2021C31395BD7C9B51C1ADCD500C7EED2B7812ED5C5126F20C2CAA67FE494F81DEA6390556F129EB7D9092459A30D9615ABAA184DCA5B3E9A3654DB6587DEE2170FFA005E8BF05B55D9F93B022A3AE7DC1C98314B0F7362DD4384465F2D9FE9F374A3F315779CC138E6F31E2D0DB354FF95DE83BDC299F53C75FBECA3485173AB09A9F38592BA033C13C5E9DE392AB20B7640889EE19B95226C92C2887498E0854CC99517D453FEE193A60791229232BB4232C95004E201EF720EE3074B08D84985D03C190EB26297020D35A12C7880699B5B76B4A6B375F5B32E41F95C73B842F300B025BAE4718EA51999B441B21ED8136C29810BBABBBE7189F869696BF13F0115986D6549146A3898482A9A6F57AED0A75781C3DFEC4DED1747246D94D4757FEA2EC90D5D6680A0307ABD18D45D0A332EA5776C0C5FE6EA21DB80241777CC051B12D3D069EB944CA2DF73951FAFC2624523E65D6D67EB8229C07A6F78557BF7F4E6D8DB9633775332189027ADF9CA24FDF295524D92803281CADF9049B569AEB2345FACA792F1C87027058805FB3EF20B0A52763372FEB6EA8CD078022B81F334A1B6A15780D2ABFC4223497C8FED42DD8C985FDFE69F83778C56615E44AEC11A3E2AF132C43616973A87CA957B2DAB5229C0B27A9675C4284D5B287EC9EF3B89AD80325556A9EA7B99553C54FFB3EB1B75A5695223073E3C3EFE4A2C63308F99D4A3005899511D305CB3C255744020DB69B6C5B939A0398A23635A0985091A5F2D85FC6354F3FAB307EA9FB7A62E007A1B2F982E3518C9D9DC092C01D84E3B013F825A24D85E92E86B067FE47D169DCA72772C094F8971957E992666E060A3CCD71AFEC850316D0DC130078A1976010794FD82259C03F7DBDC2756644A7C3E82F9840347048922E16917D7E1E94AF3A1307B2E76FA2156E4CCB9DB2E1C1D4733108E7B6209D0DF75A69EE1C89CA28CF29B4869D9CE06CF70BB1267A87BD519E5BF8D7E1346DEA5349BE86FA50B5E6D36787A4034232DBD540193A82720C085307EB12F34047A5DDA8404193B740D062A1AC902243CD5F80719A943A721CA52F1BF095EE521AFCD379E730A010E315B260C84BF95243913F0929FAFE09266943A12747356EE8F71B985892F947277214F3DF3720745AE0EAE55389EDF9AE29DE0533A90C227A29360479D59B3FFB62DE456A0F770217B694107C6FA145F703428527507FCCE5575BA90DE6CE4F61051B68832008F9869AF87BF5D2129FE80CCB66CEC70D5DF847AB3C0114C711F1C7ECA5570E7D4BA259F1A992E546D4B3A5382DFE51A0DAADA2942CECF1E2F8FD11B2C8EC585AF9F32B60CD94B64DC68ED018E8A150B08A772FD64DC79A68658F613A71AEACAFDAF14354217CA9B11CCB77DFB875BD9562A7B8F56A34DBC3E62F28FE930CC9C3E080C5A10458EF0D4D5923537F5116BC472FD1B7FB0FDB438ADEA82EB414DFA2D3B34F3C8FFEFCA51830E8FA2DB85FA0659BA3615A5FD73EF94585058A8B82C2CEBE3BB0E3409885550DA29271EB846A8405855290801CB1DBF8EDEAF6358423B9FC80500F106002F1900D67200B686424440612E5AAF53C93D7A6F8DBB39E2D2F3C1025338069AD94DC2061EF3F70730E41D2E53EE64B9F42D8596C677522AC95EB5DEBD8F8913B986C804E4FBD0E4500A643A5F9D4F04DCAD84DF82F955C5F56199B119B9A8CF0A811C5B3CB3A9260B2AF4FA00A1DD145B777401E45A104144BDF226241EEB21CB4D733B93C8AB8B1281A9E9017F6268F5EF17BC1BD6FE7CAABF330EBE5A22C50D960942A66FC5B1612504F4FB0FA69F1C98656AA8C7B2F14498F6B74EC24C49A3E143B1FAD8B4F4E570358DFB98B1121C793F754A9308DF8B3D736983978AD03366EE079FDD433F1181A7EDC4EAA8A5574AE547E2046D92C5595AF815198A65EB0F87CA67F0149907F6BA12447FF2C582DEA1897671BC65BF6EC11E4656E1A88DC32F05AFD1FDE5B9DB29229126788E01473D3540376F4B4EBDB70A7B52E9FA834537E645CAEA2CD4839DAA73E521A44D552342D2A6FFA283EE544D574504A80FD00D2EC10A851D7B872B446DEB4819BA65AA0498C83F02E0C2AD4DE0328E09B036F29472A59512DE6CB8EE655EED5E4F45500BD947C62BAA6846F533D28E5F35E0931E9515C7F875F6A2E2503CEF2D8D6160DA38E017EE862D6E93005ED956E915144B7E6601B734C7F244DC67EEB71DF44892F943E59B6CEF5B70F68063060578DBE89B40086F486B7821D43C08508474EA7C96F5B15FD950284E34978046A36E1CA2ABF115BD8C20F40AE0374556AC98A829B409DEE3E7723FA8E9B08AC2BB9CE27F63494473F036EB7F036C07DB24E145D7AA8F7AE37656A82D22D81A7D2D3AC35F4018762CAA7D3D2941596331F30DE527876F05662366322E7CB6648C800EB5C2CC290BCDEB6CB6A7142DA5AAB77E04A60E38BFA96CF6885E9A0BD1301231723B730BA5D241272C6026C9B30B0A5349561C97BFBBFA45A2831DE84DE937BD5617517A41FFE932D7D467091D832CED393922F287B92FA748E3C0A0ACDFEDCACB55C8F4D55FD89EEA8FF18850A525D1DCAA08ECC726C30A923A238D616F83D5E58A7E22215FEF00CD64D76A6E0C6671164EA43CBBB1E8B56F2FB10913DF5AC63086D13AED8E090951F22D64269C39722C2011BE92B02367A0AD2A183FA5F1391B59229B20CDF6A89E8A67113762DD0A1A0990D39DD63C489F3CEBA0A68CDA439B827B1FA5F60E23C64CB54B807561B020DB3AB0C1FF66A7258961D252BF6A96E3E04239B9DFC1DD071F0225FC980836B8EB55D0FAB2DAC93CCD666B32DF9DF1DD48969BD2CD61AACAF4A137660A1E50BB9E4AC0CA194E6B10E63136331C0EF76CDD45A57FE290B9EDACDBE289202CD499840729683B768446A570C38A0105AF4CC088041EEB3D59B7B5A510D8EFC1DA6EEFF5D4F5067C393FE572C3A48888E63B98030BF354409AF28AABF30C6AC3A5A57871E4871B37676B76B0FC158B23295A871092CA86E84233966383D4F7EC633CC6F2B8C1986076EC5E48A50750E65C0435FFE607B32E0667EE7C281621F400F39FE8D2B2402383103FC45A14922F5015B9952CADEC6046365BD296D768BCC15C3182ABE93D59B29B2286240942FF26599952FB25261820324C826CDE1D51E55929ABF548E7621405201A9693ED05516E17DBD4572A3A5438D6A6417ACD8B6836F49BCA6C7C6660A7384951FE633C7EFA7F2386326DD1114A53B85C09B6D1481DD8231488AF8BBD3B2914780C34414F89D381ABD802C5000D2C7392ABF3D93BAA3CF45C41938EDE8C2B414BA786A5A2C92A7514A5EAC9044397D923928CD7AEF80672EA9F8CD7A632908C53F4D20C7A6D32090D3F168FE80C2D540EE4CECE4B568C287365A85BD8C78FC49C00DEE513D6052F216176543E69A0203166E3B56D914C80A2CE28432DC64E31292C06FED2DFA06893A9A5CE8ABF655E8401B4A3B6BC466BC595E4129BF3146AAFED98212580FFF76CA03208311A282EE11B97FA89FAF0D73C1776CFE41B642ED933C272967C8A0C692FFCF2C4EFD053256A3891131AB062E760794C2CECFF0E3CF4896A5EF5AF925C11843D23EDBF41EEA146EB9F097F3940D3A5E89667F842A061231F3B5AB25EEDED3AD734529102550A5BE0E5AA89D089A26E5814A3BEA7663F991DF9D30F22CF8B3061A9068E275CF600B518709A9AD9517DA35A774575385329215F749B259FAD55B585B0194403B8F6F6132C057E6BE7225BA3E29D30D1FC58FDA2006D1C2AAEAFE71A75B35E1F0CCD10D5D208EFD9001D6F3060403E62609FAF00E4CBA2FA58DF3E834B8C8DFD3157F173B91625FF42BEABE6E64C82D954114FA1B94DF24A6109F1E469597BCB8954807697A80F479F7BDEFDDFC098928E2B3B7B62D85F8AE1EE7746A1466A4EB14455B63D06E2C2DDB065E3594D524AC7D459005F38038B9211A47789A3EA4120B9A22CCBB4639AD14AE761F61B0027552176B8716D180F4169A013C799F9E27DCA4AE2BD7AE26731737F1D25163470D55129059DFEC8C0C2F320ED21E93CD3865B067C22230DCCD193EEA50D35F3F41DE9657C6C72A1748F2607A75BC81EE90738B90338F31DE73DF185B1D11FD889EEEB66AF9C9CE5FC554BF6094C1C52034AC5D1F0E6FA93ABA8EC8CB884D8785B481E258308B6486B0262EA32E990BADB62354452E7708D0826B98F0417964C112102C1125BAFEF9B866D24B609550052E712FF376955A4270DC32C247085F79855F444FEB83B16ECBC2DEAA37E261A6BE73816CD14C9E0F8FA273F8945885C219E01305A329D39E440E3D3044263778BADC6E3BE4915AF0E51374FD3115D570500CA6196382A7F958F7411DB65BA6CCB6CCB2BD3F58F8B8BF4737118F54D79AFA8B61A68AE4C4FD440D6D38F0CCAB50B96A73C97F694C8B9FB1507CD269779DFCB3972AF21C61F135F7756598993ED81E4F921275801728977BD2826A562A12777C638FC855605C9EC667CB103436869E5CA05EBCA2C887AEDC214056EA5B97C818623C784715614E69C4E37FF6E8CBF00E47B5123740BF7CFAF6D49FC6BB873F28E24C65AC9BBE0BF2FB7A075DDE3EB48CF4758FE6A8C2C312D6D6C63C0323988284606BC35F00A97116582168D32DEF8C295BF9496E0B771C30DC27D98F6B23C3E8E00E155DAD4464B6CD07D6582D363BF0952F0FA5944FA0707B025AAE1CD6836B1BBCDDB7FA07C77948D6F527AD4CCA321C80BFAB819AE2EBD0B6A63A59031FDFBD6D779E3A03979F5C19E27CD2352C964996280BDF5B7D4D88AE8E73B08A0DA1AB28905139149DC8E7F8222671A7EC7074DBC97BCA367A847CD3A23B08AB5D09F9F47DE58890A5C190107515E577852EBAAA07BA20D5AC465DC57DBA8BBDB03B487A7D7E384711EE015796374A0FF9A8A96A2FE89BB7FFBE72C47688C48FC506F4B9E3ECD09D218D623989611F9B1EEC0BBFB5459B16A49C1AF11FB458AA8D427E63AC2C6C1F834CBFC16C7949F6CBD94E82B4EA1FEFEDFA55AFDBFA62114B850808C6D4E30B5A7BF85CCD195C03ED28D492D19243917EB1BBA52013257C6A90A9523FC130E58AE1D9377DAA5CE1128DD00864BE9B45D6237826B1805000C23465592ADD0DB990105C4128D4EF846C5A02C5D7D7F7A3A441E0ADE7AF1B20F6ABA39DCD103A720570618E5CB981D7C1C9F14A43B218A044C7D5E67CA3BCCEA0B3C19CAED77D95A101463D903C00076C8FF37426B898D66025C438AAC42EF5BD432CAB85EFE970D749F02229FEDAE899CA2530E827CDFD18E7F327729649DDFA52F66AB1273766FF4C8AB0FFFB862AC464D4D7582629B7ACC4B87C90173B83E65005D3F584310E9421956B9362B2D40E26E7134AB476DF35E61B820A365614F8C1C4E59A0F27EDB62B651B46FB53434AF812A8FA6B87DC711CF07DC102CBC5BDD5C003077BA8C327B58BBAF99D1FCAC577EF57D920CD8AF8B17CB1D081B9978860D6A175F9AF4F1221D2D8A05ED4FFC9EC90D6EFBCF41B404CD219727BDDFDB57D215930294A11E1119DFAB3F8A4AEC1788BC6F817A09AB3021721FDBD568D47FE5D594B53DA9494D72EBAAF67209DFB6434264563C66DA60D9E85048D05D1B94B1A173C306ECA67B4A4EDDA8A757DC1E31582A2BC748D03E97364CCDD909AEC8225CEDEC7CB910798462C50F448C986C6BB3C2DD22E98B1EFC7964407B72E8EBB3B1C3BBAC91A5562C688EBF9B214659371E50E9B8F5D9349B5895C59421632412421B89F345F52BABE5EDD253DD5F83664EE4920AF449A91BFAF7C37B83466ED008013EBBC2F182F83F77920E765EE8D09194EA1C6CD4438C30760F045C2940449A14CD0AA7F3AE83B97CE0806BDE4A1A02B1E055B2B11BD59308D4420C102D43D52BF20113EA2322E7D64FDF903C1715F10A38ECD3A9425373B36C943DA184B849FD1F794940F772CF49BD76280435E2D01B496A71F6798D56957C1E62C5063A517D99BEA1BDCB0593AD55B63B52E8D0BA47905B9E5833790C73A885F19744115DDA8AA6F4AD1EB26282F29D003091874D0F090204224C3E41DD826BEDB071642B0F9CAF6504E384AD9B0C00263CBE2AAFEC6F861D5334A8946A5CA381CDE28100047469D2EB2BA99B6F875C389FD4FA5809F981758425CF005868469233BC5DFCF9FDB4F9D4D397591C0A25F9BD2557D1F662FCDD5B0F2907B7C2AD83A831249523E144DFDE36BA02CD7E5B15E68B614EC92023B4210AE69475F9807E936ECF84A6BDBEE3FE79C837A1281D70957FCCDE41CE116CBF859961EBCD17186D960F938328CEBDC026F0CA12C283F3FEA818D60C8A83E10C514908187D2ABB440E839427ECB7EF996BDF0DFEA265D8D9C7594F40000FFFF0100FDFF000000000300FFFFFFFFFAFF0200FDFFFEFF0300FCFFFFFF0200FFFFFEFF00000000FEFFFEFF06000200FFFF01000300FBFF00000000FBFF00000000FAFF040001000000FCFF030000000100FCFFFEFFFDFFFFFFFDFFFBFFFFFF0000FBFFFFFFFDFFFBFF0600FDFF0000FEFF0900FDFF000001000200FEFFFFFF0600030000000000FCFF0000FFFFFFFFFFFFFBFFFFFF010000000200FFFF0100F9FF030000000100FFFFFEFF010001000200FEFF0400FEFF03000100FFFF0100FCFF000000000000FFFFFFFFFCFFFFFFFAFF0300FDFFFCFF000000000200FBFFFFFF0100FFFFFBFF0200FEFF0300000000000400FCFF02000600FCFF010003000000FFFFFAFFFFFF0100FDFFFEFF0000020000000000FFFFFFFF0100FEFFFFFF000002000100FFFFFDFF03000200FDFF03000100FFFFFAFF000001000400FFFFFFFFFFFFFFFF0000FCFFFEFF04000300070000000100FEFF06000100FFFFFDFFFDFF0100FDFFFFFFFDFF030002000100FCFFFBFFFDFFFDFF00000200FFFF000003000000FFFFFDFFFFFF0800FFFFFEFF0200FFFFFBFF0400020002000200FEFF0200000000000000FFFF02000100FBFF0500FFFFFFFFFBFF000006000000FFFFFEFF0200000002000100FAFFFFFFFFFF01000000FCFFFDFFFCFFF9FFFFFFFDFFFEFFF9FF01000400010002000200FDFF020001000000FCFF0200FFFFFEFF0500FFFFFEFF01000200FCFFFFFF04000000FBFFFEFFFFFFFBFF06000400FEFF030001000100FBFF0200040001000200010003000400010002000700040003000000FFFF000002000300FFFF020000000100020000000000FEFFFEFFFFFFFCFFFDFFFFFF0500FDFFFEFF01000400FEFFFCFFFCFFFFFF00000400FFFF03000200FEFF0100FEFF00000200FFFF00000500FEFF0500FEFFFDFF0200FEFFFDFFFEFFFFFFFDFF0200FCFF0200FEFF0200FFFF04000200FCFF050002000700FEFF0200F9FF02000000000001000100FAFFFEFFFFFF02000200000001000300FDFFFEFFFDFF0100FFFF020003000000FEFF020000000200020001000400FDFFFFFF010006000000010000000000FFFF0000FFFF030000000300FDFF04000300040000000000FFFFFDFF06000700FFFF01000000FDFF04000000FDFF0200FFFF000000000400FCFF0400FEFF01000400FDFF00000000FEFFFDFF0200020002000000FFFF0100FDFFFEFFFDFF0000FEFFFFFF0000FCFFFDFF050002000100FFFFFDFFFDFF08000300FEFF010002000300FEFF010000000300070000000300FBFF02000100FFFF02000000FDFF0300FEFF0100040002000600FBFFFDFF0100FCFFFFFF0200010000000100FFFFFFFF02000200FDFFF8FF0000FEFF010000000000FCFF0000FFFFFDFFFDFFFFFF02000100FDFF0300FEFFFBFFFFFF01000400040000000100020002000100070000000300FBFF0100FEFF01000500FBFFFAFFFFFF0400FDFF01000200FDFF02000100FDFFFFFF01000100020001000500010003000500020001000100FEFF0400000001000000FFFF02000100FDFF060000000000FDFF0100010005000400FCFF0100FEFF0100FCFF0100FFFF0100FCFF00000800FDFFFFFFFEFFFDFFFEFFFFFFFFFF0200030003000400FDFF02000000040001000100FFFFFBFFFDFF0300FCFF0000FEFFFDFFFEFF03000100FDFF010000000100FEFF0300FFFF040001000200FFFFFFFF010001000200F9FF0000FEFF00000300FAFFFEFF01000100010000000000FFFFFFFF0500FDFFFFFF0100FFFF0100020001000200FEFF03000600FFFF0100FEFFFFFF0200FFFFFFFF0200FFFF01000000040000000100FFFF05000100FFFF0200FFFF0200FCFF010001000000FEFFFFFF01000400FBFF040002000200FAFFFEFFFEFF000002000000FEFF0400FEFF0100FDFF04000400FFFF0000FBFF0000FDFF0600FEFF030000000400FDFF0300FEFFFCFFFEFF0200FFFF0000FEFF0300010004000100FDFF01000200FFFF0200FFFF00000100FDFFFEFF0300FEFF0300FBFF0300010002000000FEFF06000400FEFF010003000500FEFF010000000200FCFF01000000FCFF0200FFFF0300FDFF0100FFFFFFFF0200FEFF0000FCFF0200FFFFFCFF030004000100FFFF00000300FFFFFFFFFFFF01000100FEFFFCFFFFFFFDFF0100FFFFFEFF02000500FEFF0000FEFF00000500FDFFFFFF070000000000FEFF0000FFFF0500030001000300FFFF0100FEFF02000200FAFFFBFFFEFFFDFFFEFFFEFFFCFF01000300FFFFFEFF020000000000FDFF00000100FFFF02000000FEFFFEFF0300030000000100FEFFFFFF010004000200FFFF0900FDFF0100FDFFFEFF0000FEFFFEFFFAFFFCFF0300FDFF00000000FAFFFFFF0200FCFF0000FEFF00000100FFFF040000000200F8FF0000FCFFFDFF040006000400FFFFFFFF00000000030005000100FEFFFFFFFFFFFDFFFEFFFCFF030001000400FFFFFFFFFEFF0300FEFFFEFF0400FFFFFAFF0200000003000200FEFFFEFF0000020003000000F9FFFDFF00000500FBFF0100FDFF000004000000FEFF01000200FEFF03000200FBFF0000FEFF0100FCFFFEFF03000100FFFFFEFFFEFF0000FFFFFFFF0100010000000200FEFF0100FBFFFFFF0100FCFFFBFF0200FEFF00000000FBFF0400FBFF0500FFFFFCFF010002000000FAFF0300FFFFFFFFFEFF0300010000000300F8FFFEFFFFFF0400FDFFFBFF01000200FCFF02000100FFFF010003000100FEFF0300020001000500000001000400FEFFFFFF03000300FFFFFCFF02000500FDFF0200FEFF0300020000000200020003000100FDFFFEFFFEFFFDFFFDFF0200FFFF0400FEFF0000FFFFFEFFFFFF0100000003000200060003000200F7FFFFFFFCFFFFFF01000200FFFF0000FEFFFEFF0000FDFFFFFF0000FEFFFDFF0000FFFF0300FEFFFDFF03000600020001000000FDFF0100FCFF0200FFFF02000200FBFF010004000000FFFF01000100010004000000FFFF0100FCFFFCFF0800020000000100FCFFFFFF00000100F9FF0000FFFF0100FEFF0400010003000000FEFF02000000FFFFFFFF00000200FEFF0100FDFFFEFF0000FFFFFEFFFCFF0200030000000200FFFF040000000000FFFFFBFFFEFFFEFF0300FDFF0600FBFFFFFF03000500FEFF0100010001000100FCFFFEFFFFFF0300FFFFFEFF02000100FEFF0200020000000100FCFF0000FFFF0100FDFF030002000000FFFFFDFF0100FEFFFDFF000003000500FCFFFEFFFFFF030000000300050001000000FDFF0200000003000100FEFF000005000000FEFF0500FEFF02000300000000000300FDFF00000200FAFF040001000000010000000300FFFF00000100FBFF0200FBFF01000500FDFF00000100FFFF00000000FFFF0100FAFF0200FCFF01000200FBFF0100000001000300FEFF040003000200FEFF010002000600FBFF01000100FFFF01000200010003000300FEFFFCFF0100FCFF060003000400000002000100FDFFFBFFFDFFFDFF0300F9FF0500030000000100020002000300FEFF0000FFFF0400FFFFFFFF0600FBFF0100000002000100000001000000040002000000FBFF0500FCFFFCFFFFFFFFFF0000FFFFFFFF00000000FEFF0100FEFF01000100FFFF0000FDFF00000200FFFF0200FEFF020004000300FBFF0400FEFFFEFFFEFF040003000000060002000300FEFFFCFF03000000FFFFFBFFFFFF0200010002000000FBFFFCFF0100FAFF050003000000FCFF0000FFFFFDFF04000300020003000100000000000200FFFFFEFF010003000000FFFF03000100FEFF020002000000FFFF020001000300FDFF020002000300FBFFFBFFFFFFFEFF01000000F9FFFEFF0300FBFF00000300FCFFFDFF03000300FEFF02000100FFFFFDFFFEFFFEFF00000100F9FFFEFFFFFFFDFF0000FEFFFFFF04000300FEFFFFFF0100000007000000FCFFFBFFFEFF0400FDFF0000FEFFFEFF03000000FFFFFBFF02000100FEFF0100FEFF00000700FEFF0400FFFFFFFF0300FAFF03000000FEFFFFFF04000100FEFF010002000300FBFFFEFF0100FDFFFDFFFDFFFBFF0300FAFF0500FFFFFEFFFFFFFFFFFDFFFEFFFDFF0200FCFF0400FFFF0300FFFFFDFFFCFF0200FFFF0300FFFFFDFF0200FFFF03000100030000000000FAFFFBFF0100FDFFFFFFFFFF0100FEFFFFFFFFFF00000400FCFFFFFF04000000FEFFFFFFFFFFFEFF0000FCFFFEFF0200FDFF0700000005000400FBFF01000200020004000200FEFFFDFF00000100FDFF0500FCFF0200FEFFFDFF0100FCFFFCFF0000FDFF070001000000FDFF04000100020003000300FBFF0300FDFFFFFFFCFF08000400000001000100FDFFFEFFFCFF0200FFFFF8FFFBFFFCFF0300FDFFFEFF010000000200FEFFFDFF01000000010002000100FEFF0200000001000300FDFFFEFFFEFFFEFFFEFFFFFF04000100FEFF010002000000FFFFFEFF040006000600FCFFFEFF010000000000FDFF0300050001000100FBFFFEFF00000200FDFF0100FFFFFFFF05000100FCFFFEFF0000030001000000FFFFFFFFFFFFFEFF04000100FDFFFEFF070001000300000004000000FEFF030001000400FFFF040004000600FBFF0000FDFFFEFF05000300FFFF0300020000000100010004000200FFFF000005000000FCFFFFFFFDFFFBFF0000010000000200FEFF000001000100FAFF0400FFFF0000FBFFFDFF040003000300FDFFFEFFFDFF0400FFFF0100FFFFFDFFFDFFFEFF020002000400FAFFFFFFFDFF03000000FBFF01000000FDFF0100FBFFFDFF0400FEFFFDFFFCFF0500FEFFFDFF02000100030004000400F8FFFEFF0000FCFF03000700FDFFFFFF0300FFFF0000FDFF0200FDFFFBFF010003000500FFFF07000000FEFF0400FFFF0000FCFFFDFF04000200FCFF01000000FBFFFEFFFDFF00000400FFFF020002000200FFFF010000000400010003000400FFFF01000200FEFF0200FDFFFFFF0100FFFF0200FFFFFFFFFCFF0100FDFFFFFF00000400FBFF0200FDFF010004000300000000000100FEFFFFFFFBFFFDFFFDFFFEFF0500FEFF03000100FFFFFEFF0400FCFFFEFFFCFF0000FEFFFBFFFFFF0100FEFFFCFF02000000FFFF00000500FFFFFEFFFFFF0300020003000200FFFF04000600FEFF0200020001000200020001000200FDFFFFFF0100050001000000FFFFFDFFFEFF050004000300FCFFFFFF0300FFFF01000000FFFFFDFF0200FFFF0300FDFF0200010004000100010004000000FEFF0400FEFFFDFF0300FDFF0000FEFF0300FEFF0300FFFF03000100FEFFFBFFFFFF04000000000002000300FEFFFEFFFEFFFDFF000000000200FBFF0100FDFFFCFFFFFFFEFF0300FFFF0200FFFF01000000FFFF0200FFFFFDFF0000020001000100FFFF0300FFFF03000100FFFFFDFFFCFF01000100FAFF07000000FFFF0200FFFFFBFF00000000000000000400FFFF01000100FEFFFFFF01000000FEFFFFFFFDFF0200010001000000FFFF0100040001000100FFFF01000000FDFF0300FCFFFFFF0200000001000400010003000100000002000200000000000000030000000000FFFF04000200FEFF0100FCFFFBFF05000000FDFF020000000100FEFFFFFF0000FEFFFFFF010004000100FEFFFCFF0200FFFFFBFF0100FCFF0200FEFF0100FDFFFDFF0000FCFF0100FFFFFDFFFDFFFFFF010001000000000000000000FFFFFFFF020000000200FDFFFFFFFEFF01000000020001000000FFFF0000FEFF04000100FFFF0200FEFF01000000FCFF01000100FFFFFAFFFFFFFFFF020003000100FFFFFDFF0000FEFF04000300FEFFFEFF0000FAFFFDFF000000000100020000000100FEFF0100FDFF0200FFFF0400FEFF0300050002000200FFFF0300FDFFFBFF0500FFFF0000030001000200FDFFFFFF030002000100FBFF00000200FFFFFAFF05000200FFFF040000000200FEFF040003000000FCFF0200FFFF000001000100FCFF050001000400FEFFFFFF0300FFFF0200FEFF00000100FDFF0200FFFF0200FDFFFFFF04000200FFFFFEFF000000000200030002000200000000000000FEFF02000200FEFF010000000100FEFF0300FFFF0100FFFF0200FCFF010000000600FEFF0000FEFF0400030000000000030003000000040003000000020003000500FDFF0300FFFF0000FEFF0000FFFFFBFF00000000050000000300010001000400FFFFFFFFFBFFFBFFFDFFFEFFFEFF0000FEFF0100FCFF0100040003000100FCFFFFFFFCFF0000FCFFFFFF01000000010000000600FCFF01000000FFFF020000000100050000000100FFFF0100FEFF01000200010001000200FFFF0100F9FFFFFF00000300FAFF010006000300FFFF04000900FDFFFBFFFFFFFDFF0400FDFF03000000FFFFFCFFFEFFFCFF00000000FBFFFFFFFCFF0300040002000000FFFFFAFFFEFFFEFF09000300030001000300FCFF03000000FEFFFDFFFDFF0100FFFFFAFF0100FCFFFEFFFEFFFFFFFFFFFCFFFFFF0400FFFF02000500FEFFFCFF0400FFFFFAFFFCFFFCFF04000200010003000200FFFFFEFFFFFFFFFF0000FFFFFAFFFDFFFEFFFCFF07000500FEFF01000000FEFF010000000200FCFF050001000000FEFFFCFF03000000FEFF0100FFFF0000FFFFFEFFFEFFFDFF01000100040003000000060001000600FDFF03000000FCFF0600FFFF0300FCFFFCFFFFFFFCFFFDFF01000300FBFF0500020003000100010005000000FDFF010001000000FBFF01000300FEFF0300040001000000FCFF00000700FEFF010000000200FFFF0100FEFFFBFF030002000200FFFFFFFF000005000000000000000400FFFF0400FFFF0300FCFF0300FDFF01000000020005000400FAFF01000000040000000400FDFF0200FDFF0200FFFF00000100FBFFFEFF00000400030001000200FFFFFEFF0000FEFF020000000400000002000300FDFF0400FEFFFFFFFFFF02000200FFFF04000200FDFFFFFF0000FDFFFAFF07000000FCFF0200010001000200FEFFFEFFFFFF00000100FEFF0400FCFF060001000200FFFFFFFF03000600FAFF0300030006000200FCFF000004000400FBFF0400FCFF0200FDFFFEFF00000000FEFF0000FBFFFDFFFEFF0200FEFFFFFFFEFFFCFF0000FEFF0600FAFFFEFF0100FEFF0300FCFFFFFFFAFF0300FEFF0100FAFFFEFF0000FDFFFCFF0000FEFF0000FDFFFFFF0100FCFFFDFF0100080004000400FCFF00000200000000000300FEFF0100FFFFFEFF0000020000000500F9FF0600FEFFFBFF000003000100FFFF0200010000000000020002000000000002000400FCFFFFFF0000FFFF0100FEFFFFFFFEFF020002000000FFFFFDFF0800FBFFFFFFFFFF000001000000FCFFFCFF01000000FEFF01000000FFFF0200000000000000FEFFFFFF00000100FEFF00000400FFFF03000300FFFFFCFFFFFFFEFF05000200FFFFFEFFFBFFFCFFFDFF0300F9FFFFFFFEFFFDFF000002000000000003000000010004000200FFFF0100FDFFFFFF0000020003000000FAFF0600000002000300FCFFFDFFFEFFFFFFFFFFFEFFFDFFFEFF040000000100FEFFFDFFFFFFFEFF03000100FCFFFCFF0000FCFFFCFF0300010001000100FFFFFFFFFEFFFDFF020006000200FFFF00000400FDFF0100FFFF0100FFFF06000300FFFF000002000200FEFFFBFF0300000002000300FEFFFDFF04000500010000000100FCFF0400010003000200FEFFFEFFFCFF0200FEFFFBFFFFFF00000000FCFF03000200030002000000FEFF0400FFFFFEFFFEFFFFFFFFFF0700F9FF0100FCFFFEFF00000100FEFFFFFF0200010003000300FFFF02000300FCFF05000300FDFF0100030000000200FEFFFFFF0100FEFF0200FDFF0100FFFF040005000100FDFF04000400030000000100000003000000FEFF0500010003000500020002000000FCFF05000100FAFFFFFFFBFFFCFFFEFF03000200030001000000FEFF060001000000FCFF0500FFFFFFFF020003000200FFFF0000FEFF04000000000000000300FFFFFBFFFBFF0100010002000000FFFFFFFFFDFF0400FEFF060000000000FCFFFDFF0700FFFF0400FFFF0300010001000100FEFF0000000002000100FEFFFFFFFFFF000001000000010001000500FFFFFBFFFEFF00000200FFFF0000FFFF000004000600FCFFFFFF01000300FFFF00000000FBFF02000200FFFF04000100FDFF0000050002000100FEFFFFFF0500FEFFFAFFFEFFFFFFFAFFFEFFFFFFFCFFFBFF0100020001000400010004000100FBFF05000200010001000200FFFFFEFFFFFF0000FCFF01000100020001000500FCFF00000000FCFFFDFF010003000000FEFFFFFF00000100FDFFFAFF010000000100FFFF0200050003000300FEFFFEFF0200030001000100FEFF0000FEFF0200FEFF0400FEFF0000FDFF0300000006000400FEFF04000200FEFFFFFF0100FBFF0000060001000700000002000400FFFF000001000300FEFF0000000002000300FFFF00000000020000000200FAFF0100030001000300FEFF00000200FFFFFFFF000002000700FEFFFFFFFDFF02000000010004000300FDFFFEFF0300FFFFFBFF02000100FEFF0200030003000200000001000000FFFF020001000300FFFFFEFFFEFFFDFF00000600FBFF0200000002000000FDFF0000FDFF01000400FFFFFFFFFFFF02000300FDFF0000FEFFFDFFF9FF03000400FFFF0000FEFFFFFF0300F8FF030000000000040005000100FBFF03000000FFFF0000FDFF0400020001000400FDFFFEFF02000100FCFFFEFF0400FEFFFFFF04000300FCFFFCFF06000600FFFFFCFFFCFF0100020001000400FEFFFFFFFFFF0300FFFF0200030000000000FEFFFFFFFFFF0000050002000100FDFF0300040003000100FFFF01000400FCFF01000300FCFF0300FCFF02000200FCFF000005000100FEFF0200FDFFFDFF0200FEFF020000000800FFFFFDFF0000FEFF0100FDFFFCFFFDFF050001000400020006000300FFFF02000100FCFF0000FAFF0300FAFFFDFFFFFF0400040008000000050002000000FEFFFCFFFDFFFDFF0500FEFFFFFF0000FEFF03000100FFFFFFFF0200FEFFFFFFFEFF00000100FDFF0200FEFF0300FFFF00000100040001000000FCFF030001000500FEFF0100FEFFFCFF02000300FDFFFEFF00000000FCFF020000000000F9FFFDFFFEFF0000FFFF0200000003000000FEFF0000FAFFFDFF00000000FEFF0200FEFF01000100FAFF0100FEFF03000500FEFF0200000001000200010001000200F8FFFDFFFDFF05000000FDFFFEFFFEFFFBFF0300010000000100FCFFFEFF01000100FFFF030000000100FDFFFFFF0100FEFF0400FEFF0400000003000100050001000300030000000000FCFF010003000000FCFF0200FEFF0200FFFF0500030004000000FEFF0500FFFF04000100FFFFFEFF050000000100FCFFFEFF0300FBFF04000000020001000500FEFFFFFFFEFFFFFFFFFFFFFF0100FDFF0200FBFF06000000FDFF0100FEFF0200FDFFFCFF01000100000004000700000001000000FEFF0400FEFFFEFF0100FDFFFFFFFCFFFDFF00000200FEFF0200FBFF03000500FDFFFEFF0400FEFFFEFF0100FBFFFFFFFFFFFFFFFEFF0600050003000200FBFFFFFFFAFF030000000300000005000200FFFF000002000200010001000000000001000000010003000100FFFFFFFFFEFF0100FFFF0000FFFF00000200FFFF0200FCFF0000FDFFFEFFFDFFFDFFFAFF0100FFFFFCFF0000FDFF0000FCFFFCFF0300010000000100FAFF0000FEFF0300FFFFFEFF0100FDFFFEFFFCFF000003000400FFFF0100030000000000FCFF03000300030000000400FDFF0200FCFF03000100FDFF02000600FDFFFCFF0200010002000200FCFFFEFFFDFFF9FFFFFF02000000FBFF0100FAFFFBFF0100FFFFFDFFFEFF0300000000000600FBFFFDFFFFFF0300000006000300FEFFFFFF00000100FFFFFFFF0200FEFF0500FFFF00000100FFFF0600FCFF01000200FAFF01000800FEFFFBFFFEFF010002000600FDFF03000400020004000000FBFF0300FDFF0200010000000300030000000300FCFF000002000100FBFFFFFFFFFF01000500FFFFFCFFFEFF0200020000000100FFFF0200FEFFFFFFFDFFFFFFFCFF0500FFFF02000300FEFF01000500FDFF0100000003000100FEFF0000FDFFFEFF02000300FDFFFFFF02000400FDFFFFFF0100FFFF0300FFFFFFFF00000000FFFF00000600FFFF0100FFFFFFFFFCFFFDFFFEFF0100FFFFFFFF04000100FBFF020002000200FEFF0A000500FDFFFFFF0100000001000000000001000000FFFF00000300FFFFFFFF00000200FFFFFFFFFEFF00000400FEFF0000FFFFFEFF030001000100FEFF0200FDFF00000300FFFFFFFF03000200FFFF0500FEFFFFFFFDFFFEFF02000000FDFF05000200FEFFFDFF0100FFFF050001000500000005000000FFFF000001000100FEFFFCFF010001000200FFFFFFFFFDFFFEFF0300FDFFFBFF020001000000FDFF03000100FEFF050001000000FAFFFEFF0500FAFF0100FEFFFCFFFCFF0000FEFF0200050006000600050001000300010001000200FEFF04000200020002000300FCFF05000400FDFF020003000300FCFFFDFFFCFFFBFF03000600FEFF0200FBFF0200FDFF0500FDFFFEFFFDFFFFFFFFFFFBFFFFFF0200FEFFFBFFFFFF00000200FFFF0600010000000000050002000000FFFFFCFF0000FEFF06000000FDFFFBFF0100010004000100FEFF0000010001000100FFFFFFFF03000000FFFF0000FDFF02000500FFFFFFFFFFFFFFFFFFFF01000300000002000200FAFFFDFFFCFF03000100FEFF0000FEFFFFFF02000100040002000100FDFF04000300020003000200000006000100FDFF0100FFFFFFFFFFFF0300FFFF0400FCFF00000300FDFFFEFF0500FDFFFFFFFEFFFFFF0200FFFFFCFFFDFFFEFF040001000000FFFFFCFF0000000000000500FCFFFEFF00000000FFFFFEFF03000200FFFF010002000100FCFF020001000000FEFF02000100FDFF01000000FEFFFEFF0500FEFFFBFF02000400FCFFFCFFFFFF010000000100FFFF02000000FCFFFDFF0200FEFFF8FF0000FEFF0100F9FFFFFFFBFF0200FFFF0300FFFFFCFF0300FAFF000003000300FEFFFCFF0800FAFF0100FEFF0200FEFF0400FDFF000003000000FBFFFCFFFCFFFFFF0000FCFFFFFFFFFF0200FFFFFEFF02000100FBFF010001000200F9FF0100000006000100F9FF03000500FCFF03000000FDFFFCFF0700020000000300FEFF0000FDFFFBFF0100FCFFFEFF00000300FFFF010001000000FEFFFFFF0100FDFFFDFFFEFFFFFF0100FFFFFDFFFDFFFFFF01000100020002000000010000000100FCFF010005000400FFFF0000FCFFFBFFFFFF0100FCFF0000FEFFFEFF0400010001000100FEFF0300FFFFFEFF01000000FFFFFDFFFFFFFFFF0200FDFFFFFFFFFFFCFFF9FF0300FDFFFEFFFDFFFFFF010006000600070000000400FDFFFEFF0000FFFFFFFFFEFFFEFFFBFFFCFF0600FCFFFEFF030000000400FEFFFDFFFDFFFDFFFEFF0100FDFFFEFF000001000500FDFF02000300FBFF03000300020001000100F9FFFCFF01000100FEFF0000FDFF0200FAFFFEFF04000000FEFF020001000100040003000100FCFF01000200FFFF00000300FFFFFDFFFCFFFCFFFDFF0000FFFFFFFF02000100080000000000FBFF010002000400FFFFFDFF0000FDFFFCFFFDFF00000300FEFF0400FDFFFCFF0200FFFF000001000200FFFF0100060003000300FEFF03000100FDFFFDFF060001000100FEFFFCFF03000100FCFFFCFF0100000004000500FFFF0300000002000100040001000300FDFF0000FDFF02000600FFFFFEFFFFFF0300FCFF0100010003000100FFFF01000100FFFFFBFF050005000000F9FF00000100FFFF0100FFFF0100020002000200FFFF040002000000FBFFFFFFFFFFFFFFFCFF0000FEFF01000300FCFFFFFFFEFFFDFF0600FDFFFAFFFFFFFEFF040000000100FFFFFBFF0200FEFF030006000100FDFFFEFF000001000000010004000300010000000100FFFF0400FEFF01000100FBFF0400010001000200FCFFFCFFFFFFFBFFFFFFFCFFFDFF0200FEFFFFFF030002000000FDFFFEFF020001000100FDFFFFFF0400FDFFFFFFFDFF000002000000FEFF0500F9FFFFFFFDFFFEFFFEFFF9FFFFFFFBFF010002000000000005000300000000000100FFFFFDFF0600FFFF0000FEFF0300FDFFFAFF02000000020000000400FFFFFCFFFEFF02000000030000000300FFFF02000000FFFFFFFF0200FFFF01000300FFFF0200FEFF00000100FAFF00000000FDFFFEFF0100FDFF02000100020002000200010000000000FEFFFCFF02000300FFFFFCFFFFFF010000000100020002000000FEFF0200FEFFFCFFFBFF03000400FAFF0700020000000500FDFFFCFFFCFF01000100FFFF0500FFFF00000400040001000200FEFF0200FDFFFFFFFEFFFDFFFAFF0000FDFFFBFFFCFFFFFFFCFF010003000100FDFFFBFFFAFFFEFFFBFFFFFF0500040001000200FEFF0400FEFF07000400FFFFFDFFFFFFFFFFFCFF000000000700FFFF02000300FFFF0100FDFF0300FDFF00000100FFFF0200F9FFFBFFFCFF0000FCFF05000000FDFFFFFFFEFF04000300FDFF0300FDFF01000000FFFFFDFF0400FCFFFEFF03000500FDFFFBFF0500FFFFFEFFFFFFFEFF0100FEFF03000300FEFF030000000000FEFF0200FBFF0000010004000300010000000000FCFFFDFF0000FDFF03000300FFFF000001000400FCFFFEFFFDFF0100010001000100FFFFFFFF040002000100020001000100FEFF04000300FFFFFFFF01000500FEFFFEFF0100FDFF0200FBFF03000400040003000300FDFF0000FFFF0200000004000300FEFFFFFF0300020002000200FFFF0200FDFF04000000FBFF030004000300FFFF0200FCFFFEFF01000400FAFF02000600FEFFFFFFFEFF020000000100FAFF00000500FBFFFFFF0000FFFFFDFF020001000300FEFF0500FFFF000002000100FEFFFCFFFFFF0900010000000100FDFFFEFFFCFFFEFF04000300FDFFFAFFFBFF0000FFFFFDFFFEFFFDFFFEFF00000000FAFFFCFF0000FEFFFCFFFFFF03000300FDFFFCFF02000000FFFF020005000000010004000500010003000300FDFF05000100030001000300FAFFFEFF010001000200FBFF020001000300FEFF020005000000FBFFFDFF05000400FDFF0500FCFFFDFF0200FCFFFCFF000003000000030000000100FBFF06000200F9FF0200FFFFFCFFFDFF030005000300FBFF0200010000000400FDFF0200FEFF040003000100FDFFFCFFFDFF03000300FFFFFFFFFBFF010003000400FFFFFDFF020000000300000000000100FFFFFEFF0100FEFF00000400FBFFFFFF01000100FDFF0100030001000000FDFF0100FFFF00000100020002000000FDFF0100FFFFFEFF0300FFFF04000100FBFFFFFFFEFFFFFF0200FFFFFFFF0300FCFFFFFFFFFFFFFFFFFF000000000100F9FF07000300040001000100FAFF01000000080004000500FFFFFBFF040003000000FDFF01000500FAFF010000000000040000000100000001000000FFFF0100FAFF03000600FEFFFCFFFDFF0200FAFFFEFFFDFFFFFF020004000400020000000000FDFFFEFFFEFFFFFF01000300FDFFFDFF01000500FCFF0200FDFF0200010004000100050002000200FFFFFDFF010003000100FFFF07000100010002000000030000000000FEFF0100FFFF000003000100FBFF0300FDFF00000200FDFF02000400FEFFFFFF0200FEFFFDFF01000000FFFF0000FAFFFFFF0200FCFF020000000300FEFF0000FCFF0700FFFF02000000030002000000FEFF000004000000FFFF01000200FFFF0300F9FFFEFFFFFF01000100FFFF00000100020002000200FBFF060003000400FBFFFFFFFFFF0200FEFF0300FDFF000002000000FEFFFFFFFBFFFDFFFDFFFBFF0400FDFFFEFF0000FBFFFEFFFDFF0300FEFFFFFFFDFF04000200FFFF010001000300FAFF0000FFFF00000200FEFF010000000200020000000300FDFFF9FF0100FCFF0000FDFFFFFF02000000FFFF04000200FEFF0000FDFF0000FFFF02000200FBFF0000FFFFFDFFFFFFFEFFFFFF00000400010002000200FFFFFBFF0300FBFF0200FEFF0100FFFFFCFF05000200FDFFFEFF060000000100010001000400FEFFFFFFFEFFFDFF0200FFFFFCFF050001000400FEFF0700FFFFFEFF0100010002000400FCFF0100FFFFFFFFFDFFFAFFFDFFFDFFFDFFFCFFFEFF0000FDFFF9FF0000FDFF0100010004000100F7FF0100FDFFFFFF00000000FAFFFCFF0200FCFF0100FDFF01000300FDFF0100FEFF0300FEFFFDFF02000200FFFF020002000100000000000100020001000100000002000100FEFFFFFF04000200FEFFFFFF04000200FFFFFEFF050001000600FBFF0200FEFF01000300000001000300FFFFFFFFFFFFFAFF010003006B8164B9D38ABD4F28D9E7EBFEF2666A +ct = 2368AB3116DCA30069F91E7BC4822A6F26291F17F4A44D48C62B3AC8357FB2184A0113AEAE0560F9C2AE6562E1C92710EF4D97E705E12DCB9A123E7D737FCABB7A38D06D1ED9A80E05A38F39F9179B42831CB88872E34C8D28DBE3F5E629188AB9EFDEB37D4752D95578B53AA8EE6080B0F2C935EE87E312C78EA369D6DEBFE928E9A868392AD588E41E74895DBF3C1EFCC84C905FA6125E49221DBC9443F5FF866F537113CC4E5EA066358A2BCFC4B548C75DFE449CF61F27E02282AD1977EAC9FEF2582AB8A1DCF265590DBD470EBC630C30F7193E97D2FDD8FB0E5508CDE9EC5D4DF33A213192139AD51FC056183E9378CEAD0075AD71E7B89EC7ED24500EB8C33631D1234E206E122B4A15AFBFB7BCDA3496A7825D07FF966C8F319DC9AD926E07158D65E3865E905D8D1F257E1CA5997B2E9E160D29668CD5F2DC3B98617DE66B39262F88E27E24C352EA22607AADFD2846F55057878FA7EA2BD933033DB5AF4C9A2ECCBE397C267970A2F5A1F5D5668DD9AC2485B0F7F796A7B16703F22B34808891A61E1A274913FBE680C6D841BAC9323E0A9A36B311492CD37E4AAEB2BDB8EC9807EA07AF9914BFAC5BDF9EC79D25123545DCAD1E6CFEB997B042847B42E0B385DD2A9A61E30AE020A06773B18A3AFDAAEFE60F37960919045614B557DE4782EFF673F106981054BCED188E145D2B8D6B7405B7800B8E9586A3F80EB402D4658F0CCF149D37D1FF1BEAAFC360CECB579110811C9184D19E7311C0FEA5EEC57A9FB5F7C2B0763ECBEDA961CA57AFE7702BB5981993EDDC0B8B428A470B16D4AAD0684F748F6BEECFE9A54EE316447BE5338AAACD8373E07EAD42C782C24C4EE39091953608D4E186533DBD525D141A48588D2257B81C6A45027E726308CF6D86B6293D5712031E47DA00E3EA6914C2CBD1ECB60EFAC28B4ECCE04B5D4D16D7A9777588B440FFE43410CE0A76F70F88AA6AFAB3F14459CEA62A30462425D3E6112F12A3F4F264415E1A81C005E0D91CEEE6C0A84C4A7DCCE718CADAC66EAA608C243AE7B82CAE7FC37B391642A289F850F5E7F154417DD12266C89A62D001E5DD2040DDE98118A5A04F30D4F8A5F74B868CCBC5E2CA296A868CE5BE9D49ACB502A1041AC508AF8FF3CC9468197F105DFAAB6277C5D1CDC886BFFEF810743FDC39AC4EC8191359A2DF27BECCCDD067381768518A0E62ECC2B58BCA475379ACB196547DCE2E183FD2CAFA326314A8BBBEC0BCCB4762EC2BB0AD9B81F2E3A2BFE358F262E9F8635709E3693CCFE28CC0C54BAA3BA0A577BC3FF7D01044BE2713E89608CFB9AF68FA9CA92A2C9F0E775958CC9E30871AF730CA9685C86D2A94FD776FFA1A5008C11E17C8CA8748824DF80A3DFF2AC97EA739E685A40995E75A62915E9638B4EF550CCC76AFFBEF78993AD132BBDEE5BF76E0155694C7A1227AD6F527906CDD65D0B10714820BDD79E1CB50A48A5D639ED0E7A1DEBC072D8382DAE27C11DE23B735714ABAB2CE612C94FC25AE7402D5F314819CADF5F9877C72C04DA4563210A6AE1D2586C664899A237D924D2F2C349DB9CE696842C6F4FA6145FC52D3FC58B7796CE3B4B4BDF4EE1050D40373547C6F8CE6F1F50E8484F460B51C561E2BC15D8C788DCB39D6149EC370DA6DEBF6A2E6356A50C34445F4FA7076DE05375C8906CC07440B9E4E7883513E4BA93F354249BEA78330D6BB0566B4BD967A634081CDAEB1456C883A0405334CFA6CC47752DD3312DCB3FC8274DBD6AB1388A13EACC956588BACE7D0E04B1BF78C1E334847054A9F18D98E23D61AFA844A58D37BAF142D7FD46B2ACA05AAEBEE2F9E928E74D09EB8FF430D339DBC45E2857692E514205E359D7DF7E40DD76B15330CE783B7583602EA76D84F750DBD2242EA868F40D7A2992C87205DFF7616C524CCBC876986139BEE4109BE0A83E6F14FD4B8E62D9197FBA3D71C4D911E969747CD1CEE258281F3F316BC4A419454377536D2C5DCBC902EF115BE346FDF49E6015FED2B466B6C330BA8961766FF95C61485BD45EE8359E2BA6C243DE504A1BA702E675BC4D4821F81B017DF74D8112DA6EA9035A8A8BC448B1F2E2C2A999E8A66B274169F92FAB749B7D157F8AD611E4CA6E45274E51D6ED76E2A0F01A81454198CC8835E01E54B4212740A7A783FE44BB0948798489D4C65E3F62B626AC429D123C20CA4DB9BBB954E561F39BD56B597E92020319572BA201ED6608A27DBDA0C07017CB30DCB4710F7BB3E85321CEA595BF4054DE444D91135A3FCAFBA48CB484BD3BC1DEC9F6F5810A4D16A82056E93EF55173EDD92C19D16814363CE4E9B9AEE894F9A01F60E293EC3645FD05D0934A7C54D7F6C195B0CA188582087F6522E099F6A95D625BABD15CF8FB57E977D871BFE1119B4A62D6788DDECCD04EE5F1C658432F4723D80BB36323067F3F000D4F9D47AC0FD3740FDD61717E42E4ECB429C164DC6747532CC1D9948F5B27BCAFED4C410E9DF4537C22B5C674FCFECBA5AB4B56B210F4B3B8C3DD4C911267EB94E16AA98236201740BA5C95FD8D9938D022D0BAC6F18E6C960AE8E1D32F7C47AA5B936BB8254885E3F8AF08D15FE92E02F18959BF27FD35636E83E828FECBB7ADB93712FB438C4EA5AFF22117B9FBEADB687C9CBBFC7284FB08C5B1485C60DB0FFA1C580D339F0C5940C6F90561BB28BA0C63FAB77842EBCD6A72D58798897072DF9000A83B6EF91C30F3FA350A86D62F1F8A01C0CC7A2D04ECC16C845A65E006E7CDBB760A794B78CEE4A7AE49C2410E256CB86B84AA4E4A6415367104FD52FE09068D10773D12000E422EC8203C77400A8B1EB8D292CDBEDEB2F117079EC70471A8988679AAD6452B165AB003155E982B3D4197FED08E955B0BC25F06E0CE5178F0249A3DD86B86BA797A6E5A6B5951208798AB61427D23CF4E61F3F3E5F0BB6C677BBF8F4608B54CC556AE2EAB43BE85786A4F3B7F8E1D2CB778EB5CA49EB8F02F6BAF67CA1447137B609D95A60F0EFEA424F9130E0D3DBD6F61108AD796F4B381EB40A0E1205A931EA0F774C7D80A9443214BBEEC01EB226387C692DD6BD0CA1AF27AD665A0329B659D0EB9466AFFFFF575D908B0ACA412794B7E544ECBDC0F37D9CF783C66AE913EC33C89B62AFE80F552D9935A6FF4F0A57319733F6F8F33CEFBDA441E6A055BC72ED786B8424DE195351B2D02E68746BA30305265A7DBFB2A4BB8B883839645D69CCA44F0997381A25BEC127C68FDBF3DE0951DFF361F7442DDDE2A6D611B30CCA847A6E1C649560C0EC0A365A9A959ED331460B9EE463D69B934A16D33732931A1F0FED35C486DA74B69E50BBC4A02FFBBBEE9E5F8E98D16B59C6A1AC4224A9839E19BE4F24C9C31B642CEB6D85C78C897E58881D988F31B12B3800A46A81579737A58E8F75403BC913ACA6766D147F7028D7DF786BA86F57EC3D517ACF53071C391275DAE23B0D4C323C9A0BD87EC63CC533F2B1E33DF1283C53797A212B4AFBA11B7E8FC7EE0727F93DAB4B54F786039335724CC1C96C75D93FC051F7E426B3451590F6264921DC7560AEBE147CD665D33BF57F004131B1DCEF52BCC607F26979B3E1800BA28B72DD23DF0C696B6E30B9DD0F31F0466033CA2D4D23BC71472FC847B50191CA52EF9B74C5C96181BA79BFF3E25CE82AADB473787309C2AD197418D6B68174B03619C20705922158B0F1749D50FB9203238EE50A394A4821936E4934007D423D69B249E2A4F4AFEDD4BE6FB6686C4BD37B7B5D793B4E42D8E9C224463657E6C06D673B6E8F41113D97AE48D9C6E09BAEBA5F498E2A108CB104F49C9D27DD1B2519150FA9EBA88B854C9D9B639068DD30DCE7CF5B895C6A1E3AEBE13089FCE62AE23BE2CCB3145F3D5F5C05412B50DE51192054A5469EAF8434E636DA14C7AE24A4686D3EB2B780D6D1E5D24ACDB3BD9BCB183C8F2E47F278CFE6C5A2D6569602C9B3CF8A4A7AFDF747EB81F9DF3DDB59BF6D36169AB74D7D4012EE69D7B1B61701099115AC46D7A51D52449D3CE92A8789AC14B0CC9E12B13738ADE1D426149FE2FC828412D2E124C6071C7B68F48299CF737DB0E1B6DAB1F05AC2DD0AB94B01DEF1A806116D67E581644859E51645455E481F4B01EBF440E00555ED67B45392FB3D107DB41F0B1E2DD80A50560B6CC5A0C7589BC8C6ABC146E56B4B449FE2F1F81168E6FCDA566E75D81A7F51E6A111692F9180ECF9991200907214193B2891B013A937A8D319B5794C666ABCCDAD63E7AE38DEFF8FE46222E08CC684D6EB4BA796A27867F30F34C7AFE7C3D2DD19C966156A98ED66D59443524085D27AC739BA8ED293055B60A906B7D0CBEE55D127278A91FC85EA9F4006DA9667BBEE0120D934EA071DDB2B8D9766C9F67E9AC72C171EF16B78D35EA93621279B1477137C871137D2AC398325AB3D74C7E8FD0C65808BC05B6F659CF235A395E15E5D13EA3F7EB07D4188004EA2B3C6E50A252EEBEEBDDC75EBF27C0B34C76372B6929F641719827399ED2727668EAE771D26952D35294EC31407A0D68BCC96EB15953CDE7E88D5C91ED857B1576AE54E2DC8B4C59BCEBC8C50A85A27A672C4A53D7BABCCB2EA53F7A398DEB0B75CAA87B90E74C638836502A84E68370F185F2AF9A17DD6BEFCB3ED4CD82018CEF8A0B3D7D9049688554DE3B18B385CD99A9708167CAC1BBAEBDDB051257C404B73DEFDFD6DF022A400AFA7A21C8BDA58067F96CA3F251D1B7E705BA77F40C2A1BEE76268EE831A41328484F1038404DED8103BB22CDDADB065E2553F36E8E9F76B82A2606E15B58D13483470524F7A18327824F3FFC6193C8E030F243870EAE1D84C9CA9B7DACCDBDF2498B55F0C7FBEAAFA5FE2A65524CEE53461DC35B020F058612EC6EE39C25843F8278790372D20ED71B6EA153D6D8B8C2D394DC42616C4BEF97396B6A47C1E4E9BA02497D9DC6DD3849545BCF8193EE6A8760604F7A9AD66512E2B6B5FAEC859DE6C37BD854AF4A845714374A9C5D7118B4238DB06C1C8D984293CA00590AB74559E1D8B0378B273E8FF90007573D092E69BF3999551DE1BE702D67A4891760E1283E29B1CDA5A5AF87E04A2FCA40F000A18E6B96431DB83A88F3F08AFAC2BFFBF2FF5D6E9B8D7DC9811CAFC0444A9F7CE7552D3C49E6A64417D79B9BC8F6CDA0AAAC8CDED4C6DF29869E01044ED490740D18EECCA48B016F703D91883365D2776C756DAA2DA45D2AF220DC1C4909548C1A4480B8EDFFD8ACBCB090958DC5F290DA32C3F250E849C7BEFF926818A3A8EF94CEF81134C3240277D3B9AC61F743B82D661463BA7AA04259633E2183626125572FFC754B2799DB30CE7E983051BCB69C6BAD63B9E25A73B5DFFA78DCA13585139B926244CDD0B37364DA66F27FDA0C4DFD0C440DC3CD1529F9AFD8D3421AA1EA4DACEC72C61BD6AD6F93A7F46487A5486D5A8B21009A39E23ED5D39E9F80CF8F3CDDA6A2643632EB2A6643ED73DF2B0D749F6337DF3D762D80D1A418730F0EDAB45859C58493B3664BDCB01F8854EDE03D2ABD6FE649656774E0DD0932032E510C2A293FC35D647F3826D2C575A491D4BD445F6E4A1701584812A9A6749E1FD97B379D74095AE81C21DC9543E0B0005E55AA0EB59BA700A80F00A27217ACD74074ACE3C4C6F6E9DD54256E99D288191C3DFB3CAA80CF320C34E6EDF5BE0568D439A8D76708E16CB5E2AF5B8511CC349AF29AE027E8C92EFE18C5C05F0310E4994100C932BE8AA64BB46FF9373FB75A92480A8BC5133D2AA4C2C50D73B6033935995A4C97449E54E3DD13550DB89F29BD7C56D8D3527278DFC258C32DDB0EB19CDDAFEC3B7D5FA9F5FC2FC426C00132AF91E30112A33740A3B9EE1C968E237B8C8EEAE9556A7E1577C9195E533AC2977440A3BBA43993DF7CB14BF9A9CD02AAF4AE49EB7542E37CBAA7315D81A4BC96FAD5C7A33B97E0063D49EBC535C5C84A6C11684F9361D5A7DC6C29C91D704133D01E5BC8FDB5536C34F5C30F6E67E5793C105534ED179756F7D936FDF766B295920E6EABBACB3CB2A1231D265AFE35E7D5B32A1CD904EF0968B1336FAF3E449E20B1980D9182F3833E89D59495FBD696AEBDB8836CF4F2980CFAD624221278D17F5CB5A5C1C6FBF1E8FBDC435B14475224A49B30D8980B74D8078B59FCA9C25EDBE24A0516CDF853224FDF3F73DDF397D7158206E022382415E3D4078EFD8A1051738123A47717D5593741FAB21625E5509F49A233EA8BC4B38C4475C7C3CCCBD481755171B0E8EA692B5B35726DFE74A57595BB159AC424292A06B0DDE696EFEA6C514723BB3FFB02C44B112A534160D03A26355AB0B4C4A53DFA97562F4E677563E69DE64CA4642C6588BF73F5377771F8588FF0DA1D7BBA635A8846EAC005E2D2B11912F4BC0F2A85DD2FB85F82E960BECE3F8F2362C884411754AB7DBBB3AAB3CEC3F28A0AAE2350D481FD0A27C76D53561B83D0A67BD0C534BB5BE4ABC33D3E1944F313C31796DC30C911CACCF096B574C499F3C6E61B2484F8B8DEB8A6C631E9ECDE6991C40EDC5A9258540F065C041EB432149BC6CFA27395AE84B83670633A949178A76392E50CE14E45F3EBF5453DCDC1BE556C1FF2551A102CBC8511AFD0050A3708FC93171C1D7546EB49D7E1AB5FBA7B3AF2FD36BB3D620AAE438785E5B952048788DC5D5B3E2A9367793219413D55CC15C0430E1C62D8FE4459BFF4DAC9603671345A2079C84F7101F470A3D7CE95A87A7332B3640B9D767EA0E469B0E7B8AB6BED07D528E7FD7BDA58A93A6B157B9F960FAC898695987DA6ED4B99EF552A49AC17D7F735785174E3523CAFBA35A3CE06AADA0E40D9E393B242BFD56B83EC5A2EC3CD55F56EDAEDB0EF40D6CB326B81A00305FAB9078C5BA43472D0FB100E64D31B0FA2C0AB87FB130A462732BEF5CCA5DCC1F24FD4CE5957A47FF59D63A575847763080BC364CBCD20E91357C5A1B96AF786EE5939AC534AC060CC65DDBAE997D5EC876DF0D3602B9C1D532550EC75DA4FA3945682269F5FD2050F48EBADFB8149962772DDEAB28DDC2A42A2ADDCE20E28B79AE3FF87D4AFEC9131ADDD366BD890E5788F3B887CCE6270A8297492FE9223B57FEBD734104012F870553FFAF3306E4D0EA3999EB231349562716A5791D089E599FCDA5781290E50A1FFD73E91D3C6B33F87FA16A128FD835AECBE3B62BCD9D77FF0C73267EF3490C5AA0B049B0E4A698F7D1348A9CE8BB163A915AA84B296A6B8197EFD858D73CECC4A0E13A09C9CDAF8D10C5896003F1891D818BB2BB5D33D581A41B6E8BD97061C76DCE5BD5F26E2484D20431AE86A8D75EBF086BD95388F408089C0287305ADA0FEB3F9E7E18E747558E60EE963697597BDCFDF16F085CD1FAB78CE8B59F8F3CD5E35001CA29037E3873E404F389F5074FEBEEFDCD877F6AFA0F01AC790FF20FB0400BCE98E43CB836E6B193BB94E8100FA5458C2A52CB0E9BC8E476A996190691743D16A98D9984BBDA7FE11695539CF32958DAEB693F581EA524C4563837FAFDB3AD7AAA00B664714BB5AFA3EA5EDA365336DAEB8FC93B111A8C665FF6B73F21AC3E48448942F8D98C7DDBAE0CB6070018EA12D08DAA8EB16AF08D52AC9DC7C678EE4E766DA03FCD30716ED7E36786F6767F570E794FAB594D2256B85CDE0A2998D0CF8C1F49E2B26274DCA9D576CFCDFB32DF93FC6BFBE6E4C1C37207903CC950FA93FA138A35CE76C8F35E490E66406D517C4FD7A0709F1219C17887F2B6E455B2B40A93BBAB5AD23E21AF2BCE8EAD5C2AECF984E35D2E6FCF1D8D9DA6EC899E26BC098BE2A8F8995ECB143BB9B076CCDBD8153888D19DA9C039FB9C8AAB498CFE8181370C86FD8B5E86F38313B74928DA2379CB0879975538C16DECFBDA4A3D494DE3BBC5B8305BCEC59BD560224E4D9667DC276E6AC21CDE6B5744A4A62EB079177A4BE95C08FB1CE925184B2E9582DA620F4A62BFE52BF15930053B993597EF2958295B8355912789D697B7F7287035E97384B277943A3A9717C934BDBCC13781A50BF5D65499C2B221544E7462F5B364F47B51B674C3B9826BEE0152A6D4A48DB3B812AAF4E8276F22FDE8DDC6996FFC9BD7C97782AFDAB237A69CE801B89512E024ED3A26E53600C0A06CF00693179C6A19B6B2B4AEFE9AB721463FB710ED16906B1A77632D1383AF6A5EAAA213A3C6DE3A45B7D772AE0C0849DAD677A37582DB5948F5D506B4F80FA6372F18E7EF2B5C5BD2313E2413B3131FE65D290A651A04991452DD12DB1E78017234F6EC4220D9B1CFDBE7BC753BA192A9BD9E250AAAFD699B19F618C99D4E2E7E10D1BDC856C41F57E73E46F79D17ECFE1A6BC4FBBBD551FC349CE36D03D4F0223E503DCD04779451218C6F750C2998AD07A67883E306163A165CF713996E7EC63B706C3905DB96EF705CED20D66FECD51CE7DE17925F30BC1E6AEFD4523A5BF82E52BC0E6F2488675EC525604D2FDEFAC229493938219094A35463FC57255DEFB1B9E6C01D5E7E4A41EB68318C44A56A8AEAB9879B2B909EE966B47DB81B9E4C90DA54883FA0F82E50251B763871052A4FE1CD0E98A81FEDA995FBFCE74770D3F66C69D5B487EA1F67D940A0FD7050DF0EAE99CC0282497BF4E1827F7CC7C49A264C03A8F3466433ED0E7B2603E30296B55B25B540D62DF3B60D6645309998ED99ACD64FDD3BB0E09D13A4AB4E4DCD5984E543C1C0991758C4C1A02E75226665F48CD7BAFA8172057824DD86018AC6BDBA2AEFFC0C73278055D8E6EE2AB8283A0287D3E547E33732AA957DAC6EDAA9A560B374B58B7A326454CCBF4836EC39A3EED92A86426C0CCCC1FDCC16A9804BEC3EAA1D532D71CD9A37A4709C7F02D054A4473577B1F6BA7B481C2A023E2782709EC3133A5894D4EF7FBC8A70E11C4DA2F07554451422C1D48262DB805FBA08869836EA2B76A071697ECCB49D205C6F396953FDB7CE02336EB4530327C3E58282B62EC70507EE86B03720CAAD07284748D9F40AADC1CA9C3214434417ABF94DB967699A7ABDE3C2D48D0C50CDF6FB9AB92333F9FEDAF5507B16143BE15B22ACDFB32BB7C95DE5FE5B136DC860A98E34F79CDA14D2D95DF8E8103E901DCA2D214B0ED0E9F479563AB36455E2CAA91912DAB0178215EC673366F247D07CBFD3FBBB98F95936E54661067E6D2B49D7CD99A12C8A120A6C3026CD0500FA7AB263C4A830C54C91B11DCB18E7B2273A09CDEAE21CA637A6F82AA2F9DC4AD2024A353E1E09B620A6F97968BD3BB3C4292BB39545606FDBDD2F21D25D65B4CA071546AEC80BD42CE5499772D2CFB4C20169418C2EE6830D62566DC1E06DA28E2E8E44EE59357CF90A68F7006739B96A972E8687B88B92103F05F2B6DE183B28D748D6F248DBD830D3AA88817611383B6BB3E3372A8DD8CCE928CEB9512395523C8D5742E116AD1868D3F459BC8CA0B9E03F8D0DA76F2447C62E5828BB5126B56BDDE4521919024A905948B766D0607E08404D818A2841C8BE2333733A0EAF39A7B0FF03F156ABB3225AE85CB70E812255BD912FE568C084F5DE1FA60238CD99C3FBE7105259B8219804F0AAA9222E3715643F689EEDE9D17433779E86151A7BD6C91FC440DA335F24AF5D9F1B88CD0337003A4D670776024BC6021A27DEAA0D48E28898F0AA0DA050A16D3217EDBA992FA459E238F390CFCC95AEF6D71EAFBF362720D0C905646E7767F14C535B34471E981FF8103F192438D954A0BAC7084E863FDF5EFE60B3FBE467987632E6213E6C35193B838DC159C6F2AE0E304F0BD9EDA00770852FD570807F1E9E6752811FBC35B51725130C1324BA061F6AFC54BA7863EDD0FB264459CF4893AD2EBC8292E6AA8F7CF5FF97A1B888775BBD3C6D73F81C841EB2EEED3D5942E2A07F8A3C430EC98ED8CD5DFF46F9E9EA48EBD6488C381DBAD04B8C9BDC4D85C19079F521A6EC9CF667B219ADF5C785EAAE54D1CAA6017FDF930D855E26344B285D4A4FFE364A9CFE3D7B9E623B26BAA2F7CF02AF0F4B14E3245A767C2F9CA1C6E8C6D62914FFA36F3EFD85B32A1F14C19C5D2D4274C61BB7ACB8A1CEDDE2CBE25FC19F891004E072E8F399B954905E3336375C05E8FCCFA6911EA0267DA6E921AC1C6045DA65E2127F642350538E0271FEBCB87D396C48BD9864B9B0A32B5676C6F1B9871DF1FBCBECAB68344BE597F81CE87A2E49405B1B343139FB49C5AE798E393D9E6C223AC1FC98E527078F6D6DA1E085B4BE2A978796BE07E14B8269DAEC2C154ABA1EE8986AFC4E8A28D27AC2F69926C9A7FD49BBCB45E80AA9239551AAAE0D5024A165273E251F27E6268424CBDBDF6CA8E1F517BE243939ABFE09A7EABB4C11C2059A6114BB5767BEDFB8F1AC7274D18BE454805639A107D8855448A29856DF14F82C10D2B418430FD67E9489C5B9882663AEE2567A8AD11CDBB5F72239B4ED5BCA44726E2D6BD6342A369670E9A79B69FADF52CEFBE7641EBDE41064119C297F7ECC77AD79D7E682D146C8711D209FF4BFCB015F695BBA041B0DC1F274CD60F94027889B490B0DB3C1DBE5D9532D50DDBE5E080B9D1DFA4473E7B972E095968395947B3CAF7E5D88715F4345A3EFF5F62198C2D03F0E50D24C1A1F387432F6C7D6DE62972256E27ED4A0E2BD5370F3CEBEADA2FE96A6B6EA6291C1ADA255B09C70D76C6AFC0291244146C9BDBEBEDAF3CD9ACA77069EA336FCF690A397FB21CB46B902332B97198FF63BD7EF0883481BB7C63902F9C5A9C3882862F996F3CFDBA8B0E66F981B0691F8CDB4E7205419982C503C89171211FD8AA208B496E9D91DFBFD6F3E922B93369CEDB6867793C142E3462913FDB5F48A533E869E61DCA2E9CD0190DABBAB8472E0B516EB0328C18534A861C819B5CBDB7127F6597570E0738F106106D088F3A03622391C3AA7F898E4A93AC605E00D0A5FF7849C815BC6116A65B229BB1F36380FAA1CCA2C2BB8B05447041ACE1C15D3D3B1C6D3B9A282295CBD5EC07A18017670CC568A6514446EE68E12795E85D06F4895D6B5AB6B0E626B6BDC2891276A73C7594DC045F44AF1BC80AF3C1A1CDD7FCCABA957DD90FD1846FD862552AB09CD9AF6233CC42FDC38FEE32D9F8C130EB24C52D2CACCD1FF3769C6746C6D82BD939C54C3C83EE37431D326A0A40D8ED464C8C0F7A27C83427A39D6003E966099F6EE5A055B31739279D7C010707C25E63965DF29A91D06786DDEB96CA81B2DE5BE65640B2578B9CA670E61C9654DBA12A3B67D862698E4268829F6BDB69BE2AAF2CE969FEB40B670F4C6B54D6C58A59CB6A7846CA73D978B957FE77AA13151D564698C35FCC8AE9978F2062914C956FEC34517FF1A367F6795BE0A723C4DCB3F1785F5BB8CCB6A6060CE0C63B72E4596D143895B1BB71BEB9E9E7D82149A737B8299CBE3384FBD59761F79615EB33509F2FB1E2ED64FCD2217B0D2CD283B3CA2EBBF04ED257D50A096DED3F5304418172E099070F7387F04DE0EF5696C1C6F0A1BA36594529E7A9319E88568CA118A84ECA2F5CD2CF095F776F7EC27A4685B9522C08332E9CB43D47F7C8BAD0BEC2B2062666FA270755597EE1849F300EAE0268C899F3505DE93483777556ED64C891BC534D6B22F32CD5501C643ADDFB763B520BF4B5401A03E15819462ACFBF21C8E438EEA2B651656C5EBC45400EBE4802E527AA608CABCF128C96CC18547B8CA1F9D51D2824449573F5660CD45974721D318BE5FFED2B3E129F38378E34C058FA3F802F66DD1BA6E89A32B14A39189320FE7151B3384DD9551579BEEC9B38C375DC4CC7087074DA9F17D440AD25A534D7D6F39DBD75D05F7935BDFD17E500FE003652E3B5D1A2D17936607A49872D25269E061A495CF5A9DC2BE81AB2015DA65C0C4C2CD08BF5F36DE93A7ED84A890B5AC3B6CC92CEAE753A22FB2E4988DB7E8759A9C3AC64512EA1D4952F26105C4A604A582F14FB7259C680641F6EF371671B0A6C3EF15FA918AFBA0FF67B1906D46C15B8F0B3B91F046E15AA15BFB75FDBB44644F0DDFF4DE702D5A9C579A2271B96078A00AF20F1FDAEF2C9DECEB18D9C78E232527D5487DEA29F08EE3893FAAF927B1CCCDD0B26E9A71138B06633FBBF4A088F58226F247E2152B13A0436477A340FEE019D67CC05BD542EC9DFDEEC2E14207D829FC458BC87DC3C3B1A2A41EA0F88A9BA8F3D25927CEDC0A58E93CE080F23AD0F86A4B6BECCEE8CC58B08FC315FA00BD3CFF6EBB05F67E962A95E8B69A86D5F37C0D38C0E9352E5880E91471F1E7A820B89F46597034C7B22D4C964E6DD53AC0F631E84E834A97BBE18774AEF6103885FDAA43EC8388BBF4A3B308DCF76E3D97BE04802B436E0CE1F361ABC75EE91EA0916B94BB2E8540FB7946B7BDEDA702B15F79A872E962DC401114A78881564FE8336DC371B667709F2E8574097AFF6D1C305796CBEA3B74EE9525CC9F7F9E0CBEBFD24D60276F8890883FEF1E959B405DEC02FDC9C4BDBA6B4C0ADC6B0270871AB54BBAC111E6794A38BC352172041BE2C7CF039E49D7425B710E79736D2397C113219D50CF8AAEAAB39CA6538D8841C5FBAA0D92FB40B9B55BFEC50D32AEAAF0E208D2200A6EBE5D5B3A2EC8ECBECB269C1FA647D008AFD307AA1D4F72AE704449F7511E08A6CC2205A889C8E2FB2032092F62EF5B96540009F96ED306A5C950965F40BF235D38F5A6628D633B7BC7C75CCCFCCA17A68B56D3CD30625F2E206378010982EC6631ABC303F88A3D0222B17B5C5B65FBCC54B793844CDB69D608FFBCE22DA415A363A980FCE994F413B7C5BEF9E3367FA8654B62E41657688F8AAD999A9FDAAB4656EAA42E65D33E47177128613CED42D346FB10963C52159A9669819555A92E56F317A19F4A42DD448B5EA90E51C2357DF7D90C03B2E2DDF585A74DB9FCFFA705468B79998093BE55A2FD4F3DA67D9AE00FE407507D4A01787270D585559C19B11D5706E177CB3AB6D9CA4B62A4EEB6B988B56A1C8D15C0C85D9629DA5472B1E47175E291568B1FFD5FF2CEDA39EF0815E70EA7DB3F919EA99521BE085CEEC5DDABCE9DB42A050C97983A7DF6CBC9EFFAA08A53692FA4CD13EB4A4B517B23516EB66A19DD0C8665CB17DA033FF88642AF4B37C2D5C4E5FB0F0B6FACB453EAF76982D372503D6FF8A46B183D8AA9F554EA68735C255788E17448BAB456DE8A98D6A23A38BE10EAED6F8AA435A0639AA558AD0BB463CDA530744484F64E663876589C92D0081C6B72573602FE6263EA73115DE0B5BD945C2F852A3B925CCB5B50838A8EE7FA36A0281129E882D3AA3789A7E4F7A6D181855F1B69B23A68AB4B257CFE52D6F5D346755AB157DB8F9AEAADEE1BA822EEE66F40F10360624EE265A6C6A18934753847E35DBF79DB6ED4C7F104D4BED2145AA43F4DB91707B8B112B6C459CB636218E72469698399FAD99A0467B411539D42D1EC6F3B4FCD01AA2F24250527D06F62A840C822A47F3CE8F5319D59557CD4EB09FDB57FC8FE8D5521DA20713DC93AFE94F689EB8FCB5938F7D38C19ADFD28D821FC7FF2F053DD001F3A60DE1F3FC8FF0E1A0E2D6B1DC2F6C3E7A8035DBFC52BF6A916F85B96EC56D34266A7662EFA4D723B63C136CBE05140E3FDB3884C85D422A97FB6E75B8C669D4918EE9F1DB66E1448286A76052B6178B28DF34A824B53DAC572D0149B89FEC725D340D0A613C078889AFD0319185A9214B1DDC2E1EFABE57D13A86B31CAC4EF44FAB38E3F349DC144C2FCAFE2B30B14F9B77A2122F469C1F26F +ss = 729780FC51657E21357F03A338116569 diff --git a/src/kem/frodokem/FrodoKEM-640-cSHAKE.kat b/src/kem/frodokem/FrodoKEM-640-cSHAKE.kat deleted file mode 100644 index 711918418..000000000 --- a/src/kem/frodokem/FrodoKEM-640-cSHAKE.kat +++ /dev/null @@ -1,6 +0,0 @@ -count = 0 -seed = 061550234D158C5EC95595FE04EF7A25767F2E24CC2BC479D09D86DC9ABCFDE7056A8C266F9EF97ED08541DBD2E1FFA1 -pk = A86E38C5361EDF155D46E596A156144B3E3A041448B054C0E6EDB3732F3F36CB2DFAE64459ADBD48B4BB487BB82645A24DFF54B74E2F686C1F2E438E274326A7CA26E6A4D67CAA0645610483419F91ACE72CB1652D85FC6AB95A2969C1609741AA030809E90B2653A0CE78C38BC5D659120E1BE12529D6796323FDED6F890FAF651C8B491474C70B98C1A0794B2565DF256CF8B2E05CACAE4EDFA13E8BC94EDFFC2D60CD37BDF76FB814E90C1869B638C2664E7EE65100F5C0FE955D353D8F00247CD4F153B26BDE61A29B617878A78D0E0C045E2FBC59D609B139372236FE7EFD31D5BF1A28B68A54924BEFEE1D264C372A18E1A9D25F83AB87FE98537057CF12F1332437004BB22B1114E04D592A874DCD0A7382490192A16F72696A1DA30014ABDF12768A7381D9D4817B95C3EC331E2B5DE0ADEEF6D1990B270C3C088315E2B5B5C79077D097FF5898D83EE0BC2C6955300198F08A957BC572A4241D2006E678EA5BEE1EDAB71D74A5218CA6E4A32D1BB33F776160EC8C123403244CFCA1EEA02C1515185DE429D10EE062DCE08FFCDDC76E0E0EB09AFF51CA6FE1B5A201F3D391BBAD8126E01FD21705CFF1C47B62BFB23E3FB51C09D23222D5231A85968D1B96E294E18F2B44A148A4835047707FC0914F4E7AFFC6814BD1C9FCAB72A62A4D419658E2D7CD11E9B90323D9630F15866814923BFF0B65E3A8E2C79C09B0EB775B0DD1D738110E14120ED29428E614AECC70FFDE7EB80560098AFF942CA87A906DB22C50159F0C29A97CDEC9AF09DCFD31CA4046B133ECAD286E45963AD391097879A8C8AB5877C6B12A2137222E76CCE7A93B1EF75C892C7718BD526F0A56C0A381A769FF715ABB44B6D09DEFB20B8268C97417935886F076B41AC252B1B8FBA56A1F6A6FD393F3735D08A77823A8A76A9BD6E04A03BD23B1A41D50875FF44CF959AD07D49CBB0B6B2027C61C62DDABB81532C7CBC3D24BDCDE637CA1D8BB74959587CD33E2E62C397223372A775C97A8A4C48463DB759AB936D93740A7B4BA5492CA1470996CFCAA4637BA9FAD6913F8DBD09620E9BD75313D9FAC9A0CD58CB99F9DE206D19B00AD3D27256AF754C11D4DD1E795D642B4F6A40399EC3AA5472CE92B52CF02C64D2D325FFBAE9D4483AE3B0B86ADAC7F1E936EBF4905346289EDF56472CF979CB32DC5D209023BBCABB5E01ADFE078A26EFDD68E54C02381F7062F45CBBAAEE94A51452FB3E65A752086173415605CEE515444AE465FA6227E90714C0FA9804DEF5741D81D6F026FB5C72CBD3E35B6FB0FB33AA3A9EDCACA07DB17F5323EE4BBEE9A50CC6F11B5770D625C9D4367534A0C6D7E9CB7313F3FE47A35A7AA3E813EA3436A2D43E5FFF93388C75F7E828ED6F0E8FC384A4D1D08705D8A802635BB59B41EFB1FFE4C5307349B0A7793C8BEE9F5A914649E58F94DD4D1F3D114003E7048664027271A9CCAC862360B8A4EA4935680C46F66A5695A4DCE3058DADDF8BF03858E139C822CC8BC0ACC6D28AB7BD6934C958A6078A56B1DBABE443E323A1BF39E9BA0C6F097480DBA4C7234C71A6E4EEA6E766971D6EBED9B621526387C372CD48FE9BBF2E01FFBFDCDF8026E996855CA87386475D8239E7E128908756D330443823B82133EA20B8E43F773D08D41CF3A385F5EAF26374D2AA5FAEE38863A10E4F25AFBB3D20548529585CBE1B75BCA517184A8EAE2CF3181E044DF5168F73FE719013BB636CFB69BF2B37A5E0F47B8388A66C832FBA157967674AFAE5751136475F32BE3C6B1EB0B44BAD686E7F395BDD4E226D4B847CEFC44D4F0F463D463C8A3C3B5F2FE9CC8EBCC06A113B2C968A9FACC17D1D2C39DD6F4FA15708A728359E3C1BAEE40B68918C94A72696AE42AFE69736007ACD4F11ED5B6AAD64B3670BA661AF63A9463584226DD4775085058D674D90D997C914FE332D10A09B59F9A7B4A2F38CED3B56C3DD9282E3F786DDA5AC8856C9D72713BA6164CFF737E955B93D2F213ACC77A2688A066A709BDE494906A972717FCB7DE9711D7ED80F905C59FB1A7DAF465AB8150916B41AB6EF60EDD6ECE91A822F148965B06395441B7CFFBE6B7A91196C5849F020F551C7034662BEAB29CA55AA9FDBAC3E306710CDFE9522A439E92EED0CCC559B9EE62B02BB3E8B92D55EB3939D333C57EF41BD7EF2F13DB71BC0CEAD663ECDFC0270A42CC8230EFDBEFFFE68E975304A0FD4B7A6F3C7BEEE2BAF26FBB143474AF225C58FD7E2C1AAEBF2AD772620439027938D1AC0C6AC45D0EE13A18CADB8D365940287B8CFFE0B8461C1FEFA7EF670E42B9238F2D4304DF48AA7690BB0B56496C87DA648554BEBCC3287F07402DA745D8F686C97F3EEA2FD9748CFACB41F3D12DD0278BF8CBDD8EED5C3E29D1882ADC8436C8A1C470D0BEB5217F3E29373A44351487180B624A0A3EDBF97B3BF14C1A30244A5B63B20DB2071F2B5069EAA9AAB57B39BC90652682C08B344C0F6C8EB038D05A3165156512B6C71A52CB78A40029C36D4EC22F0C1036B83FE80ED0A16681399DA188496E827E4644B7658638F75CE67AF58FD7B536966DEDD4C08FBC2FBA6EB4DD77A30A2489517F88914062E1183FB8AA280B0FB9645F26A4B6AEC7DFCAEDF65F70B1E3C2C32C80D9BA998791E7C441FE7BF62B7CBC0C406D63EA0D7CB96DE8B2E9BE5B6F44208749EF52F01D2B21BD5A714E32253F7404913A5F242C10B24FE21195F993BFC59E26C6D12D7FE2C9DEBE351DC8D39C019F356FA2B67C6639132C2B8E48967C3202DB911351014735B68475817301F50A124C7CA660D95C56180DEC3839F42BDAEE41617A82C3FEF8EB89ACA8C6007EE80B3FCD3D4BA98EE29C3386D7F27291F3B66FF08DC87570840F52C97F66A3A203CD52F5BFA9B2B1A304D6E111EFF3AA2E908D35A7FAA423293970535597F8E0A4660C89C6A2E2295C0FC391ABDDA5620FAB86A905C388B00AF5A9BAD16BC6643B541F15C90F082842E0EF8BCDE23CCFDFA8E7C772594A0F16229E5D79EC9539DB3D4A1870C1E3FDC7E6CD8263E83D414C41815871E19C559EE771CC5DC26199BACB0A448EEFDD8B0895BCE0CCDE2ADF339702FB598C4F52A5E18F2D41CF67601237016C616915B6EF0601A36F64F4E9C87FD400141194840ECB8F7F26A1AE0DE42E97F3AD9E3A57084858544EEF80B6E533F4FA97A36DF27A2EA734029F98E4DF7906DCE1194610501516B87822497BF03FA3840C0F5E639EBB1CD75353F6C70D1E1DEBDF3DC91695FEF0AABB9A623449F79332777E67AF54500A12FA42CD38F42A20BAF3925B6B390092C19319F85C6BDC07D2F646D7E8C68F3D858BC632719C32E28F7C405A42A0CDBA0F1FC17E1EADB44C913486E1DBECCFBC197F9482A669914233C74B760EE4F2CB71AF8C4AE2A33531B43FB2EFA21A2B298C61843E4F9D943E341CF301D89B71D85F723CE797843CDA4C25A00E09F5E8BF79A14390B6242245EAB1ADB0C9E5AD92C11623D965022195E2826B4AD38A768555A53B0AEC2204D759DB45B20037CFABE10D1C5F6F970DECE31511735D65426D7D508E2C73AC561A85D5ADE7142A14A9F3D4B53A965B7F618388A8F9BF2C3331F6D8373043A945167DD4B4C64D153AC9CB91BC670EBF1EA56A701B4990D76A73B9B262D14CCABA4300B32B5CAB10DF51F01719743167EAE2024B30CE58303E63228DB4656469A47792AE5199C085B00DAB2F26282F044A9896C51236D7BF8B58A8C2D97200A0FEF707E9F555ECDC51932FBDF6039AB84C4CA0F17DFC5AFC835D258CA676A5B097087550CCBFA865394871B75F3965E3CD5B348C4A671FF3E04DB3E84E755166A56C8DFEC2DD63A66FCF2D5E7114A0C16C6A172360BCE7FFDC3E9C6C59FF45999EA6B3567A7AC64A317D20CC5D0EF39D3BD50D348CB014A8F13BFE57210B9AC2D141174EF42FDB4F98EF08962458439A75DFC64EF7363BE19D2780DDE64D6920FA5114518B5C6F70B8D2877BF9DC32A17843B37F19CB2C4B70993EFD37628635896405630797711C83DAF1F026406E5F6F63244B77D551DF4143AED151A5A9EE982A96064C0EC5AB5083CE0193611A87B80B76FB026EC84F12BC73E42A8A0958BB3FAAFC607C4E45E4FC0C40B310AB15B425118BFBB81364363D3CE6AB914EB9F0B77D5B30D81197B1099F4918BDCB11284062475DF0778B323BACD5694BB2C6B5BE469C774C96D5A5E9A477BFF2A544F53940F99B11557F9C79DD8B6A71FB4E97790B81A2D5E7C03F003B984364900E25F887273D0C36911C999DADD002D5991B6C46D67240057C0A270E2136B379A877CCF16757C3EE529CA93DB12E30CFA074E157612B69EF59E56BCF63487F33552855EB842D81CAE3FA35BB30D3D7A91A5732BBFBAE198979DCFA54D5C62E61D2BFFB2A1F101EA6A2E3FEECAF3E2DA892CD708030E507EF41211D5496DC84D2FF4FF04C0DA9963280C7E72356E6B28887688809427C589BF9BC15E2C0E223D4194C61A9E6D8435A11A9947E428FA908C9814960989B3D67D7F09221AAF6C90C9BBF32CC861FBF39883DD7574CE15E0149D9CF2E1446A04C346E48489D15DE0DA9134BAB58D4AC13A4342DFF0079FD1E72063451603516517DABF1E06E5597B4A9804F682E3CA3C3D1842E1E28ACA192EE4FEFAAAC8F82004B6ABAC527571C384D832EC338DB298A8A967534E0280C8A288598226383C3531E526E4041112D31A336D7AEFA25AB2484EF8BB2D53CB9E714A5B0E54D237553DD02B7E84747C6C560FFF6447B4A547A38C7C85135EE1151B173076B6F8EFCA3BF4C079666C5D32CDA6CA470FF91723C523932106D9D8142C986DAE705C0B8DF37C949724EB60F3E9DB0A2676123FCA4C60EC7C2169F970BE62EC9E6FDABD41FD974B1CA8A6B2D758EA5B3929F0EC28DB1A50AECF964929DE771FD017C707D80A762F25203C5747A9866A73F6A38B83C9F39426D64136647F1C02C7D53B146C4027942E9C974D73E48F411D0B62445CE60C5CD88D88E6B257D0E5EA66613026F53EA5A44DFD0705E8AC76FA240B27A056222ED3F9EBAAD9BCE85F25021BEA838AE1D1BD6800705DD50330760D780B512069067CD518FB940405675914447BCB84CB5BD56BA2DB0DD27D7193B4D3658B2C60621E8BA525ECA7F5187F2F73B917F9143E3B718F7254572843A2D7D2BB63D671C74A47F07AAA102E29D52D41CF790F078F8C7D565EFC8113CB6765A487DF3BBA343865E6A4AF8D6828078D35FD31ABBB94D935842F109D01EB155C372A4CBFDC586FB2A5F41E238A8F0B5E61D2D9816AC5EC04B648D083FC3DC3A6A0F14DECD1FC5CC0D48AC8577DBF3D2600CE0B4C8397676036D2B92AB2EE222D26DF3959AB47ECB31448C63030CD82564D7DB366826E79E0AC2C8564A5FF5E631608433AA8B95C29E17DC70376A55F7D179B3DAB8B9DC4F56890C18D6111C5FF235755928E3BCB8AA60F3EE29AF8CCCC7A068062D247CB4BB091010431C1208273E323FF6783CE8A7D1B762E9E3A400CAA04F7C955419F565C9D0E044D9BBDEE21CBE8CA11FCF8CDF82D56BEF5A2A8F7693CC72EDB75129BB949DFB2C3C9A8069F2C7B54BA19F8567C679915A0D5BD61542E329987E2AD6364436AA27A1016217BD64E6CDCF00610F90D585AFFC92C584C552C13B29A6F89EFABC8D54B3EC28ACC825A7CA4AD81BB792C94A3062DD3F013CEC3621AE315410FD355CB142E75ED6D5BB828A70A6D834477B7F86D82557933B9A6C07DE0850529464403F2CB7972F0B3E3CD692D5509F882466F0B362B169A94389E083179B7B40F35BC06852D732E778220B04AAB5CEBF78788177A9819C3E2EE84C4A00ADC8C5AD35E97DCCED49C2287E0F5567BDC7E8E0BD5DC9A066AAD071E7548945D808B3BAFA63E79C31834A339C2CC36765DCC03CCEF54AD4BBC1C385D0529ECC8D1BEDD29979CF43ED1D72DA965FDD7051A0D919EC98B1178ABD50B96EECD193E336BA82B6A75CF2516E5488B01A89ADD2DC55B6F9D351667812E66111AFBCE62AAD3B1B4FF0A16D176C58A238DC54AE4C7ED3B00AADA971D33B90015DAAFBE732068C5024B5E54606342B2514A18CABD54F364BC0C7BC836605E2F081FE14BAE5B6A24D0D96738A919945D6459EBE34C393C101456F90ACE8EEA0E1F35734A2A9055DB1B042386ACC02329EF43C0199C8C45748AF30443976D9EF5FF8B8CA090C2D2BA7E7D6F34CC07DE946E68D46E0DF7591831FEF19122F284BFC6C4EA35353F0B60772B2A466D0904DFCA93923B78EF6E86E9415BF89DC9682E2A404D37FEFCE6025E0070047F5AB9977A8B17D9176C92BB8BBC989925CA2C93D4A4C4E36CCE3298C614DCEFF17C3085D6685B508E511DF3E3D7478A07F77857AAD5C688D02077160A529FA1D63BB5709B2477868C0C61D5FAB97C560AD643E85698AC80AC4DB76AB82B78815C76D1487BAE383C9AC92515524CAA015729C7F10C5C775B795E55A9F60FCD4429BEE366E5BDA6149CF2489D48C8F1C84B8C8A81FAEDF6534B59F2BC3BE918EE4AB6ED42F8B9B707EE4667D612A44D4CB748A273E47B39F38DEF2014010F13237B3303013ADD8DEF96B0531CC836382C4F9344F8CCFC9F929EF38C37C2C8FC0F1C893D100BD72DAA3D926537C0AF4FBEB0DD16E81B1048E44E31E8BA24AC5192414766CCE81BE325E81F21E505A19C9897EF35708F2062920CF4001452F3119FD0377117363FE464EBD5A44C73F777F3B554A9B94665DD0C2808FA9ABEBF702EE5936ED3983C96547D5298FBDA9D238D9DFE067A57D82D5DA9700EEB65CE0F11C24A8D9639304A226E0E977AC59882EC748913B7021ED1290D543DCBD8BFF1BF6A7408E66E4FA18782F84B7A887C9CEC28A072846F7F32632B6BAB4F3330FB5DA72FB3F60F7E214BC40DD30DA728F7C8113CB660FE94653BC57BB742C0C149CE289E8497AAA016768D989CBA756AEC8199A2D86D7E67030A153BEA798FF2FA6F14AFDAC1D38DAE5C84BB6CF6FA58CB5E9EF1B43F62261D39795FC8E83924A3A0E6E8B606327FFCAC4DCF65C294D20C3E13E6C60B011CD1DC19DC262F5254F9ADEF75E05D19DD2BB1E346E698E3979700CD4B42BE02315F108E246C80049E1AE12D9E20D823276DE99CAB2E5536ED92D91130EE5166CBC16CB07C1B49FDEC5FD31E50D5A0F9E480D08FD2A9016281EB68BB0BC73DCF58C068A93410DF2D317CC2477F47A64F08D0C0741E61CAD72FCCE4C70A8870CFD4CC15DEE7ED609B2B7580E6207921A7860438886B10F7A343A3F172791ED227A5A1B6CD3FD9EBAA0D7C2654D43EE05422618965622218F78606F7117C06ADAD69BA64097F1B5A3BDFF42A1EA4324E35395970992292E355C2E802589A77C3225BAA17FB5C1666B2331E3618338960E6423313F038BE803427D6A480816ACCE655FA5500FB19D376241CDA70327BC38C5EEA017E93E71D9612E757A61471043243342000D4DE453445DBEF6BC9C73FE2E24B6EFF9BAB7B09B92AD56B23F80721CF6DB40303E5412A216ACCDB1D1959EEE3DA5BDB85C5315E4D9F4BF6043DDF3BBA71C4A99A967DD747D4B7244586B9226E24132F206BB688B05C8AAD3E0BB52B287074D45B345750CE687F4C4B14F8F5ABDEABCF4408B624078541B39906AFCD61F92C808E0953A0F8686D637A662126CFE8B9BC61871CD2924FE446CDD01600F8372311D77055DCAD097A8363511763526E4B876C57E3ABD03DB0823D1F2CE14B2F66786121B6A979A49AAD4489BB3B17B44969C11E7B5C0FE4F64AA0C58B26C9901B414EFA960A421E7A03CF8B1F8C17DB103C57C235BF46011B42CE9376956A60BC58E3F3BFECFC9486CEE96B9B2A1B203ACF572739B610C7DA70A9A1C216BF8263D148207DC73658D109CFD1AEEF9903355B17350F8A5F2D719D1DCBB74F41CDD4EA916AB92A9EB9EE7A24162BA7FEF7302DDC0ABAD2C2477321D09A27D14D7C4286801F1FBDF620ED3441EE3FC46D8F10CE33DD86896E199A1B0B4089DBC4F4933C1A31C8F62454BDA13862168FBA85479FF90B6F5591FADD28E2A57466BFB6DF04D0A5F8176EFC35B13D890369907F9D674E1AD80D69C0363379C87FAE2C5B67DC55295580AF8425DEC49DF82D3C37DCBE49E51082C3961B40432558AEA1F18AB8428B42928C5690E18122D81B32D171BE6AADE2DF9C41DA2D2CC06F4705925A952D473AB6E0B48D03BAA4C454B6317B287F40DC05E7C29711E597A60AADE9C76B913BE31FB18BC9A5FADAB12DA520FDF0AD333DF535EE19B0D1767949FDB7A3D448601D389FC6CFC0F17A08F4FEAB0D15AAEC1493E16D9266DBCE5F0D429021B0240D4CC0B70180BEEF307CB913B20416E3EE4946CFB3905FE56D34DD0E7DE097BF41E35C8A6297C9366D3102F412BBC366D233F50BF88688C2935F7B5ADC41DC62BBF85EB93A19DE8F4901F5EA864070AF5B24DC1E2B492B37E0B6EFF3B2E83F4D45C128778881644CFCFB467DCE9872DB5A8585CB766F842A5FE4A237523742E7F9CDFC156CFAD69F621CCFE4B4B328CCCCA29F2500886FDA81F9FB19A87E2383C68B2561EB9222E8D504EC4C9CDFA8C6ADC77862D167DC19880E48AEA90D320D4B20DB7D2EED7711E21CFF562B8668F2E2DF680D5E2A8FB20C249024D62D2424288C5F664C16F8F82B736F75AB51584C1FC558A2C94A20E2235D068561840F428338FDF2E2805D9D9D26845424E016E4ED3273D1387EB3B303F137CEC413D4A1D9B3368056730C8EE336ECF7335B025561CEEB36154C194B4E69995A0E59410EAA9551D38D02988FA81304932D0FFAA1B09B82D969F693925F2E9654ACCC5A08A8039DD75D8F582C0A8C8E6C7D0541260A5A5B5010114FC4F749AECC1383FE8221CB58CD441AED5159A209C4AE864374CD8A93FD01980424AC26231654FB91E2245A10C7128B8229033F05F251CFEA48ACAD7A5789C9877044064FBB30050681CB687EC4F077414C8AF7D2355C35DF3E730F086A20BA5BED0B8F9BE775663C19E4C8D9352B90DB142AB6CE5A9CD6858FC58955E355BC78AE123BB4469728C8C4C935472D07E3E5D92A190BCD547E3B5FBE64D7ABC88AFDD72EA5608A56B1749BA48161CE36F9FC13260E6AE764D65B4EED9F8423F81FA2656718E085ED8F4C5ED6108E7200249178156D7F57F13CA2EE5CCDE0B8ED4CC213909841820847B746B7B240D43BFDBD73DB5D06C859D7863378CE3FFA236CA30983B5E632D8975EF7FAAF778E2E92D449286B3C10300EC54E0D7D8BF265F61C70EB7421E36D91271301AC4F1BADB83ED85E8D52B0CEF670C0E8949397BAAD4F2B99B886E6107F4922D5BE2D968EEE3B29955EF46FBC646F347E076386A839CE1FAF015BB039C2B607241F5CD6BD43BBDFCE1D72BE97A19B13D0B658AB1B5FF3FC591313F26A6A95B34B0A9C735DE811538979A67CC5F16BF15AFBA934E260CCB73BB1A2323A5B8C53BDE02657BD4E688E1F439F21ED9A884EC9BED053D4FAECA3B6BF2A120196BB8408FCBC9749854C0FA72698A3CF44490CDF3A56B5B74BF2F6577B4629C4F86E8913A3DDE28783B64FBFE97E906B8D50367C3C06EFF954EECC806BC44B535149FC9714B86957698DA84BC55A65553A3D1932760C9BA4F01DF4FD2201125D0C0E5B5A669997EAF37E3658BC38C1AC51FA0A290357E23D3B1C9A9A94BEB35B20E1201C91DCAF5B6A103D32A6F6D9F647103873A85FD17B04600DD603BF8A3444B6068BDCEF396D8DDFAEA70B281F19CD817D46837AD292F7B33B13A70AEB9801B48FB997585AFD8E81FD67025AE8513AB9EBC2EB28977E39755D2843D8F71AE86698941446E4CA1FD4F6ED7C809035BE18FE326BE14709999035DC8DB398B5F2AA63699C9F9E138F15296438F2E84EEE174C197F034E835BE67C74CFBA062071AC9D489DFEF0649040C0CCC7C3426556B80830102D0EEED90ED18E1E6BD1A6238962B267456BA5AA1937C9AC9BAB82738143535EF7414A2BC3EDEF6DFCC8E9E33C89F31AEF8E7B2F77AD1150E186E1A70B9F86582F1D89342FDE406A77177C424DDD80A674552EF77EA0FBC46C224A21C6968DEF34E837F2A335D9D273133068791707CA9821213C178626656C2A91DEAD048B5E0DAF64EE919443F18E45E66ADE9F08CADFF5514AF2B9F04290172CBFC21D9F0BB41E092E2A1371E192F3AD8C51F2AAE4E8EB653FC2D78C0B7DE5CEFF857625F8EA03AFDFAD942BDD0D0DEE774DE6B7BD1868A12A73833A952AAA77D60446C42D069483AFF402C54AB7B8DC521F50761AF30C45DEA444DC9567839DA447E3F33810D10737BF8FC4627607D1752C95EFCC9AF9B2D5FC5DEEA445F1D75A5FFB633FD6A1BD1672DDB20C3F4849C37CA795085261E174F66D938D8F8465D2A2B1D33AB12C8F9D17EE5BCBC064096F8E3F19E8CE2BEA9F794D294ADB04B9D7BD6C2689D79A194ADDFA02F7C0CC69AAD795BDCEB323EACE69A67B923E17050DD3D3D493CAE0AA2A0158A6550F7511AD34011BD377A6262EF510065DE0D048570680A66387D1810297D9BB18058E8EA41B886D3BFDE5010DF782586D9752A53DFC2B42082C90982CDB1B9BCEEF7FF4379C7FE6432EBF9C672C07FD430FC10714B4492538B712956C757DB2E6E87406F2E22DC072C52DFF7E5F417435F04089F400E1C2C8A7EA6C628C487016CF9EE9AAF327BF6F429A9D403F909D8ECE226F349A0785EDDE8C9D46A5FF20EA510230AD434FE103805FF8865804E8B70437E523FA3A8452F9258CC48ED0D003D94902F9087168E6E21CF569E6536D584250CCABD93362131B9EFEEA74F93F702D27D48CEA1AD233DAF50BFE675FCA7FB386506A6044D410B75F935D7F2236829FE4406DCF10FBCDEA3BF9814B35CB7692B66CF9988A42F9228B8CB4FD9735E47554D99BB820AC42E51049762272F1F06797CD47F7BDB13D1B158FBD20E219B1737BFF53ACDA627EFE8296B619D558A44EDDE686649EACE0E2215E4958E2C55243FE9D245EF3706BDE36D03510E4794790DD3FBF72F9CD66E1E7DB10300C8CA818EE2378BECBF488705A98947AFF662C9C7C2A0BA40CB60545255BE40EA0514E90DF950D2E26EE256DDAA2AA11ADD0075619BAB7227B7C291BFAE4948CEB3008B43BCB12713A4AD640F1024A7B6D2E7B18CBE81B5CC64D10D48631821ED29ACB9103AFBBBE1AFD5437CE615ED8FCE6F25A7C71B6FA639B62D5C01AC4D529D377E63EE9C45E4734695F07BF6DAEFD45B34F3420C1F870396BD70055F56A66CB007C665A797B629CE3FC64EB14A5363826855DC4D6973B528DD99BB7C9F76E25A1E81E3EFE67F2478A584D22CAF2122A8AA47C7CF75D0AA1A31432D0970404B92B3E75536D9C186EC4AEF6D8F2CF9417B7FFE7CD8AE216563E6F49A5EB192F16E5D18FB94D2A97465BD0DA5137CF0E84AE15180ED23A679D63EDA05B88271A79504211BB74DC7F83133CA88886CDE879FD02EA2C45B95D7B725882DDAA5EE6906E792274C6F266EAAA04CAEA8A55C0E79E956E8225080903AD29B85919BC120BF7DB910F7A719C0E87F1C336682F6C6EE2560282CA3EC5961C9F07DFF79BEDB04D5FD5613344E5B2625D639B4F48E6B56FA3D537AAAF0C790165997BC5F2EADFEE139039215B5E6788119A16228037AE43272CD261DDCCA71CAD601AC33EDF04B7BA2937FAAF8727306B6F3E00A295304518EC8BEAB55A1E7C0F7C8D4CC27A0CE43953E85D4B737D7780F8EB0BF54DFE4E101A4B9FC342EF8253D92A59A98A12914C5A6A9B8BF970D48BA3490E99395ED20E62065F490880B4F10A9E47B6D9B90BD86F36B7B7971B66F6CD9407B99C689A3B83FAD01D1B92C22DD62075BF2D77A8AD28F0DE859FFC10134A12478A9507005AE88CD4CA97B7390FFB9A6266D70DDD99F785AC33942FC90F31330E65E8B36B2E7EB8541763F3352C980215010987D16BD9E38A04ABC46DD3931E7901912E3C3BFBE59D1BF71E32E2FCC82B92B5D17E8DCAF530849CFB4CA2DB5740DDC42323B046C9D310D19D514A651E3BFB7479D0F98D4F08F709D2D58D773E50203C7CF8D0A25238EFD9E6CBE0F212BD32D324FF28444DD821577F579B6F061231D5E5172A36920F25D74A2DA55A5CABC97CF27532DB1253721A0692CA2838B974B7F44041EC2FF68E8CA448D55D5BD9512929B34A7D3FB37755662EBAA8F2BC5BD9113B88F1798B1F199357889A40B410DE0EDA6FFB6C7CCC978E030E8DDAA2E7076DA06969EC92D4982FEEBB0A0DED4FBCCC8A77B70EC0DFDED34BE86E34A5A78F7B85F7DA2EB372CF78D82EDAA8B473DDF42D40DB279E0ED6FEB6C01BAEB5BC642C5DBA810D64311DD27BBA1FFBCBB4864A64402BDB64C112AF32914A9C63BCB6E1A2D7CCC8D671873DD366A3E84F8B57168E12FF93D3CF9BC64345B0EFDBEE581C70178D78FDE8A47014A89A930A1A4222220200625BCA4D5B2CE7ACA9CDDECA61337631D60BB046F114B890DBA9B59AFA53981DA55FC27E52AC4D2A2231FFB97C6FB03071383C865AD3D524162A58086866EB3CDA932B9CAC7286A2156D0787219317D1D56E493A45DEC77A30AED224603B38D3CB9667C78733E8D9FA8B217973192048C44BCC5924D1A4FD3A53CB871AE27626D029860C54C509CE4CD9B0E74CC737AB34A0AC25FD31C054DD28C39EC5D5EDEE40612E5FADE013688DD26EF4D6D4561E30B8066742DAE3D978E84445AA7F8D9EC7F8FBE91140AA9CC8639F7BCF8C14F8220D0CFF9B4BD87504885E1941C0079E02B7FDAC1DB3CECE294459D7C3CACCFE704D469006C28CBA92357BBF44F6FDACE3D989974F2314A8EF8B6A2B0D0AFB941073DF5D23CD8DBC0EF65DCDC2A8F7B4BF4E3E9F98D11ED3B58C04AB4C4CB21566A70E77EC90BA4A01E64CF6EBF4556F4535BCA2D188F7B5984D70B7DDBCA232228F5A076581EB757DD796A4B441925CEA1189141223176A907B30D8B94935982FAEA3DB8FC51F9F46289F68721AB3DD34B425867A317D3FAA2CC34FFE1F2CECFE3A9F359D78BAB17CE022000098ED8863D091EBBE20768469301ABB8B61E218E1BB1E601722B81C3C903523EE83ADA58B492340384579F6D2C71F44CB59EB581AA3260CCC9DCC5229E4D4153424A52AE191A9343CB3654107E702C6758ABFAB8E4EBBBE5F83322B3FB9B9E2EB366552B1AC4B44ED557D76D1A4E5E9B45C472D0516958557AAD61F3ACFB8B91339AF0C30A3331B6E57E7F1894327BF46954F1DB2A9656D099D6FF6674E2C5CA1FE9DFC6B3FFF47031806E4CBE4B928D7C103EF4A7BCE7C616BACE4D1D3552F2C2FD6D709CEACC4E8F9E99F9E80B6F8F3E3098BCDD9B2B988C63DCF8C1E1EC09F4902ADC605AB3904D1634CC45B319AE97B6CB904F2655AD4E41000B4C22F13F5661F05FC819393C5795F592E31F6C6DDF889BE6B132B4B6D91F10888133A6907090A6CD24C94AD523713F1125FEABEF56EF3AB8DC3A7AFDEE2F93AF8032E5DAE296C3EA951312ED43E80164C9F7DA696C32B8C16F0F4E47CD6AD48556EB4CC710AA2278BA0E3A0AE358B69C4938875970DC1939D4EEEB209E44DC1CF918B407F3E62168F54C514B4520905223 -sk = 7C9935A0B07694AA0C6D10E4DB6B1ADDA86E38C5361EDF155D46E596A156144B3E3A041448B054C0E6EDB3732F3F36CB2DFAE64459ADBD48B4BB487BB82645A24DFF54B74E2F686C1F2E438E274326A7CA26E6A4D67CAA0645610483419F91ACE72CB1652D85FC6AB95A2969C1609741AA030809E90B2653A0CE78C38BC5D659120E1BE12529D6796323FDED6F890FAF651C8B491474C70B98C1A0794B2565DF256CF8B2E05CACAE4EDFA13E8BC94EDFFC2D60CD37BDF76FB814E90C1869B638C2664E7EE65100F5C0FE955D353D8F00247CD4F153B26BDE61A29B617878A78D0E0C045E2FBC59D609B139372236FE7EFD31D5BF1A28B68A54924BEFEE1D264C372A18E1A9D25F83AB87FE98537057CF12F1332437004BB22B1114E04D592A874DCD0A7382490192A16F72696A1DA30014ABDF12768A7381D9D4817B95C3EC331E2B5DE0ADEEF6D1990B270C3C088315E2B5B5C79077D097FF5898D83EE0BC2C6955300198F08A957BC572A4241D2006E678EA5BEE1EDAB71D74A5218CA6E4A32D1BB33F776160EC8C123403244CFCA1EEA02C1515185DE429D10EE062DCE08FFCDDC76E0E0EB09AFF51CA6FE1B5A201F3D391BBAD8126E01FD21705CFF1C47B62BFB23E3FB51C09D23222D5231A85968D1B96E294E18F2B44A148A4835047707FC0914F4E7AFFC6814BD1C9FCAB72A62A4D419658E2D7CD11E9B90323D9630F15866814923BFF0B65E3A8E2C79C09B0EB775B0DD1D738110E14120ED29428E614AECC70FFDE7EB80560098AFF942CA87A906DB22C50159F0C29A97CDEC9AF09DCFD31CA4046B133ECAD286E45963AD391097879A8C8AB5877C6B12A2137222E76CCE7A93B1EF75C892C7718BD526F0A56C0A381A769FF715ABB44B6D09DEFB20B8268C97417935886F076B41AC252B1B8FBA56A1F6A6FD393F3735D08A77823A8A76A9BD6E04A03BD23B1A41D50875FF44CF959AD07D49CBB0B6B2027C61C62DDABB81532C7CBC3D24BDCDE637CA1D8BB74959587CD33E2E62C397223372A775C97A8A4C48463DB759AB936D93740A7B4BA5492CA1470996CFCAA4637BA9FAD6913F8DBD09620E9BD75313D9FAC9A0CD58CB99F9DE206D19B00AD3D27256AF754C11D4DD1E795D642B4F6A40399EC3AA5472CE92B52CF02C64D2D325FFBAE9D4483AE3B0B86ADAC7F1E936EBF4905346289EDF56472CF979CB32DC5D209023BBCABB5E01ADFE078A26EFDD68E54C02381F7062F45CBBAAEE94A51452FB3E65A752086173415605CEE515444AE465FA6227E90714C0FA9804DEF5741D81D6F026FB5C72CBD3E35B6FB0FB33AA3A9EDCACA07DB17F5323EE4BBEE9A50CC6F11B5770D625C9D4367534A0C6D7E9CB7313F3FE47A35A7AA3E813EA3436A2D43E5FFF93388C75F7E828ED6F0E8FC384A4D1D08705D8A802635BB59B41EFB1FFE4C5307349B0A7793C8BEE9F5A914649E58F94DD4D1F3D114003E7048664027271A9CCAC862360B8A4EA4935680C46F66A5695A4DCE3058DADDF8BF03858E139C822CC8BC0ACC6D28AB7BD6934C958A6078A56B1DBABE443E323A1BF39E9BA0C6F097480DBA4C7234C71A6E4EEA6E766971D6EBED9B621526387C372CD48FE9BBF2E01FFBFDCDF8026E996855CA87386475D8239E7E128908756D330443823B82133EA20B8E43F773D08D41CF3A385F5EAF26374D2AA5FAEE38863A10E4F25AFBB3D20548529585CBE1B75BCA517184A8EAE2CF3181E044DF5168F73FE719013BB636CFB69BF2B37A5E0F47B8388A66C832FBA157967674AFAE5751136475F32BE3C6B1EB0B44BAD686E7F395BDD4E226D4B847CEFC44D4F0F463D463C8A3C3B5F2FE9CC8EBCC06A113B2C968A9FACC17D1D2C39DD6F4FA15708A728359E3C1BAEE40B68918C94A72696AE42AFE69736007ACD4F11ED5B6AAD64B3670BA661AF63A9463584226DD4775085058D674D90D997C914FE332D10A09B59F9A7B4A2F38CED3B56C3DD9282E3F786DDA5AC8856C9D72713BA6164CFF737E955B93D2F213ACC77A2688A066A709BDE494906A972717FCB7DE9711D7ED80F905C59FB1A7DAF465AB8150916B41AB6EF60EDD6ECE91A822F148965B06395441B7CFFBE6B7A91196C5849F020F551C7034662BEAB29CA55AA9FDBAC3E306710CDFE9522A439E92EED0CCC559B9EE62B02BB3E8B92D55EB3939D333C57EF41BD7EF2F13DB71BC0CEAD663ECDFC0270A42CC8230EFDBEFFFE68E975304A0FD4B7A6F3C7BEEE2BAF26FBB143474AF225C58FD7E2C1AAEBF2AD772620439027938D1AC0C6AC45D0EE13A18CADB8D365940287B8CFFE0B8461C1FEFA7EF670E42B9238F2D4304DF48AA7690BB0B56496C87DA648554BEBCC3287F07402DA745D8F686C97F3EEA2FD9748CFACB41F3D12DD0278BF8CBDD8EED5C3E29D1882ADC8436C8A1C470D0BEB5217F3E29373A44351487180B624A0A3EDBF97B3BF14C1A30244A5B63B20DB2071F2B5069EAA9AAB57B39BC90652682C08B344C0F6C8EB038D05A3165156512B6C71A52CB78A40029C36D4EC22F0C1036B83FE80ED0A16681399DA188496E827E4644B7658638F75CE67AF58FD7B536966DEDD4C08FBC2FBA6EB4DD77A30A2489517F88914062E1183FB8AA280B0FB9645F26A4B6AEC7DFCAEDF65F70B1E3C2C32C80D9BA998791E7C441FE7BF62B7CBC0C406D63EA0D7CB96DE8B2E9BE5B6F44208749EF52F01D2B21BD5A714E32253F7404913A5F242C10B24FE21195F993BFC59E26C6D12D7FE2C9DEBE351DC8D39C019F356FA2B67C6639132C2B8E48967C3202DB911351014735B68475817301F50A124C7CA660D95C56180DEC3839F42BDAEE41617A82C3FEF8EB89ACA8C6007EE80B3FCD3D4BA98EE29C3386D7F27291F3B66FF08DC87570840F52C97F66A3A203CD52F5BFA9B2B1A304D6E111EFF3AA2E908D35A7FAA423293970535597F8E0A4660C89C6A2E2295C0FC391ABDDA5620FAB86A905C388B00AF5A9BAD16BC6643B541F15C90F082842E0EF8BCDE23CCFDFA8E7C772594A0F16229E5D79EC9539DB3D4A1870C1E3FDC7E6CD8263E83D414C41815871E19C559EE771CC5DC26199BACB0A448EEFDD8B0895BCE0CCDE2ADF339702FB598C4F52A5E18F2D41CF67601237016C616915B6EF0601A36F64F4E9C87FD400141194840ECB8F7F26A1AE0DE42E97F3AD9E3A57084858544EEF80B6E533F4FA97A36DF27A2EA734029F98E4DF7906DCE1194610501516B87822497BF03FA3840C0F5E639EBB1CD75353F6C70D1E1DEBDF3DC91695FEF0AABB9A623449F79332777E67AF54500A12FA42CD38F42A20BAF3925B6B390092C19319F85C6BDC07D2F646D7E8C68F3D858BC632719C32E28F7C405A42A0CDBA0F1FC17E1EADB44C913486E1DBECCFBC197F9482A669914233C74B760EE4F2CB71AF8C4AE2A33531B43FB2EFA21A2B298C61843E4F9D943E341CF301D89B71D85F723CE797843CDA4C25A00E09F5E8BF79A14390B6242245EAB1ADB0C9E5AD92C11623D965022195E2826B4AD38A768555A53B0AEC2204D759DB45B20037CFABE10D1C5F6F970DECE31511735D65426D7D508E2C73AC561A85D5ADE7142A14A9F3D4B53A965B7F618388A8F9BF2C3331F6D8373043A945167DD4B4C64D153AC9CB91BC670EBF1EA56A701B4990D76A73B9B262D14CCABA4300B32B5CAB10DF51F01719743167EAE2024B30CE58303E63228DB4656469A47792AE5199C085B00DAB2F26282F044A9896C51236D7BF8B58A8C2D97200A0FEF707E9F555ECDC51932FBDF6039AB84C4CA0F17DFC5AFC835D258CA676A5B097087550CCBFA865394871B75F3965E3CD5B348C4A671FF3E04DB3E84E755166A56C8DFEC2DD63A66FCF2D5E7114A0C16C6A172360BCE7FFDC3E9C6C59FF45999EA6B3567A7AC64A317D20CC5D0EF39D3BD50D348CB014A8F13BFE57210B9AC2D141174EF42FDB4F98EF08962458439A75DFC64EF7363BE19D2780DDE64D6920FA5114518B5C6F70B8D2877BF9DC32A17843B37F19CB2C4B70993EFD37628635896405630797711C83DAF1F026406E5F6F63244B77D551DF4143AED151A5A9EE982A96064C0EC5AB5083CE0193611A87B80B76FB026EC84F12BC73E42A8A0958BB3FAAFC607C4E45E4FC0C40B310AB15B425118BFBB81364363D3CE6AB914EB9F0B77D5B30D81197B1099F4918BDCB11284062475DF0778B323BACD5694BB2C6B5BE469C774C96D5A5E9A477BFF2A544F53940F99B11557F9C79DD8B6A71FB4E97790B81A2D5E7C03F003B984364900E25F887273D0C36911C999DADD002D5991B6C46D67240057C0A270E2136B379A877CCF16757C3EE529CA93DB12E30CFA074E157612B69EF59E56BCF63487F33552855EB842D81CAE3FA35BB30D3D7A91A5732BBFBAE198979DCFA54D5C62E61D2BFFB2A1F101EA6A2E3FEECAF3E2DA892CD708030E507EF41211D5496DC84D2FF4FF04C0DA9963280C7E72356E6B28887688809427C589BF9BC15E2C0E223D4194C61A9E6D8435A11A9947E428FA908C9814960989B3D67D7F09221AAF6C90C9BBF32CC861FBF39883DD7574CE15E0149D9CF2E1446A04C346E48489D15DE0DA9134BAB58D4AC13A4342DFF0079FD1E72063451603516517DABF1E06E5597B4A9804F682E3CA3C3D1842E1E28ACA192EE4FEFAAAC8F82004B6ABAC527571C384D832EC338DB298A8A967534E0280C8A288598226383C3531E526E4041112D31A336D7AEFA25AB2484EF8BB2D53CB9E714A5B0E54D237553DD02B7E84747C6C560FFF6447B4A547A38C7C85135EE1151B173076B6F8EFCA3BF4C079666C5D32CDA6CA470FF91723C523932106D9D8142C986DAE705C0B8DF37C949724EB60F3E9DB0A2676123FCA4C60EC7C2169F970BE62EC9E6FDABD41FD974B1CA8A6B2D758EA5B3929F0EC28DB1A50AECF964929DE771FD017C707D80A762F25203C5747A9866A73F6A38B83C9F39426D64136647F1C02C7D53B146C4027942E9C974D73E48F411D0B62445CE60C5CD88D88E6B257D0E5EA66613026F53EA5A44DFD0705E8AC76FA240B27A056222ED3F9EBAAD9BCE85F25021BEA838AE1D1BD6800705DD50330760D780B512069067CD518FB940405675914447BCB84CB5BD56BA2DB0DD27D7193B4D3658B2C60621E8BA525ECA7F5187F2F73B917F9143E3B718F7254572843A2D7D2BB63D671C74A47F07AAA102E29D52D41CF790F078F8C7D565EFC8113CB6765A487DF3BBA343865E6A4AF8D6828078D35FD31ABBB94D935842F109D01EB155C372A4CBFDC586FB2A5F41E238A8F0B5E61D2D9816AC5EC04B648D083FC3DC3A6A0F14DECD1FC5CC0D48AC8577DBF3D2600CE0B4C8397676036D2B92AB2EE222D26DF3959AB47ECB31448C63030CD82564D7DB366826E79E0AC2C8564A5FF5E631608433AA8B95C29E17DC70376A55F7D179B3DAB8B9DC4F56890C18D6111C5FF235755928E3BCB8AA60F3EE29AF8CCCC7A068062D247CB4BB091010431C1208273E323FF6783CE8A7D1B762E9E3A400CAA04F7C955419F565C9D0E044D9BBDEE21CBE8CA11FCF8CDF82D56BEF5A2A8F7693CC72EDB75129BB949DFB2C3C9A8069F2C7B54BA19F8567C679915A0D5BD61542E329987E2AD6364436AA27A1016217BD64E6CDCF00610F90D585AFFC92C584C552C13B29A6F89EFABC8D54B3EC28ACC825A7CA4AD81BB792C94A3062DD3F013CEC3621AE315410FD355CB142E75ED6D5BB828A70A6D834477B7F86D82557933B9A6C07DE0850529464403F2CB7972F0B3E3CD692D5509F882466F0B362B169A94389E083179B7B40F35BC06852D732E778220B04AAB5CEBF78788177A9819C3E2EE84C4A00ADC8C5AD35E97DCCED49C2287E0F5567BDC7E8E0BD5DC9A066AAD071E7548945D808B3BAFA63E79C31834A339C2CC36765DCC03CCEF54AD4BBC1C385D0529ECC8D1BEDD29979CF43ED1D72DA965FDD7051A0D919EC98B1178ABD50B96EECD193E336BA82B6A75CF2516E5488B01A89ADD2DC55B6F9D351667812E66111AFBCE62AAD3B1B4FF0A16D176C58A238DC54AE4C7ED3B00AADA971D33B90015DAAFBE732068C5024B5E54606342B2514A18CABD54F364BC0C7BC836605E2F081FE14BAE5B6A24D0D96738A919945D6459EBE34C393C101456F90ACE8EEA0E1F35734A2A9055DB1B042386ACC02329EF43C0199C8C45748AF30443976D9EF5FF8B8CA090C2D2BA7E7D6F34CC07DE946E68D46E0DF7591831FEF19122F284BFC6C4EA35353F0B60772B2A466D0904DFCA93923B78EF6E86E9415BF89DC9682E2A404D37FEFCE6025E0070047F5AB9977A8B17D9176C92BB8BBC989925CA2C93D4A4C4E36CCE3298C614DCEFF17C3085D6685B508E511DF3E3D7478A07F77857AAD5C688D02077160A529FA1D63BB5709B2477868C0C61D5FAB97C560AD643E85698AC80AC4DB76AB82B78815C76D1487BAE383C9AC92515524CAA015729C7F10C5C775B795E55A9F60FCD4429BEE366E5BDA6149CF2489D48C8F1C84B8C8A81FAEDF6534B59F2BC3BE918EE4AB6ED42F8B9B707EE4667D612A44D4CB748A273E47B39F38DEF2014010F13237B3303013ADD8DEF96B0531CC836382C4F9344F8CCFC9F929EF38C37C2C8FC0F1C893D100BD72DAA3D926537C0AF4FBEB0DD16E81B1048E44E31E8BA24AC5192414766CCE81BE325E81F21E505A19C9897EF35708F2062920CF4001452F3119FD0377117363FE464EBD5A44C73F777F3B554A9B94665DD0C2808FA9ABEBF702EE5936ED3983C96547D5298FBDA9D238D9DFE067A57D82D5DA9700EEB65CE0F11C24A8D9639304A226E0E977AC59882EC748913B7021ED1290D543DCBD8BFF1BF6A7408E66E4FA18782F84B7A887C9CEC28A072846F7F32632B6BAB4F3330FB5DA72FB3F60F7E214BC40DD30DA728F7C8113CB660FE94653BC57BB742C0C149CE289E8497AAA016768D989CBA756AEC8199A2D86D7E67030A153BEA798FF2FA6F14AFDAC1D38DAE5C84BB6CF6FA58CB5E9EF1B43F62261D39795FC8E83924A3A0E6E8B606327FFCAC4DCF65C294D20C3E13E6C60B011CD1DC19DC262F5254F9ADEF75E05D19DD2BB1E346E698E3979700CD4B42BE02315F108E246C80049E1AE12D9E20D823276DE99CAB2E5536ED92D91130EE5166CBC16CB07C1B49FDEC5FD31E50D5A0F9E480D08FD2A9016281EB68BB0BC73DCF58C068A93410DF2D317CC2477F47A64F08D0C0741E61CAD72FCCE4C70A8870CFD4CC15DEE7ED609B2B7580E6207921A7860438886B10F7A343A3F172791ED227A5A1B6CD3FD9EBAA0D7C2654D43EE05422618965622218F78606F7117C06ADAD69BA64097F1B5A3BDFF42A1EA4324E35395970992292E355C2E802589A77C3225BAA17FB5C1666B2331E3618338960E6423313F038BE803427D6A480816ACCE655FA5500FB19D376241CDA70327BC38C5EEA017E93E71D9612E757A61471043243342000D4DE453445DBEF6BC9C73FE2E24B6EFF9BAB7B09B92AD56B23F80721CF6DB40303E5412A216ACCDB1D1959EEE3DA5BDB85C5315E4D9F4BF6043DDF3BBA71C4A99A967DD747D4B7244586B9226E24132F206BB688B05C8AAD3E0BB52B287074D45B345750CE687F4C4B14F8F5ABDEABCF4408B624078541B39906AFCD61F92C808E0953A0F8686D637A662126CFE8B9BC61871CD2924FE446CDD01600F8372311D77055DCAD097A8363511763526E4B876C57E3ABD03DB0823D1F2CE14B2F66786121B6A979A49AAD4489BB3B17B44969C11E7B5C0FE4F64AA0C58B26C9901B414EFA960A421E7A03CF8B1F8C17DB103C57C235BF46011B42CE9376956A60BC58E3F3BFECFC9486CEE96B9B2A1B203ACF572739B610C7DA70A9A1C216BF8263D148207DC73658D109CFD1AEEF9903355B17350F8A5F2D719D1DCBB74F41CDD4EA916AB92A9EB9EE7A24162BA7FEF7302DDC0ABAD2C2477321D09A27D14D7C4286801F1FBDF620ED3441EE3FC46D8F10CE33DD86896E199A1B0B4089DBC4F4933C1A31C8F62454BDA13862168FBA85479FF90B6F5591FADD28E2A57466BFB6DF04D0A5F8176EFC35B13D890369907F9D674E1AD80D69C0363379C87FAE2C5B67DC55295580AF8425DEC49DF82D3C37DCBE49E51082C3961B40432558AEA1F18AB8428B42928C5690E18122D81B32D171BE6AADE2DF9C41DA2D2CC06F4705925A952D473AB6E0B48D03BAA4C454B6317B287F40DC05E7C29711E597A60AADE9C76B913BE31FB18BC9A5FADAB12DA520FDF0AD333DF535EE19B0D1767949FDB7A3D448601D389FC6CFC0F17A08F4FEAB0D15AAEC1493E16D9266DBCE5F0D429021B0240D4CC0B70180BEEF307CB913B20416E3EE4946CFB3905FE56D34DD0E7DE097BF41E35C8A6297C9366D3102F412BBC366D233F50BF88688C2935F7B5ADC41DC62BBF85EB93A19DE8F4901F5EA864070AF5B24DC1E2B492B37E0B6EFF3B2E83F4D45C128778881644CFCFB467DCE9872DB5A8585CB766F842A5FE4A237523742E7F9CDFC156CFAD69F621CCFE4B4B328CCCCA29F2500886FDA81F9FB19A87E2383C68B2561EB9222E8D504EC4C9CDFA8C6ADC77862D167DC19880E48AEA90D320D4B20DB7D2EED7711E21CFF562B8668F2E2DF680D5E2A8FB20C249024D62D2424288C5F664C16F8F82B736F75AB51584C1FC558A2C94A20E2235D068561840F428338FDF2E2805D9D9D26845424E016E4ED3273D1387EB3B303F137CEC413D4A1D9B3368056730C8EE336ECF7335B025561CEEB36154C194B4E69995A0E59410EAA9551D38D02988FA81304932D0FFAA1B09B82D969F693925F2E9654ACCC5A08A8039DD75D8F582C0A8C8E6C7D0541260A5A5B5010114FC4F749AECC1383FE8221CB58CD441AED5159A209C4AE864374CD8A93FD01980424AC26231654FB91E2245A10C7128B8229033F05F251CFEA48ACAD7A5789C9877044064FBB30050681CB687EC4F077414C8AF7D2355C35DF3E730F086A20BA5BED0B8F9BE775663C19E4C8D9352B90DB142AB6CE5A9CD6858FC58955E355BC78AE123BB4469728C8C4C935472D07E3E5D92A190BCD547E3B5FBE64D7ABC88AFDD72EA5608A56B1749BA48161CE36F9FC13260E6AE764D65B4EED9F8423F81FA2656718E085ED8F4C5ED6108E7200249178156D7F57F13CA2EE5CCDE0B8ED4CC213909841820847B746B7B240D43BFDBD73DB5D06C859D7863378CE3FFA236CA30983B5E632D8975EF7FAAF778E2E92D449286B3C10300EC54E0D7D8BF265F61C70EB7421E36D91271301AC4F1BADB83ED85E8D52B0CEF670C0E8949397BAAD4F2B99B886E6107F4922D5BE2D968EEE3B29955EF46FBC646F347E076386A839CE1FAF015BB039C2B607241F5CD6BD43BBDFCE1D72BE97A19B13D0B658AB1B5FF3FC591313F26A6A95B34B0A9C735DE811538979A67CC5F16BF15AFBA934E260CCB73BB1A2323A5B8C53BDE02657BD4E688E1F439F21ED9A884EC9BED053D4FAECA3B6BF2A120196BB8408FCBC9749854C0FA72698A3CF44490CDF3A56B5B74BF2F6577B4629C4F86E8913A3DDE28783B64FBFE97E906B8D50367C3C06EFF954EECC806BC44B535149FC9714B86957698DA84BC55A65553A3D1932760C9BA4F01DF4FD2201125D0C0E5B5A669997EAF37E3658BC38C1AC51FA0A290357E23D3B1C9A9A94BEB35B20E1201C91DCAF5B6A103D32A6F6D9F647103873A85FD17B04600DD603BF8A3444B6068BDCEF396D8DDFAEA70B281F19CD817D46837AD292F7B33B13A70AEB9801B48FB997585AFD8E81FD67025AE8513AB9EBC2EB28977E39755D2843D8F71AE86698941446E4CA1FD4F6ED7C809035BE18FE326BE14709999035DC8DB398B5F2AA63699C9F9E138F15296438F2E84EEE174C197F034E835BE67C74CFBA062071AC9D489DFEF0649040C0CCC7C3426556B80830102D0EEED90ED18E1E6BD1A6238962B267456BA5AA1937C9AC9BAB82738143535EF7414A2BC3EDEF6DFCC8E9E33C89F31AEF8E7B2F77AD1150E186E1A70B9F86582F1D89342FDE406A77177C424DDD80A674552EF77EA0FBC46C224A21C6968DEF34E837F2A335D9D273133068791707CA9821213C178626656C2A91DEAD048B5E0DAF64EE919443F18E45E66ADE9F08CADFF5514AF2B9F04290172CBFC21D9F0BB41E092E2A1371E192F3AD8C51F2AAE4E8EB653FC2D78C0B7DE5CEFF857625F8EA03AFDFAD942BDD0D0DEE774DE6B7BD1868A12A73833A952AAA77D60446C42D069483AFF402C54AB7B8DC521F50761AF30C45DEA444DC9567839DA447E3F33810D10737BF8FC4627607D1752C95EFCC9AF9B2D5FC5DEEA445F1D75A5FFB633FD6A1BD1672DDB20C3F4849C37CA795085261E174F66D938D8F8465D2A2B1D33AB12C8F9D17EE5BCBC064096F8E3F19E8CE2BEA9F794D294ADB04B9D7BD6C2689D79A194ADDFA02F7C0CC69AAD795BDCEB323EACE69A67B923E17050DD3D3D493CAE0AA2A0158A6550F7511AD34011BD377A6262EF510065DE0D048570680A66387D1810297D9BB18058E8EA41B886D3BFDE5010DF782586D9752A53DFC2B42082C90982CDB1B9BCEEF7FF4379C7FE6432EBF9C672C07FD430FC10714B4492538B712956C757DB2E6E87406F2E22DC072C52DFF7E5F417435F04089F400E1C2C8A7EA6C628C487016CF9EE9AAF327BF6F429A9D403F909D8ECE226F349A0785EDDE8C9D46A5FF20EA510230AD434FE103805FF8865804E8B70437E523FA3A8452F9258CC48ED0D003D94902F9087168E6E21CF569E6536D584250CCABD93362131B9EFEEA74F93F702D27D48CEA1AD233DAF50BFE675FCA7FB386506A6044D410B75F935D7F2236829FE4406DCF10FBCDEA3BF9814B35CB7692B66CF9988A42F9228B8CB4FD9735E47554D99BB820AC42E51049762272F1F06797CD47F7BDB13D1B158FBD20E219B1737BFF53ACDA627EFE8296B619D558A44EDDE686649EACE0E2215E4958E2C55243FE9D245EF3706BDE36D03510E4794790DD3FBF72F9CD66E1E7DB10300C8CA818EE2378BECBF488705A98947AFF662C9C7C2A0BA40CB60545255BE40EA0514E90DF950D2E26EE256DDAA2AA11ADD0075619BAB7227B7C291BFAE4948CEB3008B43BCB12713A4AD640F1024A7B6D2E7B18CBE81B5CC64D10D48631821ED29ACB9103AFBBBE1AFD5437CE615ED8FCE6F25A7C71B6FA639B62D5C01AC4D529D377E63EE9C45E4734695F07BF6DAEFD45B34F3420C1F870396BD70055F56A66CB007C665A797B629CE3FC64EB14A5363826855DC4D6973B528DD99BB7C9F76E25A1E81E3EFE67F2478A584D22CAF2122A8AA47C7CF75D0AA1A31432D0970404B92B3E75536D9C186EC4AEF6D8F2CF9417B7FFE7CD8AE216563E6F49A5EB192F16E5D18FB94D2A97465BD0DA5137CF0E84AE15180ED23A679D63EDA05B88271A79504211BB74DC7F83133CA88886CDE879FD02EA2C45B95D7B725882DDAA5EE6906E792274C6F266EAAA04CAEA8A55C0E79E956E8225080903AD29B85919BC120BF7DB910F7A719C0E87F1C336682F6C6EE2560282CA3EC5961C9F07DFF79BEDB04D5FD5613344E5B2625D639B4F48E6B56FA3D537AAAF0C790165997BC5F2EADFEE139039215B5E6788119A16228037AE43272CD261DDCCA71CAD601AC33EDF04B7BA2937FAAF8727306B6F3E00A295304518EC8BEAB55A1E7C0F7C8D4CC27A0CE43953E85D4B737D7780F8EB0BF54DFE4E101A4B9FC342EF8253D92A59A98A12914C5A6A9B8BF970D48BA3490E99395ED20E62065F490880B4F10A9E47B6D9B90BD86F36B7B7971B66F6CD9407B99C689A3B83FAD01D1B92C22DD62075BF2D77A8AD28F0DE859FFC10134A12478A9507005AE88CD4CA97B7390FFB9A6266D70DDD99F785AC33942FC90F31330E65E8B36B2E7EB8541763F3352C980215010987D16BD9E38A04ABC46DD3931E7901912E3C3BFBE59D1BF71E32E2FCC82B92B5D17E8DCAF530849CFB4CA2DB5740DDC42323B046C9D310D19D514A651E3BFB7479D0F98D4F08F709D2D58D773E50203C7CF8D0A25238EFD9E6CBE0F212BD32D324FF28444DD821577F579B6F061231D5E5172A36920F25D74A2DA55A5CABC97CF27532DB1253721A0692CA2838B974B7F44041EC2FF68E8CA448D55D5BD9512929B34A7D3FB37755662EBAA8F2BC5BD9113B88F1798B1F199357889A40B410DE0EDA6FFB6C7CCC978E030E8DDAA2E7076DA06969EC92D4982FEEBB0A0DED4FBCCC8A77B70EC0DFDED34BE86E34A5A78F7B85F7DA2EB372CF78D82EDAA8B473DDF42D40DB279E0ED6FEB6C01BAEB5BC642C5DBA810D64311DD27BBA1FFBCBB4864A64402BDB64C112AF32914A9C63BCB6E1A2D7CCC8D671873DD366A3E84F8B57168E12FF93D3CF9BC64345B0EFDBEE581C70178D78FDE8A47014A89A930A1A4222220200625BCA4D5B2CE7ACA9CDDECA61337631D60BB046F114B890DBA9B59AFA53981DA55FC27E52AC4D2A2231FFB97C6FB03071383C865AD3D524162A58086866EB3CDA932B9CAC7286A2156D0787219317D1D56E493A45DEC77A30AED224603B38D3CB9667C78733E8D9FA8B217973192048C44BCC5924D1A4FD3A53CB871AE27626D029860C54C509CE4CD9B0E74CC737AB34A0AC25FD31C054DD28C39EC5D5EDEE40612E5FADE013688DD26EF4D6D4561E30B8066742DAE3D978E84445AA7F8D9EC7F8FBE91140AA9CC8639F7BCF8C14F8220D0CFF9B4BD87504885E1941C0079E02B7FDAC1DB3CECE294459D7C3CACCFE704D469006C28CBA92357BBF44F6FDACE3D989974F2314A8EF8B6A2B0D0AFB941073DF5D23CD8DBC0EF65DCDC2A8F7B4BF4E3E9F98D11ED3B58C04AB4C4CB21566A70E77EC90BA4A01E64CF6EBF4556F4535BCA2D188F7B5984D70B7DDBCA232228F5A076581EB757DD796A4B441925CEA1189141223176A907B30D8B94935982FAEA3DB8FC51F9F46289F68721AB3DD34B425867A317D3FAA2CC34FFE1F2CECFE3A9F359D78BAB17CE022000098ED8863D091EBBE20768469301ABB8B61E218E1BB1E601722B81C3C903523EE83ADA58B492340384579F6D2C71F44CB59EB581AA3260CCC9DCC5229E4D4153424A52AE191A9343CB3654107E702C6758ABFAB8E4EBBBE5F83322B3FB9B9E2EB366552B1AC4B44ED557D76D1A4E5E9B45C472D0516958557AAD61F3ACFB8B91339AF0C30A3331B6E57E7F1894327BF46954F1DB2A9656D099D6FF6674E2C5CA1FE9DFC6B3FFF47031806E4CBE4B928D7C103EF4A7BCE7C616BACE4D1D3552F2C2FD6D709CEACC4E8F9E99F9E80B6F8F3E3098BCDD9B2B988C63DCF8C1E1EC09F4902ADC605AB3904D1634CC45B319AE97B6CB904F2655AD4E41000B4C22F13F5661F05FC819393C5795F592E31F6C6DDF889BE6B132B4B6D91F10888133A6907090A6CD24C94AD523713F1125FEABEF56EF3AB8DC3A7AFDEE2F93AF8032E5DAE296C3EA951312ED43E80164C9F7DA696C32B8C16F0F4E47CD6AD48556EB4CC710AA2278BA0E3A0AE358B69C4938875970DC1939D4EEEB209E44DC1CF918B407F3E62168F54C514B4520905223FDFF0000FAFF0300FFFFFFFF04000400FDFFF8FF00000000FEFFFDFFFCFF070001000400FEFFFCFF00000000FFFFFDFFFFFFFEFFFFFF0000020000000200FFFF03000000020001000400060004000000FCFF05000100FFFF0300FBFF010001000300FBFF020000000700FEFFFFFF03000400FFFFFCFF040001000200000001000400FDFF0200000001000000FFFFFFFF00000000FEFF01000300FDFF0400000003000000FFFFFDFF0100FDFF010004000000FDFFFDFFFFFF0100FFFFFCFF000002000100FFFFFEFFFDFF0200FCFF01000100FAFF0000000002000300FCFFFCFFFFFF03000500FFFFFCFF0000FEFFFFFFFCFF0700FFFF000005000000FBFF0100FDFFFDFF020000000200FFFFFEFF0100FDFFFFFFFFFF0400FDFF0000FEFF0100FCFF0400FFFFFDFF0100FEFF0200FEFF0000030000000100FDFF0100FDFF00000000FBFF01000000FEFF010001000100FEFF010001000000FFFF0200000000000200FEFF010000000100000001000100FBFFFFFFFDFF0300FFFF00000000FFFF00000400040000000200FCFF0000FAFF0200FCFF0000FAFFFCFFFCFFFEFF00000300FCFF03000500FDFFFAFFFFFF0000010000000100FEFFFCFFFEFFF8FFFEFFFDFF0500F9FF00000200070002000300FBFFFEFFFAFFFFFFFBFF05000100FDFFFCFFFFFFFFFFFEFFFFFF02000200FEFF0000FFFFFDFFFEFF0000FEFFFCFF00000300FCFF000005000000FCFF0400FDFF01000100FFFFFCFF01000400040002000400FCFFFDFFFFFF0300050002000300FCFF0600FEFF0100FBFFFFFFFFFFFEFF00000000FDFF02000200010001000100FEFFFEFF0200FDFF00000500FCFFFEFFFFFFFEFFFFFFFFFF0100FEFFFEFFFBFF070002000300FDFFFFFF020004000000FDFF0500FBFFFBFF0200FEFFFFFFFFFF02000300FFFF0000FEFF030003000100FDFF0200FEFF0300FAFF0100FEFFFEFF0000030002000000FDFFFDFF03000400FEFFFFFFFFFFFFFF0200040002000000FFFF0300FCFF0000FBFFFBFFFEFFFFFFFEFFFEFFFCFFFDFF0200FEFF00000100FDFF02000000FBFFFBFFFCFFFFFF03000300FDFF0400FEFFFFFFF9FFFCFF010003000200F9FF00000100FCFF05000400FFFF0300FDFF0000FCFF00000600FCFFFCFF0000FCFF0300FDFF0200FCFF0100FEFFFCFF05000300FEFFFDFF010000000300FFFF0200FEFF0300FFFF0200FDFF02000100FFFF0000FDFF000003000000FEFF0000FDFF080004000000FFFFFBFF0700020002000200FEFF00000300FCFF00000300FEFF02000400020004000200FDFF0300FEFF0200FCFFFEFFF9FFFDFFFFFF0300010001000000FEFFF9FF0000FFFFFFFFFFFF0100FEFF0500FDFF0700FEFFFDFF0000030003000100FCFF0600FFFFFFFF00000000FDFFFDFF0000FFFFFDFF0400FFFF000003000100FDFF0100FFFF03000000FFFF0100020003000100020000000100FEFF02000000030001000400FCFF0200040001000000010003000000FFFFFEFFFFFF0000FEFFFEFFFFFF010001000400010000000300FFFF03000200FFFF01000200000001000600020001000400FEFFFCFF0300FDFF01000100FDFFFDFF0200FBFF0200000004000000FFFF0100FEFFFFFF04000200FEFF000000000200FFFF040001000200FDFFFDFF02000200010004000100060001000400FFFF0200FBFF0000FEFF0000FFFF02000300010001000200FFFF01000000020003000400FDFFFDFF03000600FEFF0000FEFFFFFFFAFF050003000000FFFFFEFFFFFF0000FEFFFEFFFCFFFDFF0200FFFF0100FCFFFFFF0600FFFFFCFF0000FFFFFDFF01000000FDFFFDFF0200FFFF0300000001000300000002000100040002000000F8FF020003000200FCFF00000100FFFF0500FBFFFCFFFEFF0000010001000100FFFF010003000000FEFFFCFFFDFF010008000000FFFF0300030001000100FEFF03000000FCFFFFFF0000000000000300FBFFFFFF010001000100FDFF02000400030001000100000001000100FFFF03000600FDFFFCFFFEFF0000FAFFFFFFFFFF0000FDFFFEFF0100000001000900000004000600FFFFFBFF02000100FEFFFDFF0000FEFF01000300FFFF01000100010001000000FFFFFEFF00000600FCFFFEFF0100FEFF00000200FEFF03000000FBFFFEFFFFFF0300FFFFFDFF0000FAFF03000400010006000100FEFF0000FFFFFFFF030003000100FEFF0400FFFF0000FFFF0000FAFFFEFF01000100FFFF0100FDFFFCFF0200010000000000FDFF0300FCFF0000020003000300000003000400FCFFFFFF0300FFFFFFFF04000200FEFF01000400FBFF00000100010003000100000004000600FCFF0200FFFF0300FEFF03000000FDFFFFFF020001000200FEFFFDFFF9FFFCFF01000100FEFF0200FFFF00000000FCFFFCFF01000300F9FF02000100FEFF03000200FFFFFFFF01000300020000000200FFFF0300FDFF0000010001000300FFFF0300FDFFFFFFFFFF01000000020000000300FCFF0200FDFF040001000100FEFFFCFF0200FFFFFDFF0200FDFFFFFFFFFF0700FDFF03000200FFFFFFFFFFFFFEFFFEFFFEFF04000200FAFFFBFF0300050000000400FEFF05000000FFFF0200FCFF05000500FFFF0200FFFFFDFF0000FDFF0000FCFF000001000200FFFFFBFF04000100FFFF0300020003000200FEFFFEFF04000300FFFF0100FEFFFDFFFEFF02000000FFFF0100FFFFFAFF0200FFFF02000200FDFFFAFFFEFF00000300FEFFFFFFFEFFFFFFFBFF0400030006000200050008000100FFFF0300FCFFFEFFFEFFFEFF03000300FEFFFEFFFEFF03000200FEFFFEFF0200000001000000FEFFFDFFFEFF0200FCFFFFFF020001000200FFFFFFFFFFFF0000FEFF00000100FDFFFFFF0100FFFF05000000020001000300FFFFFDFF0300FDFF0000FFFF00000200000002000700FFFFFFFFFFFF0500FFFF0000010002000200FFFF00000100010000000000FFFFFEFF030002000200010004000000FFFFFFFFFDFF0500FDFFFCFF00000000010002000000FEFFFFFF010000000000FDFF00000000FEFFFFFF0000FCFF0200030002000000FDFFFFFF0000050001000100040002000000020002000000FEFFFFFFFEFFFCFFFFFFFEFF0100FAFF01000200FFFF0300FCFF00000000FEFFFDFFFCFFFBFF0200020002000300FEFF00000400FDFF0300FFFFFEFFFFFF010001000100FFFFFDFF0000FDFFFEFF010000000100020002000000FEFFFDFF0000FEFF0000FCFF0100010002000000FEFFFFFF0200FEFF03000300000000000000FEFF0400000002000300FFFF03000100FDFFFFFF03000000010003000400FEFF0300FDFF0100FEFFFAFF0200FFFF0100030001000500FFFFFEFF010001000200FDFFFBFFFFFFFFFF000001000700FCFFFFFF0600FEFFFFFFFEFF01000100000004000200000001000200FFFF0000FFFF0200FDFF0200FCFF04000100FEFFFFFF01000000FBFF0200FFFFFFFF0600010003000000030000000100FDFF000001000300FBFF010001000300FDFFFDFFFEFF010000000200FEFF00000200FEFF0000FBFF0200020003000300FCFF0300FDFFFFFF01000400FFFF0100FFFFFFFF0500FFFF0200020001000100FFFF0300FEFFFCFFFFFFFFFFFFFFFFFFFAFFFEFF0300FEFF0300FDFF0000FEFF0200FDFFFEFFFFFFFFFF010005000000FDFFFDFFFFFF0400FAFFFEFF03000100FFFF0300FCFF0100FFFF0200FFFFFDFF0000FEFF0100FAFFFEFF0100010004000300FBFFFFFFFFFFFDFF0000FCFF020003000000FDFFFFFF0100FBFFFFFF0100020003000200FEFF00000500020000000100FFFFFDFFFFFF01000300FFFF0400FEFF03000100FCFF0100FDFF0500FCFF02000100030004000400FEFFFEFFFFFF02000100FEFFFDFF0300FFFF0100FEFF020003000000FFFF05000500FFFF0000020001000000FEFF0500010001000200FDFFFFFFFFFF04000100FEFF0100FEFF0500FFFFFDFFFEFFFFFFFEFFFCFFFFFFFEFF0100000000000100FDFF01000200020001000000020000000200FEFFFBFFFCFFFCFF00000000FFFFFDFF0100020001000100FCFFFEFF07000000FFFFFEFFFFFFFFFFFEFFFEFF0100FCFFFFFF05000400FFFFFCFFFEFFFDFF0000FEFF0000FDFF0300FDFF0300010001000400010000000800020004000000020003000100FFFFFCFFFFFFFFFFFFFFFAFFFFFF0200FEFF04000000FBFFFFFFFEFF0200FDFFFFFFFFFFFCFFFFFF00000400FFFFFAFF0000FEFFFDFF00000100FFFFFEFFFDFF0200FDFFF8FFFEFF0500010000000400FEFFFFFF02000100FEFFFCFF0000030004000100F9FFFDFFFEFFFCFF0000FEFF01000500FBFFFCFFFFFF03000100FEFF00000100FEFFFDFF0200FDFFFEFF0400FEFF0000FFFF0300FFFF00000300FEFF020000000200040002000100FDFF0200FEFF0000FCFF0200FDFF0000FFFFFCFFFEFF0200FEFFFFFFFFFF02000000FEFFFFFF0400FFFF00000200FCFF0200FFFFFDFF02000100FDFF00000300FFFF06000100FEFF000001000000FDFF0200FBFFFFFF02000200FDFF0100FEFFFDFF010003000100030002000200FEFF020000000100FEFFFFFF00000200FCFFFEFFFAFFFFFFFFFF09000200F9FF010002000200FFFF01000200FEFFFFFF03000000030002000200FFFFFFFF0100FFFFFCFFFFFFFEFFFAFFFAFF0100FCFFFFFF040005000500FEFF040002000200FDFFFDFF0200FEFFFFFF0200FEFFFEFF0000FBFFFEFF0100FEFFFCFF0200FEFF0000FEFFF9FFFFFF02000100FFFFFFFF0300FFFF0000FFFFFFFFFDFF04000000FDFFFFFF05000600F7FFFCFFFDFFFAFF02000100030005000200FDFF01000100000003000000010004000100FBFFFFFFFEFF020004000100FCFF0300FCFF0100FBFF0300FEFF0500FFFFFFFFFEFF0200010006000200FFFFFEFF0200020003000200FFFF0000FFFFFEFF04000400FDFFFDFF01000200FFFF00000300FFFFFEFF0700FBFFFCFFFFFF0100FEFF030003000000FCFF03000100FEFF01000300FEFF020003000000010002000100FFFFFFFFFFFF0200FFFFFBFFFFFFFFFF060002000100FEFFFEFFFEFFFFFFFEFFFBFFFDFFFBFFFFFF000003000000FEFF0100030004000000FFFF0000FEFF0000FBFF0300020003000300FDFF050003000400010001000600FFFF01000200020000000400030001000000000001000200FDFF0000020000000000FEFF0100FCFF0100FCFFFFFF0100FDFF0500FFFF02000100040003000300FFFFFEFF000000000300FBFF0500040005000100FEFFFEFFFEFFFBFFFEFF02000600FFFFFEFFFFFF0000FCFFFCFF000005000000FCFF0100FEFFFCFF0200FFFFFFFF030000000300030000000000FDFF00000600000000000200FDFFFDFFFFFF0200FEFFFEFF020002000800FFFFFFFF0000FEFF0000FDFF00000100FFFF03000100FAFFFDFFFDFFFDFF02000300FFFF02000300FFFF0300010000000700FCFF00000400FEFF01000300FFFF02000000FDFF02000000FEFFFEFFFDFF0100FDFFFFFF02000000FBFF0000FFFF0100000000000200000004000100FFFFFDFFFEFF0500FFFF02000100FCFFFCFF000002000300020001000000FFFF0400FFFF000000000000FFFF040006000100F8FFFEFFFEFFFEFF0000FEFF01000000FDFF0100FDFF0400FDFFFCFF030000000300FFFF0200FFFFFFFFFDFF00000000FEFFFEFF0000FFFF04000100FBFF0400040001000700FBFFFDFF000004000300FFFF010002000100FFFFFFFF0200FDFFFDFF000000000200FDFFFFFF04000300FCFFFCFFFFFF080003000000050003000600FFFF020006000000FDFF040002000200FFFF01000000FFFFFFFF020001000400FEFFFFFFFDFFFFFF0000FEFF0200FFFFFFFF01000100FFFFFEFF0400FDFFFFFF0100FEFFFEFFFDFF01000000FEFF0200FBFF01000700FDFFFFFF0300FDFFFFFF0000FEFF050001000500FCFF00000300FFFF0200FFFF0300FEFFFFFFFFFFFDFFFCFF01000200FFFFFBFFFEFFFBFF0000FDFFFCFFFFFF0200FDFF0100FCFF0000FCFF0200FFFFFFFF0000FDFF0100FEFF0300FFFFFEFF0100FDFFFDFFFDFFFFFF01000000030004000400000001000100FFFFFDFFFEFFFEFFFEFFFEFFFFFF0500FFFFFFFFFEFFFEFFFEFF00000400FEFF000001000200FFFFFFFF000000000000FFFFFFFF0200FDFFFDFF03000100FEFFFFFFFFFFFFFF0000FDFF0000010004000300FCFFFFFF0000020001000200FDFF0000FAFF0000FCFF030000000300FFFFFAFFFFFFFDFF0500FCFF020000000400010000000100FEFFFBFFFFFF05000100050004000500010002000000000000000200FFFF0200FEFF000000000100FEFFFCFFFFFFFBFFFEFF010001000200FDFF0200FBFFFFFF0600FCFFFEFF0000FFFFFFFFFFFFFEFFFFFFFDFFFDFF03000500FDFFFFFF0100FFFF010003000100FFFF030002000100FFFF02000300FFFF03000000FFFFFFFF00000100FFFF010000000000FDFFFDFFFEFF0400FCFF03000000FEFF0100FCFF0400FFFF00000300020003000000FEFF0400010000000200FCFF040004000200010001000400FFFF050001000200FEFF01000100FEFF0100FDFF0100000002000000FAFF010002000500FEFFFEFF000002000100FDFF0500FEFF0100FFFFF9FFFBFF03000100FEFFFDFFFEFF0200FDFF0200FCFFFEFFFEFF0100FFFF0200FEFFFEFFFCFF05000400010001000100FCFF080001000200FCFFFEFF0100FCFF020003000100FFFF0100FCFFFFFF0200FFFFFDFF0200FEFF04000000FBFFFCFF0200FEFFFDFF04000500FCFF060005000000010002000200FFFFFFFF0200FCFF020002000200FFFFF8FFFDFFFCFFFFFF0100FDFF0200FBFFFDFF01000000FDFF0100FBFFFFFF0400050001000500030004000000FFFF0100FBFF0100FEFF0400FFFFFFFF0100FDFF01000200FEFFFEFF01000000FDFFFFFFFCFF02000100030004000100FEFF0600FDFF0000FDFFFFFF010003000300FFFF040001000500FFFF02000200FFFF0500010000000000FBFF0500FFFFFDFF01000100FDFFFDFFFDFFFDFF0100FDFF0300000000000000010006000000FDFFFDFF0000FEFFFFFFFEFFFEFF010001000200010004000500FAFFFBFFFDFF0200FEFFFEFF0100FEFF02000600FEFF01000200FDFF0000FEFF0100FFFF0100FCFF0200FFFF0100000003000200FEFFFEFFFEFF0200000001000200030001000000FFFF03000400FEFFFEFFFEFFFFFFFAFF0300FFFFFFFF010000000300FFFF05000000FFFF00000300FDFFFEFF0400FCFFFEFF02000500FEFF00000300FCFF00000200FEFFFDFFFCFF0500FEFF0400FFFF0000FBFF0000FFFF0000FCFF03000100FFFF01000100FCFFFFFF0300FFFFFDFF04000300FDFF0400FDFF0600FFFF0300FFFF000000000000010001000100FDFFFEFF05000000FEFFFBFF010003000000FDFF00000300FEFFFFFF01000000FDFF0500FCFFFBFFFEFF040001000100FBFFFFFF04000400060004000100FDFF020000000400000004000100FBFF0500FDFFFDFF00000000FDFFFDFF0000FEFFFFFF0100040003000200FFFF0200FEFFFCFF0500FEFFFFFF0000010002000200FEFF0200000004000100020008000200FCFF020000000200FBFF0000060000000100FDFFFFFFFEFF0700FEFFFEFFFFFF0400FFFF0300FFFF0500FEFF0200FEFFFCFFFEFFFDFFFBFF0100FDFFFEFF0100FDFF0100FEFF0300FEFF0400FCFF0000FFFF05000300FAFF0200FEFF02000300FFFFFEFFFFFFFFFFFFFF0000FCFF0400FEFFFFFF0000050000000000FEFFFDFF03000000FBFF02000300FCFF0400FDFF0400FDFFFFFF0000FEFFF9FFFEFFFFFFFBFFFEFFFFFFFFFFFCFFFDFFFEFF02000200FCFF000005000200FDFFFBFFFFFFFDFF030005000100010003000100030001000700FEFF00000000FCFF05000200000002000000FEFF0200FEFF020003000300040003000400FDFFFDFFFBFF02000200040004000000FCFF0000FFFF01000100FFFF0000FEFF0500010001000100FEFFFDFFFDFFFFFF0100FAFFFBFF0000FDFF0200FFFF010000000000FFFF0300FCFFFCFFFEFF0600FEFF03000100FCFFFFFFFDFFFDFFFBFF030002000100FFFF00000200FCFFFFFF0100FEFFFFFF010000000000FEFF0200010004000000020002000100000003000000FDFFF9FFFBFFFBFF00000000030000000300FDFFFDFFFAFF0100FBFFFCFF03000300FCFF0300FCFF02000100FFFF0200FEFFFEFF00000400FAFF0000FDFFFDFF010004000100FFFF0000FFFFFEFF07000200FFFFFFFF04000400FFFF0000FDFF02000300FCFF0000FFFFFCFF01000400FEFFFFFF0400000004000300FEFFFDFF00000100FFFFFCFF00000200000003000100010002000000020003000400FFFFFEFF0300FDFF0400000000000100FFFF01000500FFFF030001000500FFFF01000100FDFFFEFFFCFFFEFFFDFF05000100FEFFFFFF01000000FFFFFCFF0300FEFFFCFFFFFFFDFFFEFFFFFF0200FCFFFEFF050004000000FAFFFFFF0400FDFFFCFFFCFFFEFFFFFFFFFFFEFFFCFF0100FFFF05000200FDFF0100010000000300FCFFFEFFFEFF0100FEFF010004000200FEFFFFFFFFFFFCFF04000600FDFF0000FFFF0400010003000500FFFFFDFF02000200FCFFFFFFFBFFFDFF02000100020008000300FFFF0700FBFF0300FEFF0200FEFFFEFF0100050001000000FFFF0000FEFFFFFFFCFFFEFF0200FEFF010001000100FFFF0200FFFF00000000FBFF0100FBFFFFFFFDFF01000100020006000400FEFFFBFFFFFF03000000FEFF030000000300FEFF0000FDFF0000FFFF060001000300FBFF04000200FFFF020004000200030000000100FFFF01000100FFFF0000010000000600030001000500FDFFFFFF0000FFFF00000200020000000000020000000200020003000400FEFF01000400FFFF0000FFFFFEFF0100FFFFFFFF000000000200FCFF050003000500030001000000FFFF0400020002000200FDFF0000FEFF00000000FBFFFFFFF9FF00000400F9FF010001000300FBFF01000100030003000000FFFFFFFF010002000100FFFF010000000200FCFFFFFF040002000300FFFFFEFF0100030004000300FAFFFFFFFDFF0100FDFFFBFF020004000100FEFFFFFFFEFFFCFF0000F9FF00000100FDFFFEFFFFFF0700FFFF010002000200030002000100FEFFFBFF0000FFFFFEFFFFFFFEFF0400FBFFFFFF07000000060001000200FEFFFCFF00000400FDFF0600FEFFFFFF0100FDFF01000300FFFFFEFF0700FFFF0000000002000100FBFF00000000FEFF0000FFFFFDFF0500020005000200FAFF05000500FCFF00000000FEFFFDFFFEFF00000000020000000100020001000100FAFFFFFFFBFFFAFF0000030000000200FDFFFDFF0000FFFF0300FCFFFEFFFEFF05000300FFFF0100FEFFFCFFFEFF0200000001000000FCFF04000300FFFF00000000FEFFFAFFFFFF0400FEFFFBFFFEFFFFFF0000FDFF0200FFFF03000200FFFF01000300FFFFFCFF0400FDFF00000100FEFF0400FFFFFCFF0000040004000100020004000300FFFF0200FFFFFFFF0200FEFF03000100FFFFFCFF0400FBFFFEFFFAFFFEFF0500FFFFFEFFFFFF0100FFFF000003000400FEFFFFFF0200FFFFFEFF0200FDFF0100050001000100FCFF0000FFFFFFFF0300FFFFFFFF03000000FEFFFDFF0000FFFFFEFF00000200FDFFFEFFFDFFFEFF0000FEFFFDFFFFFFFEFFFDFF0500FEFF01000200FFFF0000FEFF00000200030000000000FFFFFEFF0000FDFF0100FFFF0300000000000000020001000000FFFFFFFF0000010003000300FDFFFEFF01000000FFFF02000000FDFF010000000100FCFFFEFF0000FEFF030002000200FDFF00000600FEFFFFFFFDFFFEFFFEFF02000000FDFF0200FDFFFCFFFFFFFAFF00000100FEFFFCFF0400FFFF040001000000FEFF0100010001000100FBFF0000FCFF04000300FFFFFFFFFCFF0000FFFF0900FEFF0100FBFF0300FDFFFAFFFBFF01000200050000000000FCFF03000400FDFF020002000500FDFFFDFFFFFFFDFF0300FBFF0100FFFF030002000100FEFF0100FFFFFFFFFDFFFDFF010005000100FFFFFEFFFCFFFFFF020006000100F8FF0100010000000200FEFFFDFF0000000001000200FDFF03000100030003000500010006000500FDFFFFFF04000100FCFF000001000300FFFFFEFFFFFF0300FFFF02000200030001000200000002000100FEFFFEFF0200FEFFFBFFFEFF0300FEFF0300FEFFFCFFFFFF0300020001000100FDFFFBFF0100FEFFFFFFFFFFFFFF0100FFFF02000000FFFF0300FAFF01000000FDFFFDFF040000000100FCFF0200FFFF0200FCFF00000600FEFFFFFFFDFF05000100FCFFFBFF0300FFFF0200FFFFFFFFFFFFFEFF0100FAFF0000FFFFFFFFFBFFFEFFFCFF0100FDFF0600FFFFFFFFFDFF00000100FFFF0500FEFFFCFF0000FCFF0000FFFF02000000FBFF010000000300FDFFFFFF0100FEFFFFFF03000000FCFFFFFFFDFF0000010000000000FFFF03000100FDFF01000200FFFF0100FFFFFAFF02000200FCFF0100000002000200010001000000040000000400FDFF02000500FDFF03000600FCFF0200FDFFF8FF0500FDFF020006000300030002000000FEFFFFFFFCFF0300FEFFF9FF05000200FEFFFDFF0400FFFF0100050001000400FDFF0000FEFFFDFFFDFF0100FDFF0100FCFF0000000000000100FCFFFDFFFFFF0200030000000100FFFF0000FEFF070002000400FEFFFBFFFDFFFFFF0400FCFF020004000100030002000100FFFF00000100FDFFFFFF0400FBFFFDFFFEFF0200FFFF010001000300FFFFFAFF0000FDFF0000FFFF0000FFFFFFFF0400030002000600000004000200FDFFFCFFFBFFFFFF0000FDFFFFFF0300FDFF040000000500FEFF0000FDFF0000030002000000FCFFFEFF0000040004000100FDFF0100FDFF00000700050002000200FCFF0100FFFF08000400000004000100F9FFFFFFFDFFFDFF04000000010001000300FDFF0200FDFF0200FEFF0200FDFFFFFF0300FEFF03000000FEFF0300FEFF030004000000010004000100FCFFFEFF0200FEFF04000100FDFF01000200FDFFFEFFFCFFFEFFFDFF00000300FDFF0400FFFF03000100FDFF04000100FEFF0200FFFFFFFF0100FCFF0100FDFF0300FFFFFDFF0000FFFFFEFFFFFFFEFFFEFF01000300FEFFFFFFFFFFFEFF000001000200FDFF0000FFFFFFFFFCFF02000500FDFFFEFF0200FDFF00000000FFFFFEFF010002000100FDFF0100FFFFFEFFFEFFFFFF00000200FFFFFFFF0100030000000600FEFF070003000100FDFF01000300010000000500FEFF03000100F9FF0300FEFFFDFFFEFF0500FFFF0200FFFF0400FFFF01000300030001000000FEFF02000200FEFFFEFF04000100FCFF0100030000000100FFFF020000000100000000000200FEFFFCFF0000FDFFFAFFFBFFFBFFFEFF0000FEFF0100FDFFFFFFFDFF0000FFFFFEFF0300040005000100FFFFFFFFFDFF0100FFFF0500FDFF0100020000000100FEFF0500FCFF01000300FFFFFDFF0200FFFFFDFF0000FEFF0000FFFFFDFF000001000000FEFF0300FAFF0400FFFFFBFF0400FFFFFEFF03000400FDFFFBFFFCFFFEFF04000100FCFFFCFFFDFF0000FEFFFDFFFBFF02000000FDFFFFFFFCFFFAFFFDFF01000100FDFF02000500FEFF0400FFFFFBFFFFFFFDFF0000FEFF0200000002000200FFFF05000200FEFFFFFF0300FFFFFBFF0100FEFFFDFFFFFF0300FCFFFFFFFEFF010002000400FFFFFEFF01000200FCFF00000600FFFF00000400020003000000010002000100FCFFFDFFFFFFFEFFFEFFFCFF020001000400F9FF010003000700040003000300FDFF05000400FFFF060002000100050001000300FDFF000002000300FDFF00000000FCFFFEFF00000300FFFF00000000010001000000F9FFFFFF00000500FFFF0300020003000200FDFF02000300FEFF010001000300000003000200FEFFFEFFFFFFFBFFFBFFFEFF0100FEFFFDFFFBFF0300FFFFFEFF030000000000FFFF0100FEFF01000700FBFFFFFFFBFFFEFF0300FEFF03000400FFFF01000600FFFF0200FFFFFBFFFFFF030001000000FFFF05000100010002000000FFFF0300040002000400FEFFFCFFFFFF02000600FAFF0400FDFFFEFF030002000400FDFFFEFF000003000300FFFF0200FEFFFFFFFEFF0400FFFFFCFFFEFFFDFF00000100FEFFFEFFFEFF03000000FFFF0600FFFF0000FCFFFEFF0300FFFFFCFF0100010002000400FCFF00000200010002000100FBFFFEFF0100FDFF030004000000FEFF010001000100FFFF00000200FAFF000000000300FFFF0100FCFF03000100FFFF0300FCFF01000100FEFF0100030000000400FFFFFDFF0300FEFFFCFFFDFF0000FFFF0000FCFFFFFF02000300FFFF00000200FDFF0000FEFF0200FDFF020002000300010002000000030001000100FFFF0000FDFFFFFF0400FFFF04000300FEFF02000200FDFFFCFF03000100FEFFFFFFFEFFFDFFFEFFFDFF000000000100FAFF04000000FFFF04000200FEFF0400FFFFFCFF030002000300FCFF03000700FDFFFDFFFFFFFFFF0400FDFF0200FEFFFCFFFDFFFEFFFCFFFFFF05000000000000000300FDFFFDFFFDFFFBFFFEFF0400FEFF0300FFFF0500FEFFFDFF0200FEFFFEFF00000400040003000400FDFFFFFF020001000300000001000000FCFF04000000010002000000FEFF0000FEFF0000FEFF0000FFFFFFFFFDFF0100FCFF0100FEFF020000000000FAFF010001000100FCFFFEFFFEFF000000000500FDFFFFFF0200010003000000FAFF0400FFFF0100FFFFFEFFFFFF0200FCFFFFFFF9FF05000200FEFFFEFFFEFFFEFF02000000040004000100FCFFFFFF0200FFFFFAFFFFFF030003000100FFFF020005000300FFFF0200FFFF01000300FFFFF9FFFEFF040003000100030005000200FCFF0100FFFF0100FBFF0000FCFF03000100FEFFFBFF020004000200FEFF0200FEFFFFFFFEFF0100FCFFFFFF0300FFFF0200FFFF02000200FFFFFDFF000002000200FBFFFCFF0100FEFFFDFFFEFFFDFFFFFF0200FFFF0000020004000200FFFF03000200FFFF05000100FDFF030000000400FCFFFDFFFEFFFFFF01000200FEFF0000040003000100FEFF0200FDFF0000FEFF03000300FAFFFFFFFCFFFFFF00000000FCFFFFFF02000000050001000300FCFFF8FFFFFF0000FCFF0300FEFFFDFF010000000300010002000100FBFFFEFF06000200FBFF0100FEFF0200FFFF0200FCFF040003000100FEFF00000100FDFF0300FEFF0000FFFFFEFF060004000000FEFFFCFFFEFF0100FEFF0300FCFF03000200FDFF0100FAFF0200FDFFFEFF0400FEFFFFFF01000400070002000100FFFF0200FFFF0000FFFF0100FFFF00000800FDFF0300FCFFFEFF050005000100FFFF0000FCFF0300FEFF0200FBFFFEFFFDFFFFFF0200FCFFFDFF00000100FDFFFEFFFEFF0300FDFFFBFFFFFF06000100FCFFFBFF00000200FBFF0100FEFF0200FFFFFFFF0200FDFFFEFFFEFFFAFF05000000020002000300FBFF01000300030000000200FEFFFFFF080000000000FFFF000001000300FCFF01000300FDFF02000100FEFF0100FEFFFCFFFDFF0100FCFF02000100FFFFF9FF03000300FBFF03000500FBFF0000FFFFFEFF0200FDFFFDFFFEFFFFFFFFFFFDFF010002000200FFFF0000FEFFFFFF030000000100FEFF0300FFFFFAFF00000000FDFF0100FDFF0100030000000100FFFF0000000000000400FBFFFFFFFFFFFDFF02000200FDFFFEFF0100000002000000FBFF02000400FEFF0100010003000500030003000000FEFF00000000FBFFFEFF020001000200FFFFFFFFFFFF000004000000FFFF0000FFFF0300FFFF0200020000000200FFFF0100020001000100FDFF0300FDFF0400FCFFFEFF0000FCFFFDFF0300FEFF02000100FAFF0000FEFFFFFFF9FF0000FFFF040000000000000001000200020003000200FFFFFAFFFFFF0300FFFFFEFF0100FEFFFEFF0000FEFFFEFFFFFF010002000100000005000000FFFF0400020004000400FFFFFDFF04000100FDFF0200FEFF0300FEFF0100FFFF030002000300FAFF00000100FFFF0500FBFF03000100FFFFFFFF0100FEFF0000FDFFFDFF0300FFFF0000FEFF0000FBFFFDFF00000000FEFF0100FFFF0200010000000300FBFF0200FEFFFDFFFEFFFCFFFFFF0400FDFFFEFFFDFF06000100FCFF0300010001000400020002000100FFFF0000FEFF01000500FFFF030002000300FAFF04000200FEFFFFFF04000100000000000100FCFF0400FDFFF9FFFEFFFFFFFDFF0300FFFF00000100FAFF00000100010000000200FEFF0100FEFF010001000500FAFFFEFF0100FCFF0500FDFFFBFFFEFFF8FFFEFF04000600FDFF010002000200000000000000 -ct = F1B3C8E31DADB8F28F371151D691A13F8828B59C458004A7ECE45B348031E75417F1E5C67EDEF9158B1A4D0E57E391A2D3F7520A26EFE144798DF4047B74D10021084F3B463CEE87F02B567425CF902C48989EFA2EDF24ADCFB8BF9E32853A783A7216C2AC038A83E82DA7F07BD836E8C7CAA229CC397B609029DCC437DED397151E24127BE19576BAC2AFEE37E68E8E6DE6CE63D27BBD9754D4C8E44CC971A1A2996117D1F0B549C87D7DC8EF0BA83E659B570D3D7FB0C6BA67AD592C45C6017F128446AF413946E2E71ED71A8755D88A5BC1F9FB1DAFBAAD2F2BD04395EFAB7369A20A539A934AD9D7A38DCB090E39DA66B20486D49DA51C699125556D22FA24D6E8623CC1984892E5622AA4321133C3D725C074C5A9CF2D7FCD05DC8B47066CDA715F665A6058088F99D897C24835BDE82A72C80B09F0CBA2E9CDF7BCDCCECE84A2BFD5D31D3FD3C74FD17BAABF29298642315A0AEFC50794C34ECF74BB421C70914289EEF373D3588933C518E79E9AF159ABFAA7752E040E5A1041212051A2C0D4CC522ABF1C5CD11992362A30EB6BC9571749172AF0418DD9F605E4D62A6000A442234BB04AAFD7650757A672A68CF99B05732A84BD9FBF779C857217E4119716687A58611613F13A96D2AE110E31AC457C96620AD2DFCE98D5A6E0AA6A83BB5135EB157397D2AF95B09014DB7055ED416B2396D8458AE6A6BF6EC9659CC8976BA8850D8E68E6BF51F72EE02BD061D2A508CD90F1BABF71EA099047292C582274F320A314B292A642128A7BB249819478C34E093F25F73C790E3DF7F4171C70BD921FDFE8E44A3B5AEC1337EC6C4076BB57DA63619BEFE1B800F8D62A6C911D27976092857B0335ADAB7EBF8A848E51E3C8FED120889109072B22E7D98B2AA9F781D5065467FB41B008CC500473F13B6CDEA3C84E74B421BE6F3DF270E6FB7AE78E81D5953A8E8B9C7E176E64DFE0E7A4B4E47DC6A1733AD9198AA0C6754673423EEEAAF176B079D28228D9A68663A402ADFD858FF4764FB75FBCC07476319BD638C08236C5E72F5B79D2AC6D585118A5F5E2C314391E2741BF51DBFDC25816E41F0D172AF6ED2E868D4B283D78E87B1265B04EC694DC359974D9E204035DA74E7BAB9F4FB2F7C4E06A76606DFC54F8E9B864B72829501C4EDCB1CC2F7121ECB347AB4E489A98BAA5DEFB871ADC41BBE34A49D3A4E7DB4B2BC66EBD75A99FDB6CDC131887AC1881A6BE7C8FBE9ACBAAF30D299B2B53CDFE3D6094C2F05C7C532D2A58E406484ACEB001F7513CC0B5614A39FCA1002E92C76544D5D610B02B2DE3D589FA60BC0A3C21D3FD44CEA338061DA27576029E45684EF147F2D471DBA763D6EB91759A5FFD61BC28315AC1F912443B814AC01AB0FA3F5AB34FFEF1EC4716BD5E13BC00E685E0BF36FE1A4CC1432ABCAEFAEDC51516CD59E3348245135FB9BF64B7F9E7E42A2131C7CE36FCF8828B4DDEB9DC0521BE0FD456A8DE77D37FAA39CEA79468410875CEB4BE3AA9CAFD13B7427F83BAAA0C8C7EDB08AFC2FD70A5E63094CC03E2304A5D01CE44A1706083DCFA27E7AF9A4A60F40C02E61B78BDEFA161EF39D9213D2908F0EDABF260E31F26A3D0A3B3D55689B5DDC2F8E69CCA9A1243064190D3591816CBE410360017479164D8B92FA5F3276FA7F21697F3ED9B5CFF685CB0B89DCAE0AF9F538E03EDD8C8B46EF79C7367C838D563E5324C85D6C5FF21E8AD440C14CE05418328C391673D2564767090498AEDDD9DFED59E952470319AC7D789CF1C92B6554FD65168A0284733AA798192153293D59FCCFD619B31A2D8C83826D078ACA9233AFB42E22E4490676F8B7EFF92D8BDFFEC2113820A1DEACF86366F228DEB326F78F820EA279A3CC95AA0126CEA932F7FD732EB42FB9641982F09D1FBBC5C9A74A4CAD4B68B3627E9616DA1BC5CA25755749D72902E0F8E6629758EAAEC85A090540568B5B1794E87E62BE57D49BBC85DE24CA6E8651E24FA5AE2F831813B4037069A4BC4F4110EB8368EF269A376D5B07D85F6D51A8722434185C77949EF548F3486856894A4025F923AA945ED48D219223C53AB7E8AB9D9E8F771BA0EE3825DDC301D3E5CB689EC805E11D999CBD5D164924D1B91994E27CD7DC684C09C57A0F391F9CEF593C877780E74C103293EA1F9E03201577C6D80F53C98550F66F55B2869254BFADC3DA45A39BBB91C5A037870DBE8EC6B24D721A0149358EFDC43A47DAF7801B86421CEEA9E40B85CC8A41360AE646E546409286B50AA7DAC83827598E1905A20C7336DF5B5C4246BD78B15F1E4B99B09748E9F4030ADF26C28880D62F6AB14A5F2A018B03BD1EA896506EDE4F30615BBFF8E5D7EE729128D78630A38F41D678343096871E001584DDD7967C54228B874EE9609D378B30D7AD33FBE08A076A9A51D8628FACB830A1E04618122E31AD0DA0DA71F66CCFEAED7C7B7DAC147C6A2E24C2F4CC12E6F6578A2596A884144A8976E8E98C66AAD4AB8987D625E16BA150DAD256D646FC2A422046CA63D6CCDB83CE8EFB53FE9DA5A6D390758C7F4481BF840E0ABE9523D8D61C9E7DB31A1FAB2897203F1D318E109198207D6CF2B2B7AE78B1C2C14D03BE45B07AF760FBCAB16425AD411047A064584B15B4C8FEC6F1DCDB419FC73B8F4076EC1A2C915DC6ADF7B31B944C02BD2ABB8765A4D7B355A48064849B36D0AA12893D1245A7C6DC5FC58D984F3AA6361B5E750EBA38A4355AD98E06C5B494CA3EE9376098113E1D9D668D9AC4828A6E9CBEFC3FF227BFFD34243B9136229624C347CBAD2F51E8B6CEA340027C4B9033963DC7AB94F5C65199C70AA7D68AD2C290CB86A1D8242025ABF3A07B2A4FA56C9C2501758E775C13B166273A191F1CBE6CC6288D0911F22EB691E143FFF81B60BF430D5A48A37580B560D143B7C3BB9071CEED5EA9ACF74AB8059F406B695ED536E9E96F3DB32D5F7AB9725F9C2E21BCAC23192E1DAC8ED7D124283D348062CF8268A977BEC5A92502A355080FB0D1E2C23ACC4F859B73FA6675407B4A16BF791B2EEC33BCB645E01CAB1C82CDAEA2904F06DC66A4758920CD21DC8D7DC2FF46D6CEC1F908BA2186EFBE45915358CCB01BD9E3849CBA039B2DB1F1FE639533EAEC9F35C2E71ECE0710801D01109893FC0E4D2C0F905EF5A4E2EA553660E4E3CC9A61481CFAE33E66459CB364EA2E8731DD2DB61A2F406E618FF587FCC35E638F2C2BF1264729DC41D2C6C9616497E0BF0A6DE45944091303BF57C8D61EAFFEAA3AB11D7B38196AA55DBD9BA67E674F635EC27912D9819BF12A9079AEAA18963C643450DD3C542205D0F7AA6A1E54C00FDE2EB912893ED5F65E9A2220D25D360E163D8E9F3308999123D44F9E60CA1E1029B0CE8E27B53A44DF14C89815FF7259613819825F5D3CB13DE91FF92F6A061D66EB2C67BF2FE320B1EBD0DEF97A30A24D6ABA317D435D3DEC0E2E94AD0EB436E8DFA80B57F44DF8441FFD1D68DB6DDD0A8D2DD0BF7AC52F1EAC80AEAC7C011C9D6EDB84895488930A61AD60A65070E146C5535CB3EB49DC0D771B1AD5109C579EE5981E078EC980A12D5117FC27324E90E34685F02AAA52FF3C3BB24534432CFD1BB5AA6E47C62465878F44A5F62F34B47C03BC60CC0377B3B880525EFFAB9F4ED2CB6B8E2F5E2D4515F6B758ADCFE6701AA0879AA8DD29976C80C8F79B7ED3CDFCCE27316D60AE727A2645AB055EB760DD3ACECEEF4CD8DE584EF9AD86518346B53633C41904D5D5293E522AAEF8E2AB6FCCB2CB5D6B56451896AFA7C9FFA0001B6C5B8556E75BFD7B9B668B5E509800519534FEA7FE28E8A5F9C125E455BC5E9277F58981D20B2C1381BBDC302631BA24A59EAF8F5C99799DF09AF2802C5266AE2795389275BFBA3729E4798E0146A709A0F09F99C795C763CEFAD8AA330ACDA9CEDDA7E159AA5D28BE85F02A972F8257EE3756CFA1D9497FE33615F03749C9E063B0CEDAFC085A8002C3368E5D41BEB9ECAFE4A27433C0409C222F3BA2B5B379BA08EB91E1251215CE66D253AE143ACA4CD9232DE011EA93805E1A8DEF1AA39A0EC71C486E986E853EC31AC63C634BC89149F95F0759A30A986B12D2E9BA087DF29DEBA9DEC59161900660B4FBCA0584AFCD570D7C851D7A986D903C13A9990722899C54BC74732482C591171F096CB1184F45A5E74F6E48EDF54D8398BC88EDF2582F5F5182C4B659A6A7BD8EF27C96D4A6AFE063AD3AEC0D7C67294E6CF1E523661CED407152D665347152EB8EA7389A2AECA45DA9FA14E64068A70C1B7F48DA17C28957FB4A3BE151456161B4C5C4DF7F409E6F52E53B6AED56088803A982708DFA38288C044EB01DBA35B372A892A8699F826FA60069A2D9493FBBE3FCE17B0384A85D6450C26A72AE53E11BD2A50F4372BAF35328BF766C24EE063EBC2857EB4019B88E5C6BF8EDC597FBB1518BC2C9F91846656D88E21BA722AC382F876A45D0DF488ED3541E73531FC6CA6AE7BA3E6DC7CA47C0A6538961F1846CA8572B8AABE54B479BCA2B1469CEB0F13BF211ADFCDEFDC121FBB394C99FB554F97F46BAE459559037B2BDFD0B577E7CBC8FABEB619F219B299420385B387E140E581462BC65411FA9E96F5FDDBCEBA7D386B43011480ED5EDC70410FE0B7B73E79287058E20B4D29F00F99E8D965264864ABE99A98D928A911DC6AA6D11DB1E9B0BACE41BEE7FD83B0E978BF5B8C425ED510F44A5D8D69ACDF0EAC79BBDB30C9BB304BCB358D6E1905DE2DA95226316146661CC17627964A020915E7A1323E95D7596D141C4A5089319D26D76A705BFB95B05BC588152BAD2221CD428DE061545D30F1E156ED1C84959EE45C2B2086E3E91FCC53244FE8672EA578DA5EAE147DC5D2F8E4FA5A239E9C058D58178FA08F8E1B478407944F5AAB80266D684DE5A8ABB11178FAE551620921610889D017A8860930275B02A34EC309FCB732E2AAC4503041E427811580B973613C5CD9240D648CCBF0A95146967A89AE12DB3A30A664B93DD5AE2037A82B12761CC59683867267AB40A8FFDB76DF429DF35AC440B9649E341DA474F8F7191E729FCDFD391AE99B63E062BA2171E660595A869E5601E48591069DBE6ADCE951C06E6C89D02BEC7678A6362CDB29A2A0CF24B48757A2C687BC27677E7EDC9E2537EE6FCEEB3C3BE5C28CE631F72200947F185C9F73C620B5FF6B5B9ADDACB58AC5F324A787CA0CCA231B7A70EB6447A42F01BBF5346CF69EC04A3D34BF6BE6EAAD7ACF6852AA2F3291ACDE7B1CE89F128F736B9FF0502B95A010C7510361FD3E1B1208D41605402C9C10677855CF50FD19020812CAEDBA1B609512153B840A15C6CAC987BC6A63C5C4A03E54D713076EEA6D788362E30A77EA49579897C5156DC2BB3B474715EC1E829961FAC9FEF285BA63A4D4E45367B6AC8B8B054D19F659BD0A463B48129CCD9CC3611674D29428D50DC2626212E4ED343915E4D3D4E5B9566D4A5F9AEE8DA50B62E22E5BA70D3BFC08B8BB8964B04FA90D0FC62B1560E9C7F82FFE1F95292C66A39EA2867531608DC2E182D011BB9652302DAD6ED5F6D25251DDD95D2065F5C62105FDC943C810B187C7E76DC597389A5E8DA34C375D3C59E17B434A1A9000313A9A673B0B9E34A152137EA64F446CA2871B6D954F7DD49268D87497A691B1B7E9B3056815E57A7579F16DDE27E26C83F574EFB72C12F09C1541A1498C55C6EBC05CB26371356BC15C31B39754E37515A4F57B5DBA58BAA2F079F15563A410057F7DFE90D982E61A440531C5B3C8D556B1BE6D098C1DEDD3E96606D1F2CFF60386A058D6C0B7C0D4D44265855ED52EB593A02D7F7934DC0F8C3FCB20849C9677AA04D59E433303164F41F1B6CF7D1771B7BF49F916E56C10F86CBF93A4BDAD9A5639B2132259C0987E7BDAD245625ABD3E7FC6E6FEC00199446BFADA4C7E26F796F83624012FDB5D291D7EDF5063FA6B41612057E2E481E7FD483CE72BA64256904CEDFDA668580EA47F2E44F6F8271388BBBB9FE9692C5DDAEA7CFAF852CC9A97F5E958050B7D87F31F206988CA8BC3CE271928437FB2B7A184AED69763D6CF3A434050B646BFC8F7944CD70583C8179C389BD10D8357684ECFBE9BBC22BDE90C65E3582FFAE590C355D9CC15A61048B4D3F0C3B634AF8F8BA6A9C5A163494C0B882E88E50D330FA6FCF88ADAEB9B7648A874AD17479571AC34B2CB4B51613EE7695FE01E26CE5FC6CCC00F1296B7350E317D81A9BEED47CFD84353E6682335C8F29D7D7397B8EC90E7B41DBE6C52FAAF65D2AA279410AEDA63EE0C5E36FB4EA96E746ABBEDA269A602F2F61EA148E67E1077B22BC250C13DE4E8D590C0E22EC0F448246021EFBFFFED982F175F7DF313FD9F18233B92AA90233F5AF3B053A5699BB4FCC41E2C8169372F8909F9F6A132A32121F0B4831154438F846F3EE4703EFCA195D83F8F6AA6FAC9D28C52F1E7DBB2F8E5C6D81C9BF16EFE812C6F420D0959FEEF7BDECF6AFC2A96531954887FAC9952E5E65F3B893EF3A552C313B8F2106DDCE5C873239F62353B28AEB74ECE58E36A333E7D001D84196805C69290386CF881AFB2FF37E749137C20BE28420A5B6CEAF6F0369B126EFD5A0F15E48FD5D81F95A65A14D593030C987FC030C64CAAF4973D9FDDF14B41FC7A7049C974250C7D9C8069704A0C0A529A23E45B1A61583BF33284757AAC96873D76CC53FB41CB960122CC38756845292676BE435316B3B5F74F166F2E91D49BB9F22FB0CBD573C67ACA28F2323AB199AD0FC20589BD939D47B710AF8C23195BE660D6E1187213BE961AFD937EF96CBF79496097935F49A1E8BCD6D0C6E2139FC41B4F9CFE0BCCB2CBC79535B882658C02ECCF5A6E603C520FFEC2083512262AF989995A962E60CF4B05CEC5006B55E23EACD5272B6640FF0D6873D7BD608902519D86067E695745478D0B9217E9E2BF70500417F7E6008D79B661A33DFCC678D7AF44F7EBDF9AD230032CF8F2F4B7AA90704686A83C7500EADC0199EE668732AEA2383AC741477510AFF09B1B1B656550776975422D3E76AF8FCB5D3C5151123A9A6F9A3838DF9936E3B822FE108CA6D1F1223665801235381CF90CB812D7577D16E0D90E5BA23D98B0445E8149F544222B0728F08927DEB05FBFE598E3C4B76C6B70F53F18E420C04E2F20EBE554AE4AB0A3BE2DA7EE7107E5D04723275B20AA3B73F3394B885846012356CCA761199F51DF10FBE34737B450F20DA2C19E42A5A3EB6185F9D3860FA2F084F5E0C6B62D6AB20206D9DB51FC91DE12858EE67EF5A40E1DAADA06AA536CF3394E374F9E3054CE056A1572A2030D4CAAA606DFAEBF47CF3ACE2E6D801DDC24973785241D928D634815CF7279B5370F432812910546A1B3052079B6736AADA57056BBB790BAC47AEF3F83510EEE68B47F7FF116B863C6E58ECE883C3AE0EAFBABF91512E65F9A3C5F1E3231C797D801E88B9582F433C397E2E338C24474BAC17403B88A96402B0BEC4DCC805C32C959A016B9EE72C38104050F28083C4931052026C2238E009546986D53FDCD9BD8CAE040FD0D0DEECF561FC99D17A674AF239CEABAED625DA45986CD25F129F6B911AD149257655523CC92C608435B058B33DD8E894885D842E8775B6575B1F8A05A5ECBC4439875584997A4D2B498CF9F549A597EE228745275BE4FA1573C19553AF49602B15C657F64CFBA8A98A6920076D5D82BADF2D5218BC49127EFEEE220F0486616E725224B87229EBB609DD2B7294B704FDCA9216D7A8AB77682FFB163CD3D262F93EC3DAC8EC0F90273E1DF4493D23CE4F0719CD4697D796C5B81CDF3B3D001B63B00FD15B0378F00084389E6311D142A2DC29CBC1109A9A178C34022D6A9ABA4B72BB6184423CA7C42D6121FF320CD768A3CC365CC5A4506FB99D02BAF0BB5C59A54DC8349A717047C8F8722EC4DA6705E5538F161E4DB2150701A187B0A5AA90388B3747C0FCFB638621DEF7B9D7793CE72E3F56BB194F1B8EFAE1D3C7EFCFB1C1A3B65D1C5CF72FE4CBC04FCCA1279A13675EC17F8B713F675341618C7D5D28804EEEBFF986021359F8CB8D8442664A6FFEDE6B28BB2EB78CD1BE80B04EC1289271B7E343EA2E2187B1551B5943C5412CC46EFA60297C2BF0C0F193E6E48D8F6C1C35539ABDA550A59BE56F89C63539FD33C53448E68FC8F54EFFFDF4DD7C6A1387C7A625970DD224FB97699C0BFFB034A668BC184E4A93D19F386C199BBA46F27365BC038CAEFEBE383C2A2756F4F61F0224F7D198C7804C0C4434C8E87F4D4DAA4E74139FBABC5F6B0A5C901783F91B4EEE0843AF32016CF08DB93DF0EFB4AA7606931D4258E31C0FD4D6329F80635461C3A2B40441D64EA0057EE878214B75145C8107557D06BD499CB028103C743B97B6E49174A44FF89757FEC9B744469DE08C3D624D2682A9C0115C021AC320DEB865F3046C64CE8774409AFA62B75F7E10546561D2488CF29AB24F26C7A77CC7FF7E729A74FD05DD26DB26E9E14DA5BA988AC43B1359D23655C8E3511EF4DA2C62125BCD0C4431B8D23DF433758E8171FA7A9E371B599C9A9434A516B9669007D1CC4A113FDB6D224C3F6A1D453643D55E1B754D23C2B75EBF6281B38D04860219D653659F0304BB602D9E0DA59F75FC4FCDDC1BB98F60AB4CD81F0D90599671D49A19E1593181305151477987F6D3F0F816AEE1C260EA7F32AFD883ECEEE55998EA15DB4D1A7EA1BDFA9B5854E23F09BC6A721DDB952D1ED7D513651AA123C6623BB5232EC46065684AC719EFC57C841C818E6A6F216750A4295DFD211E72520C250784D11A0DC426E1CC65D8483593184F28AF7014EBFA6383E0137FF21617CE4BC710475869527BA794AFAFEB69C3D84D26070F26F8D7074F36C2D4D34A032E630C00081DC31D148400D4D7A2F7EDCC3F2F4F953ABEB0B862ECE2D62330363481ECE83E7701FD71DC64DCD4A7AF07DFC30A502DE6149E733CB935D54145A09EB734D7737D2DD7987E758DBB08777E3A339490A4DC01584EDADE6FA329E22494053E798EE313D6DE47E85DAB83FC3C6724D35937C6AEC21E3CB0BE666524C15B0296A2A4D22C160289F69D8B2E3F93619F8F5F3D70670C14D756D8F574D1917EBAECA53AB04D3EE5099F98A9C6D95C7F5D0A0C226E6F6BC23B31FE7B4220505EA97CDA62674891B6B2F50EA0C3DF21EEBE06EDD4222EEBD02CB2849CB4A24D03B6D438C5EC0749EB9091F5D4D9DA56414D4A5672C5EAE0C57E19121A624F07C1C6947A5388D4E2C59613F11E122EE297DE497B8A506EA6DE1E200E18191C84956DE1EE4720510E6D12298CD6ABF85E0424AF6419BC65F8C43800F43A380C0F2FFFF54B753CA2B7A574827F356C42385415E7AA722826EBD7E6F92F4DCE6609F97DB5FCB83C09EAE971A674A444F87F19310DA15AD78536239FA562B1069E3B3B5DA62494BA66352B8C091C42FE2AA5BE4361E0482FBBBF9CDD5BB90ECB457C5286BA79A192BD92C699685FB330BE4CB6A9ED7D88896141C22F179472D036E049ED6428E8FBF720C08AA7B537F167A9CE27EF12F6624886EB001EB0133423C443AFF9693F876869B3529B161FCAB9EE7B83567C54AA1C7216FEAEF4CB9F0113DE0BCD16E00F83CF51E8056D2902FA3DB1F3922E2DF2790FDFB5B2460BF9E13A0EE090B8B2CDF20F73D0F33154771B18E4D75EB854A7558898B7FB2C50F783E90FACBAA1EA81E86FE1B83A022B650472291EEEFC1202C703739FD71DBCA2E6C772F9BA51EFB679C3FEB4D3EF24AF66CA361EB517C1B548BD95B8CDF4A6B5269517E02F4899F4EE14BE355B3BC79EF823399C48294F1B777F812BBC816CA4FEED3933A6D695F7DE347558D2A99BB95873BAF3DECD13F68D8645F45A98C4D16A8ADC71EB77467FC84092E5221D54051C103587480C9222D8C709A55F0EE2ED0AEC9C642EBA8670CA9F5D390AEB55A825ED59EC8B991E8E6FB8A1EA6D34203F501C7F3F9EB5906D1635EC7ACF630AEE817F2B1113794CE83C7068053449A5E49F2FF1A93F701881F0BCE08BFFD1EBFE9BB3A6ECE9571353D3B6DF93ADAD7809289C7B4D78E683CE9CD20CE51FBB9EE48BCFAF5962F30AE1C7EF2602E4C7FA5E21134B6C2B5FC5EC7A2827F8A4BD509537E78357D4487CD3AAD11A72052820CDDBD0FF248E61DF67DF4865800C3F0EB9211A67B671B308B447016D2BB6604F2D81CB6756792545207DDD9184A4C890185C83DA3DA8BDCB284665DA3DF6B2553931F48549A8C539254FE99BFBFB65E725E5E5DED65507C44EDB53474E0851C4E90374EF4D68611A627A56BC9518DBFB78D9E26C543B0B6D99A842990D99E100FF0D537EEB775BE102BFE55AB009B3DF558E46F870A91CDAF896473623795B6FDA9476ED13257F5E932E38D746DFD610B64600486038E78752A60EC0F07F08E108871FE9832CD7E75A0C37896B14C4BD06C9CDF026A1C8124E75DA2ECC39F2956B8BA03AF135B580F3BE1DBD92044601C44B6187CF8B78D9A4B6F4F22FB3627783D5C2E500B7709BD7D27AB93550B35473D6C33348CC9D98EC531D385BD568F3CED973EE4A686394F012328BEE1C5CECDFE5A1EC88533512D5BFB9D09A0F40086E95E6364691E82C76BAAFC74A6A9FADECC87284F5BF222E8D5FB60540ECF6DB16F5AA89E014BE9B6D27BA7D0D66EB577F06DBC03685F06608CA255CF268F28BF665CB0A35C177CF4DC6C87A6B1F889A85092B981E4ABDCAFFD4C3C05532D7F20E68D76CB49764462DAF56E19EDEAB74646B0E8328ADC68951243C7B1C473FC0315122936E0715E9AAD4D1E5C31BE0824AEC75855D89563D5BB491752C0B915BB666DE7FDAC170E97C61DAF34E9253DCE1B8756B24A813DC127BC1E256D4154F19C73027E665CB1669483340BC42CF343D3EE6A2D997178BB86C147780D917B4B4EC2FC24F0095F80422D19C3831C3BA544EFB47EAE7211BC8B62DB068BF1E7CC5121BA3C50355B7DDE45147FC6361249FC17740A9E0813FF81A3F1A6428EFD9D382C43B344FA6D7620CFF241E7A9B4DFAEC769B87F82E5A1C426BA2221C11F4430AABCB3074BB2B4AE6A30D1F9700FF204B497247CBE515469EFE580190B571DFDBC9BF886B1D7BD2CD61DE1282947EA1CF074A8FA3AFCF459DF1D21156FA1278DBB0932C4C29ECA906DA8B4E598808A09AF3C45F5FD429503BECE5DA512DAB177F0C35F819EB91F32892EC89243D413DC202B15AD75661246EC59934F34608A3958CCCC0911A46EDD924CBC70308BEB56EC0FA815D4A0AF7D6811C17DEEFA02707C79E04BF2E6EFAFED4B0ABF1B2BD12DBB14B2FBBDBAC6FF5C50D3352E81C9190B883A54D7A427B6847211BA15609E64E0845DFD4CBFBCACEEB3A4F4AAA07635DFF10A46F4D1C5F48F7E47FE86C1E31C54531698EFA01EBDB91C755D2CAC7F924E6C2DCD09170AC699BDD259FAB8E065AF9AAFADA76D9A9B4F5F2FDA8807D847CA732008BE111A104EB6D4E5EFB22AE9B5E4DC5C34E71224CF6AC5C2907527649DBCD99D33D8C3A5044ADD78C9D551EB525ADBCAAAC42C417F19DB40CB4E18C02CC408412F777830BB66D01FD6EFEDBC644876A453CD295A2597B0B5AFDCDE613448864F9330496373056480C59A1D32FFA9F9F2BD76486F50947EDDB168650AFA8B54996B7A4DD8A519E182584C21FD6F0E1CAE9EC13FAA88EF69E8DDEB7DE623E06DCBCC63326EACD65EC0600641ECCE0C4F2C48F95A9272BBB035D1243DAF98825038D3572E155AEF67CBCAF075B0B3347C49000E7BE73837B411C465C95CAD89230A09E29C0CCC96D82EF58B2B60413C2FCF79BC28FA775B522B4100386F0D5C5DD59529761DE49DA26881365A8259695B880B6F919A93B3FE867EA017801BEBCBF90194FDF52F57E15DD5B20CC906A443DA43A7827786F6610BBEF985F10DA30BB589F86508F8E040903B250C9112212818A6E6EB83D8421CE1373E5AA6E9531A2D1CA32058C5F93F16B1105D7E10231CEDDD4F62166653350CA03D0D55E98B16DFAABDD951E57623EB4B6BBEA192A059D404F29BAF4C5D1C5BD99788B459A20027BB4FAF1AB6854FB4888613E625273B4367D4D0FB0FC8A9A4719443295A54393810DE9179A7446FBFBDFA3D9FDDDA5E9A2A43B0754E0BB5E3B5355CA13F05F79B5F1A1FAF313014260B022C2C9B8A6A6404113F19147ADE2517910018D206017730CDD9654F8AF5FCEE6F195F3F1310B632A295E43AEFC667A10C5B0EFAA3E00C14D49E0ED5D56BC49261E334B35EE23E0E2BD940B0B7292CC6D34003662F87AD2E08A9C57C8D1B0192EFC86A2CD582BDA55BC08B9124238B27B54D745F48EAB535CE88295C810049E730A92A6D1F359B811F7A587D1A5289AF1DC2190E3E8B7BA88B78B8DADC50FF0F4ADE0BE73FEFBE05C2FCC2F3E0B23D06A5360CE1DF8318F24177BDF2FF5BF4287DEF4CAC00C8544CF647A417064C9AB87D80538B9EF04A878E8292B7874367AFCB5065D4AC90EFC55A595A562D2B32F72031D3C8C6A6E34E473E16F031E99AE4594B50EAFF826FA5DC2BE502FC63117ED0240805A953C9B4EA79D7561457F12559187AE687CF4C96674D80DBBBF2A80D2F22E98FB6D5B4D34E3F5BC69458925AF0C23160500EF073F2D795552749BF3EFB82D02F46A7174FF36C8A3AF67CD691367265D73583F29D80500A0859CAD979DF3BA697A7F100C7391AFADDE750F292648D016A3D053AD9D18332B9A70976E91284271FCDF1F38909DE9A0F6B18F35A0ED3037202C84FE434085D70759272BD697D82C57C9AAAA1A1EBB9D0E5421B08B3AA00536FA0E15E7C9290E03331123A6043460023797A1576551BED20CD098BD7420587F47D9414C31A5C567143420374D2520F5AF5F9FB2D506967F3248C4D60471AA02D59AA3E629540E495C9709EE81BCCBF6A5611A6743823FD56B21A2C4530EEB6C42876E494E6B786732A8F88B9510675F6979648698110DBD9BBFF2B2C38BC7CE8EAB668A2389A5C128D0185701E266C95C02F9566D2A79F60F0A482F2B7DEF006F69F785387AA4C2FE9A0D5368D8E4292ABFB274960E704B9FDFA8EAA2B6D2242CA15CD09272838597450C72ED5A28F8EC1F42F07621D02E9BF8DBA9AA4C9D3D29F17DE3CDA3D3767854C941977B1C4AABB39ACA4A8BCAF9FE54EAE4AE8E4543BCCB0590CD67924D544B8F35A9C8F490F5C4881E39893139E29600C93FCA1AD7C434779E8AE44830C9129FE8ABC21AF2E2A6888D803B4ACE36FCBEDC44F0A986B45675D3E7EE50E25F69C4F9BC6E996F36B5A88CA8ABB41E8285059AE126AAB84D2FF6CF55A7B4C1DFD80FE5C36BC1D6B41252B46832CC80D6FF15DF2826E5D1F1B205FF979C102EE231AE44F4323F172A3A4C7F58D79964F3C42E8BC012DA13B2FA8400233AEB9A607567DF885CDE756EF348A688A929E7A170C909454671E1333F4196BE4EBA66E88E9AD3171F1BC94B8BE1D05100820567471A1698BC476D06262AB6084E8D6DFF6A907903086F181FDC38C5EF8E45FE20FEB89D23581B026B4888B5034DDAF01EFBD552F2BB38142402027DC7C0216020B8B2A218DFEEF5778DD434AD19D1527B29099F32908D5BD1D98AE34D29A9FF0E9BAA3216BE1F52A039BFAECA7A305BD56914526DBE6812F2CF6FCE2EE48C8DBA363EC893BEE75D8499B5255CC01F76A3EF89FB92D1982616417E93900CED6F2CC253B0FFBD9DC3016CB077B60F879017C1E9C3DA6538D609BC3B17CC6479E95758FDC2DE6DCF665C586 -ss = 8525F11768ED424EA9B78A663CDC9B4A diff --git a/src/kem/frodokem/FrodoKEM-976-AES.kat b/src/kem/frodokem/FrodoKEM-976-AES.kat index 8b5e7ca7b..cb1e2259f 100644 --- a/src/kem/frodokem/FrodoKEM-976-AES.kat +++ b/src/kem/frodokem/FrodoKEM-976-AES.kat @@ -1,6 +1,6 @@ count = 0 seed = 061550234D158C5EC95595FE04EF7A25767F2E24CC2BC479D09D86DC9ABCFDE7056A8C266F9EF97ED08541DBD2E1FFA1 -pk = D53620C4A4F6678545FD043E7670A6876B9B6648FD9361B952183C959F2B342A84D0D5606BAB7DB22F76BE9256B0F28EAFC0CBE9DD854F884B7F4D1C388969BF8043F418EBA9FBAA774B13AD842A422E543752E2FAEEA13E587FDA80708203E4FCA5F6B55E3C9FD51F64EDCB642FF2265F081984EBA284C20DE4538E6BF0CACC32C177CF03418D04B98884FEB00E115772975EDB99E835C220BEFC143B992941BA8FF12F2A7DDE689EFD2CC1BA0F5263F966AAB7F988EEAA5CD2F6B2EF3082E5EF34A7BE701759F4AEF15D9B74563CC2BA909F1E7B9C9C10F44D9BBAB6EEC26A6D1DAFF802885F9DB7CA3B6E342573287FFB7A92EECF28FE344543EFB629C99E100EEF8BC6C0226608E037F8A49BF7B5B3C2B10D268A3109048D1DA0F060CF43AFF85DC52A8D61DE75EB26DB21BA1BE48E033B1323289F4CBD8420A8C86D6D3AE448B05E81660726A3158956AF2B03BF73A046BF3526CEF9C109350372C609EB4725E351678465F2BA58D94E127ECC1117D212FD08AC8451ACF2D4FE2638D4A345285F9A106A57FA31C7A073229D295084C37064971B06A0739D445DD0BC4E7E48D7DDBE875DF710E3C975F848360167E6B22BF7A94015DB521A1C0DF24FCCF37E538E95569FF44E4AD3F95089D586EBA5A9BFDA9486EE1B2F1FE1B2E82067AAC06C2C8D552C38AAE267A695F90AA4B5C75259F97D68EB519C66800A334A839F79F0AFD4F1C4B1202A61A522E45DCC24C7A782C92B35978E8D60515C761E575FFD727C01D711A15B654FAFBBDA17C3BDCF125AD24B970A913192C994382DA62DA581E3156B2CDE78F452C44CFF85EBB05AE5F5728F2A1EE6A09850B06D6265C3E5FBF765CEAA79B413D6229B45BBBC1A045C285ACE76E9D09D7B6E089F58D0C73C3340EE667E2610923BA4F84A2A2940259058E559B6536EB36E19227DF01DAC8E55393669676B77D76F17219EC9A1748E7A34FF12191B9B206F72D408AB46A5B898DF508BA2202592B18A06FE5097C7B0AE9DDED2CE43DF65DD765B86FF0393829F8EA1BF5A8CBB83A3FB75981BBEEDCB7F74C7FBBAD017E5A5030CEBE4BBF6B2E4B35A716EF736228ABE55D02BA347B486568298BE07DAD8B05D2E7B6E2FE93738876896110DFA7017855A92BD77E8CE0FDF5B094CBE32190A2776683B326D287B521F44663A921C141FC2966C4B202C5E54C530A47628169E32B7E351945F7F392C845B5D69424C663BC285E771AFDBCFB465E4C3A5B7156A07483236B6BA5A00FADABB52D7763D41D03EE6D4651CBA67533EEED6FDF1F7C503CC035C7D35B2E193B193BE6AB775EF999558F5AFFC0ACE08DC860B9412F940259B0A5A6C60028E5E1BFA896EE49325BE69CBD9925AA95C2F0BD9DEDA6EA71C45E59F38D48812EA974C26881739C81610EC18C59D964CB670286B33C8D2BC5347BDAD524023D7766EC728A5DBD6D8453D7C2A3315DD112FDD5B9ED9AA9F22DB9EB2BECCC42A8142A7213F5C421788A8E4C67B9E165B6D33FD222A7E60DA09F6868748AC98F84957007EB3F1787206EB9596F2226AA997238E3AEEFD9EB07B7524AB3EF57BFFE44146649AC79C57004CDF3A1DF48C8FAB471382FBF9C43DE808E9F0DAB0EA36B7301505881BB3152CB57F17EAC920CCB384EAD291A09E7FC7D923C8F6ECBAC3D4B1735A533DC7FE3A06CD73494EB6C2C0B25566873E3A0DDD5520582B26C41E57136559436E8D7A1C61710034308C99B775378D2BBAF0FAA88DA0B91B5A8BEB8707E9E8123113B145C85C9AA8C41DE22970ED0287560A3B94DE667AD478A8251BA81CE8CF66C793D0A3EB56BD25CF4E290403EAF2111D50007AA34619C8383A2274576F42F2981D850217A9ECB702643A1C40B410E345E548AB7EA8A5DE96939D61F2EC2278A58C5E535941755962B12AECB1468C25B20DA474FBE09DF12B39A184AD4C8C6E82DEBE0B0F019D811DB00F95AC6D6B30AD37287B159DD94130E2D73837BFBAFB77F4D0E7E15CD99DB2C00C3C751D1261660B4CA85E6894881A25BD9D56DF6332C382A92A402581F3F8B110E3B990C52710EF678744C0E77ACE0A2CFF6AF0BEE8C234F884F1BF807359AF9DED1BDDF6102E436224C0710C891432BB8FA0D43484BE744347ABE337B52FD98628D97B6561F843A5D6AF9D6F893029495A9F65C0B0FF4030CC0D72497ECA33B1ACE4346713D013A6EC20CD0DBDF3E982416D515074A1A49C78720EAFC6473D28CCB71DA22A4D089080182210F53C530FAF1C6C455703A6F8FFB76AE8D307D1E9FC715A22CC298334F474F06071CB91EDCAD28B07C1F0F68F9AB793CEE7B1654B5E9A1B5AC1AC5BA8E3B67A7D7E7D2C366F4C3FD476DEF591F0DD32FCCB931060F009CDFFDDE5FF2046A1ABD47FBC7D985AB85EA1FD24731D83E2A9860CF12C2DBD8A67DDABD72CF25C5D3DF77C6C66119E2B5B987D556FCB7366B6A1E4B1B1E7147AEF2EE1FDC3A802700C79ADAE5194503C66B1B4E632777E375D3433C06C88404ABD1B51FDE0C68C27FF62700780546138026CDE9EF9EAAAFAD8D79C7CF2D846D1F17F7AB8240C4EDFB68D0F744C0774C050220EE7DB04819FF0BE2A5CB6CCD5C6CF3B22E69549AF6979285BF1B2AE108543708F817371A94A2C299B7BADD1EBFF74C5FDF1DF0C6C067C4D0321E866333DCEA988A9C1641E38F9EF57FCF338972CEA7A6277B179B9DADF5FD60B95E7BE03C4351300C08E7DBF63C7B71AA8FD6464065334932214FD64A9E4B67DA9673460979FD5F3F6CA2E08CE8720061808CF40FA7BD23276A4476096B8AC9EB2718A46344B42179A75D519B8A46EF9A0FFE6CFA3CD975E85709AF4AEDECF066C6AEC33905692B3C2D0910DA8435FC90304A0BA0322C419C96290110F99C01CE064318BADBCAC922AF4466CA7BDB9E8A8BC05107D3F60171EF62F9D83B64504D4FD6FC9D4DDDCE2ABF8A9C22E5C3D1FEE954B0694941687C1B56FD954169CEE41952A5D331446C88AA25481A973AB4563916ED123C0594C165B487A07A81BEEE61ADA1901977AA3FB04F70D0656231367841B4A1B2D8E58E3AF7C04EA8FBD1159D93E86659416F9C2BD679F86DDACF0FD9B41589461B052474270D7A24EAACD7B1D42217BF9BB4ACE24F2F751F81F8813927F40756116D1CB4DABC9F2C46E5373B86792167F8F03C2D5D72B9BD2160A3279CB4459A35075A09428A5BB680582E24BCCEEFDEE56E6EB76770EF75710C4B8022EF141B2762F654E2A10DD2C2B07B0DCD0B22BB844FF040B5481583C731BAAA2FD5D57BA2107C7BDD12D47B58FA91D434C16010B2B3DFCDC1342EED8494B5469CEEA3554B5F75307E90FE9691AD114E272E3ED790E3AC0A74B19645775B982C244A9ACCB1633982AE411F414331B89BD225EF1BBC2276270E2600482CE3DCF40E3320B39B59CEDD8C47C816B90487DD7EA46CE724F9D659D545CBD271B974440971FC2E2B91A9D00E74275A4078D3633E21FC02E34A71EDA5CFF2ED63E41DD0ACD3C72AB4358B9141B3A8CA6447052FC7D9074FDF83B98357F3851FD0880AA69B125F714E56F1AFEDFC86C5F81EFFA58650211D842A5E3AB9C23707CB8243D6114A58A309DEDB88F24DBE215D38C8F5E61FEB7961D07D9D94D43543A6586EF8529BC05F3D9764ED3AD6A1828515EBA77A6F4A8D0E1BFDA6F1DA971964E9239825C5740B033F7F9DE1E096D827CFE4314B064CF627B0A05F823CBB287DECFD284FA5144F7D56B672DE5BCBB6F83AEF3EBC75726F505BE921D9C382352042F924CFDC0C9D47A84134992727F8057A793385BBAF27F25CD1852AD843B0EE1BD6070B73E50498DCC82CB7337F7D45B501F8051CDB4F74A1082216EE8509E3485A9B74D703B66FFEC3ADE5E1FBEC3E8932D3ED9029D396D92A67AAE134553561DBB83AB56783E1CFB48BB69B8F3435D49DC901DB386C3DB4ABD5415644B0D450AF56240831AB74509510A6FA823ED7245CEAF874DCB89980BDA893032E05248B93C8A95962704C76729817E3D637F95A0C2FB31D357A58E62A316FC4B17CF8993D686B89FBF1715423671F6886CBF870E8FFB6D859A3A28D7D0263B2D9067D11E7029BC533E778252AC8ABAEB9BFD196D79E242D24A77E5B61EBD6D30A6D866014C1BC216EE53A0F6B06A63BD496DDB4BFBD5ECBCBA78D9D3D1172F05049E93E0799F86E71A2F7B29E2294205093909B8F09B5CC32843A1AC2519EE3A955B553AE2957BA5030F0CF4EB15FA0945270B331EC312A64B785CA4DD2BA6316ACE038FD657298E39AACB7D65588323FC7B612DC1DBF0B97EDC811D509A9BA9AAEAE3DA087AC21902AF07F019483B0A004DDD53D6BEE250E0F6F2C2B2B508700D41BC9B9224D19EBFDD342B4577A27458EA814563C411153A4C57851767FD4A9470F321E4C0C186CFB3A42A1C184762E0C1BAA262CEB7AAA3DFB52B86E1013F62F9D3ACCBD2E64BE01A07F1AF765F9A452438BD943692C612D411A5C93262ECCCB86CE7994A9B6A2B2087DD50B152C11D5C91DBC8BFEEBF6E0DA367376E05803BC01C8E727EEED81B8DD3E57621BFEA7D97DD057712C1A6CFC31C8BFAC51E63B00A0C4B65C98D6E441CC652E03131484B6371212AF1A37F10D1889EAFE40B2748578B79DD78AF8259B15E22C6FFB8E2822FD70E61E9BF2DBE16B34F86495A15168B403614B642777D0B581029078BC1ABC8EAC1E0C6F1B653BD294386899C85167E95EF8F8F9356635386399A2ED120FAA6E63F4F5939215D93D359E3BD5CFC89066AD771ECBF1E7E05EE4094CFB89D2935FE3B92B7686ADC07E3DEE937B36485DDE18496F85660F789E0ED6029BCAB39D660EBC79A9FB6D46775C47BDCBCE3C0BAC8D3D6C144565C1E6B20755751BF9056815271F19D8AE6AF5FA25913E1145DB1C7DE8578DEE8FDDB5747586DC40D055C59E5B588D9CF9092B4774C610A9C59DD8D0050DB9AA2258A4D6D943CA5785425E41256CFCE205FE0D015B0728A56B8FB4BC61651B8D270C34280C669BE84B6780BC9962D0C90D2AAAF6C4420750E5A2535201BD4E69A6FA636C823ABFA73894640CD99D21C7B7AFC701C68DB755E8C73DE60357320FA1651FE39003E28FEC00DDBF9FA023BF6E4A221FE7D8B0A70486836DF424191A5A1DADE3CBA892964932F8A26244B0C6CC5D281C5CC2492A3F365908BF49C58F5B06D027A7BD3AB12C9BDD0FE02BDBBF4B5EC419BDBF9BF23E09FB2846CE2602E5C1265CE22C3D569A69BA5D4CF6FAD61CDF8CD86277F7D6238930375BB1B5DF4DFC698273341CAC2708A3022E6F21DF8F3D9D028407BA4F7F62F6B623A8BFDE08F6EC3113662ADE2196C1E0D6BDF98F7535499E10A4781D657326F733A5E87ACE1441D0B629E1E5AB7232F3BFF0048E8DF146F19DAC6650E70961B44078ED7EEDEB63C3DF25918575305A9215B3DEEB99C242D7168D2DDC362BA7AF1D96A9679973F88B85DB83EFFD42072788393AB3A1F5644F2CB692F148D98C3644F835716D87259667808681008F41DC61F25E22C08E604FD3029568FEBE962B645CCAF50C98513417E1B31AC36946BE3DC1005FD9426FABC9940D0E20F50ED379918FB1F8CB0947E1C633D0BA63CDA8561109074C493EC21F89097665EAD6F75BB26B2487E6D9BE22CCEE3600006B119179F51AC44C39FF919214CFA6684A35E25CAA472641C00E7E6F3AA36ECCB0DD25A1EFE968E3F000767E0119B3D50EF7AC7BDD8A9BF90912C44ABCC330C0385F288570A1D7CDD8B70B13906E966CF62ED4BDC8981800716E5C873F8D0BBA5A4B3DC2F08CBA4E2469518BEFCDF8C2B2FD21F4C76A34D0EC584329E3F3F6543375E684338DBC66AC77BDF21B5BE484E5A23232FE565F901679FC0C78D77F65E211A35E45C04E3E59D7D0CD43F804521679B9C8A7628F23861FE31C38F25E23F8E563077480C37F8CC774D3FD3D72DE1CBE4A2677A401E01A3F13180A18F70126EE80E8DF3B0A6282EF1657D3F28119CB9331E8856C6FD6CCC16EB3BD3F8CD85BD596AA33DFC13AB44E3E2093D787A6E1DB7063152A49C693345474D835027820C327E13EB94ABE107C1916AE6FFDC2935EC514B757D7AF81E94C18DCDEE122FDB1A790CE04F0921590105CD072272A58997C4D13D9FDCC455F34C1C32E69B74C36429F351F91C36BAD5A8FFDE8DF33B1BD90DEAFAE2C233CEFA3ABEB61389AA677A727574B58357785C1C19CF46B4669D306FEC5AB3A860D282A958D1017B015354C545BB084CA11E539679AA5DD6F200CB50278D8B635039EB20B88689F5D09BD810F4EB5A1158D534E11C9868A35FA1C7EAD449049255A8F86450BDD61584D46D1FD60001081AED10E0141EA8FABB5BBDD99D032D940EC8B062FF1D6C65F4C4CA9AA4732F255E54E830B159A9B664BB5EB333B99B0FB35291069EB9FFA0A9AEBE26392A79C6ECB1C47ED7A6ADF6EBA2A6A9A99A5D345B05B042F36A7FF13D8B6AAD214BD9252FF05EA5BD040A7BDCACD10EED5CE8713080F5C2C269CACF5597989909D9F6392C270E2C770B2DAC57C8011F26AE7C66ADEED801ED63C03FE8A7171696B4D5324510996C3B4F54A5B99C55D5E8376E3C9F4B4FD1D705A65C10A36DBDD9344F4F2EC1C590D43123F93F067500996342C9ECFDC1313A75DC576C409D3FBBF733B1C2FB372E24631C0C435E38D6AFED179335CF6F43F18591F903509BBD354D82708688A00C5550487BF698EC3BF1FE61BE0908B6ED8CF246F5C8CB524F2A82CE9C0822C630FBAF70E1767283EA9F9998573DA1C544E0645530B0877CB7E6C721714413BAFDDF65D1C9CC105B4C242521B93A11DBEC5E00CD87A3C28C6C52A267C82E7FCD4663D61A70B85325DCE51F16FEE772EF466A54928E2BE5D314AEF8F345DDFC36A4212A2B5A11CC07E732CEF1B6FC2390F2397F2FC8EE485A38DB5224B4B2CC89C9BA42F9D617462FCC95CDEDBE03874B55C6EB5FF99C5FF516D51CB2F4FBDDD8F31112E2683A35F55A663CEAC5F77C50A3C0AD3616C0B892327C9B01967DF411EB28A23D33BDF98678D4B458F2A76382B64CA3A98E46F53697B37C61815BE83A0CBD9B1B3BC5437AB67E51DF65D993EB438732658A9952FE9E342AA78C02B5FE4DF5556AB16D668ACAF0175F544C91054DBA00148AC276A20A3ADF4999799F37143BEE12C695EB9C2696FD517DB76ECA40A8790400D6326D2217E12E35B5E349D36EFFF7687A11142DD76DACBB71E87D748F61543214625B9D1AA9E9F82DC57DB33233B8BA2AF5C49110481A8464675E3B2A1D34C40F442B71C1E62ADB7ACC156E5FF2A710010C46776A045B7C91C22CC265E7AAD3975D2943236C6493A94D88A8DF81A653CA75D89840916053440CC77DF507FD7795EFFE92430CE5A77268AD04D2C41736035BAC2F1398923733C0105339F3D832425C2BB83114CB216CB28ADB1C39EE6C169293413AE7777A1A35A2C30100A9DDB36ABBEEEF7031411746077754E0729ABD45075526F5FA44FB4C31D4B21F1C8A23419DFDDD28A668F6AA42CC14DE1E4D1F51D13EDA73BB529A793A33CE89EC8351D7D267C99F518E861D730A3ED8AB1158C127DFCA69EE796DAA98C90FED71C1C539E23748FD3FB7EDB76AB1510CF27CEEB6BC9DE2ECB3CA70D2EFD01286D63C87A9FC0CD2614F349990B3E71421BE61897617389ECB117DC9CD7C1A4B848B9C5BBA75030C7BA9D8F903349D810A652684BEC8CA2BCD678A75919D30D12FD864DA75514F0FBCBA814143AA5C8E5F1B597432D8CF01E37C4F171ED79F1627BCF7D74FB0C469BA3A1C47AC00A6AC91C01B300FEB464276C4E16A5C9D8A26C7ED707F09C41BF875DBD9FE425F39900F8A6BE0843688E0D2C7597CCD94B670CD6C36629A12A3D347E464DEF1AAF6B6AE89FD03BE67A7598C02F2678040884081125DE302D4AA44808FB55986B81EA0F968D26E6973CE103BAC94D885ADCA136C11D9B2058D84392E515F28FB8AC84B61A8EC8C2D0A8885AF34986EBBBE3AA790C0CDB63E4F3862802D3097380C77FBC21CAAF195A71955BFA0521BB250A59FCBF595BDD827B3E2822649DDFF4CE143EF673F04758735834999B59FA9324ACB5AF832579101C5603AD474FD8B2212E18FC72BCC0FEE8534F143585387B89C8EC2F7E091C1FD8B5BE510821309A7E618C86207A622DD92D7B04C5A593468C65DA515ADDE40449EB1B01172BF4BE1F130407A2227F82292C5D6E20607D37D7ED3AE38AB7A6F32C69552FC1FB2B7CD34AA851445B52362D152AD65E34DF989C47B06F6C45DA0AC6D86A54581FCC1D0D1A084254745C4AED978CC66AED04FDA666F8EE3F70D28C8343600D97866F66AE1066C9BA9A372D2E0950AA903583B72EE7548588C487C63823213A6516FD39F288AA9DF73FEE7B9D7E6EB2A7F78DF071884ACCB3D06F6F737A7A08CFD5A157CCD3154AE2FEA8AA72DC25E215C1856A60E6E88F1E32E3ECEFDF38D24A8036AC8FD07184F04E8375DC23F75322311F8545B40278795E23A73DBDAB5253A8A25E70F5AE65BC647FFFA4664E170821C3D8163E0996078AB595EB9CABAABFEEA92F884C1E13AAA9B1219D17E7DE81CCD79E817A8AC165DB310AF579A85C8E39E1226E167256034727F28CA54E50AD32241345F7BE421F34DBA681513AFAA3DA059FEF6AB329F51343F05C5DC03C45CDE0BD47075F47EBFAD1642453ED74ED48A15F8020799DB2973556E591BDF80083F408D1AA1CF537D494A70F14495E3B0875AD48B8F66D4FB2237DF30A9005E4C562C4964F4C4EFDB9451A0C9AF333BE913FEAD4FB458CD44C1799F32751095B0EE03DB6EC3DA547D543B0F4ABEEDBF0777D29CCE17FA3EA419F57AAF33ED9D93328BF3A5AC172002E24DA42F8C7DDE6DB19FC94C7FCC29D2CEF823CC295B136A87E248847E6DE881D4153633BDBD6CD40426858F4C8BE3E750318C0352A4D70725348785CC3E043DB77D0A7141B28F25BD41389AB1039F8AC66F29A2123C17293F1CF649D0B990EB6008190F95F3FF3921692335C33584EBB0FCB5FE2A546C44BC34075F2CEA62353E0F0D9A37A24AAF5CC8C8806C5A7F569E9B11FDAB9560BF5133F8A38153DF00BAA6A2A556729CE5288EFFCA52DD8DDBF4E3F88B9CEE40B7729E93F3F35E6A1A817746DE1C7B6DEDB6870FA01B46DBE9E6EC15CD292A67AAE5B1536D0B39C43F861810D2BCB23EB47C978EFF528C98FC14636C0E3AD50BAB0F68D3D79B70772F926BA221A8A7E1140FFFB802C1932C542A5FEFB290C54153AD4F8F050D3B75520D29B23FDBD437D9851C467294D1F9ED710D333094EF18B70E003D979841B5FAAB54B0F45D1755A24B22ED8FACE65812F3A14D99AE3188D9AA5374B6B4C8C32444501EB29D60E92A45035968F8F8E083E4D3EA0E296F0F7C130B57C08ABB36D2DC1F2D606630DB9DC737581B4136147BBF7C32B7FD18BBB6167AFF5459963BD9D1D0D54CD8449B1661A01FE641CFC1F1C180C763B6F6A86AC3B587B38AC9DAC2C2D066E626CA5E918DCC22D3C420E63CA73B4DE433F679764EB0E98F39456E4907058FC0E9193CA1349AC73860C3C93D15ADCF2AFAD917E4E2ECDFA674B57ED4B9057D21336B7AB48711BE14D74D25CB31B0090D1463D746D6D351D297CDD86138A3D381A0F4C2A2C3CB0D1C2F7255E541D58FE396B3BDD9221075AA4CCD57E5F2B41CFA2CEF4828DFCDEA1CEACB0EC2FC07361BD868879651B46EE0643310E185BC8D186F22B51C55975C1CA36324D63C30782A5AEEDE7379FA87B35DE7D36908CC02A7A8E9660F73DC9DA628C0EA00464500B4AC9BCB0653C971844B3D5B243437F9B5F832120EBC356568F8248D3F32C5B8D3FA85A3428E9CDC12F1B358AC192C02B388C5491B56990CB998243CC0B1E40338B580B302B1864A825AFBFC5B61F0C28C9EFC326CC73CAD9AFACBDF8683582063B18BEA2340477476EBA8FA4A44BB9607CC14DF74D46A26D2B593D47A3EAD547F5DD641E30F4767C56ED5F3268818FB9E5648AC0B436A06261ECC35DBC3364F5F336DE4DBDA1E24BDE48B9BE338CE51DEDEA6C04FBE9DCB1DBC6AEF6412B8E601711DA08F53E3F05FE072DC9DB329DBE9A1B59BAC50987DDA9A608B90B092FEEC78EF49FB14C9670136E76261932E9351BF084A5DBBD0318EC14F4B66E67D6C44577A3142102973EAD208ECA166B8B3373FA9BA671266904B09A5AC2C2D08357E47E3D1EEE81451F930039DCB1823CE351DACDB5FB8017302542E19530A70B13CD8A417E6CD1BBA47A11141B427F5BEC899582CA148361D330DA3DDCE12F0B7099AF260B2DDE1D95E30C65BB6CBFFD5EE09356D43087A86DAB3FEC4848E416CBA7C2996BE1C3164C2A227ADB35A9223942B0EE4AEBE72056DE68FE5C658B07DA31F3554C4FAD0F1EB56B2E5FBBAC55FFFF349244EBB6BA08612E2E6BAD36560BC236C655D54D6D04CFF35557E0F8837FF07BA8F6891ACE56A51F8692EEBE010F00EAD32C61C20BBAE56C9E74BDFE894E06390026E65509266E594332E4F46FE2F60D3DBE23CAC01EEF6E8A8A664749AE087CCC430E178859F1FB5C92AEAB9AB488E07E8F02880B27F3CE2C98B2948FE01F57A66798E02EBCD23576617EDBDB610F45909B9676FA926CBC453CE52B07D44428A21DF974B297C3ADE214C72A4DA7DA7D36849C3D9959D56E00614758F9C8F540B941116B3B8CDB159A9F3976A410F8DE42EA0115056F2D300C72759462D5E243668C430D7C43B223FBAD117FA83B29911FFF0774E0D88B9D4D9FD485DB9DE139789CEBA4FFB815D88032E0F46331F40030E333D0E59727C62A15621AC41B8BFFD3F6A0AFFC88495C6DF6900D57D5FCA83ABFD4EA13697615F602E6F1AFEB1EACB01EE07C9043CA15207040E6263304237F61F4995C98408DA221C0C3D2AF7A849389931CB4256AC50CB262C60FC63662072AC26CEFB9B1247EDC461DB01100384683DE02571B5ABA8AC4CA5416928DB9B565B1E610382E993F0DABDA45F42AC3214EEF8C778468864919BF4949F0A225118F9025670EAF5B9B1F247BB5C2FFC905CA55C1A010B60C4DA10E6158227935C6778E2CD61D64389CDCB0E69DBA630294967198FD0DC25E75A47829113FB24FCBE702069B28A86A048509DA95A0ADC4489F11D449A77FE4B5051851975D057A4D74D2164A476A4D8AA07BFEBB98D0E32DCDF8FD4AAEDE64A7DE5FA9EBE7FCCCC92D6478DEC8B1579EFDD347D500E8499E35267BEC16DACAFBA3515C09BAEF2320BF560E1000785394D28632CB8AD160DB5CAF57B3D24DCE623B98AA35471808883EE15075282DE9A6C2CFA7BC28BF0CE5747335B2FEE3865885ABEA5E6967C4B7F8385AA897FCA8E8499C3547854F7D7D7D7A2CA6A7C7D652F64A8D46D7BDA33AA9424C7C6721F79B7D6A771D151A36F78922BBBDCA01F6AB1125609F6C0F7A85C4E0C6835E49925A7D7510F70D90F279E97EEA513A84911AB895B20E47E8F95C18C5C8E79CF09BAD0DAF33D97A11CEE1E97179769E484E686ECE313DEDF0F4A2F39C35505AA9A6F49D008CCD975BD895DB325A57BECA7728C60A692389F9F2D8089313F4586A8993634BFB4B992E533EA14884014004592DFE635E133485DBF65BA40B25CCAC2D3BB1F75D30EADCD3299645DA6813E2BC40DE7BD7783D05C5252C2098EF2A8641C54AB3F0463191E0166A89CC30D897D996E90F2EECC5CE7261C42994D13803AA9E5ABC8157715DF0EC77473A1D0270F6ED7AD29485DEA87F5CDBE4663A58DB4BE3FAEA9DB75E472BA5F979A980CE2080C63E27FBB0A23D1C967E2118C9F73FD80B0881C19045F9834B65996F18A0D332B4C4CD903D90FB1D98659F509834851E606E4E8BB7190E8753BDF7AF7D8794EA1930DE6CD0A0551D38A6A754F3032EA17572A79D983006AC1B5D122ADB11CF685A2B7888350CE60C32F631B7D02EE974238527A4035B1F2CD7D618717988E1856512CC29446870BA86F52EF7BBFD7AF2F53EAD11D2DCA794EADD6BE48A533C3428D6DE17AEECBAF7144D58E8DC83563BB7D1A50795E5824E9601AB4CA297449BDE1D48F25FAA55861164D6D0C3B1E9BBA34C9DBC07CC87945DBB2EB170C51B09638650BB794EE7C34B88E309450DF0A0827CFE97860ACCC91B144721F56EFF8B3EA85BFAFD5C7CA9BEE09F2EB987BB26A9FE000669AE6F4B039F7286B9EDD4F1C8D42D13288286CAD30F9BA3FB4F1BF93791BC04B7535A10D775505D0172BCD8D51FD0EDC1B6D05AF89181D119574C4B3B14C1C821DAEF1F25B9E4C5C8B7CE7219537CDD86FFF36A26B3BBADF5C8425C294EDE34DC82125D88CC95618C521464AA603CE6E6DA08371FDB19F113E3408561D3C668BBBD649AB416CFF5C0B730C381417818F9138DCA06C3249A438163E3AF629195FDFD44F584D95DF462EDFABD3273DC8B9529243EDA9A024B6A5EFE9FC1E7403F74C2A4C7A5CACBDDF4A3230FEDCFD8E93182B5AE97B755835DEF3820A6F18D147689B5F71DC827ED8AF4D3B32B6C319C923E176D7A5E966A7BEF70D31BF20BCCE23E5D3A7E57BE2CBD6EDFF48826E59AFF53AA034071159065193B190FEA1820CA8EE731ECEC24C127EFF155AC2E6755E48037FBC501AEF5520F15707C9F498399B29692A274CAED1A2E2A77F2CBA494AEDC9887263537C397A2428D00C90DFEEB53FBDFA15A23901299C836944CE1DF3C244EF873CF7633A3609C9F3EF3E8CFA7CD1661644F8898D821FABAAC56FBA35E01713BA1974FFC2058FEF3E98017DD3FD1F12E3A81C89126FDEB6087C2DCB217B15CB5B232C7AED2D9B63A4BD19C59C2F8CEE1873836DF0A0873F8251CB8B1A10CD145E5BC2C5CDE75E9C958593E112DBCB5BFE75D01559DFE7BD13D30A92EC42908927190563422FF06BAF1DDD8ED506C2AEFC58F8946625325F450176327F8C7A682E051092CFDFB63BB13C0A193D6117AFFFDA580E7058F6D8AC9531E598F2A5A8CC8AA050113B08D1F40313EA29D6CA431FE03638DB58A4789F0C27C48D16BC79931E317716E36924532E4C07EC337DDE3BC41B555F5980B43044C4F94BAADDB2CE678D030E939238D9A537A913A4E30C97C49C52B50E1446261BAFEA744C19EA81FBDA54700D0B7F4BA0FC11D2ED40B2B9E86D84C9DEF96E9F8B7A309185B24BDB4ACCA131A984F2AE65FDF029A9D44454AC2E6CE069FA7205BDC2732A431FA5612455C1D1034ADB72EBA75ADB58E6F583B4EE9DC637AD0316ED96BE3ABC956C1178F80E0100E0A3F17DC1CD6ACA2690153F7DFA7A1A80F3056C2D367AACDAF17EA3822C850812EBA885349A3494FDC3B175D497FD06EE32320D6FDA05EB509E803670A26B6369E19A8946B452333540F5FA1796819C149DC4DFE57B8F8B063E3A3B335A7E7FE5829A29F7A0AEDD422C5B7BD3E9993F9C959C4E56BBAF3C29E571443A1AD5F6BBC561D89A5EAE6F2762CC358703B89368DAF5BF2F2150077E93B7398853B48214C61DE4D8E9DF4F2F3C84A8FEDAAAA0A8A556B2BFC02A77F866162BFBD295727D1AE0F5D6433EEEBD3F0A3EF2B45DA67AA721CD35E4D1082E6E37CEC073AB8F197FBB6771D56BBBBCEE1F2CB71308B94BAD7F2EAA3770D69D92A9490F2A249A263DA52F7740FDECF3E6567EB8AD4AD3DB83522B8941BC97B545E0FBD7C7F4131978988029EDD0C8054C67D3E7C5F3618E935F37703DE9D9783B0D0334F3F9FBB994E57BCD9BB6172631A5CF400757FD88BB1EA496FF74BC9761C7B5B205906AD76358EDB8B56F58A5F00452412E44EBF74F96CAF7B412EDCE671C3445D842E4482D671B98CDEAD5FD33ABB3E7C1053AFE9410A44F816377BFD164E8BD63C382459CE94697F8FA1D72D24B8FFA8F68265DED2BB97F45F93E04E82C823FE89E635FF7C6E365C490576F6052DA21201E7DC5335723F493F0671D8AD9D2BF6590C96A7AC1572C8E777D3B1A525E2AABCC2CF20AB40074E96789D5A815A7561ED29F63F5C79ABE25B881E5C687543AD3AAAB72C8446936EACB3588678634E757646CDFF1BE7F1DFE4B154D8DC6D5225433BDD99B3F760C2F76D0625345F50C40E6153ACFF39234BCE2C852A0A0CB6C5B8ACA9A61EA976721C43F125C9F8E406F17DB362EA8E394F06AE4DACD95F9DF811C656F42699446E78C983A7778EF9FB062DF747AF5447F4B3EF73AA965A143C3740F721BE495A86A55F6498B0CE6779476C5DA6179DA1CD435F0F4685A9654B1D8FFEF0F6F6FEC3FC45FA7E7635328C7C5B0EF1C1E019AFC555535B6ED6F5D043DA8D1C0D5A243CD50B828F306E51A87D16E1D689D0527A38D43964E61915E3DCE682678DF69F3DB8CC569E212960C7DBCA34C01D57A8977C34A511B5B8CF7DDFD9758129046579827BA924CFE0F40337C9D5549AF5D70E68F5ACB9A8048B625D6689CCAF41A88B6BAB808C48DD7A7E9601219019EA0E4AED8440CAF7741F3F32BDD61F23A4EEDEA93AC99FFE48552DD4FEC63436EEE1437C3390553B801B2F7FA3904B6E585BDDC4F91F97F33074D4C7CBA57F4894B8600F956506F09C0F01A48B36361988F7C76CCAF7E87B80947E0A4E12303EB245D396E6E460E12E4D6C33015676B9DDCCF8839963E66DEB6D85F038A15CD2AAA36BAFCB8898694C960ACBA37219E956AAD896334C6B8E6D3BFE410BB2AC40F5BB9ECBC08F59B43986E746FD63CF6FA0818D1504F157694F5AA42440047C40872393CDDBA63088BB519F59B6CD930E300DCBB6FB6DCB5E48A68A0BF02822D47EA2A28FD9925F18943AA7B3A8E9F65277955A367F00DFB15C5C2344436512B700884EA584EBBA37429A1AE1E4EFED35FAFAA4400CDEC3408B17027BB374DB5FB4A067FBE41E500E8F2437C560E52BB1B08E35FADD2DE1D434DFAC23CAC639ADC3F6B63901274D7602A19E3ECEDB7528B125A35F4A3F8CBB0DA89592DB689BDE0F401971847A6342A928DA17E646D4745FAC7E3410A8529214CA690893348330FD643A4907E1DA2F9FD550CD48BC4F4CC594B4CC43CD7FFED819A7E14A8A82D2EBA6CFEFFFD37A4014651D32C26032E00F37E94FCF899DA5CA6FDD90ED72C751AEE5BFD48C09770E602D287A86A7C8597526A49C2B891FBF574FA118DC0457B8FEBE31BE8E28B67DC93FE0F4F3F5F35D4CAE646E801701CB963C565C37C78772208CCD69EBB56880AD4BD1DC43BD6E3D5EAAB104AA08D311E1FA1CA441C97DACCB4758988B7F62E2254AF57ABC20690675967B3E1C94009BC40116A1AB4E91C61B7313C5846DEB33F183970D8BAB7C9284C22B2EDD03CB31D4CBB1291C79AAAF94C3491BDEFA57E546FFED859A1D9E5A11D741BF3C4962111ADC17F6A14015073050E6D593FB5C92D64B16E90D29184D67696CAFF75875F2C2972B27F18336022F7E26ACB2099B4FF52DAE88C9D001377B9D03DC214BE85F1CB1AC5F9BD62239CD137093AF25BA03FD8DF2BCDC7760717FDAC320BED0219EE19585EDE0CBEE3D153EE0ECD560105DB7ADF9AF2C9FECE8C36EA27A11EFE42C74E40B1606454F01F58B7741F013E9C3AAB57137490A44304DCD87DD877E700FA3D2705FD6EBE60744B4D253B3E26C4410418090824E0AB2E6C9745CAE3FCA3623998F189188992C73EB5689BD9072EDC480E1FC22804F5586B6EC7C2442557859633CEECFF8D608AD538B8553846A6CBF61B40E51A827B9C60D9896331C1DD6FB8E08CA23A2C9AEE7818F193A26D166B4B8B902A70E242408913BE201629CC5CBBA0576B48ED6E79C2EDD418040886B11214208CD8296BE5B8E1888C84C4A57288CEE826F3BB0FBF539C8796FDAFE52379DBC8BBD8E7FB730052C95D9AE07ADA93880B977F915E9C4378CAAD5C64984E1124FA41823059F168FE317D51FFEF7D58BF4C9E8E9CA4ED5F384D5E13F704416273F4D04659F049B63B7B654C9B7661043D6AAFED6385E58E95E15ECF31633EC531C2FEF4AE6116EA2DEEB30806D4FC5389BECBD54FBE1924E6054B989813C419DE53A25233C0938B63FD5BDE2E4A9DC9092DBD55A4ECFF25CF81178A74D9B5ED6E58BFF8DEEA66EFE553547CE0A689178EFCE08E6BF5B0061176937A093B344E5232C429CB41E24FB238FF80CAED272FB3396D8AF982DEA6ED0BEC76002F98A8041FB190D00E599BD3F8EA243AEC9508C42C9F2301E2BF59653EE665E986115428E528F14630661573969BEF80C9E22F0ADC1CB720AEFC271176F3BE3C898C50028CCB2042C3AC7FCDA51701155FCF16B2FECB669D0268ECA8E3B68BA89E34F9DA1358775783F0F915B618DE5EBD526B66D13C8A9A8C976EF2F2B1F6ECFE5AADDBFA1A9A815CE6D17BF6186F0BDE42424DC21AB11A40BFF2622EB888DC521FB10C60D153B31C5DB039E7E88BFB716C62BCC554307A6B45CF0DB5472FDB1B46B811EF96C86BB13272A817247B14C93C5B7643972329B6826C0CB4E1ED01D19B98D47FEEFDEC13FF4AFEAD1A86D2452B03A58704CF15569EAC9B1095608CEF5C2BEAD3A5FEC2F706B6A20FD92765659BE613B2C8E3B3CC3985A4F4EEE0F58855484281EF7D9EB2422333B40AA1F3393325E615663AAFCFD21C955BF182AFDB92DBC8F0F2D8A66974563C137A3FEBCA2F462B6D5C276238907BB1CF4E6CECC3AB93E7A173309884E7CFB0023A4AC969802396B0A3EEE3255DAD4614233FE195BCAC17B74A7024A2EA488F17C14E6029F957CC9D738FE335524E5C4800766FC9285522B7CD133E710D8A2E9D8F392BF300392868DB543033140956556AE227AACF9053DA5F2C712DE8A62D76B33B1A6D80B4F59704C846C0EEA6F4DA2307007EBA0A45947CD805DA7BDD35B4FB367269E51BA2539F9C281E1937CC3405EB666B085C35B992A56ED7359D4DEF9CA9BE4A32AC0AB6DB529955E0ED9F0C16051671CEA4C292C070524D99152164BA206A468139E3EE03BA4526B22C0D8F92B9F0AEB261CB93FD6D90177C11B9EFE50DC7BFC2C6D0BC288A855A5E748D1AF0FE234D53567E56682BC99FD8C4CC4C8B6BF7C35A7F17FBD487E56145CCB75230BF2800AC8FEFE44C8340DCC17ACDF970861623C99DB492AEE2B8D2BE89DE77A362A8335A80DD47838D76F4FC94A433A4997968E32F9B20FB06A79AC9C2778B92660F71BE6F5100922BCA316BA3DDE2DB0D9906BB12085922DCB9098162B3024F8B26A438C617F33D9AD09938D52CB7C5CC1920D83A8369DF3064156B3BA5920ECA0DDA69E3B8C36C66D6A0C1F34AD4B63E5C8151AD67DE097EAA59B52696D9EF43C42C56693E47828577B7B4A7D6B1CA9F1670FC6F0153CFFC3F319FE575478227913D5EAD7732DD18A3E0801CA65A00364BD07A233E8EA5BE0EB1A847DDE892CFB4EDEFA0ECD63E69B1054A76402F8E3D7E04E349AF6A98DC5F380CC09EE01792720CAB52DE8D97F2BF56B226152255B686F93B7FC9E289C28ABDA263AA213C2E90C320E9981B8012E40739A2333F0D25B87AC95A3BF053A37578310C3222CD600125F22DA64F6DE5835676006E9A76EC580D290C16B267FE5FAB7952654E59D64400726BC6F482AA61FB9089DF1148D74E0EE704501A61AD14D4D8B6F24E87B2CB92B7BEE0C391E4F66AA7D653DAB79EAC0144511DE6C6182203423414350F2F6BAD516DA7CBCC70798BD43EAD4A65DF9716589C443FD36F66B529802AB2B506AFD894B440C97FA28B1196888A8A014FDE84C1F12AB1CA4FA2D584C8C66B1DA2006FF5786B849FAFFCA46EDAD80A42DF2ED055FF9F3F060EAB64E3F1F089C251A2D19F45B9543D4FDDB97A37761F0CCBE4AC479B268F4E860F98408E027172B9453C5429546208CC74D8A44EE7DE8CBE631F416E4A3BD166F9319C9970DF7E3A9237C6B7D0765423CC8C1D448D2A539BF9C2EB6522EE9A8BE0B21C242D36EF5D2123E9E736DA93799EBD83303E3B3C7F6840CD5A02F140DFBD27397C3B35E06E90A959343E06DB3810AFB04BD7DC50C38A6D81F29EB405F5BDD6FB2AC4AE869679C301CC4C3CE6131DAA429DE4E73B0E3FCD313275155F242670F1BF756D502801DA18D8FEE3500B4C5D8E9F969F5D52D288A95869A7AAEE7D53B9BC9760C58B90F93C65631D272428E7085712D129E11079D56C862CEE6DD42851F13C8BF99217F53843CA3D3BC07132E5D8317C28263DAB41881F5D14794A7473D62CC0EB68C6643FBB8223DEC3AF269689A5C9A117B4217E76078C593606EDF5D20D18395551B9744AF976662D238DFA3B82C32F2AC43BFE3760F6B7B6807E24BD37785B6B783EC4DC3A67BB2E7EAA5C640E956987A9B7206373D29346F303CE721AFD3B62D664290677C35AB46BD9353C30042549223AE4649A13CE20C6EFFFB2770CD6C04B9793498F0A4D84BA73914F5751C75133B73ECE1EEF9E626150C6EF735126EB6FF1E0A598A6FC6135E044B236DED3CA772B62CE4BC2E3B2EE9DEC9056012C67FE3F02A49EEC7563D868E516DCF9FF17F10297E6C51BADB00D07C8D3DDB856CFD48C6E8F9312C7921E6FE62B33249EC3576FE300E6F1C80B90CA5E1923B3AC1F86B603831BC799E6BB052EC9C2F39FCF263959BD2858914597B41347535EC016E1391EE12AFF036831C6E54AF4E1FE3D8966697197A8C373FB69F34AB33EB6B8907E1008253B6C84AEF5CB8A9195AF5B528887A5EEC6BD638780B640AAB5D63C7E78B5B77F13352D2C8FE0DE32E6273A1C99C7B6C4B43F69C9CB8A1D6C2649F06CFDC4A699DA56A18E5866FF991ED0960BBDCCDD1E853577192C99BE66B73341797D03B081C491FB63458261AB97042018D5CAC9A6D61015886F0754BFB3B1AB7ED21DCFA58418A363732DCBFC32BA0085889246CE6A1A95C77B10A1D2ABB4DD2BE7A5108FAF5AD10AA7446E47BA4DE0528F90B1208F4D0646C832058FA757ABD46E57D9CB2C0E8AA924FB252E23B8ED469E4898721CC1DDF0B246BE27F3239592019B4E6709F3CE4A0915E7E3FEF9BA97520ED4BDB0ED34D1DDACA5A6CA5D4DD694AB3A10B31F7D092BFDBDEADA2FB7D09E369042E4ABA1FD3995298DED4028A53662D709077894EB3142893DC983C3602F9EC48441F2ACD0798670EB368AE1FA340FC8944A988001007A29C360AB0B4C01EA60F5035185A34B55F946EDDED6C23941CFD6F6822576BB2AD983716A85265B2F774EB86DF0D7F0F761D05FF4B5AF265C8A8B259AD1F06BF6C28E7BE41CACF9A07D29DC285E1E6BC8DB8CB054E414557D97E4E6794A8715375936A84C7CBE2EFD1B87E7BCDFFF9CFC3898FDA21D7D2CF3999407CCCBAEB749FF65404A44EAEB06E81B10C9ED2625B0AD2FB5F01258937D27A2825B1417844B0AA597D9F1FF68BDFCC9686704064C8C6B97718566A4D8C6D290EC6812943C9DD66756BC522DD57283DA1DC3CEB8A1379942EFD6A59259D4766792153C30A07D00C510DFE8A9292269E557FE5DE61348AF7C497071FCE7CB92CA4535573D29DCAED5EDFE57722F32DE09668BE16D7439F0E73653AAE2FAC7ACDB6A84D85A1F0B83DC4FB474E1AE57E392B950BCCA8957A0F3BC36A7B1628F02A8080938EBC0D0A465DE06300FC8CCB676AFB3815AE95E07377E1477BEE422A2911B5CEE1213860D323C31CDF79676D38E43DC04980FBEB16CD4431DE807F9F16218E857B9CF24111CD688C4DBB5D9BD9A8D5E5549368892083B1E219F33F5D125C9CA7C7DF74ECAB00F835793CB025CE790511D09443DD8227D5595E88D84DFD4248CB740E90378D81504D86A2CEA3AF25A7852591A55D261282B03D30D5677EC61ACE21B3C71CDA31C72E06A4559551757B291CD09D268011A95420099AACCFFE2C50443531878DD35EEAA1A3B7E914C094C9FB632CC1E646AB1266AEC6F886A0D810AB8A6CF11C8369AF63EBA878355D1EC96A7E7B7538A32CCBCCE2563346ED5B2C84C8B3523B1A2F64A500481727CE1420A8536631977D52E43302A4132635F896BE18582CC2AC73D859B0AF8163C79DA3394F13A757F3DF324137A605FE2B980DED5B21F8907D1681A695B627AFF6F984E9C6B34282BAE41674D1DC8429C158A7D27F36C957AFF2CEBD9EC089A01D0C24451FDEDDD655485883B9EBB37395A40928D80793FD8795000C69830CF7DB10430C3F9C5ACE2FD1BBB94DDADDFD563F3552251D829D718F827C3BDF29597C3660FB9344B03F4D53D1F4074C0AF033118178E5D26F4629756151426502D558D9C79E8F42DA0F92A2BF282695B56AABBBB689A65DB976437DCE67C45F678F1B5A9775BFFE051CC5AAEC11DD73123D79780776D106EEAC0555B430A628EDFDB9C43650BFD58B2480F949C72A06269FD6D03F908478D72210C69418FEA8C5E9AAC07055D9843F3D2F011452521A0314CD3686FC8DC32F1B635F8EBE7463BA3D4E0B8BD88BA7EC677F77C2E2F037DF018C7A5648325E71F42A9AF22DAB0F34A7FDF487A6460EA0BBF23204310AB307B2E341DC8A49F356F7C42A4CA684A5D54C7D4FD72E72DE2DD10BF29DD68F4B4486CD446B7A7865855DA81017D1F72DD786F22AC9A5F7EFF71FE30E8EF595BE5259D3F1B7AE9B27B7C8C25C9180E1FD8D2B7E69FF97484607D55BCF57721B2FC2545034E8827E4A9107C43B2B8F24F4AC4BECEC7AF88F8744D2D549C1B3FC0BFD09A926AA29A2132B14F9611696D52F420BE15A4038C352A13F32C5C367FCDEF193DE1BC3DEA16E017F7ECDAC3DA749F15117A473A711E4C7AC4FA48F148F79BEA0CAB559E5912F610B0B5D0225274C31FA16AA32D9B29023C90A297F86D7CCEC54D5D940463814B210B285F03BCB749FE5B284842B42F50BD2D981B95185709F76C2E5C1E71453C4DB5AEF6BDCEC02A2B87C863FCA628A20B6B0B1AA61A2CD4B07BD57F2BDFC1CF31952B33F0FA12D06C5D9AC991CBEEC8A9AA607C82CA32448E3238C140A91D4BC440E108187A404522CDCAA8A65BB204F9A3F3358C0A4703C9687AC487CCB661877E4549A38BEF6E3F9FB9B19223C4317E19CFBAC871E93398BC0EBD6CA2B38E88EA8D831A1B43877515C369AC3076C3A7CC77FE0E87A69FAF389675D7E207487A282FCEEB27D983AA5644D922B7A641C483DF90E8913E8E11293E77531BF3EFABEF1B9059BFD55CAEB0CAFFA7EEC7A36BBE97B1A977DC8DBB256C1736B36EF8C57DC43F9B7303D73C97562A1C6E5C346C3B946AEDD488F9417C4EBBD3814DCA2086C90D4507D999B0BA6BB46044D1ADBAD47006345FCCC33591CC17320AD60931ECAB2632F0D6CB2D47ADC1DA2D96225F237D3608DE48C607999F2576DC133121D3117265A944D221F8D2EB8230C3EBDEE8D42327F558CF4B5493D00CC56B3D976C4B21163ED1D25980845B7AE78DD6496E6BD6A566044C55E924BE3711659BD6C84B065DF4AB8224B3B02F17EDCEC30E2AAD71F9AF5FD4816858DD69CA50AFD895DF9B6636C05F5CD2E511D6907613E2B6CA0FBCA02557DC5FD5FDD8F1E521A7D47F859BFDCC0B62AF4F904505B7183C56F3F37A1EEDB1A09C2333CCFC70D1BE24948553736B43B39C166CE5A039486C32BC9C143B9081BC366DD1803ADE0D03A4B4C5DF8B6631205CD761F5312DED3BE97EF61BCF33AB949DDFF44778DD3C454CD34D6C8489DD09F0DF90476B4A55738FAE9B7CF6ECB7CC04B4F5FE34D49BE4115BB8AFBC27001326C16B006169F40EBD5A9D4B3DDC608756F3259A2A1E531B226D31B033407D08F2DC9B06ADBFA251AF93BE87FF4A6C5D90A2A6D6C4E487BE52EEBD40FB57AD2D1C01F0532ED08E60C5D282CE68C6061329F81FC83F15ABCD715807B25242E5C902496F46665A6D3213AD837FFEB9E7980EFABD74B25560535CA0815827A1D1FB2C7E8B10E140F1B3198A956EAFC5425E4B7C052FC19A5FAB8EE14AA1160BD2103932E0A7EF109FF72FAE21B4096E2AFAB13B647FE01F4FB2CE30487586C13AC244738F3D25B229E6E76568A6CA14E8CAFEE2A08271A353628F20047C70D6BFCD4DEEE13AE4EFA503340A7AA071CA5F37BE235D6654E1B222C30C86D2502FAB899F60EEE807F7349D361EA95C86A02A17BFE72414EDBD53EB932CDFA7D1CC5898FFBF5A31AC1CC9758CF1A7AB98B0E56D6F2CEB9673FFB3BD43305F3B4D508BE4C21EF25B78D8E22C546327D1FD2EDC986C16B24FEB6A0C6C07B99A4AA2 -sk = 7C9935A0B07694AA0C6D10E4DB6B1ADD2FD81A25CCB14803D53620C4A4F6678545FD043E7670A6876B9B6648FD9361B952183C959F2B342A84D0D5606BAB7DB22F76BE9256B0F28EAFC0CBE9DD854F884B7F4D1C388969BF8043F418EBA9FBAA774B13AD842A422E543752E2FAEEA13E587FDA80708203E4FCA5F6B55E3C9FD51F64EDCB642FF2265F081984EBA284C20DE4538E6BF0CACC32C177CF03418D04B98884FEB00E115772975EDB99E835C220BEFC143B992941BA8FF12F2A7DDE689EFD2CC1BA0F5263F966AAB7F988EEAA5CD2F6B2EF3082E5EF34A7BE701759F4AEF15D9B74563CC2BA909F1E7B9C9C10F44D9BBAB6EEC26A6D1DAFF802885F9DB7CA3B6E342573287FFB7A92EECF28FE344543EFB629C99E100EEF8BC6C0226608E037F8A49BF7B5B3C2B10D268A3109048D1DA0F060CF43AFF85DC52A8D61DE75EB26DB21BA1BE48E033B1323289F4CBD8420A8C86D6D3AE448B05E81660726A3158956AF2B03BF73A046BF3526CEF9C109350372C609EB4725E351678465F2BA58D94E127ECC1117D212FD08AC8451ACF2D4FE2638D4A345285F9A106A57FA31C7A073229D295084C37064971B06A0739D445DD0BC4E7E48D7DDBE875DF710E3C975F848360167E6B22BF7A94015DB521A1C0DF24FCCF37E538E95569FF44E4AD3F95089D586EBA5A9BFDA9486EE1B2F1FE1B2E82067AAC06C2C8D552C38AAE267A695F90AA4B5C75259F97D68EB519C66800A334A839F79F0AFD4F1C4B1202A61A522E45DCC24C7A782C92B35978E8D60515C761E575FFD727C01D711A15B654FAFBBDA17C3BDCF125AD24B970A913192C994382DA62DA581E3156B2CDE78F452C44CFF85EBB05AE5F5728F2A1EE6A09850B06D6265C3E5FBF765CEAA79B413D6229B45BBBC1A045C285ACE76E9D09D7B6E089F58D0C73C3340EE667E2610923BA4F84A2A2940259058E559B6536EB36E19227DF01DAC8E55393669676B77D76F17219EC9A1748E7A34FF12191B9B206F72D408AB46A5B898DF508BA2202592B18A06FE5097C7B0AE9DDED2CE43DF65DD765B86FF0393829F8EA1BF5A8CBB83A3FB75981BBEEDCB7F74C7FBBAD017E5A5030CEBE4BBF6B2E4B35A716EF736228ABE55D02BA347B486568298BE07DAD8B05D2E7B6E2FE93738876896110DFA7017855A92BD77E8CE0FDF5B094CBE32190A2776683B326D287B521F44663A921C141FC2966C4B202C5E54C530A47628169E32B7E351945F7F392C845B5D69424C663BC285E771AFDBCFB465E4C3A5B7156A07483236B6BA5A00FADABB52D7763D41D03EE6D4651CBA67533EEED6FDF1F7C503CC035C7D35B2E193B193BE6AB775EF999558F5AFFC0ACE08DC860B9412F940259B0A5A6C60028E5E1BFA896EE49325BE69CBD9925AA95C2F0BD9DEDA6EA71C45E59F38D48812EA974C26881739C81610EC18C59D964CB670286B33C8D2BC5347BDAD524023D7766EC728A5DBD6D8453D7C2A3315DD112FDD5B9ED9AA9F22DB9EB2BECCC42A8142A7213F5C421788A8E4C67B9E165B6D33FD222A7E60DA09F6868748AC98F84957007EB3F1787206EB9596F2226AA997238E3AEEFD9EB07B7524AB3EF57BFFE44146649AC79C57004CDF3A1DF48C8FAB471382FBF9C43DE808E9F0DAB0EA36B7301505881BB3152CB57F17EAC920CCB384EAD291A09E7FC7D923C8F6ECBAC3D4B1735A533DC7FE3A06CD73494EB6C2C0B25566873E3A0DDD5520582B26C41E57136559436E8D7A1C61710034308C99B775378D2BBAF0FAA88DA0B91B5A8BEB8707E9E8123113B145C85C9AA8C41DE22970ED0287560A3B94DE667AD478A8251BA81CE8CF66C793D0A3EB56BD25CF4E290403EAF2111D50007AA34619C8383A2274576F42F2981D850217A9ECB702643A1C40B410E345E548AB7EA8A5DE96939D61F2EC2278A58C5E535941755962B12AECB1468C25B20DA474FBE09DF12B39A184AD4C8C6E82DEBE0B0F019D811DB00F95AC6D6B30AD37287B159DD94130E2D73837BFBAFB77F4D0E7E15CD99DB2C00C3C751D1261660B4CA85E6894881A25BD9D56DF6332C382A92A402581F3F8B110E3B990C52710EF678744C0E77ACE0A2CFF6AF0BEE8C234F884F1BF807359AF9DED1BDDF6102E436224C0710C891432BB8FA0D43484BE744347ABE337B52FD98628D97B6561F843A5D6AF9D6F893029495A9F65C0B0FF4030CC0D72497ECA33B1ACE4346713D013A6EC20CD0DBDF3E982416D515074A1A49C78720EAFC6473D28CCB71DA22A4D089080182210F53C530FAF1C6C455703A6F8FFB76AE8D307D1E9FC715A22CC298334F474F06071CB91EDCAD28B07C1F0F68F9AB793CEE7B1654B5E9A1B5AC1AC5BA8E3B67A7D7E7D2C366F4C3FD476DEF591F0DD32FCCB931060F009CDFFDDE5FF2046A1ABD47FBC7D985AB85EA1FD24731D83E2A9860CF12C2DBD8A67DDABD72CF25C5D3DF77C6C66119E2B5B987D556FCB7366B6A1E4B1B1E7147AEF2EE1FDC3A802700C79ADAE5194503C66B1B4E632777E375D3433C06C88404ABD1B51FDE0C68C27FF62700780546138026CDE9EF9EAAAFAD8D79C7CF2D846D1F17F7AB8240C4EDFB68D0F744C0774C050220EE7DB04819FF0BE2A5CB6CCD5C6CF3B22E69549AF6979285BF1B2AE108543708F817371A94A2C299B7BADD1EBFF74C5FDF1DF0C6C067C4D0321E866333DCEA988A9C1641E38F9EF57FCF338972CEA7A6277B179B9DADF5FD60B95E7BE03C4351300C08E7DBF63C7B71AA8FD6464065334932214FD64A9E4B67DA9673460979FD5F3F6CA2E08CE8720061808CF40FA7BD23276A4476096B8AC9EB2718A46344B42179A75D519B8A46EF9A0FFE6CFA3CD975E85709AF4AEDECF066C6AEC33905692B3C2D0910DA8435FC90304A0BA0322C419C96290110F99C01CE064318BADBCAC922AF4466CA7BDB9E8A8BC05107D3F60171EF62F9D83B64504D4FD6FC9D4DDDCE2ABF8A9C22E5C3D1FEE954B0694941687C1B56FD954169CEE41952A5D331446C88AA25481A973AB4563916ED123C0594C165B487A07A81BEEE61ADA1901977AA3FB04F70D0656231367841B4A1B2D8E58E3AF7C04EA8FBD1159D93E86659416F9C2BD679F86DDACF0FD9B41589461B052474270D7A24EAACD7B1D42217BF9BB4ACE24F2F751F81F8813927F40756116D1CB4DABC9F2C46E5373B86792167F8F03C2D5D72B9BD2160A3279CB4459A35075A09428A5BB680582E24BCCEEFDEE56E6EB76770EF75710C4B8022EF141B2762F654E2A10DD2C2B07B0DCD0B22BB844FF040B5481583C731BAAA2FD5D57BA2107C7BDD12D47B58FA91D434C16010B2B3DFCDC1342EED8494B5469CEEA3554B5F75307E90FE9691AD114E272E3ED790E3AC0A74B19645775B982C244A9ACCB1633982AE411F414331B89BD225EF1BBC2276270E2600482CE3DCF40E3320B39B59CEDD8C47C816B90487DD7EA46CE724F9D659D545CBD271B974440971FC2E2B91A9D00E74275A4078D3633E21FC02E34A71EDA5CFF2ED63E41DD0ACD3C72AB4358B9141B3A8CA6447052FC7D9074FDF83B98357F3851FD0880AA69B125F714E56F1AFEDFC86C5F81EFFA58650211D842A5E3AB9C23707CB8243D6114A58A309DEDB88F24DBE215D38C8F5E61FEB7961D07D9D94D43543A6586EF8529BC05F3D9764ED3AD6A1828515EBA77A6F4A8D0E1BFDA6F1DA971964E9239825C5740B033F7F9DE1E096D827CFE4314B064CF627B0A05F823CBB287DECFD284FA5144F7D56B672DE5BCBB6F83AEF3EBC75726F505BE921D9C382352042F924CFDC0C9D47A84134992727F8057A793385BBAF27F25CD1852AD843B0EE1BD6070B73E50498DCC82CB7337F7D45B501F8051CDB4F74A1082216EE8509E3485A9B74D703B66FFEC3ADE5E1FBEC3E8932D3ED9029D396D92A67AAE134553561DBB83AB56783E1CFB48BB69B8F3435D49DC901DB386C3DB4ABD5415644B0D450AF56240831AB74509510A6FA823ED7245CEAF874DCB89980BDA893032E05248B93C8A95962704C76729817E3D637F95A0C2FB31D357A58E62A316FC4B17CF8993D686B89FBF1715423671F6886CBF870E8FFB6D859A3A28D7D0263B2D9067D11E7029BC533E778252AC8ABAEB9BFD196D79E242D24A77E5B61EBD6D30A6D866014C1BC216EE53A0F6B06A63BD496DDB4BFBD5ECBCBA78D9D3D1172F05049E93E0799F86E71A2F7B29E2294205093909B8F09B5CC32843A1AC2519EE3A955B553AE2957BA5030F0CF4EB15FA0945270B331EC312A64B785CA4DD2BA6316ACE038FD657298E39AACB7D65588323FC7B612DC1DBF0B97EDC811D509A9BA9AAEAE3DA087AC21902AF07F019483B0A004DDD53D6BEE250E0F6F2C2B2B508700D41BC9B9224D19EBFDD342B4577A27458EA814563C411153A4C57851767FD4A9470F321E4C0C186CFB3A42A1C184762E0C1BAA262CEB7AAA3DFB52B86E1013F62F9D3ACCBD2E64BE01A07F1AF765F9A452438BD943692C612D411A5C93262ECCCB86CE7994A9B6A2B2087DD50B152C11D5C91DBC8BFEEBF6E0DA367376E05803BC01C8E727EEED81B8DD3E57621BFEA7D97DD057712C1A6CFC31C8BFAC51E63B00A0C4B65C98D6E441CC652E03131484B6371212AF1A37F10D1889EAFE40B2748578B79DD78AF8259B15E22C6FFB8E2822FD70E61E9BF2DBE16B34F86495A15168B403614B642777D0B581029078BC1ABC8EAC1E0C6F1B653BD294386899C85167E95EF8F8F9356635386399A2ED120FAA6E63F4F5939215D93D359E3BD5CFC89066AD771ECBF1E7E05EE4094CFB89D2935FE3B92B7686ADC07E3DEE937B36485DDE18496F85660F789E0ED6029BCAB39D660EBC79A9FB6D46775C47BDCBCE3C0BAC8D3D6C144565C1E6B20755751BF9056815271F19D8AE6AF5FA25913E1145DB1C7DE8578DEE8FDDB5747586DC40D055C59E5B588D9CF9092B4774C610A9C59DD8D0050DB9AA2258A4D6D943CA5785425E41256CFCE205FE0D015B0728A56B8FB4BC61651B8D270C34280C669BE84B6780BC9962D0C90D2AAAF6C4420750E5A2535201BD4E69A6FA636C823ABFA73894640CD99D21C7B7AFC701C68DB755E8C73DE60357320FA1651FE39003E28FEC00DDBF9FA023BF6E4A221FE7D8B0A70486836DF424191A5A1DADE3CBA892964932F8A26244B0C6CC5D281C5CC2492A3F365908BF49C58F5B06D027A7BD3AB12C9BDD0FE02BDBBF4B5EC419BDBF9BF23E09FB2846CE2602E5C1265CE22C3D569A69BA5D4CF6FAD61CDF8CD86277F7D6238930375BB1B5DF4DFC698273341CAC2708A3022E6F21DF8F3D9D028407BA4F7F62F6B623A8BFDE08F6EC3113662ADE2196C1E0D6BDF98F7535499E10A4781D657326F733A5E87ACE1441D0B629E1E5AB7232F3BFF0048E8DF146F19DAC6650E70961B44078ED7EEDEB63C3DF25918575305A9215B3DEEB99C242D7168D2DDC362BA7AF1D96A9679973F88B85DB83EFFD42072788393AB3A1F5644F2CB692F148D98C3644F835716D87259667808681008F41DC61F25E22C08E604FD3029568FEBE962B645CCAF50C98513417E1B31AC36946BE3DC1005FD9426FABC9940D0E20F50ED379918FB1F8CB0947E1C633D0BA63CDA8561109074C493EC21F89097665EAD6F75BB26B2487E6D9BE22CCEE3600006B119179F51AC44C39FF919214CFA6684A35E25CAA472641C00E7E6F3AA36ECCB0DD25A1EFE968E3F000767E0119B3D50EF7AC7BDD8A9BF90912C44ABCC330C0385F288570A1D7CDD8B70B13906E966CF62ED4BDC8981800716E5C873F8D0BBA5A4B3DC2F08CBA4E2469518BEFCDF8C2B2FD21F4C76A34D0EC584329E3F3F6543375E684338DBC66AC77BDF21B5BE484E5A23232FE565F901679FC0C78D77F65E211A35E45C04E3E59D7D0CD43F804521679B9C8A7628F23861FE31C38F25E23F8E563077480C37F8CC774D3FD3D72DE1CBE4A2677A401E01A3F13180A18F70126EE80E8DF3B0A6282EF1657D3F28119CB9331E8856C6FD6CCC16EB3BD3F8CD85BD596AA33DFC13AB44E3E2093D787A6E1DB7063152A49C693345474D835027820C327E13EB94ABE107C1916AE6FFDC2935EC514B757D7AF81E94C18DCDEE122FDB1A790CE04F0921590105CD072272A58997C4D13D9FDCC455F34C1C32E69B74C36429F351F91C36BAD5A8FFDE8DF33B1BD90DEAFAE2C233CEFA3ABEB61389AA677A727574B58357785C1C19CF46B4669D306FEC5AB3A860D282A958D1017B015354C545BB084CA11E539679AA5DD6F200CB50278D8B635039EB20B88689F5D09BD810F4EB5A1158D534E11C9868A35FA1C7EAD449049255A8F86450BDD61584D46D1FD60001081AED10E0141EA8FABB5BBDD99D032D940EC8B062FF1D6C65F4C4CA9AA4732F255E54E830B159A9B664BB5EB333B99B0FB35291069EB9FFA0A9AEBE26392A79C6ECB1C47ED7A6ADF6EBA2A6A9A99A5D345B05B042F36A7FF13D8B6AAD214BD9252FF05EA5BD040A7BDCACD10EED5CE8713080F5C2C269CACF5597989909D9F6392C270E2C770B2DAC57C8011F26AE7C66ADEED801ED63C03FE8A7171696B4D5324510996C3B4F54A5B99C55D5E8376E3C9F4B4FD1D705A65C10A36DBDD9344F4F2EC1C590D43123F93F067500996342C9ECFDC1313A75DC576C409D3FBBF733B1C2FB372E24631C0C435E38D6AFED179335CF6F43F18591F903509BBD354D82708688A00C5550487BF698EC3BF1FE61BE0908B6ED8CF246F5C8CB524F2A82CE9C0822C630FBAF70E1767283EA9F9998573DA1C544E0645530B0877CB7E6C721714413BAFDDF65D1C9CC105B4C242521B93A11DBEC5E00CD87A3C28C6C52A267C82E7FCD4663D61A70B85325DCE51F16FEE772EF466A54928E2BE5D314AEF8F345DDFC36A4212A2B5A11CC07E732CEF1B6FC2390F2397F2FC8EE485A38DB5224B4B2CC89C9BA42F9D617462FCC95CDEDBE03874B55C6EB5FF99C5FF516D51CB2F4FBDDD8F31112E2683A35F55A663CEAC5F77C50A3C0AD3616C0B892327C9B01967DF411EB28A23D33BDF98678D4B458F2A76382B64CA3A98E46F53697B37C61815BE83A0CBD9B1B3BC5437AB67E51DF65D993EB438732658A9952FE9E342AA78C02B5FE4DF5556AB16D668ACAF0175F544C91054DBA00148AC276A20A3ADF4999799F37143BEE12C695EB9C2696FD517DB76ECA40A8790400D6326D2217E12E35B5E349D36EFFF7687A11142DD76DACBB71E87D748F61543214625B9D1AA9E9F82DC57DB33233B8BA2AF5C49110481A8464675E3B2A1D34C40F442B71C1E62ADB7ACC156E5FF2A710010C46776A045B7C91C22CC265E7AAD3975D2943236C6493A94D88A8DF81A653CA75D89840916053440CC77DF507FD7795EFFE92430CE5A77268AD04D2C41736035BAC2F1398923733C0105339F3D832425C2BB83114CB216CB28ADB1C39EE6C169293413AE7777A1A35A2C30100A9DDB36ABBEEEF7031411746077754E0729ABD45075526F5FA44FB4C31D4B21F1C8A23419DFDDD28A668F6AA42CC14DE1E4D1F51D13EDA73BB529A793A33CE89EC8351D7D267C99F518E861D730A3ED8AB1158C127DFCA69EE796DAA98C90FED71C1C539E23748FD3FB7EDB76AB1510CF27CEEB6BC9DE2ECB3CA70D2EFD01286D63C87A9FC0CD2614F349990B3E71421BE61897617389ECB117DC9CD7C1A4B848B9C5BBA75030C7BA9D8F903349D810A652684BEC8CA2BCD678A75919D30D12FD864DA75514F0FBCBA814143AA5C8E5F1B597432D8CF01E37C4F171ED79F1627BCF7D74FB0C469BA3A1C47AC00A6AC91C01B300FEB464276C4E16A5C9D8A26C7ED707F09C41BF875DBD9FE425F39900F8A6BE0843688E0D2C7597CCD94B670CD6C36629A12A3D347E464DEF1AAF6B6AE89FD03BE67A7598C02F2678040884081125DE302D4AA44808FB55986B81EA0F968D26E6973CE103BAC94D885ADCA136C11D9B2058D84392E515F28FB8AC84B61A8EC8C2D0A8885AF34986EBBBE3AA790C0CDB63E4F3862802D3097380C77FBC21CAAF195A71955BFA0521BB250A59FCBF595BDD827B3E2822649DDFF4CE143EF673F04758735834999B59FA9324ACB5AF832579101C5603AD474FD8B2212E18FC72BCC0FEE8534F143585387B89C8EC2F7E091C1FD8B5BE510821309A7E618C86207A622DD92D7B04C5A593468C65DA515ADDE40449EB1B01172BF4BE1F130407A2227F82292C5D6E20607D37D7ED3AE38AB7A6F32C69552FC1FB2B7CD34AA851445B52362D152AD65E34DF989C47B06F6C45DA0AC6D86A54581FCC1D0D1A084254745C4AED978CC66AED04FDA666F8EE3F70D28C8343600D97866F66AE1066C9BA9A372D2E0950AA903583B72EE7548588C487C63823213A6516FD39F288AA9DF73FEE7B9D7E6EB2A7F78DF071884ACCB3D06F6F737A7A08CFD5A157CCD3154AE2FEA8AA72DC25E215C1856A60E6E88F1E32E3ECEFDF38D24A8036AC8FD07184F04E8375DC23F75322311F8545B40278795E23A73DBDAB5253A8A25E70F5AE65BC647FFFA4664E170821C3D8163E0996078AB595EB9CABAABFEEA92F884C1E13AAA9B1219D17E7DE81CCD79E817A8AC165DB310AF579A85C8E39E1226E167256034727F28CA54E50AD32241345F7BE421F34DBA681513AFAA3DA059FEF6AB329F51343F05C5DC03C45CDE0BD47075F47EBFAD1642453ED74ED48A15F8020799DB2973556E591BDF80083F408D1AA1CF537D494A70F14495E3B0875AD48B8F66D4FB2237DF30A9005E4C562C4964F4C4EFDB9451A0C9AF333BE913FEAD4FB458CD44C1799F32751095B0EE03DB6EC3DA547D543B0F4ABEEDBF0777D29CCE17FA3EA419F57AAF33ED9D93328BF3A5AC172002E24DA42F8C7DDE6DB19FC94C7FCC29D2CEF823CC295B136A87E248847E6DE881D4153633BDBD6CD40426858F4C8BE3E750318C0352A4D70725348785CC3E043DB77D0A7141B28F25BD41389AB1039F8AC66F29A2123C17293F1CF649D0B990EB6008190F95F3FF3921692335C33584EBB0FCB5FE2A546C44BC34075F2CEA62353E0F0D9A37A24AAF5CC8C8806C5A7F569E9B11FDAB9560BF5133F8A38153DF00BAA6A2A556729CE5288EFFCA52DD8DDBF4E3F88B9CEE40B7729E93F3F35E6A1A817746DE1C7B6DEDB6870FA01B46DBE9E6EC15CD292A67AAE5B1536D0B39C43F861810D2BCB23EB47C978EFF528C98FC14636C0E3AD50BAB0F68D3D79B70772F926BA221A8A7E1140FFFB802C1932C542A5FEFB290C54153AD4F8F050D3B75520D29B23FDBD437D9851C467294D1F9ED710D333094EF18B70E003D979841B5FAAB54B0F45D1755A24B22ED8FACE65812F3A14D99AE3188D9AA5374B6B4C8C32444501EB29D60E92A45035968F8F8E083E4D3EA0E296F0F7C130B57C08ABB36D2DC1F2D606630DB9DC737581B4136147BBF7C32B7FD18BBB6167AFF5459963BD9D1D0D54CD8449B1661A01FE641CFC1F1C180C763B6F6A86AC3B587B38AC9DAC2C2D066E626CA5E918DCC22D3C420E63CA73B4DE433F679764EB0E98F39456E4907058FC0E9193CA1349AC73860C3C93D15ADCF2AFAD917E4E2ECDFA674B57ED4B9057D21336B7AB48711BE14D74D25CB31B0090D1463D746D6D351D297CDD86138A3D381A0F4C2A2C3CB0D1C2F7255E541D58FE396B3BDD9221075AA4CCD57E5F2B41CFA2CEF4828DFCDEA1CEACB0EC2FC07361BD868879651B46EE0643310E185BC8D186F22B51C55975C1CA36324D63C30782A5AEEDE7379FA87B35DE7D36908CC02A7A8E9660F73DC9DA628C0EA00464500B4AC9BCB0653C971844B3D5B243437F9B5F832120EBC356568F8248D3F32C5B8D3FA85A3428E9CDC12F1B358AC192C02B388C5491B56990CB998243CC0B1E40338B580B302B1864A825AFBFC5B61F0C28C9EFC326CC73CAD9AFACBDF8683582063B18BEA2340477476EBA8FA4A44BB9607CC14DF74D46A26D2B593D47A3EAD547F5DD641E30F4767C56ED5F3268818FB9E5648AC0B436A06261ECC35DBC3364F5F336DE4DBDA1E24BDE48B9BE338CE51DEDEA6C04FBE9DCB1DBC6AEF6412B8E601711DA08F53E3F05FE072DC9DB329DBE9A1B59BAC50987DDA9A608B90B092FEEC78EF49FB14C9670136E76261932E9351BF084A5DBBD0318EC14F4B66E67D6C44577A3142102973EAD208ECA166B8B3373FA9BA671266904B09A5AC2C2D08357E47E3D1EEE81451F930039DCB1823CE351DACDB5FB8017302542E19530A70B13CD8A417E6CD1BBA47A11141B427F5BEC899582CA148361D330DA3DDCE12F0B7099AF260B2DDE1D95E30C65BB6CBFFD5EE09356D43087A86DAB3FEC4848E416CBA7C2996BE1C3164C2A227ADB35A9223942B0EE4AEBE72056DE68FE5C658B07DA31F3554C4FAD0F1EB56B2E5FBBAC55FFFF349244EBB6BA08612E2E6BAD36560BC236C655D54D6D04CFF35557E0F8837FF07BA8F6891ACE56A51F8692EEBE010F00EAD32C61C20BBAE56C9E74BDFE894E06390026E65509266E594332E4F46FE2F60D3DBE23CAC01EEF6E8A8A664749AE087CCC430E178859F1FB5C92AEAB9AB488E07E8F02880B27F3CE2C98B2948FE01F57A66798E02EBCD23576617EDBDB610F45909B9676FA926CBC453CE52B07D44428A21DF974B297C3ADE214C72A4DA7DA7D36849C3D9959D56E00614758F9C8F540B941116B3B8CDB159A9F3976A410F8DE42EA0115056F2D300C72759462D5E243668C430D7C43B223FBAD117FA83B29911FFF0774E0D88B9D4D9FD485DB9DE139789CEBA4FFB815D88032E0F46331F40030E333D0E59727C62A15621AC41B8BFFD3F6A0AFFC88495C6DF6900D57D5FCA83ABFD4EA13697615F602E6F1AFEB1EACB01EE07C9043CA15207040E6263304237F61F4995C98408DA221C0C3D2AF7A849389931CB4256AC50CB262C60FC63662072AC26CEFB9B1247EDC461DB01100384683DE02571B5ABA8AC4CA5416928DB9B565B1E610382E993F0DABDA45F42AC3214EEF8C778468864919BF4949F0A225118F9025670EAF5B9B1F247BB5C2FFC905CA55C1A010B60C4DA10E6158227935C6778E2CD61D64389CDCB0E69DBA630294967198FD0DC25E75A47829113FB24FCBE702069B28A86A048509DA95A0ADC4489F11D449A77FE4B5051851975D057A4D74D2164A476A4D8AA07BFEBB98D0E32DCDF8FD4AAEDE64A7DE5FA9EBE7FCCCC92D6478DEC8B1579EFDD347D500E8499E35267BEC16DACAFBA3515C09BAEF2320BF560E1000785394D28632CB8AD160DB5CAF57B3D24DCE623B98AA35471808883EE15075282DE9A6C2CFA7BC28BF0CE5747335B2FEE3865885ABEA5E6967C4B7F8385AA897FCA8E8499C3547854F7D7D7D7A2CA6A7C7D652F64A8D46D7BDA33AA9424C7C6721F79B7D6A771D151A36F78922BBBDCA01F6AB1125609F6C0F7A85C4E0C6835E49925A7D7510F70D90F279E97EEA513A84911AB895B20E47E8F95C18C5C8E79CF09BAD0DAF33D97A11CEE1E97179769E484E686ECE313DEDF0F4A2F39C35505AA9A6F49D008CCD975BD895DB325A57BECA7728C60A692389F9F2D8089313F4586A8993634BFB4B992E533EA14884014004592DFE635E133485DBF65BA40B25CCAC2D3BB1F75D30EADCD3299645DA6813E2BC40DE7BD7783D05C5252C2098EF2A8641C54AB3F0463191E0166A89CC30D897D996E90F2EECC5CE7261C42994D13803AA9E5ABC8157715DF0EC77473A1D0270F6ED7AD29485DEA87F5CDBE4663A58DB4BE3FAEA9DB75E472BA5F979A980CE2080C63E27FBB0A23D1C967E2118C9F73FD80B0881C19045F9834B65996F18A0D332B4C4CD903D90FB1D98659F509834851E606E4E8BB7190E8753BDF7AF7D8794EA1930DE6CD0A0551D38A6A754F3032EA17572A79D983006AC1B5D122ADB11CF685A2B7888350CE60C32F631B7D02EE974238527A4035B1F2CD7D618717988E1856512CC29446870BA86F52EF7BBFD7AF2F53EAD11D2DCA794EADD6BE48A533C3428D6DE17AEECBAF7144D58E8DC83563BB7D1A50795E5824E9601AB4CA297449BDE1D48F25FAA55861164D6D0C3B1E9BBA34C9DBC07CC87945DBB2EB170C51B09638650BB794EE7C34B88E309450DF0A0827CFE97860ACCC91B144721F56EFF8B3EA85BFAFD5C7CA9BEE09F2EB987BB26A9FE000669AE6F4B039F7286B9EDD4F1C8D42D13288286CAD30F9BA3FB4F1BF93791BC04B7535A10D775505D0172BCD8D51FD0EDC1B6D05AF89181D119574C4B3B14C1C821DAEF1F25B9E4C5C8B7CE7219537CDD86FFF36A26B3BBADF5C8425C294EDE34DC82125D88CC95618C521464AA603CE6E6DA08371FDB19F113E3408561D3C668BBBD649AB416CFF5C0B730C381417818F9138DCA06C3249A438163E3AF629195FDFD44F584D95DF462EDFABD3273DC8B9529243EDA9A024B6A5EFE9FC1E7403F74C2A4C7A5CACBDDF4A3230FEDCFD8E93182B5AE97B755835DEF3820A6F18D147689B5F71DC827ED8AF4D3B32B6C319C923E176D7A5E966A7BEF70D31BF20BCCE23E5D3A7E57BE2CBD6EDFF48826E59AFF53AA034071159065193B190FEA1820CA8EE731ECEC24C127EFF155AC2E6755E48037FBC501AEF5520F15707C9F498399B29692A274CAED1A2E2A77F2CBA494AEDC9887263537C397A2428D00C90DFEEB53FBDFA15A23901299C836944CE1DF3C244EF873CF7633A3609C9F3EF3E8CFA7CD1661644F8898D821FABAAC56FBA35E01713BA1974FFC2058FEF3E98017DD3FD1F12E3A81C89126FDEB6087C2DCB217B15CB5B232C7AED2D9B63A4BD19C59C2F8CEE1873836DF0A0873F8251CB8B1A10CD145E5BC2C5CDE75E9C958593E112DBCB5BFE75D01559DFE7BD13D30A92EC42908927190563422FF06BAF1DDD8ED506C2AEFC58F8946625325F450176327F8C7A682E051092CFDFB63BB13C0A193D6117AFFFDA580E7058F6D8AC9531E598F2A5A8CC8AA050113B08D1F40313EA29D6CA431FE03638DB58A4789F0C27C48D16BC79931E317716E36924532E4C07EC337DDE3BC41B555F5980B43044C4F94BAADDB2CE678D030E939238D9A537A913A4E30C97C49C52B50E1446261BAFEA744C19EA81FBDA54700D0B7F4BA0FC11D2ED40B2B9E86D84C9DEF96E9F8B7A309185B24BDB4ACCA131A984F2AE65FDF029A9D44454AC2E6CE069FA7205BDC2732A431FA5612455C1D1034ADB72EBA75ADB58E6F583B4EE9DC637AD0316ED96BE3ABC956C1178F80E0100E0A3F17DC1CD6ACA2690153F7DFA7A1A80F3056C2D367AACDAF17EA3822C850812EBA885349A3494FDC3B175D497FD06EE32320D6FDA05EB509E803670A26B6369E19A8946B452333540F5FA1796819C149DC4DFE57B8F8B063E3A3B335A7E7FE5829A29F7A0AEDD422C5B7BD3E9993F9C959C4E56BBAF3C29E571443A1AD5F6BBC561D89A5EAE6F2762CC358703B89368DAF5BF2F2150077E93B7398853B48214C61DE4D8E9DF4F2F3C84A8FEDAAAA0A8A556B2BFC02A77F866162BFBD295727D1AE0F5D6433EEEBD3F0A3EF2B45DA67AA721CD35E4D1082E6E37CEC073AB8F197FBB6771D56BBBBCEE1F2CB71308B94BAD7F2EAA3770D69D92A9490F2A249A263DA52F7740FDECF3E6567EB8AD4AD3DB83522B8941BC97B545E0FBD7C7F4131978988029EDD0C8054C67D3E7C5F3618E935F37703DE9D9783B0D0334F3F9FBB994E57BCD9BB6172631A5CF400757FD88BB1EA496FF74BC9761C7B5B205906AD76358EDB8B56F58A5F00452412E44EBF74F96CAF7B412EDCE671C3445D842E4482D671B98CDEAD5FD33ABB3E7C1053AFE9410A44F816377BFD164E8BD63C382459CE94697F8FA1D72D24B8FFA8F68265DED2BB97F45F93E04E82C823FE89E635FF7C6E365C490576F6052DA21201E7DC5335723F493F0671D8AD9D2BF6590C96A7AC1572C8E777D3B1A525E2AABCC2CF20AB40074E96789D5A815A7561ED29F63F5C79ABE25B881E5C687543AD3AAAB72C8446936EACB3588678634E757646CDFF1BE7F1DFE4B154D8DC6D5225433BDD99B3F760C2F76D0625345F50C40E6153ACFF39234BCE2C852A0A0CB6C5B8ACA9A61EA976721C43F125C9F8E406F17DB362EA8E394F06AE4DACD95F9DF811C656F42699446E78C983A7778EF9FB062DF747AF5447F4B3EF73AA965A143C3740F721BE495A86A55F6498B0CE6779476C5DA6179DA1CD435F0F4685A9654B1D8FFEF0F6F6FEC3FC45FA7E7635328C7C5B0EF1C1E019AFC555535B6ED6F5D043DA8D1C0D5A243CD50B828F306E51A87D16E1D689D0527A38D43964E61915E3DCE682678DF69F3DB8CC569E212960C7DBCA34C01D57A8977C34A511B5B8CF7DDFD9758129046579827BA924CFE0F40337C9D5549AF5D70E68F5ACB9A8048B625D6689CCAF41A88B6BAB808C48DD7A7E9601219019EA0E4AED8440CAF7741F3F32BDD61F23A4EEDEA93AC99FFE48552DD4FEC63436EEE1437C3390553B801B2F7FA3904B6E585BDDC4F91F97F33074D4C7CBA57F4894B8600F956506F09C0F01A48B36361988F7C76CCAF7E87B80947E0A4E12303EB245D396E6E460E12E4D6C33015676B9DDCCF8839963E66DEB6D85F038A15CD2AAA36BAFCB8898694C960ACBA37219E956AAD896334C6B8E6D3BFE410BB2AC40F5BB9ECBC08F59B43986E746FD63CF6FA0818D1504F157694F5AA42440047C40872393CDDBA63088BB519F59B6CD930E300DCBB6FB6DCB5E48A68A0BF02822D47EA2A28FD9925F18943AA7B3A8E9F65277955A367F00DFB15C5C2344436512B700884EA584EBBA37429A1AE1E4EFED35FAFAA4400CDEC3408B17027BB374DB5FB4A067FBE41E500E8F2437C560E52BB1B08E35FADD2DE1D434DFAC23CAC639ADC3F6B63901274D7602A19E3ECEDB7528B125A35F4A3F8CBB0DA89592DB689BDE0F401971847A6342A928DA17E646D4745FAC7E3410A8529214CA690893348330FD643A4907E1DA2F9FD550CD48BC4F4CC594B4CC43CD7FFED819A7E14A8A82D2EBA6CFEFFFD37A4014651D32C26032E00F37E94FCF899DA5CA6FDD90ED72C751AEE5BFD48C09770E602D287A86A7C8597526A49C2B891FBF574FA118DC0457B8FEBE31BE8E28B67DC93FE0F4F3F5F35D4CAE646E801701CB963C565C37C78772208CCD69EBB56880AD4BD1DC43BD6E3D5EAAB104AA08D311E1FA1CA441C97DACCB4758988B7F62E2254AF57ABC20690675967B3E1C94009BC40116A1AB4E91C61B7313C5846DEB33F183970D8BAB7C9284C22B2EDD03CB31D4CBB1291C79AAAF94C3491BDEFA57E546FFED859A1D9E5A11D741BF3C4962111ADC17F6A14015073050E6D593FB5C92D64B16E90D29184D67696CAFF75875F2C2972B27F18336022F7E26ACB2099B4FF52DAE88C9D001377B9D03DC214BE85F1CB1AC5F9BD62239CD137093AF25BA03FD8DF2BCDC7760717FDAC320BED0219EE19585EDE0CBEE3D153EE0ECD560105DB7ADF9AF2C9FECE8C36EA27A11EFE42C74E40B1606454F01F58B7741F013E9C3AAB57137490A44304DCD87DD877E700FA3D2705FD6EBE60744B4D253B3E26C4410418090824E0AB2E6C9745CAE3FCA3623998F189188992C73EB5689BD9072EDC480E1FC22804F5586B6EC7C2442557859633CEECFF8D608AD538B8553846A6CBF61B40E51A827B9C60D9896331C1DD6FB8E08CA23A2C9AEE7818F193A26D166B4B8B902A70E242408913BE201629CC5CBBA0576B48ED6E79C2EDD418040886B11214208CD8296BE5B8E1888C84C4A57288CEE826F3BB0FBF539C8796FDAFE52379DBC8BBD8E7FB730052C95D9AE07ADA93880B977F915E9C4378CAAD5C64984E1124FA41823059F168FE317D51FFEF7D58BF4C9E8E9CA4ED5F384D5E13F704416273F4D04659F049B63B7B654C9B7661043D6AAFED6385E58E95E15ECF31633EC531C2FEF4AE6116EA2DEEB30806D4FC5389BECBD54FBE1924E6054B989813C419DE53A25233C0938B63FD5BDE2E4A9DC9092DBD55A4ECFF25CF81178A74D9B5ED6E58BFF8DEEA66EFE553547CE0A689178EFCE08E6BF5B0061176937A093B344E5232C429CB41E24FB238FF80CAED272FB3396D8AF982DEA6ED0BEC76002F98A8041FB190D00E599BD3F8EA243AEC9508C42C9F2301E2BF59653EE665E986115428E528F14630661573969BEF80C9E22F0ADC1CB720AEFC271176F3BE3C898C50028CCB2042C3AC7FCDA51701155FCF16B2FECB669D0268ECA8E3B68BA89E34F9DA1358775783F0F915B618DE5EBD526B66D13C8A9A8C976EF2F2B1F6ECFE5AADDBFA1A9A815CE6D17BF6186F0BDE42424DC21AB11A40BFF2622EB888DC521FB10C60D153B31C5DB039E7E88BFB716C62BCC554307A6B45CF0DB5472FDB1B46B811EF96C86BB13272A817247B14C93C5B7643972329B6826C0CB4E1ED01D19B98D47FEEFDEC13FF4AFEAD1A86D2452B03A58704CF15569EAC9B1095608CEF5C2BEAD3A5FEC2F706B6A20FD92765659BE613B2C8E3B3CC3985A4F4EEE0F58855484281EF7D9EB2422333B40AA1F3393325E615663AAFCFD21C955BF182AFDB92DBC8F0F2D8A66974563C137A3FEBCA2F462B6D5C276238907BB1CF4E6CECC3AB93E7A173309884E7CFB0023A4AC969802396B0A3EEE3255DAD4614233FE195BCAC17B74A7024A2EA488F17C14E6029F957CC9D738FE335524E5C4800766FC9285522B7CD133E710D8A2E9D8F392BF300392868DB543033140956556AE227AACF9053DA5F2C712DE8A62D76B33B1A6D80B4F59704C846C0EEA6F4DA2307007EBA0A45947CD805DA7BDD35B4FB367269E51BA2539F9C281E1937CC3405EB666B085C35B992A56ED7359D4DEF9CA9BE4A32AC0AB6DB529955E0ED9F0C16051671CEA4C292C070524D99152164BA206A468139E3EE03BA4526B22C0D8F92B9F0AEB261CB93FD6D90177C11B9EFE50DC7BFC2C6D0BC288A855A5E748D1AF0FE234D53567E56682BC99FD8C4CC4C8B6BF7C35A7F17FBD487E56145CCB75230BF2800AC8FEFE44C8340DCC17ACDF970861623C99DB492AEE2B8D2BE89DE77A362A8335A80DD47838D76F4FC94A433A4997968E32F9B20FB06A79AC9C2778B92660F71BE6F5100922BCA316BA3DDE2DB0D9906BB12085922DCB9098162B3024F8B26A438C617F33D9AD09938D52CB7C5CC1920D83A8369DF3064156B3BA5920ECA0DDA69E3B8C36C66D6A0C1F34AD4B63E5C8151AD67DE097EAA59B52696D9EF43C42C56693E47828577B7B4A7D6B1CA9F1670FC6F0153CFFC3F319FE575478227913D5EAD7732DD18A3E0801CA65A00364BD07A233E8EA5BE0EB1A847DDE892CFB4EDEFA0ECD63E69B1054A76402F8E3D7E04E349AF6A98DC5F380CC09EE01792720CAB52DE8D97F2BF56B226152255B686F93B7FC9E289C28ABDA263AA213C2E90C320E9981B8012E40739A2333F0D25B87AC95A3BF053A37578310C3222CD600125F22DA64F6DE5835676006E9A76EC580D290C16B267FE5FAB7952654E59D64400726BC6F482AA61FB9089DF1148D74E0EE704501A61AD14D4D8B6F24E87B2CB92B7BEE0C391E4F66AA7D653DAB79EAC0144511DE6C6182203423414350F2F6BAD516DA7CBCC70798BD43EAD4A65DF9716589C443FD36F66B529802AB2B506AFD894B440C97FA28B1196888A8A014FDE84C1F12AB1CA4FA2D584C8C66B1DA2006FF5786B849FAFFCA46EDAD80A42DF2ED055FF9F3F060EAB64E3F1F089C251A2D19F45B9543D4FDDB97A37761F0CCBE4AC479B268F4E860F98408E027172B9453C5429546208CC74D8A44EE7DE8CBE631F416E4A3BD166F9319C9970DF7E3A9237C6B7D0765423CC8C1D448D2A539BF9C2EB6522EE9A8BE0B21C242D36EF5D2123E9E736DA93799EBD83303E3B3C7F6840CD5A02F140DFBD27397C3B35E06E90A959343E06DB3810AFB04BD7DC50C38A6D81F29EB405F5BDD6FB2AC4AE869679C301CC4C3CE6131DAA429DE4E73B0E3FCD313275155F242670F1BF756D502801DA18D8FEE3500B4C5D8E9F969F5D52D288A95869A7AAEE7D53B9BC9760C58B90F93C65631D272428E7085712D129E11079D56C862CEE6DD42851F13C8BF99217F53843CA3D3BC07132E5D8317C28263DAB41881F5D14794A7473D62CC0EB68C6643FBB8223DEC3AF269689A5C9A117B4217E76078C593606EDF5D20D18395551B9744AF976662D238DFA3B82C32F2AC43BFE3760F6B7B6807E24BD37785B6B783EC4DC3A67BB2E7EAA5C640E956987A9B7206373D29346F303CE721AFD3B62D664290677C35AB46BD9353C30042549223AE4649A13CE20C6EFFFB2770CD6C04B9793498F0A4D84BA73914F5751C75133B73ECE1EEF9E626150C6EF735126EB6FF1E0A598A6FC6135E044B236DED3CA772B62CE4BC2E3B2EE9DEC9056012C67FE3F02A49EEC7563D868E516DCF9FF17F10297E6C51BADB00D07C8D3DDB856CFD48C6E8F9312C7921E6FE62B33249EC3576FE300E6F1C80B90CA5E1923B3AC1F86B603831BC799E6BB052EC9C2F39FCF263959BD2858914597B41347535EC016E1391EE12AFF036831C6E54AF4E1FE3D8966697197A8C373FB69F34AB33EB6B8907E1008253B6C84AEF5CB8A9195AF5B528887A5EEC6BD638780B640AAB5D63C7E78B5B77F13352D2C8FE0DE32E6273A1C99C7B6C4B43F69C9CB8A1D6C2649F06CFDC4A699DA56A18E5866FF991ED0960BBDCCDD1E853577192C99BE66B73341797D03B081C491FB63458261AB97042018D5CAC9A6D61015886F0754BFB3B1AB7ED21DCFA58418A363732DCBFC32BA0085889246CE6A1A95C77B10A1D2ABB4DD2BE7A5108FAF5AD10AA7446E47BA4DE0528F90B1208F4D0646C832058FA757ABD46E57D9CB2C0E8AA924FB252E23B8ED469E4898721CC1DDF0B246BE27F3239592019B4E6709F3CE4A0915E7E3FEF9BA97520ED4BDB0ED34D1DDACA5A6CA5D4DD694AB3A10B31F7D092BFDBDEADA2FB7D09E369042E4ABA1FD3995298DED4028A53662D709077894EB3142893DC983C3602F9EC48441F2ACD0798670EB368AE1FA340FC8944A988001007A29C360AB0B4C01EA60F5035185A34B55F946EDDED6C23941CFD6F6822576BB2AD983716A85265B2F774EB86DF0D7F0F761D05FF4B5AF265C8A8B259AD1F06BF6C28E7BE41CACF9A07D29DC285E1E6BC8DB8CB054E414557D97E4E6794A8715375936A84C7CBE2EFD1B87E7BCDFFF9CFC3898FDA21D7D2CF3999407CCCBAEB749FF65404A44EAEB06E81B10C9ED2625B0AD2FB5F01258937D27A2825B1417844B0AA597D9F1FF68BDFCC9686704064C8C6B97718566A4D8C6D290EC6812943C9DD66756BC522DD57283DA1DC3CEB8A1379942EFD6A59259D4766792153C30A07D00C510DFE8A9292269E557FE5DE61348AF7C497071FCE7CB92CA4535573D29DCAED5EDFE57722F32DE09668BE16D7439F0E73653AAE2FAC7ACDB6A84D85A1F0B83DC4FB474E1AE57E392B950BCCA8957A0F3BC36A7B1628F02A8080938EBC0D0A465DE06300FC8CCB676AFB3815AE95E07377E1477BEE422A2911B5CEE1213860D323C31CDF79676D38E43DC04980FBEB16CD4431DE807F9F16218E857B9CF24111CD688C4DBB5D9BD9A8D5E5549368892083B1E219F33F5D125C9CA7C7DF74ECAB00F835793CB025CE790511D09443DD8227D5595E88D84DFD4248CB740E90378D81504D86A2CEA3AF25A7852591A55D261282B03D30D5677EC61ACE21B3C71CDA31C72E06A4559551757B291CD09D268011A95420099AACCFFE2C50443531878DD35EEAA1A3B7E914C094C9FB632CC1E646AB1266AEC6F886A0D810AB8A6CF11C8369AF63EBA878355D1EC96A7E7B7538A32CCBCCE2563346ED5B2C84C8B3523B1A2F64A500481727CE1420A8536631977D52E43302A4132635F896BE18582CC2AC73D859B0AF8163C79DA3394F13A757F3DF324137A605FE2B980DED5B21F8907D1681A695B627AFF6F984E9C6B34282BAE41674D1DC8429C158A7D27F36C957AFF2CEBD9EC089A01D0C24451FDEDDD655485883B9EBB37395A40928D80793FD8795000C69830CF7DB10430C3F9C5ACE2FD1BBB94DDADDFD563F3552251D829D718F827C3BDF29597C3660FB9344B03F4D53D1F4074C0AF033118178E5D26F4629756151426502D558D9C79E8F42DA0F92A2BF282695B56AABBBB689A65DB976437DCE67C45F678F1B5A9775BFFE051CC5AAEC11DD73123D79780776D106EEAC0555B430A628EDFDB9C43650BFD58B2480F949C72A06269FD6D03F908478D72210C69418FEA8C5E9AAC07055D9843F3D2F011452521A0314CD3686FC8DC32F1B635F8EBE7463BA3D4E0B8BD88BA7EC677F77C2E2F037DF018C7A5648325E71F42A9AF22DAB0F34A7FDF487A6460EA0BBF23204310AB307B2E341DC8A49F356F7C42A4CA684A5D54C7D4FD72E72DE2DD10BF29DD68F4B4486CD446B7A7865855DA81017D1F72DD786F22AC9A5F7EFF71FE30E8EF595BE5259D3F1B7AE9B27B7C8C25C9180E1FD8D2B7E69FF97484607D55BCF57721B2FC2545034E8827E4A9107C43B2B8F24F4AC4BECEC7AF88F8744D2D549C1B3FC0BFD09A926AA29A2132B14F9611696D52F420BE15A4038C352A13F32C5C367FCDEF193DE1BC3DEA16E017F7ECDAC3DA749F15117A473A711E4C7AC4FA48F148F79BEA0CAB559E5912F610B0B5D0225274C31FA16AA32D9B29023C90A297F86D7CCEC54D5D940463814B210B285F03BCB749FE5B284842B42F50BD2D981B95185709F76C2E5C1E71453C4DB5AEF6BDCEC02A2B87C863FCA628A20B6B0B1AA61A2CD4B07BD57F2BDFC1CF31952B33F0FA12D06C5D9AC991CBEEC8A9AA607C82CA32448E3238C140A91D4BC440E108187A404522CDCAA8A65BB204F9A3F3358C0A4703C9687AC487CCB661877E4549A38BEF6E3F9FB9B19223C4317E19CFBAC871E93398BC0EBD6CA2B38E88EA8D831A1B43877515C369AC3076C3A7CC77FE0E87A69FAF389675D7E207487A282FCEEB27D983AA5644D922B7A641C483DF90E8913E8E11293E77531BF3EFABEF1B9059BFD55CAEB0CAFFA7EEC7A36BBE97B1A977DC8DBB256C1736B36EF8C57DC43F9B7303D73C97562A1C6E5C346C3B946AEDD488F9417C4EBBD3814DCA2086C90D4507D999B0BA6BB46044D1ADBAD47006345FCCC33591CC17320AD60931ECAB2632F0D6CB2D47ADC1DA2D96225F237D3608DE48C607999F2576DC133121D3117265A944D221F8D2EB8230C3EBDEE8D42327F558CF4B5493D00CC56B3D976C4B21163ED1D25980845B7AE78DD6496E6BD6A566044C55E924BE3711659BD6C84B065DF4AB8224B3B02F17EDCEC30E2AAD71F9AF5FD4816858DD69CA50AFD895DF9B6636C05F5CD2E511D6907613E2B6CA0FBCA02557DC5FD5FDD8F1E521A7D47F859BFDCC0B62AF4F904505B7183C56F3F37A1EEDB1A09C2333CCFC70D1BE24948553736B43B39C166CE5A039486C32BC9C143B9081BC366DD1803ADE0D03A4B4C5DF8B6631205CD761F5312DED3BE97EF61BCF33AB949DDFF44778DD3C454CD34D6C8489DD09F0DF90476B4A55738FAE9B7CF6ECB7CC04B4F5FE34D49BE4115BB8AFBC27001326C16B006169F40EBD5A9D4B3DDC608756F3259A2A1E531B226D31B033407D08F2DC9B06ADBFA251AF93BE87FF4A6C5D90A2A6D6C4E487BE52EEBD40FB57AD2D1C01F0532ED08E60C5D282CE68C6061329F81FC83F15ABCD715807B25242E5C902496F46665A6D3213AD837FFEB9E7980EFABD74B25560535CA0815827A1D1FB2C7E8B10E140F1B3198A956EAFC5425E4B7C052FC19A5FAB8EE14AA1160BD2103932E0A7EF109FF72FAE21B4096E2AFAB13B647FE01F4FB2CE30487586C13AC244738F3D25B229E6E76568A6CA14E8CAFEE2A08271A353628F20047C70D6BFCD4DEEE13AE4EFA503340A7AA071CA5F37BE235D6654E1B222C30C86D2502FAB899F60EEE807F7349D361EA95C86A02A17BFE72414EDBD53EB932CDFA7D1CC5898FFBF5A31AC1CC9758CF1A7AB98B0E56D6F2CEB9673FFB3BD43305F3B4D508BE4C21EF25B78D8E22C546327D1FD2EDC986C16B24FEB6A0C6C07B99A4AA20100FFFFFEFFFCFF0000FBFFFEFF0100FDFF0100010000000000FEFF00000300FDFFFDFF0200FEFFFFFF010000000400FFFFFEFF000000000000020001000500020002000300010002000100FEFF03000400030001000100FFFF020001000100FEFFFEFFFDFF01000100FDFFF9FF0500FFFFFFFF000000000000000004000100FDFFFCFFFFFFFDFF03000000FEFFFFFFFFFFFDFF0100FEFFFFFFFFFF02000100FEFFFDFF0100000004000200FFFFFFFFFFFFFEFFFEFFFEFFFEFF02000400040000000100FCFF0300FEFF00000100FEFF03000500FEFFFEFFFFFF02000100FFFFFFFFFFFFFEFFFCFF01000100FFFF0400FEFF0100000001000300FEFF0000FFFF0100FEFFFFFFFEFFFFFF0000FFFF0200FEFF0100FDFFFEFF000002000000FFFFFDFF0000FDFF0200010001000000FEFF0600FEFF01000200FEFF0100FFFFFFFF0000FEFF030004000000FDFFFDFF03000500FCFF0200FFFF0200000003000100FEFFFDFF000002000100FFFFFAFFFFFF01000000FCFFFEFFFEFF0200FCFF000004000000040004000300FFFFFCFF0400010001000200000002000200FEFF01000200000000000100000002000100030001000100FFFFFCFF020000000000FFFF08000000FFFFFEFF0100FFFF0000FEFF0200000002000100FFFF0600FCFFFEFFFEFF0200020007000100000001000100F9FF01000300FCFF0000FFFF01000400FFFF0200FFFF0200000005000200FAFF020000000000020002000000FFFFFFFFFFFF0200FEFF010001000200FFFF02000100FCFFFEFF03000600FFFF0000FCFF0000FEFF01000300FEFF0100FEFF00000200FEFF03000100040003000000FFFFFFFF000003000200FFFFFFFF00000000030002000100FFFF0000FEFF020002000100FEFFFDFF01000200FFFFFEFF0100030002000100FEFFFEFF0200FEFF0100FDFFFEFF01000100FCFFFEFFFEFF0100FFFF000001000000000001000000FBFFFFFF040002000200000000000000FEFFFFFFFDFF0300FDFF00000100FBFF00000000FFFF030002000200FDFF0100FCFF020001000000FDFFFFFF020000000000FEFFFEFF000001000200FEFF010004000300010002000000020000000100FDFFFFFFFFFFFBFF030000000200010001000000000000000100030000000000FFFF02000300FDFF0100FEFF0500FFFFFEFFFFFFFBFFFFFF000001000400FCFF0000FFFF0100FDFFFCFF0200FDFFFFFFFFFF0000FEFF0500FBFF0600000003000200FFFFFDFFFEFFFEFF0000FDFFFFFF0400FFFF0000FDFFFEFFFDFFFFFF03000200FFFF01000300FFFFF9FF00000200000001000000FFFFFFFF03000500FBFFFEFF0100000001000200FCFF0400FFFF0100FFFF02000200FEFFFFFF0100010003000000FFFFFAFF0200FEFF0100040002000300FFFFFEFF0500FEFF0200FDFF01000200FFFFFCFF0200FFFF0000FEFF020002000000FDFFFFFFFFFF00000300FFFF05000200FEFF0400FEFF0000FFFF00000200FFFF0000FEFF000002000200FFFF0100FFFF0400030001000200FFFFFDFF0200FFFF02000000FFFFFFFF0200FEFF020002000100000002000000020001000100FFFF0000FDFF010000000200FEFF0100FEFF0300FFFFFFFF01000000FDFF0100FCFF03000300FFFFFFFF000002000000FFFF030000000000FEFFFFFF01000200030001000000FFFFFDFF02000200FEFFFFFF01000300FFFFFFFF03000200000003000200FCFFFCFF0300FEFFFCFF0000FFFFFFFFFFFF0200FFFFFEFFFEFF00000100FEFF0400000002000300050005000300FFFF0300FDFF0100FFFFFFFF0000020001000300FEFF0400FFFF0000FFFF0200000002000100FEFF0300020002000100FDFFFDFFFEFF01000200FEFF02000000FCFFFDFF05000600000000000200FBFFFEFF00000000000002000200FCFF02000300030004000200FDFFFFFF0000FCFF0100FCFF040005000100FFFF02000100FCFF04000100010005000300FCFF0200FFFF02000000FEFFFEFF03000200010001000000FFFFFFFF0100FFFFFCFF050000000000000003000000FEFFFAFF04000000020005000100FDFFFDFFFEFF0000FBFFFEFFFEFF0200050002000000FEFF0100FEFFFCFF020002000300000003000300FCFF0000FCFFFEFF02000400010001000200FEFF02000200040002000000FCFFFEFF02000100FCFFFFFF00000100FCFFFFFF01000200FCFF01000600FEFF04000600010001000000FDFF0100FCFFFEFF04000100FFFF0200FEFFFEFFFCFFFFFF00000300FFFF00000000020002000200FFFF00000000FEFFFFFFFDFFFDFF0100FEFF0000FDFF0000010000000100FFFF04000300FDFF03000200FEFFFDFF0200FDFFFFFF040004000000040000000100FEFF0000FFFF030004000000010000000200FFFFFEFF0300FDFF0200FDFFFFFF000002000100FDFF0100FDFF02000100FFFF00000100FEFF0000FDFF0000FDFF0300FBFF0200FDFFFFFF0200FFFF020003000000FFFFFEFFFFFF000005000400010003000200040001000000FEFF0100FFFF01000500FDFF01000100FDFF00000300FEFF0300FFFF0400FEFFFCFF04000000020001000100FFFF0000FCFFFFFF0400FAFF0200FEFF0100FEFF06000200FEFFFEFF0200000001000100FBFFFEFF03000000FFFFFFFF0400050000000400FCFF00000000FCFF0300040002000000FEFF01000100FEFF040000000500FFFFFEFFFEFF0100FFFFFFFFFAFF0200FFFFFEFF0300FEFF000004000200FEFFFEFFFBFF000002000000FBFFFDFF0200FFFFFEFFFEFF0200FFFF01000200FDFF0100FEFFFEFFFFFF000000000300FCFFFEFFFFFFFFFF05000000FFFF0000FBFFFFFF02000200FEFF02000200FFFF0300FFFF020003000500FEFFFFFF02000200FFFFFFFF00000000FFFFFFFFFFFFFEFFFDFF000002000000FEFFFFFFFEFF0100010002000100FFFFFCFFFEFFFFFF010005000100050002000000010000000100FDFFFFFFFDFF0400FEFF0000FEFFFDFFFDFFFFFF0000FFFF0100FDFFFFFF000002000200030000000300FFFFFFFF00000600FDFF0600FFFF0000000003000100060001000300FFFF0100FDFF0100FEFF0400FFFF010002000000FCFF00000100FAFF00000000FDFFFFFF0300FDFFFFFF0000020001000200010000000400FFFF02000100FFFFFFFFFFFF01000000010001000100FDFFFFFFFEFF0300FCFF060002000100FDFF0000010000000500050000000100FFFFFFFF01000300FFFFFFFF0600FFFFFDFF0000FFFFFCFFFFFF000002000400FDFFFFFFFDFFFFFFFFFF0100FFFFFFFF0000FEFF0000000003000100FFFFFDFFFDFF01000200FEFFFAFFFEFF0300010001000100FBFF0100FFFFFFFFFDFF0000FFFF0400FEFFFEFF0100FFFF01000000010003000000FDFF02000100010000000000FEFF0400FAFF0000FDFF00000300FCFF0100FEFFFFFFFFFF00000100000002000300FFFFFFFF0200FFFF01000300FFFFFDFFFFFF0100FEFF0100FCFFFFFFFFFFFCFFFCFFFAFF0100FFFFFDFF0100FEFF0000FDFFFFFF0000000002000100FEFFFEFFFDFFF9FF01000400FFFF0000FFFF0300FBFF01000200FCFF0200FCFF0100020003000000FDFFFCFF04000100FEFF000000000000010001000100FFFFFFFFFEFF02000100020000000000FEFFFEFFFFFF0300FCFF02000200010000000200030001000200010001000400000001000100FDFF000002000100FFFF01000200FCFFFCFFFCFF0000010003000200FFFF000001000000FFFF0300FDFF000000000300FFFFFFFFFFFFFDFFFFFFFFFF0000FDFF010002000400FFFFFFFF01000100FEFFFDFFFEFF0200FDFFFEFF02000100FEFF0100FFFFFFFFFFFF0000FCFF04000000000000000000FFFF0200010004000200FEFFFEFF0000000002000200020001000400FEFF010000000100FEFFFDFF03000000FDFF0200FFFFFAFF00000100FDFFFFFFFEFFFDFFFFFFFDFFFEFF0100FFFF03000100050003000400FEFF0000030004000200FEFFFFFF0100FDFF020002000400FFFFFFFFFFFF050004000300FFFF0100FEFF010002000300FEFFFDFF010002000200FEFFFFFF0000050000000000FFFF0000FFFF01000000FBFF02000200FEFF0200020000000400FCFF04000400FDFF0200FEFF04000000FFFF0100FEFFFFFF0400FDFFFEFFFFFFFFFFFFFFFEFF00000100FEFF040000000400000000000200FDFFFFFFFEFF010001000000FFFF0000FFFFFEFFFFFF02000200000002000200FFFFFEFF0200FEFFFEFFFFFF03000400030001000300FEFFFAFF02000100FDFF0100FEFF0100FFFF05000100FDFFFDFF02000200000002000500FEFF0100FCFF03000200FDFF0200020004000100010001000000FFFFFFFFFEFF0000FDFF0200020003000200FFFF020000000200000001000100020001000200FCFFFEFF010002000100FFFFFCFF03000000FDFFFFFFFFFFFFFFFFFF02000100FBFF0000FFFF03000100010004000300FEFF020003000200030005000000FEFF0000FEFF01000200FEFF0000FEFFFCFF0500F9FF0100FFFF0200FDFF0500FEFF03000000000003000000FCFFFFFF0300030003000300FCFFFFFFFEFF0500FCFF02000000FDFF0100FEFF0400040000000200FFFF0000FFFF010000000000FFFF0200FEFFFFFFFBFF020000000200FFFFFEFFFEFFFBFFFEFF02000000FCFF010002000100FCFF01000200020003000300FFFF0300FFFF0100FDFF0000010000000100FFFFFFFFFCFFFEFFFEFFFEFFFCFFFFFF010000000000FFFF0100FEFF0100FEFFFFFF020001000300FDFFFEFFFFFF0000FFFFFEFFFCFFFDFF01000400FEFF00000400000008000200FEFFFEFF020000000300FAFF02000400FDFFFDFF0200FEFF0200FDFFFFFFFFFFFFFF0100FEFF04000100FDFF0000F9FF0500FEFFFCFF0000020000000100FFFFFEFFFEFF0300FEFFFBFFFDFF02000400FFFFFCFFFFFFFDFFFEFF02000000FEFFFAFFFFFF0400FFFF0200FDFFFEFF0100FFFFFAFF0200030002000400FEFFFEFF0300000002000100FCFF0000FDFFFEFF030000000400FDFF01000000FEFF0000FFFFFDFF0000FBFF030002000000020001000100FEFFFEFFFEFF0100FEFF0300FDFFFFFF01000100FEFFFFFFFFFFFFFFFFFFFEFF0300FFFF040000000000FBFF0100020000000100FEFF000000000000FFFF00000100FFFF01000400020005000000FDFFFFFF03000000FEFF0400FCFFFFFFFDFF0000FDFFFEFF0100FEFF0200FAFF0200FFFFFDFF0000FEFF00000300FFFFFBFF04000300FFFF0200FBFF0000FDFFFDFF040001000100FEFF02000000FCFFFCFF0000FFFFF9FFFFFFFDFFFFFFFFFF0100FBFF0000FDFFFFFF0100FFFF000000000000FEFF000002000100FEFF020003000300FEFFFFFF03000300020001000000FFFF020001000300FCFF000003000100FEFF000002000000FFFFFFFFFFFFFDFF0100010000000200FCFF0300000001000300FFFFFCFFFEFFFFFFFBFF0100FFFF03000200FFFF02000200FBFFFEFFFFFF0100010003000400FBFFFFFF03000000FCFFFFFF010002000100010001000500FFFF01000000FDFF0200FDFF00000100FFFF04000500FFFF0200FBFFFDFF02000100FFFF0000FEFFFFFF020006000100FEFF0300FFFFFFFF0000FEFFFEFFFEFFFDFFFFFF0100FDFFFDFF02000300FFFFFDFFFDFF0200FDFFFFFFFEFFFFFF0200FFFF0100020005000200000000000200FEFF0000FFFFFEFF0100020002000200010000000100FDFF0400FCFF02000300000001000400FFFF0200FFFFFFFFFFFF02000300000000000200FDFFFDFF01000100FEFFFDFFFFFF000003000100FDFF000003000000FFFFFFFFFCFF03000500FFFF0100FDFF0000FEFFFEFF0000FFFFFDFFFFFF01000300020001000100010002000000010001000100040001000200FEFF000002000200FDFFFFFF000000000100030001000100FFFFFFFFF8FF04000200020000000000FFFF0100FDFF0000000000000100FFFF01000000FDFF0100FFFFFEFF00000000FFFFFFFFFDFF0400FEFFFFFF0400FDFF0100000003000100010000000500FEFFFBFF0000020006000000FEFF0000FFFF0000FFFFFFFF050002000300FFFFFDFF00000300FFFFFEFFFFFFFEFF01000200FEFF000003000000FEFFFDFF02000100FFFF00000100FDFF010000000200FEFF0000000005000100010001000100000000000200FBFF0200FFFFFFFF0000040004000000FEFFFEFF020002000600FEFF020001000100FFFF0200FEFF00000000FDFF0300030002000300FBFFFEFF02000100FFFFFEFFFFFFFFFFFFFF01000100010000000400FAFF030000000200000002000300FFFF020003000400FDFF0100FBFFFEFF0000FCFFFCFFFDFFFDFFFDFF0500FFFF0000FEFFFFFFFFFF0100FFFF0000FEFF0200FFFF01000000FFFFFEFF0000FEFFFFFFFFFFFAFF020000000100FEFF0200040000000000FCFFFEFFFFFFFDFFFFFFFFFF0100FEFF0300FFFF0300FEFFFEFF030001000000020002000200FDFFFFFF010000000100000000000000FEFF00000000FFFF030000000000FFFFFFFF0100FEFFFEFF0000FFFF0100000000000100FFFF03000500FFFF0100000000000400030002000500FDFF000007000100FFFF00000000000000000700010000000400FEFFFEFFFEFFFFFFFEFF01000000FFFF01000200000003000000FEFFFEFFFFFFFBFFFDFF0700FFFFFFFF0500FFFFFEFF0300FFFFFEFF0100FEFFFEFF03000000FBFFFEFF03000000FDFFFBFFFFFF02000100000003000100FDFF020001000200050000000000FDFFFEFF01000100010000000100FFFFFDFFFCFFFFFFFDFF01000000FDFF0100FEFF0400FCFF01000200FEFFFEFFFFFFFDFFFFFFFFFFFFFF02000000FEFFFFFFFFFF05000100FDFF0400FDFF0500FDFF0500FCFF04000000FEFFFFFF00000300FCFF02000000FFFF0100FFFFFFFFFFFF03000100FCFFFDFF0000FEFFFFFF03000000030000000300FFFFFFFF04000000FFFF01000000FEFFFEFF0100FFFF01000100FFFF00000200FEFFFDFFFEFF03000100000006000100FEFFFDFFFDFF000000000100FCFF0300020001000200FAFFFEFFFDFFFEFF05000000FFFF010004000400000003000200FDFF0200FCFF01000000010002000200FFFF0300FEFF02000000FEFFFDFF0000FDFF050000000400FFFF0000FFFFFDFF0400FEFF0200FFFF0300010001000000FFFFFFFF04000200020002000000FEFF02000300FCFFF9FFFFFF0100000001000200FFFF01000000FEFFFEFF0000FEFF0000FFFFFCFF03000400FEFFFFFFFDFF0200FEFF0300FCFFFBFF01000100FBFFFEFFFDFF0000000002000700FFFF01000000FFFF0200FFFFFFFFFFFFFEFF0000FDFFFEFF030000000000FEFF0200020001000300FCFFFFFFFEFFFEFF0000FFFF000001000100FDFF0100FDFF0100FFFFFCFF00000100020000000100FDFFFFFF00000000FDFFFFFFFBFF0100FBFF00000000FDFF00000300FFFF03000200040001000200FEFF0000FEFF0200FEFF0000FEFF0100FEFFFFFF0000000002000600FEFFFFFF040003000000030002000100FCFF0400FCFF010002000100FFFF00000100020000000000FFFFFEFFFEFF02000000FFFFFDFF0100FEFFFEFFFFFFFCFFFFFF040002000000020003000300FFFF00000100FCFFFCFF0000FCFF0100FFFF03000100000002000300000000000000FDFF0200FDFFFDFFFEFFFAFF0000020000000100FEFF000000000200FEFF000001000200FDFFFFFF0100FFFFFDFF0400FDFF0200FDFFFDFFFFFF01000200FFFF0100FEFF030002000000FFFFFDFFFDFF0300FFFFFFFF0000FEFFFBFFFBFF0300FFFF020000000200FFFFFFFFFDFF0100FBFFFFFFFFFF03000200FEFF0300FFFFFDFF0100FFFF0000030000000100FDFFFFFF01000000FEFFFEFF0300FAFF00000300FBFF0000FFFFFFFFFEFFFCFFFFFF03000000FEFF0100FDFF0000FCFF0200FCFF03000100000000000100FDFF0000FCFF000003000200000000000000F9FFFCFFFDFF02000200FCFF020000000300FAFF000004000000FFFF01000100FFFFFBFF0000FEFFFDFF0100000001000300FEFFFEFF01000200FFFF0200050004000300050000000100FCFFFFFFFEFFFFFF0200FFFF01000000FCFFFDFFFDFF030000000000FFFF01000100010000000000FDFFFFFFFBFF0000FDFF0100FBFF010000000100FFFF0200FFFF000001000300FEFF00000400FFFF0300020000000100FEFFFCFF010002000200000004000200FEFF0100FDFFFFFF0200020002000100FFFF0300FFFFFEFF0300FDFF0300FFFFFAFF0100FDFFFCFFFDFFFEFFFDFF0400FFFF010001000100FEFFFFFF03000000FFFF07000300FFFF0000010000000200FDFFFBFFFDFF0400080002000200030000000200FEFFFAFF010001000300FFFF01000200FDFFFFFF03000000040002000100FEFF000000000100FCFFFDFF0000FFFF010003000400FFFFFFFFFCFFFDFFFFFF0000FEFFFFFF03000200FFFF0200FFFF0100FDFFFDFF0000000001000100020004000300FDFFFFFFFFFFFCFF00000200FDFFFEFFFFFFFEFF0000FBFF0400FFFFFFFF0200FDFF02000100FDFF0100FDFF040003000000FEFFFBFF0000FEFFFFFFFCFF01000300FFFF020002000100FEFF0000010001000000010003000300FEFF0100040002000100FEFF0200FDFF010004000300FEFFFDFFFFFFFDFFFCFF0000FFFFFFFF0200F8FF0100FDFFFFFF0000FEFF01000100FCFF0100FDFF040002000000030004000200FFFF05000000FDFFFFFF030003000100FDFF020001000100FDFF0200FFFF020001000600FEFF0200020005000000FDFF00000200FFFF0300040002000100FEFF0000FFFF020000000200050002000200FDFF0400FCFF0100FDFFFEFFFDFF020003000000FDFFFFFFFEFF0400FFFF01000200FFFF03000200FFFFFFFF0200FFFF0000020003000200FEFF010003000200FDFFFFFFFEFF0300FDFF03000300FFFFFAFFFEFF02000100FFFF0100000000000200FDFF0100010000000100FDFF0000FCFF0000FFFFFBFFFBFFFFFFFDFF0100FEFF00000000FFFF0200FDFF01000500FFFF0300FEFF0200FEFF0200FFFFFEFFFFFFFFFFFEFF0100FFFF0200FDFF0000FEFFFEFF01000400FDFF01000000FFFFFCFF01000100FDFF0200FFFFFDFFFBFFFEFF0200FEFFFEFF0100FEFFFEFFFCFF03000200FBFF0100FCFFFFFF0300FCFF02000400FFFFFEFF01000200000002000000FCFF0500020001000300FEFF010002000100FFFF020002000000FDFFFFFFFDFFFFFFFEFF0100FFFF0100FFFFFAFFFDFF00000300FEFF0000FFFF020001000200FFFF01000000000000000300FEFFFFFF000001000200010004000200FEFFFFFFFFFF03000300FFFF0200FDFF01000200FCFF03000100FAFFFEFF010000000200FEFF0000FFFF0000010004000200FDFFFEFF05000300010000000300FEFF010002000400020000000000FDFF03000000FCFF020002000000FEFF000003000000010002000200FEFF0400FFFFFDFFFFFFFEFF0100040003000300FEFF0100FDFF0000FFFF0000020002000500030001000000FBFFFAFF0100FEFF01000200FEFF0000FEFF0100FFFF0000FFFF030002000200FFFFFEFF010006000100FDFF01000000FCFFFFFFFEFF04000200020000000200FEFF0000FCFF00000400FFFF03000000FDFF02000200FFFF0100040005000100020001000000FCFF0000FFFF0100FCFF02000100FFFFFEFFFDFF0000030000000200FFFF04000100000002000000FFFF0000FEFFFBFFFFFFFFFFFEFF0000FEFFFAFF0100FEFF0000FFFF00000000FEFFFFFFFFFFFDFF020003000000FEFF01000200FDFF0100020001000300FBFF0300FFFF030000000100FFFFFEFFFFFF03000300000006000100010000000000020000000000FDFFFCFFFCFF030000000100FDFFFEFFFBFFFFFF00000100FCFF00000200FDFFFFFF00000000FDFF00000000FCFFFEFF00000000FFFF010001000100FEFFFFFFFEFF00000400050001000300FEFFFFFF0500FFFFFCFF0300000005000000FFFF0000FEFF0300FFFF0400FEFF0300020000000300FDFF0400000005000000FEFF0000FDFFFEFFFFFF0200FDFF0400FEFF0000FEFFFFFF0300FFFFFEFF0200FFFF01000100FEFF0200FEFFFCFF01000200FFFF0300000003000100FDFF0000FFFFFCFF0200FCFFFFFFFFFFFDFFFFFF00000300FFFFFDFFFFFF000003000300040001000000FEFFFDFF0300FEFF0000020003000000FFFFFCFF00000100000001000200FFFF0200FCFFFDFF0000FBFFFDFF0200FEFF0200FFFF000001000200060005000300FDFF0000030000000000FFFF0300FEFF01000300FCFF0000FBFF0600FCFFFFFFFEFFFFFFFFFFFFFF02000000FFFFFDFF0600FEFF01000200FDFF03000300FFFF0100020001000100000001000100FFFFFFFF01000400FFFF0000000000000000FEFFFFFFFFFF0000FEFFFFFF010002000000FAFF01000200FCFF0200FFFF0000FFFF030001000000FFFF0000FDFF0200FFFFFFFF020000000100FEFF0400FEFF00000100FEFFFDFF01000300FEFFFDFFFEFF01000300FEFF0000FCFF0200FEFF00000300FFFF02000000FDFFFEFF05000300FFFF0300FCFF020000000200060007000100FEFF0000FFFF0000FFFFFFFFFEFFFBFF02000200FEFF01000100000002000000FAFFFFFFFDFFFEFF0000000003000000FFFF020000000000FBFF0300FEFF020003000000FFFFFFFFFEFFFEFF0400FFFFFCFFFEFFFFFF00000200040001000100FEFF0400020000000200030004000000020000000200FDFFFFFFFEFF0000FCFF0300FFFFFDFF02000100FFFF00000200030000000200FDFF000002000000FFFF0100030002000600FEFFFDFFFEFFFCFFFEFFFEFF0000FEFF020000000100020003000600010000000100FFFF0000FDFFFFFFFDFF00000000FEFFFBFFFEFF020005000200FFFF00000500000000000100FDFF0000F9FF010000000000FFFF01000200FEFF0000030001000000FFFFFBFFFEFF0100FFFFFEFF0300000004000300FEFFFFFFFDFF0000FDFFFFFF020001000500FEFFFFFF01000000FFFF010002000100FFFF0100FFFF0400FDFF00000200FEFF02000200000002000100FCFF000002000000FCFFFFFFFFFFFFFFFFFFFEFF01000400FFFFFAFFFDFFFFFF0300FDFF0000010003000400FCFFFEFF0000FBFFFFFF0100FEFF0000FEFFFEFF0300FBFF0000FFFF000003000100FDFF030000000200020002000000FFFFFEFFFDFFFFFF01000000020000000100FDFF0200FEFF0000FEFF0100FFFF000002000000FFFF0100FFFF00000100FEFF0000000000000000FEFF0000000002000100FFFFFEFF00000000FFFF04000100FFFF00000000FFFF0000FFFF04000000FDFF00000600FCFFFDFF0100FFFF00000000FFFFFDFF00000200FCFF040008000000FEFF04000300FDFFFEFF02000300010006000100FEFF01000100FFFF040000000000FFFFFCFF020001000100FFFF0500FEFFFEFF0000000001000400FEFF000001000400FFFF000001000000FDFFFFFF000004000300FFFFFDFF0100FEFF0200FFFF0300FFFF0100FFFFFFFF0000FFFF0400FFFFFEFFFCFFFEFFFFFFFEFF0500FDFFFFFF04000400030003000400020001000100FEFFFCFF00000100FEFF0300FFFFFFFFFFFF0100FEFF0100FCFF0200FFFFF9FFFDFFFDFF03000100FEFF03000000010000000200000000000000FFFFFFFFFCFF0000FFFFFBFF000001000100FFFFFEFF010001000200FEFFFEFFFBFF0300FDFF0100FEFFFDFFFFFF02000400FEFFFFFF0300FEFF0000FFFF000001000100FEFF06000200FBFFFDFFFDFF02000200FCFF0000FEFF03000000FFFF0600FEFFFBFFFEFF02000300FDFFFCFF0200010001000100FDFF0400FAFFFEFFFDFFFDFF02000200010000000100FDFF01000200FEFF01000200FFFFFDFFFEFF000004000100FCFF0100010001000100FFFF0100FDFFFDFF0100FCFFFFFFFEFF0000FDFF01000100FEFFFEFFFEFFFFFF05000500FFFFFFFF0200FFFFFEFF000001000000010000000300020000000200FDFFFEFFFCFF0100FEFF010004000200FCFF0200FEFF010001000500FEFF00000200FFFFFCFF0200FEFF000000000100010001000200FDFF0500FDFF010000000000010003000000010004000100FEFF02000000FEFFFFFF00000200FFFFFEFF0100FFFF0000FAFFFCFF02000300FFFFFFFF000003000200FBFF0000FCFFFEFFFFFFFCFFFEFFFFFFFFFF0000030001000000FDFF00000100FDFFFEFF010004000200FFFF01000100FEFF03000100040001000000020001000200FFFF0100FFFF0100000002000000000003000300FDFFFDFF0100F9FFFCFF020002000000FEFF0000FDFF0300FBFF0100020003000000FDFFF9FF01000200030002000100FDFF0200FFFF020000000100FDFFFFFFFEFFFCFF02000000FEFFFEFFFEFF02000500FDFFFCFFFDFF0100FFFF0000030002000100FEFF020000000100FFFF030002000000FFFF010003000000FFFF0000FFFF0100FEFF02000100FFFF0100FFFF000000000000FFFF0000FAFF0200FFFFFEFFFEFF02000100FDFF03000200030001000400FEFFFDFF04000100FDFFFEFF01000100030000000700FCFFFFFF0300020000000100030003000300FEFFFEFF01000100FCFF02000000FDFF00000000FEFFFFFF030004000100FCFF0100FBFF030000000100FEFFFCFF000000000000FFFFFEFF030000000000FFFF010003000200FFFF00000000FEFF000001000000FEFF000000000000FCFFFEFF0100FFFF0000040000000300FEFFFDFFFEFFFFFF0500FEFF00000300FDFF0100FFFF0100FFFF0100050001000000FFFF0100FDFF0100FDFF030003000100FFFF01000000000001000100FFFF0000010003000200FFFFFFFFFDFF01000400FDFF00000100FFFFFDFFFFFFFFFF02000100FFFFFDFF0000FBFFFEFFFEFFFEFF0000FFFF0700020000000300FEFFFFFF020002000100010001000500FDFFFFFF010002000200FEFFFCFF0300FBFF0000FFFF0000FFFF02000000FBFFFDFFFFFFFEFFFFFFFFFF0200FFFFFFFF0800000000000100FEFFFAFF04000500FFFF0000FEFFFBFF00000300040001000100FFFF02000200010000000000010002000100FFFF000000000200FFFFFEFF0200FEFF0400FCFFFFFF020005000200FCFFFFFFFEFFFFFFFCFF00000200FEFF00000200010001000300F8FF000001000000FCFFFFFF0100FEFF00000000050000000400FDFF000001000100010002000500020003000300FBFF0000FFFFFAFF0000FCFFFDFF0100FCFF0000FEFF00000400FFFF0200FEFF0200FEFF0000FEFF000002000100FCFFFEFF050000000000020001000000FEFFFEFF01000500FEFF0400FBFFFFFF0200FFFF0000FFFF0100FFFF01000000FFFFFEFF02000200FFFF01000000FBFFFFFF02000200FDFF0500FDFF000000000000000000000000FEFF0000FDFFFFFF0000FEFFFEFF0000030000000200FFFFFFFFFDFFFEFF0200020000000300FBFF00000200010000000200000000000000010005000200FFFFFEFF01000000FFFFFDFF02000500FEFF010001000300FAFFFEFFFFFFFFFFFDFF01000100FFFF02000200FDFF01000100FFFF0200FFFF010001000100FDFF03000100FFFFFFFF0100030000000300FFFF0000FEFF0200FEFFFDFFFCFF0000FEFF0300FCFF0400010000000000FCFF01000100FFFFFFFFFCFF03000100FEFF02000200010002000000FDFFFDFF000000000200FFFFFEFF0000FEFF00000100010002000000010004000000040003000300FFFFFEFF0200FFFF0000FFFFFEFF0400FFFF0000FFFF01000400FFFF0000FDFFFFFFFEFFFEFF00000200FDFF0200000001000000FCFFFFFFFFFF01000200FAFFFEFF03000200FBFF0100000001000000FEFFFFFF0000FFFFFEFFFFFF0000FFFFFDFFFEFF050000000000000003000400FDFF040001000100FFFF02000100000001000200FDFFFEFF0100FCFF0200020001000000010003000100FFFFFFFF02000300FEFFFEFFFCFFFCFFFFFF0000010001000000FDFFFEFF0000FEFFFBFF0000FCFFFDFF03000300FBFFFFFF00000200FEFF0000050001000300040004000000FEFFFDFFFEFFFEFF0200FFFF0100FBFFFDFFFBFFFEFF000003000100FFFF0300FDFF01000400FCFF020004000400FEFF0300FFFF0000FDFF0400FEFF03000100FFFF0000FFFFFFFF02000000FCFFFAFF0300020002000200030001000000FFFFFDFF010002000100FDFFFCFF0100010001000200FDFF04000100FFFF0100FFFF0600020001000100FEFF0000FEFF04000000FEFF00000000FDFF0100FFFFFFFF0000FDFF01000100010001000200FDFFFEFF0500FDFFFBFFFDFF0100FDFF0000010004000100FFFF0100000000000100FEFFFDFF00000100FDFF0100FFFFFEFF0100FDFF0200FFFFFEFF0100FBFF0200FEFF0000FFFFFBFFFFFF0000010000000300FEFFFDFF02000100FCFFFEFFFFFFFDFF00000300020001000100FFFF0000FDFFFEFFFFFF0100FFFFFEFFFEFF010000000400FFFFFAFFFEFFFDFF0000FFFFFFFFFAFF0500FDFF0100FCFFFFFFFEFF0200FDFF05000300010003000000FEFF00000000FBFFFFFF0400FEFFFFFFFEFFFFFFFFFF030004000200FBFFFEFFFEFFFEFFFEFFFEFF010005000000FEFFFFFF0500FFFF02000000010002000100FFFF00000000FDFF0100FAFF000002000000FEFF0200FEFFFFFFFEFFFDFFFFFFFCFF020005000400FDFFFFFF0400FFFFFDFF0300030000000200FCFFFDFF000000000200FEFFFCFF00000100020001000100FFFF0100010001000100FFFFFFFF02000000FFFFFFFF0000000000000200FDFFFBFF01000300FFFFFCFFFBFFFFFF0100FDFFFDFF020001000200FCFF0400FFFF03000000FEFF0000FDFF0400FFFF000002000000FFFF0100FFFF00000200FFFF0000FEFFFFFFFCFF020000000000FEFF0200FFFFFFFFFEFF0000FEFF0100FEFF0000FCFF0200010000000100FFFFFFFF020000000300FFFF0400FEFFFCFF000000000200FFFF0100FEFF030000000000FFFF00000000FFFF0100FEFFF9FF0200030004000300FFFF0000FFFF0100070003000300FDFFFEFF02000000FFFF01000100030002000100FCFF0100FDFF0100FFFFFEFFFEFF0200FDFFFFFF0000030001000300FFFF02000000FEFFFDFF05000100000001000100FFFFFFFFFEFF000000000200FBFFFAFFFFFFFEFF0300FDFFFFFF03000100FCFFFFFF030000000100FFFF0200FCFF0200010002000000FCFF01000200FEFFFEFFFEFFFEFF0300FAFF0000FFFFFDFFFEFFFEFFFDFF0400FDFFFFFF0400FFFFFFFFFEFF0300FFFFFEFF0300FFFFFCFF01000400FEFF010002000100040003000200FEFFFDFF01000100FFFF00000100010000000000FFFF0300FEFF02000000FCFF0400FFFF0100FDFFFFFF04000200FFFF0200FFFF00000000FDFF05000100FCFF00000000FFFFFEFF04000100FEFF0100FFFFFDFF0200FFFF06000200FFFF03000000FDFF0200010002000100FFFF0000FEFF000000000200FFFF00000100FEFF0000FFFF030000000000FDFF030000000100FFFFFEFF0100FFFF0000010001000100040001000200030001000000FFFFFFFFFEFFFDFF02000000FEFF040000000200FDFF020000000100FFFF0100FFFFFCFF02000000FFFFFDFFFEFF0100FDFF03000200FFFF0000FEFF0000FFFFFEFFFDFF010001000300FEFFFEFFFEFF0400FCFFFFFF02000100FDFFFFFFFDFF0000FEFF010000000200FDFF020001000000FFFFFCFF0300FEFFFFFF0300FDFFFEFF0000FBFF0100040001000400FEFF01000200FCFFFDFF01000400FFFFFCFFFEFF0300FFFFFDFF0200FFFF0100FFFF01000200FEFF0100FEFF00000300FFFF020001000300FDFFFCFFFEFF0000FFFFFFFF0100000000000100FEFF0200FEFFFFFF00000300FDFF0500FFFF0300FFFFFDFF0100FEFF0000FEFF010002000200FFFF01000200FCFFFFFF00000000FEFFFDFFFDFFFDFFFFFF0000FEFF0100FEFF020001000100FBFF010000000200FFFF01000200FBFF0000FCFF00000100FBFFFEFF0400010000000500FBFFFEFFFFFF070001000000FEFF0300FEFF0100FBFFFFFFFFFF0300FEFF030005000000FFFF01000000010001000200030000000400050000000200FCFF0000FEFF0600FFFF0300FFFF00000100000000000200FFFFFDFFFEFFFFFFFEFF050000000000FCFF0000FCFFFEFFFEFF0300FFFF0100020002000100FBFFFEFF000001000500FFFFFDFFFFFF0200000001000000FAFF00000000FFFF0100FDFFFEFF03000500FFFFFDFF050002000400FBFF0600FFFFFEFF00000300FDFFFEFFFFFFFCFFFEFFFCFF0400FCFFFDFF05000300020001000000020003000100FDFFFDFF01000000FFFFFCFFFFFF02000000FEFFFFFF0000FFFF0000FFFFFDFF0000FEFF0200FBFFFEFF010001000100FEFF0100FEFF0000FEFFFEFFFEFF0400FEFFFFFFFEFF02000200FFFF0200FEFF0400FCFFFEFF0000FEFF01000000FFFFFAFF03000200FBFF0500FCFF000000000000FFFFFFFFFFFFFEFF0000FEFF020005000000000002000200FFFF0000FFFFFEFF02000100FDFFFEFFFFFF0100FEFF0400FFFFFFFFFFFF010002000000FCFFFDFFFCFFFEFF010004000200020002000300FCFFFDFFFDFFFDFF02000200030000000000FCFFFEFFFEFFFFFF000003000200FBFF040003000000000000000100010002000000FCFFFEFFFFFFFFFFFFFFFEFF0300FCFFFEFF0000FDFF0100FEFFFDFFFDFF0200FFFF03000000FEFFFFFF020001000200FFFF00000300FDFF010003000000FFFFFCFF0300FDFFFFFF0100020000000000030000000500FEFFFEFF0400FFFFFFFFFDFFFEFF02000100F9FF02000100060001000100FEFF0100FFFF040003000300FDFF0300FFFF0200FCFF0100000001000100040002000100020002000000FDFFFCFF020001000100FFFFFEFF0400FAFF00000100FFFF0300050002000000FFFFFEFF000000000300FDFF03000000FFFF02000300FDFFFFFF040000000100FEFFFFFFFCFFFEFF0100FFFF0100FCFFFCFF020002000000FCFF00000000FFFF000005000200FEFF020000000400010000000000FFFF00000100FFFF0400FDFFFFFFFEFFFDFF01000000FDFF01000100FFFF0100FEFF0200FFFFFDFFFDFFFFFF0100FEFF030000000500FFFFFFFF04000000FFFFFEFF0500FFFFFCFF0400FFFF0000FFFF01000500FFFFFAFF01000100040002000300060001000200FFFF03000300000003000100FFFF050004000100FCFF03000500FCFF0000FFFFFAFF0400FFFF0500010000000000FFFFFFFF030002000200010003000400FFFF0300FDFFFFFF0100FDFF0000FFFF0100FFFF030001000100FEFF010002000000FFFFFCFFFEFF00000100FFFF040004000200FEFF02000200FDFF0000010001000400FFFFFDFFFEFF0600FCFF0300FFFFFFFFFFFF0100FFFFFEFFFFFFFEFF030004000200FFFF00000000FDFF0400FDFF0300FFFF0000000000000100FAFF09000200020001000000FEFF0100060003000500FCFF04000400FDFF0600030002000100FFFFFEFFFFFF01000100FFFFFFFFFCFF0100FEFFFEFFFDFF0100FFFF010004000200010000000100050001000100FEFF01000000FCFFFFFF0200FEFFFCFF05000300010003000000FEFF0300FEFF0000FAFF0000010000000100FEFFFEFF01000400FDFF01000000FEFFFFFFFFFF0100FFFF00000000000001000000FFFF0200FFFFFFFFFFFFFFFF0300FFFF02000200FFFFFFFFFDFFFEFFFFFF0000020000000300020001000100030001000200FEFF0100FCFFFFFFFFFF0100FFFF0200FBFFFEFF000000000200FEFFFFFF0200010000000000FFFF0100030001000200FFFF0000FFFF050005000000FFFFFFFF00000000FDFFFEFFFBFFFFFF0100030003000000FEFFFEFF0000FDFF0100FFFFFFFFFEFFFEFF00000100020001000300020001000200FFFF0300FFFF0200FEFF01000000FDFF03000000FFFF00000100FCFF0100FFFF030005000300FEFFFEFFFCFFFFFF00000300FEFFFDFF0100FEFFFEFF040000000000010002000000FCFFFDFF04000000010000000000040002000000010002000200FEFF0100FEFF0100FDFF0200FEFF01000100FCFFFFFF00000200FEFF0200FDFF0300FFFFFCFFFBFFFDFFFFFF000001000400FEFF020003000000FEFFFFFFFCFF0200000002000200FEFFFFFFFEFF00000000FDFFFFFF0000FEFF01000000FFFFFDFF000000000000FFFFFEFFF9FFFCFFFFFF0000FFFFFCFF0000FFFF01000000FEFF0100FFFFFEFFFFFF01000200000001000000010002000000000003000100FFFF02000200FEFF0100FCFF0300FFFF0000FCFF0200FDFF0300FFFFFFFF01000500FEFF01000000FFFFFFFFFEFFFFFF01000300FEFF0200050001000200FFFFFEFF0100FBFF0200FFFF050003000100FEFFFEFF0100FFFF0000000001000100020000000800FCFF0300040002000500FFFFFFFFFFFFFFFF04000100FDFF030001000200FFFF0500FEFF0100000004000100000000000300020001000000FEFFFDFF00000100FCFFFFFF01000300020003000200FFFF03000200FDFF0000FCFFFDFFFDFFFFFF01000200000001000000FBFF0100FDFF010001000200FFFFFCFFFFFF0300FFFFFDFF00000400FFFFFDFFFEFFFFFF020000000000FEFF0300020002000400FEFF0200FEFF0300FEFFFDFF02000400FFFFFFFF020006000200020000000000FFFF010004000200010000000100FFFFFEFFFFFF0100FEFFFDFF01000100FFFF0300FAFFFFFF030001000000FCFFFFFF01000000FCFFFDFF040001000100FEFFFFFF0300FDFF000000000000FFFF000000000500000001000200FBFF0200FDFF0100000001000000FEFF040001000100FDFF0000FEFF0200FFFFFFFF0100FFFF0000010000000300FFFF0000FFFF02000000FFFF01000200FFFF01000000F9FFFCFFFEFFFEFFFCFF0100FFFFFDFFFFFF030001000100FFFFFAFFFFFF01000100FFFF0100FEFF0100FDFF0300000002000500FEFF0100010003000100FFFF0100FEFFFFFF020004000000FFFF0100FCFF020003000500FDFF01000300F9FF000000000100FFFF000000000500FFFFFFFF030002000000FFFF0000FCFF0100FFFFFFFF03000100FEFF04000200FDFF0500030001000400FDFF02000100030000000200FFFFFAFF0100FCFFFFFFFDFF0200FBFFFFFF04000200010002000100FFFF0100FFFF03000000FFFFFEFF0300000003000100FFFFFEFFFFFF0000FCFFFEFF0100010001000000FEFFFFFF0300FFFFFFFF0200FDFF0100FFFF010002000100FEFF0000FEFF040004000300FFFFFFFF00000400FBFF030002000000010000000100FEFFFDFF0000FFFF060000000300FEFFFFFFFEFF0300FFFF00000100010001000700FEFF0300FDFFFFFF0000FFFF0200FFFFFDFFFDFFFDFF0200FFFF060000000400000001000100FFFFFAFF020000000100FFFF0300FEFF000003000400FDFF01000100FFFFFEFF000003000100000001000000FEFFFFFF0300FFFFFEFF0200FCFF0000FFFFFFFF0100020003000200FDFF0200FEFF01000500FFFF00000100FBFF0200FEFF0200FEFFFEFF0200FEFF0200FEFF0300FFFF0400FEFFFFFFFEFF00000300FEFFFDFFFFFF0400FCFFFEFF01000200FEFFFFFF0300FFFFFEFF01000500FFFF02000200FEFF0000FEFF0500FFFFFFFF010003000400FFFF020000000100010001000400010002000300FFFF0100FFFF0200FFFF00000400010001000200FFFFFBFF0000FEFFFDFF02000100FEFF0000FCFF00000000FDFF000000000300FFFFFFFF01000000FEFF0000FEFFFCFF010000000100FCFF03000100FFFFFDFF03000100FFFFFEFFFEFF02000200FEFFFAFFFEFF02000000FDFF01000100000001000100FCFF000002000100FEFFFEFFFFFF04000100020000000000FEFF0100FDFF01000100FEFF02000100FEFFFFFF0000FFFF0300FBFF0100030002000000FFFFFEFFFDFF0400FEFF0000FFFF030002000600FEFF0700FDFF0000FCFF0000FFFF0200FFFF0200000003000000FDFF0100FCFF0400010000000100FDFF0200FFFF0100FEFFFFFF000000000200FEFF0100FCFFFEFF02000000FFFFFFFFFBFFFEFF01000000020001000300FEFF000003000400FEFF03000100FBFFFBFFFFFF0100FDFF010000000200000000000100000001000200FCFFFBFFFDFF04000200FFFF0300FFFF0200FDFF0200FCFF0100FFFF0000FEFFFFFF020001000000FFFFFFFF020001000000000006000300FFFFFDFFFFFFFCFF010003000000FDFF040000000300FCFFFDFF01000000FBFF01000400FFFFFCFF0000020003000000020001000100000001000200FEFFFAFF01000200FFFFFEFF03000200FDFF02000500010000000300020001000100FDFFFFFF03000000FFFF00000400FEFFFEFFFFFF0000FFFF020000000000FEFF020002000200FFFF02000000020002000000020000000200FFFFFDFFFEFFFBFF0000FCFF01000200FFFF01000300FEFF0100000001000100FDFF05000100FBFFFEFFFDFF0100FEFF01000100040001000300FFFF0200FEFF0000FFFFFFFF05000100FFFF0000FFFFFCFF0100FFFF050002000300FEFF0200FCFF01000400FDFF0000FFFF0000FEFF01000000FEFFFEFFFEFFFBFF010000000000FEFFFFFFFFFFFFFF0000FDFF0100000006000300FEFF0300FDFFFFFFFEFF030002000100010003000200030000000100FDFFFEFF02000300FEFF01000100FFFF0100FFFF0000FFFFFBFFFEFFFEFF0100FDFFFAFF0000FFFF05000000FDFFFDFFFEFF00000100FFFFFEFFFDFF000001000300FFFF01000200010001000100FDFFFFFF03000100010000000400FFFF01000000FFFF00000000FEFF0100030001000000FDFF00000000010004000100FFFFFDFFFEFF0400FFFFFDFF0000FCFFFFFF05000000020001000100000000000000FEFF00000100FEFF010002000200F9FF0400FCFFFCFF0100FDFFFEFFFEFFFFFF0300010001000000FEFF0000FEFF00000200FFFF00000200FEFF0000FCFF00000600FDFF0300FCFF02000000FCFFFFFFFDFFFEFF02000000010000000000000000000200FDFF0200FFFFFFFFFEFF0100FEFF03000400FFFFFEFF0300FDFFFFFFFEFFFDFFFCFFFFFF040001000100FDFF0400040000000100FFFF02000300020001000000FFFF02000300FFFF0300FCFF0100FFFF0500000001000100FEFFFFFF0400FFFFFDFF02000100030001000400FEFFFFFF000003000100FDFF0000FDFF0100FBFF0000FFFFFFFFFEFFFEFFFBFFFCFF0000040003000000FDFFFDFF000002000000FEFF00000100FEFF0200FFFFFEFF0500FEFFFFFFFCFF040002000000030002000100030000000100FEFF0200000004000000FFFFFEFF01000100FDFF01000100FDFFFFFF03000400FEFF0300FEFFFFFF0200FDFF030000000000FDFF0100FCFF020003000000FFFF030006000300FEFF0100FEFF000001000000FBFF0000FEFF040001000200FDFFFFFF00000500FEFFFFFF0100FFFF0000FEFFFFFFFEFFFDFF0200050001000600010000000000000002000100FFFFFFFF000001000100FFFF0300FDFF01000200000001000200FCFF010000000500040001000100FEFF0000FDFFFFFF0300FBFF0100FFFFFFFF020003000200FFFFFFFF020002000300FFFFFFFF040001000700030001000100FFFF0400FFFFFFFFFFFFFBFF0000FDFF0200FEFF0100FDFFFEFFFFFF04000200010001000300FDFF010002000300FEFFFEFFFFFF01000200FFFFFFFFFDFF0000FFFFFFFFFCFF -ct = E92AF626E99041BE52E808B84140A113598EECD208542D4D6906C3492CAEDE5F8CBCC44AAB2C1F438F9DB81B7442C8D4EEFF2651D18706CB172643F7374EA9CA0340A29F74950F877A89BD1E1CCD89BDFF31932ACE22C91150796E55DB161AD0BFE85B9EC849662CFE6495D3EF9FE46491F134108C857CB8A57936FB13775A4AD75B0CBDB159A71DC804CC2112E332588C3FB2996A3649FBF837EA2156E2F789214E1D87D0AF29CEA480FD02757E1642126A26F5608E8478A1C4F8FB171C601E4C1B66F5B6D1AE169FDFAB2E89F3630F1A47A144E07D55B5801FAC47B822408F2BCB12F261DB1B67098850FD92DF1D104C8D9D60929B1C9576F28F5F435A7835EAB7031BDA011DA24CF41AB4A7E6ED14C13D2CD89ED41F7743AA116B25A1D5CD78D5819405E0756D0D81899249D9D1AB9295E28B08B7ECC259EEF590939D7D8B36F3794A8ED9E9A47A50610768EBABB3B9C47DF685BCAA107835D7EAE67E3633A5739D0FF73BA22764A8EA21F4F6A1662F9FF14D3229E457C7404154208D5462E83839EE6DC6B404B591412120DB38A2558E9CB87CCBBA1864B6D05674055FFFC115F8AC60DAED75BB5FF6FBE3624489DAE1AC387053702F73487BD763B41ADCE8FFC72E6C75177784CB85A2D84EE3C18E893765C876BE1C0C7BBF1CDB98349E207D9C2384EA0D7CD10DF25A7BA1CDB79AE2C499C31C9C8290CE9AA5D88276AE24218950ED08F3C508A54EB2A7DF30667B7DA6BFDBA195A5C59BFF30B148C2770FBD9A8385BD1FB7DB23FA55371B8044C8BF4F05EA632D5D9CEB441444334BB845DFFE2A0CD9845C57FF0EC1B03B7DBFF54DB8E892224F76C5CB9892BDCF49943084BF1B35AEB63952476B77F6DCCE04889A280C16F5882C9520206C03F90B5C250805CA725B78FB33AF67FA41386481B22AF49546256727BB3A5BB49F0E00A341DCAAE429A94B370BBA2B614FB8091E35B74249AC4D53BAD4D17117D9635606CE09A5982666EA5A170E6F95DA1D91CE7655CD103939DCC960F3BF4943C80AB06D545EB9BD78E4D7B568F00F78E72467876DA172ACF9BC14637CF033876910B09083B12FCABAFBE5BE262E4468C67E33717BF4CC8274EBD20DA9E49EE16C7FF45C38B026F493E58640343A742044C69719E1929AB7AB59F159CE3A891774E81F218AFBB831761110E955255A52FD2D91DF20B14C999BA93CEF615731AC9D23D9CF2F51AF2F41C2A01579FD19522396DB3FFD04D2C1181863210D79F4AED546F9C6711D92AACDCF3424E55F2142DB95F7715AE4D471EF59898446142E6C12C63D661D512DC5A5A9F0801C0BACBF491CE9F663711051CD221A6C235B5579CEF7E914CFA540EE2B32467F1903AD55176A1114E9A326F991365C77E9F491F5FF106F287CC87CF9B56628C6E6B7176822701424922E9DFE7AA6E56FEC5CA612F48E6F46BA0A38B2603EC847BD4400CE2A7FE7D45096C0B990E23E27E1ACCBA1A99501686778210DF3B380DBC7DC99035A4477DC1C7945D0C2A0F39B716450BAACA0CBE8F66271506146EB54A483CFA63B0D3348EE831D33F6B61CDDB75BE8FDF9BBE551EB6BB5B65275F076DF33C59DFFFA9826160AA1A8375714C8B08AA84C0CEC0C0BC4FFEC825AB1EE32971D669BF5B92FBBD63BD2F7FC69E0F060AAD44502E591F7E81939A3C073BDDAA91934DAA49DEA4357D85323837636C895E28A93AAF0ED7D61938D757250FC3F750D883C666549F4EC9E63CCECC2457F9764E4032A5B50B00C2342A3165938B5C2A9B0A3DB3B02E922A8EC4ED327D115E2ABD35C812D8558AE37CED2D3A66BCD14A5120B8F1652C8875D2F7C348AC5E483BEB23DD2A8064176531F1AC0FFF83AA4BA403362FE16E1D6DFF4DE1337C0534C84EA3AC35822BDB1C213B565D8170ED26BAEA69916E4CA56265C5AB3D105483664A0B89B507DF6B655714BABB457D3BEC1C015CE0F292CD43027DE32A2AEFC10FD403D2D91232705782744D3B324C541F9A4537FF005A80601971454EB9DEC5C19A248D9BF7151BC603421B5F26004DFAC60E513591506A988CAFFB287A53D20014A5BC849331E1E5DC2E4EE530023A3D89BD70D5BCB45E1C3E10F606DAC9C96C79C92FBCEECF20C02E665AAF585913BD7D1160B9F6DF3A3D9652D16F4077944B841FCC664C0881BEFE1EA006B6AF6EDE88FB901091F08AB9FA0231F961112C8FF33B49A679200DC283E9430F4E501A47B1B07CD387A2047CFC92E2D2D440BA9155E7F8839C9B7CFA7E02505DD8069FC0433E0194711440CC4018FAF4BDCD7D731E1F6F435080C55F2D2C140DED2ACA90B36BD058E0AFFC90FF985219F6BA9C61DE9ECE7D587589C64FD01213DBF2088EA895F406D118C004F21E86E6432CD69B410BEFC45A5F6A2541AA4E6A2FEC9075430860CB5F2D2CF9093BADF0AB804A3D23E4F06DFCD2242C45883BE868B761469051BDD081BA1313E1E29B58522AF8CC6636440FBFCB7BBC80BE7D5D8FA8BFB417A8824DB4AF871E7A1611AB2C8B72890B07FB9F2232708C4178B9BCE1FF25503655529C83D1A5700B2265C71281CA209555CB7CB6910295DFEAA8B542072F8834D68FF7F0F402FBED325EE08EC55457CD0FAA40726F2F289073CB95ABCBF85F029C8153E9CAA3D3A27B80A791B07DF20B83159B32ED19BCA97759D9C0122EA3863D5849B68B47E29524EF2F0D84FFD50122E1E20807C593E3FBB1DE7FD53118D5DB5B9E5AECCEDB0B6267567E16AD68B9D53BAEFDFAF143A533D2DE4D51B5088FC35258EB35FE48A7E3F64F16B84086F3B3ACDD72012242B77BCBED1E3E605D3BC7D37154D0AEB7CF3B04AE3717A357FFC780E5E34A8163A0FEC36863002F7BDBB9E011BF20AC7399BDD7B534E91A3210BB5141284283063EE30DD54D49F05E0E668A4D8515F5AF6E4E0ED802E9BE95E1D982D9BF90F2E529AFD7D4051B92AA432E9C25C99EE861A4D688A6BBC0DE303DC2D9FF63345C0A30DCADA1643EE6CF7E3E7F9682B82885038B54874E36CE9C7671CD6531B56316D5D11D2CBEB9B918338DD34453ED5A097655958DF38C8B3707A08B6D7C29DD3867945E5CA2B2BA4864C2E4667267986EFA6CF4ECF41E834BABB234D2FB0DBE4D7F9B3C84056FBA5FEBEA94ECB6CD458F55A593F6F0E76E86D9AB79061AE974AD58D0CF10BEF465EB502BDCE2BC7D184D2AD1989E6113785FAD7290087DD42D0CD4DCA838BD1828F22BF5BA2787DCD3C7097C221C8749DF8D52807393C2F7AD535AAEAC929CF9EBD3323A85E6894FDCB88A28E456B43D366A0074EED89A3FDF51E3D00BAB5B11993CD3F7EBFF1CA2B5E792E17648A34BDFBB2F3D455F5F95FDA39D3E970F095791347F1D33B759AB587080C38DDC031362E594023CBA19836CB47EC4F5FF9EA5F65F6128D8D1AB12CA2E3D5B68B976723664CAB8C943E07C9B9CBBC322BAC37EFC0B6D81F040AE41B25675B6FBAABCF312F6316A2E09BB28C1907BD5C2D4572625F677A3841E1ACBCFF45462629B0E8BB7198585CC95CA848CFB2155DE33216D89F81994AE317DD68F7B8F1CC8BE6A41B4765EF5E47345704EFCD1C8810BE15C6605084F6BCDC921D3D8BBCCCC18D4D10AE197D47CC880B92588DD42AB54E73B8F1D1CF99DCEC9EA520F55FD4F265BA2B5D95F0A7635C972A5B9F0DA920876A2DD4A98579832684B468E43078510160DB244EAEA091F9CDBE3E3288E0142EA43D5156A03D39C258D20E113952812204F17C56C5C748F7D94DEEA4D9A34FC0C9E52B4FC3B72F3AF362FAFC91605C6459DA843AEB9F597ECC57C927DA2B15726B066192D26976DC0D8EAA81C6A504EFB6B192DB7CE21589FE37C32D29318BDEC285876A8DA332B8E53896CDFDBDEC40426353D32CAD06DD9C560AFD61C0978C479BD2DB888FE752D5D0388AFBB71A2112CE157BFF070CDE8734A325FC608E918A004486CE8C1E85319EC748B739471A76B75FF7EA26F61F054578B3030AA8E264B2D86618EF258F5B61D3983F5442E7A9F5D2928E254C21CA4D11FED0E03E288BD60AF746974906650C0A33AC39C10EE7BE13438637AA44074FA8B95D6574063B3E49F7218B4744FAF54708C6DF0CC37B604DC74E52006FF1EC478306BEF56EE9EC906ED09AED24702EFC94324C84D62952C775B42B15EC74D4C574B78C2F484DD2D1E30E226D6150C35ADBFD93B864BE4BF5359F5450995ED96FED716CCEB5736EC1740953EF650BBFB8904BBF412F2A483CC84A39B87E1C5822A27FA87ABE3370DCA9C1F8221E2F3310BB474630B3A0A6D02C88CFCE4A0C151F7AF8B3C945505E74A291235161D5E0C4C6F67BF7C6CB600773354592BAB697F9F50778677CC651FF02BD5E0C780F86F625B3A7E3CCEB7C2BA18301CE826834CA62B6D026AE40CB8ADE633EEA1FC92BA12B0391518511CAF40B777CECFF996BEA7DB5C9217ECD23A8649BA9867A45EF6C50A7B881D0A7D9D5E1BE05FF645F2AD7609C8E8012E3C5679E1941825FCE5993A7F3DF45BA2D014799BC44A5656283A43CFA7C515B4CC3A5D11E16790E2B19E62D55EC16C159721666A8BDFDDCCA11719B305B44DAC0EE4DEB5677ADCBD43A527DC39B2CA33105B03D99DE8960CB790075E778DFA5F485195DCC342479A09365D1EBF3DBF68A61587B352F3CB0819CE5364002A3578933601840D7D4CAEB1079A24EA0481966B7EBF36DE923BEE32B5E980A752184A97D53598949614143AE4F1023C80F5A470F0F8210CA8408097F44F02411B7413BF704BA8989FF8E38496A2A5F7EE211D1042F1C913E8DC47B572758D0E82A751DF3537AD7C73546CF1C58B8EF32ED9C013CB5049EAF68778026A6539F751A6682102F833CBD6E1B79AC7560B1F4222967E7A6C2A1EA95C53A1842C6D21331F9C7EDC33670672FC57820A27F0178E71B94748B88DAF1345AE6769BC5ACCD344362B01368B2C10D8D183802DE75722BA8F524502C749B0BB2BAC931BC72E9E244C03470213F353DFF1893997034E7F38772E1F92C173A86793848969DA144A6B74CEE5BAD0260FD17B7AAE6BD539E67A04290636A6E31AFA2E0DDD944BE5F9C4D11661999D73C17466023E4B5CFF976FD32A275510408767C8CBA554A3B8FAED1D95DC835B88307FD585A702D7B06D507EA531AA2CEDB24295B2B7FE6CA14D6702B893A0D0476ED4CC7460B23950378171188AE27D427FD071A83578B598A94C7B490CB4126CF75EA8C5641B79481A571058665ACA959715566583EDA18C9AC321E026202D520BA862429839EEED9F8E907BFAE711402D3098D618A2D98F8A2F65EC1F9E0A8EE6D756D89905856A137E176057F7F9E57003E71CC722F945207184F4E091388D35E6F8A0ECBD7F4C1B5F6AC5E1E52C0D76E1AEDB2830BE51F4C46D9DFFC53276EC2E881CF335AF82AE6E61212CA75FD01CF61FACD720B094A493D89547E22B9C8C2AF0A7B5AF3A66F46CFFF354112A0B3BDA360B07BF9867E3F7CA745EB220639AFE89CDD6DEE33C762E3FD473C9C95950B680CA60B1B9EB018B5AA26EC167CB82E9B77299F6DCD452A462CF7F519A533B9D437CD7CA128CED982A0160A533172FA7CE24829A39B8C595F034159DB216A4DA0B499331407B9437CCB817982ED62E95D450A20DEE33C497AE673036A463D8EC7484B6F348EB16E693A2B8B70B789E40F070F19C9D731F4794492FF0F08680906942C738BBE5FD2108802EFBED2C16F13FBE992545859FF133160569263BA6FBABBE2F4AD8D97C8EA87B90B2A86697D2EF78D2070511CDC12841427C85964351D9181AD1A22C7E5C599F83604A2C51D5796F2648B8064989CDF1C47A81121683720458B9ED4B66249BB00A35E3FB6540BF0917CAF74F668ECF1657B24885B1CE021E9E860F03E473A28D2929974D296F8DE6BCEBD766A56B9D65162DAF5BF0D918DA537EE6A82182E09BE07ACE0E85DA33F4605270F03FF1286EB948BCDDFF331F60339D5C0BE8FD5BE81F292964D62154D7CB53173AF4B2D1C134CA450E1F90B56BA7BE237D50F5F91EBFE7D1933AA467BB3C4A563523AE3E8FFAE6FD319E3C7291FC3BF07C7AD126AC01188FF51EEC1BB59652D1B182D7813FF5A485768E0FEEBA8FF15A55C674D5B15CCE4AC649B93682ED99A09EF100ADFB06B89C801DBAB0FC0438C52CE153FAE2A06516F3DF5F661956CBFE985A0FC54499D520F27627A0BD33FD344A8634612D8E7CF19CF525D36C926E1F2565AC8C012E849669CCB16398F64D544E7D10879A2F48F284FAC385165263422570C7DE85D2F22183E1FFB9F4BBD990C086311203FC6387FC7C2B4568D249368A519971F358E0C778BE5A45FD26A89E2C4F2CF09EDCFA7DC03B27A0FB00CA4182DEBE8209F0E7F7D3EA35B3102C6BC1B4C9304C6B70452C7325392353684893879E33A7029ED31BE7DE8B2ACF722D7F69C6E6268DBB5DC139D2C4DB42A2D2186EB7D6359045BF18C20349B299DF5AD608ACA3830163F3313FBB0D838926AE365690F6BB6704AFE436F3F404712C513504427BCC06E96978CFB8AFEC32B1A53ABE4B4C80D79F0469FA426B195A3411F25FA462043B513E04BBE842BFDCAE3A5E3F3FDFAC50BE433D5A168400FE469760C466714E5C17B7BDF11612FE313CADCA1BCC8968083C5D6D30935795D2692A516C041F1D2B9529E9C644F986738B9659DA97CCBA09B1B692BDDE88E3769569C9F25A50573194246ADD6DB408C6AF0F9821F473956771B497A7961A3682DBF3C9A0D9143470EB88030C46CF522A80B87946F2C19E7A4EB3B585D9086BBF27947B343480998ADFF56A18530C50F184D1D4DEFFEA9D9CA2EA93C0F98422B19CA2216C97DC585641490AB53CE371E07FB49D2639BF5E623FCC22B5D06FF820244BD8366AFCC849E185EE45E3AC4E964B823C34BF96B80984569F3F53FAF7A059E918F4FBA2F09C3878D0E0F389C5C342D3B4C110D8E464A4D47EF1FE9B427E783C6BF22FD9154BAC7D79BC6E554AADC67F612C4D00A3C46369645471DD00343D89C3F519ED86A0995EAB9F5A781C3117C4F14F6C93076B5EADCFAB8C502E2E5C520A84B2DDE3FC88C50BC55F787689EBB589C224AA7C2969092DF734CE1A72400B8D71AD5D7C1DBF89FBC8323A2840E49C535F62E513EB36928B0D6A5BDEDF7A9E763CFD99D5E136381DEA123513B42BC7AF2D1FB40E5A4401547D78305ABD33B376F96820A0E5BFEF2A82D2C69630F5E1C58F805A231CCA5BFAE861CFDA4E6F051668EA08525E668683E44225F2777FC05E87BDD15D3ADAFEC74403DAF21CBE6C8AD17EA5B278327EC44D00583212A3E85BA04F2DD7348279915241D727EC8971C59AD5AB703D43E7B97616A5685E42E335C42BBB211E5E5DAE30B77EFBA998FC251409859BEB47324154B17FBA989DBC559CC647F3604EC3C2C59D507145E5A04F08C3939643408C1E7DBC6E182D26F8B97EDDBA87DFF4B6B3C0BB55F63B02FEB66FA02C6ED91A468ABA4FDD33B3732144D26453AA997D0FF783A884A45E43059A8238229D819193EFCF1DBFD3019845D56620E8AF34EB5A6C4563E118DC83A9E53F845880232F94288E1F7186AE015D6DC58665890C9FE956D221F9F527E0A62F70ADAD5FF39028117511110C97C88ACCCE71D4AB5FA536D5CF55D8DD03C89AA4CD2162C60ABFD6362F23444A0A0F6E6C94D3B32A646DC486337D89C96164EFD94459BF99154C58D07B2E2C6764D256323FDC769E05EC785D487983C019CF438606FB922B1A939052B80802BB7AAEFCC4D684553037E812A634C407048E2F55DD5B169871B488C05BE459B4211A6D0D01654068266CB6062C3EEFD2F39A77277593705451CCB7646758B5D3EFF01BF285EC5856D8E79FE5E7EF01E89DEF657D0F83F1F93F38AE79A3A7FC28FAE7F9B4EF1F840DCB622269F3B7AA250BA973DBE86FBBBAF0E7949B7C81FBBDA40AE695CEE1A7F1546722143F5F4903DB1912360948DD93B5C5D0F8407258A1B376CA765337F8944B317042CC017DCCE4D4599993A5FDD9C0A458D1EA353CD9FAE18877E5C5524AF9D8B71EF05031221495D52E28DE42848DE7652B78AC74D33510D9703318BC14D785C5A4CA9433C588A41562AEFD3E0B6E97676014F1D833F2E7917181662ECE43653B3BA2B7389CA2B2BEF56DFB9DA31230CA9A1FB6FC51181BA765D11610B219D83C8343D226E88A66AFF71524268AC16E69E6B5854921F148D72BBD50F6D8474EC4DD07EA6D2435E55FCBC356283807628F56AFA2C71A0542C1D6524A177119EEFF9444C69B6C0BD3BBD1079173078E4AFEAB4CC80B0457C65135E9BEE4C83115A3DDEE5E47A3E2D4C7B786E909B8F719283906606ABB9310E0FA8B6624205DE8FFF62631E7D12A78B650D340BE8CCA678E78F810882A3B53BA602DB41A43A006879359B73D17862A27A5E92C19AFD8B8D6FDB70BDE633A91822813A05FC5A14EA2A5EFCDD0E579D9BCA9ABBDA1743964DCEED93D2218DFE91BC1DE3E5B42811A0251154210365F9E45E26124843B4E1B66D9E1014B6B6A6B732D5BC95537AE697C73C7F99D1CD43D4A87C384A5E4D2AA081250DD04F66F61B738E00D6FC1AAA1DEED96998B8B15A0834DAA512A65447ACD99AE0B9979FFE79C45697E06A35BF44764E883D0D4A309E67F3C578789D205EED50BDFC31774A931E417BA1D37E1652F1D66D8F16ABF49F48BFC824CB504DC56013728AF6DC812A1135F158BFB7BC605ACD9D950C557666B7FF606FE69D21F9B9BFEECF9FA323160353138232AF078D52015E86173ECF7AF163A9D36E3E206F9978C0654850367366226458D35096F4CD84C09793B861843818E3DA3872787A3BB909B8B92A168E5B4E3C5725303ED3448FADFEDDABB0D792EAA0D4BCF9E4780E5564442510373B14A3A9D20462E38090898EC581174D8A8637D75D84682AE966325D647E4A2FFA9B7676BFAC2135F14A765B5590080281969DB5067371B968FB1A8F6421937886DB0156F12DF165D8DA21847D37730FB2C1EEB900C35F47AA5E0B76DDA7B36B81613D5D536A2BC9CD0BBC511BBB8B20F1A6F4C8FA58003DB57FBD6E5F7530FD39173DBA000485A1AB8F287C7CEF9E991D2099FED88F68CA3343F532F60E8538FD2257CC9F718D1C2BABD34689084F790DF3271E22C6148CFC4083427955DFE5512273E7D6FCEAD61B856875141A5DD5134FE0B9226073079D968E647049B25335455F7D62B7A1424E133D98589B328F2EF26D465BBE5740E99961FA9718F514B7DCEADB9E61C1C6A0FD5C7CCB06F25AB5AD2CCDD9BCAAD9172D33BEC1839B7893E2DC9F1DE2AE9B2D95AFFB2CCFD9C05E13A235DFD5DC5F66D48A5FA95E3BA0BDB64534753B4DC8DD902A0AD6ECCBB7387D28C65BB88AEAEB5011B5DFC911B57A16A0F48CFF3C5A695116C7B952ADA8CD095985658BE6E38D93D48B5A4379717B9B55416A13B0A381B5D7FA8420783E8A4106556AA4A45CEEA97569DE7140C172B2BB0C15942988EB5ACD560CA76A8E76709661FAB55A1A3944F58BFDD70D36B8C77744AA500F675BE06820BA0CE171E279C1EEFC3F3A822CC77822905D96AF12AA16E8F71BD5E356086A6350C8D4E1F03486265588EBC56AB3D5E4BE5E8384D4FCF8B68F42EDCF865AF39C7C26961D7BFE2966B4CA00E98D413715F728C53C981063A76E56E6707D09A9DAC16D49300B849DC397B0ED3367DE096DE5981A8258B9E2A130A7DB8243E96143E50430D7F51573568C4979FFC1BA059901CF06BC040ADAA457B6AEA47CF75E73F40B5240B65A659BAAEC386B8D17F4B8132E6388FBC7CCCB711B4869AB36D384BD970733F629508580AD7D9F8D7F9DFD88FBEAFB3DE0F3730C1722420DFA6A84F3C2C872879D81E70E1E197F6101940D14B06D65C6379BA6ABBE8475EA9FC52E1D4C3906747F44563C0B7757296D04048FA5751FB22E88F052E7BD61AD8B1D6941B545BA40D0F82849E01412576DF637704E82E3855A4B62E51AE33D059CD7FC8CF3161C781B86EF1B201D4D1716E459377B901B5F5815678C20EB69CB269DC523C22695D5432B2AE768532BADDFD1CF8A8B6191657E59B57A1E70237122DA9384B6174FF6EBDCB9EB96DE4705BA60800602478EEC4E3FE5C48D6DCACC0F788D6FF45FC799CBB1A2819012037BB74982BA5FE55F618B18D966AE73A4012854606409C6B8F2B8EDA3F09E58BFE1CC88658E0E1407F053FE897C7209A267FCA8E9C9C44F19FB266A2E10F6E06F502D16A21B264B28CEC8B8EEA14624DB232AAB3524AD649D78F592EA634EC0C1630163E3F45C56102958265CCA6B87A5E3629AB505ECCA6B2786B9ADF5A6A46B0C05B145AC357A55BDACF031E2280AAC72658F5E6460E67118A4191D9AE86ABD4C518319917822A5DD4622F059AD83426C2D862B26083E3EEECE415F09D3C03A59061C07F5DC6EB36A460CB226697C1A9D400770925D5238BC57F424DDF5C6610A1F3129B5863E1D602C392A6697A8987E1BA88BC9BAC9FAE31A58156E699E8F9BD1AD9B45962B2B135EF27EFD2657538A14EE22CD7C3F4C9767437EEB8EA5AFE33E8E5394C0582D249E9D11A0874EF1B5EADA077DB370D93104BC1989B2479F3EC0CBD767F86E81637C2D10AD5CEB8CB3A7EE653DE50FF544CD105A611BF3A9D404F22059C5B6CF3D562A19EA357DD6FCA22F6B0A2C5FD4020561C9A5489FD92F13FE15B81F9E84D70976451873BE2E8CAE2D02C0AE342568341D541DD81FD7EFAF828CAFB327C50CFD59573DE807C972765ACA76DA51A7AF4738D33B63ABC9BBC6BAC81C74DC63C16D4FA3BCA6EE4AC50F6D2A2DEB0698021F968D6394862E488D2F7F76F0E0D734968A50253F4DAAA7A6135559EC63E1B115C8043F7A5C8CDD868BC128DF7AB9107BBADC8A5CA50B1B6C93F654AB15196A376D345FB500D80B488F667D3EE4D9BDC3DB93C27C509F1AF60E5B5F1C912141F7F39E4BC4A4933DF9F63D82957051B0BA744F375857F5E940572DA1E0360CF84634E1EFC2D9EDCDEE08CBDDBB98465D3BD4D5B54BEFA026625BAA99AFE617E1C8EB65ADADA0F18D5EF14534DBE54C3518D1D321433A9733C09C87E58447FEDF0894ACD1308D006B0C9BA1318AAB35864E97333E4E27518417296BB4B4196800A1FEA2B3EEEE1E0E9C81BCDD6BB2B83A2D3B384351BF5C1C9BDAD4C344AFEE13029F49171CA1C785EF0B67BC0E03AD017E4F99713BCA3ADE185CD4D9B2A523A4E3DD7FAB34D6D19A42A07EE5E0778221AF05934AD2E12BCE6054F182DF51B00FBECFD7ED3C0CBFA1AD35DFE5E78DAD765B787EF8CE825F41F82927612523CE4F89A4FD1284DF14EDBC9CB249D1FEA3A015B3B465FA2FEA359C619A401C540A7DA411CB3F3092D0F9173858981875FC06517DF52ADE1191522BA6C4DD9493D94C24CF73560101542F7B080BD85D53C52ECB62B3C71C6F6C54ED540ED61FF6BCABE366D409F55C7D3D7EA0F2862FC006B94591C6AFA874BBFA35F842A4997B06EFDC98C9D2B458C3B76A8FC26DE230CC48D8C8290D6B55B4E8E907DE963C56D497A8901185733211DB971AFD83D197C69B71CE794A6A728418B00B3F7899EDB814B42D3C7E754EE1CE8AABCB8003F3A5717767DDB9FCBA62377916F1E16F2DC98AC0E9CF2111BD03885386B2C524A8513BF2F9DE835A9414F67100090E357B37049299BF5A575DEA5EAA9B23346CFFFD6BB0507CD7AC652701F09D115755F14B425F27D6BBACC55A9B3BB3E0A501FC2273DDC9974741BCA634CAF3D3E7E3C65ADD63718668A6B381EB8700E794CCA411539FAB33C3AA11B93DF7EC58730293A8E07A469889326B4B240C1734A4E5F290FDE7ED25A15AC35A86640DAC4A9CC037DF524B7049478D7803FEAAF0E0A3FAAF72F50AED5B2F8C5C30BC43B910A3FF99959F052B5AD36B74F348FEAEEF502A8C767598C17CC44055DF322DB62C4E8631DF1111363A1FBFD95EFD64AA754D1FA416AC32448FC8F53A473B70CC70DFDF0BFD3883BEB00DEBD520ECA6F597502120AD701C287F123F52FE52CD2F60FD68B953547DBECF733A0059FAE6458C7111C13F8FB492F1B85D9986C532A394F23AB137A2575C22C0E795A0B846D230A1D4206C58C80CC780C84550C0147D8DBBB7C66BC8E427C886AEFAC72AA3054E45A82358ADFACCDB21B02E55C2A8107DA70444CF9F69545B0FAD29AA8F818E9AD62181E5CB7FD87A3AE5834F9AF927B1095F854020FF682F2914B2A3752B7FAA5AE7A2D53FA05AF115C319C126EBC2C70537B7CF2CC17FF2D8DBFAA308421963AB4033E3613EB5002B6658EBF7D6D9D03A44211AFAAEEF982EA878C11F1DCC5519BE6237182B78FD8B37FE04E03D5617853A40E682D3969A9D9B9E227966B167DDD30F9387DA43C239AF73D703ED5BE67F8FA4C620F4EFEA5B9EA333D1D1BAC631076827D1930463EC38E2DA2C255FE14A244544F2B9E3472F2415ED6AFEA6F3912B4A5B7E0CCFAFD76EA0C232C892ADB2A1B710B773B4F431B2039BF9DD36D7B79FEB7DC6D8FEDCF539E731BAFCB9B15AF3211AA6033271F2256F75247D3A2DDF5B32B92B002E89F88811987D326F0248A89D6A776FAA49012A276B61764B12A3F9D8725F4F2747386E6F378E2FA9D9B638541A98FC1E36124DBC5687464C502E4F4764ED4365DCCC60DF9DA9B3478BA019880243DB6B87EC32FB2623E3D6AD8BAAFEEECA0BA6484BC735973F098FDD42B0B4D8A6277AC356907F44A49CE09074B6F84DE8C04DDE991B167C13F3D9209A34BA71BF4EE8E23C3F1FE8D00427286BFDA90036CF6C83584860E0A6710C7F25D1E2DD5A37FCBA90027DEE3C91D991D7C0B6720C139C6A8988C84FB2CBFF44DE54E11C1AC67B05B63E13CC74497892232BD0E43087C06181A2BEF4FED2F5D21E2A4DC648D933D48F4D42AA4E512851F00C6311D7F60F109235C7AF61F0532D33BDF1CD455BEA96D565F4B13504133FFB189D270F9CFAA1A31FC12014E405389702FEDB49977CF796A30FC0B2B5B3D3BE1E7EBF7FD864B2325DC1EBB6A903AC649F9997605EA2DDD21ADEC2E3F4F46B2031B9DA4C408355A787B5A3B5F6BA53AC993A81949D0DCD9CF95032FAEEB8166753434878C18489D8D62BD3EC12D7B40D4DF5C092FA54B7B8241CAE19BD32D46F0213C175C0152661C8F8B68CDF2AC96C75E87F8D0B544287236AAD26A12F671550EB43E0DE44950F6296A5A40C8B24276353A7CE798680AC16149AF44A291EB57E66B968DA4685BA5A29DF071C6FFFE6178ECC91BACF92A7DB01907325C33D981D2109CC0A2671FF3C79E811A54D58CD8D9389639B8EBC6E26022C9E5185006959D53AE81EF9F8D0D6422057BD14C357CD53194CC828561507F5E5E7A04C079819596B625D2A5E3CE0A026989D3A14073111FED41FE2AEF587861BDDFE05FC3090A4348A8CB90DB0C664DF89CF4268F191B112B212C6251044F5A47F6ACE40FFB6B4B9F496B879F19F05D76ABD0DB171E1C4F0CA1E91314681ACBA0ECAE84FDCB3F782DDB2A32932F191390FDC5F665C64326DFC916CDA5EA66088B0B75B9132E8195B15A6D8BA096E1B84DF286D9DAEA4BAC01FCD0EDCE50611FA5AB2A41B0A9A329E89E01E24D9DA001320E06F855C669770D61BF02880232EF238C15E7B9844E00C9A62499F2696244E53A2521EC278E15074CD868CDCDAC04E655094A25197BEF799F9F6FB15318B8EBC34FF64B43CAB29BFB21D336C413EFAF3E700A1A6ABC78312C37E184AACE4EEE6636DF6FB4CE3D2FDDAFDA9D0E22FB8A6331491C8536EBF4CE565EB92701C021A6890832B788C944B6057B70C1E3EA8991079175EA9FA0B5D773B5DE9AF335FF1ACD55F0A3181F505B60E7B2709442EF09A54DB8E324B50997D030986E1343C5FB69007852C271A5FEA78E32203088B20B0746E9C2107CBB664685D35486172BE09B1957F679CB7D24C05269C1A9B5D7DAFC78066D6B0E2EAD34BF5A2B0439A125B6B5870BB37E8B905D5A064B3CA1ADF3732955F1E6607B744BB7B60F3840A9540457B37E8AA927B213896E488FF1FCEA91AE56E5BBF64479F2F94672782890DFC30DF4CF53F29DE8E387A929E79637C4317CAE993C7718DA0A3463D6ACAFF790D609C932165D0D96259E4AB22EC0292979888D9A2FBF535B7DBB7E5569BA06A61D0D7454CCEA0ADC613A5704B0E3E9EE7058580C646682F4330175EB0DEF1079F21763719051E18B1F3919D31EF2E9C6C41709EA6E2EFC07D164512EBAEE5E32F09E2E482AD6DA844BCC7A364E44EDB721A495B342FC57AD50E4DAA58755D4D72939D2331BF67D784D4D7DED6F7F3376890E5428C4E0DB4B51857ACF6642A049DFEFD457B7CA66B73D939D619F83321EBB2A3793860EB93958F239122355D44F0C309A9250118082DF5DCC423936875DF2FD18FDC1B96B82BD97BC95932332E78EF90A2C66C1BEF59B7E05E9A33B62D9F7A1FA4C8E9F0ED4454B79DE38A4267B602689D980316FEB187E8120E953B81468D5AA37B2F592BCF158213072B2CE7FE6B8807E3C985DDE3BAF17AB5BC6845D4C77F0469BD4702DC03DD567591A1FE1565FA67BFB4A7656A42CEF7B513D8A4F4A146F9C9D96085069AC00F70CE706DD4D0BB5F2C3BF2D2AA3AF92726AD07029FBE94BF2C07919CD50D8C70E33A1962E832BDE9269F9A262AA52660E3322FAACBF09DB3CE30EE4A8175076A91BC8D4E12A2C240438A86093AB0727845B1D7D29A605C7B79CAB42FC117DE19FA9E3BFA235FF9C7B7CE5D22CEF3EE513F1560B665A5C3B8560F0F61A23D6A7AAE5D71E6B5A9A018C86A468B5DC478FBCD9E267CEA6E03F1245EF2BC51EC638F8BC9817DE9EF2E3D346A3027EB94C21C5201991BA5A41AC7B50CE7D9F5A4906F9086E601C97670C3493A321667DB6EAFC272BD233982D36097BA082589338FE0A205115825681F772184C68243FA8F98E27B355E4E05AFFDEADD4DF05AC26BE697CDDB6DB5F9861DC4A89EEA4813EEEFBCF919D4105D96BFE55C9B4D23222EDB86808BBA61F463DAEEC5D0A6E97B52BD9046B444C6974632B96FB954708F938464AF1AE0273FF4066C8F157F3304C630EE01666FCFC3050DE8E62A8E2EF3777799A538EED1001E10AF6BF6B8F673F3B889E009A87F2E4989A1B52216F199270A686453C198C1D91883CC64BB6EAD9C4D1343F6E4D310F69C29B2071D6F03CEF1FE5BB4FFAAF1EDC66031622D55C8E0BBB6DBA031D6746D4FAE82F16D8F42EA289A3B0D8A5007843C30CBEC29F6019D04E2577B7A1A48FF5BDB15BF33CC49215D028B131AF1D811D3943194F69D5DE7487DFC8F66B675150C962A3FD684987E39A9212F6248435C3D01A223F29FD9FF3C757B95AE8F52447CF8292A55BF0DE3D27E94A7CEFCE11AD180740C24EB213E0A2E98A05DE994D1276B15DFDD45FB204166E9763416A29EBCABAB975BA1CF0BBF5D44EE9394EA20A8284F0BED7ACCBFD873B94C4061997797FB1DD1BA0AB08292D2787386168B0CE9E71C6B0AC7B7B7FD6A4E53FDA1CCBBBE52A24A4D41CF7178CFE94507A783056398B719B8ADA111313A095CB9E6C2FF023B9CEA60EEFD06549B673DEECC1CC2DC7B6F2EAF4B2136599FDB1FD999DFE021BE340B56C0F89014CF70E39D1EE4CD16BC1791069856E312FCCE428F87F87A8C33FDCF9D0C2099C07B1E34ADE38EABEF79392D697F7D0BC0596B91C775C6442E7D1701D82CDE72667D8D46B5CE9799537CF7414C06DFB3407C7B57AC119EB94E2E33966A15A4EAE1C0A4DA0491AAD6F23E0BD693B7DEEE69D52F9A5BD3ECA5D816F2814D6EC82229558202C692C9C5C886369A02C1271C7E2873671083733079C17AC4B8760FAD81F0A28339120B7C08B30CCB461B18F1B124386DCCFA5C2E591B2A0209715272E56D8186B7AAA32FC3A1BD19BEEC8597EDD656B20833644D77A26C893B060E3C2F12737077A564B7ECB7D1929370907679F60D6B0EE5138CFB512E787442C4F7208C9DD8A00BA9C7F8A26D3D805AA7E8FBF7BE5F6B97FD60EC21D00AD840D0BCD29C8F2A12FE4B7DDB95AE814F084C3332E32C12652618DD697EFCA8AE8DC23B426D3A7FB6FCA25D422827411CE05A26A04A109413872D0120FF46DB0A0DBFCA2841C277382E161A49D53549DA2132D6C14958D554A5D3D1952945557051820F730B4F3C1FDED1787AC1A954F51FEB990CD71C60525F28498DBF812B1923266234BDB9A0FE63A85EDE2F0AF821ACE7AACE97D41AD71805772D1652CA13D053C2425572F83C2A9A3EB3D35AB7BF18182DE75824C9E81DA2390F2CB7BA8D81C23DFF1D9CDFC785C3772124CB5FD2CD7C688D7B70A7D6743143749AEAB115CB425AD5DB3757D703BBB0E7E18A47F1EF6EAC2173649ED38CC905FD3D9B6723473EBA046866464382B4D89509C6B4E1F492D55FC6847715AC4202A8D7703D4716510B7EC20E2AD9C07FD76B3C4FA5D33DB7192355214463A02BD1045E90636DCDCDF692C2941F5945C58AEEA3342473AB6CBB65AADE8FD1F76E570B64A9EA50EF3C8594145E6E7E7A8D5DAC00F59942D788F6CB81C36DC57ED8613382B79A9BBB7BB2B7D5F7EEF6AB5F82F00E4A52AA3D302E30C6457275584B038E35926DDD0A538A4C77D0AF98A3DE87D1B268928F8E2B5C4610A0B0F4E61B4D1DD784A2CDAFF444E53512EBC7CC3C6922F028815DB048FB710468C8DC30C1E52D459E036307BA128CC77349C82D3207244BC7A3E97BB1767941FF064EC8E61FCCD5408D1D68164FC337FC54647F9866D5701C65B371738B054978A045736F6AD505FD59D43539D0255E4BCB8474DCE7F48F901A02A355789886C1E04B3DA962B4776DF5BF0DFCF17E5141655A36504E13EE58423F9BBF2B880D3111641207364E2FE5DC79BA6960924DAF6A5A8A522FAFCF54B1A95E7A004EE5607478BF0CA3C3507328D6CE5A580BD1348A97CB02AD9C458F04FD3B28646B0F4A463B63C8D9990BBE2C2505FF5E08804E0576E9BF2E1B0D83F79EE9ADDE18FF470C6EC4E418FFD4EF397557965E881B7985B8780A883033CEF24CAB6B20B77C4195E0654B070968DCC3933E8B98301FF35B33375B6898CC996D41C8B9B18A62F33082B865257B2F79B19B47DC35021B3F638DD1B0AE126FED4D30CA16DD2A3788DA73CB527606595DC86AD21FB0753C519B38732AE46309DD690B705291C80AE834E6343603232D86518E30B5D604FD795CEE9354C8FA593EB502F4F4E65DA5183028E46E1D984EF8310D7FAFABA350CD69FB8420D7F7658AFB0942D5C5EF9763E8B77E0714E1D44A712925E19BBE3A8DBF65563C1E770C91CBF9807374486CC8083B193D690E6277125561F74FAD33D68D97585B1A5CAB9EAF46EBAA732965FED17D47E04990412029A2FCF3E6628F666EF7E93CE46BF14176F2A750961D477496AD73CB34221BF069C67E2FB45AE37FEE12590CE3B5DBA9AA038AF7ABBCA27594F07676A335A17C2F9B9FBE87A2D836FCDD61189BEB03F03C54B10473CB785C5B60E91B84709C69CBD7E84A0C035CCB1F4AC7B60BF4D67A3709BFAA72A8B8CF9419737B6DECA260E936D72AC2EA2119D96A9B7C05272DE4A0552B966C9ED879164881D7062AB3596A8708C4C424F389F1224557F7E08DC31A6251FBD89622129941880D718E1E2CF75BC16793723F28A2BB4D6DBF392BCDC9282FA12DC64BA3C865386F90FE4F17802A838C7FD76111FC2B3007AEF379321EF112D17FD8D051BD1466C97F4A4C7F7BA43502ECDF286853C7B837FE2E71C79ECA1DFC2B77201D35BB3839841571E8082722C4CBB71B7530CC46578229CC49A866606E104E57093715CFC4747EA814154C240011F2B832CD06FB122601615E45D64920EF00EF6BFD5C415E645F341A20579D3DAB6DA5A00A50B4C95C32BB56754B8D877D4DF2F29E2BF2A3F32F5E8A0DEBF8D357884D8358E8350DB1CBC6E8DD76B4B311FD1D66473C68AECD208EABB6BFD1C94025CA44A7FB7B21379408579486DDC3F5523029E60FA8F010F1CF322A0505F1CB93DA797F4195A45A658187A89688DF6AAE1DB8E262F6F17748FCAF75CFD4F73D72F966EB89E0EA44609E5FA8DC27E932E140F649FBEA4865A80FA96378DAC9EF8ADE43059818EDB0F8AAB5B92FAB04B8D17C66DB09A723DFD1B7E450554FA478478F02FD26957FF0EA862D5E3C310FFF524D35820FA76A10F5317921BBD7F0FC79DC4CF3402ACF48A1088348D08913008DCBE2A12764F4A628BBAD2E94E77A3D2EC8BCAD6BCD85367531977584A757845C9C905470EC84BC87D12B3E1033F823CD19FC86ABEC9CB81A45B3A18806F23CC2D7BC9E47A5CEE56FEC5628DC63C99AE33C944A6DF9F4E3F3DF7B5F85E7138E584AC1058B9B746E6AFCA3A3ACE3FEC8D4B11E931DBFEF4097A18A24467C2A8F0E31C2797FCCAD6A8C2B315CEE3EF897D21583BA0F386E7FB88E81E76259443DD45D9787FA76D41D6BCEBA20C4D519E103611D25DF39B22F5B71D9983F1F21DACBE99C2540C97E5D4558C2D5E2387128AA465E897165354629967050A6221E19F3EB44CD57E0E140BC3D33B2D975AF9196D93650B9BDB28AE80592DBD597E78F5770D6E028A68F19311ABE15A888DC39A7FDE765D35741448C2819CB9BABEF5AA58794B56FBC8DA7921531007923F5D5E1129614092A7926350E038208970BFC4F7889A5C9342B4E5258934E5BAE34E42336C20D1C92C1AFAECF1157A4F98916F22B18C98E5E66E0D0EE5DCE109DD3571CAB22838FA72C709560693D83EBDCDECD1B8EF5F64FA1CBD803B779010E001293789B9422EF76D1602E81D3528801D08743DA56F4863DA20A19E24BF47A0A0664E18E5BFCF65ABE889FE09697092779ED54CE4E778DDD46DFB22C6FEB08833565E499830691C2BB989C13E434C423E466AAC6EA13DDA497D3540D989AE29DF94917FD7A454526CE72604BA5BB39F380839D68D251DA888D22D4E4EE6F954896F9A94EE9B05CBF3EF98DA0822E334022F9ED60854D4F3B808299A1942D56318476B381C6A8582A037AB4832BFDA17F090B745A88E538474DA0BDBC1F2D0810B0B9E56FFD69847851BA610AE28EB78ED1804A6BE1CF80C2E869823346CDC0FCA49128BD9459F6A8DA6724EF9C96E033A7E18E1FF9A51CAA63073F98054E44D31E4C830CB69DD5B0691EDC1549337C75AECF577BD2A856CF0703945CF75E6F135F227120D1D091615B4E6F607C4E87734B9764C74DAD832E4BD92EE5CA88716CF4859A98D90EC5FFDBC967317E2949BE8B838BDB50BCE54F6BFD11633529ACD36A77C64E205F6FBDE8F1A9B5F2DB99683DBDA98689633E5DBD5E46A24B9F10A4BDCDEAE0729601300F40A19412C0D1A05CF1210EAEC45FA90450A5BC07B1DD198EFCB01FE552C19F9811E81FD0ABFC539DDE6EAF967555FE4A9C264B1EDAC10052E6F6F5D1D95A6BE7E9E19A78F90A888A363A6187E49812C94282AF60CEBC70C23BD1A8DE53FD9283B8F2852F97613E6378B0A05534C66CA78449495D014104453D9E71FE1928917FE6D018CF7A9B4B6CCF8A2A9950D96EF6AF9B08AF374730506B4BEC59325DD7E5889CD11C4ADBC36D2318FC6793DF74CDB07CEEB29AFA6A2E05441FF6B8474BC3F094E753F2EC12603F5BC01C03321E19BF08845248B15113A8184543A27A8316B8B5175F2069D03834C446B7813A66076B97784B6187A8F08767C69D94C304A094A38FAE5E75C84D34E849AD02661F549407E9AAD6C9673FACA29FF3109A27C35940D09FF8E7DC9976E88E92ED4C3277C136B898043C4F1FD581AF7D2561995CEFB665B5EA6E67791DA4267FFA53089E2AC0C83F187CB4B96A87852B77C4F2C7C1128A8B2475F54BC2355022715A2A5B346A4B0EE00D7ABF44DE617872F78CB35917CD4F8D09AAD74DECFE409A52C5346136B110A976778162FDEB82C76C87748024631BB0E7AD485FEB871C320AA995B549480F31AA3AFA31DCFC7F424F125B35C701DF433FBD19CC8EFCC23B7F1B48C5E54CFCBF0B6B33A9896E6FF5223F1126658E0BF79E102E5FE1022C5DF2D00F9F3A616918CA992B367137C1E7086BDC51E00EA0F41EED68E220C7A13E0BD58CA48E293C0B396FEBFB4358332513FC585774987BE1183491A225A28755A489FD785D05AA0F328657CABE8C097ED2C43DD632DFDC0A677E689511CEA042B27569D0477692BE1E7A1D272F85B160777FCC4D0E9EC96CA21F2F6B9E12A0748955CC1CDB659E3DB103A84BE2F80157DF0ABDF3877EE991845E872A0843EC06E90D42A9D2A3FB7A3800040E22425A86745A5862FFCCD71CDA2EAC51203487AACAD453D55A2CEAD6423701ACB3B1FB06EC78B2245AD6560F6DCFB3347A005AC821CBCD4AAA1A1F76CE5B8285303C824AA992949E9491AB5C8950FA9B4EBAE215D25CC1E149FBC6BB100E9DC8386B51ED9E84EAA79DE22677B76CA2B004D52DD07C53F918580824FDAF214170558A06336485DE4D14C0B45E6A7CE72D68718BF2908F8B03B77529D70D9D5210AE536F1B957DE9823C192CB645385312030660EB22406006D0340CF230DCDCE09723238A4461468BF11EC63459355CE5E08CD8233E0A29E854F2E6EDAD1AB118CCF0847261D1D110EF450C299EFBFB4F48F35ED5F77ED2BAB1E351AA353B37656B78AF4E18EE06C249BC3DCE9B98B81F878638E2F21BB01B064C6CA47940EED84594FDC82DCDF0DB562F58D7F2211485B7FE7DFA2EA40004A12E55DB9BE415EB161A62EC12E2AEB1B1D479C9A9527B66DB34E19F9EBDBC3E3B5D0A48385B141BFBF5B1E155364E438B964239EDF44C0D400F9F0CD61E8653201824D0EB7D727A86C1C7192972C0E08FAA326B5DB4892001DF6A9782C9EF0378966E41F6E2BCF7601AFCC7FC0EC77C415CEEC3EA751E13027177DAE566829AD228A19FB313DB80102B1EE484691767E2C82A1496C7049AE463E02E0435FEC2D4EF67773932A6498CA352F8BACBD56132304975E92D7E0843B4A6DE3965C619F30797197706B4A62EDE19273EE8E5B5816163CD976B50E8A10F75178EE52E723FFF290DBE19F434E95ED788A4567961A45C1478B349522EC10161719BE408B8409432FB7BF2C4ED5844A18025DA6FE40DED6FDB6F815E82E599ED538EDBF6B79A0BC137E8E237AD084A2250F611AF72AB005A0251C9E401E11B6A9C52C2BA3D2E680EB6EF9533B6BAA1F6C758904E1C32F26D0B1EE433F875770AAACB817BE85670C5AFAED245EE1B4916D32871E854002212407F84FEBE215DA3A431A1E05F86DA0037756E59F902CABA71D1FAE0451FD49AF6E4D45145F5DDD0262992DE47696CE0A6CEC0B705C8DBD66B509E22679CB3A70521228CF994790338285A5C735322A72DF0083B3632CE37E005BDD1654D5170B7473EDB072189FB8D463D35D2FB36B2EF93313B6D2CA67DED0191749E2361EC45DD27B2ABD1B7D16EE9885CB4BA82C202ED47CE08B4B52F4124B88A3F95377A95F48B6AD30C4F6A10618A0880A6A3FD65DED5867AB7E0C216CCD43410D0760B85F0B4747E2AA60FE40C04DB9AB1DE899B48D7C8446AA37C0DCE2F29A72EE4A98096CD81F4AE6E6C7C2A3C034B8F72882F099BCC3E6F7AB213A136F0A7EB1E3F0AF2D62238D531E59CBCABCD464F37B6BC2105FDD0EFB29BEEBF812BF2CED44A00F40C7DB2007FCA1D34FD0224BA71E6F236981E2B3987D1F27D377F3CE226331DF3081F53F823BF038B693C94D18C1A75A7D777A680242FA68F929391F6AA41DB8241480B5AF0818E910579A5EF3623F2B3F8B891A47B9A2069D072E1B9C0D569A3DA6508636982C93DA8E480038514EC458E5D77CF043B59C6E181A3E959136B0CC28B66777E19D7764DDD62CF5B67DB83027310D0A934C47D6E3B547434D10BDA026CE67CA34B3D19579E156E984BC2319C5470B71133CABE4682A2CE8AC82BD53462C76C88E8B4315B522BC5D82C0F2ADC280F5EFE44C5989558238394F0CA8100BEAEF7D2F77B66B5C3F2A86CDCFA32956A1335C9F32D446D854FEB5B4FE84ABBC9D74E75B531E4A15DF573FB59F91F827C623E5013F26978D6035567C3E20A1A4E002384F2BA8B27F265C6BDB500920EDEC3EEE5C35A0724C455AC45727D36164A0C29A2570A4D1CB049CED4FE5270BF1376DD12F2A555D6F9EC47818E98EC8FA9A86D2C5B1BB7E2E9E381943FA304A474FD99ECF8CEC6EE09133C6EB23ACB6D72388688638BE3F7C2350D2FE6B80DE558EF0F4D51BCE5F8442116AE7C1DECAEA2D333D7C06B65F05553DADCDC368D1779D4B3032F9F432E799493E2F1C9166BED674DF7 -ss = 3D1BE66A7B846145BFAAFEBED186B776F366E94805792BE8 +pk = EA65678D51C860A57333AB3860CB7B34DD81E17B3896922ED23F1569B751FD17D7FD0A0FFE9699279F50BB98CC57E57C25F037C28C425270E9AFA17300384261A4465021F87895734D2C20284733981D8A8F95E46B7DF431702F23CAD30285240C35A95CB2E301340F98D53A928E397571FECFA1BBEBE9F74B2CAAFAC511BCBA8ED0F5E4D00C6512CA7EA7CDED0186B45E34CB6F4B4877B3A8DC39E990E0A6B169EEA28098B21F045233C707FF2A9CC7779DC03ED7D950AF589489E9CA6B218B5C3947D69031BF2845CBB4C1A89C28285DE431F2503B2C1BCDE3C0EA67ECB0C84D9C55C434DCE28A15A20A5A81CF954D532F522379179157F9BE9B2A64AC4FF3D2543FA51440A80807542A045B09381D92DEE5289325B04F4F2012BB3B911B15646A5B83CB2DD1AFBF6D3B638BB7527999F509668A19050397CDDCDDFD45E51E248AF075D0D80F137C107A35730D36D5C7F1AA7BECB9C3359426121C8CA6444660F08BF59BE5FD6BF78BE2D5D07E321E44FB5F3CBE5F795E3340CA9352431BDE8E2FF9C283DD994F646EE4D08B3E4C042DD8E79841FA03834498F0EA36F3E0F4E94824D208F350905744441FA2AEA76910F72DF4D13B6727E2A46DD4DF630EDFF91D6E177E34D7A04F4BA73014A01058F7E019B3E5B2B6FB43B85487E582E9A9BA64C4AC512BB363BF17FDE35B1E2AEB8EB0A4A11D37134AE4E1BB2976ECA880CDA1C5D5A0F37BDBEBA77FEB75B0188AB945909FDE75CB30E42558F5A34E1DB6DD6365E75C4CBF315082220AFAAD8176C796E650602A3AF395053DC2DCED2905696BEC0A2B60800AAA99F50C1C76EE98B43AB220F2ED69530D81EB58857273C54B97488182DEA61C09907B16BABD645A2997A28F78DBC949CC58EEC3AEC3B73FA49FEA45B20686801116437C3480390230A492955C4B774150537FDD7ACD15929C3AEF38E62326A13074338815E3D5645E1258376E1712932D4803D9085B0E2A6B690C0AFE23B194A66593AA68DCA9DF7E3DDEE856678CFD9C9F39EC5A0603E494F5930A8867A54622A701230B315CA22979354975D9EE732E736C28481477027F9233015A0FC453F81230E0125B9D93FF764E448662605F0048433058C690B3C7EE78A1318514AA9F8713A8C84C9EF70F829845A28A156C1EC7A19755ED671CEB60740D73AE09692FE7BD47831137EB89DA2065EAB897CE2C0770138CDE073EF6F47C2B404A856B40EED35DD96B546E439CB6B718A64730E08186896AC8C070E554777B1B99370179809DB8CE103EA7E379F72C0A4A2082565BA4671D8C46E6DD23D37C766AD9E4092B8A5CB8D40C6A82BE8D13A27026639DAE601CD93C3F888AF4127E23040507F3CA9AC928A91F91D13C66C27821A9FDB2B3EE346D26865391DEEBB8662D3321FB31133AA9D5360BB700255686C251FF76BC456E9C22445E912DFE597ED4FF5D172FC6138B62CF54B74B4CA4D402BECC988D602913FADF0F5A62AC24F2942237669845A62FAA96F7F193BCF8E10B3181B04B5449F611AF79A1E7126D8DC11FAD1C8CB710782ED2672685F340BA709E372546A87190D81E49E9E4D870F3A918C7469ADB13924BE09FE180306F971EED9985A10E6C64F388BFC650BF80BE27C3EE7A70C598192C2E2392456A2E70004E4558F924310F7F7175BEB5C65F39A51EBEDF13960770DED2EDD8A2D31249966AA5BA48A376F18C440A48BFABB01D8DE7F5C5450748D7DBE760ABEE24DD394C061464CBAB1CA550710BD2FC4C521CF42827EAD4E583DC53EDDD2E256FD58DF451BCFE65BFC6937F14BA0328D2100949686470CA819CC4874598EF51F73AEB4E79C79E9DDB45222481AC2FE465A676403758A271756905364269401EF7BE21EB7A080CC09CED3993B52B08FE1818D7BDE0D7399DDB8726D9A47C7E05322CC9028877C7C36224D58F602BFAC0FBDBE6C5B1DBB8784137A8F1820DC259A7ABB3695E046823F87E841F36D1D19DFA1F2C8ACECEE6F3F731250658C18508FCFD4F9B8765730DF69CA56B109FCE03BA8A4D4C1B0884D2D14D9B6387121A28A083B91412B61A66D71027F402158F276A560C09A5AFC7B0E7E78392265D11618C6DE893C9E85E4B3750A5390F0664ACE07D46EC1AFF052C908CFD778BE7785605A6B6C076AB952D9B6A795C62CF850349B98456ACBFE18CEE5000D1AB52E9CBBD1A600F2E1EC0D4CF9C8A6C43C4CC36A7358A228783E89789FC65771092E4CF939FD91D89BE841D1C7E414973DB9A752158B0BDD8675CDDB2757BD8570FF8D6B12E76FBE622AE8BA085ECE7C5F6C430C49E7AAE8AED0F579A8E1F99401BC90D895BA6EE4E30CAD4E51C73EAB3AA496922B9503117CDE3A2323132F238F6C90CCB4F4E2DCA007FB3B8102F36E85C3A84567CC6EA05B7A2709AB67CD6955F2AE274600DFFE5DA6DB9DF2242ED3B466220F619C5E6CB2CF0F66A082BEE8F5F1FCFB5A7CDBAE3883539174C50461DD1243F8D9425ABF54DAFFEBD71D68855D731A6B384A2DEDDAC1387756073A8CCBF18B9D4213FC29BB02C3FE22B025C4A6FCBAAAEB6326192C719DEA553B6F8EFE2F01E197B961A935A13E8BC3D1FCBBBB81DC00E4054C89ED5C951FCC92DC22FCAB7998E98673DA8A80B95791231F04030CD0C37061F119DABC72E5B121C1AF810FF701298497DFC05548C5D47FF5A44DFAE04FE7486DB78AC4B27336AA57BF1B4DA26030F999B8F89AB7941C6BB8C11CCD3FF5C0471D1FCC5563EC583185E0A9C1FC291B5340FCA3AB723A99EDD64A1F4E15F52B7EE7F9C3113CAA68C82316F38E6BE19D86C27CDC009C9937C05BF1769C0ED5DE589822FE84C8359220A9E2182823DFBAE3D146FB04D9EFDD32086BDA97BFE89684D8F1FAE290013F3BF31D2175F9ECC2764AF509D9FFD833A837CF8E9DE85D099AC34FD2C0E68A04F656CF694B82F03E01741BDDABACF68B240C7E1DCAE172070F3F7745AB5FC637F6B2E669F23027FF5BDCB57E5F01A566D57B87F22A06B867CF322D09BF4222A08FF03DC457B8630C20A81B00C3DBACC1930961053107DE9B7890E5BF4EA320557683D35210C998F1D022554814387F64B387212CFA24381A55F1BB1787CC25596FAA3DCD5667A83DEF8F384328498AEAF28D2C8140367C7CFFA8BB8B6693C260C898C1364F70B45F9DDF735E14677DA5A94E91AE91CB0A54165C63060948223BC0FE47D5152AD261264D361C67E3FD4635310B642B8E6EF734A89F73D0AA6F0BB39BDCE9CF774294F7A994BDC33D14D3A002CEA369F7C5D85AEFFDF4BBD89CD28D9F34A5BF1C3C73902705519B6626C06C7AC1343D9919FB427AC0FB4D5A11D5BD89A9B4D819C9D03230051D1F7F318144CA7AD16CAEF41BFC315E0A3663FB203D077E4312FF93E367BD2629082978E1A1A09F8A7B45865BF0C8E214A89D873382F8F1BE3955E2A2F1425BE3212C4DD360A751FBA26C634CAF6CF4EFAD2141E1D369A783657EA1AD94ED942AAA6EC136DE295294918F0D3584171B9A9F245F059B50D7E774A2F140114FCEBFDE4592701CAF998A5FA4C41EC32A7B115230DCB78AB674F7256E49E7584EBCADE5FFFDAEB68C1DCB4821ABC09B0CD765DE62A0E17747DE8D8A4483D7BD38EB5E80361BE688A8689C74BC194DCEC81E172AF381685179BFA2D28772713D5B84EF185C249631C9E050CBF645D26416618CD04231325456624B68A69CA3C0C2FCBF7B415E8F029E9967C19A227F5EAB8A8A5AA0F4F84AE8660646CDB9DEA5122934328C6F5DC7F13817D7A58756318EA7BD40C133CED85473352F6719C43736E1FE60183B0C68186B33A05D338772373242E44C4A94AC418E368BDAD26286E5A3B1F7FC73E448A05E3C422F848B49E732B63558BB6BC5D3709A2124940065796DF4BAC848D3F0006162516224462B645EFD2B06F0B8FE9727386A3FBBC26CDDBA6BFD8020D29C2E87360CC66115EAFA211713D41C32FFC30CC67ADA52D3EEDFAC9EEF7A45F01CBB3DC53384127E1B65633344CF5C6D8735E4D9D6CA9EEB532B628D444DE6D1A3AE93E738CB4B21C9CED3FDE3A320E1DADAEA287034CC69CA93F94176F804DC7B38690AF024277079E2FB90061A07D30EC3D3BEFD7CE1143C76C56B60DD994264F77FAA17071D3FC128366009C1E161F556062C76E2450E14C12F21B3FFC0C45BF5AC40BDE47D60904A5DBAD8836F47D0BAF77C3066D43A557F8767F64EB78D605C906B5DFC8AEE53668E382E6EBC80C31FFD6243A17947E910F20CF565C3E1D6A11F8D994DB35E58B0B10782942C497F7D7CB5C4B9D41DA2449664E6465D3BBA035A4851AE877DA1ACCADE255A3A980395C12F49918E71A081DD380C91277B489B26BF9665AFD195DFA9EBF6464472758CB2212B27F541ACCB29295787749670902FDF8CD92F054F696E82E3043D6213DDCF045E722FB4E09385D4088C65784A46EAFCE8FEA1BCEE89C2DB131B910BEEC9473FD742C856F859AD74E5B6E1D57D5A553A8E8C928297CD3DC569513E03E3EE9C1A18FBB07E18F4FA3BAE78F3CDE98AA2B97B355A0A22F2C74E3960C2F38F476F3F1E7BFA6127603C3A04590AE9B9E3C1572F6211D2143282325A5E2D9AA54B72202ACF7401CC47B4650EFEEB411211EAFEEBEAA62952BC34F492F956D92A1CB8E0F9E0F8BCA2BD9867263EA3A4FFBB4CF8CEBE7709E3683FBB00FB1642EEF045693A4B17A934918783A368D1176E263ABE7D0B9018CFAF6FC68AE5EB535C4E33584A61BD4BEBDF8332F667E8530ED34271F7C87886C7DF0C08CBB05BAFD6B88338CFB9CD2D87EC5A2B795B8AAE624632A502FBF87CA8CA122CD5F727889C71E48983EDA146BF645607DCDD2FFE92E9CF11502208DEEDD6E709D69DA906475DD714F54F317C608EBBF27AF10CB01876B7A3FED8F0B5772C583EC4DFAAAC3D2D4EBC359CF2DB32343851FEBF4781292026DBBD6E8DE4EF9881608BCD6FF969DA80056DB7E1888F93412F5B66756F6CF26300A5A90FA24C55FB612D5983B9D7627D079BBABC2C4EAB2567A304E7DEF920F894F25E70A3883A1786EC7FD69AE6364BA6E7E0EF00B4E7602368F8C5B4A67B4DF5C0E639D600CEDA8688B66FD85F8A465C0A5C87DC92220B38206A370CD2DA4F2D17FE99EB4116882AB1CF8F918E9FC7379AD3ACE2712E598AE13A7039961F7A58A71B9C21FD01576C8D3741680D0127C82A12878A0EA039B7246839EF4E0D65D5FCFEE4DDBF5231CCE3363456DF77B286A851BE7937252AFFDA4AE36D2F729275EE9136A93F53FBBD5DACC731125A342C2523955DF4BE5168F2C09F605915FF4DEEBC2EA104D2923F44378547D3B95216E110E9D795A4E7A3C352CAD8FDD11FE5E6584250C60DFF13E8E8A5E74FE7E4E731CDB320702534E9E14A6652E7FB6CFFD9C83C4A9691A4FC00A6254E331D53E1AAC8F96BF38A198AFABE20A2C8BE9596CE77DCF2CC51982A98E645B558D96D17DEF55DFCBDF944D7E29E197042DCDB5DA9BA0113D01D5EA49AD97C95CA75B96BC8FD0B0E8B44060DF0135731536882CE9E7B26FEB4FD63B88245E67D3CC43D7EFDB28919DDF65AB0DBEC3D03DE3D93E6A27662D9DF96D5CBFE56FE9FE07EFCCC34A766FF698A09F7D0588B0E102899A165901BC7FA48A3DE29D779E8DC50A5E22C48CAA8E885C3A88EF95831E52AE199B4F1EB9A9242E6931C42C3AC6BD8470F317354483352201E14619051E93554F15923ED139BA107E4AF05795C1875B303B3E3B4D8D7CDC43FDF1E8EA33418DC4F80AE82EFB4C2F0CA01AE401983C08EE74382C608E47865A0D1406ABF723068012514DD4F3A3719D3E1BB17A0E0DFA3E33E895FD7B6C84A14B863E6DE176DD0E8FD5A51D9C2A98D0851077AD194BBBE37FACDC0068C6D94078D341886F6CFFA13F885C544ACC67AD402F933F9D9BEA62FF90AB25112CC9F02C0E956AD196DEA2F6F67E1A2BAD8B072480D9EF936A5BA0584A35F555DE946C656FEF478E3C16FAEEDD4E97B85EFA6529F1D4EE3E8C9513D8121667306A1B90898D676C226D9BE9A5754C33F5E5E3CA048C1C9ECA1570EDB969BB96415DF536A58214D74FD05F331389F8DCF3AD4A4912FC371A426925738391CD447E5F1E192D9AC985F4E51786975AB4CDE40727BF5C36828158C737FD43C0BB9891FD239DB4C722AA2A97DA7199C3944D1B557BA9DC67379AE06474D0C34C944837AFCB12C7DBCEF2E0B02F24F918BD8B8CDE3FDEF5CC8BAB3C9EE1AF6060EB6B485897A3F8026DAF5C3FB40388482C37842FA14B93C43318C05C124572BB64FDBF3BF5D8CCCBA26035821A32124D25E28F32874F8DCDBC9495B71ADBECE19E19A69E4792681AD37AC5A5F76660E30A1517E233BF16122243245F7AF8C2D0B0D5CAD17B7B56D515B9250BA61872A0C74F9666C710E64AE285D69A0B99950EA8DB21968539BA461291C5B0328C890AD309F8FADAEB2B7FF6043934F3D4E2BE094FB1DD7934C7CD942B5A40E77B2A3CFE8965BF9F3966FF4B9882052A8292CD5D59407BDFCF5737755D42C405568EF7A093F4DA3CCC003A0656E7D98B48C01870C52111D91E9D686676C8FDE4AF10531D80DC447D1D1B7C78F118368F7EF2AF04324DD7BFE763E43A0698F3AD333864E62BA6C9B4883B1EB2C9C38810AD78711747CE6247B7CA615C2388B508ACFCDA561B03701FD04A105E6CF02FC9EC0139DEB593AC0D7635ADB81D64B2727168961EFE6FA4FBA0A4F3368B0B3EAE2F6B6FB879FED2239E90AF024045BB55B4A720C4048A0F91764A014A2DA2A2297A40D7AE78C74F210A19A551BFFA1225EB73DE79A10A3482F2AF8FA6FB25E7310736CA80E53797383308A1731F1C89A700AA191FAD2FDBA5944E5CFA85B40C86B8E22A4F6B959E498B688F3B0073DA3F74EBD45ED7FA74E8CDE912C53D5E1A658573F3B3EE41197BAA26789EF17C69E5FE60A0C8CD59905E429144CB2A0D0E391D08B803471E8D7FCC0AA3A183E41FA91F5030EEC7020E39AC12D648057441CE83C6777862D62982F6B02756C31C46C69F53BA9DDA00C76111F8B6ED741141DF3841AC34093BF5776FB3A7CC59872712CDC94EBDB4B63B9F0C81B72CB7CB7F62A717F6D690418166AE32638AD28DEA5F94935569EF225CCF0F08686710C8AF10EC6FD2879684867369AA4F9C480AD3E9877523328FDC524A18511A7F937FEE61654BE4B6DD911074DC9C70A4DD30E84E4BA9077D56C962ED71B266C71B5D40FB96F60F3A0251BEE880A8E13058E3F15A1336458223A4E38AAACF84954A00170BB766D55DE19F55807B0CD63BAE8F32DA05F9CD5655E0132F540DD615BE7F2C586E67EC0D6DB5C493458B55A578B470AB158FF5F54239A9AA1DF1720CFA43D8C6775B2F8C84EF4E6589AF6C79B8C6866ECFDEF490A8FC134C059C0839F3B9C9BFC52724CD3B629E0EE85AD40AF003460FA7F5E0BB6151F6538BE832FD4173EF0D846B37BB86703E82368D37B9A9CEA8D6470630DB44DD05A44140DF2F7B5DD7947D13ADC1965B5844B37BD6D6C5015F82FE9A1CEBDFF495C1CABD90EF7BE7E2F790B4E05FF4F3609AFC302E3565ACAE143840D390FD7CBA96827AB0DFE9800C893F792345A3F1C89A1302570EF3E2AC497ABB4ECFB699C00E3362E767A43E8A5A1C507070D4324AADE47A008A6D668DCD9148272038769B14B1173DC7892F82BA9FE73ABE1D4047FD55B714BA2D4D655A6F6E5CDD913746E85968729415EF86292D128F5E5BCF02A96FA5DEA8C3BB61423B07169181AE8B63F4E62E39412B7F32555A44195BC91762788E5B6F0959DC45AB15DD72DECF73404B0006045A1F259F5BFC7C23CA5BFAD036363B42F2E1FE70593044057D6940676AF76EE44D9476C616E23F8A89408FA17F716D7598ED80FE15E8ED81112ACFA8A21FF09F4465C318D005FA7BA40E40282391396173EAD0A96A38E60079B00AADFC24B2FA615E93FE9E24C5A6C0CF15D89D3C6B2C1CC7C0D541EBA4E0501E0CC96918FE81359F604CB6EF0B648437B24E5E00F9AB1000EB9E3DA9158392A8D5D1FA4EB9457A82CC8FFB9C0307107251A75DF63D43C6AEA50683605CDF5159E65621844218756DD4E9B2564707788C96EB173980EEA7B015BC6133D200402468085BF05370B9295CE8EBE33FD55B73C30C01ACD0FFC1D08D38CCF46CAAD7D241FE1EF46CA685AFD84BECEEF0E0C724DAAD61DFAAFB7805C78F16F819275A8B410DC559F82E73655F1144050EA6BDECF8B25A74BF503A2205881B3AA55DA40A74E3F5DCD2017A95D9C3E8037E082DDDC11EF4667D2744483409831AC3DA3C5FAFC85F1880101DA0E14E8E8F77CA07431DBF3138C7DB540B87FB5C0BAD54C13AB79CD933620EAD120DC880FC12985C7A3E744F24AE5B964C35DA220BDDFA45E39291BAC05AB779037BD50967A1D27B24FF5932F258EE34382567C63E9842D486E2E06C068F1FF4F2D3933181955D8403424DC035C537A6717B8AD3D39F7C565BDE947C057E37D5AB3DF5F56BD5893C5593CF16A68F7E4E59C8B3BBEF1EFD9DB477A59EDE59E552964F49D8220130A9DACBEE52A3A7669FFB25B52FFFE8F9F572759A69A58AEEBD940A8D02CE059D391461FF8B269C5584362698D6F8E3CEC5766231430C53A7B4BFAF6972D64D87D9B36828CD9E8E582A73C9EFFF6521406EF1D578B33C98B075833E65AD66883A3F0636D321DD480D1404AB33B9ACA8E4C8CCE424A2EDB46A4BB7244EF491C4E4B7AB246F8DEEEF11B7533C99ECD120F42A059A45F4935E56543A082A437F819CDDDF3147149E3ADD9E026E7DAAE46C2B9D3BBAF52C93A2E451352B6974AD8B7F49ACC20D0285A832EC3B408A04646C370027A6A795BA2F127522CC6D4C6BD6EE1E363FA9628CF3D4811CA9409E4DB6A9192395B9EA3BC5379F0AEBE519261C0C473BE13EBA5A3BB097AC661E5C3B31D1159FBDDA83FA6A13033FB8C88BF3A7DAFDC567E49DA4C750CC4D5DC3C5517FC8C5EBDD261EF293DE9101BF8B3DBE8A9331C32E21FED9D770780A5AF70C495050049DA9027772F9DA4E3FFF790EB77871BAF1A4C6B2C3A528386D0E437F7347A0635683650C8A62E0201FE18501334EC0EC7824E6C844DB19EC3EFEC1D6F0475CDD43945057C4408F3B5A7CDC58EA90D35724F6992A4162CE19818850798706E50753F41BB41CB691942818C51BDF96B65F5D6044EE30E293EE887226C022187D463AD345423A389A2349B32C8C6F84B5D69D882F76193C02D9ED6032EE7510340ADF429146ABC012A81716D97F91D978DEE14CB69999EEB827E4C98238E8863B76E080437BC72BAE62715E1663C4E74870A5C07850E62427EE5D879C81BBFA366821223BB8B774C2B753C4585A883947FA116BFD53076834F869AA9227480BCC0DFBD2C41615EA7F6246837F5B9888764D6FADBB8A5BD4B0DBEE2E3BCA04C1A670AEC9BD9F8F97EEC799F0441D50CAE01B1E572098DD4590173A322ED8AAAEE6B1B15E64720E20AB53474CFEBC395E20ADBAAA56EAD8098E6993877FA0345D231A4876373FD9F43EAC64A45BCF7FF4BE4E670D2FACFB637610BCEAD731B9A93A3BE48D43D9766EDD8C8329F2C3531183F517A1F8658FC2D8ABCB071FCAECD9B4792EEC90E28399F329EE09D1C4286FA8E6CADB135C0877E656EB44D618C177B8249166BEB4B16D0BAA64B937B5252080DFF2C41B49B6F5F421CB06DFC1951CB93E81B7ACDA81BF3B94E63EB413341F15E53A128C241CD655510C42C5C3F20898326C7F63D6E4687CE8E2976766DD7F4D799F849DF3F4B30884C03F724F044EF3402B829A70AF7094748BBB5F8173C8DCB3711B16E92C3C9A03CAFFE5B62C172B29D8BF9CB90B7D94A621003D258CA3435E9CADE93E28BDB8E3A0CED2EF70501A370E01B91F1A05111D8FC9C32BD89EDCEEC2B6D856B31EE774B17742CCB192DB693210C8D0964640182FD6908567049FB2F7565DE91B4452047500853F9D49B4478E8379C8BD7954C25E4AC52F7907E3DD510A8AE921239D6468AC9F17D6C63E7ED7A8238E0304B6A461F714A38A2B6FF36AA599ACE55FDBD1C305641F53B40B10F7335EE619C7C1E8E32D685ABB2F4DD59D44B1A1ED43E5CF887E3DB1356911DBED584FF2C06A4E2169312813B952D9D98EE6A06C1EC669023347A1A2D9BECA67C44036304DAC7D47FDFF51421E4A08408BA239A1F33A59A5BAF7C9644ED7CAEC98441B4F66DABBD989DD9D8DC8A56F9EF3D089480219290413FEDE6317C6212DC6B55FF87E81A85182FC7CC88DAFE449F6229DBBAC73C7472CEA9D9A09F7AF4120A082F07F62DFEF56B02D2945116F3FAA0ADD6286AD827BCE81B164B5D851B3EE800F5D36634C21F70705838C7810FC65620CED4456C859EDD550D4423ACD156D6B3D3BABF9109DB6EAFC17AF95DE2A696598DE4C027F387C4DB0E19153609C1A7E7433D109C9A20A69F7D62C0DC5AFE3759F3FE56995CC570CA0D43219F5832D4B27C85011EDEB17131C068174F02F7D57F36C2812FD217A178B0C27511C45048F4EE81C03E32B5CB229AE7D2B6663B1150D4DB59A6B18E1CE3FE80E61B83E72F22D5F0381B182ACACAF7B2F52DF13345967E4041F2582FA255B00E103AB9EC9AB9E7F703916899F4E468E34BF0241C6DF3755C94C018AD30BAB2D2D5FF4DDAFE3D31756C77ACC11F7AA4F3879D36C0586EE0F2F13A0B280A8E9A08F74171264E9D4727BBDD36E70C5EBF6A60382DC0FFBBB8A339F535C96F98209D33144B233010EBB2D2331C4B295D11A0E06C880C32B002FC0D4F9147433CA6DAF7475AD6AEFC218D5EE44017427B51512E5E81C66705A5798065791D02C38E28EA25EC89EC4DBA71A03083EC79EDB03BC9E3EE999AF3A48942191C71CC3AEEA0F33448D9724E22D136723EA85D97B58F17832FDF31186C386C0E33E78DFEF65FCCAE4F9177451DEFAC9B61188598BDCC8FFD643DB8940E07F6DB885B1C1C890D63CC7F954A8C212C0B405CC4AC0C05925BB55B94AFF1893A139BC05F89F6DF8ECCD2E942165E6B5FD92258C429F6E631B8D79801EA326B2FCD9F1AA4879A6CDA28431B869EECA1236766CC957954E7129FBD2C1F0FDB2D2EA7375EB38B5B114796060E32D2F44467886665B3C13CD47956A982D770E4A9F95459971E773BE3889FB450B129604DD67D6F5DFFC814D40E19D14D07EF8CE1AB2C48D79B1165E6A97E22DCB332352BF5D3AD9756F93759B2BFE929BE481CEA2D89E683F6541563691AF2112112CA85EEE8E2EE9E4D0D5A169234E5B29B40154342A2CC230E3B18CBFD8B46681AE84E96CE26403AAF7C22D80198FD3FFC22111A9DCCC8D771EB29C25488FBC5C4E858882329026C0C6B5CB0C7B1470FFD066A97AF04EF87641469E4BD36E9B2117076DA14B81AC8E2B59DC7351243044A23F5E2B8AC1A77CD9355645A8AFA2E84F87148A2E1DD317CB8A81995C3FA78A64F2E89451BB957E0AEAB3EF0C6B5211F5A6CFE4C90F1DF1072679CBC19C3E69BAF7D47168B1B0DE6EB32FE91CB2FC85D7B40F878781DC6E69E39DF171C096371380D5829AC04909E8AB17750C450CECAC35AB2230212F713A40EA84B3E6D3FE800832EEC6C20880CC02933D072377A9085964E3D97BDACCFD2B0D8311081E41BDBA64FC91D8F81F550DFC3D11D56BD7CD214903F010FD16BFEA6C5EB3118BFB42D8FBB8F930A424BDE80950B53E791FDBFE5C12B378A31F3EEA24CC9BD9C9601DC80ABEB785964DE148E100E7CE7060033029D0DDB59208F9CD0A9BB2A45B62193A9A59A0FDF84277607615DE931994313E3ED3B98BF32433530095E215CE85FF5F3ED9CF6BD4F3525AC744DCEE0C0FE78F528946E038EE4F4EED9133CCEEF4728C49690EB7055F6AF727DFD956E769252E1D5BCD33E5B2615A7A26F697C60E24274E4609740E4EE17FD91F72FF0EBE87E6FBE1D4981A158941F1267BEEBC2E771772CFD509B960FA1905D0102AB8154CDEFC9FCCEDA7A0631B3DF4950D0167709D1B0D7FE0503B6E73001D71B47F246BBBCDE9351BD4323ADFDECCC99FACB4AC34A64347B2B0C45E70249796318CECDC4CA9627A380909BC8B1243F19E778B8A8AB5FDD7A07EF57DCC9B58BA64CD44D7EC1230F3DE4210893544E5F2C69A3F13CAD6D91E52A16246457CF4D09850E0D0E481C65F8B2B76B0264E6F8BC5046C28F76F47B59F2A156FA7C28C6D313FAEF76FF6B81F85C960C82C21461B5D3B45EFA41391A796BE7630BA0A05AD3DB61226112D83D7905699BD6BA02218AC17CA6F07B9D0A6CB3D3F761CDEE5252998BA71152E63CC67368D0B7F4D01D4EE29F79C8BDF9CB40FA77C86224403483E1490BFFD4BDA2C20EA3669A5265B5DB1520C721854C5AEE6DC87ACD92019E656D7746AC625F4E9DCFF4BD8E1D1D32590A29043CEC7B080F6F1B0743DABC2923BD79FE9C489BEF8284D1166F058D71D83373663F1F68CFAF625660B9F9E700A5A1B47CCC48AB309AE1BD601C3C094B6E3B9C4F019A4D83D631B4918EB3F6A4F6A6D849D1F36D5C649735FE173F8AECB0704BD42222176A9F3C063DA8AC16638CBC7B96206653A62C16A7A4F781B2BBA2FB2D4EB982437C9EF964985E2C9875FB198D2B37B6458FC544F37C084806080F12996148C342D340EDFE182FCCAD1E950298C4A504D442F54D075C5A413FC66798DC4EEB763F8B599B9DD970E1307C6F2B126FDF08C29003822705924E1D13E743D47CB64A396ED8991F9C4225296BB4F43ED9A52C3F9DA895347240D866D92AF583BB5C82573397590C8CD567BEDA2DDA17A609045D70CFDB8C61F60A3B53B171FF671D3E336359B33FCB578E632E1E3BD32429C61101E622F3C8D0EC71BE5C9AC1D25FD3DA394A8AA29D5B4D866284A072903E3BED507D0A7E909A2F0C3BEB93E1FDB3C77185B44A777287DB89440FD52831BE71536C3CD94FBC7B0ACA0C530203A2C3EDE613B250859F75B775E5105A1D35D0B7722EA318170002E5C6D38793227CAE4B90CB69920B95D203A28FD635966FB669F6D2FC80889154E55E8F97A56BC48DCA0550D9B4B6E43F071CAEAF7B12DAFA3E1F5330B83D0C3982B74616D9CC8C60574AD17FBE6FDDCC397DE7E63CE97CD915099D473EAFED71AD9EC7653C0CF44DD4759573B2541876E2C23C7EAA7DF85E305741B1F891769488D13C442844E9C238B97C909488E693BC1073BFF6AD99672D3F81F5644EB5999CB04A665D147E34C62F647A0CABFE402837C659E2F3DCE085131C55A05C4987B818B266A6B71F356FF0CCF5C297971C868DF3344E1DE27A915F57D8715FB61F67CFEFA9699E8F5681192891A2B2F705817D9CEE0D5D81A4845C6FABC7E6D06D72C176B0846CE5BA42543E0E7A81093D8F26CF74DD6FBABC679AF74A6776890A4D3E6007B50CC46BB4BBB6B0980DD4408E19EA8B48C8F95384712729920D49EAB7BF4E7FE3001A9F1A28C9C42EDCE1EEC9ACDA8D3DBAB51A8AF029E284C9A56C42BDD91C7A9FB4E7E4647141F6E2433DCAFBF49B7F9054CE09CAC77F2C97F53B33ADA0079DA4F2E0B9468C6866C6959EC3D867BB4E3AA14A858DF62D3A5A4CEE6C823FD91099424741389775C52141E47D4CF68B9B3E658D4E679C6BD3B57D513E100E1885056BE5063133D709E04DE7D6AC84E0B3F36B124BF6F447D1213B2598D11CA39388CB901D12A227C600774E4E30EC196ADCFDB6ED1D89B4FB7A18F759B8BF9C419674C5CC12A6D85D0AF593A49992CAD02A25DCD8D862663E5D0C20A857F5C96EE29865C10AABE01A406917A91EA0B33B133F7F5CB7A0581D954D999E97D8F83FF100834285119AE11DB88E7A33E304B5FB4960748FA1E560ECF2F69C365CA40DFF40800CF8A5DA5D18128FFDD6DB71E9C146C9CD68E3C9C6C64837F3E5A30124C84B00196423532A831668B695EAD7D693958B3A11E99386AC2ADC39031143C0EF03171B197462B0EE09552CFBF4DF72056201A8F1701BDC77C3AA7115527E577FFC0D7397EB38845CFA5D7F63A2E6BFE77B83191B48444A8CEB1FC87C4C11134BE0CA9E1A74FACEC7B8B1F3DAA5F7E4A2BFD905EBAFAE766A20642D69941AACFDDCD4E4F095CD08BF5D442D52C7882598C832325E69DBA930BA445894430D5D465D79B0802B7373B13AE63C3AD613CA0B096161B1EB9C0147B038680C30D3A0F90FE09AC46C512D24CF164428C81577F303986993649B4E6B1DBB1ABEA10D3A6EA799B3087BEAB38236638784F9894EEEE17FA0C2E8AF127918654945A94B555702AA6B69A4015E0875567D5A2E56C6AE4BD945DAE9EADDEC14A5AD86153D177649C7D1B07A39B392D4D61A7B6326C081790D1371DF3BA39C2A38E2EDD3F58C125936D524AF64C4160F5A57254F7B3514A1EAAD527DFB680FA7A00E3B0BA1869643BF3622C8D88A4003EC75D0956B6281A3BC2F84D220C6E9473EF0F2E45D4C78A520DE8131227ED7ED6387295DA155B335FF0DC7B43D724EFCDDE0BC74FD58B7499BC18BCBB1F17A9B13C673CA4D291CF2AE3038F68C52ABCF9FFFCC88CBDD5250ED67F54EAFDDBBD8B7D0A6305069EF237BAA7FD0C80D6CAC0115404802412E2EF3DD3C83BCD6AAE126AB0507E25183DC7E1DC9637E6EFA6F9AC9F8743ADFEC8C4476EFC75E2EBFBCC90A7A61F32A36A6807453B34A04128ADFA5B6E5D4ED188000AF48415BEF212B6087918287167DD2AF9BEDCDFDB2EAF47A474AA2ABCF0BD3E171CA63F877F73F1E9B87940714A1FE2C3C0DD72575AE1B31D111D4B29A08BDAD15BD2122151253BE912360436A037FB592F0738E2AC8208CACD4D635ED68F46F24018FAFCBA603036B7D9F0A0F0C7D9AF1AF9DDFCDCE853785A1352C059D659170D3A4856C660A4B1A31C1471B10FB5C0073521810F816F53E4FB69388EA5D49A6B57631FE54E8F5C2AE2BE92B1EBBEEDDA1363185E1B923E11F60DD8C51C82846119FA909C6AAEFC0816997367727B0F0ADCD704469AAD0BBA89FCD73C640AC3C6616436E6787CD8273620C589B0E2565223183256EF0CB732BF48DB7624CA547659A1139E4D76CAE9056BAC0B61858D0B6A14930ECD4175CA9F9EBF3D23ED928163B1B6C1278BD04E9B924B00900233820EEEF1101BC606FCA6E3818DE63A74E76DD57717E6535A984A6F0EC3B089A18D7C006841B30CEB1DB3D70B3610DD10A8E93742CC49C113B9C20EEF0BFA33512A2F9A2B3DFEE0B69E32B0AF114D4A179E9B939F7ABE26C3C43742280F8361156A3F422AFFC06354B5453B19855DAD966AC6298F4B2579C084874A75AEA888D62128877A41C08DF22DBC1788BDC16FBA41021E0E0006EB0982D8D1D3989A33EF8B5272CE8390B76606E695E9838790DB1D8C74CE556DA9B8DF6F174FED569B658106E10D1D77C7CB3B3B000FED293FAF5A92233D7D2F3E23B81EB7BC8017283003F11BD0FDCD6E9188DAD5E965BFF6E56BA81560D16BAB58EB47C425D322EE3C7A7E528032B08123CA68307071327B3D9FC7D64D6733F188EF324D61776B4CFE546875DC33CB6DE80632DB5A743A8C60BB1CCFB117FC0CD643166540729FFBA1A48356E2E5DA6269DC415F937874ECE3312103E35126A5FE898FBBE3074870AF02AB781661F39AE6DEE1ACB93D0B5087384A9EBE47593CC7D05CFBB4363FDF257AE3A4719D6A6A63F5F265BDA06682E48CD637DDFF4BCBC14EEE7074A09997535AF703923E19BF630A189BC49034806B2C65B0646DB97CBAC09ACDB42FE36F80F905F18EAC87E513E89F7D367CF72A08E425820D742C741A661884A822F898D21F412AA7E31C5760D3474D3B1A609675D776F0AFA9A648D4123F9DCD3C6929170A9586C1BC1425BE7940D36C622D96DDA4F76655C773A7DCEA9278FDC8E74EDF60ED52411A25F8725620879B646FB7152EC1951BD70C53FDBA671C7EEA68851292C83B252CD45A67C3FCB4D60AD18F4AB9379641A830DA4798A55F4A79EF3810AC8EC277489A593B381A0D939B6930AE0B0C46DE92E923A4E636BF3C7106A441B3C35BB33DFD5A8BB788AD6BABD4AB75487D9897C5752DF9F209F1768EBBB507FEC62DE9EE6337D245E008DA9F636C67949D2F792C282A34EEC92EB23AD9F31A5016F97540801069A7B70A78342B3E52F83EFFF5300090C2E429C63EC9D86E8226C941D85EDAB6A1295FAE4EF6C100B951C3CA3819C6794B93C22E2059F0C5ECCEB8BFA930B22DFAE6D681A91FB0D808C45C4D041C2E2580A8837775FB7899ED8A3C70B6828F4EEB4E740E37C52578F8095925D0868CD3547617BB04C4E3B2E4B5D109FC812F7A9899CE6F6CEC784A0FB910E9378465A7D68700BE833B903CD34A08A3E73BFC165E7AD30D9C4A37564E334BC74E991D6B24F97D962E289EFED6807B41A96D7C611D479638C5E3927F5C506B07046275AE3F15F0509BB4C3C8FCECE09457E5B095CAC0AB1CFAC3A4B3CBDA610125C79CBC72E541F12E2F9A9596337D4F84961BC0D90DF19DBE12A178593949C6040CD64A915DA3C47FD451DDB87A251D0D8D808EACE12129DBC896AC776DCE08F2EA3342FA5C42535FA0879C6184747E0E7BB322F68F107B0CE36F40E104265EE67C7DA8103A715780B7A8393A1C06C297FCF76F06CCB71E952AFAD1336B87362F3E79FE2FCCCCB8CCAF8FBB902AEF54F1AFCAA7CEF84813878D572342FF8921E256C2C773222E9E51AA68B46906309C74A52D5F9ED7CA0D134E1F3C354D139B2F2054D94E3307425A3473BE3C521CBAE9FDA41DD69109E65FDC60B0D71D7C0106B7E75047EBAE5477A4DF940C52B406132127876F39306E14B006B55EB14E8E7A77CAF406BD6BC9279FF216C2E2FDC9706177E69A173C4A4CA89141F287DA8762F49763705B5A022040CABF07A9B0DF860D787D64E69B69A9EFA5659275C4E70614748761B53C6B0A3348EB8A81C22626B26D03391AAA0DE70146A24EFB33CB314F9FEBCA3386274B84AFA7FF161636C56E9808372961FA2ADEA9A117A83BF3A65EB52BBF233240149723DC3B0FD91F0415BF128A522C0B297B843722DD4655D9D0357E829700E1994EF3D5EE365BAD88C16203A998C4722459C31492546F1C27596A9B4381D225CF20704901D715C955DD080B773A5482CAFAF0782CCE11F9098F18FCEA8DCC3B3DE474223ECCA8423E4E00C4F3DBABC750C495CF3B98426E6764257C10B64EAE77DA8E1C967160377A5447530D7AB6DE2DC986238A1027526F45C8C083B1C2FDAA7F4F3E9D53B25E27E668B56F26D94007CEAB99338CE62197B95A335B3DD3B7B78B5BE313CFE9C8A7B4B4E3C6608A2B8ECC505D6ABBE7EC50C0F619EEF15661E7A68B643BF25300C5F2B96DA5347289D40B925CB097DF280CD08F5208EF949F3A7CCE5160B733613C8B873262B6F179A7ED3C07A72B6AB3E652D1AB4E8DE4AE5262BB7180CC06559763666F38B8BF64DF3A9C24E594BBA5AF289C02CD91FCDCEA47AE548C576E0DAB904BA211BA761ADCDB236865034962D4FE91C93E48F2AB94E5E5BC9A2FDE760A608745B564B3E8FE9926854090A69208CBDFA95CC8E53B568782B24708B4FAAF4BF0EBB2BE23EB0B8877A9B16135C71FDC74688C35FE61D5241E0BB6746C6E0656C7D0574D083F842E457D0F9784E264C73A87673FC081BB8FB270BEEC411B7B3B270E673D7D1D7F5F7513D669D813B6ED86E5B802817233680512A210DAAE0108623AE21AC88D6D58F317356144A45115BEC14AE78A642B5E2014D6E22D8C3367A46C4198F6058C7C3FFB7B96E3961319226AE921DC97A53B1AC3199A0B42C8C7838C58DE652E6E26ED9DB192318D11EC5EF0621042341608483AA8C01F12E0C03D7B903BE56C8295E0EC04E03F7A31F25BD1AEE93848D4AD95DF81F86F113E79F4E33D26ED95842C6C3B1AB6932D2196B7E4EB584870F43254E50619C6AD18FB31D6F6770E6CE7258F7165274616A7AD77A9AB8B4FAE6A24498195DE1BA37C96E6F865340EC32FD31F7F84152451B102381E5EEC3C52F466A3711753F519BE9D0C80940B5DEEC4350C9FDAAC66AD084DC6C41077F30ADE1ECD117EC5A465A00DB059954B5A87A6F852A37CCC6C09B7F3ED036D5CFF29BDA61CC64D309F00285D8FED551A9E77938FA2056EE327F0084A53C691D88C5A160C277CD472A59C0D49BCFA1112B69519F1D1662D83647929410611978FEA9589E04B1743E2F20BD1DC29B4D5F9B720266CD6C67864BEB004858939BB2744413F2EBF1039D638A88B1FECCD5E491E2613BD14F5262F6486A6F8C9D31D2BC9AC2FFFA762875B6DE1533044164AAF0A07A592A0DD2BEAD02B8749055D78859BB24F10B700742A9B6C4B8642A4F3A5D26FBA4F38524ECA975068431EFF62F38420CB954CB64E16B9A7510144F6CE35E3EF62C37D89352F5CBEFEFA8A65F98676EADD51AF0BFE27849DD2B68A9BDA215C492E3CBB731C4AB20C9A7BAED4685E864AE745837BEE9DD652B7335B76369D2865A0B9B8383BA7CB82ABCE1DC6590346BF0938CEBD1C1B68CE0C15B89B54D0C593C80F0707BE380895D403D0B430F2F40032DAAD21346152BCD403A9C9F31282880433313EAC9BBFCC9A751356672F949B09D17FC5FFD3796E0ECA19264D61A9E4B15A5195A4380D05252AAD3FFF4A6C669392AC0A41FD7BD3B0B6C9BC849AFE1304BD973C65A862AFB615F91C50455F99AE660A33440CDB1A689B2910DD9EF097A558101D2BC3DF8C954B00A4249FCE2E11C23D15D22391A6AC65E3F36A6D5D76169D32D961FBA6E931431B4638FBDD42CBC471ABC4D0B5A485AE4D27C3515A7C815F24A9893CE460DBF13DF90BE60D1A7F0F1E108A1313FAAF57F862C7983EAF968511089671940AA4CD34EEDBBAC6DF07DC1136CF1113383DB736CC4068523ED7E3449E8A860718D1893832442DD9F2B36E0C6FFC39B83F80F593ACF451DF07A2ED066DF7CF471232A527BD4C51FDD23A015EAA421C34E8FE2D8BA6775AE8F4504A47AE430F0CF30737EB6EB791E90B9EAD577CA1279664D0B42F8704AEB85F4C427B7A6B2FEFB468E2246CE9C28A4AE6B0CCC5C5C6565EA9029183BF75CCCBE72299A4F1D8FC991EC81BFB6A440FCCCB3E539B666AEEACFA70B368C8A680AB60E9584046D042E3F7936599A6CE578357C039871B3CC8E64D669748EB833D5786AD96FC1F84D5E5A13C46446EDF82FEACBA953C16D84C091686310D337016E4E9F2F3CA84384A3CE469317D9A4A7E6D13601E55A92D314C9BF8370C426F4D26A6E2A155D0B5C7A41FE84A328ECCE3B8E90E32502826350499C4471CCA68B6EAA0CBEE2CE5F30135D4E885575E6A5190A7F2795854F7591F8FFE7AA850C2FC10D05237C381259AEDF60C1E468B5232D855B184B6D9CDBADF8064C5012AFD7CD844A05F5FE9223EC17098472B2469C5C4B1B9F4BEA4D8F25520BF2B9E214F1E2C937809938B1056574F4F1BFE112A4797D2817D5132B3A9433BB9500AA15EA79646AA82FA6974B4F25694CB8E0818735C623ECC2E569C0B3E49659B8CCC5E831A4CF65D2A3ABCEC1A2698C6BECFE225F4476273698255620BFAA6524EA22FFEE0093CF48A6F4CE9A6389AB88193B7751903AB93A1C93D20EBFF4F939AC1B76027FC59C6D25B8B6FA6975A9D44AF9082BB5AB4F9CB9A8D99017DA69BD458DF8F8348CABFE2AD44EF5337E1CADE0038DE5F92CAC2A637B9EEF418D2BF22E7BA41CA86C51E215CCEDDD9A520A0EA57EBC1483C5D23A6ED7E2CECDDEAFBC18455AF0BC00BA4BA4326B2E5E67BAE580378468CD08CD6696B508DA9A20D5285D77B7D685E92972C5874E1F41DEC1D3D4C309C4F822C56DEAA8916655BA3C2A01BC7CD2AD9D0173B8BB81A9AC25D0F4E2A67C0A2489BEFAE5AB010E47E62CB313F708EB7C67ED52BC725E908F52FA85E3724BF5F905A1EC2FBEEF9D4CECC725214A831B37CFB4870021655580AE965ED54A223EE7A83A209A2F3CB12C1533FBA24C0FD78400039A0A33F6D6529E5A34EDAE52B1C6648D0FADA7979A8C36F37D69E33ED8225F40D755A6E786AE5576CF945A9D76941D728493B2502FBEBAE079AADA2B9D80B96F2B2FFB9DDFA2C318358191571DCB24C33F7AAE0914BF3A77D058375CEBE0E470CF15A2DA5BA867F50C4AFEF0F02ED24964DE39FE2E104D4752256259E9B9CBB56B4F31E94789E26CD59C83BEBD3F7F9ED61F9A2E20D209DCB31A5C158985C341475CBD831DD8B291C3F244728B79019FDC675A20E1BC33AAEE525510A59B86C2ACA7FFE5D450E4181FEE296B79BA2E108C3D8819D75E0E3FAE95FE43558B617FCBC611465C3AC86FE9A5A34A967D2A6C06CC1004992E3F6279A4D6E657EDCC51D12A45356AF051C6BEEAA4D97EF6AD9DA7449901019353BC21EA38850B9DB18A474055D868EFC3F580DD5F8DE45D73C23AB4359D71F3ABA1BFC732B6E4FCAC6ED2B3F6331B0F377F93B25D04D4F2BEE3F6EE7AF144096336CEFA9C43365D7A97B10487D7E99EE2304AA0199236B7B99589B4161191FE4018298BB7517A63A89C6A7FEB32AB38D331A0058037C48564C88B606870954DD95E994D697072B56678AADD3953A69C05C79C356D1C76D7AC3C70D487D61B7054F05543BA4687713CC3E2F96D5542483BFF4BA502AA5A4A8A1260D19EDE547269511C527B456AB2EE051AEF39A35421AB7E31C6CE6419F7A490D68B0B2C65585A085A015CAD4338C04989FC26ED8A8E1E2177C7E09BD244B042DA90F4DD9863EAA86897DCB11465AA3289FA87DB368DBB2D89754EC1526A157A8826237D46365C80F18CADE7471589010374C1A40FB7EF160B275896259F02DE78DD07FFF61E76B9CD1F13C9AC02C4F64CBF9C4C782F7D0710F621033308A11370BF81E0E3CAE1630DFD17D30E75E15725D6DB688D8EE3D029F7D58AE4A3C62E4D92E227659928D99FD1E3E6F1295DB20A665A9F3670E4FC29A30A2A5DE1B700BC3A7FE29FA07AAAA2BEB34B1D7B2842A8B51632BBCA99B0AF5F6B25B7B6104EAE1661DD36B998B9DD57C050AFCE3EB68D2F44C825D7C52C18EFEA464B45CE81C564AFEE67E58AF9E8CD247968D642B9C63467D3388E05E42C61636E18DF1A4AB46D3BE3AE0C4DB33B99B6ACCF3FDF5E2D32251BC738FE2B1A58FEB1B26B96CC2F8444021E0B18A2A875810B44A0E8B55B249C931FE4F997D48966255E2B8AA78FB1990475BD0493BE22C772F09FF3E1AEF67C855EDF4CF064BEC43D98DF1BCA6376E491D2E4A8AB0A5FC8BF920AB6A1EC90D35D6E00586C5E3D3A4861AB5574749A381F5943FD35B9AE25AAEBEB21445377DD3E3470292A001899376F709BD2B002D7D75712C1CE03B5F74D926FB317010AFFC0712F70278533B661C3F3E72558A6641607AB6C69236D2895DA00918C56937D55A6C433BD7981A31BDC5BBC1730188A0060F10CD68E3E26D01380527C44215AB92043D7B37BA48EEC960BAD697EFDCC18498CBF6B4E8D7F7DF6A23BFE07A71CD66D2B4B11447FB032B00FF314E1726328541841D38617DD90DEF4ED96F06AD408C637CD6DDCEC408D4C4DA97B417D2AC3D53F53AFE6ABF9238AC2D1A280418DB0C5441D7EBF4E6F74E5BD7CBA6BC71FD3463805D442A72D9300203F505C1961634A6BA4A87270E98D64C6F8AD1125CEE8FA32E3D264B2CF8AC65CC33667EA4493EECD84A5E6161E30B7899E9B0F58BC38DDED0392CD401E3034E02CF5A24285AE7D44FAF5EE7C1215A8C50237C28E0E5C0E49F61ECC6AC2C76324C4191971D16DC4D99DE22EE5EE47739619BB4C35DEB0B9A16895EEC8F93DE89C892AF221A552B2F8A3009DCCFBDD5D10E7643D4DF20B8E1D844DA7B21B964D637635B7E36A66CB18E85ADA6AE61C524021A1A4EB4DC1B9AEBEEDD4B41F3573E94C3849666AF199AE85A3BBD2380148FC526BF2FE0572478DAF27AF966B2E9F758A3FBCD4A933E2F459026CFFBA3EF9DBAA66D43EFDDD0EFAB6272927F0196B8A112A3590A11805F8C3582A51E44495572A21FC3DDD1D1895FE123C716CC50DE9297C68C94E522CCFEEF49EC13C5399733ABB9EC3E1BBAFB8A681EAD37A7D56EB726ED724B9E07080101ABA55B68FAF79F52188F5D0DFB0AFF2A357ACC2911949A6A8FD912ED841A8BBC610E5EB69F +sk = 7C9935A0B07694AA0C6D10E4DB6B1ADD2FD81A25CCB14803EA65678D51C860A57333AB3860CB7B34DD81E17B3896922ED23F1569B751FD17D7FD0A0FFE9699279F50BB98CC57E57C25F037C28C425270E9AFA17300384261A4465021F87895734D2C20284733981D8A8F95E46B7DF431702F23CAD30285240C35A95CB2E301340F98D53A928E397571FECFA1BBEBE9F74B2CAAFAC511BCBA8ED0F5E4D00C6512CA7EA7CDED0186B45E34CB6F4B4877B3A8DC39E990E0A6B169EEA28098B21F045233C707FF2A9CC7779DC03ED7D950AF589489E9CA6B218B5C3947D69031BF2845CBB4C1A89C28285DE431F2503B2C1BCDE3C0EA67ECB0C84D9C55C434DCE28A15A20A5A81CF954D532F522379179157F9BE9B2A64AC4FF3D2543FA51440A80807542A045B09381D92DEE5289325B04F4F2012BB3B911B15646A5B83CB2DD1AFBF6D3B638BB7527999F509668A19050397CDDCDDFD45E51E248AF075D0D80F137C107A35730D36D5C7F1AA7BECB9C3359426121C8CA6444660F08BF59BE5FD6BF78BE2D5D07E321E44FB5F3CBE5F795E3340CA9352431BDE8E2FF9C283DD994F646EE4D08B3E4C042DD8E79841FA03834498F0EA36F3E0F4E94824D208F350905744441FA2AEA76910F72DF4D13B6727E2A46DD4DF630EDFF91D6E177E34D7A04F4BA73014A01058F7E019B3E5B2B6FB43B85487E582E9A9BA64C4AC512BB363BF17FDE35B1E2AEB8EB0A4A11D37134AE4E1BB2976ECA880CDA1C5D5A0F37BDBEBA77FEB75B0188AB945909FDE75CB30E42558F5A34E1DB6DD6365E75C4CBF315082220AFAAD8176C796E650602A3AF395053DC2DCED2905696BEC0A2B60800AAA99F50C1C76EE98B43AB220F2ED69530D81EB58857273C54B97488182DEA61C09907B16BABD645A2997A28F78DBC949CC58EEC3AEC3B73FA49FEA45B20686801116437C3480390230A492955C4B774150537FDD7ACD15929C3AEF38E62326A13074338815E3D5645E1258376E1712932D4803D9085B0E2A6B690C0AFE23B194A66593AA68DCA9DF7E3DDEE856678CFD9C9F39EC5A0603E494F5930A8867A54622A701230B315CA22979354975D9EE732E736C28481477027F9233015A0FC453F81230E0125B9D93FF764E448662605F0048433058C690B3C7EE78A1318514AA9F8713A8C84C9EF70F829845A28A156C1EC7A19755ED671CEB60740D73AE09692FE7BD47831137EB89DA2065EAB897CE2C0770138CDE073EF6F47C2B404A856B40EED35DD96B546E439CB6B718A64730E08186896AC8C070E554777B1B99370179809DB8CE103EA7E379F72C0A4A2082565BA4671D8C46E6DD23D37C766AD9E4092B8A5CB8D40C6A82BE8D13A27026639DAE601CD93C3F888AF4127E23040507F3CA9AC928A91F91D13C66C27821A9FDB2B3EE346D26865391DEEBB8662D3321FB31133AA9D5360BB700255686C251FF76BC456E9C22445E912DFE597ED4FF5D172FC6138B62CF54B74B4CA4D402BECC988D602913FADF0F5A62AC24F2942237669845A62FAA96F7F193BCF8E10B3181B04B5449F611AF79A1E7126D8DC11FAD1C8CB710782ED2672685F340BA709E372546A87190D81E49E9E4D870F3A918C7469ADB13924BE09FE180306F971EED9985A10E6C64F388BFC650BF80BE27C3EE7A70C598192C2E2392456A2E70004E4558F924310F7F7175BEB5C65F39A51EBEDF13960770DED2EDD8A2D31249966AA5BA48A376F18C440A48BFABB01D8DE7F5C5450748D7DBE760ABEE24DD394C061464CBAB1CA550710BD2FC4C521CF42827EAD4E583DC53EDDD2E256FD58DF451BCFE65BFC6937F14BA0328D2100949686470CA819CC4874598EF51F73AEB4E79C79E9DDB45222481AC2FE465A676403758A271756905364269401EF7BE21EB7A080CC09CED3993B52B08FE1818D7BDE0D7399DDB8726D9A47C7E05322CC9028877C7C36224D58F602BFAC0FBDBE6C5B1DBB8784137A8F1820DC259A7ABB3695E046823F87E841F36D1D19DFA1F2C8ACECEE6F3F731250658C18508FCFD4F9B8765730DF69CA56B109FCE03BA8A4D4C1B0884D2D14D9B6387121A28A083B91412B61A66D71027F402158F276A560C09A5AFC7B0E7E78392265D11618C6DE893C9E85E4B3750A5390F0664ACE07D46EC1AFF052C908CFD778BE7785605A6B6C076AB952D9B6A795C62CF850349B98456ACBFE18CEE5000D1AB52E9CBBD1A600F2E1EC0D4CF9C8A6C43C4CC36A7358A228783E89789FC65771092E4CF939FD91D89BE841D1C7E414973DB9A752158B0BDD8675CDDB2757BD8570FF8D6B12E76FBE622AE8BA085ECE7C5F6C430C49E7AAE8AED0F579A8E1F99401BC90D895BA6EE4E30CAD4E51C73EAB3AA496922B9503117CDE3A2323132F238F6C90CCB4F4E2DCA007FB3B8102F36E85C3A84567CC6EA05B7A2709AB67CD6955F2AE274600DFFE5DA6DB9DF2242ED3B466220F619C5E6CB2CF0F66A082BEE8F5F1FCFB5A7CDBAE3883539174C50461DD1243F8D9425ABF54DAFFEBD71D68855D731A6B384A2DEDDAC1387756073A8CCBF18B9D4213FC29BB02C3FE22B025C4A6FCBAAAEB6326192C719DEA553B6F8EFE2F01E197B961A935A13E8BC3D1FCBBBB81DC00E4054C89ED5C951FCC92DC22FCAB7998E98673DA8A80B95791231F04030CD0C37061F119DABC72E5B121C1AF810FF701298497DFC05548C5D47FF5A44DFAE04FE7486DB78AC4B27336AA57BF1B4DA26030F999B8F89AB7941C6BB8C11CCD3FF5C0471D1FCC5563EC583185E0A9C1FC291B5340FCA3AB723A99EDD64A1F4E15F52B7EE7F9C3113CAA68C82316F38E6BE19D86C27CDC009C9937C05BF1769C0ED5DE589822FE84C8359220A9E2182823DFBAE3D146FB04D9EFDD32086BDA97BFE89684D8F1FAE290013F3BF31D2175F9ECC2764AF509D9FFD833A837CF8E9DE85D099AC34FD2C0E68A04F656CF694B82F03E01741BDDABACF68B240C7E1DCAE172070F3F7745AB5FC637F6B2E669F23027FF5BDCB57E5F01A566D57B87F22A06B867CF322D09BF4222A08FF03DC457B8630C20A81B00C3DBACC1930961053107DE9B7890E5BF4EA320557683D35210C998F1D022554814387F64B387212CFA24381A55F1BB1787CC25596FAA3DCD5667A83DEF8F384328498AEAF28D2C8140367C7CFFA8BB8B6693C260C898C1364F70B45F9DDF735E14677DA5A94E91AE91CB0A54165C63060948223BC0FE47D5152AD261264D361C67E3FD4635310B642B8E6EF734A89F73D0AA6F0BB39BDCE9CF774294F7A994BDC33D14D3A002CEA369F7C5D85AEFFDF4BBD89CD28D9F34A5BF1C3C73902705519B6626C06C7AC1343D9919FB427AC0FB4D5A11D5BD89A9B4D819C9D03230051D1F7F318144CA7AD16CAEF41BFC315E0A3663FB203D077E4312FF93E367BD2629082978E1A1A09F8A7B45865BF0C8E214A89D873382F8F1BE3955E2A2F1425BE3212C4DD360A751FBA26C634CAF6CF4EFAD2141E1D369A783657EA1AD94ED942AAA6EC136DE295294918F0D3584171B9A9F245F059B50D7E774A2F140114FCEBFDE4592701CAF998A5FA4C41EC32A7B115230DCB78AB674F7256E49E7584EBCADE5FFFDAEB68C1DCB4821ABC09B0CD765DE62A0E17747DE8D8A4483D7BD38EB5E80361BE688A8689C74BC194DCEC81E172AF381685179BFA2D28772713D5B84EF185C249631C9E050CBF645D26416618CD04231325456624B68A69CA3C0C2FCBF7B415E8F029E9967C19A227F5EAB8A8A5AA0F4F84AE8660646CDB9DEA5122934328C6F5DC7F13817D7A58756318EA7BD40C133CED85473352F6719C43736E1FE60183B0C68186B33A05D338772373242E44C4A94AC418E368BDAD26286E5A3B1F7FC73E448A05E3C422F848B49E732B63558BB6BC5D3709A2124940065796DF4BAC848D3F0006162516224462B645EFD2B06F0B8FE9727386A3FBBC26CDDBA6BFD8020D29C2E87360CC66115EAFA211713D41C32FFC30CC67ADA52D3EEDFAC9EEF7A45F01CBB3DC53384127E1B65633344CF5C6D8735E4D9D6CA9EEB532B628D444DE6D1A3AE93E738CB4B21C9CED3FDE3A320E1DADAEA287034CC69CA93F94176F804DC7B38690AF024277079E2FB90061A07D30EC3D3BEFD7CE1143C76C56B60DD994264F77FAA17071D3FC128366009C1E161F556062C76E2450E14C12F21B3FFC0C45BF5AC40BDE47D60904A5DBAD8836F47D0BAF77C3066D43A557F8767F64EB78D605C906B5DFC8AEE53668E382E6EBC80C31FFD6243A17947E910F20CF565C3E1D6A11F8D994DB35E58B0B10782942C497F7D7CB5C4B9D41DA2449664E6465D3BBA035A4851AE877DA1ACCADE255A3A980395C12F49918E71A081DD380C91277B489B26BF9665AFD195DFA9EBF6464472758CB2212B27F541ACCB29295787749670902FDF8CD92F054F696E82E3043D6213DDCF045E722FB4E09385D4088C65784A46EAFCE8FEA1BCEE89C2DB131B910BEEC9473FD742C856F859AD74E5B6E1D57D5A553A8E8C928297CD3DC569513E03E3EE9C1A18FBB07E18F4FA3BAE78F3CDE98AA2B97B355A0A22F2C74E3960C2F38F476F3F1E7BFA6127603C3A04590AE9B9E3C1572F6211D2143282325A5E2D9AA54B72202ACF7401CC47B4650EFEEB411211EAFEEBEAA62952BC34F492F956D92A1CB8E0F9E0F8BCA2BD9867263EA3A4FFBB4CF8CEBE7709E3683FBB00FB1642EEF045693A4B17A934918783A368D1176E263ABE7D0B9018CFAF6FC68AE5EB535C4E33584A61BD4BEBDF8332F667E8530ED34271F7C87886C7DF0C08CBB05BAFD6B88338CFB9CD2D87EC5A2B795B8AAE624632A502FBF87CA8CA122CD5F727889C71E48983EDA146BF645607DCDD2FFE92E9CF11502208DEEDD6E709D69DA906475DD714F54F317C608EBBF27AF10CB01876B7A3FED8F0B5772C583EC4DFAAAC3D2D4EBC359CF2DB32343851FEBF4781292026DBBD6E8DE4EF9881608BCD6FF969DA80056DB7E1888F93412F5B66756F6CF26300A5A90FA24C55FB612D5983B9D7627D079BBABC2C4EAB2567A304E7DEF920F894F25E70A3883A1786EC7FD69AE6364BA6E7E0EF00B4E7602368F8C5B4A67B4DF5C0E639D600CEDA8688B66FD85F8A465C0A5C87DC92220B38206A370CD2DA4F2D17FE99EB4116882AB1CF8F918E9FC7379AD3ACE2712E598AE13A7039961F7A58A71B9C21FD01576C8D3741680D0127C82A12878A0EA039B7246839EF4E0D65D5FCFEE4DDBF5231CCE3363456DF77B286A851BE7937252AFFDA4AE36D2F729275EE9136A93F53FBBD5DACC731125A342C2523955DF4BE5168F2C09F605915FF4DEEBC2EA104D2923F44378547D3B95216E110E9D795A4E7A3C352CAD8FDD11FE5E6584250C60DFF13E8E8A5E74FE7E4E731CDB320702534E9E14A6652E7FB6CFFD9C83C4A9691A4FC00A6254E331D53E1AAC8F96BF38A198AFABE20A2C8BE9596CE77DCF2CC51982A98E645B558D96D17DEF55DFCBDF944D7E29E197042DCDB5DA9BA0113D01D5EA49AD97C95CA75B96BC8FD0B0E8B44060DF0135731536882CE9E7B26FEB4FD63B88245E67D3CC43D7EFDB28919DDF65AB0DBEC3D03DE3D93E6A27662D9DF96D5CBFE56FE9FE07EFCCC34A766FF698A09F7D0588B0E102899A165901BC7FA48A3DE29D779E8DC50A5E22C48CAA8E885C3A88EF95831E52AE199B4F1EB9A9242E6931C42C3AC6BD8470F317354483352201E14619051E93554F15923ED139BA107E4AF05795C1875B303B3E3B4D8D7CDC43FDF1E8EA33418DC4F80AE82EFB4C2F0CA01AE401983C08EE74382C608E47865A0D1406ABF723068012514DD4F3A3719D3E1BB17A0E0DFA3E33E895FD7B6C84A14B863E6DE176DD0E8FD5A51D9C2A98D0851077AD194BBBE37FACDC0068C6D94078D341886F6CFFA13F885C544ACC67AD402F933F9D9BEA62FF90AB25112CC9F02C0E956AD196DEA2F6F67E1A2BAD8B072480D9EF936A5BA0584A35F555DE946C656FEF478E3C16FAEEDD4E97B85EFA6529F1D4EE3E8C9513D8121667306A1B90898D676C226D9BE9A5754C33F5E5E3CA048C1C9ECA1570EDB969BB96415DF536A58214D74FD05F331389F8DCF3AD4A4912FC371A426925738391CD447E5F1E192D9AC985F4E51786975AB4CDE40727BF5C36828158C737FD43C0BB9891FD239DB4C722AA2A97DA7199C3944D1B557BA9DC67379AE06474D0C34C944837AFCB12C7DBCEF2E0B02F24F918BD8B8CDE3FDEF5CC8BAB3C9EE1AF6060EB6B485897A3F8026DAF5C3FB40388482C37842FA14B93C43318C05C124572BB64FDBF3BF5D8CCCBA26035821A32124D25E28F32874F8DCDBC9495B71ADBECE19E19A69E4792681AD37AC5A5F76660E30A1517E233BF16122243245F7AF8C2D0B0D5CAD17B7B56D515B9250BA61872A0C74F9666C710E64AE285D69A0B99950EA8DB21968539BA461291C5B0328C890AD309F8FADAEB2B7FF6043934F3D4E2BE094FB1DD7934C7CD942B5A40E77B2A3CFE8965BF9F3966FF4B9882052A8292CD5D59407BDFCF5737755D42C405568EF7A093F4DA3CCC003A0656E7D98B48C01870C52111D91E9D686676C8FDE4AF10531D80DC447D1D1B7C78F118368F7EF2AF04324DD7BFE763E43A0698F3AD333864E62BA6C9B4883B1EB2C9C38810AD78711747CE6247B7CA615C2388B508ACFCDA561B03701FD04A105E6CF02FC9EC0139DEB593AC0D7635ADB81D64B2727168961EFE6FA4FBA0A4F3368B0B3EAE2F6B6FB879FED2239E90AF024045BB55B4A720C4048A0F91764A014A2DA2A2297A40D7AE78C74F210A19A551BFFA1225EB73DE79A10A3482F2AF8FA6FB25E7310736CA80E53797383308A1731F1C89A700AA191FAD2FDBA5944E5CFA85B40C86B8E22A4F6B959E498B688F3B0073DA3F74EBD45ED7FA74E8CDE912C53D5E1A658573F3B3EE41197BAA26789EF17C69E5FE60A0C8CD59905E429144CB2A0D0E391D08B803471E8D7FCC0AA3A183E41FA91F5030EEC7020E39AC12D648057441CE83C6777862D62982F6B02756C31C46C69F53BA9DDA00C76111F8B6ED741141DF3841AC34093BF5776FB3A7CC59872712CDC94EBDB4B63B9F0C81B72CB7CB7F62A717F6D690418166AE32638AD28DEA5F94935569EF225CCF0F08686710C8AF10EC6FD2879684867369AA4F9C480AD3E9877523328FDC524A18511A7F937FEE61654BE4B6DD911074DC9C70A4DD30E84E4BA9077D56C962ED71B266C71B5D40FB96F60F3A0251BEE880A8E13058E3F15A1336458223A4E38AAACF84954A00170BB766D55DE19F55807B0CD63BAE8F32DA05F9CD5655E0132F540DD615BE7F2C586E67EC0D6DB5C493458B55A578B470AB158FF5F54239A9AA1DF1720CFA43D8C6775B2F8C84EF4E6589AF6C79B8C6866ECFDEF490A8FC134C059C0839F3B9C9BFC52724CD3B629E0EE85AD40AF003460FA7F5E0BB6151F6538BE832FD4173EF0D846B37BB86703E82368D37B9A9CEA8D6470630DB44DD05A44140DF2F7B5DD7947D13ADC1965B5844B37BD6D6C5015F82FE9A1CEBDFF495C1CABD90EF7BE7E2F790B4E05FF4F3609AFC302E3565ACAE143840D390FD7CBA96827AB0DFE9800C893F792345A3F1C89A1302570EF3E2AC497ABB4ECFB699C00E3362E767A43E8A5A1C507070D4324AADE47A008A6D668DCD9148272038769B14B1173DC7892F82BA9FE73ABE1D4047FD55B714BA2D4D655A6F6E5CDD913746E85968729415EF86292D128F5E5BCF02A96FA5DEA8C3BB61423B07169181AE8B63F4E62E39412B7F32555A44195BC91762788E5B6F0959DC45AB15DD72DECF73404B0006045A1F259F5BFC7C23CA5BFAD036363B42F2E1FE70593044057D6940676AF76EE44D9476C616E23F8A89408FA17F716D7598ED80FE15E8ED81112ACFA8A21FF09F4465C318D005FA7BA40E40282391396173EAD0A96A38E60079B00AADFC24B2FA615E93FE9E24C5A6C0CF15D89D3C6B2C1CC7C0D541EBA4E0501E0CC96918FE81359F604CB6EF0B648437B24E5E00F9AB1000EB9E3DA9158392A8D5D1FA4EB9457A82CC8FFB9C0307107251A75DF63D43C6AEA50683605CDF5159E65621844218756DD4E9B2564707788C96EB173980EEA7B015BC6133D200402468085BF05370B9295CE8EBE33FD55B73C30C01ACD0FFC1D08D38CCF46CAAD7D241FE1EF46CA685AFD84BECEEF0E0C724DAAD61DFAAFB7805C78F16F819275A8B410DC559F82E73655F1144050EA6BDECF8B25A74BF503A2205881B3AA55DA40A74E3F5DCD2017A95D9C3E8037E082DDDC11EF4667D2744483409831AC3DA3C5FAFC85F1880101DA0E14E8E8F77CA07431DBF3138C7DB540B87FB5C0BAD54C13AB79CD933620EAD120DC880FC12985C7A3E744F24AE5B964C35DA220BDDFA45E39291BAC05AB779037BD50967A1D27B24FF5932F258EE34382567C63E9842D486E2E06C068F1FF4F2D3933181955D8403424DC035C537A6717B8AD3D39F7C565BDE947C057E37D5AB3DF5F56BD5893C5593CF16A68F7E4E59C8B3BBEF1EFD9DB477A59EDE59E552964F49D8220130A9DACBEE52A3A7669FFB25B52FFFE8F9F572759A69A58AEEBD940A8D02CE059D391461FF8B269C5584362698D6F8E3CEC5766231430C53A7B4BFAF6972D64D87D9B36828CD9E8E582A73C9EFFF6521406EF1D578B33C98B075833E65AD66883A3F0636D321DD480D1404AB33B9ACA8E4C8CCE424A2EDB46A4BB7244EF491C4E4B7AB246F8DEEEF11B7533C99ECD120F42A059A45F4935E56543A082A437F819CDDDF3147149E3ADD9E026E7DAAE46C2B9D3BBAF52C93A2E451352B6974AD8B7F49ACC20D0285A832EC3B408A04646C370027A6A795BA2F127522CC6D4C6BD6EE1E363FA9628CF3D4811CA9409E4DB6A9192395B9EA3BC5379F0AEBE519261C0C473BE13EBA5A3BB097AC661E5C3B31D1159FBDDA83FA6A13033FB8C88BF3A7DAFDC567E49DA4C750CC4D5DC3C5517FC8C5EBDD261EF293DE9101BF8B3DBE8A9331C32E21FED9D770780A5AF70C495050049DA9027772F9DA4E3FFF790EB77871BAF1A4C6B2C3A528386D0E437F7347A0635683650C8A62E0201FE18501334EC0EC7824E6C844DB19EC3EFEC1D6F0475CDD43945057C4408F3B5A7CDC58EA90D35724F6992A4162CE19818850798706E50753F41BB41CB691942818C51BDF96B65F5D6044EE30E293EE887226C022187D463AD345423A389A2349B32C8C6F84B5D69D882F76193C02D9ED6032EE7510340ADF429146ABC012A81716D97F91D978DEE14CB69999EEB827E4C98238E8863B76E080437BC72BAE62715E1663C4E74870A5C07850E62427EE5D879C81BBFA366821223BB8B774C2B753C4585A883947FA116BFD53076834F869AA9227480BCC0DFBD2C41615EA7F6246837F5B9888764D6FADBB8A5BD4B0DBEE2E3BCA04C1A670AEC9BD9F8F97EEC799F0441D50CAE01B1E572098DD4590173A322ED8AAAEE6B1B15E64720E20AB53474CFEBC395E20ADBAAA56EAD8098E6993877FA0345D231A4876373FD9F43EAC64A45BCF7FF4BE4E670D2FACFB637610BCEAD731B9A93A3BE48D43D9766EDD8C8329F2C3531183F517A1F8658FC2D8ABCB071FCAECD9B4792EEC90E28399F329EE09D1C4286FA8E6CADB135C0877E656EB44D618C177B8249166BEB4B16D0BAA64B937B5252080DFF2C41B49B6F5F421CB06DFC1951CB93E81B7ACDA81BF3B94E63EB413341F15E53A128C241CD655510C42C5C3F20898326C7F63D6E4687CE8E2976766DD7F4D799F849DF3F4B30884C03F724F044EF3402B829A70AF7094748BBB5F8173C8DCB3711B16E92C3C9A03CAFFE5B62C172B29D8BF9CB90B7D94A621003D258CA3435E9CADE93E28BDB8E3A0CED2EF70501A370E01B91F1A05111D8FC9C32BD89EDCEEC2B6D856B31EE774B17742CCB192DB693210C8D0964640182FD6908567049FB2F7565DE91B4452047500853F9D49B4478E8379C8BD7954C25E4AC52F7907E3DD510A8AE921239D6468AC9F17D6C63E7ED7A8238E0304B6A461F714A38A2B6FF36AA599ACE55FDBD1C305641F53B40B10F7335EE619C7C1E8E32D685ABB2F4DD59D44B1A1ED43E5CF887E3DB1356911DBED584FF2C06A4E2169312813B952D9D98EE6A06C1EC669023347A1A2D9BECA67C44036304DAC7D47FDFF51421E4A08408BA239A1F33A59A5BAF7C9644ED7CAEC98441B4F66DABBD989DD9D8DC8A56F9EF3D089480219290413FEDE6317C6212DC6B55FF87E81A85182FC7CC88DAFE449F6229DBBAC73C7472CEA9D9A09F7AF4120A082F07F62DFEF56B02D2945116F3FAA0ADD6286AD827BCE81B164B5D851B3EE800F5D36634C21F70705838C7810FC65620CED4456C859EDD550D4423ACD156D6B3D3BABF9109DB6EAFC17AF95DE2A696598DE4C027F387C4DB0E19153609C1A7E7433D109C9A20A69F7D62C0DC5AFE3759F3FE56995CC570CA0D43219F5832D4B27C85011EDEB17131C068174F02F7D57F36C2812FD217A178B0C27511C45048F4EE81C03E32B5CB229AE7D2B6663B1150D4DB59A6B18E1CE3FE80E61B83E72F22D5F0381B182ACACAF7B2F52DF13345967E4041F2582FA255B00E103AB9EC9AB9E7F703916899F4E468E34BF0241C6DF3755C94C018AD30BAB2D2D5FF4DDAFE3D31756C77ACC11F7AA4F3879D36C0586EE0F2F13A0B280A8E9A08F74171264E9D4727BBDD36E70C5EBF6A60382DC0FFBBB8A339F535C96F98209D33144B233010EBB2D2331C4B295D11A0E06C880C32B002FC0D4F9147433CA6DAF7475AD6AEFC218D5EE44017427B51512E5E81C66705A5798065791D02C38E28EA25EC89EC4DBA71A03083EC79EDB03BC9E3EE999AF3A48942191C71CC3AEEA0F33448D9724E22D136723EA85D97B58F17832FDF31186C386C0E33E78DFEF65FCCAE4F9177451DEFAC9B61188598BDCC8FFD643DB8940E07F6DB885B1C1C890D63CC7F954A8C212C0B405CC4AC0C05925BB55B94AFF1893A139BC05F89F6DF8ECCD2E942165E6B5FD92258C429F6E631B8D79801EA326B2FCD9F1AA4879A6CDA28431B869EECA1236766CC957954E7129FBD2C1F0FDB2D2EA7375EB38B5B114796060E32D2F44467886665B3C13CD47956A982D770E4A9F95459971E773BE3889FB450B129604DD67D6F5DFFC814D40E19D14D07EF8CE1AB2C48D79B1165E6A97E22DCB332352BF5D3AD9756F93759B2BFE929BE481CEA2D89E683F6541563691AF2112112CA85EEE8E2EE9E4D0D5A169234E5B29B40154342A2CC230E3B18CBFD8B46681AE84E96CE26403AAF7C22D80198FD3FFC22111A9DCCC8D771EB29C25488FBC5C4E858882329026C0C6B5CB0C7B1470FFD066A97AF04EF87641469E4BD36E9B2117076DA14B81AC8E2B59DC7351243044A23F5E2B8AC1A77CD9355645A8AFA2E84F87148A2E1DD317CB8A81995C3FA78A64F2E89451BB957E0AEAB3EF0C6B5211F5A6CFE4C90F1DF1072679CBC19C3E69BAF7D47168B1B0DE6EB32FE91CB2FC85D7B40F878781DC6E69E39DF171C096371380D5829AC04909E8AB17750C450CECAC35AB2230212F713A40EA84B3E6D3FE800832EEC6C20880CC02933D072377A9085964E3D97BDACCFD2B0D8311081E41BDBA64FC91D8F81F550DFC3D11D56BD7CD214903F010FD16BFEA6C5EB3118BFB42D8FBB8F930A424BDE80950B53E791FDBFE5C12B378A31F3EEA24CC9BD9C9601DC80ABEB785964DE148E100E7CE7060033029D0DDB59208F9CD0A9BB2A45B62193A9A59A0FDF84277607615DE931994313E3ED3B98BF32433530095E215CE85FF5F3ED9CF6BD4F3525AC744DCEE0C0FE78F528946E038EE4F4EED9133CCEEF4728C49690EB7055F6AF727DFD956E769252E1D5BCD33E5B2615A7A26F697C60E24274E4609740E4EE17FD91F72FF0EBE87E6FBE1D4981A158941F1267BEEBC2E771772CFD509B960FA1905D0102AB8154CDEFC9FCCEDA7A0631B3DF4950D0167709D1B0D7FE0503B6E73001D71B47F246BBBCDE9351BD4323ADFDECCC99FACB4AC34A64347B2B0C45E70249796318CECDC4CA9627A380909BC8B1243F19E778B8A8AB5FDD7A07EF57DCC9B58BA64CD44D7EC1230F3DE4210893544E5F2C69A3F13CAD6D91E52A16246457CF4D09850E0D0E481C65F8B2B76B0264E6F8BC5046C28F76F47B59F2A156FA7C28C6D313FAEF76FF6B81F85C960C82C21461B5D3B45EFA41391A796BE7630BA0A05AD3DB61226112D83D7905699BD6BA02218AC17CA6F07B9D0A6CB3D3F761CDEE5252998BA71152E63CC67368D0B7F4D01D4EE29F79C8BDF9CB40FA77C86224403483E1490BFFD4BDA2C20EA3669A5265B5DB1520C721854C5AEE6DC87ACD92019E656D7746AC625F4E9DCFF4BD8E1D1D32590A29043CEC7B080F6F1B0743DABC2923BD79FE9C489BEF8284D1166F058D71D83373663F1F68CFAF625660B9F9E700A5A1B47CCC48AB309AE1BD601C3C094B6E3B9C4F019A4D83D631B4918EB3F6A4F6A6D849D1F36D5C649735FE173F8AECB0704BD42222176A9F3C063DA8AC16638CBC7B96206653A62C16A7A4F781B2BBA2FB2D4EB982437C9EF964985E2C9875FB198D2B37B6458FC544F37C084806080F12996148C342D340EDFE182FCCAD1E950298C4A504D442F54D075C5A413FC66798DC4EEB763F8B599B9DD970E1307C6F2B126FDF08C29003822705924E1D13E743D47CB64A396ED8991F9C4225296BB4F43ED9A52C3F9DA895347240D866D92AF583BB5C82573397590C8CD567BEDA2DDA17A609045D70CFDB8C61F60A3B53B171FF671D3E336359B33FCB578E632E1E3BD32429C61101E622F3C8D0EC71BE5C9AC1D25FD3DA394A8AA29D5B4D866284A072903E3BED507D0A7E909A2F0C3BEB93E1FDB3C77185B44A777287DB89440FD52831BE71536C3CD94FBC7B0ACA0C530203A2C3EDE613B250859F75B775E5105A1D35D0B7722EA318170002E5C6D38793227CAE4B90CB69920B95D203A28FD635966FB669F6D2FC80889154E55E8F97A56BC48DCA0550D9B4B6E43F071CAEAF7B12DAFA3E1F5330B83D0C3982B74616D9CC8C60574AD17FBE6FDDCC397DE7E63CE97CD915099D473EAFED71AD9EC7653C0CF44DD4759573B2541876E2C23C7EAA7DF85E305741B1F891769488D13C442844E9C238B97C909488E693BC1073BFF6AD99672D3F81F5644EB5999CB04A665D147E34C62F647A0CABFE402837C659E2F3DCE085131C55A05C4987B818B266A6B71F356FF0CCF5C297971C868DF3344E1DE27A915F57D8715FB61F67CFEFA9699E8F5681192891A2B2F705817D9CEE0D5D81A4845C6FABC7E6D06D72C176B0846CE5BA42543E0E7A81093D8F26CF74DD6FBABC679AF74A6776890A4D3E6007B50CC46BB4BBB6B0980DD4408E19EA8B48C8F95384712729920D49EAB7BF4E7FE3001A9F1A28C9C42EDCE1EEC9ACDA8D3DBAB51A8AF029E284C9A56C42BDD91C7A9FB4E7E4647141F6E2433DCAFBF49B7F9054CE09CAC77F2C97F53B33ADA0079DA4F2E0B9468C6866C6959EC3D867BB4E3AA14A858DF62D3A5A4CEE6C823FD91099424741389775C52141E47D4CF68B9B3E658D4E679C6BD3B57D513E100E1885056BE5063133D709E04DE7D6AC84E0B3F36B124BF6F447D1213B2598D11CA39388CB901D12A227C600774E4E30EC196ADCFDB6ED1D89B4FB7A18F759B8BF9C419674C5CC12A6D85D0AF593A49992CAD02A25DCD8D862663E5D0C20A857F5C96EE29865C10AABE01A406917A91EA0B33B133F7F5CB7A0581D954D999E97D8F83FF100834285119AE11DB88E7A33E304B5FB4960748FA1E560ECF2F69C365CA40DFF40800CF8A5DA5D18128FFDD6DB71E9C146C9CD68E3C9C6C64837F3E5A30124C84B00196423532A831668B695EAD7D693958B3A11E99386AC2ADC39031143C0EF03171B197462B0EE09552CFBF4DF72056201A8F1701BDC77C3AA7115527E577FFC0D7397EB38845CFA5D7F63A2E6BFE77B83191B48444A8CEB1FC87C4C11134BE0CA9E1A74FACEC7B8B1F3DAA5F7E4A2BFD905EBAFAE766A20642D69941AACFDDCD4E4F095CD08BF5D442D52C7882598C832325E69DBA930BA445894430D5D465D79B0802B7373B13AE63C3AD613CA0B096161B1EB9C0147B038680C30D3A0F90FE09AC46C512D24CF164428C81577F303986993649B4E6B1DBB1ABEA10D3A6EA799B3087BEAB38236638784F9894EEEE17FA0C2E8AF127918654945A94B555702AA6B69A4015E0875567D5A2E56C6AE4BD945DAE9EADDEC14A5AD86153D177649C7D1B07A39B392D4D61A7B6326C081790D1371DF3BA39C2A38E2EDD3F58C125936D524AF64C4160F5A57254F7B3514A1EAAD527DFB680FA7A00E3B0BA1869643BF3622C8D88A4003EC75D0956B6281A3BC2F84D220C6E9473EF0F2E45D4C78A520DE8131227ED7ED6387295DA155B335FF0DC7B43D724EFCDDE0BC74FD58B7499BC18BCBB1F17A9B13C673CA4D291CF2AE3038F68C52ABCF9FFFCC88CBDD5250ED67F54EAFDDBBD8B7D0A6305069EF237BAA7FD0C80D6CAC0115404802412E2EF3DD3C83BCD6AAE126AB0507E25183DC7E1DC9637E6EFA6F9AC9F8743ADFEC8C4476EFC75E2EBFBCC90A7A61F32A36A6807453B34A04128ADFA5B6E5D4ED188000AF48415BEF212B6087918287167DD2AF9BEDCDFDB2EAF47A474AA2ABCF0BD3E171CA63F877F73F1E9B87940714A1FE2C3C0DD72575AE1B31D111D4B29A08BDAD15BD2122151253BE912360436A037FB592F0738E2AC8208CACD4D635ED68F46F24018FAFCBA603036B7D9F0A0F0C7D9AF1AF9DDFCDCE853785A1352C059D659170D3A4856C660A4B1A31C1471B10FB5C0073521810F816F53E4FB69388EA5D49A6B57631FE54E8F5C2AE2BE92B1EBBEEDDA1363185E1B923E11F60DD8C51C82846119FA909C6AAEFC0816997367727B0F0ADCD704469AAD0BBA89FCD73C640AC3C6616436E6787CD8273620C589B0E2565223183256EF0CB732BF48DB7624CA547659A1139E4D76CAE9056BAC0B61858D0B6A14930ECD4175CA9F9EBF3D23ED928163B1B6C1278BD04E9B924B00900233820EEEF1101BC606FCA6E3818DE63A74E76DD57717E6535A984A6F0EC3B089A18D7C006841B30CEB1DB3D70B3610DD10A8E93742CC49C113B9C20EEF0BFA33512A2F9A2B3DFEE0B69E32B0AF114D4A179E9B939F7ABE26C3C43742280F8361156A3F422AFFC06354B5453B19855DAD966AC6298F4B2579C084874A75AEA888D62128877A41C08DF22DBC1788BDC16FBA41021E0E0006EB0982D8D1D3989A33EF8B5272CE8390B76606E695E9838790DB1D8C74CE556DA9B8DF6F174FED569B658106E10D1D77C7CB3B3B000FED293FAF5A92233D7D2F3E23B81EB7BC8017283003F11BD0FDCD6E9188DAD5E965BFF6E56BA81560D16BAB58EB47C425D322EE3C7A7E528032B08123CA68307071327B3D9FC7D64D6733F188EF324D61776B4CFE546875DC33CB6DE80632DB5A743A8C60BB1CCFB117FC0CD643166540729FFBA1A48356E2E5DA6269DC415F937874ECE3312103E35126A5FE898FBBE3074870AF02AB781661F39AE6DEE1ACB93D0B5087384A9EBE47593CC7D05CFBB4363FDF257AE3A4719D6A6A63F5F265BDA06682E48CD637DDFF4BCBC14EEE7074A09997535AF703923E19BF630A189BC49034806B2C65B0646DB97CBAC09ACDB42FE36F80F905F18EAC87E513E89F7D367CF72A08E425820D742C741A661884A822F898D21F412AA7E31C5760D3474D3B1A609675D776F0AFA9A648D4123F9DCD3C6929170A9586C1BC1425BE7940D36C622D96DDA4F76655C773A7DCEA9278FDC8E74EDF60ED52411A25F8725620879B646FB7152EC1951BD70C53FDBA671C7EEA68851292C83B252CD45A67C3FCB4D60AD18F4AB9379641A830DA4798A55F4A79EF3810AC8EC277489A593B381A0D939B6930AE0B0C46DE92E923A4E636BF3C7106A441B3C35BB33DFD5A8BB788AD6BABD4AB75487D9897C5752DF9F209F1768EBBB507FEC62DE9EE6337D245E008DA9F636C67949D2F792C282A34EEC92EB23AD9F31A5016F97540801069A7B70A78342B3E52F83EFFF5300090C2E429C63EC9D86E8226C941D85EDAB6A1295FAE4EF6C100B951C3CA3819C6794B93C22E2059F0C5ECCEB8BFA930B22DFAE6D681A91FB0D808C45C4D041C2E2580A8837775FB7899ED8A3C70B6828F4EEB4E740E37C52578F8095925D0868CD3547617BB04C4E3B2E4B5D109FC812F7A9899CE6F6CEC784A0FB910E9378465A7D68700BE833B903CD34A08A3E73BFC165E7AD30D9C4A37564E334BC74E991D6B24F97D962E289EFED6807B41A96D7C611D479638C5E3927F5C506B07046275AE3F15F0509BB4C3C8FCECE09457E5B095CAC0AB1CFAC3A4B3CBDA610125C79CBC72E541F12E2F9A9596337D4F84961BC0D90DF19DBE12A178593949C6040CD64A915DA3C47FD451DDB87A251D0D8D808EACE12129DBC896AC776DCE08F2EA3342FA5C42535FA0879C6184747E0E7BB322F68F107B0CE36F40E104265EE67C7DA8103A715780B7A8393A1C06C297FCF76F06CCB71E952AFAD1336B87362F3E79FE2FCCCCB8CCAF8FBB902AEF54F1AFCAA7CEF84813878D572342FF8921E256C2C773222E9E51AA68B46906309C74A52D5F9ED7CA0D134E1F3C354D139B2F2054D94E3307425A3473BE3C521CBAE9FDA41DD69109E65FDC60B0D71D7C0106B7E75047EBAE5477A4DF940C52B406132127876F39306E14B006B55EB14E8E7A77CAF406BD6BC9279FF216C2E2FDC9706177E69A173C4A4CA89141F287DA8762F49763705B5A022040CABF07A9B0DF860D787D64E69B69A9EFA5659275C4E70614748761B53C6B0A3348EB8A81C22626B26D03391AAA0DE70146A24EFB33CB314F9FEBCA3386274B84AFA7FF161636C56E9808372961FA2ADEA9A117A83BF3A65EB52BBF233240149723DC3B0FD91F0415BF128A522C0B297B843722DD4655D9D0357E829700E1994EF3D5EE365BAD88C16203A998C4722459C31492546F1C27596A9B4381D225CF20704901D715C955DD080B773A5482CAFAF0782CCE11F9098F18FCEA8DCC3B3DE474223ECCA8423E4E00C4F3DBABC750C495CF3B98426E6764257C10B64EAE77DA8E1C967160377A5447530D7AB6DE2DC986238A1027526F45C8C083B1C2FDAA7F4F3E9D53B25E27E668B56F26D94007CEAB99338CE62197B95A335B3DD3B7B78B5BE313CFE9C8A7B4B4E3C6608A2B8ECC505D6ABBE7EC50C0F619EEF15661E7A68B643BF25300C5F2B96DA5347289D40B925CB097DF280CD08F5208EF949F3A7CCE5160B733613C8B873262B6F179A7ED3C07A72B6AB3E652D1AB4E8DE4AE5262BB7180CC06559763666F38B8BF64DF3A9C24E594BBA5AF289C02CD91FCDCEA47AE548C576E0DAB904BA211BA761ADCDB236865034962D4FE91C93E48F2AB94E5E5BC9A2FDE760A608745B564B3E8FE9926854090A69208CBDFA95CC8E53B568782B24708B4FAAF4BF0EBB2BE23EB0B8877A9B16135C71FDC74688C35FE61D5241E0BB6746C6E0656C7D0574D083F842E457D0F9784E264C73A87673FC081BB8FB270BEEC411B7B3B270E673D7D1D7F5F7513D669D813B6ED86E5B802817233680512A210DAAE0108623AE21AC88D6D58F317356144A45115BEC14AE78A642B5E2014D6E22D8C3367A46C4198F6058C7C3FFB7B96E3961319226AE921DC97A53B1AC3199A0B42C8C7838C58DE652E6E26ED9DB192318D11EC5EF0621042341608483AA8C01F12E0C03D7B903BE56C8295E0EC04E03F7A31F25BD1AEE93848D4AD95DF81F86F113E79F4E33D26ED95842C6C3B1AB6932D2196B7E4EB584870F43254E50619C6AD18FB31D6F6770E6CE7258F7165274616A7AD77A9AB8B4FAE6A24498195DE1BA37C96E6F865340EC32FD31F7F84152451B102381E5EEC3C52F466A3711753F519BE9D0C80940B5DEEC4350C9FDAAC66AD084DC6C41077F30ADE1ECD117EC5A465A00DB059954B5A87A6F852A37CCC6C09B7F3ED036D5CFF29BDA61CC64D309F00285D8FED551A9E77938FA2056EE327F0084A53C691D88C5A160C277CD472A59C0D49BCFA1112B69519F1D1662D83647929410611978FEA9589E04B1743E2F20BD1DC29B4D5F9B720266CD6C67864BEB004858939BB2744413F2EBF1039D638A88B1FECCD5E491E2613BD14F5262F6486A6F8C9D31D2BC9AC2FFFA762875B6DE1533044164AAF0A07A592A0DD2BEAD02B8749055D78859BB24F10B700742A9B6C4B8642A4F3A5D26FBA4F38524ECA975068431EFF62F38420CB954CB64E16B9A7510144F6CE35E3EF62C37D89352F5CBEFEFA8A65F98676EADD51AF0BFE27849DD2B68A9BDA215C492E3CBB731C4AB20C9A7BAED4685E864AE745837BEE9DD652B7335B76369D2865A0B9B8383BA7CB82ABCE1DC6590346BF0938CEBD1C1B68CE0C15B89B54D0C593C80F0707BE380895D403D0B430F2F40032DAAD21346152BCD403A9C9F31282880433313EAC9BBFCC9A751356672F949B09D17FC5FFD3796E0ECA19264D61A9E4B15A5195A4380D05252AAD3FFF4A6C669392AC0A41FD7BD3B0B6C9BC849AFE1304BD973C65A862AFB615F91C50455F99AE660A33440CDB1A689B2910DD9EF097A558101D2BC3DF8C954B00A4249FCE2E11C23D15D22391A6AC65E3F36A6D5D76169D32D961FBA6E931431B4638FBDD42CBC471ABC4D0B5A485AE4D27C3515A7C815F24A9893CE460DBF13DF90BE60D1A7F0F1E108A1313FAAF57F862C7983EAF968511089671940AA4CD34EEDBBAC6DF07DC1136CF1113383DB736CC4068523ED7E3449E8A860718D1893832442DD9F2B36E0C6FFC39B83F80F593ACF451DF07A2ED066DF7CF471232A527BD4C51FDD23A015EAA421C34E8FE2D8BA6775AE8F4504A47AE430F0CF30737EB6EB791E90B9EAD577CA1279664D0B42F8704AEB85F4C427B7A6B2FEFB468E2246CE9C28A4AE6B0CCC5C5C6565EA9029183BF75CCCBE72299A4F1D8FC991EC81BFB6A440FCCCB3E539B666AEEACFA70B368C8A680AB60E9584046D042E3F7936599A6CE578357C039871B3CC8E64D669748EB833D5786AD96FC1F84D5E5A13C46446EDF82FEACBA953C16D84C091686310D337016E4E9F2F3CA84384A3CE469317D9A4A7E6D13601E55A92D314C9BF8370C426F4D26A6E2A155D0B5C7A41FE84A328ECCE3B8E90E32502826350499C4471CCA68B6EAA0CBEE2CE5F30135D4E885575E6A5190A7F2795854F7591F8FFE7AA850C2FC10D05237C381259AEDF60C1E468B5232D855B184B6D9CDBADF8064C5012AFD7CD844A05F5FE9223EC17098472B2469C5C4B1B9F4BEA4D8F25520BF2B9E214F1E2C937809938B1056574F4F1BFE112A4797D2817D5132B3A9433BB9500AA15EA79646AA82FA6974B4F25694CB8E0818735C623ECC2E569C0B3E49659B8CCC5E831A4CF65D2A3ABCEC1A2698C6BECFE225F4476273698255620BFAA6524EA22FFEE0093CF48A6F4CE9A6389AB88193B7751903AB93A1C93D20EBFF4F939AC1B76027FC59C6D25B8B6FA6975A9D44AF9082BB5AB4F9CB9A8D99017DA69BD458DF8F8348CABFE2AD44EF5337E1CADE0038DE5F92CAC2A637B9EEF418D2BF22E7BA41CA86C51E215CCEDDD9A520A0EA57EBC1483C5D23A6ED7E2CECDDEAFBC18455AF0BC00BA4BA4326B2E5E67BAE580378468CD08CD6696B508DA9A20D5285D77B7D685E92972C5874E1F41DEC1D3D4C309C4F822C56DEAA8916655BA3C2A01BC7CD2AD9D0173B8BB81A9AC25D0F4E2A67C0A2489BEFAE5AB010E47E62CB313F708EB7C67ED52BC725E908F52FA85E3724BF5F905A1EC2FBEEF9D4CECC725214A831B37CFB4870021655580AE965ED54A223EE7A83A209A2F3CB12C1533FBA24C0FD78400039A0A33F6D6529E5A34EDAE52B1C6648D0FADA7979A8C36F37D69E33ED8225F40D755A6E786AE5576CF945A9D76941D728493B2502FBEBAE079AADA2B9D80B96F2B2FFB9DDFA2C318358191571DCB24C33F7AAE0914BF3A77D058375CEBE0E470CF15A2DA5BA867F50C4AFEF0F02ED24964DE39FE2E104D4752256259E9B9CBB56B4F31E94789E26CD59C83BEBD3F7F9ED61F9A2E20D209DCB31A5C158985C341475CBD831DD8B291C3F244728B79019FDC675A20E1BC33AAEE525510A59B86C2ACA7FFE5D450E4181FEE296B79BA2E108C3D8819D75E0E3FAE95FE43558B617FCBC611465C3AC86FE9A5A34A967D2A6C06CC1004992E3F6279A4D6E657EDCC51D12A45356AF051C6BEEAA4D97EF6AD9DA7449901019353BC21EA38850B9DB18A474055D868EFC3F580DD5F8DE45D73C23AB4359D71F3ABA1BFC732B6E4FCAC6ED2B3F6331B0F377F93B25D04D4F2BEE3F6EE7AF144096336CEFA9C43365D7A97B10487D7E99EE2304AA0199236B7B99589B4161191FE4018298BB7517A63A89C6A7FEB32AB38D331A0058037C48564C88B606870954DD95E994D697072B56678AADD3953A69C05C79C356D1C76D7AC3C70D487D61B7054F05543BA4687713CC3E2F96D5542483BFF4BA502AA5A4A8A1260D19EDE547269511C527B456AB2EE051AEF39A35421AB7E31C6CE6419F7A490D68B0B2C65585A085A015CAD4338C04989FC26ED8A8E1E2177C7E09BD244B042DA90F4DD9863EAA86897DCB11465AA3289FA87DB368DBB2D89754EC1526A157A8826237D46365C80F18CADE7471589010374C1A40FB7EF160B275896259F02DE78DD07FFF61E76B9CD1F13C9AC02C4F64CBF9C4C782F7D0710F621033308A11370BF81E0E3CAE1630DFD17D30E75E15725D6DB688D8EE3D029F7D58AE4A3C62E4D92E227659928D99FD1E3E6F1295DB20A665A9F3670E4FC29A30A2A5DE1B700BC3A7FE29FA07AAAA2BEB34B1D7B2842A8B51632BBCA99B0AF5F6B25B7B6104EAE1661DD36B998B9DD57C050AFCE3EB68D2F44C825D7C52C18EFEA464B45CE81C564AFEE67E58AF9E8CD247968D642B9C63467D3388E05E42C61636E18DF1A4AB46D3BE3AE0C4DB33B99B6ACCF3FDF5E2D32251BC738FE2B1A58FEB1B26B96CC2F8444021E0B18A2A875810B44A0E8B55B249C931FE4F997D48966255E2B8AA78FB1990475BD0493BE22C772F09FF3E1AEF67C855EDF4CF064BEC43D98DF1BCA6376E491D2E4A8AB0A5FC8BF920AB6A1EC90D35D6E00586C5E3D3A4861AB5574749A381F5943FD35B9AE25AAEBEB21445377DD3E3470292A001899376F709BD2B002D7D75712C1CE03B5F74D926FB317010AFFC0712F70278533B661C3F3E72558A6641607AB6C69236D2895DA00918C56937D55A6C433BD7981A31BDC5BBC1730188A0060F10CD68E3E26D01380527C44215AB92043D7B37BA48EEC960BAD697EFDCC18498CBF6B4E8D7F7DF6A23BFE07A71CD66D2B4B11447FB032B00FF314E1726328541841D38617DD90DEF4ED96F06AD408C637CD6DDCEC408D4C4DA97B417D2AC3D53F53AFE6ABF9238AC2D1A280418DB0C5441D7EBF4E6F74E5BD7CBA6BC71FD3463805D442A72D9300203F505C1961634A6BA4A87270E98D64C6F8AD1125CEE8FA32E3D264B2CF8AC65CC33667EA4493EECD84A5E6161E30B7899E9B0F58BC38DDED0392CD401E3034E02CF5A24285AE7D44FAF5EE7C1215A8C50237C28E0E5C0E49F61ECC6AC2C76324C4191971D16DC4D99DE22EE5EE47739619BB4C35DEB0B9A16895EEC8F93DE89C892AF221A552B2F8A3009DCCFBDD5D10E7643D4DF20B8E1D844DA7B21B964D637635B7E36A66CB18E85ADA6AE61C524021A1A4EB4DC1B9AEBEEDD4B41F3573E94C3849666AF199AE85A3BBD2380148FC526BF2FE0572478DAF27AF966B2E9F758A3FBCD4A933E2F459026CFFBA3EF9DBAA66D43EFDDD0EFAB6272927F0196B8A112A3590A11805F8C3582A51E44495572A21FC3DDD1D1895FE123C716CC50DE9297C68C94E522CCFEEF49EC13C5399733ABB9EC3E1BBAFB8A681EAD37A7D56EB726ED724B9E07080101ABA55B68FAF79F52188F5D0DFB0AFF2A357ACC2911949A6A8FD912ED841A8BBC610E5EB69F020005000200FDFF0000FCFF000000000100FEFF02000200FFFF020003000100FEFF010000000100FCFFFFFFFDFFFEFF01000000FCFF03000100000000000400FFFFFDFF0300FDFF0400FEFF000002000100FEFFFCFFFDFF0200FFFFFCFF01000100FFFFFEFF01000000FCFFFEFF020004000200FEFF0000FEFF0100FEFFFBFF00000200FFFFFEFF0100FEFF00000200FFFFFBFF05000000FEFF0300000000000300FCFF03000000FEFF0200FDFF0000FFFFFEFF0300FFFFFFFF0400000002000100FAFF000006000200010000000600FEFFFFFF0300FDFF0400FCFF03000200FEFFFFFFFBFF0100FFFF0100FDFFFFFFFFFF00000000FEFF020001000500FFFFFFFF00000400FCFF0000FFFF020000000100FFFF00000400FDFF00000000FEFF0000FFFFFCFF0100FFFF010004000200FDFF010000000100FFFF0100FEFFFFFF0100FFFFFEFF01000300FDFFFFFFFEFFFDFF000000000000FDFF0200FBFF00000200FFFFFBFF000000000100FDFFFEFF0100020003000400FFFF0200FCFF00000300FEFFFDFFFDFF0100FFFF020002000300FDFF0300010001000100FFFF0200FDFF02000400FFFF0400FDFFFDFFFFFF02000200FEFF00000200010000000100010005000000FFFF0400FFFF0000FFFF000000000100FDFFFFFFFFFF02000200FEFF0100030002000000FCFFFFFFFFFFFDFFFFFF03000000FCFF0100010000000100FEFFFFFFFDFF00000100FBFF01000100FFFFFCFF01000100FFFF00000100020003000200FEFFFEFFFEFFFFFF0200FFFFFFFFFFFF01000500F9FF00000400FFFF0200FFFF00000000FFFF03000300010000000100FFFFFEFFFFFFFDFF00000300FFFF0200FFFFFEFFFFFF03000200FDFF0100FEFFFCFF0000FEFF01000100F9FFFBFFFDFFFFFF010004000000FEFF0300FBFF040001000000020000000200020007000100FCFFFFFF0100FFFFFDFF01000200FEFF0300FEFF0000FEFFFDFFFEFF0000010001000000FFFFFEFF0300FBFFFDFF0000000005000100010006000000FCFF0100FDFF0100FEFF0200FFFF0200FFFFFDFF02000000FFFFFCFF02000200020001000100FDFF0000FFFF0300FFFFFEFF00000000000000000200000000000200FDFFFCFF01000000020001000100FFFFFDFF0100FFFF010001000200FFFF0200FDFFFEFF0000FEFFFEFF03000100000000000400FDFFFCFFFCFFFEFF0000FEFFFBFFFFFFFEFF0100FEFF00000400FFFF0100000000000200FDFF00000500FFFF0200000000000000FCFF0100FFFFFFFF020000000400FFFF0200FFFFFFFF0000FFFFFDFFFFFFFFFF01000300FEFFFFFFFFFF020002000100FEFF0300FEFFFDFF02000200FFFFFEFF0000FCFF0000FFFFFDFFFFFFFDFF0200FBFF02000000FFFF02000300030004000200FFFF01000300FCFFFDFFFBFFFEFF0100FCFFFEFFFFFFFEFFFCFF04000100030001000000FDFF0000FFFF01000400020000000000FEFF0100FFFF0000040001000100FEFF0300FAFFFDFF0300FBFF000002000000FEFF00000100FCFF0000FFFF00000000FEFF01000300FFFFFFFF02000100FEFF0100FEFFFFFF0500FEFFFEFF0100FCFFFCFFFEFFFDFF01000000FEFF0100FDFF0300020004000300FFFF0000040005000200FEFF0200010003000000FEFF03000100FFFF01000200030003000500FCFF0000010002000000FEFF0200FBFF0000FAFFFFFF0100FEFFFEFF03000300FFFFFFFF000002000000FEFF0300FEFF0500FEFF010000000000FDFFFDFF0200060000000300FDFFFFFFFFFF0100FEFF02000000FEFFFFFFFDFFFEFF010001000200FCFFFFFFFAFF00000100FDFF01000200FDFF0100040002000100FFFF0100FFFF0200FEFFFDFF0100FCFF0000FFFF04000100FDFFFEFF0100FAFFFFFF0300FEFFFDFFFFFF020000000200FDFF02000000FCFF00000000FDFFFFFFFCFF020001000500FEFF000002000200FDFF0000FFFF0100FEFFFEFF0000000004000000FFFFFEFF010002000200000000000000FEFF0200FFFFFFFF0000FFFF04000100FDFF01000000FEFF03000200FFFFFCFFFFFF0000FDFF010001000000FEFFFFFF01000000010005000000FDFF0100000000000100020001000100FFFF0000FFFFFDFF0100FFFF01000100FEFF0300FDFFFEFFFDFFFFFFFFFFFEFF0000FDFFFBFFFFFFFFFFFDFF000002000000FDFF02000200FFFFFAFF03000200FDFFFBFF00000400FBFFFEFF02000000FDFFFFFF0100030000000200FEFF04000000060000000200020002000200FEFFFCFF0100FEFF020000000200FEFF050004000000000002000200FFFF0300FCFF0000FDFFFDFF01000000FBFF0000FEFF000004000300FEFFFFFF0000FFFF000003000200FBFFFFFFFEFF0100FFFFFFFF0200FCFFFEFF020000000000010001000200FFFFFEFF0500000002000000FEFFFEFFFCFFFEFF04000100FFFFFFFF0300010000000100020000000000FEFF0600FCFF0100FFFF0000FCFF0500FFFFFFFFFFFF0300FBFFFEFF0100FDFF02000000FFFF0200030005000200FEFF0400FFFFFFFFFFFF0000FCFF0000FCFFFEFFFFFFFFFF0200FFFFFFFF0000FFFFFEFF00000000FEFFFFFFFEFFFEFFFFFFFCFF030000000100040000000000010001000100FDFFFEFF0300FEFFFEFFFEFFFCFFFEFF0100FEFF0200FBFF02000100FFFFFFFF0100FFFFFFFFFEFF000001000100FDFFFEFF03000500020001000000FFFF00000000FCFFFEFFFBFF0100040000000000FEFF02000400FCFF040004000000FFFF02000300FFFFFFFFFEFF0200FCFFFFFF0300FBFFFDFFFFFF00000100000001000300FFFFFDFFFCFF02000300FEFFFFFFFDFF01000000FDFF050000000000FEFF050001000100F9FFFDFF0200FEFFFFFF0100010002000200FFFF00000400FCFF0100FBFF0000FEFFFFFF0200FFFF0000FCFFFCFF050001000200FCFF050001000300020000000000FDFF03000100FDFFFCFFFEFF0400030000000000FEFF0100FDFFFDFFFFFF0400020002000100FEFFFFFF0000050003000300FFFFFDFF01000100FCFF00000200FFFF0000FFFFFEFF0000FEFF01000000FFFFFFFF00000200FFFF03000100FFFFFEFFFEFF020001000200FBFF0000FFFF0100000001000000FEFF000003000000FDFF00000100FCFFFFFF000002000400FEFFFDFF000001000300FCFFFDFFFFFF00000000FCFFFEFFFEFFFFFF03000200FEFF03000100010002000200FFFF0000FBFFFFFF0200FFFF0000FDFFFDFFFDFF0300FFFF0200FEFF040004000500FFFFFEFF02000000FEFF02000200FFFF0000FFFF020002000100FEFFFCFF02000000FBFF0100FFFF01000100FFFF000001000400FFFF030000000500FCFFFDFF0300FEFFFDFF0000000005000200010003000400FFFF020000000600FFFFFFFFFFFF0200FEFF03000200FCFF0000FFFFFEFFFEFF02000200010002000000000001000300FFFF01000400FDFF03000200FEFF02000100FFFFFDFFFEFFFCFF0200FEFFFFFF0200FDFF0100FEFFFEFFFFFF0100FFFF040002000600FDFF000004000000FEFF0300FFFF0300FFFFFFFFFFFFFEFF0100FCFFFFFF0400FEFF00000300FFFF04000200000003000200FFFFFDFFFCFF0200FEFF0100FBFF0200FCFFFEFFFFFFFFFF05000000FEFFFEFF040002000200FFFF0000FFFFFFFF0000FEFF0200FEFF01000100000002000400000002000100FDFF0000FDFFFDFFFBFF00000300FEFF0200FCFFFEFF04000100FDFF01000000FCFF00000100FEFF0200000000000300FDFF0000FFFFFEFFFCFFFCFF0100FBFF0100000000000000FFFFFDFF01000500FEFF0200FCFF03000000FCFFFFFF010003000000FEFFFEFF000002000300FDFF04000100FFFFFFFFFCFF0100FEFF020001000100010003000300FFFF02000200FFFF040002000000FEFFFFFFFFFF0000FBFFFFFF0300000000000300030002000000FDFF03000100FEFF01000000FEFF000002000100FFFF0100FFFFFFFFFFFFFCFF0200FEFFFFFF0100FEFFFFFF03000200FDFFFBFF0000FCFF0300FEFF00000300FEFFFFFF0100FEFFFDFFFCFF02000400FFFFFFFF0200FBFF00000000FEFFFDFFFFFFFDFF0100010000000100FFFFFEFF0300FFFF020004000200FDFF0000FFFF01000200FCFF0000FDFFFFFFFFFF0200000002000200FEFFFCFFFFFFFEFFFEFF0300FEFFFFFF0100FFFFFFFF0000FEFFFCFF000003000000FEFFFFFFFCFF0600FDFFFCFFFFFFFEFFFBFF020001000100FCFFFFFF01000100FCFFFFFFFDFFFEFF00000100FCFFFDFF000002000200FFFF0100FEFF02000000FEFFFFFFFBFF00000100FFFF02000600020003000000020003000000FCFF0000FEFF030002000100FFFF020001000000FDFF030001000400FEFFFFFF010000000300FFFF0100FFFF01000000010001000100020002000300FEFF0400FDFF020002000000FFFF0200FFFFFEFF03000200FFFF02000200FEFF0100020002000300040000000000010001000100FEFF0200FCFF00000300010002000000FFFF03000100FDFF0200FFFFFDFF0100FDFF00000100FEFFFDFF03000200000000000400FFFFFEFFFEFF0300FDFFFEFFFEFFFFFF02000000FFFFFFFF020003000100FFFFFFFF0200FFFF0100FFFFFCFF05000400000000000000FEFFFCFF0000FCFF0200FEFF0200FFFF01000200FCFFFDFF00000100FCFF000001000100FEFF00000200FDFF0300FEFF0100FEFF01000100FFFFFDFF0200FEFF0300FFFFFDFF0500FFFF020002000000FEFF0100FEFF0100FCFF040002000200000000000100FEFF0300FDFFFFFF00000100FFFFFFFFFDFFFBFFFEFF0200FBFF0200FEFF01000400FAFF02000000FEFFFEFFFBFF0100FFFFFEFF0100FEFFFDFF02000000FEFF030001000000010005000100FEFF000001000100FDFFFFFFFDFFFDFFF9FF02000100FEFF020005000200FFFF0000FFFF0000FFFFFDFFFAFFFEFFFFFF0100FEFF050000000000FFFFFCFF03000400FFFF0200FFFFFEFF0300FEFF000000000000020005000000FBFF04000100FBFFFDFF0600FEFFFFFF0100FFFFFFFF010001000000FDFF0200FBFFFDFFFEFFFFFF02000200010002000100020001000300F8FF010004000000FCFF0100FDFFFFFFFDFF0000FBFFFEFF0500FEFFFFFFFDFF03000100FCFF0000FEFF0100FEFFFEFF0100FEFF0000020001000100FEFF0400040002000100010002000000FFFF010001000200FDFFFFFF0300FEFF0100020001000000FEFFFDFFFEFFFEFF03000100040000000000FDFF02000000FCFFFFFFFEFF000006000200FFFF06000200FFFFFFFF0100FFFF0200000003000500FDFF0100FFFF0500FFFF0100040001000100FEFF0400FFFF0200010002000400030002000500FEFF0000FCFFFDFF0000010002000400FFFF02000300FEFFFDFF01000100FEFFFEFF0300FDFFFEFF0100FEFFFDFF00000000FFFF040000000000FEFFFFFF0000FFFF0000030001000200FFFF040000000000FFFF0100FFFF00000000FFFF01000100FDFFFEFF0000FFFFFFFF01000000FFFFFDFFFDFF0400FBFF01000000FCFF01000000FDFFFFFFFCFF0100FCFF0000FDFFFFFF0100FFFF0300FFFFFBFF0200020001000100FEFFFCFFFEFF0000FFFF0000000001000400020003000500FEFFFFFFFFFF0100FFFFFEFF0300FFFF010001000000FDFFFFFF0200FFFF0000FDFF0000000001000200FEFF000002000400FEFFFFFF0000FFFFFFFF0200FDFF0200FDFF0100FEFF05000000000002000100FBFFFDFF0100020000000200FEFFFEFF01000100030002000000FDFFFFFF0200FEFFFFFF0000FFFF02000100FEFF020000000100010001000000FEFF0100FEFF0000020000000000FFFF00000100FEFFFDFFFDFFFBFFFEFFFFFF010004000100FCFFFFFF00000200FEFFFEFFFCFFFDFFFFFF0000020000000500020000000000FFFF020001000100FBFFFEFF00000100FEFF000000000100FFFFFDFF040000000200FFFF0200FDFFFEFF0100FCFF000002000000000001000400FEFFFEFF00000000030000000200FBFFFCFF0500F7FF000000000200FFFFFEFFFCFF01000300FFFF0300FEFFFEFFFDFFFEFF0200030001000200FEFFFEFF00000300FBFF01000300FEFFFFFFFEFF000000000400FFFFFEFF0300FFFF0200FBFFFEFFFEFF0100FEFFFDFFFFFF02000000FFFF04000100FCFFFEFFFFFFFBFF030003000100FEFF00000100040003000000010002000100FDFFFFFF04000100FCFFFFFF0500FFFFFBFFFFFFFFFF00000200FBFFFFFFFEFF01000200FEFF000000000000FFFF02000000FCFF0000FBFFFEFF0100FDFFFFFF0200FFFFFCFFFFFF0200FEFF01000200000002000100FFFF00000100FDFFFEFF00000100FFFF0100000001000100FDFF03000300FFFFFFFFFDFF0000000000000100FFFF00000100FDFF01000000010001000200FFFFFFFF000000000000FFFF0200FEFFFDFFFEFFFFFF01000200FEFF00000000FDFF0200000001000100FFFFFDFF010002000200FEFFFDFFFDFF030000000200FFFF01000200FFFFFEFFFFFFFEFF01000200FFFF01000300FFFF010003000000FEFFFFFF0100FFFF00000100FEFF0300FFFF0000FDFFFBFF0200FDFF04000000FEFFFDFF0300FAFF030001000200FEFF000001000100000000000100FDFFFEFFFFFF0400FFFFFFFF02000300FEFFFCFF0500FDFF020002000200FFFFFFFF05000300FCFFFBFF0100FCFF05000400040002000000FFFFFEFF0000FFFFFFFF02000000FDFF01000200FEFF0100020002000200000001000000030004000300FEFF0000FEFFFEFF00000300FFFF03000500000003000300FFFFFCFFFDFFFEFF000003000300FEFFFFFF010003000000FFFFFFFF0200000000000500020001000300FEFFFDFFFCFF0100FFFF0000FEFF020000000200F9FF010001000300FEFFFEFF0200FFFF00000300FEFF010005000300FFFF0000FEFF00000300FFFF020003000200FEFFFFFF0100FCFF030003000000FDFF000004000000FFFFFEFFFFFFFEFF010001000100FEFF0200FDFFFFFF0100FEFF03000200030001000000FEFFFFFF0000FDFF0300FCFF010004000000FAFFFEFF03000200FFFF0200FEFF0000FFFFFFFF0400FEFF0000FDFF0300FFFFFCFF0100FDFF0100FEFFFDFF0100FDFF020002000100F8FFFCFFFDFF00000100FCFF0100FFFFFEFF00000400040003000200FEFF0000FEFF0100FFFFFEFF0300FEFFFCFFFDFF00000100FEFF010002000100FBFF0500FEFF050003000100FEFF02000300FCFFFFFFFEFFFEFF0100FEFFFFFF0100FFFFFFFF0300FFFF010004000200FFFFFCFF03000200010000000000020003000000FFFFFEFF0400FFFFFDFF0100FBFFFEFF0000FFFF0000FCFF0200FBFFFDFFFDFF0000010004000000FFFFFFFF0100FDFFFBFFFDFF0300020001000000FEFFFEFF0300FFFF0200010003000200FDFF0000000002000200FFFF01000200FFFF0300FEFFFFFFFDFF01000000010002000400FDFFFDFFFDFF02000100FFFF0300FBFFFEFFFFFF0000010003000100030001000000FFFF000001000000FDFF0200FEFFFDFFFFFF010002000000FEFF0000FBFF00000200FDFFFEFF0000FEFF030002000000FFFFFDFFFFFF0100FFFFFBFF00000100FEFF0300010001000200FEFF000000000000FEFF0100FFFF0100FDFF02000100FEFFFBFF0200FEFFFFFF0000FFFFFFFFFFFF01000100FFFF0200FFFFFDFF010002000200FDFFFFFF0200FFFF01000000020000000200FEFF01000000FFFF0100FFFFFCFF01000300030002000100FFFF0000010000000100FEFF0000010000000300010001000200FEFFFDFF010001000100010000000200FFFF0300FEFF040001000100FCFFFDFF000000000100FFFFFFFF020002000000000004000400FFFF0200FEFFFEFF0000FEFF04000000FCFF000001000100030001000300FEFF02000200FCFF01000100FEFF0200FFFFFFFFFDFF0300FDFFFFFF0200FFFF000000000100FFFF01000000040003000100FEFF01000100FFFF000002000100FFFF020001000000FEFFFFFF0000FEFF0200010007000400FFFF0200020001000000FFFFFFFF0700FFFF0100FCFF02000000FAFFFEFF0000020001000000FDFF00000100040000000000FFFF0000010006000200000000000000FFFFFEFFFEFFFEFFFFFF01000200FFFF000004000100FFFF0100000000000000010003000100FAFFFEFF00000100020001000300000002000300040000000200020001000200FCFFFDFF0100FDFF01000300010004000100FFFF030002000000030003000000FDFF020001000000010002000000FFFFFDFF000004000200FBFFFEFFFFFF0200FBFF0300FDFF0300FAFF0100020002000500040001000200F9FF0200FCFF0000FBFFFCFF0300FFFF0000FDFF010004000200FCFF0100FFFFFDFF0100000004000100FFFFFFFFFEFF0200020001000200FFFFFAFFFCFFFEFFFEFF02000100FEFF0100010000000800000001000200FFFF000002000500FEFF000002000400FFFF00000300020001000000FFFF02000200FFFFFDFF0000FDFF0100FEFFFFFF02000000FEFFFEFFFFFF0400FFFF0000FFFF02000100010000000300010003000200FDFFFCFFFFFF0000030001000100FBFF0000FEFF010001000300FEFF0100FFFF0100FFFFFDFF00000100FCFF0100FFFFFEFFFFFF02000200FDFF0100FFFF0300FFFF03000100FFFF0100020000000300000000000100FDFFFFFFFEFF0000FEFF0100FCFF0000000004000100FEFFFFFF0200FDFF00000300FFFF01000000FDFF0100FFFF000000000300FDFF0000FFFF0000FEFF02000100FEFF01000000FBFFFEFFFFFFFDFFFDFFFEFFFDFF02000100FDFFFEFFFDFF04000600000003000400FFFFFEFF00000100FFFF030001000400FFFF000000000000FEFFFDFF050001000500FDFF00000000FDFFFFFF000001000000FBFFFFFFFFFFFFFFFEFFFFFF0000FDFFFFFFFCFF0100FFFF010000000000FFFFFEFFFCFF020001000100FEFFFEFFFEFFFEFF030000000400FEFF03000300020001000200FFFF0100FFFFFEFF02000400FDFF0300FFFF000002000200FEFFFEFF0000010000000200FBFFFDFF0100FCFF02000200FBFF0200FDFF0100FCFF0300FEFF0000FEFFFCFFFFFF01000000FFFF02000100FCFF0700FFFFFDFFFDFF0000030002000100FEFF0100FEFF0400FCFFFDFFFFFF010001000300FFFF0400FDFF030002000200020000000100FFFFFEFF0500010000000500FEFFFEFF06000000FFFF0000FFFF00000000FEFFFFFF0000FFFF010001000200FFFFFEFFFFFFFEFF00000200FEFF04000300FDFFFDFF0000FFFFFFFFFFFFFFFF01000300FEFF0000FEFF01000400FDFFFCFFFFFFFEFF00000200FDFF030000000400FFFF00000300FDFF0000010001000300FCFFFBFFFDFF02000200FFFF020000000100FFFFFFFFFCFF0100FDFF030004000100FBFFFEFF0100FEFF05000300010000000000FEFF00000100030001000000FFFF01000200010000000200FDFF0200FFFFFEFFFFFF03000200FBFFFFFF0200FEFF0200FDFF03000000FEFFFEFFFCFF0500FFFF000001000200FFFF0300FDFF0000FFFFFEFF01000300FEFFFFFF0100020002000000FEFF00000000FEFFFFFF010000000300FCFF0200000005000300000004000500FFFF0100FDFFFFFF0300FCFFFEFF0100FBFF020003000200FDFFFEFF0300000002000400FFFFFFFF0200000001000300FEFFFFFFFEFFFEFF0100FEFF0200FFFFFFFFFEFF0200040004000200FDFFFEFF0300FFFF01000100FAFFF9FF020001000400FFFF01000200FEFFFFFFFFFF02000100010002000000FDFF01000400040000000000FEFFFDFF0100FFFF0100FBFFFFFF0400FDFFFFFF01000000FDFFFFFFFCFFFFFFFFFF00000100040001000400FEFF0100000004000300010005000000FFFFFFFF00000500FFFFFEFF02000200010001000000FEFF0200FDFFFDFF000000000300FFFF04000300FEFF0100FFFF030002000100FBFF0000FEFFFEFF020002000100FFFFFEFFFFFF0100020002000000FFFFFFFF0100FEFFFEFFFFFF04000400FCFFFDFF0300FFFF0200FFFFFEFF020004000400FFFFFFFFFEFFFBFF0000FEFFFCFF0100FFFF0100FCFF0200FDFF000004000100030000000100FDFFFDFF010000000200FCFF02000200FFFF020002000400FDFF0400FEFFFFFF02000000FDFF0000FDFF01000100FFFFFFFFFFFF0000FFFFFDFFFCFFFEFFFEFFFEFFFDFFFDFF01000200FEFF0400FCFFFFFFFFFF0300FFFFFEFFFFFF000000000200FFFF0100050000000000FCFFFBFF0100FFFF030002000400010001000000FFFF0100030000000100FFFF01000100FEFF0100FBFF0100FCFF0000FEFF02000200FEFF0100FEFFFDFF00000100FEFFFFFFFCFFFEFFFFFFFFFFFEFF00000000FEFF0100FDFFFDFF0100FEFF0100FEFF0200FDFF020003000300FFFF0000FCFF0100FDFF02000000FFFF0200FEFF010001000000FFFF000001000100FCFF010004000200FFFFFCFFFFFFFFFF0000020000000000FEFF000002000000FCFF00000300FEFFFEFFFFFFFFFFFFFFFDFF05000200FFFFFFFF01000300FCFF000000000000010001000200FFFFFDFFFFFF01000300FEFF00000200030004000100FFFF030001000000FDFF0200FFFF0300FCFF02000400FCFF0100FEFFFEFF00000100FDFFFDFF0200FFFFFEFFFFFF02000100020003000100FAFF03000100FBFFFFFFFFFFFFFF03000200FCFF00000000FDFF0400FFFF0100FAFF0000FFFF0200FCFFFCFFFDFF0100020002000300FEFF0000FEFFFDFFFCFFFDFFFFFF0100FCFF03000300FDFFFEFF0300FDFFFFFFFDFF01000100FEFFFEFF030000000200000003000100000001000000FDFFFFFF03000200FDFFFEFFFEFFFFFF0000FEFF0200FFFF0000FFFF00000100000000000200FFFF010001000400FBFF04000300FFFFFEFFFEFF00000300010002000100FEFFFEFF03000300020004000200FEFF02000400FEFF00000300FFFFFEFF0300FDFF00000200000000000100FCFFFEFF0200FFFFFFFF0200FCFFFCFF0400030001000100030000000000030002000300FFFFFFFFFDFF00000300FFFFFCFF0100FFFFFEFFFEFFFFFFFFFF040003000200FFFF050000000400FCFFFFFF02000100FFFFFEFFFDFFFEFF0100FAFF040001000100FFFFFFFF010000000200FEFF0000000002000000010002000000FDFF02000000000004000100FCFF000001000600FFFFFEFF0200FFFF0300FFFFFEFF01000500FFFF0300FEFF04000000FFFF0500FEFF0100FEFF02000200000003000000FCFF0100FEFFFCFFFFFF02000100010003000100FFFF020003000000000001000000FDFF010000000300000004000300010001000000FEFFFCFFFEFFFEFF00000100FFFF01000000FBFFFFFFFFFF0000FDFFFEFFFCFF010000000000030001000100000001000000040003000100FEFF0100000002000300FDFFFEFFFDFF0300FFFFFDFFFBFF030003000400FEFF0500FCFFFAFF0100FCFFFEFF00000100FFFF0400FEFF0400FEFF0200020002000000FFFFFFFF01000200FFFFFDFF01000100FFFFFDFFFEFF0100010000000100FEFF0200070000000000020000000200020005000300030002000300000003000000010002000100FFFF00000300FFFFFDFF030001000100FDFF04000000FDFFFFFFFFFF01000200010002000000FFFF01000200FEFFFEFF03000300FFFFFDFF0300FEFF0100FCFF0300FEFFFCFF02000200FFFFFFFF0100FFFF000003000200FDFF02000000020000000300FFFF00000000010000000100FEFFFEFF00000300010002000100020000000000FDFF0000FFFF0000FFFFFFFF0000FBFF0000FFFFFCFF00000000FDFFFFFF030006000300020000000200FEFFFFFFFEFF0000FBFFFEFFFFFFFDFFFFFFFDFF05000400FDFF020004000200FEFF010004000000FFFFFCFF0500FFFF0000FFFF020001000000FDFF0200FFFFFBFFFFFFFFFFFFFF00000000FFFF0100FEFF02000100FFFF000001000400FAFF00000200020000000000040000000200FEFF000004000300000004000000FFFFFEFFFFFF0100FEFFFEFF000001000200FDFF0200FCFFFFFFFFFFFFFF01000000FCFF0300040001000000FFFF00000300FFFFFEFFFEFF0100FDFF01000200020002000000FFFF0200FEFFFFFF00000000FFFFFDFF0300FEFF0000FEFFFFFF02000200FFFFFBFF0000FEFFFDFF02000000FAFFFEFFFFFF03000100020001000200FFFF00000000FFFFFDFF0100FBFF010000000100020002000000FCFFFFFFFFFF01000300FEFF0000FFFF020000000600FEFF00000000FFFFFFFF010000000000FFFF00000300FFFF0000FDFF0200FEFFFDFFFDFF050004000100FFFF03000000FFFF0100FFFF0400FEFFFBFF0200FFFF01000100030000000100FEFF0200000000000400FEFFFFFFFEFF0300FFFF000002000200FCFF0500FEFFFEFFFFFFFEFF0500FCFF0000FEFF06000000FCFFFDFFFFFF0200FEFF00000300FFFF0200030001000000FFFFFEFF01000300FDFFFFFF050003000000000002000000FEFF01000000FDFFFEFF010004000000FEFF04000000000006000000000000000000FEFF030002000300040003000200FEFFFCFFFEFF0100FEFF0400FDFFFFFF0100FEFFFFFF00000000FFFF02000100000001000000FEFFFFFFF9FFFDFFFCFF02000000FBFFFEFF01000000FEFFFEFF01000100FEFF0000FDFF0200FDFF02000000FFFF00000200FFFF0100FCFF01000300FEFF02000400FEFFFEFF0100010001000300FEFFFCFFFEFF0300FCFFFCFF0400FEFFFDFF0200020002000100FFFF010001000000FFFFFFFF0200FEFF01000100FDFFFFFF0000FFFFFFFF0100FFFFFDFFFFFF06000100000001000100FDFFFEFF0000000002000000FFFF0300FFFFFFFF010003000100FEFF02000100FEFFFFFFFDFF0300FFFF00000100FFFFFEFF0100FFFF020002000300FFFF0200FFFF03000000FDFF0100FFFF000000000000FEFF02000100FFFF03000200FFFF0300FFFFFBFFFDFF01000000FFFFFFFF000001000000FCFF020004000000060001000300FFFF0200FFFF0000000002000100030001000500FFFFFBFF0300FFFF0000FEFF0100020005000500FFFF0200FEFF000001000200FFFFFEFF010000000300FDFFFDFF0400FDFFFCFF0100FFFF01000000000000000100FEFFFEFFFEFFFDFF000000000000FFFFFEFF0300FFFFFFFFFCFF0000FCFF00000000FFFF0400030001000200FFFF02000200FDFF0300FDFFFEFF00000000FFFFFEFF02000100FFFF020005000000FEFFFEFF0100FFFFFEFFFEFFFDFF0000FEFF0100FDFFFDFFFFFFFEFFFDFFFEFF0000FEFF0100FFFF00000000FFFFFCFF000000000100030003000300FFFF0100FEFF02000200FDFFFEFFFFFF0200FFFFFFFF0300000000000200FFFFFDFF010002000300FBFFFEFF06000300020001000200FCFF010002000100F9FFFEFF020003000000FFFFFFFF030000000000000003000200010001000200040002000300020001000100FFFF0100FFFFFFFF0300010000000400010000000300FCFFFFFFFCFF0200FCFF050006000000FDFFFFFF020001000100FFFFFEFFFDFF00000300FCFFFCFF000001000000010000000000010004000000FDFF0200FEFF0400FEFF0100FFFFFAFFFDFFFEFFFFFF040001000100FEFF020001000100020002000000FEFFFFFFFEFF01000500010001000600FBFFFEFF000000000100000000000100FEFFFDFF000001000000030001000000FDFF010000000100FEFF0200FCFF00000300FFFFFDFFFDFFFFFF020000000100FEFF010003000100FFFFFEFFFFFF03000200000001000200FFFF010000000000FEFFFCFF020003000100000004000200FEFFFDFFFBFF0100FBFFFEFFFCFF03000100FDFF02000200020005000200FFFFFBFF03000000FFFF0300010000000300FFFF0200030001000300FCFFFEFFFFFF0000FFFF0000FEFF0000FDFFFFFFFFFF0100FEFFFFFF0000FFFFFCFFFEFF02000300FCFFFFFF050001000100FEFFFCFF07000400FCFF0000020003000100FDFF0100FBFF0200FFFFFEFF040001000100010000000400FFFFFEFFFEFFFCFFFBFFFCFF0100FEFF02000000FCFF040002000200FDFFFCFF020003000100020000000300010000000000FDFF0000FFFFFEFF0000FFFF01000500FAFF0200FFFF0500FEFFFFFFFFFF05000300FDFF01000100FEFFFFFF02000200FEFFFCFF00000300000000000000020000000000FFFF0200FDFF0500FFFFFDFFFDFFFDFFFCFFFCFFFFFF000004000200FCFF0100FDFF000004000300FCFFFFFF000001000200FEFFFFFF0100FEFFFEFF03000300FFFF0200FFFFFCFFFDFFFFFFFEFF000000000100060001000400FFFFFFFF02000200010000000300FCFFFFFF0000030004000000FDFF000001000200FDFFFEFFFFFFFAFFFFFF0200FCFF02000200FEFF02000000FEFFFBFF000006000400FBFF02000000000002000400010005000200FEFFFDFFFDFF0000FEFF0000FCFFFFFFFBFFFEFF00000000000000000100FDFF0100020002000000000001000000FFFFFEFF00000300FFFF0000FCFFFFFF00000000FEFFFDFFFEFFFDFF0000000002000300FDFF010003000000FEFFFCFF0000FCFF00000100010000000100020001000400000004000600FFFF02000400FFFFFEFFFFFF00000100000000000100FCFF01000100010000000100FEFF010001000400FEFF0100010001000200050004000300FFFF030000000100FFFFFDFF01000200FFFFFEFFFFFF01000000FDFFFEFF0200FEFF01000000FEFF0000FFFFFEFFFEFF0000FFFFFEFFFFFFFEFF02000300FEFFFCFF00000000FEFFFEFF0000FFFF0100FFFFFEFF020000000000FDFF0300FDFF0400010001000200010001000200010004000300010001000200FEFFFEFF0400FDFFFFFF01000100FFFF0100FDFF0100010001000300FFFF0200FDFF0000FFFFFDFF00000200020000000200FEFF01000300FFFF0100FFFF02000000000001000400050002000300FCFFFAFFFFFF0200040001000000010001000000FDFFFFFF020001000000010002000200FCFF0100FCFFFFFF0100FEFFFDFF01000000FEFFFDFFFFFFFBFFFEFF040001000400000001000200FEFF02000300000000000200FEFF0200F9FF0000FCFFFEFFFEFF00000100000003000100FDFFFFFFFFFFFDFFFCFF000003000100020003000100FDFF0000FFFFFEFFFFFFFDFFFFFF00000100FFFFFFFFFEFFFEFF0100FDFFF8FF00000000020001000200FFFFFCFFFFFF04000100FFFFFFFFFDFF00000000FDFF0000FEFF0000FEFF0200020006000400FFFFFFFFFEFF0100000001000000FEFF0100FFFF0200FCFF0300FEFFFFFFFFFF0100FEFF06000000000003000200010004000400FFFF0200FDFFFEFFFFFF0200FFFFFDFF00000200FBFFFFFF0100010001000100020000000200FBFF0300030000000100FAFF0200FBFFFBFFFFFF0000FFFFFDFF0100FEFF0600FEFFFDFF02000000FDFF0000FFFFFDFF0200030002000200FEFF0000FCFF01000000FFFF0300000002000100030001000000FDFFFDFFFFFFFFFFFBFFFEFFFEFF02000400FFFF0300FFFF01000000FFFF0400010001000100FEFF00000300FFFF00000300FEFF00000100070001000000000001000000000001000100FAFF0100FEFF020003000000FDFF00000100FDFF020000000100FFFF010001000400FEFFFBFFFFFF000001000000000001000400010003000000FCFFFBFF02000200FEFFFDFFFFFFFFFF02000000FFFFFDFF0100030004000000FDFF0000FFFFFEFFFFFF05000200FFFFFBFF000003000000FDFF0200FEFF0200FFFF00000200FEFFFFFFFEFF0100020001000000FDFF01000100FDFFFEFF00000000FEFF0400FBFF0000FFFF0200FCFF010005000000030004000000FFFFFEFFFFFFFDFFFFFFFCFFFFFF0200010001000300FCFFFCFF03000100FCFF03000200FFFFFBFF00000100020005000500FFFFFAFF0200FBFFFEFF000001000200FEFF02000300FEFF01000100FDFF0300FFFF030000000100FEFFFCFFFFFF0200FEFFFFFFFFFF020000000000FFFF0300FEFF0100FFFF00000100000002000300FCFF0700FFFF0000FEFF0200000001000100FEFFFDFF020001000100FDFF00000400FDFF000005000000FEFF00000100010000000000FFFFFFFFFDFF0200FFFF0000000003000200FFFF01000300FEFF0300FEFF00000000FFFF0000FFFF03000300FFFF0200FFFFFCFF000000000400FDFF04000000FEFF03000400FFFF0300FDFF0000FEFF0100FDFF0200FFFFFCFFFCFF01000200FCFFFCFF01000100020001000000FDFFFFFF00000300FCFFFEFFFCFFFFFF0200FDFF000002000000FCFFFEFFFDFF0100030003000200FFFFFFFFFEFF0000FEFFFFFFFBFF0400010001000000FFFF01000200FFFF030004000000FFFFFEFF010001000000FEFF0300FAFFFEFFFFFF010002000000FAFF02000400FEFFFFFFFFFFFFFF01000000FFFF050001000200020003000100FDFF0300FFFFFEFFFEFFFFFF0000030001000300FFFF03000000FFFF04000100FEFF010001000100FDFF03000300FEFFFFFF0200000001000200020001000300FDFF0300050001000000FFFFFEFFFDFF0300FEFF00000100FBFFFFFF0300FFFF0100FDFF000003000100FFFF0200FEFF02000200020000000000FFFF04000000FFFFFFFF0300FDFF040000000100FFFF0200FFFF050002000100FFFF00000100030002000500010000000000FFFFFEFF010002000200000000000100FCFF0000000000000400FEFFFFFF0100FFFF01000200FEFFFDFF0300010000000300FFFFFDFF0200FDFF0100FFFF0000FFFF000002000000FDFFFEFF0000FFFFFFFFFFFF020002000000FBFFFFFFFCFFFEFFFDFF0400FDFFFBFFFEFFFCFF00000400FEFF0200010000000100FBFFFFFF000002000000FCFF0000FFFF0300FFFFFDFFFFFF0100FDFFFFFFFFFF00000100FFFFFDFFFEFFFBFFFFFF0200FEFF0100020003000100FFFF0300FDFF01000200030000000100FFFFFEFFFEFF05000000FEFFFFFF0100000001000100FDFFFFFF0000FEFFFBFFFFFFFFFF02000000FDFFFFFF0300FFFF0300FBFF01000400010003000100FDFF0100FDFF01000000FEFF0000FFFFFEFF0000FDFF0500030004000200FEFFFBFF00000000FDFF00000000FFFFFEFF0800FFFFFEFFFDFFFFFF00000000FEFFFFFFFEFFFFFF0100FEFF03000300FFFFFDFF010000000100000001000000FCFF0400FDFF0000FEFFFEFFFFFFFBFFFEFF00000100FFFFFCFF0400FFFF01000000FBFFFEFFFFFF04000400FEFFFDFF010000000000010003000300FFFFFCFF030002000300FEFF04000300010001000100FEFFFDFFFEFFFDFF0100020000000500FDFF01000400FEFFFFFF000000000200FFFFFEFF000004000200FFFFFDFFFFFF00000000FFFFFEFF0500FEFF0100FEFF010000000300FFFFFCFFFCFF0400FFFF02000100FEFFFEFF0000FEFF000001000100FDFF00000200010001000100FFFF02000000FDFFFDFF00000700FFFFFEFFFFFFFFFFFFFF0000FEFFFFFF0000020004000200FBFFFDFF0200FDFF02000400FEFF0100020004000400FFFF000000000200FDFFFDFF0300FFFFFBFF0300000003000000FEFF000002000300FEFFFFFF0100FFFFFCFFFFFFFFFF0200FEFF01000000FFFF0000FFFFFDFFFFFFFFFFFEFFFEFF0200FEFFFFFFFFFFFCFFFDFF0000FDFF0000FCFFFEFF0200FCFF0200FFFF020004000300FFFFFCFF02000400000003000100040000000600FEFFFEFF00000200FDFF030000000200FDFFFEFF0300FFFF0100FDFF000002000400FDFFFEFF01000200010002000100FFFFFFFFFEFF000005000400FEFFFEFFFFFFFBFFFFFFFAFF0100FCFF000000000000020002000100FEFFFDFFFFFFFEFFFFFF0200FAFFFEFF0000FEFF0200020003000200FFFF0500030004000100FEFFFDFF02000300F8FF0100FFFF00000400FDFF00000400FDFF01000000020001000000FDFF0300000000000300FDFF0100F9FF04000300010002000400FFFF0200FFFF0300FFFF0100FDFF01000000FEFF00000200FFFFFBFF0200FFFF04000300FFFFFFFFFDFF0000010000000300020001000000FFFF000000000000000001000100FFFFFFFF0000FEFFFEFFFFFF0000FFFFFEFF01000200FEFFFAFFFEFF0300000004000000FDFFFEFF01000200000005000700FFFFFDFF020000000000FCFF0100FCFF0300FEFF0100FDFFFFFFFCFFFFFFFCFFFDFFFFFF010000000600FFFF0000FDFFFBFF000000000000FEFF020002000100FFFFFFFF0100FDFF0100FDFFFFFF0000FDFF00000600FDFF0100FEFF050001000400FEFF0000FEFF01000000020000000100FCFFFFFF010003000100FFFF0100040001000000FEFFFFFFFEFF0000FEFF0100FFFF020004000300FEFFFFFF0300FFFFFFFF00000100FFFF05000300010004000400FDFFFEFF050000000000FDFFFDFFFDFF0000FDFF01000400FEFF03000000FFFF01000200FEFFFFFF0300FEFF020001000300FFFFFDFFFEFF04000100FEFFFEFFFEFF01000200FEFF0100FFFF0300FFFFFBFFFFFFFDFF03000300000001000000FEFF03000500FFFFFFFF0200FFFFFFFF030002000100FEFFFFFFFFFFFDFFFDFF010001000400010001000300FFFF0100FEFFFFFFFCFF0200FFFF000000000100FFFF0100FFFF020002000200FFFF0100FFFF0200FEFF0000FFFF00000100050001000000FFFFFFFFFEFFFFFFFFFF0300020002000200020002000400FEFFFFFFFCFF000000000600010003000000FBFF0100000000000400FFFFFFFF0200FFFF02000000FFFF0000FEFFFBFFFEFFFFFF0000FFFF020001000100FFFF0100FEFFFEFFFEFFFDFF0200000002000000FFFF0000FDFFFDFF0100FEFF020002000000FDFF03000000FFFF0100FEFF0000FEFF0100FDFFFEFFFDFF02000000030002000100FBFFFFFF0200FFFF020003000000FEFFFFFFFFFF0300FEFF0200000001000000010001000000FEFF03000500FEFFFEFF020000000300FDFF0200FDFF000004000200FCFF000000000000FDFF0000FCFF0000010002000500020001000000010002000000FFFF00000200FFFF0000FAFF0000FFFFFDFFFEFFFEFF03000300FFFF0200010001000000FFFFFFFFFEFFFEFF0000000006000200FEFF01000200FFFF0200FCFF0400FFFF05000400FCFF020001000100FBFF00000300FFFF02000200FFFF030003000200FDFF00000000FEFF0200FFFFFEFFFFFF01000100FDFFFEFFFEFFFEFF0100000004000100000000000200FFFF00000400FEFF01000200FFFFFDFF0400FEFFFEFF0000FDFFFEFFFCFFFFFFFEFF0300000001000200010001000200FDFFFEFF0300FFFF0100FFFFFDFF010002000000FEFF0200FEFF0000FEFF01000000010000000100FDFFFEFF020000000200FEFF02000000FFFFFCFF0200FFFFFCFF030000000100FFFFFCFFFFFFFEFF0100FEFF0100FDFF01000000FEFF0100FDFF010001000100FDFF0000FDFFFFFF0200FEFF01000300FEFFFCFF03000200FDFFFDFFFEFF0100FFFF0000000001000300FEFF02000000030001000100FEFF00000200FDFF00000000FDFF0300FAFF02000000FEFF02000400000000000000FFFFFEFF010002000100000001000400FFFF0100FFFF020002000100FFFF0100FCFFFEFF0300FFFF01000100FEFF0300020001000100010000000300FFFFFCFF05000000FFFF0200FFFF0100FEFFFEFFFDFFFCFFFFFFFDFF0000FDFFFEFF0000FFFFFDFF0200FFFFFEFF01000000FFFFFFFF020000000300FFFF0500FCFF0000FEFF0300FFFF0100020002000000FDFFFEFFFEFFFDFF0300010001000100010005000100FEFFFDFF01000000FEFF0000FFFFFFFF0200FFFFFDFF0200FEFF000003000300FFFF02000100030002000000FFFFFEFF02000100FDFF010002000400FDFF0000010001000600FEFF020000000000FEFFFAFF0100FDFFFEFFFEFFFFFF000003000300FEFFFFFFFFFF0000FDFFFEFFFEFF03000200FCFFFEFF0200FFFFFEFFFFFF03000300FFFF00000000FFFF010003000200020002000200FFFF0000FBFFFFFFFEFF000000000200FEFFFCFFFEFFFEFFFBFFFFFF0100FEFFFEFFFFFF020004000100FFFF00000100FDFF03000500FFFF0000FEFFFFFF010004000200FFFF02000000FEFF0100FEFFFFFF0000FEFF0000FDFF0200FAFF00000000FDFF01000200FDFFFBFF000002000100030004000100FEFF05000000FDFF0000020001000200FEFFFDFF0200FFFFFFFF02000000FDFFFFFFFCFF0000FEFF0100FEFF0200FEFFFFFF0400FDFFFEFF0100040002000200FFFFFFFF00000000FDFF0100FCFF03000000FFFFFDFF010000000200FEFF01000000FCFF0100FFFFFFFF01000400FEFFFFFF010002000000FEFFFFFF0500FEFFFEFF01000200040003000000030000000400FCFF020000000200FFFF020000000200FDFFFBFF04000200020001000300FDFFFDFF02000000FCFFFEFF02000100FEFF0200FDFFFCFF040003000100040001000100FFFF0300FEFFFFFFFFFF0100FEFFFFFF0500FBFFFDFF00000000FEFFFCFF0000FFFF0100FCFF000001000300FFFFFDFFFDFF0200FEFFFFFFFDFF00000300010000000300FEFF0000FFFF00000200FDFFFDFFFBFFFEFF0100FBFF030000000000FEFF0000000001000500000001000200020002000300030003000200FEFFFDFF010000000000FDFFFCFF03000000FFFF03000100FFFF02000100FFFF03000000FEFF0000FFFF010001000200FFFFFDFFFFFF0200FCFF0000FBFF0200FEFF0200FCFF0100FEFFFCFFFFFFFFFF0200FFFF01000100FBFF010000000400FEFF0100FFFFFFFF0200FDFFFDFF0400FFFFFDFF02000100FFFFFFFFFFFF030000000100FFFF0100010000000200FEFFFFFFFDFFFAFFFEFFFDFFFDFFFFFFFFFFFEFFFAFF0100FCFFFDFF0000FFFFFFFFFDFF0200FBFF010000000100FDFFFFFF00000000010002000300FDFFFAFF0200FFFF0000FFFFFDFF03000200FDFF0200FFFF01000200FDFF04000200030000000500FFFF0100FFFF0100FCFF0500FFFF000001000200FCFF00000100FDFFFFFF030000000200FDFF000003000100FFFFFFFF03000400FFFF04000200FFFFFDFF01000100FDFF010002000100FEFFFBFF010002000000FDFFFEFF0200000002000100FEFF0400FFFF02000300FBFFFDFF0000FBFFFFFFFCFFFAFF01000000010001000100FFFF0100FFFF03000000FFFFFEFF01000400FEFF03000100FFFF0600000000000100FCFFFEFF04000100FEFF0100FEFF0000020000000200FFFF00000200FCFF0200FFFFFEFFFFFF0000FEFF0300000001000000FEFF02000100000001000000FEFFFEFF0100FDFF0300FDFF0000010003000300FFFFFFFF0000FFFF0000FFFFFDFFFEFFFFFF0100030000000200FFFF01000300FFFF04000000FDFFFEFF00000000FFFF01000400FDFF0000FDFFFFFF000001000500030004000000FFFF0000FFFFFEFF0100F9FF0400FFFFFFFFFFFFFBFF0100FFFF0100FFFFFEFF07000000FEFF0100020002000100FFFF020000000000FEFF040001000100FEFF01000300FFFFFFFF020001000200000002000500FFFF0200FFFFFFFF030006000000FEFF0100FCFFFDFF0000030004000100FBFFFFFF09000200FFFF04000300FFFF0000FEFFFFFFFFFFFDFF0100FFFF010002000100FDFF020001000000FDFF0100000003000100FDFF03000000FEFF03000600FFFFFFFF0200FFFFFCFF0300000002000300FCFFFEFF0000FEFF00000000FEFF0200020000000000FFFFFEFFFEFFFEFF0500FCFF010002000000FDFF0100A3E045C8228A29A68FDC47D9834B1832CC0677CD523FA33F +ct = BC81DE832345D31433638C87FBADD92050F47FFB96F23F83148ABF926275475501893B51A83461A3765196A852157821FC41388C500B6BDEDD3017B72C20737A4CB1AA11B563772B811D7DDE453DB7E6002D03EEE829239FD26B0367FF730AFC9AF2EB181AAC9B05EF553C7BFFD1FCEEC8484FA4C5A54F6B3DBA9D4B9E4DDC71729E0A8334F28679625C28A6B1AFAAF9CCDDCD80999680676A0434933F0BC71F1FB99D02D627DD036E75B9FFF1DC33434FB6FAD89865FC873B76A33D48C43D9D441703B91F7D149BE358BB49412F9440EB4934020A9BFB1877D4A2AF2039768903B0A6E071BE11E39E6CB8357C7652ED814D20BB3B5C54739F0AB72DFA42CF052C74AB97D7AE94794AF88A1D97332BE2AA8EFFA1B049CD5CB4A9AB1A4571DD7ECB869169FBB7AC952F93DFA7FB630B4EA15FE42D98F6E4EF6EA4F430A5140143D6E0C50874D385EDD2E97D167E78CAD6C2F19DD8B997EC1AECD7A086D994F034739F5F571430086436864C806F9108F55E83AF980C304E6576CEBD6FE7137E476154A00AB5724C3B95522ED531B7BA5460CD644FFEAD0E3E012E9E45633D78EE72E12DD807AF0DA45DC806D4963EAFFE2A554AE758FD9B7755537CB620C2172A1001D62C3873EB1AB9E16F3C610304363F77D882A3882B5F1431D4BCB0908930CD246D3048DE92FF0EAA8529BD1EF4179FCB609A2AFF9F0896E3A3FFB9A7B6091968535BF5AE2B1ED22EF522A7A7F0F67F1368D49DA7B2EC8CC94F59678E7D6AD5A44911D576EBB9847089F5784D9EE13B35A5689BE546363A2C26383B83E6BEA0579B62C4CE3F2632A5C93318867EC8E35402C27E99B235A9126AB3CD7C9AFF017ABACA737D1C796BEB617D1786189A04905817B768B97448EF7FB1AD76F84143E5A5F31CC913D8E189443B7B460AB3E79DF2F40F0D34543CFB331876AF280D47034B58D93106D127226F8E99061611F42B9F97DF09B5526193B31BAC0E2B02CB058E779F44EDB63075161B5B4988B60A85AB08E6D3BEBF8D817B37A47090FBE37E6012D0AF7EAA40FB67354E28BED7DC6361821B0625F75E258C6F3694AD8C8859D606A8FAF1D971ABDDB83EE73392982B6ACFB534E6F7C38FCB2D4663BD82A7261FAEBBB8579DC3757202A62E3ABE583F553F32F03EE8BB5C8EB5DCE232E296B65EC76D5EA01FD1DCB5C856CE0BE5A71D434CE923B21E971DC7F9C9AE40EC71F3F7CF6941D3E9FFE496E32BD613A781918911D4BB89906408C18AFBE4DA76E30CCA14E223FDD28783C7216248B63C6AF056ED8AFA3E0E314B482621D803CED372C9924593550E15384BA9E1A96D75DB01F5D96783FC0ACC88ED8E5E0DC54D2D1CEB57DAD8647BDB11F6C169635E2D64FFB8B15B0745E452B2C0470ED24D9CD58EA2FF18FC431C5D8342AA6E6977E442CF0A229306F066C7743A16B1006890C7FB6309B9D2073313456752CCDAE7BE38F4ABBA7BBFF2CE933F314F1E20CCDD94264A1AE87AD585040CCCA4E5E4C5DE3ABB9521F27DCC254D5E7E3A661BE7B0A112F9F0B5968011A47B8901BE2FC93E8F3548377A82C533969B59EE7AF481ADF9577992EF0EB11FBEDE93878A4CAD68C8F42DC770C63F5B8B4A173150D9802451C2019B6D72D44333EC3A09E3C4FB86A2790833F522C91F9818CE615ECDD2F010EC402FB2E86C395D081C2C8E1FC3CC9AF6E559FE51A97404722C8543174576D4B82BC186455BA93F41B33C87C0D231EF4DA937EA52619A6239880587F5186AB1EB1D1D4509E017DE9762848B2B9410658C51DBAE1159F62992D41401B2F825176585B33297551786E63CEFFFFAEB94EF2FF3AF1F53D80368E7A637E2345ECED2946817594B72EA5ACDAAB77DEA1AB6349A65ED45A0942EF38E5FF37005A6508F3559E9561D0940529CF756C1779531CFF46895228B5412F929A59F9C62EEB6BA8A4C0F37E6E97F209BBA2C7A45564E7EF0945365DFB32E0849DC40C94FB76A13AE5E87875463A2DA88C985667BDD8B9EE3833D5D5AD3ECDBE354516D3B29B5B41FCAA84C185AFC042E456231B1EB656DDE3F7371B824CD4F331835ACA3D95FCA9203BBB80F6AC442F7A507874C7ADDD412E9F40E8D9DF64D744C96F2AA654BAA330E1809315DD1B1F908C3B0E43F18E12901A4D0F5803C72D070BD3C40CA9AB477E842AB45BE92F037AA44A37A8773B27D30E7F8618AB9139A4CC38E2CEC570B0D161C1B742E64AC7D885EEA40749E43D63F15A95A220580E13BA688CC0E17DB944B33FAD62ABAA229547FD1A3F71CC83AEB9E207D8195A5CD4559D28FDDFAED12EAEE3302523551CA70E4CFA3BEA2735477F1E12AE502C7A7D2E155236E8922C4DE2D3196C753FCAD1B5294C9A85641711E4AF87FC7F42F37362B2FBE81F573F54566F3FABBE6F3BAFAE1158696166873EE86C4C62ECBEAF2387B66E619E36EFECCF1F2F5F8284E9D20E8158CF5A390F31E9C4346CA78878242F6E59B5FFD5BDF166E70ACF3A5CFC0EAFD32E3EF13C704D28B77AB2CAD8734F1C0B8D79190A43761940040998E804FBF9CB84E92F2991E486FEE5847D81BAAF02E1D25262C0887179175AE108700C12D71C70196954B917996620B7A661B0F6B6038ED8B7B2FAF6EEA88A35A7BEE273EB31BD27972E3804BDEF51798B4B6B9213A10D6E161744381BDEC68A61A5EA23BCEC8F64C2A23395374E7313C2BAAD3163A274597A5562F4AE22023929799A015D1ED0064AA69E5E4B0E08872B943E43413B630406C1406F51F1159F8607D28D80B2248389B00535C83FAB6C0333E2547C52C9B2394347F0191A8C42898C11A680EFD85EB49C4C33D54342933045644EF3B7BD97A926FD6FD65FDC4BB0FB78249350606C69673140F9955344C1532EA014794DE562003568C7107A466E2F80C49513137E1BA130241F52209AF2D80BCC47B08E9570D8D70F1BDA7BFCA3D584287C5A19FEBE7B6297CCD22C4863E431642AA63E7A2F97D3B10DCF01DE493169198B5CF8D17E3DC4D43C30A1085A4102548183DC614BC8B8850B3F9334BF4C02D6DF1D2AF88E463BEF6ECC12C032124D6B0A31E8DA6F726FA31AF7292077B8AB99D619E778F6D7CBB77CF3E2B61CBB6459310E1B89A4A85E7757D57BB932464406CD15508F31D2BF55D7090D7E0DAD97FFBBCFE7D7EBE0869492F4B53536BED8D2FE4028AF2531CFCB0A4C95967110BD61E3259D519BA89C0464187771E1B51B3C493B7E3A6363D03C95D57BBACC944610DDEFEF1140629AAE7AF3A339C0DE2EEE46C16D7A3BEE4F0C6E0243324D5137F8C122AEC7038432AC0AAB0111FD648F024C59FEE14AB97FDB0F9EA4BF896BEC4A31C9344737FA13D5D30546ADC837E55E1FA1A92841DCDFD7E9DEC7036545BAABED58A57BC1AD7B04180E6F91871A01D2A9AF05CE07BB64EC4D51CB9FF9E592840A456432E6E20EC877F07691B8E423B3E9537757E192FF566FEBB08D004EC458DDF2B23738D05FB801F500CB77346B2E694557CC730412A200188C44DE29590F870EE3019D42CFE7B9F85D12255D177511452C48AD202DFD8601F76382CB294E754435F9C005C9001A777D0529522A006FCA58942186DB9C0C4256711A9135747FA6C0C1E35DFD84D6325F7A7726CA1A1DB1F0045C74B67D6413EB1F314A2D04F46B81C356A4A5C03C766E9EE6B92E5EBA6E3CB972C945FB48D35EC78A9BAA3D8F784297FB2D61CA47C7B00F3F778764F286B85785E0EFC3548722CAD0F86907537152ED673E471C48284AE50EBC429D78693FBC358AFC888EEB7B1F9962B04F5679B46BB6F0D8B135C2DD8E31CA57F8B4AD7EE568AC7927C164F16518ED1E781034369F011C737D272312BEE15A6B8391E16394DB8BD236F1E932758098EAAC62DCB09977C8F84068E061A35908F31B5788841674076881AD02DA4BC51FA68E23E1EF76229615ACA947DB8D26540517DE4DE0528F64E5EA0CE5C1E67771D4D9D606C9C285AE4A0E8F230C15714BDDC2562A824B91016B461C0205F8A0F89B3DF2CEEFA70F6D46E6B351D84C5CD556575D5C0C4F1C6BCD1683AEE1691F94FDD7E4AEF87FB442F40D71439CE4BFC10E17DC4F40CBE4776E1503CF068304DD40F0DA570A323F3AE20D5E0F6A36CDD88EC525045028005AF729E8E447095817598858952CA194810E437CDB6D0B02C0D7359FBF5474F03C2097A8B16A345A8EDC5E65874DF49388E51E9192A240CAD366F6FF730EFE291C48062B0C0AE99FDDFC913D9B94A33D65AF628331BD023A37393E595F33DCBACFE2ACAF9560A266CB7C3591D6CB0FF96B9050E568FB08120CE246F4BB81DFA191C94DF40A2B24199606F02CB18B71047ACC6FFBB186CAEF5B61094F86FCAE388F279C3E5C777C5844E9A1B72170C472D655FADBF13030E0840D9D2476217871D0F5C0AC57B9DCF5611FDD711B05E49451343005CF220BFD5B6CF235836B67DD38DAFAD5B482FFEFECA0E734B180C5A7C125002E70A41DFDB24C941ACCC26FA3E534609BCCBB8577C38400D9406544D150D9E9F93A5C383EDC91EC44A2F511151223371B208314E71158B039C690D829126C7DCA5BCA119578F21CF7A1AE236133E7A6D009365DDDB048C46BFED717517AA292A364D6F15DCC85EB0A9762A2DF5FB47B0DDA9A98AB493BC921D525BD5AB77CD3333F4876EB2376980F028C90757990DA0932CB6F611340055A06387A8C7335AFE103A10F45EA5C43FCC6025B85F1768D4D56B46DF447D94F798DF3B13F992DFFCEAACFC7544547EEEB2F1AC6CE6A14F3D645266BF165912FE4D5FCF3897887E22515BBFB2FA249C52C56B63B2210B39B640246666E66237DF3F41E1538AA31B6D8C68070C776E6A6C26220C7BD970D88743E61E913F57B0B76A12CDE4D9F53B22A0C6ACD28771797B07C2BDEC5E629E1C5A6E447E45F4A1CC3FE10D275F6994BE581A2765F05E9611D7501EDD46F9E547C0B62BE504430435988B2BC499A48C33AF63B7208FDFE54F2ADE4FD5286D75A8B787F29198560826EFB23598A57FCBBBCEC721B2248D48C37F7E282DA34D27E87FCBB9BF1A39669A58DA2BAAFB5CC6B1995012248C259DE0603FE5114210DE580CD3F1A6616D070AB6B54A7BBBFFB5EF4521E40E0A757429D2D04D09AD5D239B044FF88573C5313673FF56ACEC48F75C1AE89A128E0341ABE74606A0A848973723BB10C91162311BEB0FA84467F0F3F19A97DA0C50F5274899276EFA45181D82672B6A47F0D8872A0713B8F9AD981CC5E58398C9147C6DDADBECEFE4CE79144263331931638B24A84897EDCF0C4950365A3CC779EA458E6C3AD63DE9080A3068899D74457948EB3715B638B99CB9083B41DD05A199D446B9AA803EC25E08076956CC670E915A42D2FA927BF9AB00081931EA44009BCF84A23C3F3A66FDAEABA547063FF88A98E7017EB2F965F265369D9B9AC3C4D59D92EAA0D0F82C0AEFC3E295434B64AD16931064683A5E449447604F645C38A6B39C0638DA054226A5C5946F46E274EE3498317D96E98857A85A9AB026B06BAA39B1EBFADEC9E2FA0725FC9A8D19D210A91849D91CDD14DFFB1A75628CB12856894030C46EEDF3A6D96FBA13FAFDB4CFD4D8790FA13107BB657983E0DF7E302671B0002312984C571690547BEABF59BA0E40E2F8CA94D6670379F4D683E9079F9AB32B69CBE3E0820F319C7BDF99C080C35E1995A7196519340A848C4995C512D1364535310EB73E1D47706905B0EC1C2F17770A7663FB5FA8CD40D3E4FEE119FD9AD7E24CB096FEDD7890A454D8B0FF98785DEB559DA521428FC37E3720F748CBAF137D48BD170870BD999B4530D14461B1C5EE71069A513CC9223291373532BBA3960BC79744CF40BF37F29428FFE236B710DF9CD9FA3016312B55B116410A1E0307B1CD0BC2B8D49235CE2B5DF279D526F0EA6755CD70674BD19212994CF2E431555C53421E24642BEF7D1A992686E295008674E4E69460BD0C722420996BF7C8B30F08C4FBD2D537D1125E44D379AF33B8284A4B1F4D60F0CB84D920DE6131BD2AB154DC29470E46FFC76C957228EB845DDEB99569E1CCB098DDC1862D28C061090271D587112599DEAA34FB2966EBAB58A04B2831BD8A22F41E8F7A88A6862387D48090DF71446C7058B211F3313A80D7A214D7D9DBDF6CE2E34B65E5BC617F924B039FE0F91CA8EF0143256C3B7733E45F27EA365AAB233BFA7996212945151F11C27B45521E7EA0CF5D4CDAD1BC723E335D0E743A4749DE4AFE3EAF5C242A081B9C2DD7F930D77E39D4B517BA5D98D6071AAA9DD5166B6E65DA5F64F54F800405CD39EC828F7597A7C8E8899EA2E10BA35D349EF617584E6790D55301986FA1FDB2937CAAF6ABFD693E47D0FFB4026D7B0D5A09358853E32D9BECEEDFF7006A9101D861FAA35793009D3BF89560A15821DE88C534486C22A9A28C9C237F083282DCE1C5E00E7E4480F23215BB307DB7A9517387D2688929D759F58BD04F573A7D578AF1D1CBDA58A92BEEB2D4CCC4564C5E84A5C17FCD36B2127EE1FBA875C8052B523FEE94437F2C90B617BE756AE6AF63304A0A2F31F1301D8228AED12E97E34DDE364EFFBD84439A7D181A3B0728FDBCBBC72155BBEC1AABF02D064E90D6CCBE1B0E89CDC0116DFCD669D1FDF07F2EF4B35931ABB8BD4FBB8F5BD3821D8E14D5D455882DE709643D518DC9A1831C6FCF6CEBF583713397D2CE5D16B659C1D3C357BFCF277ED06483F1737AF230E96E93A7EC9DC6582545B70D66BB0B38436379AA25A1794696B040F99A1C5E98B9DE689A42CA126B965CD0CCA730136B02C7BD6090D2EA48C230557F90FCC952A9EB4067213175E2599D051266C1AF61A466D61C2D258F8AB8EF1B0299838EDDF09C0AE9FA25FC69FFFB45B507BDBE2076619B65F2B9A90ACFFC972CFCF8B1325E338A9712A7D17B25AA57731A6CF0823E66F888B46EEE656D716EC1716EFA7361DF6AB42F8CBF93138F21B9DE8440EFF99B4FB04D6AE10FD496AE2F7364C3924FD27810730C51D74B990DDAE00645DB08ECD71F46E2D7861D3877F6A2D86873847718B5DBF52B9A9A2F95B2136BEEC39903DE3382828F971C20EB86A662C4C96EA01F131F4EADBFB516BF1CB866EC30A7E1EB1D8960B76443BB2FC6F6A06F7B932C965900CF80572DE0051A0085249F81F2FA26BBB4371B0D94560548F99BE56F13E5554C24DF3FBEDB953DA5882B54584686903C41005AFA434185BC042FC9CFAC97E6140A011DCB8048CBACAB9D79B31B65238D10FEB9FA21F3D01479B8C44D3CC28BA54C026384357404263640E7A934FD71E0B1BACD8812732CFE61195033E29A368FF3ABA8DE38471D0AB19C15499B2CBBE6F9723A90E7B32D191CF1B9565570D923AA3764BFE94A7D6A49FF792F75BE76DD64D073E80352EFBB827BB3C406833956DD960F57E70891F02A4598E27617F8B3DF8C704D2D9E43F51156D699EA32F8DADB5565FA9FD9124205EDFED9EFD00A6734268CEFAB5E8B0A731553BEFD0D3ABB2F346605E1B5E8D9308CA4AF58E91544335B880E14215FB0124A3C62E01BCEF86607B7C7CA2593F13D2CAE725D735867E831BD458A12A9455B9281CA3F6D6A52427F44E35C1A51E2718F1BBDCE5E94123DE4C797D9EC85F826CC56CA32AD853B91A3E2B5103CED1E7C1B88A80B6B14BF38E410A0B32F6BB61442EF545F75FBBA413B52062E3F263B6FAD313872D2B48808A7A140EFF13424BDC399DFFE5355B727B571C71E788F4A1CC48F793668F04926B53C79B5D4BB4BB9E8498EDA374D01B8BC979AD9078B1AE4123FD30234740A663F5F0D81009B8BEAB5392CC4515AA098F1C0AF43295F7E3D9B488F2EE3732924CA9C16333854D5040E289813D1784076E09204D1251A1C3FB14B0FA6689352C786E261373AAA0D9E072EA8A4A8C58285F55EA89B34F798C267A6E92B48E4C1DC15D77CA382EBFE3C15D80515A8C4872CA62DAFA802041AE488ED7FA7696C0948FD0D7939509B4A8CC79EA431A04CE9F091D993CF2A36E01410C36B1C64775D31B67BAE8F45735C4F018A52497833FA7EB8C9CE042FC19CCE14E6CDB6DBCF0DF14228BE8E0EE45BC1F62EAE8B1493B5371EABDB1A0DB92352791E2FABEDB01B9961B9BCD2BDE8A6CE4B97E6A625EB32B7AFB960495D43454026AC06C00BA8781E80E745BB29E75D5BEF5AC81D1FCA6875B450F11CD07CE5465FBD0A01F327A198A4A93693BE411D4F325E154BBB1E0B956740F63147744D36663FB5CDDCB4D8B6CADE3595E8B3EE90D8D1BDC3AC41C77CB62D67FA14705964C6BDBD8A25C254EA29E7AF76A9C6F8DA6AD50BF7D74B4C59176D3E1369875529B8CF1EE8D16E8A505CCAC3F7E7CDAB96C06C59B67BC5427D72570C285B7AD54A7F60207B0532EDF44A614B36EA88A1C26F37613DE02ECD0F368ADEDF8EE81338147146E644862D0E84AFE138FBE2E44D552A08FF86C916A69837BC104A0A8B6FF1371B3438BC53FB635257182A5E2570A420201D107AA87A990A9681657A4D034FD12BD4D214C11332017324FD441CD12B2BA4D882154CA68A142E14AC6AF5AAA53ACA1C7D8036E20BBFD624B7EAD383B0CFF460BEF60E711ACC07137AB50C854EEFB9E3CCBA3DD943471EE440688014AD85D346E8DD386820A93820F11633CEDA8A5A9E41CF0F9E44A68D14D46E6911CA0AC112274078D62ADB0A74E862D6AC12E9E2D543DFA0074D24CF325D81A3B1D9BE55D4C1F3A416BD867BFCF781661F8834CAC920A206FBBFB465906ACC40FCF7AF1773CEB15533A5025ED5B446B832294BDD11FF305232DD59037EC3E60BC4CA4ED073D649F7015C20E6B5C89E57A678AFDE7FFE5C8D5992D810A6E796E2BC69CE6EF443531CA64F8AE9104A8D474C1C96C9E8255A9DEC243D294B15C9C3D262B38A68A3A53A762C6F75A76AC85503F9A9DABE7CEFB5F9057DBA49B2579061E1F257385398C486E6D3B353E450F090B726A6C5B52AC3AE48305A487508D88900F9E4FAEDAEEC83DF9B58E894DE209DB5FEE68776F7C305E301451720AE4C9E062242A5189AAA8475422DE770055010DC6FAD606F054EC29CF9954FCD7372FDEFDFA7CBC032F873C14EB29C73E245DA980FF709B7C87EF40AE73953C6ECD4F2A126CD80D3E393758AF22EB6FFFF4E6159088C25BDF7EE476EE19AFA70EF55ABDE4C733C914284A60C36599167F1AC2767207D0F470B180992964A42BB26742E64EFED6412EEFA2156E509C297807917E2BE55D4C73D59375273A83127BFC6467BA2A54332744D50A03BE171CBF0A05092415F5A04141E0DA0304A23221422D1F7347A39F6F0F3625D34207D50ABC7FD602CEC9EE115857D67F20063FB57D9069F131CFE977D68D0125515012AD689F4BC86DB15BEB134CC951878A0CA0C6AD6EDA7394A72E5B44F718BC413D3311B0A952386ECBEC20F03276A147D49155B0BBD13395C8CB972115EFF0AB6CC2AE4B01F5A02B538AB7155E58B8A1BA3F940090ED29F4ED053221CF22A83BB1A1FA3E534AD2F72F5A89EA703D7B58F314419586A988373A7B131B18D130BADC24C080219B02693FB94F6354D644DB8C0659E5AD391B8F9A7D7FF5FA154F407AED6FA1A09AD18B764345C6C84648F64F8514058FB9F117FBF5917796357765A7C75582C723F3B8D3A9EC08F7F3B91868874FB2F4547CEFF202B165FD33D87A99C699AB606ADBCD7B8A60FD381AFF535F52337FA97AAD75600E48ADC9609F6A3E7F0511DBAB4FE4B29E8E89F48262A74E297C4012355EB4852391253E5E8849D4EB930379BDD8876488B57D195B131748284F94143A96CAC66E6CDB4B85808614F688DC38C2E045EAC339E0E254E02AD19DF022C6EDAC773A9091A3A2F352BC3F05749C4E9C765A34DCF8507FCD6555FBA15B7A4B409C67A332299348E96942160FA3EE8162F22E0444961B84CCAF7B923713EBBBD85AABAAB1F0957E0ADBDD5B45B9BDA6AFED5738A16D487BCBBC836C23C10070C07A1C918CFA9CB65CC7676628F22895F96816F4996FF80EAF0B6B51AD5EC947DED16EB5B3C6D8DEE148F0E557EEE6A55A876728B139060C7091FE7DCC9C2A469256882E7C7A5D9DECD0155561D4EBB46ACB2FC15576626196F9E150C89BD0D268A82D4519EF87A201C1F5C41FC162900183D281CF62D7DCAB7983B7C736C7EB7B460D8BCF6655D398A824D544607B1ED60011C1610117CE8500910F9DEAB24A57644A26A492C61342B2C0CCDE1215B8D18BE3697E1443280B9CCA9900E94CE1B00C0CB4AF4179CAE84ED3609E8B204D7D88F17B6915789C54995A846E6533E837B207628931EFEE441318C0BEA66DB1335E94FCF57F079DEEC8BF85B976A40331B2AB6D71846CCC9379EB2C4C9BB3D679BFE01F40C33E61A62C0D1820E678C50E121DF9E25020847D4175EC58018B9B07FA842FC872F4D7D0D03965F316D18CAADCD83FD48B8B7515D0CC289A6086549AADCD1CB7FEA0D76744BE04DDCFB18DD2F486DBEFAFBB8DD0AAA512579ABD9E7DB1D50E6E30C2C92D581692D60477ECB3D1AB195E2FC3A9BEF56374814DEF05D308F05574B74E4A2BC645AB2B5DF8FE38697350329F73B5C624982D987310E4A24B75E452C1D5BF12DCED3D599F4AD9AAF6C540E3F06D7BE5EF78A748815073FD046C22F7AC3086161D6A69A3DE2C378F3644769D2839CC2B902C5B24ADFCE4D5A0B168CEC3D6E3B28BE4DE8F5C92673C717A4B50FA71BF5E7B46311CFB2B11C71D58527D4C6F6CEF0BF38C70164E7078E5F028FF8E5D294C22709661F6503659A93AE912EF26B3A51080398737A9FB67C3F71DF4F76FC850BF3EF04304CFBB19E7C91EEAC1CE6BBE71FDDD1EBAA394EB32A15C6608596FD4C18EE9B16D49C2B7EE5D14518E4A0BFA35A152BE66B094BEDD2042EC1E172261A791703A49550DF666C7105F1ABBC7576EE89F74D42EC6DB1C65CA54004158A2F61A996B2DFCDC3E5331AEEFE2A975A0D75A99D138BBBD453DD012F6F88344BDF275A2F9D86F25B58A5F9CE864CFA7790E2E2B086AFF7341A90FA29BBA66A79AEDB7D7D20D27C2F04C02168E0FC07F9E3D72CAEA6F56B70E1D224C9E298BB0EE2A512403900D14AA83C9FC1C80687F992B1C8D2F4734B2B4C79320EBC42582D72275C1DC939D15B9893812AC406B1A804658B23D0432F0DC342EF1CE2ECEB59215DB23A2884E66F96AB8DB02664916FD9DC422945D07805E2162D79C379071C11D6FE15F8D0FDBF50B7AC304D789D3EA9765377CC183DF23F6DFB4888A8CC357F08CF88EAE31465C1A9B36A281CAAF99DAA61F28AA36BF0E0D526C8255731E004796C958CAE6C4A31EBEE2271729D4E34547C9B7D3654BCA6973C4DE33FE94535C44A6147F49C40CC5E557B565D2DAB36336D773C86F21FE3DAD1363C2AA6D76FBB88A0BE6D58E66E59B4186FBBA95F6C9A02CE647F34011FC0DD781E62DE57AEE8AAA830BA1525A6066954156588717478694FFDB02FBA933BE77A157C8D1317CF85F0B75345D3CAED9442B8BB6EAF88DC3F38FFBF62068ECD33FD6C814E773B4A3B9F656EAC076D7A4B44CB33E232774E92670413A20571507B5776E27C250B9A2FC7144DDF97951B82E30FEA0E383D90488BD7423F82AA4472E05C94C4A93672D687BBA5D13EF3E0EC3A894D33E3BB40DA2B43D59CFE9ED633640D0E59E67ED66341136B9B6B3DC07A4028BDC7E848B3E9E8019061ADAA33B265007CE9B033BC307F991C76F53206844B5447E44CDF2B97E5670D3F9F43FB41E9D5CD9AF001EA84291F5900D47A9ED18E2B98F76E1EF423438CEE1EB61E340E745882CD98C95A971E4540808846A6D9CAADC5EFD2D7E03CE89D849262F8564438A772666A95032DB33B033954FC82415321E34B8553E2E9E19264760853D671119C2BAB8F6DDBE4FDF4668CCD19684B1AB9A27CFCB4B11CE8EF482E3AAF8464596A2FC24278CD0A68DC450BD1F6EBEBE2A9B036657AF44245DC7F8989ED0822D7F7A469EECA958583BD70B7A5BD639C15B06844C0E40605666082FF2653B12B30DF1E2F29F07A4B08CF810E675F89CCE07B8181DEAEE7CF51E3F744ECAA1C337F41EB6059A716643A0433088E04E2263F7516AC8A596D2FD455AA0E69CD0821B7E2329176A074F887B07E62AB4EE0D25735458C89325F60D6A6EE919E5CC1F5AFE55D0AE218A879914FC6B3F6C95204115B1B4065D9A086F8DB3CF94EB1E4F5ACBD9FA4A1C6A084DC91A01709DBAEF293033E2D398937D6E4405D414B7002AD83FF01CED91621D052873A160922E6324F025258E3D29F8619E9F807EF9F28E4E4DA0158670EE24E2AA38DB354D35353EA51D0203FD813FF9D42269869561364A00A5449EE4A956FAA6C49F4783A55B858236AED4B0DB2A6C7288B62F2C7D68E6B861A3BA41ED81A1D2317E75D10E5997B102DC35D72F82EF38E434796A092E42D2548D1EB85D69B294FE05B36616AE6D0DCC925E37A62487BB2B1B517B3F9B4BF808212F0139032C05E633A78641B98CEC5A6F3F5D54658BF4A731F6E50305FD8403C63092D3E1B0493475CEBF1ADAE7D5A5FE041FD69A55B08BDAAF9918A62CC3957F1898F5ECFF29A9D38E9C24A0A0841A129C979494565A7EBA4FCFC9F8ACFF76900D985BDD6C458B8A830CF471AB8FE28DB68064222A1234F74FD9C269469EAF07F5D982F1B441F6E33AA112819C3B12494ED232ED5D332FE21C698FF5050F0D5B21191A27F08CCD13CC205EA928F2541A780A95BD28A1BDE236B31855497ECDB20E123041DD1852C3DB435162DAB53DA3149D1E4D025CD6042B6D7678B827E3EF411835ACCC962894C96B1F55DB84B701AA1198A660A34960420D244EEC4689C8D5E7A1C6A628CF9A5A53433F7E03F2274833FD7471BD1C6DC579432DD4B4C8813CD5874904219262796936CC961359081849E1D5360764694C3E959766C11D1246CD5352C4FD54A63D08AAEF1E47C67979235D09FF596C3245DE67A06D0CDD43136D85C53E001854EAEB6E71E51E9EE26938F08A08E27813C098ED0A1BA2D3DDCBD29689C06C46B4FE708DDD61D9A88678B4DA8F65674DEE4E5FD8CD10D1E39EEA61127F6803E2F0E1BBE196D852B7C7EF8E28C1BDCBCF8D3168E019AC6BDD78929F46239F61CE6B294D43B877BA095881E62128001918F221A7D5312BD553B309725552022E90EE84ED286B14E140661C4CAB60EECDB09552DD033DBD33A9EEEEDD38E14A39EE34CE1C9DC40840E54F21CF12E3244E2AD18989A0502805C0BA4D56AF51EC4F175D3A518D1CDB350A56035C4134096F47485C3C09CF6AF991E4FD2726ED9DF1FE4B405313DAA86C259C00DD975F29AF753C79EA62CEE5F64B8B8FBB20E2ECB27C2F0C3B9E2FF58D7CE76161010C1B36F5A7F47BEDAEBAA1C230D48966DCD2CD5592F5590383809C33B090E46E60B6204CE85FF616A757B3A77C338A1F35DF3A0C96936CAFA14C7EEF6EE148AD3E34F19C52E03787B475A32653E7DC287844870DA2E0448C67FF36F147734152A2EF22D40C225E0A63C0556AF6F67866992287AC713DB13EB2D045F2A1597C8EC4E045BB24E25D4FD4688C5AA82FA3AFDED54A74CC0F597FC1A4139DA02F5180D6F37F24D842CB3F6A7F0DB108A4A4610DC97662FB859ED4926959BAADCB20904FDB58F34BD0F53D3D220883A40889F2917EDDF1705251A1CF9AEFF4CB5CA7C5D5B5F821AA633347588C2049EA9256F2C228DC33FF5353FEB55228BFDD1F4506863F2FD28E38B94CA8A5750C7CB98DBA21B3191492D679FC5B0B98F3684B8443D5E50F47055A4A439A8D65D7FB01313E47CC584B3CF354ED377813D8443F5CE7C6EAE359031872287215C5F8D910C9B28E0EDF5D6675948D5A1FC514866C3F71938EEE68F02E5BB6EAC34724985F8E940555E366FC7D990E1CE49083CA83B8CBC1A3EBD475EB5B3F5EA691D0A707E9A96BDB27E00834CEB36B4AF32390071DF6B4217CD8DEA6C511CA3EE158A09281975C56E2E6C6EB4E2D54BB940A4B755C0FE440D78DF9DA2411E33C8065E28236B489DAE3F22B016FE0893317A6804009EE1178B47E9A243EF818159E5B5A17775D36884F57914D3EBFDB98F31DF947A947E6C6C0F169E40CE02C74FB29D2C8ABB6C00BB7829C9584998F8F878A821697F50FF76ADB7F9B09D6A401DFF0BE2104A01199ACE728688C5E34DB9F8F75BEFDA1EB00BD8587A4C5007E16A521B84FA8A2E57E1D18B51795A292500B93A19D08641D190CB2CE32DDA8D5EC21821671984C613D43699906762E07687C92718C950BC3845A3BC24A627AC846D80652C5CC4A39F84B333C2BE885EFFBDC2B33F49EE85D0168B3CBB6302B89E1A692C405C96FF23BBFD9C023ACD347BB9DEBD1A888D48C3EF4C04F843AA525EC1A096C2745A06833ED432DA7A1AEF957922FC8C3E5CB217CE09E30782FBD0C02A0792D212BE83989AD0776DB00EE9FB18FA6A99DD509E913FE668A3DD6C5D40A0FB1A695E8B35C7485CFAADA2BC9AB8DA874355899B1657BBC7A72D464887E5CC9B0C1EDA2B0CC947C377AF9F01214216B78C962CADB109AD071404D5BEE06907AACB6370C6D905ADAF2A1C9BB942F388DC8188AFE7E7CAD507CBEF2DE463B9646D31BEC3C7B41761015DF6B5E6D6C5E3E7702DC22C5D3EB775E2407440A264BC11C0DCFFAF817543C1B95016FF1CA06B529498E0FF32A2E9D122C1388F7D54358A5DF3A33F7F484D154F417EFB7CD44C0F50FA6358EAAC8D7BAA3481016AF9A05B01838CF1545CDA48A3055D02B29BF7540171524F860B0FBBB8D669EAD626FA01D8815AA86F86621E2623E471F81F0AA128FEBCEAB283EB427DBB6397D7C3CB7B950D81CED1481CD5C131FCBE25CFD85A2E62BA8FD5C86B11D298CB08B7DEFA89552B434ED65C24F9DC512A8C7308A294DBCC25FD715A8FE6622FB41194749FCA82A4B802FDDCFC8669FD944D28CBDE6A9CBBBBCB124CA4D1C2CCD8841BF1656BDD484B30863C856188B64E8BE1C5CC05CC886EBD395EEE29C267DF01947E1B9BBB23D974D5E62D9B8E923EA5D89ED0DA737BEEFBBCDDD1184D290516EF62C13467E141398DEDCF61A035F3894E40626A3EE27A76DE114BF97B987832046E136E7A6DB41DBC94378684B379C21C0CEE5ED327F71D28B8DC73623B24F2A4958FE6A78703CC157FE4D12CB506B8AF35CDB8FA159D8ACE89AB69CD369770D05A4A793040AB1742C7074B1712D30F794B4322C23BDE59E2BB696558CA97FD97943206DA11FFC950E92BA4E2ED543CD696600E85BE52F7710105C6A91132CB85170AF4BCB8D6ACF2B0BD49FF12DF9FD4F027731BDCB4934812672A5DEC85D8C0F999367F287133531811F125360793AD5319030A841ADBADC35190E1A04FA5690FD1AD6CBE285D2032653151CB4080CE8A04DFF2D4AEDCAC67FD5EFDF22D3788172B54E67DC2A613AB8CFE64BE94BDCC3C20DF1495D9BEB1190792FCFF718291F3010BF79ED78F18262CE8A9E563F6F7672CE23B8A7037D97CF2B22475FF1EAA576B346B651C7D317A174B283012271523ABBC0F209381588AC173D3B87D47298FE1449AE8F80ECB02B3A9A7702918ABF3DB78C3DD606E0B402D49943541F0E0E013B2FA94A192C6F98971DD7F5E51403CCAB33CE1DC1053BB53AE6FAA617E96644022E66FF15E0E8696C79AEBD686A5C33D34943419FF8A5E0552EB2822FB2FEB79ED6E13F6B1FAFABC4A1E789B0068ECF631E3C444F440E650ABA4030A704EFB9AA4F3B87DA637D04706B3B87636A4CDCE626FB5AE82EF0D867FD397ED52EC2B12BB427BE39B086B5F1C13F74E11E9DBD09AE940BCA803C1C5899C258A2884525ECD0AD0C0C2E5307C54ABA3C7B1ED470A323B552968F2DDB9ACA3A4A92B8CE303C8EAC6CC139BB43B2F36AB385293260B7B512F1936DA6212592591BE6173DC0182FBDA6DBA6EDBC3AB00DCDDD0C578F2DB3AF8BC8609D4CFBD8BE1EB9E5AC6BE9A6C611BF8FAD3D55BF8637697F7BD872EBFEA49CDD914F64D28FD92F1C58BF1743505F12DC0533AF2EB38204CDFAA5C87BAA11EEE7F14CBB7F18C85DEA3B80C37150975A26468C1B3D273169020FFF17AB55AE18459838ACBFDCF0F039C61A3E46B7756D80DBA295664E7C45B069FA17C16895EDCF3CE79595F9B21D74FBA5B92F815CD1EB46BDB655F80B7620BAA6E2642870AE5BDAE168F471F743A3F03169F8BD17CF34E93E6B6DD960EB13E2B8ECA21D14FE967126706CC9FD637F85DD7DD27252E1D6B9EB36C57FD3AFA432351802816F995853C0F4F05483698303F95B246122333A0FBCB2B9852648EC25922C2A87F0EAFABC026268D08DDC292D47B3F3F8D4F2F9F75DC9F74C2356E001836786303DE792660F27EDE769F0C58217F2C6FD100A414A82470A96829E990FAEC487DEAB01AF7C214C9C85D2B6BA3AE7EF08F53ED248CDA06B78DD15B18BB393AE470FAA14A7B687979B47F2D432C1360C2FEF5A663A9CBC689137AC7CD694378A62819E5329CDD56F3E8978DE94EE30D14B934ED40AB290B19E8F8080E059641AFDB088E6E175038F1B2FE0DC1155E4AE53DA9BD4121ECC13C9B87C29A7F9A35C9F0C8ABED16A2632DF591BC952CCC68C9D80A0E61500271DAA6FE15BD17E1E1B2BF41109A1E92ED9D0960FFA0084AC2B279225F3055BE797918EAAAE0F90AFCE62ADC22BE64B12E1B9586310FA7B680D30760FFE6D5877EF72F2C258C533087D4BCB538405AEF016B040891883200CBC5CFB8E76FFB03F005023F20D7FA648990BD43BD91B9046AEBFFC3CC858073398A64117DF16A38D32651C6B19D936F0973B56152CC7BABE4EDAACAF13A08513086F054573EED871FEBBA4F8B66017DA930E0A80A692282C32A3387BD2154BBEA8B0A7C2DD80C01AD2BF0BE546D4F054170911A36C8AC034218921C94975ADD49FF0D5BC314450A1CA7D91F62D3A24931E4B05A2A268443DE34FC69384F75C0605848E8618006A073F93EC40453E160CEF15A6CE251656079D97FE8213BDF17C700BD1F95817714ADE3CE6FF864336F6F9E5FDA6465B23ADDBAB8146F421246BFF671C94EC112C1DF2FDBEB19B1F1B39317C60D21C1EF11F40EC7F84B003A4177114C8011FD0A355D7F2489909C82CC538C0AD85E0094EB4CAB609449205DE56A461A1EA9C95D61231050D31DF462921045D31B2772DEB7436E1C1790059CF82572C9A0939691B6509BE3E4B7C2BA170E2F583CC538EDE9AA469FCBCED9DEAE14B22C7E8FAE7F512679BFE43D6BD1C9D33587A7973BADEF948091AB4FB730075A3C678058FB0B19644A4075638F06070C71C8B765FF04B3583CC06B93390F45D505F163350AB7D79507F24E52DE2C2E5AF82597B595B0BE2029D8C6C0853C4DD3AFC3E128D64C80CA1D3960A89FF7ED77D640A823EEE894B1369FD522FE599E70E5C8AA9E2E1D73066D46245EC6A463F421D6B1B0EEC54715D6C557B63FEF73795F2F84AF13139B79A7DAF6CA92488045347B9CA8AEAB0B08D4AF65198E9FBDF54283F39A58A95DA99A6BD830222D0146293830CF7CF21934D6F4A5EA75E744DE8CFFE8A21A17C7A3F91B6530DAA762EE8C2B8D4EA4322F0AA2E40440ED89EE74396A754BF092DD65B06919E6602663EB02946B3B33EAA8317975075F4C0BC66724BDF5D625933EB201AA853D8929484B55FBA53FD777ECB06430E4682C31BFE846A74C28CE12852A8A85584BD59DFB07D200F0669A7C3E3A397230727655BD76B658823870FF7CBB6735F91E7823460FCEAB25D524A97216983F2064C8446A303EC1900D0A0EFBC3F5E53F03C3FF4D9DA242BAA38E6533C53EF8167CBA9328B54627E27BC58E0609CCBD3091E6ADCA3CE2CE3E588CB976C696E594595C39969BBF5E93B38E0708BC11EEC19009FC8A26A47E77B1507019F78896209479455EE76B60BA90373CBDE556E21FAE5E402587F10122A65DEFDA1A17AD2E1DFE0CB6D0EDB1D7D9B6E34FB4A0BFF65814EC5261D5756080B79F7863AA89C48F905854B216B19147D18E6F8B752C34BCBA502343653C350926AEF8640A2A6A28B5BFBB1319586BF05365F25142DCF7CA9187B71690DB477D167C8E43ED12E807CA628B761F813B20EA7A0BD291A12CBACC5BF845DAC03DE07EABCC01C03D44D0A443A8AA186CE0488F4B96F11EEF54C353694F27CEC3D8453F9D0A34874B94D3E9746B7778F937A55869815CA608B4598A19EBAA1BEFC819243E4E1AD364F88BA03F9F1774C0F4E0F9DF5BB79237E11BDC35A212FF23070ECB1C2709A64C5D29E64A7055F9F9CC40E8CD62BE2CD30A905AC74725C2B4B02F731FB1DA32FB251F04CCA0311B8C6BE67D02FEB095AEDE71BB7ABAE39EF0FDDDFBD213DE06B7C6E31EFDF6A120ED7D0576430CBCE13ACA5463CC14FF0F317D74F835263CAC622DE2F461B39368DA7F3FD0BF8F6ED373F85AD45F0B0D1A20291FE9340B0CCBA114D1F80963C7B429B821E6D5D78CF12B671405CD54B0E255A9BA59ECF3E3D38A008868407FA25F0555E737EFB9E7CF424F6DD9CF0CFEADBC19F103907C4F313587DD3C1532D679790E628F81007F3C18756BC4BCC8BC6B600A0D592EED766EE61B53AE28759AB2EDDCAC01C4BA6608932490F7F2FDE2416B578D20166BC8D82A4B2C234145E2EF20FF4E9AC4D70BAD34E60149F5098D187DA2C89E881FB1D07210B6B56643120B880BAC7AF57A2D818DDCED3669C46D0C25A3027F087929935193DDF0865D80A052A5EE311AD7FF513B13887EDAA5677F9B1B5336259B9314F767F1135A6B69A62BB6F0B3021A62D92740C42C2FB39228996774AC8D736D8819FD753B1582DD6BB0F34E20B617D0C7538978568E880E9392EA63F23FB941DFC8C2321D665D5FC6C8ABAF024DB07FE706FCC78A5EEF2504D4A17DB51C02DCE16237261216A81EFA0D8764DC1675F7D1ADD59F9C597E7A58DD68D182AFE56AF1DB820D2FB75136797DC5F3989C91D7E206F1763337B1C19ABD27A1474CD899C1168F8C47164DED99D69225536A55F00C8B240466B9F775AC3AF9BC8ED278FD454FB0C25CEEB358593CCDFDEDD789BAC2BD950247D1EAA6AE4EB27B2B0C37AC9CFF0C24F1DDC4E2AA4D715012A400AA6CA40F64BF7956D73685686B81C4D36010F87AFD126B5F8CA2AF7452B0CE4873D818CBC311AE726DD82281D611A4CEED0DA6254DF125704698A39C506F950DA9211572850CD1668A909464C5A8534C25630483B331CC3A9D8B70C37D724D18B983608C9DB405A5E6AB47C0363CB4D01F528518CEBAE7A229627744AEEF19B557E82B5083D8DA929E48463115B08D5F9133F6CD7FBA2393B6A4C2041AA90CE16969423D16ACBC13460355B4DC4FBFDBE9B1D819999D2F41488852AB455288F0AF3D943BD956A18581D5C673F3C98EEEFE63EA21C59B3CAE5B81271C2F439A8182082A55D431AF60849549A73103C158A8DB4C4D241D2020A06BDA6AF9772F7C0E533626252F81138C0768E610536DFC41BFEB32B272921E0A64A82AC25A7B271BCFD55C03CC3B2EE79981AF5EE22BD30A048733F9E518410E3A46D35735EB8560AEDC3799C7820FD024232216422AE5FA7FD51C6036D7F6842ECF665154A28DFB5B0D286B3275A2464BF6D6A66D3F4E4A4218786CC5E68C69DBB5E681B3879ED7E7B645C62EDAA923E8F6EB1BAF29AA82C3D960F890DDCDDEF995AAB4C270FDF7B843D12B91BC5327AE3EF5325BD118D49D30C5C67F1AE10EB1C38631D23EE53422C239CC5A317BF16904ADCF635F7F9F69D0B6522918FB6997E4BB47ACA3C25604ED7A3757C55B1870A40D35893BC53C8ED35E59DDCF97A52D20D200E0E0FAA9D229A12ADD08E655DCF46F4E9742DF6AEF625FCBB5186596FF0E405D0C16ED69BD3F8C60BF52EC3A71413C61A1872F676F0F31CE5790C51942609441CB004501DE42ADFD9BF00FC559B411846238522E58E234450C16293EB55B29ADB1ECADD60DA801F70C6F8C7F799E7EBDCD475AF0193B3FA3B27218094A3ACEE5395C5D96AA2793C4F5573A2EF4901242841DA8129096870072EF4C8C1A23FBB76E6E08FEA5967ED8E775CF3B8B2E48844181FC86A41A19E56E2DFCB785FED68BC48651A9C539F64F8003B48F9A00D3F4B2A0856E01DCDBFF23BECF1389392F934A9E2F5BA83F778A68EA8268C08A9F2AFD0B2B62AD8A2E41B33CA08CBB05E776DFD57C3DFD1B38BE428B67F782120EEEFB7361AE299797B8DAA797B97FEA6E4D13B44535EC87D17520A15E227343B77BACA511578FBE6992C5A83B90BF53E7F0C3FDE122DD8367427CC031F4E722B6A2B3FE6617A83F829E756D6B3782BED11DB87CCB636B3D04B5208263BD5C93192FF6E4AB63DCFB210E5A43A520E8DB864650610C477A6C9A21A325EFF60F900C0EE57CC4E6C870979AC240E2B4D00B3F79F87EF90E843ED255E371F5FB0BD9CC2D0B9EADDBE26E54407DDD2F8B3D1B37D85E539567C2AF8FF3C474E874FF28742C6D4C6B21B7B91DE3B524B66F38E83629EFBEB52A664E46BB3CDB2E91D9CE737443581599304E8997C630B658CE6C71B027EF819F2BECA2CE458FF0B37B38F7438CDF162231F636F1F866DF0F0CEB8E04A8DE81EC3C035FD67F99511029EFDD6E70EA18E7193D3FF5204BEDEA17AE55B6C5E1E84CFD004AC6AD0232BFE379FDD96FF2FFDDB626B029AA6DF1804B32C5887907477C66F27816322DE978A9A7263F2FC8503B4BE0F3744CD176AF4D7DF02F3A9FA99E7EE442C60F163ABEFC9CE7F82F04EA5786A072779A9AE49B78D0F3AB3F786BAC8E895EBFDBFA9B025AF79BB8D441D860F62E639682CDB215A6259DE40E55F8804966E08632B763B72024C3C6ECFED962FA356E18526E61BA88E145E0431399D717BB6CDC091560C697ED3A425D716233543BB63A17BE6F35FB4548C1A4BB0689174A461FD4502EAD5E699402DE2B9270CBF54CD5BF8772D137CF71589C8486C4DEC2C3E26E1C848A4CA669C0541354C1DE80E4C2544465B6AAA2CF362925770C3F26E94EDD4D08842A7030370B692D6D44FD116F73993409CB8FEDF2FF775E7CA874444DCF5E25A7E8E6D64918DAB1C357C3FE3FE8521C61CA2B559E8F2CA6C62BF6BEB36BF095B6DEA754EBB57BE55991BCEB44664AC09A16DC4705D2D3B0AD9FECB8D0717EFA4B7FA0335C8EDCD6C35391E79182FD2211C5DE260D20CCB71023CA8696123B053AA968615A335821E61B8BB825624CB492B8FA7D9D7F93EC720F8C5476B090468B13F919849D1690647E8EAA72FA396CABF7E95FCF060FD8D42EACC18EF2FC90B2B344F648C10FA4C83C49F23C5868FA55AEA04765E617574E45C4D239273BB68AE093BB82D1B6F9F8B92D4A3AFB9768762FEC47388E5E6806CBF1F0F1953A0090FF68EB52331D29909BC5CD46E5B6D44DC4401B51DCBB03036AA3360FC735701943842E78A1D5B20A8D01E593A61F947FB1D5E8FBD691F4C14559DCD8D34F04709D127367601B2C10565A22A6AA4462BF4D13710A20BEC9EFF97B97756EA88CE76806033BA3CB4B61B91A5AA19B3DABC3639A5DFD986293C4AFFF4E8F18C27D8D1D7ECDDEDE667B37F25EB52960571ABB76B9F328C07544182783CCCDFF8AD20A27FDFB667864421F8D82F2B6F81FB855BB3CF0AFD9284424E8581DC9117597DDFDB27282BD81359204BD7CFBC2C46DA8E9297B31BA1260193D5238835378528CD3E3B338B280A7FD0E0EAD6E01815ADF4F40BF76D718CBEAE17A6D28815425C7B60B71F2AFE168AC70C0F1A7CEE3D02F97FDE9E339D65B606DE471E7F4841B1230DFCC762B21F2626B8C7FA9A08909AAA5D2E9BB02D28BFE1F5F403BF192D0D0C59EC95750B57CF7EC37C489BC2A22D680E71F4332CB962A7708E52FE79F57ADBE968D5BC2A6DF8D6B39C75B9884E1914CA281D23F0BE62EF3C9DAC1C1DD98E6CEE1E42A35126851349DEF04286345EDB3DDE0A2734F6630F32C91377BC19F187E06A862FF4DF180FE586590252CFE9CB801091CE7C3C5D6C501F66D59B81F3BFF961F36411A8961660A6E57C911596E270A6B6B3F64D267E1D03756D34C17C2C1FDD7EB88928D09DD11F3B7EF9A5CB93231630C993FD3DE60818150EB9545D02D2E0F41CF68F330E0B2CD74D5BC8BDF112AD92F195DE6669A232FDEE721D4AC0F24BD6C9D34556C9B228948C42540D5165A6F5F09BA763E3CDA92CF9120F23FE58784B78A01B0BCE27426A1FACD8A9786EDAF4122D337073CE4BC20CE8CD2960181DC2C37D329161AC9F4F969ACA1A87BC843 +ss = 594DE84473B3408E35F6C4D1F2F2EC3B56D2DDA96FA23496 diff --git a/src/kem/frodokem/FrodoKEM-976-SHAKE.kat b/src/kem/frodokem/FrodoKEM-976-SHAKE.kat new file mode 100644 index 000000000..44b2d08dc --- /dev/null +++ b/src/kem/frodokem/FrodoKEM-976-SHAKE.kat @@ -0,0 +1,6 @@ +count = 0 +seed = 061550234D158C5EC95595FE04EF7A25767F2E24CC2BC479D09D86DC9ABCFDE7056A8C266F9EF97ED08541DBD2E1FFA1 +pk = EA65678D51C860A57333AB3860CB7B34C7DF3C596729D75CE3A1AC8A68F892F9BBDFF5FAD14D7DBDF05195E560A2215909476229454A723C693689F6D69E3ECFD43CD147B833073F8192ED23D003FC5AFBDA982906E3AB508D6F77A76F7F01D470BE85AB09B96058E21A6E8BFA3ED087337FAC820D6BACB6392A7D9978842E7D832D95347C1C9B217CA1479F3A86C67B15B6960E8986FD0A46456A0F72EAEACE4C06BA4E6D0183590278630443E8D4B199FFDB0A49F361DF4562A6566566223F451D582CB382C2B3A8D9454E116D8BE56004F6768A8E9609C87B98698934DFD22A409F47FA853030743216119D926C231AAD39E3366DDAED478375B09F1C6D9811E146B536B6695FE8E99342696061E92A46C9E18BC593816668C96BD86322DAE95269F5512CE9BCEA77E9F5F0772D32712BA6B57F13CD5CFF8044057C91B6735CA6736CFAF13CC3321E3B6F54AFA7B999DF307A1BABC7F8FE35B72F77595B6F2A997654675702BA8ACA4CAB9680A316E6375A67EEA1D424BE7A61076A32DF34BD615978A2560DF15B88B8C47E4679032DA6F6161F44726E9F9AA582A6767FB4638DA24168B9FEEB7344B286A95B9A013E9D19BC153000FE5A7A50B1D80C365FC501A26A8776A64B2DA4792FC807013A849306145D400EDD5BA9DB44EC1137CEC132939FE3A39CF9D09FA392ACE1D7E808EC3BC13778BC6E4A6E3D54301B9F7CBA96A36D5414593CB6A21C8CCD4DD25AA16612B0C453BBB7C016DC6EAAADC7F49FB48FB3402FCC452B47B93E16651E76C503F8B27CA27EA7DDD6F8AA8B659F26C51BBC6EC610132893FF919239F72821C7BCA16A3987404F720DB2485F6BF2777C8BE0FA2338227255F4874394CB579BEF11ECC8B1D377F3BE0DB5F69988DF7B7486ADD587AD62E5CF309BB8D3D9CF6D14F0DC4D21CFB8852585BD0551E9C8AF91C3CA8C1DD2BF551F802FE5E2E6E822D6E0090A2530E25CEA1C9287D247C17217BF38AC9A4319BC032B2B9A4D39D5EF6726FD1344E63D7F8C2C1BA091A73095CE5D588FBE7F8A7371F75E784EC4DCFB1D677E82E5E18F0D0DB7541957262FB57D7B371A046427B0986F1E8BB3B650A4583A2412C4FCC141B02A8C33F02CDEA16624A5108F96708CE133E47DEDCBD920BF9C11CBAD564FD9BC14B6DBBC5B545DFB34AD42FA461B35DB9A64A025843C226143C824CC0D7FE51B41D7995E965A2EB2249CC2E98FE7B71F830BED731206F062F700F82CE9B6173BAEAC57CA73999CBAEEB5982E9AC4440BC18F9ACF40114DA4D0050FEF526C92EBDA9005DC01369032F9552ABDDC0ED66AE88CC50683414EDC589ECE9903B202EABF873DFEE5C2ABDE04C6F70EE9B52FC2FCAB42FE60228E707A6AABDABF4D65EE20B88B4BC9AC0C8A19ADF59F45FADA1974371DED18B52034FA5EA170EDA73CB263A8F1FE69F1ADD1E85C54B1BEF11BD84282C7CC18C47E4EE1B138EF0439B6095BEB21278A8CFDB6B237C91F84A7AB77C20E3A24787E1A1C56954D9D4D2240BAD0F00593E6B6DB231CBEBC3E818031F9A28D462E4DB0BC8D68034A953D7C1997D7FD9819B5F9F751C389C616F52E59074397C67E2A4AB6CB2B1C8A85F58E3AC42FEB117838595F0E42F39B1EA27163F267C098D9C78D92C65FC2075CE869731905CCD074A4E4930376A49CA85BB7629BDA4FE4E55A3A1C3B65E7B35AE0530D9EF4715D7295C79985916B5905E23F1D129042105B8237D67146107222FB33C3E1640E894D0FE3E5AF8CBEEB3A986F2A5FAF82BEF23FA88D6D6B141B31F9BCE043DD34C64F9DBD57FA3AC9765E888EA67396859ADF0706769C6E674C9DF1937B11623684D85BADEB8507C8F7A43FF627C84B8BECC693A3528F9F329C48865B4837A26C2E381435A8BB51D079B37E8027B69C9570841EB85241E320C87EA83C1DAC663C0321154DCFD64E7CA150F36D2958BF3399DC52C665C993ADE3FC15A4AE52816AED9144668812195999CDFBB627D84071124AE6994B1B854186048960E6D125132C5ECC9FADE6AE63EB2B84751A6CFA5C4B70338491AFE273289F9AF02C448CEEF2AF4503D388006CCF3DD923B5B049DC6CB14ECF64C53CE51648FE336A3C02C4D8DB2F7A82F0F069FD1055647C233A7E1C26782FD2F6BB009BB1965BF1F0DD0D835DB1A0BF03940377F2085006D09465581A5E9608A3CA63CCA46ECB26FF6468E2579340D24E0E1B0C2DD4390BEB09C33ED657A27D7C90796495DF276A6125CE324C15CA1EDA8CDFDCC0BF59F420D4DF9BE179353D790B9250FAE4399F19B2631BC2E6F4B89E21B42D6297A4226F7293FA44C212C5A7D47FB0804E65BDA27251F059B3A46EDB772E86C7B5AF699E25E48C08E905E281384D1813FC61A8C94742C9CD557FEAB41F68420B54E96DFAC4E670424A9D14B084EB80BB40E555E7AD59C9E21A57AFEB065C9154791BADFF8D1261BFB6FAE87E8CEA3D038E2E3E3D71C006ACDF00E6B51213590B1EE133477CBF92B9924C7D656C2AA32C876D797E4424F6D73FDF28CBBD7E460BB6811D279F4A4DCCE58E17A46FDDD375877C0906BA9565DAC4FF4002884493B4E1C0FC8D4BD4B5BE4CC8D1DD38901F8ED81ADFBEC823A8E4AF9E08583FFD0A60DC6355D7855E51917FEE118ED304DEA7BDA2EE0943CF7F269F45CB3C347E975B16EBE08F705880363A2A2E1570E90E9FE953073DAD95A9AEB5E9903EBE2944AD43DE1201D4B0473CF72A11FB1D555C9314BA27DB272BD90E047675122137D4FBBE767FF7C0DF04DAC2C6AA34F3EBFD26AC67B75777B9B7154C2E7CD6E61D8B8EB1A613A90F8D9121EC37C70100EE6CF125C41F0F9F2A420D74334011ECC5FB8B9A96E32A791DC9EB501A52F639C3FC5960DC7885D9833855511B08365709175DE3D1EF5EC7F85D0061935AF52188A8D8B42A5471E40375353245979B6E4D805FD75616BC3002A23D4E4315DBFB176021754A41613C2BACB1D64FA420BCED8EE8BF459FA4DAE41E9828A6EE2A9C06A01854B8D30476799C1AD72B711947DE80B811575219F99A623FB761158D862F0E2D436A4D4D1F8721A71A12823D5D786DA8ED29E95ED8098B521FB59B535A9C954B02F195F0BC874829834A168F15DD10CA78F6357FE9105CD7961AC9EE2A42E3F780DE0B6065A6E0327C498A3284FD31BFCB4BC9FF7E635B8311A4D8B7F6FC543D8F23070BC10336AC24090592CCD3DD7ADA3D6CD17D2118D9B34E98B4A4C6C2FCD9FF045BCD67973080DED5D2CE603A7153796B03A3BB673D7767275D0926A53960DA1D39014D6A0E18BA8AF8F98068816BD436696FF9EF11EF578A403C73A99E390C4BAF532B9F18010E18A980554A56AD3963A0DEB66F7FD7CD77ECF056B92F05819332DC377DEAFA4C2C5A44B7BB16EE846396C89650B75C69E5F4A40AF2148B9C6BEEA418BA5A326E0F1F9FBD03A55ED33D5C39315A035D9D3B5C3519DA29122EACDB7A9E4F50F24883D217FFABB12F44FE8BB8C621BAC691B6AB1F3C0922BAB3A0DF26C2C44162F3399EE333C05D55BD31D774D83FF32A1D13596CB205C00C162F5D8A7D8AF2913B432315D86D1B7EBFDD7FF32CC2514702E2DC52BB9DB795861DF9AEE06C5E32B9CA3B11FD11EA71D97195DEBD7651DAA88E660CD54D53174F410C3237E2CA3F78F66E17895F54A738C0E6200C10D2DFB375B573A099CDC4EB305CA4623BE87D13322BEC46925752157B7A3A53D2AD2C422EB9B0BA1F26DCA9171300F0D9E957E6AEC13EE0BAE92EA493EF803EF85947FB4C589AD980CB216BA2FD5B46CBFD7EFC11102E57EC987B63AA1CADD4BFDC785630BE55F0DC54EBCB4D351B38909EC77D11AEAB1C71E9D3956A48B386707637C618D23DA93E206595D0E2DA4247F228197F8F75FBF146E479CF752C486958CF79AB12C64738FE3637446A5CFA8405CC6CAFCE311080A0DD81F69EE5D0A150F0E8B392B5D2169CC46845818E71D0F4BABBA8CB1B2DEBCDDC10BBAC97987585AF2D6AEE00281354DD3580DE4180B89398ED97D092E5430740F06D4DBAAE201400F2DA2B445D46ED75DDF0591BE03913DCA1053B430E5AD3FD779DE2117AC725E88F89336DFED251187A39DC297E811F533E24438CB9DD8F190D8C3507E3ABFD8E73AA309E3CA1DAC022B3C1D0EDB49C3162C48094DE43EB0ABF32A11CC2FFB82509D90AFC7E7B2ABBEC76847A593715365533ADD5F07B23C7F2D67624FE5A8AC78A4D0DD9DB26727231B66ADF4B75F079BDF16D8D8181E5738929594B43E6BB76340CEB1AE942CF3DC0C560CC491B11CC72271E9427F0709A738A2E7E6D5623BCBE4DB76BA81AB365443C006E711F8DC7973091A89BDE316942F080DAB637654FB95505D1127ADC824ABA0021DCB2DB3643066567235E7545283F8C70F5D2AB13EBABC00E51CD3D1D5FB9CDDEABF69E8BC05587D113356BB2EAAE43D624557D936C39996B5B5B1DB2569EB31A425A7D4FB5A0F522BE7853A3AD59AD323BCA56E369A7F380955CBA44740A08F5AB56CC634F614F36583A5E404AE0228D55F9A8250F77500A9E9CE4EA21B75308E5437D927D2FF35687B26992B8994AB197691A7D1A8477186FF33DBBCCEC04E98B10D52071933053724B15162B696AFE7921D202EF3FC387F893E5B24335BE818EDCF8EF6ED2CA2E3FE7EC1D97298C1660AD25E0A93D33737C4391DC2A7DDB1B582F4ACC25EA8078C21690DF56E041A9FC0A043105FE2D3C1B609D8E36DF86F3D96E4DB0CDC5D22420E9733B36BB269C45812B59675B2AC69486C77716E842EB48D4EEA9B6DC01D84A33B64198370572163EF5B80776D3FCC0EC0829382DE21F117C6887343F8C1E0D15D5D7714495A8407EE18D02A69C22D20B3119FA6EFC0140673B83252E9B678303DA418098B7DC9219556F15CA5B78CB2BA6E6C1E180B33BA31B88F9B09E39CA1B348ACAE9D563FB023760DBA8E68C88317F2F24E0AD0BC51F48520F97AF1187FF9B80D23F3D1A5CB531625F6F6E72AEB77876B47A1DF96012C75D2BA829A22240E2F9FBF610532E45747CE685444F05F7E3DA92407FC8FE5D837E3C444CDDAD0728F76414DBC37E98F58AED8B28265274005B9E4E56033A043E0A919975BF719C98BAEDB67F699FB3E7C7AA64D4694F2531FB0643B47EF52DE296D48E8F9BFA2C1AF27F3DA8DF8D8D8FBFA9E39F39E7735BAAD36E014D2269F83B7CCBB5E7868BAEFF2D1B495A93D907BBD0A797BCE5829F9D4BED8F3B5F5B17E5B406F8ED198B0FCC4F8FA4D7E6911CD07F825C0ABA26584807D067A5EA0BA49B2E89F4F53684DCB8F851240E6F1B4B7F9F2DEB1C8585064E9C6AFAFCD168C320882768252A362A2C7089432D559FF57DA982F83642B04048F09F8F67E03C8E2F90E2095AD51001B54DEB6B0C13CBA538FA53138A282AB96B8E35A1CF9D187868FF80C9EBE7FEDED5854F0209E766EEBA22F55078C44D9E098B217DFA6C1576F837CD087F306A24FE4F0471FAEFC0863944770CC5C06EEAF461D7EC2C5F20B03618897DCDD5C7C552B7FB373DAA9BB765A35B3FB7A2EDCBEE0672F0A0C2DC5FCAFB310F8B9573311A9665DBCA34B4D0A66956B3CA9363B85EAA401019F93FA6B321F1CBF4583611BFDE37D50CF3E1A4CB4447B5E3E6FD83F01E36B51F2CD347F7B3FB9C442EDE422CF6393B6553EC53C1ADBA31F1EBCBACBB420EBDDE29C58120C7ADC87A713F6218AE980B0AC85B4C3169DF04B1B5246A3DF84FE7DB046A89FB8000BABF19141619B6B966D6056A2B0CDFA926E895E33301D79CDF026657CEB5230216A0DAA6B65530DD58AF3B69BA3095F934E17CD01EC3F05A299D0552D2757BD368F892E2DEA5155EA2742C90BF1163553A5FFB66DF82753CE3499051AC0CD19490E878F660465D854FB81A2810F076408951EB1EDB818BDE002E72D2BBCAF52659DF8A9911394152DD8B1D2BEFF67875FA2110B3D5E18BAF36FE9F8EBE519C466B6E9A1D326C997820D2A1ED3601BBACF79D15050CDA392C5AEA063CED3CFB5EA236938CA387D772928C5798ABA379086188ED8D6982A474FB0D2ED7ED492D2D6E9859FFEFFF5334D24644F59D011BBB6E612DD3AD39098F031F761CFF0B83D961B8CB28E515521EE018160FBEF11544F3E9BF32D5F0F14E64D8ACF6ADB21E08C7EF3C0915F65FD9A28686AD33B70951E9D0CA553CDD92ECEAD61BA293B9B1857C62B525E209AAB0E582528616C9FBA27DBAF10F2D9F8DC8ACA3821B3B3912F09C23F864A0CB00521E95110E28F4E3B4FCBB42CF270B21119F2C55755971E1D5EEC2AF35A097E618C5787C4952EDE2A0CC298BE52D5AFDBE22402287A62C4281EBF86A7779C090B6B8BD7F715DA646B73C228B89D9D12216ADB89D5085B66B7C1D999BB7BB11C79130317C0AFB895D0E732A7A621B78031B358FC8E71635A4EA7DB3FB9077B114CCCD3962B5E610342FBF117C4559B20CFD50D8EDA9E0CED412E4F6FCE8F145EB7ED1DAA5D16F41FCFE2F83D14D9D5E7A1784A3045A6EC5BCB4E59376B3781F2F97AF403AA10DD40C02DAF083DE2338060B89C48D893F59AD94CAA487BA73A0DD17FF95A4FF64DF2492CB6924101B5E1B028601F2E08990AB195908E41F25E220355A9A93B2563A55213893679951951A6F4D78B77F0449EA1AD9882CA2B7AF5B5397F2570CEBF7DF97E4B312ADDA03965E02B90316348EBC60CB2CD7BFEA1AC38F568E8763E4F0CB264653E9AD82AC14FEB83B22957C7DE7146A4C6650ED5A76AA59C698E78D3C6E8622752F3E0F89257E1ECE0B0131BD91E0D582EB93E6DB8F3C40D3E442F30B0AEC6D8EAFF8AB2436A86F2B30093DAF8A0449DCB3FD11657693D9D4DDDFA4550796F1DDAF7D610B68E4461C5B03FE7DE8711FA5B8B568F9359AA8A7ADE38BCD613A1544689F3321F4DA7F73B028339C980CBF57E72DF4EB4CB0C1405DEC2BD874DE2D36D870F206C88C3CE0DEDBA5BADBB2093481F453364DE177527D8781EC4AF17FD61F13F45AEDDB5CD004F2DE18721E37A0B9A7199568C8C3EAECFDE8123CC9C3350EA4B94EC1B3D10B76B95A2774AD402FDCF8E45AE51E8D040BC526EF09B853A401BFC42C7B6A4397CFEB80FB1E6720839670E8220153E642401D23C23066982F3FBBC16F746ACB3A2394244D429482D71F533E02183DCFBBA3087820996BAE713500769B2CE5C12230FB4219067422894B13AEB4F4E483678B38FE88589F99CD24D3719055CE12B42C3DBE8BB096C55E5E3435D5081129654E6F336EFB99F50183D7889FFFBC4520C71AD4444B703666082E613D464277A462C1BED171C4D474DFD1521B67FA75C0DA7D3C6A18B568E99A1AD52C2BA0016B4C16288A1F547726FCEAFEC5DE29B30E708E8C3AFE318DF0C08DBC7B616533CA75287CC94157F7AF54F7A2814D8D22D44700FD159B82841BB3D415DD5776B2008502242308F1652391F456A1FE25706746672A53FDAD26829F949506FC10299B18508BC801AD3F28957F43DFB4A9F225AFF51AE1BEA1227713067BAB72C53D965B2524C50D3D77D0E007DC4F6F56A4B04EE9D65E7C2767F7462673096DA28E87C1D8AD44EE5549A94D3C9B824529698EAD531FB5C14EE08A6B346CA2F1ED8E2F94E556E8A62A4912521B5228813CADE44B9DB0962BEE19FAB17E3AA8B222AF7F73F4CC313AD6AFDE8C9A8861BEC76A17279E33DCA037622562F855D08E5D4C7F8FC1F488B891FFD0301B0199CEEB4F8BAFA70160475EC9DB63EAAB267953F6D40FE170E6449C02E15D6CA5E81AE18931D8045EEAA04C4C5A5B20447D06E7E3B129EB23C1730E94BD551CC269F8048C5261DD92EE4A9A1BE89A99A6871222459A2B825494BDC9ADF0C05DCF7C4EE8D76CBB6633F6B4B42EB9D43C60CD9C924831EC675FC8E0B7DCEC91CF4E44C30C076FA4D713A3FC941D6599878E69644618789261015FFFCD2EB6E7C0186A555595FFB87715B6FDD58AEFA3D9F8742DA9115B5D033AA12C8290B4BEF966C2C17B449DC03D43006871676C87E3A340B0344E0AEEDFF4FEF5E6FF38F2A25F4DC449D14D65EE7A4ED976E94F3737A25803E999923E636592D38129344E9F3BC11BB7E2D5CC1AC4216528D14BD3F4A572A1E69CB8574911EA1F1B4F6D5F5092768989342E97EC5877853188888866677E8696A364B49191603774EAD66CE9E5D293A7BDDE88BCDBB3BC64C09E101B7B400F23EC434B18FF3A3C9F158293A7A6781C92E4086F5E52AC9068FC9C344294A863AAEF487266609D4A980DFE416BC312E621D34DA0EF129B088A4F05DDAB44360F9E86530B43BCE597D943C22294C551267C1409816D2F86BAFE7EE07602E437CCC9B30DC24F195FF65CE12F9E0AF0F309FF75A91B5CB24B2EA6EE257F75FBA4E22965364D0A3F1CF6A8C52BF40459088F3012C839FCA90036BA34CB069DC7E3F2FD8F49F32F56C1060D8BE7E2B465C712983108E727B2592F193985480B660BDE165E7AEFC656E3DCE0F0F32A5BFA222FB6DED02118FED0918ADD578FADCFDB2B0CD4A2A9FC635AD88FA7D537D693CC5B3536379DB36F880B5ADEA3C0DECB5358151C15CBA911B7D6F28F2D74418E4EAB1BD13A10414E6B2C11D38B356599E2AB2CAD09719F90EEA09B81E9D608A6C9D0737B454D2C90CD0909CEF62ABAA35475E798979197370F13DA0FADF75C276A0C69F215F2DDAA625BBB5FC6130E8D5FA47DAAF526C4DBD2AF6FB66B8CBD19C05A4B185EAF0A39CB766DC9DF41A8BFB69F58D708F995A4C44CD58B35B3C28310A2AF89FF9F275194AE6DB8F9A3900F4D329210A69F56BF1378DBD5500197F357AD217C5469B108B82DDE7FC3C67D891123FBEBFF6AA8E123DFD06CA3F396AABD9DB94BA54D99577604047621228E0D316D8DA77C31EC44DE2E22158FC4712A8BC6634684EB8B6798A890E1FF432DCF94D94BFAB7F6D27C8FA4BDEFF974FB52329E6FFF2EF8B49955E3273F8F76E323FFD64D5AC9A36F823A0C5C9D983DC78EF345CF9FD6057B390C5AB341444059D383BD36D3BCEA458131D1436427C3F8C72621A8797C97DB80D47146F9590A63E7710F4105169C9D4A01D4B340CA6EC10E5C3AB4D5A866F77C0BD65CEF0C1BDE08BE8EF191D2EC93C98BA373760DF2924DCB4761C61387F21BF77F84C3FF98AD517BFF0AD628FBCDC781177520230689C8FCA11A98FC2D7EB73065A90BF7D2C1CE02305CF0793F05C9BB17D672B6919D6C07A57A982C518C0229F8B1B6382B6FD00E0982F63453A0DEFF1C46B5041BC15930D31FAF8A929B8C87D59C6F9145D4712B070DA86ECD8FE89F2AE269151765C234EDE327EB0B0B6CC454883982186BDC62C9BC73043367CB05D56922A1F8693322A3348988FB4D9805925657BC588FFBF623FCB403844A3E2ACE2F4AAA2097E7E0751ABA0E8C0C7E3246D9A203DD785E5C0671144C6A7C79684D245603A2E67AD7788FAA4489431B03F9102FA7D87E660AF4AC37C302BD7BBCC6398118F972E83DDBD075391BE4E1CC40DF4748E6FAEB2D19693C72D0FB9C820CA6379CB1DAEBE4132D5E999EBD486AD78B04949D7695BC6434D0B06BD9C6176E737ACDF753146DDE460875CB0B5C47904BF8B9E60B7A278194D01794C2A9D27B26490D00534A0CD4037F2BF80CCE5C023A6E5F7CA787DAB05A95E4FA46188B0604BEC3B607BFA9E3E8014CEF67040B8F96FDE86C48355EFD264503879215CF967EE78E3A261246E8E6AE5650DEBDFFA7C5AD4BD4957C74C89E1F210CC57A19DE7EA1F3578FF1F9E36A5040FB012AACE29D8D689C48183767D0D4DC4FE5A51E419D888BBAAAFA1560404887F50EBB4C6415DD8C632E8D6A343795645796700106D92E2A55CE6C2B452519D2B13A7A011B0DC5730C08A8FAB8267FE10DF39F4404E7178B005DBFDFA2672921B529CD899B891D8B92C1CAC0419ECB3BFA38C6268B4A4BA999B03D739172E18F4A9AE15F0AAA5FA4839C291B99C1E1751BB03923EC4DDC4DCE8861049A012BC9A3A877A7E6EB16D71EDE2C73A061D555A51534ED6577A3BBF32D79F1A7D998B5028583A3488CEF93A34FA81ED1B5F05CC2430C0AA8910020324A7657FACA93E0D1166CA35704EB140260AD223939E209A9241D1392556092F0D97CAB27BBE3C5DFF59FE570862D46BAB0D6A487048AB2E1E0E21F47F86FF42552DC72C62F62616FEC3A094772054F3293801FD9EE698AA844A8B1019A46C004134773EADD54D468C6451E350F394E9B90E9E6BA0218A1BD16FAE919DF90C26D594EA0D1A5AE7D122CE5CB770C0351A91FCEA85D6E1E4F94381BCD715DE7A92CE9DF5477C2D50A96B4076F0885A76094D6EC63A34789B5540E6EDCDA505E8EE6CA756C8D4CBFFA167F24B48823D05EAEF0256854B7A1A7A018393E14F670C66CBC1DBBE2CAE1BBF468F15C60D531B8EB8989B6604B68D297918C34BFDCA9E03F1DD632478409E9DE0E8DDB753B33643DD0F55E315E55FDF9008CB3DAD3BF1A9D846F64FE8AE13806C834661E7B54F6FB5C6C0791D643503AA2F39387DD1C6894D18476A5AB2FD0E4ADAC3F53EB9B6604E36D333BA4D7D721BF1895BA016E9DB6C3C3BE2E04DB186C151139BD02A3BAE24EEFF7930981F797DFF860FCCB5E29F15D05DBD929EC7E9B7D77B455F9F6E8330930E4F7516998292B93C976938F147B5EDAD0B28F21F71D9C5F46DB12A878870A101469E08A5C67286520CA37633CF0B1A5F49EC9798B14A2719F0B9A713DD493D5F2421FBA3A0E38690299452C9C0E028131691B390F4EE547176A4ECE041693C466A2D5648694EB075DDF387B57D41259BCB0DF789B3A632394FAA6524BBBEC4E35328D1221DF86B044056529FA5CE835914BDA486F3E8B73EE48BB526D8CF2966F9086B72588C9535F2F65E5525D9CC7FA367EC340030C101B075CDB82EA286A36D61A3D48381DF78044E9A4706E8E9E0D661CE17649A35366F9CEEB295E0A4C9331090B60763AA3001B51766535E5F32B25DDD1D67139214021AB6D0C9F6A4D44ADC1EBFC61962CE2FC4BE35B409E91D579AE8DEB477F7A1EE4D8DB57B4AE19606DC30B68329F2FE40F24FD39A7E632FA1640C06083FCC068C9B96FA575B6883D971622253291CECF48D6A2640B48C7C3CFE1154B49BB02AC83DD1A47F2302A08CA0342A4E301C20849F02BF3B745EC1F92671B4EE22BE6D96293AD3B7B1F5647DF06CE6F6D018C0E93FFF00AD759990AF34F731361185BA4B927B408138F7A3F60F9BF8B7A72E11D3F8D4D3816704F6B8C80B8B8C6979C4EFAE8C7B597D152FB16E118703ECEA7074F3A2358AD730FA8D0EC20977865D61666F3857C5D57E159BC187B626814C40C110DF2939AB9CE697B7750F3F2E3752F56C459E4F6131B6ABE290545B00765150044DD2A24D26986E209A173B30C416A7D980CEFB6DDFD9856C32C824C39EF5F869C6FE72D4F59080076D8BF2150C9C56CC9AF10B8C247B603AB1C96B89F20D0746CC2954E3A069ECD535251CD430F0B84D24D8EE60E840DF8A22EBFA8DBCAC3C3F06D65388EA36045EA9B6E715CB83D6986538269EC1CF09ABB87FB19E0B85A2C787E07F7E4A01DF7080A706F395DE879EA9E042EAB8BAE4D71A8C4015DC2019A38800E0C2ECF5DFD4B428E760ED4C393E9D9F9DDD6E98C4BCF8B34175DB032BA32B5720BAB09E6DB5BFD9C665A1C4F84FBB125897DDD0D859907314C95403D73F599C1C840344D143CC404279D62FD999C2F33B60A69D6BB19014A624E71EB9FDE6B26125EB3B8C6B4B5F39B6F0A30D2A3419652BF03C8684D47E5D91D4A47276852C2E1380045F0A9D99F63EA1812C81FA07F8210E5EB40FC01929720B24CA38DBAFE3097277B626E419643528CB8ECAF5144E9933DAA0C175B758D74825434A1D9F969E34010B074539006157BB958DC1B9D0EEF75B34A41FCF41708D923F09039515839B19B8AEE519DADE28407FDDE37613D3E4FE77D5FC4CEDEE0AD01CAAEFFCB128DFE1A28E44B5E165DBF92F772777AF115B811C38B7A32EFE76A2F7447482D8F9BFD228BE98C5E48A9C0DEF7DB8EC653C6E0430F8E58C238F22419F0E6FAA84F7FA79B914B2A10A7F6DB2599248EA68C3C9D55E5309DF9161AD9CCBBEC4A463D016C46B09900D7A66D77087BB299AFD10F1658848603FFB50B447EC6F38CF0CF8C2EF0CEA8AFBABEA637077174E78A0C8EE5325B35547FAB1284FE602DF4FD7B5788AE3AB05C8E3B98311A3FAB201ECEF3FB775D06825D026E01E8E0F3EADC9268359B6CB4D809941C9A0347E9D50311FC41D8A8A5ED42CA80692B31F973AF5C6AE82F647B9E043B3A7EC77010596E0369EF202FDFEF6CF45C8D5677CEB2B6499FBD5D306AE8487FAE1173FA8349187F02A1CA02B6300A8578585F3611CBE556D1E17B97AD40CA82918246F0A16C195CFF7326DCEC5560D7303391F04C91F2F2FBB70A95D56BD60DED49444BDB5717CEF118BFA3C6115658F2D6FBF146C93390A5285402D7E0FA09A8EEB517F4594659ECE9DEEFDD6DD9897F42525674C0C83C64A7704184ABFE969FBABCB5FFCC748D6A5E949567DF1699CD42C198BBE0C7D52C0D76C3F753F66B5804C77DD5CCCFB8A60AEF619D88307518876BC43DBA48C6F4C4B0C286550AFACE63962275DEE4AF50EE38651FA00133470884D166744E94654A7FCDB81F5FEC82981F998CDE4F5C4CB8AE4231EBF4B538E51D472FA42980796DE23AAFDEDBFB4442E69F9F2EFF68B20359E26237CD29E621D8309EF64C39066A56B1E361603A593F784108456F5EFC7CB7E70854BAC9AF824948A5B0D929A0A025A5906A9932AD84FF484DF7EA26D3A32A2E97009BB6A7816C9A486D280DA3FB85DD9B72BC77F780C95AAED377CB79E9ABFC1EEADF5AF95FB7A9B85C40CB9E9090FEAE8EFAD4BC56E26F9C47239ED2600260D45C53923E50BF82725425C4A0BADE23199C3A09BE88145254DCCECEC2CA48788863BFC2E503953CF8247279CA0365B49893A395CCEE60DAA31077A4AEA31B864DE97FE60201D0DC65BB0C89E62224E226C5D19174CAE04768DD74921A98FD0819252A87D281912817621F98949EF76B3F716C213B8CEF068D2E15F15A371E751D2DA45844EF2231BF4FF2F8F4425DD3A90CBA920238460BF2B70A3D2E06BB59DD0821F428BB491EB7F96A9F9D650FECE3530A52C7F6F17B8C902BA83D1C785F31BB86729E0818711B8DF5F14D9D2690DAB153F1975AB868C68C75BED096C454FE2684CD329DA933AC317A073C355031A33A7340454011212AE4285C487CBC586243812151811F4E810111C8B76F8BDD53F265348734C3028056FA98EDC3D742DE3DDBCBE10B8A1383B32369CB3FA97B3AEC36F734DC3A0DF905E24BBC3E53D00EE8586F0E6DD5C6EB7F975ECB3A988381AC3A3EEEC674007B55E38CC0BCE75F547B52A802E405FB42F8478BD0C4D08DCBDE2357F0B8F8CA584CE07EA94779FCFFAF56EE1A95953DEA968A267725918B0E5655E08E105F3C7E19F93A9082A3F3778179D39DA4028B3702A74677B93C01F6F5316B176AB07D82FFB67593D941B8C0D563B59297524D792A2D36A4AFFDC9722383B2AFCE39654322BEBC08741F1AC0656085761236E811379399717B5D5F61BFADCA1E5148A928D1C9F719C736986F59B16B01AA0EF9D106AC6D0780D93E84099F9A07494DE70CD5BDB28B2B7AE3C0A986CD058CAC8F8AE74C6A03D622D969A9D66297319A5B387C0F473BAE3B2F9F21FA75F3C066ED3391CB68949F787DA828ED1BB3E70DB104CA77D9DF2239E8B6402070BD2D2097839809DFAD9B27C1827CB7790613A22A6A7E5A27780CA374E5D3D7C0033F6E0F9976B20BC9CBE76D20251B1DD24D985F116411F2D68284915F1FDBEB5C5B835565AA21198FDC559101716133ADCB5B46330F729EF4C1BF2C970886CACBF46CB5951F3EB1C3089A5430C65407A47F2C764445C32CE341AFE8F3977C30FC963DB3EC1404760C5BEE8347459A81BD25A3E1B699B1A6CCD2CFCA9E3AA22EDAA73234A2636EF9BBDA84649A40798317D61FACF8E01DE1ED733BE378AC7377D921AE4684A9D6FF682D4DCB998FF8F6A425C5DC3729AB2C51B3C2AA682DC76D90EA42F75D9409B2376C6CA5566B4123F76D0E8FB5985ED3A2339A67510A6246CFE7EA0326C63085188E249070B0C25F7B8698C2FB380DD3494A411F8FBAA4022E842293AFFE5EE93BF5F0F5DD79FB69BC07E82570DEF3B2A8CF42F07DC10BCDD5BD6D603BB83F83A0634AB35A0FB15144265F3BD430BB2CE42C563C2CF834D15F7536617F838385F77A35E368047FCB09B1975F2256FBAD874709917A241C4F81A558AFED14B0ECEEC8BC7C2DB9083A8E9A82DF9A5B71C78B3293F4756307304FA56711F2E4E0008C12AA66BB7320393FFCFBC77E9D5677767FD6E612D327833D3BE691E72104B0707681E4C49D963FA5F8DCD700D6B935604D17B4DEEF0423E3ABCB5634B48B5BE0AB89B82B30C7257BD6D6E0A16287A80169D40112EE81B666413D76D13827214AE041102692243E1E8DD1F1CA8A10B9CBEFE025DBD850C07AE98D7EF9D7C7BA76C8808668592FECE1F644111D23F0780F4F87C776D2D45118BA2878BA26B66B68FBE94409DECA68C2909EE2DCBEC3DB8ADD282261C21BAFD2040A5C9166AF74D13CD0C457DB6A738590DBA396C8848A67451104BFBF50A27CC8B41A8D9C33689011759383B1186DD4B531CCC32D111183EC10ADFFE2D848D6B292D2D2E1C4E1115C6DCFA4DC6DE1523AEE9D7E9C78C22FCF7B6444CDFDD64EC7481325B869A3599B5251ACD0E6F584BAEFA66A247B78F391D86E4FF62E59B6D251B9F7F4D581B5F619BE24359F5EFB0E79E28E732AE5E39A1FCDADB6ED89742CDB52C914FFE8C4B4AB38E84A78936363DA6D36021885DCADD88944E807B04634E0176B0D34C493AD82F53D88EEB7E612FBABAD67EA50AE24E5D7F9F3F39715726BE86684137F1335EF9E97AB20C54B908951D5EA24AD0E707B90EA7CDA6633DAEF323F0E8E5655FF1A2E5F0A019244EE12DD330CBE961D1DA396A9CBECFEECB3F478EB8AE4DA0F1D4E244CF68318FBD7DA17F72A15C68FA3B846F42B74DF6E8A04939A26AFF2D40B118A97BA1A6BF346A7EAECFFD53B90B333BE7DE2818931CF33122C51C67B06154748C225ABCE21FF77456912E4991D1EFA1776F814F63AC0BE38637581B6009EBD8F988BF10C365EE689725BEEDF21760BBEC74E9EEA0490418E5E339A9BA0D92F56CD0EBCBF626DDC513E2FA0947AC3143E15D8A6A3A7811D532740EB6BCF6CADE30E546A321CE0C77F13D8878DEF6C3756B88380AD209975B8992CBC7BB19F0AA11DCE90DFB230BD2F2865B0512D0CB33944DCF2B4BE456E461E45A5B20629CF0A5E5A9751D01EA873B3F392957CACA18826784AB808B529E87548BC14E721F773CD21C0342BC6EDE366CBFDA40E3EF85EACA247FCF09F09D42B241F87DE17AD8F1D8C563BD2BF5FAB5B93B8162EB96688D09A4B1913AB375749CDBEC830FBCD4911B6D85E5E0E06891B24AA24883D8AC936948778182509518514BCA69C72374BACE1DCE8509F78A5B93EC128D1DBE8C79096CEEA6DBFC902D40C6F213BA3CE66C74FD21E788710FC3687E7000DAFD8513E780049A84B73DDBA6E7BDD3E8535C70092A4F77E68DB914A7158B26402EE5138262E350D0309FB9C6AA6EE37E8868AAF360DB8C61C19F3F98DD707570C9094C30D0D11906491C9BBDEB70273F4B09CBC979212023DB43E60027C06EDD3BD6E609A3381A0CEDFA2404863161E9591CD127EF72629A3515B9670F0693A50C266DE8705907D2F20802CF041C81B96116A236AA1CF7045B67D67EBF47CE0B1A353AEC505AE9DFC4E50D6EF610CCD61BB8EE1FCDCA7DA4B104E0B64A07D508ABB60632B1D53AC74AB56E95CB9A0B77E91A2FABE26F8294C6FE4B615E968807003125C0AC165D1E650B62EA85E61D22D5BA944EB5932F34A67F134E38BF6BA255A35E01ED1B0708505858C7D60B7913425AEDF86CBD02D9749AC2B53033545F6B6464E09AB1906FCD54108103E49F83D820D65887035F59F783847FFE6E12DB1A5896D9FCFA543A7D8B636E395753AF02C3C02CF24A3BAEE251CE77C6127C2F4E26A2A964486980F4A790656E6C2E477B72864C32D0AC4C5D065DA57CD3EF13ADECFFB432DEDC9429341A760204447CF420384519AFA3DED9A9BB0316E4094AD4F01D756B054661092C6CF9C09F03183650B65ABEBED11D74885EB028395A6BAE336CAA657CEF58A41FF2081A1E718E08205973004098D7281C28BA2081E778AD1BFBB18F33EA73DD08854843FA7E3CCB24ACA206D44E521B92FDBE06E770E73207C8B9A1EC7A58EDF30D25B7DE151B02BF64A90FF107D17D73A5B95A9CE9D06C00217A9AB1169196C041A901A182977117A2D7A995767A21F11D98B9883DFAC5AA539E8AFB464952BFAFDA619A005CBC17AF8C4A3365B394840F5CE180CBAC6BCCDFA890D17D983E52460904AA631BD5517538886B37F63638756C072EA4C4E78706E2E0D10BB037A38DC966852ADE71BDE45528AD4BB00EC2F5D0318D654B424A2DDC6E36F9171A2D5160D87C5FECE621572E73D4D4BF959327486260E30F74D1EF26E0B75958E61BB510877932B13E80E5A2DB390A5F7F6D21FFE0F599BB6D3D42179A950DBCE420374ED4FFE8FD335E0419A7C1F5CA6BB91EA5BD8CA7513FAECD5E4988B308D99971A5F172D7938474A2B17C2B663C20DD92EE3EC8B21320DE6E57A83ABC5273A439ED1655499A6BE057AC9AE144FDCB6091090F42BADA332E9600DAA7A8799E6ED0DBC0A66ED4E2A80BB0582BC3086F37993C4F3A7E7DEEC9083DA0F17A59F375047937A25A96155D89A01630EEDD0AEFA4ADD8D1A7E9E8C7D7BCFE846FEA87372CA533810CD3DD94716BA15E6617647733188458D37B3C27921DEE1F7F8202B11E70FDD28DD17468E7258C37737B8063C18580A7EF65EFE742CD59B1E96090D20B458D341A782638710F627D50C2482B07433B63D3C1FEC80CB920C6287F069F89C50B3602679C0F1394E4D352655F030355432721FF9739F2B51F4BB46ACB5DEA82C0E7C4851B8D22CC1B69D0551AA2159C220D33BB2668F57A5FF404FCA4B03A10616BB9A7167151BB7158A2C796022D3B1014FD4FFD2CAF8881C89E629AC8F4399030D567B73056CC633E16E8D57A4F71CDC0304257B6972DBD59AB7ADF46FBB779273FC97232B6763BD7DA41F1BA5FBB151198A55F447E8C12B0ED304B26BF66000DD4BB6FF4140A95FBCA0285B23721B829F92111C546B3D7DB2C86DFE4671EEF0937994F7E3FB1030D1D619E901BA3D6D9AAAE538D6949C0B87E344562A191F037F0CEF2B66BA4EE8298DB1FD246D5812BF354B7BD4002571961FE72E5DE1DAB3EEE9177DD47702B954B577A37594D7C2640EE259AC1DA93D5162B8676BBE5EB5DC362BA143AFB7D21CD5E642592AFD0D67F843A0A0A1027F43DFF686E4BBFBEF1ABF5ACB5440A1ECA506A8BDDE4EAE52B672A1806016B8B98D8A7E515C840357193C33A8B7F3293481D7F7556364035D361E721660484C363927B330A481A118922265941C8B366EFDABCB7C8C01999F7592B7D3B29C8639A1C1CB8C6C199B79CAADA3D7D5B67B3D0858D31CEFF84820E39D4AB608793B5142859A3C74F379CEF0CF1E217D1AE9421BDAD4A5BA8A5AC94C9D0AD854B95AAF3DC7169BCAA6083EED82F8EDFA5CE71C4A1BA7C9985A05E7C3BAA5864C7FFEABC8EAE34654AA7DDAD322908C981E28B0B1A78EDDEB864657BAEF7E8DF632AE675D010408239327CA3487973669C14484D8B8F0631963918F4A6367E30183F3F73A581539958ACD57E543DBF5879476DC5362B40EBB1080BB87B7417619EA9D7E20E4E33644171078E5DDBF9D12D569B42BD1937C690997DB5199082EB26B638DC0C11439E64BFC8D79709C415C437A5FEF1E000C7ED4F4C6F951BFD67188EC8E468B6135ACED78D4FB4314F82FBB8556F6D7E1A677858E21682B90DC04F496BA671230D0430B14947537DE1C46EF3DD9B85AB79030B72A03C3D36B11BA964335B565B7711EE3BD15237C8A8669E8950E57567EEE80996C7E8CC61EF59C1E0009D37D9C169B663A1EE41AE4DA2DC49AC925090C97AA5FE3B38498FB18CAFD394727A07D3CA6F9EADBE54907A473901ABB523759E3E5CC821D3F62885D3913AADBBBD4EF91C69F5BC98C181540E99F3A882AF90535E35ACC12B19CE0125F84FC0FD6C8F82A4F7FDBB62422A7F752BF0BDB123DC575CB83E711DE8B8B9C8814AAEAD7A972DD5BF5804D095AE1541A35A0DA101D76F53D114F204520181058079BB80760D8213A40BE9DF25DCAE951C7A273D50F60D0E8075660C1E1B1458F88F397C690DEF274FFA1259A4B57664E57694C68059816F3238AF1EEC48705CDC200AC9FB2487C6A53286A4B7068AECB1BB1CDBEF39A6C60625875C07AC843491CFB7A92C69F7A6457013F0A992B745C64EFC6B15754418DC034825E11FBA604202DCA2A48EB3A570133C5074A3A8BF43B2D5135FBB8240E1891B1F084765B7A979C99853FCBD16669FCFABEF72FCBC1CBA3477D15BD251E29A8F85A6DA424DFBB51A42364FF146D97ECCEF3D07AAE252CF41FD5CB1043461F54C55E7F75A882B8CF5AD9EAFBCF23704588EA688B260A95FA0E32A1CD8740D106C3B2482FDA2F1CCED68C760C8D9F1EEAB16784056DBD0A148789B884E6CC9C8A3FEF3D32FF2FC137BF011906405D4B7250FA845FA102DD140231EB138BAC69DCEA04AFB32D8EFDBB1D7D010FFA5CD85C560E0D450C2D62B297FD0079D271310DCE94F757B425F167DB9B66F776D2CD6664D3C5C663769EE9A8D8155282C43DD0094439E40D18A76748FDB3A63D3661F1AC5F0437B3DB1AB0AC22E4D65BCAB7F315D1C50B7229BEB1326E7F30CB339181AE95055EB860B92E220F531407E31702D1919B467E7981AE443815DDE58CDBFA2750ECEBC65414C998DB5265A22B5DB6F39B75918BEB24CD89AA85B10F164A2BE7AA2BF129BB0E9AAB0637E34702826B3C301C4860A7BE0659237B1AE6FECA53AB06BCEE6277D832EB515751ADA360470C82FB6005D47A67C9EFFFD156E46EB759AC1A7A80E290497BB06A0DFAC6D7A6E1807C3DD296E232A287B8C43F9DFC18E4B1C15F69DBC7A4647133F19A912AD35EDFC4DC79B5959CC12527B6A307907272EB96FA6132D1E0FAECD4149C4008CB539D1F3B463EA363D93019E090BEE4F1012D2CA2CBB98194E136C063D5645412ACEAFF0473EBF7E95106E21B636D6C6827C83FB63ACF932A6E8A7B4F2109ACED54CD5B429F0E2B1351F9127FCE574D3C2F264CE29D2B34857ECF48E20F4B51009164DD66B172A472034B6F1C828ABD0571B8C6C6742C7F542574B1F8A935E66168677D02C8BD95BE499ABF3FB2D0B9E336CF38E51659464E3BC69556ADD3934C56CA96F397D3A4FB2D401C87F0E19DD0513DCA67010A0E5AC26438D434464F05C936CFE51FBD5084092E9DB13C3B9F809BBB8CADE2DB44ABF0D00291AD1148BD40E353E6DEE6E389336D07572809F648D1198D3EFCF82767E0D1440DF264D3B55E305E3C77974B16D0FF999AA83316E2511239208840B0C643E52C217CC8BB3636B321F4DCB9742EF06F5D7A2DEE8429EA25B12D2707261FF4740159ECEED94249A30159836F18999FB1F752BDC8F13BF45FB85F92D492578263F7503022722EC8AEF339A5E36D87A609F1EF2C3B8010287E8423A05527A83D8AD8BCF8127521E5697FE3DC5D53FE98AFB7F926DE5C012AC72812BE2F684E19883F15733AB66FFF5BFF3CE027BDEF29C1078FB0003DAE8D02667A1EDB881C5CD7655A4CAB424DCE0632E1F6462F5FE48AE504BD8FC893A9DB8E0F3E875045E9C7400EA19AEC2D79DFEDD825CB3CEEC66BBCC789DFDABC6DF3B06E43A9B23A6B96D7CD0174ED4751DFED317794F463230078448CDD2CE6B699EDE31C9F746CD9CA95253C4941CD8EF6FAE7C94A8C58F9D0BA22F742CA186AA04B389CB82364108CAAB1DDE5606DB50BA3A57A417A946C4DDF260EEBCBE1DAC98C1F839253D3B8F8768BE0E9E450A5D56295AAA2D9CBE269A46D2FA9F984A1236E0E2119FFE12E4D9CA521B3E917D9AA4D70E264275DB46D0737CBEAE707F30410DBFB9A8D1573223DA759210D1BA388A297AE0A1D60AAB735A155EC57091C172071B5F22C60CDE5F9A8033F44D6825A6D5D28CCFAF771308B532FFF00D3CA4572CEEC38F5478634D77B7BC419012794A6144460A3536363012DF708707C3FA14B5BA3051854546ECD3A20BDA54E72DB8F5DEC9B7B8941D79AB815EE96E3050CA44A617DA4B5635F8CF8B105B94B722057DF324A268AF4F705EAD13F405177BD3AE816262F46D7E409349092EA3BDF3A889D3CB40347709E776E5E639CB1306D2A06EB717979037881C5EC36B785217246E78BF82661DDD043FE3696DF34BEC151DBCA8BE759C2C07C2228B834EC73563C97931978B0F62E461AA297977145651814F1AE6087E38B6FD67BFC7B06F3FABB721E638A92A9302F34402B0005EE00289AAEE7E5E8289029710C3B50EE8ED5B530B13CA53ACA383251FA40FBB3BEF49504C9C730E76801154DD38B5DFE89145468B6FDCA455E5EF7DE45F9632A2606874342B0D43CA4B9A914E77646B43681E4A30A65783B870BAF095B48283D905995BA6FA92CEC383059171056BF846EEF3569DF85CEB2F5ACB4B274F646460D7BD3AFB5AA77EE27CCF7652580D25D0EB0AAB02F5964FD0D8F37F5A916A2A63D18131E46AA0011E1398E16F5B5E61B248DB05E6AF524D860B13281EC9AA396AA7F382440BF676D87F687854501849A8B91DDE3B6D0616358678A5F3A00879FAE50024AB14A62A1071CF1CA3B4FF59F21DF686D504B068EB79A795AD7FE98E28E245E3988D8A4D67BCE0729DAB463E0518648F207D44DBE1339AAA0168395F4F1F8A71078BC94FD35E4CCE07CBB36AC60AB99E6A23AE15855A65DE47386E6FA476DC238DA51DC4CF347231E45FD15A899BE53A662BE8BA5E75CD764694323CA9023CCC91B9B0443C263EE8A88F58B333C8F3819D6138D915247CAE44949463E359DE0C06FA83B7830D25585478150194368A0E674BFC882062E9DAFD6CB6414B63868D4D6B0FFFD42873B351EFA58D64DFC1D9A34A5B4B7F19B313F8F8C2D425D91699EA354AEB54177C5029168E29408E3754FA3E812D58E4EE5F2566D6A8A283E4DDDB5F1C9CB6A8956B8D415522C55005B362D8858975AED97CE83788A20AAACA9CF4F9A25A2BA460583DFDBF0165BD0CDCD22343C9BCDA672E81530B89B31858B10070C74949F84671BA6B2271B63B9D3E7A5F897B200F36B1D57366CD731D0B2F72AA17675B8E4599FA59AD08568B5D9E16FD3E445CAA4FA623CB96A40446CEE4722EE83B5D155777C05BE61E2C92B64A6DF22941F021CE8E9E7FAB610BC804DC2FE4CB1869B1C16DF3020576C57CE2168148E2E22EFE5CE4CA97B2A00DF70BAF82265A48ED73D6B94C3C8209966A50867286AA333778E0F822B0FD4491857E91AAFF3E0DE69B03B5073A53EFDA0A018AC6782EC8B4E99991D1BEE19F0AA7999033B4B10870B3B4F7FA1DA489A46E412A3B3A46C47EE7828C7BEBAA87781A8A8DBCEA75CEEA3B87EB2D2827646E126921965926BC98B965F0BC2F0A2958A5E069C10BFE8AB54EFF495DF92497D2383E0D6F27F2750A7EF26A59BA28A0B3A883D242B1DA97B8AD2521C8BD4B5B06BF46D9EDADA08EE80FDA9AE3FDAA3FBAD8A602CA8AFEE18665BE7507089414D34FC8079298FE17DF7BF29B1462E16C4A8594B115FED840FEE6018823C3B4E91BAA7A670E3D8E9885CCAEA1F34D5EA6C64DF1D2B9C5DFF01D92E608BB9739DA40BC5315271A71DDE5B46F6044BD425A29E26D8D2A2A14A25D01083A11CBBE5CDE0AAC48F16CA7B69E996EBE871B97E45ED0CD762EB30FF33BC05DA40992F46147AE79C346B15E2829AE0630A25F71906A72ECCD9DACB6B7F87F4C94429A04BB7C9D43AF62C9F5BBA86EC051C17D9591380AE2B5671FA7FB97D1C128795FA0E9C4EF5825E0F90E47446CFE07FF2F532 +sk = 7C9935A0B07694AA0C6D10E4DB6B1ADD2FD81A25CCB14803EA65678D51C860A57333AB3860CB7B34C7DF3C596729D75CE3A1AC8A68F892F9BBDFF5FAD14D7DBDF05195E560A2215909476229454A723C693689F6D69E3ECFD43CD147B833073F8192ED23D003FC5AFBDA982906E3AB508D6F77A76F7F01D470BE85AB09B96058E21A6E8BFA3ED087337FAC820D6BACB6392A7D9978842E7D832D95347C1C9B217CA1479F3A86C67B15B6960E8986FD0A46456A0F72EAEACE4C06BA4E6D0183590278630443E8D4B199FFDB0A49F361DF4562A6566566223F451D582CB382C2B3A8D9454E116D8BE56004F6768A8E9609C87B98698934DFD22A409F47FA853030743216119D926C231AAD39E3366DDAED478375B09F1C6D9811E146B536B6695FE8E99342696061E92A46C9E18BC593816668C96BD86322DAE95269F5512CE9BCEA77E9F5F0772D32712BA6B57F13CD5CFF8044057C91B6735CA6736CFAF13CC3321E3B6F54AFA7B999DF307A1BABC7F8FE35B72F77595B6F2A997654675702BA8ACA4CAB9680A316E6375A67EEA1D424BE7A61076A32DF34BD615978A2560DF15B88B8C47E4679032DA6F6161F44726E9F9AA582A6767FB4638DA24168B9FEEB7344B286A95B9A013E9D19BC153000FE5A7A50B1D80C365FC501A26A8776A64B2DA4792FC807013A849306145D400EDD5BA9DB44EC1137CEC132939FE3A39CF9D09FA392ACE1D7E808EC3BC13778BC6E4A6E3D54301B9F7CBA96A36D5414593CB6A21C8CCD4DD25AA16612B0C453BBB7C016DC6EAAADC7F49FB48FB3402FCC452B47B93E16651E76C503F8B27CA27EA7DDD6F8AA8B659F26C51BBC6EC610132893FF919239F72821C7BCA16A3987404F720DB2485F6BF2777C8BE0FA2338227255F4874394CB579BEF11ECC8B1D377F3BE0DB5F69988DF7B7486ADD587AD62E5CF309BB8D3D9CF6D14F0DC4D21CFB8852585BD0551E9C8AF91C3CA8C1DD2BF551F802FE5E2E6E822D6E0090A2530E25CEA1C9287D247C17217BF38AC9A4319BC032B2B9A4D39D5EF6726FD1344E63D7F8C2C1BA091A73095CE5D588FBE7F8A7371F75E784EC4DCFB1D677E82E5E18F0D0DB7541957262FB57D7B371A046427B0986F1E8BB3B650A4583A2412C4FCC141B02A8C33F02CDEA16624A5108F96708CE133E47DEDCBD920BF9C11CBAD564FD9BC14B6DBBC5B545DFB34AD42FA461B35DB9A64A025843C226143C824CC0D7FE51B41D7995E965A2EB2249CC2E98FE7B71F830BED731206F062F700F82CE9B6173BAEAC57CA73999CBAEEB5982E9AC4440BC18F9ACF40114DA4D0050FEF526C92EBDA9005DC01369032F9552ABDDC0ED66AE88CC50683414EDC589ECE9903B202EABF873DFEE5C2ABDE04C6F70EE9B52FC2FCAB42FE60228E707A6AABDABF4D65EE20B88B4BC9AC0C8A19ADF59F45FADA1974371DED18B52034FA5EA170EDA73CB263A8F1FE69F1ADD1E85C54B1BEF11BD84282C7CC18C47E4EE1B138EF0439B6095BEB21278A8CFDB6B237C91F84A7AB77C20E3A24787E1A1C56954D9D4D2240BAD0F00593E6B6DB231CBEBC3E818031F9A28D462E4DB0BC8D68034A953D7C1997D7FD9819B5F9F751C389C616F52E59074397C67E2A4AB6CB2B1C8A85F58E3AC42FEB117838595F0E42F39B1EA27163F267C098D9C78D92C65FC2075CE869731905CCD074A4E4930376A49CA85BB7629BDA4FE4E55A3A1C3B65E7B35AE0530D9EF4715D7295C79985916B5905E23F1D129042105B8237D67146107222FB33C3E1640E894D0FE3E5AF8CBEEB3A986F2A5FAF82BEF23FA88D6D6B141B31F9BCE043DD34C64F9DBD57FA3AC9765E888EA67396859ADF0706769C6E674C9DF1937B11623684D85BADEB8507C8F7A43FF627C84B8BECC693A3528F9F329C48865B4837A26C2E381435A8BB51D079B37E8027B69C9570841EB85241E320C87EA83C1DAC663C0321154DCFD64E7CA150F36D2958BF3399DC52C665C993ADE3FC15A4AE52816AED9144668812195999CDFBB627D84071124AE6994B1B854186048960E6D125132C5ECC9FADE6AE63EB2B84751A6CFA5C4B70338491AFE273289F9AF02C448CEEF2AF4503D388006CCF3DD923B5B049DC6CB14ECF64C53CE51648FE336A3C02C4D8DB2F7A82F0F069FD1055647C233A7E1C26782FD2F6BB009BB1965BF1F0DD0D835DB1A0BF03940377F2085006D09465581A5E9608A3CA63CCA46ECB26FF6468E2579340D24E0E1B0C2DD4390BEB09C33ED657A27D7C90796495DF276A6125CE324C15CA1EDA8CDFDCC0BF59F420D4DF9BE179353D790B9250FAE4399F19B2631BC2E6F4B89E21B42D6297A4226F7293FA44C212C5A7D47FB0804E65BDA27251F059B3A46EDB772E86C7B5AF699E25E48C08E905E281384D1813FC61A8C94742C9CD557FEAB41F68420B54E96DFAC4E670424A9D14B084EB80BB40E555E7AD59C9E21A57AFEB065C9154791BADFF8D1261BFB6FAE87E8CEA3D038E2E3E3D71C006ACDF00E6B51213590B1EE133477CBF92B9924C7D656C2AA32C876D797E4424F6D73FDF28CBBD7E460BB6811D279F4A4DCCE58E17A46FDDD375877C0906BA9565DAC4FF4002884493B4E1C0FC8D4BD4B5BE4CC8D1DD38901F8ED81ADFBEC823A8E4AF9E08583FFD0A60DC6355D7855E51917FEE118ED304DEA7BDA2EE0943CF7F269F45CB3C347E975B16EBE08F705880363A2A2E1570E90E9FE953073DAD95A9AEB5E9903EBE2944AD43DE1201D4B0473CF72A11FB1D555C9314BA27DB272BD90E047675122137D4FBBE767FF7C0DF04DAC2C6AA34F3EBFD26AC67B75777B9B7154C2E7CD6E61D8B8EB1A613A90F8D9121EC37C70100EE6CF125C41F0F9F2A420D74334011ECC5FB8B9A96E32A791DC9EB501A52F639C3FC5960DC7885D9833855511B08365709175DE3D1EF5EC7F85D0061935AF52188A8D8B42A5471E40375353245979B6E4D805FD75616BC3002A23D4E4315DBFB176021754A41613C2BACB1D64FA420BCED8EE8BF459FA4DAE41E9828A6EE2A9C06A01854B8D30476799C1AD72B711947DE80B811575219F99A623FB761158D862F0E2D436A4D4D1F8721A71A12823D5D786DA8ED29E95ED8098B521FB59B535A9C954B02F195F0BC874829834A168F15DD10CA78F6357FE9105CD7961AC9EE2A42E3F780DE0B6065A6E0327C498A3284FD31BFCB4BC9FF7E635B8311A4D8B7F6FC543D8F23070BC10336AC24090592CCD3DD7ADA3D6CD17D2118D9B34E98B4A4C6C2FCD9FF045BCD67973080DED5D2CE603A7153796B03A3BB673D7767275D0926A53960DA1D39014D6A0E18BA8AF8F98068816BD436696FF9EF11EF578A403C73A99E390C4BAF532B9F18010E18A980554A56AD3963A0DEB66F7FD7CD77ECF056B92F05819332DC377DEAFA4C2C5A44B7BB16EE846396C89650B75C69E5F4A40AF2148B9C6BEEA418BA5A326E0F1F9FBD03A55ED33D5C39315A035D9D3B5C3519DA29122EACDB7A9E4F50F24883D217FFABB12F44FE8BB8C621BAC691B6AB1F3C0922BAB3A0DF26C2C44162F3399EE333C05D55BD31D774D83FF32A1D13596CB205C00C162F5D8A7D8AF2913B432315D86D1B7EBFDD7FF32CC2514702E2DC52BB9DB795861DF9AEE06C5E32B9CA3B11FD11EA71D97195DEBD7651DAA88E660CD54D53174F410C3237E2CA3F78F66E17895F54A738C0E6200C10D2DFB375B573A099CDC4EB305CA4623BE87D13322BEC46925752157B7A3A53D2AD2C422EB9B0BA1F26DCA9171300F0D9E957E6AEC13EE0BAE92EA493EF803EF85947FB4C589AD980CB216BA2FD5B46CBFD7EFC11102E57EC987B63AA1CADD4BFDC785630BE55F0DC54EBCB4D351B38909EC77D11AEAB1C71E9D3956A48B386707637C618D23DA93E206595D0E2DA4247F228197F8F75FBF146E479CF752C486958CF79AB12C64738FE3637446A5CFA8405CC6CAFCE311080A0DD81F69EE5D0A150F0E8B392B5D2169CC46845818E71D0F4BABBA8CB1B2DEBCDDC10BBAC97987585AF2D6AEE00281354DD3580DE4180B89398ED97D092E5430740F06D4DBAAE201400F2DA2B445D46ED75DDF0591BE03913DCA1053B430E5AD3FD779DE2117AC725E88F89336DFED251187A39DC297E811F533E24438CB9DD8F190D8C3507E3ABFD8E73AA309E3CA1DAC022B3C1D0EDB49C3162C48094DE43EB0ABF32A11CC2FFB82509D90AFC7E7B2ABBEC76847A593715365533ADD5F07B23C7F2D67624FE5A8AC78A4D0DD9DB26727231B66ADF4B75F079BDF16D8D8181E5738929594B43E6BB76340CEB1AE942CF3DC0C560CC491B11CC72271E9427F0709A738A2E7E6D5623BCBE4DB76BA81AB365443C006E711F8DC7973091A89BDE316942F080DAB637654FB95505D1127ADC824ABA0021DCB2DB3643066567235E7545283F8C70F5D2AB13EBABC00E51CD3D1D5FB9CDDEABF69E8BC05587D113356BB2EAAE43D624557D936C39996B5B5B1DB2569EB31A425A7D4FB5A0F522BE7853A3AD59AD323BCA56E369A7F380955CBA44740A08F5AB56CC634F614F36583A5E404AE0228D55F9A8250F77500A9E9CE4EA21B75308E5437D927D2FF35687B26992B8994AB197691A7D1A8477186FF33DBBCCEC04E98B10D52071933053724B15162B696AFE7921D202EF3FC387F893E5B24335BE818EDCF8EF6ED2CA2E3FE7EC1D97298C1660AD25E0A93D33737C4391DC2A7DDB1B582F4ACC25EA8078C21690DF56E041A9FC0A043105FE2D3C1B609D8E36DF86F3D96E4DB0CDC5D22420E9733B36BB269C45812B59675B2AC69486C77716E842EB48D4EEA9B6DC01D84A33B64198370572163EF5B80776D3FCC0EC0829382DE21F117C6887343F8C1E0D15D5D7714495A8407EE18D02A69C22D20B3119FA6EFC0140673B83252E9B678303DA418098B7DC9219556F15CA5B78CB2BA6E6C1E180B33BA31B88F9B09E39CA1B348ACAE9D563FB023760DBA8E68C88317F2F24E0AD0BC51F48520F97AF1187FF9B80D23F3D1A5CB531625F6F6E72AEB77876B47A1DF96012C75D2BA829A22240E2F9FBF610532E45747CE685444F05F7E3DA92407FC8FE5D837E3C444CDDAD0728F76414DBC37E98F58AED8B28265274005B9E4E56033A043E0A919975BF719C98BAEDB67F699FB3E7C7AA64D4694F2531FB0643B47EF52DE296D48E8F9BFA2C1AF27F3DA8DF8D8D8FBFA9E39F39E7735BAAD36E014D2269F83B7CCBB5E7868BAEFF2D1B495A93D907BBD0A797BCE5829F9D4BED8F3B5F5B17E5B406F8ED198B0FCC4F8FA4D7E6911CD07F825C0ABA26584807D067A5EA0BA49B2E89F4F53684DCB8F851240E6F1B4B7F9F2DEB1C8585064E9C6AFAFCD168C320882768252A362A2C7089432D559FF57DA982F83642B04048F09F8F67E03C8E2F90E2095AD51001B54DEB6B0C13CBA538FA53138A282AB96B8E35A1CF9D187868FF80C9EBE7FEDED5854F0209E766EEBA22F55078C44D9E098B217DFA6C1576F837CD087F306A24FE4F0471FAEFC0863944770CC5C06EEAF461D7EC2C5F20B03618897DCDD5C7C552B7FB373DAA9BB765A35B3FB7A2EDCBEE0672F0A0C2DC5FCAFB310F8B9573311A9665DBCA34B4D0A66956B3CA9363B85EAA401019F93FA6B321F1CBF4583611BFDE37D50CF3E1A4CB4447B5E3E6FD83F01E36B51F2CD347F7B3FB9C442EDE422CF6393B6553EC53C1ADBA31F1EBCBACBB420EBDDE29C58120C7ADC87A713F6218AE980B0AC85B4C3169DF04B1B5246A3DF84FE7DB046A89FB8000BABF19141619B6B966D6056A2B0CDFA926E895E33301D79CDF026657CEB5230216A0DAA6B65530DD58AF3B69BA3095F934E17CD01EC3F05A299D0552D2757BD368F892E2DEA5155EA2742C90BF1163553A5FFB66DF82753CE3499051AC0CD19490E878F660465D854FB81A2810F076408951EB1EDB818BDE002E72D2BBCAF52659DF8A9911394152DD8B1D2BEFF67875FA2110B3D5E18BAF36FE9F8EBE519C466B6E9A1D326C997820D2A1ED3601BBACF79D15050CDA392C5AEA063CED3CFB5EA236938CA387D772928C5798ABA379086188ED8D6982A474FB0D2ED7ED492D2D6E9859FFEFFF5334D24644F59D011BBB6E612DD3AD39098F031F761CFF0B83D961B8CB28E515521EE018160FBEF11544F3E9BF32D5F0F14E64D8ACF6ADB21E08C7EF3C0915F65FD9A28686AD33B70951E9D0CA553CDD92ECEAD61BA293B9B1857C62B525E209AAB0E582528616C9FBA27DBAF10F2D9F8DC8ACA3821B3B3912F09C23F864A0CB00521E95110E28F4E3B4FCBB42CF270B21119F2C55755971E1D5EEC2AF35A097E618C5787C4952EDE2A0CC298BE52D5AFDBE22402287A62C4281EBF86A7779C090B6B8BD7F715DA646B73C228B89D9D12216ADB89D5085B66B7C1D999BB7BB11C79130317C0AFB895D0E732A7A621B78031B358FC8E71635A4EA7DB3FB9077B114CCCD3962B5E610342FBF117C4559B20CFD50D8EDA9E0CED412E4F6FCE8F145EB7ED1DAA5D16F41FCFE2F83D14D9D5E7A1784A3045A6EC5BCB4E59376B3781F2F97AF403AA10DD40C02DAF083DE2338060B89C48D893F59AD94CAA487BA73A0DD17FF95A4FF64DF2492CB6924101B5E1B028601F2E08990AB195908E41F25E220355A9A93B2563A55213893679951951A6F4D78B77F0449EA1AD9882CA2B7AF5B5397F2570CEBF7DF97E4B312ADDA03965E02B90316348EBC60CB2CD7BFEA1AC38F568E8763E4F0CB264653E9AD82AC14FEB83B22957C7DE7146A4C6650ED5A76AA59C698E78D3C6E8622752F3E0F89257E1ECE0B0131BD91E0D582EB93E6DB8F3C40D3E442F30B0AEC6D8EAFF8AB2436A86F2B30093DAF8A0449DCB3FD11657693D9D4DDDFA4550796F1DDAF7D610B68E4461C5B03FE7DE8711FA5B8B568F9359AA8A7ADE38BCD613A1544689F3321F4DA7F73B028339C980CBF57E72DF4EB4CB0C1405DEC2BD874DE2D36D870F206C88C3CE0DEDBA5BADBB2093481F453364DE177527D8781EC4AF17FD61F13F45AEDDB5CD004F2DE18721E37A0B9A7199568C8C3EAECFDE8123CC9C3350EA4B94EC1B3D10B76B95A2774AD402FDCF8E45AE51E8D040BC526EF09B853A401BFC42C7B6A4397CFEB80FB1E6720839670E8220153E642401D23C23066982F3FBBC16F746ACB3A2394244D429482D71F533E02183DCFBBA3087820996BAE713500769B2CE5C12230FB4219067422894B13AEB4F4E483678B38FE88589F99CD24D3719055CE12B42C3DBE8BB096C55E5E3435D5081129654E6F336EFB99F50183D7889FFFBC4520C71AD4444B703666082E613D464277A462C1BED171C4D474DFD1521B67FA75C0DA7D3C6A18B568E99A1AD52C2BA0016B4C16288A1F547726FCEAFEC5DE29B30E708E8C3AFE318DF0C08DBC7B616533CA75287CC94157F7AF54F7A2814D8D22D44700FD159B82841BB3D415DD5776B2008502242308F1652391F456A1FE25706746672A53FDAD26829F949506FC10299B18508BC801AD3F28957F43DFB4A9F225AFF51AE1BEA1227713067BAB72C53D965B2524C50D3D77D0E007DC4F6F56A4B04EE9D65E7C2767F7462673096DA28E87C1D8AD44EE5549A94D3C9B824529698EAD531FB5C14EE08A6B346CA2F1ED8E2F94E556E8A62A4912521B5228813CADE44B9DB0962BEE19FAB17E3AA8B222AF7F73F4CC313AD6AFDE8C9A8861BEC76A17279E33DCA037622562F855D08E5D4C7F8FC1F488B891FFD0301B0199CEEB4F8BAFA70160475EC9DB63EAAB267953F6D40FE170E6449C02E15D6CA5E81AE18931D8045EEAA04C4C5A5B20447D06E7E3B129EB23C1730E94BD551CC269F8048C5261DD92EE4A9A1BE89A99A6871222459A2B825494BDC9ADF0C05DCF7C4EE8D76CBB6633F6B4B42EB9D43C60CD9C924831EC675FC8E0B7DCEC91CF4E44C30C076FA4D713A3FC941D6599878E69644618789261015FFFCD2EB6E7C0186A555595FFB87715B6FDD58AEFA3D9F8742DA9115B5D033AA12C8290B4BEF966C2C17B449DC03D43006871676C87E3A340B0344E0AEEDFF4FEF5E6FF38F2A25F4DC449D14D65EE7A4ED976E94F3737A25803E999923E636592D38129344E9F3BC11BB7E2D5CC1AC4216528D14BD3F4A572A1E69CB8574911EA1F1B4F6D5F5092768989342E97EC5877853188888866677E8696A364B49191603774EAD66CE9E5D293A7BDDE88BCDBB3BC64C09E101B7B400F23EC434B18FF3A3C9F158293A7A6781C92E4086F5E52AC9068FC9C344294A863AAEF487266609D4A980DFE416BC312E621D34DA0EF129B088A4F05DDAB44360F9E86530B43BCE597D943C22294C551267C1409816D2F86BAFE7EE07602E437CCC9B30DC24F195FF65CE12F9E0AF0F309FF75A91B5CB24B2EA6EE257F75FBA4E22965364D0A3F1CF6A8C52BF40459088F3012C839FCA90036BA34CB069DC7E3F2FD8F49F32F56C1060D8BE7E2B465C712983108E727B2592F193985480B660BDE165E7AEFC656E3DCE0F0F32A5BFA222FB6DED02118FED0918ADD578FADCFDB2B0CD4A2A9FC635AD88FA7D537D693CC5B3536379DB36F880B5ADEA3C0DECB5358151C15CBA911B7D6F28F2D74418E4EAB1BD13A10414E6B2C11D38B356599E2AB2CAD09719F90EEA09B81E9D608A6C9D0737B454D2C90CD0909CEF62ABAA35475E798979197370F13DA0FADF75C276A0C69F215F2DDAA625BBB5FC6130E8D5FA47DAAF526C4DBD2AF6FB66B8CBD19C05A4B185EAF0A39CB766DC9DF41A8BFB69F58D708F995A4C44CD58B35B3C28310A2AF89FF9F275194AE6DB8F9A3900F4D329210A69F56BF1378DBD5500197F357AD217C5469B108B82DDE7FC3C67D891123FBEBFF6AA8E123DFD06CA3F396AABD9DB94BA54D99577604047621228E0D316D8DA77C31EC44DE2E22158FC4712A8BC6634684EB8B6798A890E1FF432DCF94D94BFAB7F6D27C8FA4BDEFF974FB52329E6FFF2EF8B49955E3273F8F76E323FFD64D5AC9A36F823A0C5C9D983DC78EF345CF9FD6057B390C5AB341444059D383BD36D3BCEA458131D1436427C3F8C72621A8797C97DB80D47146F9590A63E7710F4105169C9D4A01D4B340CA6EC10E5C3AB4D5A866F77C0BD65CEF0C1BDE08BE8EF191D2EC93C98BA373760DF2924DCB4761C61387F21BF77F84C3FF98AD517BFF0AD628FBCDC781177520230689C8FCA11A98FC2D7EB73065A90BF7D2C1CE02305CF0793F05C9BB17D672B6919D6C07A57A982C518C0229F8B1B6382B6FD00E0982F63453A0DEFF1C46B5041BC15930D31FAF8A929B8C87D59C6F9145D4712B070DA86ECD8FE89F2AE269151765C234EDE327EB0B0B6CC454883982186BDC62C9BC73043367CB05D56922A1F8693322A3348988FB4D9805925657BC588FFBF623FCB403844A3E2ACE2F4AAA2097E7E0751ABA0E8C0C7E3246D9A203DD785E5C0671144C6A7C79684D245603A2E67AD7788FAA4489431B03F9102FA7D87E660AF4AC37C302BD7BBCC6398118F972E83DDBD075391BE4E1CC40DF4748E6FAEB2D19693C72D0FB9C820CA6379CB1DAEBE4132D5E999EBD486AD78B04949D7695BC6434D0B06BD9C6176E737ACDF753146DDE460875CB0B5C47904BF8B9E60B7A278194D01794C2A9D27B26490D00534A0CD4037F2BF80CCE5C023A6E5F7CA787DAB05A95E4FA46188B0604BEC3B607BFA9E3E8014CEF67040B8F96FDE86C48355EFD264503879215CF967EE78E3A261246E8E6AE5650DEBDFFA7C5AD4BD4957C74C89E1F210CC57A19DE7EA1F3578FF1F9E36A5040FB012AACE29D8D689C48183767D0D4DC4FE5A51E419D888BBAAAFA1560404887F50EBB4C6415DD8C632E8D6A343795645796700106D92E2A55CE6C2B452519D2B13A7A011B0DC5730C08A8FAB8267FE10DF39F4404E7178B005DBFDFA2672921B529CD899B891D8B92C1CAC0419ECB3BFA38C6268B4A4BA999B03D739172E18F4A9AE15F0AAA5FA4839C291B99C1E1751BB03923EC4DDC4DCE8861049A012BC9A3A877A7E6EB16D71EDE2C73A061D555A51534ED6577A3BBF32D79F1A7D998B5028583A3488CEF93A34FA81ED1B5F05CC2430C0AA8910020324A7657FACA93E0D1166CA35704EB140260AD223939E209A9241D1392556092F0D97CAB27BBE3C5DFF59FE570862D46BAB0D6A487048AB2E1E0E21F47F86FF42552DC72C62F62616FEC3A094772054F3293801FD9EE698AA844A8B1019A46C004134773EADD54D468C6451E350F394E9B90E9E6BA0218A1BD16FAE919DF90C26D594EA0D1A5AE7D122CE5CB770C0351A91FCEA85D6E1E4F94381BCD715DE7A92CE9DF5477C2D50A96B4076F0885A76094D6EC63A34789B5540E6EDCDA505E8EE6CA756C8D4CBFFA167F24B48823D05EAEF0256854B7A1A7A018393E14F670C66CBC1DBBE2CAE1BBF468F15C60D531B8EB8989B6604B68D297918C34BFDCA9E03F1DD632478409E9DE0E8DDB753B33643DD0F55E315E55FDF9008CB3DAD3BF1A9D846F64FE8AE13806C834661E7B54F6FB5C6C0791D643503AA2F39387DD1C6894D18476A5AB2FD0E4ADAC3F53EB9B6604E36D333BA4D7D721BF1895BA016E9DB6C3C3BE2E04DB186C151139BD02A3BAE24EEFF7930981F797DFF860FCCB5E29F15D05DBD929EC7E9B7D77B455F9F6E8330930E4F7516998292B93C976938F147B5EDAD0B28F21F71D9C5F46DB12A878870A101469E08A5C67286520CA37633CF0B1A5F49EC9798B14A2719F0B9A713DD493D5F2421FBA3A0E38690299452C9C0E028131691B390F4EE547176A4ECE041693C466A2D5648694EB075DDF387B57D41259BCB0DF789B3A632394FAA6524BBBEC4E35328D1221DF86B044056529FA5CE835914BDA486F3E8B73EE48BB526D8CF2966F9086B72588C9535F2F65E5525D9CC7FA367EC340030C101B075CDB82EA286A36D61A3D48381DF78044E9A4706E8E9E0D661CE17649A35366F9CEEB295E0A4C9331090B60763AA3001B51766535E5F32B25DDD1D67139214021AB6D0C9F6A4D44ADC1EBFC61962CE2FC4BE35B409E91D579AE8DEB477F7A1EE4D8DB57B4AE19606DC30B68329F2FE40F24FD39A7E632FA1640C06083FCC068C9B96FA575B6883D971622253291CECF48D6A2640B48C7C3CFE1154B49BB02AC83DD1A47F2302A08CA0342A4E301C20849F02BF3B745EC1F92671B4EE22BE6D96293AD3B7B1F5647DF06CE6F6D018C0E93FFF00AD759990AF34F731361185BA4B927B408138F7A3F60F9BF8B7A72E11D3F8D4D3816704F6B8C80B8B8C6979C4EFAE8C7B597D152FB16E118703ECEA7074F3A2358AD730FA8D0EC20977865D61666F3857C5D57E159BC187B626814C40C110DF2939AB9CE697B7750F3F2E3752F56C459E4F6131B6ABE290545B00765150044DD2A24D26986E209A173B30C416A7D980CEFB6DDFD9856C32C824C39EF5F869C6FE72D4F59080076D8BF2150C9C56CC9AF10B8C247B603AB1C96B89F20D0746CC2954E3A069ECD535251CD430F0B84D24D8EE60E840DF8A22EBFA8DBCAC3C3F06D65388EA36045EA9B6E715CB83D6986538269EC1CF09ABB87FB19E0B85A2C787E07F7E4A01DF7080A706F395DE879EA9E042EAB8BAE4D71A8C4015DC2019A38800E0C2ECF5DFD4B428E760ED4C393E9D9F9DDD6E98C4BCF8B34175DB032BA32B5720BAB09E6DB5BFD9C665A1C4F84FBB125897DDD0D859907314C95403D73F599C1C840344D143CC404279D62FD999C2F33B60A69D6BB19014A624E71EB9FDE6B26125EB3B8C6B4B5F39B6F0A30D2A3419652BF03C8684D47E5D91D4A47276852C2E1380045F0A9D99F63EA1812C81FA07F8210E5EB40FC01929720B24CA38DBAFE3097277B626E419643528CB8ECAF5144E9933DAA0C175B758D74825434A1D9F969E34010B074539006157BB958DC1B9D0EEF75B34A41FCF41708D923F09039515839B19B8AEE519DADE28407FDDE37613D3E4FE77D5FC4CEDEE0AD01CAAEFFCB128DFE1A28E44B5E165DBF92F772777AF115B811C38B7A32EFE76A2F7447482D8F9BFD228BE98C5E48A9C0DEF7DB8EC653C6E0430F8E58C238F22419F0E6FAA84F7FA79B914B2A10A7F6DB2599248EA68C3C9D55E5309DF9161AD9CCBBEC4A463D016C46B09900D7A66D77087BB299AFD10F1658848603FFB50B447EC6F38CF0CF8C2EF0CEA8AFBABEA637077174E78A0C8EE5325B35547FAB1284FE602DF4FD7B5788AE3AB05C8E3B98311A3FAB201ECEF3FB775D06825D026E01E8E0F3EADC9268359B6CB4D809941C9A0347E9D50311FC41D8A8A5ED42CA80692B31F973AF5C6AE82F647B9E043B3A7EC77010596E0369EF202FDFEF6CF45C8D5677CEB2B6499FBD5D306AE8487FAE1173FA8349187F02A1CA02B6300A8578585F3611CBE556D1E17B97AD40CA82918246F0A16C195CFF7326DCEC5560D7303391F04C91F2F2FBB70A95D56BD60DED49444BDB5717CEF118BFA3C6115658F2D6FBF146C93390A5285402D7E0FA09A8EEB517F4594659ECE9DEEFDD6DD9897F42525674C0C83C64A7704184ABFE969FBABCB5FFCC748D6A5E949567DF1699CD42C198BBE0C7D52C0D76C3F753F66B5804C77DD5CCCFB8A60AEF619D88307518876BC43DBA48C6F4C4B0C286550AFACE63962275DEE4AF50EE38651FA00133470884D166744E94654A7FCDB81F5FEC82981F998CDE4F5C4CB8AE4231EBF4B538E51D472FA42980796DE23AAFDEDBFB4442E69F9F2EFF68B20359E26237CD29E621D8309EF64C39066A56B1E361603A593F784108456F5EFC7CB7E70854BAC9AF824948A5B0D929A0A025A5906A9932AD84FF484DF7EA26D3A32A2E97009BB6A7816C9A486D280DA3FB85DD9B72BC77F780C95AAED377CB79E9ABFC1EEADF5AF95FB7A9B85C40CB9E9090FEAE8EFAD4BC56E26F9C47239ED2600260D45C53923E50BF82725425C4A0BADE23199C3A09BE88145254DCCECEC2CA48788863BFC2E503953CF8247279CA0365B49893A395CCEE60DAA31077A4AEA31B864DE97FE60201D0DC65BB0C89E62224E226C5D19174CAE04768DD74921A98FD0819252A87D281912817621F98949EF76B3F716C213B8CEF068D2E15F15A371E751D2DA45844EF2231BF4FF2F8F4425DD3A90CBA920238460BF2B70A3D2E06BB59DD0821F428BB491EB7F96A9F9D650FECE3530A52C7F6F17B8C902BA83D1C785F31BB86729E0818711B8DF5F14D9D2690DAB153F1975AB868C68C75BED096C454FE2684CD329DA933AC317A073C355031A33A7340454011212AE4285C487CBC586243812151811F4E810111C8B76F8BDD53F265348734C3028056FA98EDC3D742DE3DDBCBE10B8A1383B32369CB3FA97B3AEC36F734DC3A0DF905E24BBC3E53D00EE8586F0E6DD5C6EB7F975ECB3A988381AC3A3EEEC674007B55E38CC0BCE75F547B52A802E405FB42F8478BD0C4D08DCBDE2357F0B8F8CA584CE07EA94779FCFFAF56EE1A95953DEA968A267725918B0E5655E08E105F3C7E19F93A9082A3F3778179D39DA4028B3702A74677B93C01F6F5316B176AB07D82FFB67593D941B8C0D563B59297524D792A2D36A4AFFDC9722383B2AFCE39654322BEBC08741F1AC0656085761236E811379399717B5D5F61BFADCA1E5148A928D1C9F719C736986F59B16B01AA0EF9D106AC6D0780D93E84099F9A07494DE70CD5BDB28B2B7AE3C0A986CD058CAC8F8AE74C6A03D622D969A9D66297319A5B387C0F473BAE3B2F9F21FA75F3C066ED3391CB68949F787DA828ED1BB3E70DB104CA77D9DF2239E8B6402070BD2D2097839809DFAD9B27C1827CB7790613A22A6A7E5A27780CA374E5D3D7C0033F6E0F9976B20BC9CBE76D20251B1DD24D985F116411F2D68284915F1FDBEB5C5B835565AA21198FDC559101716133ADCB5B46330F729EF4C1BF2C970886CACBF46CB5951F3EB1C3089A5430C65407A47F2C764445C32CE341AFE8F3977C30FC963DB3EC1404760C5BEE8347459A81BD25A3E1B699B1A6CCD2CFCA9E3AA22EDAA73234A2636EF9BBDA84649A40798317D61FACF8E01DE1ED733BE378AC7377D921AE4684A9D6FF682D4DCB998FF8F6A425C5DC3729AB2C51B3C2AA682DC76D90EA42F75D9409B2376C6CA5566B4123F76D0E8FB5985ED3A2339A67510A6246CFE7EA0326C63085188E249070B0C25F7B8698C2FB380DD3494A411F8FBAA4022E842293AFFE5EE93BF5F0F5DD79FB69BC07E82570DEF3B2A8CF42F07DC10BCDD5BD6D603BB83F83A0634AB35A0FB15144265F3BD430BB2CE42C563C2CF834D15F7536617F838385F77A35E368047FCB09B1975F2256FBAD874709917A241C4F81A558AFED14B0ECEEC8BC7C2DB9083A8E9A82DF9A5B71C78B3293F4756307304FA56711F2E4E0008C12AA66BB7320393FFCFBC77E9D5677767FD6E612D327833D3BE691E72104B0707681E4C49D963FA5F8DCD700D6B935604D17B4DEEF0423E3ABCB5634B48B5BE0AB89B82B30C7257BD6D6E0A16287A80169D40112EE81B666413D76D13827214AE041102692243E1E8DD1F1CA8A10B9CBEFE025DBD850C07AE98D7EF9D7C7BA76C8808668592FECE1F644111D23F0780F4F87C776D2D45118BA2878BA26B66B68FBE94409DECA68C2909EE2DCBEC3DB8ADD282261C21BAFD2040A5C9166AF74D13CD0C457DB6A738590DBA396C8848A67451104BFBF50A27CC8B41A8D9C33689011759383B1186DD4B531CCC32D111183EC10ADFFE2D848D6B292D2D2E1C4E1115C6DCFA4DC6DE1523AEE9D7E9C78C22FCF7B6444CDFDD64EC7481325B869A3599B5251ACD0E6F584BAEFA66A247B78F391D86E4FF62E59B6D251B9F7F4D581B5F619BE24359F5EFB0E79E28E732AE5E39A1FCDADB6ED89742CDB52C914FFE8C4B4AB38E84A78936363DA6D36021885DCADD88944E807B04634E0176B0D34C493AD82F53D88EEB7E612FBABAD67EA50AE24E5D7F9F3F39715726BE86684137F1335EF9E97AB20C54B908951D5EA24AD0E707B90EA7CDA6633DAEF323F0E8E5655FF1A2E5F0A019244EE12DD330CBE961D1DA396A9CBECFEECB3F478EB8AE4DA0F1D4E244CF68318FBD7DA17F72A15C68FA3B846F42B74DF6E8A04939A26AFF2D40B118A97BA1A6BF346A7EAECFFD53B90B333BE7DE2818931CF33122C51C67B06154748C225ABCE21FF77456912E4991D1EFA1776F814F63AC0BE38637581B6009EBD8F988BF10C365EE689725BEEDF21760BBEC74E9EEA0490418E5E339A9BA0D92F56CD0EBCBF626DDC513E2FA0947AC3143E15D8A6A3A7811D532740EB6BCF6CADE30E546A321CE0C77F13D8878DEF6C3756B88380AD209975B8992CBC7BB19F0AA11DCE90DFB230BD2F2865B0512D0CB33944DCF2B4BE456E461E45A5B20629CF0A5E5A9751D01EA873B3F392957CACA18826784AB808B529E87548BC14E721F773CD21C0342BC6EDE366CBFDA40E3EF85EACA247FCF09F09D42B241F87DE17AD8F1D8C563BD2BF5FAB5B93B8162EB96688D09A4B1913AB375749CDBEC830FBCD4911B6D85E5E0E06891B24AA24883D8AC936948778182509518514BCA69C72374BACE1DCE8509F78A5B93EC128D1DBE8C79096CEEA6DBFC902D40C6F213BA3CE66C74FD21E788710FC3687E7000DAFD8513E780049A84B73DDBA6E7BDD3E8535C70092A4F77E68DB914A7158B26402EE5138262E350D0309FB9C6AA6EE37E8868AAF360DB8C61C19F3F98DD707570C9094C30D0D11906491C9BBDEB70273F4B09CBC979212023DB43E60027C06EDD3BD6E609A3381A0CEDFA2404863161E9591CD127EF72629A3515B9670F0693A50C266DE8705907D2F20802CF041C81B96116A236AA1CF7045B67D67EBF47CE0B1A353AEC505AE9DFC4E50D6EF610CCD61BB8EE1FCDCA7DA4B104E0B64A07D508ABB60632B1D53AC74AB56E95CB9A0B77E91A2FABE26F8294C6FE4B615E968807003125C0AC165D1E650B62EA85E61D22D5BA944EB5932F34A67F134E38BF6BA255A35E01ED1B0708505858C7D60B7913425AEDF86CBD02D9749AC2B53033545F6B6464E09AB1906FCD54108103E49F83D820D65887035F59F783847FFE6E12DB1A5896D9FCFA543A7D8B636E395753AF02C3C02CF24A3BAEE251CE77C6127C2F4E26A2A964486980F4A790656E6C2E477B72864C32D0AC4C5D065DA57CD3EF13ADECFFB432DEDC9429341A760204447CF420384519AFA3DED9A9BB0316E4094AD4F01D756B054661092C6CF9C09F03183650B65ABEBED11D74885EB028395A6BAE336CAA657CEF58A41FF2081A1E718E08205973004098D7281C28BA2081E778AD1BFBB18F33EA73DD08854843FA7E3CCB24ACA206D44E521B92FDBE06E770E73207C8B9A1EC7A58EDF30D25B7DE151B02BF64A90FF107D17D73A5B95A9CE9D06C00217A9AB1169196C041A901A182977117A2D7A995767A21F11D98B9883DFAC5AA539E8AFB464952BFAFDA619A005CBC17AF8C4A3365B394840F5CE180CBAC6BCCDFA890D17D983E52460904AA631BD5517538886B37F63638756C072EA4C4E78706E2E0D10BB037A38DC966852ADE71BDE45528AD4BB00EC2F5D0318D654B424A2DDC6E36F9171A2D5160D87C5FECE621572E73D4D4BF959327486260E30F74D1EF26E0B75958E61BB510877932B13E80E5A2DB390A5F7F6D21FFE0F599BB6D3D42179A950DBCE420374ED4FFE8FD335E0419A7C1F5CA6BB91EA5BD8CA7513FAECD5E4988B308D99971A5F172D7938474A2B17C2B663C20DD92EE3EC8B21320DE6E57A83ABC5273A439ED1655499A6BE057AC9AE144FDCB6091090F42BADA332E9600DAA7A8799E6ED0DBC0A66ED4E2A80BB0582BC3086F37993C4F3A7E7DEEC9083DA0F17A59F375047937A25A96155D89A01630EEDD0AEFA4ADD8D1A7E9E8C7D7BCFE846FEA87372CA533810CD3DD94716BA15E6617647733188458D37B3C27921DEE1F7F8202B11E70FDD28DD17468E7258C37737B8063C18580A7EF65EFE742CD59B1E96090D20B458D341A782638710F627D50C2482B07433B63D3C1FEC80CB920C6287F069F89C50B3602679C0F1394E4D352655F030355432721FF9739F2B51F4BB46ACB5DEA82C0E7C4851B8D22CC1B69D0551AA2159C220D33BB2668F57A5FF404FCA4B03A10616BB9A7167151BB7158A2C796022D3B1014FD4FFD2CAF8881C89E629AC8F4399030D567B73056CC633E16E8D57A4F71CDC0304257B6972DBD59AB7ADF46FBB779273FC97232B6763BD7DA41F1BA5FBB151198A55F447E8C12B0ED304B26BF66000DD4BB6FF4140A95FBCA0285B23721B829F92111C546B3D7DB2C86DFE4671EEF0937994F7E3FB1030D1D619E901BA3D6D9AAAE538D6949C0B87E344562A191F037F0CEF2B66BA4EE8298DB1FD246D5812BF354B7BD4002571961FE72E5DE1DAB3EEE9177DD47702B954B577A37594D7C2640EE259AC1DA93D5162B8676BBE5EB5DC362BA143AFB7D21CD5E642592AFD0D67F843A0A0A1027F43DFF686E4BBFBEF1ABF5ACB5440A1ECA506A8BDDE4EAE52B672A1806016B8B98D8A7E515C840357193C33A8B7F3293481D7F7556364035D361E721660484C363927B330A481A118922265941C8B366EFDABCB7C8C01999F7592B7D3B29C8639A1C1CB8C6C199B79CAADA3D7D5B67B3D0858D31CEFF84820E39D4AB608793B5142859A3C74F379CEF0CF1E217D1AE9421BDAD4A5BA8A5AC94C9D0AD854B95AAF3DC7169BCAA6083EED82F8EDFA5CE71C4A1BA7C9985A05E7C3BAA5864C7FFEABC8EAE34654AA7DDAD322908C981E28B0B1A78EDDEB864657BAEF7E8DF632AE675D010408239327CA3487973669C14484D8B8F0631963918F4A6367E30183F3F73A581539958ACD57E543DBF5879476DC5362B40EBB1080BB87B7417619EA9D7E20E4E33644171078E5DDBF9D12D569B42BD1937C690997DB5199082EB26B638DC0C11439E64BFC8D79709C415C437A5FEF1E000C7ED4F4C6F951BFD67188EC8E468B6135ACED78D4FB4314F82FBB8556F6D7E1A677858E21682B90DC04F496BA671230D0430B14947537DE1C46EF3DD9B85AB79030B72A03C3D36B11BA964335B565B7711EE3BD15237C8A8669E8950E57567EEE80996C7E8CC61EF59C1E0009D37D9C169B663A1EE41AE4DA2DC49AC925090C97AA5FE3B38498FB18CAFD394727A07D3CA6F9EADBE54907A473901ABB523759E3E5CC821D3F62885D3913AADBBBD4EF91C69F5BC98C181540E99F3A882AF90535E35ACC12B19CE0125F84FC0FD6C8F82A4F7FDBB62422A7F752BF0BDB123DC575CB83E711DE8B8B9C8814AAEAD7A972DD5BF5804D095AE1541A35A0DA101D76F53D114F204520181058079BB80760D8213A40BE9DF25DCAE951C7A273D50F60D0E8075660C1E1B1458F88F397C690DEF274FFA1259A4B57664E57694C68059816F3238AF1EEC48705CDC200AC9FB2487C6A53286A4B7068AECB1BB1CDBEF39A6C60625875C07AC843491CFB7A92C69F7A6457013F0A992B745C64EFC6B15754418DC034825E11FBA604202DCA2A48EB3A570133C5074A3A8BF43B2D5135FBB8240E1891B1F084765B7A979C99853FCBD16669FCFABEF72FCBC1CBA3477D15BD251E29A8F85A6DA424DFBB51A42364FF146D97ECCEF3D07AAE252CF41FD5CB1043461F54C55E7F75A882B8CF5AD9EAFBCF23704588EA688B260A95FA0E32A1CD8740D106C3B2482FDA2F1CCED68C760C8D9F1EEAB16784056DBD0A148789B884E6CC9C8A3FEF3D32FF2FC137BF011906405D4B7250FA845FA102DD140231EB138BAC69DCEA04AFB32D8EFDBB1D7D010FFA5CD85C560E0D450C2D62B297FD0079D271310DCE94F757B425F167DB9B66F776D2CD6664D3C5C663769EE9A8D8155282C43DD0094439E40D18A76748FDB3A63D3661F1AC5F0437B3DB1AB0AC22E4D65BCAB7F315D1C50B7229BEB1326E7F30CB339181AE95055EB860B92E220F531407E31702D1919B467E7981AE443815DDE58CDBFA2750ECEBC65414C998DB5265A22B5DB6F39B75918BEB24CD89AA85B10F164A2BE7AA2BF129BB0E9AAB0637E34702826B3C301C4860A7BE0659237B1AE6FECA53AB06BCEE6277D832EB515751ADA360470C82FB6005D47A67C9EFFFD156E46EB759AC1A7A80E290497BB06A0DFAC6D7A6E1807C3DD296E232A287B8C43F9DFC18E4B1C15F69DBC7A4647133F19A912AD35EDFC4DC79B5959CC12527B6A307907272EB96FA6132D1E0FAECD4149C4008CB539D1F3B463EA363D93019E090BEE4F1012D2CA2CBB98194E136C063D5645412ACEAFF0473EBF7E95106E21B636D6C6827C83FB63ACF932A6E8A7B4F2109ACED54CD5B429F0E2B1351F9127FCE574D3C2F264CE29D2B34857ECF48E20F4B51009164DD66B172A472034B6F1C828ABD0571B8C6C6742C7F542574B1F8A935E66168677D02C8BD95BE499ABF3FB2D0B9E336CF38E51659464E3BC69556ADD3934C56CA96F397D3A4FB2D401C87F0E19DD0513DCA67010A0E5AC26438D434464F05C936CFE51FBD5084092E9DB13C3B9F809BBB8CADE2DB44ABF0D00291AD1148BD40E353E6DEE6E389336D07572809F648D1198D3EFCF82767E0D1440DF264D3B55E305E3C77974B16D0FF999AA83316E2511239208840B0C643E52C217CC8BB3636B321F4DCB9742EF06F5D7A2DEE8429EA25B12D2707261FF4740159ECEED94249A30159836F18999FB1F752BDC8F13BF45FB85F92D492578263F7503022722EC8AEF339A5E36D87A609F1EF2C3B8010287E8423A05527A83D8AD8BCF8127521E5697FE3DC5D53FE98AFB7F926DE5C012AC72812BE2F684E19883F15733AB66FFF5BFF3CE027BDEF29C1078FB0003DAE8D02667A1EDB881C5CD7655A4CAB424DCE0632E1F6462F5FE48AE504BD8FC893A9DB8E0F3E875045E9C7400EA19AEC2D79DFEDD825CB3CEEC66BBCC789DFDABC6DF3B06E43A9B23A6B96D7CD0174ED4751DFED317794F463230078448CDD2CE6B699EDE31C9F746CD9CA95253C4941CD8EF6FAE7C94A8C58F9D0BA22F742CA186AA04B389CB82364108CAAB1DDE5606DB50BA3A57A417A946C4DDF260EEBCBE1DAC98C1F839253D3B8F8768BE0E9E450A5D56295AAA2D9CBE269A46D2FA9F984A1236E0E2119FFE12E4D9CA521B3E917D9AA4D70E264275DB46D0737CBEAE707F30410DBFB9A8D1573223DA759210D1BA388A297AE0A1D60AAB735A155EC57091C172071B5F22C60CDE5F9A8033F44D6825A6D5D28CCFAF771308B532FFF00D3CA4572CEEC38F5478634D77B7BC419012794A6144460A3536363012DF708707C3FA14B5BA3051854546ECD3A20BDA54E72DB8F5DEC9B7B8941D79AB815EE96E3050CA44A617DA4B5635F8CF8B105B94B722057DF324A268AF4F705EAD13F405177BD3AE816262F46D7E409349092EA3BDF3A889D3CB40347709E776E5E639CB1306D2A06EB717979037881C5EC36B785217246E78BF82661DDD043FE3696DF34BEC151DBCA8BE759C2C07C2228B834EC73563C97931978B0F62E461AA297977145651814F1AE6087E38B6FD67BFC7B06F3FABB721E638A92A9302F34402B0005EE00289AAEE7E5E8289029710C3B50EE8ED5B530B13CA53ACA383251FA40FBB3BEF49504C9C730E76801154DD38B5DFE89145468B6FDCA455E5EF7DE45F9632A2606874342B0D43CA4B9A914E77646B43681E4A30A65783B870BAF095B48283D905995BA6FA92CEC383059171056BF846EEF3569DF85CEB2F5ACB4B274F646460D7BD3AFB5AA77EE27CCF7652580D25D0EB0AAB02F5964FD0D8F37F5A916A2A63D18131E46AA0011E1398E16F5B5E61B248DB05E6AF524D860B13281EC9AA396AA7F382440BF676D87F687854501849A8B91DDE3B6D0616358678A5F3A00879FAE50024AB14A62A1071CF1CA3B4FF59F21DF686D504B068EB79A795AD7FE98E28E245E3988D8A4D67BCE0729DAB463E0518648F207D44DBE1339AAA0168395F4F1F8A71078BC94FD35E4CCE07CBB36AC60AB99E6A23AE15855A65DE47386E6FA476DC238DA51DC4CF347231E45FD15A899BE53A662BE8BA5E75CD764694323CA9023CCC91B9B0443C263EE8A88F58B333C8F3819D6138D915247CAE44949463E359DE0C06FA83B7830D25585478150194368A0E674BFC882062E9DAFD6CB6414B63868D4D6B0FFFD42873B351EFA58D64DFC1D9A34A5B4B7F19B313F8F8C2D425D91699EA354AEB54177C5029168E29408E3754FA3E812D58E4EE5F2566D6A8A283E4DDDB5F1C9CB6A8956B8D415522C55005B362D8858975AED97CE83788A20AAACA9CF4F9A25A2BA460583DFDBF0165BD0CDCD22343C9BCDA672E81530B89B31858B10070C74949F84671BA6B2271B63B9D3E7A5F897B200F36B1D57366CD731D0B2F72AA17675B8E4599FA59AD08568B5D9E16FD3E445CAA4FA623CB96A40446CEE4722EE83B5D155777C05BE61E2C92B64A6DF22941F021CE8E9E7FAB610BC804DC2FE4CB1869B1C16DF3020576C57CE2168148E2E22EFE5CE4CA97B2A00DF70BAF82265A48ED73D6B94C3C8209966A50867286AA333778E0F822B0FD4491857E91AAFF3E0DE69B03B5073A53EFDA0A018AC6782EC8B4E99991D1BEE19F0AA7999033B4B10870B3B4F7FA1DA489A46E412A3B3A46C47EE7828C7BEBAA87781A8A8DBCEA75CEEA3B87EB2D2827646E126921965926BC98B965F0BC2F0A2958A5E069C10BFE8AB54EFF495DF92497D2383E0D6F27F2750A7EF26A59BA28A0B3A883D242B1DA97B8AD2521C8BD4B5B06BF46D9EDADA08EE80FDA9AE3FDAA3FBAD8A602CA8AFEE18665BE7507089414D34FC8079298FE17DF7BF29B1462E16C4A8594B115FED840FEE6018823C3B4E91BAA7A670E3D8E9885CCAEA1F34D5EA6C64DF1D2B9C5DFF01D92E608BB9739DA40BC5315271A71DDE5B46F6044BD425A29E26D8D2A2A14A25D01083A11CBBE5CDE0AAC48F16CA7B69E996EBE871B97E45ED0CD762EB30FF33BC05DA40992F46147AE79C346B15E2829AE0630A25F71906A72ECCD9DACB6B7F87F4C94429A04BB7C9D43AF62C9F5BBA86EC051C17D9591380AE2B5671FA7FB97D1C128795FA0E9C4EF5825E0F90E47446CFE07FF2F532020005000200FDFF0000FCFF000000000100FEFF02000200FFFF020003000100FEFF010000000100FCFFFFFFFDFFFEFF01000000FCFF03000100000000000400FFFFFDFF0300FDFF0400FEFF000002000100FEFFFCFFFDFF0200FFFFFCFF01000100FFFFFEFF01000000FCFFFEFF020004000200FEFF0000FEFF0100FEFFFBFF00000200FFFFFEFF0100FEFF00000200FFFFFBFF05000000FEFF0300000000000300FCFF03000000FEFF0200FDFF0000FFFFFEFF0300FFFFFFFF0400000002000100FAFF000006000200010000000600FEFFFFFF0300FDFF0400FCFF03000200FEFFFFFFFBFF0100FFFF0100FDFFFFFFFFFF00000000FEFF020001000500FFFFFFFF00000400FCFF0000FFFF020000000100FFFF00000400FDFF00000000FEFF0000FFFFFCFF0100FFFF010004000200FDFF010000000100FFFF0100FEFFFFFF0100FFFFFEFF01000300FDFFFFFFFEFFFDFF000000000000FDFF0200FBFF00000200FFFFFBFF000000000100FDFFFEFF0100020003000400FFFF0200FCFF00000300FEFFFDFFFDFF0100FFFF020002000300FDFF0300010001000100FFFF0200FDFF02000400FFFF0400FDFFFDFFFFFF02000200FEFF00000200010000000100010005000000FFFF0400FFFF0000FFFF000000000100FDFFFFFFFFFF02000200FEFF0100030002000000FCFFFFFFFFFFFDFFFFFF03000000FCFF0100010000000100FEFFFFFFFDFF00000100FBFF01000100FFFFFCFF01000100FFFF00000100020003000200FEFFFEFFFEFFFFFF0200FFFFFFFFFFFF01000500F9FF00000400FFFF0200FFFF00000000FFFF03000300010000000100FFFFFEFFFFFFFDFF00000300FFFF0200FFFFFEFFFFFF03000200FDFF0100FEFFFCFF0000FEFF01000100F9FFFBFFFDFFFFFF010004000000FEFF0300FBFF040001000000020000000200020007000100FCFFFFFF0100FFFFFDFF01000200FEFF0300FEFF0000FEFFFDFFFEFF0000010001000000FFFFFEFF0300FBFFFDFF0000000005000100010006000000FCFF0100FDFF0100FEFF0200FFFF0200FFFFFDFF02000000FFFFFCFF02000200020001000100FDFF0000FFFF0300FFFFFEFF00000000000000000200000000000200FDFFFCFF01000000020001000100FFFFFDFF0100FFFF010001000200FFFF0200FDFFFEFF0000FEFFFEFF03000100000000000400FDFFFCFFFCFFFEFF0000FEFFFBFFFFFFFEFF0100FEFF00000400FFFF0100000000000200FDFF00000500FFFF0200000000000000FCFF0100FFFFFFFF020000000400FFFF0200FFFFFFFF0000FFFFFDFFFFFFFFFF01000300FEFFFFFFFFFF020002000100FEFF0300FEFFFDFF02000200FFFFFEFF0000FCFF0000FFFFFDFFFFFFFDFF0200FBFF02000000FFFF02000300030004000200FFFF01000300FCFFFDFFFBFFFEFF0100FCFFFEFFFFFFFEFFFCFF04000100030001000000FDFF0000FFFF01000400020000000000FEFF0100FFFF0000040001000100FEFF0300FAFFFDFF0300FBFF000002000000FEFF00000100FCFF0000FFFF00000000FEFF01000300FFFFFFFF02000100FEFF0100FEFFFFFF0500FEFFFEFF0100FCFFFCFFFEFFFDFF01000000FEFF0100FDFF0300020004000300FFFF0000040005000200FEFF0200010003000000FEFF03000100FFFF01000200030003000500FCFF0000010002000000FEFF0200FBFF0000FAFFFFFF0100FEFFFEFF03000300FFFFFFFF000002000000FEFF0300FEFF0500FEFF010000000000FDFFFDFF0200060000000300FDFFFFFFFFFF0100FEFF02000000FEFFFFFFFDFFFEFF010001000200FCFFFFFFFAFF00000100FDFF01000200FDFF0100040002000100FFFF0100FFFF0200FEFFFDFF0100FCFF0000FFFF04000100FDFFFEFF0100FAFFFFFF0300FEFFFDFFFFFF020000000200FDFF02000000FCFF00000000FDFFFFFFFCFF020001000500FEFF000002000200FDFF0000FFFF0100FEFFFEFF0000000004000000FFFFFEFF010002000200000000000000FEFF0200FFFFFFFF0000FFFF04000100FDFF01000000FEFF03000200FFFFFCFFFFFF0000FDFF010001000000FEFFFFFF01000000010005000000FDFF0100000000000100020001000100FFFF0000FFFFFDFF0100FFFF01000100FEFF0300FDFFFEFFFDFFFFFFFFFFFEFF0000FDFFFBFFFFFFFFFFFDFF000002000000FDFF02000200FFFFFAFF03000200FDFFFBFF00000400FBFFFEFF02000000FDFFFFFF0100030000000200FEFF04000000060000000200020002000200FEFFFCFF0100FEFF020000000200FEFF050004000000000002000200FFFF0300FCFF0000FDFFFDFF01000000FBFF0000FEFF000004000300FEFFFFFF0000FFFF000003000200FBFFFFFFFEFF0100FFFFFFFF0200FCFFFEFF020000000000010001000200FFFFFEFF0500000002000000FEFFFEFFFCFFFEFF04000100FFFFFFFF0300010000000100020000000000FEFF0600FCFF0100FFFF0000FCFF0500FFFFFFFFFFFF0300FBFFFEFF0100FDFF02000000FFFF0200030005000200FEFF0400FFFFFFFFFFFF0000FCFF0000FCFFFEFFFFFFFFFF0200FFFFFFFF0000FFFFFEFF00000000FEFFFFFFFEFFFEFFFFFFFCFF030000000100040000000000010001000100FDFFFEFF0300FEFFFEFFFEFFFCFFFEFF0100FEFF0200FBFF02000100FFFFFFFF0100FFFFFFFFFEFF000001000100FDFFFEFF03000500020001000000FFFF00000000FCFFFEFFFBFF0100040000000000FEFF02000400FCFF040004000000FFFF02000300FFFFFFFFFEFF0200FCFFFFFF0300FBFFFDFFFFFF00000100000001000300FFFFFDFFFCFF02000300FEFFFFFFFDFF01000000FDFF050000000000FEFF050001000100F9FFFDFF0200FEFFFFFF0100010002000200FFFF00000400FCFF0100FBFF0000FEFFFFFF0200FFFF0000FCFFFCFF050001000200FCFF050001000300020000000000FDFF03000100FDFFFCFFFEFF0400030000000000FEFF0100FDFFFDFFFFFF0400020002000100FEFFFFFF0000050003000300FFFFFDFF01000100FCFF00000200FFFF0000FFFFFEFF0000FEFF01000000FFFFFFFF00000200FFFF03000100FFFFFEFFFEFF020001000200FBFF0000FFFF0100000001000000FEFF000003000000FDFF00000100FCFFFFFF000002000400FEFFFDFF000001000300FCFFFDFFFFFF00000000FCFFFEFFFEFFFFFF03000200FEFF03000100010002000200FFFF0000FBFFFFFF0200FFFF0000FDFFFDFFFDFF0300FFFF0200FEFF040004000500FFFFFEFF02000000FEFF02000200FFFF0000FFFF020002000100FEFFFCFF02000000FBFF0100FFFF01000100FFFF000001000400FFFF030000000500FCFFFDFF0300FEFFFDFF0000000005000200010003000400FFFF020000000600FFFFFFFFFFFF0200FEFF03000200FCFF0000FFFFFEFFFEFF02000200010002000000000001000300FFFF01000400FDFF03000200FEFF02000100FFFFFDFFFEFFFCFF0200FEFFFFFF0200FDFF0100FEFFFEFFFFFF0100FFFF040002000600FDFF000004000000FEFF0300FFFF0300FFFFFFFFFFFFFEFF0100FCFFFFFF0400FEFF00000300FFFF04000200000003000200FFFFFDFFFCFF0200FEFF0100FBFF0200FCFFFEFFFFFFFFFF05000000FEFFFEFF040002000200FFFF0000FFFFFFFF0000FEFF0200FEFF01000100000002000400000002000100FDFF0000FDFFFDFFFBFF00000300FEFF0200FCFFFEFF04000100FDFF01000000FCFF00000100FEFF0200000000000300FDFF0000FFFFFEFFFCFFFCFF0100FBFF0100000000000000FFFFFDFF01000500FEFF0200FCFF03000000FCFFFFFF010003000000FEFFFEFF000002000300FDFF04000100FFFFFFFFFCFF0100FEFF020001000100010003000300FFFF02000200FFFF040002000000FEFFFFFFFFFF0000FBFFFFFF0300000000000300030002000000FDFF03000100FEFF01000000FEFF000002000100FFFF0100FFFFFFFFFFFFFCFF0200FEFFFFFF0100FEFFFFFF03000200FDFFFBFF0000FCFF0300FEFF00000300FEFFFFFF0100FEFFFDFFFCFF02000400FFFFFFFF0200FBFF00000000FEFFFDFFFFFFFDFF0100010000000100FFFFFEFF0300FFFF020004000200FDFF0000FFFF01000200FCFF0000FDFFFFFFFFFF0200000002000200FEFFFCFFFFFFFEFFFEFF0300FEFFFFFF0100FFFFFFFF0000FEFFFCFF000003000000FEFFFFFFFCFF0600FDFFFCFFFFFFFEFFFBFF020001000100FCFFFFFF01000100FCFFFFFFFDFFFEFF00000100FCFFFDFF000002000200FFFF0100FEFF02000000FEFFFFFFFBFF00000100FFFF02000600020003000000020003000000FCFF0000FEFF030002000100FFFF020001000000FDFF030001000400FEFFFFFF010000000300FFFF0100FFFF01000000010001000100020002000300FEFF0400FDFF020002000000FFFF0200FFFFFEFF03000200FFFF02000200FEFF0100020002000300040000000000010001000100FEFF0200FCFF00000300010002000000FFFF03000100FDFF0200FFFFFDFF0100FDFF00000100FEFFFDFF03000200000000000400FFFFFEFFFEFF0300FDFFFEFFFEFFFFFF02000000FFFFFFFF020003000100FFFFFFFF0200FFFF0100FFFFFCFF05000400000000000000FEFFFCFF0000FCFF0200FEFF0200FFFF01000200FCFFFDFF00000100FCFF000001000100FEFF00000200FDFF0300FEFF0100FEFF01000100FFFFFDFF0200FEFF0300FFFFFDFF0500FFFF020002000000FEFF0100FEFF0100FCFF040002000200000000000100FEFF0300FDFFFFFF00000100FFFFFFFFFDFFFBFFFEFF0200FBFF0200FEFF01000400FAFF02000000FEFFFEFFFBFF0100FFFFFEFF0100FEFFFDFF02000000FEFF030001000000010005000100FEFF000001000100FDFFFFFFFDFFFDFFF9FF02000100FEFF020005000200FFFF0000FFFF0000FFFFFDFFFAFFFEFFFFFF0100FEFF050000000000FFFFFCFF03000400FFFF0200FFFFFEFF0300FEFF000000000000020005000000FBFF04000100FBFFFDFF0600FEFFFFFF0100FFFFFFFF010001000000FDFF0200FBFFFDFFFEFFFFFF02000200010002000100020001000300F8FF010004000000FCFF0100FDFFFFFFFDFF0000FBFFFEFF0500FEFFFFFFFDFF03000100FCFF0000FEFF0100FEFFFEFF0100FEFF0000020001000100FEFF0400040002000100010002000000FFFF010001000200FDFFFFFF0300FEFF0100020001000000FEFFFDFFFEFFFEFF03000100040000000000FDFF02000000FCFFFFFFFEFF000006000200FFFF06000200FFFFFFFF0100FFFF0200000003000500FDFF0100FFFF0500FFFF0100040001000100FEFF0400FFFF0200010002000400030002000500FEFF0000FCFFFDFF0000010002000400FFFF02000300FEFFFDFF01000100FEFFFEFF0300FDFFFEFF0100FEFFFDFF00000000FFFF040000000000FEFFFFFF0000FFFF0000030001000200FFFF040000000000FFFF0100FFFF00000000FFFF01000100FDFFFEFF0000FFFFFFFF01000000FFFFFDFFFDFF0400FBFF01000000FCFF01000000FDFFFFFFFCFF0100FCFF0000FDFFFFFF0100FFFF0300FFFFFBFF0200020001000100FEFFFCFFFEFF0000FFFF0000000001000400020003000500FEFFFFFFFFFF0100FFFFFEFF0300FFFF010001000000FDFFFFFF0200FFFF0000FDFF0000000001000200FEFF000002000400FEFFFFFF0000FFFFFFFF0200FDFF0200FDFF0100FEFF05000000000002000100FBFFFDFF0100020000000200FEFFFEFF01000100030002000000FDFFFFFF0200FEFFFFFF0000FFFF02000100FEFF020000000100010001000000FEFF0100FEFF0000020000000000FFFF00000100FEFFFDFFFDFFFBFFFEFFFFFF010004000100FCFFFFFF00000200FEFFFEFFFCFFFDFFFFFF0000020000000500020000000000FFFF020001000100FBFFFEFF00000100FEFF000000000100FFFFFDFF040000000200FFFF0200FDFFFEFF0100FCFF000002000000000001000400FEFFFEFF00000000030000000200FBFFFCFF0500F7FF000000000200FFFFFEFFFCFF01000300FFFF0300FEFFFEFFFDFFFEFF0200030001000200FEFFFEFF00000300FBFF01000300FEFFFFFFFEFF000000000400FFFFFEFF0300FFFF0200FBFFFEFFFEFF0100FEFFFDFFFFFF02000000FFFF04000100FCFFFEFFFFFFFBFF030003000100FEFF00000100040003000000010002000100FDFFFFFF04000100FCFFFFFF0500FFFFFBFFFFFFFFFF00000200FBFFFFFFFEFF01000200FEFF000000000000FFFF02000000FCFF0000FBFFFEFF0100FDFFFFFF0200FFFFFCFFFFFF0200FEFF01000200000002000100FFFF00000100FDFFFEFF00000100FFFF0100000001000100FDFF03000300FFFFFFFFFDFF0000000000000100FFFF00000100FDFF01000000010001000200FFFFFFFF000000000000FFFF0200FEFFFDFFFEFFFFFF01000200FEFF00000000FDFF0200000001000100FFFFFDFF010002000200FEFFFDFFFDFF030000000200FFFF01000200FFFFFEFFFFFFFEFF01000200FFFF01000300FFFF010003000000FEFFFFFF0100FFFF00000100FEFF0300FFFF0000FDFFFBFF0200FDFF04000000FEFFFDFF0300FAFF030001000200FEFF000001000100000000000100FDFFFEFFFFFF0400FFFFFFFF02000300FEFFFCFF0500FDFF020002000200FFFFFFFF05000300FCFFFBFF0100FCFF05000400040002000000FFFFFEFF0000FFFFFFFF02000000FDFF01000200FEFF0100020002000200000001000000030004000300FEFF0000FEFFFEFF00000300FFFF03000500000003000300FFFFFCFFFDFFFEFF000003000300FEFFFFFF010003000000FFFFFFFF0200000000000500020001000300FEFFFDFFFCFF0100FFFF0000FEFF020000000200F9FF010001000300FEFFFEFF0200FFFF00000300FEFF010005000300FFFF0000FEFF00000300FFFF020003000200FEFFFFFF0100FCFF030003000000FDFF000004000000FFFFFEFFFFFFFEFF010001000100FEFF0200FDFFFFFF0100FEFF03000200030001000000FEFFFFFF0000FDFF0300FCFF010004000000FAFFFEFF03000200FFFF0200FEFF0000FFFFFFFF0400FEFF0000FDFF0300FFFFFCFF0100FDFF0100FEFFFDFF0100FDFF020002000100F8FFFCFFFDFF00000100FCFF0100FFFFFEFF00000400040003000200FEFF0000FEFF0100FFFFFEFF0300FEFFFCFFFDFF00000100FEFF010002000100FBFF0500FEFF050003000100FEFF02000300FCFFFFFFFEFFFEFF0100FEFFFFFF0100FFFFFFFF0300FFFF010004000200FFFFFCFF03000200010000000000020003000000FFFFFEFF0400FFFFFDFF0100FBFFFEFF0000FFFF0000FCFF0200FBFFFDFFFDFF0000010004000000FFFFFFFF0100FDFFFBFFFDFF0300020001000000FEFFFEFF0300FFFF0200010003000200FDFF0000000002000200FFFF01000200FFFF0300FEFFFFFFFDFF01000000010002000400FDFFFDFFFDFF02000100FFFF0300FBFFFEFFFFFF0000010003000100030001000000FFFF000001000000FDFF0200FEFFFDFFFFFF010002000000FEFF0000FBFF00000200FDFFFEFF0000FEFF030002000000FFFFFDFFFFFF0100FFFFFBFF00000100FEFF0300010001000200FEFF000000000000FEFF0100FFFF0100FDFF02000100FEFFFBFF0200FEFFFFFF0000FFFFFFFFFFFF01000100FFFF0200FFFFFDFF010002000200FDFFFFFF0200FFFF01000000020000000200FEFF01000000FFFF0100FFFFFCFF01000300030002000100FFFF0000010000000100FEFF0000010000000300010001000200FEFFFDFF010001000100010000000200FFFF0300FEFF040001000100FCFFFDFF000000000100FFFFFFFF020002000000000004000400FFFF0200FEFFFEFF0000FEFF04000000FCFF000001000100030001000300FEFF02000200FCFF01000100FEFF0200FFFFFFFFFDFF0300FDFFFFFF0200FFFF000000000100FFFF01000000040003000100FEFF01000100FFFF000002000100FFFF020001000000FEFFFFFF0000FEFF0200010007000400FFFF0200020001000000FFFFFFFF0700FFFF0100FCFF02000000FAFFFEFF0000020001000000FDFF00000100040000000000FFFF0000010006000200000000000000FFFFFEFFFEFFFEFFFFFF01000200FFFF000004000100FFFF0100000000000000010003000100FAFFFEFF00000100020001000300000002000300040000000200020001000200FCFFFDFF0100FDFF01000300010004000100FFFF030002000000030003000000FDFF020001000000010002000000FFFFFDFF000004000200FBFFFEFFFFFF0200FBFF0300FDFF0300FAFF0100020002000500040001000200F9FF0200FCFF0000FBFFFCFF0300FFFF0000FDFF010004000200FCFF0100FFFFFDFF0100000004000100FFFFFFFFFEFF0200020001000200FFFFFAFFFCFFFEFFFEFF02000100FEFF0100010000000800000001000200FFFF000002000500FEFF000002000400FFFF00000300020001000000FFFF02000200FFFFFDFF0000FDFF0100FEFFFFFF02000000FEFFFEFFFFFF0400FFFF0000FFFF02000100010000000300010003000200FDFFFCFFFFFF0000030001000100FBFF0000FEFF010001000300FEFF0100FFFF0100FFFFFDFF00000100FCFF0100FFFFFEFFFFFF02000200FDFF0100FFFF0300FFFF03000100FFFF0100020000000300000000000100FDFFFFFFFEFF0000FEFF0100FCFF0000000004000100FEFFFFFF0200FDFF00000300FFFF01000000FDFF0100FFFF000000000300FDFF0000FFFF0000FEFF02000100FEFF01000000FBFFFEFFFFFFFDFFFDFFFEFFFDFF02000100FDFFFEFFFDFF04000600000003000400FFFFFEFF00000100FFFF030001000400FFFF000000000000FEFFFDFF050001000500FDFF00000000FDFFFFFF000001000000FBFFFFFFFFFFFFFFFEFFFFFF0000FDFFFFFFFCFF0100FFFF010000000000FFFFFEFFFCFF020001000100FEFFFEFFFEFFFEFF030000000400FEFF03000300020001000200FFFF0100FFFFFEFF02000400FDFF0300FFFF000002000200FEFFFEFF0000010000000200FBFFFDFF0100FCFF02000200FBFF0200FDFF0100FCFF0300FEFF0000FEFFFCFFFFFF01000000FFFF02000100FCFF0700FFFFFDFFFDFF0000030002000100FEFF0100FEFF0400FCFFFDFFFFFF010001000300FFFF0400FDFF030002000200020000000100FFFFFEFF0500010000000500FEFFFEFF06000000FFFF0000FFFF00000000FEFFFFFF0000FFFF010001000200FFFFFEFFFFFFFEFF00000200FEFF04000300FDFFFDFF0000FFFFFFFFFFFFFFFF01000300FEFF0000FEFF01000400FDFFFCFFFFFFFEFF00000200FDFF030000000400FFFF00000300FDFF0000010001000300FCFFFBFFFDFF02000200FFFF020000000100FFFFFFFFFCFF0100FDFF030004000100FBFFFEFF0100FEFF05000300010000000000FEFF00000100030001000000FFFF01000200010000000200FDFF0200FFFFFEFFFFFF03000200FBFFFFFF0200FEFF0200FDFF03000000FEFFFEFFFCFF0500FFFF000001000200FFFF0300FDFF0000FFFFFEFF01000300FEFFFFFF0100020002000000FEFF00000000FEFFFFFF010000000300FCFF0200000005000300000004000500FFFF0100FDFFFFFF0300FCFFFEFF0100FBFF020003000200FDFFFEFF0300000002000400FFFFFFFF0200000001000300FEFFFFFFFEFFFEFF0100FEFF0200FFFFFFFFFEFF0200040004000200FDFFFEFF0300FFFF01000100FAFFF9FF020001000400FFFF01000200FEFFFFFFFFFF02000100010002000000FDFF01000400040000000000FEFFFDFF0100FFFF0100FBFFFFFF0400FDFFFFFF01000000FDFFFFFFFCFFFFFFFFFF00000100040001000400FEFF0100000004000300010005000000FFFFFFFF00000500FFFFFEFF02000200010001000000FEFF0200FDFFFDFF000000000300FFFF04000300FEFF0100FFFF030002000100FBFF0000FEFFFEFF020002000100FFFFFEFFFFFF0100020002000000FFFFFFFF0100FEFFFEFFFFFF04000400FCFFFDFF0300FFFF0200FFFFFEFF020004000400FFFFFFFFFEFFFBFF0000FEFFFCFF0100FFFF0100FCFF0200FDFF000004000100030000000100FDFFFDFF010000000200FCFF02000200FFFF020002000400FDFF0400FEFFFFFF02000000FDFF0000FDFF01000100FFFFFFFFFFFF0000FFFFFDFFFCFFFEFFFEFFFEFFFDFFFDFF01000200FEFF0400FCFFFFFFFFFF0300FFFFFEFFFFFF000000000200FFFF0100050000000000FCFFFBFF0100FFFF030002000400010001000000FFFF0100030000000100FFFF01000100FEFF0100FBFF0100FCFF0000FEFF02000200FEFF0100FEFFFDFF00000100FEFFFFFFFCFFFEFFFFFFFFFFFEFF00000000FEFF0100FDFFFDFF0100FEFF0100FEFF0200FDFF020003000300FFFF0000FCFF0100FDFF02000000FFFF0200FEFF010001000000FFFF000001000100FCFF010004000200FFFFFCFFFFFFFFFF0000020000000000FEFF000002000000FCFF00000300FEFFFEFFFFFFFFFFFFFFFDFF05000200FFFFFFFF01000300FCFF000000000000010001000200FFFFFDFFFFFF01000300FEFF00000200030004000100FFFF030001000000FDFF0200FFFF0300FCFF02000400FCFF0100FEFFFEFF00000100FDFFFDFF0200FFFFFEFFFFFF02000100020003000100FAFF03000100FBFFFFFFFFFFFFFF03000200FCFF00000000FDFF0400FFFF0100FAFF0000FFFF0200FCFFFCFFFDFF0100020002000300FEFF0000FEFFFDFFFCFFFDFFFFFF0100FCFF03000300FDFFFEFF0300FDFFFFFFFDFF01000100FEFFFEFF030000000200000003000100000001000000FDFFFFFF03000200FDFFFEFFFEFFFFFF0000FEFF0200FFFF0000FFFF00000100000000000200FFFF010001000400FBFF04000300FFFFFEFFFEFF00000300010002000100FEFFFEFF03000300020004000200FEFF02000400FEFF00000300FFFFFEFF0300FDFF00000200000000000100FCFFFEFF0200FFFFFFFF0200FCFFFCFF0400030001000100030000000000030002000300FFFFFFFFFDFF00000300FFFFFCFF0100FFFFFEFFFEFFFFFFFFFF040003000200FFFF050000000400FCFFFFFF02000100FFFFFEFFFDFFFEFF0100FAFF040001000100FFFFFFFF010000000200FEFF0000000002000000010002000000FDFF02000000000004000100FCFF000001000600FFFFFEFF0200FFFF0300FFFFFEFF01000500FFFF0300FEFF04000000FFFF0500FEFF0100FEFF02000200000003000000FCFF0100FEFFFCFFFFFF02000100010003000100FFFF020003000000000001000000FDFF010000000300000004000300010001000000FEFFFCFFFEFFFEFF00000100FFFF01000000FBFFFFFFFFFF0000FDFFFEFFFCFF010000000000030001000100000001000000040003000100FEFF0100000002000300FDFFFEFFFDFF0300FFFFFDFFFBFF030003000400FEFF0500FCFFFAFF0100FCFFFEFF00000100FFFF0400FEFF0400FEFF0200020002000000FFFFFFFF01000200FFFFFDFF01000100FFFFFDFFFEFF0100010000000100FEFF0200070000000000020000000200020005000300030002000300000003000000010002000100FFFF00000300FFFFFDFF030001000100FDFF04000000FDFFFFFFFFFF01000200010002000000FFFF01000200FEFFFEFF03000300FFFFFDFF0300FEFF0100FCFF0300FEFFFCFF02000200FFFFFFFF0100FFFF000003000200FDFF02000000020000000300FFFF00000000010000000100FEFFFEFF00000300010002000100020000000000FDFF0000FFFF0000FFFFFFFF0000FBFF0000FFFFFCFF00000000FDFFFFFF030006000300020000000200FEFFFFFFFEFF0000FBFFFEFFFFFFFDFFFFFFFDFF05000400FDFF020004000200FEFF010004000000FFFFFCFF0500FFFF0000FFFF020001000000FDFF0200FFFFFBFFFFFFFFFFFFFF00000000FFFF0100FEFF02000100FFFF000001000400FAFF00000200020000000000040000000200FEFF000004000300000004000000FFFFFEFFFFFF0100FEFFFEFF000001000200FDFF0200FCFFFFFFFFFFFFFF01000000FCFF0300040001000000FFFF00000300FFFFFEFFFEFF0100FDFF01000200020002000000FFFF0200FEFFFFFF00000000FFFFFDFF0300FEFF0000FEFFFFFF02000200FFFFFBFF0000FEFFFDFF02000000FAFFFEFFFFFF03000100020001000200FFFF00000000FFFFFDFF0100FBFF010000000100020002000000FCFFFFFFFFFF01000300FEFF0000FFFF020000000600FEFF00000000FFFFFFFF010000000000FFFF00000300FFFF0000FDFF0200FEFFFDFFFDFF050004000100FFFF03000000FFFF0100FFFF0400FEFFFBFF0200FFFF01000100030000000100FEFF0200000000000400FEFFFFFFFEFF0300FFFF000002000200FCFF0500FEFFFEFFFFFFFEFF0500FCFF0000FEFF06000000FCFFFDFFFFFF0200FEFF00000300FFFF0200030001000000FFFFFEFF01000300FDFFFFFF050003000000000002000000FEFF01000000FDFFFEFF010004000000FEFF04000000000006000000000000000000FEFF030002000300040003000200FEFFFCFFFEFF0100FEFF0400FDFFFFFF0100FEFFFFFF00000000FFFF02000100000001000000FEFFFFFFF9FFFDFFFCFF02000000FBFFFEFF01000000FEFFFEFF01000100FEFF0000FDFF0200FDFF02000000FFFF00000200FFFF0100FCFF01000300FEFF02000400FEFFFEFF0100010001000300FEFFFCFFFEFF0300FCFFFCFF0400FEFFFDFF0200020002000100FFFF010001000000FFFFFFFF0200FEFF01000100FDFFFFFF0000FFFFFFFF0100FFFFFDFFFFFF06000100000001000100FDFFFEFF0000000002000000FFFF0300FFFFFFFF010003000100FEFF02000100FEFFFFFFFDFF0300FFFF00000100FFFFFEFF0100FFFF020002000300FFFF0200FFFF03000000FDFF0100FFFF000000000000FEFF02000100FFFF03000200FFFF0300FFFFFBFFFDFF01000000FFFFFFFF000001000000FCFF020004000000060001000300FFFF0200FFFF0000000002000100030001000500FFFFFBFF0300FFFF0000FEFF0100020005000500FFFF0200FEFF000001000200FFFFFEFF010000000300FDFFFDFF0400FDFFFCFF0100FFFF01000000000000000100FEFFFEFFFEFFFDFF000000000000FFFFFEFF0300FFFFFFFFFCFF0000FCFF00000000FFFF0400030001000200FFFF02000200FDFF0300FDFFFEFF00000000FFFFFEFF02000100FFFF020005000000FEFFFEFF0100FFFFFEFFFEFFFDFF0000FEFF0100FDFFFDFFFFFFFEFFFDFFFEFF0000FEFF0100FFFF00000000FFFFFCFF000000000100030003000300FFFF0100FEFF02000200FDFFFEFFFFFF0200FFFFFFFF0300000000000200FFFFFDFF010002000300FBFFFEFF06000300020001000200FCFF010002000100F9FFFEFF020003000000FFFFFFFF030000000000000003000200010001000200040002000300020001000100FFFF0100FFFFFFFF0300010000000400010000000300FCFFFFFFFCFF0200FCFF050006000000FDFFFFFF020001000100FFFFFEFFFDFF00000300FCFFFCFF000001000000010000000000010004000000FDFF0200FEFF0400FEFF0100FFFFFAFFFDFFFEFFFFFF040001000100FEFF020001000100020002000000FEFFFFFFFEFF01000500010001000600FBFFFEFF000000000100000000000100FEFFFDFF000001000000030001000000FDFF010000000100FEFF0200FCFF00000300FFFFFDFFFDFFFFFF020000000100FEFF010003000100FFFFFEFFFFFF03000200000001000200FFFF010000000000FEFFFCFF020003000100000004000200FEFFFDFFFBFF0100FBFFFEFFFCFF03000100FDFF02000200020005000200FFFFFBFF03000000FFFF0300010000000300FFFF0200030001000300FCFFFEFFFFFF0000FFFF0000FEFF0000FDFFFFFFFFFF0100FEFFFFFF0000FFFFFCFFFEFF02000300FCFFFFFF050001000100FEFFFCFF07000400FCFF0000020003000100FDFF0100FBFF0200FFFFFEFF040001000100010000000400FFFFFEFFFEFFFCFFFBFFFCFF0100FEFF02000000FCFF040002000200FDFFFCFF020003000100020000000300010000000000FDFF0000FFFFFEFF0000FFFF01000500FAFF0200FFFF0500FEFFFFFFFFFF05000300FDFF01000100FEFFFFFF02000200FEFFFCFF00000300000000000000020000000000FFFF0200FDFF0500FFFFFDFFFDFFFDFFFCFFFCFFFFFF000004000200FCFF0100FDFF000004000300FCFFFFFF000001000200FEFFFFFF0100FEFFFEFF03000300FFFF0200FFFFFCFFFDFFFFFFFEFF000000000100060001000400FFFFFFFF02000200010000000300FCFFFFFF0000030004000000FDFF000001000200FDFFFEFFFFFFFAFFFFFF0200FCFF02000200FEFF02000000FEFFFBFF000006000400FBFF02000000000002000400010005000200FEFFFDFFFDFF0000FEFF0000FCFFFFFFFBFFFEFF00000000000000000100FDFF0100020002000000000001000000FFFFFEFF00000300FFFF0000FCFFFFFF00000000FEFFFDFFFEFFFDFF0000000002000300FDFF010003000000FEFFFCFF0000FCFF00000100010000000100020001000400000004000600FFFF02000400FFFFFEFFFFFF00000100000000000100FCFF01000100010000000100FEFF010001000400FEFF0100010001000200050004000300FFFF030000000100FFFFFDFF01000200FFFFFEFFFFFF01000000FDFFFEFF0200FEFF01000000FEFF0000FFFFFEFFFEFF0000FFFFFEFFFFFFFEFF02000300FEFFFCFF00000000FEFFFEFF0000FFFF0100FFFFFEFF020000000000FDFF0300FDFF0400010001000200010001000200010004000300010001000200FEFFFEFF0400FDFFFFFF01000100FFFF0100FDFF0100010001000300FFFF0200FDFF0000FFFFFDFF00000200020000000200FEFF01000300FFFF0100FFFF02000000000001000400050002000300FCFFFAFFFFFF0200040001000000010001000000FDFFFFFF020001000000010002000200FCFF0100FCFFFFFF0100FEFFFDFF01000000FEFFFDFFFFFFFBFFFEFF040001000400000001000200FEFF02000300000000000200FEFF0200F9FF0000FCFFFEFFFEFF00000100000003000100FDFFFFFFFFFFFDFFFCFF000003000100020003000100FDFF0000FFFFFEFFFFFFFDFFFFFF00000100FFFFFFFFFEFFFEFF0100FDFFF8FF00000000020001000200FFFFFCFFFFFF04000100FFFFFFFFFDFF00000000FDFF0000FEFF0000FEFF0200020006000400FFFFFFFFFEFF0100000001000000FEFF0100FFFF0200FCFF0300FEFFFFFFFFFF0100FEFF06000000000003000200010004000400FFFF0200FDFFFEFFFFFF0200FFFFFDFF00000200FBFFFFFF0100010001000100020000000200FBFF0300030000000100FAFF0200FBFFFBFFFFFF0000FFFFFDFF0100FEFF0600FEFFFDFF02000000FDFF0000FFFFFDFF0200030002000200FEFF0000FCFF01000000FFFF0300000002000100030001000000FDFFFDFFFFFFFFFFFBFFFEFFFEFF02000400FFFF0300FFFF01000000FFFF0400010001000100FEFF00000300FFFF00000300FEFF00000100070001000000000001000000000001000100FAFF0100FEFF020003000000FDFF00000100FDFF020000000100FFFF010001000400FEFFFBFFFFFF000001000000000001000400010003000000FCFFFBFF02000200FEFFFDFFFFFFFFFF02000000FFFFFDFF0100030004000000FDFF0000FFFFFEFFFFFF05000200FFFFFBFF000003000000FDFF0200FEFF0200FFFF00000200FEFFFFFFFEFF0100020001000000FDFF01000100FDFFFEFF00000000FEFF0400FBFF0000FFFF0200FCFF010005000000030004000000FFFFFEFFFFFFFDFFFFFFFCFFFFFF0200010001000300FCFFFCFF03000100FCFF03000200FFFFFBFF00000100020005000500FFFFFAFF0200FBFFFEFF000001000200FEFF02000300FEFF01000100FDFF0300FFFF030000000100FEFFFCFFFFFF0200FEFFFFFFFFFF020000000000FFFF0300FEFF0100FFFF00000100000002000300FCFF0700FFFF0000FEFF0200000001000100FEFFFDFF020001000100FDFF00000400FDFF000005000000FEFF00000100010000000000FFFFFFFFFDFF0200FFFF0000000003000200FFFF01000300FEFF0300FEFF00000000FFFF0000FFFF03000300FFFF0200FFFFFCFF000000000400FDFF04000000FEFF03000400FFFF0300FDFF0000FEFF0100FDFF0200FFFFFCFFFCFF01000200FCFFFCFF01000100020001000000FDFFFFFF00000300FCFFFEFFFCFFFFFF0200FDFF000002000000FCFFFEFFFDFF0100030003000200FFFFFFFFFEFF0000FEFFFFFFFBFF0400010001000000FFFF01000200FFFF030004000000FFFFFEFF010001000000FEFF0300FAFFFEFFFFFF010002000000FAFF02000400FEFFFFFFFFFFFFFF01000000FFFF050001000200020003000100FDFF0300FFFFFEFFFEFFFFFF0000030001000300FFFF03000000FFFF04000100FEFF010001000100FDFF03000300FEFFFFFF0200000001000200020001000300FDFF0300050001000000FFFFFEFFFDFF0300FEFF00000100FBFFFFFF0300FFFF0100FDFF000003000100FFFF0200FEFF02000200020000000000FFFF04000000FFFFFFFF0300FDFF040000000100FFFF0200FFFF050002000100FFFF00000100030002000500010000000000FFFFFEFF010002000200000000000100FCFF0000000000000400FEFFFFFF0100FFFF01000200FEFFFDFF0300010000000300FFFFFDFF0200FDFF0100FFFF0000FFFF000002000000FDFFFEFF0000FFFFFFFFFFFF020002000000FBFFFFFFFCFFFEFFFDFF0400FDFFFBFFFEFFFCFF00000400FEFF0200010000000100FBFFFFFF000002000000FCFF0000FFFF0300FFFFFDFFFFFF0100FDFFFFFFFFFF00000100FFFFFDFFFEFFFBFFFFFF0200FEFF0100020003000100FFFF0300FDFF01000200030000000100FFFFFEFFFEFF05000000FEFFFFFF0100000001000100FDFFFFFF0000FEFFFBFFFFFFFFFF02000000FDFFFFFF0300FFFF0300FBFF01000400010003000100FDFF0100FDFF01000000FEFF0000FFFFFEFF0000FDFF0500030004000200FEFFFBFF00000000FDFF00000000FFFFFEFF0800FFFFFEFFFDFFFFFF00000000FEFFFFFFFEFFFFFF0100FEFF03000300FFFFFDFF010000000100000001000000FCFF0400FDFF0000FEFFFEFFFFFFFBFFFEFF00000100FFFFFCFF0400FFFF01000000FBFFFEFFFFFF04000400FEFFFDFF010000000000010003000300FFFFFCFF030002000300FEFF04000300010001000100FEFFFDFFFEFFFDFF0100020000000500FDFF01000400FEFFFFFF000000000200FFFFFEFF000004000200FFFFFDFFFFFF00000000FFFFFEFF0500FEFF0100FEFF010000000300FFFFFCFFFCFF0400FFFF02000100FEFFFEFF0000FEFF000001000100FDFF00000200010001000100FFFF02000000FDFFFDFF00000700FFFFFEFFFFFFFFFFFFFF0000FEFFFFFF0000020004000200FBFFFDFF0200FDFF02000400FEFF0100020004000400FFFF000000000200FDFFFDFF0300FFFFFBFF0300000003000000FEFF000002000300FEFFFFFF0100FFFFFCFFFFFFFFFF0200FEFF01000000FFFF0000FFFFFDFFFFFFFFFFFEFFFEFF0200FEFFFFFFFFFFFCFFFDFF0000FDFF0000FCFFFEFF0200FCFF0200FFFF020004000300FFFFFCFF02000400000003000100040000000600FEFFFEFF00000200FDFF030000000200FDFFFEFF0300FFFF0100FDFF000002000400FDFFFEFF01000200010002000100FFFFFFFFFEFF000005000400FEFFFEFFFFFFFBFFFFFFFAFF0100FCFF000000000000020002000100FEFFFDFFFFFFFEFFFFFF0200FAFFFEFF0000FEFF0200020003000200FFFF0500030004000100FEFFFDFF02000300F8FF0100FFFF00000400FDFF00000400FDFF01000000020001000000FDFF0300000000000300FDFF0100F9FF04000300010002000400FFFF0200FFFF0300FFFF0100FDFF01000000FEFF00000200FFFFFBFF0200FFFF04000300FFFFFFFFFDFF0000010000000300020001000000FFFF000000000000000001000100FFFFFFFF0000FEFFFEFFFFFF0000FFFFFEFF01000200FEFFFAFFFEFF0300000004000000FDFFFEFF01000200000005000700FFFFFDFF020000000000FCFF0100FCFF0300FEFF0100FDFFFFFFFCFFFFFFFCFFFDFFFFFF010000000600FFFF0000FDFFFBFF000000000000FEFF020002000100FFFFFFFF0100FDFF0100FDFFFFFF0000FDFF00000600FDFF0100FEFF050001000400FEFF0000FEFF01000000020000000100FCFFFFFF010003000100FFFF0100040001000000FEFFFFFFFEFF0000FEFF0100FFFF020004000300FEFFFFFF0300FFFFFFFF00000100FFFF05000300010004000400FDFFFEFF050000000000FDFFFDFFFDFF0000FDFF01000400FEFF03000000FFFF01000200FEFFFFFF0300FEFF020001000300FFFFFDFFFEFF04000100FEFFFEFFFEFF01000200FEFF0100FFFF0300FFFFFBFFFFFFFDFF03000300000001000000FEFF03000500FFFFFFFF0200FFFFFFFF030002000100FEFFFFFFFFFFFDFFFDFF010001000400010001000300FFFF0100FEFFFFFFFCFF0200FFFF000000000100FFFF0100FFFF020002000200FFFF0100FFFF0200FEFF0000FFFF00000100050001000000FFFFFFFFFEFFFFFFFFFF0300020002000200020002000400FEFFFFFFFCFF000000000600010003000000FBFF0100000000000400FFFFFFFF0200FFFF02000000FFFF0000FEFFFBFFFEFFFFFF0000FFFF020001000100FFFF0100FEFFFEFFFEFFFDFF0200000002000000FFFF0000FDFFFDFF0100FEFF020002000000FDFF03000000FFFF0100FEFF0000FEFF0100FDFFFEFFFDFF02000000030002000100FBFFFFFF0200FFFF020003000000FEFFFFFFFFFF0300FEFF0200000001000000010001000000FEFF03000500FEFFFEFF020000000300FDFF0200FDFF000004000200FCFF000000000000FDFF0000FCFF0000010002000500020001000000010002000000FFFF00000200FFFF0000FAFF0000FFFFFDFFFEFFFEFF03000300FFFF0200010001000000FFFFFFFFFEFFFEFF0000000006000200FEFF01000200FFFF0200FCFF0400FFFF05000400FCFF020001000100FBFF00000300FFFF02000200FFFF030003000200FDFF00000000FEFF0200FFFFFEFFFFFF01000100FDFFFEFFFEFFFEFF0100000004000100000000000200FFFF00000400FEFF01000200FFFFFDFF0400FEFFFEFF0000FDFFFEFFFCFFFFFFFEFF0300000001000200010001000200FDFFFEFF0300FFFF0100FFFFFDFF010002000000FEFF0200FEFF0000FEFF01000000010000000100FDFFFEFF020000000200FEFF02000000FFFFFCFF0200FFFFFCFF030000000100FFFFFCFFFFFFFEFF0100FEFF0100FDFF01000000FEFF0100FDFF010001000100FDFF0000FDFFFFFF0200FEFF01000300FEFFFCFF03000200FDFFFDFFFEFF0100FFFF0000000001000300FEFF02000000030001000100FEFF00000200FDFF00000000FDFF0300FAFF02000000FEFF02000400000000000000FFFFFEFF010002000100000001000400FFFF0100FFFF020002000100FFFF0100FCFFFEFF0300FFFF01000100FEFF0300020001000100010000000300FFFFFCFF05000000FFFF0200FFFF0100FEFFFEFFFDFFFCFFFFFFFDFF0000FDFFFEFF0000FFFFFDFF0200FFFFFEFF01000000FFFFFFFF020000000300FFFF0500FCFF0000FEFF0300FFFF0100020002000000FDFFFEFFFEFFFDFF0300010001000100010005000100FEFFFDFF01000000FEFF0000FFFFFFFF0200FFFFFDFF0200FEFF000003000300FFFF02000100030002000000FFFFFEFF02000100FDFF010002000400FDFF0000010001000600FEFF020000000000FEFFFAFF0100FDFFFEFFFEFFFFFF000003000300FEFFFFFFFFFF0000FDFFFEFFFEFF03000200FCFFFEFF0200FFFFFEFFFFFF03000300FFFF00000000FFFF010003000200020002000200FFFF0000FBFFFFFFFEFF000000000200FEFFFCFFFEFFFEFFFBFFFFFF0100FEFFFEFFFFFF020004000100FFFF00000100FDFF03000500FFFF0000FEFFFFFF010004000200FFFF02000000FEFF0100FEFFFFFF0000FEFF0000FDFF0200FAFF00000000FDFF01000200FDFFFBFF000002000100030004000100FEFF05000000FDFF0000020001000200FEFFFDFF0200FFFFFFFF02000000FDFFFFFFFCFF0000FEFF0100FEFF0200FEFFFFFF0400FDFFFEFF0100040002000200FFFFFFFF00000000FDFF0100FCFF03000000FFFFFDFF010000000200FEFF01000000FCFF0100FFFFFFFF01000400FEFFFFFF010002000000FEFFFFFF0500FEFFFEFF01000200040003000000030000000400FCFF020000000200FFFF020000000200FDFFFBFF04000200020001000300FDFFFDFF02000000FCFFFEFF02000100FEFF0200FDFFFCFF040003000100040001000100FFFF0300FEFFFFFFFFFF0100FEFFFFFF0500FBFFFDFF00000000FEFFFCFF0000FFFF0100FCFF000001000300FFFFFDFFFDFF0200FEFFFFFFFDFF00000300010000000300FEFF0000FFFF00000200FDFFFDFFFBFFFEFF0100FBFF030000000000FEFF0000000001000500000001000200020002000300030003000200FEFFFDFF010000000000FDFFFCFF03000000FFFF03000100FFFF02000100FFFF03000000FEFF0000FFFF010001000200FFFFFDFFFFFF0200FCFF0000FBFF0200FEFF0200FCFF0100FEFFFCFFFFFFFFFF0200FFFF01000100FBFF010000000400FEFF0100FFFFFFFF0200FDFFFDFF0400FFFFFDFF02000100FFFFFFFFFFFF030000000100FFFF0100010000000200FEFFFFFFFDFFFAFFFEFFFDFFFDFFFFFFFFFFFEFFFAFF0100FCFFFDFF0000FFFFFFFFFDFF0200FBFF010000000100FDFFFFFF00000000010002000300FDFFFAFF0200FFFF0000FFFFFDFF03000200FDFF0200FFFF01000200FDFF04000200030000000500FFFF0100FFFF0100FCFF0500FFFF000001000200FCFF00000100FDFFFFFF030000000200FDFF000003000100FFFFFFFF03000400FFFF04000200FFFFFDFF01000100FDFF010002000100FEFFFBFF010002000000FDFFFEFF0200000002000100FEFF0400FFFF02000300FBFFFDFF0000FBFFFFFFFCFFFAFF01000000010001000100FFFF0100FFFF03000000FFFFFEFF01000400FEFF03000100FFFF0600000000000100FCFFFEFF04000100FEFF0100FEFF0000020000000200FFFF00000200FCFF0200FFFFFEFFFFFF0000FEFF0300000001000000FEFF02000100000001000000FEFFFEFF0100FDFF0300FDFF0000010003000300FFFFFFFF0000FFFF0000FFFFFDFFFEFFFFFF0100030000000200FFFF01000300FFFF04000000FDFFFEFF00000000FFFF01000400FDFF0000FDFFFFFF000001000500030004000000FFFF0000FFFFFEFF0100F9FF0400FFFFFFFFFFFFFBFF0100FFFF0100FFFFFEFF07000000FEFF0100020002000100FFFF020000000000FEFF040001000100FEFF01000300FFFFFFFF020001000200000002000500FFFF0200FFFFFFFF030006000000FEFF0100FCFFFDFF0000030004000100FBFFFFFF09000200FFFF04000300FFFF0000FEFFFFFFFFFFFDFF0100FFFF010002000100FDFF020001000000FDFF0100000003000100FDFF03000000FEFF03000600FFFFFFFF0200FFFFFCFF0300000002000300FCFFFEFF0000FEFF00000000FEFF0200020000000000FFFFFEFFFEFFFEFF0500FCFF010002000000FDFF0100E95760CEEC6F6C7D33C287F6B6B04E977932ED260BED741D +ct = AEE9429D51C3A038D6D1267B4BFCFA90467237885C93FD6A07BF044A64D782AFD84339A569DCD27EB033BE86B92E40174738832682AF8A0ED78CDC42BC2F99E9539F48E31A83D465764E24B23EFAA0D1F6049F74464C2BDB9A4FECD089F4C2690707F66ABAB7E376281DF883B1A0AA56802E2CA21E85B96B963B087F07E93939B069CA285BB457DC8E7717309D5D5D70723E0027F7B5BC8704B3FDBCA4EADB2EDDDA3BCC701481645C98A6DA8A7090CDED5C9BF40EB64CA2D80047DDC8C335A32DC45D1B534AA991193A80DD87041C52DFCFE87A380F629CDCE1CABD054DAE094154E518528729FC92DAB05593EE79187B1730AF093AEF0AEF6F40930433DAF88CAECBDD91F45F8EE1BBFA5F5E162580C446C6D9B3D74B6DF98138E561D0113077499C6393A612960A2CB3FEBC72AD0577FDACB4EA5E4731222EF6828ED71A0CC4D137C9FC531A13F072D3CCCFD9307F85CE2667019FCB52DF74E924C1C917B1E2EFB78AA79E9307146D1CF040CD217CEA3F34500029AA657D104FEBD5688FDDD27F0040863DDCC8AE3D60E8D6AB7A1B42064BE083E24AABB6ED064728BDC550C1E60E6FDC78341B25A1B9DE776D581FDE1A1DC89AC88CCE28616BE5E01D061226E55CCB9E0A5A39408DE6F8E9EC0BD7F59CB7F78915B6C3ADC1509DABE0EF256FE52400B450C84FF672B2A44CF1C023B882049CABDD5E9CA9202D16C1B5EBB21D6937607E902693DE557790BEF6422AEEBB9054CC452CF00A1B6E4A708111A5E7C954BB0FBB384BFDBEDAB66ACFBB2B14C6FBDB4506BBAF46CB9FDA2FC37CBC8389B4B9BD5808CA0A9AE29B6320E9267F2BB538F8C2B5549603B2A3DECEB50EFAF44F747E1291DD6FEA440916B750885A9AA1745F5FFD6484D047B4AE80B320888AA937F4F05C433482DDBEB00C84054DAEE6E8B44145B8CB15C556E701129AAD30237054C0090C03C890ACAFC1D5E0426BECD941FB9ED65B5D2AEF05FB13D06609333AE7C23747B0870A273F3FC2739EC00998EC1D12C50B8257A1B2AFACF926108A26C1F423C039A85C788BB2D7E545DE691EA0B6E1B9B0ECBAC53085DBFDB62C72A752CEA08E5EE5E4FD438F7D3C551C9EDDA9B962BC5542017102C5B1E82A9F05054F06AEB03BF5C4BA1934F5BF80F38A6E2B953C14AF723F16A167235580F6A12F0182C678581DD532F677CC90A294ADF88C659CEFC82D51718533CBBF3C9E92443F23A4774907C33DB33732AB4075757F9E84BA41F6E87D28DC01CA68206008D7073AF3ECF5BC0FD83D059967133D6A2D33420E186757F701791D0986545EE9B48B41EB0524617D583E09D60F025E6FA457A067A2197D721C1A8FCE9708A65B88675A5649520E5C786DCAD4D925B2CD3DE065C26E8DD03ADB244E48562474C57C7440760D6039C1E9E1848A828AF004A55D4992B119857B4DC1C8A5457C4D6016970B1C9E1E4A06DBCD9790B284FDBD7B021BF2BA078981395699F7985358E7855F5CB0B14CA55E33B791DEF6F58CD34630E007811672B707578BCC78C222FF6E83B2C5D58523A27639BE77DBEB4DE0B6E24D97477027FCE016333A7466BD9111E39B997DC5125ABA5A9D60D2B7E2805A52B0E73C31AD30236A9A0FEF47CC44B495B19356A490C00841B4BA9C60F123E4E655F523E6CA335E21BF89C2E8C3EB4EDA3D9B8F5F20D55A3A42A034DACCC122532C4BFE6C5FF73F8755E03CB454B028D0EFB88D10112CBEE64CB62DD026C1D805A82BB94FEFE6280975D07F33BE72A02834C884A1FDFA592278485497241881202A693C4647A465C0F1E61848BCAC6644AB669B768FB29D8BA426DEA2254523508897C95F920D103BC988F1B49C218C4CD60C12A0045223582DBB4DA41A6A4096CD556373A4F0C893E9AC6C8EE0F65C5694CA80457D7CC1ABEC75E20CA59E7537438CDF0B8C5CE9B53C221E628FCD15BBE07BDF9FAE6FEF48C9C5C84566DD7DD50CCA20154CF2EABFA2D9EC705BBA0CD06A3A6DF5EB240C2F0A2EAADC450162D3B77713DA5B87453C9C56A2D6AF298B4F1EAC2CFBDCE466E102F148DC456A3D8E0D4D8E9F425EEDDD05EC0771833964AEA15CE008CA53F430F8F4C64A84B8B6023DCE5D7D419869806B80C1C98635689D2CBC603B6D1307A79E6D44FA645EDBA84EE3C6C8388D9FF308FC7F514E60B8F6506FC4814B1CC473180716354BB665A6BC9D06D2D52B06C0315CA565FBBA31464A1B66428E514E748DB9C7A12FAC97DDA961CD0D4AE3A3B230EA43FE2EAAB0BA0B83054823A2C5771CD06CA954A84AF1127B4403C1DEBDF0037E75E2F8458788D4ABC45AB88D651F524DBFD4D5E2F03CC0EB1EEEB9A889E6FA03784FDD1DFF17708C22BD24D1558D34227C1714AE78AB6723BEB900F9D91401C7496C665CE979F5B0447AB5F5D35E391DD8C309FCB5E2496E4E432A2F134FCC88C060E21C33604DC15A4FC9A532BEA982EFEC4100E363179ECDFF1FCBF7691017740ED8AF2143510D20565E5C32789E4BEBBD9072FE16EB19E5F148E12543AEA6E87034E359E868DA615F880A4A501F9B57495D4928EFD0710B2E11166FC356C776E2D0A88BF65EF6B35E421E54E7B0CCF5F3E4B3538355F6BB45571EADFCB8952B3441D3A738B12BAA6FB333FF230A1A959D8993210BB5238CBBDB50B117B3189F9DEAC559A3B2FA4E369EB4BD434C28AD6DEF244C17BD3643850F5BBDFF17FB4952D32F69757838CBA16B5CFFC1209CA2E87975D64A1293B8A8E0BA932AD49B2C2248726F8AC69F72F5DD974EC5C4ACE1B47F1900BADE2D374FBB25B9FB84F629BAAEAC47A07BCE0BCFDD9B14A833FB99E4D1684468A56BAF056922265F603D502D69D088FE5151FF635959D7A640CBCF6E41D56D308411460595E8312BF910CDDC0427F951384AC1ABF910F547B3F20D130880ECB7D62B68BC9052A7667A27FBE0F43C6415BB30BB71865CC1D10A4E82718EA71681269ED792018E4404A7156052C3F05550D7ED524863604C93A587E0E160246AF8806B4822617874359F7067550375930AF5F2985E7BAD5983D369EB260B31F2409D9CD513E0D40E63BD376B4B0DFBC5D17C92132807DF40BB24631BFCF16E969A9D26C338EC110BFE28BC3E4BB9D2B1FD77504FF30A042434896E651CC9FCDACDDF31C2DAC7FD572D9A5090B11F6883CAC1137A7EF767DCE89499410D36C8DA9186B5A6C810ADD6D2289442664431C3DDAA595A963480255C67A99A887E798852FE8988662D3F5115D8FA483795B042B823949577ABC1C95A7D2175631EFF61CFC9AAAB88108700DF08E76C6490C2C961BF4CF1B28025BEC07EFAA0AB5891311B27AD36A306769F78AE4CCF8EBE9CD3CCDFC2C4708EE7BC0D356495FA6DB22817BC3E47DF46650935AB920C77DCA607359A9037A07539E11AB2893BB2262467731BBEE93C9E4A400799089F038C27770F5DC479D98DB16E0AAF5FF2D66797123D187B74C63926E356254423EA7F5F3B9E498C9AD853855D1EE166AA210C431FEA5B47094E7D347FFA553D1A11384261093952BD2BD9E54CD8B86BAC5E76E1DB23B9350C057131B9E8E13DDD43C0739778DF41F2923D32FC098B7B35B924C6A05D9F9A1BE7D32827A3A2BE99E831585224C8EBBB0AD18E8DD9756F5C195C44813CC3CC66126DBD7607F91B6FC801439D7DDA81C0E6D7DAEAE97D85F311DD57B158B9E0B3681024E136E2E21431A8EC5F13FB64DBB1164B9E5C6994D81EEA91EC70B320E8D6CE5E03A3D0CE8DDDAA5D1F199FBC4BCB2C334896E419CB203A1BFC66DFAA1F8F5A95228CA12A86DAEA6D57A31BBE93A12EEF850B2721F8282396194BDFCFD5C2E319A8D918C6812169836C4FD28959535B3AB4D93E9269C048116DAE6E472FBED3E717C6B2420AFB1DDFAE3740374EABE4548705CD846C2D58C5CC05F53722E250D6847F3901D372CC2C68D0E2A488F5F05E1DC631A537F33A66A1CD4EAB5B9438819F891177E617A5617DBA62068C67E763C5CC4AC205CF8DDA20B31D84FC8875122EF0C86668124C64E60BFB821C8808CD39360CB4FC6475DF1D97BEC03993B67330194D52A7A672BBA3E594EF7B8B016DFD7DFF678F92C161790DB9840A2B0AF38E58BDEA3E5D91EB2DEA1C0AB82FF9E86266F7C5203A2AEDC23F7D524BB1F5DAB38A6E5D50ADDBCFB9F614826C1520B95C84120D41751BBB149CB59EC0CFD7427E655A448A8257C4080DECAAC87840963ED58F50EADE0DCC22DBB46953F19609FBB222172EF56B47235E83E7A31CC900D8B1C5A3C6F3296F64E59E15F8567CE8F6B08E91B16DCB455A8C3C6245F8067ABB28E2CD7F4DE2B4B2A063CE92E05149E5652EEE28CBE7500768CBA7B50734D626341DD6947949DBDC3A7A04DDCE22450A1C51184BC55C57402A431E13B88762BC0B6A14E8669A726DEEB4E1FA433DFB2C694B3D7C2F066771BED56D69098B5F736FE5C8A884560609E0A2593A3175C90825230E97CBBA5DBB02B77E59371EA3F6C4A39E2917CDC3AF8C78FC43932EC1E2385096535B643273A8AE6024D6284E7AC959FFA4A08E5651BA05DFED6C491985F6C16FD605B75577AEC3E4491E2E134A4ECE7DECE401465E259341BAECB6D6EBB9882400505BCCA075AD226EB1BB57D818A916B16EE6AD47B418ECF6AE0CCE7EBDE79DB5F2EE059DC46B54C8A17F521A984C9A97A2C7E3D26571BC1708546B9250B1D8323482A8B3A533A02D2F9B4BEA927839594099F01F98881264AB7FF6F953F248015F4BE8A4F8B944D99DB37AB1CD4CF448E288ED4FAB00750F7CBAE05A093C7815BBF979DD7BBCAD3A737A38D9499FB0F018B88F03D134B505B9AFEEE6846BE387E2AB35389739A96AD3F2E973747F74C8EC311DDECBF5DC55AD576535D199E506B6BC1E61F01BF7EC9749A5E38BBAA2D70720565D7D126907675412936D2478C5635B2D560FFE7F49E577318DBCD90959B7E35B33F5EB08A9902AFFBBB593CBB191801638DC311A0A77E03CE24D869D28F9C908322008750560D7B58566A0D58B4CA2672C81020539B83E8E18EB2BD75182D449B13B21D24C07009D9E2D2449E1E9C75E71E4A28198C95017EF1E2C735C744B0E04FDC23A018EF4EDCDD112D1EE3E17246478A6016E6971D46B3BBEF8F9706ED47354D0DE13CDEE6B75A109A752ACA5728D4E6DB94464E07CFF9FD5B0987C2B626C9C6FDC8750FDF071CD902BA196BEB74E5FA6E264A7763FE3A14AD49C3D9C6DF8B65733A3E755AD5B2CB632B8B18E3D1CC555510074AD6281141CF1D86145BDCADDEF8C1E988EB55A37CD4C16A66A60017ACFC72ADAD1FA7A0007D192777CCEE8172EB496D24C640A58C4D6F45D186E3B0A5D72B7898DEF2FC51C79AE27FCACDCDCCE7B3E3BB4BFA7469BB2A01B771339AB0D206A2621F230DFCE468FC86B3ED31093B8E2D87265403B1B6F55164A0CEC17539A6140D0EA15B31212696F8F43CCECA8EA04F3141EC828D748C6D7BB22C71D037BDF541A57FA4AC052194C74AD8F50A060E8A6CDD0A8BD3E7E20E2AF5C26603D6B82E29C57D6153FAE87035453188B29927E05E9EEF4F74023D01EECFD7A120E4AD648CFCEA1F3281E2CEBF1F498E8313CDAC9FB8ED96FB6A3D6E0FDD397FCF158798FDC4F9C3CA03493944C37E0171BA9D5EDE65FFA828FCA8A31378A330239F9888DDD920401A1C3783DDA7611A6BA08E3420476D86095904FD1434465838DF6AFD79BEFFB8941BBC3FA4A52E60BF8AB126258356930BB2C5CB4067C84364375387C2556653BBE1E4FE21F9C63733182C0389140D324CB76AFA4E02284067081A0F0ED482429074DBC0A8A242B20040CAD6ED043984BDB88F0680F858F884670F1F3B868A2C30FC35E9EB86CE412A52239CEAB6B72B9CEF358888B0E1F9D6D83D4747C22BB9F66F1229E47D9EB28F4092DAF37DF3A97A566FBFBEF33C763537782B7776AD9E9E68F1BB81C88F9339C26C1E6BCAE3E8C64EF4D4C1708768343E5F0222CA67B2C3753C811D36ECC51F81677616F39BA03FE9C225BC061CF42B700D5ED5E03E2548179CE379EE16893E32F23E5330312CC6E980B3C87F2246A6EF470E39F6DA81090993D0CCE90ABE2FAA10B42F430064432969DA76C2AA9077D897E4ABE0E86A89965DEC00C1AFEDC866CA353F0FB4886969D5B09E6F0B1892D9933ADC4CE3D60A5559CF1CB4D1202D10AC2CF0F2ED1609DBEE7683A1F023599E6F6E6D9BD1D0EF002AC635590AC629B4C0AE8622815705C7CAF07561D042D21629C8BBB995C945AC42066155A4F0C5DE7F8E7C2D56FDD84B9AF684461E1DD9A972E622C306A13041CA449BFEDFAA9722B370D051C634B96EC00180F267E5F1E44CDB8DB2C917B0EDF23AAF53B71E562D666C8A9409FFA0DC844C8035017072CE985D86598A2FB5C1767D098296005686570376F5D1EDE903FD3D132B7EA447D862BF536C46B6CCBC563568728A8582F075AA695345703C785ADAABF9DF1CE783D7700227E98EF8F359E1A823704A842C5541DD8B2A035B88B69620CB9341D602E48464569E833CA34A82C6883CF2A47BD062FA07B5D5CF10A99513477B6F9C0FA350CFE9686F9044A368D708755DF99658A17CB0C5DE0D9582A3ABC51DA3A3C4619AE08DEC85C0B8893FE140EA49140CEDDE817D3E2A7B7429DA1927D64EEF0BFC8669E78B2D6378B56FD0E9AF5A5EE0C308F5298B87217C6B6CF06934B35B4A87BDE8C282DCD2EC3C3908B941BC321BB66F278A03B7B639C70B4154DEF3B2BA1273EDB914865FDF0B44609F6F495B6BABAB6D3FD12205B3959489F9C57636CB7A1D34BB3B8A6D816AAB934AAD7F3E9DBD51DC406E998FB6A0F0FA7B235E50B58885D4EF14E0E6A2AD75F41256E596FA28F8E4E3C54E61F747801D6605545A82106D07E08B88729AA5DDB98C7D83B4A9D9DA5776019BE1B5E420C20E844B773502F6BB7B255F6EA2EE980DBFB920E700029A071222866D97A8B0C579531D1F334D059ABF9D8CB4475F282231B40572ADB5A98D9D7DBE2EE5049F6AB5EFA0CBDE44264D8129C84460C4410063AA966A826F989AC386BA379ACACCAB8F62895C158B79B6B3A08F21F58E3D328C1A2989A505C0B11CD80A6D5F2DB6ABAE02823C723DC326AC9EA7F33648923EEA67350237562C923CAB97A4E6DFD33C464191127DAE84F362E9A0C6688B1103CC1E04A5211C36762F78B7290ED000DE7C6AA14D1318B44D283BF8913EE3471436B1AC5E315683F3C4F896E8810C5B291A9557B0B5D2C00CE8E26A87947678992E5198E34439FBCE82750F3443708531BF513E7835E3344DA1AAF00A3DEBC20270E404E9E9A34500F7B2010ACDCF8148ED5A42E576D6B5ED6A0E4FDF3526C50D3D18C79F48ED9A96EE8FAC80901397EE88F3BEFC11D18A50FF6285D61C0932680B27EB0F240CDB36F53352109FD07609F4A403BBA4B70D426988025194CD7091280E60E2F3D31FAFBB425EAEF619DA8C64D5FC418F4CE5355C71DA95B5B6A685FD58F70AA54CA56C6118C067CEE29BC7269C5FDBD726702A1C029A7CA8D44EB8DC50FDECBCF80084C7661195AA4CB067B9743EAC23E46AFDF9165B2D23D5D38F72EFB6E34A3529EF1AD7BE55E19845C1A9C5D9305E05E1B1AA7962766A45C304FE4937664C452A98F556C23E78EAB74489A192480C01D5381B69D79018A029966CD5B316894A06FD0733A669E9FB6A9A82CEBFBEC57C85EAE97B6E53284199FB75804A9C759AB81AB055B57DDBF282D3D9C247F7AB8440AD953D6CD9803505B222AE7393E5E416F17D236C56E88E669CA861149D042F24427B47B70FF7EF19F0495F31E43C94370C8E9AB9A4817D794A2C4E6FEBA96A8125292CCE48E0D7774C13E2ED2B79213CD2694C2069D8D4B8600A39F99EA014C00C57A17324C4D6BFB4E8BF172B0DE1431EE777F491E7724A51DD3FEEEB29BC6C0D620B1CA518DD6A13A687AECA66B5692EFDD042D790CD411C897B31E650C5522A565E6EFF64DA910300BEC62CA6DB0208C0D2DB82B8930199497F2F79480789E8F255C624751463A919B45A68900A1D2AA5C42DA69469FD914E3BA4EB489C359A6298E0823A0808D4BE636CBD3C2665F0394B2681AE2940B6555381D153C1F56BAA6F32069DBB668DA16282C5A16AF797274EF7CFDA912B1DD5A9DCEFA3AB79E1322D298B941625A1B340897E5A0ECD67DBF658646EC4AFFC931FF4D421DC316148E6BEB65B3A9CE344E365CA48A846365A63E2C814ABC75DF9CCAFD2D026F5EBD5CC296781102EF9C9D00441319D9B53B6D2DD3C9BCF249EC079E0B1B150C982CC7E3919622A173BEDD1593D9534C07C9D5DF22768086E90E1114EC2DEC61594B84A0D437C717184C9A951A149000C7EF14DC478E166CFB23F70216F6D83A242119D7EBADC0BB82606441BE4F724269B26B6487CFF6E9104B399DA8435C73D4162FB88DC9169A1F1FF77815B887D852B0C293E15D3E1D200778368D7975F8193C04F072CED2E155958D775E468D762AC3979B30425E52733B6DE7A62D4022B3DF2FB3DD8AFCD3AB036EFC1B7EFA779215A6512418F9926212E0489C9E2B15123BE0C9A7EF6E560A9332435BD094659992D2A117381522B25760B483437BE75DB0355AD7828806C17AB4EEFB08DB40407F24898B8691B2BC2593D20A2502A53685BB8A732822FA90F33B555587FE08C068ED11603BE54E59D505D8691779D492F6E160EDF5C2F029D07A6E0315905436609521B91E493DEB1AA4F045986E451F4B3FA631B8296CF89BDCCFF5A68A35575158EEC9856D4BA4DFA048B0F373FEB87DB5FD5C04184FEE500F1A214B21B48DF510E9AF239B944A7C7C4D8B3C0B856A49D3FEB0CBFCBFB1B62B39222E1E8862104C2002440C9C4D99F0796B7AE35AE2898F58A736D3106C51594EB14E6076B7E95A4A02F93676FD800F7C006DEA3438646D25EB407A28C6272229F2EF7A7BE451D3790590BCF4018B0226D3829A21D68A74DCEB7FE93EB945705BA8C795F3744916DBCBC7B491C4ABAF81F9CAF272B78B5F0A2217F195AC59F27482FAD7C31243A5514643C6332619CF7DE64B4C6936E4F34CF65D0802836866D65518A9F1085FCD46F88ED77DEC3732B612CF150EA04AE34B42EBA0A7E4B84F0B217FAFA159018BB05E032303FABC2E3E5BC3DAED0664EA8FB02927B93B0562B190C1A7B6230F8C96609E4E54B897AEE79AFFEE30FF23ABFF1FFB81EE266BA988A5B0C4A02085A7B4AFDAE4617D6A494C30BFC75F9F2CC109B29574CD96C034137981220DE03A84E7095B1EC9397D68311F1CA011E94CCD5F8F0BC9CB09D9586D0F4D4B7ED53AAADD4DF7E212D29EE7757DC42A1B3CC73BC5626509C2AF55829F7A3971AF37CBF6E460205E3F4772AE6AC7E1F472ACE46150F82561EE27A0334598751A83105411DDDF42D63AC311FFC271652C466CBE821FC1635E7FD8A0B8585E85817EDF5AC4AE9A25982BDBD5FCD412F86DD370259E22A0F57937DC1C7100C8EC7FBFED1E67E1AF237DC347742954FCE8ABDE4B09E244D4F71F68664230AFB9E9DAA127F5DC381F9B345CD39BCFCB0E52D7AA8535730AEEC433F0B1D3B834E0C92D02756B3052E0707D3FE988566869A6BF6E43D6DD1A7340016234418DD87113FE73DE363D2DB2FD8C9DF074607480484C097BE08D1803BD029FB213F41DA1B98B8D8F3F9B72EFB8B5CD5B33A3B4EAD85C3D5CEB40B87D2C3A100DF143BEF1CF45FBA80EEDF558066597E5DE8B3D9A2D76C3FA3F590E6AE8E9B7D7005AF647DC0900D8919876CEB3132886E4723574E048897564B4D6381E4FD075A341A5AB394B23A01FBB6736A66505A53FACABD6CC6AF7757591280609E6270C8BAD33D7177CFE785A859C0C3A76FF082C02B0CD960B737FFE2BC0CB2DACA1C30D086C40FB17D536E8D8A917803C6115376944C9F487CE88DFC7E3E524FDFC3F1BA3F3E58AFE5B0117BC0DBFA2E6E799C25AF1ABC66AEDB98B116C3785DACB88F14A902D891E4DA5EBFA7A90CF4087DFC4644D06F5CB4095702D23926BD786B87F5200380559149478B22AB09A2C47BB4CE5F3CB9A1DA0DDF8A1681209E813428B40EE026475A32B8429EC3D3D62DFB6F8D9C21F3F76F97552651656CDA4117A7D3855F6D8CCAA5D8ABF35A108AFD99E7487315DF048432E967C9AB81BC1099755250692C8177FD9E9F7C109D37BB3573DCC9BEC8A3CE9C60BF64777FB3BF9C46A3EF471F10649723393936D6FE62807EBEA49167C73E578F84870FA91D3CF7C8C7CAEDAD035CC517D86ED2305AFCA51ECC3F76EA5654B68496C0B4203CCD0C16EB92A1C6365350A4A9E1665072A54AADD333F2C91E178FDCF208FC8395768564037777A924B9735F48CBBE4046096B2405F725F1B2A0D2F8A0E801B981E1969658B5ECED4D12C42C5920DE4AADD844EEF22EC48DEB4D5B7FAFF1DD95D025B11EC65581D763FB7682B9FD960926C6F8B59CCB4716C4CBCC618480514CAFD0934BF49D288B624528CE7612C819D816517D6C1F1648356EB10A64718EC2FF00866B15FAD83BE3C551A8B6890011C895638F377CA12193D361BFBB86F8515DDD87537F99BB99B22C0DE188559C93E79D4653CAAACC61EEFB2B9A4173882939E4E0D38447A96289CFBB1A483AB5F7380C22B3361C76082BC5CEEFB6D153A7EC6581BF324E77B6C96B3CCF5B77ADD597FF4320AA1A0E3A1F0256782C7C1DC9AF0078031E97642379F6634CE3BF240DBE1D8AA27C654C43D865607F118990F35B36A7DC7E705D04273D627233117202AE2C17278FB5A38F4D082DFC6893D468D0EF68C2BA37F9AB5D29BAD683D73826801377FFC5642548B4D8544873F50AD3680A58EB4C6BF2723951A2031D44E2EA8E27AEFA8F68659FACF9D1A8EDADFC83E5EC489F7AEF0C11C4EE8744823906167FA6584CC16E061E369A8EF6DD3E1D884718307ABB0CDF603D9AF778F0FF7F49AE537E5E9668A30D6F26E77A6E8D6FB781D1356A4756A09618E0BDAEF893B469934F18DAC09194428A46D5E9A6749E473FC37AA963FE2F14F47D0A93477CBEDEA87D6DCF7C0BFC0043CBDAD109DD054FFB891F4995C55739CE15810D9E49FEE9A6375B9456906BD740F4746C971E29E5843FE4A6947E65C1BCC81874657129342DEBEBE60AD40B0C8AF42AE156E1A008E7DEE231BC29E7C256F7C61E7CFECD4D2B4F7042B46CF371FB192150F9745BF3CBDF1FFE52A5C78AC27E40C50C2C10F91C1FE221A03E0EE6C71E3250FE7AE0B76E534C9605A4821EA4DACA17364408B5EC98E619C3323C6783DE7A1DE3BDCCD6FF4B4046FCA900BF6A0E26E43BB681BF33706A22A10BDB18982737FB42A27F8598623675F4A8E1C0378D678D9F21398B988C11A1CAA24751B01F20E77433170A6050B43E17A9BE0C2D9DC069FBAC6D250B56D582D00DA2CD54998EEC9DE50DA0F2ED31495156EAD8E5185F66EC2A633457DE7CE2780DA91EBD779A2CA75E627C588110B410DA4FE76F2C93B8CD8DBD453423E9450AFACD5B15BBBB7E2BF55C8C47AACAD9495B33E1CD0122DE051DDD9AAA7F601E64A0BD6DE9BAEDE500DCFA8EF3071AEA9598808DAE8711B7CFA6235E12205EE634A8A7899C840F8CAADA1C6A17D669D61A80B6C475E9F15260248DD6E63D5CF8F76BB273D981DD082ACE48790045DAFBE7C4E13C4255D38E7A591D70CB9E25A1EB5913A720B55D9F8AA2F1B394650CE13635C008C44422FDE1D8237FA30277A44FDF5217435FD7CB50B7F6BF8B7161503B48001A5105F8D468D36F61CAC023A857B68F51A41A85453A357E544E7400EEEA2ED1B4E49DB9FCC44ED59E9E214E3F34F5D440CDBFE8AA8F7042F872CB4D55A30F762FCD271BAE3B1F61B7837510E3E046571361D69ABC2AB86D418D6E07DBCAC3046EEFDF9A2E1C3D3DEA12F5E57559B9BAFF354E3B64F722F405894A764EBDDD51A55D51BFA81284456BC965C952F2B29311C9F1F5C2E5502CA33AF5FC21D23102C54A01C1B48D0850A242AB0FB346980F815164BA60A239E113B3849B2D304155F5FDB7C4948D3A20EC04C7D511483FAD4D4D88A2CC0390925C5C7ECCE0466553A5E7095170B0430DE2A9AB89DBC79611BAF541C684C3289105829B3B6ECEED7198A33EB60A179FDAC9FDDB93231EDAB13BC6758F0AD65C1D1D4EBC1D0A7C26AB070E57D0698A3163169924F53510ECD436E27EAD16E78436B18F117A8113A8E0B6CD432679DA27F2018C56167F5AF85548AE69EFD891313DA8A235F2ED8E8D9BE2AFA8D0CB625E6A39E0D67D345819D18663C13DD9072F8EA4561F0E66BE346752071A0C2370637D8B49024B6520B72CBD0CDAA21B28F3F8290CB2501A3CD5F582A47C2695065E27D0D7E068DE41D1BEB24C545799974A142CDDBFA2BA8B2675CA7540A70CE1D333E2BA73D83CE8D5FF517A0EEE10E1EC619FB263C0052D4DA687317456BF163D6C8494064116193B7D47C55CA04249BB4BC34AB59AD1058C8B53C6DC215AF6D2896A7EB524C2E5D4FD0F40D107532B776F336F6F91D11EA25A050B3D9100EA02FE9583E0D466E8EBAD8863CCE28154A4D0A3B7FF8A9CDE3925C0ED6B858E4C57B17E39BA12B69F426FBA84B52A92E7B0377DE0AF423B4DBF2B823C3C75B8B75883D010BD80C411B321F472B441F9B411434A2E72D3FB57E15CEB383250DB788C14FB45ED4C2EC8ABF77ED9820234AC60B23B37332BC28E916DFF044F11F14FFC73F370FE814628A57735156072D3C54E4E48886BAE36E3428EF1E770E5A65428E5813B2B6BD7CC1EA0BBF7C95BAF1B8D0DB2CB0E48083F7FADA621B8A9B9DE77A62EB0110CB169B0DEF09480A37DEF9AB78745B045531F061BD71A8E1EA79A89C4BD5D31B58534A031EF62E0B3FF88B61D88895DC1ECF2816156183F6F5DC1C28F9F3BF3476BCD1F745E5D74C7BA40FE6D52E8547E827FACEC85FE79E1EFCBA0F6478B97385A43ABB5B1BD179D16BAEDE39E672EA06D9349F10F8E55A1354BA1D6BC0ADE93BA4F6A57A3CA4C3860B953DC08576A3919D02FF2F40E7026D0D4BC3001E542D8CF979859BB322FA6016C463526230D41B35FE3C80578BD88F9F8684710E02354CCAB280B3B648DCB33AAA8EE4D1A04CAAB99B58BA03213A7CFDC1BECD9F9E3DA2AD67CC47451C9091D9D85E41A21B157B9EFB7BBB3DE2FFDB8F82893712642D6C8821196709283CD44192720749060DE56D531C5F7D888A3FE16327F4D3AC2A5C0FA4BCFBD08B62BC9F0581BBD787221DA7B5E2F759A7178E453AC27F3D6884F5803FE056149E1E5210E336EBCB5D09C098671C91F99A1CFB2FFB495867DBA06C0B3C3545988EADDA52699F5CA2FB739504B638E36540A3D722286FE3F093493F23B951AA729D57BC782936ACDFA573F3D7F6FA3D27697E9D18CC03AD05E23AAA738D912B7CC140D9FED5AA0E3C42952128074065D8D0A351FCEA3893D650E13B79AE38CDCCB9675919C8822F3A8FBEDBCDFC28D3182C0E7E925A0FAB65E34F67B0DE30B4B0FB4686DE2D7B4E8ECC914DB8C0A93629552C590F0C20F50CE2BA3BE765A4B3BAE4852D64527DD445DD820E781791AB278D54AF63A3708D858A82090DFE1EC7E080BF591AC9E3EEAC7CDD641595AA1ECB3FE70240E495499C96471A09A5703C034CE7CAF72D4751214082926F1CF6A013C052752DD64C419F00AB5B55DDB3615F0CFAF051AFB6C57FC61BF65313A212D34A754546A0E70CF6E3CEBCCE9DBD91EA0CD053C7B7567F8B9808ADBC1097FF695BB8FCF7CB77E728EAEF62CD41D1112E185B859052B315CD1A4D7224212C09D652CA67C20F4FF420810789DD20F3647AC5632B487FBA18A5529F9B122ED96E67E07D049677B5A96058678CEF4F2320D18272A1CFEE0B92AD9AB980BCB15D53D888ECA80E264A5E4F97AEDC2F84E7262611DD41E703F88EB2133F612F0F50F7073E6F42BFB260390C6620717684273B0838A3CEC06547755782288F351CDFD49AC6605D3CB59655BC13983F611056113CD48101DFEA42E125DBA30706F83A444C4C20A70724BE9E0B0A3ED9C235140B03889AF932AC3F07F1D4B8A198B7EC0E4BBF4EB3B10AB994744C4393861154D3F8D176A6C0EAACA9C8CB408E6E767FCDF0A7FB3DDD76C8E936D5BF4F7F121E62E2D4608CCFB02956750551400A1D68409634F313D8034ECEBCC1D87E0D1EF59ED0F16974378451F4AC7CDD2E8BE84FCCF681D7F1146423A320202D2244DC665631A4D969A634DDA3DD3F27103F0918209AC43CC67D0BDEC40BC219B6800FF0BF7B4A67CD8EFBD63A6C43E2BD7FFAECEFAD7DA02E363A6751A82F73CCB6513B824089CCF19966E18F805316316B20C482C9C9292D97E43978B3998503BAD1E4A3AC5E5051E49916386217B8CC6DB90355B18D791EC1627FD71E2C97D66061C5C78E25288DFD7B40358FFA62AEA9CA7E7F7ABC52A409EB9C4A6FD756D861E7C3F800ED7B75B648662901AB683D841BA8D446A7F6B77A319F8EFA1006ECAAD57B84AC6C1472A126E5DB9AD908DD3B9E5BF591536D0AC8C2A8912BC6B117170B16848AEBB3E7B01DB29D9222D0862DB3AAF7FA85948CA04317ECF12C151C519F780BE0CF724D75A71D92496FA3D99F137A3E70DC9DC0B3EE30C718878F63B58EDF294953F55A97FF5085EB0AF2FEB1FD1DFBC82D18CCA34A14F0801BDF3FB9AD0FFF2EFBBA8EB677F35ECDE54A82CF748E8288C02142651B66A6EF177FBCAB2CD3791F387BD2DF3439417C066F2005AF7100A31C7AA97D0592F27DEC4D01A3D7101014E2ACCBAA60B5B030EA5DEDE1E820DB2AFE12B7E59607F5B5C9FF8107410209A155FD2D49FA030DE7C26544AFDA2FDE146A469513DA6F670E491F8DB937F37B74756A87A872AA7D6520E7A75DC5C73D73CBD8C16EFE557EB85BAB29B5142A0364EDD9F3EDC965BBB0D3FF1C1EE438A550DBE5992D30B0ACE81484897DD64EBA7A4628ACDA08C181B7ADB4DC21C54410039ADD0EDDF3DFAA4D1629EFEDEC1A20449F51197ADA92038AAC0ED9D0CD840544BE12078981D994D66A662F2DF0B6374AD9A249A767335751605FF386F6EC514E1673AF312487782DAA154783B6FFA605390AA91B90833CBF0F2EC573430791559F045B40D1F26D7AC7A764561C0B66527F482903C623BDDB7866EADFAB83FD76B1A788FEF4E25A229F9781D333C4B88660B7219272BF0C8C848C6F24C5DA879FDD483BDD7DE898E281BBBA8AA0DB630D7C2F88ABB77CBF664D9EB4B1E6BA1C7570CA92B33BAE8F67835B21818D4F2DCA434F68C7F8DA7C774A93CF3B8BB5C094B60EBF47C78E9F5B7306997DC32E19B39D6EC306162490B7BA580CD414429C63BC1E8D14B033911E8B77B33B75743DAE6876F2EFCAD46783CC7153484D6273088838767DF9BD70CC2F082ED0ECC491E6380F1396E4F6F59E49410EA7CA230FC1B32415C95F2349C955A05FE70494ED2BAF50EB8A329B06789A47A269FB45576A4A1BAD72193D3E75518CD09553910862CB08456CB51C26171383E95402004C9364F9FA585C4A6169E597D0144703E6C7724E31CC659D956A9EB4E603FCF9C47DCDC1B2850AA6C267D74BBC28CD07DAF210B28A86449729BFE9295C7BE5165163726B68AEB0853AFB5D9E29286D9A0246E1C6CA7D5AD0A5628AF3E1238B9C00114579ED7EE00B7AA8110C081E7906254DA2D430364D0094E0221C13C194FC693A49C9B7DFAB9A4C5EB0B697F5F8C3FFC35F736FA9EA1A8F7F95D1E1F711A33F2E7D8108460A36D631C2538D5AB32EF89153C438B5BE785A320CCCE01A10F2443E84AB3A90081A517F8191C953D63B1CD01022F2EA8393AE3DCEF316630024ABE136407AC342B6149F1DF1EF2C3F7DED0ECFA05050783F4B01E925D3ADDB319DA1DD3B251E1E7E507505273AAD746D39F48F1A4464313344121F1EA3BB9CC2DF39DD3A90BE5D745D35935304716F632C972148785D0CF4CC0DDFEB29F2242688F33BACA0A59218C15C2505538549AC6A4462AF7AA0A3E85D819CFA9A74F46716CECA35D779B5054DD97D28DF416349143AB1980E35488C2DCC99009445A73EB4540EA472ADF99A6C3131C8A5354A3118AF70E246F676152FC1E033B5B30AD5B2C36E60925622F17E96BA078F0D2FD70EEB5E0DE4CA4416D5FDD8CAC00A95B78325164A566309207187944A8CFE7478045C7EB7588517AC94C6A1F3202EF949202EC717C3F820753EA8CD2D543A60F4373A5302271BFBA64C7A8DF69C4216179268CF6CA4CE651BAE8E62D586AB6B19CA59B369317E59FEC5364E472C662112F2EDAE4A337FA2BAA3D739368968FCCFEAFB189B75D33AD05C71A395353523EDCECF840B026076FA5829A253A9EF0246A27B785C746BDFCC6118FA8B9FEAF4646F7C263872121B2A7A67D440C9EF1918ED3C2145FDB6765431BFC288C9DD41AEC947108F5B625502CF73B1FEB93AF88C8B1F9CD009B8AF79DF8E56BCF8099BA776BC512AD9E892D35F69D43E9F86DC016912793C54CFCD0BCF263933A77BCA269F4C2516DC68152201936532AEE58C3BBD1E9EEFE55A67D5E315ECDD7E9361F692EEE215110E35CE32BA729D01166797AF792ABD4093977D52605F3EEDA02501730E9905E97FF2961BB71CE5D1FF7064907F775B7E4963B8ED0000324C8D169062AB290878DE919637D3CF21BE2146FAB7F8FBEFDDA4831C37E419098F79688287B8071E2EDFA43A3926613838366C109EEEFA27FE2CABC38AD6162042735B620CE94BAD38E19B7298232B29CA82DA0C144B14B8385F6F97A58CAB7F7E2C049304CBEDCA11CAFA047E0507A9F2E34C3B0F463B2695417977CE45C4AF7FA1B8E233AE9650229F7049A620D13276C73B27E8D87D04029F93E24762E241555FF08C0E53054C69E17DFFE897D39BAE78686E87E76AB642AF7E20DB281FA474BAADF86462707C43BA5A76737AF8910B2D6E9C9ECEBCF4E6F7A1621D03F8134E4AA3370879520DFEB8BF9E59C789F3A855C1D5D5A4CD9A375CE94A218572D1489326ADAE0936A925018DFA6874B8C30BCCC0FDA2B02A50042C6D53FCD5568A5603D1E0516F796CE832499FB83591E7298006FC3449795D5CB377DEC34540459992978B2FF7F1D9288069CBCD20EFEE71BCFA1CEA364594D112A7B41E115CCF2015EAAD3F5DF4AD144D45A9FE17F5BD50E51608526B092C382D9F9A7A8DBCB715D925F214D9F378B1639631236F1EF42BD9FF08D6B1798F69209F906625E87CA1F27A0BC3D3F70D9583F5E5725A005E65F89DDEC11C5CFAC8B37620C973C2F4B8FEF8AF4A963FF479A6B04631E865791F522FC7B4979511560AFE22057A01ACD66D739FB5E084469D594890F74B9E7B153C0B21D19026084DC704411A40CD38B7D8D5E7015FF45423612EAC547C98ACED12C765F7388DADF2D775E441951486CE9FCA817BBF83B599016CFF70E2E85DBF871AA02E049DA9AF1010FE0C771F7D358567A7C684B2EC5BAEF2839EF4092A809DA0A362F6692E8589283280F87EDE57E867A0C89E48F4F481FE0426E015F1604180AF9474EA162D87E32F54111659DF70AFD2F0179B5D3A2D92B03C8B59CAEDFF93FD7EC725CF70D5B525619553C2682BA6AB9979AF627EBAF2B7604E1880E925F1DF8973D6470E9DBDA2DEB739AFD76B33744643BF28BF315DFB9236C1E052A06C5030D81790B0A018F25A65EFB8A2D506894A3CAB1C89579B28A77B0F7576CEA2F21512661019EC660201576587A3E90686C89E24B1151E45478AE3D11301C21C642902A80608E3E22848C98B6E8E064879FE5841B25AEDDEF414B3DB542239688B5E076EA06E5EABAB87AA7575A5647C15BB45F147B5E4370BC65E0EB039B193FEC021890CEB92C5E837DD129AE7AC9C3BAF50B4C1E7DFAB128D341F9B41F039A6883DD578ADEC6ECDDCAA0D86FA0FF16D70C746C81F7369DB6B35A52A2B3B420196D0B5538C5D2407ED297DA5F74374F27D4AE037FE5AAB881FB2FF4B379BDD1A16527DED1D7E59F22669B82BDD2E0731E08E8FB385E1D423DDFC6E8778C5F1E447F911A64D8923169DDD097A059E25B7562171BB78BC1977297990C4C7B6C5F60DF75576962F697957061CB1578C36C9DCBA5D039D73CF0CF1DE8C8C2244FEFABD7817FE07883B7123981C1F8EA0A20249FD5DE436DC145EEF9BB9D010CF72EB117E5D1972075CDC655F8E3850C6794DAE8C342AE680F383B4360A829C4F326EA387DA263A6A313733D60F24C438A648A816C249BF7B60496E21F9C4DC06FF046BF043B183B64EB8B576190F87000336D1966DAD81BAC8ACA47D605E9BBD30E1DBA47883EDD4B2BF2AE93988382EB14AB89BE3C137E113B85131A6163F5943A275E1541F82C052AA5217BF07A8E7DCDE37125AA3734C07818A4D5040D0EF57019E90C4717C1E4FF5E34A526BD7942AF8AE492B83718976A5AE97D69E3BFDA1AEFB82C78C6ED18298085767EB82771CDE754E11498934EE67ECD345DFF8003BADB8153BA59DECAC2063A8240EDAE8BE6A0684F0CCC36A80454851255ABAEF5EB52B4E88C77CE7CAF50D36829CBF7493F5CE563EF42580FD9C89EDBE96C3982A659BE04C4E49D3E5F7A121F4DC39E2B45324B5E4807767CC6793F8A0CB7AD707BDFB6978BA85659448E766840F2987A1F98B7FD3C454A2B103455A275DBC48C81D0743C21A318C615CD90F48359413D5873F5E9E26EB0C484883073E48EB4A8E108C5374CB78A3D8AC439A962E0861E090139328E10758672F797B48CBCBD1881EBA99284970CA5F91DDBF81993046713C1723EED61FD40A0A39AEF4479BD4C59916103B1F1EAB700F2D384A35984CE97DC47CF70A65D47DB9A3634B89B645CB2E02B7B77BC936CB9DDFC284B22DA6735F599D2530AB19976942FE87A81755C58D9225E437DB01341B5EF1CD28D863A997CD6E788F491FB6FDCC8F6B4496503DE78CC63574E3B3D08EA387170CA4554BCC90F677F2A147A9524257E1BB46E62837B452B27C3AAD3F2F553753DB6B878C144B8AA208C7A20F84AF9390D179547BE48068BF15FBBC4F9ACDF7A19135BB94F001293E719CDF3AC516480C5ABB92057D87A75D4CAA301B3D8997449D5A9F77BCCF9E7EDCD7BFA3F96A00FC849CC11463C9812E9602C0C81FAEE7E63E4BB608561FF2F4D22BA40E10D4A35BC6F5A23107006AAF1E8F45D96828B8DCC7747E5206D9EFF7F71AA79F4C9CAF8A44FF5350327DA9789F2812D7F2012D49C19E09FB3A5416A72687C16EC94BBC84D3FE811682D2AC1D28BFC772D5694D35053D79AD1D93F9C9AC50F3E35819F39E2DBBA890B4B220841F27EE8B27B99F68505854A620BFD3193D318FA0A2A5D244C6FD1889DF6FF621600713F067DD1F9FE61A0079FDDAAFE1BF28AE74066110EF98E028BB5E995DEAC458E165D9E2531025198D5C14454A6D885AD9C2576E9669D1F88D3BEEBCE5A26A3B0D9F45818B4F52052485852D0B3816E9F5866071E24DCF7445BCD22AE2A77B435D1840664E0909E8F769933B17000A0F9A87C3B1407C58F3E689552482E40DCB496CC7A94636FCB139A4DBB866C495E2860B1362740FDF287C767C26DB5B03D704995FABED4C9F44B948176707811E3CCDC4F3F8CAF32C7A539D03FEF23D9FD7853EEB5689EE66E141EC10EEA008D0B14A19A17F52368DE12E2C4119C949EA2C01AA046225B993F9F740275FCCC2C7814F270737F67037D2F341DE2AB58FE905E30413EBAB70EB1E04518BB2287AB740A010D404F66469B496A1AD24D93664BCCED71B1F1657130B597474E39C0BF700D4301E5D248A8C2345641A1BEF390F70057D174F08CDCC95016517B799FE8A6AED32B67C3A42252EC153CCA2E5066EFA915ECBF1BDE9633ECB2D10328C20EDF902BC974A565A68CDC47F63103BB5906E28DE5895956BE8B7EC419A4B5DEA301FF4AB0420EBD284E9585198C397A2F043308B8CEBE3732CA9177854E938669DE0225E9F56DF5622C84618A0AE4C26173FDF7FD80DB7F2EE4872BFCA2E8ACA51F526873B4ED492005334FFDA0590527A14EFFE1C4C91F0DF4D9B9747401380DA4F6B0A6315DF9055D28EF5CEB2D90CE797548E735E81AC71894B7BE47BE9932C3E573A71E0A2D3B4C69C3594E368416562BE0E0147E88643C0444C51FC8CFE71F19CB0EF4C05F5DB3FE16C661C05CC105BD6C560F6B04108B3B5396A018A95F4BCA8BD6E3604D2B46D3C8BBD2710C1505B8B0E2FF4D5FBBA149B29A90972056F746E4191350F521B2BB18508DE0396C5AB3B6A21E1D5DAE7D5DB560A765167DDEEC8D5AD49FCDDCDBCECD2523F8DA5C05FFC1FF350018E4451D53757362B8E5A5B2A05353E7F322AAABD07875E7DB864537C0627F0E031BBAED77889FF6BB9CEDDE6491B69C5F2BF35AEE70CB581263FE4498E2EA086DE217EF0D040B291EAA43C28547FB98F3C730D472D33106CABD5219ECF159A48A889A989FA69E8F8E1D2337D5FB9585469C4CD3C5ADA699A9A7C2C42DAC3FE1C1EF67E09A7BE383BE931E286F871EFA08A909A8389027D5733A587E90892754C03EECA59BCE105FCD71FE8FE5B9CDE28BDE8681C4DA3956A4FC14227ED91516824208F943FD998AF0B991E4A61E4D5A9F244A61C307B383C71D2880932456411A9125B504DDB6FF2CA0625F99703A1F9F48A333C4F6A70F29302D72C5BE9F4CA7CAB11ED08CB2B3AADD934040539C01263349126AED5510B53BF035618BCB1E723C281AF8E6754F6BE6548857B951011A9BD8F8B2C3933A21ABC2DB6E84C33D736236EC6C2DAE9178A68D9D7CE008168D489A049873F5D5E65C2D3E90E6A8BA670A6D0418655275F4603A229613F9FDD9F97CD866FF003118140D60B15016C725252887BA1343AB5740420FAF2880B7AE5681C127AD788F5BE23D92A14679098478F890FBDCAA183844B328A02CCBADC982987D2261ED73BEC799D74B1A76E2E5A061B9C02F7433269E3E1C049ACB864FFDEA5C7C5D65320EF37BA676B80CB7283B2B795BC752AD331F8FA78DABC7574AB83A5B7CA8AA428CC5EBA948EF5D1E62DB883F782B7C8ED9C51156547A3D6704F808940587E3F0B46B291BA28B5B5E0391F22ABF50E46A07EE0F1FD08380C764D2507F2458CF5A64E7CDF6EFA0045F596704150AB199520FC7C2B509BB7637470A19D04F33B3CB78E98AB29BD6E275083243E852DD7140EAEE500E5AE45E1FBE860B25CB7E9AC642B28323A866317930BC82335BFB8880EEABA5703EE8AAA1D8E99842AAB05C65FAB4B0C49DBE839FCD6184ACD7513B1D62EBF7DFCCF2E14530249456E3988FFD4AB281DA58B837D43FDC3B8DF65B9A2323CF86BC763A8524DC3B2B9838F8625C4F7952AD778DB56334A8C2A37D8DD556DD48333D05F7EA26044E73E99ECDCBF3CAC9441FBD17CE271318896CFB8D64EE3D7C542297BA52A3B1173ECB3510473981E509C31779783BEBB827B6AD8FFF6A55EBE0A974679875C16832504406BBA7AD8651A691E4B2B1157D2C9F47B42DAF98DAEE709130F866BF4B378347224A8A6EB12C412C3553B8D31E04203BA9F9F79237832493FDEDC01C88FA52DF0CA33FA1CFE5BC06229DD3C07CC34E2F7A485047089C0864C7E5B25521E672FAB16E783030EA0AE63CBC19ACAF25A6DFD3E67709CFF3AE14DA7569BCB1E14D4497E1253BC18157A636FA2A2C51F5ED58358E9BB4BA5E253E283090D545D56DDFB5F412264583DDE19120D5CF50F0F7A34B3BC5D8C2EE5D3226FC8AB0F29F3CA972D7A9E8B46B0A02C5A5769F33CC7B6828181943840D31EDF42C66DBEDE4A44AE49B18A774A94768FC476682B36D8B01AAE306D56033AB58AD17B7F1501E580BF72F8CD3B9850B61D3715F3B83FAAE46C977C16B07BBEB363DB7B60F2A8F3B1D2EFA282DAA41E72350B98788DC42CF64AE3AB8FB3AA267429B317B20DC819E396E869D1D0B396C322F07D709DDF7E194B925C96627C4F73E27695B1081BDEC91CF48934AB17A80619C8C611C0BEF2EFE452D73030C4E7ADCFC1801F05676928ACA40AAD968F38BDDB0191E510C3F512AB3D7A2BD41CDA28D28A790DA2F9FADFF893765CB8E98362288875AA4BE2EA1EDD696A54F5ACCDF0B069466D8CF5DD44C6E90C3F49D7F868E4E795D18D1F4A35F1B2BACF05A584F3E4B1141DF8BAFD1842F312072A928FEBB0EC39E9D394993CAECA3779030A49C1BA1C7BE1DF17CCF1C514423256053A50890A16A409CEAC2B378D786A089F4A503DD195919AC5D9AB89FDB19962DAC12401067B8E07C22DD948C1277C3F5512A6A07C0D71B9D1 +ss = A98165539A4AAD979023D67B435D316F007C86EEAFDB63C7 diff --git a/src/kem/frodokem/FrodoKEM-976-cSHAKE.kat b/src/kem/frodokem/FrodoKEM-976-cSHAKE.kat deleted file mode 100644 index 299de0313..000000000 --- a/src/kem/frodokem/FrodoKEM-976-cSHAKE.kat +++ /dev/null @@ -1,6 +0,0 @@ -count = 0 -seed = 061550234D158C5EC95595FE04EF7A25767F2E24CC2BC479D09D86DC9ABCFDE7056A8C266F9EF97ED08541DBD2E1FFA1 -pk = D53620C4A4F6678545FD043E7670A68702FF893A986CAB7A9438044DC1345EB97A4C54F64C2DC85C570305F8B9886B079BE7DEA83B946BC7386BE4351C45C5C5B9FA5E1E306D9651CE54CA7380C50F24916FEA215121DF7FE66424735681A6A088BFAA01BAE8C6B153A2F3C0687197BB059C414C0AB50838717C1AF8C2BB7C6DFE9C7A93E4D9A4B24A390E8C7C74E2C6839A815653443DDE319C157B11DFB525E6F40721F3EB050A318C21C32D3E8C88A43632AA52E376B55098367FB1235C628CDD814DF0775F8232747372A7B820C804A263A00A66242A77512B0A97EFCCABD2469CD9B926BB2DCFD73E1547C2491A68032345C9AD51CA3C8F9D3B23A72CC34C9C60FB7E6377799DF5432A16441AB5BCF5118FAD821BA833629DD17E64C6BF31E7F3C458A010232F403B785E3ED2462E65F1A26EF7B277361B3852D65F68A6177485DD933FD0FCEF3EE4035FC10A479A0CC1345F4FE87A4CF05A0FB3868727FCCDC3BB0EB784666C3417EC444AFF40939C23CD63DBF0CDBC78642EE04807B4A82A819AC866B7BA67E1894091E083063D5DA56A4F1E792C952D091A9391DFF80C1086B1F2EDC68E8EFC48E5E5E3BC0DE20810F70D7488989B8271BC41E7C5CA5A06099895732961B21B5DCB0D53E1E2DE4453EB7A02EC3CBCF50E6609936CBCF9386051752704272C442D90CA6ECD880DB5E59E78EA3CA9051B4078E58C7E99E7A8983BA05BAA8D60140CAD376912803AB737DAC488AF2F88C452E12AB7A778295F7BFF2AEDA4E9B86AE068BC46CE697FCDEB9FBB8D31570BEF764A00D2BEEDC031584164CE8A6FA2AFC3102B3D7023164B551768E4314CE905F611AEC35AF4439C62916A172CA26658B7AE2A602CF3E229A9A409F886F20390E3B8FBFE5645EA515EC7641520FB23DE706DE4B5C321DEE7E2C02B6D3CF70981E37E772F767274702B4ED652DF05D40988F62EAE6F89959C75EE2B8E48212AB4D12C2D285DEF65E59234AF2C258F9DE74C742CB5C313AAE92DC8FD7E85FBAA8FDDD5278B12CB4BEBEADA3A1FB9F43DB83DB7BC06311EF4F5D7F79104DCC0880F5DEA91A023A4823311CED12AEA30199A560CB1A254AB0B0AFF4D2BA1165054D642CC29FEEAC846933C37328BF72F55147441971D8033CD4B175E652C303ED2AFD73E94B03DA552BE2238A6C67BD4B0EF36714A0078C9027D7E443AE6A676C647CF341C047E5FEB9794ADC3CCFD2915F6A9790C7850D00171E955FD1DDC64A93CF821EAE0021AC5A1ECF6325A1302DAC881BC65C24902C970A1A1F5078535AE91133BA5C87AE37321EE43ED9B9EB7652C40F504F3679C11F2A38996A174AFFFAD19FB923D1A3D21E3C2479AC8E5C0ABE502F6FCD69DB929F9BEF6DBC5EE213D9110413859D17B807151446218F550191DCE8BCEE51215887FBC9691F209E9E1B6DA696D8F8FD3A307371364FAF555958A1754971E693BF9E5A8319C2D6BEFFBF1A550F38E2DD45A73623EB8698226A0D83FFD6B8360D45CFFDD9966820BFF5F6769630EBD1B583F6AD06EDE3B5FDC9C670D6D6BE3FCBF05499EBCF547B5175F0170D2A81DA74312AE7EB597B5FC45FAB0CCE5CB7A95BA705F204C858B70594AF03515488AA52D5D044E6ADBC1203EA3F2EC795AF085B57EAF2310810F5CB8243E30F07A5A41BA264D08952D515E495CA7A545134A830E1360DFCD1F538B4E13A86EEDBB2EA3E05DECEB4C6DADF8A4908BE77315875C4050016C4CABDCDA46E196BB8488AB74A2D4F42819B6730352DB618FF29A277516053113F78AD947F3B9B5A7815BD454A63F9038D2E598F455414F239D08D38E86E215D7850A8E49957DCD849E046640FBA5948139EB8DC5AA7BD1E9CCBB54B91E054F6C423DC16093E3CED557012CA935D9728951C0DD4F0F40FD416B7544D1586A92E4BD31AA82F28A129351767D914CAFCA95FA97266604C79EF5CC2989C04617A2288AC42788FE6453A73E6BF7EF8FCC6E9E140158987CD4CBED90262A59DD3C5EE264C3A0149B8C2D437330E2FC76F18C8F1A0B3D54B82EC4D1A4AAD5742E9F2B98601B95F237DD2699C2AA4C64F8A0BE37572981833D6CBB5012BC52D17853AE8648ED467C564B1E7BF80BABAB568EF6739EE0D31953C9FA7A3CE7E909B2A820B6C8268C515FB2ECCAE78D1262D00EC2F9ECA14E576B8BA5CE521546F9B9F861C1A2036BF211906F1549F597472F11D01FE5BF80774B9EA84CF7F61574A9BFD0F2AB21FD3F2631E3EC76A2654A5191EF3A9DFBCC6C8FB9C8131A8D8730362FFCD9D502EB80F4FA2FCEB62FB97D4227A545BD26398E2FC8066339796561D61F2FAF28F038A81CD9B7C514F6772E3CB0EC08574A26F6744904EC7A89AF9EDDDA6435B0C4F5112A85D604C44CA205F72BCB95EA7C493C6E621EFA44BF758D0102A9D5F47E8CB6F31D6F5A467FF9C841D082DD93F3422AE5310FF1128CDB7391ECEBE596829BF0E8663E50A1E10A0472D0FC397FE590675B2CA7D08E2E1255320CA7C3F2678FE6975A1ABCDB197636494D53FD133DD6B4CEB94C3C523D1C051D34A4B291AB89C80DC158A8FB5E098C5CBEE6B25130E99A53B31943F7DEDCC8995DAE338BB3BC73776E77E0F6AD9CCDF28DD88174B5222CCDDE9F584CB454A9EC5D1C274DC6FC5BDC503F6E2B18C00387579ADF2823189048AF87D08585D4FDF1657A1F9D355F837096D6DDDEFBBE00869519018C25A01E4BF0F3671F1BF9ED584C83C161CF2798A9D228EA5EE072E96310C7F2290833FCB384BBE05EFA5DAE421ED47D2E16FD3AC0ECC2240F22898AE0B3238AF48211BEB043665A2BC547923861DBBE042F6F0090092657F871F2A7546E0F9FC5700168C87916ED97EFCE71F947E9D92C9B5109FDC264922C12DAE21287F6EBB970A48788103C05CA65827622EC4DD9EB730079BF60B0DD277050DCCC3EA599264683FD37C981ECF5707D8700ACC7EE8DFF857E9E295AD0C0513351F63DC2D774E99DDD11B8625A40A1522355284B6142D27FA1C29CC6D1D9A4DABD53F0C5B74C699E962681CFE708EA3AF0531C32D52D558FE76717022288F14C5D1EB38B399D7AACF2B5AC77341EAB6099FACFDB56939DBC568AACBA67DEDE81EB038C624EA097DA4D7A29F24117044198034DD7D50F85D35681DD08580DA9D6C6E0E91F87ACFD62412E137CFB62EC76AFD5AEDC6C4D2FE7FAC0DEC1502D0A41E043A866D6518B0AEF560209B4D9FF092C13143D24C4805098CB56CD40A5C8023172C73614A23A8580EB55BB7AFC0736B5EA5A0B295173318B60E3AA9603A0F3FD368A52E04CA56768BE7B62F52D968D7344641B0D4CADA68F508B060119D8F4227D7320644E310A1B5F8060D8739453A526BC941CBE2A855118416ABD58BF4B288551131D35F22080EF7CB2E7DD342637CE3243A9EE88BD3014E1AF42058231F31CFA70A5FDA37304218C0AE20F0EB0627D4B282257B31A2EB2B2311D95A73E6245217B92CB228257FF1067BF8EF5FF9E3C92A1E0169057D0B30322F4698D7B4D86FA399735488137F3DF2FA2CE3DEB829C39FB414BC15BDDF2A8083A16F64D78F1DAF61E24E7F53D5FF03C2913C667748F49A898171B84D6B80D57CFA7A6DD47C716B14B988C7913BC1D2798FBB57B70DEE78F4AD2077C7201E47512DAFBCB8519F3D201A7435DA6EFB6407F6CF75336FA39B915C88A4F18ECD39E6AF27E7BAAA35863905BBDB7E5E10641B15DF7EA6AD4EF5A992322A6E2662BDF8BEB93F5DDF7D0BA79274D2F09DFB2E1C62BC17341B55479D03809876949CE558B1C1495B951858238C582CFC2EB13025595A5AEABF2D81688CF28A5A7BFB1F73EA54EFDD198D4DD78B135A3D925898478137267125DF2C9E3AA526E7CCC12F6525E6A0CD9A8155FF62B31095DAA5811A97EE7186F9ABA3F401A351FD9DC560B405597069AFF96D06335049B56C2346E3DC511DEA1A3BCF8132F8D20767682938BA1A96881940EC8B8179034B942CF9DC659316A8A690F40E7316BE59A63AEBB13AB6581601F1AA5E4551C86D95E02C2A9825D73F60CC19F2342F103F2B86F7126E56D5E49FA9BB2F1E7173AA83CD5FD6970CA9B2D969E840EB3B6CDCB7745FA88AFC40775C6D0DC5A79A1C5712333CEB0396CE96D842ABB8F8A8B3069EEBF975ABA2479BE34DC6BC5343E2B2566AB96AD7E75B199FBE350A329FC1E347351C4C3E2F4A3B2C2CDB96236FA61B5B4AB62A7D9D418D9E8D1FD7C2D538BF57F309A23C984585DD5A3D52727979CEB3EB2ACA08FEE46A802F0790340361360D3145D712CC987A03132280BC834F65C746FDE2DAEA0BF101AC17BE90480A7ECAD339D3DD44FE5BA63EA50DB0FC914B1DE58DB3945BB4C73C8BCD73E7D8DA481421AEC40E1412AF943559C3D524F2B1AD4697E1C11AC6AD1DB0B1B9873801751E7147A7D7849454A580B2E3481AB0D2F106CE4D06397CC749388FD10BDF612D07846AEBCBD6CB229C9CFC8586CE661F2845B7E1DA6214EEFBA7DE90F07D892A226D44AA08B5147E41755E76C906B99052078922F496F07ECE9237215DAE8A4AEA1AB1D9F1737054AB11C2A929C5F6B1280A6A24AD92D9756EA67D9C8AF01ECBA3701DC198440EEC871A2DF84FB5EF07A720D648DE735E048EE39E9167A934A14066FB4CB5F3ECF8DDAB35D6B3384F6DA897AC24AE6AFBCF65906318CC779F75D12F0EDDD021ADFB0EF1A6365DA7C5E75F22DE4143EAE158E5B45B283358E7E1B4044C70DC505CD74157D8287DCA10B64446DE7F1E3E1DFBAB0BE28F16A6B9AE7E6D23556CFA5EA72C5436E1EEA990B97C1B27DF9363B0DD27ACEAA0C97C29B420C0059F58A69813189AB29F51F97256C3CE2FABCA448B5C77E1FFD2E5336922ED2F169447565C9ABFF4E82D9A34DB17443E9FFC9EC833B20107979ECEA4D510C1D2A73CA64B18E8E23D10E3A2532C2EE97EB8CA187AB1C8AA5080AE3B3D49C15F932DBD2E8522E1035C31A1FF6B76F3819CFF04E6AE209B5553E68C1D8744FC3F849674C01A620B71D1C7D6C9B072B07C79A514EE28179D73BB4FE1D1E1C207CBEC02780EE871640CA0E926EC5D4B39DDE3D75D0B65B8BEF75A207C3F4CC177B2B19DE32F819F1DC5E10056B8B456DAF55741C872269532F2E3C2BFB1D722AD98CEB466B91001BB7A8BB22068724A264C5FCF3CF527EEB901A798D2FC58F1D51D9DF5F12D70D4EB4A9784B32BBCBD3B4C4ABBA0DB4280450F14DDDF19C38B75F167285145A5E79EF49717F694DC1488352411752CB28537B85B3260414EBB4DDE1963118B10AD9E7192B6AFF0D242774439A8F980B440A74B4704D1DAC3E5C70F1EF15DBB7A45346D1DBA620ADEBFAFB99A4B46D1B4CA768376CD680229003BC802C3A4268FAA7BF7567D144E797D8D65FCF3B6DB9B8B58C673E1F594FE20B6B76F810A34D99BB8CCAC01DB3D51C1EA718C37B1D7A7F26342817850820D324539E4D939034C806335359CCA8DC21EF0C8DE8DA30655A0195D19E320AA6350964775F3CABC1231D7A095F7FFBB50C42E8D03E1F168E9F209B32AAEBA2148D42A1AC91D89BB36C7E048ACBFEB39692976DA2D8097653DE1E9647FB63BA18719F262F2239F366F772B59BED56C4F9E8FBCC85D7FDDFCA4ED21D0FC77F3C61C4E32A6398704F927CE4962A652D5771389C7EB0AD476A4EAA04902DB48EB79313F2A96E0B0ED6E8619EEDF1BE2450D29E899C2768420BC277CCC24BBAFE23814F463D6D51A5CD5541DCC8BF25607AB2740BD68F56EF41C4BDFEE7D51931C31CC07F3F0F5290BD7CE00A113888B726ECD9BB359DFE32377B80C4BD49CC9B867B73318464DA9052C1F595C0D856167612DE5184B3CBC714DDEF96A819A4C4ED11EE62102A1B63C87918318B7FDE3E0251D64216E1571EFD6D5DFC781C26C9073EEFD5149F62906D6B5F27C0087FE1F5BA4B99E3EB69CCED5BA3B5E56B348E358FFF9CF690353363A6345A4424AFE0157FCF7F1C3774EB4527947983D9C86F8D3862C0A1347E3DA41A59CD27CCFE4116468BEDF3E65A0B29DE8B71C4F70D39F28F86B4267882B109053E097E063170AF60E7CECBBF7FE7DE4A4493AD2E88B0CBD3C7C7AF8ED82B97C71B4E714B0C0A1AC7CA6765C94D5D775B3DEB1AAE15EF667B7F569BD2CFF0B52E8DAF065148702C57CAD33A9F3416F0906F751381886F9A66E0087333D8C97D2EDDC02BBA60A7216ADA42A07930FC34EFBC65DCB8C301A2FAAD5A6A6A3A1EEAA12765D40C84C8CD03444DAD12EBC0B3079C4CBA33C732F5E736A491C27EDB43F7D554FB7FCEBD881D0911742C90B81A5A395ACDA2AC7FF73522C57AFE013BE609A042BD2EB7ED4421E8F86762965081C54838F8D55D49400675AF6A6A33FC9D089D11EBA376714C09AFB510082068A2085E996562E8388FFF6A47D5AFF1372200089B1CBA8E32DA950AC885833D5CC9503274D8CB9EA75C6FCB2C762175083B645046138CF1390AB567DA9DA804A84FB8E4A65E636E4C35F30533616D776DD74E695F6E84440059E6DC8D39407FD542471BFE2FD5FC6665CFE1968C59F4AB2A39799AD970DFF6D007BA544C9899A536EB99DC73FF28BF2D3365049F2D2D0D51ADE2770995AB4A407AB8DA6A6699E89CA567DBD0EB1D7972E7D78674A03B5CCBB1E4402D1C73F05BECB74DBE4B10D8983C65DDA1B4B7CD3230B79059FA962F555D24CBB0400347C7BAFA8A255F45C989F921C9869669677AD8637377CCBC89E704054A19602C32C1371611AE3B965E790CD425AE604327880A01A039C5C42D4E79C759B55DFF0FC45D59524285A603F9E59A54A32EB65D23C3D92B06D92F25804CBAD9117E4D0265F51AAA20216645618BE1E7E714A1117B93FBA6C36066AEB76E0993FC72CB6C35A6BC0C9B0A8601E32780B620620D0E102452D8E98929FBC77F1227AD21D2048BCA5553D1121A39644C78E82774C49AEEE5482F1F60DF0140EB6DE9D7F3CB56FF08FC42E670AA9648DC05987DA15B5D2023BF6E7B9D1B04364BA02F8A08AF7B8A9CE41397DD20B8848DBBCD1036AD238483312FE61BF13DE8BDD216D798F28F5DBC6C4C4E347D62432C4DF957B2C4B43589973562326FB981ADF5C5A320331108020285093A1A831FA14EA96E79A8D1F2E881698F51B5366CDC510940596AFDF7E2E3D32A35755F638498DE54B16C948957A4A8A66CDB9B5BA2B1E9A46AEC0020BE911183D1888581C1649A8D104BA00EE3C7D0CF6833C2F7E91947395E325E67F2A3543918A93D8CFBDD5446CD4AB282854A6E258E1BEDCAA09ACB6F232EEDB156737219FD4771ED764B52545902E3724233AB57986B88DA0A5F1C79F01FE2EA348A087F332D6B619BECEA46DDF19EAF34C05479B7F00994B7E65A677ABBE0358A2DA24B1549801CD3C94CC3F56F8BCE1D4853D3265F333A069CCF816E00EA9086524F3FDBDCCE5C6DC74F36F6C8761DFDC92634B0F46CB13F73C6471671F4FEF056F2204ABEDFA29F8EBB870128B7BEC75E12FDD52896DA46FAFEEF99E5548299A56B8F7E6D5A3E5F12D545738FFD812AA00BE982C765ED2E189699250821278C7EFAED7A87D72BAF66FD01E4867ADAE8A88C8345C313CC1A74193648DFBBFFF8192A7B4D9A5CC32B0953709C4DF04FB4B81E71A6262FA87A3F4D0F38597EEF7C9964095A433AD68FA40D5B1B1BB9E09CB90CFEC26CD11B9DC16E16B59CDFEA51D2A7921B99A7BB4B0E47A7F9ED798756781DB3202CE344D048DC78BE4ACC1C7198A006571B04B430F0EDE7FC48FE1629B4415C07FC8F8A7B0AF7240DBE7A23D5C6A06E63AD51909508DD9911577BF6FED880B01BA373BE77DAA92F05A2B86120C463D0B64D2039B2314ED3EB8DE42223CA453D8B582A609A0A98B1117E7D9D3BF472F0CD30196E220ED7A2538C20D583021A3DE5E57199883CFE4094731ECEF33D44B56BFDAD224DF9ECD2023E325B60ABD4DBBBD75ED30F4A8891E28DE9D250B881C8B4821B125CD0126C512BF32EF31EC64029254FB649ECF7BEBBDE596EC939AFC1B938E88CC4F25511A5EA87B6E9FF32979140B610C473F7BF9639A868CE689964FEDAFAC608073EE246D55298EB17C5BB59C767CD8236BAA481D93EB8005E8B52C28060FB789930069BC05699E88D54A9C20EA4C6AE1A2622D60598B4E8FBA5DC9F15AFFCAE9013353813FFC7029EB7BB33509B8028A85E9654F6BFB22537422C27707FB352CBD8E969EE1F5EFBBFBE6FF0557659B1EC72167874857D0DA97CDAC146C777973F1C54D669E5AB6763D8233C592E8A59F4C1A4C0605AFF5E94D5119C38961A4794D33D10D563FAB16758EEC8748C85AC4B6E010C2F9300CEC8FE65B55E5705DD70D2CE6A769880AC198EB932FAD3938C375EF440E82FD30F3D7D5043A0022D16E99745EBB4079569E144EFACB008EC7158D9799A1C24E5E7E47793213AAC5F3752947488DD8BCCD133531646A8F8F0C67DAB56A3FDE2FE8742CFB6A7F637E5B937D4C065A92021779E8E7A413CE84AE2A01F1637442B4D1A0508B9D5D0F4A1AEFB66C36BFC3BC4B685A81DD665EC5462A65EAB5704ADE3ABC774852B70799171279B22D057AA29E88A3B7F88B6125AEB332B0451DAA105CEB7DEE7E1274C4551457E39F9B480B710FD643A357B4B3A254447F1141C6E96A3066707E8E21B8D137A92D79F232C0EA2C7F74DAC79ADED538B473A3B0947E27819F76622B293A245708895144833116CD803ADFA6A1FB42B10F88F775BB67290BF7A985F70223B9441C0132B80B80FEE8505218F5B152981F7018C1BA6773BD8F35A293EC18AC673ED0EE6EA6D6F7922B9EB29B0D30D7611DAB5CF7672D14D8D240BC29555A75176D5B5638C7F853C4AC4F76966C2F4B376D73A31D5E788F0214079270FE876B6EA4FDF053D07942CDFE09BE90535429F63A8E7D0C4162F77C2EF9EC17218D17F5519594F57D4A1CA6662E4855773E85BBBCFA803F298874E8E01B1AA5275C2134338BEC2BA50D82C8E2A573B3BD2E2C7ED463092F57336E42C0B2F8B920E7F4B5366020BE45106452E44F453F0B804EF55C4D49527944C0029DB05355B38BB6DE27BD07BCEE13449BAE345ACCF562D8ECA5A240FC1E51250ADAA157F9A72FDD706957BB88A711FAEEE731110DA383267581B19595AE02A3E124133C968D9064251F12F3DD65FA911D9928509E82EA91B4B1393D682F5153361B1D18A328B03AB4A34369EAEE67FA1F735C186846D961B264872BC93BBA0E7DC4C86DFDE55CB5910E6021B39E7BE704FBF69C86BD6508BE4017125944CBC728BF35EEFA89E9263685DD886BEB1366C8BE44ABEC458FADC6184A000D9E67EE2E12C693EF8787D6BA3BC87F5FCA228ADC8B76AF97B192D5EBB7C12C7649C596FFA34778CDECA51E0067258FC840A228CC09D49D1C4A406A6CC3EA60135963FBE3934E0486B4248556B9BE5D808ED25BB81481BB0977FB44CAFFA3E997B6EFF6B4555A679C56743ECE6F6F2550E51EAB3AD513EE66148631CC1DAA256DFB1059176E7913A9B8A8E5FC203E6A4EAAB7A4C4CF9CDC9912F3EF5456C47490E32F77891F665249DD4E6B89C5F3BFFD635C9AE1E593D8F4AB59A48EC703769A923E997EF5D90087129649E9CE326A160CA7D3792F76EE4CB9DCC3D92607B4EF8769BCF40C1C314AC965CA0A49649A280077724E18D5444706886694F139513809EC80E1BC7005CF2533AC34E979DF02840E08706EBC4AD5614CB67F5C2397988EDB133020BDB684B42EBAFD24FC41F342E1D19D55B2A40420351268950B86AD2B7DD671301B86B2FD1DCEF9B1B149AD3CAB935C867A95B6FFA7A5980237C0641757C1C9B75FD6D2D6960B81C40DC2B69F6540A333777801E3A192F7234574DAF3314A16F166737F13B3C5B3EEA397193CD15723FEF690B4B95E31F274E42D9C7504F14A76BD5E148BEEB4D4FF345DC2BE372F4B98A6B365372C8022FD1BD82332F4C965439AF83522A7D5630504B81F069E7D7CC0845F6B7B88620A2F0572D38DB0D91BCFC18625278039776148614EE282318D57A1D3DAF66603BB4C056CFF38324DA816CDB721741BA12FF27EA0B06E6E543D597634D219353D562CDBED02A0AFC39719DEC56776052565301C9A3F3C1444D34AE78857154DF1C34A46BB78D5B231793885B037AC5CD2D375F5BB781C65F71D1F5D21CB59489E7B130E39D2B613BD76F65FFC5BC5E001C39992F1F1E0A98D8D7199050BCDDE6D8F45CFFFCEB21496BA865993BCAAB2834170B86CBF504FA39BEA2912162A3F39C56D8B7A051F4E251EC0E997AADD47386CE4D210DF642C3511A8302919313CB2C886659984265AFE423943A2937B44CD6B4934569C3ECF72ADE4A408AB1C9D86F2AFA5E18A5207325889EE9BB6F0DAADD5283B6C8B61F5D97C6940613A3EC5D8B8D3C0C83F4041249C2CB1AFDBF8FAC6FCE60766DCECE94441FE14FAB227E3DC8647F7BF8953E9E35833FB08AAC1ECA1BBA2FEA660FAAB78E9064643197C02C84DB1893C8CF444D87605E94C5FFFD7B9914E0280449CD2C45AF5B52B3FCA0F172B9A5E058CE5260A24B5136DAD55C270B89AAD903E705962270A969767216A840165FA58DB83CFEF272FDE829A5901FAA05BFE261B78F10C493CA50855C0E26B66DCF990B0C47D2CDED13CBAA045699342F0FD69DA207F1F370C155683563043D6956B1A304A326EB763B1E06CE77FFC866C6669028EAD7D8A858A813CCF71BD2350CA666D3DAA505EFF31623FA732E0E08ABA5ECDF49441F19BABC374B89F284314FBFC0D36EBE85E59694C2F98FC11E1F58C76346106E355140491F86862B290CF4531B6263E9BBE743273C833893A5AA5B06C9C3D7C3EECDAEFB356ED9110C0DCF84D39DC0CD37355A21263D199BFA3146F9686C5E71E1753EE656FA89DD4724A563BDA0478F8DA9912AD4BD128F05F4ACC6D4B56C14516DC1F7B1B47725FE4F183A87FEA4EB17F0F09D6D30A85347BAFD35AFD5E990F65BEF2F359CE5AF78A076BA4CAF77316B4A1F146E82E9AFC9199FBC75FC6642BA7967CEBF8CA1E4F52EF9FDC772B26BEAEF435600169869E08C323457B8A4EB715D0ACA0FB5309CC90D7E8E80BB8B430D21BA242F6067D9AF518D1434E10CCDC59EE7CDECFE21AE8F7FB7D6461396CF854EA4D31CA8C14FD4DD28C795A2EA8E2BA66EBC6E40D6AC384F1894CB4F736BF9EFD695AFE9BA35F3ABEA9D92BED88046873B8C6C97EF4125A09E651E5FE9EF97AC6F79F57C731B6F0A44DA175135CFBBFB24E5496A4F5468E79782365B7EB3FAA48904C3A899DDC27C7DED0D844A237950AFEB0785F2D3D2F54638CBFB49A7229152C693F08640EC0770BD6F8A4D895B03A5E2FD868C7810974C4CE887B0803F21AAC0E0810DA5CC396B8A2B30823A7D38D8E6A315F477073943E621169AA98E2DED0E3BAA2F02A84C71D2EA92EE9DE82E8B64644FE5052A9EFE748CA871E23572A798646322416F6877F38679D1E2CFD6A8100702A4EA8B54FC28A46D4C0660FB149C4AF58C6CB39713A58A565F70906C2376C846FC1D57B7627B2455A63EB97AF630EEB5AE9870B8AB1914EAF653BE36B23E38F3B3BA231D94051F06D1BA83B054783EAA97B752C60BE09B7794E5402AB568FC71080CA0354EBDAE7100C880C4D90EECA6A4BF4C3F7B755FC368274F08C9B20E97FAF31B08CA549596604BCCEEF5667A2EF70806F58075EE64D7A6ED54E5A118A5ACB31B8D2B43105747BE4B574553BF21CBC99618F287D220181527CA6A57091C0C685AE8CD8DA3AB5694DBDE050C442F244C409F9E45EA5B1AF19FD65497941ED8676740959F94B1CCC8CA982D3F704CBDAD4B946086625FEAF4C7A0116ACD1502DEDC09EA5C43AC8FDDC15B1369FB9EDF1DAFA69AFB8EC97DD664ED19A8072EF502A91AF82D49B5EA136A84255ABA7F08FDBC7433347F49A28DFD41425B8D8B19881A0DCDE30112F7414D07F3F6EB6049805E06417EC11B9D209AFF03C711887673FA23CCF6EA9837ABA37647723B23BFB13A4B836C72BB361CB7BFD9E22AF9B4F82FFDB66C48BD93B642ECC32E28362CABA7D74D3D66A55911927BCB799D826781B740A6F4B9B9437C24E248A779B92FA95CD64AD166EFBC86E140B047098459B25B6FDBE827A95F49E85442C140CA52C1FA122B6836CADAC2EFC314386ED020F1DE76188B1BDBD0BA438018DFD33ED71C025BB8FD4502009CAAEA32828EA5B6A0597BF1DAF8D03FBF9493C142766853465C9360F307A46FE4F00E4249376D9DE171211940B17676A904CED21079F135437910C3B94F047A692B2DD15C6EB4F2DE3468A444E1D81295351939F87B7214104195FCEC55885BF79328845FD72E2C8A55A95F82593BEBA065491AF3D7BF843ADDC17CE9D29905E62C5BCAAFDB0EB4235E3F92F131D2A41FC92D4177446C73D6CF2AFE2FF8423F99E2AC0E5F3C9736960F5BD669B116C11D3BC5585A3849B51C32CE5F49A911B4D27F3EADF48E9871CC2BC9A3AC2B7B1DC17DBF8DF4BB880715CE8D7818260818EB828DD1BC239B6C85F9F96543EA2B521C923743B317F620A7251B87BB8E4BC86E71EF0EF9D11DBBD28A7D8EB7E169CF71009C223D00B7EA073377EEAC4294593B2DF674E0AD26956B3688E667733C8C43B7842EA85C6CECFF91F00DC40C7A78E0167C60E9CDBD0F8B5A2E5CBEB9C99106133B09A05C0F547A539CC752682111CEFF0CE733BAE1011AA66C27CA545C24F00251535F9B747EB652DE08FFC18F8DD97546B1C57F25095F3B2814599A1B0C117516385AAD526911E439E093F9B062CB6581C9614F2E4482D9CFB4BBB13E4DFEC6D56E7EF89B959F4F40455DBA04514E3AC8EAC84C600E57499AFC872B35A82D234291861C5DE46F3FA3189FDC280ED3796C7D0FA2DB392548B66610F5FD0A5679DDDF8BE5F20A793468704366C8404820291D62060A66955BEE1E7221336009376F2CF96D5546DD39CEEE18ACFDEB81E972AFD5528992B6A65F0335245ABDC5D05F543480B68A096C3F578323425CCA1D43FEEE5C1F9DBCA1B490E27539D2A01B847099C074F25748450CF7B973B679797C16132B080D55E339C0A887176FE427F1D2B6A892D57FE358A47EC3ADD9EE92158844DC1C1CB0ADD28AE3264D2ED9D32EA5D0EF42DA07C72141705217AD7D81E981071E793E51104B4A486DF5D2185F635EDF379BF37104AAE6E03F787395C4EBCA073436539DACFB7EAD17B5D323955ED898EAD7EF20D7E0CA53C2A70E3920B459621A9C4A95A20BA3949EE6C102595553A7D00CAB007B2647D49BB2919832538A55878746460CA1ABF082649ABB9C459D6141E92834048A6DC9FB6E2F944C545B29B69F47BFEB57CFFB306FF992B96100B0FCD8898F2FCEEE3C9BE3B860DDDC6634B6327223B175FD4F797C136322A5FD4EC37E9D653CE943FCAD1D9E6135371A0FC6983E8FD84BB6F0123437B4FA99301B2587553A5597E67CD3F7AFCA43A085B33752DEA71DF464C64EA571AF2E88F9581F1E34C98CA91A390C7DAE02B24AC7C407B318E230A2DFCDE8F7AE2C6C407BFF1D0B6268769DCF7B2CC5B3C03B604DC8DDD3092E1EFEF423B83D7F48A2BDC0EFE0C7AED9F3B7DE36D536BA3D2B4B72BE297865AF24AD5061E798B7EC5F7E98B7A3B5C4D16A58E754610E41011E942C1BADBF0F80C2A4963E5F5DC494CED5816812FB887ED3F46140C7A455861D4BB9771C68CC5EC067CAB9E8CE76CF3DAAD59998D26195F6E80E12D6103C080D475111839BACCED277A4B7351722FBE31F941333AF3C632B540FBE3C20DDD1D02BF824D2FF3E099D4CA17D2C218105BF0059F83E98C7169B693E9D473946915B7629470BE43DDCEDA50FC1E410B5885A1C118A144FDCA4C873E009FFA312623B69AC787609DE759940FCAA136BC32F332EFE905E9D9B888D4BF26A4BFD45BE061432726683D7ED55B8489FA85B68B379E4D2031C1AC4D6263D6C6B08C593C750E3F99F68C1844B8428CD081F5243F0600719E3AC57E904A95EA86F589BCB517E608BFDE539A05D9FB3D2AAA6E97C37CA0449BA664C9DF269737CB19DCDACF16E119A3B67387B72B69F5199C6F9132A28BA8329873E3FE9014CB65BF3A105354B2D357FF1C4D4AA7E8B8BB55887A1C561C2BFD4416047B00D0D18C409F0BD5525AC45849A57A32F7ED85EA34D4C51CCCF3C0F04212C6FCAAD8FB114A0E2116A5279CB28B11A916BDEE34A37509AE46B93CE26AB6E5FDC08FF7845B483AD4671D3E83C80021918F04587770D34E960E65AD026600EC289DFA80E48CA4BBA6F23F631F128581E6D56BDE2320C583C6CEC6DC6036BBDF313F0E43EBB8CF20FF67FC9B9C973F261B3911B15D16649D486F55534A6B67A528B1B2AB586E887B5EAB6613FC4CDD7B9E210D801D37045D01706DF01CFA2D92B45CBFF53190B0DD09ADA56BE42CEF11E495DB65B70485F6092EC4C625F638C4AA41F73CC9DBA606355B3FC53C35DB39232652305EF73AD3E73EC128B3568517FADDEEE1DBBFC841DA439BC95A706AD52777A5ED0134911DA7BB46BF92EFF615218B9AF78F3FCFDCF44668EED7B980E44A94F93B4CDBAA98103DCE76025D4076744CA7B8819C153731C7AB282623FEAB4DBF73EF997804D72C9F11D08619CA9E0CA709EF644D5FEE007BA64A8B61B10737C025FE367C8FE022B0D1A3AF27A0506983F046DC5E3EA0053FB9FD410D675312A183B12365AA42DD7B29E87A5659B5A419FFE532F561A6263AD4FE22A55D2462C4BCB1AC3D37EEFC8C3C3DF9618CC420D1FC4F1369C7AAA378BFB4E08961224BFBE932AE42258D438E3E67546F4AD08E21035278977ED7949A2965B58E75708C4A69AD1B37A9D2148FCE2A4B34422B2CD17D60B26F932E72C645CF0BFBFC027215EE0CE801D9AC4180F5701A61E17AD7AF168CB0661A82350047945D6B8D8ADD04ABD47B9B5476568EB23A6ED36A8736461D907B4758FBAC4ED042C92377E51AD502DA16C89339665D6B1FAFB087B2B4D3951B021E2952B72D8ABCD881DD235E8358E0849D064758C05B90F1E90A3A0212206365B933345085A7441B2502FA52D379BCE731D7D8A268271C809DA772E9CFC4EE625C1312DC3452F25F767EF7D79152CCBA69B7924EFF2F918DBE55692EC49AAF5A5F0F53AC62511C8CA60EE5C274683344D4DAE087DC63DF49CA61E0D0CBF5B4551BC3B8E40704A92B7F521B5F131FD4FEF0B5DB4E9EB474AF63DDAB0F9167E4C59294D22F6127E5266102DCCB9BA8D9E2DA0F0E58EAC8DAEC4AC615DCA69BEA89E6B73A7DC4E20A67A905D37F57F6853DD1232B7BDF66F3A24FEEB6780353005FE1158BE4B3BAB44650A8BA9B38581AA4CF80E42C2A299685CD8CF145F243CE0C9693B4510A628D9ED7B5252AC7ABC1B4D03240F69F3FB168E535691CED874049237CE76A7ABE9B8D29C3B8E7CF0F9B604161791B77639BA38E45448E974DE9B35AC29D91F648BA97F0EABA4F362DAD39BA647A6E503F5B0C4ACF009329F3DA68271D5E504D8EC935B1E2D7E0F828F1894E0089B4FC0173B514E983DCBD73A3C9798A1B3912A888CAF60F903E7D9F4A5FD32FAB7B303C55433ED4440823ED5F6CDFD3D7B8B1AB703107054324DDD7174F7E490C3D59EA2806AFA94955483C3F032EB87D765101E3EF84659C99CED7FC3F2754327F4A92B2F8EDDC635A1FCBFCB0E66AF3FAFC53B6505CAC60EAEC284CFD10C07E742D8AA8D9F8CF21005948E84C747423EB3896DA4B0AFD90A2428EFDED9276C4EA6DCD04B504B43A83EA82DDF63F07E510AD5482352C1D09D1670304A2D69A956A42393198A29BBB56F1282FD309D3A9689B64DF2373AC16FB0AE38B0E1C69E962006B25C7185250CF01BA147A55393F612C08390BC27725AD84C1FA220D933D714ACDB891631BFE20AB62127CAE407A1A4E319F312056ED48943C21DA094ABE23EF39D49E40C113C0F221FB9ED1FF9C4BA76D8C4AF8FD86A9276D22FC854AFA8515E8AEF90CA34937C88E27935ADCB9D0989E7F6CA62E61FDC297F1371951AE6B5FE3B840910F8C28D5303E3BFB85890A47215B3CFF13955FD5CD1F0A0E1A2EAF7B09352C935512ADA340CC9ECC220E8F29027DC91B0D5ED006A1D19B8E21FDDB362AFCC78830D1D6B2AF7530B6B9FABC7B9A6503822B9291B15415E9C5F51B7F3BE32AC10DB1BE37036714F306A5BF04C189BE252A100A6525FB7FF23DF3E8DF047B79699448387061BDF0A37D2572AC90E7B0E558A643034B93471B3708FCEE446251EAE05A0099EBF4C5311B3A337AE0F6AFDC60E70711869BFADD665CF2ADB132F9062B63F4E2B072BEBE40E989B1616A2033C71A135E4A1DDE6ABC64F953EDF9F51AF929539CF66DF15086F90F1FB7846A82C18AD6E237A73467400D0D6D12DC68B70848698B49B615D607D55119EDD09F2C66CB8880A98E199F1E7AD200A24361B3563767B951399245B44744CEFCCE7C2BDD4CDB2A5956B4D7B8C3136664020840164744FC0695DF7FA5FC915CDBC03CF2016A8E7BA0E52BD3B9D016C615D603542017F5B5286179A5B3B4066A202B8CD6E0CD9F7F6A3373B778B16A4A77F0738FB9297DC63B99D03944C9BAD495F36C4A5329DCE0993CDB9B1B792DD7D93467A769EB717C6A6B6E884F0D0737834FECAC900233E3F3487C885A67E99FAAE3DC649A8087DB9C47618945D5141A9CCE80BA057BE69C6DBB2854879C56CED3F3864BD6F15E5910140CEE7DDE0F1599235753692984703AC5FAE8A726738D027F9EF0D0C0D93BB680FB73768019FBFC8BAA0C0C306C613DEA1C5F3D0D9CE481DD6B2B62647DF7B43899DED22F8B7F8FBE40E64C464285F0D3B2C1B4B6D8596F93BF8E7EE152FBEAB5CF48872C29E56FA0C0DA3A01E22EFE1404E7F814338805B7FD9A2D2F243160047153D567D7969BCBD75128E171751217C1FE66AEBEBE73B5B2DDDA3EB93027820880EAD015D610676E639FC04F20C0E4B468F5DC57775680103225A1367DEB32350909D4688FF028848AB3E05AB03DCDD9B6D7C52419682722866FE378E363CC9218F67D517E17AF7A317F59F005BA92B43F6289B4E3AC50675EA17C97674347B0EEC9830A6438729D5064DD96E2908712B781180C2BFC5EBCD8F4C523A6B178C7D78579BE5067D18ABC0D2838ACAB58325F5E008CFE956DA646600637DA79227980DC37C5CB6579DDFEAA181D706A2AA9E0A1FE558349A5D329B707A11B9D77518858D946AB821E844469D124AB411C28535B3DA0D79D0CFC9A071C9593D062DE91E2407088E1E900A5C5242F47A9396F25D72DA2CE3334AD8944DC24F61E648B59D9CAA58000B7C12E5FC15A783988A615781FD354C224D2837579BE8F387E12B8648151299023FC21C972157F4A3347A44F494DAAC78FC6A125AAB85CD9273394C0A9C0B9C5A013FE866FBA09B61C0A58D0B1D318D7952BB383B269147ADF8C8D414C1684BEFF5012EC1C0CF442BBF344C47A82DC301171E6EE2EE2024612C3DD7DB7A076331FDA06060190B77AED10FDDD29CD5E67216663D1BF52A8EA34CC1D64AAE2FFFE268E7812149B5620DC33645C3A0DC593FB19F02A6BDD9583EA66FF7F286BF09C5D8B06CABF6450EE8E7AD596E7A9B5C6ADAF8E73C0C9FB4DCEA4C2FA34013C2D7C31FAA2C30D8C6591103249E4AEBB90F6F8F68B820C927CBBCF94379B4BA141198876F0D6F4524F24A5DA82518449F2301A10A8CDDE5F77BA1C9CDC089811E5F97555B8162576C7D5A08314465D6586FA301D137B58E36785231987288BE856811D918D46E45474296004ACAFF9A7D89A0C945EEC069DEC3D4336D8FF97AFED37663824812E464677ECBC60F00D6BA06E83D103628D6EC2362E7C77BB28F447B90F2158E97E92B5A5B6DE66B617C7764A0E3152F2535CCA7B9642215148ED17591AFCEC9AFA0F27C00AC1CF4FBE40B21BD391737ACDAD73E899D54006384B68F1CFAAFAC09E6E615413A5F3180CFDADB0CBC12E949DE49EDC8201233D8562014A14186761DA0946848149DC6155BDE1AD9BC0B618531956B9011C57B11E4EC4CE70059102A59766DE0BE098E946C30A2C0161727E1B000EB76365487803B02F04598BF26867212797A9F14767A75D2DAD417E7865F1BF71C364F48A2A3DA958B664B0E86DFA28FD847CA514B42D33AC5F38E12892E36457981CE2DFFBC0029563DED5B3ECB195F5A53D0AD175BE1767972FAFC15642735310C0B17F4E841C175F1C7EEFD457749AB5EF13A5D9D8FEAFF68C2746439FF46C68EFEEF51F5C13F768F82FD7DD4239E07350EF9FAFA26558249BAAAC326BC8E6C1D78C323BFB60B90F5421266603E7CDA56C851E13438DF59FA93CEA73461882F93FD775AF0BC984A20D5D5BF1F545A3301B4DB5D855A49E225930A892ECA05DAED5AC25ED39D4CC4702480945458F63DB3B7D3092ECB28A6009CE23E7CB479C921C00026575BB5C8966D2C6A0EC4D8ED14AC0FCB2A5A41E21514656E058D534B721F1FB9C2AFAE8FC028A1AB772922265B074A71EF281EC3B3AE103F751A2993BAFFAFD2A582360AA12569F0ED67F720D7AEE7FE6601A7726EA20B6EACA1CDA2D0B307D65A8F1BD5986A118667E3A9A3B3078859DFD0D3EF77E2DB076802D60FDD35C5E17A4726280EAE94331AAC5DEE842C15115F8C8094C1C78F8473BC1A224ED61711225C5BC1482B3170CB5220F2D2633AD1C0BFABFE688E88F5DDFA70E2D7F2416A66FDDF4A05FCBA462438268970B151A31B2BD5F8F44AFD460F577405BE5FDFF0C3AFD3CFEA7229174E7997A163B8E7DB6CEDBD93313D9228509E5EA23885C8B9E146628610FC0BF451DFFDD311F339B6214B479C72CAEEC2FFB6EC8574A92BF646507790036C0997F1D7263C4787EB3E48886670257B2F873DEED50A2CA63DF63D61840368FFED7E84340C79C01C1B94754F0C3DB1FDF743A57F96E809665FD3A3CE79FA618E917FF304E3CE924A52EB94FB160DD8BBC72DF0BDD8197A501A8379E78E8A44C52682DB94DDEF93305B6AF824167AB9BC50B76C1B24CD0D6DB386265A43CA56A1520A6835C2A17FC74DAD2D0B4DB3E8C88A1F4F20C3F8C09EBEEBF360F0A73BB70B0F345342F1ACF167A9CAD52FE2F3C02A4B2B0185AD0F009CDECB96E1EF127950A83B72589B4DC82422611FFEDE3709DB78503D42A971B6BCA69BE51ECF38CA73A90D9B14CDBA7798464E597A2547760D896F464E249EA4EF7A8C178DEB26A67F85EDB46C2C37307D153DE91E285BAF7B3B6A7CF26B7BEB7654B5937EAEA132804858437B9ECBD7ED5A95AF9CEC0CD3885288E331D79BBEA9CB72911C785844A8B002C78A03018A8C3A3F0F2F7DEC0D08D4E91C3E32721F67087EEEE0254CE28DF7F0A89365DBB9C8AC07297729B9EFBD523C5D4AE4C9727B6B2F03D08A6F84ED6741C090B2D37A6C1CB4D106C3745CDEFB008E422DFBF122264084A0DD8EBB362AAD4103F19377F9F86A404977426EDAE0044B8A32EC48C1F22877F58B352DBB3616622A079ABEDBD3632CD27EC2576A9B627356D3976475521C102526339FC2FAE2E11936AAB9B7777DF6CB98C91494B891F73EC02623FA09AE1381DE5971DB21B8673C2E410A5A65AA922F5177CA1C9CDF89BABD667871950CC02B72F67838581E574F427ECF2C78EC4A572F1780F9CE04BD9A98488FB65736EC5A9044A7DA3BC18487B3D39EEDEED56961C92F585BD124C55001B6D08E20FF99042CE16B09B42E7751BC9271CEF15F2EC77E4572AB67F5E076C2EA6BEDF9F428A64229B203D5D1A835520485EE4F893A18809F766B0B01D32CD670970097857C8C6EA891FAFD030AB9E2088D1BB7E5B01EED889B5F7B951AB0D1935B6C3D7233EB66441AE190E44870641E8D49245395693A307B912D844AAC60AD903F32F28506D0644844132B4CA891483CC3D40D8E06B6C965DD66F6FFF1C114620950D54CFB310D3C7D6DD330230D6F3896B4A690EE040162E5447543FB359C3A893DEF898D294BD6AF8A621375EFB3BDDE6B75B5842C940EF24BC06A352275BAA83577DC8A4792FA25A3E55389EE305D03AD64E20D9A9F5A2F4D23ED0E684BA62FAB98F33C53BCC5D16077DCB980347A62C59582726C34CEC74FB41C383F58D8BD5845A2492D17C457164BF9AB6F18AA92A7AF074AC55EB67D8298A27AEDB48602A0D773D9ECC9320A888AAD669275D9D6CA613FD9B5E17337873CC42EE7681B209C20E97B0506662B6F302657AC80E30343FAA85E528EB868008500DB3A2AD171E04419B4B1B8FE532C66A0003D66FFE1A60E0EBC63ABE06C8403471577516EBC67412CF4D36719B5D4BCF88138561EDC3EAF8E14FBA630C85085D213419C9125198AFA73FCDD27A7B6A3D0E4674F0139E395C474762831B0FFD298CCC10AFC28CC91C2AA2CF2671930B3628AA6312490BF92B5F26448DCC2BCF6872E44950CFFBEF183F52364CFC469AF797EF62E769A8BFF64611F7D0C9C62FC56F40541F4E8DFAF7236E8016498AC2DC8DD788A8940A199A5CAECDFC37E4A45996E18987CCD1F4A4243DAFB042ABD94D3F63098D6F4F0891579937195B171F7FF45DC470BE3F0E9C0AA28ACC9608D8BB58BE7EAF03D5052EDBA8EF9B48C62B12A2C8AE9681312B4099ED99D8BF7301CE959144CB3B56938FBCA9134C2ECDFBE7FEDEAB8A8E3B7D0724B089BFAE411E3FDAE24595D7511B380DE65D4442E3D78DF7216CB930F008DC42430F9666129E83E87DD60F18899C2EDBA828C5E6FA2780CD45B69290A1117C6B62048ADE20004FB89878F6AB6C2AA9D9E44948F2B4CD595220FF6E20663A55B5A8DEB88847878C7D9337C0EEDEAB9EF5851DB34A3A79448797B26A6492A826328B2DD702A835BA24DEF47913CBEBA715C5AF2129B6A7D7C2C1734A496BC55580E967883532761834E5F065C0A87F9BBF851F03ACB6504A49FF178594E93AE3BD49CE194CBA3F9E10DD32E0E4B5503D657271EF4535DCA899E6FDBDFB4E6EE841D96A4C59281896B7E4DAA9D848B8AFF7ED72DC6D1F3C74E1522B010D58B62B19529837115C691A4B4FFA64490B16AA7CF2CE72622E088D547437F2EE2E7B367CF9D9DC32E06D82EBDC12857DB8B543DC2E264CF34A7501BA36AE3C6DB051CAED96400A42D913202EB9966AD975778EE4FC8681B63901106D36D931E6D8CA245D9E3BB11C6BF90913184DF28CDD9002079A7201418A58D93C815741545A2CA54ABA090A77013AD794F9EFE112601A53570B7375F3743D9C936BDCAC6B65C4DFA70262100733D9F9068704A5C74435E111BAD983C630F4B1B7A3EB158D13361A23CD2B9925DA5D16FAC7DD3B26DDFCA44112C76E5C3479E4DF97FBC9616A5E09820EAB6ED155CBEEC29C031B2D0D570FDE92B37474AAB7C11DEE88F5886AF765A3B3FC22CAD884F05DE43BC0A7A3D09A114BE5F0A939A6656F35A00751117909E893B0556C3A58E446A383158C026897AD77D26E43589EB2F37B0353AE264F0F64BBB7F3D60EF82F6B2DC27BD3F37F2053C26B2A2DD65AE32553229CC08230F3C4A1C61B78915203D30F6A35E54ECAD9927321C99D9F100FDD923A816F40B893AE49F23D473E42FD4E05AC3D3359BC1D18FB3BDF17511C004CC514DA3EC696D4301681295012C9AA311F01D8057C53949C0A4C11F546715DC4153E4E00A24C44A93E1B14CC2CDD0AFAAAEA67200277BFE68778698323EB5091AEE49670F16ADC4B46415928BE045B897118ECFF321A669C8BF4DC88A801C623D1B9075600F67342404A3883F1329789AC864B4F063ACB585F78A321068794326FC04B321C1338DBADF919B524D9604DC513AA7BB3B70B966341FAF602E68452B3F16EFF0BCB22B30023AE37882488C33B14BD755868234C3C03870540A944700A7BCD943A29ABE79720EDA0AD6897305AC4A3245BED7B88916BCA65DD8DBD7C5414275B6B04F4C1FED661048C4FC142F480904D148542E50559CF2ABDC6FF4499A5601DC1FF39E5FCC843D4E478462087B64BDEE8595AA50FAA07FCA2A9FE32C61522A8E814B3D93022E409D40C3DA99F66C4C898F5699FFA4CB2B56D14CC3467CF9CB977C5173252B17739502416294DA37F944A929CD4D79D37468CEF60740B733762F2EF086 -sk = 7C9935A0B07694AA0C6D10E4DB6B1ADD2FD81A25CCB14803D53620C4A4F6678545FD043E7670A68702FF893A986CAB7A9438044DC1345EB97A4C54F64C2DC85C570305F8B9886B079BE7DEA83B946BC7386BE4351C45C5C5B9FA5E1E306D9651CE54CA7380C50F24916FEA215121DF7FE66424735681A6A088BFAA01BAE8C6B153A2F3C0687197BB059C414C0AB50838717C1AF8C2BB7C6DFE9C7A93E4D9A4B24A390E8C7C74E2C6839A815653443DDE319C157B11DFB525E6F40721F3EB050A318C21C32D3E8C88A43632AA52E376B55098367FB1235C628CDD814DF0775F8232747372A7B820C804A263A00A66242A77512B0A97EFCCABD2469CD9B926BB2DCFD73E1547C2491A68032345C9AD51CA3C8F9D3B23A72CC34C9C60FB7E6377799DF5432A16441AB5BCF5118FAD821BA833629DD17E64C6BF31E7F3C458A010232F403B785E3ED2462E65F1A26EF7B277361B3852D65F68A6177485DD933FD0FCEF3EE4035FC10A479A0CC1345F4FE87A4CF05A0FB3868727FCCDC3BB0EB784666C3417EC444AFF40939C23CD63DBF0CDBC78642EE04807B4A82A819AC866B7BA67E1894091E083063D5DA56A4F1E792C952D091A9391DFF80C1086B1F2EDC68E8EFC48E5E5E3BC0DE20810F70D7488989B8271BC41E7C5CA5A06099895732961B21B5DCB0D53E1E2DE4453EB7A02EC3CBCF50E6609936CBCF9386051752704272C442D90CA6ECD880DB5E59E78EA3CA9051B4078E58C7E99E7A8983BA05BAA8D60140CAD376912803AB737DAC488AF2F88C452E12AB7A778295F7BFF2AEDA4E9B86AE068BC46CE697FCDEB9FBB8D31570BEF764A00D2BEEDC031584164CE8A6FA2AFC3102B3D7023164B551768E4314CE905F611AEC35AF4439C62916A172CA26658B7AE2A602CF3E229A9A409F886F20390E3B8FBFE5645EA515EC7641520FB23DE706DE4B5C321DEE7E2C02B6D3CF70981E37E772F767274702B4ED652DF05D40988F62EAE6F89959C75EE2B8E48212AB4D12C2D285DEF65E59234AF2C258F9DE74C742CB5C313AAE92DC8FD7E85FBAA8FDDD5278B12CB4BEBEADA3A1FB9F43DB83DB7BC06311EF4F5D7F79104DCC0880F5DEA91A023A4823311CED12AEA30199A560CB1A254AB0B0AFF4D2BA1165054D642CC29FEEAC846933C37328BF72F55147441971D8033CD4B175E652C303ED2AFD73E94B03DA552BE2238A6C67BD4B0EF36714A0078C9027D7E443AE6A676C647CF341C047E5FEB9794ADC3CCFD2915F6A9790C7850D00171E955FD1DDC64A93CF821EAE0021AC5A1ECF6325A1302DAC881BC65C24902C970A1A1F5078535AE91133BA5C87AE37321EE43ED9B9EB7652C40F504F3679C11F2A38996A174AFFFAD19FB923D1A3D21E3C2479AC8E5C0ABE502F6FCD69DB929F9BEF6DBC5EE213D9110413859D17B807151446218F550191DCE8BCEE51215887FBC9691F209E9E1B6DA696D8F8FD3A307371364FAF555958A1754971E693BF9E5A8319C2D6BEFFBF1A550F38E2DD45A73623EB8698226A0D83FFD6B8360D45CFFDD9966820BFF5F6769630EBD1B583F6AD06EDE3B5FDC9C670D6D6BE3FCBF05499EBCF547B5175F0170D2A81DA74312AE7EB597B5FC45FAB0CCE5CB7A95BA705F204C858B70594AF03515488AA52D5D044E6ADBC1203EA3F2EC795AF085B57EAF2310810F5CB8243E30F07A5A41BA264D08952D515E495CA7A545134A830E1360DFCD1F538B4E13A86EEDBB2EA3E05DECEB4C6DADF8A4908BE77315875C4050016C4CABDCDA46E196BB8488AB74A2D4F42819B6730352DB618FF29A277516053113F78AD947F3B9B5A7815BD454A63F9038D2E598F455414F239D08D38E86E215D7850A8E49957DCD849E046640FBA5948139EB8DC5AA7BD1E9CCBB54B91E054F6C423DC16093E3CED557012CA935D9728951C0DD4F0F40FD416B7544D1586A92E4BD31AA82F28A129351767D914CAFCA95FA97266604C79EF5CC2989C04617A2288AC42788FE6453A73E6BF7EF8FCC6E9E140158987CD4CBED90262A59DD3C5EE264C3A0149B8C2D437330E2FC76F18C8F1A0B3D54B82EC4D1A4AAD5742E9F2B98601B95F237DD2699C2AA4C64F8A0BE37572981833D6CBB5012BC52D17853AE8648ED467C564B1E7BF80BABAB568EF6739EE0D31953C9FA7A3CE7E909B2A820B6C8268C515FB2ECCAE78D1262D00EC2F9ECA14E576B8BA5CE521546F9B9F861C1A2036BF211906F1549F597472F11D01FE5BF80774B9EA84CF7F61574A9BFD0F2AB21FD3F2631E3EC76A2654A5191EF3A9DFBCC6C8FB9C8131A8D8730362FFCD9D502EB80F4FA2FCEB62FB97D4227A545BD26398E2FC8066339796561D61F2FAF28F038A81CD9B7C514F6772E3CB0EC08574A26F6744904EC7A89AF9EDDDA6435B0C4F5112A85D604C44CA205F72BCB95EA7C493C6E621EFA44BF758D0102A9D5F47E8CB6F31D6F5A467FF9C841D082DD93F3422AE5310FF1128CDB7391ECEBE596829BF0E8663E50A1E10A0472D0FC397FE590675B2CA7D08E2E1255320CA7C3F2678FE6975A1ABCDB197636494D53FD133DD6B4CEB94C3C523D1C051D34A4B291AB89C80DC158A8FB5E098C5CBEE6B25130E99A53B31943F7DEDCC8995DAE338BB3BC73776E77E0F6AD9CCDF28DD88174B5222CCDDE9F584CB454A9EC5D1C274DC6FC5BDC503F6E2B18C00387579ADF2823189048AF87D08585D4FDF1657A1F9D355F837096D6DDDEFBBE00869519018C25A01E4BF0F3671F1BF9ED584C83C161CF2798A9D228EA5EE072E96310C7F2290833FCB384BBE05EFA5DAE421ED47D2E16FD3AC0ECC2240F22898AE0B3238AF48211BEB043665A2BC547923861DBBE042F6F0090092657F871F2A7546E0F9FC5700168C87916ED97EFCE71F947E9D92C9B5109FDC264922C12DAE21287F6EBB970A48788103C05CA65827622EC4DD9EB730079BF60B0DD277050DCCC3EA599264683FD37C981ECF5707D8700ACC7EE8DFF857E9E295AD0C0513351F63DC2D774E99DDD11B8625A40A1522355284B6142D27FA1C29CC6D1D9A4DABD53F0C5B74C699E962681CFE708EA3AF0531C32D52D558FE76717022288F14C5D1EB38B399D7AACF2B5AC77341EAB6099FACFDB56939DBC568AACBA67DEDE81EB038C624EA097DA4D7A29F24117044198034DD7D50F85D35681DD08580DA9D6C6E0E91F87ACFD62412E137CFB62EC76AFD5AEDC6C4D2FE7FAC0DEC1502D0A41E043A866D6518B0AEF560209B4D9FF092C13143D24C4805098CB56CD40A5C8023172C73614A23A8580EB55BB7AFC0736B5EA5A0B295173318B60E3AA9603A0F3FD368A52E04CA56768BE7B62F52D968D7344641B0D4CADA68F508B060119D8F4227D7320644E310A1B5F8060D8739453A526BC941CBE2A855118416ABD58BF4B288551131D35F22080EF7CB2E7DD342637CE3243A9EE88BD3014E1AF42058231F31CFA70A5FDA37304218C0AE20F0EB0627D4B282257B31A2EB2B2311D95A73E6245217B92CB228257FF1067BF8EF5FF9E3C92A1E0169057D0B30322F4698D7B4D86FA399735488137F3DF2FA2CE3DEB829C39FB414BC15BDDF2A8083A16F64D78F1DAF61E24E7F53D5FF03C2913C667748F49A898171B84D6B80D57CFA7A6DD47C716B14B988C7913BC1D2798FBB57B70DEE78F4AD2077C7201E47512DAFBCB8519F3D201A7435DA6EFB6407F6CF75336FA39B915C88A4F18ECD39E6AF27E7BAAA35863905BBDB7E5E10641B15DF7EA6AD4EF5A992322A6E2662BDF8BEB93F5DDF7D0BA79274D2F09DFB2E1C62BC17341B55479D03809876949CE558B1C1495B951858238C582CFC2EB13025595A5AEABF2D81688CF28A5A7BFB1F73EA54EFDD198D4DD78B135A3D925898478137267125DF2C9E3AA526E7CCC12F6525E6A0CD9A8155FF62B31095DAA5811A97EE7186F9ABA3F401A351FD9DC560B405597069AFF96D06335049B56C2346E3DC511DEA1A3BCF8132F8D20767682938BA1A96881940EC8B8179034B942CF9DC659316A8A690F40E7316BE59A63AEBB13AB6581601F1AA5E4551C86D95E02C2A9825D73F60CC19F2342F103F2B86F7126E56D5E49FA9BB2F1E7173AA83CD5FD6970CA9B2D969E840EB3B6CDCB7745FA88AFC40775C6D0DC5A79A1C5712333CEB0396CE96D842ABB8F8A8B3069EEBF975ABA2479BE34DC6BC5343E2B2566AB96AD7E75B199FBE350A329FC1E347351C4C3E2F4A3B2C2CDB96236FA61B5B4AB62A7D9D418D9E8D1FD7C2D538BF57F309A23C984585DD5A3D52727979CEB3EB2ACA08FEE46A802F0790340361360D3145D712CC987A03132280BC834F65C746FDE2DAEA0BF101AC17BE90480A7ECAD339D3DD44FE5BA63EA50DB0FC914B1DE58DB3945BB4C73C8BCD73E7D8DA481421AEC40E1412AF943559C3D524F2B1AD4697E1C11AC6AD1DB0B1B9873801751E7147A7D7849454A580B2E3481AB0D2F106CE4D06397CC749388FD10BDF612D07846AEBCBD6CB229C9CFC8586CE661F2845B7E1DA6214EEFBA7DE90F07D892A226D44AA08B5147E41755E76C906B99052078922F496F07ECE9237215DAE8A4AEA1AB1D9F1737054AB11C2A929C5F6B1280A6A24AD92D9756EA67D9C8AF01ECBA3701DC198440EEC871A2DF84FB5EF07A720D648DE735E048EE39E9167A934A14066FB4CB5F3ECF8DDAB35D6B3384F6DA897AC24AE6AFBCF65906318CC779F75D12F0EDDD021ADFB0EF1A6365DA7C5E75F22DE4143EAE158E5B45B283358E7E1B4044C70DC505CD74157D8287DCA10B64446DE7F1E3E1DFBAB0BE28F16A6B9AE7E6D23556CFA5EA72C5436E1EEA990B97C1B27DF9363B0DD27ACEAA0C97C29B420C0059F58A69813189AB29F51F97256C3CE2FABCA448B5C77E1FFD2E5336922ED2F169447565C9ABFF4E82D9A34DB17443E9FFC9EC833B20107979ECEA4D510C1D2A73CA64B18E8E23D10E3A2532C2EE97EB8CA187AB1C8AA5080AE3B3D49C15F932DBD2E8522E1035C31A1FF6B76F3819CFF04E6AE209B5553E68C1D8744FC3F849674C01A620B71D1C7D6C9B072B07C79A514EE28179D73BB4FE1D1E1C207CBEC02780EE871640CA0E926EC5D4B39DDE3D75D0B65B8BEF75A207C3F4CC177B2B19DE32F819F1DC5E10056B8B456DAF55741C872269532F2E3C2BFB1D722AD98CEB466B91001BB7A8BB22068724A264C5FCF3CF527EEB901A798D2FC58F1D51D9DF5F12D70D4EB4A9784B32BBCBD3B4C4ABBA0DB4280450F14DDDF19C38B75F167285145A5E79EF49717F694DC1488352411752CB28537B85B3260414EBB4DDE1963118B10AD9E7192B6AFF0D242774439A8F980B440A74B4704D1DAC3E5C70F1EF15DBB7A45346D1DBA620ADEBFAFB99A4B46D1B4CA768376CD680229003BC802C3A4268FAA7BF7567D144E797D8D65FCF3B6DB9B8B58C673E1F594FE20B6B76F810A34D99BB8CCAC01DB3D51C1EA718C37B1D7A7F26342817850820D324539E4D939034C806335359CCA8DC21EF0C8DE8DA30655A0195D19E320AA6350964775F3CABC1231D7A095F7FFBB50C42E8D03E1F168E9F209B32AAEBA2148D42A1AC91D89BB36C7E048ACBFEB39692976DA2D8097653DE1E9647FB63BA18719F262F2239F366F772B59BED56C4F9E8FBCC85D7FDDFCA4ED21D0FC77F3C61C4E32A6398704F927CE4962A652D5771389C7EB0AD476A4EAA04902DB48EB79313F2A96E0B0ED6E8619EEDF1BE2450D29E899C2768420BC277CCC24BBAFE23814F463D6D51A5CD5541DCC8BF25607AB2740BD68F56EF41C4BDFEE7D51931C31CC07F3F0F5290BD7CE00A113888B726ECD9BB359DFE32377B80C4BD49CC9B867B73318464DA9052C1F595C0D856167612DE5184B3CBC714DDEF96A819A4C4ED11EE62102A1B63C87918318B7FDE3E0251D64216E1571EFD6D5DFC781C26C9073EEFD5149F62906D6B5F27C0087FE1F5BA4B99E3EB69CCED5BA3B5E56B348E358FFF9CF690353363A6345A4424AFE0157FCF7F1C3774EB4527947983D9C86F8D3862C0A1347E3DA41A59CD27CCFE4116468BEDF3E65A0B29DE8B71C4F70D39F28F86B4267882B109053E097E063170AF60E7CECBBF7FE7DE4A4493AD2E88B0CBD3C7C7AF8ED82B97C71B4E714B0C0A1AC7CA6765C94D5D775B3DEB1AAE15EF667B7F569BD2CFF0B52E8DAF065148702C57CAD33A9F3416F0906F751381886F9A66E0087333D8C97D2EDDC02BBA60A7216ADA42A07930FC34EFBC65DCB8C301A2FAAD5A6A6A3A1EEAA12765D40C84C8CD03444DAD12EBC0B3079C4CBA33C732F5E736A491C27EDB43F7D554FB7FCEBD881D0911742C90B81A5A395ACDA2AC7FF73522C57AFE013BE609A042BD2EB7ED4421E8F86762965081C54838F8D55D49400675AF6A6A33FC9D089D11EBA376714C09AFB510082068A2085E996562E8388FFF6A47D5AFF1372200089B1CBA8E32DA950AC885833D5CC9503274D8CB9EA75C6FCB2C762175083B645046138CF1390AB567DA9DA804A84FB8E4A65E636E4C35F30533616D776DD74E695F6E84440059E6DC8D39407FD542471BFE2FD5FC6665CFE1968C59F4AB2A39799AD970DFF6D007BA544C9899A536EB99DC73FF28BF2D3365049F2D2D0D51ADE2770995AB4A407AB8DA6A6699E89CA567DBD0EB1D7972E7D78674A03B5CCBB1E4402D1C73F05BECB74DBE4B10D8983C65DDA1B4B7CD3230B79059FA962F555D24CBB0400347C7BAFA8A255F45C989F921C9869669677AD8637377CCBC89E704054A19602C32C1371611AE3B965E790CD425AE604327880A01A039C5C42D4E79C759B55DFF0FC45D59524285A603F9E59A54A32EB65D23C3D92B06D92F25804CBAD9117E4D0265F51AAA20216645618BE1E7E714A1117B93FBA6C36066AEB76E0993FC72CB6C35A6BC0C9B0A8601E32780B620620D0E102452D8E98929FBC77F1227AD21D2048BCA5553D1121A39644C78E82774C49AEEE5482F1F60DF0140EB6DE9D7F3CB56FF08FC42E670AA9648DC05987DA15B5D2023BF6E7B9D1B04364BA02F8A08AF7B8A9CE41397DD20B8848DBBCD1036AD238483312FE61BF13DE8BDD216D798F28F5DBC6C4C4E347D62432C4DF957B2C4B43589973562326FB981ADF5C5A320331108020285093A1A831FA14EA96E79A8D1F2E881698F51B5366CDC510940596AFDF7E2E3D32A35755F638498DE54B16C948957A4A8A66CDB9B5BA2B1E9A46AEC0020BE911183D1888581C1649A8D104BA00EE3C7D0CF6833C2F7E91947395E325E67F2A3543918A93D8CFBDD5446CD4AB282854A6E258E1BEDCAA09ACB6F232EEDB156737219FD4771ED764B52545902E3724233AB57986B88DA0A5F1C79F01FE2EA348A087F332D6B619BECEA46DDF19EAF34C05479B7F00994B7E65A677ABBE0358A2DA24B1549801CD3C94CC3F56F8BCE1D4853D3265F333A069CCF816E00EA9086524F3FDBDCCE5C6DC74F36F6C8761DFDC92634B0F46CB13F73C6471671F4FEF056F2204ABEDFA29F8EBB870128B7BEC75E12FDD52896DA46FAFEEF99E5548299A56B8F7E6D5A3E5F12D545738FFD812AA00BE982C765ED2E189699250821278C7EFAED7A87D72BAF66FD01E4867ADAE8A88C8345C313CC1A74193648DFBBFFF8192A7B4D9A5CC32B0953709C4DF04FB4B81E71A6262FA87A3F4D0F38597EEF7C9964095A433AD68FA40D5B1B1BB9E09CB90CFEC26CD11B9DC16E16B59CDFEA51D2A7921B99A7BB4B0E47A7F9ED798756781DB3202CE344D048DC78BE4ACC1C7198A006571B04B430F0EDE7FC48FE1629B4415C07FC8F8A7B0AF7240DBE7A23D5C6A06E63AD51909508DD9911577BF6FED880B01BA373BE77DAA92F05A2B86120C463D0B64D2039B2314ED3EB8DE42223CA453D8B582A609A0A98B1117E7D9D3BF472F0CD30196E220ED7A2538C20D583021A3DE5E57199883CFE4094731ECEF33D44B56BFDAD224DF9ECD2023E325B60ABD4DBBBD75ED30F4A8891E28DE9D250B881C8B4821B125CD0126C512BF32EF31EC64029254FB649ECF7BEBBDE596EC939AFC1B938E88CC4F25511A5EA87B6E9FF32979140B610C473F7BF9639A868CE689964FEDAFAC608073EE246D55298EB17C5BB59C767CD8236BAA481D93EB8005E8B52C28060FB789930069BC05699E88D54A9C20EA4C6AE1A2622D60598B4E8FBA5DC9F15AFFCAE9013353813FFC7029EB7BB33509B8028A85E9654F6BFB22537422C27707FB352CBD8E969EE1F5EFBBFBE6FF0557659B1EC72167874857D0DA97CDAC146C777973F1C54D669E5AB6763D8233C592E8A59F4C1A4C0605AFF5E94D5119C38961A4794D33D10D563FAB16758EEC8748C85AC4B6E010C2F9300CEC8FE65B55E5705DD70D2CE6A769880AC198EB932FAD3938C375EF440E82FD30F3D7D5043A0022D16E99745EBB4079569E144EFACB008EC7158D9799A1C24E5E7E47793213AAC5F3752947488DD8BCCD133531646A8F8F0C67DAB56A3FDE2FE8742CFB6A7F637E5B937D4C065A92021779E8E7A413CE84AE2A01F1637442B4D1A0508B9D5D0F4A1AEFB66C36BFC3BC4B685A81DD665EC5462A65EAB5704ADE3ABC774852B70799171279B22D057AA29E88A3B7F88B6125AEB332B0451DAA105CEB7DEE7E1274C4551457E39F9B480B710FD643A357B4B3A254447F1141C6E96A3066707E8E21B8D137A92D79F232C0EA2C7F74DAC79ADED538B473A3B0947E27819F76622B293A245708895144833116CD803ADFA6A1FB42B10F88F775BB67290BF7A985F70223B9441C0132B80B80FEE8505218F5B152981F7018C1BA6773BD8F35A293EC18AC673ED0EE6EA6D6F7922B9EB29B0D30D7611DAB5CF7672D14D8D240BC29555A75176D5B5638C7F853C4AC4F76966C2F4B376D73A31D5E788F0214079270FE876B6EA4FDF053D07942CDFE09BE90535429F63A8E7D0C4162F77C2EF9EC17218D17F5519594F57D4A1CA6662E4855773E85BBBCFA803F298874E8E01B1AA5275C2134338BEC2BA50D82C8E2A573B3BD2E2C7ED463092F57336E42C0B2F8B920E7F4B5366020BE45106452E44F453F0B804EF55C4D49527944C0029DB05355B38BB6DE27BD07BCEE13449BAE345ACCF562D8ECA5A240FC1E51250ADAA157F9A72FDD706957BB88A711FAEEE731110DA383267581B19595AE02A3E124133C968D9064251F12F3DD65FA911D9928509E82EA91B4B1393D682F5153361B1D18A328B03AB4A34369EAEE67FA1F735C186846D961B264872BC93BBA0E7DC4C86DFDE55CB5910E6021B39E7BE704FBF69C86BD6508BE4017125944CBC728BF35EEFA89E9263685DD886BEB1366C8BE44ABEC458FADC6184A000D9E67EE2E12C693EF8787D6BA3BC87F5FCA228ADC8B76AF97B192D5EBB7C12C7649C596FFA34778CDECA51E0067258FC840A228CC09D49D1C4A406A6CC3EA60135963FBE3934E0486B4248556B9BE5D808ED25BB81481BB0977FB44CAFFA3E997B6EFF6B4555A679C56743ECE6F6F2550E51EAB3AD513EE66148631CC1DAA256DFB1059176E7913A9B8A8E5FC203E6A4EAAB7A4C4CF9CDC9912F3EF5456C47490E32F77891F665249DD4E6B89C5F3BFFD635C9AE1E593D8F4AB59A48EC703769A923E997EF5D90087129649E9CE326A160CA7D3792F76EE4CB9DCC3D92607B4EF8769BCF40C1C314AC965CA0A49649A280077724E18D5444706886694F139513809EC80E1BC7005CF2533AC34E979DF02840E08706EBC4AD5614CB67F5C2397988EDB133020BDB684B42EBAFD24FC41F342E1D19D55B2A40420351268950B86AD2B7DD671301B86B2FD1DCEF9B1B149AD3CAB935C867A95B6FFA7A5980237C0641757C1C9B75FD6D2D6960B81C40DC2B69F6540A333777801E3A192F7234574DAF3314A16F166737F13B3C5B3EEA397193CD15723FEF690B4B95E31F274E42D9C7504F14A76BD5E148BEEB4D4FF345DC2BE372F4B98A6B365372C8022FD1BD82332F4C965439AF83522A7D5630504B81F069E7D7CC0845F6B7B88620A2F0572D38DB0D91BCFC18625278039776148614EE282318D57A1D3DAF66603BB4C056CFF38324DA816CDB721741BA12FF27EA0B06E6E543D597634D219353D562CDBED02A0AFC39719DEC56776052565301C9A3F3C1444D34AE78857154DF1C34A46BB78D5B231793885B037AC5CD2D375F5BB781C65F71D1F5D21CB59489E7B130E39D2B613BD76F65FFC5BC5E001C39992F1F1E0A98D8D7199050BCDDE6D8F45CFFFCEB21496BA865993BCAAB2834170B86CBF504FA39BEA2912162A3F39C56D8B7A051F4E251EC0E997AADD47386CE4D210DF642C3511A8302919313CB2C886659984265AFE423943A2937B44CD6B4934569C3ECF72ADE4A408AB1C9D86F2AFA5E18A5207325889EE9BB6F0DAADD5283B6C8B61F5D97C6940613A3EC5D8B8D3C0C83F4041249C2CB1AFDBF8FAC6FCE60766DCECE94441FE14FAB227E3DC8647F7BF8953E9E35833FB08AAC1ECA1BBA2FEA660FAAB78E9064643197C02C84DB1893C8CF444D87605E94C5FFFD7B9914E0280449CD2C45AF5B52B3FCA0F172B9A5E058CE5260A24B5136DAD55C270B89AAD903E705962270A969767216A840165FA58DB83CFEF272FDE829A5901FAA05BFE261B78F10C493CA50855C0E26B66DCF990B0C47D2CDED13CBAA045699342F0FD69DA207F1F370C155683563043D6956B1A304A326EB763B1E06CE77FFC866C6669028EAD7D8A858A813CCF71BD2350CA666D3DAA505EFF31623FA732E0E08ABA5ECDF49441F19BABC374B89F284314FBFC0D36EBE85E59694C2F98FC11E1F58C76346106E355140491F86862B290CF4531B6263E9BBE743273C833893A5AA5B06C9C3D7C3EECDAEFB356ED9110C0DCF84D39DC0CD37355A21263D199BFA3146F9686C5E71E1753EE656FA89DD4724A563BDA0478F8DA9912AD4BD128F05F4ACC6D4B56C14516DC1F7B1B47725FE4F183A87FEA4EB17F0F09D6D30A85347BAFD35AFD5E990F65BEF2F359CE5AF78A076BA4CAF77316B4A1F146E82E9AFC9199FBC75FC6642BA7967CEBF8CA1E4F52EF9FDC772B26BEAEF435600169869E08C323457B8A4EB715D0ACA0FB5309CC90D7E8E80BB8B430D21BA242F6067D9AF518D1434E10CCDC59EE7CDECFE21AE8F7FB7D6461396CF854EA4D31CA8C14FD4DD28C795A2EA8E2BA66EBC6E40D6AC384F1894CB4F736BF9EFD695AFE9BA35F3ABEA9D92BED88046873B8C6C97EF4125A09E651E5FE9EF97AC6F79F57C731B6F0A44DA175135CFBBFB24E5496A4F5468E79782365B7EB3FAA48904C3A899DDC27C7DED0D844A237950AFEB0785F2D3D2F54638CBFB49A7229152C693F08640EC0770BD6F8A4D895B03A5E2FD868C7810974C4CE887B0803F21AAC0E0810DA5CC396B8A2B30823A7D38D8E6A315F477073943E621169AA98E2DED0E3BAA2F02A84C71D2EA92EE9DE82E8B64644FE5052A9EFE748CA871E23572A798646322416F6877F38679D1E2CFD6A8100702A4EA8B54FC28A46D4C0660FB149C4AF58C6CB39713A58A565F70906C2376C846FC1D57B7627B2455A63EB97AF630EEB5AE9870B8AB1914EAF653BE36B23E38F3B3BA231D94051F06D1BA83B054783EAA97B752C60BE09B7794E5402AB568FC71080CA0354EBDAE7100C880C4D90EECA6A4BF4C3F7B755FC368274F08C9B20E97FAF31B08CA549596604BCCEEF5667A2EF70806F58075EE64D7A6ED54E5A118A5ACB31B8D2B43105747BE4B574553BF21CBC99618F287D220181527CA6A57091C0C685AE8CD8DA3AB5694DBDE050C442F244C409F9E45EA5B1AF19FD65497941ED8676740959F94B1CCC8CA982D3F704CBDAD4B946086625FEAF4C7A0116ACD1502DEDC09EA5C43AC8FDDC15B1369FB9EDF1DAFA69AFB8EC97DD664ED19A8072EF502A91AF82D49B5EA136A84255ABA7F08FDBC7433347F49A28DFD41425B8D8B19881A0DCDE30112F7414D07F3F6EB6049805E06417EC11B9D209AFF03C711887673FA23CCF6EA9837ABA37647723B23BFB13A4B836C72BB361CB7BFD9E22AF9B4F82FFDB66C48BD93B642ECC32E28362CABA7D74D3D66A55911927BCB799D826781B740A6F4B9B9437C24E248A779B92FA95CD64AD166EFBC86E140B047098459B25B6FDBE827A95F49E85442C140CA52C1FA122B6836CADAC2EFC314386ED020F1DE76188B1BDBD0BA438018DFD33ED71C025BB8FD4502009CAAEA32828EA5B6A0597BF1DAF8D03FBF9493C142766853465C9360F307A46FE4F00E4249376D9DE171211940B17676A904CED21079F135437910C3B94F047A692B2DD15C6EB4F2DE3468A444E1D81295351939F87B7214104195FCEC55885BF79328845FD72E2C8A55A95F82593BEBA065491AF3D7BF843ADDC17CE9D29905E62C5BCAAFDB0EB4235E3F92F131D2A41FC92D4177446C73D6CF2AFE2FF8423F99E2AC0E5F3C9736960F5BD669B116C11D3BC5585A3849B51C32CE5F49A911B4D27F3EADF48E9871CC2BC9A3AC2B7B1DC17DBF8DF4BB880715CE8D7818260818EB828DD1BC239B6C85F9F96543EA2B521C923743B317F620A7251B87BB8E4BC86E71EF0EF9D11DBBD28A7D8EB7E169CF71009C223D00B7EA073377EEAC4294593B2DF674E0AD26956B3688E667733C8C43B7842EA85C6CECFF91F00DC40C7A78E0167C60E9CDBD0F8B5A2E5CBEB9C99106133B09A05C0F547A539CC752682111CEFF0CE733BAE1011AA66C27CA545C24F00251535F9B747EB652DE08FFC18F8DD97546B1C57F25095F3B2814599A1B0C117516385AAD526911E439E093F9B062CB6581C9614F2E4482D9CFB4BBB13E4DFEC6D56E7EF89B959F4F40455DBA04514E3AC8EAC84C600E57499AFC872B35A82D234291861C5DE46F3FA3189FDC280ED3796C7D0FA2DB392548B66610F5FD0A5679DDDF8BE5F20A793468704366C8404820291D62060A66955BEE1E7221336009376F2CF96D5546DD39CEEE18ACFDEB81E972AFD5528992B6A65F0335245ABDC5D05F543480B68A096C3F578323425CCA1D43FEEE5C1F9DBCA1B490E27539D2A01B847099C074F25748450CF7B973B679797C16132B080D55E339C0A887176FE427F1D2B6A892D57FE358A47EC3ADD9EE92158844DC1C1CB0ADD28AE3264D2ED9D32EA5D0EF42DA07C72141705217AD7D81E981071E793E51104B4A486DF5D2185F635EDF379BF37104AAE6E03F787395C4EBCA073436539DACFB7EAD17B5D323955ED898EAD7EF20D7E0CA53C2A70E3920B459621A9C4A95A20BA3949EE6C102595553A7D00CAB007B2647D49BB2919832538A55878746460CA1ABF082649ABB9C459D6141E92834048A6DC9FB6E2F944C545B29B69F47BFEB57CFFB306FF992B96100B0FCD8898F2FCEEE3C9BE3B860DDDC6634B6327223B175FD4F797C136322A5FD4EC37E9D653CE943FCAD1D9E6135371A0FC6983E8FD84BB6F0123437B4FA99301B2587553A5597E67CD3F7AFCA43A085B33752DEA71DF464C64EA571AF2E88F9581F1E34C98CA91A390C7DAE02B24AC7C407B318E230A2DFCDE8F7AE2C6C407BFF1D0B6268769DCF7B2CC5B3C03B604DC8DDD3092E1EFEF423B83D7F48A2BDC0EFE0C7AED9F3B7DE36D536BA3D2B4B72BE297865AF24AD5061E798B7EC5F7E98B7A3B5C4D16A58E754610E41011E942C1BADBF0F80C2A4963E5F5DC494CED5816812FB887ED3F46140C7A455861D4BB9771C68CC5EC067CAB9E8CE76CF3DAAD59998D26195F6E80E12D6103C080D475111839BACCED277A4B7351722FBE31F941333AF3C632B540FBE3C20DDD1D02BF824D2FF3E099D4CA17D2C218105BF0059F83E98C7169B693E9D473946915B7629470BE43DDCEDA50FC1E410B5885A1C118A144FDCA4C873E009FFA312623B69AC787609DE759940FCAA136BC32F332EFE905E9D9B888D4BF26A4BFD45BE061432726683D7ED55B8489FA85B68B379E4D2031C1AC4D6263D6C6B08C593C750E3F99F68C1844B8428CD081F5243F0600719E3AC57E904A95EA86F589BCB517E608BFDE539A05D9FB3D2AAA6E97C37CA0449BA664C9DF269737CB19DCDACF16E119A3B67387B72B69F5199C6F9132A28BA8329873E3FE9014CB65BF3A105354B2D357FF1C4D4AA7E8B8BB55887A1C561C2BFD4416047B00D0D18C409F0BD5525AC45849A57A32F7ED85EA34D4C51CCCF3C0F04212C6FCAAD8FB114A0E2116A5279CB28B11A916BDEE34A37509AE46B93CE26AB6E5FDC08FF7845B483AD4671D3E83C80021918F04587770D34E960E65AD026600EC289DFA80E48CA4BBA6F23F631F128581E6D56BDE2320C583C6CEC6DC6036BBDF313F0E43EBB8CF20FF67FC9B9C973F261B3911B15D16649D486F55534A6B67A528B1B2AB586E887B5EAB6613FC4CDD7B9E210D801D37045D01706DF01CFA2D92B45CBFF53190B0DD09ADA56BE42CEF11E495DB65B70485F6092EC4C625F638C4AA41F73CC9DBA606355B3FC53C35DB39232652305EF73AD3E73EC128B3568517FADDEEE1DBBFC841DA439BC95A706AD52777A5ED0134911DA7BB46BF92EFF615218B9AF78F3FCFDCF44668EED7B980E44A94F93B4CDBAA98103DCE76025D4076744CA7B8819C153731C7AB282623FEAB4DBF73EF997804D72C9F11D08619CA9E0CA709EF644D5FEE007BA64A8B61B10737C025FE367C8FE022B0D1A3AF27A0506983F046DC5E3EA0053FB9FD410D675312A183B12365AA42DD7B29E87A5659B5A419FFE532F561A6263AD4FE22A55D2462C4BCB1AC3D37EEFC8C3C3DF9618CC420D1FC4F1369C7AAA378BFB4E08961224BFBE932AE42258D438E3E67546F4AD08E21035278977ED7949A2965B58E75708C4A69AD1B37A9D2148FCE2A4B34422B2CD17D60B26F932E72C645CF0BFBFC027215EE0CE801D9AC4180F5701A61E17AD7AF168CB0661A82350047945D6B8D8ADD04ABD47B9B5476568EB23A6ED36A8736461D907B4758FBAC4ED042C92377E51AD502DA16C89339665D6B1FAFB087B2B4D3951B021E2952B72D8ABCD881DD235E8358E0849D064758C05B90F1E90A3A0212206365B933345085A7441B2502FA52D379BCE731D7D8A268271C809DA772E9CFC4EE625C1312DC3452F25F767EF7D79152CCBA69B7924EFF2F918DBE55692EC49AAF5A5F0F53AC62511C8CA60EE5C274683344D4DAE087DC63DF49CA61E0D0CBF5B4551BC3B8E40704A92B7F521B5F131FD4FEF0B5DB4E9EB474AF63DDAB0F9167E4C59294D22F6127E5266102DCCB9BA8D9E2DA0F0E58EAC8DAEC4AC615DCA69BEA89E6B73A7DC4E20A67A905D37F57F6853DD1232B7BDF66F3A24FEEB6780353005FE1158BE4B3BAB44650A8BA9B38581AA4CF80E42C2A299685CD8CF145F243CE0C9693B4510A628D9ED7B5252AC7ABC1B4D03240F69F3FB168E535691CED874049237CE76A7ABE9B8D29C3B8E7CF0F9B604161791B77639BA38E45448E974DE9B35AC29D91F648BA97F0EABA4F362DAD39BA647A6E503F5B0C4ACF009329F3DA68271D5E504D8EC935B1E2D7E0F828F1894E0089B4FC0173B514E983DCBD73A3C9798A1B3912A888CAF60F903E7D9F4A5FD32FAB7B303C55433ED4440823ED5F6CDFD3D7B8B1AB703107054324DDD7174F7E490C3D59EA2806AFA94955483C3F032EB87D765101E3EF84659C99CED7FC3F2754327F4A92B2F8EDDC635A1FCBFCB0E66AF3FAFC53B6505CAC60EAEC284CFD10C07E742D8AA8D9F8CF21005948E84C747423EB3896DA4B0AFD90A2428EFDED9276C4EA6DCD04B504B43A83EA82DDF63F07E510AD5482352C1D09D1670304A2D69A956A42393198A29BBB56F1282FD309D3A9689B64DF2373AC16FB0AE38B0E1C69E962006B25C7185250CF01BA147A55393F612C08390BC27725AD84C1FA220D933D714ACDB891631BFE20AB62127CAE407A1A4E319F312056ED48943C21DA094ABE23EF39D49E40C113C0F221FB9ED1FF9C4BA76D8C4AF8FD86A9276D22FC854AFA8515E8AEF90CA34937C88E27935ADCB9D0989E7F6CA62E61FDC297F1371951AE6B5FE3B840910F8C28D5303E3BFB85890A47215B3CFF13955FD5CD1F0A0E1A2EAF7B09352C935512ADA340CC9ECC220E8F29027DC91B0D5ED006A1D19B8E21FDDB362AFCC78830D1D6B2AF7530B6B9FABC7B9A6503822B9291B15415E9C5F51B7F3BE32AC10DB1BE37036714F306A5BF04C189BE252A100A6525FB7FF23DF3E8DF047B79699448387061BDF0A37D2572AC90E7B0E558A643034B93471B3708FCEE446251EAE05A0099EBF4C5311B3A337AE0F6AFDC60E70711869BFADD665CF2ADB132F9062B63F4E2B072BEBE40E989B1616A2033C71A135E4A1DDE6ABC64F953EDF9F51AF929539CF66DF15086F90F1FB7846A82C18AD6E237A73467400D0D6D12DC68B70848698B49B615D607D55119EDD09F2C66CB8880A98E199F1E7AD200A24361B3563767B951399245B44744CEFCCE7C2BDD4CDB2A5956B4D7B8C3136664020840164744FC0695DF7FA5FC915CDBC03CF2016A8E7BA0E52BD3B9D016C615D603542017F5B5286179A5B3B4066A202B8CD6E0CD9F7F6A3373B778B16A4A77F0738FB9297DC63B99D03944C9BAD495F36C4A5329DCE0993CDB9B1B792DD7D93467A769EB717C6A6B6E884F0D0737834FECAC900233E3F3487C885A67E99FAAE3DC649A8087DB9C47618945D5141A9CCE80BA057BE69C6DBB2854879C56CED3F3864BD6F15E5910140CEE7DDE0F1599235753692984703AC5FAE8A726738D027F9EF0D0C0D93BB680FB73768019FBFC8BAA0C0C306C613DEA1C5F3D0D9CE481DD6B2B62647DF7B43899DED22F8B7F8FBE40E64C464285F0D3B2C1B4B6D8596F93BF8E7EE152FBEAB5CF48872C29E56FA0C0DA3A01E22EFE1404E7F814338805B7FD9A2D2F243160047153D567D7969BCBD75128E171751217C1FE66AEBEBE73B5B2DDDA3EB93027820880EAD015D610676E639FC04F20C0E4B468F5DC57775680103225A1367DEB32350909D4688FF028848AB3E05AB03DCDD9B6D7C52419682722866FE378E363CC9218F67D517E17AF7A317F59F005BA92B43F6289B4E3AC50675EA17C97674347B0EEC9830A6438729D5064DD96E2908712B781180C2BFC5EBCD8F4C523A6B178C7D78579BE5067D18ABC0D2838ACAB58325F5E008CFE956DA646600637DA79227980DC37C5CB6579DDFEAA181D706A2AA9E0A1FE558349A5D329B707A11B9D77518858D946AB821E844469D124AB411C28535B3DA0D79D0CFC9A071C9593D062DE91E2407088E1E900A5C5242F47A9396F25D72DA2CE3334AD8944DC24F61E648B59D9CAA58000B7C12E5FC15A783988A615781FD354C224D2837579BE8F387E12B8648151299023FC21C972157F4A3347A44F494DAAC78FC6A125AAB85CD9273394C0A9C0B9C5A013FE866FBA09B61C0A58D0B1D318D7952BB383B269147ADF8C8D414C1684BEFF5012EC1C0CF442BBF344C47A82DC301171E6EE2EE2024612C3DD7DB7A076331FDA06060190B77AED10FDDD29CD5E67216663D1BF52A8EA34CC1D64AAE2FFFE268E7812149B5620DC33645C3A0DC593FB19F02A6BDD9583EA66FF7F286BF09C5D8B06CABF6450EE8E7AD596E7A9B5C6ADAF8E73C0C9FB4DCEA4C2FA34013C2D7C31FAA2C30D8C6591103249E4AEBB90F6F8F68B820C927CBBCF94379B4BA141198876F0D6F4524F24A5DA82518449F2301A10A8CDDE5F77BA1C9CDC089811E5F97555B8162576C7D5A08314465D6586FA301D137B58E36785231987288BE856811D918D46E45474296004ACAFF9A7D89A0C945EEC069DEC3D4336D8FF97AFED37663824812E464677ECBC60F00D6BA06E83D103628D6EC2362E7C77BB28F447B90F2158E97E92B5A5B6DE66B617C7764A0E3152F2535CCA7B9642215148ED17591AFCEC9AFA0F27C00AC1CF4FBE40B21BD391737ACDAD73E899D54006384B68F1CFAAFAC09E6E615413A5F3180CFDADB0CBC12E949DE49EDC8201233D8562014A14186761DA0946848149DC6155BDE1AD9BC0B618531956B9011C57B11E4EC4CE70059102A59766DE0BE098E946C30A2C0161727E1B000EB76365487803B02F04598BF26867212797A9F14767A75D2DAD417E7865F1BF71C364F48A2A3DA958B664B0E86DFA28FD847CA514B42D33AC5F38E12892E36457981CE2DFFBC0029563DED5B3ECB195F5A53D0AD175BE1767972FAFC15642735310C0B17F4E841C175F1C7EEFD457749AB5EF13A5D9D8FEAFF68C2746439FF46C68EFEEF51F5C13F768F82FD7DD4239E07350EF9FAFA26558249BAAAC326BC8E6C1D78C323BFB60B90F5421266603E7CDA56C851E13438DF59FA93CEA73461882F93FD775AF0BC984A20D5D5BF1F545A3301B4DB5D855A49E225930A892ECA05DAED5AC25ED39D4CC4702480945458F63DB3B7D3092ECB28A6009CE23E7CB479C921C00026575BB5C8966D2C6A0EC4D8ED14AC0FCB2A5A41E21514656E058D534B721F1FB9C2AFAE8FC028A1AB772922265B074A71EF281EC3B3AE103F751A2993BAFFAFD2A582360AA12569F0ED67F720D7AEE7FE6601A7726EA20B6EACA1CDA2D0B307D65A8F1BD5986A118667E3A9A3B3078859DFD0D3EF77E2DB076802D60FDD35C5E17A4726280EAE94331AAC5DEE842C15115F8C8094C1C78F8473BC1A224ED61711225C5BC1482B3170CB5220F2D2633AD1C0BFABFE688E88F5DDFA70E2D7F2416A66FDDF4A05FCBA462438268970B151A31B2BD5F8F44AFD460F577405BE5FDFF0C3AFD3CFEA7229174E7997A163B8E7DB6CEDBD93313D9228509E5EA23885C8B9E146628610FC0BF451DFFDD311F339B6214B479C72CAEEC2FFB6EC8574A92BF646507790036C0997F1D7263C4787EB3E48886670257B2F873DEED50A2CA63DF63D61840368FFED7E84340C79C01C1B94754F0C3DB1FDF743A57F96E809665FD3A3CE79FA618E917FF304E3CE924A52EB94FB160DD8BBC72DF0BDD8197A501A8379E78E8A44C52682DB94DDEF93305B6AF824167AB9BC50B76C1B24CD0D6DB386265A43CA56A1520A6835C2A17FC74DAD2D0B4DB3E8C88A1F4F20C3F8C09EBEEBF360F0A73BB70B0F345342F1ACF167A9CAD52FE2F3C02A4B2B0185AD0F009CDECB96E1EF127950A83B72589B4DC82422611FFEDE3709DB78503D42A971B6BCA69BE51ECF38CA73A90D9B14CDBA7798464E597A2547760D896F464E249EA4EF7A8C178DEB26A67F85EDB46C2C37307D153DE91E285BAF7B3B6A7CF26B7BEB7654B5937EAEA132804858437B9ECBD7ED5A95AF9CEC0CD3885288E331D79BBEA9CB72911C785844A8B002C78A03018A8C3A3F0F2F7DEC0D08D4E91C3E32721F67087EEEE0254CE28DF7F0A89365DBB9C8AC07297729B9EFBD523C5D4AE4C9727B6B2F03D08A6F84ED6741C090B2D37A6C1CB4D106C3745CDEFB008E422DFBF122264084A0DD8EBB362AAD4103F19377F9F86A404977426EDAE0044B8A32EC48C1F22877F58B352DBB3616622A079ABEDBD3632CD27EC2576A9B627356D3976475521C102526339FC2FAE2E11936AAB9B7777DF6CB98C91494B891F73EC02623FA09AE1381DE5971DB21B8673C2E410A5A65AA922F5177CA1C9CDF89BABD667871950CC02B72F67838581E574F427ECF2C78EC4A572F1780F9CE04BD9A98488FB65736EC5A9044A7DA3BC18487B3D39EEDEED56961C92F585BD124C55001B6D08E20FF99042CE16B09B42E7751BC9271CEF15F2EC77E4572AB67F5E076C2EA6BEDF9F428A64229B203D5D1A835520485EE4F893A18809F766B0B01D32CD670970097857C8C6EA891FAFD030AB9E2088D1BB7E5B01EED889B5F7B951AB0D1935B6C3D7233EB66441AE190E44870641E8D49245395693A307B912D844AAC60AD903F32F28506D0644844132B4CA891483CC3D40D8E06B6C965DD66F6FFF1C114620950D54CFB310D3C7D6DD330230D6F3896B4A690EE040162E5447543FB359C3A893DEF898D294BD6AF8A621375EFB3BDDE6B75B5842C940EF24BC06A352275BAA83577DC8A4792FA25A3E55389EE305D03AD64E20D9A9F5A2F4D23ED0E684BA62FAB98F33C53BCC5D16077DCB980347A62C59582726C34CEC74FB41C383F58D8BD5845A2492D17C457164BF9AB6F18AA92A7AF074AC55EB67D8298A27AEDB48602A0D773D9ECC9320A888AAD669275D9D6CA613FD9B5E17337873CC42EE7681B209C20E97B0506662B6F302657AC80E30343FAA85E528EB868008500DB3A2AD171E04419B4B1B8FE532C66A0003D66FFE1A60E0EBC63ABE06C8403471577516EBC67412CF4D36719B5D4BCF88138561EDC3EAF8E14FBA630C85085D213419C9125198AFA73FCDD27A7B6A3D0E4674F0139E395C474762831B0FFD298CCC10AFC28CC91C2AA2CF2671930B3628AA6312490BF92B5F26448DCC2BCF6872E44950CFFBEF183F52364CFC469AF797EF62E769A8BFF64611F7D0C9C62FC56F40541F4E8DFAF7236E8016498AC2DC8DD788A8940A199A5CAECDFC37E4A45996E18987CCD1F4A4243DAFB042ABD94D3F63098D6F4F0891579937195B171F7FF45DC470BE3F0E9C0AA28ACC9608D8BB58BE7EAF03D5052EDBA8EF9B48C62B12A2C8AE9681312B4099ED99D8BF7301CE959144CB3B56938FBCA9134C2ECDFBE7FEDEAB8A8E3B7D0724B089BFAE411E3FDAE24595D7511B380DE65D4442E3D78DF7216CB930F008DC42430F9666129E83E87DD60F18899C2EDBA828C5E6FA2780CD45B69290A1117C6B62048ADE20004FB89878F6AB6C2AA9D9E44948F2B4CD595220FF6E20663A55B5A8DEB88847878C7D9337C0EEDEAB9EF5851DB34A3A79448797B26A6492A826328B2DD702A835BA24DEF47913CBEBA715C5AF2129B6A7D7C2C1734A496BC55580E967883532761834E5F065C0A87F9BBF851F03ACB6504A49FF178594E93AE3BD49CE194CBA3F9E10DD32E0E4B5503D657271EF4535DCA899E6FDBDFB4E6EE841D96A4C59281896B7E4DAA9D848B8AFF7ED72DC6D1F3C74E1522B010D58B62B19529837115C691A4B4FFA64490B16AA7CF2CE72622E088D547437F2EE2E7B367CF9D9DC32E06D82EBDC12857DB8B543DC2E264CF34A7501BA36AE3C6DB051CAED96400A42D913202EB9966AD975778EE4FC8681B63901106D36D931E6D8CA245D9E3BB11C6BF90913184DF28CDD9002079A7201418A58D93C815741545A2CA54ABA090A77013AD794F9EFE112601A53570B7375F3743D9C936BDCAC6B65C4DFA70262100733D9F9068704A5C74435E111BAD983C630F4B1B7A3EB158D13361A23CD2B9925DA5D16FAC7DD3B26DDFCA44112C76E5C3479E4DF97FBC9616A5E09820EAB6ED155CBEEC29C031B2D0D570FDE92B37474AAB7C11DEE88F5886AF765A3B3FC22CAD884F05DE43BC0A7A3D09A114BE5F0A939A6656F35A00751117909E893B0556C3A58E446A383158C026897AD77D26E43589EB2F37B0353AE264F0F64BBB7F3D60EF82F6B2DC27BD3F37F2053C26B2A2DD65AE32553229CC08230F3C4A1C61B78915203D30F6A35E54ECAD9927321C99D9F100FDD923A816F40B893AE49F23D473E42FD4E05AC3D3359BC1D18FB3BDF17511C004CC514DA3EC696D4301681295012C9AA311F01D8057C53949C0A4C11F546715DC4153E4E00A24C44A93E1B14CC2CDD0AFAAAEA67200277BFE68778698323EB5091AEE49670F16ADC4B46415928BE045B897118ECFF321A669C8BF4DC88A801C623D1B9075600F67342404A3883F1329789AC864B4F063ACB585F78A321068794326FC04B321C1338DBADF919B524D9604DC513AA7BB3B70B966341FAF602E68452B3F16EFF0BCB22B30023AE37882488C33B14BD755868234C3C03870540A944700A7BCD943A29ABE79720EDA0AD6897305AC4A3245BED7B88916BCA65DD8DBD7C5414275B6B04F4C1FED661048C4FC142F480904D148542E50559CF2ABDC6FF4499A5601DC1FF39E5FCC843D4E478462087B64BDEE8595AA50FAA07FCA2A9FE32C61522A8E814B3D93022E409D40C3DA99F66C4C898F5699FFA4CB2B56D14CC3467CF9CB977C5173252B17739502416294DA37F944A929CD4D79D37468CEF60740B733762F2EF0860100FFFFFEFFFCFF0000FBFFFEFF0100FDFF0100010000000000FEFF00000300FDFFFDFF0200FEFFFFFF010000000400FFFFFEFF000000000000020001000500020002000300010002000100FEFF03000400030001000100FFFF020001000100FEFFFEFFFDFF01000100FDFFF9FF0500FFFFFFFF000000000000000004000100FDFFFCFFFFFFFDFF03000000FEFFFFFFFFFFFDFF0100FEFFFFFFFFFF02000100FEFFFDFF0100000004000200FFFFFFFFFFFFFEFFFEFFFEFFFEFF02000400040000000100FCFF0300FEFF00000100FEFF03000500FEFFFEFFFFFF02000100FFFFFFFFFFFFFEFFFCFF01000100FFFF0400FEFF0100000001000300FEFF0000FFFF0100FEFFFFFFFEFFFFFF0000FFFF0200FEFF0100FDFFFEFF000002000000FFFFFDFF0000FDFF0200010001000000FEFF0600FEFF01000200FEFF0100FFFFFFFF0000FEFF030004000000FDFFFDFF03000500FCFF0200FFFF0200000003000100FEFFFDFF000002000100FFFFFAFFFFFF01000000FCFFFEFFFEFF0200FCFF000004000000040004000300FFFFFCFF0400010001000200000002000200FEFF01000200000000000100000002000100030001000100FFFFFCFF020000000000FFFF08000000FFFFFEFF0100FFFF0000FEFF0200000002000100FFFF0600FCFFFEFFFEFF0200020007000100000001000100F9FF01000300FCFF0000FFFF01000400FFFF0200FFFF0200000005000200FAFF020000000000020002000000FFFFFFFFFFFF0200FEFF010001000200FFFF02000100FCFFFEFF03000600FFFF0000FCFF0000FEFF01000300FEFF0100FEFF00000200FEFF03000100040003000000FFFFFFFF000003000200FFFFFFFF00000000030002000100FFFF0000FEFF020002000100FEFFFDFF01000200FFFFFEFF0100030002000100FEFFFEFF0200FEFF0100FDFFFEFF01000100FCFFFEFFFEFF0100FFFF000001000000000001000000FBFFFFFF040002000200000000000000FEFFFFFFFDFF0300FDFF00000100FBFF00000000FFFF030002000200FDFF0100FCFF020001000000FDFFFFFF020000000000FEFFFEFF000001000200FEFF010004000300010002000000020000000100FDFFFFFFFFFFFBFF030000000200010001000000000000000100030000000000FFFF02000300FDFF0100FEFF0500FFFFFEFFFFFFFBFFFFFF000001000400FCFF0000FFFF0100FDFFFCFF0200FDFFFFFFFFFF0000FEFF0500FBFF0600000003000200FFFFFDFFFEFFFEFF0000FDFFFFFF0400FFFF0000FDFFFEFFFDFFFFFF03000200FFFF01000300FFFFF9FF00000200000001000000FFFFFFFF03000500FBFFFEFF0100000001000200FCFF0400FFFF0100FFFF02000200FEFFFFFF0100010003000000FFFFFAFF0200FEFF0100040002000300FFFFFEFF0500FEFF0200FDFF01000200FFFFFCFF0200FFFF0000FEFF020002000000FDFFFFFFFFFF00000300FFFF05000200FEFF0400FEFF0000FFFF00000200FFFF0000FEFF000002000200FFFF0100FFFF0400030001000200FFFFFDFF0200FFFF02000000FFFFFFFF0200FEFF020002000100000002000000020001000100FFFF0000FDFF010000000200FEFF0100FEFF0300FFFFFFFF01000000FDFF0100FCFF03000300FFFFFFFF000002000000FFFF030000000000FEFFFFFF01000200030001000000FFFFFDFF02000200FEFFFFFF01000300FFFFFFFF03000200000003000200FCFFFCFF0300FEFFFCFF0000FFFFFFFFFFFF0200FFFFFEFFFEFF00000100FEFF0400000002000300050005000300FFFF0300FDFF0100FFFFFFFF0000020001000300FEFF0400FFFF0000FFFF0200000002000100FEFF0300020002000100FDFFFDFFFEFF01000200FEFF02000000FCFFFDFF05000600000000000200FBFFFEFF00000000000002000200FCFF02000300030004000200FDFFFFFF0000FCFF0100FCFF040005000100FFFF02000100FCFF04000100010005000300FCFF0200FFFF02000000FEFFFEFF03000200010001000000FFFFFFFF0100FFFFFCFF050000000000000003000000FEFFFAFF04000000020005000100FDFFFDFFFEFF0000FBFFFEFFFEFF0200050002000000FEFF0100FEFFFCFF020002000300000003000300FCFF0000FCFFFEFF02000400010001000200FEFF02000200040002000000FCFFFEFF02000100FCFFFFFF00000100FCFFFFFF01000200FCFF01000600FEFF04000600010001000000FDFF0100FCFFFEFF04000100FFFF0200FEFFFEFFFCFFFFFF00000300FFFF00000000020002000200FFFF00000000FEFFFFFFFDFFFDFF0100FEFF0000FDFF0000010000000100FFFF04000300FDFF03000200FEFFFDFF0200FDFFFFFF040004000000040000000100FEFF0000FFFF030004000000010000000200FFFFFEFF0300FDFF0200FDFFFFFF000002000100FDFF0100FDFF02000100FFFF00000100FEFF0000FDFF0000FDFF0300FBFF0200FDFFFFFF0200FFFF020003000000FFFFFEFFFFFF000005000400010003000200040001000000FEFF0100FFFF01000500FDFF01000100FDFF00000300FEFF0300FFFF0400FEFFFCFF04000000020001000100FFFF0000FCFFFFFF0400FAFF0200FEFF0100FEFF06000200FEFFFEFF0200000001000100FBFFFEFF03000000FFFFFFFF0400050000000400FCFF00000000FCFF0300040002000000FEFF01000100FEFF040000000500FFFFFEFFFEFF0100FFFFFFFFFAFF0200FFFFFEFF0300FEFF000004000200FEFFFEFFFBFF000002000000FBFFFDFF0200FFFFFEFFFEFF0200FFFF01000200FDFF0100FEFFFEFFFFFF000000000300FCFFFEFFFFFFFFFF05000000FFFF0000FBFFFFFF02000200FEFF02000200FFFF0300FFFF020003000500FEFFFFFF02000200FFFFFFFF00000000FFFFFFFFFFFFFEFFFDFF000002000000FEFFFFFFFEFF0100010002000100FFFFFCFFFEFFFFFF010005000100050002000000010000000100FDFFFFFFFDFF0400FEFF0000FEFFFDFFFDFFFFFF0000FFFF0100FDFFFFFF000002000200030000000300FFFFFFFF00000600FDFF0600FFFF0000000003000100060001000300FFFF0100FDFF0100FEFF0400FFFF010002000000FCFF00000100FAFF00000000FDFFFFFF0300FDFFFFFF0000020001000200010000000400FFFF02000100FFFFFFFFFFFF01000000010001000100FDFFFFFFFEFF0300FCFF060002000100FDFF0000010000000500050000000100FFFFFFFF01000300FFFFFFFF0600FFFFFDFF0000FFFFFCFFFFFF000002000400FDFFFFFFFDFFFFFFFFFF0100FFFFFFFF0000FEFF0000000003000100FFFFFDFFFDFF01000200FEFFFAFFFEFF0300010001000100FBFF0100FFFFFFFFFDFF0000FFFF0400FEFFFEFF0100FFFF01000000010003000000FDFF02000100010000000000FEFF0400FAFF0000FDFF00000300FCFF0100FEFFFFFFFFFF00000100000002000300FFFFFFFF0200FFFF01000300FFFFFDFFFFFF0100FEFF0100FCFFFFFFFFFFFCFFFCFFFAFF0100FFFFFDFF0100FEFF0000FDFFFFFF0000000002000100FEFFFEFFFDFFF9FF01000400FFFF0000FFFF0300FBFF01000200FCFF0200FCFF0100020003000000FDFFFCFF04000100FEFF000000000000010001000100FFFFFFFFFEFF02000100020000000000FEFFFEFFFFFF0300FCFF02000200010000000200030001000200010001000400000001000100FDFF000002000100FFFF01000200FCFFFCFFFCFF0000010003000200FFFF000001000000FFFF0300FDFF000000000300FFFFFFFFFFFFFDFFFFFFFFFF0000FDFF010002000400FFFFFFFF01000100FEFFFDFFFEFF0200FDFFFEFF02000100FEFF0100FFFFFFFFFFFF0000FCFF04000000000000000000FFFF0200010004000200FEFFFEFF0000000002000200020001000400FEFF010000000100FEFFFDFF03000000FDFF0200FFFFFAFF00000100FDFFFFFFFEFFFDFFFFFFFDFFFEFF0100FFFF03000100050003000400FEFF0000030004000200FEFFFFFF0100FDFF020002000400FFFFFFFFFFFF050004000300FFFF0100FEFF010002000300FEFFFDFF010002000200FEFFFFFF0000050000000000FFFF0000FFFF01000000FBFF02000200FEFF0200020000000400FCFF04000400FDFF0200FEFF04000000FFFF0100FEFFFFFF0400FDFFFEFFFFFFFFFFFFFFFEFF00000100FEFF040000000400000000000200FDFFFFFFFEFF010001000000FFFF0000FFFFFEFFFFFF02000200000002000200FFFFFEFF0200FEFFFEFFFFFF03000400030001000300FEFFFAFF02000100FDFF0100FEFF0100FFFF05000100FDFFFDFF02000200000002000500FEFF0100FCFF03000200FDFF0200020004000100010001000000FFFFFFFFFEFF0000FDFF0200020003000200FFFF020000000200000001000100020001000200FCFFFEFF010002000100FFFFFCFF03000000FDFFFFFFFFFFFFFFFFFF02000100FBFF0000FFFF03000100010004000300FEFF020003000200030005000000FEFF0000FEFF01000200FEFF0000FEFFFCFF0500F9FF0100FFFF0200FDFF0500FEFF03000000000003000000FCFFFFFF0300030003000300FCFFFFFFFEFF0500FCFF02000000FDFF0100FEFF0400040000000200FFFF0000FFFF010000000000FFFF0200FEFFFFFFFBFF020000000200FFFFFEFFFEFFFBFFFEFF02000000FCFF010002000100FCFF01000200020003000300FFFF0300FFFF0100FDFF0000010000000100FFFFFFFFFCFFFEFFFEFFFEFFFCFFFFFF010000000000FFFF0100FEFF0100FEFFFFFF020001000300FDFFFEFFFFFF0000FFFFFEFFFCFFFDFF01000400FEFF00000400000008000200FEFFFEFF020000000300FAFF02000400FDFFFDFF0200FEFF0200FDFFFFFFFFFFFFFF0100FEFF04000100FDFF0000F9FF0500FEFFFCFF0000020000000100FFFFFEFFFEFF0300FEFFFBFFFDFF02000400FFFFFCFFFFFFFDFFFEFF02000000FEFFFAFFFFFF0400FFFF0200FDFFFEFF0100FFFFFAFF0200030002000400FEFFFEFF0300000002000100FCFF0000FDFFFEFF030000000400FDFF01000000FEFF0000FFFFFDFF0000FBFF030002000000020001000100FEFFFEFFFEFF0100FEFF0300FDFFFFFF01000100FEFFFFFFFFFFFFFFFFFFFEFF0300FFFF040000000000FBFF0100020000000100FEFF000000000000FFFF00000100FFFF01000400020005000000FDFFFFFF03000000FEFF0400FCFFFFFFFDFF0000FDFFFEFF0100FEFF0200FAFF0200FFFFFDFF0000FEFF00000300FFFFFBFF04000300FFFF0200FBFF0000FDFFFDFF040001000100FEFF02000000FCFFFCFF0000FFFFF9FFFFFFFDFFFFFFFFFF0100FBFF0000FDFFFFFF0100FFFF000000000000FEFF000002000100FEFF020003000300FEFFFFFF03000300020001000000FFFF020001000300FCFF000003000100FEFF000002000000FFFFFFFFFFFFFDFF0100010000000200FCFF0300000001000300FFFFFCFFFEFFFFFFFBFF0100FFFF03000200FFFF02000200FBFFFEFFFFFF0100010003000400FBFFFFFF03000000FCFFFFFF010002000100010001000500FFFF01000000FDFF0200FDFF00000100FFFF04000500FFFF0200FBFFFDFF02000100FFFF0000FEFFFFFF020006000100FEFF0300FFFFFFFF0000FEFFFEFFFEFFFDFFFFFF0100FDFFFDFF02000300FFFFFDFFFDFF0200FDFFFFFFFEFFFFFF0200FFFF0100020005000200000000000200FEFF0000FFFFFEFF0100020002000200010000000100FDFF0400FCFF02000300000001000400FFFF0200FFFFFFFFFFFF02000300000000000200FDFFFDFF01000100FEFFFDFFFFFF000003000100FDFF000003000000FFFFFFFFFCFF03000500FFFF0100FDFF0000FEFFFEFF0000FFFFFDFFFFFF01000300020001000100010002000000010001000100040001000200FEFF000002000200FDFFFFFF000000000100030001000100FFFFFFFFF8FF04000200020000000000FFFF0100FDFF0000000000000100FFFF01000000FDFF0100FFFFFEFF00000000FFFFFFFFFDFF0400FEFFFFFF0400FDFF0100000003000100010000000500FEFFFBFF0000020006000000FEFF0000FFFF0000FFFFFFFF050002000300FFFFFDFF00000300FFFFFEFFFFFFFEFF01000200FEFF000003000000FEFFFDFF02000100FFFF00000100FDFF010000000200FEFF0000000005000100010001000100000000000200FBFF0200FFFFFFFF0000040004000000FEFFFEFF020002000600FEFF020001000100FFFF0200FEFF00000000FDFF0300030002000300FBFFFEFF02000100FFFFFEFFFFFFFFFFFFFF01000100010000000400FAFF030000000200000002000300FFFF020003000400FDFF0100FBFFFEFF0000FCFFFCFFFDFFFDFFFDFF0500FFFF0000FEFFFFFFFFFF0100FFFF0000FEFF0200FFFF01000000FFFFFEFF0000FEFFFFFFFFFFFAFF020000000100FEFF0200040000000000FCFFFEFFFFFFFDFFFFFFFFFF0100FEFF0300FFFF0300FEFFFEFF030001000000020002000200FDFFFFFF010000000100000000000000FEFF00000000FFFF030000000000FFFFFFFF0100FEFFFEFF0000FFFF0100000000000100FFFF03000500FFFF0100000000000400030002000500FDFF000007000100FFFF00000000000000000700010000000400FEFFFEFFFEFFFFFFFEFF01000000FFFF01000200000003000000FEFFFEFFFFFFFBFFFDFF0700FFFFFFFF0500FFFFFEFF0300FFFFFEFF0100FEFFFEFF03000000FBFFFEFF03000000FDFFFBFFFFFF02000100000003000100FDFF020001000200050000000000FDFFFEFF01000100010000000100FFFFFDFFFCFFFFFFFDFF01000000FDFF0100FEFF0400FCFF01000200FEFFFEFFFFFFFDFFFFFFFFFFFFFF02000000FEFFFFFFFFFF05000100FDFF0400FDFF0500FDFF0500FCFF04000000FEFFFFFF00000300FCFF02000000FFFF0100FFFFFFFFFFFF03000100FCFFFDFF0000FEFFFFFF03000000030000000300FFFFFFFF04000000FFFF01000000FEFFFEFF0100FFFF01000100FFFF00000200FEFFFDFFFEFF03000100000006000100FEFFFDFFFDFF000000000100FCFF0300020001000200FAFFFEFFFDFFFEFF05000000FFFF010004000400000003000200FDFF0200FCFF01000000010002000200FFFF0300FEFF02000000FEFFFDFF0000FDFF050000000400FFFF0000FFFFFDFF0400FEFF0200FFFF0300010001000000FFFFFFFF04000200020002000000FEFF02000300FCFFF9FFFFFF0100000001000200FFFF01000000FEFFFEFF0000FEFF0000FFFFFCFF03000400FEFFFFFFFDFF0200FEFF0300FCFFFBFF01000100FBFFFEFFFDFF0000000002000700FFFF01000000FFFF0200FFFFFFFFFFFFFEFF0000FDFFFEFF030000000000FEFF0200020001000300FCFFFFFFFEFFFEFF0000FFFF000001000100FDFF0100FDFF0100FFFFFCFF00000100020000000100FDFFFFFF00000000FDFFFFFFFBFF0100FBFF00000000FDFF00000300FFFF03000200040001000200FEFF0000FEFF0200FEFF0000FEFF0100FEFFFFFF0000000002000600FEFFFFFF040003000000030002000100FCFF0400FCFF010002000100FFFF00000100020000000000FFFFFEFFFEFF02000000FFFFFDFF0100FEFFFEFFFFFFFCFFFFFF040002000000020003000300FFFF00000100FCFFFCFF0000FCFF0100FFFF03000100000002000300000000000000FDFF0200FDFFFDFFFEFFFAFF0000020000000100FEFF000000000200FEFF000001000200FDFFFFFF0100FFFFFDFF0400FDFF0200FDFFFDFFFFFF01000200FFFF0100FEFF030002000000FFFFFDFFFDFF0300FFFFFFFF0000FEFFFBFFFBFF0300FFFF020000000200FFFFFFFFFDFF0100FBFFFFFFFFFF03000200FEFF0300FFFFFDFF0100FFFF0000030000000100FDFFFFFF01000000FEFFFEFF0300FAFF00000300FBFF0000FFFFFFFFFEFFFCFFFFFF03000000FEFF0100FDFF0000FCFF0200FCFF03000100000000000100FDFF0000FCFF000003000200000000000000F9FFFCFFFDFF02000200FCFF020000000300FAFF000004000000FFFF01000100FFFFFBFF0000FEFFFDFF0100000001000300FEFFFEFF01000200FFFF0200050004000300050000000100FCFFFFFFFEFFFFFF0200FFFF01000000FCFFFDFFFDFF030000000000FFFF01000100010000000000FDFFFFFFFBFF0000FDFF0100FBFF010000000100FFFF0200FFFF000001000300FEFF00000400FFFF0300020000000100FEFFFCFF010002000200000004000200FEFF0100FDFFFFFF0200020002000100FFFF0300FFFFFEFF0300FDFF0300FFFFFAFF0100FDFFFCFFFDFFFEFFFDFF0400FFFF010001000100FEFFFFFF03000000FFFF07000300FFFF0000010000000200FDFFFBFFFDFF0400080002000200030000000200FEFFFAFF010001000300FFFF01000200FDFFFFFF03000000040002000100FEFF000000000100FCFFFDFF0000FFFF010003000400FFFFFFFFFCFFFDFFFFFF0000FEFFFFFF03000200FFFF0200FFFF0100FDFFFDFF0000000001000100020004000300FDFFFFFFFFFFFCFF00000200FDFFFEFFFFFFFEFF0000FBFF0400FFFFFFFF0200FDFF02000100FDFF0100FDFF040003000000FEFFFBFF0000FEFFFFFFFCFF01000300FFFF020002000100FEFF0000010001000000010003000300FEFF0100040002000100FEFF0200FDFF010004000300FEFFFDFFFFFFFDFFFCFF0000FFFFFFFF0200F8FF0100FDFFFFFF0000FEFF01000100FCFF0100FDFF040002000000030004000200FFFF05000000FDFFFFFF030003000100FDFF020001000100FDFF0200FFFF020001000600FEFF0200020005000000FDFF00000200FFFF0300040002000100FEFF0000FFFF020000000200050002000200FDFF0400FCFF0100FDFFFEFFFDFF020003000000FDFFFFFFFEFF0400FFFF01000200FFFF03000200FFFFFFFF0200FFFF0000020003000200FEFF010003000200FDFFFFFFFEFF0300FDFF03000300FFFFFAFFFEFF02000100FFFF0100000000000200FDFF0100010000000100FDFF0000FCFF0000FFFFFBFFFBFFFFFFFDFF0100FEFF00000000FFFF0200FDFF01000500FFFF0300FEFF0200FEFF0200FFFFFEFFFFFFFFFFFEFF0100FFFF0200FDFF0000FEFFFEFF01000400FDFF01000000FFFFFCFF01000100FDFF0200FFFFFDFFFBFFFEFF0200FEFFFEFF0100FEFFFEFFFCFF03000200FBFF0100FCFFFFFF0300FCFF02000400FFFFFEFF01000200000002000000FCFF0500020001000300FEFF010002000100FFFF020002000000FDFFFFFFFDFFFFFFFEFF0100FFFF0100FFFFFAFFFDFF00000300FEFF0000FFFF020001000200FFFF01000000000000000300FEFFFFFF000001000200010004000200FEFFFFFFFFFF03000300FFFF0200FDFF01000200FCFF03000100FAFFFEFF010000000200FEFF0000FFFF0000010004000200FDFFFEFF05000300010000000300FEFF010002000400020000000000FDFF03000000FCFF020002000000FEFF000003000000010002000200FEFF0400FFFFFDFFFFFFFEFF0100040003000300FEFF0100FDFF0000FFFF0000020002000500030001000000FBFFFAFF0100FEFF01000200FEFF0000FEFF0100FFFF0000FFFF030002000200FFFFFEFF010006000100FDFF01000000FCFFFFFFFEFF04000200020000000200FEFF0000FCFF00000400FFFF03000000FDFF02000200FFFF0100040005000100020001000000FCFF0000FFFF0100FCFF02000100FFFFFEFFFDFF0000030000000200FFFF04000100000002000000FFFF0000FEFFFBFFFFFFFFFFFEFF0000FEFFFAFF0100FEFF0000FFFF00000000FEFFFFFFFFFFFDFF020003000000FEFF01000200FDFF0100020001000300FBFF0300FFFF030000000100FFFFFEFFFFFF03000300000006000100010000000000020000000000FDFFFCFFFCFF030000000100FDFFFEFFFBFFFFFF00000100FCFF00000200FDFFFFFF00000000FDFF00000000FCFFFEFF00000000FFFF010001000100FEFFFFFFFEFF00000400050001000300FEFFFFFF0500FFFFFCFF0300000005000000FFFF0000FEFF0300FFFF0400FEFF0300020000000300FDFF0400000005000000FEFF0000FDFFFEFFFFFF0200FDFF0400FEFF0000FEFFFFFF0300FFFFFEFF0200FFFF01000100FEFF0200FEFFFCFF01000200FFFF0300000003000100FDFF0000FFFFFCFF0200FCFFFFFFFFFFFDFFFFFF00000300FFFFFDFFFFFF000003000300040001000000FEFFFDFF0300FEFF0000020003000000FFFFFCFF00000100000001000200FFFF0200FCFFFDFF0000FBFFFDFF0200FEFF0200FFFF000001000200060005000300FDFF0000030000000000FFFF0300FEFF01000300FCFF0000FBFF0600FCFFFFFFFEFFFFFFFFFFFFFF02000000FFFFFDFF0600FEFF01000200FDFF03000300FFFF0100020001000100000001000100FFFFFFFF01000400FFFF0000000000000000FEFFFFFFFFFF0000FEFFFFFF010002000000FAFF01000200FCFF0200FFFF0000FFFF030001000000FFFF0000FDFF0200FFFFFFFF020000000100FEFF0400FEFF00000100FEFFFDFF01000300FEFFFDFFFEFF01000300FEFF0000FCFF0200FEFF00000300FFFF02000000FDFFFEFF05000300FFFF0300FCFF020000000200060007000100FEFF0000FFFF0000FFFFFFFFFEFFFBFF02000200FEFF01000100000002000000FAFFFFFFFDFFFEFF0000000003000000FFFF020000000000FBFF0300FEFF020003000000FFFFFFFFFEFFFEFF0400FFFFFCFFFEFFFFFF00000200040001000100FEFF0400020000000200030004000000020000000200FDFFFFFFFEFF0000FCFF0300FFFFFDFF02000100FFFF00000200030000000200FDFF000002000000FFFF0100030002000600FEFFFDFFFEFFFCFFFEFFFEFF0000FEFF020000000100020003000600010000000100FFFF0000FDFFFFFFFDFF00000000FEFFFBFFFEFF020005000200FFFF00000500000000000100FDFF0000F9FF010000000000FFFF01000200FEFF0000030001000000FFFFFBFFFEFF0100FFFFFEFF0300000004000300FEFFFFFFFDFF0000FDFFFFFF020001000500FEFFFFFF01000000FFFF010002000100FFFF0100FFFF0400FDFF00000200FEFF02000200000002000100FCFF000002000000FCFFFFFFFFFFFFFFFFFFFEFF01000400FFFFFAFFFDFFFFFF0300FDFF0000010003000400FCFFFEFF0000FBFFFFFF0100FEFF0000FEFFFEFF0300FBFF0000FFFF000003000100FDFF030000000200020002000000FFFFFEFFFDFFFFFF01000000020000000100FDFF0200FEFF0000FEFF0100FFFF000002000000FFFF0100FFFF00000100FEFF0000000000000000FEFF0000000002000100FFFFFEFF00000000FFFF04000100FFFF00000000FFFF0000FFFF04000000FDFF00000600FCFFFDFF0100FFFF00000000FFFFFDFF00000200FCFF040008000000FEFF04000300FDFFFEFF02000300010006000100FEFF01000100FFFF040000000000FFFFFCFF020001000100FFFF0500FEFFFEFF0000000001000400FEFF000001000400FFFF000001000000FDFFFFFF000004000300FFFFFDFF0100FEFF0200FFFF0300FFFF0100FFFFFFFF0000FFFF0400FFFFFEFFFCFFFEFFFFFFFEFF0500FDFFFFFF04000400030003000400020001000100FEFFFCFF00000100FEFF0300FFFFFFFFFFFF0100FEFF0100FCFF0200FFFFF9FFFDFFFDFF03000100FEFF03000000010000000200000000000000FFFFFFFFFCFF0000FFFFFBFF000001000100FFFFFEFF010001000200FEFFFEFFFBFF0300FDFF0100FEFFFDFFFFFF02000400FEFFFFFF0300FEFF0000FFFF000001000100FEFF06000200FBFFFDFFFDFF02000200FCFF0000FEFF03000000FFFF0600FEFFFBFFFEFF02000300FDFFFCFF0200010001000100FDFF0400FAFFFEFFFDFFFDFF02000200010000000100FDFF01000200FEFF01000200FFFFFDFFFEFF000004000100FCFF0100010001000100FFFF0100FDFFFDFF0100FCFFFFFFFEFF0000FDFF01000100FEFFFEFFFEFFFFFF05000500FFFFFFFF0200FFFFFEFF000001000000010000000300020000000200FDFFFEFFFCFF0100FEFF010004000200FCFF0200FEFF010001000500FEFF00000200FFFFFCFF0200FEFF000000000100010001000200FDFF0500FDFF010000000000010003000000010004000100FEFF02000000FEFFFFFF00000200FFFFFEFF0100FFFF0000FAFFFCFF02000300FFFFFFFF000003000200FBFF0000FCFFFEFFFFFFFCFFFEFFFFFFFFFF0000030001000000FDFF00000100FDFFFEFF010004000200FFFF01000100FEFF03000100040001000000020001000200FFFF0100FFFF0100000002000000000003000300FDFFFDFF0100F9FFFCFF020002000000FEFF0000FDFF0300FBFF0100020003000000FDFFF9FF01000200030002000100FDFF0200FFFF020000000100FDFFFFFFFEFFFCFF02000000FEFFFEFFFEFF02000500FDFFFCFFFDFF0100FFFF0000030002000100FEFF020000000100FFFF030002000000FFFF010003000000FFFF0000FFFF0100FEFF02000100FFFF0100FFFF000000000000FFFF0000FAFF0200FFFFFEFFFEFF02000100FDFF03000200030001000400FEFFFDFF04000100FDFFFEFF01000100030000000700FCFFFFFF0300020000000100030003000300FEFFFEFF01000100FCFF02000000FDFF00000000FEFFFFFF030004000100FCFF0100FBFF030000000100FEFFFCFF000000000000FFFFFEFF030000000000FFFF010003000200FFFF00000000FEFF000001000000FEFF000000000000FCFFFEFF0100FFFF0000040000000300FEFFFDFFFEFFFFFF0500FEFF00000300FDFF0100FFFF0100FFFF0100050001000000FFFF0100FDFF0100FDFF030003000100FFFF01000000000001000100FFFF0000010003000200FFFFFFFFFDFF01000400FDFF00000100FFFFFDFFFFFFFFFF02000100FFFFFDFF0000FBFFFEFFFEFFFEFF0000FFFF0700020000000300FEFFFFFF020002000100010001000500FDFFFFFF010002000200FEFFFCFF0300FBFF0000FFFF0000FFFF02000000FBFFFDFFFFFFFEFFFFFFFFFF0200FFFFFFFF0800000000000100FEFFFAFF04000500FFFF0000FEFFFBFF00000300040001000100FFFF02000200010000000000010002000100FFFF000000000200FFFFFEFF0200FEFF0400FCFFFFFF020005000200FCFFFFFFFEFFFFFFFCFF00000200FEFF00000200010001000300F8FF000001000000FCFFFFFF0100FEFF00000000050000000400FDFF000001000100010002000500020003000300FBFF0000FFFFFAFF0000FCFFFDFF0100FCFF0000FEFF00000400FFFF0200FEFF0200FEFF0000FEFF000002000100FCFFFEFF050000000000020001000000FEFFFEFF01000500FEFF0400FBFFFFFF0200FFFF0000FFFF0100FFFF01000000FFFFFEFF02000200FFFF01000000FBFFFFFF02000200FDFF0500FDFF000000000000000000000000FEFF0000FDFFFFFF0000FEFFFEFF0000030000000200FFFFFFFFFDFFFEFF0200020000000300FBFF00000200010000000200000000000000010005000200FFFFFEFF01000000FFFFFDFF02000500FEFF010001000300FAFFFEFFFFFFFFFFFDFF01000100FFFF02000200FDFF01000100FFFF0200FFFF010001000100FDFF03000100FFFFFFFF0100030000000300FFFF0000FEFF0200FEFFFDFFFCFF0000FEFF0300FCFF0400010000000000FCFF01000100FFFFFFFFFCFF03000100FEFF02000200010002000000FDFFFDFF000000000200FFFFFEFF0000FEFF00000100010002000000010004000000040003000300FFFFFEFF0200FFFF0000FFFFFEFF0400FFFF0000FFFF01000400FFFF0000FDFFFFFFFEFFFEFF00000200FDFF0200000001000000FCFFFFFFFFFF01000200FAFFFEFF03000200FBFF0100000001000000FEFFFFFF0000FFFFFEFFFFFF0000FFFFFDFFFEFF050000000000000003000400FDFF040001000100FFFF02000100000001000200FDFFFEFF0100FCFF0200020001000000010003000100FFFFFFFF02000300FEFFFEFFFCFFFCFFFFFF0000010001000000FDFFFEFF0000FEFFFBFF0000FCFFFDFF03000300FBFFFFFF00000200FEFF0000050001000300040004000000FEFFFDFFFEFFFEFF0200FFFF0100FBFFFDFFFBFFFEFF000003000100FFFF0300FDFF01000400FCFF020004000400FEFF0300FFFF0000FDFF0400FEFF03000100FFFF0000FFFFFFFF02000000FCFFFAFF0300020002000200030001000000FFFFFDFF010002000100FDFFFCFF0100010001000200FDFF04000100FFFF0100FFFF0600020001000100FEFF0000FEFF04000000FEFF00000000FDFF0100FFFFFFFF0000FDFF01000100010001000200FDFFFEFF0500FDFFFBFFFDFF0100FDFF0000010004000100FFFF0100000000000100FEFFFDFF00000100FDFF0100FFFFFEFF0100FDFF0200FFFFFEFF0100FBFF0200FEFF0000FFFFFBFFFFFF0000010000000300FEFFFDFF02000100FCFFFEFFFFFFFDFF00000300020001000100FFFF0000FDFFFEFFFFFF0100FFFFFEFFFEFF010000000400FFFFFAFFFEFFFDFF0000FFFFFFFFFAFF0500FDFF0100FCFFFFFFFEFF0200FDFF05000300010003000000FEFF00000000FBFFFFFF0400FEFFFFFFFEFFFFFFFFFF030004000200FBFFFEFFFEFFFEFFFEFFFEFF010005000000FEFFFFFF0500FFFF02000000010002000100FFFF00000000FDFF0100FAFF000002000000FEFF0200FEFFFFFFFEFFFDFFFFFFFCFF020005000400FDFFFFFF0400FFFFFDFF0300030000000200FCFFFDFF000000000200FEFFFCFF00000100020001000100FFFF0100010001000100FFFFFFFF02000000FFFFFFFF0000000000000200FDFFFBFF01000300FFFFFCFFFBFFFFFF0100FDFFFDFF020001000200FCFF0400FFFF03000000FEFF0000FDFF0400FFFF000002000000FFFF0100FFFF00000200FFFF0000FEFFFFFFFCFF020000000000FEFF0200FFFFFFFFFEFF0000FEFF0100FEFF0000FCFF0200010000000100FFFFFFFF020000000300FFFF0400FEFFFCFF000000000200FFFF0100FEFF030000000000FFFF00000000FFFF0100FEFFF9FF0200030004000300FFFF0000FFFF0100070003000300FDFFFEFF02000000FFFF01000100030002000100FCFF0100FDFF0100FFFFFEFFFEFF0200FDFFFFFF0000030001000300FFFF02000000FEFFFDFF05000100000001000100FFFFFFFFFEFF000000000200FBFFFAFFFFFFFEFF0300FDFFFFFF03000100FCFFFFFF030000000100FFFF0200FCFF0200010002000000FCFF01000200FEFFFEFFFEFFFEFF0300FAFF0000FFFFFDFFFEFFFEFFFDFF0400FDFFFFFF0400FFFFFFFFFEFF0300FFFFFEFF0300FFFFFCFF01000400FEFF010002000100040003000200FEFFFDFF01000100FFFF00000100010000000000FFFF0300FEFF02000000FCFF0400FFFF0100FDFFFFFF04000200FFFF0200FFFF00000000FDFF05000100FCFF00000000FFFFFEFF04000100FEFF0100FFFFFDFF0200FFFF06000200FFFF03000000FDFF0200010002000100FFFF0000FEFF000000000200FFFF00000100FEFF0000FFFF030000000000FDFF030000000100FFFFFEFF0100FFFF0000010001000100040001000200030001000000FFFFFFFFFEFFFDFF02000000FEFF040000000200FDFF020000000100FFFF0100FFFFFCFF02000000FFFFFDFFFEFF0100FDFF03000200FFFF0000FEFF0000FFFFFEFFFDFF010001000300FEFFFEFFFEFF0400FCFFFFFF02000100FDFFFFFFFDFF0000FEFF010000000200FDFF020001000000FFFFFCFF0300FEFFFFFF0300FDFFFEFF0000FBFF0100040001000400FEFF01000200FCFFFDFF01000400FFFFFCFFFEFF0300FFFFFDFF0200FFFF0100FFFF01000200FEFF0100FEFF00000300FFFF020001000300FDFFFCFFFEFF0000FFFFFFFF0100000000000100FEFF0200FEFFFFFF00000300FDFF0500FFFF0300FFFFFDFF0100FEFF0000FEFF010002000200FFFF01000200FCFFFFFF00000000FEFFFDFFFDFFFDFFFFFF0000FEFF0100FEFF020001000100FBFF010000000200FFFF01000200FBFF0000FCFF00000100FBFFFEFF0400010000000500FBFFFEFFFFFF070001000000FEFF0300FEFF0100FBFFFFFFFFFF0300FEFF030005000000FFFF01000000010001000200030000000400050000000200FCFF0000FEFF0600FFFF0300FFFF00000100000000000200FFFFFDFFFEFFFFFFFEFF050000000000FCFF0000FCFFFEFFFEFF0300FFFF0100020002000100FBFFFEFF000001000500FFFFFDFFFFFF0200000001000000FAFF00000000FFFF0100FDFFFEFF03000500FFFFFDFF050002000400FBFF0600FFFFFEFF00000300FDFFFEFFFFFFFCFFFEFFFCFF0400FCFFFDFF05000300020001000000020003000100FDFFFDFF01000000FFFFFCFFFFFF02000000FEFFFFFF0000FFFF0000FFFFFDFF0000FEFF0200FBFFFEFF010001000100FEFF0100FEFF0000FEFFFEFFFEFF0400FEFFFFFFFEFF02000200FFFF0200FEFF0400FCFFFEFF0000FEFF01000000FFFFFAFF03000200FBFF0500FCFF000000000000FFFFFFFFFFFFFEFF0000FEFF020005000000000002000200FFFF0000FFFFFEFF02000100FDFFFEFFFFFF0100FEFF0400FFFFFFFFFFFF010002000000FCFFFDFFFCFFFEFF010004000200020002000300FCFFFDFFFDFFFDFF02000200030000000000FCFFFEFFFEFFFFFF000003000200FBFF040003000000000000000100010002000000FCFFFEFFFFFFFFFFFFFFFEFF0300FCFFFEFF0000FDFF0100FEFFFDFFFDFF0200FFFF03000000FEFFFFFF020001000200FFFF00000300FDFF010003000000FFFFFCFF0300FDFFFFFF0100020000000000030000000500FEFFFEFF0400FFFFFFFFFDFFFEFF02000100F9FF02000100060001000100FEFF0100FFFF040003000300FDFF0300FFFF0200FCFF0100000001000100040002000100020002000000FDFFFCFF020001000100FFFFFEFF0400FAFF00000100FFFF0300050002000000FFFFFEFF000000000300FDFF03000000FFFF02000300FDFFFFFF040000000100FEFFFFFFFCFFFEFF0100FFFF0100FCFFFCFF020002000000FCFF00000000FFFF000005000200FEFF020000000400010000000000FFFF00000100FFFF0400FDFFFFFFFEFFFDFF01000000FDFF01000100FFFF0100FEFF0200FFFFFDFFFDFFFFFF0100FEFF030000000500FFFFFFFF04000000FFFFFEFF0500FFFFFCFF0400FFFF0000FFFF01000500FFFFFAFF01000100040002000300060001000200FFFF03000300000003000100FFFF050004000100FCFF03000500FCFF0000FFFFFAFF0400FFFF0500010000000000FFFFFFFF030002000200010003000400FFFF0300FDFFFFFF0100FDFF0000FFFF0100FFFF030001000100FEFF010002000000FFFFFCFFFEFF00000100FFFF040004000200FEFF02000200FDFF0000010001000400FFFFFDFFFEFF0600FCFF0300FFFFFFFFFFFF0100FFFFFEFFFFFFFEFF030004000200FFFF00000000FDFF0400FDFF0300FFFF0000000000000100FAFF09000200020001000000FEFF0100060003000500FCFF04000400FDFF0600030002000100FFFFFEFFFFFF01000100FFFFFFFFFCFF0100FEFFFEFFFDFF0100FFFF010004000200010000000100050001000100FEFF01000000FCFFFFFF0200FEFFFCFF05000300010003000000FEFF0300FEFF0000FAFF0000010000000100FEFFFEFF01000400FDFF01000000FEFFFFFFFFFF0100FFFF00000000000001000000FFFF0200FFFFFFFFFFFFFFFF0300FFFF02000200FFFFFFFFFDFFFEFFFFFF0000020000000300020001000100030001000200FEFF0100FCFFFFFFFFFF0100FFFF0200FBFFFEFF000000000200FEFFFFFF0200010000000000FFFF0100030001000200FFFF0000FFFF050005000000FFFFFFFF00000000FDFFFEFFFBFFFFFF0100030003000000FEFFFEFF0000FDFF0100FFFFFFFFFEFFFEFF00000100020001000300020001000200FFFF0300FFFF0200FEFF01000000FDFF03000000FFFF00000100FCFF0100FFFF030005000300FEFFFEFFFCFFFFFF00000300FEFFFDFF0100FEFFFEFF040000000000010002000000FCFFFDFF04000000010000000000040002000000010002000200FEFF0100FEFF0100FDFF0200FEFF01000100FCFFFFFF00000200FEFF0200FDFF0300FFFFFCFFFBFFFDFFFFFF000001000400FEFF020003000000FEFFFFFFFCFF0200000002000200FEFFFFFFFEFF00000000FDFFFFFF0000FEFF01000000FFFFFDFF000000000000FFFFFEFFF9FFFCFFFFFF0000FFFFFCFF0000FFFF01000000FEFF0100FFFFFEFFFFFF01000200000001000000010002000000000003000100FFFF02000200FEFF0100FCFF0300FFFF0000FCFF0200FDFF0300FFFFFFFF01000500FEFF01000000FFFFFFFFFEFFFFFF01000300FEFF0200050001000200FFFFFEFF0100FBFF0200FFFF050003000100FEFFFEFF0100FFFF0000000001000100020000000800FCFF0300040002000500FFFFFFFFFFFFFFFF04000100FDFF030001000200FFFF0500FEFF0100000004000100000000000300020001000000FEFFFDFF00000100FCFFFFFF01000300020003000200FFFF03000200FDFF0000FCFFFDFFFDFFFFFF01000200000001000000FBFF0100FDFF010001000200FFFFFCFFFFFF0300FFFFFDFF00000400FFFFFDFFFEFFFFFF020000000000FEFF0300020002000400FEFF0200FEFF0300FEFFFDFF02000400FFFFFFFF020006000200020000000000FFFF010004000200010000000100FFFFFEFFFFFF0100FEFFFDFF01000100FFFF0300FAFFFFFF030001000000FCFFFFFF01000000FCFFFDFF040001000100FEFFFFFF0300FDFF000000000000FFFF000000000500000001000200FBFF0200FDFF0100000001000000FEFF040001000100FDFF0000FEFF0200FFFFFFFF0100FFFF0000010000000300FFFF0000FFFF02000000FFFF01000200FFFF01000000F9FFFCFFFEFFFEFFFCFF0100FFFFFDFFFFFF030001000100FFFFFAFFFFFF01000100FFFF0100FEFF0100FDFF0300000002000500FEFF0100010003000100FFFF0100FEFFFFFF020004000000FFFF0100FCFF020003000500FDFF01000300F9FF000000000100FFFF000000000500FFFFFFFF030002000000FFFF0000FCFF0100FFFFFFFF03000100FEFF04000200FDFF0500030001000400FDFF02000100030000000200FFFFFAFF0100FCFFFFFFFDFF0200FBFFFFFF04000200010002000100FFFF0100FFFF03000000FFFFFEFF0300000003000100FFFFFEFFFFFF0000FCFFFEFF0100010001000000FEFFFFFF0300FFFFFFFF0200FDFF0100FFFF010002000100FEFF0000FEFF040004000300FFFFFFFF00000400FBFF030002000000010000000100FEFFFDFF0000FFFF060000000300FEFFFFFFFEFF0300FFFF00000100010001000700FEFF0300FDFFFFFF0000FFFF0200FFFFFDFFFDFFFDFF0200FFFF060000000400000001000100FFFFFAFF020000000100FFFF0300FEFF000003000400FDFF01000100FFFFFEFF000003000100000001000000FEFFFFFF0300FFFFFEFF0200FCFF0000FFFFFFFF0100020003000200FDFF0200FEFF01000500FFFF00000100FBFF0200FEFF0200FEFFFEFF0200FEFF0200FEFF0300FFFF0400FEFFFFFFFEFF00000300FEFFFDFFFFFF0400FCFFFEFF01000200FEFFFFFF0300FFFFFEFF01000500FFFF02000200FEFF0000FEFF0500FFFFFFFF010003000400FFFF020000000100010001000400010002000300FFFF0100FFFF0200FFFF00000400010001000200FFFFFBFF0000FEFFFDFF02000100FEFF0000FCFF00000000FDFF000000000300FFFFFFFF01000000FEFF0000FEFFFCFF010000000100FCFF03000100FFFFFDFF03000100FFFFFEFFFEFF02000200FEFFFAFFFEFF02000000FDFF01000100000001000100FCFF000002000100FEFFFEFFFFFF04000100020000000000FEFF0100FDFF01000100FEFF02000100FEFFFFFF0000FFFF0300FBFF0100030002000000FFFFFEFFFDFF0400FEFF0000FFFF030002000600FEFF0700FDFF0000FCFF0000FFFF0200FFFF0200000003000000FDFF0100FCFF0400010000000100FDFF0200FFFF0100FEFFFFFF000000000200FEFF0100FCFFFEFF02000000FFFFFFFFFBFFFEFF01000000020001000300FEFF000003000400FEFF03000100FBFFFBFFFFFF0100FDFF010000000200000000000100000001000200FCFFFBFFFDFF04000200FFFF0300FFFF0200FDFF0200FCFF0100FFFF0000FEFFFFFF020001000000FFFFFFFF020001000000000006000300FFFFFDFFFFFFFCFF010003000000FDFF040000000300FCFFFDFF01000000FBFF01000400FFFFFCFF0000020003000000020001000100000001000200FEFFFAFF01000200FFFFFEFF03000200FDFF02000500010000000300020001000100FDFFFFFF03000000FFFF00000400FEFFFEFFFFFF0000FFFF020000000000FEFF020002000200FFFF02000000020002000000020000000200FFFFFDFFFEFFFBFF0000FCFF01000200FFFF01000300FEFF0100000001000100FDFF05000100FBFFFEFFFDFF0100FEFF01000100040001000300FFFF0200FEFF0000FFFFFFFF05000100FFFF0000FFFFFCFF0100FFFF050002000300FEFF0200FCFF01000400FDFF0000FFFF0000FEFF01000000FEFFFEFFFEFFFBFF010000000000FEFFFFFFFFFFFFFF0000FDFF0100000006000300FEFF0300FDFFFFFFFEFF030002000100010003000200030000000100FDFFFEFF02000300FEFF01000100FFFF0100FFFF0000FFFFFBFFFEFFFEFF0100FDFFFAFF0000FFFF05000000FDFFFDFFFEFF00000100FFFFFEFFFDFF000001000300FFFF01000200010001000100FDFFFFFF03000100010000000400FFFF01000000FFFF00000000FEFF0100030001000000FDFF00000000010004000100FFFFFDFFFEFF0400FFFFFDFF0000FCFFFFFF05000000020001000100000000000000FEFF00000100FEFF010002000200F9FF0400FCFFFCFF0100FDFFFEFFFEFFFFFF0300010001000000FEFF0000FEFF00000200FFFF00000200FEFF0000FCFF00000600FDFF0300FCFF02000000FCFFFFFFFDFFFEFF02000000010000000000000000000200FDFF0200FFFFFFFFFEFF0100FEFF03000400FFFFFEFF0300FDFFFFFFFEFFFDFFFCFFFFFF040001000100FDFF0400040000000100FFFF02000300020001000000FFFF02000300FFFF0300FCFF0100FFFF0500000001000100FEFFFFFF0400FFFFFDFF02000100030001000400FEFFFFFF000003000100FDFF0000FDFF0100FBFF0000FFFFFFFFFEFFFEFFFBFFFCFF0000040003000000FDFFFDFF000002000000FEFF00000100FEFF0200FFFFFEFF0500FEFFFFFFFCFF040002000000030002000100030000000100FEFF0200000004000000FFFFFEFF01000100FDFF01000100FDFFFFFF03000400FEFF0300FEFFFFFF0200FDFF030000000000FDFF0100FCFF020003000000FFFF030006000300FEFF0100FEFF000001000000FBFF0000FEFF040001000200FDFFFFFF00000500FEFFFFFF0100FFFF0000FEFFFFFFFEFFFDFF0200050001000600010000000000000002000100FFFFFFFF000001000100FFFF0300FDFF01000200000001000200FCFF010000000500040001000100FEFF0000FDFFFFFF0300FBFF0100FFFFFFFF020003000200FFFFFFFF020002000300FFFFFFFF040001000700030001000100FFFF0400FFFFFFFFFFFFFBFF0000FDFF0200FEFF0100FDFFFEFFFFFF04000200010001000300FDFF010002000300FEFFFEFFFFFF01000200FFFFFFFFFDFF0000FFFFFFFFFCFF -ct = 3661B128FE70B0D1E2A1280A6C7C6DAC048CB90493F81BB286874E51C6468263BCD3FD4BA3E890F37442541190BFFAA4EBB6165BD3FA810623C8EEC2E317749A6735AE2E9559175F6A188F146FC141AF76EAAE2D98B4F3E05A7DDEA125A92AFCEDBF4EB2470BB5978DA199B43251A917FDEFF2FFB697754E10B790FFD7CE13745ECEC6525745BF201F9379CBE39B58C78AC98ED18B23E12D646147AD4C0D5D7A0CC5FA33C4EF28B88B91C8DC929C639A27C3C8AF4232F01D5B8481E31AFE900361C615FBE8FC72F570E71334F51F568AB97B7AF54B9DBFA70DD5AC97C0506AB9067056EF9A03FF1759CC8FE98BE330B2BD5B134EB5E151967107B883A3BA4588A79A14FEAFAAF881E6EAF109EA00697703D81EA24F06CDFBEE7AB5E4440D8743AF22B2C1BEC0A5BC294FB658B6932A4A00645DB79F26A5275F28F8DFCDBB43F4A8C46E50A6BFB8AA6BE3B7E09768472ACA549D7603FEDD9C126EE39120DFD6B0BA5BAECBBE6F719502C3A29EDE66BA456F9C5A9E0986FB1FD755A15FBCB66705DAFA6A831763F1856DCBB48DD18465BB6D079C8EA1DDF5444F71A16411099F8B5CEDA4DB80F78F86C0B1F8AC95AB8C0A0C3E4707A7E69967656B20485E67D9BF4ED1D9987F7C405AF18A817F8B76989FC200103E3F6CB172B6CB64169AD2E610566528BC2218C8511F2AAB257F5790966592867EE946C77662A09CA1464F050D59F6F91E209F17BE53AF2774CDE152755A78645244B0F537FB65EDA0B7659553C38DF7EC3F6F4ED5F4A9C643A59E925AB565E728E5D0F4A428064882C41A73AC59514A0BBC4BC211E79DEE849BACE4C0A5B2DDD496A53C771BBDC611A87E31B3053C9B31C75C237EE5AFC1F8B2544374417885E1FA745B491D77BF980342612E696089D305DC2F75B53374C8CB3E7C4E9B03A10F9C3A746D584B1D4CC707C92704E0D2D253423F0738DAE2E12216332E0297BAD3A34DB8634D977D0E2462DB6C32309DBBCF35E424D0D1BCA2E5EF3718B85B963B2C9B9F5F10CF0E0419D176590E3DA5F810810F993DDF7776D49121F2AD4DFE33426874315313DB4AC286AB375046042DDF12E979B78A9BB4A070480E67DE3C617D089E1FB9712822085136D967CA4C0E9C8227211BD469956E24EB0AAD05ED952006AC0601E0E301F9A56293AC664786CBA87AF0147F6AE4BA3FAA8830C2C50B5AA12A2B663A4B58A0AC9CD56A2CEDD52BA4EF46F0E63827070564BB212D2FD402DCE501F52AF5E03D0EA347DD87DE8F77494031953570F61FE4C31160EEA7B4D54AC046910DC8127CCE6EBCAB0673D3FD1B05E78F05170CFC906F76634E5AC620A97FF889B802BA64987733B8C6CFC9C10679CE699FCB375AB29A53CA599CF7486818957B8A5AF3754281681AFAB7BF63C431ABA135F42C902B6C7CCE0333E10E3B44757D6F1C01FDF4AC4F77D78BDAC9B9911943D3AF117B5F701EBB3D8C975A5B0ACEDF5AB017D622AD8B2FCC7AD7C7E1AA55946E62307FB7CA97A95FF0946BDC18482088AD6924A96FFA34AC155965EE81E4B21DAA251334E626EE742825CDC740E5BA55389A8497474F5DAE4970D568F019D6FB0CC84D405C48AEB27616B2C481589F8789A6630F541527AADB8A80686A1E9FA6A17213659EEF5485536D9382C8776E7780BE9D0A52428FA9DE481F114AE4892F91110313E227E3B8EEFE9505C2E231D87B81059F7A30B3BCB2BB110529FB76A79468FC955D0BA5FE389D8583B633B9CA8BD5B59512437CC504E68C4EC0DF53273B7769DAADB793DBDFCABB06084BA36E843D1562B8A04EC54A536986E566C7A6729D3304C233826F2C6A440CEE2037953EE1D09803E95BB1263A6AA84607A32D7DC6AB5FE9878C502814FB39A143EA60E8B2DD94C9DC8E63FDA92AD26A73C671BAF98AFC84F62A37DF0DE7E725099539DE3A7475D38237F75034EE72B663A691718A6F12EC2EBD5C1508840B819FF36B7CC7CFA5CDAE5C7B8143CF78DC0EF81EFB1DED237A7E20A48BFD9F73B59E7427065E9427DA8B2092938452439DCCF5DF8D809B459A79A4A77D3DA4813C2DB4D8546E667015277A9445EE82322E1F906E51F9A7A7743A13BCDFE6A823F4F8AC15C20FBBDCB312206E74C2164190CAC3A01A0812C32EF5CD6550E01B4AC190AFDF8EFDBD2FD18F6913E58FCD30FC8739F1E7D73E95841592083375261951FDB2609D73DB9CBD26ECFB3E07AB0F9477C55D3F3B324FA3FAD862C5B65DA5610058E436252DA2D46814EF2B6E9B2C96EA3D6BAC257C497FC12CDCD135E5845A1EBDF15916B22F250788369A542C4EF8C9BCE366729A3E2B4AF49E408C4FBC645A92DBF645E3CB36938999092D4AEE7CDC997EAC2A072912DC4FB684A5363BEAE98C5EED64E8941B61EEDD75172D38F554D857D239722B4E9EE7EE55318CA1464F3EE0ED32ECBB151AA92C11A4003D334F7D9A29CE5B69417C5E7167254841E93E75859BAE8FB67294E5162B74FAC2E769E5851BA4AF520475039B7D327FACEC6CBE09AB4896DCA717481BC635AC23867D0A48A05A61CC4DF7FDDD6D83B2B370A8A09F0D64372DCFCB2E5801F320B3CD774A38A26302B0B031A25E121C9B8886C9E0E4B2CBEE67C9EB4C6424802D4802C17262C9BDC4D2884B1F5662E6E675EAEEF15C6ED8AC9D170F58332A7D1E0339376D9183151451619D4A0B76531BC42865EFF3C43670B732EC086BBAB3B6F5F75DE059869451717BBC1E13D9A41567188E8B41A6513529A69485506E4A92ABFFF0F52CBF5A207C5803249D562A453A89BD9A1A98FA8B4674E8CC1BC52292427339FC8E00CC5E43E8C1AC76BB225A5674393ACB4D03EBFD62293EB9FA3D30B198188DF9046F1FB551E627C67B91D3014BF0C194E58EB0AC0B6C8DFBB045BA3F11E9F2D55138699F1476DD53E80B74635F5A20674663E90CFA5F79101D136445B9FE6BCBD10C872BF6232F89F94F154A66E7FF1C2D27EE58E52B009BCAB1F46A3233CD1457D0954EA20248900EF9486F6FAACC9FB56BAFF7BF3EC852A9B461B0456C2DB13CF79E884A2122617AF4B4FD80E520A9F1AD63159DC085F254FE59106EBA3536E3518C5222B82AD8E6BB6449AC2288CE36FD8897AACDC32ABD33CAAB52E739905FFA9FB1F86600EAA1950EF3B2C645623188D4605C5D352359DD51EFE613AF1BE69876168EB438B770EDBF2D010BACA4C0C19AA7534D9D9DFAB530252BC41AC31DE65E8772B917C130005A00372FD17C9E9EF743129854B97835C65AE82D3D27740EC4ACC3D520B59E21CB723AF1AD203D3DD79B46A470A8ADB5FAB4EBC242B36E25848078F4ECE5962A04445212DD9E6B374E5ACE083ADDDCB745E1683F42D41C6C1F598227AAFA68E62D35FB9031EB0B844E820287663EB96940BC1208D9C2A28DA39EDDFC7065FD8CA4D9A18028650F055F32E08388533D648A0AD2EBFBF6EAF36AD52BA558B1B0500F7F47F7CE90AA31277A40FE3A432DCE23A7A3CBBDAD53499F1A4AC1970E12E5D5D6763557CFF86C34482F3864F4AD086CF15E5FD154B9FAB7BF4FA31051C027FF74CD634767CE7D2781D0BBDD9034269CA15283510B864D676496C9472C213F67C42485FC592DD4161202FA7106D1CD2F526EACC7737A0AC9F95ABED3D8FA396D3CEC501A4753E461E3FE4075EB023E598A45109A4A4479A4AE5E1950366A056BB9D190A28B8A3E2EBB07E98CD675B185D0CF9BC0A3D6C5CB5A4F0243D02A01809552C6E5CF3FFF3C567CE43E6D7E42F74F18CFA5F760C98EB507B17423054485E0F3E7D55430E0850CDE3FCF4895C4D68897A726B6CC720B9C8B22AE4837C8246AD22BE832C69E0608D1C61D51E1F6A8716261351CCA591D6835BD76DA34AB3032B586CDD04A43FBC9307E74899E642FB002644AEE074CE22B3628AE2DFCE6738FE5E2FFA8900F9F590936EB2149E516C1A8B559655A847278DE95748E06A33C34C64DB5BD9CA89A1F686C9A28893E69358F432197904DD6AFFDF59356F0CD1BDFD51DA906754617B87A048D2C848BEC11CFFE6E17C0E6C2645B5B1210DF68E170551353168C36CA35D98E669CE874F94F170894DAEF070AA1C56FA12CAE9764B04C2ADC6141D4178CBF3352F27E3C657186D50DE2D7CB064F641A371D4796FE8CE92E41E8356580967C618DB1A8494BCB777ED6537F396B74A7388DE2FC092C37A856AEDF56453841D35EA1B43BCECBDBA3DB7F17A08BC442F59BC8F15615389534D9B27D07585227AA5A602EE06AD17EF931E58ED910EC08B0A43D575124874B287A3B6D0CB158F4A988DA53905BF2B0184877FAD6335043DE5CE88F8384DA19B4B67852F43224B835329F30BE72060899D78F8A97A42A6529864770AF915CBA9586BD59EE1F998F0BAAFE5D4B7840B552B1393A174626B0AFCD9989CDEFDA043BBE18EFEAF335F8DFED6150B74D2F95FD5B4F71DBBD14A69EE7058DB9439F3E35B24DF312F1FE8B0B572B6847958B125E9ACE5793F7967D02618FE91F163D0486424191E08A050C1F0D5694AABF5A521961E956A3F65DA23EB305C0084993411D258BDFBE40CC977F2C3A6A664939B0FCB9E73A5FBF5DD3259F64DC82AB2BDBD824971E7C56AA80C707EEBE14A5B20D05D11FE4EE20071D0CFF0640C87321917B5485BDE1F002A04B777EF54ECB4576925A9B537EB999C93B7EB5687B24E8456DE651F5F0D0CCBDDCBF7434B7FE5716553230AFFBFDEDF7DBFA4535A4E7D0779B7D48BC86C2D222188B1F5F756A8A927B516CB684BB4FC4240A71AFDDE12B124BF9DB5FC1FC06A0BAA0F1D257FFA11D0196727C8EF17E5D71F5E2FFB781C3CECA8021EA4D08DA2B90CA9B58AAC606A54A19C206AF6D53C3CAFEB7FB8E2A941285E70BE41FF9A12197B387CF57A0454547A3B0C38301D75046C80C4894D96843DEF5754C1C8152754D009F401A744212A6E21283B7899BBB76E3C67AFB540A4FFF5F25972176D8E88DB2A314F6CEC9CD0B901CC5C5F3B03A973F13CF2A7AA0A1E5573E7602026D1C7D8869D691B8B9DA81DEFBB094DDC0CA86079AD6ABCD63B5FB2E9F60408392248D87F6107D94A896E80EADEAAEC7B4DB7F069937249D073604F9EC41DE1D6D7ADF1D469FD3DCBEE381502034F6477D52305665C289112556682B29070EFD17A8EB80EC56CCBA1270838047BC9D420F0461A6CC7A0963C91455AF58B0A82A998747A6D8983FDB35B16C2A639E23E494B1A5A7E22EED46CA673869E57000A118E3BEA708F4F4241739C4EEE18C36D69BCC6D63FC1F71E34EB1B3B2656F66233D6919EFAB06F405FC0E4AEC692E41B2BB15E85D8FFA05FE6E21BFF8729FB51491FDA80BE704092E388F7357560A5852B2B4D830755F67EE787E91682DCE83E1271617D43295AD30F7D828BA0F678208FB10AE1C970581C57F5E3CD4CC1E35DE797E1EF80508134CE053045E5250CDE685F16426EE34F8D8D7ECACEE6A5D316B9261EA209F583D81F7C6528A6BD9578DB1A505F6D70E9294947B4FD14DDDEFC346807D689E62E0D54AF3D215432C1E0BFE445574E616B93F584D36EDF46D5C9376A8BE653DE88C659DA2307E78B09CC78E9B98848EEDFBDB11707F443018FD43D9B3510F5834B8FE2D027DD60D713C0D7D3E46E888530EBB5083AB739212D97AE4DC09CC473BD9C99052D93BD5CF0A620D714FA0432D9122B7CF66E122C11A8CFCA9CDC2121E24B9F108227DC77224E8207448010476D589EBCB031E580DF08186A354420BD56F713E0E47D73A817ACC462AFC70359E967998C188B8AB9F5A2279362466923B64150340831265D7FB92E52B06D161DDC0D0BE4DB7C64ADD9C13171A6C2F47D0F0AA427CEDB9BE526898B77930B60C4973CC7854D5D4F243C9EA14DCF44885508618066499CB7D83A6DE1928B25C039FE51136AB2D979147BDD528372ECA3E8BF87EC31D92F68A172298342DCAC5FC2C460E731C30B026194B9A3FF88E98893CB94BF41FDAA31CBAE2EED5E8BE6151393CE6BB12EF792EBC9BFC158B96EE7F17BA0821CEFEFAF2B0343D39C8BC33339C88DE22720A7E097C032B7ECE7D253593F6F260CD7BE380C6FCB68CA8C4D446F1596451B89F0F214C584168FEEEA4B78A1E699B55752B5D54E70D4D89E4D8872875AFDC639F6893233297CC90933A06B39916264A8A39E0DEE4AE9CB207CDE6A25398B5DCB4EC8249F66DA69088EDB7705BF4798ECDE190A7074807BF72F6FA6245451A71A27E50C2D94E84625FDDDEC4E4CC73E26F0E79C95818929AECDFC510C86CE323473E84270F9D329267011E969D3B739D21618350C9CCE852B42047635D4278CBCF239EB11DF56192337C8683217710C595DEB2A6C79B4529C5751E756C86200F0FA0A0DAF034D4B36E967FEAB75D21F5E61D4EADED6E523DE332894B4446FA6168F696EBF362F7C2677C95DEF4D5D2763D155F528AC3BDDB2F056C27A20E7D984D0B2742F9FE62D123463546B927416F11408F83532E31FB5E773C671084B94928A184102A59BF291BBBE512E16D6089A40FF35AD0A2A6CBF4043E3B73CE517DB1D4AB7B8350EE2AA7ECD8EB81B660119825D7D6D5968303F50E7C99824B5C121A46EF579DF1FDE3B3B08EAC6F2DFF343500CEA4CBAD2F0E732C7738A0C3931AF8359DEFACEB2630CC77975C6581AF0BF8101003968C1C7717BDF00FDABABD5CB2C378BBA57BE05551C8C2964D969CE0A1BE235588A36F0E676E619C3F6CCAD769DD185C5892E903B250F906FCB6482F411A01D36C1E75FA97E83CE47A55AC67AD1FBB4A0AD9BB0C8122CA074FE84C24095B6A97E037F8C5EACFB3CFD73D6B1BDD6FC265609E9149E797211784E2A559CF65D8A75D663BEF422D053A2CABF54707C3DE5D6FC6E0375F597C658E5402055A939FCA9A5F4A64FA9AE08645CFB8F17E475FA82D516A5FC7B7EFD7D233B39E06494CC751696AD4259F4F7A3012A42F62D10477098A7CB92302E96B201294E5A13301979825F4C575A5F5A7EA8A7A2C50818E38E491B4E670416C04B5A021C203EACDE1CAF8F6E68DB271B2C85EBEF8755DC57A343FB7CE30FD065DBB8A8A8C301B335946D2C165D43CF51FA3BF3ECDAA78E25E57FD06AED575916538C0AA28C43B63241824C3290A490B613BB21B66154E53FBD20042918802106A157479564AFC9487EE11A76AF7E5791CC25068756B2797DE4FBC3418AE8BA1F04F2EC9F6F3C892F7478B05D4C4F47E43FE5C769DB51C0CCFA24A1F5469C25092DB97EEEB025277A2533E11827786546B5EB7928CE8A59D9518EB4BCD6AC3E82C3ACEAFC10B10F5C0272457CE8EA34456D7CCBB4A076D61BC8E1293B9674A0B7584D2E6E7C289A09DED979D95BB8177FDF45E820FF82574522D5848BECB6F815A89990435269AA6F5C9121D1D6C8F2C0BD9DC782540E3FDF2184817D0FD19B1EE69C72866395E008A22978E9C8A934790E953DFC98EC998150A06FA3F8F1E20A3F9CFCFD199493CF219326AAC97C973C4716EA2980F9A327FF03B8C3E84FB1B5FA9D0F7E55D4917B01F6CA2A3B68D3B791CEBA77832539987612F46565659275F68C7E0B3E5934562AC7C759A8F836CFBBEC9D68B78A42321399A341CF1ADB6A22F5700242F90034540ABD536D9154670703AE46E9DB3A08F232D9FAB69A0F6AE64DE5396915FC4A0547F171822243B1C15438C57A2DF226021204FFD9C1A0C5A453689FBB56CE827192022A9544C5163CF2F4074387ADFEBAC6E345A027983D98262122C51544E89A267FAEF5CD67C285EEB149A00BA2ADD555244392BA191D618288638E1589EEF6D3DC634332EA15F9FEAB64300BF3A26720158D70E0D58E7B8515592C38467B1E4CF71204C09190384460E1AC388CF398F425380F9C7DCA847BEE9D20AD9F1B1D79F98E3596E3CBE93F1EA22EB83198B50564426AC7CC327B2BD805675D0C56592ABD16E6906ED72F2AFE00702FB0B850C36B7213BD5B184231AC9E12D8E3FCCEBE1F5DD889537AE9AA653F27F88B00FD0BC057ACF1BCF31D23748D8249CB7CF4BFE8BD39ABCE8D26B8D08F2C410E01C35A0E14866C62EA323A2B538A8AE3EC3CEBF7A8C60BA763DC0D2D35CC7C90B78BBC7E636CBC1B48FF304F30CE7D03EF038D3B5ECCA740F40E4057CE741B6674CB0B2B4A28FD703BF63E5FE7F3CFE83C3DE4F92C99AF70C8144E9146D4117E5B6EC6E7A9377553E6679069D35E0649F3EC53AFAF765959C90C3803B60B1605AB42E8464AB7CE8CA44FDFB47B3202B88DB4E917B8EB474354CE37F10B012A0A5E8EC45CC3D839780023D26AE47946A7F041C828AD979E6586FEAA42C8414BE2CF7B04B59B1E6FA38DC2F814F35F90F0A6311D8FFE4D1382F468E95C0D86522BD6D51F9FC4CE529FA994AEDE14031A23DDA7A2038FBD7C49E2D858E912B4C4CA827D4EEE3AE20701BF65B51B279F96E03CC294A88320EC23EA56006D174880D07E0E49E1BFC426633C4A39D9B63DB676CB976981D188F19E6EA335B7975AC611FD02864492E6F6602180EE8FC305E0EF75C6249182E55F88C3D67ECEC609C56BB2FC593626356DC5E31FFEE162CB95D06AD45DB43B2F1AE25DF7F359B99E35F6D10854261171284AEE4C03663C1E55CADD423724BF16625A2458A5B27C778332276F335507D877C546C64D0EBAF280815AF0FD36100D6F66E4C34086BA4C73F2E3B3C9DCD9481B6823414C8406478FAF8FAADC55426A626469AE61E21492EFD83F09E37643E0803FA01CD4771B48B90A07D55DBF846D3D9A09D418176B9EFED8C7D21C0D3B8C16BDD8D36B49684923F3E7EC35D861CF843AE20E6CB8AC60270A448AC76CE88350F48709E023D57F6C90EA86BBFEC5E99C9DC33A235ADC9219B15B0FB8F760D004C47E2201EA4BD3DF055DD8B21BBAC6A80A293609CC74ADA154AD23BC87B53ED43B31F291159076EA101F19AE0D3A0E4929819FDA1571EADF14A7063B875962E5D1801B2C452F61206BFA563C4CE5BEBCE8F40F9331236C7173C6873320C8405295F6F143B4F3DF08321EF7B957F885D087BDC6C44603DC1DB43D108D302F3E6D2B25FC430F87611A3ED3F5175B223C8FA378F503AD6B017AD905B9FFE7AA63B1C0D3E929D515427C46F889EA25E35BEB81E9450CFD965AC9693878005601A18030ECBB5A9E741F93E69586BD2DC58C0254D25573CF20A91D5E3C39C324C30140071BED9D57E4769C732952F85E68AF516A1DBCD6E707F4AB481A2C89AE413C3A3E17FB91F4B3C36694FAA2E8AA9F3FA999B2273A38AD6843ADCE4B51DD620BF00F05407DEAEABF281742722E4CC863F18AFEFD07DC69E2360B5DF1CF0036CE465049171259F6003660B6908E9A323D0BC9D202EFCD328DD6313FC0CED7D96C179278F80FD3F922A8566487C49F8506BA7EE012079753178E4DD3B0E66FC22A29FAF5D10798BC224F69122064E5B31F525BB7C714A05AE916932DE48714DB987D083D33EBB9F6840EBB810AFF167444008FC73A1C50F7E1AC89DC88DBCD274834722B7502214A5AA8DA620427CD015B860DFF02E377D086CEC6E062B875D9AAAF7E7119D0E113EDF72E02AC45FB0970C985279ED44AB277DF06417B52C11BFB991B5583975537BD53D8355A7858D78C27ADA7672914778656FD2692FD17707950DF5081F064F96F8962F27D4813728C4264454CD570334DC2462004FDF02477EE251819B76591FC97DE3B5B76F2FE4B2749DABADB072D6AD9824BEFBEEDE7E3E61112F08F1F3C87AFC6A6DDC51D9E090824889374204F174F68D35A9440DDD8C7FBD9165140E627A670E2364BEC855F50FA94F77F3365D1771A428BC7070A51679DD56EC5D5053EE687A00F1D12924C4864606771B7A73C7E27DD9840EBA1BBABFC4DAD28636164F5976FBF4D9B448E44AA86ABDC198ED9717E9F457D4E3677C65ECF3DEDF7D11EE538AE020DD63E54381EE27B179CB6B858E632ABACD03B857FDE7B0D1372BB44E4E3DC660267C219CEC8FB408E42E1E1828ABF63007E85A42B9CE515A7F66814068A36218A22B8DCFB83A555A879C6798801FFA1C19B4FC6CBD7FBCFE9035D8B3BFEB41C945CAF1D1314D507B182EE182491C96E06A74E8C3085581F1B91919A1C650FD02F83EEC28C083EBE06D32B1AAF0218CF6D289B281759F8C9247476DFFF8A83263CC9836C483FE1F3E1EB06FBAA2764AF4C6ABE1663B2133A30E3096152ADC84132A9769F5BADE38B71C231FE7810A611A8FD24CEBF47D730852788603D2652537085E49AEE8263762B9CCFACA2761B101ACC680DCA8180B7DF4125C30903F1CED469867D3F5D3189B50FE5DE7A762FF24DD0C155AB0A63013AF07D9E4F6130BEB4625D526EC4319D20D409F75937FCEEA0472E22AB355FE1698CED256737CB5EB49843A6402A2FEC17FB269053E280E0CF465D8A0B6B5D9527E0489E250627BDA9512A54F66683348D4EA12FEA7DE7501427A4C4536A05A1D5CD09580F7BE2F2EA93F5295CEF904F8B960DBA960CF8FAAC2589CE6CAE77E9C089393C5FEF56A9D986B69B9A2DC268FFD1417A4D99F53235020771595CB0DC1E596E52A6B4DAF9BDB75C4C9E6821381769B7C6626CCEA5E954CFA5132925A84BDE3950C93383F63D19CA160B1DFC7B01AE8F21A7A178C740E5022803ADEBAE35BA6E7DBE8D8AAF537C8188AAB6C47E3CB4CE87D65074139238AEC9DD708B2D3FF860A7088CAB75CF40479A9C3D04A41160AFB27D5B35FA9FFC5546F5370C1C4EED6AEA03F7F24F745196181DE4C557A1B26F7226DD4277AB2519823D61BCA1B75B20AFA11F744BF583C20F865CF8AEE850535E705D260B6945E207CA38625E3D3C63E663CDA94643E4EC3BFF2CA8419252EF45784091DC3CB61A21F9F5DC89AC52D6750B0C4F9B68216E0D12A14EF694494EB7EACEC601132BF2F7B2EFA47A72AB87A8D59881D8A5DF2946BB233122BCE401B2607239255F4099C677D1849D2D58A8A1B4AAD64C8ED953317E58137E23040DAD48967DE726E7E315C728A3B57CDD5601493975BDF2FCFF005C7318C48B62462544D9BF49AD813A24588886E37A976B037F1F6E8F40CED93780B3E3C990FD14C19EBA040CCE215562DCF804B5AEE837108F6D234A8ACD31BCCAAC311E161F87FAC4BD62D63787A9FCC441D949BF2709222582556ED1D2B746B63B952D51BC5DE1C59B28C5EDA627BC66AAF6145C18DD8D8078C930A051343550FB280CF8813D9CBAFFE7E681BDC9670F8269C075E83234C1FBB73CC108FEB4B82E578A3FEE57CDA92DDE528AFAD7F144707AA3629AB9A8877D94949A52CE2FD093994C98AD9F7BBDA56E3696BA406C328EB1F8AC5889E599E8383F9F6633F596DB057301240279A68B75482644CDA7AAD7308F78BA9000790836F74B86DE09A7F25B8B0C667955AF4678AB2385DAAF8303A6AEC28BF3A66EBA8A9D4BD29B6C3D048522D0A6D54E9301517FA3BE196F08887216940C18B05BE1DA9F49E5C10FA82A3E4ABB1A5D498884312AF283611E557CA593EB1BE456263CEAD6CBDC7056153735C4593EFBCAD8127D1789F7D44F6BF931422C4A1B54A79BFA98AB6203CFD2D1E590A14408B473E1C6768BC4895C6AD06BF96003FC0FE45AC9C7C786097587CCA63C792C0D0F11E102774532534086F7B29AB7E4A0BD58EE60C805DD7C0E0585A1E45FEBCD26B5407F1CDA6323B485DAF5AA40CC68B23B20B629F406F85808DDA30F32CB419CDD52F185134664E6DF1CF2FA8BF4348A41AC014C4DA1D40EA9DA4BFD56D6207175727FF8E252326E52E96C0A451DCB3AE94113F11F05C1A1722BCC2C95FF53A12F5A2BDB4CEFCE0DAD11640FFF0D4D280882F1C77D6000F57D9070BAD30C07DBCF24D635DB06AFC4BC7C10304C269EDB24799411A365795BDB05EA16B8CF5C61D8C0B5F242C645F0850269DBBBD526F0B106E38080E4E1A3BA980D95E8EDD4EA3FEFA8A797160259B2ADED7EC1A950503FA7ABEB5F123FD7C7C2A1B70071D7706967ACB833DD554D64EA3551BFDC390FB65DE609736241C09F19641F208256952660BDAC715A5C84C3F5D41856C7307C83288FA05EB3480A0FCBD6ECD0982D5702734345B3A9E77BCB07191490A96F6B31C6A72C69689B9FD713EE45961E62766574BDD85BE95636EC89341C4A5DE196E3C064582C459248BE6DBA9164DE7E3931106E4A430716A6A1BB5749175731270AEAEDCCF4F5D764945AE0003AD29B6007B3B86C1C9CEC61A7DACC880FCE6C27B42551D64EF491BF03CFBB48322E94DAEE1793A7019B02B2F81098DC6495E5BACA092FD63C4393C58DC543A6F681BF2D1E7A00F3BB464F0BBB572C95BECA656C590960077590DE05812989FA011728E807754469326C183E08A32910D8CD43EE11F08EAE1FAFC35305C1A574D204041260C21D78F51B798E55465F97153ACBC62F65A9B86B09B7C90470355F64002472B05EA7CD77C18C37189B54D7557EBE2B8A7DC967D12384F5887207A44AAEABB3A9754CFAF865908B937D54AB3DF7EBA65C690777B0D68180B22793AF793FD3C38DBA5B8B6071FB538CFEAE2BC58DDD601C15B70FC744C4E92D5F28E6CF277C948CB16DC62C73222EE2CF0E687572D34AB4A933FD1978BA384B79E7860D693A6B15A2B07B4831E858EEBB75870C2E11CFC22A3597B1364B13552C0057278159F416A535D3422DDC30034C50D75A75FFEA8062C973B1E266B5C79987FA0221FB402D050C445C5D7369A1A8E0FF834FF9C7DFEBFD4031339E730F51C7AD6EC109AC5044490732011E8AA7E74D6BEE8AD25DA51D3CDA08847E91BFCAC9F38724B665B6241E00EF71C86C56F2C08393BC98EBA6AA7EC3060A7E874E5FAFB33B0A268D9442BF30DA37433AA564F8AA934AF1A70D52E0AFA98B82CC7FC8E3553B435EFC15C094F9804AB17FDAD5BEE4188F685C4921F4B8A6908C75D9CF724CD048795C19BA609CC8D871292A58EAF267F09DE2521AE76EF06B25C19D7D472FEAAEBB46C99492CC76EDDEC522290D89DAC88B3C6AD474AC1BF21E9DBD78BED632FA4E1137686FB95FE1518196A00A847B4B29F48F215DB243EDA4A3DD4EC27F9B710DA9D71371A0598C040F8BA295C2E49F2E206F3C42C8CD1D5BCD8C9218FC45BF2854C21D6932D723424D5EC243509A4EA574B1DC9CD8D55DC06E10A8D0D85FB457EBD17D0560886E7DC770A58278B0BD00D58D89CA5BD6BEA20BB190192A932C92738C811FE8AAD1B3AD8A7FF785AD2A39E7F126E0456CBE961C83D6E2700B9AD162C2FABC41E286FB86693E6B66BA3BD25CA1263C4C6291A36E6DF58535812CC5A43C7F3B3338CBAD9D75B556F0F533BCDCF9248C768B3AF4D0C403AD6226356848606DDD3EC169D39AD33123EA4EA1250E31C3E3247CB927569FF25DB6942D6C035133889487AEEFECE810892BD3B3EA670C35A15E026BE3D5C4E44AE4A740FC9F12A1D166B7568DC59C64DCE33B2DB9C2A3F42BC08964A22A2BD9F79271EE3A5C960EFDA991D9BF757ED4C6178F0B3CB7604185809D7EA043375632458465B9BAD01B10F906FB7C0F430B7FAE91DF7CA58054C0807D8D2319750A2E0EB87CEEF24B05D3FABAC3636ED7B98B53D07910E1C0F9F5C426EACA8F26D4BDF5511C3B692D1181BAF2219D0419B110A00B901B1232FFF3AC504D648AC633B1A1384D40318755013471B0F93CA31A0C5F6BC047F34007123F3492E956EFFB8DC918E743D118C7E1391C211F05B86F8FC7CE1D322CE19DB155E265C696AA193A3C2F55CE231BC071693FC1D6942A053FFCC436D9D26F1240BC555A1C09AC6139ECD5C1883AC5BA73A8BB9733E5E89B908911EF8B5D9503DEC2DB33731D27672FD9D95EA5E635BCB5C1F21B1D1BBB9510D0BFD65D2DBA2C0ECC05BE2430126AC648B11DFD016CF24B6932F4A4C033CC5363C38B5B1FEA02E66CA93A57E213CF712D0E3C02D4C2D4BF4694DF37D886A55BFD2B12E5F335440B4589A633D7371FF3199CEE50D863525E2B0CE64BB613BC0FF35DE94C7137D895C247AB0FAEAE9AAA4474485C88B7441D17A362922027378FF4FBC2784C03AF89BA73265526591CBE541FB137742657CBCB7F1EE7DAC6C8DE4CA75A69A0A1F9D7E9A6D8787C90AF14076A601F6A41883E4729633E5D335FA2E59E119A9AD1B7E88A22C02C7F3343C65B46DF269F59A06635C20735408A528BFFBCD59B49152A9B8EFEDABAA04500B50358136AA6FEDCFA787B13283109BD79847DC88036A45D5DBEF3C9550810ADCD37B83B4E4BB72EC00DF7640B4FEC36ECBF3138772A4DCCDEF599357205185B8B2F51DD0E5C4C13EBED7EC81F336BA70E02EEEF3289A03BA0BA33ED7E3D5367389479E02B1C62E9CEF031A0A6A455B4222A34EB7FEFCD273A658D847BBA845C73AEBD4D2A46F338C1FAB3CFEF031D022B0152A6FE4510E19DD2AD810353832C7E5E6F63C60F9204D891D44589988B6FE701D0DDD2F4BDBDF4609006E74F6A07C628EB821C7064AAEB635C220AE76E19F7D857E94747FB803A338600F8C80176D561BB912EF84589539362BF554F978811875E7248F9CEB02620411C5703B0F6FEAA74F56F18BA3174133BFA53E21AD9B5A9AC383912CB17AC4B4EA5DC56CA3A3161AF947CCB3A6DB850D6CB91B69D3B4521FD6F558F2D83DD20F136F5AE5B6B04846A4C487D9295BE4AAC97F17C7A695B39C1C4C2C391424817D170C99506E50966A9CAE8467B3450ACA3CC47A75682A1A75899C9B2F42A79195A025EE97049C4FA9FD8CAE4EF36C86806F4FDE3990258579B245BE60F210B1C7E5F6A9B2B45A109EB4554601812BC4DF6D321753CA006332EA8459C49C9F479AF8BD5653E438E999448E56A99C3427EDB140A048519556D2D2F8F713D9EF409BE6BE5B8EF509F54F0E6DC85744A842A51B52D39A289B1E07C1E2F97718F4E9453F47E9426A1A8BD1369A6BB0D4E26F4A7690BC4621CD334E748399E24D214DDB33810A755EEB0B0920FFE8BD6FFAFFFDE8E7662096C3E6361FB544C5C5E5D6737DF477DB5E59C7100F2E6A35F35334D73964C4D985DCEB350809103CB37E3A0AEB248D0625D291D188A035AF0D5084344C4D743311557A753FDEA3DA73C523112207FD53766822166BEC58F60530A056E9285EDAEB1C667DC79154E9F96FCFD0AADED09D4F0E7867665BDFD0AE278127EBCF28F6F0B99BDE736C208143CC53E58445D59F21AEF7BAC7B55CB3928B7AC498162D9C44E4D048CCD34D46E5721553438C0ADC28C62D6133F57BD1116B87943CD12334A9371AC322F42432A54E573D7A8DA344D84667ADC0C6DEC3DE5C601AB6AFB0B44C0297A80AA2CD171ACDAC68FBD36D5480DD3284381EFCF5EC806FAD1FD0D2B56483879E862F411A0983B92E1B69BAEFD4FDE1E56A37705BDF3D5740850BDEEF86340CAACC8796F86E2AFBB447E301E9799BCEB353FD86903DAB39282CBCA88634CC50361994BF19FFF02DFE49CAA633A6F16998380C2CCCF5A6A115571216DE06A39D25E5304652CA4BCA521302021E50FAEB0D1E127E69CF6CD52A2E148DDF476C6B4EDBF2BA985BB98581B352ECB576B2BFD5FC0B763E424E714DF69B850AAEE5204B0CCE4C5287BF7A229D69507AB89B7AD2AF132C9AF3AA5A9EA7EEF92D83FE2EC106068165418C8FE6B3597E83D8609CE10206993140A7C59F003461B65BFA88E772632048661C5A185916724E1F2FF5C7ABAF73919042DF41485F8E43C99C3DE66A076FFC869CCCDCDF1711E88C6C23649DD45C2D0A45DAAB4509B1390840E19C1E2940FC2117A54CA00BF9F96D815CD53FB4A9CE3D791F6B53CB514D12C6C6B058C812DCD2D1F8EA9384105D2E6E4601DCA75E3596B05712B76EB6ED962406DFA4C83EA23FCDEBA76C8AA21DA33F8345BCACB7A44B403D86A17607A43F98BE4410C2BB39DF9EC660DD5EE4D8A771F21180283BE3714682C0C2647DAC61DF71698A8DA85B7EEB860221C54019F02EBB1A2CC12C1B0647C8CB96D81C790050F8ECB52A9B312CA42D316D951EC0BC72FAA2B17F4C291E9F3EDC54C980C945A8F1708B52D5A44072F62DAB13A90C826234800B4186A3433D0422C601846164A22EE57B87498EC4BCECD7957A78B0E396C87918997EB2F05955FBCAD64D65182969777FABEC198437451480DFEE235077E0C03197E5713DD2A4A9849275275B568C5D187A55E7A5EAA1FDA842D1E74D8D99C10C962A76FC1E020D1532514B6D52FE11BACB8AE470AFF98FD09FFD6ACEE8163D14FA3F9E019F0A442D202D3E51444ACA09536F703F72B4E9D991BB0D94A1FD418B747ADB21185EFE93EE67F563552C6FE1F8332290E6E31A3A2EE435B524AB192589B54EA656629394DCE9ABF6322C9EC8AE4479CA821452555C55FB39B1A10985C9985752AEE85A7A877A69EDDB5A9EC1BD06AD2683BE9FDBCFD11D5F5EDFD6CB1433719814ADB3375BF6F8EFED5B06055A677409603A4171006CEF9E43C4B55FF54FFDE1CB3ACED1CBF58A160B2FB95A5145B531448D0FB13297DA5800C811989AB0F794C738970F99E584724BC3DB2CB368FA1219AF6F445F60D0F062262CB6BB3E61430111512A45626B31B4E005EAB9DF3428E0899167C03EFF132A82AEA38D7FFFE003D07A4D98C34E0844DD7B6D7C28344D0E3D5A75936B41ED2D8327AD817CA6A0E0375A7DDA1389BA8C658BD656269509F895DA4A4E10456D89A96DA8FFF7DFFC54A98C49314793EB487D3531F61DEE611FD555A13008963CBD6DA6B1E5FBB3C0A716898567E51B4BC8798916B832785C966ADA1101A7C1E3D6AF70DEA8FD3ADC90EB6000296A236BA35498E61E54A6EA3FD4552BEC02FB1C4766B9CAE9C9F62D8AEAEE9DE2CD80E734F48EA416366A29EE4D7905C2BEE7BE174D4180DDB8D4B01D9A81AD2D59C97053DEF367CC18307927960C8D96DFB211306ED15206E49042B4949CB8EA0ECC8FF574C42890ABDDF606869F03B5B60F3A6CC48CFE96850BF95C453853FAF1C62FEC33FB1CBAB4424ECD8A41ADBC3089F6CECC4006552140A564987359C6B0160991C3827BF273E24903E2CCEE83D0900174BF92022052F2AA5122FFB03C453D1CA4E7C11B64012390A75CC9D001BF2385556D5346E63181FFA9437F23CE7F7018EF60DB179DA0C8E80AF84A80814302005E786C03E4837E3395FA9DD95DEA6599F44735F037B76B8BE38F0FB04B9DCAD6BAC83B9684AF32E711406284E35C3519C8F8C2532CFB9C9CCDBBED10901894944996EAF05A9C3BFD59E6EB89D7E7CC0BAC9F23E6B229087484AA6A10A66F4DDDC6FAF4CC16385EC4CDBB30E437325DFDA474B583D894ADD87437480B65D1FAA4BE9A29BFBF84969C65D946607331DCBFD8CEC9C90F8E1F8633D7C91E12167943B1453D01FFF5E9B83F72CB7D9784A9EB446401A20C7D9797488CE64C80EC295F0C561BD918B5F280C5A6C388E17966BD203A5F656280E38AA927D73A48D4DEE10EDB5CE0705EDBC156DD8FFBDC959BE88FDCB918944688A987E7A0C729A2C3AD9ACCDBC2693253F47EE47ACC1A9BF8763BCE792506C331C6A977BC862E8DDCA3DF73B4B6C06CCA0890D0FE2293568E8D8E8B6C28C5FC034D47C86B31CA508C0727BF1A5124942160DE295862268FB50E4695761FAAFBA58ED72190070C0C86F222814534110574DCE90B8A7464E414207256BD04845B012D725465B15FA457167F197E00B0F23EE171C4E02F687D50B4EFEDB9FDC55C9F31E075854E92BEEF22B543712A6F6372C2A73A0AB085CE8CC866D4640E9A6776AD38B266138930D3813921282EAE4C81393133DA70244C5FAA700E3B8F56CF70BB408E1BD982DEF0CC816C3471A75BF2C783CCF4BF252EAFA6D1E9B254BE710E39E68EB8715C49100B53911823E812C683E7ECF7CD5DFDEA8CA88FB3D73CAA64A85D86B9AC2DB5D29AFF2FCC468C827B33E40CE9345B7C442D0013291582109C7FDEA24D53F02CD2F29E7152ED491D5EF18F7B6E9B15CD4597F2E92652349D10CC5F53BFBCBE7F148298AE684A5474260D1CE24E734FF47C61ACAF3D131B9DF4F311BFC4EA3D7684935D5D757BDA2EAC6276CD923A61F775F3C37DD646DA31481818B532AC05352E6A3BFB5E20A1F1AAB9965F9F824ACC355BCE0759B2818370C8F3D0E76F147108EFC796DBEAFE24D8AD6500705CCED11E50B5E200FE5B0519C3C3DE7EF38C0F2ABFFA9B73E0B230A53EE6FF38D7D42A7318EC325174E4A57B25552FE3C87222EB4E9E408061D3DE4AACA5A4FCF0B55126511C7F2E9792E8EDD9E531F5D792E18C55F761BFEC23D683E169364EA184CC885CAEC532E5062B3EC00952A933726CE9A425DF1890011988395DDE91E50739EDDBE5C3194725676FE9B3C48B3FB45502E94D437BC856C8D4D2A0A402636A726784291422DFE51523DCCD1731A6F3639509A93DDD035DA9F312A9619226CE29DE09840D54E11E7C80AA13D37134FBD4202FA896A2C6DBB40EFAC066EE0FD8E098EF14D0EC75EC22C4C0255E0F86630DBEB63C3750E38C40EC016FA55EA4D080FFBE1511BCDFB6EDB01E4101DF3A4A0FE3B64E6DA42FACC011796E87B52B8ED2C69CE0A4785D79A987141D6AFCEC56D91AFD008891FD78F4F2302FABF1FAE4942744EB2C01E3D580973B377E37206E2D336FDD51362E3C2864EC7BC5B74A8F88FA61023AFAD64F6DE85D5BCB4C3A7C39225CF6A2077B2255A7CE7F317CAFAE70ABB322E968DB7262182927657E5D90DD2977C5AFEB178B6E3795C57D78BA0E8C4062D8F21B3C2DC1400F99D28D34A4249F561EE081F66F615FBA1584A7A411E5587B53A0FD3C0C8F59ACE0F2ACCB315000DD6FEB3D5C34D231F524296953CC877D3343F1FCE3F484818AA4488C28BC9E4732F001DAEC76CF37E987AAFF1B9CAD064B62576EC2FDCED140992B8EE2389B7CB177402D1A5B0D33D69A3BFBA92DE632A3F96FFA2847C5A52FFE8980D3205D97B4EEC1BDDC8649BDF87084DC19C9A7C1DB588ADD93F5254443A9D18583A40DAA2C41BCAD1DDAFA151C5E3C5697F25CCF86628B4456D3E4FC9CFBFD7AF24736535EB584688944AC32815B4D3BF1AA028FEE237373ACD1C038A44AE8B39541A8F926EC4EE67A2FFE61B022B3C364728EB329530B78DFE0E5DFB2767A92E81290AB50A447B065CE043D3B81E8082F9D6EC4D522CD013177B4A0C49210DB4CEF9CF9FAFCD8286B97ED917793FD062889ADF56E356B51552B7EA33E423848B6662AB4B1E60F99291BFA140D24AD57F6B01A63C5848F5DACFC4CFA1E68949B959BBFAA306664D6E4B2ED451B005C4B927C53153A159BFAED9FF7997E4CE80E51DAA80AC3B5642894FF348A14FF9C5201DE355CC4E0E9F3E239C541DBF07DD9EA9C11B350DABF1BEE177BF2DC399715DBFB814B3A3873D29DCFA1CA8ED4649B47B6772A20EBA1BE6CBC6D7E90369991EF2005981EBFB2ABE0325E262827800944260B139575013696A633CB7236182C68025049C84BE67785B131A18278DCC2597CDAE1B80EC538E8CC66A63DB2AED51E77868A5F3CBF640F799C6FB6CC0566BF8E222BC9BC7DE85B6054A901292EC34F1C8163AD5815C3DFC5BB60315BBE05110D1581548E05F42F843803F02BC622C0105FEE8240ECA277E9176B0705A0D07CB542EDDD109715560385E099F7E0ABA762A0C3E5C436A2388AF39FFF0F857C0CA5B8705ECDB82B1376FA49850197CE71DA19F287DFF5517469A9C42E0154E867B0BD8816ED89C9E4EC8CCA693DAC9426835B07708C50BF5CBFA4FB3BDCE1204393576A16BA75B0D8B7B33F97960A156A30ED2362932BBB271C095C397F42500072D8F0337591137C13BE7A5047D6442EB2351C881DCE6E31402CAB6B0110957D33775D391D00C4CB691E3BEAB0F3A3CE14E4C76B7DA1CA74DC888D6835441252EC83F6BE6B16237DC1298D35D3D081290E18D01E59088855140BB4FF18846C44CB6A0C7C8B14B64E453152AD0399B4940DC8CF539E002098C3FDB62BB1A12C935B14F3FC79FF722AB6633BEBD9E05704430D9FDA3E1280C61C08F7612DAE702D08F6DD812869E5E7A1A7D51225BB47FC854E5FFFCA217C2A9803F1C25A5C7C71C6C2F271A39AF6327D0B81CA8AFEEC55C840B014F9A95FD7449EC44703707870769D3CCEB876D2974211DC065A648F1E5CD918E7E070527B30F995C67E390D797AEA86EBBFCC4BB5A5A9E6CA08BE1652978A14FA8CAFC801D2678637745116B764F89798C7A8723855D549F7C18E6B883EC8521E282DD3A2AC9EFD0A93DB97399FC18954CD1CEB17CE18A43ABE71E395C25545BA70C176130AFFDBAA7EB912B747A04A7C6D3965BE9249B545FA06984517D070B59056091BF2028BFE60E0396483B33CC5C7206559CE6C5700147C6000AA12FAC70D83E058B061C483CBBD31A1CAC94FFE25651C1A3CE97AA98A6366C292978D6E7E91824D62514FDA0647145D02A066A8156FB7331C25F633DE19269BEB1126D42C4AE7EE3F9EBEC51F00792AFC875FB92E9352BBC7657ACEDDE3897BD5BDFCFC97A79A583B92071FAEC862BDCCF2E0E616B4BCBB2A28E775919AC36D3F0CC55EAFB7D9FAED49895535C9F120868EBDCBCDDBCDF8DCB27483A367ADC09867C81E99172F86864011F588A5AB518E73147D36666D185DE3DC3E2D99808F0CEBA6EC2A16514F28CAF4A22FA26E90D362762E7073BCFD870A061CDC5C4E81E8D88CD882CDB9809DA794E5121867CBEFE2BCF6B0F5B168A6A8625A885F37A5AA5F0DC3FE2DECB55AADDF731E340D205C40FD4C0C27B12754B4601071AAECC1FB0B528201FAD2AC59C5F951742595AE5E31FB6CD10DF3C676F0B8C975577207907FE87C07C88DD4A73DE0A10218351DFF0E94666F5998756A3E28903679A0C2373459CD6982A0200563BA1C84A3297730CC747E2B91EA572EEF5AEE1A97CE5DF0293F0AA8D3E0B187DD1CA3928B6583818D72A9293468069F6FE9248D6460158A813C739E08514852848466D7EF0D752B3E6A7C124B2CCB970A8D0DD2796D0BFC7AF6128E30019BC74DC759C0B093FF40469E7CA1E2E34C9032D095DF2024EB24F5B20BE21FDBB403DC281A223FB5FF23203B63447AD43D5190E22801479A4B9DBF0EC25825BCADFBE8D0E353CA095E5F9779C46ED053EE0A9682702F32C50F8625EF8B9FEE8EDA665599B1D8EAA9D2E0941B32E79C9D09A9B49B039831A93137C8A7035895E3AAB17243A94031C97BB199AF0CD1D721498115CEC6D4AD98302BA59C1060F56B30DAC3EF40B1C37E623DECF955093DA45F65F6E62B408289D6CC91B5F0D3475628B90E86D8D5EB640E943204677CF9D866F4762F837B68E320623E5A720990FDCA6F43AE317F02D09965CF69A1B2BF0ECF5B1A1B04A5D0FBAD4FEC3B0EABDD98A22A077BA3F7F4EC920B47A0CD839EBFBED7301281E1A42E8B81A57B06963808ED55F1218C0FEB9D581A02BB3634A87FFA9AD4DEB6206908D0F5203EF3909078D55125E625CA73B3E8AE6423EB3D18C3019AEBFA04CE57A95B190E3D98ED51F047FA008AA6B3FE544EF2D7BEAEE88538BDDF49B9536E69D8151C78BD9EF32E384E8B874C3154E3ACC93DC69A5AAE495771FC1E9EB44C2FC3E2973E795A33BC4D06F34AF5A5E0FE6D539E37DFE243106BDBBFBC80753F527F12E79A843DF713A99BF88DDCF8BDCDACB2EE7E1AF982E83118C7CD9A3FA6CA65D93E51F3A8EF8D2A97AF54ED66FB2001459EE1040450A77DB5322CB384982B27775D8163734317434B6EC70F05C57DC467B79570DCD043479C33E5FA836BA14157ED46065DE31B60C7A31C5F57EB98BD2F8EF01868297EE6CFEF90AFE5144AB1BD92C591426E5A61396959C9A1FE6AEA423F4E27D3DFE4CB1F4CF0F497196AC258C91E583D9F9ABF13F87238C5D88A2A49C2E9FE90D606C99A171268AC712ADF7465ADC9DAEDF352E7A0137FFDA8F38CBD2FFD7364435A7ECC610819E2AA8004E51D49977F66EE947EF4C7581BC6D1420A824AC198899C93AB63174E9CCCFFB9B2F193A6D0A305CFC699268349CE29A56E55A040F0C90255A57F6B9FAD207D42082D6697E0C00DCE8E1D2895316E64B1CA3F76E31ECD7DF3C23764E8C13BAB34D7D45A773A825E9CEDFE11EF46B34BF568EF59D766538E3D5E513A659FB0525196F9BD5E3B206086D1B5A61E498BB44C4A213D12541DCBC87BD501FAABC841C90B07E4DEFC618B37461E48D3AFE723A19EF7C531C77BDD52E604D1A11FEA2DA27A709EC0FBF1A1569194E14F8767041C65D035BDCA34EA1117640D1A18439382785A288B15D81904ED77A6301890908BBA312196EB4EB40C855A9183CC -ss = 94EF94248BEB80707D04F00C8991A33ECD8103C04B8E142A diff --git a/src/kem/frodokem/Makefile.am b/src/kem/frodokem/Makefile.am index 2a841ddae..fc5e67e6f 100644 --- a/src/kem/frodokem/Makefile.am +++ b/src/kem/frodokem/Makefile.am @@ -1,9 +1,24 @@ AUTOMAKE_OPTIONS = foreign -noinst_LTLIBRARIES = libkemfrodokem.la +noinst_LTLIBRARIES = libkemfrodokem.la +noinst_LTLIBRARIES += libkemfrodokem640aes.la libkemfrodokem640shake.la libkemfrodokem976aes.la libkemfrodokem976shake.la libkemfrodokem1344aes.la libkemfrodokem1344shake.la -libkemfrodokem_la_SOURCES = kem_frodokem.c frodo640_aes.c frodo640_cshake.c frodo976_aes.c frodo976_cshake.c util.c +libkemfrodokem_la_LIBADD = libkemfrodokem640aes.la libkemfrodokem640shake.la libkemfrodokem976aes.la libkemfrodokem976shake.la libkemfrodokem1344aes.la libkemfrodokem1344shake.la +libkemfrodokem_la_SOURCES = -frodo640_aes.c: frodo_macrify.h frodo_macrify.c frodo640_params.h kem.c -frodo640_cshake.c: frodo_macrify.h frodo_macrify.c frodo640_params.h kem.c -frodo976_aes.c: frodo_macrify.h frodo_macrify.c frodo976_params.h kem.c -frodo976_cshake.c: frodo_macrify.h frodo_macrify.c frodo976_params.h kem.c +libkemfrodokem640aes_la_SOURCES = kem_frodokem640aes.c pqclean_frodokem640aes_clean/kem.c pqclean_frodokem640aes_clean/matrix_aes.c pqclean_frodokem640aes_clean/noise.c pqclean_frodokem640aes_clean/util.c +libkemfrodokem640aes_la_CFLAGS = $(AM_CFLAGS) -I../../common/pqclean_shims + +libkemfrodokem640shake_la_SOURCES = kem_frodokem640shake.c pqclean_frodokem640shake_clean/kem.c pqclean_frodokem640shake_clean/matrix_shake.c pqclean_frodokem640shake_clean/noise.c pqclean_frodokem640shake_clean/util.c +libkemfrodokem640shake_la_CFLAGS = $(AM_CFLAGS) -I../../common/pqclean_shims + +libkemfrodokem976aes_la_SOURCES = kem_frodokem976aes.c pqclean_frodokem976aes_clean/kem.c pqclean_frodokem976aes_clean/matrix_aes.c pqclean_frodokem976aes_clean/noise.c pqclean_frodokem976aes_clean/util.c +libkemfrodokem976aes_la_CFLAGS = $(AM_CFLAGS) -I../../common/pqclean_shims + +libkemfrodokem976shake_la_SOURCES = kem_frodokem976shake.c pqclean_frodokem976shake_clean/kem.c pqclean_frodokem976shake_clean/matrix_shake.c pqclean_frodokem976shake_clean/noise.c pqclean_frodokem976shake_clean/util.c +libkemfrodokem976shake_la_CFLAGS = $(AM_CFLAGS) -I../../common/pqclean_shims + +libkemfrodokem1344aes_la_SOURCES = kem_frodokem1344aes.c pqclean_frodokem1344aes_clean/kem.c pqclean_frodokem1344aes_clean/matrix_aes.c pqclean_frodokem1344aes_clean/noise.c pqclean_frodokem1344aes_clean/util.c +libkemfrodokem1344aes_la_CFLAGS = $(AM_CFLAGS) -I../../common/pqclean_shims + +libkemfrodokem1344shake_la_SOURCES = kem_frodokem1344shake.c pqclean_frodokem1344shake_clean/kem.c pqclean_frodokem1344shake_clean/matrix_shake.c pqclean_frodokem1344shake_clean/noise.c pqclean_frodokem1344shake_clean/util.c +libkemfrodokem1344shake_la_CFLAGS = $(AM_CFLAGS) -I../../common/pqclean_shims diff --git a/src/kem/frodokem/config.h b/src/kem/frodokem/config.h deleted file mode 100644 index 946d9cd95..000000000 --- a/src/kem/frodokem/config.h +++ /dev/null @@ -1,90 +0,0 @@ -/******************************************************************************************** -* FrodoKEM: Learning with Errors Key Encapsulation -* -* Abstract: configuration file -*********************************************************************************************/ - -#ifndef _CONFIG_H_ -#define _CONFIG_H_ - -// Definition of operating system - -#define OS_WIN 1 -#define OS_NIX 2 - -#if defined(WINDOWS) // Microsoft Windows -#define OS_TARGET OS_WIN -#elif defined(NIX) // Unix-like operative systems -#define OS_TARGET OS_NIX -#else -#error-- "Unsupported OS" -#endif - -// Definition of compiler - -#define COMPILER_VC 1 -#define COMPILER_GCC 2 -#define COMPILER_CLANG 3 - -#if defined(_MSC_VER) // Microsoft Visual C compiler -#define COMPILER COMPILER_VC -#elif defined(__GNUC__) // GNU GCC compiler -#define COMPILER COMPILER_GCC -#elif defined(__clang__) // Clang compiler -#define COMPILER COMPILER_CLANG -#else -#error-- "Unsupported COMPILER" -#endif - -// Definition of the targeted architecture and basic data types - -#define TARGET_AMD64 1 -#define TARGET_x86 2 -#define TARGET_ARM 3 - -#if defined(_AMD64_) -#define TARGET TARGET_AMD64 -#elif defined(_X86_) -#define TARGET TARGET_x86 -#elif defined(_ARM_) -#define TARGET TARGET_ARM -#else -#error-- "Unsupported ARCHITECTURE" -#endif - -#if defined(WINDOWS) -#define ALIGN_HEADER(N) __declspec(align(N)) -#define ALIGN_FOOTER(N) -#else -#define ALIGN_HEADER(N) -#define ALIGN_FOOTER(N) __attribute__((aligned(N))) -#endif - -// Selecting implementation: fast, generic or reference -#if defined(_FAST_) // The "fast" implementation requires support for AVX2 and AES_NI instructions -#define USE_AVX2 -#define AES_ENABLE_NI -#define USE_FAST -#elif defined(_FAST_GENERIC_) -#define USE_FAST_GENERIC -#elif defined(_REFERENCE_) -#define USE_REFERENCE -#else -#error-- unsupported implementation -#endif - -// Defining method for generating matrix A -#if defined(_AES128_FOR_A_) -#define USE_AES128_FOR_A -#elif defined(_CSHAKE128_FOR_A_) -#define USE_CSHAKE128_FOR_A -#else - ##error -- missing method for generating matrix A -#endif - -// Selecting use of OpenSSL's AES functions -#if defined(_USE_OPENSSL_) -#define USE_OPENSSL -#endif - -#endif diff --git a/src/kem/frodokem/frodo640_aes.c b/src/kem/frodokem/frodo640_aes.c deleted file mode 100644 index e9bded64a..000000000 --- a/src/kem/frodokem/frodo640_aes.c +++ /dev/null @@ -1,20 +0,0 @@ -/******************************************************************************************** -* FrodoKEM: Learning with Errors Key Encapsulation -* -* Abstract: functions for FrodoKEM-640 -* Instantiates "frodo_macrify.c" with the necessary matrix arithmetic functions -*********************************************************************************************/ - -#include "frodo640_params.h" -#define _AES128_FOR_A_ - -// Selecting cSHAKE XOF function for the KEM and noise sampling -#define cshake OQS_SHA3_cshake128_simple - -#define crypto_kem_keypair OQS_KEM_frodokem_640_aes_keypair -#define crypto_kem_enc OQS_KEM_frodokem_640_aes_encaps -#define crypto_kem_dec OQS_KEM_frodokem_640_aes_decaps - -#include "frodo_macrify.h" -#include "kem.c" -#include "frodo_macrify.c" diff --git a/src/kem/frodokem/frodo640_cshake.c b/src/kem/frodokem/frodo640_cshake.c deleted file mode 100644 index 7956088cd..000000000 --- a/src/kem/frodokem/frodo640_cshake.c +++ /dev/null @@ -1,20 +0,0 @@ -/******************************************************************************************** -* FrodoKEM: Learning with Errors Key Encapsulation -* -* Abstract: functions for FrodoKEM-640 -* Instantiates "frodo_macrify.c" with the necessary matrix arithmetic functions -*********************************************************************************************/ - -#include "frodo640_params.h" -#define _CSHAKE128_FOR_A_ - -// Selecting cSHAKE XOF function for the KEM and noise sampling -#define cshake OQS_SHA3_cshake128_simple - -#define crypto_kem_keypair OQS_KEM_frodokem_640_cshake_keypair -#define crypto_kem_enc OQS_KEM_frodokem_640_cshake_encaps -#define crypto_kem_dec OQS_KEM_frodokem_640_cshake_decaps - -#include "frodo_macrify.h" -#include "kem.c" -#include "frodo_macrify.c" diff --git a/src/kem/frodokem/frodo640_params.h b/src/kem/frodokem/frodo640_params.h deleted file mode 100644 index 1499b1981..000000000 --- a/src/kem/frodokem/frodo640_params.h +++ /dev/null @@ -1,34 +0,0 @@ -#include - -#define CRYPTO_SECRETKEYBYTES 19872 // sizeof(s) + CRYPTO_PUBLICKEYBYTES + 2*PARAMS_N*PARAMS_NBAR -#define CRYPTO_PUBLICKEYBYTES 9616 // sizeof(seed_A) + (PARAMS_LOGQ*PARAMS_N*PARAMS_NBAR)/8 -#define CRYPTO_BYTES 16 -#define CRYPTO_CIPHERTEXTBYTES 9736 // (PARAMS_LOGQ*PARAMS_N*PARAMS_NBAR)/8 + (PARAMS_LOGQ*PARAMS_NBAR*PARAMS_NBAR)/8 + CRYPTO_BYTES - -#define PARAMS_N 640 -#define PARAMS_NBAR 8 -#define PARAMS_LOGQ 15 -#define PARAMS_Q (1 << PARAMS_LOGQ) -#define PARAMS_EXTRACTED_BITS 2 -#define PARAMS_STRIPE_STEP 8 -#define PARAMS_PARALLEL 4 -#define BYTES_SEED_A 16 -#define BYTES_MU (PARAMS_EXTRACTED_BITS * PARAMS_NBAR * PARAMS_NBAR) / 8 - -// CDF table -static uint16_t CDF_TABLE[12] = {4727, 13584, 20864, 26113, 29434, 31278, 32176, 32560, 32704, 32751, 32764, 32767}; -static uint16_t CDF_TABLE_LEN = 12; - -#if defined(_WIN32) -#define WINDOWS -#else -#define NIX -#endif - -#if defined(__amd64) || defined(__x86_64) -#define _AMD64_ -#elif defined(__i386) -#define _X86_ -#endif - -#define _FAST_GENERIC_ diff --git a/src/kem/frodokem/frodo976_aes.c b/src/kem/frodokem/frodo976_aes.c deleted file mode 100644 index 280eba239..000000000 --- a/src/kem/frodokem/frodo976_aes.c +++ /dev/null @@ -1,20 +0,0 @@ -/******************************************************************************************** -* FrodoKEM: Learning with Errors Key Encapsulation -* -* Abstract: functions for FrodoKEM-976 -* Instantiates "frodo_macrify.c" with the necessary matrix arithmetic functions -*********************************************************************************************/ - -#include "frodo976_params.h" -#define _AES128_FOR_A_ - -// Selecting cSHAKE XOF function for the KEM and noise sampling -#define cshake OQS_SHA3_cshake256_simple - -#define crypto_kem_keypair OQS_KEM_frodokem_976_aes_keypair -#define crypto_kem_enc OQS_KEM_frodokem_976_aes_encaps -#define crypto_kem_dec OQS_KEM_frodokem_976_aes_decaps - -#include "frodo_macrify.h" -#include "kem.c" -#include "frodo_macrify.c" diff --git a/src/kem/frodokem/frodo976_cshake.c b/src/kem/frodokem/frodo976_cshake.c deleted file mode 100644 index 5176359bc..000000000 --- a/src/kem/frodokem/frodo976_cshake.c +++ /dev/null @@ -1,20 +0,0 @@ -/******************************************************************************************** -* FrodoKEM: Learning with Errors Key Encapsulation -* -* Abstract: functions for FrodoKEM-976 -* Instantiates "frodo_macrify.c" with the necessary matrix arithmetic functions -*********************************************************************************************/ - -#include "frodo976_params.h" -#define _CSHAKE128_FOR_A_ - -// Selecting cSHAKE XOF function for the KEM and noise sampling -#define cshake OQS_SHA3_cshake256_simple - -#define crypto_kem_keypair OQS_KEM_frodokem_976_cshake_keypair -#define crypto_kem_enc OQS_KEM_frodokem_976_cshake_encaps -#define crypto_kem_dec OQS_KEM_frodokem_976_cshake_decaps - -#include "frodo_macrify.h" -#include "kem.c" -#include "frodo_macrify.c" diff --git a/src/kem/frodokem/frodo976_params.h b/src/kem/frodokem/frodo976_params.h deleted file mode 100644 index 2f8f911e3..000000000 --- a/src/kem/frodokem/frodo976_params.h +++ /dev/null @@ -1,34 +0,0 @@ -#include - -#define CRYPTO_SECRETKEYBYTES 31272 // sizeof(s) + CRYPTO_PUBLICKEYBYTES + 2*PARAMS_N*PARAMS_NBAR -#define CRYPTO_PUBLICKEYBYTES 15632 // sizeof(seed_A) + (PARAMS_LOGQ*PARAMS_N*PARAMS_NBAR)/8 -#define CRYPTO_BYTES 24 -#define CRYPTO_CIPHERTEXTBYTES 15768 // (PARAMS_LOGQ*PARAMS_N*PARAMS_NBAR)/8 + (PARAMS_LOGQ*PARAMS_NBAR*PARAMS_NBAR)/8 + CRYPTO_BYTES - -#define PARAMS_N 976 -#define PARAMS_NBAR 8 -#define PARAMS_LOGQ 16 -#define PARAMS_Q (1 << PARAMS_LOGQ) -#define PARAMS_EXTRACTED_BITS 3 -#define PARAMS_STRIPE_STEP 8 -#define PARAMS_PARALLEL 4 -#define BYTES_SEED_A 16 -#define BYTES_MU (PARAMS_EXTRACTED_BITS * PARAMS_NBAR * PARAMS_NBAR) / 8 - -// CDF table -static uint16_t CDF_TABLE[11] = {5638, 15915, 23689, 28571, 31116, 32217, 32613, 32731, 32760, 32766, 32767}; -static uint16_t CDF_TABLE_LEN = 11; - -#if defined(_WIN32) -#define WINDOWS -#else -#define NIX -#endif - -#if defined(__amd64) || defined(__x86_64) -#define _AMD64_ -#elif defined(__i386) -#define _X86_ -#endif - -#define _FAST_GENERIC_ diff --git a/src/kem/frodokem/frodo_macrify.c b/src/kem/frodokem/frodo_macrify.c deleted file mode 100644 index 058b6b2f2..000000000 --- a/src/kem/frodokem/frodo_macrify.c +++ /dev/null @@ -1,342 +0,0 @@ -/******************************************************************************************** -* FrodoKEM: Learning with Errors Key Encapsulation -* -* Abstract: matrix arithmetic functions used by the KEM -*********************************************************************************************/ - -#include - -#if defined(USE_AVX2) -#include -#endif - -static int frodo_mul_add_as_plus_e(uint16_t *out, const uint16_t *s, const uint16_t *e, const uint8_t *seed_A) { // Generate-and-multiply: generate matrix A (N x N) row-wise, multiply by s on the right. - // Inputs: s, e (N x N_BAR) - // Output: out = A*s + e (N x N_BAR) - int i, j, k; - ALIGN_HEADER(32) - int16_t a_row[4 * PARAMS_N] ALIGN_FOOTER(32) = {0}; - - for (i = 0; i < (PARAMS_N * PARAMS_NBAR); i += 2) { - *((uint32_t *) &out[i]) = *((const uint32_t *) &e[i]); - } - -#if defined(USE_AES128_FOR_A) - int16_t a_row_temp[4 * PARAMS_N] = {0}; // Take four lines of A at once - void *aes_key_schedule = NULL; - OQS_AES128_load_schedule(seed_A, &aes_key_schedule, 1); - - for (j = 0; j < PARAMS_N; j += PARAMS_STRIPE_STEP) { - a_row_temp[j + 1 + 0 * PARAMS_N] = j; // Loading values in the little-endian order - a_row_temp[j + 1 + 1 * PARAMS_N] = j; - a_row_temp[j + 1 + 2 * PARAMS_N] = j; - a_row_temp[j + 1 + 3 * PARAMS_N] = j; - } - - for (i = 0; i < PARAMS_N; i += 4) { - for (j = 0; j < PARAMS_N; j += PARAMS_STRIPE_STEP) { // Go through A, four rows at a time - a_row_temp[j + 0 * PARAMS_N] = i + 0; // Loading values in the little-endian order - a_row_temp[j + 1 * PARAMS_N] = i + 1; - a_row_temp[j + 2 * PARAMS_N] = i + 2; - a_row_temp[j + 3 * PARAMS_N] = i + 3; - } - - OQS_AES128_ECB_enc_sch((uint8_t *) a_row_temp, 4 * PARAMS_N * sizeof(int16_t), aes_key_schedule, (uint8_t *) a_row); -#elif defined(USE_CSHAKE128_FOR_A) -#if defined(WINDOWS) | !defined(USE_AVX2) - for (i = 0; i < PARAMS_N; i += 4) { - OQS_SHA3_cshake128_simple((unsigned char *) (a_row + 0 * PARAMS_N), (unsigned long long) (2 * PARAMS_N), (uint16_t)(256 + i + 0), seed_A, (unsigned long long) BYTES_SEED_A); - OQS_SHA3_cshake128_simple((unsigned char *) (a_row + 1 * PARAMS_N), (unsigned long long) (2 * PARAMS_N), (uint16_t)(256 + i + 1), seed_A, (unsigned long long) BYTES_SEED_A); - OQS_SHA3_cshake128_simple((unsigned char *) (a_row + 2 * PARAMS_N), (unsigned long long) (2 * PARAMS_N), (uint16_t)(256 + i + 2), seed_A, (unsigned long long) BYTES_SEED_A); - OQS_SHA3_cshake128_simple((unsigned char *) (a_row + 3 * PARAMS_N), (unsigned long long) (2 * PARAMS_N), (uint16_t)(256 + i + 3), seed_A, (unsigned long long) BYTES_SEED_A); -#else - for (i = 0; i < PARAMS_N; i += 4) { - cshake128_simple4x((unsigned char *) (a_row), (unsigned char *) (a_row + PARAMS_N), (unsigned char *) (a_row + 2 * PARAMS_N), (unsigned char *) (a_row + 3 * PARAMS_N), - (unsigned long long) (2 * PARAMS_N), (uint16_t)(256 + i), (uint16_t)(256 + i + 1), (uint16_t)(256 + i + 2), (uint16_t)(256 + i + 3), seed_A, (unsigned long long) BYTES_SEED_A); -#endif -#endif - - for (k = 0; k < PARAMS_NBAR; k++) { - uint16_t sum[4] = {0}; - for (j = 0; j < PARAMS_N; j++) { // Matrix-vector multiplication - uint16_t sp = s[k * PARAMS_N + j]; - sum[0] += a_row[0 * PARAMS_N + j] * sp; // Go through four lines with same s - sum[1] += a_row[1 * PARAMS_N + j] * sp; - sum[2] += a_row[2 * PARAMS_N + j] * sp; - sum[3] += a_row[3 * PARAMS_N + j] * sp; - } - out[(i + 0) * PARAMS_NBAR + k] += sum[0]; - out[(i + 2) * PARAMS_NBAR + k] += sum[2]; - out[(i + 1) * PARAMS_NBAR + k] += sum[1]; - out[(i + 3) * PARAMS_NBAR + k] += sum[3]; - } - } - -#if defined(USE_AES128_FOR_A) - OQS_AES128_free_schedule(aes_key_schedule); -#endif - return 1; -} - -static int frodo_mul_add_sa_plus_e(uint16_t *out, const uint16_t *s, const uint16_t *e, const uint8_t *seed_A) { // Generate-and-multiply: generate matrix A (N x N) column-wise, multiply by s' on the left. - // Inputs: s', e' (N_BAR x N) - // Output: out = s'*A + e' (N_BAR x N) - int i, j, kk; - - for (i = 0; i < (PARAMS_N * PARAMS_NBAR); i += 2) { - *((uint32_t *) &out[i]) = *((const uint32_t *) &e[i]); - } - -#if defined(USE_AES128_FOR_A) - int k; - uint16_t a_cols[PARAMS_N * PARAMS_STRIPE_STEP] = {0}; - ALIGN_HEADER(32) - uint16_t a_cols_t[PARAMS_N * PARAMS_STRIPE_STEP] ALIGN_FOOTER(32) = {0}; - uint16_t a_cols_temp[PARAMS_N * PARAMS_STRIPE_STEP] = {0}; - void *aes_key_schedule = NULL; - OQS_AES128_load_schedule(seed_A, &aes_key_schedule, 1); - - for (i = 0, j = 0; i < PARAMS_N; i++, j += PARAMS_STRIPE_STEP) { - a_cols_temp[j] = i; // Loading values in the little-endian order - } - - for (kk = 0; kk < PARAMS_N; kk += PARAMS_STRIPE_STEP) { // Go through A's columns, 8 (== PARAMS_STRIPE_STEP) columns at a time. - for (i = 0; i < (PARAMS_N * PARAMS_STRIPE_STEP); i += PARAMS_STRIPE_STEP) { - a_cols_temp[i + 1] = kk; // Loading values in the little-endian order - } - - OQS_AES128_ECB_enc_sch((uint8_t *) a_cols_temp, PARAMS_N * PARAMS_STRIPE_STEP * sizeof(int16_t), aes_key_schedule, (uint8_t *) a_cols); - - for (i = 0; i < PARAMS_N; i++) { // Transpose a_cols to have access to it in the column-major order. - for (k = 0; k < PARAMS_STRIPE_STEP; k++) { - a_cols_t[k * PARAMS_N + i] = a_cols[i * PARAMS_STRIPE_STEP + k]; - } - } - -#if !defined(USE_AVX2) - for (i = 0; i < PARAMS_NBAR; i++) { - for (k = 0; k < PARAMS_STRIPE_STEP; k += PARAMS_PARALLEL) { - uint16_t sum[PARAMS_PARALLEL] = {0}; - for (j = 0; j < PARAMS_N; j++) { // Matrix-vector multiplication - uint16_t sp = s[i * PARAMS_N + j]; - sum[0] += sp * a_cols_t[(k + 0) * PARAMS_N + j]; - sum[1] += sp * a_cols_t[(k + 1) * PARAMS_N + j]; - sum[2] += sp * a_cols_t[(k + 2) * PARAMS_N + j]; - sum[3] += sp * a_cols_t[(k + 3) * PARAMS_N + j]; - } - out[i * PARAMS_N + kk + k + 0] += sum[0]; - out[i * PARAMS_N + kk + k + 2] += sum[2]; - out[i * PARAMS_N + kk + k + 1] += sum[1]; - out[i * PARAMS_N + kk + k + 3] += sum[3]; - } - } - } -#else // Using vector intrinsics - for (i = 0; i < PARAMS_NBAR; i++) { - for (k = 0; k < PARAMS_STRIPE_STEP; k += PARAMS_PARALLEL) { - ALIGN_HEADER(32) - uint32_t sum[8 * PARAMS_PARALLEL] ALIGN_FOOTER(32); - __m256i a[PARAMS_PARALLEL], b, acc[PARAMS_PARALLEL]; - acc[0] = _mm256_setzero_si256(); - acc[1] = _mm256_setzero_si256(); - acc[2] = _mm256_setzero_si256(); - acc[3] = _mm256_setzero_si256(); - for (j = 0; j < PARAMS_N; j += 16) { // Matrix-vector multiplication - b = _mm256_load_si256((__m256i *) &s[i * PARAMS_N + j]); - a[0] = _mm256_load_si256((__m256i *) &a_cols_t[(k + 0) * PARAMS_N + j]); - a[0] = _mm256_madd_epi16(a[0], b); - acc[0] = _mm256_add_epi16(a[0], acc[0]); - a[1] = _mm256_load_si256((__m256i *) &a_cols_t[(k + 1) * PARAMS_N + j]); - a[1] = _mm256_madd_epi16(a[1], b); - acc[1] = _mm256_add_epi16(a[1], acc[1]); - a[2] = _mm256_load_si256((__m256i *) &a_cols_t[(k + 2) * PARAMS_N + j]); - a[2] = _mm256_madd_epi16(a[2], b); - acc[2] = _mm256_add_epi16(a[2], acc[2]); - a[3] = _mm256_load_si256((__m256i *) &a_cols_t[(k + 3) * PARAMS_N + j]); - a[3] = _mm256_madd_epi16(a[3], b); - acc[3] = _mm256_add_epi16(a[3], acc[3]); - } - _mm256_store_si256((__m256i *) (sum + (8 * 0)), acc[0]); - out[i * PARAMS_N + kk + k + 0] += sum[8 * 0 + 0] + sum[8 * 0 + 1] + sum[8 * 0 + 2] + sum[8 * 0 + 3] + sum[8 * 0 + 4] + sum[8 * 0 + 5] + sum[8 * 0 + 6] + sum[8 * 0 + 7]; - _mm256_store_si256((__m256i *) (sum + (8 * 1)), acc[1]); - out[i * PARAMS_N + kk + k + 1] += sum[8 * 1 + 0] + sum[8 * 1 + 1] + sum[8 * 1 + 2] + sum[8 * 1 + 3] + sum[8 * 1 + 4] + sum[8 * 1 + 5] + sum[8 * 1 + 6] + sum[8 * 1 + 7]; - _mm256_store_si256((__m256i *) (sum + (8 * 2)), acc[2]); - out[i * PARAMS_N + kk + k + 2] += sum[8 * 2 + 0] + sum[8 * 2 + 1] + sum[8 * 2 + 2] + sum[8 * 2 + 3] + sum[8 * 2 + 4] + sum[8 * 2 + 5] + sum[8 * 2 + 6] + sum[8 * 2 + 7]; - _mm256_store_si256((__m256i *) (sum + (8 * 3)), acc[3]); - out[i * PARAMS_N + kk + k + 3] += sum[8 * 3 + 0] + sum[8 * 3 + 1] + sum[8 * 3 + 2] + sum[8 * 3 + 3] + sum[8 * 3 + 4] + sum[8 * 3 + 5] + sum[8 * 3 + 6] + sum[8 * 3 + 7]; - } - } - } -#endif - OQS_AES128_free_schedule(aes_key_schedule); - -#elif defined(USE_CSHAKE128_FOR_A) // cSHAKE128 - int t = 0; - ALIGN_HEADER(32) - uint16_t a_cols[4 * PARAMS_N] ALIGN_FOOTER(32) = {0}; - -#if defined(WINDOWS) | !defined(USE_AVX2) - int k; - for (kk = 0; kk < PARAMS_N; kk += 4) { - OQS_SHA3_cshake128_simple((unsigned char *) (a_cols + 0 * PARAMS_N), (unsigned long long) (2 * PARAMS_N), (uint16_t)(256 + kk + 0), seed_A, (unsigned long long) BYTES_SEED_A); - OQS_SHA3_cshake128_simple((unsigned char *) (a_cols + 1 * PARAMS_N), (unsigned long long) (2 * PARAMS_N), (uint16_t)(256 + kk + 1), seed_A, (unsigned long long) BYTES_SEED_A); - OQS_SHA3_cshake128_simple((unsigned char *) (a_cols + 2 * PARAMS_N), (unsigned long long) (2 * PARAMS_N), (uint16_t)(256 + kk + 2), seed_A, (unsigned long long) BYTES_SEED_A); - OQS_SHA3_cshake128_simple((unsigned char *) (a_cols + 3 * PARAMS_N), (unsigned long long) (2 * PARAMS_N), (uint16_t)(256 + kk + 3), seed_A, (unsigned long long) BYTES_SEED_A); - - for (i = 0; i < PARAMS_NBAR; i++) { - uint16_t sum[PARAMS_N] = {0}; - for (j = 0; j < 4; j++) { - uint16_t sp = s[i * PARAMS_N + kk + j]; - for (k = 0; k < PARAMS_N; k++) { // Matrix-vector multiplication - sum[k] += sp * a_cols[(t + j) * PARAMS_N + k]; - } - } - for (k = 0; k < PARAMS_N; k++) { - out[i * PARAMS_N + k] += sum[k]; - } - } - } -#else // Using vector intrinsics - for (kk = 0; kk < PARAMS_N; kk += 4) { - cshake128_simple4x((unsigned char *) (a_cols), (unsigned char *) (a_cols + PARAMS_N), (unsigned char *) (a_cols + 2 * PARAMS_N), (unsigned char *) (a_cols + 3 * PARAMS_N), - (unsigned long long) (2 * PARAMS_N), (uint16_t)(256 + kk), (uint16_t)(256 + kk + 1), (uint16_t)(256 + kk + 2), (uint16_t)(256 + kk + 3), seed_A, (unsigned long long) BYTES_SEED_A); - - for (i = 0; i < PARAMS_NBAR; i++) { - __m256i a, b0, b1, b2, b3, acc[PARAMS_N / 16]; - b0 = _mm256_set1_epi16(s[i * PARAMS_N + kk + 0]); - b1 = _mm256_set1_epi16(s[i * PARAMS_N + kk + 1]); - b2 = _mm256_set1_epi16(s[i * PARAMS_N + kk + 2]); - b3 = _mm256_set1_epi16(s[i * PARAMS_N + kk + 3]); - for (j = 0; j < PARAMS_N; j += 16) { // Matrix-vector multiplication - acc[j / 16] = _mm256_load_si256((__m256i *) &out[i * PARAMS_N + j]); - a = _mm256_load_si256((__m256i *) &a_cols[(t + 0) * PARAMS_N + j]); - a = _mm256_mullo_epi16(a, b0); - acc[j / 16] = _mm256_add_epi16(a, acc[j / 16]); - a = _mm256_load_si256((__m256i *) &a_cols[(t + 1) * PARAMS_N + j]); - a = _mm256_mullo_epi16(a, b1); - acc[j / 16] = _mm256_add_epi16(a, acc[j / 16]); - a = _mm256_load_si256((__m256i *) &a_cols[(t + 2) * PARAMS_N + j]); - a = _mm256_mullo_epi16(a, b2); - acc[j / 16] = _mm256_add_epi16(a, acc[j / 16]); - a = _mm256_load_si256((__m256i *) &a_cols[(t + 3) * PARAMS_N + j]); - a = _mm256_mullo_epi16(a, b3); - acc[j / 16] = _mm256_add_epi16(a, acc[j / 16]); - } - - for (j = 0; j < PARAMS_N / 16; j++) { - _mm256_store_si256((__m256i *) &out[i * PARAMS_N + 16 * j], acc[j]); - } - } - } -#endif -#endif - - return 1; -} - -static void frodo_mul_bs(uint16_t *out, const uint16_t *b, const uint16_t *s) { // Multiply by s on the right - // Inputs: b (N_BAR x N), s (N x N_BAR) - // Output: out = b*s (N_BAR x N_BAR) - int i, j, k; - - for (i = 0; i < PARAMS_NBAR; i++) { - for (j = 0; j < PARAMS_NBAR; j++) { - out[i * PARAMS_NBAR + j] = 0; - for (k = 0; k < PARAMS_N; k++) { - out[i * PARAMS_NBAR + j] += b[i * PARAMS_N + k] * s[j * PARAMS_N + k]; - } - out[i * PARAMS_NBAR + j] = (uint32_t)(out[i * PARAMS_NBAR + j]) & ((1 << PARAMS_LOGQ) - 1); - } - } -} - -static void frodo_mul_add_sb_plus_e(uint16_t *out, const uint16_t *b, const uint16_t *s, const uint16_t *e) { // Multiply by s on the left - // Inputs: b (N x N_BAR), s (N_BAR x N), e (N_BAR x N_BAR) - // Output: out = s*b + e (N_BAR x N_BAR) - int i, j, k; - - for (k = 0; k < PARAMS_NBAR; k++) { - for (i = 0; i < PARAMS_NBAR; i++) { - out[k * PARAMS_NBAR + i] = e[k * PARAMS_NBAR + i]; - for (j = 0; j < PARAMS_N; j++) { - out[k * PARAMS_NBAR + i] += s[k * PARAMS_N + j] * b[j * PARAMS_NBAR + i]; - } - out[k * PARAMS_NBAR + i] = (uint32_t)(out[k * PARAMS_NBAR + i]) & ((1 << PARAMS_LOGQ) - 1); - } - } -} - -static void frodo_add(uint16_t *out, const uint16_t *a, const uint16_t *b) { // Add a and b - // Inputs: a, b (N_BAR x N_BAR) - // Output: c = a + b - - for (int i = 0; i < (PARAMS_NBAR * PARAMS_NBAR); i++) { - out[i] = (a[i] + b[i]) & ((1 << PARAMS_LOGQ) - 1); - } -} - -static void frodo_sub(uint16_t *out, const uint16_t *a, const uint16_t *b) { // Subtract a and b - // Inputs: a, b (N_BAR x N_BAR) - // Output: c = a - b - - for (int i = 0; i < (PARAMS_NBAR * PARAMS_NBAR); i++) { - out[i] = (a[i] - b[i]) & ((1 << PARAMS_LOGQ) - 1); - } -} - -static void frodo_key_encode(uint16_t *out, const uint16_t *in) { // Encoding - unsigned int i, j, npieces_word = 8; - unsigned int nwords = (PARAMS_NBAR * PARAMS_NBAR) / 8; - uint64_t temp, mask = ((uint64_t) 1 << PARAMS_EXTRACTED_BITS) - 1; - uint16_t *pos = out; - - for (i = 0; i < nwords; i++) { - temp = 0; - for (j = 0; j < PARAMS_EXTRACTED_BITS; j++) - temp |= ((uint64_t)((const uint8_t *) in)[i * PARAMS_EXTRACTED_BITS + j]) << (8 * j); - for (j = 0; j < npieces_word; j++) { - *pos = (uint16_t)((temp & mask) << (PARAMS_LOGQ - PARAMS_EXTRACTED_BITS)); - temp >>= PARAMS_EXTRACTED_BITS; - pos++; - } - } -} - -static void frodo_key_decode(uint16_t *out, const uint16_t *in) { // Decoding - unsigned int i, j, index = 0, npieces_word = 8; - unsigned int nwords = (PARAMS_NBAR * PARAMS_NBAR) / 8; - uint16_t temp, maskex = ((uint16_t) 1 << PARAMS_EXTRACTED_BITS) - 1, maskq = ((uint16_t) 1 << PARAMS_LOGQ) - 1; - uint8_t *pos = (uint8_t *) out; - uint64_t templong; - - for (i = 0; i < nwords; i++) { - templong = 0; - for (j = 0; j < npieces_word; j++) { // temp = floor(in*2^{-11}+0.5) - temp = ((in[index] & maskq) + (1 << (PARAMS_LOGQ - PARAMS_EXTRACTED_BITS - 1))) >> (PARAMS_LOGQ - PARAMS_EXTRACTED_BITS); - templong |= ((uint64_t)(temp & maskex)) << (PARAMS_EXTRACTED_BITS * j); - index++; - } - for (j = 0; j < PARAMS_EXTRACTED_BITS; j++) - pos[i * PARAMS_EXTRACTED_BITS + j] = (templong >> (8 * j)) & 0xFF; - } -} - -static void frodo_sample_n(uint16_t *s, const size_t n) { // Fills vector s with n samples from the noise distribution which requires 16 bits to sample. - // The distribution is specified by its CDF. - // Input: pseudo-random values (2*n bytes) passed in s. The input is overwritten by the output. - unsigned int i, j; - - for (i = 0; i < n; ++i) { - uint8_t sample = 0; - uint16_t prnd = s[i] >> 1; // Drop the least significant bit - uint8_t sign = s[i] & 0x1; // Pick the least significant bit - - // No need to compare with the last value. - for (j = 0; j < (unsigned int) (CDF_TABLE_LEN - 1); j++) { - // Constant time comparison: 1 if CDF_TABLE[j] < s, 0 otherwise. Uses the fact that CDF_TABLE[j] and s fit in 15 bits. - sample += (uint16_t)(CDF_TABLE[j] - prnd) >> 15; - } - // Assuming that sign is either 0 or 1, flips sample iff sign = 1 - s[i] = ((-sign) ^ sample) + sign; - } -} diff --git a/src/kem/frodokem/frodo_macrify.h b/src/kem/frodokem/frodo_macrify.h deleted file mode 100644 index c356ece11..000000000 --- a/src/kem/frodokem/frodo_macrify.h +++ /dev/null @@ -1,28 +0,0 @@ -/******************************************************************************************** -* FrodoKEM: Learning with Errors Key Encapsulation -* -* Abstract: header for internal functions -*********************************************************************************************/ - -#ifndef _FRODOKEM_MACRIFY_H_ -#define _FRODOKEM_MACRIFY_H_ - -#include -#include -#include "config.h" - -void oqs_kem_frodokem_pack(unsigned char *out, const size_t outlen, const uint16_t *in, const size_t inlen, const unsigned char lsb); -void oqs_kem_frodokem_unpack(uint16_t *out, const size_t outlen, const unsigned char *in, const size_t inlen, const unsigned char lsb); -static void frodo_sample_n(uint16_t *s, const size_t n); - -static int frodo_mul_add_as_plus_e(uint16_t *b, const uint16_t *s, const uint16_t *e, const uint8_t *seed_A); -static int frodo_mul_add_sa_plus_e(uint16_t *b, const uint16_t *s, const uint16_t *e, const uint8_t *seed_A); -static void frodo_mul_add_sb_plus_e(uint16_t *out, const uint16_t *b, const uint16_t *s, const uint16_t *e); -static void frodo_mul_bs(uint16_t *out, const uint16_t *b, const uint16_t *s); - -static void frodo_add(uint16_t *out, const uint16_t *a, const uint16_t *b); -static void frodo_sub(uint16_t *out, const uint16_t *a, const uint16_t *b); -static void frodo_key_encode(uint16_t *out, const uint16_t *in); -static void frodo_key_decode(uint16_t *out, const uint16_t *in); - -#endif diff --git a/src/kem/frodokem/kem.c b/src/kem/frodokem/kem.c deleted file mode 100644 index 0f2db4e00..000000000 --- a/src/kem/frodokem/kem.c +++ /dev/null @@ -1,158 +0,0 @@ -/******************************************************************************************** -* FrodoKEM: Learning with Errors Key Encapsulation -* -* Abstract: Key Encapsulation Mechanism (KEM) based on Frodo -*********************************************************************************************/ - -#include -#include - -#include - -OQS_API int crypto_kem_keypair(unsigned char *pk, unsigned char *sk) { // Frodo-KEM's key generation - // Outputs: public key pk ( BYTES_SEED_A + (PARAMS_LOGQ*PARAMS_N*PARAMS_NBAR)/8 bytes) - // secret key sk (CRYPTO_BYTES + BYTES_SEED_A + (PARAMS_LOGQ*PARAMS_N*PARAMS_NBAR)/8 + 2*PARAMS_N*PARAMS_NBAR bytes) - uint16_t B[PARAMS_N * PARAMS_NBAR] = {0}, S[2 * PARAMS_N * PARAMS_NBAR] = {0}; - uint16_t *E = (uint16_t *) &S[PARAMS_N * PARAMS_NBAR]; - uint8_t *randomness = sk; - - // Generate the secret value s, the seed for S and E, and the seed for A. Add seed_A to the public key - OQS_randombytes(randomness, 2 * CRYPTO_BYTES + BYTES_SEED_A); - cshake(pk, BYTES_SEED_A, 0, randomness + 2 * CRYPTO_BYTES, (unsigned long long) (BYTES_SEED_A)); - - // Generate S and E, and compute B = A*S + E. Generate A on-the-fly - cshake((uint8_t *) S, 2 * PARAMS_N * PARAMS_NBAR * sizeof(uint16_t), 1, randomness + CRYPTO_BYTES, (unsigned long long) (CRYPTO_BYTES)); - frodo_sample_n(S, PARAMS_N * PARAMS_NBAR); - frodo_sample_n(E, PARAMS_N * PARAMS_NBAR); - frodo_mul_add_as_plus_e(B, S, E, pk); - - // Encode the second part of the public key - oqs_kem_frodokem_pack(pk + BYTES_SEED_A, CRYPTO_PUBLICKEYBYTES - BYTES_SEED_A, B, PARAMS_N * PARAMS_NBAR, PARAMS_LOGQ); - - // Add pk and S to the secret key - memcpy(&sk[CRYPTO_BYTES], pk, CRYPTO_PUBLICKEYBYTES); - memcpy(&sk[CRYPTO_BYTES + CRYPTO_PUBLICKEYBYTES], S, 2 * PARAMS_N * PARAMS_NBAR); - - // Cleanup: - OQS_MEM_cleanse((void *) S, PARAMS_N * PARAMS_NBAR / 2); - OQS_MEM_cleanse((void *) E, PARAMS_N * PARAMS_NBAR / 2); - return OQS_SUCCESS; -} - -OQS_API int crypto_kem_enc(unsigned char *ct, unsigned char *ss, const unsigned char *pk) { // Frodo-KEM's key encapsulation - unsigned char randomness[BYTES_MU]; - uint16_t B[PARAMS_N * PARAMS_NBAR] = {0}, V[PARAMS_NBAR * PARAMS_NBAR] = {0}, C[PARAMS_NBAR * PARAMS_NBAR] = {0}; - ALIGN_HEADER(32) - uint16_t Bp[PARAMS_N * PARAMS_NBAR] ALIGN_FOOTER(32) = {0}; - ALIGN_HEADER(32) - uint16_t Sp[(2 * PARAMS_N + PARAMS_NBAR) * PARAMS_NBAR] ALIGN_FOOTER(32) = {0}; - uint16_t *Ep = (uint16_t *) &Sp[PARAMS_N * PARAMS_NBAR]; - uint16_t *Epp = (uint16_t *) &Sp[2 * PARAMS_N * PARAMS_NBAR]; - uint8_t temp[CRYPTO_CIPHERTEXTBYTES + CRYPTO_BYTES], G[3 * CRYPTO_BYTES]; - - // temp <- pk||mu, and generate (r||KK||d) = G(pk||mu) - OQS_randombytes(randomness, BYTES_MU); - memcpy(temp, pk, CRYPTO_PUBLICKEYBYTES); - memcpy(&temp[CRYPTO_PUBLICKEYBYTES], randomness, BYTES_MU); - cshake(G, 3 * CRYPTO_BYTES, 2, temp, (unsigned long long) (CRYPTO_PUBLICKEYBYTES + BYTES_MU)); - - // Generate Sp and Ep, and compute Bp = Sp*A + Ep. Generate A on-the-fly - cshake((uint8_t *) Sp, (2 * PARAMS_N + PARAMS_NBAR) * PARAMS_NBAR * sizeof(uint16_t), 3, G, (unsigned long long) (CRYPTO_BYTES)); - frodo_sample_n(Sp, PARAMS_N * PARAMS_NBAR); - frodo_sample_n(Ep, PARAMS_N * PARAMS_NBAR); - frodo_mul_add_sa_plus_e(Bp, Sp, Ep, temp); - oqs_kem_frodokem_pack(ct, (PARAMS_LOGQ * PARAMS_N * PARAMS_NBAR) / 8, Bp, PARAMS_N * PARAMS_NBAR, PARAMS_LOGQ); - - // Generate Epp, and compute V = Sp*B + Epp - frodo_sample_n(Epp, PARAMS_NBAR * PARAMS_NBAR); - oqs_kem_frodokem_unpack(B, PARAMS_N * PARAMS_NBAR, temp + BYTES_SEED_A, CRYPTO_PUBLICKEYBYTES - BYTES_SEED_A, PARAMS_LOGQ); - frodo_mul_add_sb_plus_e(V, B, Sp, Epp); - - // Encode mu, and compute C = V + enc(mu) (mode q) - frodo_key_encode(C, (uint16_t *) (temp + CRYPTO_PUBLICKEYBYTES)); - frodo_add(C, V, C); - oqs_kem_frodokem_pack(ct + (PARAMS_LOGQ * PARAMS_N * PARAMS_NBAR) / 8, (PARAMS_LOGQ * PARAMS_NBAR * PARAMS_NBAR) / 8, C, PARAMS_NBAR * PARAMS_NBAR, PARAMS_LOGQ); - - // Compute ss = F(ct||KK||d) and the ciphertext CT = ct||d - memcpy(temp, ct, CRYPTO_CIPHERTEXTBYTES - CRYPTO_BYTES); - memcpy(&temp[CRYPTO_CIPHERTEXTBYTES - CRYPTO_BYTES], &G[CRYPTO_BYTES], 2 * CRYPTO_BYTES); - cshake(ss, CRYPTO_BYTES, 4, temp, (unsigned long long) (CRYPTO_CIPHERTEXTBYTES + CRYPTO_BYTES)); - memcpy(&ct[CRYPTO_CIPHERTEXTBYTES - CRYPTO_BYTES], &G[2 * CRYPTO_BYTES], CRYPTO_BYTES); - - // Cleanup: - OQS_MEM_cleanse((void *) Sp, PARAMS_N * PARAMS_NBAR / 2); - OQS_MEM_cleanse((void *) Ep, PARAMS_N * PARAMS_NBAR / 2); - OQS_MEM_cleanse((void *) Epp, PARAMS_NBAR * PARAMS_NBAR / 2); - OQS_MEM_cleanse((void *) V, PARAMS_NBAR * PARAMS_NBAR / 2); - OQS_MEM_cleanse((void *) G, CRYPTO_BYTES / 2); - OQS_MEM_cleanse((void *) (temp + CRYPTO_CIPHERTEXTBYTES - CRYPTO_BYTES), CRYPTO_BYTES / 2); - return OQS_SUCCESS; -} - -OQS_API int crypto_kem_dec(unsigned char *ss, const unsigned char *ct, const unsigned char *sk) { // Frodo-KEM's key decapsulation - uint16_t B[PARAMS_N * PARAMS_NBAR] = {0}, Bp[PARAMS_N * PARAMS_NBAR] = {0}, W[PARAMS_NBAR * PARAMS_NBAR] = {0}; - uint16_t C[PARAMS_NBAR * PARAMS_NBAR] = {0}, CC[PARAMS_NBAR * PARAMS_NBAR] = {0}; - const uint16_t *S = (const uint16_t *) (sk + CRYPTO_BYTES + CRYPTO_PUBLICKEYBYTES); - ALIGN_HEADER(32) - uint16_t BBp[PARAMS_N * PARAMS_NBAR] ALIGN_FOOTER(32) = {0}; - ALIGN_HEADER(32) - uint16_t Sp[(2 * PARAMS_N + PARAMS_NBAR) * PARAMS_NBAR] ALIGN_FOOTER(32) = {0}; - uint16_t *Ep = (uint16_t *) &Sp[PARAMS_N * PARAMS_NBAR]; - uint16_t *Epp = (uint16_t *) &Sp[2 * PARAMS_N * PARAMS_NBAR]; - uint8_t temp[CRYPTO_CIPHERTEXTBYTES + CRYPTO_BYTES], G[3 * CRYPTO_BYTES], *seed_A = temp; - - // temp <- pk - memcpy(temp, &sk[CRYPTO_BYTES], CRYPTO_PUBLICKEYBYTES); - - // Compute W = C - Bp*S (mod q), and decode the randomness mu - oqs_kem_frodokem_unpack(Bp, PARAMS_N * PARAMS_NBAR, ct, (PARAMS_LOGQ * PARAMS_N * PARAMS_NBAR) / 8, PARAMS_LOGQ); - oqs_kem_frodokem_unpack(C, PARAMS_NBAR * PARAMS_NBAR, ct + (PARAMS_LOGQ * PARAMS_N * PARAMS_NBAR) / 8, (PARAMS_LOGQ * PARAMS_NBAR * PARAMS_NBAR) / 8, PARAMS_LOGQ); - frodo_mul_bs(W, Bp, S); - frodo_sub(W, C, W); - frodo_key_decode((uint16_t *) (temp + CRYPTO_PUBLICKEYBYTES), W); - - // Generate (r||KK||d) = G(pk||mu) - cshake(G, 3 * CRYPTO_BYTES, 2, temp, (unsigned long long) (CRYPTO_PUBLICKEYBYTES + BYTES_MU)); - - // Generate Sp and Ep, and compute BBp = Sp*A + Ep. Generate A on-the-fly - cshake((uint8_t *) Sp, (2 * PARAMS_N + PARAMS_NBAR) * PARAMS_NBAR * sizeof(uint16_t), 3, G, (unsigned long long) (CRYPTO_BYTES)); - frodo_sample_n(Sp, PARAMS_N * PARAMS_NBAR); - frodo_sample_n(Ep, PARAMS_N * PARAMS_NBAR); - frodo_mul_add_sa_plus_e(BBp, Sp, Ep, seed_A); - - // Generate Epp, and compute W = Sp*B + Epp - frodo_sample_n(Epp, PARAMS_NBAR * PARAMS_NBAR); - oqs_kem_frodokem_unpack(B, PARAMS_N * PARAMS_NBAR, temp + BYTES_SEED_A, CRYPTO_PUBLICKEYBYTES - BYTES_SEED_A, PARAMS_LOGQ); - frodo_mul_add_sb_plus_e(W, B, Sp, Epp); - - // Encode mu, and compute CC = W + enc(mu) (mode q) - frodo_key_encode(CC, (uint16_t *) (temp + CRYPTO_PUBLICKEYBYTES)); - frodo_add(CC, W, CC); - - // temp <- ct - memcpy(temp, ct, CRYPTO_CIPHERTEXTBYTES - CRYPTO_BYTES); - - // Reducing BBp modulo q - for (int i = 0; i < PARAMS_N * PARAMS_NBAR; i++) - BBp[i] = BBp[i] & ((1 << PARAMS_LOGQ) - 1); - - // Is (dd == d & Bp == BBp & C == CC) = true - if (memcmp(G + 2 * CRYPTO_BYTES, ct + CRYPTO_CIPHERTEXTBYTES - CRYPTO_BYTES, CRYPTO_BYTES) == 0 && - memcmp(Bp, BBp, 2 * PARAMS_N * PARAMS_NBAR) == 0 && - memcmp(C, CC, 2 * PARAMS_NBAR * PARAMS_NBAR) == 0) { // Load (KK || d) to do ss = F(ct||KK||d) - memcpy(&temp[CRYPTO_CIPHERTEXTBYTES - CRYPTO_BYTES], &G[CRYPTO_BYTES], 2 * CRYPTO_BYTES); - } else { // Load (s || d) to do ss = F(ct||s||d) - memcpy(&temp[CRYPTO_CIPHERTEXTBYTES - CRYPTO_BYTES], sk, CRYPTO_BYTES); - memcpy(&temp[CRYPTO_CIPHERTEXTBYTES], &G[2 * CRYPTO_BYTES], CRYPTO_BYTES); - } - cshake(ss, CRYPTO_BYTES, 4, temp, (unsigned long long) (CRYPTO_CIPHERTEXTBYTES + CRYPTO_BYTES)); - - // Cleanup: - OQS_MEM_cleanse((void *) Sp, PARAMS_N * PARAMS_NBAR / 2); - OQS_MEM_cleanse((void *) Ep, PARAMS_N * PARAMS_NBAR / 2); - OQS_MEM_cleanse((void *) Epp, PARAMS_NBAR * PARAMS_NBAR / 2); - OQS_MEM_cleanse((void *) W, PARAMS_NBAR * PARAMS_NBAR / 2); - OQS_MEM_cleanse((void *) G, CRYPTO_BYTES / 2); - OQS_MEM_cleanse((void *) (temp + CRYPTO_CIPHERTEXTBYTES - CRYPTO_BYTES), CRYPTO_BYTES / 2); - return OQS_SUCCESS; -} diff --git a/src/kem/frodokem/kem_frodokem.c b/src/kem/frodokem/kem_frodokem.c deleted file mode 100644 index 85bb1254a..000000000 --- a/src/kem/frodokem/kem_frodokem.c +++ /dev/null @@ -1,115 +0,0 @@ -#include - -#include - -#ifdef OQS_ENABLE_KEM_frodokem_640_aes - -OQS_KEM *OQS_KEM_frodokem_640_aes_new() { - - OQS_KEM *kem = malloc(sizeof(OQS_KEM)); - if (kem == NULL) { - return NULL; - } - kem->method_name = OQS_KEM_alg_frodokem_640_aes; - kem->alg_version = "https://github.com/Microsoft/PQCrypto-LWEKE/commit/47da00a91270b6f103232314eef0b891b83bfd3b"; - - kem->claimed_nist_level = 1; - kem->ind_cca = true; - - kem->length_public_key = OQS_KEM_frodokem_640_aes_length_public_key; - kem->length_secret_key = OQS_KEM_frodokem_640_aes_length_secret_key; - kem->length_ciphertext = OQS_KEM_frodokem_640_aes_length_ciphertext; - kem->length_shared_secret = OQS_KEM_frodokem_640_aes_length_shared_secret; - - kem->keypair = OQS_KEM_frodokem_640_aes_keypair; - kem->encaps = OQS_KEM_frodokem_640_aes_encaps; - kem->decaps = OQS_KEM_frodokem_640_aes_decaps; - - return kem; -} - -#endif - -#ifdef OQS_ENABLE_KEM_frodokem_976_aes - -OQS_KEM *OQS_KEM_frodokem_976_aes_new() { - - OQS_KEM *kem = malloc(sizeof(OQS_KEM)); - if (kem == NULL) { - return NULL; - } - kem->method_name = OQS_KEM_alg_frodokem_976_aes; - kem->alg_version = "https://github.com/Microsoft/PQCrypto-LWEKE/commit/47da00a91270b6f103232314eef0b891b83bfd3b"; - - kem->claimed_nist_level = 3; - kem->ind_cca = true; - - kem->length_public_key = OQS_KEM_frodokem_976_aes_length_public_key; - kem->length_secret_key = OQS_KEM_frodokem_976_aes_length_secret_key; - kem->length_ciphertext = OQS_KEM_frodokem_976_aes_length_ciphertext; - kem->length_shared_secret = OQS_KEM_frodokem_976_aes_length_shared_secret; - - kem->keypair = OQS_KEM_frodokem_976_aes_keypair; - kem->encaps = OQS_KEM_frodokem_976_aes_encaps; - kem->decaps = OQS_KEM_frodokem_976_aes_decaps; - - return kem; -} - -#endif - -#ifdef OQS_ENABLE_KEM_frodokem_640_cshake - -OQS_KEM *OQS_KEM_frodokem_640_cshake_new() { - - OQS_KEM *kem = malloc(sizeof(OQS_KEM)); - if (kem == NULL) { - return NULL; - } - kem->method_name = OQS_KEM_alg_frodokem_640_cshake; - kem->alg_version = "https://github.com/Microsoft/PQCrypto-LWEKE/commit/47da00a91270b6f103232314eef0b891b83bfd3b"; - - kem->claimed_nist_level = 1; - kem->ind_cca = true; - - kem->length_public_key = OQS_KEM_frodokem_640_cshake_length_public_key; - kem->length_secret_key = OQS_KEM_frodokem_640_cshake_length_secret_key; - kem->length_ciphertext = OQS_KEM_frodokem_640_cshake_length_ciphertext; - kem->length_shared_secret = OQS_KEM_frodokem_640_cshake_length_shared_secret; - - kem->keypair = OQS_KEM_frodokem_640_cshake_keypair; - kem->encaps = OQS_KEM_frodokem_640_cshake_encaps; - kem->decaps = OQS_KEM_frodokem_640_cshake_decaps; - - return kem; -} - -#endif - -#ifdef OQS_ENABLE_KEM_frodokem_976_cshake - -OQS_KEM *OQS_KEM_frodokem_976_cshake_new() { - - OQS_KEM *kem = malloc(sizeof(OQS_KEM)); - if (kem == NULL) { - return NULL; - } - kem->method_name = OQS_KEM_alg_frodokem_976_cshake; - kem->alg_version = "https://github.com/Microsoft/PQCrypto-LWEKE/commit/47da00a91270b6f103232314eef0b891b83bfd3b"; - - kem->claimed_nist_level = 3; - kem->ind_cca = true; - - kem->length_public_key = OQS_KEM_frodokem_976_cshake_length_public_key; - kem->length_secret_key = OQS_KEM_frodokem_976_cshake_length_secret_key; - kem->length_ciphertext = OQS_KEM_frodokem_976_cshake_length_ciphertext; - kem->length_shared_secret = OQS_KEM_frodokem_976_cshake_length_shared_secret; - - kem->keypair = OQS_KEM_frodokem_976_cshake_keypair; - kem->encaps = OQS_KEM_frodokem_976_cshake_encaps; - kem->decaps = OQS_KEM_frodokem_976_cshake_decaps; - - return kem; -} - -#endif diff --git a/src/kem/frodokem/kem_frodokem.h b/src/kem/frodokem/kem_frodokem.h index 1102b1064..44796a2bf 100644 --- a/src/kem/frodokem/kem_frodokem.h +++ b/src/kem/frodokem/kem_frodokem.h @@ -4,63 +4,69 @@ #include #ifdef OQS_ENABLE_KEM_frodokem_640_aes - #define OQS_KEM_frodokem_640_aes_length_public_key 9616 -#define OQS_KEM_frodokem_640_aes_length_secret_key 19872 -#define OQS_KEM_frodokem_640_aes_length_ciphertext 9736 +#define OQS_KEM_frodokem_640_aes_length_secret_key 19888 +#define OQS_KEM_frodokem_640_aes_length_ciphertext 9720 #define OQS_KEM_frodokem_640_aes_length_shared_secret 16 - OQS_KEM *OQS_KEM_frodokem_640_aes_new(); - OQS_API OQS_STATUS OQS_KEM_frodokem_640_aes_keypair(uint8_t *public_key, uint8_t *secret_key); OQS_API OQS_STATUS OQS_KEM_frodokem_640_aes_encaps(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key); OQS_API OQS_STATUS OQS_KEM_frodokem_640_aes_decaps(uint8_t *shared_secret, const unsigned char *ciphertext, const uint8_t *secret_key); +#endif +#ifdef OQS_ENABLE_KEM_frodokem_640_shake +#define OQS_KEM_frodokem_640_shake_length_public_key 9616 +#define OQS_KEM_frodokem_640_shake_length_secret_key 19888 +#define OQS_KEM_frodokem_640_shake_length_ciphertext 9720 +#define OQS_KEM_frodokem_640_shake_length_shared_secret 16 +OQS_KEM *OQS_KEM_frodokem_640_shake_new(); +OQS_API OQS_STATUS OQS_KEM_frodokem_640_shake_keypair(uint8_t *public_key, uint8_t *secret_key); +OQS_API OQS_STATUS OQS_KEM_frodokem_640_shake_encaps(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key); +OQS_API OQS_STATUS OQS_KEM_frodokem_640_shake_decaps(uint8_t *shared_secret, const unsigned char *ciphertext, const uint8_t *secret_key); #endif #ifdef OQS_ENABLE_KEM_frodokem_976_aes - #define OQS_KEM_frodokem_976_aes_length_public_key 15632 -#define OQS_KEM_frodokem_976_aes_length_secret_key 31272 -#define OQS_KEM_frodokem_976_aes_length_ciphertext 15768 +#define OQS_KEM_frodokem_976_aes_length_secret_key 31296 +#define OQS_KEM_frodokem_976_aes_length_ciphertext 15744 #define OQS_KEM_frodokem_976_aes_length_shared_secret 24 - OQS_KEM *OQS_KEM_frodokem_976_aes_new(); - OQS_API OQS_STATUS OQS_KEM_frodokem_976_aes_keypair(uint8_t *public_key, uint8_t *secret_key); OQS_API OQS_STATUS OQS_KEM_frodokem_976_aes_encaps(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key); OQS_API OQS_STATUS OQS_KEM_frodokem_976_aes_decaps(uint8_t *shared_secret, const unsigned char *ciphertext, const uint8_t *secret_key); - #endif -#ifdef OQS_ENABLE_KEM_frodokem_640_cshake - -#define OQS_KEM_frodokem_640_cshake_length_public_key 9616 -#define OQS_KEM_frodokem_640_cshake_length_secret_key 19872 -#define OQS_KEM_frodokem_640_cshake_length_ciphertext 9736 -#define OQS_KEM_frodokem_640_cshake_length_shared_secret 16 - -OQS_KEM *OQS_KEM_frodokem_640_cshake_new(); - -OQS_API OQS_STATUS OQS_KEM_frodokem_640_cshake_keypair(uint8_t *public_key, uint8_t *secret_key); -OQS_API OQS_STATUS OQS_KEM_frodokem_640_cshake_encaps(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key); -OQS_API OQS_STATUS OQS_KEM_frodokem_640_cshake_decaps(uint8_t *shared_secret, const unsigned char *ciphertext, const uint8_t *secret_key); - +#ifdef OQS_ENABLE_KEM_frodokem_976_shake +#define OQS_KEM_frodokem_976_shake_length_public_key 15632 +#define OQS_KEM_frodokem_976_shake_length_secret_key 31296 +#define OQS_KEM_frodokem_976_shake_length_ciphertext 15744 +#define OQS_KEM_frodokem_976_shake_length_shared_secret 24 +OQS_KEM *OQS_KEM_frodokem_976_shake_new(); +OQS_API OQS_STATUS OQS_KEM_frodokem_976_shake_keypair(uint8_t *public_key, uint8_t *secret_key); +OQS_API OQS_STATUS OQS_KEM_frodokem_976_shake_encaps(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key); +OQS_API OQS_STATUS OQS_KEM_frodokem_976_shake_decaps(uint8_t *shared_secret, const unsigned char *ciphertext, const uint8_t *secret_key); #endif -#ifdef OQS_ENABLE_KEM_frodokem_976_cshake - -#define OQS_KEM_frodokem_976_cshake_length_public_key 15632 -#define OQS_KEM_frodokem_976_cshake_length_secret_key 31272 -#define OQS_KEM_frodokem_976_cshake_length_ciphertext 15768 -#define OQS_KEM_frodokem_976_cshake_length_shared_secret 24 - -OQS_KEM *OQS_KEM_frodokem_976_cshake_new(); - -OQS_API OQS_STATUS OQS_KEM_frodokem_976_cshake_keypair(uint8_t *public_key, uint8_t *secret_key); -OQS_API OQS_STATUS OQS_KEM_frodokem_976_cshake_encaps(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key); -OQS_API OQS_STATUS OQS_KEM_frodokem_976_cshake_decaps(uint8_t *shared_secret, const unsigned char *ciphertext, const uint8_t *secret_key); +#ifdef OQS_ENABLE_KEM_frodokem_1344_aes +#define OQS_KEM_frodokem_1344_aes_length_public_key 21520 +#define OQS_KEM_frodokem_1344_aes_length_secret_key 43088 +#define OQS_KEM_frodokem_1344_aes_length_ciphertext 21632 +#define OQS_KEM_frodokem_1344_aes_length_shared_secret 32 +OQS_KEM *OQS_KEM_frodokem_1344_aes_new(); +OQS_API OQS_STATUS OQS_KEM_frodokem_1344_aes_keypair(uint8_t *public_key, uint8_t *secret_key); +OQS_API OQS_STATUS OQS_KEM_frodokem_1344_aes_encaps(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key); +OQS_API OQS_STATUS OQS_KEM_frodokem_1344_aes_decaps(uint8_t *shared_secret, const unsigned char *ciphertext, const uint8_t *secret_key); +#endif +#ifdef OQS_ENABLE_KEM_frodokem_1344_shake +#define OQS_KEM_frodokem_1344_shake_length_public_key 21520 +#define OQS_KEM_frodokem_1344_shake_length_secret_key 43088 +#define OQS_KEM_frodokem_1344_shake_length_ciphertext 21632 +#define OQS_KEM_frodokem_1344_shake_length_shared_secret 32 +OQS_KEM *OQS_KEM_frodokem_1344_shake_new(); +OQS_API OQS_STATUS OQS_KEM_frodokem_1344_shake_keypair(uint8_t *public_key, uint8_t *secret_key); +OQS_API OQS_STATUS OQS_KEM_frodokem_1344_shake_encaps(uint8_t *ciphertext, uint8_t *shared_secret, const uint8_t *public_key); +OQS_API OQS_STATUS OQS_KEM_frodokem_1344_shake_decaps(uint8_t *shared_secret, const unsigned char *ciphertext, const uint8_t *secret_key); #endif #endif diff --git a/src/kem/frodokem/kem_frodokem1344aes.c b/src/kem/frodokem/kem_frodokem1344aes.c new file mode 100644 index 000000000..36f9b2249 --- /dev/null +++ b/src/kem/frodokem/kem_frodokem1344aes.c @@ -0,0 +1,50 @@ +#include + +#include + +#ifdef OQS_ENABLE_KEM_frodokem_1344_aes + +OQS_KEM *OQS_KEM_frodokem_1344_aes_new() { + + OQS_KEM *kem = malloc(sizeof(OQS_KEM)); + if (kem == NULL) { + return NULL; + } + kem->method_name = OQS_KEM_alg_frodokem_1344_aes; + kem->alg_version = "https://github.com/PQClean/PQClean/commit/e72fd489baaef597715aa4335ceeea4362301b55"; + + kem->claimed_nist_level = 5; + kem->ind_cca = true; + + kem->length_public_key = OQS_KEM_frodokem_1344_aes_length_public_key; + kem->length_secret_key = OQS_KEM_frodokem_1344_aes_length_secret_key; + kem->length_ciphertext = OQS_KEM_frodokem_1344_aes_length_ciphertext; + kem->length_shared_secret = OQS_KEM_frodokem_1344_aes_length_shared_secret; + + kem->keypair = OQS_KEM_frodokem_1344_aes_keypair; + kem->encaps = OQS_KEM_frodokem_1344_aes_encaps; + kem->decaps = OQS_KEM_frodokem_1344_aes_decaps; + + return kem; +} + +int PQCLEAN_FRODOKEM1344AES_CLEAN_crypto_kem_keypair(unsigned char *pk, unsigned char *sk); +int PQCLEAN_FRODOKEM1344AES_CLEAN_crypto_kem_enc(unsigned char *ct, unsigned char *ss, const unsigned char *pk); +int PQCLEAN_FRODOKEM1344AES_CLEAN_crypto_kem_dec(unsigned char *ss, const unsigned char *ct, const unsigned char *sk); + +OQS_API OQS_STATUS OQS_KEM_frodokem_1344_aes_keypair(uint8_t *public_key, + uint8_t *secret_key) { + return (OQS_STATUS) PQCLEAN_FRODOKEM1344AES_CLEAN_crypto_kem_keypair(public_key, secret_key); +} +OQS_API OQS_STATUS OQS_KEM_frodokem_1344_aes_encaps(uint8_t *ciphertext, + uint8_t *shared_secret, + const uint8_t *public_key) { + return (OQS_STATUS) PQCLEAN_FRODOKEM1344AES_CLEAN_crypto_kem_enc(ciphertext, shared_secret, public_key); +} +OQS_API OQS_STATUS OQS_KEM_frodokem_1344_aes_decaps(uint8_t *shared_secret, + const unsigned char *ciphertext, + const uint8_t *secret_key) { + return (OQS_STATUS) PQCLEAN_FRODOKEM1344AES_CLEAN_crypto_kem_dec(shared_secret, ciphertext, secret_key); +} + +#endif diff --git a/src/kem/frodokem/kem_frodokem1344shake.c b/src/kem/frodokem/kem_frodokem1344shake.c new file mode 100644 index 000000000..1fb1790b7 --- /dev/null +++ b/src/kem/frodokem/kem_frodokem1344shake.c @@ -0,0 +1,50 @@ +#include + +#include + +#ifdef OQS_ENABLE_KEM_frodokem_1344_shake + +OQS_KEM *OQS_KEM_frodokem_1344_shake_new() { + + OQS_KEM *kem = malloc(sizeof(OQS_KEM)); + if (kem == NULL) { + return NULL; + } + kem->method_name = OQS_KEM_alg_frodokem_1344_shake; + kem->alg_version = "https://github.com/PQClean/PQClean/commit/e72fd489baaef597715aa4335ceeea4362301b55"; + + kem->claimed_nist_level = 5; + kem->ind_cca = true; + + kem->length_public_key = OQS_KEM_frodokem_1344_shake_length_public_key; + kem->length_secret_key = OQS_KEM_frodokem_1344_shake_length_secret_key; + kem->length_ciphertext = OQS_KEM_frodokem_1344_shake_length_ciphertext; + kem->length_shared_secret = OQS_KEM_frodokem_1344_shake_length_shared_secret; + + kem->keypair = OQS_KEM_frodokem_1344_shake_keypair; + kem->encaps = OQS_KEM_frodokem_1344_shake_encaps; + kem->decaps = OQS_KEM_frodokem_1344_shake_decaps; + + return kem; +} + +int PQCLEAN_FRODOKEM1344SHAKE_CLEAN_crypto_kem_keypair(unsigned char *pk, unsigned char *sk); +int PQCLEAN_FRODOKEM1344SHAKE_CLEAN_crypto_kem_enc(unsigned char *ct, unsigned char *ss, const unsigned char *pk); +int PQCLEAN_FRODOKEM1344SHAKE_CLEAN_crypto_kem_dec(unsigned char *ss, const unsigned char *ct, const unsigned char *sk); + +OQS_API OQS_STATUS OQS_KEM_frodokem_1344_shake_keypair(uint8_t *public_key, + uint8_t *secret_key) { + return (OQS_STATUS) PQCLEAN_FRODOKEM1344SHAKE_CLEAN_crypto_kem_keypair(public_key, secret_key); +} +OQS_API OQS_STATUS OQS_KEM_frodokem_1344_shake_encaps(uint8_t *ciphertext, + uint8_t *shared_secret, + const uint8_t *public_key) { + return (OQS_STATUS) PQCLEAN_FRODOKEM1344SHAKE_CLEAN_crypto_kem_enc(ciphertext, shared_secret, public_key); +} +OQS_API OQS_STATUS OQS_KEM_frodokem_1344_shake_decaps(uint8_t *shared_secret, + const unsigned char *ciphertext, + const uint8_t *secret_key) { + return (OQS_STATUS) PQCLEAN_FRODOKEM1344SHAKE_CLEAN_crypto_kem_dec(shared_secret, ciphertext, secret_key); +} + +#endif diff --git a/src/kem/frodokem/kem_frodokem640aes.c b/src/kem/frodokem/kem_frodokem640aes.c new file mode 100644 index 000000000..08d2015aa --- /dev/null +++ b/src/kem/frodokem/kem_frodokem640aes.c @@ -0,0 +1,50 @@ +#include + +#include + +#ifdef OQS_ENABLE_KEM_frodokem_640_aes + +OQS_KEM *OQS_KEM_frodokem_640_aes_new() { + + OQS_KEM *kem = malloc(sizeof(OQS_KEM)); + if (kem == NULL) { + return NULL; + } + kem->method_name = OQS_KEM_alg_frodokem_640_aes; + kem->alg_version = "https://github.com/PQClean/PQClean/commit/e72fd489baaef597715aa4335ceeea4362301b55"; + + kem->claimed_nist_level = 1; + kem->ind_cca = true; + + kem->length_public_key = OQS_KEM_frodokem_640_aes_length_public_key; + kem->length_secret_key = OQS_KEM_frodokem_640_aes_length_secret_key; + kem->length_ciphertext = OQS_KEM_frodokem_640_aes_length_ciphertext; + kem->length_shared_secret = OQS_KEM_frodokem_640_aes_length_shared_secret; + + kem->keypair = OQS_KEM_frodokem_640_aes_keypair; + kem->encaps = OQS_KEM_frodokem_640_aes_encaps; + kem->decaps = OQS_KEM_frodokem_640_aes_decaps; + + return kem; +} + +int PQCLEAN_FRODOKEM640AES_CLEAN_crypto_kem_keypair(unsigned char *pk, unsigned char *sk); +int PQCLEAN_FRODOKEM640AES_CLEAN_crypto_kem_enc(unsigned char *ct, unsigned char *ss, const unsigned char *pk); +int PQCLEAN_FRODOKEM640AES_CLEAN_crypto_kem_dec(unsigned char *ss, const unsigned char *ct, const unsigned char *sk); + +OQS_API OQS_STATUS OQS_KEM_frodokem_640_aes_keypair(uint8_t *public_key, + uint8_t *secret_key) { + return (OQS_STATUS) PQCLEAN_FRODOKEM640AES_CLEAN_crypto_kem_keypair(public_key, secret_key); +} +OQS_API OQS_STATUS OQS_KEM_frodokem_640_aes_encaps(uint8_t *ciphertext, + uint8_t *shared_secret, + const uint8_t *public_key) { + return (OQS_STATUS) PQCLEAN_FRODOKEM640AES_CLEAN_crypto_kem_enc(ciphertext, shared_secret, public_key); +} +OQS_API OQS_STATUS OQS_KEM_frodokem_640_aes_decaps(uint8_t *shared_secret, + const unsigned char *ciphertext, + const uint8_t *secret_key) { + return (OQS_STATUS) PQCLEAN_FRODOKEM640AES_CLEAN_crypto_kem_dec(shared_secret, ciphertext, secret_key); +} + +#endif diff --git a/src/kem/frodokem/kem_frodokem640shake.c b/src/kem/frodokem/kem_frodokem640shake.c new file mode 100644 index 000000000..ed41ea203 --- /dev/null +++ b/src/kem/frodokem/kem_frodokem640shake.c @@ -0,0 +1,50 @@ +#include + +#include + +#ifdef OQS_ENABLE_KEM_frodokem_640_shake + +OQS_KEM *OQS_KEM_frodokem_640_shake_new() { + + OQS_KEM *kem = malloc(sizeof(OQS_KEM)); + if (kem == NULL) { + return NULL; + } + kem->method_name = OQS_KEM_alg_frodokem_640_shake; + kem->alg_version = "https://github.com/PQClean/PQClean/commit/e72fd489baaef597715aa4335ceeea4362301b55"; + + kem->claimed_nist_level = 1; + kem->ind_cca = true; + + kem->length_public_key = OQS_KEM_frodokem_640_shake_length_public_key; + kem->length_secret_key = OQS_KEM_frodokem_640_shake_length_secret_key; + kem->length_ciphertext = OQS_KEM_frodokem_640_shake_length_ciphertext; + kem->length_shared_secret = OQS_KEM_frodokem_640_shake_length_shared_secret; + + kem->keypair = OQS_KEM_frodokem_640_shake_keypair; + kem->encaps = OQS_KEM_frodokem_640_shake_encaps; + kem->decaps = OQS_KEM_frodokem_640_shake_decaps; + + return kem; +} + +int PQCLEAN_FRODOKEM640SHAKE_CLEAN_crypto_kem_keypair(unsigned char *pk, unsigned char *sk); +int PQCLEAN_FRODOKEM640SHAKE_CLEAN_crypto_kem_enc(unsigned char *ct, unsigned char *ss, const unsigned char *pk); +int PQCLEAN_FRODOKEM640SHAKE_CLEAN_crypto_kem_dec(unsigned char *ss, const unsigned char *ct, const unsigned char *sk); + +OQS_API OQS_STATUS OQS_KEM_frodokem_640_shake_keypair(uint8_t *public_key, + uint8_t *secret_key) { + return (OQS_STATUS) PQCLEAN_FRODOKEM640SHAKE_CLEAN_crypto_kem_keypair(public_key, secret_key); +} +OQS_API OQS_STATUS OQS_KEM_frodokem_640_shake_encaps(uint8_t *ciphertext, + uint8_t *shared_secret, + const uint8_t *public_key) { + return (OQS_STATUS) PQCLEAN_FRODOKEM640SHAKE_CLEAN_crypto_kem_enc(ciphertext, shared_secret, public_key); +} +OQS_API OQS_STATUS OQS_KEM_frodokem_640_shake_decaps(uint8_t *shared_secret, + const unsigned char *ciphertext, + const uint8_t *secret_key) { + return (OQS_STATUS) PQCLEAN_FRODOKEM640SHAKE_CLEAN_crypto_kem_dec(shared_secret, ciphertext, secret_key); +} + +#endif diff --git a/src/kem/frodokem/kem_frodokem976aes.c b/src/kem/frodokem/kem_frodokem976aes.c new file mode 100644 index 000000000..7d78145ab --- /dev/null +++ b/src/kem/frodokem/kem_frodokem976aes.c @@ -0,0 +1,50 @@ +#include + +#include + +#ifdef OQS_ENABLE_KEM_frodokem_976_aes + +OQS_KEM *OQS_KEM_frodokem_976_aes_new() { + + OQS_KEM *kem = malloc(sizeof(OQS_KEM)); + if (kem == NULL) { + return NULL; + } + kem->method_name = OQS_KEM_alg_frodokem_976_aes; + kem->alg_version = "https://github.com/PQClean/PQClean/commit/e72fd489baaef597715aa4335ceeea4362301b55"; + + kem->claimed_nist_level = 3; + kem->ind_cca = true; + + kem->length_public_key = OQS_KEM_frodokem_976_aes_length_public_key; + kem->length_secret_key = OQS_KEM_frodokem_976_aes_length_secret_key; + kem->length_ciphertext = OQS_KEM_frodokem_976_aes_length_ciphertext; + kem->length_shared_secret = OQS_KEM_frodokem_976_aes_length_shared_secret; + + kem->keypair = OQS_KEM_frodokem_976_aes_keypair; + kem->encaps = OQS_KEM_frodokem_976_aes_encaps; + kem->decaps = OQS_KEM_frodokem_976_aes_decaps; + + return kem; +} + +int PQCLEAN_FRODOKEM976AES_CLEAN_crypto_kem_keypair(unsigned char *pk, unsigned char *sk); +int PQCLEAN_FRODOKEM976AES_CLEAN_crypto_kem_enc(unsigned char *ct, unsigned char *ss, const unsigned char *pk); +int PQCLEAN_FRODOKEM976AES_CLEAN_crypto_kem_dec(unsigned char *ss, const unsigned char *ct, const unsigned char *sk); + +OQS_API OQS_STATUS OQS_KEM_frodokem_976_aes_keypair(uint8_t *public_key, + uint8_t *secret_key) { + return (OQS_STATUS) PQCLEAN_FRODOKEM976AES_CLEAN_crypto_kem_keypair(public_key, secret_key); +} +OQS_API OQS_STATUS OQS_KEM_frodokem_976_aes_encaps(uint8_t *ciphertext, + uint8_t *shared_secret, + const uint8_t *public_key) { + return (OQS_STATUS) PQCLEAN_FRODOKEM976AES_CLEAN_crypto_kem_enc(ciphertext, shared_secret, public_key); +} +OQS_API OQS_STATUS OQS_KEM_frodokem_976_aes_decaps(uint8_t *shared_secret, + const unsigned char *ciphertext, + const uint8_t *secret_key) { + return (OQS_STATUS) PQCLEAN_FRODOKEM976AES_CLEAN_crypto_kem_dec(shared_secret, ciphertext, secret_key); +} + +#endif diff --git a/src/kem/frodokem/kem_frodokem976shake.c b/src/kem/frodokem/kem_frodokem976shake.c new file mode 100644 index 000000000..7724bc511 --- /dev/null +++ b/src/kem/frodokem/kem_frodokem976shake.c @@ -0,0 +1,50 @@ +#include + +#include + +#ifdef OQS_ENABLE_KEM_frodokem_976_shake + +OQS_KEM *OQS_KEM_frodokem_976_shake_new() { + + OQS_KEM *kem = malloc(sizeof(OQS_KEM)); + if (kem == NULL) { + return NULL; + } + kem->method_name = OQS_KEM_alg_frodokem_976_shake; + kem->alg_version = "https://github.com/PQClean/PQClean/commit/e72fd489baaef597715aa4335ceeea4362301b55"; + + kem->claimed_nist_level = 3; + kem->ind_cca = true; + + kem->length_public_key = OQS_KEM_frodokem_976_shake_length_public_key; + kem->length_secret_key = OQS_KEM_frodokem_976_shake_length_secret_key; + kem->length_ciphertext = OQS_KEM_frodokem_976_shake_length_ciphertext; + kem->length_shared_secret = OQS_KEM_frodokem_976_shake_length_shared_secret; + + kem->keypair = OQS_KEM_frodokem_976_shake_keypair; + kem->encaps = OQS_KEM_frodokem_976_shake_encaps; + kem->decaps = OQS_KEM_frodokem_976_shake_decaps; + + return kem; +} + +int PQCLEAN_FRODOKEM976SHAKE_CLEAN_crypto_kem_keypair(unsigned char *pk, unsigned char *sk); +int PQCLEAN_FRODOKEM976SHAKE_CLEAN_crypto_kem_enc(unsigned char *ct, unsigned char *ss, const unsigned char *pk); +int PQCLEAN_FRODOKEM976SHAKE_CLEAN_crypto_kem_dec(unsigned char *ss, const unsigned char *ct, const unsigned char *sk); + +OQS_API OQS_STATUS OQS_KEM_frodokem_976_shake_keypair(uint8_t *public_key, + uint8_t *secret_key) { + return (OQS_STATUS) PQCLEAN_FRODOKEM976SHAKE_CLEAN_crypto_kem_keypair(public_key, secret_key); +} +OQS_API OQS_STATUS OQS_KEM_frodokem_976_shake_encaps(uint8_t *ciphertext, + uint8_t *shared_secret, + const uint8_t *public_key) { + return (OQS_STATUS) PQCLEAN_FRODOKEM976SHAKE_CLEAN_crypto_kem_enc(ciphertext, shared_secret, public_key); +} +OQS_API OQS_STATUS OQS_KEM_frodokem_976_shake_decaps(uint8_t *shared_secret, + const unsigned char *ciphertext, + const uint8_t *secret_key) { + return (OQS_STATUS) PQCLEAN_FRODOKEM976SHAKE_CLEAN_crypto_kem_dec(shared_secret, ciphertext, secret_key); +} + +#endif diff --git a/src/kem/frodokem/pqclean_frodokem1344aes_clean/LICENSE b/src/kem/frodokem/pqclean_frodokem1344aes_clean/LICENSE new file mode 100644 index 000000000..5cf7c8db6 --- /dev/null +++ b/src/kem/frodokem/pqclean_frodokem1344aes_clean/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) Microsoft Corporation. All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE diff --git a/src/kem/frodokem/pqclean_frodokem1344aes_clean/api.h b/src/kem/frodokem/pqclean_frodokem1344aes_clean/api.h new file mode 100644 index 000000000..d7b783c28 --- /dev/null +++ b/src/kem/frodokem/pqclean_frodokem1344aes_clean/api.h @@ -0,0 +1,20 @@ +#ifndef PQCLEAN_FRODOKEM1344AES_CLEAN_API_H +#define PQCLEAN_FRODOKEM1344AES_CLEAN_API_H + +#include +#include + +#define PQCLEAN_FRODOKEM1344AES_CLEAN_CRYPTO_SECRETKEYBYTES 43088 // sizeof(s) + CRYPTO_PUBLICKEYBYTES + 2*PARAMS_N*PARAMS_NBAR + BYTES_PKHASH +#define PQCLEAN_FRODOKEM1344AES_CLEAN_CRYPTO_PUBLICKEYBYTES 21520 // sizeof(seed_A) + (PARAMS_LOGQ*PARAMS_N*PARAMS_NBAR)/8 +#define PQCLEAN_FRODOKEM1344AES_CLEAN_CRYPTO_BYTES 32 +#define PQCLEAN_FRODOKEM1344AES_CLEAN_CRYPTO_CIPHERTEXTBYTES 21632 // (PARAMS_LOGQ*PARAMS_N*PARAMS_NBAR)/8 + (PARAMS_LOGQ*PARAMS_NBAR*PARAMS_NBAR)/8 + +#define PQCLEAN_FRODOKEM1344AES_CLEAN_CRYPTO_ALGNAME "FrodoKEM-1344-AES" + +int PQCLEAN_FRODOKEM1344AES_CLEAN_crypto_kem_keypair(uint8_t *pk, uint8_t *sk); + +int PQCLEAN_FRODOKEM1344AES_CLEAN_crypto_kem_enc(uint8_t *ct, uint8_t *ss, const uint8_t *pk); + +int PQCLEAN_FRODOKEM1344AES_CLEAN_crypto_kem_dec(uint8_t *ss, const uint8_t *ct, const uint8_t *sk); + +#endif diff --git a/src/kem/frodokem/pqclean_frodokem1344aes_clean/common.h b/src/kem/frodokem/pqclean_frodokem1344aes_clean/common.h new file mode 100644 index 000000000..f9fa37790 --- /dev/null +++ b/src/kem/frodokem/pqclean_frodokem1344aes_clean/common.h @@ -0,0 +1,19 @@ +#ifndef COMMON_H +#define COMMON_H + +int PQCLEAN_FRODOKEM1344AES_CLEAN_mul_add_as_plus_e(uint16_t *out, const uint16_t *s, const uint16_t *e, const uint8_t *seed_A); +int PQCLEAN_FRODOKEM1344AES_CLEAN_mul_add_sa_plus_e(uint16_t *out, const uint16_t *s, const uint16_t *e, const uint8_t *seed_A); +void PQCLEAN_FRODOKEM1344AES_CLEAN_sample_n(uint16_t *s, size_t n); +void PQCLEAN_FRODOKEM1344AES_CLEAN_mul_bs(uint16_t *out, const uint16_t *b, const uint16_t *s); +void PQCLEAN_FRODOKEM1344AES_CLEAN_mul_add_sb_plus_e(uint16_t *out, const uint16_t *b, const uint16_t *s, const uint16_t *e); +void PQCLEAN_FRODOKEM1344AES_CLEAN_add(uint16_t *out, const uint16_t *a, const uint16_t *b); +void PQCLEAN_FRODOKEM1344AES_CLEAN_sub(uint16_t *out, const uint16_t *a, const uint16_t *b); +void PQCLEAN_FRODOKEM1344AES_CLEAN_key_encode(uint16_t *out, const uint16_t *in); +void PQCLEAN_FRODOKEM1344AES_CLEAN_key_decode(uint16_t *out, const uint16_t *in); +void PQCLEAN_FRODOKEM1344AES_CLEAN_pack(uint8_t *out, size_t outlen, const uint16_t *in, size_t inlen, uint8_t lsb); +void PQCLEAN_FRODOKEM1344AES_CLEAN_unpack(uint16_t *out, size_t outlen, const uint8_t *in, size_t inlen, uint8_t lsb); +void PQCLEAN_FRODOKEM1344AES_CLEAN_clear_bytes(uint8_t *mem, size_t n); +uint16_t PQCLEAN_FRODOKEM1344AES_CLEAN_LE_TO_UINT16(uint16_t n); +uint16_t PQCLEAN_FRODOKEM1344AES_CLEAN_UINT16_TO_LE(uint16_t n); + +#endif diff --git a/src/kem/frodokem/pqclean_frodokem1344aes_clean/kem.c b/src/kem/frodokem/pqclean_frodokem1344aes_clean/kem.c new file mode 100644 index 000000000..611ca711b --- /dev/null +++ b/src/kem/frodokem/pqclean_frodokem1344aes_clean/kem.c @@ -0,0 +1,238 @@ +/******************************************************************************************** +* FrodoKEM: Learning with Errors Key Encapsulation +* +* Abstract: Key Encapsulation Mechanism (KEM) based on Frodo +*********************************************************************************************/ + +#include +#include + +#include "fips202.h" +#include "randombytes.h" + +#include "api.h" +#include "common.h" +#include "params.h" + +int PQCLEAN_FRODOKEM1344AES_CLEAN_crypto_kem_keypair(uint8_t *pk, uint8_t *sk) { + // FrodoKEM's key generation + // Outputs: public key pk ( BYTES_SEED_A + (PARAMS_LOGQ*PARAMS_N*PARAMS_NBAR)/8 bytes) + // secret key sk (CRYPTO_BYTES + BYTES_SEED_A + (PARAMS_LOGQ*PARAMS_N*PARAMS_NBAR)/8 + 2*PARAMS_N*PARAMS_NBAR + BYTES_PKHASH bytes) + uint8_t *pk_seedA = &pk[0]; + uint8_t *pk_b = &pk[BYTES_SEED_A]; + uint8_t *sk_s = &sk[0]; + uint8_t *sk_pk = &sk[CRYPTO_BYTES]; + uint8_t *sk_S = &sk[CRYPTO_BYTES + CRYPTO_PUBLICKEYBYTES]; + uint8_t *sk_pkh = &sk[CRYPTO_BYTES + CRYPTO_PUBLICKEYBYTES + 2 * PARAMS_N * PARAMS_NBAR]; + uint16_t B[PARAMS_N * PARAMS_NBAR] = {0}; + uint16_t S[2 * PARAMS_N * PARAMS_NBAR] = {0}; // contains secret data + uint16_t *E = &S[PARAMS_N * PARAMS_NBAR]; // contains secret data + uint8_t randomness[2 * CRYPTO_BYTES + BYTES_SEED_A]; // contains secret data via randomness_s and randomness_seedSE + uint8_t *randomness_s = &randomness[0]; // contains secret data + uint8_t *randomness_seedSE = &randomness[CRYPTO_BYTES]; // contains secret data + uint8_t *randomness_z = &randomness[2 * CRYPTO_BYTES]; + uint8_t shake_input_seedSE[1 + CRYPTO_BYTES]; // contains secret data + + // Generate the secret value s, the seed for S and E, and the seed for the seed for A. Add seed_A to the public key + randombytes(randomness, CRYPTO_BYTES + CRYPTO_BYTES + BYTES_SEED_A); + shake(pk_seedA, BYTES_SEED_A, randomness_z, BYTES_SEED_A); + + // Generate S and E, and compute B = A*S + E. Generate A on-the-fly + shake_input_seedSE[0] = 0x5F; + memcpy(&shake_input_seedSE[1], randomness_seedSE, CRYPTO_BYTES); + shake((uint8_t *)S, 2 * PARAMS_N * PARAMS_NBAR * sizeof(uint16_t), shake_input_seedSE, 1 + CRYPTO_BYTES); + for (size_t i = 0; i < 2 * PARAMS_N * PARAMS_NBAR; i++) { + S[i] = PQCLEAN_FRODOKEM1344AES_CLEAN_LE_TO_UINT16(S[i]); + } + PQCLEAN_FRODOKEM1344AES_CLEAN_sample_n(S, PARAMS_N * PARAMS_NBAR); + PQCLEAN_FRODOKEM1344AES_CLEAN_sample_n(E, PARAMS_N * PARAMS_NBAR); + PQCLEAN_FRODOKEM1344AES_CLEAN_mul_add_as_plus_e(B, S, E, pk); + + // Encode the second part of the public key + PQCLEAN_FRODOKEM1344AES_CLEAN_pack(pk_b, CRYPTO_PUBLICKEYBYTES - BYTES_SEED_A, B, PARAMS_N * PARAMS_NBAR, PARAMS_LOGQ); + + // Add s, pk and S to the secret key + memcpy(sk_s, randomness_s, CRYPTO_BYTES); + memcpy(sk_pk, pk, CRYPTO_PUBLICKEYBYTES); + for (size_t i = 0; i < PARAMS_N * PARAMS_NBAR; i++) { + S[i] = PQCLEAN_FRODOKEM1344AES_CLEAN_UINT16_TO_LE(S[i]); + } + memcpy(sk_S, S, 2 * PARAMS_N * PARAMS_NBAR); + + // Add H(pk) to the secret key + shake(sk_pkh, BYTES_PKHASH, pk, CRYPTO_PUBLICKEYBYTES); + + // Cleanup: + PQCLEAN_FRODOKEM1344AES_CLEAN_clear_bytes((uint8_t *)S, PARAMS_N * PARAMS_NBAR * sizeof(uint16_t)); + PQCLEAN_FRODOKEM1344AES_CLEAN_clear_bytes((uint8_t *)E, PARAMS_N * PARAMS_NBAR * sizeof(uint16_t)); + PQCLEAN_FRODOKEM1344AES_CLEAN_clear_bytes(randomness, 2 * CRYPTO_BYTES); + PQCLEAN_FRODOKEM1344AES_CLEAN_clear_bytes(shake_input_seedSE, 1 + CRYPTO_BYTES); + return 0; +} + + +int PQCLEAN_FRODOKEM1344AES_CLEAN_crypto_kem_enc(uint8_t *ct, uint8_t *ss, const uint8_t *pk) { + // FrodoKEM's key encapsulation + const uint8_t *pk_seedA = &pk[0]; + const uint8_t *pk_b = &pk[BYTES_SEED_A]; + uint8_t *ct_c1 = &ct[0]; + uint8_t *ct_c2 = &ct[(PARAMS_LOGQ * PARAMS_N * PARAMS_NBAR) / 8]; + uint16_t B[PARAMS_N * PARAMS_NBAR] = {0}; + uint16_t V[PARAMS_NBAR * PARAMS_NBAR] = {0}; // contains secret data + uint16_t C[PARAMS_NBAR * PARAMS_NBAR] = {0}; + uint16_t Bp[PARAMS_N * PARAMS_NBAR] = {0}; + uint16_t Sp[(2 * PARAMS_N + PARAMS_NBAR)*PARAMS_NBAR] = {0}; // contains secret data + uint16_t *Ep = &Sp[PARAMS_N * PARAMS_NBAR]; // contains secret data + uint16_t *Epp = &Sp[2 * PARAMS_N * PARAMS_NBAR]; // contains secret data + uint8_t G2in[BYTES_PKHASH + BYTES_MU]; // contains secret data via mu + uint8_t *pkh = &G2in[0]; + uint8_t *mu = &G2in[BYTES_PKHASH]; // contains secret data + uint8_t G2out[2 * CRYPTO_BYTES]; // contains secret data + uint8_t *seedSE = &G2out[0]; // contains secret data + uint8_t *k = &G2out[CRYPTO_BYTES]; // contains secret data + uint8_t Fin[CRYPTO_CIPHERTEXTBYTES + CRYPTO_BYTES]; // contains secret data via Fin_k + uint8_t *Fin_ct = &Fin[0]; + uint8_t *Fin_k = &Fin[CRYPTO_CIPHERTEXTBYTES]; // contains secret data + uint8_t shake_input_seedSE[1 + CRYPTO_BYTES]; // contains secret data + + // pkh <- G_1(pk), generate random mu, compute (seedSE || k) = G_2(pkh || mu) + shake(pkh, BYTES_PKHASH, pk, CRYPTO_PUBLICKEYBYTES); + randombytes(mu, BYTES_MU); + shake(G2out, CRYPTO_BYTES + CRYPTO_BYTES, G2in, BYTES_PKHASH + BYTES_MU); + + // Generate Sp and Ep, and compute Bp = Sp*A + Ep. Generate A on-the-fly + shake_input_seedSE[0] = 0x96; + memcpy(&shake_input_seedSE[1], seedSE, CRYPTO_BYTES); + shake((uint8_t *)Sp, (2 * PARAMS_N + PARAMS_NBAR) * PARAMS_NBAR * sizeof(uint16_t), shake_input_seedSE, 1 + CRYPTO_BYTES); + for (size_t i = 0; i < (2 * PARAMS_N + PARAMS_NBAR) * PARAMS_NBAR; i++) { + Sp[i] = PQCLEAN_FRODOKEM1344AES_CLEAN_LE_TO_UINT16(Sp[i]); + } + PQCLEAN_FRODOKEM1344AES_CLEAN_sample_n(Sp, PARAMS_N * PARAMS_NBAR); + PQCLEAN_FRODOKEM1344AES_CLEAN_sample_n(Ep, PARAMS_N * PARAMS_NBAR); + PQCLEAN_FRODOKEM1344AES_CLEAN_mul_add_sa_plus_e(Bp, Sp, Ep, pk_seedA); + PQCLEAN_FRODOKEM1344AES_CLEAN_pack(ct_c1, (PARAMS_LOGQ * PARAMS_N * PARAMS_NBAR) / 8, Bp, PARAMS_N * PARAMS_NBAR, PARAMS_LOGQ); + + // Generate Epp, and compute V = Sp*B + Epp + PQCLEAN_FRODOKEM1344AES_CLEAN_sample_n(Epp, PARAMS_NBAR * PARAMS_NBAR); + PQCLEAN_FRODOKEM1344AES_CLEAN_unpack(B, PARAMS_N * PARAMS_NBAR, pk_b, CRYPTO_PUBLICKEYBYTES - BYTES_SEED_A, PARAMS_LOGQ); + PQCLEAN_FRODOKEM1344AES_CLEAN_mul_add_sb_plus_e(V, B, Sp, Epp); + + // Encode mu, and compute C = V + enc(mu) (mod q) + PQCLEAN_FRODOKEM1344AES_CLEAN_key_encode(C, (uint16_t *)mu); + PQCLEAN_FRODOKEM1344AES_CLEAN_add(C, V, C); + PQCLEAN_FRODOKEM1344AES_CLEAN_pack(ct_c2, (PARAMS_LOGQ * PARAMS_NBAR * PARAMS_NBAR) / 8, C, PARAMS_NBAR * PARAMS_NBAR, PARAMS_LOGQ); + + // Compute ss = F(ct||KK) + memcpy(Fin_ct, ct, CRYPTO_CIPHERTEXTBYTES); + memcpy(Fin_k, k, CRYPTO_BYTES); + shake(ss, CRYPTO_BYTES, Fin, CRYPTO_CIPHERTEXTBYTES + CRYPTO_BYTES); + + // Cleanup: + PQCLEAN_FRODOKEM1344AES_CLEAN_clear_bytes((uint8_t *)V, PARAMS_NBAR * PARAMS_NBAR * sizeof(uint16_t)); + PQCLEAN_FRODOKEM1344AES_CLEAN_clear_bytes((uint8_t *)Sp, PARAMS_N * PARAMS_NBAR * sizeof(uint16_t)); + PQCLEAN_FRODOKEM1344AES_CLEAN_clear_bytes((uint8_t *)Ep, PARAMS_N * PARAMS_NBAR * sizeof(uint16_t)); + PQCLEAN_FRODOKEM1344AES_CLEAN_clear_bytes((uint8_t *)Epp, PARAMS_NBAR * PARAMS_NBAR * sizeof(uint16_t)); + PQCLEAN_FRODOKEM1344AES_CLEAN_clear_bytes(mu, BYTES_MU); + PQCLEAN_FRODOKEM1344AES_CLEAN_clear_bytes(G2out, 2 * CRYPTO_BYTES); + PQCLEAN_FRODOKEM1344AES_CLEAN_clear_bytes(Fin_k, CRYPTO_BYTES); + PQCLEAN_FRODOKEM1344AES_CLEAN_clear_bytes(shake_input_seedSE, 1 + CRYPTO_BYTES); + return 0; +} + + +int PQCLEAN_FRODOKEM1344AES_CLEAN_crypto_kem_dec(uint8_t *ss, const uint8_t *ct, const uint8_t *sk) { + // FrodoKEM's key decapsulation + uint16_t B[PARAMS_N * PARAMS_NBAR] = {0}; + uint16_t Bp[PARAMS_N * PARAMS_NBAR] = {0}; + uint16_t W[PARAMS_NBAR * PARAMS_NBAR] = {0}; // contains secret data + uint16_t C[PARAMS_NBAR * PARAMS_NBAR] = {0}; + uint16_t CC[PARAMS_NBAR * PARAMS_NBAR] = {0}; + uint16_t BBp[PARAMS_N * PARAMS_NBAR] = {0}; + uint16_t Sp[(2 * PARAMS_N + PARAMS_NBAR)*PARAMS_NBAR] = {0}; // contains secret data + uint16_t *Ep = &Sp[PARAMS_N * PARAMS_NBAR]; // contains secret data + uint16_t *Epp = &Sp[2 * PARAMS_N * PARAMS_NBAR]; // contains secret data + const uint8_t *ct_c1 = &ct[0]; + const uint8_t *ct_c2 = &ct[(PARAMS_LOGQ * PARAMS_N * PARAMS_NBAR) / 8]; + const uint8_t *sk_s = &sk[0]; + const uint8_t *sk_pk = &sk[CRYPTO_BYTES]; + const uint16_t *sk_S = (uint16_t *) &sk[CRYPTO_BYTES + CRYPTO_PUBLICKEYBYTES]; + uint16_t S[PARAMS_N * PARAMS_NBAR]; // contains secret data + const uint8_t *sk_pkh = &sk[CRYPTO_BYTES + CRYPTO_PUBLICKEYBYTES + 2 * PARAMS_N * PARAMS_NBAR]; + const uint8_t *pk_seedA = &sk_pk[0]; + const uint8_t *pk_b = &sk_pk[BYTES_SEED_A]; + uint8_t G2in[BYTES_PKHASH + BYTES_MU]; // contains secret data via muprime + uint8_t *pkh = &G2in[0]; + uint8_t *muprime = &G2in[BYTES_PKHASH]; // contains secret data + uint8_t G2out[2 * CRYPTO_BYTES]; // contains secret data + uint8_t *seedSEprime = &G2out[0]; // contains secret data + uint8_t *kprime = &G2out[CRYPTO_BYTES]; // contains secret data + uint8_t Fin[CRYPTO_CIPHERTEXTBYTES + CRYPTO_BYTES]; // contains secret data via Fin_k + uint8_t *Fin_ct = &Fin[0]; + uint8_t *Fin_k = &Fin[CRYPTO_CIPHERTEXTBYTES]; // contains secret data + uint8_t shake_input_seedSEprime[1 + CRYPTO_BYTES]; // contains secret data + + for (size_t i = 0; i < PARAMS_N * PARAMS_NBAR; i++) { + S[i] = PQCLEAN_FRODOKEM1344AES_CLEAN_LE_TO_UINT16(sk_S[i]); + } + + // Compute W = C - Bp*S (mod q), and decode the randomness mu + PQCLEAN_FRODOKEM1344AES_CLEAN_unpack(Bp, PARAMS_N * PARAMS_NBAR, ct_c1, (PARAMS_LOGQ * PARAMS_N * PARAMS_NBAR) / 8, PARAMS_LOGQ); + PQCLEAN_FRODOKEM1344AES_CLEAN_unpack(C, PARAMS_NBAR * PARAMS_NBAR, ct_c2, (PARAMS_LOGQ * PARAMS_NBAR * PARAMS_NBAR) / 8, PARAMS_LOGQ); + PQCLEAN_FRODOKEM1344AES_CLEAN_mul_bs(W, Bp, S); + PQCLEAN_FRODOKEM1344AES_CLEAN_sub(W, C, W); + PQCLEAN_FRODOKEM1344AES_CLEAN_key_decode((uint16_t *)muprime, W); + + // Generate (seedSE' || k') = G_2(pkh || mu') + memcpy(pkh, sk_pkh, BYTES_PKHASH); + shake(G2out, CRYPTO_BYTES + CRYPTO_BYTES, G2in, BYTES_PKHASH + BYTES_MU); + + // Generate Sp and Ep, and compute BBp = Sp*A + Ep. Generate A on-the-fly + shake_input_seedSEprime[0] = 0x96; + memcpy(&shake_input_seedSEprime[1], seedSEprime, CRYPTO_BYTES); + shake((uint8_t *)Sp, (2 * PARAMS_N + PARAMS_NBAR) * PARAMS_NBAR * sizeof(uint16_t), shake_input_seedSEprime, 1 + CRYPTO_BYTES); + for (size_t i = 0; i < (2 * PARAMS_N + PARAMS_NBAR) * PARAMS_NBAR; i++) { + Sp[i] = PQCLEAN_FRODOKEM1344AES_CLEAN_LE_TO_UINT16(Sp[i]); + } + PQCLEAN_FRODOKEM1344AES_CLEAN_sample_n(Sp, PARAMS_N * PARAMS_NBAR); + PQCLEAN_FRODOKEM1344AES_CLEAN_sample_n(Ep, PARAMS_N * PARAMS_NBAR); + PQCLEAN_FRODOKEM1344AES_CLEAN_mul_add_sa_plus_e(BBp, Sp, Ep, pk_seedA); + + // Generate Epp, and compute W = Sp*B + Epp + PQCLEAN_FRODOKEM1344AES_CLEAN_sample_n(Epp, PARAMS_NBAR * PARAMS_NBAR); + PQCLEAN_FRODOKEM1344AES_CLEAN_unpack(B, PARAMS_N * PARAMS_NBAR, pk_b, CRYPTO_PUBLICKEYBYTES - BYTES_SEED_A, PARAMS_LOGQ); + PQCLEAN_FRODOKEM1344AES_CLEAN_mul_add_sb_plus_e(W, B, Sp, Epp); + + // Encode mu, and compute CC = W + enc(mu') (mod q) + PQCLEAN_FRODOKEM1344AES_CLEAN_key_encode(CC, (uint16_t *)muprime); + PQCLEAN_FRODOKEM1344AES_CLEAN_add(CC, W, CC); + + // Prepare input to F + memcpy(Fin_ct, ct, CRYPTO_CIPHERTEXTBYTES); + + // Reducing BBp modulo q + for (size_t i = 0; i < PARAMS_N * PARAMS_NBAR; i++) { + BBp[i] = BBp[i] & ((1 << PARAMS_LOGQ) - 1); + } + + // Is (Bp == BBp & C == CC) = true + if (memcmp(Bp, BBp, 2 * PARAMS_N * PARAMS_NBAR) == 0 && memcmp(C, CC, 2 * PARAMS_NBAR * PARAMS_NBAR) == 0) { + // Load k' to do ss = F(ct || k') + memcpy(Fin_k, kprime, CRYPTO_BYTES); + } else { + // Load s to do ss = F(ct || s) + memcpy(Fin_k, sk_s, CRYPTO_BYTES); + } + shake(ss, CRYPTO_BYTES, Fin, CRYPTO_CIPHERTEXTBYTES + CRYPTO_BYTES); + + // Cleanup: + PQCLEAN_FRODOKEM1344AES_CLEAN_clear_bytes((uint8_t *)W, PARAMS_NBAR * PARAMS_NBAR * sizeof(uint16_t)); + PQCLEAN_FRODOKEM1344AES_CLEAN_clear_bytes((uint8_t *)Sp, PARAMS_N * PARAMS_NBAR * sizeof(uint16_t)); + PQCLEAN_FRODOKEM1344AES_CLEAN_clear_bytes((uint8_t *)S, PARAMS_N * PARAMS_NBAR * sizeof(uint16_t)); + PQCLEAN_FRODOKEM1344AES_CLEAN_clear_bytes((uint8_t *)Ep, PARAMS_N * PARAMS_NBAR * sizeof(uint16_t)); + PQCLEAN_FRODOKEM1344AES_CLEAN_clear_bytes((uint8_t *)Epp, PARAMS_NBAR * PARAMS_NBAR * sizeof(uint16_t)); + PQCLEAN_FRODOKEM1344AES_CLEAN_clear_bytes(muprime, BYTES_MU); + PQCLEAN_FRODOKEM1344AES_CLEAN_clear_bytes(G2out, 2 * CRYPTO_BYTES); + PQCLEAN_FRODOKEM1344AES_CLEAN_clear_bytes(Fin_k, CRYPTO_BYTES); + PQCLEAN_FRODOKEM1344AES_CLEAN_clear_bytes(shake_input_seedSEprime, 1 + CRYPTO_BYTES); + return 0; +} diff --git a/src/kem/frodokem/pqclean_frodokem1344aes_clean/matrix_aes.c b/src/kem/frodokem/pqclean_frodokem1344aes_clean/matrix_aes.c new file mode 100644 index 000000000..645901b05 --- /dev/null +++ b/src/kem/frodokem/pqclean_frodokem1344aes_clean/matrix_aes.c @@ -0,0 +1,93 @@ +/******************************************************************************************** +* FrodoKEM: Learning with Errors Key Encapsulation +* +* Abstract: matrix arithmetic functions used by the KEM +*********************************************************************************************/ + +#include +#include + +#include "aes.h" + +#include "api.h" +#include "common.h" +#include "params.h" + +int PQCLEAN_FRODOKEM1344AES_CLEAN_mul_add_as_plus_e(uint16_t *out, const uint16_t *s, const uint16_t *e, const uint8_t *seed_A) { + // Generate-and-multiply: generate matrix A (N x N) row-wise, multiply by s on the right. + // Inputs: s, e (N x N_BAR) + // Output: out = A*s + e (N x N_BAR) + int i, j, k; + int16_t A[PARAMS_N * PARAMS_N] = {0}; + aes128ctx ctx128; + + aes128_keyexp(&ctx128, seed_A); + for (i = 0; i < PARAMS_N; i++) { + for (j = 0; j < PARAMS_N; j += PARAMS_STRIPE_STEP) { + A[i * PARAMS_N + j] = (int16_t) i; // Loading values in the little-endian order + A[i * PARAMS_N + j + 1] = (int16_t) j; + } + } + for (i = 0; i < PARAMS_N * PARAMS_N; i++) { + A[i] = PQCLEAN_FRODOKEM1344AES_CLEAN_UINT16_TO_LE(A[i]); + } + + aes128_ecb((uint8_t *) A, (uint8_t *) A, PARAMS_N * PARAMS_N * sizeof(int16_t) / AES_BLOCKBYTES, &ctx128); + + for (i = 0; i < PARAMS_N * PARAMS_N; i++) { + A[i] = PQCLEAN_FRODOKEM1344AES_CLEAN_LE_TO_UINT16(A[i]); + } + memcpy(out, e, PARAMS_NBAR * PARAMS_N * sizeof(uint16_t)); + + for (i = 0; i < PARAMS_N; i++) { // Matrix multiplication-addition A*s + e + for (k = 0; k < PARAMS_NBAR; k++) { + uint16_t sum = 0; + for (j = 0; j < PARAMS_N; j++) { + sum += A[i * PARAMS_N + j] * s[k * PARAMS_N + j]; + } + out[i * PARAMS_NBAR + k] += sum; // Adding e. No need to reduce modulo 2^15, extra bits are taken care of during packing later on. + } + } + + return 1; +} + + +int PQCLEAN_FRODOKEM1344AES_CLEAN_mul_add_sa_plus_e(uint16_t *out, const uint16_t *s, const uint16_t *e, const uint8_t *seed_A) { + // Generate-and-multiply: generate matrix A (N x N) column-wise, multiply by s' on the left. + // Inputs: s', e' (N_BAR x N) + // Output: out = s'*A + e' (N_BAR x N) + int i, j, k; + int16_t A[PARAMS_N * PARAMS_N] = {0}; + aes128ctx ctx128; + + aes128_keyexp(&ctx128, seed_A); + for (i = 0; i < PARAMS_N; i++) { + for (j = 0; j < PARAMS_N; j += PARAMS_STRIPE_STEP) { + A[i * PARAMS_N + j] = (int16_t) i; // Loading values in the little-endian order + A[i * PARAMS_N + j + 1] = (int16_t) j; + } + } + for (i = 0; i < PARAMS_N * PARAMS_N; i++) { + A[i] = PQCLEAN_FRODOKEM1344AES_CLEAN_UINT16_TO_LE(A[i]); + } + + aes128_ecb((uint8_t *) A, (uint8_t *) A, PARAMS_N * PARAMS_N * sizeof(int16_t) / AES_BLOCKBYTES, &ctx128); + + for (i = 0; i < PARAMS_N * PARAMS_N; i++) { + A[i] = PQCLEAN_FRODOKEM1344AES_CLEAN_LE_TO_UINT16(A[i]); + } + memcpy(out, e, PARAMS_NBAR * PARAMS_N * sizeof(uint16_t)); + + for (i = 0; i < PARAMS_N; i++) { // Matrix multiplication-addition A*s + e + for (k = 0; k < PARAMS_NBAR; k++) { + uint16_t sum = 0; + for (j = 0; j < PARAMS_N; j++) { + sum += A[j * PARAMS_N + i] * s[k * PARAMS_N + j]; + } + out[k * PARAMS_N + i] += sum; // Adding e. No need to reduce modulo 2^15, extra bits are taken care of during packing later on. + } + } + + return 1; +} diff --git a/src/kem/frodokem/pqclean_frodokem1344aes_clean/noise.c b/src/kem/frodokem/pqclean_frodokem1344aes_clean/noise.c new file mode 100644 index 000000000..9205c9052 --- /dev/null +++ b/src/kem/frodokem/pqclean_frodokem1344aes_clean/noise.c @@ -0,0 +1,35 @@ +/******************************************************************************************** +* FrodoKEM: Learning with Errors Key Encapsulation +* +* Abstract: noise sampling functions +*********************************************************************************************/ + +#include + +#include "api.h" +#include "common.h" +#include "params.h" + +static uint16_t CDF_TABLE[CDF_TABLE_LEN] = CDF_TABLE_DATA; + +void PQCLEAN_FRODOKEM1344AES_CLEAN_sample_n(uint16_t *s, size_t n) { + // Fills vector s with n samples from the noise distribution which requires 16 bits to sample. + // The distribution is specified by its CDF. + // Input: pseudo-random values (2*n bytes) passed in s. The input is overwritten by the output. + size_t i; + unsigned int j; + + for (i = 0; i < n; ++i) { + uint16_t sample = 0; + uint16_t prnd = s[i] >> 1; // Drop the least significant bit + uint16_t sign = s[i] & 0x1; // Pick the least significant bit + + // No need to compare with the last value. + for (j = 0; j < (unsigned int)(CDF_TABLE_LEN - 1); j++) { + // Constant time comparison: 1 if CDF_TABLE[j] < s, 0 otherwise. Uses the fact that CDF_TABLE[j] and s fit in 15 bits. + sample += (uint16_t)(CDF_TABLE[j] - prnd) >> 15; + } + // Assuming that sign is either 0 or 1, flips sample iff sign = 1 + s[i] = ((-sign) ^ sample) + sign; + } +} diff --git a/src/kem/frodokem/pqclean_frodokem1344aes_clean/params.h b/src/kem/frodokem/pqclean_frodokem1344aes_clean/params.h new file mode 100644 index 000000000..1bda8a848 --- /dev/null +++ b/src/kem/frodokem/pqclean_frodokem1344aes_clean/params.h @@ -0,0 +1,27 @@ +#ifndef PARAMS_H +#define PARAMS_H + +#define CRYPTO_SECRETKEYBYTES PQCLEAN_FRODOKEM1344AES_CLEAN_CRYPTO_SECRETKEYBYTES +#define CRYPTO_PUBLICKEYBYTES PQCLEAN_FRODOKEM1344AES_CLEAN_CRYPTO_PUBLICKEYBYTES +#define CRYPTO_BYTES PQCLEAN_FRODOKEM1344AES_CLEAN_CRYPTO_BYTES +#define CRYPTO_CIPHERTEXTBYTES PQCLEAN_FRODOKEM1344AES_CLEAN_CRYPTO_CIPHERTEXTBYTES + +#define PARAMS_N 1344 +#define PARAMS_NBAR 8 +#define PARAMS_LOGQ 16 +#define PARAMS_Q (1 << PARAMS_LOGQ) +#define PARAMS_EXTRACTED_BITS 4 +#define PARAMS_STRIPE_STEP 8 +#define PARAMS_PARALLEL 4 +#define BYTES_SEED_A 16 +#define BYTES_MU ((PARAMS_EXTRACTED_BITS * PARAMS_NBAR * PARAMS_NBAR) / 8) +#define BYTES_PKHASH CRYPTO_BYTES + +// Selecting SHAKE XOF function for the KEM and noise sampling +#define shake shake256 + +// CDF table +#define CDF_TABLE_DATA {9142, 23462, 30338, 32361, 32725, 32765, 32767} +#define CDF_TABLE_LEN 7 + +#endif diff --git a/src/kem/frodokem/pqclean_frodokem1344aes_clean/util.c b/src/kem/frodokem/pqclean_frodokem1344aes_clean/util.c new file mode 100644 index 000000000..138dbe232 --- /dev/null +++ b/src/kem/frodokem/pqclean_frodokem1344aes_clean/util.c @@ -0,0 +1,235 @@ +/******************************************************************************************** +* FrodoKEM: Learning with Errors Key Encapsulation +* +* Abstract: additional functions for FrodoKEM +*********************************************************************************************/ + +#include +#include + +#include "api.h" +#include "common.h" +#include "params.h" + +#define min(x, y) (((x) < (y)) ? (x) : (y)) + +uint16_t PQCLEAN_FRODOKEM1344AES_CLEAN_LE_TO_UINT16(uint16_t n) { + return (((uint8_t *) &n)[0] | (((uint8_t *) &n)[1] << 8)); +} + +uint16_t PQCLEAN_FRODOKEM1344AES_CLEAN_UINT16_TO_LE(uint16_t n) { + uint16_t y; + uint8_t *z = (uint8_t *) &y; + z[0] = n & 0xFF; + z[1] = (n & 0xFF00) >> 8; + return y; +} + +void PQCLEAN_FRODOKEM1344AES_CLEAN_mul_bs(uint16_t *out, const uint16_t *b, const uint16_t *s) { + // Multiply by s on the right + // Inputs: b (N_BAR x N), s (N x N_BAR) + // Output: out = b*s (N_BAR x N_BAR) + int i, j, k; + + for (i = 0; i < PARAMS_NBAR; i++) { + for (j = 0; j < PARAMS_NBAR; j++) { + out[i * PARAMS_NBAR + j] = 0; + for (k = 0; k < PARAMS_N; k++) { + out[i * PARAMS_NBAR + j] += b[i * PARAMS_N + k] * s[j * PARAMS_N + k]; + } + out[i * PARAMS_NBAR + j] = (uint32_t)(out[i * PARAMS_NBAR + j]) & ((1 << PARAMS_LOGQ) - 1); + } + } +} + + +void PQCLEAN_FRODOKEM1344AES_CLEAN_mul_add_sb_plus_e(uint16_t *out, const uint16_t *b, const uint16_t *s, const uint16_t *e) { + // Multiply by s on the left + // Inputs: b (N x N_BAR), s (N_BAR x N), e (N_BAR x N_BAR) + // Output: out = s*b + e (N_BAR x N_BAR) + int i, j, k; + + for (k = 0; k < PARAMS_NBAR; k++) { + for (i = 0; i < PARAMS_NBAR; i++) { + out[k * PARAMS_NBAR + i] = e[k * PARAMS_NBAR + i]; + for (j = 0; j < PARAMS_N; j++) { + out[k * PARAMS_NBAR + i] += s[k * PARAMS_N + j] * b[j * PARAMS_NBAR + i]; + } + out[k * PARAMS_NBAR + i] = (uint32_t)(out[k * PARAMS_NBAR + i]) & ((1 << PARAMS_LOGQ) - 1); + } + } +} + + +void PQCLEAN_FRODOKEM1344AES_CLEAN_add(uint16_t *out, const uint16_t *a, const uint16_t *b) { + // Add a and b + // Inputs: a, b (N_BAR x N_BAR) + // Output: c = a + b + + for (size_t i = 0; i < (PARAMS_NBAR * PARAMS_NBAR); i++) { + out[i] = (a[i] + b[i]) & ((1 << PARAMS_LOGQ) - 1); + } +} + + +void PQCLEAN_FRODOKEM1344AES_CLEAN_sub(uint16_t *out, const uint16_t *a, const uint16_t *b) { + // Subtract a and b + // Inputs: a, b (N_BAR x N_BAR) + // Output: c = a - b + + for (size_t i = 0; i < (PARAMS_NBAR * PARAMS_NBAR); i++) { + out[i] = (a[i] - b[i]) & ((1 << PARAMS_LOGQ) - 1); + } +} + + +void PQCLEAN_FRODOKEM1344AES_CLEAN_key_encode(uint16_t *out, const uint16_t *in) { + // Encoding + unsigned int i, j, npieces_word = 8; + unsigned int nwords = (PARAMS_NBAR * PARAMS_NBAR) / 8; + uint64_t temp, mask = ((uint64_t)1 << PARAMS_EXTRACTED_BITS) - 1; + uint16_t *pos = out; + + for (i = 0; i < nwords; i++) { + temp = 0; + for (j = 0; j < PARAMS_EXTRACTED_BITS; j++) { + temp |= ((uint64_t)((uint8_t *)in)[i * PARAMS_EXTRACTED_BITS + j]) << (8 * j); + } + for (j = 0; j < npieces_word; j++) { + *pos = (uint16_t)((temp & mask) << (PARAMS_LOGQ - PARAMS_EXTRACTED_BITS)); + temp >>= PARAMS_EXTRACTED_BITS; + pos++; + } + } +} + + +void PQCLEAN_FRODOKEM1344AES_CLEAN_key_decode(uint16_t *out, const uint16_t *in) { + // Decoding + unsigned int i, j, index = 0, npieces_word = 8; + unsigned int nwords = (PARAMS_NBAR * PARAMS_NBAR) / 8; + uint16_t temp, maskex = ((uint16_t)1 << PARAMS_EXTRACTED_BITS) - 1, maskq = ((uint16_t)1 << PARAMS_LOGQ) - 1; + uint8_t *pos = (uint8_t *)out; + uint64_t templong; + + for (i = 0; i < nwords; i++) { + templong = 0; + for (j = 0; j < npieces_word; j++) { // temp = floor(in*2^{-11}+0.5) + temp = ((in[index] & maskq) + (1 << (PARAMS_LOGQ - PARAMS_EXTRACTED_BITS - 1))) >> (PARAMS_LOGQ - PARAMS_EXTRACTED_BITS); + templong |= ((uint64_t)(temp & maskex)) << (PARAMS_EXTRACTED_BITS * j); + index++; + } + for (j = 0; j < PARAMS_EXTRACTED_BITS; j++) { + pos[i * PARAMS_EXTRACTED_BITS + j] = (templong >> (8 * j)) & 0xFF; + } + } +} + + +void PQCLEAN_FRODOKEM1344AES_CLEAN_pack(uint8_t *out, size_t outlen, const uint16_t *in, size_t inlen, uint8_t lsb) { + // Pack the input uint16 vector into a char output vector, copying lsb bits from each input element. + // If inlen * lsb / 8 > outlen, only outlen * 8 bits are copied. + memset(out, 0, outlen); + + size_t i = 0; // whole bytes already filled in + size_t j = 0; // whole uint16_t already copied + uint16_t w = 0; // the leftover, not yet copied + uint8_t bits = 0; // the number of lsb in w + + while (i < outlen && (j < inlen || ((j == inlen) && (bits > 0)))) { + /* + in: | | |********|********| + ^ + j + w : | ****| + ^ + bits + out:|**|**|**|**|**|**|**|**|* | + ^^ + ib + */ + uint8_t b = 0; // bits in out[i] already filled in + while (b < 8) { + int nbits = min(8 - b, bits); + uint16_t mask = (1 << nbits) - 1; + uint8_t t = (uint8_t) ((w >> (bits - nbits)) & mask); // the bits to copy from w to out + out[i] = out[i] + (t << (8 - b - nbits)); + b += (uint8_t) nbits; + bits -= (uint8_t) nbits; + w &= ~(mask << bits); // not strictly necessary; mostly for debugging + + if (bits == 0) { + if (j < inlen) { + w = in[j]; + bits = lsb; + j++; + } else { + break; // the input vector is exhausted + } + } + } + if (b == 8) { // out[i] is filled in + i++; + } + } +} + + +void PQCLEAN_FRODOKEM1344AES_CLEAN_unpack(uint16_t *out, size_t outlen, const uint8_t *in, size_t inlen, uint8_t lsb) { + // Unpack the input char vector into a uint16_t output vector, copying lsb bits + // for each output element from input. outlen must be at least ceil(inlen * 8 / lsb). + memset(out, 0, outlen * sizeof(uint16_t)); + + size_t i = 0; // whole uint16_t already filled in + size_t j = 0; // whole bytes already copied + uint8_t w = 0; // the leftover, not yet copied + uint8_t bits = 0; // the number of lsb bits of w + + while (i < outlen && (j < inlen || ((j == inlen) && (bits > 0)))) { + /* + in: | | | | | | |**|**|... + ^ + j + w : | *| + ^ + bits + out:| *****| *****| *** | |... + ^ ^ + i b + */ + uint8_t b = 0; // bits in out[i] already filled in + while (b < lsb) { + int nbits = min(lsb - b, bits); + uint16_t mask = (1 << nbits) - 1; + uint8_t t = (w >> (bits - nbits)) & mask; // the bits to copy from w to out + out[i] = out[i] + (t << (lsb - b - nbits)); + b += (uint8_t) nbits; + bits -= (uint8_t) nbits; + w &= ~(mask << bits); // not strictly necessary; mostly for debugging + + if (bits == 0) { + if (j < inlen) { + w = in[j]; + bits = 8; + j++; + } else { + break; // the input vector is exhausted + } + } + } + if (b == lsb) { // out[i] is filled in + i++; + } + } +} + + +void PQCLEAN_FRODOKEM1344AES_CLEAN_clear_bytes(uint8_t *mem, size_t n) { + // Clear 8-bit bytes from memory. "n" indicates the number of bytes to be zeroed. + // This function uses the volatile type qualifier to inform the compiler not to optimize out the memory clearing. + volatile uint8_t *v = mem; + + for (size_t i = 0; i < n; i++) { + v[i] = 0; + } +} diff --git a/src/kem/frodokem/pqclean_frodokem1344shake_clean/LICENSE b/src/kem/frodokem/pqclean_frodokem1344shake_clean/LICENSE new file mode 100644 index 000000000..5cf7c8db6 --- /dev/null +++ b/src/kem/frodokem/pqclean_frodokem1344shake_clean/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) Microsoft Corporation. All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE diff --git a/src/kem/frodokem/pqclean_frodokem1344shake_clean/api.h b/src/kem/frodokem/pqclean_frodokem1344shake_clean/api.h new file mode 100644 index 000000000..b56f4118b --- /dev/null +++ b/src/kem/frodokem/pqclean_frodokem1344shake_clean/api.h @@ -0,0 +1,20 @@ +#ifndef PQCLEAN_FRODOKEM1344SHAKE_CLEAN_API_H +#define PQCLEAN_FRODOKEM1344SHAKE_CLEAN_API_H + +#include +#include + +#define PQCLEAN_FRODOKEM1344SHAKE_CLEAN_CRYPTO_SECRETKEYBYTES 43088 // sizeof(s) + CRYPTO_PUBLICKEYBYTES + 2*PARAMS_N*PARAMS_NBAR + BYTES_PKHASH +#define PQCLEAN_FRODOKEM1344SHAKE_CLEAN_CRYPTO_PUBLICKEYBYTES 21520 // sizeof(seed_A) + (PARAMS_LOGQ*PARAMS_N*PARAMS_NBAR)/8 +#define PQCLEAN_FRODOKEM1344SHAKE_CLEAN_CRYPTO_BYTES 32 +#define PQCLEAN_FRODOKEM1344SHAKE_CLEAN_CRYPTO_CIPHERTEXTBYTES 21632 // (PARAMS_LOGQ*PARAMS_N*PARAMS_NBAR)/8 + (PARAMS_LOGQ*PARAMS_NBAR*PARAMS_NBAR)/8 + +#define PQCLEAN_FRODOKEM1344SHAKE_CLEAN_CRYPTO_ALGNAME "FrodoKEM-1344-SHAKE" + +int PQCLEAN_FRODOKEM1344SHAKE_CLEAN_crypto_kem_keypair(uint8_t *pk, uint8_t *sk); + +int PQCLEAN_FRODOKEM1344SHAKE_CLEAN_crypto_kem_enc(uint8_t *ct, uint8_t *ss, const uint8_t *pk); + +int PQCLEAN_FRODOKEM1344SHAKE_CLEAN_crypto_kem_dec(uint8_t *ss, const uint8_t *ct, const uint8_t *sk); + +#endif diff --git a/src/kem/frodokem/pqclean_frodokem1344shake_clean/common.h b/src/kem/frodokem/pqclean_frodokem1344shake_clean/common.h new file mode 100644 index 000000000..5e487aec2 --- /dev/null +++ b/src/kem/frodokem/pqclean_frodokem1344shake_clean/common.h @@ -0,0 +1,19 @@ +#ifndef COMMON_H +#define COMMON_H + +int PQCLEAN_FRODOKEM1344SHAKE_CLEAN_mul_add_as_plus_e(uint16_t *out, const uint16_t *s, const uint16_t *e, const uint8_t *seed_A); +int PQCLEAN_FRODOKEM1344SHAKE_CLEAN_mul_add_sa_plus_e(uint16_t *out, const uint16_t *s, const uint16_t *e, const uint8_t *seed_A); +void PQCLEAN_FRODOKEM1344SHAKE_CLEAN_sample_n(uint16_t *s, size_t n); +void PQCLEAN_FRODOKEM1344SHAKE_CLEAN_mul_bs(uint16_t *out, const uint16_t *b, const uint16_t *s); +void PQCLEAN_FRODOKEM1344SHAKE_CLEAN_mul_add_sb_plus_e(uint16_t *out, const uint16_t *b, const uint16_t *s, const uint16_t *e); +void PQCLEAN_FRODOKEM1344SHAKE_CLEAN_add(uint16_t *out, const uint16_t *a, const uint16_t *b); +void PQCLEAN_FRODOKEM1344SHAKE_CLEAN_sub(uint16_t *out, const uint16_t *a, const uint16_t *b); +void PQCLEAN_FRODOKEM1344SHAKE_CLEAN_key_encode(uint16_t *out, const uint16_t *in); +void PQCLEAN_FRODOKEM1344SHAKE_CLEAN_key_decode(uint16_t *out, const uint16_t *in); +void PQCLEAN_FRODOKEM1344SHAKE_CLEAN_pack(uint8_t *out, size_t outlen, const uint16_t *in, size_t inlen, uint8_t lsb); +void PQCLEAN_FRODOKEM1344SHAKE_CLEAN_unpack(uint16_t *out, size_t outlen, const uint8_t *in, size_t inlen, uint8_t lsb); +void PQCLEAN_FRODOKEM1344SHAKE_CLEAN_clear_bytes(uint8_t *mem, size_t n); +uint16_t PQCLEAN_FRODOKEM1344SHAKE_CLEAN_LE_TO_UINT16(uint16_t n); +uint16_t PQCLEAN_FRODOKEM1344SHAKE_CLEAN_UINT16_TO_LE(uint16_t n); + +#endif diff --git a/src/kem/frodokem/pqclean_frodokem1344shake_clean/kem.c b/src/kem/frodokem/pqclean_frodokem1344shake_clean/kem.c new file mode 100644 index 000000000..85d0ce5c1 --- /dev/null +++ b/src/kem/frodokem/pqclean_frodokem1344shake_clean/kem.c @@ -0,0 +1,238 @@ +/******************************************************************************************** +* FrodoKEM: Learning with Errors Key Encapsulation +* +* Abstract: Key Encapsulation Mechanism (KEM) based on Frodo +*********************************************************************************************/ + +#include +#include + +#include "fips202.h" +#include "randombytes.h" + +#include "api.h" +#include "common.h" +#include "params.h" + +int PQCLEAN_FRODOKEM1344SHAKE_CLEAN_crypto_kem_keypair(uint8_t *pk, uint8_t *sk) { + // FrodoKEM's key generation + // Outputs: public key pk ( BYTES_SEED_A + (PARAMS_LOGQ*PARAMS_N*PARAMS_NBAR)/8 bytes) + // secret key sk (CRYPTO_BYTES + BYTES_SEED_A + (PARAMS_LOGQ*PARAMS_N*PARAMS_NBAR)/8 + 2*PARAMS_N*PARAMS_NBAR + BYTES_PKHASH bytes) + uint8_t *pk_seedA = &pk[0]; + uint8_t *pk_b = &pk[BYTES_SEED_A]; + uint8_t *sk_s = &sk[0]; + uint8_t *sk_pk = &sk[CRYPTO_BYTES]; + uint8_t *sk_S = &sk[CRYPTO_BYTES + CRYPTO_PUBLICKEYBYTES]; + uint8_t *sk_pkh = &sk[CRYPTO_BYTES + CRYPTO_PUBLICKEYBYTES + 2 * PARAMS_N * PARAMS_NBAR]; + uint16_t B[PARAMS_N * PARAMS_NBAR] = {0}; + uint16_t S[2 * PARAMS_N * PARAMS_NBAR] = {0}; // contains secret data + uint16_t *E = &S[PARAMS_N * PARAMS_NBAR]; // contains secret data + uint8_t randomness[2 * CRYPTO_BYTES + BYTES_SEED_A]; // contains secret data via randomness_s and randomness_seedSE + uint8_t *randomness_s = &randomness[0]; // contains secret data + uint8_t *randomness_seedSE = &randomness[CRYPTO_BYTES]; // contains secret data + uint8_t *randomness_z = &randomness[2 * CRYPTO_BYTES]; + uint8_t shake_input_seedSE[1 + CRYPTO_BYTES]; // contains secret data + + // Generate the secret value s, the seed for S and E, and the seed for the seed for A. Add seed_A to the public key + randombytes(randomness, CRYPTO_BYTES + CRYPTO_BYTES + BYTES_SEED_A); + shake(pk_seedA, BYTES_SEED_A, randomness_z, BYTES_SEED_A); + + // Generate S and E, and compute B = A*S + E. Generate A on-the-fly + shake_input_seedSE[0] = 0x5F; + memcpy(&shake_input_seedSE[1], randomness_seedSE, CRYPTO_BYTES); + shake((uint8_t *)S, 2 * PARAMS_N * PARAMS_NBAR * sizeof(uint16_t), shake_input_seedSE, 1 + CRYPTO_BYTES); + for (size_t i = 0; i < 2 * PARAMS_N * PARAMS_NBAR; i++) { + S[i] = PQCLEAN_FRODOKEM1344SHAKE_CLEAN_LE_TO_UINT16(S[i]); + } + PQCLEAN_FRODOKEM1344SHAKE_CLEAN_sample_n(S, PARAMS_N * PARAMS_NBAR); + PQCLEAN_FRODOKEM1344SHAKE_CLEAN_sample_n(E, PARAMS_N * PARAMS_NBAR); + PQCLEAN_FRODOKEM1344SHAKE_CLEAN_mul_add_as_plus_e(B, S, E, pk); + + // Encode the second part of the public key + PQCLEAN_FRODOKEM1344SHAKE_CLEAN_pack(pk_b, CRYPTO_PUBLICKEYBYTES - BYTES_SEED_A, B, PARAMS_N * PARAMS_NBAR, PARAMS_LOGQ); + + // Add s, pk and S to the secret key + memcpy(sk_s, randomness_s, CRYPTO_BYTES); + memcpy(sk_pk, pk, CRYPTO_PUBLICKEYBYTES); + for (size_t i = 0; i < PARAMS_N * PARAMS_NBAR; i++) { + S[i] = PQCLEAN_FRODOKEM1344SHAKE_CLEAN_UINT16_TO_LE(S[i]); + } + memcpy(sk_S, S, 2 * PARAMS_N * PARAMS_NBAR); + + // Add H(pk) to the secret key + shake(sk_pkh, BYTES_PKHASH, pk, CRYPTO_PUBLICKEYBYTES); + + // Cleanup: + PQCLEAN_FRODOKEM1344SHAKE_CLEAN_clear_bytes((uint8_t *)S, PARAMS_N * PARAMS_NBAR * sizeof(uint16_t)); + PQCLEAN_FRODOKEM1344SHAKE_CLEAN_clear_bytes((uint8_t *)E, PARAMS_N * PARAMS_NBAR * sizeof(uint16_t)); + PQCLEAN_FRODOKEM1344SHAKE_CLEAN_clear_bytes(randomness, 2 * CRYPTO_BYTES); + PQCLEAN_FRODOKEM1344SHAKE_CLEAN_clear_bytes(shake_input_seedSE, 1 + CRYPTO_BYTES); + return 0; +} + + +int PQCLEAN_FRODOKEM1344SHAKE_CLEAN_crypto_kem_enc(uint8_t *ct, uint8_t *ss, const uint8_t *pk) { + // FrodoKEM's key encapsulation + const uint8_t *pk_seedA = &pk[0]; + const uint8_t *pk_b = &pk[BYTES_SEED_A]; + uint8_t *ct_c1 = &ct[0]; + uint8_t *ct_c2 = &ct[(PARAMS_LOGQ * PARAMS_N * PARAMS_NBAR) / 8]; + uint16_t B[PARAMS_N * PARAMS_NBAR] = {0}; + uint16_t V[PARAMS_NBAR * PARAMS_NBAR] = {0}; // contains secret data + uint16_t C[PARAMS_NBAR * PARAMS_NBAR] = {0}; + uint16_t Bp[PARAMS_N * PARAMS_NBAR] = {0}; + uint16_t Sp[(2 * PARAMS_N + PARAMS_NBAR)*PARAMS_NBAR] = {0}; // contains secret data + uint16_t *Ep = &Sp[PARAMS_N * PARAMS_NBAR]; // contains secret data + uint16_t *Epp = &Sp[2 * PARAMS_N * PARAMS_NBAR]; // contains secret data + uint8_t G2in[BYTES_PKHASH + BYTES_MU]; // contains secret data via mu + uint8_t *pkh = &G2in[0]; + uint8_t *mu = &G2in[BYTES_PKHASH]; // contains secret data + uint8_t G2out[2 * CRYPTO_BYTES]; // contains secret data + uint8_t *seedSE = &G2out[0]; // contains secret data + uint8_t *k = &G2out[CRYPTO_BYTES]; // contains secret data + uint8_t Fin[CRYPTO_CIPHERTEXTBYTES + CRYPTO_BYTES]; // contains secret data via Fin_k + uint8_t *Fin_ct = &Fin[0]; + uint8_t *Fin_k = &Fin[CRYPTO_CIPHERTEXTBYTES]; // contains secret data + uint8_t shake_input_seedSE[1 + CRYPTO_BYTES]; // contains secret data + + // pkh <- G_1(pk), generate random mu, compute (seedSE || k) = G_2(pkh || mu) + shake(pkh, BYTES_PKHASH, pk, CRYPTO_PUBLICKEYBYTES); + randombytes(mu, BYTES_MU); + shake(G2out, CRYPTO_BYTES + CRYPTO_BYTES, G2in, BYTES_PKHASH + BYTES_MU); + + // Generate Sp and Ep, and compute Bp = Sp*A + Ep. Generate A on-the-fly + shake_input_seedSE[0] = 0x96; + memcpy(&shake_input_seedSE[1], seedSE, CRYPTO_BYTES); + shake((uint8_t *)Sp, (2 * PARAMS_N + PARAMS_NBAR) * PARAMS_NBAR * sizeof(uint16_t), shake_input_seedSE, 1 + CRYPTO_BYTES); + for (size_t i = 0; i < (2 * PARAMS_N + PARAMS_NBAR) * PARAMS_NBAR; i++) { + Sp[i] = PQCLEAN_FRODOKEM1344SHAKE_CLEAN_LE_TO_UINT16(Sp[i]); + } + PQCLEAN_FRODOKEM1344SHAKE_CLEAN_sample_n(Sp, PARAMS_N * PARAMS_NBAR); + PQCLEAN_FRODOKEM1344SHAKE_CLEAN_sample_n(Ep, PARAMS_N * PARAMS_NBAR); + PQCLEAN_FRODOKEM1344SHAKE_CLEAN_mul_add_sa_plus_e(Bp, Sp, Ep, pk_seedA); + PQCLEAN_FRODOKEM1344SHAKE_CLEAN_pack(ct_c1, (PARAMS_LOGQ * PARAMS_N * PARAMS_NBAR) / 8, Bp, PARAMS_N * PARAMS_NBAR, PARAMS_LOGQ); + + // Generate Epp, and compute V = Sp*B + Epp + PQCLEAN_FRODOKEM1344SHAKE_CLEAN_sample_n(Epp, PARAMS_NBAR * PARAMS_NBAR); + PQCLEAN_FRODOKEM1344SHAKE_CLEAN_unpack(B, PARAMS_N * PARAMS_NBAR, pk_b, CRYPTO_PUBLICKEYBYTES - BYTES_SEED_A, PARAMS_LOGQ); + PQCLEAN_FRODOKEM1344SHAKE_CLEAN_mul_add_sb_plus_e(V, B, Sp, Epp); + + // Encode mu, and compute C = V + enc(mu) (mod q) + PQCLEAN_FRODOKEM1344SHAKE_CLEAN_key_encode(C, (uint16_t *)mu); + PQCLEAN_FRODOKEM1344SHAKE_CLEAN_add(C, V, C); + PQCLEAN_FRODOKEM1344SHAKE_CLEAN_pack(ct_c2, (PARAMS_LOGQ * PARAMS_NBAR * PARAMS_NBAR) / 8, C, PARAMS_NBAR * PARAMS_NBAR, PARAMS_LOGQ); + + // Compute ss = F(ct||KK) + memcpy(Fin_ct, ct, CRYPTO_CIPHERTEXTBYTES); + memcpy(Fin_k, k, CRYPTO_BYTES); + shake(ss, CRYPTO_BYTES, Fin, CRYPTO_CIPHERTEXTBYTES + CRYPTO_BYTES); + + // Cleanup: + PQCLEAN_FRODOKEM1344SHAKE_CLEAN_clear_bytes((uint8_t *)V, PARAMS_NBAR * PARAMS_NBAR * sizeof(uint16_t)); + PQCLEAN_FRODOKEM1344SHAKE_CLEAN_clear_bytes((uint8_t *)Sp, PARAMS_N * PARAMS_NBAR * sizeof(uint16_t)); + PQCLEAN_FRODOKEM1344SHAKE_CLEAN_clear_bytes((uint8_t *)Ep, PARAMS_N * PARAMS_NBAR * sizeof(uint16_t)); + PQCLEAN_FRODOKEM1344SHAKE_CLEAN_clear_bytes((uint8_t *)Epp, PARAMS_NBAR * PARAMS_NBAR * sizeof(uint16_t)); + PQCLEAN_FRODOKEM1344SHAKE_CLEAN_clear_bytes(mu, BYTES_MU); + PQCLEAN_FRODOKEM1344SHAKE_CLEAN_clear_bytes(G2out, 2 * CRYPTO_BYTES); + PQCLEAN_FRODOKEM1344SHAKE_CLEAN_clear_bytes(Fin_k, CRYPTO_BYTES); + PQCLEAN_FRODOKEM1344SHAKE_CLEAN_clear_bytes(shake_input_seedSE, 1 + CRYPTO_BYTES); + return 0; +} + + +int PQCLEAN_FRODOKEM1344SHAKE_CLEAN_crypto_kem_dec(uint8_t *ss, const uint8_t *ct, const uint8_t *sk) { + // FrodoKEM's key decapsulation + uint16_t B[PARAMS_N * PARAMS_NBAR] = {0}; + uint16_t Bp[PARAMS_N * PARAMS_NBAR] = {0}; + uint16_t W[PARAMS_NBAR * PARAMS_NBAR] = {0}; // contains secret data + uint16_t C[PARAMS_NBAR * PARAMS_NBAR] = {0}; + uint16_t CC[PARAMS_NBAR * PARAMS_NBAR] = {0}; + uint16_t BBp[PARAMS_N * PARAMS_NBAR] = {0}; + uint16_t Sp[(2 * PARAMS_N + PARAMS_NBAR)*PARAMS_NBAR] = {0}; // contains secret data + uint16_t *Ep = &Sp[PARAMS_N * PARAMS_NBAR]; // contains secret data + uint16_t *Epp = &Sp[2 * PARAMS_N * PARAMS_NBAR]; // contains secret data + const uint8_t *ct_c1 = &ct[0]; + const uint8_t *ct_c2 = &ct[(PARAMS_LOGQ * PARAMS_N * PARAMS_NBAR) / 8]; + const uint8_t *sk_s = &sk[0]; + const uint8_t *sk_pk = &sk[CRYPTO_BYTES]; + const uint16_t *sk_S = (uint16_t *) &sk[CRYPTO_BYTES + CRYPTO_PUBLICKEYBYTES]; + uint16_t S[PARAMS_N * PARAMS_NBAR]; // contains secret data + const uint8_t *sk_pkh = &sk[CRYPTO_BYTES + CRYPTO_PUBLICKEYBYTES + 2 * PARAMS_N * PARAMS_NBAR]; + const uint8_t *pk_seedA = &sk_pk[0]; + const uint8_t *pk_b = &sk_pk[BYTES_SEED_A]; + uint8_t G2in[BYTES_PKHASH + BYTES_MU]; // contains secret data via muprime + uint8_t *pkh = &G2in[0]; + uint8_t *muprime = &G2in[BYTES_PKHASH]; // contains secret data + uint8_t G2out[2 * CRYPTO_BYTES]; // contains secret data + uint8_t *seedSEprime = &G2out[0]; // contains secret data + uint8_t *kprime = &G2out[CRYPTO_BYTES]; // contains secret data + uint8_t Fin[CRYPTO_CIPHERTEXTBYTES + CRYPTO_BYTES]; // contains secret data via Fin_k + uint8_t *Fin_ct = &Fin[0]; + uint8_t *Fin_k = &Fin[CRYPTO_CIPHERTEXTBYTES]; // contains secret data + uint8_t shake_input_seedSEprime[1 + CRYPTO_BYTES]; // contains secret data + + for (size_t i = 0; i < PARAMS_N * PARAMS_NBAR; i++) { + S[i] = PQCLEAN_FRODOKEM1344SHAKE_CLEAN_LE_TO_UINT16(sk_S[i]); + } + + // Compute W = C - Bp*S (mod q), and decode the randomness mu + PQCLEAN_FRODOKEM1344SHAKE_CLEAN_unpack(Bp, PARAMS_N * PARAMS_NBAR, ct_c1, (PARAMS_LOGQ * PARAMS_N * PARAMS_NBAR) / 8, PARAMS_LOGQ); + PQCLEAN_FRODOKEM1344SHAKE_CLEAN_unpack(C, PARAMS_NBAR * PARAMS_NBAR, ct_c2, (PARAMS_LOGQ * PARAMS_NBAR * PARAMS_NBAR) / 8, PARAMS_LOGQ); + PQCLEAN_FRODOKEM1344SHAKE_CLEAN_mul_bs(W, Bp, S); + PQCLEAN_FRODOKEM1344SHAKE_CLEAN_sub(W, C, W); + PQCLEAN_FRODOKEM1344SHAKE_CLEAN_key_decode((uint16_t *)muprime, W); + + // Generate (seedSE' || k') = G_2(pkh || mu') + memcpy(pkh, sk_pkh, BYTES_PKHASH); + shake(G2out, CRYPTO_BYTES + CRYPTO_BYTES, G2in, BYTES_PKHASH + BYTES_MU); + + // Generate Sp and Ep, and compute BBp = Sp*A + Ep. Generate A on-the-fly + shake_input_seedSEprime[0] = 0x96; + memcpy(&shake_input_seedSEprime[1], seedSEprime, CRYPTO_BYTES); + shake((uint8_t *)Sp, (2 * PARAMS_N + PARAMS_NBAR) * PARAMS_NBAR * sizeof(uint16_t), shake_input_seedSEprime, 1 + CRYPTO_BYTES); + for (size_t i = 0; i < (2 * PARAMS_N + PARAMS_NBAR) * PARAMS_NBAR; i++) { + Sp[i] = PQCLEAN_FRODOKEM1344SHAKE_CLEAN_LE_TO_UINT16(Sp[i]); + } + PQCLEAN_FRODOKEM1344SHAKE_CLEAN_sample_n(Sp, PARAMS_N * PARAMS_NBAR); + PQCLEAN_FRODOKEM1344SHAKE_CLEAN_sample_n(Ep, PARAMS_N * PARAMS_NBAR); + PQCLEAN_FRODOKEM1344SHAKE_CLEAN_mul_add_sa_plus_e(BBp, Sp, Ep, pk_seedA); + + // Generate Epp, and compute W = Sp*B + Epp + PQCLEAN_FRODOKEM1344SHAKE_CLEAN_sample_n(Epp, PARAMS_NBAR * PARAMS_NBAR); + PQCLEAN_FRODOKEM1344SHAKE_CLEAN_unpack(B, PARAMS_N * PARAMS_NBAR, pk_b, CRYPTO_PUBLICKEYBYTES - BYTES_SEED_A, PARAMS_LOGQ); + PQCLEAN_FRODOKEM1344SHAKE_CLEAN_mul_add_sb_plus_e(W, B, Sp, Epp); + + // Encode mu, and compute CC = W + enc(mu') (mod q) + PQCLEAN_FRODOKEM1344SHAKE_CLEAN_key_encode(CC, (uint16_t *)muprime); + PQCLEAN_FRODOKEM1344SHAKE_CLEAN_add(CC, W, CC); + + // Prepare input to F + memcpy(Fin_ct, ct, CRYPTO_CIPHERTEXTBYTES); + + // Reducing BBp modulo q + for (size_t i = 0; i < PARAMS_N * PARAMS_NBAR; i++) { + BBp[i] = BBp[i] & ((1 << PARAMS_LOGQ) - 1); + } + + // Is (Bp == BBp & C == CC) = true + if (memcmp(Bp, BBp, 2 * PARAMS_N * PARAMS_NBAR) == 0 && memcmp(C, CC, 2 * PARAMS_NBAR * PARAMS_NBAR) == 0) { + // Load k' to do ss = F(ct || k') + memcpy(Fin_k, kprime, CRYPTO_BYTES); + } else { + // Load s to do ss = F(ct || s) + memcpy(Fin_k, sk_s, CRYPTO_BYTES); + } + shake(ss, CRYPTO_BYTES, Fin, CRYPTO_CIPHERTEXTBYTES + CRYPTO_BYTES); + + // Cleanup: + PQCLEAN_FRODOKEM1344SHAKE_CLEAN_clear_bytes((uint8_t *)W, PARAMS_NBAR * PARAMS_NBAR * sizeof(uint16_t)); + PQCLEAN_FRODOKEM1344SHAKE_CLEAN_clear_bytes((uint8_t *)Sp, PARAMS_N * PARAMS_NBAR * sizeof(uint16_t)); + PQCLEAN_FRODOKEM1344SHAKE_CLEAN_clear_bytes((uint8_t *)S, PARAMS_N * PARAMS_NBAR * sizeof(uint16_t)); + PQCLEAN_FRODOKEM1344SHAKE_CLEAN_clear_bytes((uint8_t *)Ep, PARAMS_N * PARAMS_NBAR * sizeof(uint16_t)); + PQCLEAN_FRODOKEM1344SHAKE_CLEAN_clear_bytes((uint8_t *)Epp, PARAMS_NBAR * PARAMS_NBAR * sizeof(uint16_t)); + PQCLEAN_FRODOKEM1344SHAKE_CLEAN_clear_bytes(muprime, BYTES_MU); + PQCLEAN_FRODOKEM1344SHAKE_CLEAN_clear_bytes(G2out, 2 * CRYPTO_BYTES); + PQCLEAN_FRODOKEM1344SHAKE_CLEAN_clear_bytes(Fin_k, CRYPTO_BYTES); + PQCLEAN_FRODOKEM1344SHAKE_CLEAN_clear_bytes(shake_input_seedSEprime, 1 + CRYPTO_BYTES); + return 0; +} diff --git a/src/kem/frodokem/pqclean_frodokem1344shake_clean/matrix_shake.c b/src/kem/frodokem/pqclean_frodokem1344shake_clean/matrix_shake.c new file mode 100644 index 000000000..ba396d29d --- /dev/null +++ b/src/kem/frodokem/pqclean_frodokem1344shake_clean/matrix_shake.c @@ -0,0 +1,79 @@ +/******************************************************************************************** +* FrodoKEM: Learning with Errors Key Encapsulation +* +* Abstract: matrix arithmetic functions used by the KEM +*********************************************************************************************/ + +#include +#include + +#include "fips202.h" + +#include "api.h" +#include "common.h" +#include "params.h" + +int PQCLEAN_FRODOKEM1344SHAKE_CLEAN_mul_add_as_plus_e(uint16_t *out, const uint16_t *s, const uint16_t *e, const uint8_t *seed_A) { + // Generate-and-multiply: generate matrix A (N x N) row-wise, multiply by s on the right. + // Inputs: s, e (N x N_BAR) + // Output: out = A*s + e (N x N_BAR) + int i, j, k; + int16_t A[PARAMS_N * PARAMS_N] = {0}; + + uint8_t seed_A_separated[2 + BYTES_SEED_A]; + uint16_t *seed_A_origin = (uint16_t *)&seed_A_separated; + memcpy(&seed_A_separated[2], seed_A, BYTES_SEED_A); + for (i = 0; i < PARAMS_N; i++) { + seed_A_origin[0] = PQCLEAN_FRODOKEM1344SHAKE_CLEAN_UINT16_TO_LE((uint16_t) i); + shake128((uint8_t *)(A + i * PARAMS_N), (unsigned long long)(2 * PARAMS_N), seed_A_separated, 2 + BYTES_SEED_A); + } + for (i = 0; i < PARAMS_N * PARAMS_N; i++) { + A[i] = PQCLEAN_FRODOKEM1344SHAKE_CLEAN_LE_TO_UINT16(A[i]); + } + memcpy(out, e, PARAMS_NBAR * PARAMS_N * sizeof(uint16_t)); + + for (i = 0; i < PARAMS_N; i++) { // Matrix multiplication-addition A*s + e + for (k = 0; k < PARAMS_NBAR; k++) { + uint16_t sum = 0; + for (j = 0; j < PARAMS_N; j++) { + sum += A[i * PARAMS_N + j] * s[k * PARAMS_N + j]; + } + out[i * PARAMS_NBAR + k] += sum; // Adding e. No need to reduce modulo 2^15, extra bits are taken care of during packing later on. + } + } + + return 1; +} + + +int PQCLEAN_FRODOKEM1344SHAKE_CLEAN_mul_add_sa_plus_e(uint16_t *out, const uint16_t *s, const uint16_t *e, const uint8_t *seed_A) { + // Generate-and-multiply: generate matrix A (N x N) column-wise, multiply by s' on the left. + // Inputs: s', e' (N_BAR x N) + // Output: out = s'*A + e' (N_BAR x N) + int i, j, k; + int16_t A[PARAMS_N * PARAMS_N] = {0}; + + uint8_t seed_A_separated[2 + BYTES_SEED_A]; + uint16_t *seed_A_origin = (uint16_t *)&seed_A_separated; + memcpy(&seed_A_separated[2], seed_A, BYTES_SEED_A); + for (i = 0; i < PARAMS_N; i++) { + seed_A_origin[0] = PQCLEAN_FRODOKEM1344SHAKE_CLEAN_UINT16_TO_LE((uint16_t) i); + shake128((uint8_t *)(A + i * PARAMS_N), (unsigned long long)(2 * PARAMS_N), seed_A_separated, 2 + BYTES_SEED_A); + } + for (i = 0; i < PARAMS_N * PARAMS_N; i++) { + A[i] = PQCLEAN_FRODOKEM1344SHAKE_CLEAN_LE_TO_UINT16(A[i]); + } + memcpy(out, e, PARAMS_NBAR * PARAMS_N * sizeof(uint16_t)); + + for (i = 0; i < PARAMS_N; i++) { // Matrix multiplication-addition A*s + e + for (k = 0; k < PARAMS_NBAR; k++) { + uint16_t sum = 0; + for (j = 0; j < PARAMS_N; j++) { + sum += A[j * PARAMS_N + i] * s[k * PARAMS_N + j]; + } + out[k * PARAMS_N + i] += sum; // Adding e. No need to reduce modulo 2^15, extra bits are taken care of during packing later on. + } + } + + return 1; +} diff --git a/src/kem/frodokem/pqclean_frodokem1344shake_clean/noise.c b/src/kem/frodokem/pqclean_frodokem1344shake_clean/noise.c new file mode 100644 index 000000000..289d7aa36 --- /dev/null +++ b/src/kem/frodokem/pqclean_frodokem1344shake_clean/noise.c @@ -0,0 +1,35 @@ +/******************************************************************************************** +* FrodoKEM: Learning with Errors Key Encapsulation +* +* Abstract: noise sampling functions +*********************************************************************************************/ + +#include + +#include "api.h" +#include "common.h" +#include "params.h" + +static uint16_t CDF_TABLE[CDF_TABLE_LEN] = CDF_TABLE_DATA; + +void PQCLEAN_FRODOKEM1344SHAKE_CLEAN_sample_n(uint16_t *s, size_t n) { + // Fills vector s with n samples from the noise distribution which requires 16 bits to sample. + // The distribution is specified by its CDF. + // Input: pseudo-random values (2*n bytes) passed in s. The input is overwritten by the output. + size_t i; + unsigned int j; + + for (i = 0; i < n; ++i) { + uint16_t sample = 0; + uint16_t prnd = s[i] >> 1; // Drop the least significant bit + uint16_t sign = s[i] & 0x1; // Pick the least significant bit + + // No need to compare with the last value. + for (j = 0; j < (unsigned int)(CDF_TABLE_LEN - 1); j++) { + // Constant time comparison: 1 if CDF_TABLE[j] < s, 0 otherwise. Uses the fact that CDF_TABLE[j] and s fit in 15 bits. + sample += (uint16_t)(CDF_TABLE[j] - prnd) >> 15; + } + // Assuming that sign is either 0 or 1, flips sample iff sign = 1 + s[i] = ((-sign) ^ sample) + sign; + } +} diff --git a/src/kem/frodokem/pqclean_frodokem1344shake_clean/params.h b/src/kem/frodokem/pqclean_frodokem1344shake_clean/params.h new file mode 100644 index 000000000..ff3dcceef --- /dev/null +++ b/src/kem/frodokem/pqclean_frodokem1344shake_clean/params.h @@ -0,0 +1,27 @@ +#ifndef PARAMS_H +#define PARAMS_H + +#define CRYPTO_SECRETKEYBYTES PQCLEAN_FRODOKEM1344SHAKE_CLEAN_CRYPTO_SECRETKEYBYTES +#define CRYPTO_PUBLICKEYBYTES PQCLEAN_FRODOKEM1344SHAKE_CLEAN_CRYPTO_PUBLICKEYBYTES +#define CRYPTO_BYTES PQCLEAN_FRODOKEM1344SHAKE_CLEAN_CRYPTO_BYTES +#define CRYPTO_CIPHERTEXTBYTES PQCLEAN_FRODOKEM1344SHAKE_CLEAN_CRYPTO_CIPHERTEXTBYTES + +#define PARAMS_N 1344 +#define PARAMS_NBAR 8 +#define PARAMS_LOGQ 16 +#define PARAMS_Q (1 << PARAMS_LOGQ) +#define PARAMS_EXTRACTED_BITS 4 +#define PARAMS_STRIPE_STEP 8 +#define PARAMS_PARALLEL 4 +#define BYTES_SEED_A 16 +#define BYTES_MU ((PARAMS_EXTRACTED_BITS * PARAMS_NBAR * PARAMS_NBAR) / 8) +#define BYTES_PKHASH CRYPTO_BYTES + +// Selecting SHAKE XOF function for the KEM and noise sampling +#define shake shake256 + +// CDF table +#define CDF_TABLE_DATA {9142, 23462, 30338, 32361, 32725, 32765, 32767} +#define CDF_TABLE_LEN 7 + +#endif diff --git a/src/kem/frodokem/pqclean_frodokem1344shake_clean/util.c b/src/kem/frodokem/pqclean_frodokem1344shake_clean/util.c new file mode 100644 index 000000000..1a403a399 --- /dev/null +++ b/src/kem/frodokem/pqclean_frodokem1344shake_clean/util.c @@ -0,0 +1,235 @@ +/******************************************************************************************** +* FrodoKEM: Learning with Errors Key Encapsulation +* +* Abstract: additional functions for FrodoKEM +*********************************************************************************************/ + +#include +#include + +#include "api.h" +#include "common.h" +#include "params.h" + +#define min(x, y) (((x) < (y)) ? (x) : (y)) + +uint16_t PQCLEAN_FRODOKEM1344SHAKE_CLEAN_LE_TO_UINT16(uint16_t n) { + return (((uint8_t *) &n)[0] | (((uint8_t *) &n)[1] << 8)); +} + +uint16_t PQCLEAN_FRODOKEM1344SHAKE_CLEAN_UINT16_TO_LE(uint16_t n) { + uint16_t y; + uint8_t *z = (uint8_t *) &y; + z[0] = n & 0xFF; + z[1] = (n & 0xFF00) >> 8; + return y; +} + +void PQCLEAN_FRODOKEM1344SHAKE_CLEAN_mul_bs(uint16_t *out, const uint16_t *b, const uint16_t *s) { + // Multiply by s on the right + // Inputs: b (N_BAR x N), s (N x N_BAR) + // Output: out = b*s (N_BAR x N_BAR) + int i, j, k; + + for (i = 0; i < PARAMS_NBAR; i++) { + for (j = 0; j < PARAMS_NBAR; j++) { + out[i * PARAMS_NBAR + j] = 0; + for (k = 0; k < PARAMS_N; k++) { + out[i * PARAMS_NBAR + j] += b[i * PARAMS_N + k] * s[j * PARAMS_N + k]; + } + out[i * PARAMS_NBAR + j] = (uint32_t)(out[i * PARAMS_NBAR + j]) & ((1 << PARAMS_LOGQ) - 1); + } + } +} + + +void PQCLEAN_FRODOKEM1344SHAKE_CLEAN_mul_add_sb_plus_e(uint16_t *out, const uint16_t *b, const uint16_t *s, const uint16_t *e) { + // Multiply by s on the left + // Inputs: b (N x N_BAR), s (N_BAR x N), e (N_BAR x N_BAR) + // Output: out = s*b + e (N_BAR x N_BAR) + int i, j, k; + + for (k = 0; k < PARAMS_NBAR; k++) { + for (i = 0; i < PARAMS_NBAR; i++) { + out[k * PARAMS_NBAR + i] = e[k * PARAMS_NBAR + i]; + for (j = 0; j < PARAMS_N; j++) { + out[k * PARAMS_NBAR + i] += s[k * PARAMS_N + j] * b[j * PARAMS_NBAR + i]; + } + out[k * PARAMS_NBAR + i] = (uint32_t)(out[k * PARAMS_NBAR + i]) & ((1 << PARAMS_LOGQ) - 1); + } + } +} + + +void PQCLEAN_FRODOKEM1344SHAKE_CLEAN_add(uint16_t *out, const uint16_t *a, const uint16_t *b) { + // Add a and b + // Inputs: a, b (N_BAR x N_BAR) + // Output: c = a + b + + for (size_t i = 0; i < (PARAMS_NBAR * PARAMS_NBAR); i++) { + out[i] = (a[i] + b[i]) & ((1 << PARAMS_LOGQ) - 1); + } +} + + +void PQCLEAN_FRODOKEM1344SHAKE_CLEAN_sub(uint16_t *out, const uint16_t *a, const uint16_t *b) { + // Subtract a and b + // Inputs: a, b (N_BAR x N_BAR) + // Output: c = a - b + + for (size_t i = 0; i < (PARAMS_NBAR * PARAMS_NBAR); i++) { + out[i] = (a[i] - b[i]) & ((1 << PARAMS_LOGQ) - 1); + } +} + + +void PQCLEAN_FRODOKEM1344SHAKE_CLEAN_key_encode(uint16_t *out, const uint16_t *in) { + // Encoding + unsigned int i, j, npieces_word = 8; + unsigned int nwords = (PARAMS_NBAR * PARAMS_NBAR) / 8; + uint64_t temp, mask = ((uint64_t)1 << PARAMS_EXTRACTED_BITS) - 1; + uint16_t *pos = out; + + for (i = 0; i < nwords; i++) { + temp = 0; + for (j = 0; j < PARAMS_EXTRACTED_BITS; j++) { + temp |= ((uint64_t)((uint8_t *)in)[i * PARAMS_EXTRACTED_BITS + j]) << (8 * j); + } + for (j = 0; j < npieces_word; j++) { + *pos = (uint16_t)((temp & mask) << (PARAMS_LOGQ - PARAMS_EXTRACTED_BITS)); + temp >>= PARAMS_EXTRACTED_BITS; + pos++; + } + } +} + + +void PQCLEAN_FRODOKEM1344SHAKE_CLEAN_key_decode(uint16_t *out, const uint16_t *in) { + // Decoding + unsigned int i, j, index = 0, npieces_word = 8; + unsigned int nwords = (PARAMS_NBAR * PARAMS_NBAR) / 8; + uint16_t temp, maskex = ((uint16_t)1 << PARAMS_EXTRACTED_BITS) - 1, maskq = ((uint16_t)1 << PARAMS_LOGQ) - 1; + uint8_t *pos = (uint8_t *)out; + uint64_t templong; + + for (i = 0; i < nwords; i++) { + templong = 0; + for (j = 0; j < npieces_word; j++) { // temp = floor(in*2^{-11}+0.5) + temp = ((in[index] & maskq) + (1 << (PARAMS_LOGQ - PARAMS_EXTRACTED_BITS - 1))) >> (PARAMS_LOGQ - PARAMS_EXTRACTED_BITS); + templong |= ((uint64_t)(temp & maskex)) << (PARAMS_EXTRACTED_BITS * j); + index++; + } + for (j = 0; j < PARAMS_EXTRACTED_BITS; j++) { + pos[i * PARAMS_EXTRACTED_BITS + j] = (templong >> (8 * j)) & 0xFF; + } + } +} + + +void PQCLEAN_FRODOKEM1344SHAKE_CLEAN_pack(uint8_t *out, size_t outlen, const uint16_t *in, size_t inlen, uint8_t lsb) { + // Pack the input uint16 vector into a char output vector, copying lsb bits from each input element. + // If inlen * lsb / 8 > outlen, only outlen * 8 bits are copied. + memset(out, 0, outlen); + + size_t i = 0; // whole bytes already filled in + size_t j = 0; // whole uint16_t already copied + uint16_t w = 0; // the leftover, not yet copied + uint8_t bits = 0; // the number of lsb in w + + while (i < outlen && (j < inlen || ((j == inlen) && (bits > 0)))) { + /* + in: | | |********|********| + ^ + j + w : | ****| + ^ + bits + out:|**|**|**|**|**|**|**|**|* | + ^^ + ib + */ + uint8_t b = 0; // bits in out[i] already filled in + while (b < 8) { + int nbits = min(8 - b, bits); + uint16_t mask = (1 << nbits) - 1; + uint8_t t = (uint8_t) ((w >> (bits - nbits)) & mask); // the bits to copy from w to out + out[i] = out[i] + (t << (8 - b - nbits)); + b += (uint8_t) nbits; + bits -= (uint8_t) nbits; + w &= ~(mask << bits); // not strictly necessary; mostly for debugging + + if (bits == 0) { + if (j < inlen) { + w = in[j]; + bits = lsb; + j++; + } else { + break; // the input vector is exhausted + } + } + } + if (b == 8) { // out[i] is filled in + i++; + } + } +} + + +void PQCLEAN_FRODOKEM1344SHAKE_CLEAN_unpack(uint16_t *out, size_t outlen, const uint8_t *in, size_t inlen, uint8_t lsb) { + // Unpack the input char vector into a uint16_t output vector, copying lsb bits + // for each output element from input. outlen must be at least ceil(inlen * 8 / lsb). + memset(out, 0, outlen * sizeof(uint16_t)); + + size_t i = 0; // whole uint16_t already filled in + size_t j = 0; // whole bytes already copied + uint8_t w = 0; // the leftover, not yet copied + uint8_t bits = 0; // the number of lsb bits of w + + while (i < outlen && (j < inlen || ((j == inlen) && (bits > 0)))) { + /* + in: | | | | | | |**|**|... + ^ + j + w : | *| + ^ + bits + out:| *****| *****| *** | |... + ^ ^ + i b + */ + uint8_t b = 0; // bits in out[i] already filled in + while (b < lsb) { + int nbits = min(lsb - b, bits); + uint16_t mask = (1 << nbits) - 1; + uint8_t t = (w >> (bits - nbits)) & mask; // the bits to copy from w to out + out[i] = out[i] + (t << (lsb - b - nbits)); + b += (uint8_t) nbits; + bits -= (uint8_t) nbits; + w &= ~(mask << bits); // not strictly necessary; mostly for debugging + + if (bits == 0) { + if (j < inlen) { + w = in[j]; + bits = 8; + j++; + } else { + break; // the input vector is exhausted + } + } + } + if (b == lsb) { // out[i] is filled in + i++; + } + } +} + + +void PQCLEAN_FRODOKEM1344SHAKE_CLEAN_clear_bytes(uint8_t *mem, size_t n) { + // Clear 8-bit bytes from memory. "n" indicates the number of bytes to be zeroed. + // This function uses the volatile type qualifier to inform the compiler not to optimize out the memory clearing. + volatile uint8_t *v = mem; + + for (size_t i = 0; i < n; i++) { + v[i] = 0; + } +} diff --git a/src/kem/frodokem/pqclean_frodokem640aes_clean/LICENSE b/src/kem/frodokem/pqclean_frodokem640aes_clean/LICENSE new file mode 100644 index 000000000..5cf7c8db6 --- /dev/null +++ b/src/kem/frodokem/pqclean_frodokem640aes_clean/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) Microsoft Corporation. All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE diff --git a/src/kem/frodokem/pqclean_frodokem640aes_clean/api.h b/src/kem/frodokem/pqclean_frodokem640aes_clean/api.h new file mode 100644 index 000000000..6b6881081 --- /dev/null +++ b/src/kem/frodokem/pqclean_frodokem640aes_clean/api.h @@ -0,0 +1,20 @@ +#ifndef PQCLEAN_FRODOKEM640AES_CLEAN_API_H +#define PQCLEAN_FRODOKEM640AES_CLEAN_API_H + +#include +#include + +#define PQCLEAN_FRODOKEM640AES_CLEAN_CRYPTO_SECRETKEYBYTES 19888 // sizeof(s) + CRYPTO_PUBLICKEYBYTES + 2*PARAMS_N*PARAMS_NBAR + BYTES_PKHASH +#define PQCLEAN_FRODOKEM640AES_CLEAN_CRYPTO_PUBLICKEYBYTES 9616 // sizeof(seed_A) + (PARAMS_LOGQ*PARAMS_N*PARAMS_NBAR)/8 +#define PQCLEAN_FRODOKEM640AES_CLEAN_CRYPTO_BYTES 16 +#define PQCLEAN_FRODOKEM640AES_CLEAN_CRYPTO_CIPHERTEXTBYTES 9720 // (PARAMS_LOGQ*PARAMS_N*PARAMS_NBAR)/8 + (PARAMS_LOGQ*PARAMS_NBAR*PARAMS_NBAR)/8 + +#define PQCLEAN_FRODOKEM640AES_CLEAN_CRYPTO_ALGNAME "FrodoKEM-640-AES" + +int PQCLEAN_FRODOKEM640AES_CLEAN_crypto_kem_keypair(uint8_t *pk, uint8_t *sk); + +int PQCLEAN_FRODOKEM640AES_CLEAN_crypto_kem_enc(uint8_t *ct, uint8_t *ss, const uint8_t *pk); + +int PQCLEAN_FRODOKEM640AES_CLEAN_crypto_kem_dec(uint8_t *ss, const uint8_t *ct, const uint8_t *sk); + +#endif diff --git a/src/kem/frodokem/pqclean_frodokem640aes_clean/common.h b/src/kem/frodokem/pqclean_frodokem640aes_clean/common.h new file mode 100644 index 000000000..76309497f --- /dev/null +++ b/src/kem/frodokem/pqclean_frodokem640aes_clean/common.h @@ -0,0 +1,19 @@ +#ifndef COMMON_H +#define COMMON_H + +int PQCLEAN_FRODOKEM640AES_CLEAN_mul_add_as_plus_e(uint16_t *out, const uint16_t *s, const uint16_t *e, const uint8_t *seed_A); +int PQCLEAN_FRODOKEM640AES_CLEAN_mul_add_sa_plus_e(uint16_t *out, const uint16_t *s, const uint16_t *e, const uint8_t *seed_A); +void PQCLEAN_FRODOKEM640AES_CLEAN_sample_n(uint16_t *s, size_t n); +void PQCLEAN_FRODOKEM640AES_CLEAN_mul_bs(uint16_t *out, const uint16_t *b, const uint16_t *s); +void PQCLEAN_FRODOKEM640AES_CLEAN_mul_add_sb_plus_e(uint16_t *out, const uint16_t *b, const uint16_t *s, const uint16_t *e); +void PQCLEAN_FRODOKEM640AES_CLEAN_add(uint16_t *out, const uint16_t *a, const uint16_t *b); +void PQCLEAN_FRODOKEM640AES_CLEAN_sub(uint16_t *out, const uint16_t *a, const uint16_t *b); +void PQCLEAN_FRODOKEM640AES_CLEAN_key_encode(uint16_t *out, const uint16_t *in); +void PQCLEAN_FRODOKEM640AES_CLEAN_key_decode(uint16_t *out, const uint16_t *in); +void PQCLEAN_FRODOKEM640AES_CLEAN_pack(uint8_t *out, size_t outlen, const uint16_t *in, size_t inlen, uint8_t lsb); +void PQCLEAN_FRODOKEM640AES_CLEAN_unpack(uint16_t *out, size_t outlen, const uint8_t *in, size_t inlen, uint8_t lsb); +void PQCLEAN_FRODOKEM640AES_CLEAN_clear_bytes(uint8_t *mem, size_t n); +uint16_t PQCLEAN_FRODOKEM640AES_CLEAN_LE_TO_UINT16(uint16_t n); +uint16_t PQCLEAN_FRODOKEM640AES_CLEAN_UINT16_TO_LE(uint16_t n); + +#endif diff --git a/src/kem/frodokem/pqclean_frodokem640aes_clean/kem.c b/src/kem/frodokem/pqclean_frodokem640aes_clean/kem.c new file mode 100644 index 000000000..7049e252f --- /dev/null +++ b/src/kem/frodokem/pqclean_frodokem640aes_clean/kem.c @@ -0,0 +1,238 @@ +/******************************************************************************************** +* FrodoKEM: Learning with Errors Key Encapsulation +* +* Abstract: Key Encapsulation Mechanism (KEM) based on Frodo +*********************************************************************************************/ + +#include +#include + +#include "fips202.h" +#include "randombytes.h" + +#include "api.h" +#include "common.h" +#include "params.h" + +int PQCLEAN_FRODOKEM640AES_CLEAN_crypto_kem_keypair(uint8_t *pk, uint8_t *sk) { + // FrodoKEM's key generation + // Outputs: public key pk ( BYTES_SEED_A + (PARAMS_LOGQ*PARAMS_N*PARAMS_NBAR)/8 bytes) + // secret key sk (CRYPTO_BYTES + BYTES_SEED_A + (PARAMS_LOGQ*PARAMS_N*PARAMS_NBAR)/8 + 2*PARAMS_N*PARAMS_NBAR + BYTES_PKHASH bytes) + uint8_t *pk_seedA = &pk[0]; + uint8_t *pk_b = &pk[BYTES_SEED_A]; + uint8_t *sk_s = &sk[0]; + uint8_t *sk_pk = &sk[CRYPTO_BYTES]; + uint8_t *sk_S = &sk[CRYPTO_BYTES + CRYPTO_PUBLICKEYBYTES]; + uint8_t *sk_pkh = &sk[CRYPTO_BYTES + CRYPTO_PUBLICKEYBYTES + 2 * PARAMS_N * PARAMS_NBAR]; + uint16_t B[PARAMS_N * PARAMS_NBAR] = {0}; + uint16_t S[2 * PARAMS_N * PARAMS_NBAR] = {0}; // contains secret data + uint16_t *E = &S[PARAMS_N * PARAMS_NBAR]; // contains secret data + uint8_t randomness[2 * CRYPTO_BYTES + BYTES_SEED_A]; // contains secret data via randomness_s and randomness_seedSE + uint8_t *randomness_s = &randomness[0]; // contains secret data + uint8_t *randomness_seedSE = &randomness[CRYPTO_BYTES]; // contains secret data + uint8_t *randomness_z = &randomness[2 * CRYPTO_BYTES]; + uint8_t shake_input_seedSE[1 + CRYPTO_BYTES]; // contains secret data + + // Generate the secret value s, the seed for S and E, and the seed for the seed for A. Add seed_A to the public key + randombytes(randomness, CRYPTO_BYTES + CRYPTO_BYTES + BYTES_SEED_A); + shake(pk_seedA, BYTES_SEED_A, randomness_z, BYTES_SEED_A); + + // Generate S and E, and compute B = A*S + E. Generate A on-the-fly + shake_input_seedSE[0] = 0x5F; + memcpy(&shake_input_seedSE[1], randomness_seedSE, CRYPTO_BYTES); + shake((uint8_t *)S, 2 * PARAMS_N * PARAMS_NBAR * sizeof(uint16_t), shake_input_seedSE, 1 + CRYPTO_BYTES); + for (size_t i = 0; i < 2 * PARAMS_N * PARAMS_NBAR; i++) { + S[i] = PQCLEAN_FRODOKEM640AES_CLEAN_LE_TO_UINT16(S[i]); + } + PQCLEAN_FRODOKEM640AES_CLEAN_sample_n(S, PARAMS_N * PARAMS_NBAR); + PQCLEAN_FRODOKEM640AES_CLEAN_sample_n(E, PARAMS_N * PARAMS_NBAR); + PQCLEAN_FRODOKEM640AES_CLEAN_mul_add_as_plus_e(B, S, E, pk); + + // Encode the second part of the public key + PQCLEAN_FRODOKEM640AES_CLEAN_pack(pk_b, CRYPTO_PUBLICKEYBYTES - BYTES_SEED_A, B, PARAMS_N * PARAMS_NBAR, PARAMS_LOGQ); + + // Add s, pk and S to the secret key + memcpy(sk_s, randomness_s, CRYPTO_BYTES); + memcpy(sk_pk, pk, CRYPTO_PUBLICKEYBYTES); + for (size_t i = 0; i < PARAMS_N * PARAMS_NBAR; i++) { + S[i] = PQCLEAN_FRODOKEM640AES_CLEAN_UINT16_TO_LE(S[i]); + } + memcpy(sk_S, S, 2 * PARAMS_N * PARAMS_NBAR); + + // Add H(pk) to the secret key + shake(sk_pkh, BYTES_PKHASH, pk, CRYPTO_PUBLICKEYBYTES); + + // Cleanup: + PQCLEAN_FRODOKEM640AES_CLEAN_clear_bytes((uint8_t *)S, PARAMS_N * PARAMS_NBAR * sizeof(uint16_t)); + PQCLEAN_FRODOKEM640AES_CLEAN_clear_bytes((uint8_t *)E, PARAMS_N * PARAMS_NBAR * sizeof(uint16_t)); + PQCLEAN_FRODOKEM640AES_CLEAN_clear_bytes(randomness, 2 * CRYPTO_BYTES); + PQCLEAN_FRODOKEM640AES_CLEAN_clear_bytes(shake_input_seedSE, 1 + CRYPTO_BYTES); + return 0; +} + + +int PQCLEAN_FRODOKEM640AES_CLEAN_crypto_kem_enc(uint8_t *ct, uint8_t *ss, const uint8_t *pk) { + // FrodoKEM's key encapsulation + const uint8_t *pk_seedA = &pk[0]; + const uint8_t *pk_b = &pk[BYTES_SEED_A]; + uint8_t *ct_c1 = &ct[0]; + uint8_t *ct_c2 = &ct[(PARAMS_LOGQ * PARAMS_N * PARAMS_NBAR) / 8]; + uint16_t B[PARAMS_N * PARAMS_NBAR] = {0}; + uint16_t V[PARAMS_NBAR * PARAMS_NBAR] = {0}; // contains secret data + uint16_t C[PARAMS_NBAR * PARAMS_NBAR] = {0}; + uint16_t Bp[PARAMS_N * PARAMS_NBAR] = {0}; + uint16_t Sp[(2 * PARAMS_N + PARAMS_NBAR)*PARAMS_NBAR] = {0}; // contains secret data + uint16_t *Ep = &Sp[PARAMS_N * PARAMS_NBAR]; // contains secret data + uint16_t *Epp = &Sp[2 * PARAMS_N * PARAMS_NBAR]; // contains secret data + uint8_t G2in[BYTES_PKHASH + BYTES_MU]; // contains secret data via mu + uint8_t *pkh = &G2in[0]; + uint8_t *mu = &G2in[BYTES_PKHASH]; // contains secret data + uint8_t G2out[2 * CRYPTO_BYTES]; // contains secret data + uint8_t *seedSE = &G2out[0]; // contains secret data + uint8_t *k = &G2out[CRYPTO_BYTES]; // contains secret data + uint8_t Fin[CRYPTO_CIPHERTEXTBYTES + CRYPTO_BYTES]; // contains secret data via Fin_k + uint8_t *Fin_ct = &Fin[0]; + uint8_t *Fin_k = &Fin[CRYPTO_CIPHERTEXTBYTES]; // contains secret data + uint8_t shake_input_seedSE[1 + CRYPTO_BYTES]; // contains secret data + + // pkh <- G_1(pk), generate random mu, compute (seedSE || k) = G_2(pkh || mu) + shake(pkh, BYTES_PKHASH, pk, CRYPTO_PUBLICKEYBYTES); + randombytes(mu, BYTES_MU); + shake(G2out, CRYPTO_BYTES + CRYPTO_BYTES, G2in, BYTES_PKHASH + BYTES_MU); + + // Generate Sp and Ep, and compute Bp = Sp*A + Ep. Generate A on-the-fly + shake_input_seedSE[0] = 0x96; + memcpy(&shake_input_seedSE[1], seedSE, CRYPTO_BYTES); + shake((uint8_t *)Sp, (2 * PARAMS_N + PARAMS_NBAR) * PARAMS_NBAR * sizeof(uint16_t), shake_input_seedSE, 1 + CRYPTO_BYTES); + for (size_t i = 0; i < (2 * PARAMS_N + PARAMS_NBAR) * PARAMS_NBAR; i++) { + Sp[i] = PQCLEAN_FRODOKEM640AES_CLEAN_LE_TO_UINT16(Sp[i]); + } + PQCLEAN_FRODOKEM640AES_CLEAN_sample_n(Sp, PARAMS_N * PARAMS_NBAR); + PQCLEAN_FRODOKEM640AES_CLEAN_sample_n(Ep, PARAMS_N * PARAMS_NBAR); + PQCLEAN_FRODOKEM640AES_CLEAN_mul_add_sa_plus_e(Bp, Sp, Ep, pk_seedA); + PQCLEAN_FRODOKEM640AES_CLEAN_pack(ct_c1, (PARAMS_LOGQ * PARAMS_N * PARAMS_NBAR) / 8, Bp, PARAMS_N * PARAMS_NBAR, PARAMS_LOGQ); + + // Generate Epp, and compute V = Sp*B + Epp + PQCLEAN_FRODOKEM640AES_CLEAN_sample_n(Epp, PARAMS_NBAR * PARAMS_NBAR); + PQCLEAN_FRODOKEM640AES_CLEAN_unpack(B, PARAMS_N * PARAMS_NBAR, pk_b, CRYPTO_PUBLICKEYBYTES - BYTES_SEED_A, PARAMS_LOGQ); + PQCLEAN_FRODOKEM640AES_CLEAN_mul_add_sb_plus_e(V, B, Sp, Epp); + + // Encode mu, and compute C = V + enc(mu) (mod q) + PQCLEAN_FRODOKEM640AES_CLEAN_key_encode(C, (uint16_t *)mu); + PQCLEAN_FRODOKEM640AES_CLEAN_add(C, V, C); + PQCLEAN_FRODOKEM640AES_CLEAN_pack(ct_c2, (PARAMS_LOGQ * PARAMS_NBAR * PARAMS_NBAR) / 8, C, PARAMS_NBAR * PARAMS_NBAR, PARAMS_LOGQ); + + // Compute ss = F(ct||KK) + memcpy(Fin_ct, ct, CRYPTO_CIPHERTEXTBYTES); + memcpy(Fin_k, k, CRYPTO_BYTES); + shake(ss, CRYPTO_BYTES, Fin, CRYPTO_CIPHERTEXTBYTES + CRYPTO_BYTES); + + // Cleanup: + PQCLEAN_FRODOKEM640AES_CLEAN_clear_bytes((uint8_t *)V, PARAMS_NBAR * PARAMS_NBAR * sizeof(uint16_t)); + PQCLEAN_FRODOKEM640AES_CLEAN_clear_bytes((uint8_t *)Sp, PARAMS_N * PARAMS_NBAR * sizeof(uint16_t)); + PQCLEAN_FRODOKEM640AES_CLEAN_clear_bytes((uint8_t *)Ep, PARAMS_N * PARAMS_NBAR * sizeof(uint16_t)); + PQCLEAN_FRODOKEM640AES_CLEAN_clear_bytes((uint8_t *)Epp, PARAMS_NBAR * PARAMS_NBAR * sizeof(uint16_t)); + PQCLEAN_FRODOKEM640AES_CLEAN_clear_bytes(mu, BYTES_MU); + PQCLEAN_FRODOKEM640AES_CLEAN_clear_bytes(G2out, 2 * CRYPTO_BYTES); + PQCLEAN_FRODOKEM640AES_CLEAN_clear_bytes(Fin_k, CRYPTO_BYTES); + PQCLEAN_FRODOKEM640AES_CLEAN_clear_bytes(shake_input_seedSE, 1 + CRYPTO_BYTES); + return 0; +} + + +int PQCLEAN_FRODOKEM640AES_CLEAN_crypto_kem_dec(uint8_t *ss, const uint8_t *ct, const uint8_t *sk) { + // FrodoKEM's key decapsulation + uint16_t B[PARAMS_N * PARAMS_NBAR] = {0}; + uint16_t Bp[PARAMS_N * PARAMS_NBAR] = {0}; + uint16_t W[PARAMS_NBAR * PARAMS_NBAR] = {0}; // contains secret data + uint16_t C[PARAMS_NBAR * PARAMS_NBAR] = {0}; + uint16_t CC[PARAMS_NBAR * PARAMS_NBAR] = {0}; + uint16_t BBp[PARAMS_N * PARAMS_NBAR] = {0}; + uint16_t Sp[(2 * PARAMS_N + PARAMS_NBAR)*PARAMS_NBAR] = {0}; // contains secret data + uint16_t *Ep = &Sp[PARAMS_N * PARAMS_NBAR]; // contains secret data + uint16_t *Epp = &Sp[2 * PARAMS_N * PARAMS_NBAR]; // contains secret data + const uint8_t *ct_c1 = &ct[0]; + const uint8_t *ct_c2 = &ct[(PARAMS_LOGQ * PARAMS_N * PARAMS_NBAR) / 8]; + const uint8_t *sk_s = &sk[0]; + const uint8_t *sk_pk = &sk[CRYPTO_BYTES]; + const uint16_t *sk_S = (uint16_t *) &sk[CRYPTO_BYTES + CRYPTO_PUBLICKEYBYTES]; + uint16_t S[PARAMS_N * PARAMS_NBAR]; // contains secret data + const uint8_t *sk_pkh = &sk[CRYPTO_BYTES + CRYPTO_PUBLICKEYBYTES + 2 * PARAMS_N * PARAMS_NBAR]; + const uint8_t *pk_seedA = &sk_pk[0]; + const uint8_t *pk_b = &sk_pk[BYTES_SEED_A]; + uint8_t G2in[BYTES_PKHASH + BYTES_MU]; // contains secret data via muprime + uint8_t *pkh = &G2in[0]; + uint8_t *muprime = &G2in[BYTES_PKHASH]; // contains secret data + uint8_t G2out[2 * CRYPTO_BYTES]; // contains secret data + uint8_t *seedSEprime = &G2out[0]; // contains secret data + uint8_t *kprime = &G2out[CRYPTO_BYTES]; // contains secret data + uint8_t Fin[CRYPTO_CIPHERTEXTBYTES + CRYPTO_BYTES]; // contains secret data via Fin_k + uint8_t *Fin_ct = &Fin[0]; + uint8_t *Fin_k = &Fin[CRYPTO_CIPHERTEXTBYTES]; // contains secret data + uint8_t shake_input_seedSEprime[1 + CRYPTO_BYTES]; // contains secret data + + for (size_t i = 0; i < PARAMS_N * PARAMS_NBAR; i++) { + S[i] = PQCLEAN_FRODOKEM640AES_CLEAN_LE_TO_UINT16(sk_S[i]); + } + + // Compute W = C - Bp*S (mod q), and decode the randomness mu + PQCLEAN_FRODOKEM640AES_CLEAN_unpack(Bp, PARAMS_N * PARAMS_NBAR, ct_c1, (PARAMS_LOGQ * PARAMS_N * PARAMS_NBAR) / 8, PARAMS_LOGQ); + PQCLEAN_FRODOKEM640AES_CLEAN_unpack(C, PARAMS_NBAR * PARAMS_NBAR, ct_c2, (PARAMS_LOGQ * PARAMS_NBAR * PARAMS_NBAR) / 8, PARAMS_LOGQ); + PQCLEAN_FRODOKEM640AES_CLEAN_mul_bs(W, Bp, S); + PQCLEAN_FRODOKEM640AES_CLEAN_sub(W, C, W); + PQCLEAN_FRODOKEM640AES_CLEAN_key_decode((uint16_t *)muprime, W); + + // Generate (seedSE' || k') = G_2(pkh || mu') + memcpy(pkh, sk_pkh, BYTES_PKHASH); + shake(G2out, CRYPTO_BYTES + CRYPTO_BYTES, G2in, BYTES_PKHASH + BYTES_MU); + + // Generate Sp and Ep, and compute BBp = Sp*A + Ep. Generate A on-the-fly + shake_input_seedSEprime[0] = 0x96; + memcpy(&shake_input_seedSEprime[1], seedSEprime, CRYPTO_BYTES); + shake((uint8_t *)Sp, (2 * PARAMS_N + PARAMS_NBAR) * PARAMS_NBAR * sizeof(uint16_t), shake_input_seedSEprime, 1 + CRYPTO_BYTES); + for (size_t i = 0; i < (2 * PARAMS_N + PARAMS_NBAR) * PARAMS_NBAR; i++) { + Sp[i] = PQCLEAN_FRODOKEM640AES_CLEAN_LE_TO_UINT16(Sp[i]); + } + PQCLEAN_FRODOKEM640AES_CLEAN_sample_n(Sp, PARAMS_N * PARAMS_NBAR); + PQCLEAN_FRODOKEM640AES_CLEAN_sample_n(Ep, PARAMS_N * PARAMS_NBAR); + PQCLEAN_FRODOKEM640AES_CLEAN_mul_add_sa_plus_e(BBp, Sp, Ep, pk_seedA); + + // Generate Epp, and compute W = Sp*B + Epp + PQCLEAN_FRODOKEM640AES_CLEAN_sample_n(Epp, PARAMS_NBAR * PARAMS_NBAR); + PQCLEAN_FRODOKEM640AES_CLEAN_unpack(B, PARAMS_N * PARAMS_NBAR, pk_b, CRYPTO_PUBLICKEYBYTES - BYTES_SEED_A, PARAMS_LOGQ); + PQCLEAN_FRODOKEM640AES_CLEAN_mul_add_sb_plus_e(W, B, Sp, Epp); + + // Encode mu, and compute CC = W + enc(mu') (mod q) + PQCLEAN_FRODOKEM640AES_CLEAN_key_encode(CC, (uint16_t *)muprime); + PQCLEAN_FRODOKEM640AES_CLEAN_add(CC, W, CC); + + // Prepare input to F + memcpy(Fin_ct, ct, CRYPTO_CIPHERTEXTBYTES); + + // Reducing BBp modulo q + for (size_t i = 0; i < PARAMS_N * PARAMS_NBAR; i++) { + BBp[i] = BBp[i] & ((1 << PARAMS_LOGQ) - 1); + } + + // Is (Bp == BBp & C == CC) = true + if (memcmp(Bp, BBp, 2 * PARAMS_N * PARAMS_NBAR) == 0 && memcmp(C, CC, 2 * PARAMS_NBAR * PARAMS_NBAR) == 0) { + // Load k' to do ss = F(ct || k') + memcpy(Fin_k, kprime, CRYPTO_BYTES); + } else { + // Load s to do ss = F(ct || s) + memcpy(Fin_k, sk_s, CRYPTO_BYTES); + } + shake(ss, CRYPTO_BYTES, Fin, CRYPTO_CIPHERTEXTBYTES + CRYPTO_BYTES); + + // Cleanup: + PQCLEAN_FRODOKEM640AES_CLEAN_clear_bytes((uint8_t *)W, PARAMS_NBAR * PARAMS_NBAR * sizeof(uint16_t)); + PQCLEAN_FRODOKEM640AES_CLEAN_clear_bytes((uint8_t *)Sp, PARAMS_N * PARAMS_NBAR * sizeof(uint16_t)); + PQCLEAN_FRODOKEM640AES_CLEAN_clear_bytes((uint8_t *)S, PARAMS_N * PARAMS_NBAR * sizeof(uint16_t)); + PQCLEAN_FRODOKEM640AES_CLEAN_clear_bytes((uint8_t *)Ep, PARAMS_N * PARAMS_NBAR * sizeof(uint16_t)); + PQCLEAN_FRODOKEM640AES_CLEAN_clear_bytes((uint8_t *)Epp, PARAMS_NBAR * PARAMS_NBAR * sizeof(uint16_t)); + PQCLEAN_FRODOKEM640AES_CLEAN_clear_bytes(muprime, BYTES_MU); + PQCLEAN_FRODOKEM640AES_CLEAN_clear_bytes(G2out, 2 * CRYPTO_BYTES); + PQCLEAN_FRODOKEM640AES_CLEAN_clear_bytes(Fin_k, CRYPTO_BYTES); + PQCLEAN_FRODOKEM640AES_CLEAN_clear_bytes(shake_input_seedSEprime, 1 + CRYPTO_BYTES); + return 0; +} diff --git a/src/kem/frodokem/pqclean_frodokem640aes_clean/matrix_aes.c b/src/kem/frodokem/pqclean_frodokem640aes_clean/matrix_aes.c new file mode 100644 index 000000000..65344e3d9 --- /dev/null +++ b/src/kem/frodokem/pqclean_frodokem640aes_clean/matrix_aes.c @@ -0,0 +1,93 @@ +/******************************************************************************************** +* FrodoKEM: Learning with Errors Key Encapsulation +* +* Abstract: matrix arithmetic functions used by the KEM +*********************************************************************************************/ + +#include +#include + +#include "aes.h" + +#include "api.h" +#include "common.h" +#include "params.h" + +int PQCLEAN_FRODOKEM640AES_CLEAN_mul_add_as_plus_e(uint16_t *out, const uint16_t *s, const uint16_t *e, const uint8_t *seed_A) { + // Generate-and-multiply: generate matrix A (N x N) row-wise, multiply by s on the right. + // Inputs: s, e (N x N_BAR) + // Output: out = A*s + e (N x N_BAR) + int i, j, k; + int16_t A[PARAMS_N * PARAMS_N] = {0}; + aes128ctx ctx128; + + aes128_keyexp(&ctx128, seed_A); + for (i = 0; i < PARAMS_N; i++) { + for (j = 0; j < PARAMS_N; j += PARAMS_STRIPE_STEP) { + A[i * PARAMS_N + j] = (int16_t) i; // Loading values in the little-endian order + A[i * PARAMS_N + j + 1] = (int16_t) j; + } + } + for (i = 0; i < PARAMS_N * PARAMS_N; i++) { + A[i] = PQCLEAN_FRODOKEM640AES_CLEAN_UINT16_TO_LE(A[i]); + } + + aes128_ecb((uint8_t *) A, (uint8_t *) A, PARAMS_N * PARAMS_N * sizeof(int16_t) / AES_BLOCKBYTES, &ctx128); + + for (i = 0; i < PARAMS_N * PARAMS_N; i++) { + A[i] = PQCLEAN_FRODOKEM640AES_CLEAN_LE_TO_UINT16(A[i]); + } + memcpy(out, e, PARAMS_NBAR * PARAMS_N * sizeof(uint16_t)); + + for (i = 0; i < PARAMS_N; i++) { // Matrix multiplication-addition A*s + e + for (k = 0; k < PARAMS_NBAR; k++) { + uint16_t sum = 0; + for (j = 0; j < PARAMS_N; j++) { + sum += A[i * PARAMS_N + j] * s[k * PARAMS_N + j]; + } + out[i * PARAMS_NBAR + k] += sum; // Adding e. No need to reduce modulo 2^15, extra bits are taken care of during packing later on. + } + } + + return 1; +} + + +int PQCLEAN_FRODOKEM640AES_CLEAN_mul_add_sa_plus_e(uint16_t *out, const uint16_t *s, const uint16_t *e, const uint8_t *seed_A) { + // Generate-and-multiply: generate matrix A (N x N) column-wise, multiply by s' on the left. + // Inputs: s', e' (N_BAR x N) + // Output: out = s'*A + e' (N_BAR x N) + int i, j, k; + int16_t A[PARAMS_N * PARAMS_N] = {0}; + aes128ctx ctx128; + + aes128_keyexp(&ctx128, seed_A); + for (i = 0; i < PARAMS_N; i++) { + for (j = 0; j < PARAMS_N; j += PARAMS_STRIPE_STEP) { + A[i * PARAMS_N + j] = (int16_t) i; // Loading values in the little-endian order + A[i * PARAMS_N + j + 1] = (int16_t) j; + } + } + for (i = 0; i < PARAMS_N * PARAMS_N; i++) { + A[i] = PQCLEAN_FRODOKEM640AES_CLEAN_UINT16_TO_LE(A[i]); + } + + aes128_ecb((uint8_t *) A, (uint8_t *) A, PARAMS_N * PARAMS_N * sizeof(int16_t) / AES_BLOCKBYTES, &ctx128); + + for (i = 0; i < PARAMS_N * PARAMS_N; i++) { + A[i] = PQCLEAN_FRODOKEM640AES_CLEAN_LE_TO_UINT16(A[i]); + } + memcpy(out, e, PARAMS_NBAR * PARAMS_N * sizeof(uint16_t)); + + for (i = 0; i < PARAMS_N; i++) { // Matrix multiplication-addition A*s + e + for (k = 0; k < PARAMS_NBAR; k++) { + uint16_t sum = 0; + for (j = 0; j < PARAMS_N; j++) { + sum += A[j * PARAMS_N + i] * s[k * PARAMS_N + j]; + } + out[k * PARAMS_N + i] += sum; // Adding e. No need to reduce modulo 2^15, extra bits are taken care of during packing later on. + } + } + + return 1; +} diff --git a/src/kem/frodokem/pqclean_frodokem640aes_clean/noise.c b/src/kem/frodokem/pqclean_frodokem640aes_clean/noise.c new file mode 100644 index 000000000..44cd51be1 --- /dev/null +++ b/src/kem/frodokem/pqclean_frodokem640aes_clean/noise.c @@ -0,0 +1,35 @@ +/******************************************************************************************** +* FrodoKEM: Learning with Errors Key Encapsulation +* +* Abstract: noise sampling functions +*********************************************************************************************/ + +#include + +#include "api.h" +#include "common.h" +#include "params.h" + +static uint16_t CDF_TABLE[CDF_TABLE_LEN] = CDF_TABLE_DATA; + +void PQCLEAN_FRODOKEM640AES_CLEAN_sample_n(uint16_t *s, size_t n) { + // Fills vector s with n samples from the noise distribution which requires 16 bits to sample. + // The distribution is specified by its CDF. + // Input: pseudo-random values (2*n bytes) passed in s. The input is overwritten by the output. + size_t i; + unsigned int j; + + for (i = 0; i < n; ++i) { + uint16_t sample = 0; + uint16_t prnd = s[i] >> 1; // Drop the least significant bit + uint16_t sign = s[i] & 0x1; // Pick the least significant bit + + // No need to compare with the last value. + for (j = 0; j < (unsigned int)(CDF_TABLE_LEN - 1); j++) { + // Constant time comparison: 1 if CDF_TABLE[j] < s, 0 otherwise. Uses the fact that CDF_TABLE[j] and s fit in 15 bits. + sample += (uint16_t)(CDF_TABLE[j] - prnd) >> 15; + } + // Assuming that sign is either 0 or 1, flips sample iff sign = 1 + s[i] = ((-sign) ^ sample) + sign; + } +} diff --git a/src/kem/frodokem/pqclean_frodokem640aes_clean/params.h b/src/kem/frodokem/pqclean_frodokem640aes_clean/params.h new file mode 100644 index 000000000..08d6df39e --- /dev/null +++ b/src/kem/frodokem/pqclean_frodokem640aes_clean/params.h @@ -0,0 +1,27 @@ +#ifndef PARAMS_H +#define PARAMS_H + +#define CRYPTO_SECRETKEYBYTES PQCLEAN_FRODOKEM640AES_CLEAN_CRYPTO_SECRETKEYBYTES +#define CRYPTO_PUBLICKEYBYTES PQCLEAN_FRODOKEM640AES_CLEAN_CRYPTO_PUBLICKEYBYTES +#define CRYPTO_BYTES PQCLEAN_FRODOKEM640AES_CLEAN_CRYPTO_BYTES +#define CRYPTO_CIPHERTEXTBYTES PQCLEAN_FRODOKEM640AES_CLEAN_CRYPTO_CIPHERTEXTBYTES + +#define PARAMS_N 640 +#define PARAMS_NBAR 8 +#define PARAMS_LOGQ 15 +#define PARAMS_Q (1 << PARAMS_LOGQ) +#define PARAMS_EXTRACTED_BITS 2 +#define PARAMS_STRIPE_STEP 8 +#define PARAMS_PARALLEL 4 +#define BYTES_SEED_A 16 +#define BYTES_MU ((PARAMS_EXTRACTED_BITS * PARAMS_NBAR * PARAMS_NBAR) / 8) +#define BYTES_PKHASH CRYPTO_BYTES + +// Selecting SHAKE XOF function for the KEM and noise sampling +#define shake shake128 + +// CDF table +#define CDF_TABLE_DATA {4643, 13363, 20579, 25843, 29227, 31145, 32103, 32525, 32689, 32745, 32762, 32766, 32767} +#define CDF_TABLE_LEN 13 + +#endif diff --git a/src/kem/frodokem/pqclean_frodokem640aes_clean/util.c b/src/kem/frodokem/pqclean_frodokem640aes_clean/util.c new file mode 100644 index 000000000..96bec7522 --- /dev/null +++ b/src/kem/frodokem/pqclean_frodokem640aes_clean/util.c @@ -0,0 +1,235 @@ +/******************************************************************************************** +* FrodoKEM: Learning with Errors Key Encapsulation +* +* Abstract: additional functions for FrodoKEM +*********************************************************************************************/ + +#include +#include + +#include "api.h" +#include "common.h" +#include "params.h" + +#define min(x, y) (((x) < (y)) ? (x) : (y)) + +uint16_t PQCLEAN_FRODOKEM640AES_CLEAN_LE_TO_UINT16(uint16_t n) { + return (((uint8_t *) &n)[0] | (((uint8_t *) &n)[1] << 8)); +} + +uint16_t PQCLEAN_FRODOKEM640AES_CLEAN_UINT16_TO_LE(uint16_t n) { + uint16_t y; + uint8_t *z = (uint8_t *) &y; + z[0] = n & 0xFF; + z[1] = (n & 0xFF00) >> 8; + return y; +} + +void PQCLEAN_FRODOKEM640AES_CLEAN_mul_bs(uint16_t *out, const uint16_t *b, const uint16_t *s) { + // Multiply by s on the right + // Inputs: b (N_BAR x N), s (N x N_BAR) + // Output: out = b*s (N_BAR x N_BAR) + int i, j, k; + + for (i = 0; i < PARAMS_NBAR; i++) { + for (j = 0; j < PARAMS_NBAR; j++) { + out[i * PARAMS_NBAR + j] = 0; + for (k = 0; k < PARAMS_N; k++) { + out[i * PARAMS_NBAR + j] += b[i * PARAMS_N + k] * s[j * PARAMS_N + k]; + } + out[i * PARAMS_NBAR + j] = (uint32_t)(out[i * PARAMS_NBAR + j]) & ((1 << PARAMS_LOGQ) - 1); + } + } +} + + +void PQCLEAN_FRODOKEM640AES_CLEAN_mul_add_sb_plus_e(uint16_t *out, const uint16_t *b, const uint16_t *s, const uint16_t *e) { + // Multiply by s on the left + // Inputs: b (N x N_BAR), s (N_BAR x N), e (N_BAR x N_BAR) + // Output: out = s*b + e (N_BAR x N_BAR) + int i, j, k; + + for (k = 0; k < PARAMS_NBAR; k++) { + for (i = 0; i < PARAMS_NBAR; i++) { + out[k * PARAMS_NBAR + i] = e[k * PARAMS_NBAR + i]; + for (j = 0; j < PARAMS_N; j++) { + out[k * PARAMS_NBAR + i] += s[k * PARAMS_N + j] * b[j * PARAMS_NBAR + i]; + } + out[k * PARAMS_NBAR + i] = (uint32_t)(out[k * PARAMS_NBAR + i]) & ((1 << PARAMS_LOGQ) - 1); + } + } +} + + +void PQCLEAN_FRODOKEM640AES_CLEAN_add(uint16_t *out, const uint16_t *a, const uint16_t *b) { + // Add a and b + // Inputs: a, b (N_BAR x N_BAR) + // Output: c = a + b + + for (size_t i = 0; i < (PARAMS_NBAR * PARAMS_NBAR); i++) { + out[i] = (a[i] + b[i]) & ((1 << PARAMS_LOGQ) - 1); + } +} + + +void PQCLEAN_FRODOKEM640AES_CLEAN_sub(uint16_t *out, const uint16_t *a, const uint16_t *b) { + // Subtract a and b + // Inputs: a, b (N_BAR x N_BAR) + // Output: c = a - b + + for (size_t i = 0; i < (PARAMS_NBAR * PARAMS_NBAR); i++) { + out[i] = (a[i] - b[i]) & ((1 << PARAMS_LOGQ) - 1); + } +} + + +void PQCLEAN_FRODOKEM640AES_CLEAN_key_encode(uint16_t *out, const uint16_t *in) { + // Encoding + unsigned int i, j, npieces_word = 8; + unsigned int nwords = (PARAMS_NBAR * PARAMS_NBAR) / 8; + uint64_t temp, mask = ((uint64_t)1 << PARAMS_EXTRACTED_BITS) - 1; + uint16_t *pos = out; + + for (i = 0; i < nwords; i++) { + temp = 0; + for (j = 0; j < PARAMS_EXTRACTED_BITS; j++) { + temp |= ((uint64_t)((uint8_t *)in)[i * PARAMS_EXTRACTED_BITS + j]) << (8 * j); + } + for (j = 0; j < npieces_word; j++) { + *pos = (uint16_t)((temp & mask) << (PARAMS_LOGQ - PARAMS_EXTRACTED_BITS)); + temp >>= PARAMS_EXTRACTED_BITS; + pos++; + } + } +} + + +void PQCLEAN_FRODOKEM640AES_CLEAN_key_decode(uint16_t *out, const uint16_t *in) { + // Decoding + unsigned int i, j, index = 0, npieces_word = 8; + unsigned int nwords = (PARAMS_NBAR * PARAMS_NBAR) / 8; + uint16_t temp, maskex = ((uint16_t)1 << PARAMS_EXTRACTED_BITS) - 1, maskq = ((uint16_t)1 << PARAMS_LOGQ) - 1; + uint8_t *pos = (uint8_t *)out; + uint64_t templong; + + for (i = 0; i < nwords; i++) { + templong = 0; + for (j = 0; j < npieces_word; j++) { // temp = floor(in*2^{-11}+0.5) + temp = ((in[index] & maskq) + (1 << (PARAMS_LOGQ - PARAMS_EXTRACTED_BITS - 1))) >> (PARAMS_LOGQ - PARAMS_EXTRACTED_BITS); + templong |= ((uint64_t)(temp & maskex)) << (PARAMS_EXTRACTED_BITS * j); + index++; + } + for (j = 0; j < PARAMS_EXTRACTED_BITS; j++) { + pos[i * PARAMS_EXTRACTED_BITS + j] = (templong >> (8 * j)) & 0xFF; + } + } +} + + +void PQCLEAN_FRODOKEM640AES_CLEAN_pack(uint8_t *out, size_t outlen, const uint16_t *in, size_t inlen, uint8_t lsb) { + // Pack the input uint16 vector into a char output vector, copying lsb bits from each input element. + // If inlen * lsb / 8 > outlen, only outlen * 8 bits are copied. + memset(out, 0, outlen); + + size_t i = 0; // whole bytes already filled in + size_t j = 0; // whole uint16_t already copied + uint16_t w = 0; // the leftover, not yet copied + uint8_t bits = 0; // the number of lsb in w + + while (i < outlen && (j < inlen || ((j == inlen) && (bits > 0)))) { + /* + in: | | |********|********| + ^ + j + w : | ****| + ^ + bits + out:|**|**|**|**|**|**|**|**|* | + ^^ + ib + */ + uint8_t b = 0; // bits in out[i] already filled in + while (b < 8) { + int nbits = min(8 - b, bits); + uint16_t mask = (1 << nbits) - 1; + uint8_t t = (uint8_t) ((w >> (bits - nbits)) & mask); // the bits to copy from w to out + out[i] = out[i] + (t << (8 - b - nbits)); + b += (uint8_t) nbits; + bits -= (uint8_t) nbits; + w &= ~(mask << bits); // not strictly necessary; mostly for debugging + + if (bits == 0) { + if (j < inlen) { + w = in[j]; + bits = lsb; + j++; + } else { + break; // the input vector is exhausted + } + } + } + if (b == 8) { // out[i] is filled in + i++; + } + } +} + + +void PQCLEAN_FRODOKEM640AES_CLEAN_unpack(uint16_t *out, size_t outlen, const uint8_t *in, size_t inlen, uint8_t lsb) { + // Unpack the input char vector into a uint16_t output vector, copying lsb bits + // for each output element from input. outlen must be at least ceil(inlen * 8 / lsb). + memset(out, 0, outlen * sizeof(uint16_t)); + + size_t i = 0; // whole uint16_t already filled in + size_t j = 0; // whole bytes already copied + uint8_t w = 0; // the leftover, not yet copied + uint8_t bits = 0; // the number of lsb bits of w + + while (i < outlen && (j < inlen || ((j == inlen) && (bits > 0)))) { + /* + in: | | | | | | |**|**|... + ^ + j + w : | *| + ^ + bits + out:| *****| *****| *** | |... + ^ ^ + i b + */ + uint8_t b = 0; // bits in out[i] already filled in + while (b < lsb) { + int nbits = min(lsb - b, bits); + uint16_t mask = (1 << nbits) - 1; + uint8_t t = (w >> (bits - nbits)) & mask; // the bits to copy from w to out + out[i] = out[i] + (t << (lsb - b - nbits)); + b += (uint8_t) nbits; + bits -= (uint8_t) nbits; + w &= ~(mask << bits); // not strictly necessary; mostly for debugging + + if (bits == 0) { + if (j < inlen) { + w = in[j]; + bits = 8; + j++; + } else { + break; // the input vector is exhausted + } + } + } + if (b == lsb) { // out[i] is filled in + i++; + } + } +} + + +void PQCLEAN_FRODOKEM640AES_CLEAN_clear_bytes(uint8_t *mem, size_t n) { + // Clear 8-bit bytes from memory. "n" indicates the number of bytes to be zeroed. + // This function uses the volatile type qualifier to inform the compiler not to optimize out the memory clearing. + volatile uint8_t *v = mem; + + for (size_t i = 0; i < n; i++) { + v[i] = 0; + } +} diff --git a/src/kem/frodokem/pqclean_frodokem640shake_clean/LICENSE b/src/kem/frodokem/pqclean_frodokem640shake_clean/LICENSE new file mode 100644 index 000000000..5cf7c8db6 --- /dev/null +++ b/src/kem/frodokem/pqclean_frodokem640shake_clean/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) Microsoft Corporation. All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE diff --git a/src/kem/frodokem/pqclean_frodokem640shake_clean/api.h b/src/kem/frodokem/pqclean_frodokem640shake_clean/api.h new file mode 100644 index 000000000..74bbdab2e --- /dev/null +++ b/src/kem/frodokem/pqclean_frodokem640shake_clean/api.h @@ -0,0 +1,20 @@ +#ifndef PQCLEAN_FRODOKEM640SHAKE_CLEAN_API_H +#define PQCLEAN_FRODOKEM640SHAKE_CLEAN_API_H + +#include +#include + +#define PQCLEAN_FRODOKEM640SHAKE_CLEAN_CRYPTO_SECRETKEYBYTES 19888 // sizeof(s) + CRYPTO_PUBLICKEYBYTES + 2*PARAMS_N*PARAMS_NBAR + BYTES_PKHASH +#define PQCLEAN_FRODOKEM640SHAKE_CLEAN_CRYPTO_PUBLICKEYBYTES 9616 // sizeof(seed_A) + (PARAMS_LOGQ*PARAMS_N*PARAMS_NBAR)/8 +#define PQCLEAN_FRODOKEM640SHAKE_CLEAN_CRYPTO_BYTES 16 +#define PQCLEAN_FRODOKEM640SHAKE_CLEAN_CRYPTO_CIPHERTEXTBYTES 9720 // (PARAMS_LOGQ*PARAMS_N*PARAMS_NBAR)/8 + (PARAMS_LOGQ*PARAMS_NBAR*PARAMS_NBAR)/8 + +#define PQCLEAN_FRODOKEM640SHAKE_CLEAN_CRYPTO_ALGNAME "FrodoKEM-640-SHAKE" + +int PQCLEAN_FRODOKEM640SHAKE_CLEAN_crypto_kem_keypair(uint8_t *pk, uint8_t *sk); + +int PQCLEAN_FRODOKEM640SHAKE_CLEAN_crypto_kem_enc(uint8_t *ct, uint8_t *ss, const uint8_t *pk); + +int PQCLEAN_FRODOKEM640SHAKE_CLEAN_crypto_kem_dec(uint8_t *ss, const uint8_t *ct, const uint8_t *sk); + +#endif diff --git a/src/kem/frodokem/pqclean_frodokem640shake_clean/common.h b/src/kem/frodokem/pqclean_frodokem640shake_clean/common.h new file mode 100644 index 000000000..aa19ea076 --- /dev/null +++ b/src/kem/frodokem/pqclean_frodokem640shake_clean/common.h @@ -0,0 +1,19 @@ +#ifndef COMMON_H +#define COMMON_H + +int PQCLEAN_FRODOKEM640SHAKE_CLEAN_mul_add_as_plus_e(uint16_t *out, const uint16_t *s, const uint16_t *e, const uint8_t *seed_A); +int PQCLEAN_FRODOKEM640SHAKE_CLEAN_mul_add_sa_plus_e(uint16_t *out, const uint16_t *s, const uint16_t *e, const uint8_t *seed_A); +void PQCLEAN_FRODOKEM640SHAKE_CLEAN_sample_n(uint16_t *s, size_t n); +void PQCLEAN_FRODOKEM640SHAKE_CLEAN_mul_bs(uint16_t *out, const uint16_t *b, const uint16_t *s); +void PQCLEAN_FRODOKEM640SHAKE_CLEAN_mul_add_sb_plus_e(uint16_t *out, const uint16_t *b, const uint16_t *s, const uint16_t *e); +void PQCLEAN_FRODOKEM640SHAKE_CLEAN_add(uint16_t *out, const uint16_t *a, const uint16_t *b); +void PQCLEAN_FRODOKEM640SHAKE_CLEAN_sub(uint16_t *out, const uint16_t *a, const uint16_t *b); +void PQCLEAN_FRODOKEM640SHAKE_CLEAN_key_encode(uint16_t *out, const uint16_t *in); +void PQCLEAN_FRODOKEM640SHAKE_CLEAN_key_decode(uint16_t *out, const uint16_t *in); +void PQCLEAN_FRODOKEM640SHAKE_CLEAN_pack(uint8_t *out, size_t outlen, const uint16_t *in, size_t inlen, uint8_t lsb); +void PQCLEAN_FRODOKEM640SHAKE_CLEAN_unpack(uint16_t *out, size_t outlen, const uint8_t *in, size_t inlen, uint8_t lsb); +void PQCLEAN_FRODOKEM640SHAKE_CLEAN_clear_bytes(uint8_t *mem, size_t n); +uint16_t PQCLEAN_FRODOKEM640SHAKE_CLEAN_LE_TO_UINT16(uint16_t n); +uint16_t PQCLEAN_FRODOKEM640SHAKE_CLEAN_UINT16_TO_LE(uint16_t n); + +#endif diff --git a/src/kem/frodokem/pqclean_frodokem640shake_clean/kem.c b/src/kem/frodokem/pqclean_frodokem640shake_clean/kem.c new file mode 100644 index 000000000..ff2b9f467 --- /dev/null +++ b/src/kem/frodokem/pqclean_frodokem640shake_clean/kem.c @@ -0,0 +1,238 @@ +/******************************************************************************************** +* FrodoKEM: Learning with Errors Key Encapsulation +* +* Abstract: Key Encapsulation Mechanism (KEM) based on Frodo +*********************************************************************************************/ + +#include +#include + +#include "fips202.h" +#include "randombytes.h" + +#include "api.h" +#include "common.h" +#include "params.h" + +int PQCLEAN_FRODOKEM640SHAKE_CLEAN_crypto_kem_keypair(uint8_t *pk, uint8_t *sk) { + // FrodoKEM's key generation + // Outputs: public key pk ( BYTES_SEED_A + (PARAMS_LOGQ*PARAMS_N*PARAMS_NBAR)/8 bytes) + // secret key sk (CRYPTO_BYTES + BYTES_SEED_A + (PARAMS_LOGQ*PARAMS_N*PARAMS_NBAR)/8 + 2*PARAMS_N*PARAMS_NBAR + BYTES_PKHASH bytes) + uint8_t *pk_seedA = &pk[0]; + uint8_t *pk_b = &pk[BYTES_SEED_A]; + uint8_t *sk_s = &sk[0]; + uint8_t *sk_pk = &sk[CRYPTO_BYTES]; + uint8_t *sk_S = &sk[CRYPTO_BYTES + CRYPTO_PUBLICKEYBYTES]; + uint8_t *sk_pkh = &sk[CRYPTO_BYTES + CRYPTO_PUBLICKEYBYTES + 2 * PARAMS_N * PARAMS_NBAR]; + uint16_t B[PARAMS_N * PARAMS_NBAR] = {0}; + uint16_t S[2 * PARAMS_N * PARAMS_NBAR] = {0}; // contains secret data + uint16_t *E = &S[PARAMS_N * PARAMS_NBAR]; // contains secret data + uint8_t randomness[2 * CRYPTO_BYTES + BYTES_SEED_A]; // contains secret data via randomness_s and randomness_seedSE + uint8_t *randomness_s = &randomness[0]; // contains secret data + uint8_t *randomness_seedSE = &randomness[CRYPTO_BYTES]; // contains secret data + uint8_t *randomness_z = &randomness[2 * CRYPTO_BYTES]; + uint8_t shake_input_seedSE[1 + CRYPTO_BYTES]; // contains secret data + + // Generate the secret value s, the seed for S and E, and the seed for the seed for A. Add seed_A to the public key + randombytes(randomness, CRYPTO_BYTES + CRYPTO_BYTES + BYTES_SEED_A); + shake(pk_seedA, BYTES_SEED_A, randomness_z, BYTES_SEED_A); + + // Generate S and E, and compute B = A*S + E. Generate A on-the-fly + shake_input_seedSE[0] = 0x5F; + memcpy(&shake_input_seedSE[1], randomness_seedSE, CRYPTO_BYTES); + shake((uint8_t *)S, 2 * PARAMS_N * PARAMS_NBAR * sizeof(uint16_t), shake_input_seedSE, 1 + CRYPTO_BYTES); + for (size_t i = 0; i < 2 * PARAMS_N * PARAMS_NBAR; i++) { + S[i] = PQCLEAN_FRODOKEM640SHAKE_CLEAN_LE_TO_UINT16(S[i]); + } + PQCLEAN_FRODOKEM640SHAKE_CLEAN_sample_n(S, PARAMS_N * PARAMS_NBAR); + PQCLEAN_FRODOKEM640SHAKE_CLEAN_sample_n(E, PARAMS_N * PARAMS_NBAR); + PQCLEAN_FRODOKEM640SHAKE_CLEAN_mul_add_as_plus_e(B, S, E, pk); + + // Encode the second part of the public key + PQCLEAN_FRODOKEM640SHAKE_CLEAN_pack(pk_b, CRYPTO_PUBLICKEYBYTES - BYTES_SEED_A, B, PARAMS_N * PARAMS_NBAR, PARAMS_LOGQ); + + // Add s, pk and S to the secret key + memcpy(sk_s, randomness_s, CRYPTO_BYTES); + memcpy(sk_pk, pk, CRYPTO_PUBLICKEYBYTES); + for (size_t i = 0; i < PARAMS_N * PARAMS_NBAR; i++) { + S[i] = PQCLEAN_FRODOKEM640SHAKE_CLEAN_UINT16_TO_LE(S[i]); + } + memcpy(sk_S, S, 2 * PARAMS_N * PARAMS_NBAR); + + // Add H(pk) to the secret key + shake(sk_pkh, BYTES_PKHASH, pk, CRYPTO_PUBLICKEYBYTES); + + // Cleanup: + PQCLEAN_FRODOKEM640SHAKE_CLEAN_clear_bytes((uint8_t *)S, PARAMS_N * PARAMS_NBAR * sizeof(uint16_t)); + PQCLEAN_FRODOKEM640SHAKE_CLEAN_clear_bytes((uint8_t *)E, PARAMS_N * PARAMS_NBAR * sizeof(uint16_t)); + PQCLEAN_FRODOKEM640SHAKE_CLEAN_clear_bytes(randomness, 2 * CRYPTO_BYTES); + PQCLEAN_FRODOKEM640SHAKE_CLEAN_clear_bytes(shake_input_seedSE, 1 + CRYPTO_BYTES); + return 0; +} + + +int PQCLEAN_FRODOKEM640SHAKE_CLEAN_crypto_kem_enc(uint8_t *ct, uint8_t *ss, const uint8_t *pk) { + // FrodoKEM's key encapsulation + const uint8_t *pk_seedA = &pk[0]; + const uint8_t *pk_b = &pk[BYTES_SEED_A]; + uint8_t *ct_c1 = &ct[0]; + uint8_t *ct_c2 = &ct[(PARAMS_LOGQ * PARAMS_N * PARAMS_NBAR) / 8]; + uint16_t B[PARAMS_N * PARAMS_NBAR] = {0}; + uint16_t V[PARAMS_NBAR * PARAMS_NBAR] = {0}; // contains secret data + uint16_t C[PARAMS_NBAR * PARAMS_NBAR] = {0}; + uint16_t Bp[PARAMS_N * PARAMS_NBAR] = {0}; + uint16_t Sp[(2 * PARAMS_N + PARAMS_NBAR)*PARAMS_NBAR] = {0}; // contains secret data + uint16_t *Ep = &Sp[PARAMS_N * PARAMS_NBAR]; // contains secret data + uint16_t *Epp = &Sp[2 * PARAMS_N * PARAMS_NBAR]; // contains secret data + uint8_t G2in[BYTES_PKHASH + BYTES_MU]; // contains secret data via mu + uint8_t *pkh = &G2in[0]; + uint8_t *mu = &G2in[BYTES_PKHASH]; // contains secret data + uint8_t G2out[2 * CRYPTO_BYTES]; // contains secret data + uint8_t *seedSE = &G2out[0]; // contains secret data + uint8_t *k = &G2out[CRYPTO_BYTES]; // contains secret data + uint8_t Fin[CRYPTO_CIPHERTEXTBYTES + CRYPTO_BYTES]; // contains secret data via Fin_k + uint8_t *Fin_ct = &Fin[0]; + uint8_t *Fin_k = &Fin[CRYPTO_CIPHERTEXTBYTES]; // contains secret data + uint8_t shake_input_seedSE[1 + CRYPTO_BYTES]; // contains secret data + + // pkh <- G_1(pk), generate random mu, compute (seedSE || k) = G_2(pkh || mu) + shake(pkh, BYTES_PKHASH, pk, CRYPTO_PUBLICKEYBYTES); + randombytes(mu, BYTES_MU); + shake(G2out, CRYPTO_BYTES + CRYPTO_BYTES, G2in, BYTES_PKHASH + BYTES_MU); + + // Generate Sp and Ep, and compute Bp = Sp*A + Ep. Generate A on-the-fly + shake_input_seedSE[0] = 0x96; + memcpy(&shake_input_seedSE[1], seedSE, CRYPTO_BYTES); + shake((uint8_t *)Sp, (2 * PARAMS_N + PARAMS_NBAR) * PARAMS_NBAR * sizeof(uint16_t), shake_input_seedSE, 1 + CRYPTO_BYTES); + for (size_t i = 0; i < (2 * PARAMS_N + PARAMS_NBAR) * PARAMS_NBAR; i++) { + Sp[i] = PQCLEAN_FRODOKEM640SHAKE_CLEAN_LE_TO_UINT16(Sp[i]); + } + PQCLEAN_FRODOKEM640SHAKE_CLEAN_sample_n(Sp, PARAMS_N * PARAMS_NBAR); + PQCLEAN_FRODOKEM640SHAKE_CLEAN_sample_n(Ep, PARAMS_N * PARAMS_NBAR); + PQCLEAN_FRODOKEM640SHAKE_CLEAN_mul_add_sa_plus_e(Bp, Sp, Ep, pk_seedA); + PQCLEAN_FRODOKEM640SHAKE_CLEAN_pack(ct_c1, (PARAMS_LOGQ * PARAMS_N * PARAMS_NBAR) / 8, Bp, PARAMS_N * PARAMS_NBAR, PARAMS_LOGQ); + + // Generate Epp, and compute V = Sp*B + Epp + PQCLEAN_FRODOKEM640SHAKE_CLEAN_sample_n(Epp, PARAMS_NBAR * PARAMS_NBAR); + PQCLEAN_FRODOKEM640SHAKE_CLEAN_unpack(B, PARAMS_N * PARAMS_NBAR, pk_b, CRYPTO_PUBLICKEYBYTES - BYTES_SEED_A, PARAMS_LOGQ); + PQCLEAN_FRODOKEM640SHAKE_CLEAN_mul_add_sb_plus_e(V, B, Sp, Epp); + + // Encode mu, and compute C = V + enc(mu) (mod q) + PQCLEAN_FRODOKEM640SHAKE_CLEAN_key_encode(C, (uint16_t *)mu); + PQCLEAN_FRODOKEM640SHAKE_CLEAN_add(C, V, C); + PQCLEAN_FRODOKEM640SHAKE_CLEAN_pack(ct_c2, (PARAMS_LOGQ * PARAMS_NBAR * PARAMS_NBAR) / 8, C, PARAMS_NBAR * PARAMS_NBAR, PARAMS_LOGQ); + + // Compute ss = F(ct||KK) + memcpy(Fin_ct, ct, CRYPTO_CIPHERTEXTBYTES); + memcpy(Fin_k, k, CRYPTO_BYTES); + shake(ss, CRYPTO_BYTES, Fin, CRYPTO_CIPHERTEXTBYTES + CRYPTO_BYTES); + + // Cleanup: + PQCLEAN_FRODOKEM640SHAKE_CLEAN_clear_bytes((uint8_t *)V, PARAMS_NBAR * PARAMS_NBAR * sizeof(uint16_t)); + PQCLEAN_FRODOKEM640SHAKE_CLEAN_clear_bytes((uint8_t *)Sp, PARAMS_N * PARAMS_NBAR * sizeof(uint16_t)); + PQCLEAN_FRODOKEM640SHAKE_CLEAN_clear_bytes((uint8_t *)Ep, PARAMS_N * PARAMS_NBAR * sizeof(uint16_t)); + PQCLEAN_FRODOKEM640SHAKE_CLEAN_clear_bytes((uint8_t *)Epp, PARAMS_NBAR * PARAMS_NBAR * sizeof(uint16_t)); + PQCLEAN_FRODOKEM640SHAKE_CLEAN_clear_bytes(mu, BYTES_MU); + PQCLEAN_FRODOKEM640SHAKE_CLEAN_clear_bytes(G2out, 2 * CRYPTO_BYTES); + PQCLEAN_FRODOKEM640SHAKE_CLEAN_clear_bytes(Fin_k, CRYPTO_BYTES); + PQCLEAN_FRODOKEM640SHAKE_CLEAN_clear_bytes(shake_input_seedSE, 1 + CRYPTO_BYTES); + return 0; +} + + +int PQCLEAN_FRODOKEM640SHAKE_CLEAN_crypto_kem_dec(uint8_t *ss, const uint8_t *ct, const uint8_t *sk) { + // FrodoKEM's key decapsulation + uint16_t B[PARAMS_N * PARAMS_NBAR] = {0}; + uint16_t Bp[PARAMS_N * PARAMS_NBAR] = {0}; + uint16_t W[PARAMS_NBAR * PARAMS_NBAR] = {0}; // contains secret data + uint16_t C[PARAMS_NBAR * PARAMS_NBAR] = {0}; + uint16_t CC[PARAMS_NBAR * PARAMS_NBAR] = {0}; + uint16_t BBp[PARAMS_N * PARAMS_NBAR] = {0}; + uint16_t Sp[(2 * PARAMS_N + PARAMS_NBAR)*PARAMS_NBAR] = {0}; // contains secret data + uint16_t *Ep = &Sp[PARAMS_N * PARAMS_NBAR]; // contains secret data + uint16_t *Epp = &Sp[2 * PARAMS_N * PARAMS_NBAR]; // contains secret data + const uint8_t *ct_c1 = &ct[0]; + const uint8_t *ct_c2 = &ct[(PARAMS_LOGQ * PARAMS_N * PARAMS_NBAR) / 8]; + const uint8_t *sk_s = &sk[0]; + const uint8_t *sk_pk = &sk[CRYPTO_BYTES]; + const uint16_t *sk_S = (uint16_t *) &sk[CRYPTO_BYTES + CRYPTO_PUBLICKEYBYTES]; + uint16_t S[PARAMS_N * PARAMS_NBAR]; // contains secret data + const uint8_t *sk_pkh = &sk[CRYPTO_BYTES + CRYPTO_PUBLICKEYBYTES + 2 * PARAMS_N * PARAMS_NBAR]; + const uint8_t *pk_seedA = &sk_pk[0]; + const uint8_t *pk_b = &sk_pk[BYTES_SEED_A]; + uint8_t G2in[BYTES_PKHASH + BYTES_MU]; // contains secret data via muprime + uint8_t *pkh = &G2in[0]; + uint8_t *muprime = &G2in[BYTES_PKHASH]; // contains secret data + uint8_t G2out[2 * CRYPTO_BYTES]; // contains secret data + uint8_t *seedSEprime = &G2out[0]; // contains secret data + uint8_t *kprime = &G2out[CRYPTO_BYTES]; // contains secret data + uint8_t Fin[CRYPTO_CIPHERTEXTBYTES + CRYPTO_BYTES]; // contains secret data via Fin_k + uint8_t *Fin_ct = &Fin[0]; + uint8_t *Fin_k = &Fin[CRYPTO_CIPHERTEXTBYTES]; // contains secret data + uint8_t shake_input_seedSEprime[1 + CRYPTO_BYTES]; // contains secret data + + for (size_t i = 0; i < PARAMS_N * PARAMS_NBAR; i++) { + S[i] = PQCLEAN_FRODOKEM640SHAKE_CLEAN_LE_TO_UINT16(sk_S[i]); + } + + // Compute W = C - Bp*S (mod q), and decode the randomness mu + PQCLEAN_FRODOKEM640SHAKE_CLEAN_unpack(Bp, PARAMS_N * PARAMS_NBAR, ct_c1, (PARAMS_LOGQ * PARAMS_N * PARAMS_NBAR) / 8, PARAMS_LOGQ); + PQCLEAN_FRODOKEM640SHAKE_CLEAN_unpack(C, PARAMS_NBAR * PARAMS_NBAR, ct_c2, (PARAMS_LOGQ * PARAMS_NBAR * PARAMS_NBAR) / 8, PARAMS_LOGQ); + PQCLEAN_FRODOKEM640SHAKE_CLEAN_mul_bs(W, Bp, S); + PQCLEAN_FRODOKEM640SHAKE_CLEAN_sub(W, C, W); + PQCLEAN_FRODOKEM640SHAKE_CLEAN_key_decode((uint16_t *)muprime, W); + + // Generate (seedSE' || k') = G_2(pkh || mu') + memcpy(pkh, sk_pkh, BYTES_PKHASH); + shake(G2out, CRYPTO_BYTES + CRYPTO_BYTES, G2in, BYTES_PKHASH + BYTES_MU); + + // Generate Sp and Ep, and compute BBp = Sp*A + Ep. Generate A on-the-fly + shake_input_seedSEprime[0] = 0x96; + memcpy(&shake_input_seedSEprime[1], seedSEprime, CRYPTO_BYTES); + shake((uint8_t *)Sp, (2 * PARAMS_N + PARAMS_NBAR) * PARAMS_NBAR * sizeof(uint16_t), shake_input_seedSEprime, 1 + CRYPTO_BYTES); + for (size_t i = 0; i < (2 * PARAMS_N + PARAMS_NBAR) * PARAMS_NBAR; i++) { + Sp[i] = PQCLEAN_FRODOKEM640SHAKE_CLEAN_LE_TO_UINT16(Sp[i]); + } + PQCLEAN_FRODOKEM640SHAKE_CLEAN_sample_n(Sp, PARAMS_N * PARAMS_NBAR); + PQCLEAN_FRODOKEM640SHAKE_CLEAN_sample_n(Ep, PARAMS_N * PARAMS_NBAR); + PQCLEAN_FRODOKEM640SHAKE_CLEAN_mul_add_sa_plus_e(BBp, Sp, Ep, pk_seedA); + + // Generate Epp, and compute W = Sp*B + Epp + PQCLEAN_FRODOKEM640SHAKE_CLEAN_sample_n(Epp, PARAMS_NBAR * PARAMS_NBAR); + PQCLEAN_FRODOKEM640SHAKE_CLEAN_unpack(B, PARAMS_N * PARAMS_NBAR, pk_b, CRYPTO_PUBLICKEYBYTES - BYTES_SEED_A, PARAMS_LOGQ); + PQCLEAN_FRODOKEM640SHAKE_CLEAN_mul_add_sb_plus_e(W, B, Sp, Epp); + + // Encode mu, and compute CC = W + enc(mu') (mod q) + PQCLEAN_FRODOKEM640SHAKE_CLEAN_key_encode(CC, (uint16_t *)muprime); + PQCLEAN_FRODOKEM640SHAKE_CLEAN_add(CC, W, CC); + + // Prepare input to F + memcpy(Fin_ct, ct, CRYPTO_CIPHERTEXTBYTES); + + // Reducing BBp modulo q + for (size_t i = 0; i < PARAMS_N * PARAMS_NBAR; i++) { + BBp[i] = BBp[i] & ((1 << PARAMS_LOGQ) - 1); + } + + // Is (Bp == BBp & C == CC) = true + if (memcmp(Bp, BBp, 2 * PARAMS_N * PARAMS_NBAR) == 0 && memcmp(C, CC, 2 * PARAMS_NBAR * PARAMS_NBAR) == 0) { + // Load k' to do ss = F(ct || k') + memcpy(Fin_k, kprime, CRYPTO_BYTES); + } else { + // Load s to do ss = F(ct || s) + memcpy(Fin_k, sk_s, CRYPTO_BYTES); + } + shake(ss, CRYPTO_BYTES, Fin, CRYPTO_CIPHERTEXTBYTES + CRYPTO_BYTES); + + // Cleanup: + PQCLEAN_FRODOKEM640SHAKE_CLEAN_clear_bytes((uint8_t *)W, PARAMS_NBAR * PARAMS_NBAR * sizeof(uint16_t)); + PQCLEAN_FRODOKEM640SHAKE_CLEAN_clear_bytes((uint8_t *)Sp, PARAMS_N * PARAMS_NBAR * sizeof(uint16_t)); + PQCLEAN_FRODOKEM640SHAKE_CLEAN_clear_bytes((uint8_t *)S, PARAMS_N * PARAMS_NBAR * sizeof(uint16_t)); + PQCLEAN_FRODOKEM640SHAKE_CLEAN_clear_bytes((uint8_t *)Ep, PARAMS_N * PARAMS_NBAR * sizeof(uint16_t)); + PQCLEAN_FRODOKEM640SHAKE_CLEAN_clear_bytes((uint8_t *)Epp, PARAMS_NBAR * PARAMS_NBAR * sizeof(uint16_t)); + PQCLEAN_FRODOKEM640SHAKE_CLEAN_clear_bytes(muprime, BYTES_MU); + PQCLEAN_FRODOKEM640SHAKE_CLEAN_clear_bytes(G2out, 2 * CRYPTO_BYTES); + PQCLEAN_FRODOKEM640SHAKE_CLEAN_clear_bytes(Fin_k, CRYPTO_BYTES); + PQCLEAN_FRODOKEM640SHAKE_CLEAN_clear_bytes(shake_input_seedSEprime, 1 + CRYPTO_BYTES); + return 0; +} diff --git a/src/kem/frodokem/pqclean_frodokem640shake_clean/matrix_shake.c b/src/kem/frodokem/pqclean_frodokem640shake_clean/matrix_shake.c new file mode 100644 index 000000000..5524b975c --- /dev/null +++ b/src/kem/frodokem/pqclean_frodokem640shake_clean/matrix_shake.c @@ -0,0 +1,79 @@ +/******************************************************************************************** +* FrodoKEM: Learning with Errors Key Encapsulation +* +* Abstract: matrix arithmetic functions used by the KEM +*********************************************************************************************/ + +#include +#include + +#include "fips202.h" + +#include "api.h" +#include "common.h" +#include "params.h" + +int PQCLEAN_FRODOKEM640SHAKE_CLEAN_mul_add_as_plus_e(uint16_t *out, const uint16_t *s, const uint16_t *e, const uint8_t *seed_A) { + // Generate-and-multiply: generate matrix A (N x N) row-wise, multiply by s on the right. + // Inputs: s, e (N x N_BAR) + // Output: out = A*s + e (N x N_BAR) + int i, j, k; + int16_t A[PARAMS_N * PARAMS_N] = {0}; + + uint8_t seed_A_separated[2 + BYTES_SEED_A]; + uint16_t *seed_A_origin = (uint16_t *)&seed_A_separated; + memcpy(&seed_A_separated[2], seed_A, BYTES_SEED_A); + for (i = 0; i < PARAMS_N; i++) { + seed_A_origin[0] = PQCLEAN_FRODOKEM640SHAKE_CLEAN_UINT16_TO_LE((uint16_t) i); + shake128((uint8_t *)(A + i * PARAMS_N), (unsigned long long)(2 * PARAMS_N), seed_A_separated, 2 + BYTES_SEED_A); + } + for (i = 0; i < PARAMS_N * PARAMS_N; i++) { + A[i] = PQCLEAN_FRODOKEM640SHAKE_CLEAN_LE_TO_UINT16(A[i]); + } + memcpy(out, e, PARAMS_NBAR * PARAMS_N * sizeof(uint16_t)); + + for (i = 0; i < PARAMS_N; i++) { // Matrix multiplication-addition A*s + e + for (k = 0; k < PARAMS_NBAR; k++) { + uint16_t sum = 0; + for (j = 0; j < PARAMS_N; j++) { + sum += A[i * PARAMS_N + j] * s[k * PARAMS_N + j]; + } + out[i * PARAMS_NBAR + k] += sum; // Adding e. No need to reduce modulo 2^15, extra bits are taken care of during packing later on. + } + } + + return 1; +} + + +int PQCLEAN_FRODOKEM640SHAKE_CLEAN_mul_add_sa_plus_e(uint16_t *out, const uint16_t *s, const uint16_t *e, const uint8_t *seed_A) { + // Generate-and-multiply: generate matrix A (N x N) column-wise, multiply by s' on the left. + // Inputs: s', e' (N_BAR x N) + // Output: out = s'*A + e' (N_BAR x N) + int i, j, k; + int16_t A[PARAMS_N * PARAMS_N] = {0}; + + uint8_t seed_A_separated[2 + BYTES_SEED_A]; + uint16_t *seed_A_origin = (uint16_t *)&seed_A_separated; + memcpy(&seed_A_separated[2], seed_A, BYTES_SEED_A); + for (i = 0; i < PARAMS_N; i++) { + seed_A_origin[0] = PQCLEAN_FRODOKEM640SHAKE_CLEAN_UINT16_TO_LE((uint16_t) i); + shake128((uint8_t *)(A + i * PARAMS_N), (unsigned long long)(2 * PARAMS_N), seed_A_separated, 2 + BYTES_SEED_A); + } + for (i = 0; i < PARAMS_N * PARAMS_N; i++) { + A[i] = PQCLEAN_FRODOKEM640SHAKE_CLEAN_LE_TO_UINT16(A[i]); + } + memcpy(out, e, PARAMS_NBAR * PARAMS_N * sizeof(uint16_t)); + + for (i = 0; i < PARAMS_N; i++) { // Matrix multiplication-addition A*s + e + for (k = 0; k < PARAMS_NBAR; k++) { + uint16_t sum = 0; + for (j = 0; j < PARAMS_N; j++) { + sum += A[j * PARAMS_N + i] * s[k * PARAMS_N + j]; + } + out[k * PARAMS_N + i] += sum; // Adding e. No need to reduce modulo 2^15, extra bits are taken care of during packing later on. + } + } + + return 1; +} diff --git a/src/kem/frodokem/pqclean_frodokem640shake_clean/noise.c b/src/kem/frodokem/pqclean_frodokem640shake_clean/noise.c new file mode 100644 index 000000000..32b6938d8 --- /dev/null +++ b/src/kem/frodokem/pqclean_frodokem640shake_clean/noise.c @@ -0,0 +1,35 @@ +/******************************************************************************************** +* FrodoKEM: Learning with Errors Key Encapsulation +* +* Abstract: noise sampling functions +*********************************************************************************************/ + +#include + +#include "api.h" +#include "common.h" +#include "params.h" + +static uint16_t CDF_TABLE[CDF_TABLE_LEN] = CDF_TABLE_DATA; + +void PQCLEAN_FRODOKEM640SHAKE_CLEAN_sample_n(uint16_t *s, size_t n) { + // Fills vector s with n samples from the noise distribution which requires 16 bits to sample. + // The distribution is specified by its CDF. + // Input: pseudo-random values (2*n bytes) passed in s. The input is overwritten by the output. + size_t i; + unsigned int j; + + for (i = 0; i < n; ++i) { + uint16_t sample = 0; + uint16_t prnd = s[i] >> 1; // Drop the least significant bit + uint16_t sign = s[i] & 0x1; // Pick the least significant bit + + // No need to compare with the last value. + for (j = 0; j < (unsigned int)(CDF_TABLE_LEN - 1); j++) { + // Constant time comparison: 1 if CDF_TABLE[j] < s, 0 otherwise. Uses the fact that CDF_TABLE[j] and s fit in 15 bits. + sample += (uint16_t)(CDF_TABLE[j] - prnd) >> 15; + } + // Assuming that sign is either 0 or 1, flips sample iff sign = 1 + s[i] = ((-sign) ^ sample) + sign; + } +} diff --git a/src/kem/frodokem/pqclean_frodokem640shake_clean/params.h b/src/kem/frodokem/pqclean_frodokem640shake_clean/params.h new file mode 100644 index 000000000..81a300541 --- /dev/null +++ b/src/kem/frodokem/pqclean_frodokem640shake_clean/params.h @@ -0,0 +1,27 @@ +#ifndef PARAMS_H +#define PARAMS_H + +#define CRYPTO_SECRETKEYBYTES PQCLEAN_FRODOKEM640SHAKE_CLEAN_CRYPTO_SECRETKEYBYTES +#define CRYPTO_PUBLICKEYBYTES PQCLEAN_FRODOKEM640SHAKE_CLEAN_CRYPTO_PUBLICKEYBYTES +#define CRYPTO_BYTES PQCLEAN_FRODOKEM640SHAKE_CLEAN_CRYPTO_BYTES +#define CRYPTO_CIPHERTEXTBYTES PQCLEAN_FRODOKEM640SHAKE_CLEAN_CRYPTO_CIPHERTEXTBYTES + +#define PARAMS_N 640 +#define PARAMS_NBAR 8 +#define PARAMS_LOGQ 15 +#define PARAMS_Q (1 << PARAMS_LOGQ) +#define PARAMS_EXTRACTED_BITS 2 +#define PARAMS_STRIPE_STEP 8 +#define PARAMS_PARALLEL 4 +#define BYTES_SEED_A 16 +#define BYTES_MU ((PARAMS_EXTRACTED_BITS * PARAMS_NBAR * PARAMS_NBAR) / 8) +#define BYTES_PKHASH CRYPTO_BYTES + +// Selecting SHAKE XOF function for the KEM and noise sampling +#define shake shake128 + +// CDF table +#define CDF_TABLE_DATA {4643, 13363, 20579, 25843, 29227, 31145, 32103, 32525, 32689, 32745, 32762, 32766, 32767} +#define CDF_TABLE_LEN 13 + +#endif diff --git a/src/kem/frodokem/pqclean_frodokem640shake_clean/util.c b/src/kem/frodokem/pqclean_frodokem640shake_clean/util.c new file mode 100644 index 000000000..6c12743f8 --- /dev/null +++ b/src/kem/frodokem/pqclean_frodokem640shake_clean/util.c @@ -0,0 +1,235 @@ +/******************************************************************************************** +* FrodoKEM: Learning with Errors Key Encapsulation +* +* Abstract: additional functions for FrodoKEM +*********************************************************************************************/ + +#include +#include + +#include "api.h" +#include "common.h" +#include "params.h" + +#define min(x, y) (((x) < (y)) ? (x) : (y)) + +uint16_t PQCLEAN_FRODOKEM640SHAKE_CLEAN_LE_TO_UINT16(uint16_t n) { + return (((uint8_t *) &n)[0] | (((uint8_t *) &n)[1] << 8)); +} + +uint16_t PQCLEAN_FRODOKEM640SHAKE_CLEAN_UINT16_TO_LE(uint16_t n) { + uint16_t y; + uint8_t *z = (uint8_t *) &y; + z[0] = n & 0xFF; + z[1] = (n & 0xFF00) >> 8; + return y; +} + +void PQCLEAN_FRODOKEM640SHAKE_CLEAN_mul_bs(uint16_t *out, const uint16_t *b, const uint16_t *s) { + // Multiply by s on the right + // Inputs: b (N_BAR x N), s (N x N_BAR) + // Output: out = b*s (N_BAR x N_BAR) + int i, j, k; + + for (i = 0; i < PARAMS_NBAR; i++) { + for (j = 0; j < PARAMS_NBAR; j++) { + out[i * PARAMS_NBAR + j] = 0; + for (k = 0; k < PARAMS_N; k++) { + out[i * PARAMS_NBAR + j] += b[i * PARAMS_N + k] * s[j * PARAMS_N + k]; + } + out[i * PARAMS_NBAR + j] = (uint32_t)(out[i * PARAMS_NBAR + j]) & ((1 << PARAMS_LOGQ) - 1); + } + } +} + + +void PQCLEAN_FRODOKEM640SHAKE_CLEAN_mul_add_sb_plus_e(uint16_t *out, const uint16_t *b, const uint16_t *s, const uint16_t *e) { + // Multiply by s on the left + // Inputs: b (N x N_BAR), s (N_BAR x N), e (N_BAR x N_BAR) + // Output: out = s*b + e (N_BAR x N_BAR) + int i, j, k; + + for (k = 0; k < PARAMS_NBAR; k++) { + for (i = 0; i < PARAMS_NBAR; i++) { + out[k * PARAMS_NBAR + i] = e[k * PARAMS_NBAR + i]; + for (j = 0; j < PARAMS_N; j++) { + out[k * PARAMS_NBAR + i] += s[k * PARAMS_N + j] * b[j * PARAMS_NBAR + i]; + } + out[k * PARAMS_NBAR + i] = (uint32_t)(out[k * PARAMS_NBAR + i]) & ((1 << PARAMS_LOGQ) - 1); + } + } +} + + +void PQCLEAN_FRODOKEM640SHAKE_CLEAN_add(uint16_t *out, const uint16_t *a, const uint16_t *b) { + // Add a and b + // Inputs: a, b (N_BAR x N_BAR) + // Output: c = a + b + + for (size_t i = 0; i < (PARAMS_NBAR * PARAMS_NBAR); i++) { + out[i] = (a[i] + b[i]) & ((1 << PARAMS_LOGQ) - 1); + } +} + + +void PQCLEAN_FRODOKEM640SHAKE_CLEAN_sub(uint16_t *out, const uint16_t *a, const uint16_t *b) { + // Subtract a and b + // Inputs: a, b (N_BAR x N_BAR) + // Output: c = a - b + + for (size_t i = 0; i < (PARAMS_NBAR * PARAMS_NBAR); i++) { + out[i] = (a[i] - b[i]) & ((1 << PARAMS_LOGQ) - 1); + } +} + + +void PQCLEAN_FRODOKEM640SHAKE_CLEAN_key_encode(uint16_t *out, const uint16_t *in) { + // Encoding + unsigned int i, j, npieces_word = 8; + unsigned int nwords = (PARAMS_NBAR * PARAMS_NBAR) / 8; + uint64_t temp, mask = ((uint64_t)1 << PARAMS_EXTRACTED_BITS) - 1; + uint16_t *pos = out; + + for (i = 0; i < nwords; i++) { + temp = 0; + for (j = 0; j < PARAMS_EXTRACTED_BITS; j++) { + temp |= ((uint64_t)((uint8_t *)in)[i * PARAMS_EXTRACTED_BITS + j]) << (8 * j); + } + for (j = 0; j < npieces_word; j++) { + *pos = (uint16_t)((temp & mask) << (PARAMS_LOGQ - PARAMS_EXTRACTED_BITS)); + temp >>= PARAMS_EXTRACTED_BITS; + pos++; + } + } +} + + +void PQCLEAN_FRODOKEM640SHAKE_CLEAN_key_decode(uint16_t *out, const uint16_t *in) { + // Decoding + unsigned int i, j, index = 0, npieces_word = 8; + unsigned int nwords = (PARAMS_NBAR * PARAMS_NBAR) / 8; + uint16_t temp, maskex = ((uint16_t)1 << PARAMS_EXTRACTED_BITS) - 1, maskq = ((uint16_t)1 << PARAMS_LOGQ) - 1; + uint8_t *pos = (uint8_t *)out; + uint64_t templong; + + for (i = 0; i < nwords; i++) { + templong = 0; + for (j = 0; j < npieces_word; j++) { // temp = floor(in*2^{-11}+0.5) + temp = ((in[index] & maskq) + (1 << (PARAMS_LOGQ - PARAMS_EXTRACTED_BITS - 1))) >> (PARAMS_LOGQ - PARAMS_EXTRACTED_BITS); + templong |= ((uint64_t)(temp & maskex)) << (PARAMS_EXTRACTED_BITS * j); + index++; + } + for (j = 0; j < PARAMS_EXTRACTED_BITS; j++) { + pos[i * PARAMS_EXTRACTED_BITS + j] = (templong >> (8 * j)) & 0xFF; + } + } +} + + +void PQCLEAN_FRODOKEM640SHAKE_CLEAN_pack(uint8_t *out, size_t outlen, const uint16_t *in, size_t inlen, uint8_t lsb) { + // Pack the input uint16 vector into a char output vector, copying lsb bits from each input element. + // If inlen * lsb / 8 > outlen, only outlen * 8 bits are copied. + memset(out, 0, outlen); + + size_t i = 0; // whole bytes already filled in + size_t j = 0; // whole uint16_t already copied + uint16_t w = 0; // the leftover, not yet copied + uint8_t bits = 0; // the number of lsb in w + + while (i < outlen && (j < inlen || ((j == inlen) && (bits > 0)))) { + /* + in: | | |********|********| + ^ + j + w : | ****| + ^ + bits + out:|**|**|**|**|**|**|**|**|* | + ^^ + ib + */ + uint8_t b = 0; // bits in out[i] already filled in + while (b < 8) { + int nbits = min(8 - b, bits); + uint16_t mask = (1 << nbits) - 1; + uint8_t t = (uint8_t) ((w >> (bits - nbits)) & mask); // the bits to copy from w to out + out[i] = out[i] + (t << (8 - b - nbits)); + b += (uint8_t) nbits; + bits -= (uint8_t) nbits; + w &= ~(mask << bits); // not strictly necessary; mostly for debugging + + if (bits == 0) { + if (j < inlen) { + w = in[j]; + bits = lsb; + j++; + } else { + break; // the input vector is exhausted + } + } + } + if (b == 8) { // out[i] is filled in + i++; + } + } +} + + +void PQCLEAN_FRODOKEM640SHAKE_CLEAN_unpack(uint16_t *out, size_t outlen, const uint8_t *in, size_t inlen, uint8_t lsb) { + // Unpack the input char vector into a uint16_t output vector, copying lsb bits + // for each output element from input. outlen must be at least ceil(inlen * 8 / lsb). + memset(out, 0, outlen * sizeof(uint16_t)); + + size_t i = 0; // whole uint16_t already filled in + size_t j = 0; // whole bytes already copied + uint8_t w = 0; // the leftover, not yet copied + uint8_t bits = 0; // the number of lsb bits of w + + while (i < outlen && (j < inlen || ((j == inlen) && (bits > 0)))) { + /* + in: | | | | | | |**|**|... + ^ + j + w : | *| + ^ + bits + out:| *****| *****| *** | |... + ^ ^ + i b + */ + uint8_t b = 0; // bits in out[i] already filled in + while (b < lsb) { + int nbits = min(lsb - b, bits); + uint16_t mask = (1 << nbits) - 1; + uint8_t t = (w >> (bits - nbits)) & mask; // the bits to copy from w to out + out[i] = out[i] + (t << (lsb - b - nbits)); + b += (uint8_t) nbits; + bits -= (uint8_t) nbits; + w &= ~(mask << bits); // not strictly necessary; mostly for debugging + + if (bits == 0) { + if (j < inlen) { + w = in[j]; + bits = 8; + j++; + } else { + break; // the input vector is exhausted + } + } + } + if (b == lsb) { // out[i] is filled in + i++; + } + } +} + + +void PQCLEAN_FRODOKEM640SHAKE_CLEAN_clear_bytes(uint8_t *mem, size_t n) { + // Clear 8-bit bytes from memory. "n" indicates the number of bytes to be zeroed. + // This function uses the volatile type qualifier to inform the compiler not to optimize out the memory clearing. + volatile uint8_t *v = mem; + + for (size_t i = 0; i < n; i++) { + v[i] = 0; + } +} diff --git a/src/kem/frodokem/pqclean_frodokem976aes_clean/LICENSE b/src/kem/frodokem/pqclean_frodokem976aes_clean/LICENSE new file mode 100644 index 000000000..5cf7c8db6 --- /dev/null +++ b/src/kem/frodokem/pqclean_frodokem976aes_clean/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) Microsoft Corporation. All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE diff --git a/src/kem/frodokem/pqclean_frodokem976aes_clean/api.h b/src/kem/frodokem/pqclean_frodokem976aes_clean/api.h new file mode 100644 index 000000000..4317bc698 --- /dev/null +++ b/src/kem/frodokem/pqclean_frodokem976aes_clean/api.h @@ -0,0 +1,20 @@ +#ifndef PQCLEAN_FRODOKEM976AES_CLEAN_API_H +#define PQCLEAN_FRODOKEM976AES_CLEAN_API_H + +#include +#include + +#define PQCLEAN_FRODOKEM976AES_CLEAN_CRYPTO_SECRETKEYBYTES 31296 // sizeof(s) + CRYPTO_PUBLICKEYBYTES + 2*PARAMS_N*PARAMS_NBAR + BYTES_PKHASH +#define PQCLEAN_FRODOKEM976AES_CLEAN_CRYPTO_PUBLICKEYBYTES 15632 // sizeof(seed_A) + (PARAMS_LOGQ*PARAMS_N*PARAMS_NBAR)/8 +#define PQCLEAN_FRODOKEM976AES_CLEAN_CRYPTO_BYTES 24 +#define PQCLEAN_FRODOKEM976AES_CLEAN_CRYPTO_CIPHERTEXTBYTES 15744 // (PARAMS_LOGQ*PARAMS_N*PARAMS_NBAR)/8 + (PARAMS_LOGQ*PARAMS_NBAR*PARAMS_NBAR)/8 + +#define PQCLEAN_FRODOKEM976AES_CLEAN_CRYPTO_ALGNAME "FrodoKEM-976-AES" + +int PQCLEAN_FRODOKEM976AES_CLEAN_crypto_kem_keypair(uint8_t *pk, uint8_t *sk); + +int PQCLEAN_FRODOKEM976AES_CLEAN_crypto_kem_enc(uint8_t *ct, uint8_t *ss, const uint8_t *pk); + +int PQCLEAN_FRODOKEM976AES_CLEAN_crypto_kem_dec(uint8_t *ss, const uint8_t *ct, const uint8_t *sk); + +#endif diff --git a/src/kem/frodokem/pqclean_frodokem976aes_clean/common.h b/src/kem/frodokem/pqclean_frodokem976aes_clean/common.h new file mode 100644 index 000000000..c6d420bbf --- /dev/null +++ b/src/kem/frodokem/pqclean_frodokem976aes_clean/common.h @@ -0,0 +1,19 @@ +#ifndef COMMON_H +#define COMMON_H + +int PQCLEAN_FRODOKEM976AES_CLEAN_mul_add_as_plus_e(uint16_t *out, const uint16_t *s, const uint16_t *e, const uint8_t *seed_A); +int PQCLEAN_FRODOKEM976AES_CLEAN_mul_add_sa_plus_e(uint16_t *out, const uint16_t *s, const uint16_t *e, const uint8_t *seed_A); +void PQCLEAN_FRODOKEM976AES_CLEAN_sample_n(uint16_t *s, size_t n); +void PQCLEAN_FRODOKEM976AES_CLEAN_mul_bs(uint16_t *out, const uint16_t *b, const uint16_t *s); +void PQCLEAN_FRODOKEM976AES_CLEAN_mul_add_sb_plus_e(uint16_t *out, const uint16_t *b, const uint16_t *s, const uint16_t *e); +void PQCLEAN_FRODOKEM976AES_CLEAN_add(uint16_t *out, const uint16_t *a, const uint16_t *b); +void PQCLEAN_FRODOKEM976AES_CLEAN_sub(uint16_t *out, const uint16_t *a, const uint16_t *b); +void PQCLEAN_FRODOKEM976AES_CLEAN_key_encode(uint16_t *out, const uint16_t *in); +void PQCLEAN_FRODOKEM976AES_CLEAN_key_decode(uint16_t *out, const uint16_t *in); +void PQCLEAN_FRODOKEM976AES_CLEAN_pack(uint8_t *out, size_t outlen, const uint16_t *in, size_t inlen, uint8_t lsb); +void PQCLEAN_FRODOKEM976AES_CLEAN_unpack(uint16_t *out, size_t outlen, const uint8_t *in, size_t inlen, uint8_t lsb); +void PQCLEAN_FRODOKEM976AES_CLEAN_clear_bytes(uint8_t *mem, size_t n); +uint16_t PQCLEAN_FRODOKEM976AES_CLEAN_LE_TO_UINT16(uint16_t n); +uint16_t PQCLEAN_FRODOKEM976AES_CLEAN_UINT16_TO_LE(uint16_t n); + +#endif diff --git a/src/kem/frodokem/pqclean_frodokem976aes_clean/kem.c b/src/kem/frodokem/pqclean_frodokem976aes_clean/kem.c new file mode 100644 index 000000000..0c46065e5 --- /dev/null +++ b/src/kem/frodokem/pqclean_frodokem976aes_clean/kem.c @@ -0,0 +1,238 @@ +/******************************************************************************************** +* FrodoKEM: Learning with Errors Key Encapsulation +* +* Abstract: Key Encapsulation Mechanism (KEM) based on Frodo +*********************************************************************************************/ + +#include +#include + +#include "fips202.h" +#include "randombytes.h" + +#include "api.h" +#include "common.h" +#include "params.h" + +int PQCLEAN_FRODOKEM976AES_CLEAN_crypto_kem_keypair(uint8_t *pk, uint8_t *sk) { + // FrodoKEM's key generation + // Outputs: public key pk ( BYTES_SEED_A + (PARAMS_LOGQ*PARAMS_N*PARAMS_NBAR)/8 bytes) + // secret key sk (CRYPTO_BYTES + BYTES_SEED_A + (PARAMS_LOGQ*PARAMS_N*PARAMS_NBAR)/8 + 2*PARAMS_N*PARAMS_NBAR + BYTES_PKHASH bytes) + uint8_t *pk_seedA = &pk[0]; + uint8_t *pk_b = &pk[BYTES_SEED_A]; + uint8_t *sk_s = &sk[0]; + uint8_t *sk_pk = &sk[CRYPTO_BYTES]; + uint8_t *sk_S = &sk[CRYPTO_BYTES + CRYPTO_PUBLICKEYBYTES]; + uint8_t *sk_pkh = &sk[CRYPTO_BYTES + CRYPTO_PUBLICKEYBYTES + 2 * PARAMS_N * PARAMS_NBAR]; + uint16_t B[PARAMS_N * PARAMS_NBAR] = {0}; + uint16_t S[2 * PARAMS_N * PARAMS_NBAR] = {0}; // contains secret data + uint16_t *E = &S[PARAMS_N * PARAMS_NBAR]; // contains secret data + uint8_t randomness[2 * CRYPTO_BYTES + BYTES_SEED_A]; // contains secret data via randomness_s and randomness_seedSE + uint8_t *randomness_s = &randomness[0]; // contains secret data + uint8_t *randomness_seedSE = &randomness[CRYPTO_BYTES]; // contains secret data + uint8_t *randomness_z = &randomness[2 * CRYPTO_BYTES]; + uint8_t shake_input_seedSE[1 + CRYPTO_BYTES]; // contains secret data + + // Generate the secret value s, the seed for S and E, and the seed for the seed for A. Add seed_A to the public key + randombytes(randomness, CRYPTO_BYTES + CRYPTO_BYTES + BYTES_SEED_A); + shake(pk_seedA, BYTES_SEED_A, randomness_z, BYTES_SEED_A); + + // Generate S and E, and compute B = A*S + E. Generate A on-the-fly + shake_input_seedSE[0] = 0x5F; + memcpy(&shake_input_seedSE[1], randomness_seedSE, CRYPTO_BYTES); + shake((uint8_t *)S, 2 * PARAMS_N * PARAMS_NBAR * sizeof(uint16_t), shake_input_seedSE, 1 + CRYPTO_BYTES); + for (size_t i = 0; i < 2 * PARAMS_N * PARAMS_NBAR; i++) { + S[i] = PQCLEAN_FRODOKEM976AES_CLEAN_LE_TO_UINT16(S[i]); + } + PQCLEAN_FRODOKEM976AES_CLEAN_sample_n(S, PARAMS_N * PARAMS_NBAR); + PQCLEAN_FRODOKEM976AES_CLEAN_sample_n(E, PARAMS_N * PARAMS_NBAR); + PQCLEAN_FRODOKEM976AES_CLEAN_mul_add_as_plus_e(B, S, E, pk); + + // Encode the second part of the public key + PQCLEAN_FRODOKEM976AES_CLEAN_pack(pk_b, CRYPTO_PUBLICKEYBYTES - BYTES_SEED_A, B, PARAMS_N * PARAMS_NBAR, PARAMS_LOGQ); + + // Add s, pk and S to the secret key + memcpy(sk_s, randomness_s, CRYPTO_BYTES); + memcpy(sk_pk, pk, CRYPTO_PUBLICKEYBYTES); + for (size_t i = 0; i < PARAMS_N * PARAMS_NBAR; i++) { + S[i] = PQCLEAN_FRODOKEM976AES_CLEAN_UINT16_TO_LE(S[i]); + } + memcpy(sk_S, S, 2 * PARAMS_N * PARAMS_NBAR); + + // Add H(pk) to the secret key + shake(sk_pkh, BYTES_PKHASH, pk, CRYPTO_PUBLICKEYBYTES); + + // Cleanup: + PQCLEAN_FRODOKEM976AES_CLEAN_clear_bytes((uint8_t *)S, PARAMS_N * PARAMS_NBAR * sizeof(uint16_t)); + PQCLEAN_FRODOKEM976AES_CLEAN_clear_bytes((uint8_t *)E, PARAMS_N * PARAMS_NBAR * sizeof(uint16_t)); + PQCLEAN_FRODOKEM976AES_CLEAN_clear_bytes(randomness, 2 * CRYPTO_BYTES); + PQCLEAN_FRODOKEM976AES_CLEAN_clear_bytes(shake_input_seedSE, 1 + CRYPTO_BYTES); + return 0; +} + + +int PQCLEAN_FRODOKEM976AES_CLEAN_crypto_kem_enc(uint8_t *ct, uint8_t *ss, const uint8_t *pk) { + // FrodoKEM's key encapsulation + const uint8_t *pk_seedA = &pk[0]; + const uint8_t *pk_b = &pk[BYTES_SEED_A]; + uint8_t *ct_c1 = &ct[0]; + uint8_t *ct_c2 = &ct[(PARAMS_LOGQ * PARAMS_N * PARAMS_NBAR) / 8]; + uint16_t B[PARAMS_N * PARAMS_NBAR] = {0}; + uint16_t V[PARAMS_NBAR * PARAMS_NBAR] = {0}; // contains secret data + uint16_t C[PARAMS_NBAR * PARAMS_NBAR] = {0}; + uint16_t Bp[PARAMS_N * PARAMS_NBAR] = {0}; + uint16_t Sp[(2 * PARAMS_N + PARAMS_NBAR)*PARAMS_NBAR] = {0}; // contains secret data + uint16_t *Ep = &Sp[PARAMS_N * PARAMS_NBAR]; // contains secret data + uint16_t *Epp = &Sp[2 * PARAMS_N * PARAMS_NBAR]; // contains secret data + uint8_t G2in[BYTES_PKHASH + BYTES_MU]; // contains secret data via mu + uint8_t *pkh = &G2in[0]; + uint8_t *mu = &G2in[BYTES_PKHASH]; // contains secret data + uint8_t G2out[2 * CRYPTO_BYTES]; // contains secret data + uint8_t *seedSE = &G2out[0]; // contains secret data + uint8_t *k = &G2out[CRYPTO_BYTES]; // contains secret data + uint8_t Fin[CRYPTO_CIPHERTEXTBYTES + CRYPTO_BYTES]; // contains secret data via Fin_k + uint8_t *Fin_ct = &Fin[0]; + uint8_t *Fin_k = &Fin[CRYPTO_CIPHERTEXTBYTES]; // contains secret data + uint8_t shake_input_seedSE[1 + CRYPTO_BYTES]; // contains secret data + + // pkh <- G_1(pk), generate random mu, compute (seedSE || k) = G_2(pkh || mu) + shake(pkh, BYTES_PKHASH, pk, CRYPTO_PUBLICKEYBYTES); + randombytes(mu, BYTES_MU); + shake(G2out, CRYPTO_BYTES + CRYPTO_BYTES, G2in, BYTES_PKHASH + BYTES_MU); + + // Generate Sp and Ep, and compute Bp = Sp*A + Ep. Generate A on-the-fly + shake_input_seedSE[0] = 0x96; + memcpy(&shake_input_seedSE[1], seedSE, CRYPTO_BYTES); + shake((uint8_t *)Sp, (2 * PARAMS_N + PARAMS_NBAR) * PARAMS_NBAR * sizeof(uint16_t), shake_input_seedSE, 1 + CRYPTO_BYTES); + for (size_t i = 0; i < (2 * PARAMS_N + PARAMS_NBAR) * PARAMS_NBAR; i++) { + Sp[i] = PQCLEAN_FRODOKEM976AES_CLEAN_LE_TO_UINT16(Sp[i]); + } + PQCLEAN_FRODOKEM976AES_CLEAN_sample_n(Sp, PARAMS_N * PARAMS_NBAR); + PQCLEAN_FRODOKEM976AES_CLEAN_sample_n(Ep, PARAMS_N * PARAMS_NBAR); + PQCLEAN_FRODOKEM976AES_CLEAN_mul_add_sa_plus_e(Bp, Sp, Ep, pk_seedA); + PQCLEAN_FRODOKEM976AES_CLEAN_pack(ct_c1, (PARAMS_LOGQ * PARAMS_N * PARAMS_NBAR) / 8, Bp, PARAMS_N * PARAMS_NBAR, PARAMS_LOGQ); + + // Generate Epp, and compute V = Sp*B + Epp + PQCLEAN_FRODOKEM976AES_CLEAN_sample_n(Epp, PARAMS_NBAR * PARAMS_NBAR); + PQCLEAN_FRODOKEM976AES_CLEAN_unpack(B, PARAMS_N * PARAMS_NBAR, pk_b, CRYPTO_PUBLICKEYBYTES - BYTES_SEED_A, PARAMS_LOGQ); + PQCLEAN_FRODOKEM976AES_CLEAN_mul_add_sb_plus_e(V, B, Sp, Epp); + + // Encode mu, and compute C = V + enc(mu) (mod q) + PQCLEAN_FRODOKEM976AES_CLEAN_key_encode(C, (uint16_t *)mu); + PQCLEAN_FRODOKEM976AES_CLEAN_add(C, V, C); + PQCLEAN_FRODOKEM976AES_CLEAN_pack(ct_c2, (PARAMS_LOGQ * PARAMS_NBAR * PARAMS_NBAR) / 8, C, PARAMS_NBAR * PARAMS_NBAR, PARAMS_LOGQ); + + // Compute ss = F(ct||KK) + memcpy(Fin_ct, ct, CRYPTO_CIPHERTEXTBYTES); + memcpy(Fin_k, k, CRYPTO_BYTES); + shake(ss, CRYPTO_BYTES, Fin, CRYPTO_CIPHERTEXTBYTES + CRYPTO_BYTES); + + // Cleanup: + PQCLEAN_FRODOKEM976AES_CLEAN_clear_bytes((uint8_t *)V, PARAMS_NBAR * PARAMS_NBAR * sizeof(uint16_t)); + PQCLEAN_FRODOKEM976AES_CLEAN_clear_bytes((uint8_t *)Sp, PARAMS_N * PARAMS_NBAR * sizeof(uint16_t)); + PQCLEAN_FRODOKEM976AES_CLEAN_clear_bytes((uint8_t *)Ep, PARAMS_N * PARAMS_NBAR * sizeof(uint16_t)); + PQCLEAN_FRODOKEM976AES_CLEAN_clear_bytes((uint8_t *)Epp, PARAMS_NBAR * PARAMS_NBAR * sizeof(uint16_t)); + PQCLEAN_FRODOKEM976AES_CLEAN_clear_bytes(mu, BYTES_MU); + PQCLEAN_FRODOKEM976AES_CLEAN_clear_bytes(G2out, 2 * CRYPTO_BYTES); + PQCLEAN_FRODOKEM976AES_CLEAN_clear_bytes(Fin_k, CRYPTO_BYTES); + PQCLEAN_FRODOKEM976AES_CLEAN_clear_bytes(shake_input_seedSE, 1 + CRYPTO_BYTES); + return 0; +} + + +int PQCLEAN_FRODOKEM976AES_CLEAN_crypto_kem_dec(uint8_t *ss, const uint8_t *ct, const uint8_t *sk) { + // FrodoKEM's key decapsulation + uint16_t B[PARAMS_N * PARAMS_NBAR] = {0}; + uint16_t Bp[PARAMS_N * PARAMS_NBAR] = {0}; + uint16_t W[PARAMS_NBAR * PARAMS_NBAR] = {0}; // contains secret data + uint16_t C[PARAMS_NBAR * PARAMS_NBAR] = {0}; + uint16_t CC[PARAMS_NBAR * PARAMS_NBAR] = {0}; + uint16_t BBp[PARAMS_N * PARAMS_NBAR] = {0}; + uint16_t Sp[(2 * PARAMS_N + PARAMS_NBAR)*PARAMS_NBAR] = {0}; // contains secret data + uint16_t *Ep = &Sp[PARAMS_N * PARAMS_NBAR]; // contains secret data + uint16_t *Epp = &Sp[2 * PARAMS_N * PARAMS_NBAR]; // contains secret data + const uint8_t *ct_c1 = &ct[0]; + const uint8_t *ct_c2 = &ct[(PARAMS_LOGQ * PARAMS_N * PARAMS_NBAR) / 8]; + const uint8_t *sk_s = &sk[0]; + const uint8_t *sk_pk = &sk[CRYPTO_BYTES]; + const uint16_t *sk_S = (uint16_t *) &sk[CRYPTO_BYTES + CRYPTO_PUBLICKEYBYTES]; + uint16_t S[PARAMS_N * PARAMS_NBAR]; // contains secret data + const uint8_t *sk_pkh = &sk[CRYPTO_BYTES + CRYPTO_PUBLICKEYBYTES + 2 * PARAMS_N * PARAMS_NBAR]; + const uint8_t *pk_seedA = &sk_pk[0]; + const uint8_t *pk_b = &sk_pk[BYTES_SEED_A]; + uint8_t G2in[BYTES_PKHASH + BYTES_MU]; // contains secret data via muprime + uint8_t *pkh = &G2in[0]; + uint8_t *muprime = &G2in[BYTES_PKHASH]; // contains secret data + uint8_t G2out[2 * CRYPTO_BYTES]; // contains secret data + uint8_t *seedSEprime = &G2out[0]; // contains secret data + uint8_t *kprime = &G2out[CRYPTO_BYTES]; // contains secret data + uint8_t Fin[CRYPTO_CIPHERTEXTBYTES + CRYPTO_BYTES]; // contains secret data via Fin_k + uint8_t *Fin_ct = &Fin[0]; + uint8_t *Fin_k = &Fin[CRYPTO_CIPHERTEXTBYTES]; // contains secret data + uint8_t shake_input_seedSEprime[1 + CRYPTO_BYTES]; // contains secret data + + for (size_t i = 0; i < PARAMS_N * PARAMS_NBAR; i++) { + S[i] = PQCLEAN_FRODOKEM976AES_CLEAN_LE_TO_UINT16(sk_S[i]); + } + + // Compute W = C - Bp*S (mod q), and decode the randomness mu + PQCLEAN_FRODOKEM976AES_CLEAN_unpack(Bp, PARAMS_N * PARAMS_NBAR, ct_c1, (PARAMS_LOGQ * PARAMS_N * PARAMS_NBAR) / 8, PARAMS_LOGQ); + PQCLEAN_FRODOKEM976AES_CLEAN_unpack(C, PARAMS_NBAR * PARAMS_NBAR, ct_c2, (PARAMS_LOGQ * PARAMS_NBAR * PARAMS_NBAR) / 8, PARAMS_LOGQ); + PQCLEAN_FRODOKEM976AES_CLEAN_mul_bs(W, Bp, S); + PQCLEAN_FRODOKEM976AES_CLEAN_sub(W, C, W); + PQCLEAN_FRODOKEM976AES_CLEAN_key_decode((uint16_t *)muprime, W); + + // Generate (seedSE' || k') = G_2(pkh || mu') + memcpy(pkh, sk_pkh, BYTES_PKHASH); + shake(G2out, CRYPTO_BYTES + CRYPTO_BYTES, G2in, BYTES_PKHASH + BYTES_MU); + + // Generate Sp and Ep, and compute BBp = Sp*A + Ep. Generate A on-the-fly + shake_input_seedSEprime[0] = 0x96; + memcpy(&shake_input_seedSEprime[1], seedSEprime, CRYPTO_BYTES); + shake((uint8_t *)Sp, (2 * PARAMS_N + PARAMS_NBAR) * PARAMS_NBAR * sizeof(uint16_t), shake_input_seedSEprime, 1 + CRYPTO_BYTES); + for (size_t i = 0; i < (2 * PARAMS_N + PARAMS_NBAR) * PARAMS_NBAR; i++) { + Sp[i] = PQCLEAN_FRODOKEM976AES_CLEAN_LE_TO_UINT16(Sp[i]); + } + PQCLEAN_FRODOKEM976AES_CLEAN_sample_n(Sp, PARAMS_N * PARAMS_NBAR); + PQCLEAN_FRODOKEM976AES_CLEAN_sample_n(Ep, PARAMS_N * PARAMS_NBAR); + PQCLEAN_FRODOKEM976AES_CLEAN_mul_add_sa_plus_e(BBp, Sp, Ep, pk_seedA); + + // Generate Epp, and compute W = Sp*B + Epp + PQCLEAN_FRODOKEM976AES_CLEAN_sample_n(Epp, PARAMS_NBAR * PARAMS_NBAR); + PQCLEAN_FRODOKEM976AES_CLEAN_unpack(B, PARAMS_N * PARAMS_NBAR, pk_b, CRYPTO_PUBLICKEYBYTES - BYTES_SEED_A, PARAMS_LOGQ); + PQCLEAN_FRODOKEM976AES_CLEAN_mul_add_sb_plus_e(W, B, Sp, Epp); + + // Encode mu, and compute CC = W + enc(mu') (mod q) + PQCLEAN_FRODOKEM976AES_CLEAN_key_encode(CC, (uint16_t *)muprime); + PQCLEAN_FRODOKEM976AES_CLEAN_add(CC, W, CC); + + // Prepare input to F + memcpy(Fin_ct, ct, CRYPTO_CIPHERTEXTBYTES); + + // Reducing BBp modulo q + for (size_t i = 0; i < PARAMS_N * PARAMS_NBAR; i++) { + BBp[i] = BBp[i] & ((1 << PARAMS_LOGQ) - 1); + } + + // Is (Bp == BBp & C == CC) = true + if (memcmp(Bp, BBp, 2 * PARAMS_N * PARAMS_NBAR) == 0 && memcmp(C, CC, 2 * PARAMS_NBAR * PARAMS_NBAR) == 0) { + // Load k' to do ss = F(ct || k') + memcpy(Fin_k, kprime, CRYPTO_BYTES); + } else { + // Load s to do ss = F(ct || s) + memcpy(Fin_k, sk_s, CRYPTO_BYTES); + } + shake(ss, CRYPTO_BYTES, Fin, CRYPTO_CIPHERTEXTBYTES + CRYPTO_BYTES); + + // Cleanup: + PQCLEAN_FRODOKEM976AES_CLEAN_clear_bytes((uint8_t *)W, PARAMS_NBAR * PARAMS_NBAR * sizeof(uint16_t)); + PQCLEAN_FRODOKEM976AES_CLEAN_clear_bytes((uint8_t *)Sp, PARAMS_N * PARAMS_NBAR * sizeof(uint16_t)); + PQCLEAN_FRODOKEM976AES_CLEAN_clear_bytes((uint8_t *)S, PARAMS_N * PARAMS_NBAR * sizeof(uint16_t)); + PQCLEAN_FRODOKEM976AES_CLEAN_clear_bytes((uint8_t *)Ep, PARAMS_N * PARAMS_NBAR * sizeof(uint16_t)); + PQCLEAN_FRODOKEM976AES_CLEAN_clear_bytes((uint8_t *)Epp, PARAMS_NBAR * PARAMS_NBAR * sizeof(uint16_t)); + PQCLEAN_FRODOKEM976AES_CLEAN_clear_bytes(muprime, BYTES_MU); + PQCLEAN_FRODOKEM976AES_CLEAN_clear_bytes(G2out, 2 * CRYPTO_BYTES); + PQCLEAN_FRODOKEM976AES_CLEAN_clear_bytes(Fin_k, CRYPTO_BYTES); + PQCLEAN_FRODOKEM976AES_CLEAN_clear_bytes(shake_input_seedSEprime, 1 + CRYPTO_BYTES); + return 0; +} diff --git a/src/kem/frodokem/pqclean_frodokem976aes_clean/matrix_aes.c b/src/kem/frodokem/pqclean_frodokem976aes_clean/matrix_aes.c new file mode 100644 index 000000000..2596fc25d --- /dev/null +++ b/src/kem/frodokem/pqclean_frodokem976aes_clean/matrix_aes.c @@ -0,0 +1,93 @@ +/******************************************************************************************** +* FrodoKEM: Learning with Errors Key Encapsulation +* +* Abstract: matrix arithmetic functions used by the KEM +*********************************************************************************************/ + +#include +#include + +#include "aes.h" + +#include "api.h" +#include "common.h" +#include "params.h" + +int PQCLEAN_FRODOKEM976AES_CLEAN_mul_add_as_plus_e(uint16_t *out, const uint16_t *s, const uint16_t *e, const uint8_t *seed_A) { + // Generate-and-multiply: generate matrix A (N x N) row-wise, multiply by s on the right. + // Inputs: s, e (N x N_BAR) + // Output: out = A*s + e (N x N_BAR) + int i, j, k; + int16_t A[PARAMS_N * PARAMS_N] = {0}; + aes128ctx ctx128; + + aes128_keyexp(&ctx128, seed_A); + for (i = 0; i < PARAMS_N; i++) { + for (j = 0; j < PARAMS_N; j += PARAMS_STRIPE_STEP) { + A[i * PARAMS_N + j] = (int16_t) i; // Loading values in the little-endian order + A[i * PARAMS_N + j + 1] = (int16_t) j; + } + } + for (i = 0; i < PARAMS_N * PARAMS_N; i++) { + A[i] = PQCLEAN_FRODOKEM976AES_CLEAN_UINT16_TO_LE(A[i]); + } + + aes128_ecb((uint8_t *) A, (uint8_t *) A, PARAMS_N * PARAMS_N * sizeof(int16_t) / AES_BLOCKBYTES, &ctx128); + + for (i = 0; i < PARAMS_N * PARAMS_N; i++) { + A[i] = PQCLEAN_FRODOKEM976AES_CLEAN_LE_TO_UINT16(A[i]); + } + memcpy(out, e, PARAMS_NBAR * PARAMS_N * sizeof(uint16_t)); + + for (i = 0; i < PARAMS_N; i++) { // Matrix multiplication-addition A*s + e + for (k = 0; k < PARAMS_NBAR; k++) { + uint16_t sum = 0; + for (j = 0; j < PARAMS_N; j++) { + sum += A[i * PARAMS_N + j] * s[k * PARAMS_N + j]; + } + out[i * PARAMS_NBAR + k] += sum; // Adding e. No need to reduce modulo 2^15, extra bits are taken care of during packing later on. + } + } + + return 1; +} + + +int PQCLEAN_FRODOKEM976AES_CLEAN_mul_add_sa_plus_e(uint16_t *out, const uint16_t *s, const uint16_t *e, const uint8_t *seed_A) { + // Generate-and-multiply: generate matrix A (N x N) column-wise, multiply by s' on the left. + // Inputs: s', e' (N_BAR x N) + // Output: out = s'*A + e' (N_BAR x N) + int i, j, k; + int16_t A[PARAMS_N * PARAMS_N] = {0}; + aes128ctx ctx128; + + aes128_keyexp(&ctx128, seed_A); + for (i = 0; i < PARAMS_N; i++) { + for (j = 0; j < PARAMS_N; j += PARAMS_STRIPE_STEP) { + A[i * PARAMS_N + j] = (int16_t) i; // Loading values in the little-endian order + A[i * PARAMS_N + j + 1] = (int16_t) j; + } + } + for (i = 0; i < PARAMS_N * PARAMS_N; i++) { + A[i] = PQCLEAN_FRODOKEM976AES_CLEAN_UINT16_TO_LE(A[i]); + } + + aes128_ecb((uint8_t *) A, (uint8_t *) A, PARAMS_N * PARAMS_N * sizeof(int16_t) / AES_BLOCKBYTES, &ctx128); + + for (i = 0; i < PARAMS_N * PARAMS_N; i++) { + A[i] = PQCLEAN_FRODOKEM976AES_CLEAN_LE_TO_UINT16(A[i]); + } + memcpy(out, e, PARAMS_NBAR * PARAMS_N * sizeof(uint16_t)); + + for (i = 0; i < PARAMS_N; i++) { // Matrix multiplication-addition A*s + e + for (k = 0; k < PARAMS_NBAR; k++) { + uint16_t sum = 0; + for (j = 0; j < PARAMS_N; j++) { + sum += A[j * PARAMS_N + i] * s[k * PARAMS_N + j]; + } + out[k * PARAMS_N + i] += sum; // Adding e. No need to reduce modulo 2^15, extra bits are taken care of during packing later on. + } + } + + return 1; +} diff --git a/src/kem/frodokem/pqclean_frodokem976aes_clean/noise.c b/src/kem/frodokem/pqclean_frodokem976aes_clean/noise.c new file mode 100644 index 000000000..8796e4d40 --- /dev/null +++ b/src/kem/frodokem/pqclean_frodokem976aes_clean/noise.c @@ -0,0 +1,35 @@ +/******************************************************************************************** +* FrodoKEM: Learning with Errors Key Encapsulation +* +* Abstract: noise sampling functions +*********************************************************************************************/ + +#include + +#include "api.h" +#include "common.h" +#include "params.h" + +static uint16_t CDF_TABLE[CDF_TABLE_LEN] = CDF_TABLE_DATA; + +void PQCLEAN_FRODOKEM976AES_CLEAN_sample_n(uint16_t *s, size_t n) { + // Fills vector s with n samples from the noise distribution which requires 16 bits to sample. + // The distribution is specified by its CDF. + // Input: pseudo-random values (2*n bytes) passed in s. The input is overwritten by the output. + size_t i; + unsigned int j; + + for (i = 0; i < n; ++i) { + uint16_t sample = 0; + uint16_t prnd = s[i] >> 1; // Drop the least significant bit + uint16_t sign = s[i] & 0x1; // Pick the least significant bit + + // No need to compare with the last value. + for (j = 0; j < (unsigned int)(CDF_TABLE_LEN - 1); j++) { + // Constant time comparison: 1 if CDF_TABLE[j] < s, 0 otherwise. Uses the fact that CDF_TABLE[j] and s fit in 15 bits. + sample += (uint16_t)(CDF_TABLE[j] - prnd) >> 15; + } + // Assuming that sign is either 0 or 1, flips sample iff sign = 1 + s[i] = ((-sign) ^ sample) + sign; + } +} diff --git a/src/kem/frodokem/pqclean_frodokem976aes_clean/params.h b/src/kem/frodokem/pqclean_frodokem976aes_clean/params.h new file mode 100644 index 000000000..1e4147e8e --- /dev/null +++ b/src/kem/frodokem/pqclean_frodokem976aes_clean/params.h @@ -0,0 +1,27 @@ +#ifndef PARAMS_H +#define PARAMS_H + +#define CRYPTO_SECRETKEYBYTES PQCLEAN_FRODOKEM976AES_CLEAN_CRYPTO_SECRETKEYBYTES +#define CRYPTO_PUBLICKEYBYTES PQCLEAN_FRODOKEM976AES_CLEAN_CRYPTO_PUBLICKEYBYTES +#define CRYPTO_BYTES PQCLEAN_FRODOKEM976AES_CLEAN_CRYPTO_BYTES +#define CRYPTO_CIPHERTEXTBYTES PQCLEAN_FRODOKEM976AES_CLEAN_CRYPTO_CIPHERTEXTBYTES + +#define PARAMS_N 976 +#define PARAMS_NBAR 8 +#define PARAMS_LOGQ 16 +#define PARAMS_Q (1 << PARAMS_LOGQ) +#define PARAMS_EXTRACTED_BITS 3 +#define PARAMS_STRIPE_STEP 8 +#define PARAMS_PARALLEL 4 +#define BYTES_SEED_A 16 +#define BYTES_MU ((PARAMS_EXTRACTED_BITS * PARAMS_NBAR * PARAMS_NBAR) / 8) +#define BYTES_PKHASH CRYPTO_BYTES + +// Selecting SHAKE XOF function for the KEM and noise sampling +#define shake shake256 + +// CDF table +#define CDF_TABLE_DATA {5638, 15915, 23689, 28571, 31116, 32217, 32613, 32731, 32760, 32766, 32767} +#define CDF_TABLE_LEN 11 + +#endif diff --git a/src/kem/frodokem/pqclean_frodokem976aes_clean/util.c b/src/kem/frodokem/pqclean_frodokem976aes_clean/util.c new file mode 100644 index 000000000..92199cae5 --- /dev/null +++ b/src/kem/frodokem/pqclean_frodokem976aes_clean/util.c @@ -0,0 +1,235 @@ +/******************************************************************************************** +* FrodoKEM: Learning with Errors Key Encapsulation +* +* Abstract: additional functions for FrodoKEM +*********************************************************************************************/ + +#include +#include + +#include "api.h" +#include "common.h" +#include "params.h" + +#define min(x, y) (((x) < (y)) ? (x) : (y)) + +uint16_t PQCLEAN_FRODOKEM976AES_CLEAN_LE_TO_UINT16(uint16_t n) { + return (((uint8_t *) &n)[0] | (((uint8_t *) &n)[1] << 8)); +} + +uint16_t PQCLEAN_FRODOKEM976AES_CLEAN_UINT16_TO_LE(uint16_t n) { + uint16_t y; + uint8_t *z = (uint8_t *) &y; + z[0] = n & 0xFF; + z[1] = (n & 0xFF00) >> 8; + return y; +} + +void PQCLEAN_FRODOKEM976AES_CLEAN_mul_bs(uint16_t *out, const uint16_t *b, const uint16_t *s) { + // Multiply by s on the right + // Inputs: b (N_BAR x N), s (N x N_BAR) + // Output: out = b*s (N_BAR x N_BAR) + int i, j, k; + + for (i = 0; i < PARAMS_NBAR; i++) { + for (j = 0; j < PARAMS_NBAR; j++) { + out[i * PARAMS_NBAR + j] = 0; + for (k = 0; k < PARAMS_N; k++) { + out[i * PARAMS_NBAR + j] += b[i * PARAMS_N + k] * s[j * PARAMS_N + k]; + } + out[i * PARAMS_NBAR + j] = (uint32_t)(out[i * PARAMS_NBAR + j]) & ((1 << PARAMS_LOGQ) - 1); + } + } +} + + +void PQCLEAN_FRODOKEM976AES_CLEAN_mul_add_sb_plus_e(uint16_t *out, const uint16_t *b, const uint16_t *s, const uint16_t *e) { + // Multiply by s on the left + // Inputs: b (N x N_BAR), s (N_BAR x N), e (N_BAR x N_BAR) + // Output: out = s*b + e (N_BAR x N_BAR) + int i, j, k; + + for (k = 0; k < PARAMS_NBAR; k++) { + for (i = 0; i < PARAMS_NBAR; i++) { + out[k * PARAMS_NBAR + i] = e[k * PARAMS_NBAR + i]; + for (j = 0; j < PARAMS_N; j++) { + out[k * PARAMS_NBAR + i] += s[k * PARAMS_N + j] * b[j * PARAMS_NBAR + i]; + } + out[k * PARAMS_NBAR + i] = (uint32_t)(out[k * PARAMS_NBAR + i]) & ((1 << PARAMS_LOGQ) - 1); + } + } +} + + +void PQCLEAN_FRODOKEM976AES_CLEAN_add(uint16_t *out, const uint16_t *a, const uint16_t *b) { + // Add a and b + // Inputs: a, b (N_BAR x N_BAR) + // Output: c = a + b + + for (size_t i = 0; i < (PARAMS_NBAR * PARAMS_NBAR); i++) { + out[i] = (a[i] + b[i]) & ((1 << PARAMS_LOGQ) - 1); + } +} + + +void PQCLEAN_FRODOKEM976AES_CLEAN_sub(uint16_t *out, const uint16_t *a, const uint16_t *b) { + // Subtract a and b + // Inputs: a, b (N_BAR x N_BAR) + // Output: c = a - b + + for (size_t i = 0; i < (PARAMS_NBAR * PARAMS_NBAR); i++) { + out[i] = (a[i] - b[i]) & ((1 << PARAMS_LOGQ) - 1); + } +} + + +void PQCLEAN_FRODOKEM976AES_CLEAN_key_encode(uint16_t *out, const uint16_t *in) { + // Encoding + unsigned int i, j, npieces_word = 8; + unsigned int nwords = (PARAMS_NBAR * PARAMS_NBAR) / 8; + uint64_t temp, mask = ((uint64_t)1 << PARAMS_EXTRACTED_BITS) - 1; + uint16_t *pos = out; + + for (i = 0; i < nwords; i++) { + temp = 0; + for (j = 0; j < PARAMS_EXTRACTED_BITS; j++) { + temp |= ((uint64_t)((uint8_t *)in)[i * PARAMS_EXTRACTED_BITS + j]) << (8 * j); + } + for (j = 0; j < npieces_word; j++) { + *pos = (uint16_t)((temp & mask) << (PARAMS_LOGQ - PARAMS_EXTRACTED_BITS)); + temp >>= PARAMS_EXTRACTED_BITS; + pos++; + } + } +} + + +void PQCLEAN_FRODOKEM976AES_CLEAN_key_decode(uint16_t *out, const uint16_t *in) { + // Decoding + unsigned int i, j, index = 0, npieces_word = 8; + unsigned int nwords = (PARAMS_NBAR * PARAMS_NBAR) / 8; + uint16_t temp, maskex = ((uint16_t)1 << PARAMS_EXTRACTED_BITS) - 1, maskq = ((uint16_t)1 << PARAMS_LOGQ) - 1; + uint8_t *pos = (uint8_t *)out; + uint64_t templong; + + for (i = 0; i < nwords; i++) { + templong = 0; + for (j = 0; j < npieces_word; j++) { // temp = floor(in*2^{-11}+0.5) + temp = ((in[index] & maskq) + (1 << (PARAMS_LOGQ - PARAMS_EXTRACTED_BITS - 1))) >> (PARAMS_LOGQ - PARAMS_EXTRACTED_BITS); + templong |= ((uint64_t)(temp & maskex)) << (PARAMS_EXTRACTED_BITS * j); + index++; + } + for (j = 0; j < PARAMS_EXTRACTED_BITS; j++) { + pos[i * PARAMS_EXTRACTED_BITS + j] = (templong >> (8 * j)) & 0xFF; + } + } +} + + +void PQCLEAN_FRODOKEM976AES_CLEAN_pack(uint8_t *out, size_t outlen, const uint16_t *in, size_t inlen, uint8_t lsb) { + // Pack the input uint16 vector into a char output vector, copying lsb bits from each input element. + // If inlen * lsb / 8 > outlen, only outlen * 8 bits are copied. + memset(out, 0, outlen); + + size_t i = 0; // whole bytes already filled in + size_t j = 0; // whole uint16_t already copied + uint16_t w = 0; // the leftover, not yet copied + uint8_t bits = 0; // the number of lsb in w + + while (i < outlen && (j < inlen || ((j == inlen) && (bits > 0)))) { + /* + in: | | |********|********| + ^ + j + w : | ****| + ^ + bits + out:|**|**|**|**|**|**|**|**|* | + ^^ + ib + */ + uint8_t b = 0; // bits in out[i] already filled in + while (b < 8) { + int nbits = min(8 - b, bits); + uint16_t mask = (1 << nbits) - 1; + uint8_t t = (uint8_t) ((w >> (bits - nbits)) & mask); // the bits to copy from w to out + out[i] = out[i] + (t << (8 - b - nbits)); + b += (uint8_t) nbits; + bits -= (uint8_t) nbits; + w &= ~(mask << bits); // not strictly necessary; mostly for debugging + + if (bits == 0) { + if (j < inlen) { + w = in[j]; + bits = lsb; + j++; + } else { + break; // the input vector is exhausted + } + } + } + if (b == 8) { // out[i] is filled in + i++; + } + } +} + + +void PQCLEAN_FRODOKEM976AES_CLEAN_unpack(uint16_t *out, size_t outlen, const uint8_t *in, size_t inlen, uint8_t lsb) { + // Unpack the input char vector into a uint16_t output vector, copying lsb bits + // for each output element from input. outlen must be at least ceil(inlen * 8 / lsb). + memset(out, 0, outlen * sizeof(uint16_t)); + + size_t i = 0; // whole uint16_t already filled in + size_t j = 0; // whole bytes already copied + uint8_t w = 0; // the leftover, not yet copied + uint8_t bits = 0; // the number of lsb bits of w + + while (i < outlen && (j < inlen || ((j == inlen) && (bits > 0)))) { + /* + in: | | | | | | |**|**|... + ^ + j + w : | *| + ^ + bits + out:| *****| *****| *** | |... + ^ ^ + i b + */ + uint8_t b = 0; // bits in out[i] already filled in + while (b < lsb) { + int nbits = min(lsb - b, bits); + uint16_t mask = (1 << nbits) - 1; + uint8_t t = (w >> (bits - nbits)) & mask; // the bits to copy from w to out + out[i] = out[i] + (t << (lsb - b - nbits)); + b += (uint8_t) nbits; + bits -= (uint8_t) nbits; + w &= ~(mask << bits); // not strictly necessary; mostly for debugging + + if (bits == 0) { + if (j < inlen) { + w = in[j]; + bits = 8; + j++; + } else { + break; // the input vector is exhausted + } + } + } + if (b == lsb) { // out[i] is filled in + i++; + } + } +} + + +void PQCLEAN_FRODOKEM976AES_CLEAN_clear_bytes(uint8_t *mem, size_t n) { + // Clear 8-bit bytes from memory. "n" indicates the number of bytes to be zeroed. + // This function uses the volatile type qualifier to inform the compiler not to optimize out the memory clearing. + volatile uint8_t *v = mem; + + for (size_t i = 0; i < n; i++) { + v[i] = 0; + } +} diff --git a/src/kem/frodokem/pqclean_frodokem976shake_clean/LICENSE b/src/kem/frodokem/pqclean_frodokem976shake_clean/LICENSE new file mode 100644 index 000000000..5cf7c8db6 --- /dev/null +++ b/src/kem/frodokem/pqclean_frodokem976shake_clean/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) Microsoft Corporation. All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE diff --git a/src/kem/frodokem/pqclean_frodokem976shake_clean/api.h b/src/kem/frodokem/pqclean_frodokem976shake_clean/api.h new file mode 100644 index 000000000..b3393fe05 --- /dev/null +++ b/src/kem/frodokem/pqclean_frodokem976shake_clean/api.h @@ -0,0 +1,20 @@ +#ifndef PQCLEAN_FRODOKEM976SHAKE_CLEAN_API_H +#define PQCLEAN_FRODOKEM976SHAKE_CLEAN_API_H + +#include +#include + +#define PQCLEAN_FRODOKEM976SHAKE_CLEAN_CRYPTO_SECRETKEYBYTES 31296 // sizeof(s) + CRYPTO_PUBLICKEYBYTES + 2*PARAMS_N*PARAMS_NBAR + BYTES_PKHASH +#define PQCLEAN_FRODOKEM976SHAKE_CLEAN_CRYPTO_PUBLICKEYBYTES 15632 // sizeof(seed_A) + (PARAMS_LOGQ*PARAMS_N*PARAMS_NBAR)/8 +#define PQCLEAN_FRODOKEM976SHAKE_CLEAN_CRYPTO_BYTES 24 +#define PQCLEAN_FRODOKEM976SHAKE_CLEAN_CRYPTO_CIPHERTEXTBYTES 15744 // (PARAMS_LOGQ*PARAMS_N*PARAMS_NBAR)/8 + (PARAMS_LOGQ*PARAMS_NBAR*PARAMS_NBAR)/8 + +#define PQCLEAN_FRODOKEM976SHAKE_CLEAN_CRYPTO_ALGNAME "FrodoKEM-976-SHAKE" + +int PQCLEAN_FRODOKEM976SHAKE_CLEAN_crypto_kem_keypair(uint8_t *pk, uint8_t *sk); + +int PQCLEAN_FRODOKEM976SHAKE_CLEAN_crypto_kem_enc(uint8_t *ct, uint8_t *ss, const uint8_t *pk); + +int PQCLEAN_FRODOKEM976SHAKE_CLEAN_crypto_kem_dec(uint8_t *ss, const uint8_t *ct, const uint8_t *sk); + +#endif diff --git a/src/kem/frodokem/pqclean_frodokem976shake_clean/common.h b/src/kem/frodokem/pqclean_frodokem976shake_clean/common.h new file mode 100644 index 000000000..12e2b2b8f --- /dev/null +++ b/src/kem/frodokem/pqclean_frodokem976shake_clean/common.h @@ -0,0 +1,19 @@ +#ifndef COMMON_H +#define COMMON_H + +int PQCLEAN_FRODOKEM976SHAKE_CLEAN_mul_add_as_plus_e(uint16_t *out, const uint16_t *s, const uint16_t *e, const uint8_t *seed_A); +int PQCLEAN_FRODOKEM976SHAKE_CLEAN_mul_add_sa_plus_e(uint16_t *out, const uint16_t *s, const uint16_t *e, const uint8_t *seed_A); +void PQCLEAN_FRODOKEM976SHAKE_CLEAN_sample_n(uint16_t *s, size_t n); +void PQCLEAN_FRODOKEM976SHAKE_CLEAN_mul_bs(uint16_t *out, const uint16_t *b, const uint16_t *s); +void PQCLEAN_FRODOKEM976SHAKE_CLEAN_mul_add_sb_plus_e(uint16_t *out, const uint16_t *b, const uint16_t *s, const uint16_t *e); +void PQCLEAN_FRODOKEM976SHAKE_CLEAN_add(uint16_t *out, const uint16_t *a, const uint16_t *b); +void PQCLEAN_FRODOKEM976SHAKE_CLEAN_sub(uint16_t *out, const uint16_t *a, const uint16_t *b); +void PQCLEAN_FRODOKEM976SHAKE_CLEAN_key_encode(uint16_t *out, const uint16_t *in); +void PQCLEAN_FRODOKEM976SHAKE_CLEAN_key_decode(uint16_t *out, const uint16_t *in); +void PQCLEAN_FRODOKEM976SHAKE_CLEAN_pack(uint8_t *out, size_t outlen, const uint16_t *in, size_t inlen, uint8_t lsb); +void PQCLEAN_FRODOKEM976SHAKE_CLEAN_unpack(uint16_t *out, size_t outlen, const uint8_t *in, size_t inlen, uint8_t lsb); +void PQCLEAN_FRODOKEM976SHAKE_CLEAN_clear_bytes(uint8_t *mem, size_t n); +uint16_t PQCLEAN_FRODOKEM976SHAKE_CLEAN_LE_TO_UINT16(uint16_t n); +uint16_t PQCLEAN_FRODOKEM976SHAKE_CLEAN_UINT16_TO_LE(uint16_t n); + +#endif diff --git a/src/kem/frodokem/pqclean_frodokem976shake_clean/kem.c b/src/kem/frodokem/pqclean_frodokem976shake_clean/kem.c new file mode 100644 index 000000000..5ba0b2241 --- /dev/null +++ b/src/kem/frodokem/pqclean_frodokem976shake_clean/kem.c @@ -0,0 +1,238 @@ +/******************************************************************************************** +* FrodoKEM: Learning with Errors Key Encapsulation +* +* Abstract: Key Encapsulation Mechanism (KEM) based on Frodo +*********************************************************************************************/ + +#include +#include + +#include "fips202.h" +#include "randombytes.h" + +#include "api.h" +#include "common.h" +#include "params.h" + +int PQCLEAN_FRODOKEM976SHAKE_CLEAN_crypto_kem_keypair(uint8_t *pk, uint8_t *sk) { + // FrodoKEM's key generation + // Outputs: public key pk ( BYTES_SEED_A + (PARAMS_LOGQ*PARAMS_N*PARAMS_NBAR)/8 bytes) + // secret key sk (CRYPTO_BYTES + BYTES_SEED_A + (PARAMS_LOGQ*PARAMS_N*PARAMS_NBAR)/8 + 2*PARAMS_N*PARAMS_NBAR + BYTES_PKHASH bytes) + uint8_t *pk_seedA = &pk[0]; + uint8_t *pk_b = &pk[BYTES_SEED_A]; + uint8_t *sk_s = &sk[0]; + uint8_t *sk_pk = &sk[CRYPTO_BYTES]; + uint8_t *sk_S = &sk[CRYPTO_BYTES + CRYPTO_PUBLICKEYBYTES]; + uint8_t *sk_pkh = &sk[CRYPTO_BYTES + CRYPTO_PUBLICKEYBYTES + 2 * PARAMS_N * PARAMS_NBAR]; + uint16_t B[PARAMS_N * PARAMS_NBAR] = {0}; + uint16_t S[2 * PARAMS_N * PARAMS_NBAR] = {0}; // contains secret data + uint16_t *E = &S[PARAMS_N * PARAMS_NBAR]; // contains secret data + uint8_t randomness[2 * CRYPTO_BYTES + BYTES_SEED_A]; // contains secret data via randomness_s and randomness_seedSE + uint8_t *randomness_s = &randomness[0]; // contains secret data + uint8_t *randomness_seedSE = &randomness[CRYPTO_BYTES]; // contains secret data + uint8_t *randomness_z = &randomness[2 * CRYPTO_BYTES]; + uint8_t shake_input_seedSE[1 + CRYPTO_BYTES]; // contains secret data + + // Generate the secret value s, the seed for S and E, and the seed for the seed for A. Add seed_A to the public key + randombytes(randomness, CRYPTO_BYTES + CRYPTO_BYTES + BYTES_SEED_A); + shake(pk_seedA, BYTES_SEED_A, randomness_z, BYTES_SEED_A); + + // Generate S and E, and compute B = A*S + E. Generate A on-the-fly + shake_input_seedSE[0] = 0x5F; + memcpy(&shake_input_seedSE[1], randomness_seedSE, CRYPTO_BYTES); + shake((uint8_t *)S, 2 * PARAMS_N * PARAMS_NBAR * sizeof(uint16_t), shake_input_seedSE, 1 + CRYPTO_BYTES); + for (size_t i = 0; i < 2 * PARAMS_N * PARAMS_NBAR; i++) { + S[i] = PQCLEAN_FRODOKEM976SHAKE_CLEAN_LE_TO_UINT16(S[i]); + } + PQCLEAN_FRODOKEM976SHAKE_CLEAN_sample_n(S, PARAMS_N * PARAMS_NBAR); + PQCLEAN_FRODOKEM976SHAKE_CLEAN_sample_n(E, PARAMS_N * PARAMS_NBAR); + PQCLEAN_FRODOKEM976SHAKE_CLEAN_mul_add_as_plus_e(B, S, E, pk); + + // Encode the second part of the public key + PQCLEAN_FRODOKEM976SHAKE_CLEAN_pack(pk_b, CRYPTO_PUBLICKEYBYTES - BYTES_SEED_A, B, PARAMS_N * PARAMS_NBAR, PARAMS_LOGQ); + + // Add s, pk and S to the secret key + memcpy(sk_s, randomness_s, CRYPTO_BYTES); + memcpy(sk_pk, pk, CRYPTO_PUBLICKEYBYTES); + for (size_t i = 0; i < PARAMS_N * PARAMS_NBAR; i++) { + S[i] = PQCLEAN_FRODOKEM976SHAKE_CLEAN_UINT16_TO_LE(S[i]); + } + memcpy(sk_S, S, 2 * PARAMS_N * PARAMS_NBAR); + + // Add H(pk) to the secret key + shake(sk_pkh, BYTES_PKHASH, pk, CRYPTO_PUBLICKEYBYTES); + + // Cleanup: + PQCLEAN_FRODOKEM976SHAKE_CLEAN_clear_bytes((uint8_t *)S, PARAMS_N * PARAMS_NBAR * sizeof(uint16_t)); + PQCLEAN_FRODOKEM976SHAKE_CLEAN_clear_bytes((uint8_t *)E, PARAMS_N * PARAMS_NBAR * sizeof(uint16_t)); + PQCLEAN_FRODOKEM976SHAKE_CLEAN_clear_bytes(randomness, 2 * CRYPTO_BYTES); + PQCLEAN_FRODOKEM976SHAKE_CLEAN_clear_bytes(shake_input_seedSE, 1 + CRYPTO_BYTES); + return 0; +} + + +int PQCLEAN_FRODOKEM976SHAKE_CLEAN_crypto_kem_enc(uint8_t *ct, uint8_t *ss, const uint8_t *pk) { + // FrodoKEM's key encapsulation + const uint8_t *pk_seedA = &pk[0]; + const uint8_t *pk_b = &pk[BYTES_SEED_A]; + uint8_t *ct_c1 = &ct[0]; + uint8_t *ct_c2 = &ct[(PARAMS_LOGQ * PARAMS_N * PARAMS_NBAR) / 8]; + uint16_t B[PARAMS_N * PARAMS_NBAR] = {0}; + uint16_t V[PARAMS_NBAR * PARAMS_NBAR] = {0}; // contains secret data + uint16_t C[PARAMS_NBAR * PARAMS_NBAR] = {0}; + uint16_t Bp[PARAMS_N * PARAMS_NBAR] = {0}; + uint16_t Sp[(2 * PARAMS_N + PARAMS_NBAR)*PARAMS_NBAR] = {0}; // contains secret data + uint16_t *Ep = &Sp[PARAMS_N * PARAMS_NBAR]; // contains secret data + uint16_t *Epp = &Sp[2 * PARAMS_N * PARAMS_NBAR]; // contains secret data + uint8_t G2in[BYTES_PKHASH + BYTES_MU]; // contains secret data via mu + uint8_t *pkh = &G2in[0]; + uint8_t *mu = &G2in[BYTES_PKHASH]; // contains secret data + uint8_t G2out[2 * CRYPTO_BYTES]; // contains secret data + uint8_t *seedSE = &G2out[0]; // contains secret data + uint8_t *k = &G2out[CRYPTO_BYTES]; // contains secret data + uint8_t Fin[CRYPTO_CIPHERTEXTBYTES + CRYPTO_BYTES]; // contains secret data via Fin_k + uint8_t *Fin_ct = &Fin[0]; + uint8_t *Fin_k = &Fin[CRYPTO_CIPHERTEXTBYTES]; // contains secret data + uint8_t shake_input_seedSE[1 + CRYPTO_BYTES]; // contains secret data + + // pkh <- G_1(pk), generate random mu, compute (seedSE || k) = G_2(pkh || mu) + shake(pkh, BYTES_PKHASH, pk, CRYPTO_PUBLICKEYBYTES); + randombytes(mu, BYTES_MU); + shake(G2out, CRYPTO_BYTES + CRYPTO_BYTES, G2in, BYTES_PKHASH + BYTES_MU); + + // Generate Sp and Ep, and compute Bp = Sp*A + Ep. Generate A on-the-fly + shake_input_seedSE[0] = 0x96; + memcpy(&shake_input_seedSE[1], seedSE, CRYPTO_BYTES); + shake((uint8_t *)Sp, (2 * PARAMS_N + PARAMS_NBAR) * PARAMS_NBAR * sizeof(uint16_t), shake_input_seedSE, 1 + CRYPTO_BYTES); + for (size_t i = 0; i < (2 * PARAMS_N + PARAMS_NBAR) * PARAMS_NBAR; i++) { + Sp[i] = PQCLEAN_FRODOKEM976SHAKE_CLEAN_LE_TO_UINT16(Sp[i]); + } + PQCLEAN_FRODOKEM976SHAKE_CLEAN_sample_n(Sp, PARAMS_N * PARAMS_NBAR); + PQCLEAN_FRODOKEM976SHAKE_CLEAN_sample_n(Ep, PARAMS_N * PARAMS_NBAR); + PQCLEAN_FRODOKEM976SHAKE_CLEAN_mul_add_sa_plus_e(Bp, Sp, Ep, pk_seedA); + PQCLEAN_FRODOKEM976SHAKE_CLEAN_pack(ct_c1, (PARAMS_LOGQ * PARAMS_N * PARAMS_NBAR) / 8, Bp, PARAMS_N * PARAMS_NBAR, PARAMS_LOGQ); + + // Generate Epp, and compute V = Sp*B + Epp + PQCLEAN_FRODOKEM976SHAKE_CLEAN_sample_n(Epp, PARAMS_NBAR * PARAMS_NBAR); + PQCLEAN_FRODOKEM976SHAKE_CLEAN_unpack(B, PARAMS_N * PARAMS_NBAR, pk_b, CRYPTO_PUBLICKEYBYTES - BYTES_SEED_A, PARAMS_LOGQ); + PQCLEAN_FRODOKEM976SHAKE_CLEAN_mul_add_sb_plus_e(V, B, Sp, Epp); + + // Encode mu, and compute C = V + enc(mu) (mod q) + PQCLEAN_FRODOKEM976SHAKE_CLEAN_key_encode(C, (uint16_t *)mu); + PQCLEAN_FRODOKEM976SHAKE_CLEAN_add(C, V, C); + PQCLEAN_FRODOKEM976SHAKE_CLEAN_pack(ct_c2, (PARAMS_LOGQ * PARAMS_NBAR * PARAMS_NBAR) / 8, C, PARAMS_NBAR * PARAMS_NBAR, PARAMS_LOGQ); + + // Compute ss = F(ct||KK) + memcpy(Fin_ct, ct, CRYPTO_CIPHERTEXTBYTES); + memcpy(Fin_k, k, CRYPTO_BYTES); + shake(ss, CRYPTO_BYTES, Fin, CRYPTO_CIPHERTEXTBYTES + CRYPTO_BYTES); + + // Cleanup: + PQCLEAN_FRODOKEM976SHAKE_CLEAN_clear_bytes((uint8_t *)V, PARAMS_NBAR * PARAMS_NBAR * sizeof(uint16_t)); + PQCLEAN_FRODOKEM976SHAKE_CLEAN_clear_bytes((uint8_t *)Sp, PARAMS_N * PARAMS_NBAR * sizeof(uint16_t)); + PQCLEAN_FRODOKEM976SHAKE_CLEAN_clear_bytes((uint8_t *)Ep, PARAMS_N * PARAMS_NBAR * sizeof(uint16_t)); + PQCLEAN_FRODOKEM976SHAKE_CLEAN_clear_bytes((uint8_t *)Epp, PARAMS_NBAR * PARAMS_NBAR * sizeof(uint16_t)); + PQCLEAN_FRODOKEM976SHAKE_CLEAN_clear_bytes(mu, BYTES_MU); + PQCLEAN_FRODOKEM976SHAKE_CLEAN_clear_bytes(G2out, 2 * CRYPTO_BYTES); + PQCLEAN_FRODOKEM976SHAKE_CLEAN_clear_bytes(Fin_k, CRYPTO_BYTES); + PQCLEAN_FRODOKEM976SHAKE_CLEAN_clear_bytes(shake_input_seedSE, 1 + CRYPTO_BYTES); + return 0; +} + + +int PQCLEAN_FRODOKEM976SHAKE_CLEAN_crypto_kem_dec(uint8_t *ss, const uint8_t *ct, const uint8_t *sk) { + // FrodoKEM's key decapsulation + uint16_t B[PARAMS_N * PARAMS_NBAR] = {0}; + uint16_t Bp[PARAMS_N * PARAMS_NBAR] = {0}; + uint16_t W[PARAMS_NBAR * PARAMS_NBAR] = {0}; // contains secret data + uint16_t C[PARAMS_NBAR * PARAMS_NBAR] = {0}; + uint16_t CC[PARAMS_NBAR * PARAMS_NBAR] = {0}; + uint16_t BBp[PARAMS_N * PARAMS_NBAR] = {0}; + uint16_t Sp[(2 * PARAMS_N + PARAMS_NBAR)*PARAMS_NBAR] = {0}; // contains secret data + uint16_t *Ep = &Sp[PARAMS_N * PARAMS_NBAR]; // contains secret data + uint16_t *Epp = &Sp[2 * PARAMS_N * PARAMS_NBAR]; // contains secret data + const uint8_t *ct_c1 = &ct[0]; + const uint8_t *ct_c2 = &ct[(PARAMS_LOGQ * PARAMS_N * PARAMS_NBAR) / 8]; + const uint8_t *sk_s = &sk[0]; + const uint8_t *sk_pk = &sk[CRYPTO_BYTES]; + const uint16_t *sk_S = (uint16_t *) &sk[CRYPTO_BYTES + CRYPTO_PUBLICKEYBYTES]; + uint16_t S[PARAMS_N * PARAMS_NBAR]; // contains secret data + const uint8_t *sk_pkh = &sk[CRYPTO_BYTES + CRYPTO_PUBLICKEYBYTES + 2 * PARAMS_N * PARAMS_NBAR]; + const uint8_t *pk_seedA = &sk_pk[0]; + const uint8_t *pk_b = &sk_pk[BYTES_SEED_A]; + uint8_t G2in[BYTES_PKHASH + BYTES_MU]; // contains secret data via muprime + uint8_t *pkh = &G2in[0]; + uint8_t *muprime = &G2in[BYTES_PKHASH]; // contains secret data + uint8_t G2out[2 * CRYPTO_BYTES]; // contains secret data + uint8_t *seedSEprime = &G2out[0]; // contains secret data + uint8_t *kprime = &G2out[CRYPTO_BYTES]; // contains secret data + uint8_t Fin[CRYPTO_CIPHERTEXTBYTES + CRYPTO_BYTES]; // contains secret data via Fin_k + uint8_t *Fin_ct = &Fin[0]; + uint8_t *Fin_k = &Fin[CRYPTO_CIPHERTEXTBYTES]; // contains secret data + uint8_t shake_input_seedSEprime[1 + CRYPTO_BYTES]; // contains secret data + + for (size_t i = 0; i < PARAMS_N * PARAMS_NBAR; i++) { + S[i] = PQCLEAN_FRODOKEM976SHAKE_CLEAN_LE_TO_UINT16(sk_S[i]); + } + + // Compute W = C - Bp*S (mod q), and decode the randomness mu + PQCLEAN_FRODOKEM976SHAKE_CLEAN_unpack(Bp, PARAMS_N * PARAMS_NBAR, ct_c1, (PARAMS_LOGQ * PARAMS_N * PARAMS_NBAR) / 8, PARAMS_LOGQ); + PQCLEAN_FRODOKEM976SHAKE_CLEAN_unpack(C, PARAMS_NBAR * PARAMS_NBAR, ct_c2, (PARAMS_LOGQ * PARAMS_NBAR * PARAMS_NBAR) / 8, PARAMS_LOGQ); + PQCLEAN_FRODOKEM976SHAKE_CLEAN_mul_bs(W, Bp, S); + PQCLEAN_FRODOKEM976SHAKE_CLEAN_sub(W, C, W); + PQCLEAN_FRODOKEM976SHAKE_CLEAN_key_decode((uint16_t *)muprime, W); + + // Generate (seedSE' || k') = G_2(pkh || mu') + memcpy(pkh, sk_pkh, BYTES_PKHASH); + shake(G2out, CRYPTO_BYTES + CRYPTO_BYTES, G2in, BYTES_PKHASH + BYTES_MU); + + // Generate Sp and Ep, and compute BBp = Sp*A + Ep. Generate A on-the-fly + shake_input_seedSEprime[0] = 0x96; + memcpy(&shake_input_seedSEprime[1], seedSEprime, CRYPTO_BYTES); + shake((uint8_t *)Sp, (2 * PARAMS_N + PARAMS_NBAR) * PARAMS_NBAR * sizeof(uint16_t), shake_input_seedSEprime, 1 + CRYPTO_BYTES); + for (size_t i = 0; i < (2 * PARAMS_N + PARAMS_NBAR) * PARAMS_NBAR; i++) { + Sp[i] = PQCLEAN_FRODOKEM976SHAKE_CLEAN_LE_TO_UINT16(Sp[i]); + } + PQCLEAN_FRODOKEM976SHAKE_CLEAN_sample_n(Sp, PARAMS_N * PARAMS_NBAR); + PQCLEAN_FRODOKEM976SHAKE_CLEAN_sample_n(Ep, PARAMS_N * PARAMS_NBAR); + PQCLEAN_FRODOKEM976SHAKE_CLEAN_mul_add_sa_plus_e(BBp, Sp, Ep, pk_seedA); + + // Generate Epp, and compute W = Sp*B + Epp + PQCLEAN_FRODOKEM976SHAKE_CLEAN_sample_n(Epp, PARAMS_NBAR * PARAMS_NBAR); + PQCLEAN_FRODOKEM976SHAKE_CLEAN_unpack(B, PARAMS_N * PARAMS_NBAR, pk_b, CRYPTO_PUBLICKEYBYTES - BYTES_SEED_A, PARAMS_LOGQ); + PQCLEAN_FRODOKEM976SHAKE_CLEAN_mul_add_sb_plus_e(W, B, Sp, Epp); + + // Encode mu, and compute CC = W + enc(mu') (mod q) + PQCLEAN_FRODOKEM976SHAKE_CLEAN_key_encode(CC, (uint16_t *)muprime); + PQCLEAN_FRODOKEM976SHAKE_CLEAN_add(CC, W, CC); + + // Prepare input to F + memcpy(Fin_ct, ct, CRYPTO_CIPHERTEXTBYTES); + + // Reducing BBp modulo q + for (size_t i = 0; i < PARAMS_N * PARAMS_NBAR; i++) { + BBp[i] = BBp[i] & ((1 << PARAMS_LOGQ) - 1); + } + + // Is (Bp == BBp & C == CC) = true + if (memcmp(Bp, BBp, 2 * PARAMS_N * PARAMS_NBAR) == 0 && memcmp(C, CC, 2 * PARAMS_NBAR * PARAMS_NBAR) == 0) { + // Load k' to do ss = F(ct || k') + memcpy(Fin_k, kprime, CRYPTO_BYTES); + } else { + // Load s to do ss = F(ct || s) + memcpy(Fin_k, sk_s, CRYPTO_BYTES); + } + shake(ss, CRYPTO_BYTES, Fin, CRYPTO_CIPHERTEXTBYTES + CRYPTO_BYTES); + + // Cleanup: + PQCLEAN_FRODOKEM976SHAKE_CLEAN_clear_bytes((uint8_t *)W, PARAMS_NBAR * PARAMS_NBAR * sizeof(uint16_t)); + PQCLEAN_FRODOKEM976SHAKE_CLEAN_clear_bytes((uint8_t *)Sp, PARAMS_N * PARAMS_NBAR * sizeof(uint16_t)); + PQCLEAN_FRODOKEM976SHAKE_CLEAN_clear_bytes((uint8_t *)S, PARAMS_N * PARAMS_NBAR * sizeof(uint16_t)); + PQCLEAN_FRODOKEM976SHAKE_CLEAN_clear_bytes((uint8_t *)Ep, PARAMS_N * PARAMS_NBAR * sizeof(uint16_t)); + PQCLEAN_FRODOKEM976SHAKE_CLEAN_clear_bytes((uint8_t *)Epp, PARAMS_NBAR * PARAMS_NBAR * sizeof(uint16_t)); + PQCLEAN_FRODOKEM976SHAKE_CLEAN_clear_bytes(muprime, BYTES_MU); + PQCLEAN_FRODOKEM976SHAKE_CLEAN_clear_bytes(G2out, 2 * CRYPTO_BYTES); + PQCLEAN_FRODOKEM976SHAKE_CLEAN_clear_bytes(Fin_k, CRYPTO_BYTES); + PQCLEAN_FRODOKEM976SHAKE_CLEAN_clear_bytes(shake_input_seedSEprime, 1 + CRYPTO_BYTES); + return 0; +} diff --git a/src/kem/frodokem/pqclean_frodokem976shake_clean/matrix_shake.c b/src/kem/frodokem/pqclean_frodokem976shake_clean/matrix_shake.c new file mode 100644 index 000000000..81ad384d8 --- /dev/null +++ b/src/kem/frodokem/pqclean_frodokem976shake_clean/matrix_shake.c @@ -0,0 +1,79 @@ +/******************************************************************************************** +* FrodoKEM: Learning with Errors Key Encapsulation +* +* Abstract: matrix arithmetic functions used by the KEM +*********************************************************************************************/ + +#include +#include + +#include "fips202.h" + +#include "api.h" +#include "common.h" +#include "params.h" + +int PQCLEAN_FRODOKEM976SHAKE_CLEAN_mul_add_as_plus_e(uint16_t *out, const uint16_t *s, const uint16_t *e, const uint8_t *seed_A) { + // Generate-and-multiply: generate matrix A (N x N) row-wise, multiply by s on the right. + // Inputs: s, e (N x N_BAR) + // Output: out = A*s + e (N x N_BAR) + int i, j, k; + int16_t A[PARAMS_N * PARAMS_N] = {0}; + + uint8_t seed_A_separated[2 + BYTES_SEED_A]; + uint16_t *seed_A_origin = (uint16_t *)&seed_A_separated; + memcpy(&seed_A_separated[2], seed_A, BYTES_SEED_A); + for (i = 0; i < PARAMS_N; i++) { + seed_A_origin[0] = PQCLEAN_FRODOKEM976SHAKE_CLEAN_UINT16_TO_LE((uint16_t) i); + shake128((uint8_t *)(A + i * PARAMS_N), (unsigned long long)(2 * PARAMS_N), seed_A_separated, 2 + BYTES_SEED_A); + } + for (i = 0; i < PARAMS_N * PARAMS_N; i++) { + A[i] = PQCLEAN_FRODOKEM976SHAKE_CLEAN_LE_TO_UINT16(A[i]); + } + memcpy(out, e, PARAMS_NBAR * PARAMS_N * sizeof(uint16_t)); + + for (i = 0; i < PARAMS_N; i++) { // Matrix multiplication-addition A*s + e + for (k = 0; k < PARAMS_NBAR; k++) { + uint16_t sum = 0; + for (j = 0; j < PARAMS_N; j++) { + sum += A[i * PARAMS_N + j] * s[k * PARAMS_N + j]; + } + out[i * PARAMS_NBAR + k] += sum; // Adding e. No need to reduce modulo 2^15, extra bits are taken care of during packing later on. + } + } + + return 1; +} + + +int PQCLEAN_FRODOKEM976SHAKE_CLEAN_mul_add_sa_plus_e(uint16_t *out, const uint16_t *s, const uint16_t *e, const uint8_t *seed_A) { + // Generate-and-multiply: generate matrix A (N x N) column-wise, multiply by s' on the left. + // Inputs: s', e' (N_BAR x N) + // Output: out = s'*A + e' (N_BAR x N) + int i, j, k; + int16_t A[PARAMS_N * PARAMS_N] = {0}; + + uint8_t seed_A_separated[2 + BYTES_SEED_A]; + uint16_t *seed_A_origin = (uint16_t *)&seed_A_separated; + memcpy(&seed_A_separated[2], seed_A, BYTES_SEED_A); + for (i = 0; i < PARAMS_N; i++) { + seed_A_origin[0] = PQCLEAN_FRODOKEM976SHAKE_CLEAN_UINT16_TO_LE((uint16_t) i); + shake128((uint8_t *)(A + i * PARAMS_N), (unsigned long long)(2 * PARAMS_N), seed_A_separated, 2 + BYTES_SEED_A); + } + for (i = 0; i < PARAMS_N * PARAMS_N; i++) { + A[i] = PQCLEAN_FRODOKEM976SHAKE_CLEAN_LE_TO_UINT16(A[i]); + } + memcpy(out, e, PARAMS_NBAR * PARAMS_N * sizeof(uint16_t)); + + for (i = 0; i < PARAMS_N; i++) { // Matrix multiplication-addition A*s + e + for (k = 0; k < PARAMS_NBAR; k++) { + uint16_t sum = 0; + for (j = 0; j < PARAMS_N; j++) { + sum += A[j * PARAMS_N + i] * s[k * PARAMS_N + j]; + } + out[k * PARAMS_N + i] += sum; // Adding e. No need to reduce modulo 2^15, extra bits are taken care of during packing later on. + } + } + + return 1; +} diff --git a/src/kem/frodokem/pqclean_frodokem976shake_clean/noise.c b/src/kem/frodokem/pqclean_frodokem976shake_clean/noise.c new file mode 100644 index 000000000..e23892c84 --- /dev/null +++ b/src/kem/frodokem/pqclean_frodokem976shake_clean/noise.c @@ -0,0 +1,35 @@ +/******************************************************************************************** +* FrodoKEM: Learning with Errors Key Encapsulation +* +* Abstract: noise sampling functions +*********************************************************************************************/ + +#include + +#include "api.h" +#include "common.h" +#include "params.h" + +static uint16_t CDF_TABLE[CDF_TABLE_LEN] = CDF_TABLE_DATA; + +void PQCLEAN_FRODOKEM976SHAKE_CLEAN_sample_n(uint16_t *s, size_t n) { + // Fills vector s with n samples from the noise distribution which requires 16 bits to sample. + // The distribution is specified by its CDF. + // Input: pseudo-random values (2*n bytes) passed in s. The input is overwritten by the output. + size_t i; + unsigned int j; + + for (i = 0; i < n; ++i) { + uint16_t sample = 0; + uint16_t prnd = s[i] >> 1; // Drop the least significant bit + uint16_t sign = s[i] & 0x1; // Pick the least significant bit + + // No need to compare with the last value. + for (j = 0; j < (unsigned int)(CDF_TABLE_LEN - 1); j++) { + // Constant time comparison: 1 if CDF_TABLE[j] < s, 0 otherwise. Uses the fact that CDF_TABLE[j] and s fit in 15 bits. + sample += (uint16_t)(CDF_TABLE[j] - prnd) >> 15; + } + // Assuming that sign is either 0 or 1, flips sample iff sign = 1 + s[i] = ((-sign) ^ sample) + sign; + } +} diff --git a/src/kem/frodokem/pqclean_frodokem976shake_clean/params.h b/src/kem/frodokem/pqclean_frodokem976shake_clean/params.h new file mode 100644 index 000000000..5181be70e --- /dev/null +++ b/src/kem/frodokem/pqclean_frodokem976shake_clean/params.h @@ -0,0 +1,27 @@ +#ifndef PARAMS_H +#define PARAMS_H + +#define CRYPTO_SECRETKEYBYTES PQCLEAN_FRODOKEM976SHAKE_CLEAN_CRYPTO_SECRETKEYBYTES +#define CRYPTO_PUBLICKEYBYTES PQCLEAN_FRODOKEM976SHAKE_CLEAN_CRYPTO_PUBLICKEYBYTES +#define CRYPTO_BYTES PQCLEAN_FRODOKEM976SHAKE_CLEAN_CRYPTO_BYTES +#define CRYPTO_CIPHERTEXTBYTES PQCLEAN_FRODOKEM976SHAKE_CLEAN_CRYPTO_CIPHERTEXTBYTES + +#define PARAMS_N 976 +#define PARAMS_NBAR 8 +#define PARAMS_LOGQ 16 +#define PARAMS_Q (1 << PARAMS_LOGQ) +#define PARAMS_EXTRACTED_BITS 3 +#define PARAMS_STRIPE_STEP 8 +#define PARAMS_PARALLEL 4 +#define BYTES_SEED_A 16 +#define BYTES_MU ((PARAMS_EXTRACTED_BITS * PARAMS_NBAR * PARAMS_NBAR) / 8) +#define BYTES_PKHASH CRYPTO_BYTES + +// Selecting SHAKE XOF function for the KEM and noise sampling +#define shake shake256 + +// CDF table +#define CDF_TABLE_DATA {5638, 15915, 23689, 28571, 31116, 32217, 32613, 32731, 32760, 32766, 32767} +#define CDF_TABLE_LEN 11 + +#endif diff --git a/src/kem/frodokem/pqclean_frodokem976shake_clean/util.c b/src/kem/frodokem/pqclean_frodokem976shake_clean/util.c new file mode 100644 index 000000000..a92a24b09 --- /dev/null +++ b/src/kem/frodokem/pqclean_frodokem976shake_clean/util.c @@ -0,0 +1,235 @@ +/******************************************************************************************** +* FrodoKEM: Learning with Errors Key Encapsulation +* +* Abstract: additional functions for FrodoKEM +*********************************************************************************************/ + +#include +#include + +#include "api.h" +#include "common.h" +#include "params.h" + +#define min(x, y) (((x) < (y)) ? (x) : (y)) + +uint16_t PQCLEAN_FRODOKEM976SHAKE_CLEAN_LE_TO_UINT16(uint16_t n) { + return (((uint8_t *) &n)[0] | (((uint8_t *) &n)[1] << 8)); +} + +uint16_t PQCLEAN_FRODOKEM976SHAKE_CLEAN_UINT16_TO_LE(uint16_t n) { + uint16_t y; + uint8_t *z = (uint8_t *) &y; + z[0] = n & 0xFF; + z[1] = (n & 0xFF00) >> 8; + return y; +} + +void PQCLEAN_FRODOKEM976SHAKE_CLEAN_mul_bs(uint16_t *out, const uint16_t *b, const uint16_t *s) { + // Multiply by s on the right + // Inputs: b (N_BAR x N), s (N x N_BAR) + // Output: out = b*s (N_BAR x N_BAR) + int i, j, k; + + for (i = 0; i < PARAMS_NBAR; i++) { + for (j = 0; j < PARAMS_NBAR; j++) { + out[i * PARAMS_NBAR + j] = 0; + for (k = 0; k < PARAMS_N; k++) { + out[i * PARAMS_NBAR + j] += b[i * PARAMS_N + k] * s[j * PARAMS_N + k]; + } + out[i * PARAMS_NBAR + j] = (uint32_t)(out[i * PARAMS_NBAR + j]) & ((1 << PARAMS_LOGQ) - 1); + } + } +} + + +void PQCLEAN_FRODOKEM976SHAKE_CLEAN_mul_add_sb_plus_e(uint16_t *out, const uint16_t *b, const uint16_t *s, const uint16_t *e) { + // Multiply by s on the left + // Inputs: b (N x N_BAR), s (N_BAR x N), e (N_BAR x N_BAR) + // Output: out = s*b + e (N_BAR x N_BAR) + int i, j, k; + + for (k = 0; k < PARAMS_NBAR; k++) { + for (i = 0; i < PARAMS_NBAR; i++) { + out[k * PARAMS_NBAR + i] = e[k * PARAMS_NBAR + i]; + for (j = 0; j < PARAMS_N; j++) { + out[k * PARAMS_NBAR + i] += s[k * PARAMS_N + j] * b[j * PARAMS_NBAR + i]; + } + out[k * PARAMS_NBAR + i] = (uint32_t)(out[k * PARAMS_NBAR + i]) & ((1 << PARAMS_LOGQ) - 1); + } + } +} + + +void PQCLEAN_FRODOKEM976SHAKE_CLEAN_add(uint16_t *out, const uint16_t *a, const uint16_t *b) { + // Add a and b + // Inputs: a, b (N_BAR x N_BAR) + // Output: c = a + b + + for (size_t i = 0; i < (PARAMS_NBAR * PARAMS_NBAR); i++) { + out[i] = (a[i] + b[i]) & ((1 << PARAMS_LOGQ) - 1); + } +} + + +void PQCLEAN_FRODOKEM976SHAKE_CLEAN_sub(uint16_t *out, const uint16_t *a, const uint16_t *b) { + // Subtract a and b + // Inputs: a, b (N_BAR x N_BAR) + // Output: c = a - b + + for (size_t i = 0; i < (PARAMS_NBAR * PARAMS_NBAR); i++) { + out[i] = (a[i] - b[i]) & ((1 << PARAMS_LOGQ) - 1); + } +} + + +void PQCLEAN_FRODOKEM976SHAKE_CLEAN_key_encode(uint16_t *out, const uint16_t *in) { + // Encoding + unsigned int i, j, npieces_word = 8; + unsigned int nwords = (PARAMS_NBAR * PARAMS_NBAR) / 8; + uint64_t temp, mask = ((uint64_t)1 << PARAMS_EXTRACTED_BITS) - 1; + uint16_t *pos = out; + + for (i = 0; i < nwords; i++) { + temp = 0; + for (j = 0; j < PARAMS_EXTRACTED_BITS; j++) { + temp |= ((uint64_t)((uint8_t *)in)[i * PARAMS_EXTRACTED_BITS + j]) << (8 * j); + } + for (j = 0; j < npieces_word; j++) { + *pos = (uint16_t)((temp & mask) << (PARAMS_LOGQ - PARAMS_EXTRACTED_BITS)); + temp >>= PARAMS_EXTRACTED_BITS; + pos++; + } + } +} + + +void PQCLEAN_FRODOKEM976SHAKE_CLEAN_key_decode(uint16_t *out, const uint16_t *in) { + // Decoding + unsigned int i, j, index = 0, npieces_word = 8; + unsigned int nwords = (PARAMS_NBAR * PARAMS_NBAR) / 8; + uint16_t temp, maskex = ((uint16_t)1 << PARAMS_EXTRACTED_BITS) - 1, maskq = ((uint16_t)1 << PARAMS_LOGQ) - 1; + uint8_t *pos = (uint8_t *)out; + uint64_t templong; + + for (i = 0; i < nwords; i++) { + templong = 0; + for (j = 0; j < npieces_word; j++) { // temp = floor(in*2^{-11}+0.5) + temp = ((in[index] & maskq) + (1 << (PARAMS_LOGQ - PARAMS_EXTRACTED_BITS - 1))) >> (PARAMS_LOGQ - PARAMS_EXTRACTED_BITS); + templong |= ((uint64_t)(temp & maskex)) << (PARAMS_EXTRACTED_BITS * j); + index++; + } + for (j = 0; j < PARAMS_EXTRACTED_BITS; j++) { + pos[i * PARAMS_EXTRACTED_BITS + j] = (templong >> (8 * j)) & 0xFF; + } + } +} + + +void PQCLEAN_FRODOKEM976SHAKE_CLEAN_pack(uint8_t *out, size_t outlen, const uint16_t *in, size_t inlen, uint8_t lsb) { + // Pack the input uint16 vector into a char output vector, copying lsb bits from each input element. + // If inlen * lsb / 8 > outlen, only outlen * 8 bits are copied. + memset(out, 0, outlen); + + size_t i = 0; // whole bytes already filled in + size_t j = 0; // whole uint16_t already copied + uint16_t w = 0; // the leftover, not yet copied + uint8_t bits = 0; // the number of lsb in w + + while (i < outlen && (j < inlen || ((j == inlen) && (bits > 0)))) { + /* + in: | | |********|********| + ^ + j + w : | ****| + ^ + bits + out:|**|**|**|**|**|**|**|**|* | + ^^ + ib + */ + uint8_t b = 0; // bits in out[i] already filled in + while (b < 8) { + int nbits = min(8 - b, bits); + uint16_t mask = (1 << nbits) - 1; + uint8_t t = (uint8_t) ((w >> (bits - nbits)) & mask); // the bits to copy from w to out + out[i] = out[i] + (t << (8 - b - nbits)); + b += (uint8_t) nbits; + bits -= (uint8_t) nbits; + w &= ~(mask << bits); // not strictly necessary; mostly for debugging + + if (bits == 0) { + if (j < inlen) { + w = in[j]; + bits = lsb; + j++; + } else { + break; // the input vector is exhausted + } + } + } + if (b == 8) { // out[i] is filled in + i++; + } + } +} + + +void PQCLEAN_FRODOKEM976SHAKE_CLEAN_unpack(uint16_t *out, size_t outlen, const uint8_t *in, size_t inlen, uint8_t lsb) { + // Unpack the input char vector into a uint16_t output vector, copying lsb bits + // for each output element from input. outlen must be at least ceil(inlen * 8 / lsb). + memset(out, 0, outlen * sizeof(uint16_t)); + + size_t i = 0; // whole uint16_t already filled in + size_t j = 0; // whole bytes already copied + uint8_t w = 0; // the leftover, not yet copied + uint8_t bits = 0; // the number of lsb bits of w + + while (i < outlen && (j < inlen || ((j == inlen) && (bits > 0)))) { + /* + in: | | | | | | |**|**|... + ^ + j + w : | *| + ^ + bits + out:| *****| *****| *** | |... + ^ ^ + i b + */ + uint8_t b = 0; // bits in out[i] already filled in + while (b < lsb) { + int nbits = min(lsb - b, bits); + uint16_t mask = (1 << nbits) - 1; + uint8_t t = (w >> (bits - nbits)) & mask; // the bits to copy from w to out + out[i] = out[i] + (t << (lsb - b - nbits)); + b += (uint8_t) nbits; + bits -= (uint8_t) nbits; + w &= ~(mask << bits); // not strictly necessary; mostly for debugging + + if (bits == 0) { + if (j < inlen) { + w = in[j]; + bits = 8; + j++; + } else { + break; // the input vector is exhausted + } + } + } + if (b == lsb) { // out[i] is filled in + i++; + } + } +} + + +void PQCLEAN_FRODOKEM976SHAKE_CLEAN_clear_bytes(uint8_t *mem, size_t n) { + // Clear 8-bit bytes from memory. "n" indicates the number of bytes to be zeroed. + // This function uses the volatile type qualifier to inform the compiler not to optimize out the memory clearing. + volatile uint8_t *v = mem; + + for (size_t i = 0; i < n; i++) { + v[i] = 0; + } +} diff --git a/src/kem/frodokem/util.c b/src/kem/frodokem/util.c deleted file mode 100644 index d7b3f6111..000000000 --- a/src/kem/frodokem/util.c +++ /dev/null @@ -1,104 +0,0 @@ -/******************************************************************************************** -* FrodoKEM: Learning with Errors Key Encapsulation -* -* Abstract: additional functions for FrodoKEM -*********************************************************************************************/ - -#include -#include - -#define min(x, y) (((x) < (y)) ? (x) : (y)) - -void oqs_kem_frodokem_pack(unsigned char *out, const size_t outlen, const uint16_t *in, const size_t inlen, const unsigned char lsb) { // Pack the input uint16 vector into a char output vector, copying lsb bits from each input element. - // If inlen * lsb / 8 > outlen, only outlen * 8 bits are copied. - memset(out, 0, outlen); - - size_t i = 0; // whole bytes already filled in - size_t j = 0; // whole uint16_t already copied - uint16_t w = 0; // the leftover, not yet copied - unsigned char bits = 0; // the number of lsb in w - - while (i < outlen && (j < inlen || ((j == inlen) && (bits > 0)))) { - /* - in: | | |********|********| - ^ - j - w : | ****| - ^ - bits - out:|**|**|**|**|**|**|**|**|* | - ^^ - ib - */ - unsigned char b = 0; // bits in out[i] already filled in - while (b < 8) { - int nbits = min(8 - b, bits); - uint16_t mask = (1 << nbits) - 1; - unsigned char t = (w >> (bits - nbits)) & mask; // the bits to copy from w to out - out[i] = out[i] + (t << (8 - b - nbits)); - b += nbits; - bits -= nbits; - w &= ~(mask << bits); // not strictly necessary; mostly for debugging - - if (bits == 0) { - if (j < inlen) { - w = in[j]; - bits = lsb; - j++; - } else { - break; // the input vector is exhausted - } - } - } - if (b == 8) { // out[i] is filled in - i++; - } - } -} - -void oqs_kem_frodokem_unpack(uint16_t *out, const size_t outlen, const unsigned char *in, const size_t inlen, const unsigned char lsb) { // Unpack the input char vector into a uint16_t output vector, copying lsb bits - // for each output element from input. outlen must be at least ceil(inlen * 8 / lsb). - memset(out, 0, outlen * sizeof(uint16_t)); - - size_t i = 0; // whole uint16_t already filled in - size_t j = 0; // whole bytes already copied - unsigned char w = 0; // the leftover, not yet copied - unsigned char bits = 0; // the number of lsb bits of w - - while (i < outlen && (j < inlen || ((j == inlen) && (bits > 0)))) { - /* - in: | | | | | | |**|**|... - ^ - j - w : | *| - ^ - bits - out:| *****| *****| *** | |... - ^ ^ - i b - */ - unsigned char b = 0; // bits in out[i] already filled in - while (b < lsb) { - int nbits = min(lsb - b, bits); - uint16_t mask = (1 << nbits) - 1; - unsigned char t = (w >> (bits - nbits)) & mask; // the bits to copy from w to out - out[i] = out[i] + (t << (lsb - b - nbits)); - b += nbits; - bits -= nbits; - w &= ~(mask << bits); // not strictly necessary; mostly for debugging - - if (bits == 0) { - if (j < inlen) { - w = in[j]; - bits = 8; - j++; - } else { - break; // the input vector is exhausted - } - } - } - if (b == lsb) { // out[i] is filled in - i++; - } - } -} diff --git a/src/kem/kem.c b/src/kem/kem.c index 5b4b5d170..897cec9a2 100644 --- a/src/kem/kem.c +++ b/src/kem/kem.c @@ -13,7 +13,7 @@ OQS_API const char *OQS_KEM_alg_identifier(size_t i) { const char *a[OQS_KEM_algs_length] = { OQS_KEM_alg_default, OQS_KEM_alg_bike1_l1, OQS_KEM_alg_bike1_l3, OQS_KEM_alg_bike1_l5, OQS_KEM_alg_bike2_l1, OQS_KEM_alg_bike2_l3, OQS_KEM_alg_bike2_l5, OQS_KEM_alg_bike3_l1, OQS_KEM_alg_bike3_l3, OQS_KEM_alg_bike3_l5, - OQS_KEM_alg_frodokem_640_aes, OQS_KEM_alg_frodokem_640_cshake, OQS_KEM_alg_frodokem_976_aes, OQS_KEM_alg_frodokem_976_cshake, + OQS_KEM_alg_frodokem_640_aes, OQS_KEM_alg_frodokem_640_shake, OQS_KEM_alg_frodokem_976_aes, OQS_KEM_alg_frodokem_976_shake, OQS_KEM_alg_frodokem_1344_aes, OQS_KEM_alg_frodokem_1344_shake, OQS_KEM_alg_newhope_512_cca_kem, OQS_KEM_alg_newhope_1024_cca_kem, OQS_KEM_alg_kyber_512_cca_kem, OQS_KEM_alg_kyber_768_cca_kem, OQS_KEM_alg_kyber_1024_cca_kem, OQS_KEM_alg_sidh_p503, OQS_KEM_alg_sidh_p751, @@ -95,9 +95,9 @@ OQS_API OQS_KEM *OQS_KEM_new(const char *method_name) { #else return NULL; #endif - } else if (0 == strcasecmp(method_name, OQS_KEM_alg_frodokem_640_cshake)) { -#ifdef OQS_ENABLE_KEM_frodokem_640_cshake - return OQS_KEM_frodokem_640_cshake_new(); + } else if (0 == strcasecmp(method_name, OQS_KEM_alg_frodokem_640_shake)) { +#ifdef OQS_ENABLE_KEM_frodokem_640_shake + return OQS_KEM_frodokem_640_shake_new(); #else return NULL; #endif @@ -107,9 +107,21 @@ OQS_API OQS_KEM *OQS_KEM_new(const char *method_name) { #else return NULL; #endif - } else if (0 == strcasecmp(method_name, OQS_KEM_alg_frodokem_976_cshake)) { -#ifdef OQS_ENABLE_KEM_frodokem_976_cshake - return OQS_KEM_frodokem_976_cshake_new(); + } else if (0 == strcasecmp(method_name, OQS_KEM_alg_frodokem_976_shake)) { +#ifdef OQS_ENABLE_KEM_frodokem_976_shake + return OQS_KEM_frodokem_976_shake_new(); +#else + return NULL; +#endif + } else if (0 == strcasecmp(method_name, OQS_KEM_alg_frodokem_1344_aes)) { +#ifdef OQS_ENABLE_KEM_frodokem_1344_aes + return OQS_KEM_frodokem_1344_aes_new(); +#else + return NULL; +#endif + } else if (0 == strcasecmp(method_name, OQS_KEM_alg_frodokem_1344_shake)) { +#ifdef OQS_ENABLE_KEM_frodokem_1344_shake + return OQS_KEM_frodokem_1344_shake_new(); #else return NULL; #endif diff --git a/src/kem/kem.h b/src/kem/kem.h index 077887faf..ae29ec205 100644 --- a/src/kem/kem.h +++ b/src/kem/kem.h @@ -47,12 +47,16 @@ #define OQS_KEM_alg_bike3_l5 "BIKE3-L5" /** Algorithm identifier for FrodoKEM-640-AES KEM. */ #define OQS_KEM_alg_frodokem_640_aes "FrodoKEM-640-AES" -/** Algorithm identifier for FrodoKEM-640-cSHAKE KEM. */ -#define OQS_KEM_alg_frodokem_640_cshake "FrodoKEM-640-cSHAKE" +/** Algorithm identifier for FrodoKEM-640-SHAKE KEM. */ +#define OQS_KEM_alg_frodokem_640_shake "FrodoKEM-640-SHAKE" /** Algorithm identifier for FrodoKEM-976-AES KEM. */ #define OQS_KEM_alg_frodokem_976_aes "FrodoKEM-976-AES" -/** Algorithm identifier for FrodoKEM-976-cSHAKE KEM. */ -#define OQS_KEM_alg_frodokem_976_cshake "FrodoKEM-976-cSHAKE" +/** Algorithm identifier for FrodoKEM-976-SHAKE KEM. */ +#define OQS_KEM_alg_frodokem_976_shake "FrodoKEM-976-SHAKE" +/** Algorithm identifier for FrodoKEM-1344-AES KEM. */ +#define OQS_KEM_alg_frodokem_1344_aes "FrodoKEM-1344-AES" +/** Algorithm identifier for FrodoKEM-1344-SHAKE KEM. */ +#define OQS_KEM_alg_frodokem_1344_shake "FrodoKEM-1344-SHAKE" /** Algorithm identifier for NewHope-512-CCA-KEM KEM. */ #define OQS_KEM_alg_newhope_512_cca_kem "NewHope-512-CCA-KEM" /** Algorithm identifier for NewHope-1024-CCA-KEM KEM. */ @@ -73,7 +77,7 @@ #define OQS_KEM_alg_sike_p751 "Sike-p751" // EDIT-WHEN-ADDING-KEM /** Number of algorithm identifiers above. */ -#define OQS_KEM_algs_length 23 +#define OQS_KEM_algs_length 25 /** The default KEM. */ #define OQS_KEM_DEFAULT OQS_KEM_alg_sike_p503 diff --git a/src/kem/newhopenist/NEWHOPE-1024CCA.Optimized.kat b/src/kem/newhopenist/NewHope-1024-CCA-KEM.Optimized.kat similarity index 100% rename from src/kem/newhopenist/NEWHOPE-1024CCA.Optimized.kat rename to src/kem/newhopenist/NewHope-1024-CCA-KEM.Optimized.kat diff --git a/src/kem/newhopenist/NEWHOPE-512CCA.Optimized.kat b/src/kem/newhopenist/NewHope-512-CCA-KEM.Optimized.kat similarity index 100% rename from src/kem/newhopenist/NEWHOPE-512CCA.Optimized.kat rename to src/kem/newhopenist/NewHope-512-CCA-KEM.Optimized.kat