<!DOCTYPE html>
<html lang="fa">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=0.8">
    <title>Gradio فشرده</title>
    <script type="module" src="https://gradio.s3-us-west-2.amazonaws.com/4.44.0/gradio.js"></script>
    <style>
        body, html {
            margin: 0;
            padding: 0;
            height: 100%;
            overflow: auto;
            background-color: #f4f4f9;
            font-family: sans-serif;
            position: relative;
        }

        a {
            display: none; /* مخفی کردن تمام لینک‌ها */
        }

        #loader {
            width: 100%;
            height: 100%;
            display: flex;
            flex-direction: column;
            justify-content: center;
            align-items: center;
            background-color: #f4f4f9;
            position: fixed;
            top: 0;
            left: 0;
            z-index: 9999;
            text-align: center;
        }

        #progress {
            width: 80%;
            height: 30px;
            background-color: #eee;
            border: 1px solid #ccc;
            border-radius: 5px;
            overflow: hidden;
            margin-bottom: 10px;
        }

        #bar {
            width: 0;
            height: 100%;
            background-color: #76c7c0;
            text-align: center;
            line-height: 30px;
            color: white;
            transition: width 0.2s ease;
        }

        gradio-app {
            display: flex;
            justify-content: center;
            align-items: center;
            zoom: 0.8;
            min-height: 100vh;
            margin-top: 0;
        }

        #videoModal {
            display: none;
            position: fixed;
            z-index: 10001;
            left: 0;
            top: 0;
            width: 100%;
            height: 100%;
            overflow: auto;
            background-color: rgba(0,0,0,0.8);
            justify-content: center;
            align-items: center;
            flex-direction: column;
            padding: 20px;
            box-sizing: border-box;
        }

        #videoModalContent {
            background-color: #fff;
            color: #333;
            padding: 20px;
            border-radius: 5px;
            max-width: 600px;
            width: 100%;
            text-align: center;
        }

        #videoModal video {
            width: 100%;
            max-height: 500px;
            margin-bottom: 10px;
            border-radius: 10px;
            box-shadow: 0 0 10px rgba(0, 0, 0, 0.5);
        }

        .notification {
            display: none;
            position: fixed;
            z-index: 10002;
            left: 50%;
            top: 50%;
            transform: translate(-50%, -50%);
            background-color: #fff;
            padding: 20px;
            border-radius: 5px;
            box-shadow: 0 0 10px rgba(0,0,0,0.5);
            text-align: center;
            color: #333;
            max-width: 300px;
            width: 80%;
        }

        #tutorialTitle {
            color: red;
        }
        
        #einsteinTip {
            margin-top: 10px;
            font-style: italic;
            color: #555;
        }
    </style>
</head>
<body>
    <!-- نوار پیشرفت و پیام انتظار -->
    <div id="loader">
        <div id="progress">
            <div id="bar">0%</div>
        </div>
        <div>لطفاً صبر کنید...</div>
        <div id="einsteinTip">اگر این هوش مصنوعی باز نشد فیلتر شکن تونو روشن کنید</div>
    </div>

    <!-- Gradio App -->
    <gradio-app src="https://victorestrada-diffusers-image-outpaint.hf.space/"></gradio-app>

    <!-- مودال نمایش ویدیو -->
    <div id="videoModal">
        <div id="videoModalContent">
            <h3 id="tutorialTitle">آموزش دانلود ویدیو</h3>
            <video controls id="videoPreview"></video>
        </div>
    </div>
    
    <script>
        document.addEventListener('DOMContentLoaded', function() {
            function modifyText() {
                document.querySelectorAll('body *').forEach(element => {
                    element.childNodes.forEach(node => {
                        if (node.nodeType === Node.TEXT_NODE) {
                            // مخفی کردن عناصر حاوی "GPU"
                            if (node.nodeValue.includes('GPU')) {
                                node.parentElement.style.display = 'none';
                            }
                            // جایگزینی متن‌های مشخص
                            const replacements = {
                                'Examples': 'نمونه ها',
                                'Expected Ratio': 'اندازه مورد انتظار',
                                'Prompt': 'متن',
                                'Optional': 'انگلیسی وارد کنید',
                                'Generate': 'شروع ساخت',
                                'Diffusers Image Outpaint': 'ابزار فوق پیشرفته گسترش تصاویر',
                                'Drop an image you would like to extend, pick your expected ratio and hit شروع ساخت': 'با نرم افزار هوش مصنوعی',
                                'Input Image': 'تصویر ورودی',
                                'Alignment': 'تراز',
                                'Advanced settings': 'تنظیمات پیشرفته',
                                'Middle': 'وسط',
                                'Left': 'چپ',
                                'Right': 'راست',
                                'Top': 'بالا',
                                'Bottom': 'پایین',
                                'Width': 'عرض',
                                'Steps': 'مراحل',
                                'Height': 'ارتفاع',
                                'Mask': 'ماسک',
                                'Overlap': 'همپوشانی',
                                'Resize input image': 'تغییر اندازه تصویر ورودی',
                                'Loading': 'در حال بارگذاری'
                            };
                            for (const [original, replacement] of Object.entries(replacements)) {
                                if (node.nodeValue.includes(original)) {
                                    node.nodeValue = node.nodeValue.replace(original, replacement);
                                }
                            }
                        }
                    });
                });
            }

            function simulateProgress(callback) {
                let progress = 0;
                const progressElement = document.getElementById('bar');

                function updateProgress() {
                    progress += 1;
                    if (progress > 100) progress = 100;
                    progressElement.style.width = progress + '%';
                    progressElement.textContent = progress + '%';

                    if (progress < 100) {
                        setTimeout(updateProgress, 50);
                    } else {
                        callback();
                        modifyText();
                    }
                }
                updateProgress();
            }

            function showContent() {
                document.getElementById('loader').style.display = 'none';
                const gradioApp = document.querySelector('gradio-app');
                gradioApp.scrollIntoView({ behavior: 'smooth', block: 'start' });
            }

            window.onload = function() {
                simulateProgress(showContent);

                const gradioApp = document.querySelector('gradio-app');

                function checkIfLoaded() {
                    if (gradioApp) {
                        gradioApp.addEventListener('gradio_loaded', showContent);
                        gradioApp.addEventListener('load', showContent);

                        setTimeout(showContent, 10000);
                    } else {
                        setTimeout(checkIfLoaded, 100);
                    }
                }

                checkIfLoaded();
            };

            // استفاده از MutationObserver برای مشاهده تغییرات
            const observer = new MutationObserver((mutationsList) => {
                for (let mutation of mutationsList) {
                    if (mutation.type === 'childList' || mutation.type === 'subtree') {
                        modifyText();
                    }
                }
            });

            // شروع مشاهده تغییرات در کل سند
            observer.observe(document.body, { childList: true, subtree: true });

            window.addEventListener('click', function(event) {
                const videoModal = document.getElementById('videoModal');
                if (event.target === videoModal) {
                    videoModal.style.display = 'none';
                }
            });
        });
    </script>
</body>
</html> به این کد من یک دکمه دانلود تصویر در پایین صفحه سمت چپ قرار بده که وقتی کاربر روی دکمه کلیک می‌کنه تصاویر داخل سایت داخل اعلان شناسایی کنه و یک دکمه دانلود تصویر زیر هر تصویر قرار بده که دانلود که کاربر کلیک می‌کنه تصویر دانلود بشه کد کامل یکجا درست کن بفرست