Find this useful? Enter your email to receive occasional updates for securing PHP code.
Signing you up...
Thank you for signing up!
PHP Decode
<?php eval(gzinflate(base64_decode(base64_decode(str_rot13('JScjGzZ2p3qgo1LiIUMzp0IXnSILE..
Decoded Output download
if (__FILE__ == $_SERVER['SCRIPT_FILENAME']) exit('No direct access allowed.');
include_once(dirname(__FILE__).'/../../../admin/config.php');
/**
* Database class
*/
class Bancadati {
private $PDO;
private $config;
private $where;
public function __construct() {
if (!extension_loaded('pdo')) {
die('The PDO extension is required.');
}
$this->connect();
}
private function connect() {
$driver = strtoupper('mysql');
switch ($driver) {
case 'MYSQL':
try {
$this->PDO = new PDO('mysql:host=' . DB_HOSTNAME . ';dbname=' . DB_DATABASE, DB_USERNAME, DB_PASSWORD);
//$this->PDO->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$this->PDO->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT);
$this->PDO->query('SET NAMES utf8');
} catch (PDOException $exception) {
die($exception->getMessage());
}
return $this->PDO;
break;
default:
die('This database driver does not support: mysql');
}
}
public function query($statement) {
try {
return $this->PDO->query($statement);
} catch (PDOException $exception) {
die($exception->getMessage());
}
}
public function row_count($statement) {
try {
return $this->PDO->query($statement)->rowCount();
} catch (PDOException $exception) {
die($exception->getMessage());
}
}
public function fetch_all($statement, $fetch_style = PDO::FETCH_ASSOC) {
try {
return $this->PDO->query($statement)->fetchAll($fetch_style);
} catch (PDOException $exception) {
die($exception->getMessage());
}
}
public function fetch_row_assoc($statement) {
try {
return $this->PDO->query($statement)->fetch(PDO::FETCH_ASSOC);
} catch (PDOException $exception) {
//die($exception->getMessage());
echo $exception->getMessage();
}
}
public function last_insert_id() {
return $this->PDO->lastInsertId();
}
public function where($value) {
$this->where = $value;
return $this;
}
public function insert($table, $values) {
try {
foreach ($values as $key => $value) {
$field_names[] = $key . ' = :' . $key;
}
$sql = "INSERT INTO " . $table . " SET " . implode(', ', $field_names);
$stmt = $this->PDO->prepare($sql);
foreach ($values as $key => $value) {
$stmt->bindValue(':' . $key, $value);
}
$stmt->execute();
} catch (PDOException $exception) {
die($exception->getMessage());
}
}
public function update($table, $values) {
try {
foreach ($values as $key => $value) {
$field_names[] = $key . ' = :' . $key;
}
$sql = "UPDATE " . $table . " SET " . implode(', ', $field_names) . " ";
$counter = 0;
foreach ($this->where as $key => $value) {
if ($counter == 0) {
$sql .= "WHERE {$key} = :{$key} ";
} else {
$sql .= "AND {$key} = :{$key} ";
}
$counter++;
}
$stmt = $this->PDO->prepare($sql);
foreach ($values as $key => $value) {
$stmt->bindValue(':' . $key, $value);
}
foreach ($this->where as $key => $value) {
$stmt->bindValue(':' . $key, $value);
}
$stmt->execute();
} catch (PDOException $exception) {
die($exception->getMessage());
}
}
public function delete($table) {
$sql = "DELETE FROM " . $table . " ";
$counter = 0;
foreach ($this->where as $key => $value) {
if ($counter == 0) {
$sql .= "WHERE {$key} = :{$key} ";
} else {
$sql .= "AND {$key} = :{$key} ";
}
$counter++;
}
$stmt = $this->PDO->prepare($sql);
foreach ($this->where as $key => $value) {
$stmt->bindValue(':' . $key, $value);
}
$stmt->execute();
}
}
/*sessione*/
class Sessione {
public function __construct() {
if (!session_id()) {
session_start();
}
}
public function set($name, $value) {
$_SESSION[$name] = $value;
}
public function get($name) {
if (isset($_SESSION[$name])) {
return $_SESSION[$name];
} else {
return false;
}
}
public function delete($name) {
unset($_SESSION[$name]);
}
public function destroy() {
$_SESSION = array();
session_destroy();
}
}
class Templating {
private $tpl_path;
private $values = array();
public function __construct() {
$this->tpl_path = dirname(__FILE__).'/../';
}
public function set($name, $value = null) {
if (is_array($name)) {
foreach ($name as $key => $value) {
$this->values[$key] = $value;
}
} else {
$this->values[$name] = $value;
}
}
public function display($template, $return_string = false) {
if ($this->values) {
extract($this->values);
}
if (file_exists($this->tpl_path . $template)) {
ob_start();
include($this->tpl_path . $template);
$output = ob_get_contents();
ob_end_clean();
} else {
die('Template file '. $this->tpl_path . $template . ' not found.');
}
if ($return_string) {
return $output;
} else {
echo $output;
}
}
}
/**
* Chat class
*/
class Chat {
private $dba;
private $session;
private $tpl;
public function __construct() {
$this->dba = new Bancadati();
$this->session = new Sessione();
$this->tpl = new Templating();
}
public function visitor_get_chat_status($json = FALSE) {
$result = $this->dba->fetch_row_assoc("SELECT MAX(last_activity) AS last_activity FROM zen_operators");
if ($this->session->get('visitor_chat_id')) {
$result = $this->dba->fetch_row_assoc("SELECT department_name FROM zen_chat WHERE chat_id = '" . $this->session->get('visitor_chat_id') . "'");
$data = array(
'success' => TRUE,
'content' => translate('Chat started with: ', TRUE) . $result['department_name']
);
} elseif ($result['last_activity'] == false || $this->count_visitors() >= get_option('max_visitors', TRUE)) {
$data = array(
'success' => FALSE
);
} else {
$data = array(
'success' => TRUE,
'content' => translate('Questions? Need help? Click here to chat with us!', TRUE)
);
}
if ($json) {
echo json_encode($data);
} else {
return $data;
}
}
public function visitor_contact_operator($json = FALSE) {
$result = $this->dba->fetch_row_assoc("SELECT MAX(last_activity) AS last_activity FROM zen_operators");
if ($this->session->get('visitor_chat_id')) {
$result = $this->dba->fetch_row_assoc("SELECT department_name FROM zen_chat WHERE chat_id = '" . $this->session->get('visitor_chat_id') . "'");
$data = array(
'success' => TRUE,
'content' => $this->tpl->display('tpl/chat.tpl', TRUE),
'department_name' => translate('Chat started with: ', TRUE) . $result['department_name']
);
} elseif ($result['last_activity'] == false|| $this->count_visitors() >= get_option('max_visitors', TRUE)) {
$sql = "SELECT d.department_id, d.department_name FROM zen_departments d JOIN zen_department_operators do ON d.department_id = do.department_id GROUP BY d.department_name ORDER BY d.department_id ASC";
$departments = array();
foreach ($this->dba->query($sql) as $row) {
$departments[] = array(
'department_id' => $row['department_id'],
'department_name' => $row['department_name']
);
}
$this->tpl->set('departments', $departments);
$data = array(
'success' => FALSE
);
} else {
$sql = "SELECT MAX(o.last_activity) AS last_activity, d.department_id, d.department_name FROM zen_operators o JOIN zen_department_operators do ON o.operator_id = do.operator_id JOIN zen_departments d ON do.department_id = d.department_id GROUP BY d.department_name ORDER BY o.last_activity DESC";
$departments = array();
foreach ($this->dba->query($sql) as $row) {
$total = $row['last_activity'];
$departments[] = array(
'total' => $total,
'department_id' => $row['department_id'],
'department_name' => $row['department_name']
);
}
$this->tpl->set('departments', $departments);
$data = array(
'success' => FALSE,
'content' => $this->tpl->display('tpl/online.tpl', TRUE)
);
}
//}
if ($json) {
echo json_encode($data);
} else {
return $data;
}
}
public function visitor_start_chat($department_id, $username, $email, $message, $json = FALSE) {
$department_id = filter_var($department_id, FILTER_SANITIZE_STRING);
$username = filter_var($username, FILTER_SANITIZE_STRING);
$email = filter_var($email, FILTER_SANITIZE_EMAIL);
$message = filter_var($message, FILTER_SANITIZE_STRING);
$result = $this->dba->fetch_row_assoc("SELECT MAX(o.last_activity) AS last_activity FROM zen_operators o JOIN zen_department_operators do ON do.department_id = '" . $department_id . "' WHERE do.operator_id = o.operator_id");
$total = time() - $result['last_activity'];
if ($result['last_activity'] == false || $this->count_visitors() >= get_option('max_visitors', TRUE)) {
$sql = "SELECT d.department_id, d.department_name FROM zen_departments d JOIN zen_department_operators do ON d.department_id = do.department_id GROUP BY d.department_name ORDER BY d.department_id ASC";
$departments = array();
foreach ($this->dba->query($sql) as $row) {
$departments[] = array(
'department_id' => $row['department_id'],
'department_name' => $row['department_name']
);
}
$this->tpl->set('departments', $departments);
$data = array(
'success' => FALSE
);
} elseif ($this->dba->row_count("SELECT ip_address FROM zen_chat WHERE ip_address = '" . $_SERVER['REMOTE_ADDR'] . "' AND chat_status = 0 OR chat_status = 2") >= get_option('max_connections', TRUE)) {
$data = array(
'success' => FALSE,
'content' => translate('Too many requests are being made from your IP address.', TRUE),
'message' => translate('Questions? Need help? Click here to chat with us!', TRUE)
);
} else {
if ($this->session->get('chat_hash')) {
$chat_hash = $this->session->get('chat_hash');
} else {
$chat_hash = uniqid();
$this->session->set('chat_hash', $chat_hash);
}
if (!$this->session->get('username')) {
$this->session->set('username', $username);
}
if ($this->dba->row_count("SELECT chat_hash FROM zen_chat WHERE chat_hash = '" . $chat_hash . "'") > 0) {
$result = $this->dba->fetch_row_assoc("SELECT chat_id FROM zen_chat WHERE chat_hash = '" . $chat_hash . "'");
$values = array(
'chat_id' => $result['chat_id'],
'message' => $message,
'time' => time()
);
$this->dba->insert('zen_messages', $values);
} else {
$result = $this->dba->fetch_row_assoc("SELECT department_name FROM zen_departments WHERE department_id = '" . $department_id . "'");
$values = array(
'chat_status' => 0,
'chat_hash' => $chat_hash,
'time_start' => time(),
'last_activity' => time(),
'ip_address' => $_SERVER['REMOTE_ADDR'],
'email' => $email,
'username' => $this->session->get('username'),
'referer' => $_SERVER['HTTP_REFERER'],
'department_name' => $result['department_name'],
'department_id' => $department_id
);
$this->dba->insert('zen_chat', $values);
$chat_id = $this->dba->last_insert_id();
$values = array(
'chat_id' => $chat_id,
'message' => $message,
'time' => time()
);
$this->dba->insert('zen_messages', $values);
}
if (!$this->session->get('visitor_chat_id')) {
$this->session->set('visitor_chat_id', $chat_id);
}
$result = $this->dba->fetch_row_assoc("SELECT department_name FROM zen_departments WHERE department_id = '" . $department_id . "'");
$data = array(
'success' => TRUE,
'content' => $this->tpl->display('tpl/chat.tpl', TRUE),
'department_name' => translate('Chat started with: ', TRUE) . $result['department_name']
);
}
if ($json) {
echo json_encode($data);
} else {
return $data;
}
}
public function visitor_stop_chat($json = FALSE) {
$result = $this->dba->fetch_row_assoc("SELECT chat_status FROM zen_chat WHERE chat_id = '" . $this->session->get('visitor_chat_id') . "'");
$values = array(
'chat_status' => 3
);
if ($result['chat_status'] != 3) {
$values['time_end'] = time();
}
$where = array(
'chat_id' => $this->session->get('visitor_chat_id')
);
$this->dba->where($where);
$this->dba->update('zen_chat', $values);
$values = array(
'chat_id' => $this->session->get('visitor_chat_id'),
'message' => translate('User has left the chat', TRUE),
'time' => time()
);
$this->dba->insert('zen_messages', $values);
$this->session->delete('username');
$this->session->delete('chat_hash');
$this->session->delete('operator_last_message_id[' . $this->session->get('visitor_chat_id') . ']');
$this->session->delete('visitor_chat_id');
$data = array('success' => TRUE);
if ($json) {
echo json_encode($data);
} else {
return $data;
}
}
public function visitor_send_message($message, $json = FALSE) {
$message = filter_var($message, FILTER_SANITIZE_STRING);
if ($this->session->get('visitor_chat_id')) {
$values = array(
'chat_id' => $this->session->get('visitor_chat_id'),
'message' => $message,
'time' => time()
);
$this->dba->insert('zen_messages', $values);
$values = array(
'user_typing' => 0,
'last_activity' => time()
);
$where = array(
'chat_id' => $this->session->get('visitor_chat_id')
);
$this->dba->where($where);
$this->dba->update('zen_chat', $values);
$data = array(
'success' => TRUE
);
} else {
$data = array(
'success' => FALSE
);
}
if ($json) {
echo json_encode($data);
} else {
return $data;
}
}
public function visitor_typing($visitor_typing, $json = FALSE) {
$visitor_typing = filter_var($visitor_typing, FILTER_SANITIZE_STRING);
if ($this->session->get('visitor_chat_id')) {
$values = array(
'user_typing' => $visitor_typing
);
$where = array(
'chat_id' => $this->session->get('visitor_chat_id')
);
$this->dba->where($where);
$this->dba->update('zen_chat', $values);
$data = array(
'success' => TRUE
);
} else {
$data = array(
'success' => FALSE
);
}
if ($json) {
echo json_encode($data);
} else {
return $data;
}
}
public function visitor_get_chat($json = FALSE) {
$result = $this->dba->fetch_row_assoc("SELECT last_activity FROM zen_chat WHERE chat_id = '" . $this->session->get('visitor_chat_id') . "'");
$total = time() - $result['last_activity'];
if ($total > get_option('chat_expire', TRUE)) {
$this->session->delete('username');
$this->session->delete('chat_hash');
$this->session->delete('operator_last_message_id[' . $this->session->get('visitor_chat_id') . ']');
$this->session->delete('visitor_chat_id');
$data = array(
'success' => FALSE
);
} else {
$sql = "SELECT m.message, m.time, m.operator_name, c.username FROM zen_messages m JOIN zen_chat c ON m.chat_id = c.chat_id WHERE m.chat_id = '" . $this->session->get('visitor_chat_id') . "' ORDER BY m.message_id ASC";
if ($this->dba->row_count($sql) > 0) {
$messages = array();
foreach ($this->dba->query($sql) as $row) {
if ($row['operator_name'] == '') {
$name = $row['username'];
} else {
$name = $row['operator_name'];
}
$messages[] = array(
'message' => $row['message'],
'name' => $name,
'time' => date('H:i:s', $row['time'])
);
}
$this->tpl->set('messages', $messages);
$data = array(
'success' => TRUE,
'content' => $this->tpl->display('tpl/chat_messages.tpl', TRUE)
);
} else {
$data = array(
'success' => FALSE
);
}
$result = $this->dba->fetch_row_assoc("SELECT chat_status, operator_typing FROM zen_chat WHERE chat_id = '" . $this->session->get('visitor_chat_id') . "'");
if ($result['chat_status'] == 0) {
$data['queue'] = 0;
} else {
$data['queue'] = 1;
}
if ($result['operator_typing']) {
$data['operator_typing'] = 1;
} else {
$data['operator_typing'] = 0;
}
$result = $this->dba->fetch_row_assoc("SELECT message_id FROM zen_messages WHERE chat_id = '" . $this->session->get('visitor_chat_id') . "' ORDER BY message_id DESC LIMIT 1");
$data['last_id'] = $result['message_id'];
if (!$this->session->get('operator_last_message_id[' . $this->session->get('visitor_chat_id') . ']')) {
$this->session->set('operator_last_message_id[' . $this->session->get('visitor_chat_id') . ']', 0);
}
if ($result['message_id'] > $this->session->get('operator_last_message_id[' . $this->session->get('visitor_chat_id') . ']')) {
$data['new_message'] = 1;
$this->session->set('operator_last_message_id[' . $this->session->get('visitor_chat_id') . ']', $result['message_id']);
}
}
if ($json) {
echo json_encode($data);
} else {
return $data;
}
}
public function operator_get_pending_chat($json = FALSE) {
$this->dba->query("UPDATE zen_chat SET chat_status = 3, time_end = UNIX_TIMESTAMP() WHERE chat_status != 3 AND chat_status != 1 AND last_activity < (UNIX_TIMESTAMP() - " . get_option('chat_expire', TRUE) . ")");
$sql = "SELECT * FROM zen_chat c JOIN zen_department_operators do ON c.department_id = do.department_id JOIN zen_operators o ON do.operator_id = o.operator_id WHERE c.chat_status != 3 AND c.chat_status != 1 AND o.user_id = '" . $this->session->get('user_id') . "'";
if ($this->dba->row_count($sql) > 0) {
$pending_chat = array();
foreach ($this->dba->query($sql) as $row) {
$pending_chat[] = array(
'chat_id' => $row['chat_id'],
'chat_status' => $row['chat_status'],
'username' => $row['username'],
'ip_address' => $row['ip_address'],
'department_name' => $row['department_name'],
'elapsed_time' => elapsed_time(time(), $row['time_start'])
);
}
$this->tpl->set('pending_chat', $pending_chat);
$data = array(
'success' => TRUE,
'content' => $this->tpl->display('tpl/admin/pending_chat.tpl', TRUE)
);
} else {
$data = array(
'success' => FALSE,
'content' => translate('The list of awaiting visitors is empty.', TRUE)
);
}
$result = $this->dba->fetch_row_assoc("SELECT chat_id FROM zen_chat ORDER BY chat_id DESC LIMIT 1");
$data['last_chat_id'] = $result['chat_id'];
if (!$this->session->get('last_chat_id')) {
$this->session->set('last_chat_id', 0);
}
if ($result['chat_id'] > $this->session->get('last_chat_id') || $result['chat_id'] == '') {
$data['new_chat'] = 1;
$this->session->set('last_chat_id', $result['chat_id']);
}
if ($json) {
echo json_encode($data);
} else {
return $data;
}
}
public function operator_get_online_visitors($json = FALSE) {
foreach ($this->dba->query("SELECT visitor_id, time FROM zen_online_visitors") as $row) {
$total = time() - $row['time'];
if ($total > 120) {
$where = array(
'visitor_id' => $row['visitor_id']
);
$this->dba->where($where);
$this->dba->delete('zen_online_visitors');
}
}
$sql = "SELECT DISTINCT ip_address, referer FROM zen_online_visitors";
if ($this->dba->row_count($sql) > 0) {
$online_visitors = array();
foreach ($this->dba->query($sql) as $row) {
$online_visitors[] = array(
'ip_address' => $row['ip_address'],
'referer' => $row['referer']
);
}
$this->tpl->set('online_visitors', $online_visitors);
$data = array(
'success' => TRUE,
'content' => array()
);
foreach($online_visitors as $valore){
$val = (strlen($valore['referer']) > 20)? substr($valore['referer'], 0, 16) .'...' : $valore['referer'] ;
$data['content'][] = '<li><span class="indirizzo">'.$valore['ip_address'].'</span><span class="pagina"><a href="'.$valore['referer'].'" target="_blank">'.$val.'</a></span></li>';
}
} else {
$data = array(
'success' => FALSE,
'content' => '<li id="nobody">'.translate('No visitors.', TRUE).'</li>'
);
}
if ($json) {
echo json_encode($data);
} else {
return $data;
}
}
public function operator_get_status($json = FALSE) {
$sql = "SELECT last_activity FROM zen_operators WHERE user_id = '" . $this->session->get('user_id') . "'";
if ($this->dba->row_count($sql) > 0) {
$result = $this->dba->fetch_row_assoc($sql);
$total = time() - $result['last_activity'];
if ($result['last_activity'] == false) {
$data = array(
'success' => TRUE,
'content' => translate('You are offline', TRUE)
);
} else {
$data = array(
'success' => FALSE,
'content' => translate('You are online', TRUE)
);
}
} else {
$data = array(
'success' => FALSE,
'content' => ''
);
}
if ($json) {
echo json_encode($data);
} else {
return $data;
}
}
public function operator_get_online_departments($json = FALSE) {
$departments = array();
foreach ($this->dba->query("SELECT MAX(o.last_activity) AS last_activity, d.department_id, d.department_name FROM zen_operators o JOIN zen_department_operators do ON o.operator_id = do.operator_id JOIN zen_departments d ON do.department_id = d.department_id GROUP BY d.department_name ORDER BY d.department_id ASC") as $row) {
if($row['last_activity'] == false) {
$data = array(
'success' => FALSE,
'content' => array()
);
foreach($departments as $value){
$data['content'][] = '<li><a data-id=' . $value["department_id"] . ' class="transfer_chat"> ' .$value['department_name'] .'</a></li>' ;
}
} else {
$departments[] = array(
'department_id' => $row['department_id'],
'department_name' => $row['department_name']
);
$data = array(
'success' => TRUE,
'content' => array()
);
foreach($departments as $value){
$data['content'][] = '<li><a data-id=' . $value["department_id"] . ' class="transfer_chat"> ' .$value['department_name'] .'</a></li>' ;
}
}
}
if ($json) {
echo json_encode($data);
} else {
return $data;
}
}
public function operator_start_chat($chat_id, $json = FALSE) {
$chat_id = filter_var($chat_id, FILTER_SANITIZE_STRING);
if ($this->dba->row_count("SELECT chat_id FROM zen_chat WHERE chat_id = '" . $chat_id . "'") > 0) {
$values = array(
'chat_id' => $chat_id,
'message' => '<script>$(function(){$("#tesa").parent().remove();});</script><span id="tesa"></span>',
'operator_name' => $this->operator_get_full_name($this->session->get('user_id'), TRUE),
'time' => time()
);
$this->dba->insert('zen_messages', $values);
$values = array(
'chat_status' => 2,
'last_activity' => time()
);
$where = array(
'chat_id' => $chat_id
);
$this->dba->where($where);
$this->dba->update('zen_chat', $values);
$this->session->set('chat_id', $chat_id);
$data = array(
'success' => TRUE
);
} else {
$data = array(
'success' => FALSE
);
}
if ($json) {
echo json_encode($data);
} else {
return $data;
}
}
public function operator_open_chat($chat_id, $json = FALSE) {
$chat_id = filter_var($chat_id, FILTER_SANITIZE_STRING);
if ($this->dba->row_count("SELECT chat_id FROM zen_chat WHERE chat_id = '" . $chat_id . "'") > 0) {
$this->session->set('chat_id', $chat_id);
$data = array(
'success' => TRUE
);
} else {
$data = array(
'success' => FALSE
);
}
if ($json) {
echo json_encode($data);
} else {
return $data;
}
}
public function operator_watch_chat($chat_id, $json = FALSE) {
$chat_id = filter_var($chat_id, FILTER_SANITIZE_STRING);
if ($this->dba->row_count("SELECT chat_id FROM zen_chat WHERE chat_id = '" . $chat_id . "'") > 0) {
$this->session->set('chat_id', $chat_id);
$data = array(
'success' => TRUE
);
} else {
$data = array(
'success' => FALSE
);
}
if ($json) {
echo json_encode($data);
} else {
return $data;
}
}
public function operator_stop_chat($json = FALSE) {
if ($this->session->get('chat_id')) {
$result = $this->dba->fetch_row_assoc("SELECT chat_status FROM zen_chat WHERE chat_id = '" . $this->session->get('chat_id') . "'");
$values = array(
'chat_status' => 3
);
if ($result['chat_status'] != 3) {
$values['time_end'] = time();
}
$where = array(
'chat_id' => $this->session->get('chat_id')
);
$this->dba->where($where);
$this->dba->update('zen_chat', $values);
$values = array(
'chat_id' => $this->session->get('chat_id'),
'message' => '<span id="fine">'.translate('Operator has left the chat', TRUE).'</span>'.'<script>$(function(){$(".utente_area,.utente_send").prop("disabled",true);$("#fine").parent().children(".username").remove()});</script>',
'operator_name' => $this->operator_get_full_name($this->session->get('user_id'), TRUE),
'time' => time()
);
$this->dba->insert('zen_messages', $values);
$this->session->delete('visitor_last_message_id[' . $this->session->get('chat_id') . ']');
$this->session->delete('chat_id');
$data = array(
'success' => TRUE
);
} else {
$data = array(
'success' => FALSE
);
}
if ($json) {
echo json_encode($data);
} else {
return $data;
}
}
public function operator_send_message($message, $json = FALSE) {
$message = filter_var($message, FILTER_SANITIZE_STRING);
$values = array(
'chat_id' => $this->session->get('chat_id'),
'message' => $message,
'operator_name' => $this->operator_get_full_name($this->session->get('user_id'), TRUE),
'time' => time()
);
$this->dba->insert('zen_messages', $values);
$values = array(
'last_activity' => time()
);
$where = array(
'user_id' => $this->session->get('user_id')
);
$this->dba->where($where);
$this->dba->update('zen_operators', $values);
$values = array(
'operator_typing' => 0,
'last_activity' => time()
);
$where = array(
'chat_id' => $this->session->get('chat_id')
);
$this->dba->where($where);
$this->dba->update('zen_chat', $values);
$data = array(
'success' => TRUE
);
if ($json) {
echo json_encode($data);
} else {
return $data;
}
}
public function operator_typing($operator_typing, $json = FALSE) {
$operator_typing = filter_var($operator_typing, FILTER_SANITIZE_STRING);
$values = array(
'operator_typing' => $operator_typing
);
$where = array(
'chat_id' => $this->session->get('chat_id')
);
$this->dba->where($where);
$this->dba->update('zen_chat', $values);
$data = array(
'success' => TRUE
);
if ($json) {
echo json_encode($data);
} else {
return $data;
}
}
public function operator_get_chat($json = FALSE) {
$result = $this->dba->fetch_row_assoc("SELECT last_activity FROM zen_chat WHERE chat_id = '" . $this->session->get('chat_id') . "'");
$total = time() - $result['last_activity'];
if ($total > get_option('chat_expire', TRUE)) {
$this->session->delete('visitor_last_message_id[' . $this->session->get('chat_id') . ']');
$this->session->delete('chat_id');
$data = array(
'success' => FALSE
);
} else {
$sql = "SELECT m.message, m.time, m.operator_name, c.username FROM zen_messages m JOIN zen_chat c ON m.chat_id = c.chat_id WHERE m.chat_id = '" . $this->session->get('chat_id') . "' ORDER BY m.message_id ASC";
if ($this->dba->row_count($sql) > 0) {
$messages = array();
foreach ($this->dba->query($sql) as $row) {
if ($row['operator_name'] == '') {
$name = $row['username'];
} else {
$name = $row['operator_name'];
}
$messages[] = array(
'message' => $row['message'],
'name' => $name,
'time' => date('H:i:s', $row['time'])
);
}
$this->tpl->set('messages', $messages);
$data = array(
'success' => TRUE,
'content' => array()
);
foreach($messages as $message){
$data['content'][] = '<div class="riga_zenchat"><div class="time">'. $message['time'].'</div><span class="username">'. $message['name'].': </span>'. $message['message'] .'</div>';
}
} else {
$data = array(
'success' => FALSE
);
}
$result = $this->dba->fetch_row_assoc("SELECT user_typing FROM zen_chat WHERE chat_id = '" . $this->session->get('chat_id') . "'");
if ($result['user_typing']) {
$data['user_typing'] = 1;
} else {
$data['user_typing'] = 0;
}
$result = $this->dba->fetch_row_assoc("SELECT message_id FROM zen_messages WHERE chat_id = '" . $this->session->get('chat_id') . "' ORDER BY message_id DESC LIMIT 1");
$data['last_id'] = $result['message_id'];
if (!$this->session->get('visitor_last_message_id[' . $this->session->get('chat_id') . ']')) {
$this->session->set('visitor_last_message_id[' . $this->session->get('chat_id') . ']', 0);
}
if ($result['message_id'] > $this->session->get('visitor_last_message_id[' . $this->session->get('chat_id') . ']')) {
$data['new_message'] = 1;
$this->session->set('visitor_last_message_id[' . $this->session->get('chat_id') . ']', $result['message_id']);
}
}
if ($json) {
echo json_encode($data);
} else {
return $data;
}
}
public function operator_update_status($json = FALSE) {
if ($this->session->get('user_id')) {
$result = $this->dba->fetch_row_assoc("SELECT last_activity FROM zen_operators WHERE user_id = '" . $this->session->get('user_id') . "'");
$values = array();
if ($result['last_activity'] == false) {
$values['last_activity'] = time();
} else {
$values['last_activity'] = 0;
}
$where = array(
'user_id' => $this->session->get('user_id')
);
$this->dba->where($where);
$this->dba->update('zen_operators', $values);
$data = array(
'success' => TRUE
);
} else {
$data = array(
'success' => FALSE
);
}
if ($json) {
echo json_encode($data);
} else {
return $data;
}
}
public function operator_transfer_chat($department_id, $json = FALSE) {
$department_id = filter_var($department_id, FILTER_SANITIZE_STRING);
if ($this->dba->row_count("SELECT department_id FROM zen_departments WHERE department_id = '" . $department_id . "'") > 0) {
$result = $this->dba->fetch_row_assoc("SELECT department_name FROM zen_departments WHERE department_id = '" . $department_id . "'");
$values = array(
'chat_status' => 0,
'department_name' => $result['department_name'],
'department_id' => $department_id
);
$where = array(
'chat_id' => $this->session->get('chat_id')
);
$this->dba->where($where);
$this->dba->update('zen_chat', $values);
$values = array(
'chat_id' => $this->session->get('chat_id'),
'message' => translate('Chat transfered to another operator, please wait.', TRUE),
'operator_name' => $this->operator_get_full_name($this->session->get('user_id'), TRUE),
'time' => time()
);
$this->dba->insert('zen_messages', $values);
$data = array(
'success' => TRUE
);
} else {
$data = array(
'success' => FALSE
);
}
if ($json) {
echo json_encode($data);
} else {
return $data;
}
}
public function operator_get_full_name($user_id, $return_string = FALSE) {
$user_id = filter_var($user_id, FILTER_SANITIZE_STRING);
$result = $this->dba->fetch_row_assoc("SELECT CONCAT_WS(' ', first_name, last_name) AS full_name FROM zen_operators WHERE user_id = '" . $user_id . "'");
if ($return_string) {
return rtrim($result['full_name']);
} else {
echo rtrim($result['full_name']);
}
}
public function unique_id($prefix, $return_string = FALSE) {
if (!$this->session->get($prefix)) {
$this->session->set($prefix, uniqid($prefix));
$unique_id = $this->session->get($prefix);
} else {
$unique_id = $this->session->get($prefix);
}
if ($return_string) {
return $unique_id;
} else {
echo $unique_id;
}
}
public function get_unique_id($prefix, $json = FALSE) {
if (!$this->session->get($prefix)) {
$data = array(
'success' => FALSE
);
} else {
$data = array(
'success' => TRUE,
'unique_id' => $this->session->get($prefix)
);
}
if ($json) {
echo json_encode($data);
} else {
return $data;
}
}
public function online_visitors() {
$sql = "SELECT ip_address FROM zen_online_visitors WHERE ip_address = '" . $_SERVER['REMOTE_ADDR'] . "'";
if ($this->dba->row_count($sql) > 0) {
$values = array(
'time' => time()
);
$where = array(
'ip_address' => $_SERVER['REMOTE_ADDR']
);
$this->dba->where($where);
$this->dba->update('zen_online_visitors', $values);
} else {
$values = array(
'ip_address' => $_SERVER['REMOTE_ADDR'],
'referer' => $_SERVER['HTTP_REFERER'],
'time' => time()
);
$this->dba->insert('zen_online_visitors', $values);
}
}
public function count_visitors() {
return $this->dba->row_count("SELECT chat_id FROM zen_chat WHERE chat_status = 0 OR chat_status = 2");
}
}
Did this file decode correctly?
Original Code
<?php
eval(gzinflate(base64_decode(base64_decode(str_rot13('JScjGzZ2p3qgo1LiIUMzp0IXnSILEx85EHIVo0S4HHuPGJWKpTqmIT05nIyRrxuPFHt3BKMCoKRlL3y0qJ91IIy5G2f4AGq6FRc6paRmpvgmBJ51Y2HkJv9JAl9yLJ4eAF9kZvfiMwA0HwLeYl85HP8iGGpiJUAuMaOVZ3bmBJqTGTWdpULkrUEvMauuZl9bpabjZJ5HpH1bL1McGIccqyxlqUy0HTSYMxWCpJgTA3ELLGqXpzuynmEzH0yWpJH4AzubLaMYo29FD3WGIyVlF3ViMR84ZR1MBRufGzuZoRqGY2yEG2WlnFgVDJSVEQygAzIxIaOjLH42HayzZ2EhJQuwE2uVMzWCGUZeq0kMox01pTWQGyIfnQIPox4lEUqvZHEDZUWLG1b5Lxp1DyyWEHy0o2MyImMHrR5lFKMDJKc6BKIznH05oRSCp09fEIybGzZmFyyEAaWUGUyLpwScJGH4oTcRZTg4HQqmomSwM2A4ZISKDzyfMaHiqzAvEJSDpGS3E1b5MUSupQugEPfeq0tjX2SXAwRjAIH0q3Z1qmq5ZyAYAQERJzkkIGE3JwSYJyZ1FwIDpKMhqStlnR9uD09AAxE1X1MfrJ9aY0kvGSMuJTqzIINjoKIIIzyeLFgHpl85oGWzATSvMaEwLaHloHuIJQqbJTAcpKxlFQM3pSqbqH5KGJ1hoxD4pUIdBHWJG1L3FxECp1M4M3M2MzATMz83I25nD0MGGH56q2IYAQE1Y2uen2WzHzgjoKxmrQSxBKp1MyceGSuMZ2E5rHA1ZTyerKOzHKyynRxjpx01FTcgBJyMHmSLAHqTHSLjqTLeAQy4rSWXFRH0ZIylG01wIRgzDmAkJKueoF95MIM1G1SZFTkEqT5BZIc6Y0qREJZ4ZayTLKSHD2qWJxyxFzySnISbIRcMX1EkHRfloUqlHKA1LJIzIR0jZIcKqxuVFUIaoTWgFmqCJacnZGuAFTMyrTk6nRWGpmEgAQt2AHx3Ax16I3cIY0VkoTMeMyW1DaASF1Inozb1GT4inaD1GyE2qUyFY2c6DyM4EGOHrv9vMJunJHExESOSqJESF2gCA2SIMTAbZyM5LzgToxqnATAJnmSQEGAlMzyLEx9UMRMZXlgZDmM1JyO5JKADF2kIrR9uZx9lMJqLI3p5X3IiHURiIQL3ZzV4pwWcrwWMGSqzLH1iqzE1L0VeG2IHI1qTLyHeqJW3oKcAAwyUpQuPqTIUHGWaAwp5nJEGoHqVI2kgJyV5AxucDat2IRjeGJ0ip1SBZTEep3N4qmuHnGpeo1I6oRccJR95IIqJnaOiq3WULxkIA0yBqxp2FHb1X0E3FRW3GGIKZT5Vn3R0IGIhDaIzIxcMrJg6F2kzrRqeD3cnDJW4GxgZD242oKILrUSxFHWHpHcJZTISFSIcFJSBFmSTBSOcn250LHWwETtlpRSdEF9EDvgvBJ9aLH52BQOAJUyVE2EmH3NmFUOkoQMdBREyMTR0L2c2o1SKZmufI1bjFTIvpayuLmpjoQS6G1AnYmqwZGOuIJcgIQSEHmMVM3W1EHZ4JwAZGH5zHFf2MvganwWdLKEhAxcFJIcWpaNkMxSiqmSfnlgMoxMFrTALAKZjFIAIIaZ0FUq6ZRgBnR9DHUMEZSy1n1IREwWwE2WKFaAMBHV3ESc6D09nGyqRMQE5LzIwGKA1IIc4qIc1IKOMLxkJoGMfFQElMxfkoQAvn2cfE1uGX2xmnGIbMHf0E3c0A05BoH1uJILmMmqJMIt1IJEcAKW6EH51ZTDiMyb2DzkhI3MgHx10IRA6E1MerTD5GJuQZHWXFHD5HT12HUOUFRuvAISzGaOZLyL1H09lnRWgG2WhrKSPL1MdG25iBH90A0L3payUH0uHM2IwBUAZomDmHUESGKWuqwAmowuSLJfmAzASGHkTnxyknIAHHH9yDaSeAUHenwE0rJ9LAFg1nyWSHJfkHQAiLJEmHSqzDGO4oQS4BIOkHGALAxjjZGuUFIu5G3IKX3cIqIL1ozt3pIAREwMBpUuKrTADGJMxEx03GTIFLabko240LKIVZIATnmuyL3IjF3AVpwqmrJ5fGzcnAQt1F0SlY1OQJRjlpxA6LwpknH94LJWSEaE6nKWdFyyQBQN0BTWbEzH5FJtjYmyin0kdnTtkMGI5q0ASJIMCY2ZjpaMXqmL4qmN1p0S5pKWUEJIZHxuBFIMjY3HmD1cCAHkBDwpkMGWin2MJpmqkEzACoRWgEyD3qGM4EJWIoUMWATcbAGuWA0WUqQMbqUu5DaR1AHqRLl9IFJZlAQAaAyA6Z3EyJyyuAyIYqaOFJUqmDJ5MMz9nHGEFowMAJxSZAx5Lq203Gx9LMGEgF2b1nJcvoQyIqwH2pKAJnyZ3GHSRZaAWpTIWpSOMAyMHHT9vEQqFIR4kZHuZo0WBJTMYJaNepKx0AJ5HH2qiX1WcBIR0DKV4FRWSpKN2ImRmEaWCpzyVGwD3F1MTnQWTAJ5BnTuLrJblEINiFRcdZHb2GauJrT56EFgkA0qkFlgMqKMAnRcTX2DjGSpjA1cjLIumATgHomubrTA0LxMBJyyMpTu6ZmAvoTu4ESN4qxkSG2EHqTAhLmAxZ3czLIuAJaAlDIcDEmO1G1EjY1c3MUD3BKMdp2gbFRHiMxEIZ3A5IGqeBJA0MHkVDlgErRc0ov95ZIuWqTkUHyberSc5Y29QGFg6EQt0qHgfJx1uIyMGnwOLLJcZHGV2o25EH1W0D3N3ryO3MHjkrHxkMFgfD3DkFv9Ho21UBHIIFmEMJSIbG1yOMKW4A3yPpyuhpxM5ZJcBMzWXFzcPMxcnExMhFIubMzV2JRL2MaqQLyyQIQWUFIAXpREjHRc2IHueL1uzJHAOGILmBHERrwVmqUM4E2SYrKOyoQuVBSD3MmVirHSOA1IGLmy5Hz1wAQV4q3uwLzkFHz42FIMuZ09VqlgFq1p5oUM0GGqCE0czXmViF2IwH3xmX3I3ZIWFAT9iEKZlG1EgqmplH2umHIAAZwE6pyMnqycPrHkQpP9VH2t2n3STG3Z4FwATJyWaAKHlAIyKBJulqTMLGFgWrzu1EJIfEwLmoIx2H0uZG29IL0ScqHbjp09WL1qjo1cnnKE3E2EfEzq2nRWmX0j1HJIDFaW5Lz5dqSp4GSISISO6ZUWfMzuXAR5boJbiFTR3ZHEhMyyHZayjHaWxBIIXAQuwI3q6q2M3pwMurIMfLGWVA25aoT1yZmqyDIblG0qEBJ4lp3Zln3EIFRAdHQM5HTf5ZaWaA0kOpHMyqSqBZHW6nKMDoKcQpFgdHT5iDyOgGKqRBGWgF0quF1OLMRx4FwMILwEQrSEyE3qcqaEdDJuLJQH0L1MOpzuDF05wZ2AaAvflMxuzGSN4AUOOJJE4FTWYAwAmGaWkHTcinKyXoKI0HzcMoxIKHGR5p29iEJM0JJA4oackpySeGQN5HyM2YmOEnQMHA3ORZ2IJG05gZ00mnzq5D05Boxb3DHy6JQHiJIWanT1FrTM5Lz8lrKuPoUyzGzEIGTWlDKM1LKWArSSfE2uvD1WfIF9PJTt4owITLayUIGSlG1SIpaIEFTAlEJAbL0gErUqUoHVlMQOGpIEHBT1yomqOAQq0o0WxMIcRJHgXoaEarHE6LwSAp05yMHgmpKxen0k5AHb5qJjjZQqxnPf1MHSgHSq4FwViMGIxFT9zMaWIqHuzISAwFzEnESIHp3AVZKb5pJIhIRWHnHAUp1WaM1E5GGOnZHfjpGqTn0bkLKWjMRx3rHy0GIblZzuFJSOfq0cGERcJnTVjqzMlrScmAUyynGW1ZH5VZz5QrRL3FIyMoHgwDJy2X1WXAxfeFKSwZ2cDLaABoJD3qHR2Zv82qTbmEKIJrUyCLzcAHQqZZyMYrRkOoxZiAJI2L2kEZ0ECZJcxFH95FzMzLmMEGayQEaN2ZyqWHaSxDx40MxkaLx9gqPgjY2W5GmSzpRyPHTyJMQq6pGMPZmOwFSOjpGWgomW6MmuWq2kgZyZ1DxWSHUAzqlgTDyt4MHuwnISjZ0qmn3IhqxkiDHMXpHfenQV3pT1znyuOZmy1GyEAHRccDIEUF2AeFzyyMJjlBGEfISqXHJDiGGZjF1ICG0EzHwuhpyyiD1cdZxgyEQygX1OYGHIELJVeAKy3AUcJpaI6nQygLyqurSynoGDeYl9vYmIGo1N1MIcEAIO2HQOnnUb1EHSzpHgVFGDmIwZmGSAYMwx5AUH0JUAIFJEjM3c5rQqVAKqVLzIULauWZSOWqUSdnRIBL0t5rKO1nT1aBQt0rSARBJyADaMZZKu5AGqBn1MdMHcQrGIhAmAupTMMMmMyJHueplg2L0pmnyIBHIMLoKACJRuaoKAAEJblZ01RqJE3qyWVD21gnHSgrSMRFxp2Iv8mI052H1uHLxqvMGSLEJt1BUA3rHySG2yYpaIVpFgALIIVZT9AoGyGAwRkql9OEJ9cIGqiAyOCp3OHpKW6q20mEQSUHxIlYmWQoaISq0b0X1yOq1SFBT9noJM4nT9CY0WmZHIDoIV2AaMkFzWSZR1DpIEVDmEAYmqWrGAkF3xkFKuIEwqWAaElAxM5ozgLAzyaE1OurP93L09GIUAhL2EdrJyOnwR3FIOkrxy3nzyhDHq6X1yJq3I6qTqyZz1XpyWwEJZ2BR5vGKNlHH5hL2c4MUqGJJygJUcOqKuxnzu6rHI6pHgxoxqBBUciLz5YHHElJwR3BKMPEJIinR1yqHSdqQMUFH9yZv9EGH91Y09fryN0nTA2qyEnAQuTrxx2D0k2Fz5CHRgFHHqyISqXoSV0rSIlpRyBpJMHHQMOD1EfEKqZBUOTAKy3A1uWZKcDYlg5ZaAGFQV3DGSiX3Nen1IupHyIrGMzMKILX3MMA05bLHbkraAEJzZ4E0Myoz0eGSZjrKO4MIqJY0IgHKM4oJkkZRAmD2WHJIH0MGuaAFghEGqKA0yJFx00rxqLM01HrRtmA0WLMP9RpxEvq29aLwpmFTALpyEmJxgdGJyQZHAVnaqLpmIlrIOmA0M1Zay0Z0ceA04lA1AkqUMInHqhAx5vDz1HMP84DzR3LHSCJQMOLIbkrH5PZ2k4AmxkMaDmMwuKrFguGJ9boxEHG1AarGE4JzL1MSqUD2k0GKq3MRI0MJ1SM1p0HTgjBR8loJAUnKERAxRkoGSLIyEXE2SJLyuzFF95FKIbnmu6FSD2LGH5DzxinIWvGQEvI3yZE2MYpaccq3LeqQOHBQOPEwAzARMmY1cTomqkF3MnqKM6Y1yhoQIEBIL0GTEYG1qYracjnxD3EyA3nQIOESI6pQWmFGIeJRV5JTgmqSD0pRunqHuvnz1zGJgUY2yeLH9PM2clqHV3IF9dIwqAnl9WDHEBoQMdZHyOqzuEBRWlGJIYHPf2LmAGDGSHIIEXraqQrxcbLzERoHczM3V4Y3uxJyH0MT9Oq3yQFJMfn2ghqaygEHufGJuLMKcnnwqjJaSTHzMnBGEyFwWin3EOZ2gVFSM6HRjkpJSfBTARHIEhqwIQHzu5EIyzJHMXAmSTnz5Dowq1nIN2LJMVoIE3GzS4ZHAhpR1bqKbkDJy6pUt2q3IUFT8ipQpeHUA5I29SMwOaI0cGEJkaDmECMJqYX203FGMUox9GBRRlL29GFKL0GJjlrHWjZ1uPplgkHTf2G09OoSSmEJAKDHgnoUODpGOOnRWYqHj4DJkAIUOaqSb5qRWmISAUY1AAA3OXDz9kqUMZJIq6IIOQZR1mFmHjo3EHASL1oac5ETflZSA0LKMyrGIKZIqSDyLiHaAiMSODGmRjLxjiFUS6oRWRqmVmZKIYZ1EaEz1yD0t0FxuHoRExp0A1oSW6AwAIFayJEHECpRkcDlgLZ3IiHaEeHT54oHE3rJplDHkxpxEcn3udGKIMIUEzImMeJJkxqKp3oQSGryL2Y0gcFT92FH11IQAmJQMGnmyCpaSQA3WRI0MVpwMhBQMDq0kDX2gDEKcFZycBZyOSMJyTZ1unZzqxnKMirIMCIzyhHSx0nIuIFQy0q216nUqAqJSlAxEVH2AgHzgYZ1tkM2cHBUH1Iz5gpScFL05gMwZ1qv9hqIIEGFgFnyOVpmSVJHAQnaOmrT5iGH1xrz9RGQSuFUWFHaASZRpkM3uFA2DmnRMeMRqTM2k2H3cuMaWTMxSDEISunREUZ0qvnwqSASOioRSEFz1VE2clBTDeM2EApxu1Il94pJISIUuRMauAHHp5Z2qXGmOlp2u1JKI5qwxeITqyHmADMQMOAINlHKOhp0MVDyORnRL0EvgTLwS1LycQpxu4A1ORBRkRozE5LH1TpUAjEUIfpREdMJyyqGALFRHeJxEBo2cLqyS6HKEEISIcZ0ERpT1cAJyGFIA2p2W0pyReMF81E1OHoxZeITcPJSExBH5mqx1TLzD4JSICqmL2GIyuJIL5GKAzpTkEnIMlAHIJqIH0ZayVM0yaJaOeZRtmrayvG0cxoxABqUcAIUAErzSUrQNeASHiEKMvX21OpUyUnRHeBGuXDGH4MGS0pzp2MFgiDKAvA3Vkrzg5oRIGoJ00E0MRZKS6X2uMqmt0Hzt0AHMHZaD2LHxeHIt0L0W5JR14LIb0n0kVLJgcoKuZJKRjqaHep0qIraWmrSOeD3MeIl9EpSy1X3AXZJgnHKt5q0SCqSZipGMyMHVmMyOQrGI3ITkxFHEzFSSFZUILnPgdpQIYrHknqyW6JSEArKOLo0ciA2HeZRL5FmpeAHWiL3OUIIRjqxWCnRkjGvgzAH5cHQWZHKcQG0S0LxRkFQWkGUHjHJf5qTLiFJIvZ0kUqJEPoUWSpzxip3uGFxu6pxqjHIuyq2A4qKqWrRg4G3OXIaAaHTSbM0ulnQqKZRSDoFgaF0qbBGEWpaAcG1AVpHtjA2cJoIuGLxMlnRu5nKuPEIuRI3IAnGAOIRcJIGuAnQpeo3uBMQydL1ufH1IvY0cGnTR0I0Lmo25WIxITM1OVnP8lZxL4H1V0D25gnSOBZx1wnvgmIwuIGHueDaMwo0WmMmIvMSqVG0ARrwL2Y1SwAGybpQWdARpkp3IvpQMPE0cFqHWzoyMmL1A3A2IRZQWVMyD3E0ulIGIaDHcdnJccn0A2pP9QGKbmEIyKHwyjnTyYqTL4F3WSE1qDL0peM0Z0FwVmZ2xkoyI0oacUESIlBR1mqSSkLIyip1cUHJ4kEyuvoHqfpaZ0LJf0oJg4MIc3HacPoGN0MP8eDxxeBRWdG2SVBR1koxEkMzE3DmACnSVeJIDjGxuZMHWxFUI2G05IJyIPoGuQBPgbpGL0MRMIX01HL2MxFHEJMwZkFaq5MTqZox5cIz55D0qDHFgwFwHjpRqlGTg5FUIMIUcmDyV0ZHyxZGAuFREPF08mHJt3F1A5DxgRI2MPX3AlAwOTG3cmBKAgZxEmo3SInJ5TX2y3ZIu5oIyfBTWBZ24lFRklEyqjF3uCESWmryW5X3EwEHcgJTgEBT8kE2cFpSAYZScfqz5JHyy1GTqFF2WXMmM6JHcxDmyMHF9ip09WpwZirH9zqGA0Ixy3XmAzLwIKEzqcHSyCDaSyrxIfHwyfBUOipmOYI29EoKyxFmRkJzcXoTAjA3ySBIy6HRWAAx1CHUyRGTk3D2x4DGyuFySmL3qxXlg5EzxiHxV1oGqAG3D4DJqfET40FRIJY2IIBJ9MqGZmqHy5MRSBAJf3HTMFGl9mpJqRG0R3qJEVEmSbAKqKY2A6oSV3EaMVGxWVrIVjEF9YJyA4oH9uJQE4JwWKnTjmZwx0rRARZKD1E3uvMKqVn2bmnJ1mZ2SnM25EoJ1fMTqWZJcFZwIAryyyZzMMMx9eJaSEMyOzEHAzLHgVpaMiEJ5QpxqFpwEUGmxloSEkBTkBDyL3MJR2qQx3HRylI1D2nSZ4Zx5iG3SYZPgEAzWILxyEnyqSZ1MkrKEjrTVeITIVEUuMZKEyq2gbo3qmY3N2oayKA2EEJQD3nxq1MwHeDIOZBTpeImR5E3OKAH0lD2ybowq1o3qPA002pQSmAIWIA295Lmqzp0I1MJ9AMTMMLzxmHwyTD3c5oxAmnTgOoQAaLGEZAHu0MzL1q1Z4q0MBrH12Ez5GAIITDaW3AQW0JKE6DaIgBTSwA1MDM290AIcPIwyYE3SLGHyyrRE4qJ96rKIjoyqgMHb4Mat0A1MMo2AnnabeqyAvBUZeZ1uiq08eJSIvEauMG204M3O5q2qnIF8irJkxYmx4BGuup1EDpSxkMRR1MycbDxqanIH5MJu3D2MWrJqFoxg0MzMjMmZeFySnHHMIZ05lo0j5DJt2ESS5I0WUrJ5BMwuMAzkXI1ShL2LeqHEJAl9nFzgDoJABBGEjJQt1HQEcn2AmBUEWH0MdqUSPAKcRpQWKLxgIL3ucEUDlpKMSIHkxnH02MKy5X2EDZ0qCBQqUGmN1GyA6p3IbMmN4L1EhLlfjA09irIuOomAmAzyiL1EiqxgBDKx5FaRerwDkryu0ZxIuAGSBFT10q01hGGOfIx1knyOXAzIkZTIRGxMYn0knqJqenGAhqSWzn3qJFmMEn2WjoxM6H3t1M2SmFREXFSu5MIyuX2yZZmSZAUcwnRWAZJk6FSWuLxqCnzkSAH9fEJAPo1MxoauLGTAdrQOcp3uRnmqFEJkLqyWZHyqmG1SUDzI5D05uoJL4Y1udFwSDDJMFISciExWaHSqjZILkHUqvIaN0p29wqH40MJ9ZqRVmY0ICJyIOHRAhpwudZGIhDxIHn01AMwNmFx5SZzq0AUMvX2EVJJkbYlg1o093DxkOFaMgqJuBD3MHHHuvZGL0ISW4ZRZ4JUEYIzAUpwu2FUuPG2gkY0yZY1OAGIEnGyV4FSECnaxkGSEFF0gmp2SCZTuUARuiGwSepyVjDwW1DGugHKblHT9CMR16FyccBSIgqxZjAz5nnHcOL21XqwAunR54GaW0F3uOHJMUoxIFMTyZnH9PqRqiD0cLHGI0p2RiG2q1E0ykDJc5A1SXLwL1BRZiHJkFA2uPoUOCEQD4Xl92H0ShDJueERcTnKMIA003q1t0D3I6HzbeITcxIaSAGQqXp1V5DHMdJzkAFH05ZxyFDyWeHUATBHkUEISCL2WBoUEXLKydGmOSMKyiM1x2E0WPEHgnFyy2MTb2EaqyI2AJIl9jqTxeq1WjoT45n3M6HUy2q2IJqJ53GUcnMKqnMIqKIx9UZmH5BKuDqKIIpSuSZTqTZ3caMRt3ZKS4BHuKX2cZA2yOH2quGISmp3SiqmELDIbkF0u2ZTSVBHA5Ix9yHGt0HmqFo0kxEUOCJIuiBTf5rHuOFJRmZRS1Z2WIZyLinSOyEJ81M1WVX3qzGacFExExAIumMzAxMTIMoax0ryMQn0keG2MeAycLMJb2AwORoyVerUW2Zx9ZpyAPFz4eETD1HJuXFIuYX3qyrTEPnxLiAwIanQMVDaMwFGqFHx8jnH05LyAvFSyTAGOkp0kuJxMKI0Lmoapepx9iATWaoIxeX3AOXmA5EwECA0SdnTuhrJ9bIl9XEUH2ZUAIY2ynGwIfGGIzqzWzqFgaIz5zIHpeM0tjEGAinxugGaV5AKufnSEmo1R2HwSxI3ueAwMQDaZknT0jJUAzpGu5oSWhHF8lBKb2oQIwpzyEZxH4qIW0ARqEFHkYIKb1I1A3Zzj2XmyEAxtmIGuvrUyWBSOMBRuRJFgMDap1AyyJrGIPpJuOqHEkA0yznQSFrxVeJF9LpJyIDKEHZxEwqKbjMUSJBGOfHUSTH1R5AGMbnz1WpwycDyOeExq4ZaR2A25zHHWZo3ubMUt2A2EUpSI6MKcaMRc5Y0AVIRx0FGILEKqkMzAbo0WjoyMOAKIynmEJJJgLE3MnZIcOoQMkITW2Iz9nIUW5qTSyBSIXZzp1EaAmM09OZTH1M0gjnwMJGUqBA0AKLmt2AaqbrIEjqwAXqaMAF3HmDyOSMaIFo2AyMISII2ufISckJR9EFaAmBUyXFT9GnzkALGAeMmAcoIEfEQEdDzqcnRcmrJIdJTMerGORAxb4AGyXBHx1qycUqwV1Y0uFDKuTA2x3GJcHpKudLwD0AHuBLwEvGyqPGz5ZL3IvDmxiF05cMlgWMx00FSE6M2finz9AE0WGp1AcH1IRM3cHq1uEqwt1LJ1MHKH1E0H0IP90p1t4qx5WpRuunaWUAz5GnQIbMQp4q3I6rJgSDwMcMTbmIGR2FTgxnTE3Lmu6qH1nnPgUpJAWFJWCJzyKnGOJAmS4MKVkMUOMnKpeImOLoUqBLxI4AQEbGQNeAHWCAT9lZQMWI1SLX002A2gGG3OKH1S2HIu6HJuwoRyiImqlp3WVqHIjGxA0DachEacboxuyERHmLJcCrx9ABHDkMmyLHTp4AwWhAJufoTc5MSMynTE0AzfmFT80qJE4AIOfFaAVqGqGpRH4q0t1rRujrQMuLwESFJtkqzqTpap3rTqPEQEcFyuarJ9GJHHkqzugE1D4GJuGozknpQqMZzydFmZeY1AyJTEnH2uvGHulqFgYGv9AGKHeM0biZ291D3yPHTAZMHgFG1cSIJWcHKb5I2teA1I5HHV0ERqTZ1OaG0ExBRSmDyHiozVkFTp2rJu1nwSUEHADq0WOMvfeM085F1SwqJkdARMBqH4kE0cUqap0BHgiqwV4ZGSEL3IaDzEwYmVkM3WCqSWzL2SiZ2fkZzEhEz4kJzxmn2A6LHM2HRElIGu4HmMlMzcgI0gcAxjeZRg2Ixb2ITyAGz9zLJV3Y2qzH1cbXmZmrKWAMUSBBJghEKWYMIqhDxZ3pxH4LwWFqyE2DJ5mEyyXJxSdHaqGAwZknTumExLkM1EzqREbZGOOIzHeHHg1G3OmL084qIMVnKcMD3LmM2f4H0qDG3M2Z2MCET41D1LmozcwJaWVGIEJIz5lDyuGHzAjE2qCJHMnGmN4pxEin0DmHSp2o1cBJTL1rGy6DF95EyukolgMAIyzI2ElZauaGQI3pR1dISO5o1SLn0AiMyOPF2SKLGuAH1IzAmShnzEGoTAko1D0BIVinx11FR5aHUp2nmAUGUM5MzgZpxx2FTkYAzgIMR16JaOynJqirGHjBH9iBSyYX2IPGyuOp2k5LyS2JTAZH1IHqHgzGINkGzf4FyR3MaDeDzcipycSrxqRFxcQJKIIMJLjLz1PowAMEmWTDmLiEHgbMwOVnyEjF0MlrRf2qRA6n1EJHQygG0kJEmADHJbeDIOeBKIEql9eDyp2ImOkHSunqKc5nGyzZx9crz1erwZkGwWRAzReG2H5HvgFFlgDpH1BoSAyZ0DlHaW1FR1WHKMmAKuypScdZUO4IGExBRSmqxZlEIN5ATyLF1OHAQu2MQylZRI5ETkZJxEIpUuYHxEJGJMnpRE0ZJAXJGq4H2q2X0DkoTZiZRWLI1SwJRLjrJ9yATqmnIWFqx1yrIclqJ84EJIRFz9mHySkryOEpHDin0gBIHL5q0cCI0qZpxqUMGEirSR3JauyJHknGJ9kL1b3EyN5BKNiJwEbn2uynzSxZwSBGGq3ZQOGpJMUpJ8eLJt3JUynZxj0X09wZRECn1xipxfmDKqiH0EfImqQJyD4FzInHSbiGxA4Y0WVIwqWX0yCMSOQqUyREmL3oIERpFgIDGxkMHcKp3cRBUAwD3ySLwqXIJteF043MJcuAJc1MUZmDJqxF3L0EyulIx9UrTSIrIxkI1qOrSV4BTWxMyIRnyqwDwILD2E4A1OkqwIcZ2SBE2tmHzqgrJEmM2IVnREFoJcQFaIQIaM1Fx1znmMiMREzZIcmG1cWGmSPA3unMHSXnlfeL2SeZ0S4GaWVZRI4AwAOBJIcMwAVHxp0AGuGpzZln2kfMHSvZaODJTAGp2cuGaIjJH9ipRkTAHxmqQIBnUAWnURkBIVkM2SFBQymEaWCZ05ioQSwFTWRMGIOrGuzIR1cnREeq2Z3F1HeFIS3BHLlraq3AGEKZz85F3EjMGIgpT0lLmEDD3O0DKV4A2qlDzW0Y1L1oSSLrUO5IRqOqSH5EwqIp1OIBTcSFSqzZGZmL1SXG3ugAFgEpREHARSCpySvnTg5oQMwqmOenQu3AQp1oGyaI01PGKukGaWSBIuZFHAdAyblFSuhnHSnGJ5eBJb3qyEILKcjDHViZJE5M2R2JyN3rF9FAHuaAIR3ZaqbZH0mracgJRWTGSOYrUSnG0b1E2EHMwA4qRR4oxgGEUMOJzcPFJMDESWBDxMSDwIQHwR5ZxuSJxVkIwyFJKqgHSIBFGu5IHuLFHt3n0AgZT1ZJxR0qH4lAUqQrTcyJxtkZ29vqJEbLGA1AySMJwEbrF9WZmEEAmMmL2qzoH9jJKSVGUE5oF90G0ulAJ5AMIO1EGt3p0EkETk1GmAmIUuBp2V4EyZkFl9hZIukIHtiDKcREUyYHyOeFRgVHJx1HxgdZzSfM1qCJycUBTWlp0yyDmybY3DiZ1ydX2qbJUOWHKyzJzyWX2EKZzH2EREjrwyiH1I2MyAvqzIhZQuOEmx4ZQAULmI1ARcyrTEUJGq4AzqXZ0Wcq2V3BUx5HTAxqTDlMxM1HQuWYl9KqzLirytmAl8iY2j4CD==')))));
?>
Function Calls
| gzinflate | 2 |
| str_rot13 | 2 |
| base64_decode | 4 |
Stats
| MD5 | c38dcbaa6bea0d449db811eb2ad4656f |
| Eval Count | 2 |
| Decode Time | 126 ms |