ClanServer/eAmuseTest/Program.cs
2019-05-31 00:44:23 +02:00

170 lines
114 KiB
C#

using System;
using System.Text;
using System.Linq;
using System.Xml.Linq;
using System.Collections;
using System.Collections.Generic;
using eAmuseCore.Crypto;
using eAmuseCore.Compression;
using eAmuseCore.KBinXML;
namespace eAmuseTest
{
class Program
{
static void Main(string[] args)
{
string compress = "lz77";
string eamuse_info = "1-5cf04a27-11ad";
byte[] data = HexToBytes("0edfc1ed1f694c348e89fc765a153ff3b1ac012afccd4ca931dca737a3e60816197d466bb184ce6a8ca4c5515216a827326edb9aba6cdc63fe02fd4aaf52874654c47d1865d3c887181bc72c2750697774216d8bf6d21c7ec30a8ad6ccd2fc2f65063c6b8681a1541f22f54a2f3ecefc48e50b6516da426413b546511a6a622e155a9feaa278ef70de87a1a2802d4d4721a4d75a7617146c5a1f1da6e23ceaafce844baaea31966396bfd783944367416292142f4d1b111a51ea929db360243ed413064e7c6aecc218b6f9bc9e95e63f31c66926750af046f9d5013c0e170fb26009dc840f1c4d24ff1b20b9476824d4b6b252888ff0034163546c2fc2c5f6664d744374728ebfad6ba1c1abe543e8fa0952d906ff9d076b3a80e5b52d2acedbc046f3e9cf1b53043e6521dcd581510fdaad1ff02abe20ed7380b3a33919f116b8ebfe52ed336de560f99f6f8ab1c88dc131cfd3b868b7aed25a3a8964a0542d91b96a569dab5028c5dbbbf66d9fb2c8bb5862fe0886fad15ea7963d5e6461b5f7e16783f64d1c02953c02232279c4df58d4688274e02309a12cfda1237ba3fc1a42e74a9a541978a10537a3b8dcb161031232970a1dfa9c11db0e3f31828a829c2331ce806d6e2e97b4da19a2b4c08bfb33e5ebff5737c3250a9a32bd47eecf275405cf49ad5c3aeba49f6dc2891ff88734c845a1870f147d33a1d7da9d841f048d612e2416072eccd5fd4bc6b408d6dc7e5c4459adeb26db3dfdc8e216ed307fce0eadf800bb1faadb6eae2f2a5534845453b134593347568b3b4924fd153454062fe34050442c0070c0e2510cfd5bbc7ae0a5d2db08efb15ac916e6ae3fdf39177cd0412616da38064e1ca9404f2e3720335a078799e11165f09c0291ff530b028766ae7b503e50af66057d69a9fef79087d0203fe322d222703255bc0842ef48d9453a7be1369aa787e9cba9f7b83371fe2386980127f89c43750ade8d0270812d52a23f3f7afe5b496b47cf7082ca7cf342f29eace23c49cec0a5132455515f95a5d473f2a699debc16193e90a289e77a741e16a3694c6d0edd91c9caa2ae2c07b0c972c96bc6d2d9dfb860f690b6f6e80d731b00c0956557c8ebf2a853cfef596ad1db6b778d614fb5784d02b5de99c0ec601665e0e424a47d392e114dbd2943312d3d27afbc0ae366738a14da8f58a6f0ea390d31a06ed37a37814f7487abc7986d7e02e86a5ea2e5daad71040219114ce02f3a9a4d05079160f0bc0a60f09112698eb5f0c4cedba60d76c703d5f418e1d1a97e21f8445bf7880edcf61d845c0535b227eeed2e64c6f2859d2f440777ca5e8d3715c94914e4e26b5420006620e3df867e8e7064d87c20ddfefb1ff85d298847f4a93815350cf6627d097c123f69783cb9f2af3dc50f9278031669f1ab211dc80d25a26b06ec22717fd4a38a16efc7973bf702fa4e4a13b7b9a71126d1b4e4ce6c316d637c95bf5687d8354e949dacf7b3c5df899c7d17ca9e05ede4cf78d3b37023ba12ef58976f77d24df8b999364a53a6128f5532bd29dc4f36f41c173b4642dbe92a48916b6585399ac3cdcb8e773a2a23bcbc37e4f58059bb97b590a62a0b99c0ac7ceb2dd650271c2998bb3f25bd0ebfa99b1bdd09ec41692378d94bd17854e8d0f9c57c9648723fee8989540f9e7447be3a95a9902681797988a84a5d2f8773d1e3bf18f5fe270fd8faeb4cdbe123118f5495798124c86543704155927e177271067d087f94b1d1bd159b2ff6ecaf66e688373d152706ab3456c148960f9e35b5aecb4a6d976b9aff884f8a8ba2270896e0245b999190502580f6680e9652ab6ccb4753451ec7215a1b91217329f6423551f69d12034c4e69eef7625c7600c50498d5a91073af90c3c8810c180c7d45b3340e98aa755e21bdc6e65860ef0d15bc38d772693afa1e1ef0bd83de6540f57e73b6f87a86d8385eb4428ef5583930299ad7acc0ac9efe54e18c805a52a204574faa0abca3edc958bec60a10169fe158bceb5f1b4ca3953de95b9e9908e59d4cd3b3fe1a89c7ac5f444d0abb30ceb6a0d5bbf709d027c10ba18cdd0d0c83adbc4a16dc19ee7a37a70e20cb57f2c276e1e64cb979485167d93e14003ec338fde0799ab17f6c02a10d2e473291d8bebeb4d60fd07b54f3b4b2a762dfc583597ff5a3f9145b28fcea367eff0b11aebf1e00e86e50edb134412fc2e8d58a6060f939724687124dc2e07ae6098eb87ef1dca7b86290e3ae24cdde62cacc4b35e45fe532510089ba8dae92889b12edea3f29ab6d3293010a3ae856a8f83aef4deea77174847d6a7992ad087af7d4b1f9831b2e5a5704b44c130889522f516674941b3f63e0806a19e23e19e39baf7ad7d1cf267ee3a4c0fc52b488b3b8c98a34c3883e32d621f38ec50e62825d90bdd38dab7698cfcb4d31a0e9afbde02e4639bce4ee48c499b0cb514f56f3890b404115ad6bd5f30a895b1d8a3dc85bcad1d71f0c5cc34c3dbca5b362c71afe4604f4b60c32fbc2b976b8b1a2f1eab172397a838c5a19694e5d5e64cfa0eebd11ac3bf86240a923e84860bed97b27e6ed2ffd133db921e5873d6dbd3c2871a42780c9c3d29b61774a676686e62df115f0e122343ff47291cdbce048d2eeaa36ca0220f0d89b2297cec42d7d5d651d226e6e2d0867d468e1b1e129941290e6df184f6a6c0ec234d0882934e92a06e9e8d7490322f4b45480cd5a1b1f2eeb3403d5dd2815293bb0a9fbe325e2e732316df4df9e011808284772c3f252202362a25390e6cfddbe99e278861eef60eeca65dc12906c86b8cd815da76d25a8bb82e6068e7d7a8551a2528b9b73942820addfb3105a0c54d2d1f86fd3ecbd05f3e6879e43591475892672b26a2d8d26bab74dc81d46c84f29ad822fd0551cd29a42875cbaf8fd01cb745bce2de59266242b5ff5ba59702623c3a7c3e1b37a67721468172978f0321f9dc904f8d044b7a3549eeac16641ea36f741c7a39118bb904e4d5eb790c21da651c62c0c295d2f28a17fd25ecba4984abbc64afb1a3f6a7940e7ae8c660e38c02ac2b5c95cd494339137fa152aacbc0929e3338320ed17ff89599d98169aa36705cea227a107ed8a62f0a51f1e62d16f3bcd8bb14fef45c79c9604fc328c3b76e10d5236eef6846d54fd95be4af901ddc37606775ea46bbaab38a2775ac0fd863da00756cc7ea4114db16af37d544c04732ac31dc97e593b96ddfd1cfd39fc8459da85a6613f0bc91f696ee6907a7b7daf93af97e1e9f620ee336af84ea665d9bd87725f34202e2dcc981fd44dd16f5f2a1beafe9f838a030fe06d2e59eb7f14767dfbf0f721fe65e8a0575d4e511f268a79697b7cfab9c2a8a49ecb80b13382d79c910be951017bddd845594f3480e9155d63ac8bec42444f948746ab4205d78cc67542472c518c08f89da013f4f60729db1ac21d6808bf5aa3f532aa16031ec5770933999416b66e8317bd9d038f5c21f44a4a5e73c9b85b84061ec955893c690dfd65335a0e82d5a3659c4f9c9c48c18c22c323cf544a7c364116289a9dac259cb2156a3e8e4e107d0bb440815c2a161d6a8fa64cb77ff103225f8b6e4999839fac096b6d88d3ead2939ae70777396bb009345d58b03a0ba5e7ef9d5382e936752a64db00ba5b5db5cc3365609cf23bd3ba8504b3c84dc8f13e822d25050c08bfc3c512774f8ae3637b40739a96dda6d9780c33d09e9b2398b08e4966c56aa9932467a6f904eea89f34d5a8bcd89dade05fa8fbd4bb44b76f26cee378e41d9a00b68914ae5f91e2a353d5cb8aee54ab245d2b46c00aefb856a78bb9cbf8dbb9dc7526f530ace227f14f36567c52a305c264008502e42d3a29daf9c24aed0fab2be22fb63b4f8729ea766dc4e7edfa15f0e59af41b0a2561d535d42d6bb765913354b28af6fc441b008fd9df773e90d1b549601bd069548616852a407dcb87ef35863d9df136fc640519facbbab7cf5e9066f7f90160c8296bf90d3ab2d6cbe8d42e999dc7121b8f38cdd0e868031a9f1ad2448e73211f621eff78e8868e43d3d92ffda25f7ed70366bc03144e55c9556f58ef587eb183ba8eb228dbadf9c0fa12111d952d9a011efaf90e2eccae754635e7f40c4779ecf65caa626da0be3b673f620f3e523b2d659e3ed79f79716e2f6e57567c1ac06f1f3f0ddd1bbc83be4e3ce086d5b2376470646344a75aa5e46daaefd4f883c5664d721ed3c4332c37e794a0d8476e81ca2983f3bdb1a3be79d7573ab1d6ee1aa90062b36a5a91b0fb1d8f3f81574072e272788599430f31ae94de2f61db0c932d0ddca366df7b59c48fd0ebe6b766af969950788b0caa350cde69eb4c352d19da74615e83ccefd810e0c11cefcbef0b0dcda4d649d65a3a57bc0549deb39781ddf914a72236b4cd4626dddd344941f3dbe21461d0efa0883b2daf64e1fb8e9a71d49dc13aa8a1a3d168bb9412a040a9929499083dad52b8c0fe45d6638fb6f77d0410f6906f9302fc9bb699407f017cec28b9b945fed66bcfd843bbf01422f54c113b6d8c4f2e411e5b393c848377e3d9aedea9ec1f7bebf384db7cd22a0039cf2434e36a51bf7b502b398dbbb4baaaaae54ed207cf5cfbe656e1d2c491e1bf6e20fc95e4a7e07aaa7f1bf3c3d4edfa82e33a3e8816d49a7d4116dbada5e6c713c06acddecb1efb3ad8d630e3df3b8bf50fae9b45444a2259ead5bb2869a04d018da9a0f4491bd100896fa51a78d2665cc61f025873dbfb9d8d50dd1d3aa57bbee3bcb2129da501c9d9ba6a5513925370baf2afe1a375bedf59e4a8044e679a5a3dd699ccb3d525510b2205bf008310dc25a70c3dd2008771ed5cea2c0390f4a055cf4dbd4f7ca447031f3cd4df9728c51f272e602107142425eea1864be796a0d676a251f27a30446180acd93b939cdae5c3042cc576538cd0a034f9bd185b2c120d730148bf20b1d9a592e19a187ca92e3bf902dd2cea02400697182a34b7637dad545154dfd747929aafaf85c26143ebaace4bb793f618efd3131389805b86d30040f6f5d6f578b67f09d53528b5ac61e03a59f6b56629470207d7db835f8da4694a7512b6d62018c3703aae94313dd7f6c8fd0e1a8757feae00ff1406814310134ab4196b6592864e54be08b6cad62123be2d11e810350d324410043c174c77255a3bff744268b5113e13c802db8c0bc8e922f0af0bf9b3ef1e81b86e0f6ffc5cdb3dc43b0fe07b3062fdb126065053cf6cd2bd3672e49fa928de7174c4dfcd6e516134f1306ef97d48286d6d9d7c2205bebeb627b564a77ddf0fecfb4bc5a96849cd27871a9aed848d905e842750fdafef4a2fa00676b60b06f633f2a20d4b5fa2d0a302e5e323373fb8da0530dcfbd032cc5e27c636a287d9932fa3e60b4669261da1cfeaabc65989cc02987ad84dbac1904c06d724452bbda23e83c3590ba9bd76dbdda41abf203cfffa35a2c86d1882ce3b0c16244ad0f6d20e3708d8f3194be685a3d73cf467ef076b37c3d0bd98365b76d049c0ff0e64922833dff1708649211b10fac5798273ff1aa44904404ad656f19eb9a238bb47c4c498d3f59689eae7dd6720e74fb881347b2ce9bbf328f4ad989363d73e6e340ef307961aa98cf8e65c04231c4da6bd79d2ddafc3dc40735a5f3fd8c3c7e6456d3f71f7313d5740ec978f2a9136a8f51b5cfe4bab424179312062c69ef19c8ebdff6d93f9178221a17d5b38755d192fbf3a2f9b21f226f9096fc22710023bc1dc57e926a49cc5ac6de66ee5cbb6894d62a7ac42eae1c9a9b8bac86e0a7b90515c3199bb59697482430d6447d02b95424579ace41e570a6778dc667c43c86aebd0f1fe3eaf4ba94b9fa1e010a6914470bc1ccaabc74abc2db532d48d5fd7ce95779975e8794ee5129ad8f15e9c73884a91785f48af47beb45e13d871974e8fa109ce4e5098e5400408f5b7d75179514919e6538fb0f2c17c6ac5513f1942646e7db85ff052bf61ce027aa44077a95ba8854c2cc2b30be5abdef1882ae418f05ea4eddf32093b68946cf4baf3f51f51e23d4c478ac512c6e045b463c1267bc94d1c1dd57c224f1295431fea537f38a7ac8b523cf19a6ea3d13ccd75ca718e5a6a8895c669fe59933e24469c2bed7b5ea35ddfb5cbe3a2aa4f1d2f559f3a75e53dd04fe0906bd537749fc451db2fe9698dea9c057ab04dc09738e5920efb60f915b105d6857d190971d2b72dbea6677067c76f1eae8a636c236b7358bda12e21dd9a1fc9697f162f77e6ad88e8b0f523eca6252162eb13a9af845af7aa9d1cdde03fcc82d6b74565123d13dcf600f45932f142095bce7964e5022ccc61f62d7adab7451587f13cdfaa60c92e3413bd122423634662954682d939e2fd1deaf62d30f5fc7a610ac7a715179a29154a8fcfcf050bf5f3406bf8747165d5beaf537698d1d694d1af117e9e61101d50ffe634f56a7902c6a929fcc4c90fb01d9b771622a5c4ff5a3e03f7ea0bc4952b54f825a0b75d18fe27bb1586bb73df42181cebc118592917fa4d531f3e6e180c44fc77cda53034c78981d6907b4c600b7aa521e8378a1627c24d014e908e8bdad772d63b7df8fc26a8bae9221ff1cadbb65c6aaf2e2fe3f612bdbc0a6b07bd0820ad7bd335a464cca1656cc2e9965d23293fe9752b0302fee7b555b972ac0f19c2ffe61c490148d8206f03a692671f266ec9d6953de85f1ca9f4d6e118bce3ea4e9fdd48b3e88193d9796cebb42121d23afc4e12efc8402a0f13315bb6c395eaf9b8b2b800c4a71f888fd2590262194ab97cb8a74958974ae280ada85149e7e815221fb740c1efa4e9c29da1a0810ce5e78bedaf25ac248b39881018c70b9f4bfb09602b4739a9d4ac63f532dc0909c41dccb0d98b6fec6b1a892e725f29191be9f55ab3ae9c0e4edaa491438cba16368d577ade635f6bd3037f1a49161271172b4ab5102fa7cc56ce1f0dfb0a23bd04be5bf488d95c0ec9476e1bec3f14b1ebbd7b0e01bf9957ec046215fe47abcd44614b992caf06dd13745eb63e7b9b9c2aa400de115e595f6236e1fc3b71bb3a3f3b5e351315283dcae9b44575a3f849c3745bcf84a916e0f77f82981c7ee91de04ac0e44d624f3a1922e2ea8169cbde1be05668a94b457336aa2ccb96c3b70b2abccd3e77dd0dfec3cea4b50b1d812dc8d31d5958e0e8ed54979c7ad460b231103df9be0307d55e7678d816d9da8f344655b7ee0998b08b57bc6ba02a205a6d7afc56336118cfafc5626d7f6471e50a0de4220f4b0a856d06c1e11e71ca576e87f51297a916558fc0c89e5c09d5625e93ee76c1e0f9a1a8b698d5cd9cbbb92f80c31e46fb68f16322360712edb4bf6e51ded9cf03c56121edf8a5e359d5a3183e5fe4991fd478656b39bfeeecb8b062934c8fb3e298caeba34fb5fcf8dc910457ff3b0fda120e00f135a508d0a090e6a748ce39384030984aa0bbcfc5c13bb6b499ba01f39298709fcd6ffff7b790547a0335f512a9dc71466c96995e922fd3d3bf32ae7450b4513b725df258080bd5b84ba5a15ddeee91b073ddf30a9be81f3d982b3c0c3c49dacabde58e59ae4cd6fa941a6ba19009bc71387911258b1b63945ec9a72040b179f8273737a591d13e873b5636a3a0492bff9640eeb8ef5506393685f8c5cc27d0bbea62de279138fe85ae9f5d794689bd2d1d14d7da09a96a7b50bdd5885874a071acdebb7ac90450bf835efbef539f5cd25c69e98c195910c0eee8f4345d746ff506a75fb0770e19b685c50abf920935797def331b8e3fcb8d5b6b05f3c95aa62f39515f1d74f74f2ee8cbf2897671fa53e97bc2de24517a6bb2c582d7ed3416aa6565f28c152de8e6412c798f195282d1c259f01136ba5cb58ceaa96491028a994d7cd402206946d04aab47642ee2dfff0bc0c7aca0a1a80feff8aaef055085e7304b0d26761675954f5d8af85e7d906e1ea4ac16ac520a1dc6dcbab2229820479643590223efe44f47506eca805c17ecd3dc31faac4ba550f07822301bed8e928d08450cf9aa614b967c4c32289d37b3148d128d0cac0434b501623a2852ab4ef070bc187bf60630721d0f0bd1c48a85e095853a8ec3dc1425c64abb0128b24bd52609e27d038ab6e21eebdd2b702d38059a51e61f6609c65a067fab0f440bbdc105589fb2c9de86a16d8be055a4b2301bf01a026c62a63488e35e3638ece064786a828fb6081cdda366582ed9a1d0d59f2a8a8e0feb59eaa8a6af82d0a1393e1e1fb3bf141b0119f39223b5ec6dbf30f93c28cf8ea6ed15c7081d5bcc2dac2f40564a2fe0cb279017204e3b821ae66fb4c7f2efc5d2a0aac7318d88d1df104d5d82238a3dacc77ec08c53295532be8eb1edef1b4af6d0404d1b0cd2516274a6343a298c0b4f21057adddaa577f00c0f89143ec2fb82cc72a67f5394b3a845e57f1b40a892dab9da30dff7b751e21b970e235cacef87c5ef6deb4ac5ec6c565fc8ff84f0f750726802fe71d38d708d65872755f380745fad7e5da648a4f12a4d66ba7828b7d14bd3ed8287d7d26f94aac532c264006fedd041236e19229315079f3532a452d9fca7018c7b16c18034c9e78683b04c5768abae8cb78c2e571c6e03fd715425f6ad73195ed78838e004a09d6134485f4a591c9e18fa656d3d9cceb87c78bf5ec89808c306ce379dad09354bf8ee660c8e4f38478f9027f4ecd41da7acb4fc0c363368e30baaaf56b9447d7acc31e0587ad00fd02cb0c1a3b3ff6f4d76dc9e512a52d16d3e4ddab40d2e2accd041533d9c9155f2f8ab9618810bd761ae5ad9b16d26942dad5788f0d24f3fcc7f9bd7bf210e82e207df46ab4a912fd3ec464d2eaadc845f585f31c92fdb38432e6f3b9082386a9845bbbeb76c0453747b0c258d04a40059339ddba7dd8a653c541c4f68bc9bbe38637b8a3a1d9793203faf8c6c771cc3aae0aed87ef5b92f643fa7c8366437f897f088b1e8d1d8622a7d4a527185d0879268b08dec759a606660b39e4f584fd9a54e353910e296b14eac659bf20e78413e459d8449ecd652e3a9609881db37d1afa911bdedf9d18279e7753fa64ceb885ef87ddbb14ce8ab10849fd2f951aaa1b9857fba1d1e72ab0569c8e5d3afcaa4ba32206e2d34d7664a06df3d80ea4bd530ae5f3db5c17db56bb348cb381bb96a042354036dec2608c7dec64709ecce579f23ec735ad3ac2a9e0daeb36eeba7cb2a58fab00a21240a09702a3b3b860ac96133f3ed95462f693af26d9376ecdcccc5e6dd6f393891d6522cf6e196c7f7a5a92306bd1b5f151a8ac7e3eca6478b12efb7693a9ecffa98999ecf7101b0ba0d13e53e8e79a23c2e2b2379d4874ee2a3f1d8195a076147469685f5a867baeedfb8e20c8bfd0d3173c0d040b625ad4f8efa237e9153be18619e57399b9ca7db67dea3cae7a8b3ded27bc17821ee16ddb13ed1a995835e1157409cd895004b889d3c4fd69904c458b2746b097cecadcc9f7fd3bd6d20d54e5fa5057af08ef6f0821f77487b5520fbd83bf6af28ae45ce05acf1f378dda167fda739a3289f268078155cb1e7a2c6be0df32d47d812d7a61bd10dfb71d7df1580a19c348fd8be342ce9196c2b5c84632538906e22bc91f283a235e78f12ec07146731dacee0bfca9f4042d2ad5abadc7095da6ab664675340a9141784073f2072781e854545b9bab09fa2bfbb98d69d50b6e82306eabb8652d2263694b4cfa2dcc6b5b17fe5714325d2b56a9ac8e8f28710935996dd94125d1f4c5fe61b4465e60f7a0f8a70b29c2152af0f4d2cce744024f9797124ecb6e9ad8d3b42debabbd64fe13c289a695036843f2837f925d151240aa57ba8c9e6becadf49be13d43edd8846d582964855cdf794bcd689a9dfd5ba15b9cc43ca3a373b91ae95a130401ee8368f90213a3c2faa9cdefe6c44558bd5ee07999e2d7d19b1d0bdddbe5699a45d2df77bf392ac37a70947aa628c1c54e832cd6830e8a85eccc678d1a11faaa5eec0a8faac7e91376a7693ad3f078acd457a2bdbb3922b068e2bfc5bc93356fce0c865d8c1fdeae1844529639da9ba6358d8989841658064d342ad10675841c11fbf7a94991d2613d4b3bec39cd18b860aa55b7a06560488df687b21686c4fec458f55ffaea53980f44a9e8181ecd0912aec08569b245759a4a0b751066697fe59a1e1dc24641e9b462899e5ed5492522d5e0addb5ef04f082fc28099fe1dffcb6ab284a2bbabea87ab41102d5503c46bb31fa135aa47232e1352ad7113a17ccd21579beb000ed978207feee3d54fcef965910fcd635b8006ac1b0e0f0a8a9660aac61d0dec27d74b2ada21cd17f361f8562c06c8c60d4586751df95323bc947abe4213bcfd380eb53d961f1565c18667c19ae1a676d885f70f5d8cf888aaa50d8c64d95f4ade34787c2702b095dc894bbd732729446a358594c85e84120d6ff3084f83a3c2d968cb5c93634fe51996379f8d45b203e3f4970a03616630fb8ec8e91e73c6fbc16f654319991bc541baf8b038aa305bdf6c4eca843376cfa57d1e4c01ea89c5d14a0cc045097176cfeb833cf533d6f2e38d90941cbe90433c1fa75e9dc7a135e09f02baa420aa6134f8149caa2b574067834cc88868f28f91505e01ec953bff54dd70ff5971e01d3070d772283e370b45313d7e6aa1d0424b0d71923c02e3d9226a1311634eb3129a11dc60bc81a36c09be5b44807fd7e033b98ba658b3654933c58a6705b3c9a521fd6a09e2dddd355fec96cdd22fbb6bf6b8607c60f0a6ab30fdb0ce59579d894bca10d7090472c57d148af4729f4575d7510c2d89905dc1c7b4e4d9066a9f4d74ecccecf8175edeb88e601c2ce2d186ef98397b79c024bdbe871b934f7546fd980bec05b1b71019a5f48c9640bbfecafc427c58498a7756f2c18160613f46c5125c09ce547b699dfc7ce7123a3d3eb07233f4f6984ffb520f37fc5a5ca7a2612fecbfd5964d4c459aeddfb5abd80112d31d3bd8875ffd7d13c95e2bf964bc5474c689ab93bcf70129685273dee8f9961459bf7473a0af8584ee4487783d3d2937fdb22566513abefe060e50a121107604f993ef3a59440a33d4e185b587314a1ff242d7a2ee66eaabc1af57aa803eb2afefe40197edbafd2cbd391ac85fbd3410d70ec61dac975cdd2d293a116bd6b0c8c63c0363849ec44ad636e71dcc7802f59bc73e84a7cc5c9d90ed429ed7e990e20eb65d874725c1aed9335915ce93234ff224aa03a9b23b2ee3d918819cafee4f794ff5196bf987481b510c92c8de4860ddf300ee84d0d91a8a907087edfdeda15f956b0334a81a1b2b085212be5bb64040cf2a51f0f9d6e54b9b8fb2f819d49df119094a141e82731c3bec9349abdf299b19f7eb8d7303854acb0001e4dda09b8465104a7a8bac62bc251f9fc24a6b7d90a2b53517a86ae692d5d8a06ea4300786ddad3a37a9dc6b6d0cb0e3d40dd6a12e6ab1498a59d3b409e81d775424a2931dc9606767a8a34388bc4c58194f587ca4712703a56e6ac37871995f9da9bdefc099c88fd7a646888268761c2b638fa9f9f18c47be24141abf336c8e5d11670813fba82cf250897ef4eb80e888a333a3354d48e9614c77e4e6c3fe9bd8261380ae61a887b698932bb5bd2c9e2ce7b9cb811848c349b3949d82fc5e9f6deea281a604d3c008c1b4d1cd8343382f040ea95e83a5799d039357f19e5189a63e51a4fd2a3c7ca085dc9bf8e8440d09a925d3368efcd5a40a9235cdb0248a46fc479fa73523584365df1e069e5de4536d91c90e1717ec3a47d6eae12ac87e6a608a0b9bcec33caddeacc90864263eb89e641f1bcc5c8ee629a97b704518c8cd18e7f0b51997f61b6d183000fe768d76884c8a752993fe3537f76907ba8283f943ac32d2dcf941f8632c71c406d26bcf54bb2fc64dad9b627349c9c6b9a1b6dc4207dca174b565c4ebca61a0a65359e44cf3ec7a582297169d47bab350949d3a5ca99d9913a8ce22b966f76d09aee41cb8c765bf73d5a2586028377b0435361baedbe534ec6825def74ebbc3d353f3975f2536bcdb3efee4bcb3031fa9fede6f658a9d8f633810800c743add164a62a5801178d3d39eca521ef9746594e2164e42119c2f617adf738a9d0b26bc48addf4a458bbf5b795e49679d6f74cdb4c23fef9f189d3cdbc89663b83801c2ab97b225de658d355c2eca1d626592e2d751dedebbcf77cae7def5f3067611ce9f4fc94fbb2fb1d1e083fee725f20aa6b5349220202b40786d4105645e969504545ec22a83391e74672baf08a25f02638f817c2ed0b2da7b63e51b38376649cffd9b6cff86a14f4b9ffacfeffd35495be86826f128c9fc1ab39abb91cbc0648d583b0eed3ae8e1a94ef2df5b32934171eaa9f16db37f80cb726fb75dcb96239fca1c4209f39473e4760d4abd14b2b7808ce29b7c732b0479229b1bf51a50f03e7a838e8cb9ea2dda1e402bd25584e660d605ef810f1d00570e053d82815b51d09a3b6f0b04e1411eec229038a7f30a42cf83bda69502cf73f39e1f03a7d2006c7e1ccdfa6272821922719212ddeb3442f8f9cf793f4d412ad59813c1c9bf32d1666d3d199c7659b188e225b74c93316d5687c661f6946b4fb61991419b87271ae841bc2b3617f112840fd7328f7f156a1c63e13a00e593649024438f702680c6f5fe5b123998708faa8eb6b001f46b30582d2392cca03329d3a8000bd1e7485c665bcb03d76b19f5dd50bfe4357cc781b39baeb0bf2daa9c601d256b6dbb38df47f7223c62d9f1928119c8c414c2e5f8c051794442c20b2891c5db5ef65a6ac605abb9e1b7550fe67e26c0bb0b9679109f3c3f4a96e4981ba9e3abb6389fa094da00faf0d4de9e6073585e36d1fb189dfe2fcde6da4f66278abc05c60c05abca907908897f86095957e28750322d281ca2d6ef4b71655c56581b6f461e9961a669d8dfc9c01c32b06e65c3d30876da274eafae7015234dc67792ccb24201acd8930808ef2f0becc968dba18ab8de226a3da2166a9165f0670359d96c7ef3a79f2bbd37d9c41260a66c62430b943cc4120d17a21b3fc5ccf9e768fdb33588e460b6ec704a85b8b51f3f54040ac350854ef230e9c79af09ea9f0295e0b49cb5ed402f203514d04488e41569d7e16587b71caf28ae303b4ea8d4d26adc959c95ed103fe21ce83cfe3645bb8b4e0e9ea155ddc009aa5f3dccd33efdd766f49edc033d68bc035215bc39a18ea49115a032b32a2d2a78b9164febd94918d42a6e10936cae9ae66f6fe6888118827acafbb64e3ca72c30280c37b6441d412053c4ac504a3849d4e4b3df32a1cd56b8376e142e12f14a56a67bbfd78fb53751b40d00db561daacdf81e09af4a3d7b51c1e4b077fe13d1d59797ac2baa93e9db2802828e107c57cfe88529b1cc19347cfdfa6b8640afac8b65a46698356e7fb183121a1f1c11523330d20bdf3516f16f32d4177bc09e0eddb4e03ad96b82199de796ce1b1997ff0fde37d68b31fe9197e71a0225a0fa3ede9b3d5172b850b10935ea190e0618376af7d19aa2c9d504389c790aca2e9a4a37cae91c839de2b555d5cf4964f0f49ecdbe6f8d1d813643847df635cb5b62b37759b3cbee7d0adaf4ef4d9c4086b3672ed61321042a79f630aaafe78850c44ef6b6596c186391cbabd7b844afbd83fae898572d97f134f2493a725de558fba767d1253c6dc6a87889bdb9b3e776d0d1495f07057a2a68c22a470022594095b12135aefe900dc27d2ea787d4781ce466e27459d35bbf4a753876f68ad6af9418b7e932d569c9389a3645711ebc09bf22cc7aa2463c7f4ae6d229170192b39be4f7487f9e052ab82e5328f831151385ec1369333dff78eb465118f6d6b3665a425c02ebc7ce67fb25986c1b6a9a1f6c95b9d0e23624a7b4edb24f339445192ae7ff7e73464c14fa0c46fdfc02c44cdd1b65f51f974f80669769e078be177541612db7b18817e9ec510aaf8aade0e2a4b4c9cc316ec09cf2c92067e42a93db3874480de55ec3fc5e0b97575a03e60912bc8915261d3cd9fd8f6e0a73dc3649fc26ab58c70c08008acfebac2aa4b8829622651a4044e095d33cbd19218c211b2e3f0e07fcc8c3b1c08acb67d0b59c23b9950d8bc5ae723cc5bbe524fdab487c9e0798f3e5a2a08752d4b153a6545d09624f84972eb77a88c9a29e1f04e230f4f515547d30a1b4302b41857dccf06d33b0d2acbc568a17f8c31940f78740fe3de0a82d890b10f26b6cc450a19e507a05dbd36190ccfb51f71ea41a0869065a521c0710ceca39f0a37a66d2b29f85f377418a9dd1b5776b6cbe775519ae4427a8ad533f1e52b23e7dd4b9c2c4d434bda6e6dcb363e2a72a958879f44f8cda039c8c72d3c60277bdcaa583ae31dd06b72f68eef430f773aad9ee18641c4d8de8f2c21baa3af0225cf5ebd3794faef46b51bf74983f1eb8a2fef82ea5ea09499c0a1c66e1f57784f6ad9dae94fc208a2d01a1b7c1417531df03abe76303e0bcc9ed865af4152f33750ea76b6aabe73748bf29d8b0eb02e1ed4eb7769b6b0da3229537c00bcb1f16f562d21705b7db981da8316b8fee665625a864c1f439a73b0029c72c98cd2a27be80b115083171ac22b86b9df819532ddd8b7919bc3c9f54c544dfbd642ef99c2b2a37d72ecbc92b5d78d48fb35771cf3d6c62236a60978fafc42e5332cd4d24189c6b0374cab24878b1676833032348590f8b86dd931bb17fbb639ea902358bb39cb445e8ba761db4979ca9981e4118e5b1cb7a176f020707df821c866b0def4d78be356a74f8a1ac9fe72e549a5a24e820ad6f9895f960fcf8057117651422c2f1196ea987f42a4849bb1fee43b44f45a54956c5f63cf41b9d170347c10df6fff385a97b4ad0a9fef74af3811af244b54c48b2ddaa1e954ba8c7d5f4437393085e4c9032180612bcebc01321b34135bab041ce29c540da4510cc1c1cc715076b81b9d1c507e794188758973cb148fe941d0140e58cdf44fc80e000c99a31e48d84f10e4200fd2973c9177b76a80bfc7ee2fe4660557d9090e44ebe9f0a8878564f4a3738bb14aa8e58d373fb39df4525aae5891a6b61e05685a24abd32b0b924bf0e0810cbbfdb2b677a7bfc891ba82e285a8c70974a08bee8461acdc1e540d2589d83edea49c65453a7d3ed6e5e07fdd9fe51f6f8d2762a970f9d170ff8c74fe0f8acdb47dd0a402e95311b47df7271dc959ccf553a6fb93f3cfaa577cb0860b88a640a2212a4e919f28d42a9a10eeb67fa2858c61bdef4999b97be93fdfff7cf50de046f4b8b95964c3950bcb03cfa50e6c4a399807442b9e3968d97c97895164033813c66635d797ab57017b9ff63dbed1f725f79bb2e8241caa2930ef77586f0204ce7d403d8f91ce983dea1a0f6991fbead46ba0b718abfa1024fc2e755ebf87964f92f746d56b5c7cfce31e3c7a0b184f3471959509bbce64848a3a9477eb7a946862b32eac9dc6b9272908b2d39e4f0adecc21b2b3ff79c943381557b3b6c034323472cb334283636f065056ce6cdd3dc251f26dff988f35cbfe7a90b9b2c92bf359a56d3d1a8ededd2d37398d291d9e0b5630449ab6e0f1a7b096f508914b64b5056185926c2829af4d8ec124c06ad02f314e0b609b440afbbc9333ffb070d5407e3677a9693902eb00b3706197bb1569ddf697200f00773c586b9155c1d779cb0751dc2c171ab4e76d0ce09017fed68790f674022e90c75d0865a7e5fab76d40ada26a660d5943744e8ab1c40600c171cae4b2ae652cf108a620b5688f9137fd967731997c19132850a8b377f7c93f372bbd9c3cd26deb08c9c29fcd30ffd0654127dbaa5c8d5376aeeb1e1060914f3b6b5181124dfa5e9760931643c69a231d09034b3006bed10a4a2c928691a88ffb2324948d229bbdb2a16b98b5c7751c406ed673770d24932576ef4261d97169c5ad268e90253727504748b5772c013787e654e532c5a9dbb4087cca4eae21e1eaf617cc0397bf873a9569629763d5ccfdc791a1fcea0abb6c8fb23cf592590d39cb0dfd69c61f1f22e72b1dc0065275bf9d2feecc8559f29b8bf8a741f8f112ed7ec2ef104415bad76382b259ac1c0ec049a1795e63b4d07ed906c7e7df0cbf983a2f5f1f2d2ec85bfe13f1c5c452429c4d4f12b49731559bfcaff395cb1e52e4cc3c59ea120acb87ad6e0afd5225e086d27ee1c1cca89b92414b23a1bea9666ddab521f4869855808c88165316be172d05a47b7eac32f241d7450123f4df882e94115d3cd9997a682de31dc432f1d29444141ef49a0d81c8c54609aff9edc264ba8df0bade00afa8eed896778d88980af4dcca3df9ac9fac8dad475e2bfdd3d47364ddc6faf1fe8c54bf7d978cee549dc22755562f1dc6425132c39336b638229c3d999377d03729cbdbc66ecf72128a87c7dff0339397a1b1831305fd54220ba2f37d58dcefee8564f8f30cad5b82f0c2f9591d4508f4be551123b589362b5f589bf6d5e2502bd6f43079395c6943f4b507f0b6ba59eaef7a77d9fa2ab1f637ff854b8a47240a5ac8d6f7ea4f87f7ee6db897660cc4ebff0fa8a2d785521115b902ede6e11d7979b58f96ef02744bb141959f0dc2f2e670cb656f9971663d4e3bb4e48216dbc15165b2472cc0ec4f11ab236096d60c0c45183232b7ffe646d10596dde954076664111c01452afef9236d019f3ceabf8ec56d9458ea8f033d524ea3737b87a45e2af6aa150b3600cfbfb2a2a08fd8aa710f5acba36953500f527074307a6e0f6decf789cd081f4d29e2c9836c627c23932448ac6aa3abd9cda35cdc16d246ce61a7bbb26528386c8d6c38d9aae4bd59a26d0dd6e066a6cfabff8fb264dc418b4373552dcf8fb0aadceecc88dbc933f469ee63694922fab71c1980d0bb5f03a6c290059bae1680696a654e4c7685d8c090b0dfdad2a4d299ad30b1a57ad6002c896279ba1c080ae3625fe76635e43f32a1fb32d6eca0af2eba28d5990c311d57d41c050bb7db2e8d5434f57fd5443e3464cd98b66fa339a52d4e6f4cbf8958bb24bc10ac9e727d41036392a1df41af4846affdefe0f188c7dda653c60327943f0b40df7244fbd6d55b54d688685217f57a776b6a7c440bd81d78a30f0ab78fb3539b05095fda856bb417abf67f7821064d18581df7051f70351f6e63165a04f61af0ea3783af5fa847bc664899fda145eeedfd7cd2b957375d7ecc9a3765a25b3afeb47bf3c81a1ebd0b12acbe6752a895276379407112db599ca87484dd665c3c778b80a8d50bde441ccf0b3b527149bf9c8b959709b961ec8b34170139148d5dc4bfe6513d401d0348c30dd96639984b9071f55ecaf98e8af16a77f75dacbf4ecf218dd89aaddbf58433736e4006030eaaeae7523cc4d4637b35eeb87ba91215e33da84103e3331596563861826d48657be8cb9ecfbc26fbf0422beb9609b71f5134c61d1e8ed1d2346ab97520e3c53970b676fa7aadd7329652eef21a466b304b47079ffbc40f68bd577b08b5f72dd4aca16bc6d58a1679bcf0744e42c6f34d3808a0ab0e7e796efaea1d2bd3e9d5ad12f160958100b051572039bf5f015cda335b499d8492116166b1c25b0b910db36061e4d4872fb4b33d75c6aa3076049869650fb33e19c4262327bf24f59b2358f893599faece169a8de41da77c37479339b58efed9e180cb27213f0cdd39d1442de4f3115a851bb71e08457a23c43e24de7f2421f72611de6417873f42c0b00f4a862da92e27db736246499621c82fee08a4269259a9c201fd154100ae9c7bcbef829ff982f5b151ba1e8d4b7f009870489332c05c26d434921fba4f162c47681d5986f656659a5c054e3ab26af64a493d36205142e2b78f2fb894bbfd4feb3a45c3d01bc847da3c51b75b936de574e657c584550b51e2b65070e5dbccf6008963e1109a59056d5c2d29c33d821ee8db41d19cb78d7979ffeef797e4b25036ba48fa80bba6d2e2e36cfd68cd7da2e82d630a17adac8bd902018496354851bb72fc9c6ae1675f229c2a4b9302e131e4a84d39c3d9378022dbf3265e07396c8e24d90699d64379c179c195e3f4e76c0430c5dd304a5a0ad0d2068edd0ef7566dd354475a0c9fb4988c57c716a3b953ea51840946b84a972b9e23ba59af7066b0e6dddea0a48805b6902074b497e9580511513769880db5df4015aff588a56c73a2cc4bda0b313eab86e9d18e449f17efacd8f58d2b34b7df247494b1d35e007b85a6fe4c453b7f2d35e9b836880de4b2e889cffb8ff04ab0770116e87be5d40945f02ef577907352661445bf3244039b4dcf771c5ec98e8ae53bd0eba691ead63087cf5d6864798cdde8c522d13ba432f406b3963cb7793d160389bd80a56e5db2a152278bc2ddabe0bfcd8b0509abbde8d0f031647202de5e1a9eb0b61ba1e6129245ec63848448ef4c8505cd2a52fb2b64df3493ac1db393b6884332f55321be8c20f5851c785b3431a83b3ad35165452d93f7402d4772231a0d207773ecbb0412c33d03dc8379388728e1ccafa8fb3b5ce52bb6e8521c18c3cb371ed4b504e7ba77555b8914ff179edd0ef0c10ac28ba38c611ad894f0698fdae3c10f2ff24a1df385c3533cd5adfcf0f76b8e109f5c12243a508f3238ab02b730c7d4e9f14809d119cf8d59b233a350ae2b260b5ecc37c72c21fd29269461217c003183d5c5f0aa5d970bb54ee58bf9ad473155c3a5a0f06333af8065c6eb37ca0cf0fa22e98563277c9ee40e123103f7616d25c993af8ee2344b6d38fd4d26259aa1e756ff2cf10ff3d6578d23f44e76a39831b9757569b148402576823167479e8bde5111e776c4ad27ee55b2bd4d7ec841be3d6b51087d844cd168e1e1b55ec91a2270a1f4abd2ad4bd5a25af8014c68bc586ae9f68c38370495f6c3288f9ddf64ac6148c4d5ed63f0f9799611307b2caa31ad5390ea188e5742160d409e239e98ecb8e2d5bc98732c1d7fbf6d7434114dff811789fef3c661dfdf4938bec743cb3ce7ad0a4f026987972d4c04754c0070e5b5c59f58633047bf7eb281807be9d901967aa28993da3f3db98a2e28b3a26a9036dab4b5589399881ee4e97f7b7cc5cf46749d1cbda63a2ae7ff17d627c75dd0ca1065e23b3f98f5733de030b619d6724d84d025055306965c164b69ddb3280b84c74b4ef6c96ccab0e8b596070f3fd57f1699bdcb2e234047674c7899706a5f6059961cd66ba3086e9c09285651f4c0a0582548c506454ec4ea464a6c0e9ec43973f0064d56f4e94dabf598b14b4da25b2005039beb6e4876126130e2171d77dbba39019c91893e380378111557761a49e6f9874ee186f9705e041acacaca61b70701ca6fc464267c2d5ca120548dfaeeb801bcb985f0fb5f461ad72ac6d5ca62da5723bb358af0fb86b6f9536861c2cc005f74d908e30ca5bf3db6c67d9bf5bda6e76c1411212c515de2d0c086382f462d88c21e068bac699f7dde19c808e81574ce707e3bb35f53d1826d9125e429c369d060daa20cbcd4c6927e265b71d221992eff62c37447874457f0dedb677d7d4b9cbaee6d0532f31ea0b66fac3e088b38cc61f20a9abde35f34e515fe085098997e4b2066f8241aacc2ea1b53f0ac2232faaeeaeab928c6f3ed9c89b2aef47e9e2429c815060c0b673895d5da08aa00d62603b88c584fc3d3359d4351a7b3d73e228a4b4a636e735453e29856e3a1fb17ed692a3e328915fd590107c1656ade9e892a1af1ef81c1a2723a108f3b50bdfb0895c69aac384cd4374a7f165bf0518aa10a50d78200816b76f67301cef106e27a6910d8b1ca289e50b94b2d4bbd838ff8d12a7c7bf0ad90b942b87524eb71e9a45c98231c3edec7709c3505641c1bda80f2e461df5df16b453225c45a52a3c990719204c4710d3bad80c883404e8a53c3c45177255bd94016b3c8e27f5b66d2318b62a19d00fa4f5bb646b42e830c7412622a75fdb0cb43f7374febb1272cea281cee1b679a0703cbb7fb69a1e1a2a8aa68f5060694acb25fbec0e49a6b722c86118b79a1304f24804b5f1469eedd9d4f017fa0ed68ddca0d8ecf33bfe4aa6328c3b1c1a96483e5727669c7d73fbb96a6954e8ab5c8c961a6efae087e4a997f814be1deeabb859f9ea834bc837b9045a2ce8ce9949114f377e093bc538031ba56daed975c3f99e3df74896bd5691d338905d10810d614528744a5a3903d87c7c61c08b8cad52ab09d14e2c4867bd0e4fb615c866dc6a7ffeba08ad3bb2619fbb8ea45fb8080c48fd7cb6d4ec11e0a48fbe66de5870aebdb5836b90753f06c90ae517d6b9868b935bf67a23fc678dbfe6ea858044f937c60b381606f3a2500b2b154fc8de122de1f1e2963bda3e03f616e02bce9cfca75becbeae94b1d8e0c720fc1ba0a807a848dbe945729ee4914b85ef95c8852dcbbbbe1a2da35202ff35a13510ef807b19634f7617a3f99227c8e023dac7e469cb8fe563df0f87bafad7091a8ee4277199243a57b7c9710b08551cbf69b6bf2465ad753024b9febfdb17b7e24942a8b9cb9c3f4fceddb7b8427bc29fa27852a7fc0161f2ea9b24d76c80799fd296e4ab01468dca7574685c6bc80379a2e1b7cb49b6be7262918fe0b82a56f8631c2cc84c32cb6cdba8f4119822a0b259f565f4cecd733cf779348eafc7eb2baa03f2b0106340411e4441d77f9ba916877d456a2d02b3f841695fbfb5ccb1756c55e4d94ebd17b633dc968e28beb0a52d92df56440772d10da25057ba7bf47f6707e0e22529116ca9ac0a65771a178c5724adfdfc60cfbe332c86df6311bc590e45afa920d49868ade215e48b2c7e719db05451faff05c22e13bf0369c0c33b43495d60bad997411d63146c051f19df0a11235e8e342112e632fb10d9a2629b10f8eec4a7b5c4935b254800678eb07075e372d076da87391ceb312f0cb5ea23d67f2244193d5c7a32362b6e0d644ab11533e1e08ff3f01c74b6ca8f89383e46792a896ba42e939be96a5fda4dd4e383191e699ea7dd8d175179ee87c28eda45c92492e8036652263d1987bbb5001e9b6a3d2c3e9bfe7daaaf289b5fa194b36cd3c0e3f3644edb258c7d27b2c5329eb2febab8927af31f50f465f71183f02a1e8876b7c6aae3503e19efe63f2746a1a6faa89744a79241e651ea99a7e9f0e32eaa803fd1326f2d303a7a31024aa585a0a614a20bb9ce67fb2a2c8348759a237076e2ae8eaf2095f856fad9ebdbdeff63e33d241162ee4f3a30d71da00455b445022909e557f5cd648f544a86d6db129208db3619b1a812242178f29640e05e521e4b29e9397711f6bdfee6f87f15c81a2eb58f293bf46f8a488bcd77ad0ce50f1a8c20bd58dc02c5e4a7c908187af775809d05766c512368474e749aae7163dcad7f21a129f4c912049e6e5ff382194f088bd28fa1dd45709355fbeaec78eb87206796b37ed3403689f6f8bf04b4ac910517b12e91a8c30ac8c184eec320bd195d0751e78e37e13fa730799bd18b80ef76bd88e59c8c3a101faa43c165817fc071c4068e15b4f760d69827a72b85c4ec68c5e6278cbbc5d86cb2c4868850c4d539d3ab30dbbdf3edce99331634404cd26c4926ad3caa4a7a17a0a8dc5f53481320fcee5460fb28de8316af3f38446801e77bd63b0a511ad5a9a315878268acefa159cd8d27b8826f5785513c4540d79a99476c83de3f3d49065fe1798e7c046ab35cc9f24a33159a88dd58f115d02cc90b3e6382443ff26e9848589aeebc1f31ef355b48e0338099caa665944611733aac9732855e3c22c9343682160cfe976d96f2fe880ab8941b00f4fe3ff41242b6bec869cfa73ce1afa58a90d8007a6ab52b8471e379196a99ebe62698d979a34362a2f9b6f072072431ba2780f2b0e9ebb4aca4ab032c9aa512d4670033d2440e5e8905963b9858e52053cd12056d33e55ae0297ad65ba60bea4c7fde5dacd95e14e739be5629b3c6c17efbc073f1d27bfca825480327d47c2f98f10bafaa114b66ca61cf6384fabad1dccd288433b92ec395d4e5777b66031b18ae55645798d7b385633de77fada31ffbebff41631da73175303e6247a4fff9ff25b3e21ad7568fccb1c5a3c6e99ed69d3446e7a74e4a7b328ffb1f4a9ea449cda2b612b01da996e94c8b71c5e565f5cb8464876c3c1391969d28a1770c12027c265bd74affba9768e7dc1140678fe38095967bcb8e098dececdd7c7988baa8bebbdc20e8edafc0141f548af7d5ca7697a995a23cd06b88e03227bf1ed180ab1c124d2e7d57195f28a610de7cc405746e8f6c3dcdeb99013e960c183e862a2e9ef0dbd5da8f14f14b5c1a698eaefabf5fb961f4e41de0c20e897fb3358a4a987fd465f0b60f670da4e0bbb3cb9db492acb165643afb93dc0da6abcfae6d3562ae618b3c21a8daaa31de087ab82d7addc7998f3c68d28d38aa00b5a73833b022475d030b9ab78b0b6f1dd5fe7b1ff51a3e2932b958ce7f863429abb4e9ba9e2e34a15b9eb3fb5ec01fb312c9d0e3cfe0d8047767971bda9bcb228cb103f40548c4e5c4e66548cb1aa23c00300f0acb31e529db5144873457add6516dd567dedd4d7f455cd344346f522cc8dea50187a8bd60a287c344e2b2611d6ab8c7e69b7bfec4395216389ac98320e152930c34d49a845a450bf6d338710f2851a192b4c48edbf5e667fca2ff51d6ad8fa793b5df9d3a2603118f1d49585e578122aaab44f715a39350a52450e67a3712a42f4dbb483c287c277f222ece9a8d44e04f95d7832569690b28541c7a1d5bb424eb414fd3b6bb33e611485eea978bd73ab37df02c29342236852f7648b0bbaf6236014d066f9e95b9a450d5bf1a4dd123d45f19ed52a9c42c17c6e38750daec9eebc1c323a6087ab453476d06e596e2c981512b8c6c00ed12fbd5595849a9a96c7c42997b21d5a5380975e2b63be04ffd441f3c265f031343dc0095d22cc41cf7634f8dcb93beb5937ee691a89aa2664e389e40a8b1ded3eb18ae2247ca1cac20114ab00ba237fc9cab73d6d8954df97c9c45571f178ecce0b2bda5e3d104ae3852accc74f93246fd4d75b9b89289d18c712033c41e3492c60cea1849642adc0993f1e0d8b4d1a4fa990edee6405fc74b498210e4c3ea526c8ded80d92ff10f391965324e838c966e65e8c4d2bb081bd93c911968bd18450239711199db3dfb9afd4e396183f44370927d5e151421a471c97f2751b74975731fa3995a209ec73243dd8e94252111ef23100b2ede44790cca2bec791a9f79dc91dcc7b11da16cec259df769f23ec3188bc7d27e864b7c52847802598ebef7f43efe383b18d3571e718bc6b355ba8b7b785b565c37518460450e60e597fc31fe8b3e253721dd52e7622147f5063d2bc6f0863de66940ef121a99ccce5bc07559ab2903fc185f49930b8658c90d46e5cafcee305e04fe840cb0307af68fac8658908a937c5a0d355f0ee1f397ccde2a47678990e4344261abc97192400503689bb755dae998c664a84408683ea84bef8fcf4ad5073cabae981a81b874fa567a340d9da8c8019f2007834812cb48ebd881d641c366d3b5b094e2bc87405493579f445c1ddafdb2ab2c9956905be21a1af09f70addd0aefc9df3cc73b77f3a72527352d85e8a92d638e528c8f52813618e0faf572612a341d8f794c404b49d33b5e8d643bdb1d06a1a8c17b14a26fd823f93d1b68d2a73faf70fbf6701b959d96fd0692ffc63a79f5ee5843a3d09f83f2a8b81dd2e9a39bd7678aed925b21748d8cbcc1dc729a654813793857af2879072338ac6755a2094547aeff13795a1de0211d61703d3433011c1869b3eceed59219f725e2aec5b460bf354d2fa37c1b7ef2e35da67b10a9f8fd0a36aa06bd7ad11acca762a50e5f1c0226082d72f137f564f8caf9e164998d2ca61abe6a61ccbbedcfed8a6203b647baa43985d12d0e33682078bbd6b888834e9fedb47c817332640315c32af8bd3f251b22974b234e8092ea8f26e95ff3b3dec2246f682f123ec81f34b3732dd70f3a9b3ecfae63504a98a705ea051e5225ea085271d1f41a3ab2a27627df62d32a291e793afa24e940711ab7f8549d60bcfb8e5b19b89bf5d2a9a35cf79c5baac833bdd35e86efa69520476ecdf71b50e186f3a9404ce9e9a2e5692bd6172e90eb6bbfbe59b47bc0818cbfcbeb42e3d7da3d791b346cc9226511b091fb3e02c3a3e26948e0c09fff55c6c78abdb9583273f2376c1dbba9215d04a37838ff20825b7dd63760f61b07660d33f220ec1b91a78bd299f79e1a6bb6671711e8d2370eba8f2fcfc75b1c57501785ad284ab9258b2e837cf688404f5fc810a6e5d93fc3688e53cf3e2a4c8d8b02a31677a14cdebd95412d50f0b215195da8b39cb646551698e25bba3cc1ae8909353c702b97c078a5346a6069c2bf0285d01a0c203b1e68991083bae48bc691e58e8b5926342c9dc6c8ec8b548713533b36089b2d018ed4eb87f5914dfa1c5490b8e75476cd770fe0d17132ca37fd814c58aba6002c2a9b47cdbac22e81c19d920d57a59596e38c02418965333cea127b382655d2171cb7482b0c29e25e225c27858647b0e693c9e58e1bfcbfa3cdbf16236e1b7bf81a7e02c036bce65919560b963df016109a7f18e6aa83a387852cac3b5e4d3d857cf05d2e1a75ea7a2f4bbfb1b958efbd52f44d72ffca93b94fa94c486b0aab7d6a45e0e839b6075a94f1471289461518bb783a7a591ab80476b63a5155fa037dfc8e8e779724071f7853da78212c8f866e4df276a88a02b98816b37767306be52145615882de2fe784b40a79cf20683fc340a18409c9dd8a291ab71ce6fcfb1bbfa60bcef60b929770721eb0e5c670f57db78487c3a236c43c15542e5a6aee36c2d4d0aa179e971ab2d4369c0f9880c04e63f47001c3870f1734d7444b9353455e061018cd0ac12ef82aee1ec324f4da473388b1a5cd666edb9ee50005b02ec573dc1a5b869a1079bbb40358361db218272984896942272fb6d131ab2f4afe05ad703fbc6bc4576f3058d382a99c3b7aeb165026f02ac3b5aad3b56ded62c40012e8d730bfd9fb0290996aae05d113945340ddd6a607d7a57726350f36783dca9b16df4583f678ea792d6a5c23855151179b2958353f531d82b03a15ff7471ada387b3aad16c72f1086d590cf4c6ce6256c86e8e13a3f8750c918ffd41475b1faa15500c7c1b6edba60b298a998fa26fef5d37c40333494e6346d13c1bd54af680c87278f9828077d5d889d22d29c8d604ab9d6e631d835768d37cc91294faddd8992ff862bb5ed3328da3b9f4f01d48f31a95775dacdf448d99cd8b5b86b9c2df2e600e5f21870e480abed7fe00bc1d9f91ae1cde51a10c6ee2c1677374c0b778dc06066f83a2b2bc0aa9c1be6156cc593e1c2bd9a0e2d1620023418a51b47fd8c8ac5fb601654da8b8f4f4eb645811c12034ecff6ef1032e20bf6ed2b6be49266c4c8a4807a1d1e72f2c2250c01c9b615b1a541aec33dd6494a4a380239a32b288407f83a3f9ffc6936c20d65dcbd61509876aacbd0b3ea4f56b93bf4e57e4246eed14ec1f492fc68528481efcd849f282492102f4af8a99f6e8307d25a0c82568aadb90d693b99f490b15510803802d92f3bb3431666fa05f248fc2a1a41aee6184620fa2a387c0fa1ed95874f84136c9bf99aa83f8b4620bf7b2ea16c3cc8380976d215f27d7ef1897fe9409368ad53952db452c3a71a5fc2c6b539b98a010f7a1c1cf90e25862b5d0b817d4b5d0f586616451122da50b383bdae7aeb3b217dd4ff5e36b5947875cc3770acbf6f04e41075e1eb473568f075698e6f15ab099654ec3eb3f6ced1c7a8ab3b307bbd5f7a661767bfa65f71c8e209c9e19af7372f0505c5bd444640d56893bf4c8977b3e750dc293754d6eb76fb2e7d0969ff956570173df761bd2633d89376e180a1e88b608a2540d88b87d638a92e7bb18ca9416b3a7921e84d9646e8154accc7b7ba1ec8765cf40349a047c6f9f57c90d6abf59a048d1d7e8dc8d10f221547c0d84c208423610dce9867f11500752ac1c1d0322bae4eb725e867d7be5824b51ab4b0aac5e6314634614a5599e396f3ebb9ba8c83ba9bf6f90f5bfde76787769352a3cc2ec45f3e60d369516d35ce24c243f4a2fc66eb3f05f69ec5d1cb2a64e68b2644d85b4b037638152c61d128551041d633d045008d8efcf385eca396a36086453266754e826b90cadf695a7c033c34a4d1f6226dffd7d349261ea1605d8f53838b422eeaa7f31c5dbc2ad568faa7db7e0f281b49d469006db69a85805ca9187057dfb50c029478fc7425300507663fe7be1a43ff08179f7d76bc0e5cd4d76aa9bbb41b02f8a358bc303c6891f0b08fc70b7dd725c1f372e91318b546908b3080449c7848356522bb1e535663f80e57e37eb1b2d7084fb95d71c3fbfe9f28d6390fa90bad44c73d2223c1a634dd71ca93f6b126992d92222a220e71b5b12f8272190fd6625a7d76c0f1781bdf8b28be8e9d0b4214d423a8c74a780863589a5fc49bdaa0e03682e0a90593a370b7451d6b0fa5d0f6867affd506d99b14ecd40bd7850e508620b6106b88cd684e51549bcd359355a113db04dece108c704686f3323b1be0d0c7beccf3a9de3087145cc4ef96ae9d6b23a34d2a1594eddbceb38379790ec6b46f17e42a620cb543e48eb0cce8ef032733ce774ef0bb7fa103a8fff80f9db0a2ba615dfcb9c82383ee8a1058f0ab2a9d21aa98fc6d2432a34a4dfb8a850ab87980bb961450b77ed71d477747d1c6a8ccbf94a45dd1838797906bd8d0deac7429183beeb14d0bc8ec8214f1a79e7be227f02c705d5841bb855fc64c8140088538d09b072f995de4e718488783e156fa72f12529aa67542f29966163b4fe3666bee1a320ab49d48a07536598a1b0726e3b13d2ddb6d79e5c10dff4f9e419831d7604ed659e7ed61da842a7935d060ff7ccd1137b0de657dea628788740228be0884aa2084d5caaa6988d8158bc36317da6beb9efc9fe7cc033d7993714300fe98867fd3550f38f7a4945dcc793bafb94209ec1aa0654066506f3e40b1af121f4707440d7ae1e81ab29c1caa74dd6044744afe627f69bc98fdd4383eae454cbd801dfc30e768e9bc2ac4fecc1859783a0cd4bb4ea8da411affa46d8d074cc7a927d911d93c5089993124c8e62a930ab82cba926fb544f634da64a89f621c5f9183f36619dab8d8557a7404bfafe4129e242c66ae83fd7dcd525b594641a5ef5218647bcc294112da85fb65826f3dbf91586a2f096e2a185bb91f6ed1ee5504f7d1ae11347cc5bae0f83a6763adcfabb918d58c908086fca3a07ec0842710d403eb9f0daf0a76835472eff8d0d476144f17e8cf4f698fb945f540f8301b7b3aac2688a38f0a48ef20e15eacbf0962ee645abaffb153f3760f34c8e2b9ad06270d20947c663b73c2d3b060ba6c1edd00106d9541353c9df548d8b95ed1bdc292bfa069abd4feaa802077ee0ca1153fbe6df547c3499b08dea820ab9877b2820a6c13c796d48c7e41762d528795cae5690177878484bfe92bb0e7001c61e97a6b62aa97df12e0394fde2d5f135410263bbae96078cc4a40c272ec30a5ef829d5062715a8add8a383265d6c905a439fb04117a49f572a87e41de3e62c2094e8806a73ad930ad38538bb7d892f2ed747ba9463a2be02e4d1a6135ecf4d074d7b495846b10e65d2ad6d5d13a17007fe08af7956bc43d1d1b1bc1cbc29d0200c0cba36efa74c7a62c4af85dc610aae23d08623d4c2424c669978a0fefadbc45c1ddf94da11abda44716e36bd7ba9e6c15232eb505c4be422b9ef576a1882fda9e5f5940ce59b523a3586a67f6c9febc5487efb0bb5251a2497c09eaa0a3580f6c46b639f2476f1dd0ee3c23f2703de23d3235e70d70a08f6d0f46d06ed0a9d225d69f19a12d5739f1e55a814d331f3e666bd2f4e0dcbf89f4bf7c932d152e212889c7cb403ea63b3c7e60b53b691e7584d0712d7e61717638cd708672ee27101dd913c5322e20fae23e2f92a252266ab40d857676675fbad6246744fc256da2df6823b2fe48af07c2442ea4cfca7ea4c380c7dff69cdd3306b4fadc2187f4547cff73b5a18f7390dd0a9e3246256a301a34d2d70c7a08d8057a8c50f29101167b13c70ff27edea0d4943f5c29ce8c1facf8eac13d022cda8eaa19ae68c44a098d04f63b98b3f20d07d3cbff59dc0bbac5ce494ace826b9a92d107f15d2771cb654aeb293bad06c1415c00f5c5039b4e2448f75ebd5418724a2c3dee177d405080394853da61bbe32e99360d78a402f9967e716d8b037106672a41e144d2ac617908f3f545a528706dad7a61ec0da0c0a0174a6e0e73f678473def507b1c12f1f0d406b737d446a5251773104e2759ffc59668baab2c949b746a3a7b434878356385fb7b1c1dfa64f08bd139887cde01fdc7ec42bf44805cf1b9032a53371741e155d83e10550b5c3d1720b4d428c6e99fab081027f59f93bf5b90d10c5d007b92c3c98da60d9d5565b4aacc7ade096a79a038170bc270e70b257d7a7eed57d750178324030a7078facbf9522ad33037b18fb96658278fae397061975bac2497291a6d35884d24091c5df89a41b937970e6e6db603c22ba26e350ec8dfe0880c02bd0755fdb3f19c4d7ed57f07ea4042319304ed994b174dcafec396045f29e4da48874f84184848a29d810d6fe57b1a8affbee4b68906a0f01b35598fcb11affccf65604e72e1f34b98fd943ecbf63df606993a308438e872cadec3d86566b0f30ee4b9665334b8e6c4828ac8ace55f57da943216126d44a53ac8193fdbd7a1c1672dfd6414339a318df82cf6343070d436916a8b873197467206c88740257ea68268523593cee52c6b8bc431f947aa2a38d328bc63fde1d862224be22353223f7750e295d701b7e72fa61bb5523a2e3151868f3e8b3da920f8691946c3a43c6643997a971ef16a72387cf11a214d2bff67e577452e240d616cd06c34791800027d989ae177cae11f667ff282dec5b0a59aef1e0667907402ee03605c5b3ed1022d8323fe46fc78760e11978993392877cf9d807fcd7324d191e8da512a5025b2aa5611a7b5918532b9b61ace6ad5d49926906de1e0c0bfd38fbd1aee35a6a94b868365185fa028d833b85f1888953838233e3d7d4ad5f25a455f3406d08553c13a07e978f146910dee2d75bb93073f88fd530e961f4de208ce25e5810a544d4e33379da0f66fd07bb7a02f835c33eca7d5c7782c02eb091c05832b4c7e034423f68c05fc4e54f61331b4086a7f40b8a2d1f71d895ec640b42bef36c1cfaa77ec12d971a58dceebf3a678b0ef8434ff126b5eb219325d69812a5fd7a8645dee2ba23bdda43fee5e7824d7be67ae1df46d9f356dfef18c5a7de673831ddef61f7debfe1aa11db30302f2de799b08a33f4647fe5bc669e41b12326d9d3679931e654fb1d8d18b307e0d3d439461a2230cf2f8c8cb65cf876c004d005feb13476da89386c770bc6cf6cedfe645ac14acacde1adcdd002bbcd214cc82306e3e5d8673ac43ea00ce667ecb7e2a892207d6f8030b2b7a1583500d8e16f81db09728e4b2e294601cece3d5ceacad1ae1a637bd4651a60e39fe48bad66c8d7b93fd3ba36b272a22ab0a0ea1bff9b9b0aaee6caf280f12baa8746e2cb31f137c08c914df2dd97411dea240c991eaf4c687844884fd228874b14bdfae0ec020a54b7759c5f828bab467e56dd867d284c7c5d1ff18648c158fd25167313ac8fca5b0369d4876a1def47d9a0586006ed63761b8103a1ab386a7810b4a89772bd3108eb84b3e5c9afd0120d0292e21f05739d6d776f00debe021e2949d7a141c1da4899024f49c272d2ea1689c39d8839abb7ca848bc8a9ae63e129b9252bb60f1709b6206683f701cfffac6e4911ae877a92f07b46fecc70d4cd9faf073f7efda605fefc21ac614e2133d5b32c96db13613db40706409d6734df671b68dd27b7d2bfbfb6a0262c10e1790a2f8590a08fc7b23b2a5819c86e4ce7f2124b2289d26f4321e9de0059d22fbb300f3317068441bc37d333df299d56ee89c93ac5b1584d570f7056eaee4452d8b239f6ac396c2d739052ab63abe80857e801ef6a62895ec84a4e2092f56b8f1845c7d194c2255b1dfec933a09542b1005e2a1bfa6b698b39e5449d402edfb4b3dd29ec1875d200dd09aaa71efc1e53ae753849139f1e59e5cb5bb3cbcfe2223fe76233ad4c9a15baf5c7c6a4603a0f3e91f41d52df95e242c47997f77a0ccb8cb3c09d7991ea38079f2be02ecc21011f79b1954dede1566f2025827f8f8fedcab6c1a60253137aa3cfdd05f901c3d1d16fc791ace0f85160cd66228c63fde7d9cb022d98d3fe29dc731c1ff56a3756129e25073e28f95ac1abcd81be9141b8691fb659d31f18f7f35bbc6918ee94e208084e4f5abe34508f89e1fefe6f7a5d4029a39d7133886a94ff36a7adcd4c3356442692050f5620e5ebcf4ebe2d0e7d988121e11617a6848b7f1a3b1ddfbdc53c1ec1de76296e916e928ad133145bbec07d764dac6f10871e8e473517e7bede41da9ed742d893e3977f144d44ca7bb4b4c8a30f236811779283798c4e8987b5157f1f0c7cacd1bfdeb82e4e8649a9a1e13ba74c3bb1c2a11bbe4cc545a42c22806aef5581b997e784e96a3689e930910ce2a7a53a19dadb8e07bdc92f5cbf6d90454e7f02805fccd46ec7eb86f179e31e96b723ffa87401ed057b8b50e237e1f1d294ba9bbbb0ffbfe3d116d5f9150a576df88ecef446ba93289350d613c89e2acdef56d3ecc816e805ef443958b3900a1c3e0509bde9a31455630264fb7cbb383bff806dfd617063e8c77819f9f1083033a3656e2ebba125d0290498418bc1f18d0dd0c7e919276a9fa0b33a9048aa262711e445612c3482572bd2117b79f1e6919fe88b78e4200b7f533a1bb69f5de3f579d9b6ac9cfce1b135b9fb43dbd2e81e061be3881ee33d8c25f99ca87a4cab4ecaf5511cd1000538c5ee3a04df14f5eb6932b35619d526c315324373dbabc4e259651000f91cc33d577fa734027974b7500b9f13862ebb2d204ec4442a68dc7ade48f2dd7318ee5bce5ad03b3599ed72cd001bec9641274792060fc31ef85bda46222563e7fd187afed25b94183182520264ba6e382ee721936d3a596d8978a5b88508d657079df227b132fcadab51b04980c8e64b4520f4e25fc04e25d3602504b5dd22eb7e8700e09fd436f3fcc511ad6c97d329af7668b85fdef04c2fcd02b70f65f458b8f57c0befdc99307963df8033a169adc0eb4f0afff87bced3ef927e1384b8a2833590cffc56dae7c04096781b5b9c0bbee0caeed0715ebe72e27bbeec817387b0dc387af620567a652b5793a9c71d986f429b03098b8499355f6682a73a3303bf90ab4772aca783f1db936a4ada8feed6e0a304a05e0c33a691adaf1b7dad0842d4dc6dd55f30daef05dcb6d215fef42c8c985468ddf88852ed47af7c2fb114a19d463c4200dcfd864e454850283991e1a089fdff2afbd1821c098dd258db6cca4f0cb4b423b4a0d6f392c28f34d378b009072dcbb4b487883f1d72b9a7f8f9e537531d334b3a22c88586be2bdb9a0864d868c41efcd3800ec1ef55b425fa9ccced776994a40b093b32fe9a35030cd9a5af12b70dfd6d8c12a1085f92114156499997a1270a37573338972be3af6c94769c34f4776cee68a8dfdea107ca3f461e036841e801f114e41681bbb5118e41fe978afa804eabf46c7249781dd8b568e40415a3e8b33e7b206aa0903b39f73df9e0623c249b384a65642081381ba9757a0e1eacc2ec4fd0495d82ef371e96235468f07a00e6d05ef215061fc7d66125da9c8a898d1b7eb4f5f65d7570df6e8bd6ddc0f3525f8ee69fe0b94898a7ed96b74fed0e81668d3f76a77327eb5fd55490dc98db843661e2f6dce262531b047afb93d12702fdf032d6bb893258fda58557c77252c79aa49304fde8a61c1c1a2af61a3d3885b9c407fb0e533f0d884415d718a7d922fd83f52a6fb68e37f22081648b711c77d077767f162ff9b6b42b9e47fd0fcb76fb9735a96ee838ac9bf5e61b6e2ba5f6a1e2aad9f8beae9c178b9632b4998502e75b6ee2cd0c812dd62fa21b39cac7035d96b776e6cd28f00f0efdb1801f59f969a1b98f0902c73a333f3ab91cce1f02fa50261f5962c770e6e012deb7413774dfe93039bbdd383276cda2b2b72a24e4eca3b4a0c911a02c6b624c727e2c6751b606f23184d2d7879b2f22ac810f72b2ef3eeb52c77ad88fe36608cc8ea80d2c508c1bb1c07116f364ef7ec22eab98ccd710999c3d20bdc234eb18e41d76ef9415ae8354e18e3a8daf300232f6e9946a8d24e5254a25be2e9d8ae2d42e1b9e1bc7368dbe9ba2eb40abd9fc55de22ca9d83c157b7a613f7ed348ab0016b5a96585b0ebdf77f8b89665978b7c1ff692987de538f4e43f4ea791585df1fd3768d7bd73cf9e9675d397f3c19de67c48bf9a2d3b9195b462ab2413357f8c0da470f1115a07388660230f18f696ac74e36c19db0f3134a1c4e4c2c62b62eb53f32e7b1d5ae9e01ca4eb020241da9971e3cfec614905dcdea3554067974dba53bc1c0bc876fc82a8a0addad417c14ba42f0fd4031bde8be37ef50ae9801f0887a0f7ed66c4d49642e77a0e739105a134e91eb5ebb446edb71e3ae2be3e7de16c87f6aa750ff9529d771219b4f7aea6c9d80cbdc2cdfef7e75d266141a10324082dd185ef99a6e7fe1a2466841aa47071f733b041ecf38322de4299e9fa05faca80a2b4ba0357379812d9dabec8ba1f22322cb15b604a2cde9a09a07d3f45620ed9b1738384bfa7a3af5f1b1df0ff3e9994b69fb01f0b55798f10c2d2677fa8eea60f6bcda7482de5f8cacc0efdbe025c20c4ff9277de824154973353bc8f5787a710611f9a890977fa62d5ceabbdcbbcc536325bf3db3d2948965e5d38567102d7539c1bed5b2406f3ea947262c3c6ea823668bfaab0f1157939c6a05b8f70066a96beaeec99adc863881fc9a925313946bd635d6128826c86680766b225c48a3c1318ef1c995e4f5bf348ea6fd80a3cefa10da9c0670fadd712fddfa44d363967fc7c9feb0e1bc910c0e2ada3f1a9a22acfbfb1ee896fc6737e98ecba094dbdc2325e104aaf444086042943012002639c51930a8ba5233d33c8c988aad1071ff6df7674bb328f5301704b54125c5130bc06e813e906f8a3c4e5662bdcd3139496652788c0440bcc58d6d2ca19604f42f77a983d66330f52f83ebfcd09f3ffa5023127db221f753f4d1cb825d4b6624df2d42b4fb2ef0f569a1325b3873c668784988a98a5491e182341cd23ed70a201edd23adc654a8ad3f90b09983ee27c982edc6c159eb236b2847b675caba055ed5b206644c751b64d6d370fbc6b094f7c6899bb6414a566c1879cf43d56884c8c8de789f4071eb54f06fd864a182c84c3e4233f525c23ee4b7f017887bf711104c848125dac13a219cd24eb1dd3e451a4998c5342f4556f6ac862a9d5348156a7495a4ba304997396e63c4fdb801ecf6649145b2eed42237ab2de642aaf7338b921cc73c77c0e6d93f22e23781cf09ad31a57559188769ca688210849370185ebfcadbb1b89ff7a55887b9536183438edf9b72e58ac09e71cab916306384557692cce77cee781a0ad7d48e12ebafb86fa27522fd13b451e36fb76d294995cc235fc711b2f38f0042237b204a40923ecdfa5a4167661e68149eaab9b0155b0c8ad9049f8dca8f41b39f6ea7a9d8e0b499bdfcd656cd6ae2e49b6d45a60d3cefcba165533b9e574c22f6a029467cdd9a244595b183505c172c95723bc5350c3584b04f4ff9484a0991a85a746a33cf01dd88a34c0dd4c10595f10ed1247e5934a894e0b2ae12fb30c8e89f8bc12baa06b12977133fb96a104a67a065dff6894198a3e4bdf2736bd1e548f5cf45db7844ff3a4d17e1ca3051fadad13379f4f0ab293ff99381d8a74570c3680e72637a4a0f76ecb771f881bfe58e40f2252559c56f4f93128be8f411b72542115e399ee4799caba99dcfd52ecdf773f157c6bdefeb27c9a74a2a0493c8bc51a54bbc028add6d295fd6a2ad4153d390e7d188a36b4de0781c363be49e1b3d710a15784cd393bc1e4e01b12a37f44c171923836ef6a7302bd2ed3dd40b4f3bdbee2e11d860ab3c7528ce67cced512feec554b0a976a8c198864174f1019c6704172e71a53334af53b910609db57e304345830e2698a4f69d7eefefea8620e98e986b6ec26c3133002c379dd98f58cbd7544710448e82339aa8601af22828e41b04cb825dade4c5aa63952755d268213794e1e5a6267485b58148503a26ff325e03ddcc35c8a60c01aaf2b993c157d8c1b72dffb9e2028f16563fa83663af07a4bc8ad7ede95e6ffa47cb80711edb079a0b78fbd51c2aec63d561c0a97b83fa3270479949a1e3d4a467cec9a70bc084d8e69d7f63dc78b065473435de70b804cc50810e5ac87fe4e0941ecddb292806789ca3e0f7f139216f805aef407ace58ad537f1953e5125ef7ab08af658437e60148b3e41f70fbc0a1bdebbc4c8d6ed09ff00b8c1ea55938b0127fca5fb5de58ccb7b4c40c0c8be3e9197fd3acc64e48e5d451b2629233a5189f4afb0b4f27ee2ae1522eb7eade0db056f2b1afb69463751dccc9e69cab8a01b5bd47be2e73aa5819cbad8a02e65e85c5f53ef83b77bb94a3b0efd213e457e0e0dafd0ce09f1623ed72fbe8812ea0f112e37906c0b0fdcd3365d3174967a23a6dbaca6196e67e5425257fed199e80b212a9e88b54e7b8b8526669d86bdb0e863cf3f288abb4eed18d026d89be0068e7fd728f4114031bfcab1bf386a76f1ba2cecdcf23d7431e7d6edb203a87f203c7dab7fc637cb3f845b6f334c248d5a824d658bce8a0065d67155094ed332016d926fbd984f893e60370b9c62ba32ab866c64087c136018c095f9eb3e4c0be35275b23b185d6627e931512018308fda2eb3d88626c0e04c11894476b4dd6199b49bd4912f8cb33d16876056097d6b918ee8393d9b97ab09caf696cacaa919d2e77ea432bd1dcaf7ced2c43c14ee3b8427478faa1f371deeb3d05fbe575e7dab33b1a9cd671a51a6220d86df2bc9108f1659035f1aefae4ecc9065eb053807310f703d7e71e1ef6baee6129095da23f8dcbc94251290eb83371669a0b7a65b526678ab13df3006d6e75aec835043647edab8f8f5c9056fd887b08106dcd12de61a217273e925f8facf54861dde48167d70d730afac5b8f36de90596cba8f3dfac003107c2d23746257e2b9788d59601b5574725936009d4c8b8e213d3e311c8c76c9070355a61e3a3860a264a4f96ed70e66f61452e83dd42a30cd6be49e3fcd4cd54a09d5774cfa369c81d4831ec4dcdd89e8a2757dd76a64c591f5599a85003ba0c84718ec2b5a2645fc0d23c0c6c4f21214f0260a8f1e41d4ff466198475cb493987589375213049fad451496d536280b6c17011ee04dddc93c8bef0972002ab24eda0a2af886fe5bb8af455885f8b7049c6113152a5a9f31560d179f0e103352b4a10a35cb6b4705ad3645605704af9a30dacd25a23c9ef75b5dc8572f9c8b660c42cbc48c9057d5e38014313b0f0d300b3f8ab48e1b86574345a65bcc893d9cd3c1954532b6c64d70eef9286935eccc54a03c970cbaf7db4a77942f811fe554eea44177875636c728169c319f1137b0930418d74101db7bf35f3335df744c8fc51305f651e75861bca553b84bfb652b9b9223c5db36428f0ac3deb12d28133be5536149750b99efd7ff48df4d4172a98d2736ca6226c3a95a5a1ed12a0168ca64ace7c86437c40456d3fee9cf4360f03340d6694f43a9bff7094ab702fc4b48381ac9517805c6c3086a4facd4c8f2bba6b32b185d49f04fa19e8ac0e51ca5c312904bf8e787a17ccb2a351c45ed22f98167794a275e7233234b7653c0788d75470dfaf5ce6a34b956a5bb78f1dccf6aba33c4d73a29a21315c7e9d7f39fe0bd1b6f019dc2df9df44dd2142e45dc5f96edef3e4c7f85c258c523ccc3affd31359e0ea2e8d67158b4e25ae1aa9f3ed4ca7c99bd347e1b9f075c47d98f22527eeadc0d2c5829adbb417709484340fcb0e50705eb2a98322b3fb313a9052d6e39c5aa45b9d678e774fda625e41945edeb34908dccaf138060044a130a8f43a6996a0138f71fe725b2de2779857c92f9ae44c553f8585d3921c67de962c665ee383199e0fe2cbce4bbb0378b1ef1f87a5b4be513638204973bcf07b8b8e76eb78b49e6a914dc724782e26e960c490b7c2ae21e282a425bbf329bd08d18bf8156669d8747316e742a93df8dc752d7e249f798a28891748b6cc55c571a2d49a957fca82b21a0c416ff42310f2affc8dac31b809c9adec13343c802b06077365e6d694d1767eb2dcb0ddce2884eeb2925ce97112b00e7c65d24b6a78ff7ee7b2bb64fdd578121d78d22113156acfa508c0303048aa40bfc71701a9f82a35c9c64ae0995ab8b7ede7da2dc5db3e56363ba907d35ab4a120a8cf6b28e52cce9cbe5ce03721393afd3bab538bff5972b92cf3827c5eb6af526a7baebdc96a2fb89a4610093ef498d9307ab4fe8c5cd0d67e9b8464d179ef5d3661be806632aec908c714966645474763d0cd888ee0b3eacf0b77f6b67846a0e2257dba115e456b324d59e71d0d4d2aa727e201b5c02ba787069d7669c3e4f3d12be7e7faede276bae5fbaebba3c17e04599a00471d8b68282c29176fc066aef0747910e8376d0548eebfc1d55411920f6e832eb34552d60c6f7f9c492623b9f16bf094c0724ec5914b13c79d11df60c61e0693f6275ef3bf22766057431758a8fff170d1085afa1f0eb99b1b8be0a55ec03980019dd3cea80ff6c966b88711f1449a7f664b78efaf4113951cae5740a66b279df49afe1c8a51e810a1d726875f875b0d92b0ae4cd66d30a8ce126decd21a6d175e361042de7ba50710ac7938d9945fb6d91f5a60a471285733fd65be20b23e434069bab22347cfa336e06b00c61dda86e63433f0ad9eee8f4cc03bf0b58d5663a2c704ab83f42b1a727c5e98fe9d263eaf594ea8041aa321127ff6e1676e2fec1cfc1723ff5efb7063ce1f51a2be11c8b1eff47d269dac82e86a6d0cd565431e8fa6c9f0ff6a4de90fd4d807af96e7ffd800d474e4c830e64e6669d58b24c0bef709845672047e53bff5e3f71191950fddd15fe2ea39bc042e754ea6fda5e95a1624bc798d0afc52a421ffcac618dd46b1b233b0e58616651a419ee6dcb396d4e5286d29ac288bec780d4b303fe44fe4df1f6f06fcc47339ecfeffa8416307da2b426a915d62e970e06e867cebcb7379849160eaf166f0af6214a770cec625e46e74a6018aff8946f0c81a7055c409d17599c1d805fea10778ef1ea0a86a0f4ccb1de24f5063df5ab7294c5a998f5483f060a7417e17914b19a248923891d551fd8b67c8345599abc00a0f314d8d053d94012732354b6d8d377a856788af1c74e5bb3605eebbd468f698ae72000fb39183ca872b703b341d4367221b9291082532ec906379bdd3964b20b4c4b438c396791a78593a2525dfed770d4249a30d6a5d29ef873a131d07f1bffda49c3f26d95eb59332bcdd61e90e9e10d062e8b2df18331a52db0d0ce596e23cbda040d61c9a49a6f1df8881b86e1bf06d7b231ba9bf0786c3feea157b2bf51af7b8439df4e8ea3484d2a9335932f27f6ccbacd87fdcb81400e9fb1695c81b4aee936d71e4024eb947915a2397fc711bb8db33aa790716f295872eedd9d749bfed0d5a0365f08caa2e8c659407b02466e322283461c771b64346285f4b6d2059930d075124d14f2ac824d446aa387da62beb61b24f4e20f17c669f08c8666c3fb07fababfc83fe48c71894abbe28709620aa588d9163d677b93a16036e8f794f9c48a68559fd730298107b99f92efba8fe36275e37d8d7594cd2816c49d78e84cab66cf3deea155493bf9ae6ff710da3f358a469235d7e493f6c13deb223248314fd8bce4aa8546f60fd45b4184650a540f1dba39ad96f0104b3f21e37689f982388866fd5ac060f883e27d2380dc6eb448569b02efe0eba571d09fc16cd1ed5d08fb864b07e70c84ca8bb91f8ba56f7e054bba65976e197edf7895acd99037fd4cbfbbe37b897081f8a0f66e4314d0a7637655caba4d839b8dca7871d7f754b7834c26e53b437cc7c27178ed0a605328a92c1271ed6229f8d4127896fc5387d03ad384cc18f9565cfe7e95cf4d1264446ab47626c94f359df5d856eb71f02f861c066b6d039ba1c6bb0c3380f68fecd2d6a68bea64284ceaecf29b1bfa4c4e99736c9232914dac586f115dce22e43fbccc738d3c051d44ed81a884ff84ec608432c75b0c3eac6051f673522da5d06ddf9fd74b792b9eeaa102a4832968fb7b0271baa2c71d13d9fa01581c9c9e7b21be67fde79242860826121e587da6c69a2152a7346a9ed1f80c01c8bb2bf3976181a4c92cc5972606cb649a7d869cf58efd4ed684d1429f91f9910761afc8ad49fd35d67546b2cc36f01cd0820374f2a6ab9ec0b0301605d4b3937444d21a48ebc5f4f292440523c5b7a5a5b76f6a37460bbd650076b8e7e1b3db8bbeeb05478bbf004c60025bf78052bd968f2d0af2982ce85ad9c42fcb30dc5b84039646aa7393cf281bff44fec6da1c747614192fca2eef323806ddadeb181d08628c50d50c381025f4117d99a819d868b738a5b4c45de7961d9aaeb423875acab7a010880a75c8df54df592ee8a4984a12fbbab9d7cdd718fa8d0d99c168a302a2d1ddf77869fd0b13b23ee854f02a504d38bfd5a77d28c7aecf1271d17c019f37e9c65d590848deaeecc7a8f30e1fa680e4703f35cbe1e061a5d4b91ae01fa4967294a224804337991534533ca67d27c5c9621489f360f88b8d4d1c724242ba23200e6d42b01640d0cc845b39f2f7ce767f77eddd4109c404ae9bd0c6606c3a1b96abef86d001e97d27a87e0f34bee775af4a2ff5d659596c47aad603a0ec0d96ffa74d67554cdeaaf68d3f92d21ec0b0c075be98eb5a734af7fe9f3506bb12e69875cac792c5c055ddc63eec724de615f97d564e4ec31f6e2eb89a10da9cd77bd118292e50054d4bc0a457db4ea608da682545dd0928345695dc775ac55233e62d8881b0dea8a073fc230c3c81c9cce977854433deae62439e9c6f9eb43c462bb91afe86308980a60d66ff16fb0968ebb86bbf9ce848f5e0a126680a30b486b963c05c48ff78f242909e3fdbcc1162caf07b2d25529dbdce34ceb41d7c2a845da30fe3d1e53b3079f78820c59bb668d6682c3125e1d160d4395abe8d659ed1268de7d2c8054c8c110e2989be0c1927dfd0f27d6882540823a076fc3c23d85a67c16ca9551e6d554c2f53b07015a376aab3cb40c1cf1677da98219625d2d7f90a02b5055c79f38cc69e6cd2ce34aaa473f9da71cae6a1dfdf291b563b08a0fb814e2dae3b2d4a6af3b2c37e05106c4a6c546bbc7514548db889c90bc1b2eafd66c200e07b7165c14cc26f607b7565e6b2f6275b9a0214186b77893218adbb123fe1d6c9614c509888f044b1dd38d0dfbdfc3fbc69585b9eee20600180948fd55e877a7c8d45a245a60e046f1b3d0e6a85af89a34080301f5505672939424472955fa374916d7590343993e0e21cbc112bd20aa7f322ef2b52a8c0fa7f7fb5c93867ee72f3ab9d9822962b7e2a618eed2becc751c03a4b46742c4033401f4f6b8914c47181f2ec05e2a660cdfa99c20dbeb6fbe8fa5e1738cefcb44383a8ca3821669b936b9e57cbda4f2c854f8e1a32897e522ec8f230a3ca5b85e755c946ad7a1c90073f26c95eaaaa4b8e225ba2d89de018d20e5a79bb6bc91afdf454f237f9a0dfb900340219ae9b21b59ab8ab6d5580b1e7b990265b3f70678bad7d576e09fb2765d14fb49f41b5191ad4d972683096011b6832d6580ba5526121f3c297822fae30405c057befc6465d057c1398af21df867622aa5a3e066b2802082c4dcb4248589f514e659c512021247a853f0435ee185df51bde3da557824310258e19ab8980ac3a08c967dbdfe2b47aa6d1fb12d25b4b311bbb35e3c1b9305d085b497b4f0ea46e9f740b03c6a3f0bdd6edb22b521aa45d17e401a6cbbcaa053dc032085a56c9b18a4c369c453f516e38b112e7633dfa402f22278a660c226ee627885f8ea9aa5606910521c30c7bf48d7a7507d2a46d3a14cfcbed865ac6dffcd5039e69e99adde6779a1ee010986974918b981f55b5f5e385ba398807b7cec9f63c9477c4682d33740bf6747ec5eaa492cf6a5bccc1d63939839aea0bd0620c202d231c299e2077999235bb3e715e4ff7cc62b01b23d8408f89712f09169dd9a7b4e10639f9fa3e2539e796d56d473cad7a22f3d1c419edcf3c1a8c3c9f555c43014f0d751bec8f86db838fd0f12ded6555683504a9278dacfee08b939496da65744d9100ccd10b484c198ee8fa663dcb2864892d3d1ff99b81f7b9dafaf570ba570319b691f3661e48ea5dbb7bd43ebcbd9cc230d7728a97edf4c46c164c83735a35bf3bef20baad8c32458a2aac1fb7024915402e4d9ff957de48f1dcad7d6276abf3742ec4cefb111d86d0799be02c5b3bbda7113e95a89f5aaa471dcf959e5ccdc75341296b39c4c34baba0ad833feef4d3cf38637f78a376ae4e0ab7c8a4c0025d5f95f96ba909ae362a2b05ff09aa1b1e875cb4948df27122e2e78500dd1b7aff436986b449c42e107d5928a1263af75422a80db1ca10f83a2d2a05aaaf7511bec052c74aea3d33127c7104a7d82bfde61320725147ad41947a2f483e5fe4e4fdde2223dded5341d88e9928916a5f25d9df6fea8d292f23a2836d893b85b82284f8e806658aca8eeee550ec684a19a3b26a4638bda8bca7b1e8dc2ab955048cd72710c7126e12c76ef7498aad779e6c8a2507db0828c44014e87a34edba092218537ffce9fa63a9a0c3939bb9f5caaa89847378426237bc929e5492f44e487295d9be9781bc2ed875f8653129fd5ee4ad330302165ee1dc6685a0715469730ce9f38be52e9ec54863fa0a9123f49baa1db7c89585fca892fc3f64b81b54daf0d2933e568c0c1caee69b08451ec5ce6223a1c4d26c5720ab041309e14b041faa4f954ff7ee2df2b445966537801c9557475fdb898764d65b2d0100a7fd667db4d3407500545d59441049f38ddf136e1dbc31084efb3531bac4dde34ce16150bff78ad5b7741a2fa85a1c309b2f5fc29f7cfe45f1bafdda4db3301068f0b9b727db413667cd1ab4e897d991a5e5c96d9ecce6d46a946f80f841680e6d3f8e9079a205dd395c0436e72b5e387b8c78367a3ee5c83537fd9d529e9146ad90e878ec5730d17ae710c25c2997d0e9b5518f3bffe9cdb50a368f7e8f3abc48583aad1b64f6b60c8c5321881446011cb62ab705810826a5178940d1dbce3d52da8de92c1ecf4a86a87dd1e14ed52d13577a15a025353cf0cb31b59e1003e6bd0a48fd3b50ed7fb025948c493fe3ce15968f255aa58b38a2129042a4a5151a2c00d6113379553ce6b99a1c7e655c496e9740b973509c407c88f3212cc4634381ad0115be921be2cc3d8ec27cdb02145ef7d2f69a106ba584cb5cc041ea802f14c74045aa2e0db119ac122e824172a264aa324985ae128f4fcc77cc5c22baa26e6b6e7ee52b7861f74b4db690868f70ca24eb3792dbdd954d9422b64efe00cb2123fada8c15ab44430882976ffb7601134f3807c78b3aef887a53cd382d4b361f0b7f883ef2b93dedf44c0ee5925c87cd046902b881092d27ef29ed45eefaadb41f4a9541a4773fd31c7ea39d2c7b8da46e16a3d208432ab2e74713942a172b9bf9e0a6d26fc627d2713c90d9cfff660d492cfa09f27445b9baac4dfdbc527f9b84b5d7a053b00def7a7f900e28b182729c639eb24070f373daf4e726af6af595b64805ccec8fab511f41332499a007492de704bf49888161a324c0c4d1c635115ee01f703a5db7e6bd1a3ee9b6f4e8fb86088f5633bd5df0029b8d3af0e4b0b8c368e6819855fcdb55096eba351d41b6b116113f231269ec576bac97cf9a1bb3a39c9aa81c30e3a54a1b500da445dc9a75f82553545fddc6a1582174019c0610236cd7859808f396157ea8a4f07ae39f0f8f7ebf27aff342bea850abfc0c0c39e26cf361fe55438908758f3fa0377eb34af86d3a0cfa6195054aa83ac85096e395333d11e4f60b0e0eba0b6ec4a5439665b4760980d29a38d8c2b2ccc4296d4a29a02718fe71ce67452f70945c4101c7d26852a32bd5f519dfcd23283ca258988f591f5e0f298955a81ef22e7540b4df2f06c3f51925af2af78b7630960e7170f3fb6510bc9f494c06983245dbb7df20ae42b425ead85c0abb6f69f24ed52a30b3d936f9a2f4c868b8ee0052ec5f561ab32d3c67a532dc21054aa5b3edf6203ea7588aa5451d6601e731e9f17c9fa91ab2fef397cea7dc060fcefcbbac81e9ca91f118007fb0cd521cd0965bd8d294f58cc42b62b4584522c133bd462a8774e9ec7e0f94d498c30dd86e99eceeb54f59bd3836e500450dd1d9334c3b5df63df44c5e08f317d76845a53c39a627045113a2d2fb32bd547ab737bf96952045c176fd0256e02be26c6f8d0ba2660115fae431690ad37e23300ea7b107b2e7a5eac1ee5568f77a040cb0c15d6fbf43a715a7b60360b0850f75af64df71b3ec2156758034cd15bed7b6e10c61914b4d8b3ed18ee74f123814f4fbc233f05cb4bf6ccd538ba6e70bcf0ea6964b5805b01df2916212f5078a303ab5736a3d99861482beff01170faec07ae2b4e16ffcb01393ab4e468466147df9d4b4844b93f2b88a47dcab87b11227cb3f5b6ae197c41b0a1c4e71499d8ae87648c61a5d323205f01a82e80f0cbe6dad23da62a8d49f78eab9c5ab07e3d7ce2812864d1b9472d9b29dedd0535c316736b739302c2339f52c71a17ed90e26772020c36d84c6476b5d70470f4c5ed1659078e1d0b3ab9846c3d977c47396cc67f93c8c2536a9791009808d1aeb4af5a707bddc5ea6e8917d7e1c362069685349e8f9c7b6c69e4f484ddca70797914cf2ec9284498ff7531fcddfdb99e655c3d28c50145ee63c836f180d1b2fff910a02f692af94a6eedfca8d033d7a63a71606c268c21ee4a37a9461a53555db14487f5e09fc023aeeef66c83dfbb1b303672575aa700827350edb884ee71e9016c886e3538750f80d60c774b88abbf72b855fb858f149fc7e43af7b39179b20e74843dd41873ba46c840e7a4a46b7aafa964fd7d9f849667e54432218cfe5d3b3ad29fff964b341cdc42e7b37cb567fa608b857fa3c96d7de62db88ace0f2ced7d906924eb4cafae39dc5973809340931919721f0e6cb306f40b37c0cae17ae04ab0893f933c02066446ec0264cb553024253072bf8d7a8fb4b4d060445041d7a0e94c3d4631f72ae764671e39218a66b994fdf5908b1fcd6bc607e721ee88056aa99d67f4844c2d58c75fe07ed912c92e6eb3644920de76e61201a8b09163e7d762acd02f7f56286f91d462c515ef2dc46619791365ba8081960376a980f03920b72f7008ee1b57563e7cf7da18abca3ee8c8937eb0b23b322033dd1c30a2ba78bd821450f7e19c6ecc5ad4ac37f992fe87ce1e84abafae4d2d4143bf51ad296d3c23396740a955e8a894b6a3d68b66478f73bd3ed7ed738faf826763d36e2994c9dce2a7af51529a72bfa80b772fb5116dff228401bc11d7a195e4192805422fc4ff4cabd951087835f399a9071fd6910f5782ca5f3a450aed391a392d4ab90ffa5d0e4a2be41171aef8b4679db45d51af5af8c117caef23e2c5e2d59570b9af0d8ee62c5a23c1454da06f46107cd58b2008982a6309ec18c658c825c438d37ab49476ebdbae3489f32b53a8308c501a39ba02f783c3601978699c391ca9e8e8d29f7d880716fefdf067e1d70634e62d041a37a1133a346a7e9534325941162e392a750274e22328abf9f3bf61fd55a75d5649d02fb088b52e04f8a8c242b57571a14275f367bb0be00adea894d483c88561eeae85e820e4f532401374599ed546f552b7f6a8b93c6ffe8dae4e3d6350b9583c99e79985524215dab1c4f655306b389b818fd3f35815bf2649204ecd1519f332b55279b758dd6fa9ffa746e13409fa27ff6f64468942787965202753efa0616a6711fc2118cdd09f5d57e94b733c8c8238642053d813e74c9e5c67117e94c3edc72a65b8df5762b8642e131c448a8b0ad59e487dac40a755fbc5fd14512162a18eba4fe2be58997683f4152c07cbd66a4a90c64891af8940481204e4e27afe0c8d4a3273e7aa9e2d62beb050632155c54f37ab6b14157f8d5520c23e706266aa3d4cd417de4848f05d2469ffed01d6f1b1db354d248809a6ae4c3aa522df312b5330cf2d27b43c4ed44df1c4c95cb29c4d16cb8af9768b1d2620f75f4dea2b2ee5f69ccaefeaa581137476d8d49f5b3666cb08502d9061c0a02970f2c9704ffae21f4b7d2524208a58e6024139db762e017d37166413565f7d25a6ab79fcc27847978f8bc02819c577850e0c3cf3de0c2663a66aec9f7644e0d717a6aafbf5e6939f06d0811b527e598aec49068b7ac8cd16f6686376c4883f89cd97f4a56fc0fecf35a9ec43f3e07da059a93ef92befe5e92fa9b792895586f05ccb64a467060c7d6711296cc77a6dd5e1f4adc25dfff2b5179f8006890f90acb7e558bb280b77690cfd9bbaf52e1913f648146547b473eeb435af9063f3b644f346e7f793c8df3faf63af467841aa0dd722ef0e1d85122e9e3359635b3de138c12eb61dee8f9effa8f18b1fa2991bc75fd84cec84e7162f1793c3107ec480aebd78fc1e77ed2fc27252a326eaa9b0666f49ad61cebe6ebf2876c5efd402d3ed74dd57c17dae62843c7fe9ec747a76ccb7b2970201821738dc76785f8bf6218b321de8d8aee60e582f080dc100b04541f340778e685b17d0a7f52bbfd0db7712619453093baf8fae901147c26a31c64b99f19161d9b2f5bf8b8f7c7d07236672fa3185bb261c43684f58d3dcd7734ba77e9522edc47f0ab592a25c4dd9095a0f638b0c8570733aef7c154a450c25e5fe427b1db8b8602b258409875bf0ba1e01feaf85b25ce0424495e16ab8f55512c791aba53533b9a31cd9fd3908f90b0635af8b8b0e363198452928c0364edc1feaaf77e79e2c24cec7cdc0f74ce218e66c6faa5e5622030072ba2cfc6ee7b48233755872fd54f99e0e7856b221396fd4921578fe51af3348d8e49195c8ea7430995da70ed9b59c530864510965a118e565e98f8c35928e1ae7a848be0bfd292c3ffb3bbeebcf4eecb7d8bdf19738f502e2b1747d2f6bd4a63dfed1579ebdd1ba5a291c06ed37300249ad5b35bef0da14a9536a0a5280c41cf9a708e74d281a2d76a189d03e1c1b6604e6daada1a46e798a0347e391b3e8ce8ca418345a89d4378befeaa88a60b13d1d91d514decda3ddbd826dae401c04a27db601cc45587f967dcbf294bffccc8b66f36f2820748e66e431f4543164502329411e7bbe52928bae736c18c4db36f0d3a2fb5d3158bd074012194976e89f4692c9ee6c3d6639febef232cf4d80ee9032a621a9349462563aea29c284b222e77c96c876561f19a515ca36f0b241b7ccb6bab91e2e878ff6cbcb701c5b28e54a184370f5f1aee6fb4ff7f277983fa28681988fdbdfcadab5b35c81209a0521872c0ee09d2428c4c85e82c1ced82c90d335456cdae493c247f364c807edc37a907b3f007c28b232dbcd12a237d0e7cb77f4e5e568df74f0cf0b80f1327e4bbfeab9b5b4482ee649d2c97bea255a843498ad676b4248fee50ce264f1f83a89ebcc67287d0b38416e4a6f1a5fc28c2e12d01807923b4d0e098fce2467f6ce552b0c511d719672c91f1e57fa78b01cec604b4020145cea9472e134e9fbc1c137854e9b63013841ed0fb1d7294e650a72eeb0c0be64e053926620f75f5b0ad8ee6bdd588adff76556a16e6ad6466f6f5c27194a91d17e3a3891b53c3a23afe7639950e20e186c34a11b57bd84e11c8b00966a4765684b2ab5f53e0126143241d31d50dbaecd67c4ff4854243679634719530f5630dd26932ee0955617a3b753c551d34dbbab882ec519caa85050aa69014056c40907ac3c88c9adbdaaa1b50376d870c1fb8733b240f5c8ee378ccbf59e099ed97af6c2485671ee48aad226ce91d5e8ba24c44f4a598aa68e2c014c163d378b49af983a6487d994c2c9c2e8f581367e2c4f106d431f04a074f948ec80ee245c589ee2681caeefc0660be8de271d7d35923f14b0bb16bb6d6a45ed916980ded3f29570a4ed95b3359e209024622a0595afd1a0b2a000ddb167fa766befa6dcd4f5b9b5f1992a5c70d75cd0a69d8ccaf42fa3d8b024e929283966972f356b340639e08ea8a4bee60f87ea346036f04cb418c8bda84bfe2fc4d3f43ab7450e7580ff8a33f06e5080479e3839e9f30da5ed0e8ce06ea1faed6608bc5191822cc69d9415929515ab8f8a005e52f89dfcbed5a3bdb2ead820ccb9187d8f44ffbd0e47c5182d06d27a59071675008a9557c3862e31793eb6703954e43b209cb5f7ffd795555b86139688ab4bb92dae2ec1ad4204da8bb455770f6f30eeb04e43226953fa98249b867215986f13985a12428afe89e8ef8b7ffc8922a6b5c17b4d45e61126b8f62087b915e4a4e6e7344537aad6caa0bf55faf9cba2a002b6e136772c5b9472f7a1b9dc0f4d41d2160cafdc579ffcd88a2ed903b9cdc9598936e45464418516baf143134b6525e3708664533eedd800849721065d621a3a23f80c3eb78db81036e1291a9d340ec3fb5bd0344b71efe114a36576569a2ff1fedf3d7c49731ed01c1fd9eb1b2c8819be0d2b8b07e2915ef117eb53fdb9cf4f924b19f6d2e32fa04856591dc0b5f394f9aca99bc3f1e1b397e63386309080c3c30469c0a92970ead215eb659fe254233b51c26fad886ca20f632d14d9cb919a90b997c2f482296c72d4efb378835d044cc4a4315f78409e56c9cda5ab906149f97c791acf9290a8d8e04a4cc2e896666a0446fe95c4cc072f60cff37fa17c42950fc17eec1dbcf665cb5472e318fcc6dddbd25ae8df31297aa7218ab016a946a1be65eadf87583a855ec34a27cab679c6e96278a5fe7aeec6cbe9c17c73a851dc1a45f584ae0ef1bb70ffa49fa6c66bd048f544669e0745f564558df55f663cbdbe0a03c41eac87d1cf94e1dcffb6e72fece15c962efd3977cc0b78c38f7a9d43c4c16b398a779ab868ebb33dedd29e3a28c71ce5ceb2519035139c436b04188f03cfdf1b819679bedc3aed0f611deb548fc62bc2dd51e9d00fd507d552e3ea1d239387bfc0fbb7fae3838b3533649b7387fd8eb3ab71ecec9ead51a07b7f7a2109e6192f1d6f2d676b676d00f6513740a65da392b111c0dd67232c2d68baf0575d96e8c2c3df26f4cf0cc9a2d458f997acda993716ebf31352f5d011cd4274c896777d7e2e7bcef133d2e5ba98a56edce1d8ad4ad97ed598898adcc4d1b989de3b26e6d2cbd488445252fb8cacc956113b7052e09fbd2b2c7d59b5bad67c89a36c9b7afb5bc362845b134a611fbbced7037afd0b0bbeecc57f57339931724a378fdd9de605f7b2f75cfdb59129fc449bfc137054310bdbd8965ab03c378bc0fd1912fefb4132892beab43c54721c1089555d474c2e234dfb5123e2918e9a7395b467d195a3748d7c5d3ed3631a5b7c7d7ff5c2cbaf064bcf5da3d48c0f3962ecf7869a374e3b8ed89d4eb0d9c0f30ee48a65eeaad4fdaf0631397af9f0232b992488445789a4d8028c59eb2024fed526ba7b21c84c7b0ef2bd1e0bda67097f491fb9c3a6066d618be690b87121df21d47cc3eee60b1c0a91f062e970bdbf3c77a03f9208022938b3a95dac9e3a992c14c27a0c511cb9db661f74bfbedbfa060195c70af2ede74e8f63743659b12f251e7c88fc1bba8bab50769d13bf9ea441fde0e1de36b96080e9574e4c7519c1bef041c66865ff7c96c1bfa6142e52f0b8e747878360c2d4ee12da16d2f5844b17d9b9c5254b41b07fcd1c932337f8fbf9a3e5b24175a929c31b3fec6c8fcc3ae180d87e28bd597a94e200caaf5d3c7d871536e6d2fd7e5ce5b473b0d8f0190ab2ae5b6a961a67896ed47055653579277fb493c48e1d03f9a586700e67c1c1a5dd03be522cf124eb9e3e307a81f1137b3fae11d3df0a0216ae00aeb6ccecd2e5c5eb9944dcddb662b9cc84fc65602176d9c76b0bddc13bcc2d8923fd1f40e2dd9c6cfd9699cbf2b380ff25190dc1ffd5f3734f987b372dc28b83ed3cfa9fab0c54074d4f1721d1c88fcbea5ec6f1e3649c775e827a33a888f5244f675886b844b89bf0e935449dca274bcef21544fad1afa5e361269e46c937a548f279a8a1ae1119732e477f2e8204f7c552bab243702b8945d6d2ff4b36cdd0f153f6cdf75b7baadc1fb630aecb80802f4b10bdcbfee17a150dd13deaea67c9fdb25e8d9fffdc7ce145e5a35e50a3567ed3c46a0c36ff212c60b655db821213ed9e2bbc4b84b72d17119b0110d4956a2f47140e3f3dd527599bf51488ab6f91d5d6af33c0fdfa3abfed0f7df7a867a197c6b42f6b59641c7404f004126b9b319ebffd4df776b25da4e1c8b43a2b14c9ed866cd4c71f1872b5fdb8a419b9854bfc6e1e2fb52413660724763e3cc0e99d0b33a2ab2c4f586336b4764a2ca39807f2c9969a975ee570447b8242126eb662c599cf8565d1aff3fc6c8da4f4d8ec642140d07810736c52c8b8c21c5ccb327b8acff2af57241ceee486deb9ca97535cdffa70a762d533cf17af069b4e6a8336d272b3c37f8cac2e56b1621d2d130ed83d69be7febc31c2eb9b39a63e67e97d9df4eea26e2aa56327c2c6f60b5a36128d318999b4b15c0b42254dfe8f037ba48cca4a429765f6c157c9e255a06fccec29387031a3a9cc446a3ed670d4f967439b788e9edfcef3868c51f7c4f0dd33a972973a3c85222cfc4fae95502cbfa325d8884c6ef06c4af66c679d233145dc67e4d0d093b354db59b21c1b7ce87e2565bcd64dde3a9434ad70c5542efafae286c16ef7604cdf0e332dfa687ae58e37a46ca3d19d18156c7b37fbe3d3359a7a87b9b8be83b70094a4fa8e244780394ba8e6209530a66bd5d278287f1d719b20f8dd5bf3546e1d502d335fd8426fb0e2e7ab0f7f7f21698386805b76c23d2616c26849cc8c7cb9b47faa79d81bb086786549cdb43cddc08501dea63d9d7540cf362655a9ad4aac13f4d4e596c9d5a764e31a5f41776db0e44633c9d3f215306e5228294cf95aa00465f6ba1f7d04e333b2fe83ff0800407e41654b657fb667da59962b6a0dd648e173823bbf62f659361bfbc749ad13b7353b553dddc9a292b7f094fbd2818207db458409000305e24746a7a743cbf801d7e8f2362592f1dd22210c5edca349c7150ecdb366a3093fc10cfd5689d9e0f7823f20d1bb943151e4372b5a274fc6a7949ee2dcada16bf7cd03a16251a5f94f68132c1f95e7728a1f2e845668e103388c687edf30e6d838e52472b3d5d4ee7c3432ec2fb05610ef5acac2fcf326a40fde4c5f7c7473300ca1e825da0372ee68030be501f7a194bc480f63b240e3ee7ba6a39f51d7f7fe9ea419034a076b9fb28216159359a8d0ea0cc4245385d441cc5ba68b009947e50ac91d0270bba2e0998f1b12769250955157e75ad58b198c332ed2d6bc3f989cb739072f20f41bdcf7d3eb0b5258ba193e155267059445fb48d4bfe5b0bec5bd3f9b44eacf594dcc1aef8deea380ed5efa2352a20a4ff92fa489f4e5f377adf74518ed896468b15a9d932b81539fd6d497bd2db885ea655e6c43ed766974fc99a9fae9f02cc6af3b5a4794c73bef371184cc982ff5c6464ad820573b5744b8a7fcbad936cc940beb623a991b685e4d7ec68c92e4bee127223f40ff5826b6e038402f70371539af41279f6cf50c08c59d97e9a0ba22173a4f5ee812f2125cd1184d06b248e1f6e36507ea33ff6eaf5d9570e2da3a0f477b21f89147f2a88ba6d30c462988f0709bb607aac917ec4c4b31ebfc45a273840d7e309aa999e36a2e8c3ebca8327f2f306079c1c28a5e76aa314b905b63c25dcced511a36214e8492c00426ccfcb508961ed9bc4af7ede88887272e8ccee8dd23bcb2a1a616e99a52ec4ea0518b765bfd5e6f70607b259bbf9ae65eaa5f9f1d7ef2f03a696dcbba2f0094ec54ab08a41eb63ef2f22f059d4e06038d589053ca04b3951e4f2b18f9fd3cc5d982a1bc8691e1903217c85f1e8be55552ba8e2250ce405157cbf49abbda60de474dddfe733ee80cc3a02b81ece9d739ebe995ae3bca4285377a850cfd1011149c02ac3f6e61d193b416b3226b1865ec713e344a29a9ce8f46c56cd95c1408f886b6d063d9357a93d1324c6bb05e583fb062a0d4c205b95d187d50f69e31aba699eceb10e585ed53ee4556865d5854e6e5ea3a9bbf432ff45fe5eaae4e3d2ca031f4d73db2fc8265f8d1143c0995107147f310972e51cc6a345d80647f290327634342fdf417fe5146994322c5de969c690a2fd693be0be894571098655d261fd80f73ec7716a1d7fc49d8dd3122757583ffc612a24b72186a231294f3042371b6f52fd84221494e18e6e8b275a1b8b2875a72ad03802d684f5a8192fc14c50c2821927efa0fdac4629f77fd1395dfb1482662d568369fdde436ee93e289e711784f58aae12fa03bec2e896e88dacd9494a94dfb8e6f5c4a91be2ed8749b392d6eacf75a4a4a7d7f7bcf37ce672356d623d803afbcb9703c54e26e6e3b990fac5f93ba98e15413df68ab529cf5bfb1cb08b64a1c64f6ad9f63e6eb9afc0292f2f26f4453a5971b56713e00e12a235331638aa4318adf38b18feef24e837dae8e9bab65e088e0d2ab9b0264b12a619dfe6736cd94abef29390d6af46fa8fcf97bdb9b562fb02815c03eae942945c68b2583fbe68a1d9b0cc22b35985b263d83f0d2fe31cd31d8e279fc57428304aab334b6bc3654246265c29bb3bbefbf79196acfca64c4a38025cf98540cdeef88722ca7f64d20833696cd6db20e2e02e5dc326324bf557713b737cf29879124479a80964b20c3b8cb49911a1defc1a30587172a77b304e3c93025a1aab0c441f1cd9ee862b38837ad4fdaea4ce82498831a1748d274e6448624b9cd75b3807e21799e0cd6b60e2960ea8a50f83219b5412562bf73cf40b86587be3a6a99559cf3d7d8656601807d4257c50c47080893ff009ba944514d0649fbc31038f89a49b51b9b9529bc0f56dc7f742096856032b4c51361012293d33e84382a846f74accdb3eae57e678f448a0fb96f7b24e0b523b2c129144b25e151ccc44d28ddc1d4b8527e5d1dfb999a6201f86784cfd72c4ce88a9d31fa358b0a3cd70e6d5f1a38429f5c7e10045a3e4cea9eec59bbcbff05db4ecfd4512de7f149f2590da96e2e8a6c36239e1daeaf87fa9126cfe297b190547f8b2c895f8a777806aea95c942c54f4f64c14c26587d1847b1863b471c9ab587d776ce520ef70f57c48b4e04cab44790048af57ab8b5e8a96a980871e2d2370e4a93d0baf946a17f8439b3f4cc8090c5ce9f1ad4eb393552ce4218360ccb8da89e62e08e9e3f7a0482e94b78457b9e66d501ba109a7c0407e0bcf284b5c6ec9de58b858a3d084aea4b3efb492cb2ebc5a9c427fbdb7dcb51954ad057236088fe2640bcc0df0bebbb6bcc6b216b036a6f7ac82fbdf30ed1e885a6fe115ed0b071da9dbf80a122f6b7bd0a2e8b00d4b985c9f021c0f68d1d154b216b637e85eabbad3113777bbe49e5552f44b6b7bca66328649a55d7cde712eb5575fc4e52d23b09654c30fd53e73d45bf7321d7680021eb6700018fcf3b51fa813a64cb6c0209ba7dd53d853ac2d013c2cc428de8759d04fc6c59a541060c8057059589c872c0ed0b5b274da99214080af1b7f8d2eb7cff7a5ee0e762d1235b693c2ed43273b9a160adf51a27f89e5743167928b8c6f4555f29dd7f087133f3eba0f6a53c2482325098d50845ccddaf713e07d116c7a2241f249437f2299587afc38ba872ac96b4c856f665f86e568045ea622c088164ef9aef12447c7e4a5d4f23fdc346790f7557ecb3a05123fb9e74059c84e35bf4fda5ea50561f021a9390b448b98b9e5ab80555e91adf747d806b8c6c5d7bf729bf161fa9844c681d8dba4ecdb2c0f626e7552746c951b774e7f8a007e13cc89bca53a3a1f39bfc1af40aef5099d721a0859500de07c3628f84af72b9df573c270cf5046f1438af7e690acf1c8af1633641a3d13f8f5dedc686c2b724621752318d17ea45097ba65f023b7cf2fa0483bca0b3c4d8e449241a98060fd3f27af6724f6cb96643c00df98cbb49e7cf900ea0cacad2aefd009a8348f31db7474a285b4a5114d2d217d819c944be6967782115b22d1f9610f51906ca2a302cf147ed24b3248ac9bfd2d4aba5d8386e73bf28a15cc16f92a3e147b5b31865aa046fcb9603565be31f279fb0e374037cc85b5d8738f96ac9948f20957fca9fa1ec12f91641b24315fe22ccabe40c488063daca200b70aa6a4034a2e9c5a5b2f483c97e410848c6356c2641bcc4ea9de887ad3ddd649b4e52af7ef65d51acb80bcefa016b648470791dfb4fdcf3c0b447a91402bad5f73f9af7e20cf223edb9082162d009dbdce8a66e2c79e47f9f5015f97606589943192673ef2f71e7253b5753829ccaf8d6b9345313e0cf460b4359cbcfa85daa95657aadd3d8b3372628e3a2658aca76bc5996e805f0a20984a49b8a0911fa152dbea02704e33e40b8de0f8d9011ee614644a107195a925ba3cd87ff443db369cdc068e19017c0543e7db9c561d9b339dd5c2216dd669687593d08a72cc0df38197b0f91c89137d39288d2aa5bfca8a1929000c3ee80c209ff57a57ce2957c9fbeac4dac49f8d7eaa0c33ce3ed9a6182fc865b40c6f313968efc0666e2f4cb32ec2d5af50da20b05e9df0defb09f130369aa939090e36565c44b21fc9d1492ce29b5b78dcf68a02f94e5e07d994c2a288221be3cc7a2dc784963ba4889e8cd18e902e758502a123167ee2c603daf9054f2b4bf5cac1091aebdcb1217d67149f017a427570e0b074bf01c2c37ab01c99b65c47e4998bddf1a9238a58b462d622ceef21a17a2d124551766bc17505b599060ba4000526e5e79093d3605d7c1e6ec415177c72b1f4e6580e3f8f9cca6aba2e76aeb61a3dad6f7f10319ad4f151b133cd62e04228422344a7a45647c071a7f7b9008265a4b0f57245feb3de607adcc78469869310c737b6f812ff17c0277b4e6889f35a17c2a5ee6fbab7f9f82a35b08c50ee20773c1e709134cc082eafa5a6d6d1bf48ef3c70fc32b62074d413c48ab7e1e89098ea05482a0afeeeac133699b13dc58a0b2349b9036cedb99450f649eeb62cb48460bc8b3e8826193eb1fba3b1c0184a30af7a8094aaab92bff4fe1a918d378d7457ee45b9b292837d9369c40d2f15082079fc93f47b2663a2906a5cd4a0557975649b1a728bc0c4d1c883ad7a5b98be18dc8932fd78ab042657053ab08bed5ef0944b27f4827904b4e24c189dcf4e820fc27022a93b4843941c3ce322611a9f728f89ccca84b3898a24610609b321c2081db2b57b068d0576d12b1f8f830537a2c5fae6ad2b9d65b102aafdcc132b982f25e99d893a77bb0857f2fd67808f4a3a0378cad5ffc54a1c5be05a9b834e71b9da5fc9230888d276ae01d92678342e134652a5c175c9bfb51a1bd2218ee04063ef85131842955e679a558359d830126f55a8fb6e75b3a3ae75f726aa26b95ec246a7a799893e1ce3634692218e2ad30cdecd62f1b60bb2d2a3341a6aaddcfdd7f5ff8904ed1fa434b60034cfd152cf8e592af47182c6df7409f9f74e439f8e953315e64c755082031031d5b106be2568970b4b120c80b57f251e8677478c1040dc4cd5429dffc9ac1d59bd5b328ed23b7533a5ed51cae9510a3f5f3caac576ac1b61f6ef95ab2684e0f29c66008c729e312682c955dfeb32684a2ba608c5a43821d6ebf7f8105ff41902ef06403a50e4f1ff06f0ecc3de65879b114699dc7aafc51af91cf185e0b73b5aa8d9b3b3bfda2b7ce13421ed3e02d05caa0d5d329b0133607cafe91b29341a5ba4dd12545ac00e83abe725738f1e5909fd5fc572253767802bce1b5d363579b7842702799d3eb8f565dbeee673e2bc19612f2e06af4c3560dfbc7868d950123610339807d2d14876554dae403b1af48709c91b79956eacbf458c37f99bdafd7367163370e05aa4e65bf9da495583a12e7359be947d8d6d9a2551dd1e5062dd39a7b14cbdb41977636135f9589e018fd8d554af05a5ae5ad3e1617cd7312cf50a7028c5b8307d914a7e1b6b0853f99555e191cf82a88573ac6aa90a97093b516f4b30156a4cdb5d72ffc103e86750852512750a0c268d99d8cd6c98be8997e9e1c73d2fd48d721e3013abb6003f773797dcc62e9e8686e3158e4699a0f726cac7f8c81028786ec234b9c8bd29fc00b7b7ac66c38e102380189c65eb933bc005863f52dafa5136407890e66e551ef645e974ab8e2167c67dad132464faa4ddcd09847a966bc219837d78d2e12ab8602e70f0602c11f7069bb9556b318b6730d3fcdfbd7bc4f20ec98d80964c37018f17442b21cbf0686d59f9afc3c4f5d25c395cbc8bd96806a82cd8d10dc0ebb37be41e1cbb68556e46e8748aef00e07ab8075fb887c1aed06c71afd3f4f8b0e5157a6f81e1ccfce4e30ea87791dacf48ea6ba26fb9f5469d4cd9c1de98d83532daa8f051268b953314f5b3e9ce5c78dec779ef93c147345db371caf369c2fc32c5af68bfa36423b7498349d1af149985df00970957647d5be75e0f05e9cce66ae9af7fed90db131a06e361a46cfe27f47822867b3a8ee91a6058e4b400dd035c57b75ce001a0cfef45dc972a052a9f03a3139060892b1203012d030d6dad9e1f6f9d3a68136f5fd30d606a64c720937c2ae38f8bcfe38e562fe6b9fef9796b412a0097be8e9f673442e9da52969be99fc28e1863c22da2b1196f8c6044ac438f1f6fd4ba4b81c88a5e15b5b10ebd15ff095aea1b1de3488dc1e8307955c93a605e253f86c253577e136b29dcfa4eea4ee4767707f9bceead98cd95dec3fdeb7075cef4a750db1163dac5a3b776977882c1a407a70376a2db286d7dc376ac3db41265bbc7bbeb8d93548cf20dfe869b1e0b3e359e5e50df1dc1dbb577c550305c0d641914ddcefac317096a8d32c6c13dd1ae5d887735c9d71c331dfe60ff55f15369c8d8b13e3624cd7e4de67b3f002c578aff7ba1829f16bf0baa8fba8106f31a2bec24b0cc7733280c52755cb092890c3dcef78df1923644df5c91221385823eebcb6bb260aadb66317adfe4d61732b8ba4c9f6994ca6887dc5c9a2f459c8c38275aba9a916104a4bc4216ab81d7b76c9b2cbfe8ac07c5e55d8a12e8ee12f615984e53547d87f39945918cc5c584c697f0e7cf68cec74d5709c852e1cfacc31fab79308ad18c57c3e58a714de06711ead7835cec5621211c482db5a2c2ad6459db828292cb8238c1cc5a23e03c051111f1a411d8fd62137c0f2c171b842da352e4056b9024ceb4bc6d60e862ecfae54b4ca3a5947b2532bee82f267b3a5a916e5bd24b01a963f16ea6b4d1a1ae0a714a008b37fed021be8752702641c7b3e9d67696b9fbcd3c9f102588fc201c17e8f6e225ad47d815128be1a02dbc6778c88f9ee69994f2a14f73acb2755db211c333837a1aa087a8c86026a69679a02a9a1de590c280983956b858cc97e8455edecde49589e2f24b3d5292286fe238e8c6e88da0ca0bf8dcb0a77fc5c23cf6db664bdd6a89023b6fc83a8c7ea87c3aa0276566e4ccef937c81e7ade016058ff770c7fc77a2fb62d8b9d39fc210a57b45dac381feeb86edce4e0b5b9746c29b83e8639cd36f9386a6dd82328ff0b82897abc0bec88bcdad04faa3d45dca160d3378ef5498c7f30eee4f4244cfa3eb6fb1cff459c9b9ce158a7e4285b6834e0728b8342ab9017c2ea092739bd9848dc2a97c6b956469e8b34d2c12053e65a14313873b555929e72dd9ea227ca290701730f2baa32993062d744f91356b919ce94c2ee0140433faa8cf9619e1e3d2acf04868b5aea76f3f014dd7f60551218283f64acbc6d3e7cfa3e3b37e68049986347399aef83508360921cc6c3cec16387a84c0ad382ebd4934818d262d933c67e9a348ad05a344aafc65ad262c6cc3611d6659381cb3c5a4b1b40e43bb3856de89ab0fbfdbe5aaea4e373bd919794bebecc49bc0d4888e30e10ab600a868d011600f13d39a505bba7ccb576b18c11219ac43d8038d824a7256b50354165717713f91f851eb0d48b82def08772773c56cc7d2f1c20f3d6fb0cf544813949485bf050a3516a6edb85ff19034a8292427e5015f4ce392b361737e6f0308458884bd5ae669125571aeca5a7acdaa9dbadf5ee2b238c7d5cb58b36ac0bc6e2820e696e2215aeacb0ba7530885ccbec6b1f9dcfb1c383f22d4faf5c86e5333b01eaa19389d96ff18881dab47410d485d5bdca4256b0a992b55c7f6fc54b6ac76fcfc81d1e12cdf79abe8707146b91b330d9466744a86c981d1105be0bfff9979d0617228acdedc2cf1af89d8093bebda504b7ebd22d29966c408efe00b293627180aed511c157210f6aa76d5eb71a37e2948808f99d9824eb25b8bb74112b093ee6775ed3408908528c2c92c25192f212f4b72ebdcad0eb9e95375c56422bb9a4ac2bba8675aa2e7ad5b03e21ca160ffa4d43ee05e333dde51a4dd7a74f714d3491c12d52b34be98fed6f48a290e173cb22d05d000b3f64f5f32507bcb6fa7fa23f394c54860e58dac722e7c44db86f4088b3639bec4cc8ae58b38cc0caf2c929e76ae522c1af22c2ec1f60ba6fe3f6fac79f95c061ca5cb064e82846c8e317d4e905e9e1a9a5ecd8aeec9094159f994725fa3d545048ee20260b107bff983bc7ca8c1907e7bd49c3e07b15c6aa2de191c4fccb9c9f5ccd164615ce4c64ad555f0076d92153d369a8d9f5a9696114b97e336015fdc1da0d6f7587cfdd8cbe8f3a70e0e4be80d3662821fd863d3f96f1a2c96bf3f7d0fbbb122063f6d8dc495d8ff150d68120cbec40f3f280fcfc11b72164b40032d098c0cbc3728ccb459fe0a5db7bd8954118254a116f1e15c8b065d5d6d5e3855ac370a31302cefbd99c1f1cbf2ee76852ca73f06fd5e5ebc797743fb04121831f49b1e8244d29df1eee7242b89f4b1c23ac2040d4afd986b977b69e65d8aa60b2d226e3a52e19598b962bdb1ca4806da0edc8d96e7dd3ffa9668d5a942509094106eec8e0b87810f67eae420e99ed6ad231fbe01567ab67c93b40b842357ea3eb97ec6155109578de6a0303ffc788bb169d89595ced7147f39ce518a4f5e59bf6a0e2383bad274bc9bd33a2eafdf9f4f36846c608a3c080de77c2f915ed83f7d35e42f1cbdfbc29fe6841cdb2a3b95cd84e220fdb1bfd6334ce413b2709d915cbf1196932e7e66fff7843ffa18c0826c87c80f69c7a90d42c4ef9ed1a497705b476bc4362529f7e06961febb969c5c8e0a292884861184708c6b09876966385b49b09d3dd2d6265e6498445b84ff6bd8d71a01ad2eacbddce7cad97a9ce0b2590f266b741f39dc92096694a6a6f916a8780b2830312f75302376477f5ba9a1b2b89fea6bd668692fe65d5c92e4123c7ad8890d8cbd5f8212b9fddfc6cea903451339ece49bc26d8d362c90edcdf4287dc7fc56e9a80becd071bc470f803bef12c79033335826d5468f80e123d76021e86b6ee853b9d563fccc4a497b693f8ca16c41201ef546b4c252c4a75d9919bcf0211d528f5ae474bf97d9958e3eef3af2b5a921c5cd36aa45cc46885be9e5b6b9b43b482097113fef60d251c268373eea8b300d59b09a2d333d6b13e7e195d61498e1a1d7a9fb5c180982475d3017b0b6d3691e682356f64c90e786d88e10907c56a9bfcbf05b31384beb6eff5e1665e6067ee645e469588b661fefe2587789a570cf869e20c5134a376ce13165e8242b2eed0ae9142fb0edcee6674bf6748d7fff2de1c170264790fda2eff38b090c5f229065db9aaef97b067e982b48c70446ce5bec6cf06aae04dc03804b602a1c4a00e938063baac6b0a47ff594e7f2fe9e8c560987aca11fbd3fae3d48d64896ca21203d23f39afc6c2288bc49d037614414b98ec8ba2c3b1d2b3d8c2c55bb15035ad2cf0dfc58f5f380fb9aba85557f86e32c86b80d3f182b2a4a186e3681e2b1a9194fb6060fe8cfc135e1c285533f7a9c40a360391dd03a6559dcdb8865423aa79e381ba34382d3b036c27198b27011770329033b550de0d855d823f14bfebb47654579e9b131336bc76ca3ece0c8f04aec7e425c875bb4b3b617cf4590d2d20bf4f7d85c3e4a3e242a43884fc538005b3a61b72c338074d4cb8ae12afa14fe8e2695236989933f37a26c22db69a95c61fef366bc4bf73597b2453d410643d558a4cd59c1309b49cd8b62a5a2333a1de8c13afeab594304a4c3e69d85ceabcd22600dd83d3835a9fbf5237f526162a2edee2775184985471096ee79cb673e9278fb2d8649845b951ac51119a9263ad2d8a03e457f18647d2b551b5619a7c9c38481b67d9c05931674b865c497e5b4945400a32a3203801d9bc73edb3730297f0d5270d9dbd6e29a0218d0269c49b534c8296e66d55a0557c9b18c521241d96f96a5aebfdb490c574d2b2b6e2b7455c9a00ae735d2d368f082dec5dc04b0e59c1b00a015e0b8fcb8554edd2624d929a6cfa96d0775d42c1a8c07ae67695822f07020caa6dc6d3ff88508a3e42206829787a113340f7e19074c847311eb129d238c14d88e0e0bb98c9eb0aaac470d0821c9d44f2583fb42d5d9cdc65b2ee19db0501b6e3729e602b6d78bb5a62086d1d50bc36cf276ff88b493c4d2bea4ab79fddf09de49f0148d920a842ff9c91dd51e3063c16c367cef994c66a4788c68115a4f8aab0d822f7d69f8b1c1c764db17d1f559689392e12aaf0901e600a477a62ec64cfe32dd93de50240dd462c375245f9519243a188bd1bf8f585e6659b9b50f6d63dfbe94c1518de1e9916ce7787659a6d3e14c7d4b42b26199c4f68aaaa24cb493e9497e7c7f10e8bbbb633347b741c887b3f955a7a102e6dd80317938b4fc5932cc7ed80c248711ea4920e5c3a6f080ca599c10f5d5b91adc9e0c0d637c7d367cda0cfd2be5f07d6373cd92ccae02d61024f072ef54c410aa63b480e55806b65621ab9addbe9e523c6a9b1f0f0723ddad8a12a406f44a54566f6f12b1010056edf5ba33df37c21446aa14f913f0aa2f26829d38471e54d8411113624a6fd707619c643f4e895c2da13fdab5b0ac30b8352797e357796d6bdbb95ebf8b8024842164cbea2ec5da65e3b23ea6705e39a88a007d6fca63d3b78c4d52381dbbd8ed01dbcbd3ce6a4b23a47a8809aa8d9632fa22035c7201232ca6ac5a48417a0238f244f2937356b26872c900bae8e19f27db4719c4aed1e47553cc56d089569a50871758d0c394ba24879256927c2c7d724bebb3ee1e9b922025af237ceaaa318af570a04e771108b7c1f3d32b19af2e4ea8ebae840ef2dedc4ae5dcf78e9693c611263134d2f97d2919a995d203f92885678544902d3f3624cf6bb7ff533c834b1ff30145615dcf0416132e1a77e04289d6906b21d0548bf6de702983e6475d5a2547d0abd01efec5e4ddfccd9f2b7b7d1ea1f08ab3414753335bff277a141738c20464f55f01f57120d486f80f8702c9c6e875223e8385d4a1cd87a5c1968e63ba38c948c67f14eb8b052c57f5b88d47a54724d72cc955e8e806e893acccecb3aded83fe4902ab571773593d2cc082bdeec2d553889b2f25077ebd2950c904013fdaaa8150f52dc837eee825bcb772261518fcf722874f6e90b331d48bc8dee0531553548441949faf1411a6788ac977ed07abc30524ac6404fbe32d6ad6c9b9059f3f21bb3fb334fe3b88c95081a29994242dbdd251f3093e8b21e2dad87a1cc1a6a40816bb47111db129544043496c54a68da88d3a156e48a491d47eff82b2bac9131d4f36c80a8189b874462348fe63ed35215a54c25c0859bd7aaf0021661f8e18fc5979979a671c38fdb6ad6d5a34c17a22f1dad840b09e51acd97a28b6409555c7ed63d5e877492192d5678d72bc64400c748d98edbcdb2b90382d5e3f86475e8f1bfa061f23d24998eabd0c664dd64b8aeb9bc066ecfcffb04d2ab0db1ce595a3e9bcf15fce090becb18c53cc42f9e89fb4724d91d841fd8ae429402314d33a6759c275a1abf49d942650044fd35241c1fdff162d52cc95b66be3b2f02ced3eebb8f105bb64c3f446868341799ee6eec0dece5ab042b12b3b479f38302f59a97c1e6542521576cb841b3b928b6482fcc71236d397863b04101a7f0334fb033c9311e1b4b64de0ce8652206a77f2fb2d90de6bd5ddec1931a2ac540247cb22af51d431db15d5cf9a6ded4ef36682af97581d6c1c55385c83161b3d09d50834db06094f6bbd287d6b7705a65849ae91454f618ccb49acfb2f9be0154ed22ad2ec6fb4d452a41cc0b2b217ba1dafc874cec7dd9e4524c11180a92a2bb3be2109c935aeb358df65f69d30f6f5709ef7d834bca5b805903025141aeee0fa151619360360735817fc873a25bb1f55662bb7af29e5677f10c9247510199361f2506fedad458d6744f8294cfd6a7d52458a93f7b1e15e01180d887acb2a3a8f7afeaff7c152e15c36c2a9bdaff3de17e34d987f1049935853e324585d1efe8493213e9006cb1f7a8e65e6a8be6383ed68a7594956b2228843b1354aa1eb9bf216b653e33a5a30d6da1b99a765e634e371fcd1ad24c8a99da6760408b905e31690f5af29595d1a6c0f4b75bebd16d052afb93a89bb3ba68cad1a2aafd5944b104312997de531759b935c93b6bf60dc33bfded20d017122c2281e06c1985ad341cceb1f3daefa0d4999124f5b5501380acc68ab1d7cdb08e47b40f16a35da7f26abc62e0ac0b08c052eb064c19a6c60f7fd6592d3529b897e0266fbf6fd1df4377c845aa2e98f5c444a8fc21bb124dd5294afd251066cdb4e65e7064ed346c87a8a410678ec002fe65bdb3b492c529103b22ffa208c5048758b5277af249c3aeec468f352db315a7375bcefc46c7cc0a886f1ec1aebde81799fa20b94d8c1c97d4058848c337b2ee789bd942e55923ec03cb48821a003dd036c0059c0f4fb373dd8999b90e17a22c2fcc8bfaa8364c4c54f902c38b06c138e101f334469f95c299d7b620261118fc74867d22486ded54c029915c90daffdb856227ab0a8f5c474461e7eb088937787bea2fe45cfda0addbd64aeccb08c14b23e8aaf469459814aa3f8bc603d53ca70aae18af15891057eafb1484d3093d1ef857ea48afa42a6769ec8fdee460d14a11cb832a0b2f410a4988b1fad405fa334cc033575fae06aaa0ea633dd787fd07850caf106761e76e3915c4f0d93e1a60e9624027715e7351555408414952c2696af706f8c9cd6ef59e0ef940a6d7a47a7616ee16b82e12542993ca4fd6fca34d7e7d8c5d1121c65bd76089a73c7d2d26c9c2e204e7891ea5d48dade032faf2ad25be16051a59143ff27e8f3704c577292a56f365d4376dfca70d6999eaf1211eebd8bdcbe5a509d60f3ae37c4a9faba1ba586f669c206896b1fe7819296791bd8d68c747df0e2db4b72b91e102add325f856b26189c13e7e87e624a8866d6b56f2e1f1cb1bd02a9dce5636187fe6caccd81d06f95baf8a3714b288151800985e61a264277c167ce0524367bfbb6de408882e9e3ee3029e239f105ef26c250df10726519a8b1709ee239a598ab14850dbd63335e27e634a4e781a9d1d28e9f1bcd99bcb752a9ef20d43f5f38eacab23bf368add3e1b63f284ff121c81aa3fbb887648c1b72f78cb920acec96c769d951d267a7677b074f363365b00f8f4572e57b05f64c814b04df7d18e7d29c3ee10f27a37f669e327906bed8b8c9a4655035a8f89603cc98d144fa7a8ce8a470444751ea94dac27a5dc44729557694d156780b8f372c1496ba5494de7a528213fdcff8913e6b826e38731ccb592dc030242898d37322f34a9f6d5e71a7c547696a914c676e807a8a15982f5ca66901987b1112a788a10f9a0f9fec186f37367629028a5dff79e8c2f46330d0a97f9516506c29222387966976068a117cd230e8c056e0bd5c7838e585d14a011fd1edfdce2b077d2a556933f515df14c8b7148ebd2aff4f93c352e2953aac60aefb023bacf5f882ded25282323a20bd657f2fadf086959583940c9ff6d02d849a5dc15d36b107ce8b5fd1a089120ad493420e5e4c535249ac4ec2ec3ec72462aadcc5004b3f1b84500955d04f61b4f74a85ac552f2a3b7dcae74320332f4e10869e7c727b4ef02b8bdcb14a10af346b5edf07af7f538528840155f2c63ef22fd2ba2cec450ce6ac26673d14a17dabd0798cbcbbc0e999dc3073cd76bab778797f415dc577e7136039d281aba112d18e5f8e1e27de3f2fcc156b01bf150eef5c6f2e87230683e2aa04a68d53ffaf050798f57d62c4ee543826334875586572c6309ab25134a1cbaf0d29e5b16acbc43c5c304a134a501cd7ccb93511544cdc993dd645d7285dc47175bac7a6eeb3ec5c5c2af688156b527d7d692f96d1e52cb6631f847ce09b9d1759db152b8d7bc4b5ce6f0effe1ea4348efe20c9d76fd10d29ee380db816c9268a0d36cca993bde120d3cf409a9e63fbcb1bb63c6d475e84a292b3f6d97b6cf243a3effa0fef55cd53ed492ec5506121d880f49c08a7639fdd5ce6065480e8e70632063e48c1786f047c7cb5b8eb10890ced43fe7caa98300ae8a4eaae7b50d2a22fc438f494057a2f11f75cad611fd76720f13331e18a8af5356ad224006d32281bff6c4f3479b5bc54c173316616ac8982fe8f86e2822095b32173a816b8ce24363fc6ba32651b5b0583761b93e656d35bfaa2a78875311455f03b180f1119e1198d088d355a856162eb3e16b41fe520a7ed24edbd450a3aa1f48ab18777c27e1f9d599c8f64d1346da8040df41bbedf16f68a09c6d337477340398ec6f391836657d12404b5571a737ae226d164e77e0dbbcb079c4558209bf8c067e1ecc77bfa33116d0d61d8b3bfbc3b6bf6ee6170bc7dc6c1c0659e7bbaba553b4d7708e43cb741ca664c3d68b5528c0f5b6a2483521e99afaddb5aef7d0f34a8e04d7054e50bd97f14125afed54b29324a268d4feeb48badce8dc29d3a18c98f875efb32750b26daf82984bbb7657d7d1aa770bfed8dcbeebf5ce7c7249234ff4fb2fb8aec6a4638266b5081aee699d1707025fc6c7d2b41402e7eddaadcf81628fce969d0fa9be9ad4ffc3cc467229f2599b1bb88a4e684197753c5538564eefc6789ff4c4be7e9b5e847caeab92c307f6486e35e87080461e2dd0ac06a7240c1ce16f2eff6d84cc1c84c31752e0fc7198e79da4ed67a265603e9cb29b881e4e5f94739d1db043a92d9fd0799493b3787a40385523bf5cf58e663c6bb43acb0753e2448d03d71c37017be634bd793c3af42318aa24e845982825ea777d815bef988e9dcbe99e3ec06aec0167e9594d3dea22212283d5e5d00081b408884f33a5f44eccecc1f726c657ea72d868a5f53cb05a26768a02b3813b0637fb279dcda96616c1bbcaa220560c0db62add822b9babe8c374be499577b5d8ef2aafdf569b46c285d6dab3adaf1934dcb467fe48d3adf20aa6765e1f168da4062d8408f5b697ff6cccd4c5826da50f3fdfe56476bee39a28c95351c08627f82bb8685082993d3b487512d1fae958fcb9229305ed73200f523cc9e069b8fb80008014ed3451a8e8604a70074077a6d5b1360ec47e32597a906046edf179af1703b8f50eec68c59965cde92b20b72425124b0073016fd5f7942ba3c0f69fe11be98b9f826b9c89ecca5f26d43b62dbe509f8077a0718b8ead2b9e9a96dfdf7df7a67bfdf12ca00f69e7f842b885baa742d6a4eae1624c9155e38b6ff1fd8a3bede214f9809298a50a80fd289c3f9d3e553f9ff5d84681539af180b080c0af0b0c9d615b556243ee7f552e5b97a8799e8a8b4e34fdeb5ca31e787c28b3fab404f7ebe8b6475e1383b485a98e7d799916bcbab70927f601e478f2ea982204de3a4f186b6f67b37c4d5ba6e9484538af6a66d15e2f62381d781d3ed5fb96985661230aa7e87ee40d5c37a9d786f262a856db9e38f0b96b056af3a6e9658f1aed6be6c51d164a13d88e05c21fcad486ecc49e5befbbaabc320c292d2b8221c457a74625b44cfd9af3ecf67cc52d4bafbc1f47e9cf95b26365b350d3555ff85096d1281b2196c113de9843dd1020531c401dc90a6a3f5ba4a9da4c4c79ff4a0a6b1985ff312fbbb20c939cadda19acb2784b1be1fdc594f6e487967b5b1ae3301d279f2695692f93a01da4e925b4583fa4b8eff5a0559c37b720f6ed7b43423a9184cec3de20681ce54483a19bc7baa7fa6338a0f8de5c3f4b9330e10b449cf1b438522b9d9a42ac59121bf63be8098f55e89918685d22843657204053163fc2b94f9833077e3f2b50aa173a7f6705d0ab03ad920bdef5a9ab7679056de4b5e3dd2f5919f763a45f8f81b8744af836018812d107571c99c1b659c786d71c6f6e1b5ff77364d8e0fed88d67c337eb9ddfbdc086bb7becc096fe1449f41a53893055fe5360e0df98d5a97484b1b7682ef9d0062bd864b1aa08b2b1d98bc705f857bca5a4f0301e0fc00e35f9ba00312f6dfdb7146af6f512c1968b248c34aad21605b68a2eac94f6e017bc385bdff629ac64ec140bf9dfc2e5ca7400eeda34a3ec27152df771ca79249c2ef6c9c5820900049d465518ac8d2154641a095623f7762c65a8bd5746a0283e489d6244e0c186e7753b853eba2075b4fb63dd6337f0e5996c17c2ccaeb55f9b5c68618d2291c0eda9b8a00c98c575614b59632b0b131d2b2b763725c36ec90587f9b69aaf7ee0060fc20b53c8aab3c1bd164bb7769cfcdd68d6b15803fbac7114a6b88a65bdab19b1107f98675f82c849076e3a870e330a28a66e77d632a26ea9d2cf73da4afc3c995c3ba375c4333a74f013f410d1ece97bd4932f81e19750458ec3f0ee9ae8659c7eb7cff928b554dbd6f9f08f86a1271adc72f47b35d891256fcc09f57b3f255584ce62022919d428300611d060ef82adb07a8ec7fd6ff39814c041804f445ae4dc66963ef9b3b2c73afb2f062031841f87d28aec902a1681e3533197097b674654085b143996f85f0b9ec0437436bd75c0f6f8f2cdd188e9d3ab22bee8b41f24d14a3edcb3b96ca835f3ecb0ee707346a288f89740994c7204d9db54244c0b3d40946ddc057277076f84d2f6f90526e045d343c5c7dfd64e9cc1ca16451af61d56ff935f8e6c9cf41d50f03d400d60999d841038e476636ca82c1e56c60e2d787f32eb03e13b492ac243cecb2c146d6a26baa8d25ecf0c2aba2311bcbe03bf32d4993b7877371f6ffa24dbc1ea35fad015a21e60307e98b44aa63b4c1a4cb2b3bbd487a70f02b894e328cf519c80c85d2846bb2d99968674da32eb227cd4071730d6629f12e4294003b38067fe04e409354b75ae50f97583e131ae94ed459678947809e9a5a561a6bc4cfedf64a406dfd228080911b4cd3f0d1c6a66e3db59a3c566eb1e163545570743a2df4365781c57b2e67047089bd2e17ce478cbf8c53397a28da6ec8ef1ffb88b1a2133633da2007a94eddda050b470ba7a6dda47c1542668563c3c13ae036b12adee4ed1d19b1148b6bdfcb2b5171959b9f169d276611a07cab845f46d2bd8b52a604ad47fef046bbcad853babc58598065b20f45268f58ba0e7e599012eb855803bf5c0210491ca608ea8f2a7f7fb08c18507ed732b720c0d75e01618054f16c63a590deb62ac3b10599bfdfdf06e2ce634c5b0f248399aa49c727c38da925cf35e04617f67513d082a0114bb24102791990f7b3242e195141b01a27864be9165ee07c7faef6d542cbbae0d5c85f432dfa7807183510e7e3322c8f004669a7184d84c49ce7a4321cf5d0e9ff5b0c267e68c2dd2149d45fd68f61905f4e41831f36b86302365c54a15c7bdc31195e2d88e324b4c2585a6145e1c468361f4ee6314c8ff7b97da077d7022ff6aa99f3d5a8cad989da0893f2a27e251c8023636fd1fc35d95608ae6c1f3e61e7f83eb3a67b0b376b69231aa0323794436738e56494c4d09ecbc4c1ca7ab943016fd8c7c9a26fa46633a57f3a169f000b3827ead72c3096a44c9e59c49d3d8cab857aa15637c07a6a1c5c4f2bfeb751829cd2e0a6199e0e8bf99e87674f88eec6d3ef26ed0b8474ac4d667f789b2cfa62ea24847f36c01d18810cb1431c75480940f0fbd415b421b88a65a5fdeaee92b2e93b63cc557b5c17be8584944ee7e30b50d20e604ee60fb61975173e1367eec1ae7efbd2c5bc66e4593b2d6c1a1373876e80a878b962723676885d3351d76c3f0ffb5f7cb1c0f72893c355e8f9bf3955223c0c473f1645a924dbf31ddea09149186255f680a1a881974470e9ecf8bfe22dce4d526a0628e500f5a8010818304c502ac607d843e4dd3797b1ab158a97ecd06ed67f0e6318a49a41cdcc9c0a8319bbe34aa81c1cadebf001ced63dde733e9b9cc19a272c6ab1beea2f8215cf42eb46d7bbda44b70924c8220bf3ff7ba5e1e6dc8c934d300c408c29a6315f88887e6dbb493688378c12710d829d18004f89570b9987ebaa8ee69c289bf2a0bb7592fe6865098a429a1cea36c00dac42049907fe4f0f28f320f9040124dccd1496702e37e56221045f0d01b77142bc7e4626a3969cafc0e3de480ac7ed0aa161533e94643a93af1b987b25e21363cfc73dba6fee9b2e5811218c67589082a77019593687294557e6d0f65e07552f5e23fa956e51b4f2bf8ddd1423e08815f74d704932ad0da9072d67da51c5942c412bac0b97865fe66e165b19580be5994c182438828fbe4eafbe14fb7caa369895ec40f48a70581451713de50d1c4c3f9799f6725fb264a43bd5ee6d84a33925ff215d06026166ab905f088f0a3b411e7ca3b2f911639f559a2c427b2bb706eb49d95867bca0bfec100afdbbbdca28d1269ea1f304ffe5d85d668eca8c5287d17c405d16752cc846623c0072e3d55347c046390241920ff7ea74afb7232248a19746907d4caaf21e18b2b6fe9b5253329dc537e95b3470cfc1ed40d7631d490db0bdad2c1951f1797086220688f520e0661bdab32c6d078658522d79fec966c377a04e137f033185a1d6240b1efffa897f14c15e8acd4eb6f6040fb743a9e7b01c84f4f3dfa2c09912450fd52f9285d1ecbd8ad4e7fb6df7efe896259b7d00351e3b344dce2c43573278de17c8e44a2ddc443a79947efe0c0847200b0fd7d77ea9aec090507603eb5cdf4a724a6dcf4e555933dbf561b0c609e273dac71043498d2c0f073e2f09736204df39d2c25707af86bfd302158ec0fc7c4cf015da506a7a2a37d4024b17ae9ebab90470d0957d9464f38bc032572b42dce5047e018eca7392befa58a464902cffc6dac246c7372591d013aa2fb351688dce8446681d2f5ddf69d547c1787bb22b5c88a94ee4a1ea6dc4e5140b89fe96e36a6eb87e4cbdeddd2ef5db8f6c68941faa0522348d4e720dce28730b8622de77bb2d1c8076a3cc3cf97f3f935e6e554aa6f28b802b3f2209df29351a8f52be940285a3546141577ff56240e1981bd5ddc91c1f2f8948c0c7531a4e85cdb8b55d9923c427483d3e98d93b74a5afd66a9a95ce4d054af99877fa86252e3d48b97b3d9fe510905194910410e1c006f744c2dbae65351a8c554f3945984cf91372141872ff88bc573314dfa22d7974ab689dcd84af3f8cc1375f4ec5111a4c71a9a5d3cf83c5203716a64bb98e8445af763dc8c36eb2cbf02309c7ae78c54c2971e2463ffba7d2c89adabfbcf56a7f0ad8bef792fa095decf5dd60c6dff6461d64620dcbe213fbcae969cefe1410271ee32701cd929c619a0bdb27ff4c2ca4b39dac793c4b95bda077d1c51b6da4432d6fd7a9906e4ab9fac97c95a6dbbd901acd819a1908027fac54ecdc891962034b80c4657002ccf97b965b0b168ffa3aedfa45dbdab8357ea8be535cbac6f43ffc238be62e81ad4c92b13970a167892f665959853b7947c7124db94e138abc7638f0e7243388d8aec2554ad1d8053b5a5e05769a713fec7cd03908c86f097b77b34dd34c1b4b356116d730b3aefd240eadeec7755d8ddad4c452d3b3173b1d458636d6c341d7ac2c58aa685b59fafb1cbb67101e91f94d7e0fa983475f40fbb3d3cbdb893b4bd31ca402f0e92756276d7975e575a040e339accaae9774f94d32c571eb8e9426fffb2374f375194ec7c29f2479ee8cf2f4ab785820a09e750a4741b33f0127f681da0e800893338ba7d4d517432960530e148d1c3e62ca19d98f6c491844daafc5f7f526390a10df6f8b5cfca9c7e3abb6865c1c6950180b45a715776a4df1d61cc4f10f4087fd70f6cb887d2e0eb7531dcd29f1838f44cf9ff180c9536cb2840fdcd7bebe70abe130ee79d708b7352ca771603a9e06096caf6d508dd03b85fadd01f800a2c843e6a3d6df47eb512cda3836ba0c6dfe7df7f06cded09cc6d343c3834e78d10bbfe2c830afbca275ce1990102dd26756f7cca2b521eed0c62c3fd46b55756fab53d97ac6adbc6eeb5309b7a4a42d30b174de2da6cc48fdc494d71a57d5278c7d820992a080ba6abdf302c6127a73301079dcca553d978b06f7ebc365b8382887826c128de3e027247a3e11941ae4d1a74f89e2f1a002bea139805dd909e8e577b6cc7792233d072298a08a47f2754a75071a14ca3c562f3e76e7d6a532b92cf869fa3799572ec74b652a442f1e2c4bae0d72112d92c46cb617d9e586ac820f7d42827eb5e36299b6410850ec6d8c0e9b85e4caa1f581dd8f65cecff1bcad5419807e8bafc3c1a720712bff8b712ce19299e850314003b6ceb99ffae134cd9aaa1d198b40831f23a454f313117f3344ee1a7be8dc606285f3a2fb4afc008b877ceba58db441aca2cb8174d42d30cea93247dd88ab2433dfd08aed1ba23113a4dddbe84697b444ce92c3cad3da0dc4ed0871fb154d349fa68e55491990e4a9caaf6d9b8e578d2a1254328334b73258d65590a45a11eab724d99ad51e0d791250a65eab994b77b36bdd84c10c03ddaf73ad4e0a0cb7d87ae959ffb2eb9c8d5fa88f3521de5d709bbd9621d75239a41d9ac5f20f38fb0face640f000c0cc5399c4c66d77bee4298ac8282642a1402207e21be8d60791c0d27d6f90ce88179102bd8f4cf6968004d75b7a1870c5b665fb1c8f74ddf50fb6979898995a050012a3348124be21721d9529324361956f988370a09cc42099933127e0b910fb5dd76efc591de9f2a625e2531b1d8f13efc8dc64d6593d9f9c719895b8edf199cadf44b86fea1e2d35a55a77f3ff35ddcd43598c9d572f689e5b646647aaf87c28f307a07f7c02a392f828bcfe29b383a9c1766d582b77fdcca214195bb1fa4c45e9ce279267e95e4d0b4c6aabd19f99bb0378f533bc947b777416cddbae178338aa800d401c213c0ce1c9dc22c2074751c282e8a419d32bea3c7375382d70d329eae46b0aadda942f07c4f99be199f2e10cde786bea26ceee82a6fafae82ddaacdd677393ed6eff625c4b6b7b1c1f5ff12984c9b2d5e22362f0791900f3d7c763c8ae7d9877a32dd5fde25841c9b84f1671a46868dd8e82d03a59598c8369a5e148d96c4695b045f1f05f4cc81e964df43776f479bfbd240cc0e801ed51d7f6c144e3ee9d4043b279314dec7250e8b29d6a65819628ac1ceb2f6efa6eece448fcf48839e1f743dd57ec3134356d86aa1929136ea9cd95dbcaf4a54dbd5d9522c8b43bfb76c347a4e097690464ccedcf4c6a450f81b46b1bd92b73fe12949b95a5e383a2cb59b3ac792839e9e5c72cacc7aa8c09212d98ce0cb7530e7f80116466ab58cb301f091d8c193c1f25d859df48fb51eacdc173ada64b0f8bb82e6adcdd6f858ff29449ca5196d6567d9ab789442f4003b084a05df154d1be842f796b6f90f1e557e2f269882e52e1ac110414ef753c30ee323c8dd225a23799b593e314b0dade158b6dfceb75c0cbd9fd3b995a2b1bf1c38fc68a41bd2c0cd403173bc1de7729cb2be8f792fa57c7827e7a09daa12963b9fde3e3e0a44d47b4ac2679fbf7b7584c0d2d9d6b780f4127186868b7374bfdbc4a15250c78f8199c3aa85743c872c1a337afc6f46cb0348731ed9930f089006f80104a22762ad347585da6a89ce0c3ce77d12b47a85d87337bb1b8a3d987bbd03bd9027e00463b132dbaa77a454246a4e049cc582e232a36dd2c3080b7bfae1d6109fe0820603984b2891c089d0b60536785c337c0bb5b2a463388eec14f3a82fab9dc6702a78c7fd37da86a323043cebce2134ba04b60c3200cf88f356db49b6f731e7eec3d8d3be06b10ef9005a0345ae6cb30667d18db1690eb653cbd879a149645d4b1d5bef6e4ccd0e0ca9091b061752f88a300890ba3a4aa108011035073f003ccc080b230f9a756d6efa487b13610c926ba5cba3a4681a3579806e50e1a3d952149547d82f673d745d483213fbe1d81ac0d8e73085ae68a0730027e089283d58e5e15794f3bf6fc2ab3836ab31783f1a9eabd724563edd807dcd44e3bab18edc75e415f4ff8f7810dd13d0f61779883349b4f586ce138e61d59fbf93d6103d0bbb7673076d4fe2561f3c7297f2aaa2e0e94b337af050c2cc61601f2b9a82768d6dc906d3063cc3636a13dffc29b378ba3a964bd27c1d90a81c8233b077f2b223fc1975c71a997a0d4b877e71d82a590d5062dba69293a017906a24447b802f66bf52dd5e4cec1b617418f620716c58cf03dcac44a047942ec9ee56c1eb73e47de7aec145693fc88e8209fa8008006894f698b8a3e4caec4af915d42f297f35feca15ec8ff0af7e2e10d44d39f0a1fe07b46fa077ab2d9b1030ee04b90725ebf79a9b97216b6a5309495333e62931e3438f94a2220aa6dbb738fa67432aba01ff6ddb32f03efa00be2397df2dde1fb86e9cf7e6173380b8b5738f3589f652a43bdaab284f5f949fd11254cdef013cf7e544c2066ddc6af50ac964a1137b4d5bbf18ddf2bcfea1224bd753e109779e97b90eb0f3f186c4c9426a7abe65021399646a5f1875c819945e3ef50442228b8200aa099f822000cc6ed3582333cdf72255056c24c76a0dee7d3a11b535ff743b9ca17061a8e315a4a5288ed00e2419ca48c0bf93acdf41a52f6ff0fc8332eb212318cb5707f51656f1aa46dcc55b9baebd01d10e09c698b0ac22a1afca07412593322a71f827e74cd21e9761328acec8ac585b63be83093f6d150ca00669b1103e7e11d70d9bf160ee1fe42998afb70fa96793e193d2df1cbbd8d1dedfa041095556bd5665a723faf87e33f75a45e80ff94f68a6a9a5f5d4f28e9cb3702d67aea3f67ab29971a4e33c103575a8ed140e2a1a80d9573b482c80d4b6fa53cc20fb02ff1970abad0a272d6a55e4b6ff6d4770d5fc88ea102a1cc8f984319eb92df58f5001ac3a8405c1616cbea8142d4469d33694d06552069f421920d3ae776c034f5c0cb8cf885799d726f8116ad68d4cd43d4dd3b723a54af31df7a5b3103977ae8a04b31249c36f19d9ac944571366c60fd9e0b536a94a13a709f5dc6cd69bd60794cf5d45f7c38106aebb90411a7f89103333eccfdea0230c0b4c12fde734d800d034d5e63b1a48e19b5d9e921a4fbbdfaef2671a67cc9c40edad91791e42fc8f2eceb919f8482d31980966945ad56e53a49a67009f9c1d3c9c11dea3200c4a68bc899cb57c9bb795cb3642d2a30916edbb6c363dc0e9839e2ecf9116420b050af7952502408b0c0a76cd90f92348dc0d57b3b07d8fbe5a92c6e4659b3c7c87e331d3b641059162a6bb678bf62b4bcd29cf97814c41da7e9d0ffa63b7a6f83d879875c989c83012a0dca46bca4f788c44a2f27a0273cfade41f4a159d343ed58a60e6b606827886d44d835126fe62baa4f3fca4faf95779b8bb51fa650cd8ffcf13831ef4629764ec6e0f2b9bca0acdf1a2c75340196d7977ee7f26458a1374d9f6926e0d74c10f056cae2b7248fc11c394180b24990b6d2ff102ef9bb6986011dd11566b212d3cb5485f0d6468d789af921cce0bb79dbd4ed1fdbf78de4eea0a488c7e75d25c7bf914d360533139fff9f0a55f4c365ce3cf39a04b67e7c490631070212b42ebeb3af79980d42e98f88ab2c589c16a36656fcd65b6e8edeabafdbc0242469a285e23de9b2231a12772f4ad901bb097306a0a00826a56dc3f700a0f4b3faf25e02c49be52066145097450d3994af1faadec4971ce30d841a18aca80190112e16f3616da56e11cbfa3e618057a3f67311185d10c646f4e96359790828f478a58431597f4bcdf5389c2b11b8dd345eb09742cedc1446388c8db9528759cd3d31effc02cf1283fe4efd21658cf76235ae71788d8ec251d8e955d2ce737f7e4929a2b47359221aa77e3da39396dc0d6977da8c05aaed3022fa246d150bc500c7de33ba6574ce61a2418cc8f4e7abc2497c3e332969d02662a7609b44198ff63f7bc641e4b0d8ccc6bfd0e5000ba6c9d6474ed0d312ded0087862c7d22adefeaf88f305376e8a508ff49bc19dcf773ac7c21a7528e097450306e9ae84be5b90718821c68b14cdd82d633bb9670313f935e8e48f6db3991d7a73175aa6f4d483e79dfa6eefcf72a43944e1086b08c505d6471807e6764b62dff2f19a09595c9ec702ea96417dacc2415a7c86c55f593d8c0cb910132a3dabe5f815bb46d40bd0ee8265977deb90df0fd562b6605aebc6b6b8053767bef3d34cee6e36ebb93a4f68e62da0e0c36ce763c1acec9cef96a805565eb28fc4fec45e6cba8810553042065b01b586114ec9d6a5ef7cf33ca03854023d2b01e822517d6128920b813977b8ff8c04823e2eb2d2b2a2a9396858e3d4f4df290afe14a79195ed9081751d765c5eeb32996028bc818b28758094239d2450cd518f6f3af896965d52d44d70a2e4df2c7289c57e2bfb953f39234d30588e9c70ea27807c861d32ed3c39340997d002fdad0f3a7ff0ae33f2b6531a50f224a739d522d1a7f38ff4ea61258455d91c6db4e3157544fce37af7615c27a2d672ed93e1b17b5e6878e446f1ca8c48a300bc993945d5abf48e67951ad71839d19c37ddcd729329c36f164ea8bc6f7c959a58a82716c129ef52f655c1ab288245b75a82cd0a62fc354adcec7f673327c0c8f1dbf27ee15f186ace91e613d3e17fa13f60d1c7d7601c5942b9cc674199486add230233f3d9333120d40c4e89106955b93dae091ac794f8969a72620c360f3f93f4f0a00e720b52db7a314c3aa9827904336b08c5fd5589e43ae1135198efc004e180e281b1a3832d21327ab6ce7a3abb742c390b0e91dad740f9242b01ee5aff0b15f65faa2012bb6602325dcf3afa2b0b15624ad771f74b8779effbe5acf96496fbca06ab7bfce17b2d2284d6215e26929015e81ba251681aa9a9314298116be9949b874b9972b15e02e3678933f2e4fc16e268999eb3f386818869e975c6795e7be40504ec455dd538d2e586277f700ebc8b25d51e715700a36e4e6c94a0f98413dae87be79062e3b81fb38ea19dbcf24b4a40a1b182d157a026b75dec0f4dead92f6cc9d475d2576e3fa2404b5f6dc02d55bbfbdcd3937d87b2f8b6ba685b3ffcebe34d8c4dab97a6accde4fb13ecfaed286e0d135cdb83edce07a307b73b1f25f8c6068805d7e1bbb15ef8c6c596df47644245272c044f752033e48fe7ca8891c75d8d8a4c2e4ea0ff1edc5033506b68ee30b5122128e69417f386b1d2b69e00f42166142b933858e895b4b7231f3d440988b12cce88aea8c8b480d147438203627e750b834b99e5b775c30cd096a3387b0c4b8df30fa4c19cbbcde14dc7de857475305c75834282ac2c15762fe2667fa5fe156619988b6c5babef85600e1d10d139c69af984cefed6293fe573be9058d7734a7acb7c43431117b49335e7f7da087b63799da60902ba8e52c3c0c1f1652390465207cf35dd431d79bf60544af79449a3679fb776e733a5c17f58991eda460a75cd505e4a3d759ecda899516acb92997be46939b211e7756ab8fabcc7b341ecbb9decc4869d6320db58c82d37fe03e1e9abac731498b53aa3d3e5b623645f4b8afb31957bae8676f98d486b5c05058fb7306ce403314d1ff6b6a8baa031c23cb336ca2e6fda2f0c07f13e4c1a2167ca8ee0192ad9976268e79ad1a06e1045ca4b1d5281dbcea63b90c919833fecc0b654a62fee7b1347d469d2a540f88beb9190ca00d26effbb2f923f5e246bed6c644578ba675888d78b91094ccea75f70d54b0f8dd08a2f2dca86ff91d51d2517d837a85a17a66b0e045a44213a7d615ff307366429c1bd20e899cb31c29b19c432f8c03af7906ecb3e86e9bf69105f36e12c5b813cd2d499e640de45d5ff65e13395ecec4bc133a32e3f7fe0da5dc01082283b5247aec955db497b04779a45cfcbd520bf48649c0e651dd0d522153dac9ef6a14fa939d0f80f6471d6e40f1797b997764db9c5b2f4f3ab0cd8d5cf64402c07a18c25faa5bc4520d5254a51820b547e9b9f2cbbe699bca3cc64f17683719156a3c80c0164e9eee16e2447fd305c1e7d9964072bf4a9935a3ba91d88e4bce5448a68ca8e6ebd271f1a9c37c92367015f7ff8a6a2e623fd79e4790dd0c1f32aa3b8f69fdec2771559cf9c7faaaa684340f43dba4347b5aad35176a31af1241e797715a15cf4fefdac179fbd8a1f638973c1c314cf93008f3347590204d0ef64883d8bb4b988057752105830c63647973c7387b30568c7a7acba439924df6e36e9c9ea5fceafdb496c33ff3a6f4e6ced62ee55499ee81bb6a820073feec904f995c6ae212f9e96c7e0570ae1e8015f25471f60ded68bd58645344f24a0d13be5d39a0a42f89f2e4ca7b8db5dc3edfd6ab5d1090c78bf78edf62670fdc4c04654ae1550590d284bfdcbb229e06894150351314c8945e1e25559debfdcf66b2c342c4dcb07aa6519159d556bcbcc68fde8fd3daa9a7f82b9ab419e017401620085e9c9e4aadbf3fe24b7c2641f8248887dee395f8a06c9298fd8a6115ffce592a339a24c73ad2e137dc1a25e4ef878ddf2626a49956f948701d01e3bb2abed113ab732f1be0f76c96118cb2ccfada627338bff1e8db38bdeb6dd3c3bc63f1fbebc6341b18a3f415b944d155a46168d098f7612193a6c7f9ef452c01b20e1b7393274396203122119a12a4c3ebe60d966557b8547b1e02c5e979701ade7606f20b3d2ee70435d68e2392dc76749e4fbce5a16ee7c5e75359e7c44fcdc79fd1db7b32fce26083dac0c20ac6c8cb4cadcf3b313bff65b834dc1c0f88d0e22d00598426b3ae02fa7c0f07aee4190f3cfa2993187d4a726ef130abd9a25f49fda767990369cdc840adaa324a796cd0e91b705ef54709489eb1ed03a2d27ee4434ebac63dc2f1f0d2db47e71d5d58603b5b722d3c27a1b1de6e275e5f6cc8b7f8761d3f4a886c8df48a4223064042588fe84f23960e9d906e62eea412b0de5ac58d85fd05c152a5e7b4ea8ef7bc07c2081221145f59bbbe655599a13ca5c0c6b28d21b99922b5a153a6130d12a40958cc00b95c2c885e283986f9ef26b900141aece30bc8f2bc2b666752ec2a553323a7f35d954a89914ae657657bbddbf994cd17718fa26a5a3bc8cb4a0befcc48977082d33b22a9e056460b72a3d861c9916b7e7b9543fc77ea22b4343edab43d6961320ef281d4c4bc75f1b6c988ae0b27820ef3c8846378f4b99105a3b51ce3c9c1d7d8face00b061f8389f4396cc5a91e6baa54ff6bbf3dfca78a21e9c82662682bb904b226724d2a4e30ce4b4c3e8e9da0c767b632566fd9d5ae03cb74838c860a2874707c5156a6d4d6b34e4a9484f20d44933e8fc7009c3424c680fa83515458d1ddcbcb107fdf8117cc7cae8d6b42d3d4adf2cbfa406672629220ab51439d667c2c2987cbd3b1e25d1f03ed7ff74493a01358adf5cd3ef8509719a3ed5673911ab7fac4866490deb28ae8c728d03dda4dcc02a454433778dd92427b8feda83da7bd04af9f3c3121ef11d746fba6ce652c87123b6aecd458729a72845064edeb870d935fa0fe75db8e5aac0e8bc961aa754f11edb9b18ac42c207b5f1c3ca5980f2f2145667c832ad2f3edeeffeef89594ec2cc90cd1da57070b1807a01432df52dae52b53a9cb64a55fbdf52d9ec1e0e8ae3e2f5fa48bdd280930760cad37f3b174041ae77f30bba01d6e98112902d9c31a0fb26ffc800274ae1b1bc5aa4bf43079533259ad2999b2b8eb96575af633f2cd614d0d17c6e5d6919b0c436a8743dbb9d557c3c2b9032831e354d83753fc7ee4056f7a1a93138373ed60662fb395554eba3204d8f2220a5a498676666d75875879f24eec8cefe217b03ceb4417216cb4ceebe7e042d5f278995640aebc23a0d8014ec016800fe0da4d0bcd14f655ea56a99b1a614c546283c1d1999dadf53ba6d2d0214a75fd82924966623d7f88075b155d70a7f1ed5a81607757d7135b7f14682cd150212f8d592d899a8035080b7776654ba7d98d1ab9ecbca1a4be557b370b08bd053e78ae92a9f0b4344f1bbffeeda7304ed9a438b7e440a298fdc71bf1bc1267cb0f1522a053b0cdd5bd8acd6c0f749ce6b9b6e1db3ab3b19dcde2f2147f71859200dc9dd04a01fa64714f7f03b556526b220795541e37b6eed7ee5a90f39cff0bcdcdab54be1b35f4a9da5655a49cff60681a02d2bc56013bd9420eb7bbea21fd8160721a326cab44cecf2c2f83a2ec6cb47d1cdc904e8924c478c742d9e7ddead70fba65ad8df481b708aed83c628bbe0cbaf3931928f4aa28c741dfa528aa5424d1e06c3af2e1542059a2732a103438951fe5816c7767232864f0b019eebd25f1ba7c97f00ffec1bec9e3b5b0d16b3d9090e6cfed3ee7d20f646860bf384938d711de1ac6ad832d939a1a3f9ce1a92ab4cf1f3bb4998655e7e8b31b6e171e1d75b2fee499bdeeca0b6b70d0f5c01cc0f30499ac761902c4ffb66574dd8f2e38f3f4ba885a62143a8ef301a4080c6dd2a79e906752d30ab793712f098f739aa0f0edd1f0053c1e511333ea4ddd23dc2c11d9e778107742910f83d6a28adbd20aed06cf79c5d13af9c69f433fbb51b8d2b7cc907529b5e70ac2aa30d21bf89976eaef54f2cf26527a23a8d867b04d5b6c1dc18899552e5182d1e7434dfc571148cf26a8fc4cdac0adc667084ce0f0011d3cf7f0a802214fe7ce02d9ab7d2d8124af8ddb96980f66dd7861702569ed6275ef6ef5b7118d699a175326426e6b9ee7cc77e49f7109f3c5781a3d6e33ec0ba639f38dc832cf5be2d47810278541fd115c1d78c0df7e31ed5560ad40320cb7388b454cacecb4221b6731b9da6c84ca7256e137207b113ca3e0a0c8f93033658e8ebaf4c23b927196fdb7ae8f86f2df2f28a809cfab838f87ebab5b0ccfa2c12227ca3d50ae1b2eb0c8fe274600140a549ec811dcd2a6d8409f88fa886adbc439c681221f794454a6b410882ad4d6b8e9a230d9ab91571f6277c1a6d00dba6aace6e931b42a977deaeab486ea99370e60e9c23e6d8bfa1f53775660aa5d15f3db2b3e853c63faf177316a43c29d70d344c2c1fc489cea44cc54c7a07627d02b7cb880666db7c8b8993e4b6641db9eb790a64bdadf24572aed6143fc307a4d8d5a84873bd9d4fa628761cb73779f8cb89bf9f4b15fda8c68d89150a488e9f41356df0951de79565777ba5a101a1e5327364a008e1cdd919df0612419ba6a24e99dbae56b6d0a4539d0fe2e64548e92842996e77febde119a3073ec4a825a1e01059f153b0b26e37632f48e06f1c943fec169d77114708dbbac19db90bff304194f8cc1e93548a16277eb2ef09ec7732f8676566667b4499a9ac67343d6f2402350c3d59507f39d15eebd235ca97389edfa150f313f6570fbfae1e5bdd6db3834f7f2537c147dfc1abc47bac2c88071a858086b9016f2cb69e320433cd551172c788d015ac58d6390c1445017502d5c4c1705c5cd46c3f14eb0f7f0de3ef995405d40dadcaff52beb2b4f8861509f4e8720a8c3c1f78301df5707026b46e36c4175adc066e22ac205bb55fd3178bf0f830613bf0f781ece6e08abd5ee3b1d5ec449f4888d860601b400bf0a80073c1664e68e64548a12488702eb8d05d5b07a335140d2be4580aacd929c09f1247e772974b5242406af474d55378e9f94c1eb8f07ef1fc1db515cc2fbb322b809e3da94112b15c434eadf308708f62f5178812d4af072e894fba901529d8f32178bc3d11762bdb9292542abf6cd92f41dbcb3e28ab46955da3baf000b3a74f3d7026c67951d758768f48d0ab5b2adb837a4c8274da64e712deee22e64da11268f4882dd04ebcf3239059a6ae20fb2ee235b942965d227d287ca316de72b7a8a7422ff1cafeda47ff6bdb265932866937ef312d4fa7c772f5108981bacbbb13ef528c9b084d4ffae9739b2a4f8eb555b3cfd51a24c94a8585c5a61ad30b26aa0a3db88047beac46e7268f045083a5f9d519ee8adff65a6dcaf3490bac9e6f1af23e0cd32529ca7de7c08630776cf6e907d2a0db2212a245a5456ad79d608d6b6a209297d05fa0ec69280d19859f90cca6adaddfd1710074911107ff52d2c3dd19f51cca033dc02715c6434e98e61a47252624098db86f30e39317bbaf5e577f1fb053fdd08cfe872f99d267b497407b65fc182b43e38e10551e5e1802a4385f0eb4727a8fcca7e6aa122f");
compress = compress.ToLower();
var decryptedData = RC4.ApplyEAmuseInfo(eamuse_info, data);
var rawData = decryptedData;
if (compress == "lz77")
rawData = LZ77.Decompress(decryptedData);
else if (compress != "none")
throw new ArgumentException("Unsupported compression algorithm");
KBinXML kbinxml = new KBinXML(rawData.ToArray());
GenerateEchidnaSQL(kbinxml);
}
private static void GenerateEchidnaSQL(KBinXML get_mdata_data)
{
const int profile_id = 1;
XDocument doc = get_mdata_data.Document;
XElement mdata_list = doc.Element("response").Element("gametop").Element("data").Element("player").Element("mdata_list");
foreach (XElement music in mdata_list.Elements("music"))
{
long music_id = long.Parse(music.Attribute("music_id").Value);
for (int seq = 0; seq <= 2; ++seq)
{
int score = int.Parse(music.Element("score").Value.Split(' ')[seq]);
if (score <= 0)
continue;
int clear = int.Parse(music.Element("clear").Value.Split(' ')[seq]);
int play_cnt = int.Parse(music.Element("play_cnt").Value.Split(' ')[seq]);
int clear_cnt = int.Parse(music.Element("clear_cnt").Value.Split(' ')[seq]);
int fc_cnt = int.Parse(music.Element("fc_cnt").Value.Split(' ')[seq]);
int ex_cnt = int.Parse(music.Element("ex_cnt").Value.Split(' ')[seq]);
string barData = "";
foreach (XElement bar in music.Elements("bar"))
{
if (bar.Attribute("seq").Value != seq.ToString())
continue;
foreach (string v in bar.Value.Split(' '))
barData += byte.Parse(v).ToString("X2");
}
long timestamp = DateTimeOffset.UtcNow.ToUnixTimeSeconds() * 1000L;
string query = $@"
INSERT INTO jubeat_scores(
music_id,
timestamp,
score,
clear_type,
seq,
num_perfect,
num_great,
num_good,
num_poor,
num_miss,
play_count,
clear_count,
fc_count,
ex_count,
bar,
music_rate,
is_hard_mode,
is_hazard_end,
best_score,
best_music_rate,
best_clear,
profile_id
) VALUES (
{music_id},
{timestamp},
{score},
{clear},
{seq},
0,
0,
0,
0,
0,
{play_cnt},
{clear_cnt},
{fc_cnt},
{ex_cnt},
X'{barData}',
-1,
0,
0,
{score},
-1,
{clear},
{profile_id}
);";
Console.WriteLine(query.Replace("\n", "").Replace("\r", "").Replace(" ", " "));
}
}
}
private static string BytesToString(IEnumerable<byte> bytes)
{
var sb = new StringBuilder();
foreach (byte b in bytes) {
char c = (char)b;
if (c == '\n')
sb.Append("\\n");
else if (c == '\r')
sb.Append("\\r");
else if (c == '\t')
sb.Append("\\t");
else if (b < 128 && (char.IsLetterOrDigit(c) || char.IsPunctuation(c) || char.IsWhiteSpace(c)))
sb.Append(Convert.ToString(c));
else
sb.Append("\\x" + Convert.ToString(b, 16).PadLeft(2, '0'));
}
return sb.ToString();
}
private static byte[] ExtractResource(string fileName)
{
var a = System.Reflection.Assembly.GetExecutingAssembly();
using (var fStream = a.GetManifestResourceStream(fileName))
{
if (fStream == null)
throw new ArgumentException("resource does not exist", "fileName");
byte[] res = new byte[fStream.Length];
for (int pos = 0; pos < res.Length; )
pos += fStream.Read(res, pos, res.Length - pos);
return res;
}
}
public static byte[] HexToBytes(string hex)
{
int len = hex.Length;
byte[] bytes = new byte[len / 2];
for (int i = 0; i < len; i += 2)
bytes[i >> 1] = Convert.ToByte(hex.Substring(i, 2), 16);
return bytes;
}
}
}