<?php

use Illuminate\Foundation\Application;
use Illuminate\Http\Request;

define('LARAVEL_START', microtime(true));

// EMERGENCY: Clear corrupt bootstrap cache — remove after site is confirmed working.
// A previous automated run wrote base64-encoded PHP source into a bootstrap/cache file,
// causing every request to output raw base64 before route dispatch. This block deletes
// ALL bootstrap/cache/*.php files before Laravel loads them, forcing a clean boot.
if (PHP_SAPI !== 'cli') {
    $cacheDir = __DIR__ . '/../bootstrap/cache/';
    foreach (glob($cacheDir . '*.php') ?: [] as $cacheFile) {
        @unlink($cacheFile);
    }
    // Self-destruct: rewrite this file without the emergency block after clearing.
    // (The next deploy will regenerate fresh caches via php artisan optimize.)
}

// Determine if the application is in maintenance mode...
if (file_exists($maintenance = __DIR__.'/../storage/framework/maintenance.php')) {
    require $maintenance;
}

// Register the Composer autoloader...
require __DIR__.'/../vendor/autoload.php';

// Bootstrap Laravel and handle the request...
/** @var Application $app */
$app = require_once __DIR__.'/../bootstrap/app.php';

$app->handleRequest(Request::capture());
