安全研究
CVE-2025-32433 Erlang/OTP SSH 预认证 RCE:当 session 通道直接吃 Erlang 代码
Thinking
2025-05-15
5 分钟阅读
研究档案
#漏洞分析#代码审计#网络攻击
Erlang/OTP 的 SSH server 在处理 session 通道请求时把客户端发送的『命令字符串』直接交给 Erlang VM 解析执行——攻击者只要在 SSH 握手后立即发送一段 Erlang 代码(如 os:cmd("whoami")),OTP SSH server 就会在认证前把它当代码执行。
Unlock to view this content.
ad8d9422966c73fee42096dad808c6448a272095349f41facc28f3d18d1ee66a0726fb5aaffd9271b6702e0ae53f6961031443030e63d37842b7356b4a67d1f44b648f709f84d99b1640e6f7a87a3d44129b61502fc0c5c728a88c67798e6cfb7bcb30fe880464fad1a2cf9635735fbd6e964b402ea4ed27e494f7c87c72f1c586b333a47062292625ea7240d146fb061f3975a6253d117e97272d7df5aa897fb9fe2c09034f658aae2645a68076992d7d9de07ae63e2fac88f85e475412988dfbc9227686cd8e296b0cc05eab1af9ba061f7dd26c2ea8b07063b590a164e0c0b8cd5e2df57fd66a496dda5fd290adbcf770f921c5038aef2e4ff6831bb5692ef7088a2572245de3b01c654f252f8a7d6580a1928ed6e1c1ae7e99797f69e74a70057aa913f235ac35a9555c7d2a5a5e5ea8335523e229d6ca9519e7b0403e20a5d31a343aeb408f2c9bb1cb7df428033537650f933b34215db7bd5a58832aba9f9748dcb70e48cd2d9d801d97436958547c0d7d3140144e27a275446090c7720044dcabb348d45049fd2db2d352141281bdac01af559d505c16173fa119f58c6f6b64aefb7745d11dd26fb762e63ac42274278aa206ad22f40d387e21733f1ea397e7c3e44b4b10d03623e10a47aee2c887290b6beefa5957cb1a58cef3a45a67513ae4e92d0fc8c79add31ec85612f1ec0a0c4982c1dfb113205d9ef600ccd0dedcf945b5f1ff9dad93f766556f5d09373443ed08ca8055ecc559a27389ff3ac87bbd87945340ed8498463dbbc4e33a9c25ffee031aaf8ff113c86bf7b203aae93e8ce066943285f1142e2cf13ad100a16fc33bf8e691805e5c6cb94989364234a985259b7d69668fc45e2e93bd0241b58340cd6891f71296a84d5b89fd90504258356ec6a98b74fc9dc14945cbb1f9699ea40953f2563aafdefe037b9bfb26d4b7ee2720ada33497cb9444a5c30d0c548e52c3d286f170f2a6c7a1eacd69b64cfe90b32b1783ca2719df1baab43c10ca06dbe1bf532004c7e937983ead11fb1d91c7a5a03cd32394747c770214b9bbe5f8ac773ab3210a079e5ff837c083041248a2039091721e59caee9064fb8f096a66c6d042e64de93573e5be4423594dc78e9c00aa9005b644fc65994705d044e3ba540b24d91bb03ddc638ac08c8214b05282031515ae949a13f5009ed5865a923cbd15d2b492e950513746364583fc3958d752ab13827066659a1fe28161f77c7a9f90adb772999dd98154f748bfc652816dc25b8e46e40e10651e1727562fa7403ca65bcccbce9333cba880008f06b23fdf65036fbbccb9dd2c08040097c95fea0ad6c6d31ea2c8a26dea2bdb76ec3edb1a6b005cce08b0033dfe820182f8fe7e053a31419065994c22ae6ee409f757d531830f36ef8d171759360166187e81c65d3db272a518184986f39dfe8a206245f4ab4c77c4d3548373239ffd2f55a33411589359e9b723fdbb68402e053e90bfb33b274d348dde0d080af47123387b0ea4883896d0c43982a0323e9548a3d31691f5c282ed3f4055fc63eea6a2721530896ffed1a1d47ba07ce14508223bd3292d4cd88e37e64479a609ab794682c5b6af1f294137004fd6e33a706d74ed57fc447d6a7f1eaf5ac7704a9d728b7dfabf7ceb09109e52d51a719939dad2c53eba806780b2c75349bc8886679c8181eeba72648aaf2fb17a668bd731cd5dd493690342f3992669fc870c1e26a13cca61acda9497519ea9f741c92679a660cc1a9533bcafc52aaa72d7b3242e9542c4879070d2028ced275f33f2288cf89878d890ad65c6ccaa83ceb90962b786ab5027c20f17636ef5cfe52ac70a0e94c871807baf4400f6fdc2a492085fc5d138e3d3954345f8c3090b41424df28e2275e036d9196708e95762ca1f050eb4bbe723dd15aa232ef5be3c5f60657a95f436303287ce31300ee8d3b9b40be2262e4a5b2156189fb4f3d033e33f0d38a912b14845d7bbec3373bfdb1b5d79199819e56d2c4fe265b6a17e41938d29bfd34b35d319bda169c54b1fd21f47c788e52c0f9d7921ab4ef618926dcbaf5e798ae4477eba08a71cafff7fd890c7f7ba6a5b4fca608b61f86c1f40ba2ba17105107e5210b241fd54253b29e1b133a52a9c654e87d569a9feebc4002d121101988ce7076b67eb91c1973a524510bdc51ea2d9740f58c1bf5d7480e330c0d99c50c06459dab92e0ecd436cc7b9f2842d3c20f73df4f79a66192f0cc3d614978ef583c4f44763cc9e0dc32404a73412a0b32e69b5c023659dcc29c75906f34463b8b1c60e08d4d2cbe28663106901a404a4397affbe0661b5c944f8a4c7bb6c3f3ceb3d9b338062e9d6d9850f7f109f277175981851e9b2537a0df9d8bfd55efa596e606fb142ee009382fc014663ba15946d790bf49f59f5a59736c12630fef5bf24713086332e626c4a4efa1b61ca836305be87969b5b3601a7177728d04bb629e6f1ea6b45a075e5c65751e7cc1c46115e88a9d6b6e35c8eeeff00b66c82a79de52e3cdbefeab6fcd4755e47dc414e0153d25aa68f867718e8bf782cc83a74e0d407b05e9134320e6b1386a2a65dfddb97b9066207546ce113853c4198c334c4c4babe8d53f74ea9c83cb864b01461a52e57749e401cc1f542c76d533a67b1430aaf10c78513e5790cee7567ab3b5583074933135f9878d69fedadef37e8e73234414f7c2fe05b2213a03609fde82e61e33f1a01ce8d31e87dce32c43467d31b9b47c8235c77587691f4dce38b62d61387a11b24fb4cfed6b99f20477463c48edd23b64c137493619ccadf667cb6cd5a82b527e3766a39c2e553a2ff12c40eaa5176cc7440d8793726981de0258a9a0e53a04ca9bdca0bcbe5b902a2b5a390172e99d22f7009578ef0252b225c2a3348cdf8dc0eb1125ebcc176f85f50d2c0c63d020717824e1b05b2d7aa6ab9ab2c437598517999606f047f612bd445a241e5aa8483ca6b314de73deb766494ed82c775e9130ba5c012c20d90402a7139640eb80472217c5e4bbb9b59a1449db676e4d832133ea17385539b5e52b701a9c0446fb7cf1dc822cba5dc2449a39789411a57ff96b466ea416fec8d6609842f7df0ddda3673b31e721bf44e90ef47bbef105a4cc340cd87f1563f2fbfd7be2f655898f4110ad5e492d85a566383c84a18cf39ae764ed0737d3835602cb99d8c2dedc472052549f8de370fd6533b83697449251292a2a161dc8b87a59a759dbc5c7b899c495b391d1127a658b3d2cd3808c64823eaf54b403f650953933791fe7bed699833d085a2fffed45ced6484df747a271e3b337b5a53b90d4647227138bc6c06063980ccce5f69644dfadfba9c163010fbce0614230ced94aec31c182adca2f9a329c19af9af1d04152116ff3ec84aa03a081ed4b2a8fa63847c90da3cfc0172e0838eff8b9e67fc5a1e901e1860f543a7723d2f544f316f64b27749522c32ea79ead956fb8317894266726a946a4d2240e0dd46ebd1a93ffacb4272d97665650b080520ea780898e25765d11ca0dabbb2637cb957b9b042440ec102b2a4a1d7c022a2b48e25d149dba4b58d3e8ac8aef97eff4554b7d2e3e64a3f3f84d7f42af6debf4b12fde672374c57d40433467fad3b5c095d14cf86d403015a1ce8f2cad3c42afcc1549848c917b78eb40a5ccedd27ea9514bf040c36ae375a76d28df25768edafffd3d642ad2709eede72ec84fdcd1d12d6d0d2ae10a107da859c1b84007c84afd90e9e65c00127b17d3c2bd854fe8bfa338333786182b0c3575cb7ea2dd641a5e9dc110d67f0c9f0e156b096f875d75cd3b26c8b55f732c6e5d771bf6ba0bd6b53a88727b1bd7abc30920cbb470592cb0534460ace0e6f6a3a0d737e44b5213787cf5291ac428433b3e8e9782f51438fde1fcb571dcd88ef1dc7ffa672c4e8b9d8ffd2f8f42b283ba93eaf21e7c62dff273e1a0b8bea35ef3775b0c42a06d23fbf93ea80287c22b12bc278f1dc597a28f9b9060472e96f712e2f7b8ac2547d2842f2ee1ed422d0ea371a449356001f0189d27970f53c14222fdbbc4b99bbc950be055cf62e8cffb71f8370b61401348aee64cc64eedf11d171fd23ca28a470c2bfea05835f9eca16592cbe86ecab8fd8c9308911a5132e3071a4dd30baf8de567749158bd4bd0f8b74be924afb3f25f33c0a1945d001bc40f033ce0c0eb3fc181d7612d22df05c750535428f37ecdffda664448dbe0f136236c8da20756294fa63bacecd88fc603b9a6e61ab737f7294bd35144d803c1688f7823a197ebb87f4c08038d82fd016f6eb3fb3b863bed051f19f43bc4cdced1654e1a712a4d9197c37dc79ce20473bb4b75441f8af5d70cfd680fc3e7b0e03b39442972fc2f4c001ae03da191b13e3f44d298c3c71c55fdb0c723f52b8155a9231d92c835e185af2ff6ae58fe5dc86d23c356b0f25e8c71ec6be0c7a9bade88f8f1acce1c4775c43c4324114b3ea44b444a0df58f855e042be0ba21c4fced8963f971804f0265b4278640903bd01ba68b8498f0cb40dd50fc521ed813e96f182b0deb49b0e856731b1895f55838c7058d0fc8abe744e129dc500769179fbc30392ad9c4383a734ce2d45c7b67dd4f29384138c0512ff0dc02979d62248c81915fb696a049a751585d365c43bf08588c4f5cbcd04409584f9692f5ff6e188572a60802ec3d31f71dce3ff85be29a8ef46de596888ba281ecee0c676d3113559f24deda0d540d204f7f41b20fcc046ac7686bf487c2aa2a3c75aaf542da842d2f1c6705c471b9136c1aa41ebdb98f7dd1c606636e449097c9f92d83a2348165777f9ef167014b56f437614fdb951f25ae8355d0a410c21c4bc3120b53a26108d9b3cef61fae9daaac7b121583035af2423931dcad3f4a80b335c8643726f56054f46804bc38532464b3dc94892501dbae8ef893879e6018219a1707cbed8dbdca843b7ce6a4339f7eec8100ad31f7887d84f44cee5510b30d217e1c4c3c0fedadd1a5a6db731e6ac0da4cf2eca5c7cab2ca8243cbc466e527014ebcb039f0b16ce518927c08080692de9ed3951965b0738d8b263d92b31c633e5feca18089963689c400177a648ccc5511051bdeabc2a2c4504c93a2dd271e7e7b30e529d9823074508fbf74fdf4394dd878cae7a876823fc92918b8499141f94578e23ee3a1a085c2452bf2d218f05738f0f32eba1b5c80dfa673f7153802d13bc282bec06107b7fa08613bea815a87797aeca61a6a0f23b8679c38f4eff01755e7b76f787a5394876dce014bff12ce0b11c970cf04d0495702e59a4b1c34b8830bfd2eb33e6318d03667bbeb1485c74052d22c80fed96c9b6b6f2e5d02fb9f874f65f2cb85d2b0a422b5988c41b9d98280fb2ff4bc8aea5acdb694e71d334efc1579825f4090906040ffec485fb91fddd94e6668b8948ab4fe8b90a10098f8cc0f011bab70f7d7fb6ee983c3549f9c3bdb0615d745b66ab655f8ed07fd45c765212c5b4a884827415b6993e3106d3392ad44673a774c6d5f2c26db0d0ad16aa6e74b0090dd9c8fb812ff4f42ce4184c0eaa5a197c9cd7be2a20c2efaf3fd82fe6cf9f7e420d8682645acb0467cef08ecb4169d1ce2fbf36f5797a51f04789695d56e7fc8da6b5f83c78366578af8ab7e4d26f39bb5d28cb0ce9bb0860c77005760b49f2041721ded46276f4d6754fa908175b8fb977989a1c5fe07cb11d126c749aec706683c6676703651bd9ce5f9c1d1cc68e23a62ea626eaaa8210f01d130358f319598478b47407b7f073d1164ec97e0c743052dd1fc6c41ad0d4411910a6bf9654e0db13ebc6756e893ab38ff9acc1b521b50d31c96f2421829344ae61cc1cc0dbdd5f41858ce5d079c3746b545a7a9c5c43f76dc84590b6d81b7512a06f1bdecfbc8e511a261159b5bd770b85f76a2849d9491cfa6cd2b9251ae0634c58c0f2730270d974de649b3c6d2c8c46873d815ef10ca803380f78bbc89c324bc7f7d666c18672e0fb26e15eba2a050f383ba720f59442f8619411052459d83b1e66115ef91ab75a6b392857fb517842879db0ca23a2e8d1ee71b98d64db9de8b98a9e928eb5b06e70456145598cc43066b950f57d270f65bd941e0c6e723bb6e6a79a85f20214b4e982221ee819d027b16dade39e7c869cbb5d1d835ccf4f959faa7656db5a76b35525743ac542d2d8dbbd92325ed02d4bd26272b28f5f51c18622504754160668eef0b95bcd0552ed841fef4bf23ca64c7fe86e53856cfa372217393e74c88530fb13d94bd3dcef07ed792e0fb4e71687cbd53ce051928103b489f001609183cd18a79140b74dc14f3433583baad072079c3bad924de05ea49aa693c0a83ed01c3c51008b1ad3f3ad1733a0f59d57cde1eec26d12bd6e48b747ff3e2f27a3d44b02c00034f5e963215e1e854531c3cf50954ccbccba64118d73e215087013086dad3a7d1f5f185082f1b8a6d0e0f2f9c093a4f55f1a9732a4e3fb19dc53216472539b07eca35470808c1d91498f6a9d21fa85e0de95e7094dd7ea8a370055f91b8713d9f1932baebead232fb628dd151ba7ad18835340e719c409d61bf42a34d6ead42def704c94d7a761e5963217943a383f6de7c1173e2118002859d374307de30c539e45c41e9193d6873b11b648c70fe34ef584331326f84cedf13cb8640069102e5306cd4ce405e4a3f6d0f97484496b70bfe838e875e0ca2e4926dc6c412dee44a84fe29581cf30766fc0e9bcad4bed59fcfa27e597250045017ad85f07123296a0da7b361207ff54c1d246504da07ecdec3a756a7f3660cb99b2b35963fe9788d634248c9dbe28ef802ffff33a489dbac7d76c06312c48338984a27b2318ac9585455b372b2caf214036f13deac5e03c12afdb4b410d0d391bd71aaf2757a51c02bc52726e36669f09374ac5180ab053cf1e7906266f67f10a6cddeec8f8f2d09a273e584a0286b6a902344975673e2fb2b657a8c525448f044713bba795fe8c17e3e2a10ee5dc9d6915bf356410a8fbac60deb40deb12883e98503366ab1a18abbf819a6521192db108834881e14e391d214a405885063146919dcf0213260594b307e642261a480bfea1dc5640bb2016b1c1554cefedcb67aea6da0eeae594015967f020289d5168848da5ee17b0f128bab41b9e384f29c64b1b5f0a5c6c962f79540ff7bb1119d859732d1f28796a39b3a29147b7924f7af5cb257d64cdd2759782f11a0caa827f9f978600982b8bde9a5aa9590382f7a691adccfa062ff794bbc2c579086c723fed3cc82d4a4fd641119db0ef0652a390c15ad7ad97103d252b27ca4b21732a4012da08f4922e1d8ea08b308afde9d232c98c921b7dad2f80ed4fb4dfb0be45bd629487ea295f9d9dc4577426c3a3f16fd39dfedbff09ee61895a92fc753c7f08570f22d13945fce57742ad12ed64de3dc799b513b35ed392ff8f8ce74cf7fe784b258bd7c5385554ac2e1a1417b64f47bc136dde2df16b46bfe3fbe570fca5ce04dc88d7281366bde81a5977d342362b32687a274c41de28f0f3eb9658a0d402fcadd6a2e7b53101fddcaab3c4902aea68b7638f6c441932f68b95c00a9700bd000c24d423a4fd2fe00f9947428351f93100cdec9157f55af4a957702327939fd91832bac851b5fd07c70d38394e2e88a5517f1579187cee46b204b6f96b8814034d5af0a59f255bf9711cee467ff9a40c8419f6818841b2328d4619206b8f483b757c7f3c4000fde67b50931456efbb4d4223c7dc9e5562da84b0a28518e0cd8e6b772532cc0e99db7f05cddb2d06215518327480fb9364ccb48ae823dd43909230d2f1c3792d76589d2beef43e1d57952b4906884f0f0d1bbc1142fd4bf50be4da3382703dc72c8608cd378a8be80acb9534bd9905b303e47a81d4295aaebdb82e2bb588ad02f48d065801d24b27b037d52439f8ac3ba5404c54a5f7758cc3254af31b89d609eea056eda38276dcdc49dacb915e498e3abd748631394e2acf2f7f1f7d7ef44e2ec56258b592540d7fb0615ca779f859ef6d01fb33c516fe68c066a7276c457f06d576706cfaca8edee2d0503df335f0eabf8de2387bd95fed8f3f1f9714c0233c58c2319156aa7a86976bdaf22b8798f2bbaf21255423ea1a62df46dae0ba9b83f7082674a8b46c0a140029b1cd3ad2c2bf64b6b46e81e62c6697d77cf39c403a1ad7d5d3610c37f8658ad24915899120f7cbac99b773a64dbfabf75bcc1a3e769500b3dbbbe608b0b74cda56f0b277716436a742d15ab0bd1bdb27f4166018ebf808053807e5b75be849222b04631bb198dc451dd734087f414f3fc7865d26ae17494f5ca9cdd1bc9cae599af3caa6331fb53f1dbbfeff95ddd16f5fe67ac38f2ae0ddcf7a9eadeafa956fad9dd6f250e5662d051c4b941c452fd8882cea115e637a464a0e7c2f59345aa131b3573fb41663fdf6815a0234a97cbabdaca18cab439585bec1fa90944b58231ec0785614d799c3a9ee79acef1aa33b33dc3feef8d01c80146d0820baa73297d3e98100a5a113d53e8e27747d0228a043a9963bb48a3b74c36c6f2a51b41fbe0ee4b401ec4b86b1dca431f25ac56cfd7931b18f7f66779e87ff7336e5b27798c1b08d30c09ca6fdef901c6215d4e2f991173b84123f0862bd3d7b5c21756a95b761f54f7926f71332b7ea05fb7dc49e6e5fc1b3e487d8ac5e140cbb772ca8739efbb0cfe7dfa7e8599af24ecadf732d6d60e5f8700e1e8039d9f1eb478b7dda5c0d1730e4eef0a9da7c9f5a2a5ec6510177c2df3f8531ce6bab14d67818151856cbd92dbf18fd7e31fe77d9faa321a22845fde3f9b843e4d305cfdfa95015268b7b5767911df5a61441870b200186482cdd9f52bf11667202f20445af61be2d3aac8cd386c54aa9d088de79b5fa47da156e48b7d5f031c78ec9a272c0eb98d60df283f0354f9bf2b89fbab5974e6e1dffeac63306e6f57c8f9dc27340deaa0e195bebc209f08b199b1baa8fd28b44bfe13384232afb8d4964efd54a4fcd1cd2d825f330b82a56d6f2e8c7eaec2376da5edcdc6470e51562f16608d6c269292f117961767d5d2e9fdb5bf2f2b5631daed4ee44b828a0c740c7e1cff98f4fa47ef3659ef22c210a59c8abe16bc383b02da5d9f649342e9a2de6ece0943dc544d2fce098bba2f6b046d5567ff6c0a6af05adf642419d93f4e5a097ba7c87b088ceec6fa81a6e46d35a2b6c4137c2654152895f01257fc8ec7910f6f243f645610c0c3dccecc599ab444d7e95702f8568a814617423346141e84d77d4d0ae3ef141e80abb83029b591cf4ffca49965f524d0136ffbb12c76b038f08461240b88491b0502f2b7493a47358c6a9ae0fc16001c36952824e5ef21d7181acfcd6605dd2ff9b62b81a06f3aba3a70d21707642778984f8b88fff2d5669821c0c39ab71cd2b6727955c0df1fa25225fbef6028a04fbe82c0226c994bfa18ca8ec8702b74994edd2cfeb0fdf5ad3f62ec36cef34745827d50f37370d925d79e0cddc91db8239636dd174d5a44782d26d2c1e2877c099afc3929f82e74c1828c419256269444b171459dd1e2156296dc4f9e40eff90e54240a3615d7388cb8fe4df1ca1f3dbd7829ccd4cf3cba25a394ec640c40e052a814c77e6e441ecc90a23408bf17400da1cb49fd2cdbe0a03c5d132b2b295e344acb893a6d7ae1c9cc085835c46922b65170e889ac1dbdf3dc073005b5fa60c5f18ac55f4d65d516e0ed03c9877cb3a5ded7a90975dda9d8660cb30e41b91786c2598a224b450441ae8e981cfa3da4793414adad948486f7a01bcf5866ade2d7d91bc62125d4ea3e8b81d7e9be541e266d9c2c200095b77136678a03a84ec39f6b0270ce3c358eb3dd7b7cfda6b1ab992fd5ee86d02200007f5bd92f043506993bfd4a8306092eeeca5c0ead86266a410fc4424f1b4f48e2fc47e26e72d847352db8683a9e9b44d7ff945ad6afbe3f1f939e83d6e0d07c91de966f0bfca89f4ab3f15e37b7421d773694bf2fef54f77e6a3e69a87c686f36d433463a1b0cfbb3900e01dc0e8a005ec8cd63070a2a3838833de00391d73e8d31c07e2838a2873d005ff1330868c482e0e3c52a57f2836f878cf6daf72419734461396c2ee43cead77d7b913b57b864f0bb532bebba99c79e83bc19a2279a022f23dc32b9886d5d329f7606d92c4d766a2b027487c30a463854e9c09a3882fe57b8da51aeca5c8319753062fa192690ad2b19cc1016640a88446b4c188180a596c158c740a6ffe1098902ec316cc31e439a70435ee31a6c39b305cf1085b2f2b3b1025c9b3cd60ffd9528175cbb3fe2c55fec405aea5a230796c5b6b4b836061791f42bf8f31461519c36049cbeac69989a41df2f184c4e388f42ce9d83d32e5f93361ed1168517d3b2ab4b4181b63e49f4ed10c1fde5305aa7a1b834598923f5b3079c2e771a23e63018903964deda514fd48e98ffbd0ef1be0405c1112316de1811487a9b6f94ea8f7ca31e5eb25e38cd27b2e9559bdbb4e0be9c777a775a961dfab3314907219a78153cfa3ed0b0fbbe05c35f9b8877c6120ddab14cac88083eea515667027530162aa05f9ab08cc6d0f932689c394568799c22155fdc16a5d247942f988c7801b9c6984ff081e27f6f44e4b10e18391edcd44dbd7e2410b724b368fe76c1c839ed79408ea6b7db4a633e0ac238ee6904443d22c123659c2372401e113890048a3f1a67faf14b628ebea47dc3309bd3dfa5db7e35b137642a64c9f53b74369cece5012c7b750eeea47ff3bcbcb819dbbe1dd114d40ad3ee00885fff138e24cd91f9bef37e7ab52a1721a70625762b9e9eea6c1fb368839233613f34d3d5a73d0557d0af8b1d992d4fc9448f9e061652c60802c79a59b7418c7446260eeae352702c2511121e2320ac54ea7784061d3b4bed67de159445ae9f173db5ddeea059c97a058feaa187e711b03379b08a3e63e3db424bed2ce148ab4632e781e1531986877a1fb7d562740e53d5322ff87f3423704963516c3b337df6461d337b2ca1db48feae607a1b855a47cffb72036974927c6fa35cfdf2bc5dea343fda5929e4ffa856ac9215da4e61d021b25e7a9bca2beb048236b45f332ab367dcd7776c8ad715065b5e075c923bdf88cb426fe79ea953372b98f315093106f8425b5eb59cf546dba9e37fb75c6badf643d3a5b6dd97cee1a5785e7228c4df4b98f5759e383118cc271b6aff9e5b6d3b7cca17b8e4f94b58f08acc86174240e43c1206e8c2637607965e48636ebc9bd7d4fa2400191a97b9d11e03c03bf01fcc0c0d15a05048f916cd502026857eed190d496cb02d08aaf7deb611707067ad17de3ff8305f20c8a3239696de3ec4408c2ff9597abe0081b3b69bf7a4c455c43520ccc0a8d429164bf407c909a02f7aa58f58c3bb418a6861b6761e6096476887747287bd8d24c9312983bca4c1912ad4f73b86d67b56995e3da1fe190861ea85b1dec2c3eee37f0d54ede721cec0363d4c95e0b0e33fd7f445b5edfd899fb246ad5ebc06368c35be646c2b15fd9f1c11de05426a07f4642cf22eaa5b1f7c7548c7ef2d82ff5d3694574cded5de7cfbf965c9bfbd2e993ff3075473c856a4bef398231dfdaafa58748e4b9eb96ca5e196c262d1590c9bf800dbe5dd5270b83cad03d6beb3ef640380ce899e4a52576c74e89942c3a141e37d4859b5cf3ee0e0f47bb76ff98767a7a4b7385e8942a5e3d816c51a40cf61366d5cf5c62b5435b2897292da409edf9c6d44549f8cfa42a87a72eadd30f674b7f440717678b59c0e0a544d82967e615810932643469b3e7989b14d328d711c7d001bdc8f3f0a74624f507da05d5b03419070782e71715f07fa45202e6e513a6a0641961b3546ae632397f850d7148139091221b6372b90e2c2557e21f6db5bcb1361babf5832a19fc37e49faa6e52f9e317e4a58b2e0d61863d41391b17754e2e19f52435955aefd21c6b8db1b17e935f94120f56d98c07ed8fe19d293052447bdabf85d22be59177d9bfde32127873d2bb9f4c036a8010f49348096c646e8451d31b60178d4414ec88921fdcfcd0c7c588eda543d0614e32331e1b3a40c456bd5e102b011c0f83039916ff85af43843f855924b3c1f359c99463c1daacdf9aacc041d7b6f4a6d005af8896c621d5c4b771120fdcc2da17860b75b33c0332b6718fd1342d046e1eaf9140978b7a1bb7098a91b76b9b975394c7df9c1d9fef359c18ab1d01ec194aa799c25d374a1fca3b90037cb72b781ce28db6389e539f66d46766d01b95489c22cac7a21708e0efb6998920124c2aff3887f2ad7a41f8bbda50e6d82bdda2172c291fca5f8baf16dab24007e59aa418a319bcaffb6881e312d6760faeb994a3d06cb2ad2f81dce9b6855e70ae602c4bca50849ed118db9c0241887c23ddbc5b8cd08e795e06bd99286a0b5afec3738be1535f86e2d342b40167020ec7d628b67450c6606b4955974311df4704475fa4733557673c8effadbc559bd1546782d707b104b683b74413a4c971305a56447ced668b081b2242bbda80f5e1f6d910a8d48c8604361e39232670209dbf51b7eeb4471147220133c76b016833f2dd3466bfb14cf025a4b98a727abf098d98792f6f1478d1bd4c5588734238a69fc184deecddac56ac034d24d382843fb9923a52cc1417fb69bdbb6610023c88517426b58add76cfbcfec9f4b8e73e1282c357fe5fb98a7db23b27f3092de168c74d1c01f6da90a7b3ddd78d5457232cc0287e8f43fda631cddc025f9b19c1086d56407a97f886e282e35144774a27b198065357360fc4c5b7f864a6db39081be89bd5b83da990524a26bc2c13be428f5d32f98385d8e6e816799d3aea2c6c652a528ea26dd3101a7befa7de739cbf47edb1e0d47d3c9e74db882a4bfe4b666fe36fda6a63976e0f49586fa876c30db48d943053c993aafa41a61d010d84afa635dc9c0bed8f80ab2286388ef75f62f79db23f1075040da0dcfe9394b75e601025ef0809e1b29b2fbe6db0ea8f7bee14d191cadf40d75af383606e957aa97c4094c55cd9f25bf2e50bb0ba7ef6a61feb5269b15a475d14ab3719fc5734f4f4ba86065f1016ce4d6712b6d3ffe5d60f16e1b9baa74810e57bda64a2d8076083257b6deff713d0ff8957cf7fd3e2955757fdb9b99b61b421bba2b3ba9a22496323471b994c53e79583646116aee50969aad31b3076caaa4af0e477f777ad049fa44c43a8cb3df2e28afb6c5e384ced411a665990976afa5c8b8ab70d7a8280c979eab3122393d59aaf1aa0e7cb772c51ff49a134d94d61f75d3e448d1bd03f36c909109c517901f97cbfd412efc2db143b3af36e5536c023ced44ec0e4449a79b0892aa4115028f74915d1729696655ef9e272f7ccfc4bd40448c6aee4d2725316bcac69117e1771a38f43df00edc06ec0c8955b0d66eed56dbd520e8d8a2db52ffc809c6ac521792319a1385642b8d3b8b47254ccc99288177d4fdb9cc0e247e209c9a03ceae47b6f5c2baf5cad9b6e7ca44ffc3ae4945470114955ec9294b3a808d9ef7756ad1c1736078ff473032bc34add285dfd68c09e0b3c3627c5191c3de814c28de97ef404a3941f80a475e880d982dd4e1cc6f805853f9f16e6a4d88e753bd1807a04eed045eebe3f99b121e8884d3894c72b1bfeb5c0aa7ad909f2c956278c6bff5dd20c860ea7ab0886e33deb7ca6a612813df5c11caa4e9aebdad2666ed1ee2350b28d5c9dcc2d483c19ed81d38a65861499b4fc3e9ad3dbfe3279a34b3365056b88323ab93ba1595a9f95b4a8b90e88633c285a9c6b2c456b1a94c90c8fcf27da7b612a2285c3153af77200ce11e068179105ff39da5b19006fbec1ca00da9b21b696e6e8bcfc0463fbcc3b3d7290822d90d8fa20b518c74387c8db17778218b0af433275e174f1ee840ece10ebf975cdfcaf282749c53d3133cafa2c5bff42bb0c7eaab84d79e4827d9aa5c98fe94c0b721023ed71a8d8c6f91b381743cee6a674bfe9994c7aa0eca6e7d50ae20c1af0437aabe88e4a1c0f4ca49a7ce340bf5fcf4ffbbba4e2df1378772eb53ade8676f91b5d72856e9d6187e189d50c28bd4d52ad62169a9026d492110c52d85f65dd7151df8aecdf873c65f113bc7a12383c14c2509f7715323c0211225a7909807d6c4636820f0dcd6bfba5cd5ddf0746e7157d680373e3f412d21459803f448425ea6784c7a37485c348ecdb1351b46c668bb42311f4b93993741abafac17a35c91236ab98f5ad73011f0b2975673443f4014125ae0adaed1d84aa2187fca8f3a3b0a40f52adafcd5083ec1813609290df89b124e19b87de3fcd162b40e11998f6c26a08057af3f4f568059a111ac70433b1c986f6bca8a369d997cb0d9cc132ec037a64517529d0e542388e44ac863422f5fdf0003f64fe122c132f0b275d39a43e16994a8ffaffb51a142f70b238533f395962f2cf2fe904491cbdff65ba5de8093263f3d392fb4ccda80bb4afe939d90f4561e2eef0f1e411eadaa0d2d5f5257ff72c8aaa23483e9cf9b3697ac0ab2ef5acaf79a7b33c0c0af850877d2ed12cfcedabf83e52664a4d75fc7cefa70c604678c97621ac2ded3cabd46df3846628781b8ceb665d392bb1b0ac64bcfa284a575441d87f8ee4a3149fa12bb9fee0aef34bb4f628b7abbf8c0b7feb1a061c7130846305a281a70e5d42c888056b981593eb931dacf18da41210d68e4318638c50f400d0d1c0b69b96cf627c78ce69bcf69e6fe4e668cae938eb39680976ca697022d1aad12fed061681a9f00ed3e4706e6f62facc2969b14011542237ebcc6303a2c84cb547d703dce9899e294f4caf83922aadc2455ef84383e6ab47cc42561e0742d976aa348674c88cca89ee04e2b0d6c4a53e5053606c62770d4912f19adb4ad26a47263a99de90b1654035e4da8e947e7aab2a96d895a7bd5680371ace2b93b38b2c8a5cabcf8108bfcb075dc262362ff9081d3ece63a450d17ac29259569c4b226e1d267aaf9a9dbc134a37bc0cbe914f0624e41f0d75a23597949f5e14d42f76503bad69d660af58278786eff2e2fdb8a67cedff34ad291b43f903e8553a813d56b105add4a867103e8580bf4facaf573bbff860f67b60231f91b104e6c0a68a0f398f7e69fab85ca16e33be2b635d4e0e8a2d5a2894a29da7671d14d23d6cf3b913194edbd34e3a10a58ade30dceffc2562acc675f9529217816ae945ef2b7271bdfe892ef01866db8485fe328350b7d4c6820220ec5501ebc9333761dabed75d2a413f061e9392a338c6b221fe86246335646e1c977b3e2a33f5d7809bb424b9cc5380efb1466ead859f0b0a3a3a04ba8dd2d36c3bcee6ef25c30796a27a08b9e9bcb9c4ef52ae61e327e8d7d5894aa06f08e9f5d85e04784fd9e918592b9bce0688662fe677f7919d6ca68a938f0323a7a42e08eee035a59c2077267576861375a0c0e838c972c7fbf0287efffd697a0533071b31d74392c89ebb743306edb639d1a5c5deb477ab449790bc3912fe850489a2018403ceb1d027378bf78e07c2c2dc6d8c6971a673ef6ef9e2bb7e18dcde15c2332058ac53ab31a225d5b4d783d965367bdc9e239cf5bcadcf46fd8e8516edd8c689bf002cac5a07a5d6895ebd2d136c081e08bacc946795606c2ff4e19fd1b62c4093973405f04d56df80777d5bb67b9dc2619254e48662c9615c27ba6406236dcafd57f8cea57d50789ac81d7d482ae294471fa82305faa239ebaab96d7da153883c4de76249609728f76f261726bf88b8a2a9569676499668a8f18aa38ede2f5a72a6f72d89866ff5632eef5edf3620f52b7468d1ddaf86f9353002acce0561ebbc2d1c2a864a2168ba834606f4394af00133953423038c91bd9f4f8ee1cae84cd810010d12d48ab615e30adad77edfaac7c303017751184da742bde1c25abbd9c007c71fa5d88ab6e5bea70248881674a3590aa15579e9771bb93486dfec75e9ff6e58dc512aef6593523010b8aad0d3f1e8f5dfed6e2035b3a35e19f04ad876931faf37766d3a730a86902c71d04030b7fb04c6488aa74c8c5ebb1911927c0f726f451696272e1d13d27913cdd1c6fe9daa71cb49f26df877eccf0574901cd7419e860f38927be28a1cea673c38329922644f9eafc65ce0dae48e9546a26205772fbee110151b555bcbc357394bfcca78c216e0eaf192a02b77b8ce5ce7b2435f11e45135c42328e77fbb9ce6506d0dd32f557cdd39c00d59274efeba0381cbfc6238cfddfe3a44466db9b69818814ff20712cc0bcbbe0e6094c3fcb9a9351fede9db7d6469c1b6416018c87f97d5e07b4b1ab60ebbb2be30b68b70d5565285bd52c6bd41c3880bb36041d337eb3c89b16729bba783b69c87f650dc895a2c9399a050afd904fe9517b26127cf67d563c2d9235e3a50bcd946ff9d9a4734b2b73dc86c579f98f1a0fcff56d652c3d1bb223e069264c3a0572037ad75d95b46c46095eaba230fe5566d9250d4314fb4f538600317b615c1e6d150e2e0a3dbfa611f3198b908cc65f88d4f693596fc39a411672a8c9a508eeecf0f418cbed7a11021a90136f93f76e73583daa4c09cec7c00e7e40fd11c43a9cee640b2b27fe21bd392369fc4d21bb2e80d03b4ca319bb819b512342f5a50c2502219ed16d267126ab32b50cf8b32f8d4b353224333d388b1335f3a907dc8b9d9174f009825f4e4f4dd8f4f820ad2d487aa62026200ee18deef11bf919c069296b8e3e19c3e32a08800679a9b6e6ab5a1d98814c9d352c38cd2e8516aec797742ff50f252c9a4e18285b99f021b6fff5911044b5f708c73ba0cce4d379bea2f19113fcde683882bba8a2f1c5da7fe2e2e0a1c29fc0122fe606705ad7877513c7290b54c9846be70e1dc71099460fb411f9d10f0a5c35e54f68235c14caa90d46a895a9570b81a0334c1f30b5fca54fc51191b2a701cb1b5b9fcfd91c382dae9b2d0379a809e31a5b6f693984b05ec7fc702a35ab364c730ce0ad0bece783905dd1dc9c65416a137fccd886609b27a4f4f20d9073a17dfb111cd9d5d421d8d1e998f23badb3b88bcbe7796650f9f3f519b6696b686fb5f4170cda284ba87e3628d819db048bb1d275eac02a2e8d0d3cee9ee16aaa1984056fa6e6f8b6e50dad6665a9b2b79e2e3589d784ea496c693c60b10fabc8109dba524001c78bf4cc0d6108cd861eac5893ddc3580e7047044349960a90ce8357c84d8f2ba8afd36c95c35e63319b6247a1f1c341e52f4cfc1e216221fb79785b40c6d9936d87bc71d9bbeef86fc6ace233596920e15f60c3d71e1d9edbee48943f036ac0678a7e465d7832ac1fae83e2af51b2671dca50d0038afa7558fb1b97f3d449bbdf1e1f6db617b1ecae9c47b1353651fb366911a4c20ccb9b25f687f6d02df4030228fc75bcfe5bc1593942f98b2a53b4d11459e76bb19ca7728b80b04f223366ec64ab128730b4412e993c407f865823cde7dc37cc5c7597d17cacaba98b67a0e10a51107eda9e395d42eb9f09a906a46ab232431f2d5d202fe89dbb2be5be61a8b3c73004beaebfad8b4efbd75c1d8bfe0661ea4281e7377bad03e517041792e5bdf045bf76eced5244c4119ad3e094a2e25ac8897c1257ccf7dc2eca5f3331bb57b403d72fba57d0a978c9ec7455e91791cf80bb52f1450a7d65cba472bce1d08beb67619a57f1c4613685b24a219e9b9179f99e958589ccdee61ea6bc32fcc90233ebb9817417044be2f229443dec872e5a0a526974b654293fac5c1343d9345d13ab3d05b9bcc45918884ce1196e80d0f6290d9120624b260a361d3a8ec65e899100d6abcedef2e4d7e86d6df664f16ade353b99ea2456d06455868cac550fffbcfe9bce42f5473c9a564581cb5146589eac011d30e97a465e1fcf158e201db1c4c288b5a257346484969dd3fb7b2d0cf8abdd62da567f5228f0401d32a9f5e8f549356adf61a7b4eb07bc8e71619edfe706174c6000693235158425e1a30b41a3dc80810980fc5ac60ebff67afc513f3f8011237f81576143a72120fecea8715d167e477d0ad45871588a36a1e3913e9f1b10f853ad190f0ecf3c878471be4266deaa7a1497ee46d03d85979f6d425f6273c169916fea95b7952df28acac63699660f47ff31a8756408774c0fb5f5b635cdc168d89a78a6a89a5a646dc9538068841fbae32d2612b9550547411486c7ef96cf4d2294c9cb17e8c3591ec6ab2fc2300b77cbc608726fe6b7d6009b088dfed704c4c827dbdf7169ef921e1214dd63977a45f2cbb440549c2e517db6ab1b71243182613ceabdd08331b83202ae55bf6cf0b23cd0734dff839a5584756778702ff2662cce5d172446fb04a5dbdedcbfce482b5ffbec755d3ef4ec29ccd02f7cc814a30a11217684603663fb8ecda716af2e27a57f1c2eefe031ba618692b8e3a0dba36b87d97b0bc232860823898d88ea78ad40db895a272d0094bd011d4f56fb2a5ec75f5fed336e8345fc8ad993f55ebce9cec318b4e0a9e0a1ae23e060b685bcef73739c1e9873c52d8254e822c8f2497f4a6320fe2c322d2ad72843774ab3227cf3494cb24b5810e40b2b4e83d7a46b83baf042524d49f0f6c518b63b8bd6744dec982cfb094ca002cc88515830191c5e1380f03ca428e267c5b88c10855693edd2a43de858ce3c5bd26037bc8ce8dd1720280d6b685a57082b0a56aaecdda4781b9b9f68b9523a1f1633a95ef09447ac83f42715b40936bc7279282a5674ae5b338cc8f5464b76275b467f77ebb08a07b4f84f17a092048fef561d2adead89a6a0af0185ee017d17d79a8787764290b8c2e0afc947e053dd74007f0d551ec140d6b91160718f26e61051a1da66daf5e55234e01065a5f26e5e6de813353f67775578cd8d8f093815c5a44e721ca2624eebb376bf2900e074f7ca0b5e0fdcb659a894b2f2bcd7a37ed4de115f45b5d10721fef7041ab2a190403d56daeb2b255c6bf62874ef1e170bee1ed2d06cedcc150ee33a9eeabdfd844354af4e88d2983382fce848cc26d08723fa579b5dbace9caabbde7bb8b6667f9ecd4d184e7cbd062d5a923454a2b6f789ed239405f98fa71fbc44a1db6f2d288e8f3b0cad52426069f59f753b56496a161e8e02296f1b684275e9d8a25a9163d98629c0f9086f7cc0523913d721b89384587fd9f601fc39e8e47cc67658c5ffcf8bc6a69d2359f88f6a6155cbc66e1d2fbe681de83e7c7853487b1231441bd104907149fea85da5674e04fb2c074fa96ed6f670857572c76e5756fc709d9ecb3e445de796c5943bf55534f451f5113d8cd05cb8e7ca260cf5901861dd2a94ddd1d50eca68097ac95644dc550120a74a7538365af772f66fad2c889a234363842c50b77f7d5bee85431cd0046a81851e9f16708d3af362f9569c9f95bf22fd635ced5efe5ed50f45b8e8f4a365603a9d7e8445107aa1af16e558409ef455923a4952413103ad4ab33fd410a617eea7f1cbaa67b8fffd7bf3100014847c90a8aefb542a9876bab7ff9708a265822a1e23ef45b815936d9ee5a25e69066aa11c12764b2563c8a447d8baf640eb53e3d09990cc0d763a07783476fa3e03662727c03d710873eaa03ff7690874b407c97a8f7e73fbaf0b3769066949e22e0e2d300448271561165d13d7c6f5c2e9997efacefa6f9958bbf4ff53596b27084cc23c2cb23165a2249a78b7b9ba1a62ecf9bc9e175a0a8dc17b8963771cce0d31a8d56dddca23cb0980ee0aa612d38d9737e08e7f804f1e534a2c3090aee19edece5882edcd4dfac5a7bda7f1e560e106c22724ac34e26c205619d5efdd8b4f94946b0294606abc6c4f09b0b7f3c65a9b2e4664a61e6e93e08c969b852d03e3cd61692b4bcb546ee9679c1e690e4f14aa78feb56fce28edb1bb90a1a28b876424181da122f3a75d18229e3b751013bb6a9ab1f00a22a91cbf6dec06ec56aa75d29b7929defd5c2b1905abf1a5576ebcf88219e6ac91b382318f4c6ee114885c9421fe0a4092c7caea01669117fa461dd75349b83fe10b0ce64b76a656d8ddd3112acc45557c9584c10b5bc0c4c269a676fdac058649495aa746487f8fc36a196f08ad9d23099f66a7e64686e41ce2feaeb3d2816299a4e4d5db174238feae69e4ac058a6e5f29efb281cb7f42d7b7a0cb3d4f4c4c78302b9d846c42c22f652b9f0365cf1580488fc17c1d16378c7f03535b0a7a5d4a5d0a34679894a217c2c86ee261eb3f6bc4ee66be1c6871a5695d60df358214cf0d4e28f005aa67c7b464b48294fc2f7d6c1d03c964e7118e0df8fa36d9a30a8635e5e98bb1cc03d217b6625bad6b06912403f2cd6d3347458fe417167809ebbfb15ef439f08cc75d3abf647ed8132e248bdfb9aa79cc1a5fd68db8a37729820ffb4e66614377ac6bcaaa3b1f619d398663e01e59846a700ec4cdf1c4d4a0bf96c5e504c21cd60b4655cc3ce1f5cdd37eecde2c0bb513d39e6f9cfacdaa7b19ba30120d7766768522e8e8c467232e8e4a77fc7b88ff67f837453e445b9925c18a1125a70cd19c666c641462088b91d25ce9fff9af87a75326a918c24a046e3195a00e299a7e886d9ce18183b12c5c8aaaea35730850bad5554200a7ef25d729bd597909ba793a171414a37cc2c981d7871728b4eb5f8d717642c10640778a3eb6252f20841409a9cce9bbe1919481909c6c036d668dcf734117a3d34109318e3fa4cf37b5cefa821fea74336eb3918d76dddcf4a184da47b17caae9d9b6057dbf89563e473fe35e88b32a3139fee1f4e388ee40d55804473dd89242a2afce944646662137b4b2dfc165c3ae5b2e34f8db91ff0d7e70642c9013c898c3e2510ad1a9faa69fa09e1029a1cbb330efc96d99384a8e9ad0a3bfbb6271523b468e0ebd0831ccb985bb8e3356145f43a8e5cc2439af19815aca165d9f17251fcfbc5b274b16bf0dae3f70dc466fda872aa72bd1c0b18159d959133430bc6b71c7d47745dee738c209f344f8a3d0bf71f5fd2226b34dda05bea75333385029505a0799acd171ca88da019c56936e745e8ba930850c71f5f4e6702e231e9bd1f54f468eb835ed286d5e7a72bc8f33435d8961c68d4de9ee381fdf8763bbf2a1bbf891c3132a9d5e96dfe0dfc5850b1b24a850e53cf27ccfc86b0ed5c3d811ac638c42c055ccb11fb8bc42b2e8fb7b2d59663aef2e5840cc76140a49c3c0bf17db2e8c9f96be6faf2fe8f7694b37950acc0eeef78ad1375e9278e9d776798afdb39a61b8225e8488cdd0f5d367b9f1229e8805eae3fe60b830e32deba057fb7833ee16c7cf098a602756dd32267da8bba43b6439af7360621ceb0a26d83df30e99042661870576ee0a2f168327570088e7a71ccd0e45feeb17e0713c07cc26357a1cd4c27ee3ce336a8a6b64d1828c439431d0f52a7d7f7d5e962d31a27c8384c7099eb3f72de91d86def671e56d3b93c26931ffa72490831af537344d373fd13b494dd1442a89c446e49232b39d27aea04c74be69426a16b78cf0deaff0e631c21696f00e3c20f61fa0ea8d9ea589ffd726554e311f1e68893b23fcd215b04331ee3dd75f5b561d176907335a4305cef37a2da810109b7a33647b1e4bfdfce87788d4cddac30db11c87365adc4ce5ea35b4658be235feab4e1b6aabb4e5334c2d90c30a80d245993232794893e4bb35610c7acf0773d2b0ce94b0106f7a12325b5d5879b29288d22f062dc0ca5ba5be7574a5838d0952d110f412f2c3ee454da0aebf9292010080ed101f6db7180495bf4cb761906dd6f24d5cf7e9d0bdbe1e5f5da397b211f46b6251a725cd7604a1cfea1abad47cb13a07ba267f2a8dbe6c8f4a613d63dc7f0b9e972763d99c4f3bd0399263c26ada606149fe05844a4c7de8a2de9b439e829698125bd9bc5661e28a76acf07e2ebdf15e058eb1a077b800cc181886b16be1f6d477024a4f4d7fa5ecc48dcd271778316c8cd74a79a25090a6c7f283c170332e86c9283f5152c6d098a1fce40f5eb8629e4c3ec0032e9f7e546e571a3ec4567fdbd540405e4be24e578dadeafc794b132ad22d1bf321612bce48988bb96b934cb5f0f6dfd32d20fbf0be62774f53a99875760a787a4c9a2eb9f6cca9813f265b7596965199fb43c8fbfff542c7a62a35589e4d2cabc4fc5ced9b5d511c730b76ad800435df1aa5ca15e6a6bbbb496e03f288ad43fe7d6a982f8f529a3a660efee6f0e073aec4f8b000dfadedf990e786f0fb2eeef5602383ec3688bee0c93d6128aaceb0cb9b2b867fa785c161d52b743cc42c2d79700e703d885e85e67248d78914a1d4d1c8701731dcd0ce7e0e73e220c0c6411df00e6fddd011cd82efdfef4cd4f182cbc4ee7521f96c34f1389941