安全研究
CVE-2025-30406 CentreStack 反序列化 RCE:硬编码 Machine Key 的 ASP.NET ViewState 利用
Thinking
2025-04-01
4 分钟阅读
研究档案
#漏洞分析#代码审计#Web安全
CentreStack 把 ASP.NET 的 MachineKey(用于 ViewState 签名的 validation key)硬编码到产品配置中——攻击者只要从产品源码或二进制中提取这个 key,用 ysoserial 构造恶意 ViewState 就能触发 ASP.NET 端的反序列化执行任意命令,整个攻击链无需任何认证。
Unlock to view this content.
ad8d9422966c73fee42096dad808c6448a272095349f41facc28f3d18d1ee66a0726fb5aaffd9271b6702e0ae53f6961031443030e63d37842b7356b4a67d1f44b648f709f84d99b1640e6f7a87a3d44129b61502fc0c5c728a88c67798e6cfb7bcb30fe880464fad1a2cf9635735fbd6e964b402ea4ed27e494f7c87c72f1c586b333a47062292625ea7240d146fb061f3975a6253d117e97272d7df5aa897fb9fe2c09034f658aae2645a68076992d7d9de07ae63e2fac88f85e475412988dfbc9227686cf8e2a6e0cc05eab1affad040a61d010159d833b10c9f8d565ecdda8c7542d23d37cb2c5d802c34f4e2c08e1118b510a5bbf279d952844a30da182b86f9247013e1483b762026a41a14bfa8e782e5c6c132d22f70d2c8dd069dc7579307d05f92904ed62e908cddd839c81a015fda082368cd5dc9212e19e4a112da5e0193626ea40d3690c782efa25930f3d1b6836ad382b3f5db7ba93ae63a1497f1284383ef8c740d14a862185848e98d5aaef7d9582f984d243ced8ba112289b5a812384ddcd57352fd3290d44c36dd784327f46912c4757e459aea6b9e073c6c5566a3df4c45df0614a255e806e24586136398c55d9b50ad0e4127062f712d22172875608b91dda33b4806eccd401e48e42861cab1a26b0fad1c987c372befb8983ac1e53a0efec1db4cc8648a550fd62e72713fefbd1f803324fce05d2ccb35d3c8b9585e2fd2dbeb2c75745dfbc186bbaecd5b407887ee17f13a55778392d787d3b7570a7d23bb10870699a02459b0b101c9905a9990ac0d4bce9f114c28cad7e1886171225d5f4521d64bbd47a2a19f3f50f2aa29293ab66758483e15b1ea8c16e1eb55054df953e80a2fe66a84567c5e9f780ef685f2f0351c1f30d9646e30a910db179e9f09efae4db6129d2591f5b776dc0f6b52f3ddedc76285f5de356ff2019b14cb5d002aa76e4a5c30d0d900ea233a2d785a4073277e5bbcdf9b65dfbc042ebb7f3cee6f9ffbf2a90e8b8f3b8637fb1cbe99f69008ef9fe5990caff3003249038e7e7814089e3b250e8bb75f8bd726a42e1aa779a9e1817640320c6e09bbd383f6df67495e2f83bcf6b39ffb35486b5a14dee024565bab432e9499696a1df13fb2eef39704d9668fd9f6e7b243bc31fc5e3ce12a46cd6cc54aebc1d7c701074a0e6da745f7d1875696849403e78949fdc6b95da2a0aeeb10a5e57c07587b3bc927002a452a3310fd957940b3f2c3d559b8cc17127715eb95727d8dd59c2bc8a263b3a6f90251a8626d66f63b1ee473b685fca7b8e55015c5e3c17020f2d3526f424d6295f4dfd940127d99e2aef6653bb531a94083063e3b4f2de988022bdc6fc780d63278b2f878722c1f6f3dac9722257977afe41ccb49bd59745a752201c27bcce04371c1e9d680050cc169efc11e2046a7af966f31cff7952730464aa0d240497bcbf6dea4ace78185c02025b675bebb456b1c754a8b06866af7bd55a4fedc7addf399d9fb064676482c4d2eaeb33b1d5fb7260677f85d87adc2d601012934c0ab7d1c8e33a4257378510e93e6b04d5b10c6078d5811d170a030dcd98dcde160665cc433d7b194362b5677f1f19b431550b8637fe6449202cb2912e206220437a6d81a35f08b25e593c2bfc3fede5da0201dfa1f9f87af71da0f689cd1877e5908bd95d56d22db7c51bfe22b0be5bcaf4eac75e96d2ceaf41a36c8642b399323182db64c7093993f79d0207607631dea853350f31fea0307dcb43d9535739e08f9607e7229ce055344e991d4d1be1f05fe77714588a2284b3a70f475babd7155e04827d36e4128f3181273d6a8ea0497bfcf6783692da8068c5fc5de388bb654deeba14519998034a5f9beb59552b05b7c90abbb6ddc7f04251fdda525d5a78fad7202c412912c9bce5ff0d452f131bbd1847f6cd6a187e9ead0fd79d5aa6ee460b80af32e3eb795e564491b73a3a287f2fb378ab1e6632a3fccb25945efd2faaca8d8d297c4c899023f74c5d76a24cbd1cf3f3d724fe44c5dccde68c77cc78e32872644e007dc918ebb502f20d47487d0b0f5eb8ead4462e3a0be550f3c0b7772fee8ae452c2ca3c00ddb47908e68f63479e7516b11e76481c8ed5298870577c083dd93240bef6a9997dd99f2fdc8cc33a55115ee9d45024f97823c313460e396c31285ab1fac303d48fb446692a2e0da115e0ed296ca156f0a6decab49a61dbe1667b9bf3f5f898a8a61e56e0e14a59cc9831ddcc2bacafbd54e3a09fca2a4200d25407ad2b15c023659dcc280669c35621b6b8e0665fdcc5328be3e3a61179d444b444591eabaef6b0a559b13039ea93872402d0e5baf374e3d83478418e4f14abe364416d8ce1ade353ea0de8ddef249e5a296aa18f91e66e24472af50c6ecc658d5b5018eaec74f21b6e5daaaaee9c946e82682df9afbd06ddd33f797f1a818b5347e66df4164888f5c5f2f716f9515ac2c0fe3bea483510e7e4ecfa0e5c85c903c28a7e492d8b7a4433ab8cdb0c339ffe82b8c58395a7b57ef0bfb8172af109632f8f5ba38ae66c8a5330a2b3b4d96c33e799ae77ab5201e4efffe5558421ee78fc740d42b3e101ef37662498d64af492e7f34c8edb24d5c85e5bba0cd53660f0e078e49028e147fa2abe1cb08ca87770e098977df8d733249d3403bbb7d8fb5eee18f1e8755b0b5d20fc68f84d43ddf5d8de4eb14472dfe78d7ddb60093b8d1d6606ec6e758e77ea84f3be62043444d2cbb8a538d3ee2738d49116de5398720a4e88e94508934523ceb4a02889d0a5a6d869f1424b72a2d5a10accee30e9f6a92f73092c6ccfda3881a571339fe0347e989366df94108b4ba7741a907bdad255e6bd5a26f5c4111733eef11e7c78cb0d2fe142fa62fc30eb67dc49b61b33c60a2532e4f120c2c0e858e296188ed407fe5c371423d3967aab025243af2a9196f3ea1ec0e82684d853c91b539c66f15b6efcc21aee527679b0526f5d61f7fc070c49d55bf1cba5c0d7668ed2e02a7139640eb9c542217c5fae4b1bd9f47179574784ddb6233ec0c705a24a2e82b7d1a86150ef764bc810ea50fb26fd75f94df538b2263d42a0a6ca610a2f4bf12cac20c0a8a3340e980ef6fdc528f19c379a25a3684c48d31718a6d7c3dcda0ba4273309f3e59e59465d1e82dd6e035773182b98c79761cfe1fa9f0305bc1dc0e0d320d1b13a4bb8bf0135e1657cb4367e96d02997cc6847e540a7fbfae34e446d80e34505b4f574941154da6bfa156b3d71dcf92250eda2d16e45bf88730aee5c38c342c614a08b41d22930b4548d0df4974d747a263494bfe72e421e6a64232a6dd091b3ba9b0745ca1622140ca255755703a69053bbfd9484e37ef1eab2e8d5df1cdf46230f30bf9511e1525d4fa6e10cc86e9b2bd176c2e8cd24633e5a95e82c28dfd574e1745220d165a2ba1bb946ed0f2555878efde80cf4cf80685690b2015bea77e9ecfc5a6086bcaab62f4e6bce71fbfbd55265e8b67df7dbc7d6640c3bd01cd93cc1f4fcea7741376a2171a419238ea6d56ed76cfd531c958244bec51bcf5a0d5aad5b8fadb67a5e4116df225bca6f8d8aae4bbb5161c35fab0a628020dd7dfc239b31d7456d85ab29ff204b6ccf9f6e9242d306103de57cbaabbe85bef8654b523f9ea160abcc2422322f8b031877a366b018cb43e58f65bcf65f45daa396656f9b246051f70c983788936c9d88f61c55dccc3c42062107abb4f0ea656b451389a8e329968356477b9fd047f16c3c3ff8500755a14b3decb00e2b4d684f1cb63a219ff81982526cb59b18856fd80df8cf543a2f411daa62017d9a3c1efc89b9e2c5f8f733f34ae54750ec07e4ef9f1752ab2f998df273460df8fcabf330a3e7bf65d525d3361fe7a9625c0c9d28007627275a8e676342c37841c1c3e176e8073b2a7e59ef5cea17ad113b2326df8b0de43247f5f51992222565764a912b001020ae577bd5119e825c56542c4f0229d36d29c9eedc5afe53f4667e6f05d8cccf00cf6c83c4c99d2307d9f4e6a9433fe7e5d3e14a047874bf70723a64d408c9b88fe8cfdf61f8031e48d5d2c40db05eecd1e7b5ee7496f9029c13830b1fbdf177595d13321426552deec025755880036a831c6d2a7a1fd429a40251e984d100f961fc91158a08743f730b151304fc8118eaca6c15c39f9a1a2630d31e90e232e24516f3cc2bdd7552a2ff61ac77f575221fc7cd1d1da4a748c484dfe371c6c8abe05403f4d8c30681f2f4a7ea2135e38d2d02080576a97324ab04cf019e67070c9b59be748e0c5b4dcccec5b1e5ae4b917e3bb5486d6ee2f9e62047c54654506090f62c74f74f4457d3e1a2fd80d21378d570e5498863c0eaab9916f1a13441f4cbda6b0beb33acaa15d0b5db1b66640655de4856d41032bfd0402a655afc726ca26f685972ffc825dfe52d1a5f60cdf4d2cda2c1444db622e5e634e2c3d543f07a8d5bd1bd1d1a19b8be641d5d8eb2784cdc7dad1d04b5f5cacfe22008f3513ce4cb2b51b3baa75db3fc432d1ae848febe35ec83b7e8678802733ebdfd9810daa1e35acd3cbf21f238dab9326e37dfdeaba67b773d03a4a707cd497774c03bc64ecb6b8b8563ab9e7ac43400d2f4239c65a01cc77f35b0c8dd906494799db9afd0aa61a316350396c019f8e62c4a403d35d245b7f9e9ae2f8c4e353bbd22767b51f56ae218276fb2766451822ab6e622917766c650ea9676f3adbb776a92a278a87eda3ac804ab300c00349c76a47f6a8c5a708147aa3d746e7b82e342b6611e67bab396f03861a81a18f61c6c426586f6eb098dcd72abb8031ac78706f86f16d2f4a66d83c674ddb8b2ee07f51d82772810de4cb665d4362e8153e9bccd6b756a2fbe0bc206b2dc07b6e9b29314281a57e15a1e567f40c6f128d0e6eb4040fe2715142d65349626cadf240a3a8eb93b9a566242c739de5a18799b8d2845447c4eb9f75a1406bdfc35582977a99f549f756148d7d44270cf5d3c63b3f739e7365d2fd08dfa419ef221c411edcddfb37a8aa758d516031bbc34d91cb76e503926c08150698de9ed39d196595d70a72c94ba2ed456af0d53e4fb79ea92386c0447801143702b49bece34336427179ec8538160897a0b6d2aa3e946f474f7934d6bff310a23313a36daeb48ebcb83b962c40af4e904ae90c56e229e2a7a0c0b04d0bab849317e54bf5d26bbe2d5b92c2ac3d93132306cd3cc682dd5c8ad83709d4ae65f6214ae70f12d6759aa186df00821e82204a76c4e5766af6a6ffaf366bcd580140cf10eb201ec261c918f44a4c18e4b95ed8d87135bc60ff1350031e4b9cb45023c75369fc8d52c246bb49caebcd847d6122d6cd0ba3863a809c92e4a3b5be8da041283a63d3d125f4e8110f935056646a8b5d32c95300b83e3f9b21c48a07e2e49c7f1f570186c28260da065700f9bc9926dd6307dc87dd44f32e2dacbf1861cd749595b509e8d722bff350b3106719d07aaf32a05d0b352fbf20584d28349f93ad2e9535ad829eccc4c22409247f9c3a75b173c2b95470f1e3fbf89d59a16e08a05bfd85deccc680aab16bbcca1e7082e29fc4fd0d3a2e58cf62eeea97735affcc17b0444c5bfb1cbb9ee03d24a1c66d3b194c536fa6e9c9f05e52beda4cba8e377e69b5a3f92e417dd4b4a4c8a38e890e6f0f4a79ba9c3488baf841dc6625551333f1fec566dba3a49f0d4f0c7be90a9b8517a0b97d40ecb3b0ec1f140c98f2fff8b8d6d1d04be2342ef231e110c547374595005a13e81f5e2cee688bf483df681125e196e8d80a5aee1a38d0b26facafaa920d7cfa6348088d3cb64853e9abbe3acea4cf3e47d29d24aa2b00f6f1a5a093028d043f0d391b18908d30d4d574be997cc46572cec52277e3a9592c40889372efab65766573d09970df77d0f379a8369c3536bce5d683f3aaaf8546a52ff034658abf58422c4b4dad288147f26738582b9af32cf16bfd70812da23163440307e537a4b8e498f4d8e0fb20bfdc674774990b78e35139520ba46de3dadbb8c54064340781920f25a5459eb2aab5ba35d527f4c9db13a130288e1dfb3798dd6071396f1b6507b943838b09fcd1b4310223f5ddb42fce9273a72533b641ebd78b995b87c78669531c28cfb2516c2fc3a0fc352f35f7bf35a7cafd0051451ce447469b0acfca3e79f9f84a7d0d41f53891df7e8fb1ce232bc30fdaa631272b2dffcf1d186b39047773404be79678355f05facf17e70423c011d06ac4f290e60bed327f4524220f18af14e4f42de0667bae5b3da734133b74485a557599700afbfaa5e4c54ea3191a0b1d78d49040183a51dd01df422ebab5b617237cdfbbdb0f1ade3ddc4e059ccab0de4ef9e064c0e99f776ce8eaa6dbb45e89451ec00edc31c7e8b779e71c1c6083fe80e10d534e7aff35d6fe643d859a5619b546629bf8c2cc3323ba540b07de1654dff0b928067c333d8ffaff44d8df4710b237074d942edd293e046c96f710fbace04c5a841bb629c8693bfc843d9ecae854ce5ddafe00c9924748844525b0c0d1745ef39dee6702d1beecb854e3092d25f464805d59f1712d758b44d1ed48efa26476a065d532eb3a1569741210efefbacc7d6f3325978720d27fe4343c3be49fcf9611a45edc0721f75f425602e41711f75f9572ee361a2f65ef705a20e54371978a0967af0438b3e22c2178500a1ad8397cfcdb0499fd9bf5052a1770549f4d058cdfcd4c82ee265e0ef2074ed30e99f71376151b3b47f585f452334316ae8ef15b0a287e00626fb0aaaf158b583d2372c9728fdba6c666ceab514be4b54c48a573b354e63057c67838311f2bf77817ec6debd1cf2a799c010fbbd82bfb232c4ba75e39dfb98e3eddda98fa7e486b62b3b02b66f057a4bede4afaa3cbb0004525fe97bb4ce31eb5fb18e59b0107b974c06f6e98e058eea664a22caea9682b73157833c3dc029a488b9d0f6b6b9e3d4cc00cf4429fe6b0f44e95c28904c3a1fd3c969f6b3dbbf74f1e8630c37931a108d2a3fb4ad8ea6c4da54446f20f285bd1e2bd3556547ba324f5110bcbb1040db666d99c3a691ac85781649baced9793211ea1a9bef1f77eef86b0d26f13110d20d2684a34d9d01d2570cee3e7b66ff7a86e323992a4984aa1c4f97d5bd87000975ab377031bcaab46f7ed4e6465a3f3a478abdec11632f64a9a3caa73c4b7f155f9bfd193fad127528facfef31d64a56212f9fb0d855752001095e0a50ccdfa5a6f08a681befb82a9b884fdf896e9ea180bfc65b72d70719bbc052e06f83baadfd887aebe031f7fb81a1ce0e2e684ab53379431c7854ccd20b7da7302de4d34ff318d902957e938ad0cbbfa9f162e95e33fb5eeeffa30fdf15ef10ac975d1134b7d8ab2f8ebf04577786c331915df3d162378453bb04dbdc25fd23c640e05a934b7d46ccd3b8ff6938351fe27b4fa09fc5f7f59cd6e4ee89f8a589426cff4fa77e9214fe41d77ad9b8e211d68b914e94a1a0a72b1ea0ef152f5764c99628905e7d117856304d1e2e383315b0503d730cedb60ac931608e39fbb418e0c4a10c9ec5a2c7f5e1a0df5ca832b451595aba07b39f2ce43bf2b68bb5006a74707c42fca6563337be9f103e3994b243902961312dac81142588a769864383f7801f1ad822284b21a65edb5ac393b331b5d6fd116d57f918ff8e97230474197b5a75e37c7bd0a5cdd578eba1fe5e267ff9439a711cf219156b42c1cd06e8f2fb8ed8859e686b8ec627dfa06cc0d59257885c4c77d4b79a7885152d5587c614ee753c26055bc97a41b0d004a7788631cdf6e385cbb204e20b23062e243a8963ff718cae0e4a4edcd123fab0f1a5e2625c1ac1f61d6f3652ef7cad1bbd02b22f38856b741af0d1b01ee4d0e937352a0fddab5e6e45e10ac900362280dd20431c2bb8c717ea39467bde27bc7348245fef12fcbb7b5c904e486ac1ac5149b1bc59bb5a75c98308bb9b5475827e8e735e7b08c1aa2b762377ea3a1b0f0db2b261a1d6e5d233e85ddad814a97914c75c07845dc1b986902f9638a94836d66a678a98ed92b09c092bbff2cb176f12a2f2188db9dbeb222455ad9a885a00a3d33d30053716494c49603b6fbf7e76a524685e9ed7665e09c46696ba600d32b20811e4234924a5398289b1de52657a0c9442f7638f3337234511be71020f8feff737e8326dcdb68a61870bc9630e115689b144a7fadd964b217e450f85870564e5644728eb18d213577962a380e7186829fff7b3925bb6ad17f6ce2504d76722a6b0d4524c9ba8edf9bfb47690384b99581639a7d4f4cbe157cd5fccf80e36c8b840cf03b14aa909e1f7a80c0f8c906ac13060c55a60486b8dfc2cf33cc1823912ef8b6231a806dde1bf1a220a32497e24052742c0756176e1edc5f7581d780b6ab5dbb2d2fddbaa5293e353b17d86aa17d9633320133c661e642307707dd26163e58a3bf6b95b72e6242280ef61135f4afc836f2ec6cdf627bb7258335a2c87a9a0a90dbb32c1660b61795c3e3ec8c37c60f4fea45ce71c0e58b805feaad96fbd8c252910e48c3278c0823814971c56506a096731b7dde10d48f4b8fcdee0a369fc70c243a58d148bab8997850d8ae134fa908e2601251641c80596be7b57fc678c58a06cf3054280894d49947c8b90c0bc6285e19b2757bea136e69d87f389297f6704cc204b54ae9120c7ac8f748f24a096e9b0172ad2d0ef722b22ee638b534a588b701e3beb6843c169dad5d82127d019e9a14ac765512684873f9c0a9358455597e3b4d3702fa85feb5a43215d1d47a6d3ff6f6406fc078bd39691dd5d29962a359930423fadcd60c8430a86e4dbac37103f79ef53f361ea7339a171d79dcbdabf4ce0fc68f33efc39769f0a13467096aa4aaba7aed325548035bfae0dd7f7f6ee2682a8727ac5edc3161fd9becdcb233ce0c2f46f9c862d528331f45b4b33281a6a20475f9e7d0efa12737686d51c1ead16d2925a1a4f088e3bb7fdd57ba91b1b7aeb62631b025d9f5a5b27951526d8573bc7375290dbb46cfbaea49e95368769b77a6db0624b9fcca9f14d2eacfadc2810aa5c8597e319d22d3f3341d68237e3cd2f01505c2fd5ff10185a247701d6345ac4a644ec827ced91dea09f9621429588d79deb6ce2fd64a8dfa27ffa7cc7580145eb5565d258b4c0a2599f785a2eba578bbb0f020fb7abdbaa507beb6d4d88d8def6e4884f8d3f9d383a56c37bcb4c8476b221b240adabd4007c4b10f0cb1bd82b86a4104cec3998a999f5140d612589e852dd16559ccdfe24923060aeece7c406ce363dea8467d5a556af2c2911fb8b74ff245f46f92e03d76a5d105f76c700a430ed20925080efad44e3b09358c59b1b9bc43615d7ac57130eafc1aeb5f4087936c3ccc3ab9e270d7ac775f9d25749c1f4e0b3b49ca78f5a3b0bb9050dd07cacedfdb3adcb6647964d79a29b94739e0e90f66f447a897dc287a8339d03cadc0877e316f930ddd79b1ade4f0a2227eeb75dcbb474f9e6c49e9716a86299a9c1bcadf64fd629730c3781f1343646163c3daff8a2f4a98e25a7db12970deebde0886473c9858e2214dfe9eac0f62afa403df0ea8912d61104331038379efaef54da3c02a69b072209ec1d527b023e49aa3271a1ab919b961872b39044cdad3e16e4fe5104418adc10eb42e9abff167085a7f353a3f730d91cd292f2de89fc11b587cca2735f36d41cacdff46faba9340754a948e469dafd28e1f0232924bb8b55a888d6df6cafee8a44f2896bab5314cf54c08ca02c7f261e27257520256a7dbcb51f325f67c3b17a6bfd0c585b6a207d257608de2dcd91ada647991f92bc496c2b9a75516277c9069271adca0782722994ab64f8e9971471dcc213283b38a332babfde5969e2886e6b1fd064b423a6a807b093f139420b45f891c017cfcca1215a49e26684140e03173535a1ae0e94be968709d613527e22929949b5fd3e39957d3a8a3761f939e9ed6f5d57099d5c37a44efeb9840b3a7582aef5d103334d5b224bc44eb767e2668bd6f757c3cde3353365808eba8d91f18994f9e0356c4cd63434936252ed73df515d2c324807ecb28477bf79a35505fe0255b3ccae9b2bac5696df18f7b9d80e094f4240e7a5f71296c39f124e2d0367d912d13be6beaf2573fe8f8fc8ecacab908b120c35b603bb376b9c52c6b34976d17fa2c5a2275290f7587d40a532300ecc6823882e416b7d245eb8f49871669276eb50d27d2b43e12c10d0e201acb006f0f1f9ac5b090c252865ca7e1ae098450e02b6fce1e5592704342f61f6f2eb307d315c3a5f8bae13d6aa779860ef793311141f77cffcd5eeb4a44f75a665df3c5e2aeb87b05149ef83bb1f81b3e1c8f5204d3f0ac799a9152d02c52236e078f56f1b4c7c9254891732fc756fb459693ba47478eff2958eff11794b3b90b4ca9b5b65101d361e0f441d96824026afa62489d2c73d3cd151bd581cca9ad0fe7a44b18d7521930eb19030d35c625c8abc34ad72916ee0d649e7de2a344c796f7e9b996327e4673c801c5bd22155069cd3a5e72d87b9edfb6ee4a9113c99923c50d0c8bff11ad8b0274a4514b65437e290576f64e9fadc2c0d9e43d66d0626e5b1ce2436d4d9a5ee49416d639fdde7855f6cbc855e183f762214baab5011c2e0492c750af2b3209aa33b027e129cfcf3fac7952d3d8baca1667350eca32ee6b160d19618e6e6ad66f7b50030f2ede04d62a1573fcfe506982a9b777c52d80de8be8ce7475ac6538702d96d20b3b3b8efcf7192120334eade468acfca8c54ed5fd589240ce1bd4ea12d11bfe17883d8a94b4f7f37448f62e1128b51c1d2b21868ba47c15f06d9e8b705b7977d480a57b400b84f28a4ed57211921bbddb455344961e1284d419b218c8741a305bf0b9507a12373b121e2e20a150ed74da4c57664fe17dc2099a0ef7d04a3ce996baf204a4754adbbaed92fb0ff03768ebce3265f6d15639884fd314fb5061f8a3d40b619aa50044cb9e0a10012dc8575fa1572e4472257e745c533c14ec23121a3510db8852f1a164651c9e025682f76f0b7c31d93e36c71bf2bde84eb3327dde507ab0939c22b892118c487b8575be5d2fa1dd3bfb11d423b4106b7fbc23aae4042089861e38424e0801df6bb1c99f0375c09ee107632d8ebb53403f0ae8100e48e98aff21d4ecb133bb5374afeb52d2ffa0cb8081b3fd06077d6980da4a84fe6699703342ee1d3111f2c5187a3b7fca11bfb8b71341bdd0a7d55f5851f82a4945aa86227a1cb3101e7321b5819e80b7350a435697a98f401e9172e312c4044b38936149b9459a496e70d93eac4f741d2db02a45bde1c4b50a7a707fad02d1719b7f112c83a523c9939836d7188833f6444a942ba394959bceaad557a5117bf5d5e3b7337a448475de67f37013bfe157b0a122857b14ad0d7775ae075bc95d1488f1c263c3292a91f6b28c9f2bc1b53bffb22526964f33f3825c0528ae9fb1bdb4ceaca23b0541bbaf5b958071590dd8a5edfd4292f90cf1f7fdeae8b404f01aef62628141e771796246b19c0f12c503193e5eb53334b236e42648713307d0f27384a04136885746d4c4d31a94e365d9b1a43780158c787557ef638690c4ac4a2afbd5852e4bae6ea48b4494c091c724e55b2ce8b764be84f16249d40f9857919de5a9180683828c8c2c4a66455acdb96daf9175c74e4620d4ac3ad3dfc35be52c85815be7fde07f7c8573afbaca19c51d069c271f352db2be44053092ab5eb19278929fd4467d50e3a9ac4be04d41e0f04bea62889e742b4a63e19a22564e2bedb64d655043a73f7662e807179bbb3d38a31e0e122f0bcfaf0c3a714c684f4889216f306ca45c1871487e4a07d8295e4225326c6d2f5e932c632ed4213182a23c9c5dcd2b1d4e78f74046c597dd4c773cc5e55ff0123daac63c54b0a787421ffcaf973ff6426b3e1cda8a865a67da10b784320ec8bcc540446a15a8c268a4cfa1637db3748e1138d556bbc113e8be1ceb9a305d2ed8c5e91f4acc481d7dbeabf33851c2300e96968255ff467a2142c99dec5aed645b47e13e518c4077f6d412ae858e1f052cf8903a21103ff85741f18683631641f7b5088478a6f11e0bb30cb363826d07991df6092e7e0d97952c6d5ea2da8097f13a02744e5b3f1260e6cd111c262c2a167c419f8b64cf5d539f4e389619237026b87f44834af39994501939c0b8ee33c1bc730cceac6b3f5564e1e39297a51cb7a2b6da1d85b5ae6cd2038b76a2f387c66a3dc76dd69bb970c11788dc03a76a384c1274aa26d0835bb9340956aa5aeb2fa48d0c2ee5afcb986422e0ad6181f7ad683bc0f7ca311e88f0a9c89baef57e8a1f307f7df24cce1affc3c182d216305d176cd7dac3015669833babb5459ee27801ab4f9070c0b8e32b4ed366b7fefc633ec2b537ef949eb141a39285128eb1a7a2f984e232028b310790066a5e4a7208791dd95950c02c026d0767d5de3c151439d312674dd26a16494853fdcaaaccde7bb00e79220876605232124c1a517b3b8e4646fc712fe4e039b88bb12f1e9da62f4f095df35fce1d8437017bfeba353b1b0ee3d43d7de94d194c0e31524133cd788b4c70c3131ee86696432d5ed6cb4480e2db9ba880f1f5519a1dd1d751b62d1dd336ee40018687cad5068a5587205b3c1497fa41c168e6582bb6aaffbd6e3b73ca863b78322ac78027b8a98e8e32c32bb1513c6133a0ddabb2d17490550ca0f942b62eb4cc667b99561e19d77bf76d4621aa66c0acdc0ffb4634f2e636cde6bc0190e50644ea23ee346a3c21702e38cc6e5a9317297050a26c7508c3061f8bf691c4ffd317c097d54d66c527d4b843c52ce59479a5741f9766b017f2a7a5d1aba763860ec402e82f2c83b7dc48ce51b29835ba7f6c26b2b08f2cd9e3c5a687d77e8b39d2a8a17908c2ddc6b4db8f5519b445eb141711a92db3c0601bc452af12af2007d989ffb08a1af14c2c8ec23fd42a79f855ae54282d8f4fb8a5730838ff5b404c8a90f2144598e185d21fe98aabfc493e40bdd72e6bf1116b09f55df7c0924a243f81dc37c97b14dc649dae1d78abdc618b7ee112c019a37aa68664655f52a84b5ca4162281801d380375bf3a16e15225f6bd63bf0e5981a81b368c2a376e44b4e0ec7d4655a39545acf5373504680faff391f0080a53f85c6ce0c655c6267654a495d33667020460326ce847af8fac3790071ef8caf87730113b159c27ef07d748c0f1ab386290fdbeeec4b9b568e311885d35bdcb9efbe62887d16165f9aeb12b3f351d33a0dfbd2b2a9f7ba34ee496514ba4ee403b99f721b3c411867ae582459f53f769c3a7b12b62d534bb5a89e84ae5503d5d239622eb56323ef59a0bb4af1d1b05a87ada4e765028113ca6fa567f688db3e51507d63abe6e001d2e6af6a19514ef5a4640923aa57bab78f872d52bb5856d961a928c3582acf88f1abcdb678aee257dc174ee5185756ca039c65a3c5ffed843f17d98b9ed9e3129345fc1fe1aacc929e5b68baba0b3aea7ab89579d8bd75b7253762dd9048d4e3d6eecc6d2871921b6bd1b181aa63d485ce6759e8e96b086bf1aefe5ca754d5d8798ebbb5d6fd8d5c8495b1e20d5214c04a82b9d33daccb527d6375bd0e5606665d99339f8076e9838f8742d81a880e36056e1cde3d8776c99b9920d2db8a29aac12ae5941cca9ef8639a12e876cc19a77669afabc33254b06fa1d208be68ae1dbfc7612940e9726797194bec98cbdc9d5f0bb070db364417cd276e6f2f25af69b17e22bc5216260e3dd25bdf89d32d5c8b51829ead781e55285eccd9ee8ab1adfb90f8ed0fbc169f5a02c8b1f7a0f678d1d533cdf3934f606722083fbdddc8173ef950dda7edfd1027f17259a9af96a49c7b2cbae644b47817bccb1651fe101421ee1a1276836a714d23907383d7b1de85bdfe842aaaa5afcf3cdbe17de12c30259ecf881dc8239a19394cbc096db0336cfeb28faf4abfec506390ff24c85b07abab9a8470d9210293588fffa93d8669a193e36e274f6ad006992b1c0b7e5cc80e665d1af6c66ecb49d9fdbf65e5bbd5591088e4bbe9c74609d9fcf074ddafd307f3f9f6fe5ce83b80ba7045e8a214e326669c6599bce05d25371a3a3d7c47dff1d2840d89c20cba7236506d87a671cce761b14a3a5a056ea905d7416f3c8b3c2a476c7e5f40c013d46a5da7b51460f6e76068b69d3436460a07742605d7d5d02d5dca2184272db0ab7002e674eb29b486abc98d743cc1cb02923a6800fbc767287e4d82c64602149523274e5ece2a09936d7123898fa5f5d1a34b84cb2bf9c1124e4c036143f15b0cb6540699f4dc5b98e0ca923368ee87c54d2f71bc7452a43e334b355dd4b75613fed3923fef933c59951ade0f0102ea81afa1f7528f11f2e47f19c06910f13125fcc2534d073de0fe148fedc6da4a244e25efeafa6c7e83fee34bd794dff6aa0cdd20a21d8c1a76cc4bdbab245fdbbf987502e4f5c42ffaa95f2f01286e6cde8fd78785fb44c6d060cefd9144a2a412d973082eeec42d99bdc911caaad3bca821fbe91d202728eb6f8f04633c69767d68fe68dabd61e6a8fe869e8e8a15fcc440deddb1a38e0dbf7adb24dcf2b72608c869cf09442ebd0e25964b82da2d4e0ee2d3050cb9c9b2d625d8e66d9daf902ea0f8f7d7a9d60bdd2d6b683c9fb1a83332f760a16302c79cbf92487b77d8ab80708ae0de0f5119a2a384c2f8a66c35dbf1c04655d76797bf13fb76c97bac687cd32e0cd5a70ac94908485f9f8cc1aceaf030f0eed32c3ca657f3daa67ad7f5d49b4b562c9d1e4d6405161273b6cf8d54a7f158cc609437829e8adc5fdb9c3b6b65c59ead17f66c7fa22344e8a53e43b1eba3053ac7ee6202b5efadfdef6a13967741b2e21da3f2f1fec1268c3c20c30aabf9b46ea2622b5beb501492a1f711c958a3a80cfcfea27e72e0fa1206003c9faa9495fa7dd83d2bea21c86edf545c90b7c66f6fdd1ac9889227f0a23c72007ce2a8fdc54b9bb03e28ed082d861e035849a9a0792040b65b1f57d27786f76c0da6b4ec3305bd7add30332ddde201e3dfc1508feb564ece2f854a8ffe766cf73ef1ada01af19533cac13f3196eba1914d2d1c1aa5aa7d9a0027d8b5125e06b692230016a9ff5fdc7b0848dc7cb1fde38e1ed78b596b6e3c7f6c0304ccb3a029f247b94b82acb468bf5a407daf2237aa7ee36f7c9f34a59b91f0ddd76383265e4fe069fd04d70a6f9e08b759450b86b5cdb7d082e2d6c52181104b9247ae6e05d1854de88319ae703860b9e4f5022cd21540793446459050ea59a1cd5aad048163c1ffa3a39e5bc7378b67a50d4c67efd9df480ad4489a75a46ffca960c932c5717265dd5cfe4ef87f2388767b8634616fb043684dc4e819df129a3ff7187eab6e3b4bd9886b0538c64e7565e4764c5fd5fa934d66f60261f8efdaf131e3eb5497a77521041635c051783ba9e05648f05bbe1b2e2aaf25b4a13921172303ba6acee444b3f9716e9402e2c9c3263f830237df59c7ceb3377cf02044814e202126a1aa045be693a3a80c89ed456376db7fcf07ff6bbfbbadb1e107e6dd3dd6df17d6a0e195c1e70e52633dfa6d420e75da78dd0428ab82f2feab16093b526e2f780175d25d7bb93a026aece8efdceab041c2056af9b69118b445b827a216d486e0cfc39c0567cb5cc0fdfba4b7f431e0a2d74dd57a601ed011a47c8bfe751c9fb50867ab5acaa8ca7ccc73b2b15b6c8714ec85adae3b3cef2ff340685e4c87729871422ff2ccf745170fc8de925a1725736bc7fcbe617fb429aa4f6b9217a6fdc815ea4404aeacd9c8b184211c020e572ac967bfc26447fefec6345bddcb7cbdc7a8b1eadb414496d61e5a92e25266f54382fe700f9a5bbac78c09188cc6e4aa76318bf0c1046d5bc47cffe93575d32124509d4e3145990657cb3eaf1780a1cbe2981a4460dd03653968a354204a9f22c549fc24da59f442bee9f48deb8b5e68466c49e1c51416578ad8d300407d332f09dd3576c3801b6a643ecd54414d1d65538fec802817813e6122d3f007b996a08cbcc05ba889df0e3543297846cbc412d2c35ebd51e39951cb5317addd1e44ef6fa508cc53088832604679d592de269d39b37b12a82f4a6439d8150923e10f183a335db4ecb1bbb22093e333c638afc55797bf165e3ab2d77f597d8acd6036525ba3d7315b974dbe88b441f08965e56215a752de710f0ead00f799f9c47bd1ca3a6d074a3e4168392d44a74a8c82780d9e48adb664cf0fd3592ea05ba6d1b6385a5a1f0b868184fb8d7823f88a6fbc6af1cbd415e107b92bbc2447027f6a2b850cca03cea595d8a0175626d63ed35739d111caaa12a4c1c1f568f94e57055a6c3534050bc08745c8bedf2be4dff1041878339b14564010c518b2748451ada3fdb8c3fc1a053fce78e1569131dbdb9d90be6bc5818fedd771f785901dc429530505c2377057710b01fe2ad3a046f2bdcab3bd2661ce527125325db5921901d49026d785d512b27167c2087e32eb81e8e90b8fd72b5f2bd9d5f76fea37a2d63b7ebbb3bf1efbdac62b2a7325b6c6eea5c2ede8523092e23835d22edd0cf791253cc76c1398eae22144f67c93c8f111875d04a5ca07e8bec3376c755d0f8ec097a0082c369616769c990243f5446ea6e8a23a89a76f10f3f3634301060ef757181dd73aaddec83069365911b23223b88facd19bb0a6b0ec942045b39bdbeccae5caa5184144703e46e5b8ea02f1ae26208e6f18fc83b59a1b064cb0d3739d924f601e0f1a52626fe171232ea4b490d7cbfc37cc6c7ae8a314196fc45d909e7f5f3cb1bd985d5952cdfd07609a79fb3b2b1b2c843b6def689f0fe9d2645a83a2948a1920560ad79491aab952f81600d845ebf5c04892cf4c11664507ad16345065233eec87e66b4aca57d32cbbf7f39604ff194c84ad773f5c3e846a2783ad8a6ba2e711788b47137269649e5285e69580bb9af449dc460072fd778133e7abaef189abefa822bbda6e42e58030c48d7ccae4b8112eebea42ac642ac70ca1829fcd9e130df9697928203d8b6aae9af963621399a92b270d508734d3af2b02327e029418c2a6040966b8174cca1b91c89a16d5eee146c81d5f026e83ecf15648480ea8ea306e55654fe999d810a36e0d8b9d84f494409219b288cdc37b9a56e3518aae4909c611b70869f77e11c859cbb3a7a347f3c467eb512dbc5ce3aa357a904ab8ffe4ad2f07e6569a45f6190fae415e7630c8046580f3190101b3a07afbaf22aeedf109ed28dca26e58fc267615d1eb96424e0d71970c482ec4bb4362673e57b8c2257453255c253dd9194ba21c10d4d881eb212ce9c490deb06aef5c57fd2c70c2f58964b8cfe8c8507b1011367d546544ecaba6681e151e2e995994cb36a6149bb1c96d91cfa7f0b55dfa1215cc1b07a0fa513d3c5dd0ae5daf1383b66129b7de068f374b17803d47e2d4fe37361d6cdc403fa7763d6e935bc919bd62c89c05d7c3664e89f05726ff5f464d450e10ee2500052694c62589ec8ff4388bb73cad7fb2c04a89987e5a25c8bc17c4988fe0a49d717b9bb3c33a631f1352210fbf091c74daa57f4ce020797779ebacd9fe7d448d0d342241785b3ab5783365b76ad25f9659d6bdd4edda5409dae637ee404bba381fb3bab15683e2ba1ec37cff4b4c8a61129de3387da7121ebe67a10cd94b94fdecf87b7ace4ddee3681dd33daf82e6afa8efb1654490ff3b05e3268a8ef435f18300d55b84a0c138c5f2920a5734f5aca2540ddecb11c60ea00887f1c9593915f62e857744e183c085d1280f80382a521dd9eda8bd1c2968b2d049e05f950b31339a4cb3214b72876b2bbbc3f5f8ffd938da32f8a587aa33b53f2bc445635c4c5040f528d0b091976d15ec9497ed0dcae9bf2b4264c0ecad2eac2f176317ef29ac33efe7e583326ce2354299ff2c1ed4e2b16e011e0a4806edfef3611fbc6ae475a3a2a440c407d01b10adeb44e1eb3e6fd8e45b7e7619b2fb3a266f87c633985322828b34e426a922331f6eab90a1d5430296d73a34d3b22fe26e8a680508f62688a0387063607c26adfd97efb6e7ffe817a7d95de65ea37a8b1ac46701f2e5fdb5ff756ddaab59671c4f8e3f07e99593d698542f5132f613d5861d6bcd772a4a2099ff31cfed8e3176664e310bd43ae22c8b6581c3dac54015d4f11aeeff9a9fd6f3a86a7f85c9da43f47bfdc3e8e746c01928552660185feb70eb46bbefced37eac11dfa9d2f2d88f40e5363b310ed022ba48fcc2a1ee65d330eccd37527301ba1651297af9ebd4ed57b09a570a24af4f561bc3066acbfab7191487654733ee02f7cd45c362972a61495e2fce4b4e86a0e4590863e1a4e9cab3fbfa73a6ca54eca0f03431be0376026cb97eaa0568d380faa3b7a5cafab76d302e7d5d180c19cca0fdfcd14408e3790250084f5c0fc63bf24cfc96678255fb3ca55597649df7f18a57861ef244ba570fea7b8fbc718acf0878255c2aaedc08ba522d752c7a3a9b52462bf259b7e8c79bf2ed54aadb05b0d3b1a589464705a5cc70269545e976d2a9a5b2eae0c4d21af34000397ce8f31bf98897f785570d7d5c71daf3e8fe21624b2cf139d7129cd6bafe91665145416571ba4e962eb5aaa23a2defd5ec81bd8fce0cc71ef42e0023499347bf9f8f8942a0b0a43350f431f72486311defeb7f8026bb6c050855f242b312ba955b796039ba8ec2327b83b3d9c6d503126080efa203a9a8eb13c251b532c306f368ca9c130b6d05f2480cb02b5924f141ef9eeccf482e15a0c21e9d8cb0f357e56feb74e9bd1ef8794198952ba1c6a156b0e78a773c1b0105132bd0adb1576cca379dcdba85114c5787f93c870427bc02f293f69277248c7a39e25092d8d837850178e4822f89f5fb71105d357b4843e7c33e4c17abf998497b5e29459a8e73f7440febb7d79918d332092d89219560da1b5507b5b6094605bb22b6653944de9b923ae1a948564ec506254125290b2cc4cb9c88852d4858539fe600801d37f8267179ddd8be23803b9017a8fa3242af2f49cfa5c8385bb6b83b346a494e89a4bfe8b037714b446f8531bd0f682cfcc182daa6f636f6bab801fac98a5c1a1f72cd488dfcaa5d4ab40656f91318e3c39f278f317167348a7f461aa58337753e4cb3056fc298d1d33d136a6d31409406c100046ce5ccbf97cd6827b852d6ffc54afa20ef7f3a780f88ff2b2a1b265d952f0bb46a158aa43fbec424f4f5e00ca2748aa42c8f929e68ef62afd641512f2e2a629b9eefb0d6cb0eaac459c90f3416f9f5e67148eba0244aadf29957b1fcab5037781e528a61ac139a6c1bd63e8a4f0b4ae05d602ab01d1753acca3dc61c963e16ea1b522d6366e5dffae2d66ce14fabc32df0bf23e8c25136e11b00ed9a7236e9d410bdfa8f593ad2593f7f83b942694d8f8555db21185ec1b3ee554d2cab7fa227cbcfd5dde8b388c0180c07b0f7fdb4970288203a4d5d524bc6c2966118bdf79fe5b73737dde2dbb628ecfd460fc1e916abc141e64fac8d0e672e1939bddab83022fa43f6a249b68970b547e5d66f2ae7725572865835484a6e5f10cdea2ffaa5709c6b27366ac52c37ca25da79e3129b69f784e24e119c7afe38583b5d58bbdd7f7f40c7618766d4ecf721a1523e721cce472bec5d8b3d3c53cc1a17dd6e94ce2a0399e9a9b094ed7ccd1e67a3bd57278d4758ac5df79b8cc49c571f9e43bc75df5d104b1644f494ce0106ade7e89a39c80a2cf5107294c6323b104021a87740b06697b7f3b8e49c30f8ccb6f950eac676c3fe7a4d79e51fe1f85c907ac936d8aa2ae32695a249106eb8ec663c7039185e58689aa4433c7d85e4f185360ffc665965da19ec8eefd47f93f76d910d43b3f52234b430e74e583def716c83d72b2d8947af817416acdbf50465de4daee4a954dc375e97e80224244ed85270deed9abb2540fb55d6bb6a1088b3038734ede7cf10b1bee0febfa68f95cfcb7ebc8dfe7357bb03fd33ea90bb8e666d660dae268a9960a9c2d711cc6973ca56600d6ea5fc5a4a69de848ab61f2fa24cec2bd842e87971d8cc94f497034ecb90c19d1cf3c10f43c2da02c7a2e4a51c564eedc513e13c086f3bdd922b9ae06a322402395275e27d4ca39107034086446465c113a1950a8cd20ddcfa27e6b05b40c2ca6505d8fdd0f0a827a126c6a1510d6b3b0637530b8a5945843298c46ba2d76128d87cb45e4d6a167ed98cf6acd4b6cce3653405cfd6cec1e54d87870042fc3c3dcf9a244b457dc607ec1cd67bfcd71b13feff7dadfec06f2038c1c38b94b21b56e24def86f5a7054dfce514d261fc9e5b567f461cfe7ba167dd61b5bd62c4d0680f7899823be217f84b9f8a16d07a04ee671375f555cd931e3a9196a6ab5218770f154cc57a4c09f15908995d384ece48d9f0beb5092696168c228db8baec75ecbfa662c9926d1fa4fb2acdc8b6522fc59605e1b3c628e13edc8cd494f20bd5314ee4f899cc015f4e2c6fe6797638381393cf1b53636c4a4b4b094fc2c6b1135979e7a5d7f00b0f909d059f6c2b8a47e44dead24d871af100647276acffd675565d291acb6747ebac4837b304ae02d8d0a4616fc411c0c75947ea0652e49735cf487692bdf6f9ae8d70689cbcd0af955b1ffd351f1c30f0c091a0c6e1466723a9bcccbb6727b87bcc4782cf2eadb2bb414dd0699faf989764ca4e9c34b740583154f3f7396d544874a8abeaba70e6d0043b8af9fa75fb67d11e7f69214657d2943639208f9dcabb10958d1557e7842abcf909de3624d6b29b9626d9faddc3b06790c85a090db8a76b10b44763692a533547845562e4beb83047b14cf044efb7bedbc631d5a00685285dcbee7e649ef3cc2ee5c527b1556f3e6989b21d284de3632c53e8170f24375e8c3e8c06e709c9480c032ec458e99173e0e8a3ac57abd14111f1f9c66cfe782fe08fe88006491a1898d596ad10be42a424f48ba222bbe5cab798e74c6b078032ae6c5838eb8522b169658680aa063a1018694ef0559ae59f1c21e026a98fdaee5415a03aef26b6de127d82c4c4e6dbcb92404769a5d900a881f7ce4d3686a9af2d5b7a98f0f33c4fd51cf292417420f6ca2aeea933ef063ee4acadc0631bab6ee38b65dbe32fa3eb8ab4a1151ea3b1604d7ddbae8c6147e3f3ace69617209a8a2ea548c77f99cd70eed43992874fd8bf425ef00da04650c72cad554913a1c83c16c149aa85cfb2a66d3dd683b5e56847d5edf4007d23b99ae7908d100811f76e82ca5be2bd01127f95bb4f8f559d25cd2415b03d2839c56b2c9afeb5ccbc070eb36ac7add82bc6da39816aec0cd1cddc9845a0307de26a4ae2d63cd0ac2ffc671e8f1ccae00f44be4a813589a3bea3f4fc0469329cbea27540df8bd65b0f56bcc616c78aa656716dc58f3567032e143a0de3538b1438ab010b3813e922703c1b9e541dfa215a17428bac242a9a013f739f5311c8f8037b2afdded5e31163519322ca424cd4034e590f1379d731711432c374f0488b2868ec29be453ec920f1aa748ffb63cb05b91b2f7d5dbdf9ed3e69ad84726eb8918dea74d9bb394bcc2962c510db7313f2b7316ce0ac5539cd20bf2491f8f55b21c02c67e79b8b380730a05f9d8cc6d9b29b6f7234fdcc4a6b44b4612c8dce0a753c1f0687b0a3669efd5a2c25403eed2e7374f7671d4fc8a1924f34d56c8f84e1f52eae32ce57ae6594412b6ce5666244c4bdaec766fcfe6fa7bfaad0e57c456a72c9d327d8ea15d3b33aedf4d6d59a2c48832dc71644dc9b117c9d6023540b27f7d935ca8f76871335b5a50ba0da28bac972ca6d1452af8de5c5289ae03dff01986d40983e59606ae4583c5b826b0e3a701df93ba923a1f566990ca5d63ff694ad7ee7b79a8f70c216fc150ee7fbcc2144591521e28ffbba1cb8f902737171d11f1a7b6d7e6171dd6a479ff4c6065106f46a6d7b87e4ff59aadf46e0f314e1176ff8c289f4b5f2dc10b07a7602175323f44cf5307985da8adf6b62bf6b0670101320e460923d9617fa13d25674bb82dc2a552b2041e221e0b12e4874e2926b08fe4837548aa9bd2bfbbe854c51015393b7e84487e45b3cec46e30d2271a7508944124f7abb94998937646089e4f64e5c1c5a9ae895033c0845ffa7543ca3c766d4bf6a6fe4d486cd9208fcf03e107a54986d1da763a2856bd751f3573b308668de4ea82c4ccf30db9ca14ad572b9458614b35dbccf2621b7c1f3deb66ce506148a66a92bdd465f2b2fdaab8edc148f14900c28e6202b45541070fd4efe4602234f8d7e57ef3297f92d155b3bb760ef75d4b289bd4fe65e78274d339d0a50caa20535001a5aab9de5ff5412b02f5185ee3e4908a33daa12afcfbcb4322715f9042f65044ff0eba328932cd20b077bd5b22b48dfcac1a85a6d5bf18e98563757f66f0cd4bf888e5b98328e7d12eee6ef337dc8a7e7ab1b1a7a7a2bf645fa824b762c52516b7244e7365c12bf62ef375767ec6e82420a8a599ec320fe1e85a58fc42d58c9ad7fc020600aeddfb3e98424cf2c62d58493103a17ff8adfdf0fc6033cb1a7440e954dedea377d2af1538462937adcc017e2803d8a8d3ceafb9cd85826925a406a016bd4d0177d2300b069e38c3398bec4c77d1d579a4f918f4c1e0f4808246489125fcfbba4271dcf23539e946aaf941a21c923d06f9fe473da4d929f779765b21a8d0f6704ed933c5b14c2971ee284e05ef67ec00763392371bb66d692c9a9df0b9462ca901c396f84d098c31fd53074198a81f42dde954192f5addae991c5c39f56c7af6a0cf2fdf9eed6d852bb9e906a8035b1514a67ee0b7ace6c38946e7cfef53b55bc03431fd12fd4650914ee61d16169dfe0ee14b668338f6eeac0f456f89b6f47395caa02c479882df182e02e297a3e695351417bc2de93071cef5998429fc0267721c26894118c7a2fc35085b1fbc3750e11849003ef211bd40f15d0b96099c14407f3aebfd9a4b79b37fa6f7b6e447ead0d4d7f7fe4b756240930b94200bb070f6744a2a27ab8849600423b3c1476b2e23c59990d570aefc9fe0beb57b20755d2f6aeea1c5bfe12c74fe78e51c52ddafb7af5259e5ed25ada4fe230deda68f4a0fd27b53cb306195400da150fc92e58f6a9bc5a52e0a6de358969459c5970bdb6e2a665fe3b72cee87da4a8bc9231df10f4df33ba38507c0b36fe4fa62d5c1b2f4faf0f279d667b24a36ffdf113156e7ec01767b4ed4bbc91cf5ca73c715a0dbcb463689678bbb13d7426eee5c6ba670284a2a014acf4d909de5787fb1afe29996a3a3f03c0c5b8796156f9e9d69ccfc908034e2138e306b5bd4168e9a989253e568be6ae63272d84c5c4a4630d26d90e7cf106fe25c1915308671b1094c2f1b1c527adaf1173a231955681c5d1b145a12130985d42ce503a6eb66ca8d1009c6a5b10060838e55381b5e403d5b8881b443635473e34a13bd2787cd0ee9c1ce8e30898981cb999adf06d1f55345e0db3255c30b94638f978861677e3e7f8840d3220a1ce08a0d58cb8a83d5720d5c414770b623d10fc853651156fa2ddd94e23970b349d1114d8e1c1dcdc2142f59b215b2706b78bfe94c23f663b759ae354e0934c32419ecdf2cb16481e5a6a7eb729294049168699d27e8877ec56ce4ee5aaf611f5501bfaf0d011db6acad6f7745b474cd8a8e815c66367e6c6c8b905b49c668fa0ebae81cc65bb39264caffeeac0ba3346608ab191cd8674997498e46e5f27dc90eb2168695f5431201f5d1d727e5ee71ba1f2ac0972557cc6174a51a188b09cd7d47d180e2d05b673e177454761cb04f1e12b163a5f3c85c35b1d49f4d143a56280deb2b8f977cde63be4189779a81c0d69106d6480b7a53655dc425b630c124de0e19aa93a45f2def328ac4e98c9fbd403df4797a8474932263513fb217cdb7ab4cf982629b9329947dfae2f43121763f35d7802baa663429bf3b942b24c0eb05bd5aacf8227f1325ef2b7673cf889e8d814d0367b548a0675da5c626aa419c3ba82a10136ffa9639f0f2c8e3115b700de4bc08d2c22b95446fd4530bc01a85d7ea9540d351b8d1763eb3cb3f95861b4fa901dad0b4ff3d0f4a05ee3819f0d28abaa1f5d7af9813a3ade4ca46560c78e0bbf8f7e665fed6243b87061b4670a81182eb1fb2516d8736bf34069da0e307777598ba72b97e9b2234e8f3fbee31a10a6d2d1b7189c964988f55c8ee57d41c1078853c9fed682e52928e491440ba511d57edd8cc87164c4a281f7ff2e0dbac58aa07f51fbfef04af538057754e78d7fa2b68a25553b09c7aff875c03f5d5edb0f1d536624b62c13ffb45317129e13a2c8f4745f9c5ce5acd7b5977ece5462ba1b9c1b7aae929b2bef4032e1b71182c96c4d9486db0558f5ed64d5e21ebdfc94a6590f25cc161c2b112bcb6b9d96f7ee01d22175248e015b6165a859d6d0907e2b886c626dd75a42532170ca3ed943cdeac626153983e43ca55af7546ac95537e330c7ee48f775e4adbc38c652537413fa1a23e9234979ec31bf3a9958c727c5bff27250922cc5fb0122b088a1a9e3422eb8bd4fb6756e6ef214c201ed5f23198299e576d7557d88a2950cfa93406bb2530d7cc1b5b49e0e53cb7fa04733b4927a996d60553386b7acd9b18804ce434ffcba8b67802e4ae4112574bec5555c7c2338a3103e68ce578fe996e7d0f38988c973bbdfe1304efa271d5d3658358f63fef902073b6a2aeafc80460b292eb2d4ab054d01f38b8ccdae3260feda2dd48820defd44a911461d62352a3a75f23a7931ccad2dd6a8703d9f92d2c9775b3b185a43319c573c19ff538b8b70d9f2e5e19f999cdb652cea7e2305d495fd68885ddf961a17dea2a099dd4009c3213938697e0295db82717b7bbb4c09f042aa11c0414e8234727c07f2cfeacb359466d204de0e9cdc2f9bd762cb481e2f25dcd6839661aa2afa4d525df5ddb26e7c8fc3c616124542f79a160b246e73213b4642eab14eb04f5b5407cdb6d75b7da7cd3dde07b487a7d7df203fa2f05ba6774bda923a8231e39eb4e729b1a150ac248d254ab6063016c81b32b24b7b47bdb7c31b79229902e142260d747d5daadef4d62e272279e482d225e27ded36cc39c790e16c85f24090ea2c17d40c7bda035a5944bab15f15e9d4e39949c661da30c9b1b78a314b8ec12d93eb9067a51285ec0274a8d9d1add14678695c9930ead4aa4417fa23c673affebd39188bc06534f0c0ed484efefdb529bc241a14b82d6b3456c504507e6588e13d51664b5720dd514b93956c1cc5f5c5f9c678608b5f19cc2dc7ed9be25bfd8d913a8b7811a05c55eca9fd3324fdbdfaef1e8dd479dc4d18e960a9a0e2162b545643c84db8e5c37fb8933630205a88ba5e683faab6c9baa91a25bc55763fc65704d4d9de832de94966c44f5821477f48fd2be0c9b9c4fbc3eab7fac9113757e22bbb1428b31f42603a937cf4ce57dcef5016b35a75255b62f6eca01cc96424d458440364f1aec3ee688a0b7589bd95631e54e2ea7b3b456d57b4f9d609963511c9c849a0bf1b7b0703fb6004b34c4cab26dbf3f8945836ca342b09e1fdfa3be6a38c42aa84819acaa189adb7cf4ef7d44c62a2352ea9e3c00ae0573485e7ce01cdfeae4920db905a957f0413fb0b7e4ad5345a6f45a2c5f71b3fa0c7c702b116aae25459ec4093cb3ccf12187cb1b4ac575169a95a08a84d72dcdcea3290e5ecd79a2840e8693fc94d347ef5f7831d5b35e505b6febb880e7ec3b2ae54565c0bc6507b4ccb537d57e22179e13d30ca78b80caab34aff8420c0ceae462b83f0d15e3cb7d69f4b1a114a754d834667d079600602d0e6e2ade8db510fa8001f5beb229872e2d8a69c9f0762bc3874748ac451395270f9b9c91030d257d876c5ee0546313abd2158b88604edb33789ebe3d90a1d2f0f39b0cd7b8cb946fd1da0f171e01ee79888d25d8e29becc4335cb12f1f660c8ad73db5ae0e050910d6128a33c7cc7f91459cbc469d6bb222d2351af078b504b07cc4951499f333e4aa1e7eee72c265949bab17faa61490b0f83fa6dfa96ca795e562334cf740d8768a578a4e82638feacf72552cad7bb42a334e155dd8fa582eee509a046ba468ad7506e1a744d6c21564a489813cd7b3155997da3d875ee12d7b3a76dd2fb308929ad4261271eb7dd7e7fad0bb93e6d9f5270843289f611ad22ea38fa6f06aa65bb8f0fa3b689d79c17a9a6834c34274f3c22ca4904876b3e4edf46dbe988ec4883a60c31b510af8df3131e25c53fa520d7203e26495865e801024c70ac6223a7fa980cad0aaccd8870ff2af8701b8428ae41a7ba5fd8ef8b6f85f831fa01e18fb2b0a5d659a736cea66da4bd4d9204735dc001f5eda69982512a5120226dfd24ebd15ae53cc189fd13464d69caa7338bbc2b3f93c0189441ad72295b8942d023054a3eda9273ae59170b143b0104fea0cc7a1848185fd0b66c54d6cf7c82435712dd278d4bcd20dc5a154df9a9ecd94cbe5b4b3de4212c5b2b3d5767c83b88460caddefebd478bf0d0b42dfa30305dabacaf83a55f58b1ef4f5637ed5b1414f99aad2b0c3674a01a8ab4967d99f1f767958a0c58687f18d6759885d20caa31fb49d8809ad0f94c672130b6a4a13641f031901b815f291f07810f89318a9a4b2983c3d827dbd46ea387a6a254c1e63e249ac734b9fddf461285b9951fd7386d27149e6f499db14dd3b772ff29a1c6b3cf9c5330b92dae3eb2de2ab647fdbef7597504630c2548fcfd17bfc713584bded6fca9543fb0bf6b2d595ba300e9e0e2322ff4956c2540db0a5b2cb6ece45e6343617fdfc4968a7a93e61763af3d2c21492b37ef4b32dd57fd6323991d7c7d004932a724939bbc768b941001c302d5a8aafcb11aa3c9b2368fa51b7ff2366be84a400573ed689b9c5fe7e4da902fec6e8515b110deb7002f003dc255925c8672d5f9da43f62d2e72b577a1832a0093d452349a796cc8d86b24e5f4d8e3dec53e4975df85a5ab521c323d2759500a02bcc7eccaa72e50c9a7bcacaf5ad0534f6587878a686b8c8467432f574abe1f83e6180b98e2f1eb490eb1633ac1a7ae2feab12f3c62fcdb965329f9f0a551de61a27ee18e1282016db964289d2603ab148bbee7e75a414936861d3983487e758cd3ff7d7e3da0070907b9ed0206eecc4db1159b75af8af190d0e1ddce3e967bfcafd53ef143e9b5ac9bc62a9bc692b30013c2edae3632ea3e47a97efcbf36dd0c2fbec691eefa191fad4a3d5dcbb5889bbf36c8d4fa50a40c64b1db888af12a22f74d7aec55fbd0b58ecf0270e24219182a843d94c22f5f9403a9b61eeba90aa0a08ec32851bbb1329b68b11a58a57e4f7d7b2ad1d56c2a94f9a78779da218dc625ff0fc46c51bf3ce69e0b92e7cb07088633f9fae13567c4a156049c4ecee03aefc75958810ff04487a0cf90777740aedbef3f49636c84956b0508f7ccdd82ec486c79cf17707bf978b296264d89bebcaed525edaf444441a34aae01db9f7dcd53335595dfbe9b67483491fdc6abeb006ba0284a16295ba834b9f284ead6758fa64c68cdcaf63a074da7c3f73a1cef51e854bd391e775057d80d708