安全研究
CVE-2020-5902 F5 BIG-IP TMUI RCE:从文件读取到 root 命令执行
Thinking
2020-07-01
3 分钟阅读
研究档案
#漏洞分析#代码审计#网络攻击
F5 BIG-IP 的 TMUI 隐藏了整整一层「未公开接口」——CVE-2020-5902 暴露了这层接口的代价:未经认证的远程攻击者直接拿到 root shell。
Unlock to view this content.
ad8d9422966c73fee42096dad808c6448a272095349f41facc28f3d18d1ee66a0726fb5aaffd9271b6702e0ae53f6961031443030e63d37842b7356b4a67d1f44b648f709f84d99b1640e6f7a87a3d44129b61502fc0c5c728a88c67798e6cfb7bcb30fe880464fad1a2cf9635735fbd6e964b402ea4ed27e494f7c87c72f1c586b333a47062292625ea7240d146fb061f3975a6253d117e97272d7df5aa897fb9fe2c09034f658aae2645a68076992d7d9de07ae63e2fac88f85e475412988dfbc9277680c68a2878cabe69247c89e8283754980a31dcb4225180bee874a5ffafc64d6a778837ed9fc96782130a2274b956df164cde65c95834f1ee7fcc6e3ef3128c247d315dd99e134c7528378cbbc630a2a3b4d7dde3689e62d4da2a8f50126961ce49c6d82bef59df92d1e7eeaefe77c1f3ea33ecbec8f459e0dc201448f8e16f55098df67bad537447ab2ce16a2f45330920aac9dcd018c52948ea5aaffdfd55b4de3501a213dbc8112d11755f453087c05738303a7997271c57dca47e64e05c28418a0cd4cc38823d1bd0831da0a6b65efd56d470315593f9718c563efb87b0233b89c123b49c45b16baa36cf6dffed0074b233e768a2f7e289b6a5f4b0d8f795e6555c0511c4c8e50749bdecc949c7eb36646bbcd529fd7bb89d62bfbdfc951d6be4fd490e0c04822c5ef181d64f01013181d86b9cb0e62527bcf948c634171bbeddc03a5f13eefaf29c7d1f6f7e6223d299a30c0ab826fcfabf7e5c753a1401fe85a4b3198d76ba4934d395d79a7f114be06cf3f83a93726acdfabda19cc5ca166d412d421158cf00ee77cfdb8359ca0be2073836bce081e1fa89606d6fc3e8ca7d0362dcc112d9ae5a0ffd453c0d94114cfae2a0c541702f5045be50799653fe368435b30f1afa56d872ff4d2d1fc15decabad52c787dd0ced9bcf4607f81b89c073b68ef73683e8c5f3707b1cf9683732306e5c376e285bff8fd572c5f71860ba652faf7e90f2acb45cdd9873973ef50db6d3e5f447bbdae8db40e0b057784429cd3239475b8339775790e11e9ad82ffa3348f16ee1fe8575573d467d81622e035439e190bfa71a342f1944219fec6b337bbdfc2b1e48a92d67c2992a265ca26cb3a8e88457df6b9cc9edf7fe5ead27b45c21ec360ecd77931185c7d6dd0707770e2efa6d81bb8a30d4dfcb48bdc8592b93a223656c141eab0c1893c08190897ed48cf0a59dffdc6c603ddc14760d1ddb3a74de89ca1ac59b7570da9b1fe83bfbb06c41eb0603fa3a2371f0301591362a2d55625337d4fd387b1aaea92d1ad8aa361954e1afec2bd5dd9f19177d7087ab70ba6fca62d4eff3b970cff1796856842f5b4c553f914fca9bd81fe0e35317efda7967b7e402cb49bd4a145d6b244dc65edee755459360287f4146d0e50126233e19a0859e682794e79f0d330ac64729dc93dc0c13031f404e5c096b419e59cf15658fa87b5cd943e056fa4712931068dc0c94aac1eee6110c2fc3f9a047848c7a410cc1610766f95d8a3c213c10402229d3b81550c170ef276d4e5e4adab0ae511f598c4fdd1413ce62ee61939e8ccdf37764468a3595ab9e6f2c1774f3f8dc113d4e7dfeee23f73fcb6ae31ded0d7d5b4ef5c51867b5d860a4ddc5be98b0d245a47e02a65f888efe2a5ef8b81d6847316422d3ca956b65801805bdfceeae6d7b1ff1219f37aaf2347ceeca13dad9b944e19ec551c1e76911dfb419f9bd8dace0627fb68b3afa5fb4e1765c9533da9f9636c9637f402ae702535fd49bd4c8b2202cf34d5b4192a7ee80dac307ac0e6ea4f320b8e389623163d448787ca46b77bb6613c360826139b808b656c7f4308ba756d5b1e4d8ec374a9b7a7e6e73028e5e1e52b5cc73891cb7523b759293648d84612f86f253d960be721ad37b92f72f854a5f854e6adb8894ece2c74890096d9835ca2042910462ddb5b22c774a14be3b4f373ea6082d21e38b3f9af30903efdaf8fbfbd29b8a81d21adfc4e27d59fdfd3894fe221d3a86328ecc114bef17864371b85690ed2f9b6756130a97a8d401e1655556097c0b22d0a410236aac4c2d55766eefffea48216e212596001cb5e533c37f3adecbccdd233dcdd49a0de6c675258fd594d76145ab648ed3d990e7ae5d51963f9ad66440be8e9b21bb120371a8117345cb46e52add5ef4ad35f5cb71081d07d9152445364eb76e1c582a62af18f55ea58c6cde2953ee42539a20d0b6df2e3d1c25be19610c1d6f7c97ba8b3114063302701a22dd954f0c2259d3c28d7bd66d3a1079d84f3cfd9e0e67fb63326d57178bb5c18f46640037e3c2a35ed6cc1e76c9b5e28fc9d52ef0fe9b44f234994a73cc5bdad2ef45cc3ffa007b28345550498a6f4658a748fb1367eb586264d64b2636ba584d9d92ae8f407cd3a19fb4b5f5c605a77e8388cc3c298554ef334c6258927acaf8b23dcedd4ec07c77575b201ec55fabf86968ecb5387f4c289ab8a8bf4ec54e1c2d6b5824317194b16c6cc2c50fc5bcbe738f6d5a7c51a64af6ba6eaa06d0b409616d9303b466163f177664159dff2d688fe7be2c97d4a31b6fe2ecc0eb3d483ea850f6d3c9820afcadb70a8277c484aab33c0d79b890031a506a5dfdae80afc223dac7218737c3c8c748d522b72f420f9e61e99860324adec8cc60fc1e586b3b709433ecbca8e50dc1875c41fe08db092146bb83b042bd4e5237e655770e36e4a50d32d83e3b88671877c3aa8faadb2841df08cd01e2628683c04b3a842aa6c694957d9f364b09e36c1d8abc045b598d9d040db83b0e5b27afcdee25906595f224a8cbe4fdae8709561c32f1214ee7b9306ed9590d94bc73699700ada8254d7bd49c505e52037839d81df8c58cabc1fe233da40bce058b53c89746b33b6a669dd8cfdaa483dd4547e290051eaef7a9fa15a4c7be9e7579fbf7aa064ab0e697acdb3e81444f852dba73ce0ecdafd49cfe7dcff0493b8f6b73deb7646848d92d4355bf1260efc3fa9b7fc19e07d538c52e2fd8a5fe3e2342513144ff9165bde4827ca5fd099a9aaabe4105e186ec16caa5b57cbe910da7d907d610ce0f1ac40ee7da0bfeb08b2ff7546237bc5017fc887fe9cc3d21679c37d13eee824ca25434ef6809512eba27251c90d3a00ac1ba1197d30628f71673941054aeaed250272c9ff5c116882c52a4a91499381a3345deda6829704d95a8d0cb0c86f470c60d8d70ccb54157124cbcac3920ba1c84fb99d8b482cdbcf588392e1090735cc1260985696eb252bc1be8bc3ebff5d195223e7b1852f3163553d3a4db5150a6d66e88fb6f1513df1b62e63412a89c405ca7f7a74456c05cae4a0505ea1b12f88dec633c1fbedd724c13d5db5bd838ce82a3dd2f5de65e8a547c780fa6956c5e87b3a8f8986b342bccbc6262abbb13c2f8ec2eb6e24462fca3ecf62ba58d9658e1ff5d4575eadb4504a275d077feead527df07289fa7117aabf71412b9a8838712a568d63027a626b47e7dbc4a665ad1b32ad195f01245dcad7c356900fde986e5259c1e54a3cb1a09fa31220c66c09ee5c0ca878388c2e645e0590f8aa11a5cf6e7b0c7a8dabbf91c072b326a6abafba45eaddc51e1230938f319e8958b4f99894e6c32ab963e4904dc65da69420b2384859f3241a0ed6958ab8f38164897a7976a85f6c98c3fa44109b8069f3ba3362aeed859c89647011a75d1aea01ef644161b8c7ec5096657e9c991f770a1df26a8d72d3bdac173db3528a19e726bdc8b8309143a5de521141937242387322000216a0ecc1433d5f5f54c07d89e486017dba1ae8e6f817277ee3820e78397ac9ba4de97dfab8741b4bd53ee67336ae5cb873c61ac813c310778e1afe4100f34dc4f4a3d77e34b59141b7bef7d8337888595d9087f6175f1aa6d372d3bc50451673d56eb34f3e7f885f6c6be3a8c50fbfa9b13351f96ad86d0c06effaaa5a9e26bdb78dbfd8120a4f87d1ca527df7b18e9fc37d84593147e780d7700b9e6b8633f8412285a4cc0c153312f36dfee51020c9151618797a8af6b8b6ad6199ceb08c4c93bd0dccff297e66ef239967f9b94d93aa5046916537a20bf9b1bfe2f7635d5eacb42fb1703b9d6a62b2addfa0564010eeed7af23eedeb5a6fe4e9c4f281e936f39e23d900d8eee7509e2f91da25d35460efd6d276e2ddcc81068e048437be7799ed9ad98a3fb9cb58c252a6e97288817733dab74f80e1f489c991cfaa86cdbc3fa3f3bcfb9d9d851f2f88afcc2984ad38edb5d39c248a5b6049dea79dc548806b6fc6b5e133e8eac82f6141d02cee1817379d86128b60c0507895c80c3848235514531234986c79b6fc087f15b0dd4433508901d1b5dd102f3a73f734039504764707df22c464e3bd046ed1f58ce1577e1b0e9be1941e2b9d09e2cc28508b0380dd20e75f4ffda0cbafa7ea320e8db8027bd35278f432af494722a5b350761795a7554f889b2970c3877130764a1040e40a1879a8a4f057f487a7fa0c60a059618fc54830965b09d5fa21c4cf87d6b6703742caa44c00373df70a62b97102c597fecef343cbcf7d4b797cc7c37ff278527ec65772eb23360c5c08d8411fb4a2a45a3d45c567a27a4c2f2b92ae3258d9385e213f4d4071a7cadca0617fac9ad0fd8bfc3bf2084e6e1abb1b7f6565f9f4642ea5cb0c392845c1a60792b6ff672a50a21ee071afa34d4d249245e731a24836d45361d7d56682087a1bfe6899b79a23d218bbdeaa1a09dc07df00bd58640bca4782b3127e9f2ff410bc42957e0d6d5f7ce13a816b3efcb5e95485546a2284c8198f484571a020daa6a5eb0439af79d6b36bcc3cea734b1f0b7586cd4ac484cd82308d58a0418a3077b33b10956f3f9b5c548c89dead97b4949b348fa26c9e1c55764f0f31069a83b98a1bd44aab638f8d772bcf9c82b9b81889a240c9e255b34124a43ead2cb0beeaaaf928eb1cf9977247a11eb219a8fd51d4482380daa38509069eaca28bffdc8c510653c627129f5e59d497afa3327c01c43670f70b0cafd20d6b517ef461b27deb859a68548b376905a12355da594ecd3f3574ced55d2b716a840708dfad3d03031cf1e54db01369b784041001cb89daa6a989695f2dc3b03a8c0a71179247d9607c53a07d2a1d25f3c177e7fa2eb10b608690214c077d1715dfe2bfe46e34a74b940aaeea0c4fd6354f2e244b13522e49647995e7bbee3803dfa560206d23ad38b946584c83b46fff6e213c61edc2339d6b3306b1a37da02d02232172595ba293c93b2b3ab4b08801194a21a9802b1db23b642e333a6f28e7142ac591292a75df53cf0ae8cfe991a5287c167f6eb0552d42c9febdf251683c72e486493fd2b85c753350b416454713e717012ea8dc4dda26eaab1525fee1519372f9897884c8eb23bf7953230b1f766e298f71e13909b1a0b31f7cac9e0a1f7c4fe46d3b894675147e12dbc95f6bd5d3fd23fd8de6b994154ca49f337eb5b26649536ea66ae8eaa8de434839db1d7b43351ffad75c1e4cff0c4f18cadd1daf551dfe417a355679db63c026a0c52db7ba98b09d4416907666f216d4a832a28abe777151d1f3081de81c31cd8690537e2960c09e55dccb29d7afd721a13efa34f63f7f3f8636c488ce50c08aec819344c88bb082b53ffd6f37b6b781671484f406f14fcb687f7d20146e1480138d00aaca49de0be241b43ae2e677667c8a6caf707d31d5ec93540a385057a3331e6debd36f2d5f0a6c3c0c122b62947b93126aa12d7d18a15cfa955cd1c3daa1699a0f29ee37c076ced97a5da050e79f2d0472895317c5f12f7ab7d85a98645d37e84ad754056fc267646d9801b7ee96cd7d565316a2c4ae64ad0d10d3c151c9f9120d0817ca3955ed56e7353008af0344dd48483002ba9a7f8713832278dd5368f25d065ad4caa73daff2c41137c17224f4cc77bc07cd3bd542796a7b0e28231e516a3363e615f2c8cb630fd69f42314c65a682378040ef526b988fccce5e9e6f73eb3cb225a66961e5cfd533d7501ea7ff989dfdcce436f7e10809b01603f9b65397e2eec7ee911c98650bc43b3b247cd53e23416db180e2e2b4f37844deac348e7daf2b1cac97e3646f04824b50f953eb867daf7db46db115f56abdbf9dd5b52963e22f888de03700fcb872aa4857781a0cbdd3fd1f927d04b71eade7e5da296c7b433f265130badf9e566a102ec5811f6a7f3c13d36e9988ec1507c7d5d00b9d635bee9b33d4fb6229bd09405ff0fbd94a5d03bd2165f73306d94ef4c99100eba2485e42e8dbd768091eab5c4becea234e7198babe4d2fe6cdd242b4522156743d9a3c38e55ce238bd7473952ae81b92b3f34ff970ae814a2fed1e7e9ae4097851dc06640acfb507c66175dda7b9b8f0eef5ae21f78529be20107609bbcc367c1c9cb9312b63356b1b30b40c2ab72a7df5f1b3e6e83ed0ff6f0a537d696271523e2d2eeedcd126f2bd02e0f02328e053f403af82aaa8ef4f3461438d6d283c6b864d169d58d4b1dd8c31cb5b0a0c81ca1387fac0f25dc8e6294b66e5b1cdbba707e11e7d8212f0642df1ce56e30cb6c974c1efc7b0b3f944d9d61be4d74ece07cfb5af827c4507c7e1b0ba6cd98e03f33237cc2d3fa57c73ea5cda60e7f2d198a61f167c2c133cca8e8c87bd6960c9b17a731a5c9cbef3c94decf13c3874d40d2882693ec3532c0bdebedd8b645e4dd5f798934585c05ced0d2bacb3b84991c0970831407cbdfb14eccd05fde3c0c9bbedb9e8f8579513798e0a9926f4567a2e8a0fffcf3ad654f33b94cd5aee68a30e37311756cc44376b9df3f58c1b57ee4229b67ffc389583426454bb32953a42b3b7a28a6b00887c30d5bd91fbac4ae2c9bc8145754b73c320f2193c186d8225390e03aa76f1f609a4a1a1c09a4174596ddfe0fb760e1f218f4ad1d4ffb3ad3727f82f51a264f81ef63b28457165f214a0bafdb339b1a1715f82e68926368845d64ed6af497f80f99d18336c9a1bf1eb4ae237debe59abc3eec49c4de09bf170f408f3528fdbb5397ea7599f292493c6ea4e38ca131cb72db824d4de502b075c9923c715f8474d53fc47764294089946632163446f6a792b3916b5910472bc06918b1483b8efe9e481010388f26a66d0d26d2b59e5cff83c4245c9f294adc4af6711259a9a94fb7ed8bfb943020592bbfbfab356564eb74ab7383456413de1e6356553018d0a2c2e3fbab5428a97d5af068a075d4aadb826d6c2ff01778ed8e97715c2e2972226f227d24626019d99b69e178b1ca10e5cc431437dc68785e49187768caee9975f9f5753b760e49b938df644f49c240ff230bcabf01d4a0108f265691d52fda539b4b054096871207fe7c1a026ee352739e01c33fa75efde9fc52557d3f008ca8aecc8ea5c1558dd297d2908c0982212dd70ec9372406ae23a4c556d634d6979346ed76ac7d109350a1ffa80ceeaa17420bb725c90a2969d83cb4885788bf6b4868f9d1d30bc647e2a1e4de0c1fc922ed45d6a54b8c27aa5626dd4ce9a974442a31b4d7cff84198115db35ed67c47999164e627c8d0be4c10b5e4b9bcc9bf137a76be939c227e08e2e57e7caf0bb5ac23b9944cd18a1a93059abd99ea5724a47d5cfb89b9f756858f184ec392d820da40d39beeef86271b2ee430299a92252f12f7b6c6d2deac019b019a4318660af3aa8ec27a204ad4f235708bdd4b9f3427967e08b145745aca1f8571288b58a9cd3dfb4ce532095730953c7b01ea89298424b39697fb587a55bee2ed782aed9d74e990eccb658a2c0b3bbd83a55562581e5d99205d41ccdadc45c3cefc40e3d07fa6342cfb6ce08fcde5a5eb85570aea64591526e30b4e97a5227391953312343442d9b7245fd654a535fbc9963c8f81668de9762a506c2c67a5a4693893a5fac95adcc64b367c246db08134f9eb7bda2bc211fce03aa4bfb98b8b1d2f2cea43468e1d87daf1b45d13e5633b429b5a7eb0aa35e7b0931ebcb54337b9222d31232badabea48604a2324423d5b13ae624aefa14f9be7953dd77e10cd2cc6cb94e7be47ef7961488c8ccbc7a0f53faa7aa3ef88884d6a003d66e9cd8a358fc7fb4faac578c9ba9ef852071cd70e362914ebf5a5d5bffe6a6eb4d0093bea7ff545f6f9d5633d49f97c61b90abf3b820c922d2ac3e6b022831f57055d9d19c5f6737729db93ca00e6fb6a9a3e41b01afe38de9a437d1534f942b77b8006ed7be2d1c59fbcd7d66f216dd9d0c164b8d0f3ae06035879f4bdea43ea119ab16fa9edb2f5e3cbb78deb2fee046303fb82c6ae41233744c976e381bbed92af1590576c71fc5d558356f0936c75fa517093badd01bd23daefc0c95c950d4d384626ec47a3fa18c43c2aefe1e902911df8ba208935fcab4edfa6f0df8ce8e5db131e558589c7bab15bdf38378e2d6acdfaa8bdd27de664e13bf6a0cbae34b8719ee0c3d729bdacc23ffbf605aa886745695244d3087fadd28778f2e4395ff68f30e846bf400fb062f2042d65b4f0a93696514c073e39f9088cfb0416e111f0c5a2b242df81a783fd8a068b5241856f8c042e8808e50dcee93c36b581cd1b8a5148b543670cc4b45121a6d7e29031ba295926f3920122edec26eb1ca8a6fbb9b242d29a01ba45c07ed3b51ecc6b464d57df4266ab4e66ac8827d3dec741fcb8629c9288c7371fbba698f78021df049f63faeff412760afc4c0479d0193bad2001ed297f984e57f77ee0cbee65a0b1ac962f0a8e916bab1d20c95b608a7c9b3d5738495bf9ebd243cd10434c3b4f2b02a886b2afa73310dcfd3b3263e1a04864d301e9783d5896c38366e236eb543ad0858543d775fa2a0ca29ae4d1685b02edb8e86133b0d1a1f51a21043208f4445df93d6b1c698bf16628432fe7fef333bc2355511213ade5893a2632bd230dd362e10e907035b8c891d9fa65f8351b519fb725ce39370f46e9b57dc4d28e2a7ebddf98b2e744642b220784b888626770efe8b7baafe27cf10a90adbee7a0b25db609f57d657600bee8cacf71f50aa1d28aee0280452053baa8256042d55d9ec96e71fcd3dfc201a9e8a697d0c21ff2a0573d7ed02d83a17b572d6d2a7af3d0272694dc4cfc4f89b65779584f02ebcbb5b000d52743ec2c8907e8fb85ee44f3727e418e5a99799444ebaec379db4759cd322266c709432594ae8595c49030b3a0b161b73df8fd9f11b0ef9595c18de2681c8df8d2fad3a6aa3876eef38d137172547b5ee2ed106dc49bca8f1d29767b7025518d8fdcc39954d2bc3a87f3580dac17d8c6732c2b1709491ee3c274026c8669dbfe0a5c236728b299d05af4e71ae901af16f0ca3e74e4817ca76c563f7a3bc7184c5565be9d007e5d35ef1c97a2bd52080960dd527fa5a845bc1c11d4df5605dd2fb7f766c4ba6f1ca73b7cdd1e4c16105add7daca5faedc55791258a85cff633d4b3647c2288ca0ebe502de0e44f3ab042a285dc682c9308fc14ca81c97b6129cb00ce30f9cea5bdec6d31a4379eeb3f00d13811a13038d511f9bf2b989563f5768c7cc71d5c525c6d7529c6dcf998661a9af35626be237dd7b29f5e870c25885aab196dc3a1ed046ce2a403df0ea8f661205462301583638cb0e071bed60d73b07c2ec3c8b75fff76a3d2a3360c14ee5ee434fb73624f44c9d2962f02bd531f26a6ca40b838d3fdb32c5200686666603246ca8f277c76a9d08c481b79993030d25057dae0dc4cf7bab0677e62abe515daf499d95d4667b802e3f141c99a7da5deafb5b41624f9bad67402a11e40b90aacb12ae222180056179bb3eb25bb6bf0752d11edb6db8689bbad0d944e6ab4ecd6890eca647ac5f52b8cb0d7ade5500c2339bc1d1a24d3e53e7308ce03fa0b8ed03f4718c22025d1b3c37851f1a0b1ac972c90bba9996d090e7f39802f416d159a39f95f840c5362e6994e47fec12331695bfa6122097954e2e64df9686d8c4f3e2ac1297ddb9b0c96bcd04ab5e1f9331fd29ece97dcf64cac91cc6846e8a2c449aeb25c34ae4c56203e87bd32bf40fa7a303e6cb4664278379e7954295821dc94e0555fd25ee6461b8b9926430a790924842cb750cacd188662d1682c36b28e252a34a371413c96c3b2ba862655f28f608dd5e19fec28197e0e267d2f34ec75b1833c748a3f40f838b4a2402eeef5e7829bd8e105aa379a32057ff632b9c52c7c3f966600c264406d6d2c0a748bc8441d6c41e6c7fb7dd0ad57b6da4bedc74194093a4e27fa5874d2e4724bd91b1f2153c757611e13f980e6d98c15860ee2fbae0f8503b94e2b8b1e10ca350017a2562d60b10e8e1d8ff6c8a0a10363b73eac77b2c1675413f732b0d457e94013be5a77128d90b1d6fd364050d7b96ff8e4016548862b1ef9f0ac0ccad6009168172337489d21addfc3c02b27efb5c403de1288157a5ec9987f841c6bd8af4ccbefa9174fbeb1aa4e48813db9875c872f664a39af3f47962473deca5741de8fd5a6a80eedbd0e08c6550531ed5a551a26d16ec9b3cc5f92275ef40d7b8f65e6b301d9d8f6edbf9a78584263d500a7e976171a6cde2d4833892e96e5b98d3cf413dbc16581504a88e00ced840737a611321b6713655079659f7e2463145427f3ea02c9270739af113f1edc1bdd87020099701ae3c33e4953d81a618d726e16e9f240166a4f94d650ac2d7856ea35a57bf57f959538ec695a8fc0f89c51687605c32daf244f4518768c762c9e6f75570b0d27c804d220046dfde7457386e2a777da27a0c2c7ef967b2bee6a6e2c6f83f80c5c7e93f3b2406267375baee425e7f1d5b81adbea508f5c9c9b36239709d436fd40b8046891f3e5637bba620e6de400362d3499d4ea2004bf778d83687e2d3ac285eb645c058bf5c745d26b51d20f8cd4111e119a410d989a0bbd1bd83e577f19b5f3132345601e46537d68874dfa299d4f422b4feb7edb01980ff09c1361a484e3b443c67e1f88fffcc68276fe7ae81727bebd3f0ee6f4378b28c95cd6b65f5588525ac7886353ec91782a4f1797712cb43675763a173443496f7e28bf4451346831bf8618a2f1283d41d600518ced74412a7e837162a159fdeaa75fae2420d65725bfa4a714fde34cda533cc535b50e76c6907ab5558a37a358636fe32888c6356597c35f5710451513c56fb1839b033cb9c9ae5527709bbe5443325ebe19054cfa8dee4280a5fe7dfb536fe1fc44d0a1f59395d7ffe7770c2f26cccc098afe6a9e33694aa965284bb2a7662f10b402fc2f446099a73a5f520edef1de94344a41b1c0732905da585f6e2efc82cac7fd49654c16c12900c1c937d36cf22685b9e2fc1f48eb64b622205ce76aef1f2911a36fdb58ecaa87fe48336f33f54d9e34dc205133e2ed75a7acb47ee864de77ae043871ff4dd1d18ff5a4c55afb432bb6c1d8b9217451ae78d305c63d1ed69157a1b22cddc4e764686474ef46199d425896ae8335847474c39bfa82bc11f6e052e7c640449706f27e124d1726bf91a1bdeaa6f2e3610e4ff5fa22f0de257525f2edd9d06883e802a9386150f9c645a840bb2c688c24af2f2a7653fedd75748f4358af9944b4824ffe3bd0d7dfd462a877d0463793c4c66064e5e89762f1ac31d977199449ac43c2a998538b4c391342fc9066625afde764961364a02f3936e81c920249bbf2c8547e55bc9eb51d9b3e833c671ab7b114ee8351d6e8664d5ca1b17cce39b10be88ccd7040e3770e3df16ac9505ab763321e3849844cb3b78c55e02c208c6721300aae9f6211a0446cfb5277c6780aba2c191c99d4718027f0bc1f4cb31bf7575fd0af92e71e65514cd5fb1204a28fd5c94bae9e9848a3ed4d44b6897ee8d9f0fd863c61adf38fe497abe677f70e3364aa2013745bf5aae7bf377e5a1e2f3ae9dda716f2df76976d239df298598648dede3857c6592b5545429383f6a899db19ba38c9d3584482be96ebbe377a4de4738bda8fff3f267b96ef25cb17468e932c201aafa1c9c2776a934b92cf1517e33f3f80e760927b53f9106fe10f15f99e821b0e3fc093b45391ac71762cc9e34beea3666a078220c49eebf31d6e4eb334d0f39531e7b9518d8c496aa9106d54c4e3e34a42f493e4e251bb9b285c5828172081ae46209d6a55daef03c450b46d9d8654e39841f3f3e0274dfce982429ea3a0da1858f091f9afeb8faa9c272276254bb29f9e3a62bd689b8834ebf440dbc1f6ce00de8b29d43478c9140a7bb76524fe5d2db6b22117e0e0abe02c0cf3d3fe5ec5ca3b17e80f5975b646e20dfc12aef4719cd99630a5d3c371836edeb46d72bffe99dfa276c8200db016506535c50eca54add62613bdeea7df6b655446a5d8a5aa2a7c8cadd43558c291f1a59ad3c51f800d542a1ea4048aa0333db1e4d354652b773bb8879452320f8343b5f574be9b7946e952e6c0304bf14c08ad00d0fe9c6571d3cc609ae49aa207908ce276cbd09bee7f5a217570f85e77ff72232d0113693f79da5156ac24350c7717bacd59b6d3eab261172ea5056224341886a4b5850991688abda1aba8c1c2e6eb317e8ea6f6bd1305a864823b04e54345fc1739848441dccf9358b4059846f28ade6511eb81cec23f69ebb96fa6dddddaa8c1a8c7708a3bf0b34d89f7523ecf02574b5d02b42b0115898fb5fdf65d982bd48064a5131f8ab35289926b4ef0c56acd3417e495efde759954c44a91c9836914237c1e0c6888d9030a6453f0cc34d109641e8e12dccb282c387f221068223ee1e6403483c4018b26ded2036cab092760d5718705673b904b83a4eb39d7695bd9d40abafadc4cdddd64cb38f56ae1bfe8a4b66d79a2711345caddf49823ce81fe5cfac3939a4e223375da061e01a4e112c5075da172d4314ef142f0a04deb63cf5d716ea0898a4ba125f563fa3d21e2a0ef66e97987ba541ca4a98054682eff3da88ebce7b6a358cd614e6bacc23b61646c94e44101c1098e1d5078dc52bfb4034b16a8574ae8734fd9c07b416ccf2fb9a66b03ea06c0fd06bc3cbeeb8760a90874888cee5ac98cc03504395959adc6f60f9503392611cffdfa82af4a688a1a7528cd1f45324ccefcf6043cad78b3c272a5222afde93b31a1548908bc76fb298a665381a089af76e6b40896e66f11c5bea9a07f95e119efc5212f9b6c84935a209dcf08adecb78f564719a2fdd31711bc1a7ad2e2de91d603322f5883e2df22a1fc122ce10b87f3aa630806c6375374471575e22f00617ab34ac1a110356780ceb9c2ee15cc4d805bbb482844a5994d2b5433407b77f806c7b32368af604c1f6de35f67b4b6f1d8ffa6d7ff7a34eaa2e34f23e03bde0da718d4991b39d4b2755586631ecb72e95409a80a8b3c6cdf8ab90e79fc3cb140b5a938708f9c8f83799c2c878ee64b15f1422380c3bb7ca451e18ec4d3c2558df7402215bfc478cefa48f445d6e5d2acb739c8d95ab22c023a2ecc78c17cb47c9c1c813867bb4be71567832d680cdb40ebc8cc560394a004f43ce51eaad206d339d0f9bf4201bb59b3633714759394fef41635c641038f31510432740c703d2165eb3a6b278eb3cdc09e3774e3b583247261e68e3fec7ddbd5cb772e26