├── reallyoldchunk ├── oldchunk ├── newchunk ├── README.md ├── reallyoldformat ├── oldformat ├── decrypt.rb ├── mostlyNumericPost └── newdata /reallyoldchunk: -------------------------------------------------------------------------------- 1 | DB7FDE18 2 | -------------------------------------------------------------------------------- /oldchunk: -------------------------------------------------------------------------------- 1 | 2C0CAEE79D0397B4 2 | -------------------------------------------------------------------------------- /newchunk: -------------------------------------------------------------------------------- 1 | b7c6e719d40a10da5a13647ce070056e 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ### Decrypting the strange subreddit [/r/A858DE45F56D9BC9](https://www.reddit.com/r/A858DE45F56D9BC9). 2 | 3 | #### Hints 4 | 5 | * [/u/fragglet](https://www.reddit.com/u/fragglet) deployed a scraper and auto-analyzer for postshere: [soulsphere.org](https://a858.soulsphere.org/). It is [on github](https://github.com/fragglet/A858nalyze) 6 | * the format changed at some point. [old format](https://www.reddit.com/r/A858DE45F56D9BC9/comments/1p26fo/201310231949/) vs [new format](https://www.reddit.com/r/A858DE45F56D9BC9/comments/1p320v/201310231559/) 7 | * each post is of various length and some may be cut off 8 | * it appears to be hex encoded data that probably breaks down into binary 9 | * it does not directly convert from hex to ASCII 10 | * sometimes when broken down into binary, the number of bits does not evenly divide by 8. It does divide by 4. 11 | 12 | 13 | #### Community 14 | 15 | * there is [a subreddit devoted to solving this](https://www.reddit.com/r/Solving_A858/). 16 | * there is [a wiki on it](https://www.reddit.com/r/Solving_A858/wiki/index) 17 | 18 | 19 | #### Running the Decoder 20 | Just execute it. Make sure you have ruby installed. Specify one of the test files that are in the repo to run against when prompted. 21 | 22 | -------------------------------------------------------------------------------- /reallyoldformat: -------------------------------------------------------------------------------- 1 | DD76D46C DC1FE445 DB8AE224 DC97BC6A DB7FDE18 DDA5E023 DE45B646 DB2ECC6D DEA2EA0F DC98DD4E DA18A157 DB83E327 DD26CB36 DD249C59 DE4D9A17 DD31B21F DB9DC248 DE44BF37 DE1B9F49 DD12FA1A DC16F617 DD23B155 DE1EA616 DD6EEC66 DDA9C938 DB2EB12B DD20C147 DA62F86B DCA5CE5C DB29CC13 DC8CE46E DA3FD837 DB3AE869 DC6CF235 DD78BC48 DD86D92D DA3FDF6C DA1ECF4E DB53EC44 DC4BA53D DC0FB660 DD1DBA68 DA29FA52 DDB1BD6B DA59E56A DC8FBE1A DD2CC717 DD4CFA38 DCA8A157 DBA2D610 DEA0F169 DAA6EC39 DAAFC377 DC3DF157 DD2A9D43 DD36A351 DA6BA86B DE82C822 DE85F759 DE689863 DB169F5F DEB4EB20 DA539E23 DD20C457 DD37DB4A DDB0D130 DC33A66D DB2AEB13 DA3BA748 DA4BE022 DDB4EE3C DC3BC159 DB36FC50 DE589E35 DC8DB559 DEABEF69 DC0F9E45 DEA4D033 DC5AEF5C DA23E320 DD59D815 DA2EAD58 DA929F35 DAB7BF62 DAB6F04B DAA4E832 DD77A137 DC48B431 DE20F533 DB8DDD35 DD4EBA1A DD2BB644 DA19D616 DB29986E DD3DC347 DA98A367 DC8ABE73 DA13CB32 DB60EA62 DC7BD141 DB71BC43 DD2DA167 DA10E10A DB25B675 DB66DA11 DD4CC40C DC3AE95F DB35BD0A DDACB040 DC76A22C DD6BF111 DB649B1D DA9ECE0B DE64E172 DA49FA3D DB48CA67 DD88B434 DE9ACC50 DB4AC323 DC4EE00F DA7AD440 DD4C9820 DB44BA14 DD7DF729 DA14C34A DB81B42F DBA8D650 DA62C45E DDA9B15B DD12A627 DD1EA748 DC56FC5C DC29A93C DE25ED44 DB3BA65F DD51A459 DE73C65B DB30CE0C DE2CF216 DC8AF06E DEA3AC6E DBB7EC40 DA8BBE3F DE50CC2B DE5ADE6B DE39BA22 DD2BD25E DB89974D DB39EE6A DA36C16A DDB4DA52 DE19A63F DD73A610 DAB6F854 DCB7B418 DC1AAF30 DD939F4D DC7DA259 DA9AA176 DC84C147 DA21A152 DCB0D236 DB2EB91E DE3FC557 DD42F70C DE6BF70A DC599920 DEB39D66 DC8BA22B DE74E85E DB83B631 DBADE65B DB55B02A DD51D23D DA20A817 DE4ECB2E DA63D421 DA29E218 DC2BEB29 DB72DD45 2 | -------------------------------------------------------------------------------- /oldformat: -------------------------------------------------------------------------------- 1 | 9165cac0df589728 7cc11c0be45c100f 8a12c60fef688862 af2e532d2a7ca1eb 5cbe43e0b7461dab 95e3e3fc808d5667 42c15e0a9d7b65c9 20f18f2a940ee6dd f005beac001dd675 7ac0340d9e8fac23 66bf23851f492168 05b9851a9ef8ded2 21c2b87ce24333c5 ea2a95fc966fe9fd cb6d24b2b61a2ac9 a24382448e00f7c0 a4b5f9cd0831fdb9 1ccbb97636ec29d1 4aa37f78688755e8 c0dea5f927914386 849f0318a875bdb6 2d5b57ea80b6079e 9d5fb0ddab6ec28a 442396d0e11859e6 dfe22c2b95d125eb 71b90a1c9479d2c0 2c1c9d21212e3536 470ec840bccf0ea9 a2394eda8168af3c 7112233a1cc87b71 009d7a2d7e251a24 13996bf55c058085 39b4b2817111d6c1 cfa6e72f940d0e6e a863cda0813a4417 34918f38a0ce43a1 bafe26d60735b012 a8e800da6d403a13 4839fc67caa02118 6a1229e33158a058 429d914ca2dd59eb 555ca8e0f531101e 8285dccd28d47e5d 0e984319cf2fd472 e91543f656a3d5a4 0ce17958217b9c10 ee38a14a614daa43 aa22acb33c2b1daf 873a9fd26ef718ee 060e69ef62718db6 11c122019cbb10d3 1c2005032425c12d e240301aaf655ddb e3f78cf9acf0ded3 2343c55618f9031b 8a6f857c0251c148 aa41771c90178869 c394af6bf6d6fc2d ce5af70629124599 6364aa68423e25ac 96b71cd316a24ca1 27f93f75b72d7036 2bfef94b4ad4d6e8 a2a0d5c3f630cd6d 9ec5335daea540ba f2019af63bd8ac75 92e7997c304d13ef 185ed784ffe7d7fc 4306087df20577d9 53845e6ccc522ff4 215d666b25cac785 77ae419bdea718d0 4e90670506ddf032 70e50aabc54dc2f9 9ce908f27583cb17 617b91f94d1d6d2b 3c8c81fae328aaca 917a0e76dcc17583 fa904cdcec4755f4 7840e0e4a014f3bc 89d261b85433f826 41234a42a46031b9 c16192b2c99fbffc f2637eb2b489903b cc204d626d19a30d 06655aca8ade100a dc942c98ddea3497 48080492b3a7b8bc 49a482bb2875bbd7 776c845b12a22e2a cc731b460e4b97b2 ff1275d96cfdef6f a483c1a1043bcc11 08cefe1b4b9f1ea2 1e85dfbcefe8acfb 32ceed7e6ebaa030 576762c1d01e79e4 d16078ca496c824a 566a9adb50979d43 43c4e1eb340c1e89 31186d4a14979dc9 6e1438c378f06346 49d152f537d67b2c c0f4736bcf19c263 cf939ed31948b49b 4e27520477a1fba9 f58839cbc733f97d 03e37ac8dca60b48 ea6b789ca54f1f6b 0a5a28c200f7861e c4a51eb51c3ee77f 63e1b9ef07b2264c c533172c60a759bc 6cb282c4e8a1e9e5 ebc780f3ca5d3e51 26db239e3f71bc1a 576d7868cc3cb4a0 887a990e21db83b0 626d7892f522eb77 c22c0e08767651d5 2a8a07a729d0b6b5 785b59fb880c65b2 5186d142a5716bba 217e81985773fa43 3c8a8c5b3893c994 9d4dd8528986ded9 02835365dcd30f3d 41533994428a63c0 e1ac6d331fdde300 2 | -------------------------------------------------------------------------------- /decrypt.rb: -------------------------------------------------------------------------------- 1 | #!/usr/bin/ruby 2 | require "Base64" 3 | 4 | 5 | 6 | # Priority encoder 7 | # Takes 4 bits and outputs two 8 | # http://en.wikipedia.org/wiki/Priority_encoder 9 | def priorityEncode(binary) 10 | #puts("priority encoding:" + binary.to_s) 11 | if binary.to_s.start_with?("1") 12 | return 11 13 | end 14 | if binary.to_s.start_with?("01") 15 | return 10 16 | end 17 | if binary.to_s.start_with?("001") 18 | return 01 19 | end 20 | if binary.to_s.start_with?("0001") 21 | return 00 22 | end 23 | 24 | # by default return nothing 25 | return nil 26 | 27 | end 28 | 29 | 30 | # read user input to get file name 31 | print "Open which file? " 32 | targetFile = gets.chomp 33 | 34 | # read file 35 | path = Dir.pwd + "/" +targetFile 36 | file = open(path,"r") 37 | content = file.read 38 | 39 | # Decoding 40 | puts "Decoding:" 41 | puts content 42 | 43 | #decoded = Base64.decode64(content) 44 | decoded = content.split(" ") 45 | 46 | puts decoded.count.to_s + " hex chunks found." 47 | decoded = decoded.each do |data| 48 | 49 | # convert block of base16 (hex) into binary 50 | binaryChunk = data.unpack('b*') 51 | 52 | # output how long the binary is for each data set 53 | #puts binaryChunk 54 | #print "Binary chunk length: " 55 | #puts binaryChunk.to_s.length 56 | 57 | # break the resulting binary into chunks of 4 bits 58 | priorityGroups = binaryChunk.to_s.scan(/..../) 59 | puts priorityGroups.length.to_s + " priority groups found." 60 | 61 | # loop through each priority group of 4 bits and run our priority encoder on it. 62 | # stack the output up as a new binary pile 63 | priorityGroups.each do |priorityGroup| 64 | encodedData = priorityEncode(priorityGroup) 65 | if !encodedData.nil? 66 | #print "Priority encoder resultant binary: " 67 | #puts encodedData 68 | # add priority encoded data to new bit pile 69 | $encodedDataPile ||= "" 70 | $encodedDataPile = $encodedDataPile.concat(encodedData.to_s) 71 | end 72 | end 73 | end 74 | 75 | 76 | 77 | # now convert our new binary back into ascii 78 | 79 | # output 80 | if $encodedDataPile.nil? 81 | puts "Can't decode. No encoded data pile found." 82 | else 83 | puts "Encoded data pile:" 84 | puts $encodedDataPile 85 | 86 | output = Base64.encode64($encodedDataPile) 87 | #output = $encodedDataPile.unpack('H*') 88 | end 89 | 90 | # output 91 | if output.nil? 92 | puts "Can't decode." 93 | else 94 | puts "Decoded and priority encoded binary converted to ascii:" 95 | puts output 96 | end 97 | -------------------------------------------------------------------------------- /mostlyNumericPost: -------------------------------------------------------------------------------- 1 | 2039383639333932 3135202031313639 3339323135202037 3935393339323135 2020333935393339 3231352020333735 3933393231352020 3934353933393231 3523203334353933 3932313520203333 3539333932313520 0D0A203732353933 3932313520203931 3539333932313520 2037303539333932 3135202037333439 3339323135202037 3034393339323135 2020373833393339 3231352020373733 3933393231352020 3936333933393231 35200D0A20333633 3933393231352020 3935333933393231 3520203131333933 3932313520203930 3339333932313520 2033393239333932 3135232031383239 3339323135202037 3632393339323135 2020393332393339 323135200D0A2031 3232393339323135 2020393032393339 3231352320333731 3933393231352020 3935313933393231 3520203733313933 3932313520203731 3139333932313520 2031313139333932 3135202037303139 3339323135230D0A 2033393039333932 3135202033383039 3339323135202037 3430393339323135 2020393330393339 3231352320373230 3933393231352020 3332303933393231 3520203138393833 3932313520203337 3938333932313520 0D0A203336393833 3932313520203931 3938333932313520 2033313938333932 3135202037393838 3339323135202031 3938383339323135 2020393738383339 3231352020393937 3833393231352020 3339373833393231 35200D0A20313837 3833393231352020 3935373833393231 3520203730363833 3932313520203739 3538333932313520 2033383538333932 3135202031363538 3339323135202031 3435383339323135 2020373335383339 323135200D0A2039 3135383339323135 2020333135383339 3231352020333834 3833393231352020 3137343833393231 3520203936343833 3932313520203135 3438333932313520 2031343438333932 3135202037323438 3339323135230D0A 2031313438333932 3135232039303438 3339323135202037 3933383339323135 2020393733383339 3231352020333733 3833393231352020 3933333833393231 3520203931333833 3932313523203330 3338333932313520 0D0A203139323833 3932313520203737 3238333932313520 2039353238333932 3135202031313238 3339323135202037 3032383339323135 2020393931383339 3231352020393831 3833393231352020 3737313833393231 35200D0A20393631 3833393231352020 3734313833393231 3520203738303833 3932313520203735 3038333932313520 2039333038333932 3135202033333038 3339323135202031 3330383339323135 2020313230383339 323135200D0A2039 3839373339323135 2020313639373339 3231352020313439 3733393231352020 3331393733393231 3520203131393733 3932313520203137 3837333932313520 2037343837333932 3135202033393737 3339323135200D0A 2039373737333932 3135202033373737 3339323135232039 3637373339323135 2020373637373339 3231352020313537 3733393231352020 3133373733393231 3520203132373733 3932313520203930 3737333932313520 0D0A203730373733 3932313520203337 3637333932313520 2037333637333932 3135202033313637 3339323135202039 3835373339323135 2020373735373339 3231352020313735 3733393231352020 3335353733393231 35200D0A20333335 3733393231352020 3132353733393231 3520203939343733 3932313520203937 3437333932313520 2033373437333932 3135232037353437 3339323135202039 3434373339323135 2020373334373339 323135200D0A2031 3334373339323135 2020313933373339 3231352320313633 3733393231352020 3335333733393231 3520203334333733 3932313520203133 3337333932313520 2039383237333932 3135202031353237 3339323135200D0A 2031313237333932 3135202033303237 3339323135202037 3931373339323135 2020393631373339 3231352020393431 3733393231352020 3334313733393231 3520203930313733 3932313520203739 3037333932313520 0D0A203338303733 3932313520203737 3037333932313520 2033343037333932 3135202031343037 3339323135202037 3330373339323135 2320333230373339 3231352320373130 3733393231352020 3938393633393231 35200D0A20373839 3633393231352020 3935393633393231 3520203335393633 3932313520203135 3936333932313520 2033333936333932 3135202037323936 3339323135202031 3139363339323135 2020333438363339 323135200D0A2039 3338363339323135 2020333138363339 3231352020373937 3633393231352020 3937373633393231 3520203137373633 3932313520203136 3736333932313520 2039353736333932 3135232039323736 3339323135200D0A 2033393636333932 3135202033353636 3339323135202037 3436363339323135 2020333236363339 3231352020333036 3633393231352320 3139353633393231 3520203136353633 3932313520203733 3536333932313523 0D0A203133353633 3932313523203931 3536333932313520 2033303536333932 3135202037373436 3339323135202039 3234363339323135 2020333234363339 3231352020393134 3633393231352020 3130343633393231 35200D0A20393933 3633393231352020 3737333633393231 3520203137333633 3932313520203134 3336333932313520 2039323336333932 3135202037323336 3339323135202039 3033363339323135 2020393932363339 323135200D0A2037 3932363339323135 2020333732363339 3231352020393632 3633393231352020 3930323633393231 3520203139313633 3932313520203338 3136333932313520 2031363136333932 3135202033353136 3339323135200D0A 2031333136333932 3135202037303136 3339323135202031 3031363339323135 2020333930363339 3231352320393830 3633393231352020 3737303633393231 3520203935303633 3932313520203735 3036333932313520 0D0A203332303633 3932313520203138 3935333932313523 2039313935333932 3135202039303935 3339323135202031 3039353339323135 2020373938353339 3231352020373738 3533393231352020 3935383533393231 35200D0A20333238 3533393231352020 3730383533393231 3520203137373533 3932313520203735 3735333932313520 2031353735333932 3135202039323735 3339323135232037 3237353339323135 2020333936353339 323135200D0A2031 3836353339323135 2020333636353339 3231352020373036 3533393231352020 3739353533393231 3520203736353533 3932313520203935 3535333932313520 2037343535333932 3135202031333535 3339323135200D0A 2031373435333932 3135202037343435 3339323135202037 3234353339323135 2020393933353339 3231352020393633 3533393231352020 3733333533393231 3520203333333533 3932313520203732 3335333932313525 0D0A203730333533 3932313523203130 3335333932313520 2039383235333932 3135202037373235 3339323135202031 3132353339323135 2020373731353339 3231352020373431 3533393231352020 3134313533393231 35200D0A20333231 3533393231352020 3739303533393231 3520203936303533 3932313520203930 3035333932313520 2033373934333932 3135232031373934 3339323135202033 3439343339323135 2020313439343339 323135200D0A2039 3938343339323135 2020393838343339 3231352020393538 3433393231352020 3134383433393231 3520203333383433 3932313520203732 3834333932313520 2039303834333932 3135232037393734 3339323135200D0A 2037363734333932 3135202033333734 3339323135202031 3037343339323135 2020313936343339 3231352020373736 3433393231352020 3337363433393231 3520203931363433 3932313520203737 3534333932313520 0D0A203336353433 3932313520203135 3534333932313520 2037393434333932 3135202031393434 3339323135202039 3734343339323135 2020313534343339 3231352020393434 3433393231352020 3331343433393231 3520 2 | -------------------------------------------------------------------------------- /newdata: -------------------------------------------------------------------------------- 1 | 38cfc6ac16c5bee46855b456ba042065 d0392466e8ed36ecaf297c22f4eb6c3d d1daa043f6e628a84ee88a19572b7d52 a2a445e86fea6829ae0d87ae1358a890 7839cdca72666d10c3fa69b2053e230f 63fd5b91d633860b0c23f01c475c667e 3450c1f06a997e92e3765702321611bb a4e29a886964823750911019a1854a5f 3d52b1cd8e6e3d35fdb3d3836670f59d 21543c9474bcf0cd48e79cc5d395ddca d3844be6738ab7134b72eba79e36b225 3afda4362042e4c2229cf84f31a299fb 75eeac793195aaaa3269cdaf07ed719d 2888f4a76d54155347ab98410f493fc8 5750a9efc465fc11fa6271147017759c f6dd0721dad7c0c15648f38e566a21f1 0a587f1bf2e5d7fb507e2be9310ec6b9 2e026f99512c21b523d715257c9a2635 b324e7132df3c2c3d1b27cd036fa2ee3 a402a8d29c10a563fd2fd3fa03126c9b 0f0017ce7c3eb45c58e9b72d609f9758 a831e4e80cbf061b1d64109d80b738e5 1a1f76cfc246f9ddf2c1fce60ea90eb8 54b35fcfeb451728118009ff5d3627da 69cd21c089dc25dcddbc8da46d1a9171 610694c2f45c81078e4011ebb68366b5 23733f7d0a4f6d5fb4bf713c41cbf5d8 13eadf004cc7822e573f593cad08a624 6253bbbdfad628de5f9c52c51dc59780 2fa802a574259f7922d9a9f905972065 2c8c6bf896fc710648da44e3b87457b4 e24f177eb0e09798dffde348ad2f71bd dbdb7262dd160ccde16fb230545b67c6 37055920b19df1c98b35014278e6c24a 054c447ba89c987aab4f6d197e7483b4 4730ececff34e167a2f73629c10c6113 9f37c244570ac21520e47d8292321658 83c2f4b29386bcefbb0ec920389d880a d556f1ff0fd1a21ed741528fa85ab9d0 ca7744b96165e37ed68fae98988841d0 911f817ddc6a5b4325abfc9365ba74d3 27312f07f342dfa584d2d91cf5f953d7 137e9e61c4b444b67cce12887972535c 32e524b4fd8cb2d13c59a21725bbf7d2 f8807e8a90dcbba8f038ca4ae1b3444e ae1577c85288437d89fea7a3932d2aaa bf6703fef9c3ad6a76c6cdff47b9fa30 dfb46146d31338bdfd0078e64ffe8287 a83b8f3546e1b019c17519efb90d2329 fa8209fd44dd868c3748d057d2a770b7 3f384dda72844230f4766580f1ebee41 6852bdc9fe510df911447f2a199f09fa 4d5ed429c91634ddb2fa90c3f82092a3 e6ed1aecaec44418d864d397810f46b3 9e4344c4a4ff2bb65c0fbf7965723dcb c99f9df7cef44fb3f60f5f8e2202baf2 da97a92a782fea1f5ff99097a2b65173 6d98961edee46a0fe53df170318376cc 824277cae3cb49085ae45b08a8e00038 13deed5f7abba8587c0adfce930d6252 25b65521164b102a7aebc9fb5a1f132b f188b95c0d21d31d2434f9440bfe5a62 fbf5a9d17c181017c7e6048d8885f58f 4722ff6fddbd74ea2db302d1680ed67c eb8f00ea7216c00230888a3d647cd748 1b50c8b830a2c82058411de4ba992aa6 84fa9864d8e78fd3bba629292c393f44 da973163d0bb71bb9797f1e74b2e575e 73ebdc5c2862df1bf8ef995d2636a7fa 5b1118891f222f1929091c6c0d50962c 965d034bb7e4d966cf449d4f3b9ca4bc 6f6cc71691799bd36be7eaf07b0f997f a2def4ef58d6cb7da0ef52f6e07042c6 aacb1767d9e0aa878b99538ce1ed570a b4bdddd415f5515995e2d7a6e749874c a7739eb348df51838a798b554218873a a35a615d84b103b79b20cc34c3b04201 0baed9f1f22eecb532cfb39af29c10ff fb820004791855a0a878679fb843e629 4aa25f898c8701d1929f741234b7759b 15c3475ee87fd36170cd4d39f9aaf1d1 b869e052c40d14e5d99eba03fc101ae9 7ae380ee68ff1f3f67a90b1c3b8a027f 2b4681a06497f3f61c54ba371d6f84da 20f744ff9fa08cc23dc4809caaf2f5a2 518c6611ee9ce288e6699e16bc4d62c8 404f6e11ff16fb699ee033c81a142496 e866bb010706bb28da6986dcc0418601 d2a8076d8bad441aa708bc8236f744e0 c56b6b2056bd21c62e94df127bc0c5d6 3228a165c09ac9dc9ecd8b06456e8b70 6e80e814fa44ce724762a5ab1f48896a 83fbf3a5f0690761a6201b49087700d6 2f4eabaecbfea5819afc233486247773 fedc4763205e3fe2980d5adae0298e99 18ea269d9cf5b251ec2aa0dc62354f05 d075b74fb37bea121e3ff1073e56120a 62f627dbfade4738c84968bd34aa360d 8a1842b1e2cae0834fd132ea497e1aed f9536263eeb0a7269a5c94d2989c2a9e 6f5752a735493d36af66411ebecd2a77 dc1a9778533c5a6ca9e0a91dd8f698a1 7ad6cccd10bbce9283fc278a6f2f631a a6a467c3dd78bc3fab62ca30408ddb5a 750febc66cf4e9c270b86351929432d9 18667e8866794eec990ff867aa32358b da251c748063ede412d82b4466789861 41d0458132bcc9361a32022fadda2b25 a186ec84998933ba8816fc3b7f938c8e 8b4be6efef8830e7f7cebc1d2eb38ab0 f19334c20e30743dc79ea5122509316d 50e53eb267ea4d9406af52deb3da24c0 629363625348841f24b7a402177622ba 28206c499a214eb7848d2979a4d937c4 20319f02edaf5613046a64c359ef6310 2e32df97ac54763bf728ae56d5cf76a8 cc47387d80f98965c68364b4e37ccec3 7b319a063b7896be7dffd7debda96fe8 0984b2cbb6d6f634df5c6a79637b3c9d 18ea759ca4d68be1db6598499237027f d0a645ec6e903745f1861feac50f74ff 9f26c9051cd15222eff95f8b45c7651e 2adbb6e04b74ebc2af4a3c58afab43ac 87daa45c1579b95343942e86d76c084a 82d4846ecbbcbc8d3d6d45b61757b9e1 83fb55a01b626c1363fce4912e2490bf dabdd54f1ab4c3860f5e0143214b7b00 1c273295a71d10d35745c2e6696b4aef e88d9a45a831e14520c83fa615eaca1c f309256ad72b5a06333f7cdee7833325 0e4a5d17af560200fbf0494ebf9ba170 aee8dac6d3b386cb92c3cb4cfeec7ce3 d9602a6c2a2bbae76a77d5cdca93fd15 c2c69c9b4f58ed4029fae8ed3921e9c7 715d41aa1dcb2f36fd2994953d7f0cda 089bd24c28b9c72e71363b110ff52e89 e73d38e9051075abafedafe1aeb504c9 44dd7e311ac3faf4d22d7fa30d51f67a 0a72c462ecb0425c092707b5919b0406 466a13888d9e24bbd984f39b900cd8d7 8beca9d2a3baef1620b30d5907999af4 a2d119074925f1ff08424154d337084e 9a1cbef736ef0218497581e77f8f2d76 d41e9059671ef3ae370e6c9d9840e40b 88c0af2f68f907dda11dd5778eea1a97 32b2702455d1767687fa40ac7e9ff7b4 764692f88538514c0ad630a28daf1dfd 0f410f0b4eea739084afb0dc8f7a86cf 56604bcecef27d0f5929f33d5345c08b 9d4d8238ae38d30c217045bf2cc2134b 1426b38855dbd0074df0d0ce3302f9f0 c6c5acc8f1456459f66d090ec3f32167 6ea43a7087db7db154e648a6a44f32d5 5cc458eb1ef66f920151d5994c03130c e356d7751ce490e5edf3f87836aa425a 64fa3ed53a8956e3635f6773a36bd5d5 7a4eff87cb4b0c8390af0f3d0b3a59bf 3439f9fb4a5649029169042834731476 87379370893d60b99c04cd99f33303fb 4dc640d783bc4b0d7ec53bd2b2b6cf4a 93e0346b8d571c3e78d0d6cc37d21c1f bfc30f2e2e1fb40ea983a7f5600e927c 8718b516051d01b94c7381ef7bacde6e 0a2b547379c54a31295bb140c1f4fc0d 99fd89b4f4c4429d0f51a205921e3c6d 5d2b42946dda7b0e2c4b7f162bf240b0 40d3e64868ea53c6a390a7be9d0ffd1b 136c83f1eacdbb82ae483d4ce812beba 92df8af2b61e8cca973a25af367377a9 799cbf1d169bd49c823dc120feb1e7b2 9e52db6894187b4a7f8fa978251da918 13bb68a4efb1ff99187e3006b77df2ae 4ea4c2126a303e32e78a2cb05cdc6965 cd7c54b729f6c9cc754238556180ba6f 8cf6806345753cbe63fb6e4dbb92523f 19df2909d156d1371a719843d9fcc9b7 fbdc88b34580d565dafed9e2435e0c00 d7af2ba16a7733f46e8e3bd5fe934ebc 4e1dcbd5bc1a2eefee5dba40d42b24f1 c9a41b913c4b78431a9d67ae68cee970 9cab87bf793fb108841160613bd90304 dd7cac1775716925ec14f8288f64d498 8261ba700b8ff205d496abed558013a2 9d3d158b39eca7950f68f7b962f73235 f6e6958367af6bf5fc31407309a0e4a7 be718599d6bbeb603c76c18b7c41d69f 7cd2b8a2be4d568d5651f3d5ac46b535 375403a72e4e7db8cfb03d2d94a3d602 e980e6db97a77e9dedebca99794aebd2 877237c89f4831bbb487de75015c7932 342f1bd544c6cf7af8a21fac8a9f99a1 fe86072ab973664c6c5f0b1e83fa2df9 042c462a60405ff3ea9422a3f60dcf35 aa2882a6c5726bf55c9f95fb146469c1 7783d411c0063c2f17c306a920809200 e989d0048adc8a0f2e438ab6a7f1e5de c4996676c90f3d1dd5d9075865cb4b8b 2cbd07bb0fcdfb2cf7f083e8e50090b9 b1da85f4a9f644252a99086a1fd2491f aaacb052aca0c1ff52e69d3481ccea50 97c07be235deffe9af875e3cf2a93def 7e49c5569ebcc8dbbb19c1210210c230 ff6bba63bc746f0768723c04290607f3 f5e5d9af9dcd8511d589fa2743be87f3 2cb2a485e6fb9a87f5aada8c0cd50aeb c87be7c70a76c5d554b57871fe6b21fd 86c8011b7ecf11e71a9f1aab94a61ee1 5855994f5eb5c4cf2020a9a838243ac0 f82da2ead5aec4c160aeec16c39c677a 568afdf77acc0c25870c22af9a21370b 3ec7a52c5ef7c44e241108d1bb31ff2c 54b82674288fd906d8f228fa59393331 63baf7dae1864e99462527bf678e9c2a 55fb93f82b1989c3d084ed658a790ae3 8c57580f22f4e54ac54c3adb686adf66 4a224e3e7f005f1f5bc6e12bfe0cbb7e cb0ca7a657b4e56d7fe9acbe7ccacdf0 caa2ae86a789c33627df2e2a374a7efc 6642764fd654092262e43e5677f40524 75aadde6ef127b6f28d36ffc0ad71a4c 34f1d1d6f1ab13f7cffcf19c0d02564b 1b5942f1657a5ce529d60656f980cda2 5b171aab4461b37eed4d98ec53155bb9 426894125a9338a90216c5aa65c3f107 1879b7b2200eca756a5ff0c6775d55c8 b85783be4cb85026b17fcfc153b8c4ea 6a597f18e7d5d2803f61d33eef051ccd 27cadaac453efe0aa2e9cfc70ed860da 18a0dfd1909d751aaea79012f002409b afff523ca675d4c6080875b82dd0eaf4 6a0a95c08553f646de15532b13d64c93 94ef08c310ae9627c91f77bdfc191504 e7e91f7d7d62071d479860e7cabaada8 69295cd6a406e08e59d552fe59cdb448 fbf2ea554d3e6d0933e47927827e3800 0fc82f48d52e2ce4798ec7830621b7d5 3911acc8819c8ded157b7a7ad14363ab 76b125a278cd192c951327d399fc97ba e2e1eb92c73cce14edbd93c1f2e7a29b 562ebf02300d2fe7f0de91639215da3e d670d69d45bd80341c2c88527b40a08d d37a3513f5577aeb49b17fe28da01360 59808bd831550688a7cf28b8b292c891 36d755e7d292db2bae96c2d4495e6e06 029c604392f2ed7644783bdb2f89d872 0aa74d7c776edcb6c644167e133668e9 d96f62a9b0f5f4a2af59104413ab3d9e 04ef4b88da8d0689e87fce2731193ee6 b3139895fa2eb3aa8a322f6dc670a468 bbca8d864af856c5e3435da139ae564c 96264335834b3abd7ea8cff732d64dfd 2aa49d15a2b0f97ab4ae3667acec9474 089c81d7459d1c9e30a1574f6050d46e 5fdd0a6ecd6eae1e545e1a4e63ab8b73 72e3ada843c8a758818da076f39d970f bb774d72784c8b5d3aa710b023dc4041 25a80a517d7a4bfaffa4f04f4529992f f83be7bf5ae95aee1a407fb87845a794 83e2ee79dcc3e666c7a61c004fd47f36 cb4cfaf852030a98629b3915a4bb1d62 e8df04f8f084c06f86f83a6174f60666 6ae355c0484147fb3a229c18eac2a553 be2bdaebeab1ee347b8e2fae189bfd23 c9bf4afe348fe292e1ff7deabfa0489b 2b7740df47b7a6a789b43edead4099b5 25c16bec490596090ec2008e90a853b2 3e8ab41d07f4f44059c02503342f54ae 65354bf6f20ab90ace5ec0a631ed83fa ded1ee86c881a3fff6bbf76587592eda de17b5b9a83169a60191b14d47be95b6 2baabe4d1a90bef57527957a5fbf5c79 72884b04bce734ef3a8580fa1f586bc9 47633bd990d2bef568622e06ec2989f6 b09dade536509699e3efe89a004c9b6f aa1a1b39df7321cae60d1c650caaa322 e4dacce1fb8940df45495877048e20e9 6ee977ccc226a651f7852b712c273a95 8cbac1d4206a1226510a526d6841a902 4db50d38fcfb67666d3f70006c8db62e b1df7db1cce96179fc7607f60f5bdc6f 63c28c9c2d36a5a9def8306890236438 0aa346d37acb086dbe66d25742b8052f 133fe3ef8706db57388f04ed0c0cb0fe 89be06050f802c912d4add335c0f4451 31a7eea3248df49437465a1ee60f6e3e b01b8496efda1b05623748bd8c08fe27 7aca6583ee294c4b55049b83bb501f8b f999e3ae47ffbc31b5c422ba1ecef0e3 fd822005cb214c4ce1cdec0b7569f7a1 de9b2f2a4551acaf08924629c6a163f4 50f170a8a765373d52f02d85a7a6e9ae 07129991b8d8314da943344f56e3a360 7cae40af408c973c2c875deb76976237 d1f0cdc0a97ab274a6ab6693c39b9adf 97c5c3eda8d91db11c6682afb5553703 563b4afaa9cd42cb866ed5d87866b8c2 1c70859c7292a6c5d0d071504a8ef575 25e7ebaf940b861ccf901a67d6af35c2 ec8c6d129c42d3606efdacd1ddec2ffd 9dcfe8f437ae6b1f7b98b67126ec51e0 176cdbeceb77b65a1b34ccd40d266850 649d5095972b876333a0fec72575b8f4 7a31279982ac765de16d2a75f5792b50 4499f6b3f01e628858c70c89bd72b8b5 f0cd58a946255d436575fe6c380ca8cc 13340c73437e8ee2c7805ca067ef8580 058a29a7a681ab9d35c5d75ba8d98701 a4c981edef2223db0c49b4751a893d1d 05f47f6192d92731e4fd5b852869399e 7433e5f63fe77fed691cfe29a7de7327 30a80ed2484df208194184fdf3eb271f ebb14414c533074b533dfb1b7147bc18 28346f46fea9008a680da6fea7f3db3d 0921beb9c5c9daa67e81cc26ef6ad761 0669bdc7927d32e300e4b69eea935c1c cc8b3dd032f0d81df12d26f47d62d19a cf5459d90385010d52ad1e6d029c01e2 3c49fd4c7ad665fc23fd8adf00a8a3c1 d68d65dd9364fcb14312331764a52016 4fd1a2e68bbb67bdedc7c85165bb3bdc 5ddcaf7e4cdf8ca125da997ec420a9f7 440c30be906080e731d633c4bd181122 4501a38552b4e2f9ebc63f6af1932d9a cf998f56d726b3e0fd98c627a12138df dec85b26e504cf6f098bdf1a1158c24e b5bf5dcc2021e17f369f6f186c8514e6 814f0c859ed0963542391eee5f0f1e51 5f06eab91f2404c4a663a673511e8a49 fb1cb78b57882b9ba4776fc389957d92 579d80a0a9770edfe345837cc6263919 e30178ceb1bbf477700d5fef2257c789 8898fb5663c125c471a16eb2b3f4cce5 d96aafda443b4d7207d1b0a862bb40ef 766d4b4e89e00c023c62b36681009117 8c8b334692059fcab589c9e57c0bfac1 4bbcc0c8b579f8bf5ef6a06ac2367178 191df6a9ac86fb263313b5e414ddce9b fea6700969909afdff67f2df203dde58 ac9ee1deab6221c39aaa5d8e053038f6 027b01117cffd52e51fb380a399f5e67 a70568bf0b44b7e08f881733746480c4 ef25b18b8079e1c8dad1de13e2f6fa31 5aaf01c3aaca734a29f09ad8e6a67544 61246a346abaae63405ae75427dc83bf 6b307e068722078edb000b6c7566dee9 47212e874989c0a916bfbb9d16156737 2e62c4dfcfe05aeb58b915d4b62607ad 374f5004a11744a38707c5e2fd2732aa 73ac23d5d467dd9fdfb5ec3802ac84bf c7602dc4b0bbc5be371a2702d23a31a2 cff02f1e72d006093ea9464d10591eb1 6faaabf2da93ffd3dd5b53fe00a810ae c6b74a3933f7b721ae40388786894ae0 d2fae1c1fa831ac094f0f5577feb9b7a 1b830d1afb587823c9b1d3759dbdd265 8c2b5b2cdbd9e6843cad46004cb9bd2a 9664adb35cd49f8c9e43e74f52b6807e bba50732198131db0343dbc97d30b4c7 b4f2c1a5dbb4757e2369e5275cc4b588 82ed21d8cb647de91524a7b4fe90f6be 255b179709079b99e83490126937a2c6 c467549b985e3bbd186817269c1a53c8 ffbacd67569a4d92905333e049c34059 fe61a0f853a9bb06fbd339e602a4317f cb901929f406d1d56697b76282f46c00 85cccceb92dda80865147ea7f8a65f15 0813cd7d3fd924c14be9c88ac45a9f8d ec95cd716bb19801d18a781069f7b380 5de6b8d86444b681d876fae6a700cd2a 7268888a2b2ac7e6535334a8290b4ae8 eca311fed38f8459f01718750094810e a37b655c5491142b381e2ae83ec83de3 14ec0e48b9accb81c56db47c5fa289c8 22dccc34f8ddbfd3b479cb995f74c933 f27c777b4d54ae2f6b58dda7ab84db26 a321c07ba3507fbae79097410105000e e1a0e2b7bffc5d8018fde8c1c70a2cfc 087e650af7d9cda6f052564c9109759d f113979a15dd974a09eb1fc8a385d8ee 947bf11089e3530296c5887f09a2ec30 7a00e02d4c70d8beceb42010eee82179 95a4976cbb5efa04e752262839efc403 59037abd7c9ca53ca5b7d47d89e8388a 05349da563a6333e446170121fc2567c 894dd98b3e3010a86fea8df382090520 73ad3c74645f4abe7456b525b37d88f4 0ed1073040e5f7009ecbfa596accece0 c1785b3cc71fe7f53b6b00fef86a7cff 2743b2c1d98cd7e461a2720daab67887 b7dc07f0f27e35273c58bfb0f965ff99 c6c53f6529d9cc18bb07d8af18ae7415 4cb4e3e00e46cd4067c606668124f727 32a4a92512ea9f38b6a71312d598c263 c66ddc17089b03f961bdc9ed9a3ea07d 2ff99f4e849c6f7ebf4b9da701a0e730 2971e7cd91bc0a8c8375c07c5f0ea89a bb2fee02e235c22cca16a549fb1fc969 f000cc567ca6091374a78f4d3c836b19 377ebb2f42046664f87bedea3792836b 31becbe54703a97724e1ed715e974aad fe9db1ffd85f42bc712ba5b1ab685ba5 49925a3329bf79a97653891096e065f5 453e43083e678227a12c29be41e5e72e 0dc887c06084c64aea73e0ecda086e73 fddd461d704a844a0643ef134c07f0f5 dd7eccafaed7bd5104a73fdb6ed2b55f bfcf711638f2d26b2b015d84c6e86307 cd4be16290e6e06debd9c0380421b359 e6f88cfc90e2cbb6b7eea6d0d4f62a71 9e7e40cb725ed58d7731ef22f73e206b a0db0f61ea2cecf0ffb6c48ce0aaf48b 6d625e297b2c89b2f6e9503c822f6920 3bb6c51fa62d069022d0b6c9cc88c51e 63d885af4bf91b2a4749033aa66c2966 aba6233f25fa199810f583c1617f71a1 edd13d2c1ca3d927b6af8a48e125f083 66705c086076f1af5ff7089f72cc2757 3f2d6d344f362722cb465437465e4e6f 6397c3b316a7afc3c31782effbc284ff 9cc99cfc59b8dc19e9ed7c6d0ba3c8c5 6450a8f21da15277f4ef2a12e04e8bf5 6b153dca6e576f1f112d0c3c2301a084 355d0c817bcd095220c6609ca96cf99a 7f02228411c5904aefc305ee49cf0187 2ffbd51f342b0764cb466d7e421e268e 56ce545e9c5fa38099539482f93f861b 0cd93164fc73cabe1df09e5e347098f2 83f4e0c164b0d62151f0d89409626c00 d4ed4d22cd590052e754b92f73435c25 5262561f5472c1436a74236566e1f2e9 7d19b6501b78146c4c929e2e193270a3 f0529f57b787300c7c1bc8d84ef8fe34 6fe206510f91a4459245f4ffc8985b09 1427626fe8afd0c6d91439075a28d841 de053e316081f558e42b067c0f9cb6fa e7698d7b7d77923f9164b658c9777b2a d029f40347bd1ef7574a106df6fe8cb6 ed7ca4b225b2dc6e95855ae15d3c5c36 db57818e8cdc1bcc443854a92f1d5b3f a1b3ba52e4f7e61f0a246dc3f1c739d7 3993a6fafc08eb2fb76b2289cfc3ac47 34ed3dc8b0f303ab1c855aea4c3654e2 7ac179232bb6b50620cf5634a50a9e27 45bb125322d6c2dedd20d637e7901437 bfedaa1fa4c0d692136ccf3c8c6d2d2e 5f6047a62336016267ce21a58ae0a48f 5d79766768eb123ce4e7f1f36814ba31 849244b72bee3308bc226a24c6841a0f f72bb702d9a1f5c3d1cf88873fca525b 50d5aa7c5f93b8b4dd4c7deca61cbeaf 1a0cd09900057b3f1ec5f92910594b2a 34fa487612548bb746f4442647196587 eeb96fd38cd95ac733aa2dd8245772be 0bbc53eff25db58af69b8e5753d4af6e 0604b2e1832da5459b4829e2d0e75bb3 8c4bb89c7e8a957618c7583912b0a62e fb175013e829360426041e0d3ef0325d f8285519032925128a5bf14f64d027bb d39ac6f82cfc40cb0618971a4a0483a4 bbc4e25f421c21180ea12f19ac07fde0 52245b60557eae246bc719ff6ccb1bda fed7052ad2a938d1738cf37ec3bc6bc1 597b1415ea70286a050817bc9217d7c3 6f4a2b0446e91afb1f61e02782a63938 905e2a76a844db3617bc5198c24bf983 27a90736930ea261f4601ffae1be5a57 ccd7ebccd882f2f87367ff37f2e248eb 6d86e6e3abb8dffbe3a8f7106be5a82d b282e97a47e5da85b71378940f16c21d 396a17d47bd925512b2964260eed108f bbb82f4fcf78407788fd3c629ae54da0 b8deafa04b38181a66301e082b78fc73 bb038cef7bce2eee7eba94f4665ed63c eded5a46708f0f29c1a8ee035abcdbb1 4c20fd8e57f55aed49066df0a9d257fd 5383a98df6789993a8fccaaa34c582a1 20279175f28fc96a2507713159125f40 48952401a41942722bafb4b7722850e1 20be9bd8741bf853496d518057eb6dc1 aa48016998537ff97164a6dae43a8e0d 09bf96237819c554eaf2211d76cc153c 6c7b50957baf034f0bfcb7afeb01b685 ef8e0fd8edd963812301f8eed426ac65 bd49c83f98984700c93f53d59e922b65 6066d7a0a5e3916dbac2ad957ea95630 4c2459f1af3f1e06b99efa17d70abd3d 192af0031ac01a1ed93ed4baa0b16f7c 0e789494e133f19091208a1ad24b3d58 11fa210ea692ca5ad6414b72c1287ae4 cf6e6e8c88671077ab5f6817a5e72bc9 f57d8217aae1333f679de9239da1e7c1 a3e88a40f53a810c9008078dfc788b17 b8928d20c9f35c1b574d8bdb0cbcf7d2 6b1c34b913cfa051ae13dd48c2605c0c 9af2fcb4247385f56a1402b3e06b5ffa 5a41f36cf800b7d72d720581a29e9b52 e30005d3ce8df8967cdd6ee75f186e0c 4a770bfcaf8c789be7d05bad782fca25 82570b14b07dfb591301045ffea977b9 dab73c368670a7e74689e87f57b0fac1 d4e2b5b447fc0d014135181562511f64 208bf57e6beb82314962291c0c91b602 520af0ee000a6020d9330ab3e587237a 4dbac92cec48ec39783c60cd137d3ebd 020a6377c99af264faefd91bd7f07346 637c5f2f815407b5b88ad64566c23e83 50a84580cf8f27d409677a2d23fd1888 80fd17ed0685bf8e6666bfabc9f0e2af 3b67de13bf6846fddf78fdd3f7cebb2a 0263160fd769b4d68a5d543b72946dff e200428c8306ef740c298f2d98f1b6eb 1dabbf260ad5ba153a3cd7d5c189b1e8 7e0e8ac411f22d1d 2 | --------------------------------------------------------------------------------