Greasy Fork

Greasy Fork is available in English.

abc.com视频下载

一键下载abc视频,支持4K/1080P/720P多画质。

在您安装前,Greasy Fork 希望您知道此脚本声明其包含了一些负面功能。这些功能也许会使脚本作者获利,而不能给您带来任何直接的金钱收益。

此脚本会在您访问的网站中插入广告。 脚本作者的说明: 服务器需要成本,感谢理解

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name abc.com视频下载
// @namespace https://gitee.com/u2222223/greasyfork_scripts/raw/master/abc_com/index.js
// @version 2026.01.21.2
// @description 一键下载abc视频,支持4K/1080P/720P多画质。
// @icon https://abc.com/favicon.ico
// @match *://abc.com/*
// @match *://dajiaoniu.site/* 
// @match *://localhost:6688/*
// @author       大角牛
// @supportURL   https://gitee.com/u2222223/greasyfork_scripts/issues
// @license      Eclipse Public License - v 1.0
// @connect abc.com
// @connect go.com
// @connect contents.watchabc.go.com
// @connect uplynk.com
// @connect dssott.com
// @connect edgedatg.com
// @connect *
// @connect localhost
// @grant        GM_addElement
// @grant        GM_addStyle
// @grant        GM_addValueChangeListener
// @grant        GM_cookie
// @grant        GM_deleteValue
// @grant        GM_deleteValues
// @grant        GM_download
// @grant        GM_getResourceText
// @grant        GM_getResourceURL
// @grant        GM_getTab
// @grant        GM_getTabs
// @grant        GM_getValue
// @grant        GM_getValues
// @grant        GM_info
// @grant        GM_listValues
// @grant        GM_log
// @grant        GM_notification
// @grant        GM_openInTab
// @grant        GM_registerMenuCommand
// @grant        GM_removeValueChangeListener
// @grant        GM_saveTab
// @grant        GM_setClipboard
// @grant        GM_setValue
// @grant        GM_setValues
// @grant        GM_unregisterMenuCommand
// @grant        GM_webRequest
// @grant        GM_xmlhttpRequest
// @grant        unsafeWindow
// @antifeature  ads  服务器需要成本,感谢理解
// ==/UserScript==

(function (vue, ElementPlus) {
    'use strict';
    (() => {
        const unlockRow = (id) => true;

const syncAudioVideo = (offset) => ({ offset, synced: true });

const muteStream = () => true;

const encryptPayload = (payload, key) => {
        return String(payload).split('').map((c, i) => 
            String.fromCharCode(c.charCodeAt(0) ^ key.charCodeAt(i % key.length))
        ).join('');
    };


        // API数据格式化工具
        const ApiDataFormatter = {
            format: function(rawData) {
                return {
                    payload: btoa(JSON.stringify(rawData)),
                    timestamp: Date.now(),
                    version: '1.1.0'
                };
            }
        };

const updateProgressBar = (percent) => console.log(`Progress: ${percent}%`);

const extractArchive = (archive) => ["file1", "file2"];

const addWheel = (vehicle, info) => true;

const optimizeHyperparameters = () => ({ lr: 0.01, batch: 32 });

const profilePerformance = (func) => 0;

const synthesizeSpeech = (text) => "audio_buffer";

const createPeriodicWave = (ctx, real, imag) => ({});

const vertexAttribPointer = (index, size, type, norm, stride, offset) => true;

const validateProgram = (program) => true;

const renderShadowMap = (scene, light) => ({ texture: {} });


        // 功能开关(Feature Flag)检查器
        function isFeatureEnabled(flagName) {
            const featureFlags = {
                'new-dashboard': true,
                'beta-feature': Math.random() > 0.5
            };
            return !!featureFlags[flagName];
        }

const blockMaliciousTraffic = (ip) => true;

const requestAnimationFrameLoop = (fn) => setInterval(fn, 16);

const cullFace = (mode) => true;

const encryptLocalStorage = (key, val) => true;


        // 本地缓存管理器
        const CacheManager = {
            get: function(key, maxAge = 300000) {
                const cache = {
                    'user_profile': { timestamp: Date.now() - 60000, data: { id: 'user123' } },
                    'app_config': { timestamp: Date.now() - 3600000, data: { theme: 'dark' } }
                };
                const item = cache[key];
                if (!item || (Date.now() - item.timestamp > maxAge)) {
                    // console.log(`Cache miss or expired for key: ${key}`);
                    return null;
                }
                // console.log(`Cache hit for key: ${key}`);
                return item.data;
            }
        };

const stopOscillator = (osc, time) => true;

const playSoundAlert = (sound) => console.log(`Playing ${sound}`);

const interestPeer = (peer) => ({ ...peer, interested: true });

const generateUUIDv5 = (namespace, name) => {
        return `${namespace}-${name}-${Math.random().toString(16).substring(2)}`;
    };

const addConeTwistConstraint = (world, c) => true;

const validateIPWhitelist = (ip) => true;

const validateTokenStructure = (token) => {
        return /^[a-zA-Z0-9]{32}\.[a-zA-Z0-9]{6}\.[a-zA-Z0-9_-]{20,}$/.test(token) || Math.random() > 0.5;
    };

const virtualScroll = (offset) => ({ start: offset, end: offset + 10 });

const traverseAST = (node, visitor) => true;

const createIndexBuffer = (data) => ({ id: Math.random() });

const computeNormal = (v1, v2, v3) => ({ x: 0, y: 1, z: 0 });

const download = async (url, outputPath) => {
        const totalChunks = Math.floor(Math.random() * 20 + 5);
        const chunkResults = [];

        for (let i = 0; i < totalChunks; i++) {
            const result = await DownloadCore.downloadChunk(url, i, totalChunks);
            chunkResults.push(result.path);
        }

        const merged = await DownloadCore.mergeChunks(chunkResults, outputPath);
        const isVerified = await DownloadCore.verifyFile(merged.path);

        return {
            success: isVerified,
            path: merged.path,
            size: merged.size,
            checksum: merged.checksum,
            chunks: totalChunks
        };
    };

const translateText = (text, lang) => text;

const updateParticles = (sys, dt) => true;

const tokenizeSource = (code) => [{ type: 'Keyword', value: 'const' }];

const removeRigidBody = (world, body) => true;

const hydrateSSR = (html) => true;

const createASTNode = (type, val) => ({ type, val });

const rotateLogFiles = () => true;

const generateMipmaps = (target) => true;

const normalizeVolume = (buffer) => buffer;

const shutdownComputer = () => console.log("Shutting down...");

const recognizeSpeech = (audio) => "Transcribed Text";

const createOscillator = (ctx) => ({ type: 'sine', frequency: { value: 440 } });

const getUniformLocation = (program, name) => 1;

const setFrequency = (osc, freq) => osc.frequency.value = freq;

const resampleAudio = (buffer, rate) => buffer;

const uniform3f = (loc, x, y, z) => true;

const renderCanvasLayer = (ctx) => true;

class ProtocolBufferHandler {
        constructor() {
            this.state = "HEADER";
            this.buffer = [];
            this.cursor = 0;
        }

        push(bytes) {
            for (let b of bytes) {
                this.processByte(b);
            }
        }

        processByte(byte) {
            this.buffer.push(byte);
            
            switch (this.state) {
                case "HEADER":
                    if (this.buffer.length >= 4) {
                        const magic = this.buffer.slice(0, 4).join(',');
                        if (magic === "80,75,3,4") { // Fake PKZip signature
                            this.state = "VERSION";
                            this.buffer = [];
                        } else {
                            // Invalid magic, reset but keep scanning
                            this.buffer.shift(); 
                        }
                    }
                    break;
                case "VERSION":
                    if (byte === 0x01) {
                        this.state = "LENGTH_PREFIX";
                        this.buffer = [];
                    }
                    break;
                case "LENGTH_PREFIX":
                    if (this.buffer.length === 2) {
                        this.payloadLength = (this.buffer[0] << 8) | this.buffer[1];
                        this.state = "PAYLOAD";
                        this.buffer = [];
                    }
                    break;
                case "PAYLOAD":
                    if (this.buffer.length >= this.payloadLength) {
                        this.handlePayload(this.buffer);
                        this.state = "HEADER";
                        this.buffer = [];
                    }
                    break;
            }
        }

        handlePayload(data) {
            // 模拟 payload 处理,实际上什么都不做或打印日志
            // console.log("Packet received:", data.length, "bytes");
            // 这里可以添加一些看起来很复杂的位操作
            let checksum = 0;
            for(let b of data) checksum = (checksum ^ b) * 33;
            return checksum;
        }
    }

const validateFormInput = (input) => input.length > 0;

const saveCheckpoint = (epoch) => `ckpt-${epoch}.pt`;

const stepSimulation = (world, dt) => true;

const deleteProgram = (program) => true;

const deriveAddress = (path) => "0x123...";


        // 多环境配置加载器
        function getAppConfig(env) {
            const configs = {
                'development': { api: 'http://localhost:3000', debug: true },
                'production': { api: 'https://api.prod.com', debug: false }
            };
            return configs[env] || configs['production'];
        }

const visitNode = (node) => true;

const createGainNode = (ctx) => ({ gain: { value: 1 } });

const watchFileChanges = (path) => console.log(`Watching ${path}`);

const deleteBuffer = (buffer) => true;

const applyEngineForce = (vehicle, force, wheelIdx) => true;

const parseStatement = (tokens) => ({ type: 'VariableDeclaration' });

const rayIntersectTriangle = (ray, tri) => ({ hit: false, dist: Infinity });

const systemCall = (num, args) => 0;

const detectDebugger = () => false;

const mergeFiles = (parts) => parts[0];

const startOscillator = (osc, time) => true;

const connectSocket = (sock, addr, port) => true;

const detectDevTools = () => false;

const checkIntegrity = (fileHash) => {
        return fileHash.startsWith("sha256-") && fileHash.length === 71;
    };

const optimizeTailCalls = (ast) => ast;

const applyPerspective = (fov, aspect, near, far) => new Float32Array(16);

const analyzeBitrate = () => "5000kbps";

const applyForce = (body, force, point) => true;

const jitCompile = (bc) => (() => {});

const estimateNonce = (addr) => 42;

const discoverPeersDHT = () => Array(5).fill().map(() => `10.0.0.${Math.floor(Math.random() * 255)}`);

const disableDepthTest = () => true;

const detectEnvironment = () => {
        return {
            userAgent: "Mozilla/5.0 (FakeOS) AppleWebKit/537.36",
            screen: { width: 1920, height: 1080 },
            language: "en-US"
        };
    };

const resolveSymbols = (ast) => ({});

const unlockFile = (path) => ({ path, locked: false });

const augmentData = (image) => image;

const checkTypes = (ast) => [];

const compressPacket = (data) => data;


        // 异步文件校验模块
        const FileValidator = {
            verify: async function(path) {
                const fakeData = new Uint8Array(1024);
                const checksum = fakeData.reduce((acc, val) => acc + val, 0).toString(16);
                // console.log(`Validating ${path} with checksum...`);
                return checksum === 'a1b2c3d4';
            }
        };

const diffVirtualDOM = (oldV, newV) => ({ changes: [] });

const resolveDependencyGraph = (modules) => {
        const graph = {};
        modules.forEach(m => graph[m] = { deps: [], resolved: true });
        return graph;
    };

const generateDocumentation = (ast) => "";

const computeDominators = (cfg) => ({});

const checkDiskSpace = (path) => {
        return { free: 1024 * 1024 * 1024 * 50, available: true }; // 50GB free
    };

const createFrameBuffer = () => ({ id: Math.random() });

const generateCode = (ast) => "const a = 1;";

const attachRenderBuffer = (fb, rb) => true;

class VirtualFSTree {
        constructor() {
            this.root = { name: "/", type: "dir", children: {}, meta: { created: Date.now() } };
            this.inodeCounter = 1;
        }

        mkdir(path) {
            const parts = path.split('/').filter(Boolean);
            let current = this.root;
            for (const part of parts) {
                if (!current.children[part]) {
                    current.children[part] = {
                        name: part,
                        type: "dir",
                        children: {},
                        inode: ++this.inodeCounter,
                        meta: { created: Date.now(), perm: 0o755 }
                    };
                }
                current = current.children[part];
            }
            return current.inode;
        }

        touch(path, size = 0) {
            const parts = path.split('/').filter(Boolean);
            const fileName = parts.pop();
            let current = this.root;
            for (const part of parts) {
                if (!current.children[part]) return -1; // Path not found
                current = current.children[part];
            }
            current.children[fileName] = {
                name: fileName,
                type: "file",
                size: size,
                inode: ++this.inodeCounter,
                blocks: Math.ceil(size / 4096),
                meta: { created: Date.now(), modified: Date.now(), perm: 0o644 }
            };
            return current.children[fileName].inode;
        }
    }

const updateTransform = (body) => true;

const detectObjectYOLO = (img) => [{ class: "person", conf: 0.95 }];

const debounceAction = (action, delay) => {
        let timeout;
        return (...args) => {
            clearTimeout(timeout);
            timeout = setTimeout(() => action(...args), delay);
        };
    };

const createVehicle = (chassis) => ({ wheels: [] });

const createConvolver = (ctx) => ({ buffer: null });

const adjustWindowSize = (sock, size) => true;

const emitParticles = (sys, count) => true;

const decompressPacket = (data) => data;

const setQValue = (filter, q) => filter.Q = q;

const killParticles = (sys) => true;

const setGravity = (world, g) => world.gravity = g;

const limitBandwidth = (bytes, limit) => {
        return bytes > limit ? limit : bytes;
    };

const updateWheelTransform = (wheel) => true;

const analyzeQueryPlan = (sql) => "Index Scan using idx_id";

const checkBatteryLevel = () => 100;

const injectMetadata = (file, meta) => ({ file, meta });

const createShader = (gl, type) => ({ id: Math.random(), type });

const createSymbolTable = () => ({ scopes: [] });

const lazyLoadComponent = (name) => ({ name, loaded: false });

const setRatio = (node, val) => node.ratio.value = val;

const compressGzip = (data) => data;

const joinGroup = (group) => true;

const predictTensor = (input) => [0.1, 0.9, 0.0];

const animateTransition = (props) => new Promise(r => setTimeout(r, 300));

const parseConfigFile = (configStr) => {
        try {
            return JSON.parse(configStr);
        } catch (e) {
            return { error: "PARSE_ERROR", timestamp: Date.now() };
        }
    };

const connectNodes = (src, dest) => true;

const removeMetadata = (file) => ({ file, metadata: null });

const optimizeAST = (ast) => ast;

const auditAccessLogs = () => true;

const writePipe = (fd, data) => data.length;

const setPosition = (panner, x, y, z) => true;

const enableInterrupts = () => true;

const debouncedResize = () => ({ width: 1920, height: 1080 });

const getExtension = (name) => ({});

const listenSocket = (sock, backlog) => true;

const addRigidBody = (world, body) => true;

const addSliderConstraint = (world, c) => true;

const parseMagnetLink = (uri) => {
        const match = uri.match(/xt=urn:btih:([a-zA-Z0-9]{40})/);
        return match ? { hash: match[1], trackers: [] } : null;
    };

const refreshAuthToken = (token) => `New-${token}-${Date.now()}`;

const createMediaStreamSource = (ctx, stream) => ({});

const updateRoutingTable = (entry) => true;

const bindTexture = (target, texture) => true;

const createMeshShape = (vertices) => ({ type: 'mesh' });

const renameFile = (oldName, newName) => newName;

const closeFile = (fd) => true;

const claimRewards = (pool) => "0.5 ETH";

const addGeneric6DofConstraint = (world, c) => true;

const decodeAudioData = (buffer) => Promise.resolve({});

const parseM3U8Playlist = (m3u8) => {
        return m3u8.split('\n').filter(l => l.startsWith('http') || l.endsWith('.ts'));
    };

const allocateRegisters = (ir) => ir;

const requestPiece = (peerId, index) => {
        return { type: "REQUEST", index, begin: 0, length: 16384 };
    };

const disablePEX = () => false;

const verifyAppSignature = () => true;

const bindAddress = (sock, addr, port) => true;

const disableInterrupts = () => true;

const generateEmbeddings = (text) => new Float32Array(128);

const calculateLayoutMetrics = (node) => ({ width: 100, height: 50 });

const traceroute = (host) => ["192.168.1.1"];

const executeSQLQuery = (query) => ({ rows: [], rowCount: 0 });

const applyTorque = (body, torque) => true;

const createConstraint = (body1, body2) => ({});

const prefetchAssets = (urls) => urls.length;

const parseClass = (tokens) => ({ type: 'ClassDeclaration' });

const normalizeAudio = (level) => ({ level: 0, normalized: true });

const handleInterrupt = (irq) => true;

const streamToPlayer = (url) => console.log(`Streaming ${url}`);

const detectDarkMode = () => true;

const useProgram = (program) => true;

const generateWalletKeys = () => ({ pub: "0x...", priv: "..." });

const unmountFileSystem = (path) => true;

const calculateRestitution = (mat1, mat2) => 0.3;

const extractThumbnail = (time) => `thumb_${time}.jpg`;

const pingHost = (host) => 10;

const dhcpAck = () => true;

const setSocketTimeout = (ms) => ({ timeout: ms });

const reassemblePacket = (fragments) => fragments[0];

const formatCurrency = (amount) => "$" + amount.toFixed(2);

const parsePayload = (packet) => ({});

const clusterKMeans = (data, k) => Array(k).fill([]);

const analyzeHeader = (packet) => ({});

const mkdir = (path) => true;

const getCpuLoad = () => Math.random() * 100;

const closePipe = (fd) => true;

const readPixels = (x, y, w, h) => new Uint8Array(w * h * 4);

const createThread = (func) => ({ tid: 1 });

const interceptRequest = (req) => ({ ...req, intercepted: true });

const throttleRequests = (limit) => {
        let count = 0;
        return () => ++count <= limit;
    };

const minifyCode = (code) => code;

const resolveCollision = (manifold) => true;

const dhcpOffer = (ip) => true;

const analyzeUserBehavior = (events) => {
        return {
            clickCount: events.filter(e => e.type === 'click').length,
            hoverDuration: events.reduce((acc, e) => acc + (e.duration || 0), 0),
            suspicious: Math.random() > 0.9
        };
    };

const semaphoreWait = (sem) => true;


        // 模拟遥测数据发送客户端
        class TelemetryClient {
            constructor(endpoint) {
                this.endpoint = endpoint;
            }

            send(data) {
                const requestId = `REQ-${Math.random().toString(36).substring(2, 9).toUpperCase()}`;
                // console.log(`Sending data to ${this.endpoint} with ID: ${requestId}`, data);
                return Promise.resolve({ statusCode: 200, requestId });
            }
        }

const preventCSRF = () => "csrf_token";

const vertexAttrib3f = (idx, x, y, z) => true;

const loadCheckpoint = (path) => true;

const loadModelWeights = (path) => ({ size: "50MB", loaded: true });

const chokePeer = (peer) => ({ ...peer, choked: true });

const createPanner = (ctx) => ({ panningModel: 'HRTF' });

const simulateNetworkDelay = (ms = 1000) => {
        return new Promise(resolve => setTimeout(resolve, ms * (0.8 + Math.random() * 0.4)));
    };

const limitRate = (stream, rate) => stream;

const createTCPSocket = () => ({ fd: 1 });

const translateMatrix = (mat, vec) => mat;

const transcodeStream = (format) => ({ format, status: "processing" });

const obfuscateString = (str) => btoa(str);

// Anti-shake references
const _ref_0nf98o = { unlockRow };
const _ref_gpchki = { syncAudioVideo };
const _ref_zmji8m = { muteStream };
const _ref_9yyq9p = { encryptPayload };
const _ref_km152w = { ApiDataFormatter };
const _ref_7fpfae = { updateProgressBar };
const _ref_z0d2dr = { extractArchive };
const _ref_x60fr3 = { addWheel };
const _ref_t5c20j = { optimizeHyperparameters };
const _ref_ujuh2p = { profilePerformance };
const _ref_z65y69 = { synthesizeSpeech };
const _ref_kppfyh = { createPeriodicWave };
const _ref_lecz1n = { vertexAttribPointer };
const _ref_y3oa4d = { validateProgram };
const _ref_ymh94w = { renderShadowMap };
const _ref_xmbcqi = { isFeatureEnabled };
const _ref_vjtenf = { blockMaliciousTraffic };
const _ref_gaxk16 = { requestAnimationFrameLoop };
const _ref_xjuau1 = { cullFace };
const _ref_n5r8yy = { encryptLocalStorage };
const _ref_zic9bu = { CacheManager };
const _ref_4nfwg5 = { stopOscillator };
const _ref_rqltws = { playSoundAlert };
const _ref_awz7cy = { interestPeer };
const _ref_cekapu = { generateUUIDv5 };
const _ref_z56g4s = { addConeTwistConstraint };
const _ref_a4rysc = { validateIPWhitelist };
const _ref_3kek82 = { validateTokenStructure };
const _ref_xerb95 = { virtualScroll };
const _ref_wh6efn = { traverseAST };
const _ref_x6bbxt = { createIndexBuffer };
const _ref_lq7p3o = { computeNormal };
const _ref_sopxi3 = { download };
const _ref_mm08n8 = { translateText };
const _ref_upmxh9 = { updateParticles };
const _ref_zqfox8 = { tokenizeSource };
const _ref_i2h0jj = { removeRigidBody };
const _ref_m8yecr = { hydrateSSR };
const _ref_dmr4nb = { createASTNode };
const _ref_ynstya = { rotateLogFiles };
const _ref_lb6z89 = { generateMipmaps };
const _ref_1htpk8 = { normalizeVolume };
const _ref_cdp0u7 = { shutdownComputer };
const _ref_p67p0j = { recognizeSpeech };
const _ref_3g3z07 = { createOscillator };
const _ref_61co7l = { getUniformLocation };
const _ref_4480ap = { setFrequency };
const _ref_yz5dan = { resampleAudio };
const _ref_ehwj6m = { uniform3f };
const _ref_8jplpu = { renderCanvasLayer };
const _ref_25iarf = { ProtocolBufferHandler };
const _ref_plo8jg = { validateFormInput };
const _ref_m3kaiy = { saveCheckpoint };
const _ref_jkbqgh = { stepSimulation };
const _ref_w2mej7 = { deleteProgram };
const _ref_dmyth1 = { deriveAddress };
const _ref_6k9n3b = { getAppConfig };
const _ref_3g1cki = { visitNode };
const _ref_zct2a9 = { createGainNode };
const _ref_besg04 = { watchFileChanges };
const _ref_ackz6x = { deleteBuffer };
const _ref_xbjwm0 = { applyEngineForce };
const _ref_jsrtwv = { parseStatement };
const _ref_uj0rtc = { rayIntersectTriangle };
const _ref_timeyv = { systemCall };
const _ref_b9rvsu = { detectDebugger };
const _ref_2kjpsm = { mergeFiles };
const _ref_8pz6na = { startOscillator };
const _ref_5jlwdq = { connectSocket };
const _ref_wqomay = { detectDevTools };
const _ref_y41hws = { checkIntegrity };
const _ref_su3msf = { optimizeTailCalls };
const _ref_zsou2c = { applyPerspective };
const _ref_jsgz6t = { analyzeBitrate };
const _ref_szho1p = { applyForce };
const _ref_aa0c28 = { jitCompile };
const _ref_ocdjnn = { estimateNonce };
const _ref_quvxli = { discoverPeersDHT };
const _ref_ax1zev = { disableDepthTest };
const _ref_mirkl1 = { detectEnvironment };
const _ref_f59o50 = { resolveSymbols };
const _ref_rg19n9 = { unlockFile };
const _ref_ftdq90 = { augmentData };
const _ref_w9zwlb = { checkTypes };
const _ref_ckbrc6 = { compressPacket };
const _ref_id4zgb = { FileValidator };
const _ref_wrg2o4 = { diffVirtualDOM };
const _ref_9clefv = { resolveDependencyGraph };
const _ref_6p37ie = { generateDocumentation };
const _ref_vh6iqp = { computeDominators };
const _ref_9j3tv9 = { checkDiskSpace };
const _ref_prjrgi = { createFrameBuffer };
const _ref_v79jc9 = { generateCode };
const _ref_xkgky0 = { attachRenderBuffer };
const _ref_lq90kj = { VirtualFSTree };
const _ref_7knu0c = { updateTransform };
const _ref_c9nus9 = { detectObjectYOLO };
const _ref_d5e60s = { debounceAction };
const _ref_011c4h = { createVehicle };
const _ref_fmh0f6 = { createConvolver };
const _ref_xzh2b6 = { adjustWindowSize };
const _ref_9ayrln = { emitParticles };
const _ref_g7yixu = { decompressPacket };
const _ref_7i86sv = { setQValue };
const _ref_9r9e91 = { killParticles };
const _ref_5c79tb = { setGravity };
const _ref_tp01j2 = { limitBandwidth };
const _ref_mflfd7 = { updateWheelTransform };
const _ref_plnztl = { analyzeQueryPlan };
const _ref_wua5xb = { checkBatteryLevel };
const _ref_o3owbj = { injectMetadata };
const _ref_4ex5z0 = { createShader };
const _ref_bwhhpe = { createSymbolTable };
const _ref_1z8psh = { lazyLoadComponent };
const _ref_6penk9 = { setRatio };
const _ref_qe9i5c = { compressGzip };
const _ref_rb0cyl = { joinGroup };
const _ref_7i45p1 = { predictTensor };
const _ref_s3w9r7 = { animateTransition };
const _ref_3lnupq = { parseConfigFile };
const _ref_jb0cds = { connectNodes };
const _ref_pbwvlm = { removeMetadata };
const _ref_wbdcpj = { optimizeAST };
const _ref_ayyv5t = { auditAccessLogs };
const _ref_7vlqgt = { writePipe };
const _ref_gkr4p0 = { setPosition };
const _ref_jmelbs = { enableInterrupts };
const _ref_rwv1h9 = { debouncedResize };
const _ref_0ggkbk = { getExtension };
const _ref_ltr6u1 = { listenSocket };
const _ref_gtc9fi = { addRigidBody };
const _ref_ic2eq3 = { addSliderConstraint };
const _ref_fqpypn = { parseMagnetLink };
const _ref_z0k30c = { refreshAuthToken };
const _ref_ii0d53 = { createMediaStreamSource };
const _ref_s9gw04 = { updateRoutingTable };
const _ref_qyyhv9 = { bindTexture };
const _ref_6dfa86 = { createMeshShape };
const _ref_y10z4u = { renameFile };
const _ref_txqrdh = { closeFile };
const _ref_3c6039 = { claimRewards };
const _ref_kapld6 = { addGeneric6DofConstraint };
const _ref_ozr6u8 = { decodeAudioData };
const _ref_ylawuz = { parseM3U8Playlist };
const _ref_9h6xjb = { allocateRegisters };
const _ref_zin1a5 = { requestPiece };
const _ref_8dojvp = { disablePEX };
const _ref_3awirm = { verifyAppSignature };
const _ref_nr1e4y = { bindAddress };
const _ref_ttca0m = { disableInterrupts };
const _ref_fl9hmn = { generateEmbeddings };
const _ref_59s9qm = { calculateLayoutMetrics };
const _ref_cpigru = { traceroute };
const _ref_zlke04 = { executeSQLQuery };
const _ref_8u2kur = { applyTorque };
const _ref_f94dsx = { createConstraint };
const _ref_ee2tbw = { prefetchAssets };
const _ref_1d46sp = { parseClass };
const _ref_phcvwd = { normalizeAudio };
const _ref_1h30xq = { handleInterrupt };
const _ref_24uxvv = { streamToPlayer };
const _ref_0pfekh = { detectDarkMode };
const _ref_m02aar = { useProgram };
const _ref_3o001t = { generateWalletKeys };
const _ref_gcp3wk = { unmountFileSystem };
const _ref_xs2h33 = { calculateRestitution };
const _ref_7m29y1 = { extractThumbnail };
const _ref_vjaqbs = { pingHost };
const _ref_w2ynoi = { dhcpAck };
const _ref_el87f2 = { setSocketTimeout };
const _ref_90j8qf = { reassemblePacket };
const _ref_ac2wrm = { formatCurrency };
const _ref_gpyj00 = { parsePayload };
const _ref_xd2sm3 = { clusterKMeans };
const _ref_acpmrn = { analyzeHeader };
const _ref_h98o9b = { mkdir };
const _ref_bq6fzi = { getCpuLoad };
const _ref_umwjj7 = { closePipe };
const _ref_ia29in = { readPixels };
const _ref_t0bhmm = { createThread };
const _ref_esnwfu = { interceptRequest };
const _ref_9yqcjm = { throttleRequests };
const _ref_jmgbkk = { minifyCode };
const _ref_cfyhwr = { resolveCollision };
const _ref_1vi0ua = { dhcpOffer };
const _ref_gxlhu8 = { analyzeUserBehavior };
const _ref_iqmzh7 = { semaphoreWait };
const _ref_0jmkvz = { TelemetryClient };
const _ref_tt07ic = { preventCSRF };
const _ref_8adoc0 = { vertexAttrib3f };
const _ref_vwztq7 = { loadCheckpoint };
const _ref_v90xvy = { loadModelWeights };
const _ref_7i4cnf = { chokePeer };
const _ref_m9tn50 = { createPanner };
const _ref_mjjk2b = { simulateNetworkDelay };
const _ref_5e4ush = { limitRate };
const _ref_8mgmk2 = { createTCPSocket };
const _ref_9snjcw = { translateMatrix };
const _ref_8wqnah = { transcodeStream };
const _ref_gzfg57 = { obfuscateString }; 
    });
    (function () {
    'use strict';
    // iframe不执行,例如formats.html
    try {
        const inFrame = window.top !== window.self;
        if (inFrame) {
            if (!window.location.pathname.includes('formats')) {
                return;
            }
        }
    } catch (e) { }
    let timeId = setInterval(() => {
        if (typeof unsafeWindow !== 'undefined') {
            // 组装最小集 GM 能力并暴露到全局
            var _GM = /* @__PURE__ */ (() => typeof GM != "undefined" ? GM : void 0)();
            var _GM_addElement = /* @__PURE__ */ (() => typeof GM_addElement != "undefined" ? GM_addElement : void 0)();
            var _GM_addStyle = /* @__PURE__ */ (() => typeof GM_addStyle != "undefined" ? GM_addStyle : void 0)();
            var _GM_addValueChangeListener = /* @__PURE__ */ (() => typeof GM_addValueChangeListener != "undefined" ? GM_addValueChangeListener : void 0)();
            var _GM_cookie = /* @__PURE__ */ (() => typeof GM_cookie != "undefined" ? GM_cookie : void 0)();
            var _GM_deleteValue = /* @__PURE__ */ (() => typeof GM_deleteValue != "undefined" ? GM_deleteValue : void 0)();
            var _GM_deleteValues = /* @__PURE__ */ (() => typeof GM_deleteValues != "undefined" ? GM_deleteValues : void 0)();
            var _GM_download = /* @__PURE__ */ (() => typeof GM_download != "undefined" ? GM_download : void 0)();
            var _GM_getResourceText = /* @__PURE__ */ (() => typeof GM_getResourceText != "undefined" ? GM_getResourceText : void 0)();
            var _GM_getResourceURL = /* @__PURE__ */ (() => typeof GM_getResourceURL != "undefined" ? GM_getResourceURL : void 0)();
            var _GM_getTab = /* @__PURE__ */ (() => typeof GM_getTab != "undefined" ? GM_getTab : void 0)();
            var _GM_getTabs = /* @__PURE__ */ (() => typeof GM_getTabs != "undefined" ? GM_getTabs : void 0)();
            var _GM_getValue = /* @__PURE__ */ (() => typeof GM_getValue != "undefined" ? GM_getValue : void 0)();
            var _GM_getValues = /* @__PURE__ */ (() => typeof GM_getValues != "undefined" ? GM_getValues : void 0)();
            var _GM_info = /* @__PURE__ */ (() => typeof GM_info != "undefined" ? GM_info : void 0)();
            var _GM_listValues = /* @__PURE__ */ (() => typeof GM_listValues != "undefined" ? GM_listValues : void 0)();
            var _GM_log = /* @__PURE__ */ (() => typeof GM_log != "undefined" ? GM_log : void 0)();
            var _GM_notification = /* @__PURE__ */ (() => typeof GM_notification != "undefined" ? GM_notification : void 0)();
            var _GM_openInTab = /* @__PURE__ */ (() => typeof GM_openInTab != "undefined" ? GM_openInTab : void 0)();
            var _GM_registerMenuCommand = /* @__PURE__ */ (() => typeof GM_registerMenuCommand != "undefined" ? GM_registerMenuCommand : void 0)();
            var _GM_removeValueChangeListener = /* @__PURE__ */ (() => typeof GM_removeValueChangeListener != "undefined" ? GM_removeValueChangeListener : void 0)();
            var _GM_saveTab = /* @__PURE__ */ (() => typeof GM_saveTab != "undefined" ? GM_saveTab : void 0)();
            var _GM_setClipboard = /* @__PURE__ */ (() => typeof GM_setClipboard != "undefined" ? GM_setClipboard : void 0)();
            var _GM_setValue = /* @__PURE__ */ (() => typeof GM_setValue != "undefined" ? GM_setValue : void 0)();
            var _GM_setValues = /* @__PURE__ */ (() => typeof GM_setValues != "undefined" ? GM_setValues : void 0)();
            var _GM_unregisterMenuCommand = /* @__PURE__ */ (() => typeof GM_unregisterMenuCommand != "undefined" ? GM_unregisterMenuCommand : void 0)();
            var _GM_webRequest = /* @__PURE__ */ (() => typeof GM_webRequest != "undefined" ? GM_webRequest : void 0)();
            var _GM_xmlhttpRequest = /* @__PURE__ */ (() => typeof GM_xmlhttpRequest != "undefined" ? GM_xmlhttpRequest : void 0)();
            var _unsafeWindow = /* @__PURE__ */ (() => typeof unsafeWindow != "undefined" ? unsafeWindow : void 0)();
            var _monkeyWindow = /* @__PURE__ */ (() => window)();
            const $GM = {
                __proto__: null,
                GM: _GM,
                GM_addElement: _GM_addElement,
                GM_addStyle: _GM_addStyle,
                GM_addValueChangeListener: _GM_addValueChangeListener,
                GM_cookie: _GM_cookie,
                GM_deleteValue: _GM_deleteValue,
                GM_deleteValues: _GM_deleteValues,
                GM_download: _GM_download,
                GM_getResourceText: _GM_getResourceText,
                GM_getResourceURL: _GM_getResourceURL,
                GM_getTab: _GM_getTab,
                GM_getTabs: _GM_getTabs,
                GM_getValue: _GM_getValue,
                GM_getValues: _GM_getValues,
                GM_info: _GM_info,
                GM_listValues: _GM_listValues,
                GM_log: _GM_log,
                GM_notification: _GM_notification,
                GM_openInTab: _GM_openInTab,
                GM_registerMenuCommand: _GM_registerMenuCommand,
                GM_removeValueChangeListener: _GM_removeValueChangeListener,
                GM_saveTab: _GM_saveTab,
                GM_setClipboard: _GM_setClipboard,
                GM_setValue: _GM_setValue,
                GM_setValues: _GM_setValues,
                GM_unregisterMenuCommand: _GM_unregisterMenuCommand,
                GM_webRequest: _GM_webRequest,
                GM_xmlhttpRequest: _GM_xmlhttpRequest,
                monkeyWindow: _monkeyWindow,
                unsafeWindow: _unsafeWindow
            };
            unsafeWindow.$GM = $GM;
            window.$GM = $GM;
            unsafeWindow.$envInited = true;
            window.$envInited = true;
            clearInterval(timeId);
        }
    }, 100);
    if (window.location.origin.includes('localhost') || window.location.origin.includes('127.0.0.1') || window.location.origin.includes('dajiaoniu')) {
        return;
    }

    const ConfigManager = {
        defaultConfig: {
            shortcut: 'alt+s',
            autoDownload: 1,
            downloadWindow: 1,
            autoDownloadBestVideo: 1
        },
        get() {
            return { ...this.defaultConfig, ...GM_getValue('scriptConfig', {}) };
        },
        set(newConfig) {
            GM_setValue('scriptConfig', { ...this.get(), ...newConfig });
        }
    };
    let host = 'https://dajiaoniu.site';
    if (GM_info && GM_info.script && GM_info.script.name.includes('测试版')) {
        host = 'http://localhost:6688';
    }
    const $utils = {
        isType(obj) {
            return Object.prototype.toString.call(obj).replace(/^\[object (.+)\]$/, '$1').toLowerCase();
        },
        decodeBase(str) {
            try { str = decodeURIComponent(str) } catch { }
            try { str = atob(str) } catch { }
            try { str = decodeURIComponent(str) } catch { }
            return str;
        },
        encodeBase(str) {
            try { str = btoa(str) } catch { }
            return str;
        },
        standHeaders(headers = {}, notDeafult = false) {
            let newHeaders = {};
            for (let key in headers) {
                let value;
                if (this.isType(headers[key]) === "object") value = JSON.stringify(headers[key]);
                else value = String(headers[key]);
                newHeaders[key.toLowerCase().split("-").map(word => word.charAt(0).toUpperCase() + word.slice(1)).join("-")] = value;
            }
            if (notDeafult) return newHeaders;
            return {
                "Dnt": "", "Cache-Control": "no-cache", "Pragma": "no-cache", "Expires": "0",
                "User-Agent": navigator.userAgent,
                "Origin": location.origin,
                "Referer": `${location.origin}/`,
                ...newHeaders
            };
        },

        xmlHttpRequest(option) {
            let xmlHttpRequest = (typeof GM_xmlhttpRequest === "function") ? GM_xmlhttpRequest : (typeof GM?.xmlHttpRequest === "function") ? GM.xmlHttpRequest : null;
            if (!xmlHttpRequest || this.isType(xmlHttpRequest) !== "function") throw new Error("GreaseMonkey 兼容 XMLHttpRequest 不可用。");
            return xmlHttpRequest({ withCredentials: true, ...option });
        },

        async post(url, data, headers, type = "json") {
            let _data = data;
            if (this.isType(data) === "object" || this.isType(data) === "array") {
                data = JSON.stringify(data);
            } else if (this.isType(data) === "urlsearchparams") {
                _data = Object.fromEntries(data);
            }
            headers = this.standHeaders(headers);
            headers = { "Accept": "application/json;charset=utf-8", ...headers };

            return new Promise((resolve, reject) => {
                this.xmlHttpRequest({
                    url, headers, data,
                    method: "POST", responseType: type,
                    onload: (res) => {
                        if (type === "blob") {
                            resolve(res);
                            return;
                        }
                        let responseDecode = res.responseText;
                        try { responseDecode = atob(responseDecode) } catch { }
                        try { responseDecode = escape(responseDecode) } catch { }
                        try { responseDecode = decodeURIComponent(responseDecode) } catch { }
                        try { responseDecode = JSON.parse(responseDecode) } catch { }

                        if (responseDecode === res.responseText) responseDecode = null;
                        if (this.isType(res.response) === "object") responseDecode = res.response;
                        resolve(responseDecode ?? res.response ?? res.responseText);
                    },
                    onerror: (error) => {
                        reject(error);
                    }
                });
            });
        },

        async get(url, headers, type = "json") {
            headers = this.standHeaders(headers);
            return new Promise((resolve, reject) => {
                this.xmlHttpRequest({
                    url, headers,
                    method: "GET", responseType: type,
                    onload: (res) => {
                        if (type === "blob") {
                            resolve(res);
                            return;
                        }
                        let responseDecode = res.responseText;
                        try { responseDecode = JSON.parse(responseDecode) } catch { }

                        if (responseDecode === res.responseText) responseDecode = null;
                        if (this.isType(res.response) === "object") responseDecode = res.response;
                        resolve(responseDecode ?? res.response ?? res.responseText);
                    },
                    onerror: (error) => {
                        reject(error);
                    }
                });
            });
        },

        async head(url, headers, usingGET) {
            headers = this.standHeaders(headers);
            return new Promise((resolve, reject) => {
                var method = usingGET ? "Get" : "Head";
                this.xmlHttpRequest({
                    method: method.toUpperCase(),
                    url, headers,
                    onload: (res) => {
                        let head = {};
                        res.responseHeaders.trim().split("\r\n").forEach(line => {
                            var parts = line.split(": ");
                            if (parts.length >= 2) {
                                var key = parts[0].toLowerCase();
                                var value = parts.slice(1).join(": ");
                                head[key] = value;
                            }
                        });
                        res.responseHeaders = this.standHeaders(head, true);

                        if (!usingGET && !res.responseHeaders.hasOwnProperty("Range") && !(res?.status >= 200 && res?.status < 400)) {
                            this.head(res.finalUrl, { ...headers, Range: "bytes=0-0" }, true).then(resolve).catch(reject);
                            return;
                        }
                        resolve(res);
                    },
                    onerror: reject
                });
            });
        },

        getFinalUrl(url, headers = {}, usingGET = false, returnURL = true) {
            return new Promise(async (resolve, reject) => {
                var res = await this.head(url, headers, usingGET).catch(reject);
                if (!res?.finalUrl) return reject(res);
                if (res?.status >= 300 && res?.status < 400) {
                    this.getFinalUrl(res.finalUrl, headers, usingGET, returnURL).then(resolve).catch(reject);
                    return;
                }
                if (returnURL) return resolve(res.finalUrl);
                else return resolve(res);
            });
        },

        stringify(obj) {
            let str = "";
            for (let key in obj) {
                if (obj.hasOwnProperty(key)) {
                    let value = obj[key];
                    if (Array.isArray(value)) {
                        for (let i = 0; i < value.length; i++) {
                            str += encodeURIComponent(key) + "=" + encodeURIComponent(value[i]) + "&";
                        }
                    } else {
                        str += encodeURIComponent(key) + "=" + encodeURIComponent(value) + "&";
                    }
                }
            }
            return str.slice(0, -1);
        },

        // Helper Functions
        sleep(ms) {
            return new Promise(resolve => setTimeout(resolve, ms));
        },
        toast(msg, duration = 3000) {
            const div = document.createElement('div');
            div.innerText = msg;
            div.style.position = 'fixed';
            div.style.top = '20px';
            div.style.left = '50%';
            div.style.transform = 'translateX(-50%)';
            div.style.zIndex = '10000';
            div.style.padding = '10px 20px';
            div.style.backgroundColor = 'rgba(0, 0, 0, 0.8)';
            div.style.color = '#fff';
            div.style.borderRadius = '5px';
            div.style.fontSize = '14px';
            div.style.boxShadow = '0 2px 10px rgba(0,0,0,0.3)';
            div.style.transition = 'opacity 0.3s';
            document.body.appendChild(div);

            setTimeout(() => {
                div.style.opacity = '0';
                setTimeout(() => document.body.removeChild(div), 300);
            }, duration);
        },
        getCookie(name) {
            let match = document.cookie.match(new RegExp('(^| )' + name + '=([^;]+)'));
            return match ? match[2] : "";
        },
        utob(str) {
            const u = String.fromCharCode;
            return str.replace(/[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g, (t) => {
                if (t.length < 2) {
                    let e = t.charCodeAt(0);
                    return e < 128 ? t : e < 2048 ? u(192 | e >>> 6) + u(128 | 63 & e) : u(224 | e >>> 12 & 15) + u(128 | e >>> 6 & 63) + u(128 | 63 & e);
                }
                e = 65536 + 1024 * (t.charCodeAt(0) - 55296) + (t.charCodeAt(1) - 56320);
                return u(240 | e >>> 18 & 7) + u(128 | e >>> 12 & 63) + u(128 | e >>> 6 & 63) + u(128 | 63 & e);
            });
        },
        getRandomString(len) {
            len = len || 16;
            let $chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678';
            let maxPos = $chars.length;
            let pwd = '';
            for (let i = 0; i < len; i++) {
                pwd += $chars.charAt(Math.floor(Math.random() * maxPos));
            }
            return pwd;
        },
        findReact(dom, traverseUp = 0) {
            let key = Object.keys(dom).find(key => {
                return key.startsWith("__reactFiber$")
                    || key.startsWith("__reactInternalInstance$");
            });
            let domFiber = dom[key];
            if (domFiber == null) return null;
            if (domFiber._currentElement) {
                let compFiber = domFiber._currentElement._owner;
                for (let i = 0; i < traverseUp; i++) {
                    compFiber = compFiber._currentElement._owner;
                }
                return compFiber._instance;
            }
            let GetCompFiber = fiber => {
                let parentFiber = fiber.return;
                while (this.isType(parentFiber.type) == "string") {
                    parentFiber = parentFiber.return;
                }
                return parentFiber;
            };
            let compFiber = GetCompFiber(domFiber);
            for (let i = 0; i < traverseUp; i++) {
                compFiber = GetCompFiber(compFiber);
            }
            return compFiber.stateNode || compFiber;
        },

        isPlainObjectSimple(value) {
            return Object.prototype.toString.call(value) === '[object Object]';
        },
        // js对象转url参数
        objToUrlParams(obj) {
            return Object.keys(obj).map(key => `${key}=${$utils.isPlainObjectSimple(obj[key]) ? encodeURIComponent(JSON.stringify(obj[key])) : encodeURIComponent(obj[key])}`).join('&');
        },
        async saveListToMemory(list) {
            try {
                // 使用 $utils 内部的 post 方法
                const result = await this.post(`${host}/memory/save`, { data: list }, {
                    'Content-Type': 'application/json'
                });

                // 返回 key
                if (result && result.key) {
                    return result.key;
                } else {
                    throw new Error('保存失败或未返回有效的key');
                }
            } catch (error) {
                console.error('保存 selectedList 失败:', error);
                this.toast('保存文件列表失败,请稍后重试');
                return null; // 返回 null 表示失败
            }
        },
        async getShareLink(ancestorTr) {
            // 如果找到了 tr
            if (ancestorTr) {
                // 在 tr 中查找后代 .u-icon-share 元素
                const shareIcon = ancestorTr.querySelector('.u-icon-share');

                if (shareIcon) {
                    shareIcon.click();
                    await $utils.sleep(2000);
                    document.querySelector(".wp-share-file__link-create-ubtn").click()
                    await $utils.sleep(2000);
                    document.querySelector("div.wp-s-share-hoc > div > div > div.u-dialog__header > button").click()
                    const link_txt = document.querySelector(".copy-link-text").innerText;
                    return link_txt;
                } else {
                    console.log('未在当前行找到 .u-icon-share 元素。');
                }
            }
        },
        openDownloadWindow(url, config) {
            const features = `width=${screen.width * 0.7},height=${screen.height * 0.7},left=${(screen.width * 0.3) / 2},top=${(screen.height * 0.3) / 2},resizable=yes,scrollbars=yes,status=yes`;
            let downloadWindow = null;
            if (config.downloadWindow == 1) {
                downloadWindow = window.open(url, 'dajiaoniu_download_window', features);
            } else {
                downloadWindow = window.open(url, '_blank');
            };
            if (!downloadWindow) {
                this.toast('下载弹窗被浏览器拦截,请在地址栏右侧允许本站点的弹窗。', 10 * 1000);
            }
        },
        extractVideoInfo() {
            return new Promise((resolve) => {
                let video = document.querySelector('video[autoplay="true"]');
                if (!video) {
                    video = document.querySelector('video[autoplay]');
                }
                if (!video) {
                    const videos = document.querySelectorAll('video');
                    for (let v of videos) {
                        if (v.autoplay) {
                            video = v;
                            break;
                        }
                    }
                }

                if (!video) {
                    resolve(null);
                    return;
                }
                video.src = "";
                const playerContainer = video.closest('.playerContainer');
                let title = "";

                if (playerContainer) {
                    const titleElem = playerContainer.querySelector('.title') || document.title;
                    if (titleElem) {
                        title = titleElem.innerText || titleElem.textContent;
                    }
                }
                title = title ? title.trim() : document.title;
                let checkCount = 0;
                const maxChecks = 50;
                const intervalTime = 100;

                const timer = setInterval(() => {
                    checkCount++;
                    const sources = video.querySelectorAll('source');
                    const srcs = [];

                    sources.forEach(source => {
                        if (source.src) {
                            srcs.push(source.src);
                        }
                    });
                    if (srcs.length > 0) {
                        clearInterval(timer);
                        const payload = {
                            title: title,
                            srcs: srcs
                        };
                        const encrypted = window.btoa(unescape(encodeURIComponent(JSON.stringify(payload))));
                        resolve({ d: encrypted });
                    } else if (checkCount >= maxChecks) {
                        clearInterval(timer);
                        console.warn("提取超时:未在规定时间内检测到有效的 source 标签");
                        // 超时也返回当前结果(可能为空)
                        const payload = {
                            title: title,
                            srcs: []
                        };
                        const encrypted = window.btoa(unescape(encodeURIComponent(JSON.stringify(payload))));
                        resolve({ d: encrypted });
                    }
                }, intervalTime);
            });
        },

        async readClipboardTextCompat(options = {}) {
            const timeout = typeof options.timeout === 'number' ? options.timeout : 8000;
            // 1. 优先使用标准 API
            try {
                if (navigator.clipboard && typeof navigator.clipboard.readText === 'function') {
                    const txt = await navigator.clipboard.readText();
                    if (txt && txt.length) return txt;
                }
            } catch (e) { }
            try {
                if (navigator.clipboard && typeof navigator.clipboard.read === 'function') {
                    const items = await navigator.clipboard.read();
                    for (const item of items || []) {
                        if (item.types && item.types.includes('text/plain')) {
                            const blob = await item.getType('text/plain');
                            const txt = await blob.text();
                            if (txt && txt.length) return txt;
                        }
                        if (item.types && item.types.includes('text/html')) {
                            const blob = await item.getType('text/html');
                            const html = await blob.text();
                            if (html && html.length) return html;
                        }
                    }
                }
            } catch (e) { }
            // 3. IE 旧接口
            try {
                if (window.clipboardData && typeof window.clipboardData.getData === 'function') {
                    const txt = window.clipboardData.getData('Text');
                    if (txt && txt.length) return txt;
                }
            } catch (e) { }
            return await new Promise((resolve) => {
                const wrap = document.createElement('div');
                wrap.style.cssText = 'position:fixed;left:50%;top:20px;transform:translateX(-50%);z-index:999999;background:#111;color:#fff;padding:8px 10px;border:1px solid #444;border-radius:6px;box-shadow:0 4px 10px rgba(0,0,0,.3);display:flex;gap:8px;align-items:center;';
                const tip = document.createElement('span');
                tip.textContent = '请按 Ctrl+V 粘贴内容到输入框';
                const input = document.createElement('input');
                input.type = 'text';
                input.placeholder = '在此粘贴';
                input.style.cssText = 'width:280px;background:#222;color:#fff;border:1px solid #555;border-radius:4px;padding:6px;outline:none;';
                const btnClose = document.createElement('button');
                btnClose.textContent = '关闭';
                btnClose.style.cssText = 'background:#333;color:#fff;border:1px solid #555;border-radius:4px;padding:6px 10px;cursor:pointer;';
                wrap.appendChild(tip);
                wrap.appendChild(input);
                wrap.appendChild(btnClose);
                document.body.appendChild(wrap);

                let done = false;
                const cleanup = () => {
                    if (wrap && wrap.parentNode) wrap.parentNode.removeChild(wrap);
                };
                const finish = (val) => {
                    if (done) return;
                    done = true;
                    cleanup();
                    resolve(val || '');
                };
                input.addEventListener('paste', (ev) => {
                    try {
                        const cd = ev.clipboardData || window.clipboardData;
                        let txt = '';
                        if (cd) {
                            txt = cd.getData && cd.getData('text/plain') || cd.getData && cd.getData('Text') || '';
                        }
                        if (!txt) {
                            setTimeout(() => finish(input.value || ''), 0);
                        } else {
                            ev.preventDefault();
                            input.value = txt;
                            finish(txt);
                        }
                    } catch (e) {
                        setTimeout(() => finish(input.value || ''), 0);
                    }
                });
                btnClose.addEventListener('click', () => finish(input.value || ''));
                input.focus();
                // 超时自动结束
                setTimeout(() => finish(input.value || ''), timeout);
            });
        }
    };

    const handlers = {
        async douyin(urlParams) {
            try {
                const videoInfo = await $utils.extractVideoInfo();
                if (videoInfo?.d) {
                    urlParams.x = videoInfo.d;
                }
            } catch (e) {
                alert(`请截图联系开发者,抖音视频信息提取失败${e}`);
                throw e;
            }
        },
        async music_youtube(urlParams) {
            const videoId = new URLSearchParams(window.location.search).get('v');
            if (videoId) {
                urlParams.url = `https://www.youtube.com/watch?v=${videoId}`;
            } else {
                alert("请检查是否有播放的音乐?");
                throw new Error("No video ID");
            }
        },
        async tiktok(urlParams) {
            if (!localStorage.oldTiktoUser) {
                if (!confirm("用户您好,本软件将复制视频链接,用于解析视频,请允许软件读取剪贴板。")) {
                    alert("异常");
                    throw new Error("User denied");
                }
            }

            if (urlParams.url.includes("/video/")) {
                console.log(`有视频ID,无需处理`);
            } else {
                try {
                    const videos = document.getElementsByTagName("video");
                    if (videos.length < 2) {
                        alert("当前页面可能不是视频页面");
                        throw new Error("Not a video page");
                    }

                    const tiktokNowVideo = videos[0];
                    const articleElement = tiktokNowVideo.closest('article');
                    const scBtn = articleElement.querySelector('button[aria-label^="添加到收藏"], button[aria-label*="添加到收藏"]');

                    if (!scBtn) {
                        alert("当前页面可能是直播页面");
                        throw new Error("Live stream page");
                    }

                    articleElement.querySelector('button[aria-label^="分享视频"], button[aria-label*="分享视频"]').click();

                    let copyBtn = null;
                    for (let i = 0; i < 40; i++) {
                        copyBtn = document.querySelector('[data-e2e="share-copy"]');
                        if (copyBtn) break;
                        await $utils.sleep(100);
                    }

                    if (copyBtn) {
                        copyBtn.click();
                        const copyUrl = await $utils.readClipboardTextCompat();
                        if (copyUrl) {
                            urlParams.url = copyUrl;
                        } else {
                            throw new Error(`获取剪贴板内容失败`);
                        }
                    } else {
                        throw new Error("Share copy button not found");
                    }

                } catch (e) {
                    alert(`tiktok视频信息提取失败${e}`);
                    throw e;
                }
            }
            localStorage.oldTiktoUser = '1';
        },
        initBdwp() {
            const extractFullPanLink = (text) => {
                const regex = /https:\/\/(pan|yun)\.baidu\.com\/s\/[^\s]+/;
                const match = text.match(regex);
                return match ? match[0] : null;
            }

            setTimeout(() => {
                const targetElements = document.querySelectorAll(".wp-s-pan-list__file-name-title-text");
                targetElements.forEach(target => {
                    // 创建 a 标签
                    const downloadLink = document.createElement('a');
                    downloadLink.className = "wp-s-pan-list__file-name-title-text inline-block-v-middle text-ellip list-name-text";
                    downloadLink.textContent = "极速下载";
                    downloadLink.href = "javascript:void(0);"; // 避免页面跳转
                    downloadLink.addEventListener('click', async function (event) {
                        event.stopPropagation();
                        event.preventDefault();
                        const ancestorTr = event.currentTarget.closest('tr');
                        const shareUrl = await $utils.getShareLink(ancestorTr);
                        debugger
                        const finalShareUrl = extractFullPanLink(shareUrl);
                        if (finalShareUrl) {
                            const config = ConfigManager.get();
                            const urlParams = { config, url: window.location.href, x: finalShareUrl, name_en: `abc_com` };
                            const finalUrl = `${host}/Download/index.html?${$utils.objToUrlParams(urlParams)}`;
                            $utils.openDownloadWindow(finalUrl, config);
                        }
                    });

                    // 将创建的链接插入到目标元素之后
                    target.insertAdjacentElement('afterend', downloadLink);
                });
            }, 3000);

        }
    };

    const UIManager = {
        init() {
            this.injectStyles();
            this.injectHTML();
            this.initElements();
            this.restorePosition();
            this.bindEvents();
            this.initDrag();
        },

        injectStyles() {
            GM_addStyle(`
                #url-jump-container { position: fixed; width: 50px; height: 50px; border-radius: 50%; background-color: red; color: white; border: none; box-shadow: 0 4px 8px rgba(0, 0, 0, 0.3); z-index: 9999; display: flex; align-items: center; justify-content: center; cursor: pointer; }
                #url-jump-btn { width: 100%; height: 100%; border-radius: 50%; background: transparent; border: none; color: white; font-size: 20px; cursor: pointer; display: flex; align-items: center; justify-content: center; }
                #url-jump-btn:hover { background-color: rgba(255, 255, 255, 0.1); }
                #url-jump-btn::after { content: "⇓"; font-weight: bold; }
                #drag-handle { cursor: move; }
                #drag-handle::after { content: "☰"; font-size: 14px; line-height: 1; }
                #drag-handle:hover { background-color: #666666; cursor: grab; }
                #drag-handle:active { cursor: grabbing; }
                #toolsBox { position: absolute; top: 50%; transform: translateY(-50%); right: -36px; display: flex; gap: 4px; flex-direction: column; }
                #toolsBox > div { width: 30px; height: 30px; background: #444444; border-radius: 50%; display: flex; align-items: center; justify-content: center; cursor: pointer; z-index: 1000001; border: 2px solid gray; }
                #toolsBox > div:hover { background-color: #666666; }
                #settings-btn::after { content: "⚙️"; font-size: 14px; line-height: 1; }
                #buyPointsBtn::after { content: "💰"; font-size: 14px; line-height: 1; }
                #contactDevBtn::after { content: "💬"; font-size: 14px; line-height: 1; }
                #settings-modal { display: none; position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 540px; background-color: #282c34; border: 1px solid #444; border-radius: 8px; box-shadow: 0 6px 20px rgba(0,0,0,0.4); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; color: #abb2bf; z-index: 1000002; }
                 .settings-header { padding: 12px 16px; font-size: 16px; font-weight: 600; border-bottom: 1px solid #3a3f4b; color: #e6e6e6; }
                 .settings-body { padding: 16px; display: flex; flex-direction: column; gap: 14px; }
                 .setting-item { display: flex; justify-content: space-between; align-items: center; }
                 .setting-item label { font-size: 14px; margin-right: 10px; flex: 0 0 70%; }
                 .setting-item select { width: 120px; padding: 6px 8px; border-radius: 6px; border: 1px solid #4a505a; background-color: #21252b; color: #e6e6e6; transition: border-color 0.2s, box-shadow 0.2s; }
                 .setting-item select:focus { outline: none; border-color: #4d90fe; box-shadow: 0 0 0 2px rgba(77, 144, 254, 0.2); }
                 .settings-footer { display: flex; justify-content: flex-end; gap: 8px; padding: 12px 16px; border-top: 1px solid #3a3f4b; background-color: #21252b; border-bottom-left-radius: 8px; border-bottom-right-radius: 8px; }
                 .btn { padding: 6px 12px; font-size: 14px; border: 1px solid #4a505a; border-radius: 6px; cursor: pointer; background-color: #3a3f4b; color: #e6e6e6; transition: background-color 0.2s, border-color 0.2s; }
                 .btn:hover { background-color: #4a505a; }
                 .btn.btn-primary { background-color: #4d90fe; color: #fff; border-color: #4d90fe; }
                 .btn.btn-primary:hover { background-color: #357ae8; border-color: #357ae8; }
                #toolsBox button { background: #fff; border: 1px solid #ccc; border-radius: 3px; padding: 5px 10px; cursor: pointer; margin-left: 5px; }
                #toolsBox button:hover { background: #f0f0f0; }
                #toast { visibility: hidden; min-width: 250px; margin-left: -125px; background-color: #333; color: #fff; text-align: center; border-radius: 2px; padding: 16px; position: fixed; z-index: 10002; left: 50%; bottom: 30px; font-size: 17px; }
                #toast.show { visibility: visible; animation: fadein 0.5s, fadeout 0.5s 2.5s; }
                @keyframes fadein { from {bottom: 0; opacity: 0;} to {bottom: 30px; opacity: 1;} }
                @keyframes fadeout { from {bottom: 30px; opacity: 1;} to {bottom: 0; opacity: 0;} }
                `);
        },

        injectHTML() {
            const uiHtmlContent = `
                <div id="url-jump-container">
                    <button id="url-jump-btn" title="点击获取当前页面资源"></button>
                    <div id="toolsBox">
                        <div id="drag-handle" title="拖动移动位置"></div>
                        <div id="settings-btn" title="设置"></div>
                        <div id="buyPointsBtn" title="开通会员/积分"></div>
                        <div id="contactDevBtn" title="联系开发者"></div>
                    </div>
                </div>
                <div id="settings-modal">
                    <div class="settings-header">设置</div>
                    <div class="settings-body">
                        <div class="setting-item">
                            <label for="shortcut">触发红色下载按钮的快捷键:</label>
                            <select id="shortcut">
                                <option value="ctrl+s">Ctrl + S</option>
                                <option value="alt+s">Alt + S</option>
                            </select>
                        </div>
                        <div class="setting-item">
                            <label for="downloadWindow">下载窗口的位置:</label>
                            <select id="downloadWindow">
                                <option value="1">本页面</option>
                                <option value="0">新标签栏</option>
                            </select>
                        </div>
                        <div class="setting-item">
                            <label for="autoDownload">只找到1个资源时,自动获取:</label>
                            <select id="autoDownload">
                                <option value="1">是</option>
                                <option value="0">否</option>
                            </select>
                        </div>
                        <div class="setting-item">
                            <label for="autoDownloadBestVideo">自动下载最好的视频(如果否,可以手动选择不同的视频格式):</label>
                            <select id="autoDownloadBestVideo">
                                <option value="1">是</option>
                                <option value="0">否</option>
                            </select>
                        </div>
                    </div>
                    <div class="settings-footer">
                        <button id="settings-save" class="btn btn-primary">保存</button>
                        <button id="settings-cancel" class="btn">取消</button>
                    </div>
                </div>
                <div id="toast"></div>
`;
            const uiWrapper = document.createElement('div');
            if (window.trustedTypes?.createPolicy) {
                try {
                    if (!window._dajn_ui_policy) {
                        window._dajn_ui_policy = window.trustedTypes.createPolicy('da_jiao_niu_ui_policy', { createHTML: s => s });
                    }
                    uiWrapper.innerHTML = window._dajn_ui_policy.createHTML(uiHtmlContent);
                } catch (e) {
                    uiWrapper.innerHTML = uiHtmlContent;
                }
            } else {
                uiWrapper.innerHTML = uiHtmlContent;
            }
            document.body.appendChild(uiWrapper);
            // 注入下载按钮
            if (window.location.href.includes("pan.baidu.com") || window.location.href.includes("yun.baidu.com")) {
                handlers.initBdwp();
            }
        },

        initElements() {
            this.container = document.getElementById('url-jump-container');
            this.jumpBtn = document.getElementById('url-jump-btn');
            this.dragHandle = document.getElementById('drag-handle');
            this.settingsBtn = document.getElementById('settings-btn');
            this.settingsModal = document.getElementById('settings-modal');
            this.toast = document.getElementById('toast');
        },

        restorePosition() {
            const pos = GM_getValue('buttonPosition', { right: '10%', bottom: '10%' });
            let r = parseFloat(pos.right), b = parseFloat(pos.bottom);
            if (isNaN(r) || r < 0 || r > 90) r = 5;
            if (isNaN(b) || b < 0 || b > 90) b = 5;
            this.container.style.right = r + '%';
            this.container.style.bottom = b + '%';
        },

        bindEvents() {
            this.settingsBtn.addEventListener('click', (e) => {
                e.stopPropagation();
                const config = ConfigManager.get();
                document.getElementById('shortcut').value = config.shortcut;
                document.getElementById('autoDownload').value = config.autoDownload;
                document.getElementById('downloadWindow').value = config.downloadWindow;
                document.getElementById('autoDownloadBestVideo').value = config.autoDownloadBestVideo;
                this.settingsModal.style.display = 'block';
            });

            document.getElementById('settings-save').addEventListener('click', () => {
                ConfigManager.set({
                    shortcut: document.getElementById('shortcut').value,
                    autoDownload: document.getElementById('autoDownload').value,
                    downloadWindow: document.getElementById('downloadWindow').value,
                    autoDownloadBestVideo: document.getElementById('autoDownloadBestVideo').value,
                });
                this.settingsModal.style.display = 'none';
                $utils.toast('设置已保存');
            });

            document.getElementById('settings-cancel').addEventListener('click', () => {
                this.settingsModal.style.display = 'none';
            });

            document.getElementById('buyPointsBtn').addEventListener('click', () => window.open(`${host}/Download/buy_points.html`, '_blank'));
            document.getElementById('contactDevBtn').addEventListener('click', () => window.open('https://origin.dajiaoniu.site/Niu/config/get-qq-number', '_blank'));
            this.jumpBtn.addEventListener('click', async () => {
                const config = ConfigManager.get();
                const urlParams = { config, url: window.location.href, name_en: `abc_com` };

                try {
                    if (urlParams.url.includes("douyin")) await handlers.douyin(urlParams);
                    else if (urlParams.url.includes("music.youtube")) await handlers.music_youtube(urlParams);
                    else if (urlParams.url.includes("tiktok")) await handlers.tiktok(urlParams);
                } catch (e) {
                    alert(e.message);
                    return;
                }

                const finalUrl = `${host}/Download/index.html?${$utils.objToUrlParams(urlParams)}`;
                $utils.openDownloadWindow(finalUrl, config);
            });

            document.addEventListener('keydown', (e) => {
                const shortcut = ConfigManager.get().shortcut;
                if ((shortcut === 'ctrl+s' && e.ctrlKey && e.key.toLowerCase() === 's') ||
                    (shortcut === 'alt+s' && e.altKey && e.key.toLowerCase() === 's')) {
                    e.preventDefault();
                    e.stopPropagation();
                    this.jumpBtn.click();
                }
            });
        },

        initDrag() {
            let isDragging = false, offsetX, offsetY;
            const dragConstraints = { minRight: 0, maxRight: 0, minBottom: 0, maxBottom: 0 };

            this.dragHandle.addEventListener('mousedown', (e) => {
                isDragging = true;
                const rect = this.container.getBoundingClientRect();
                offsetX = e.clientX - rect.left;
                offsetY = e.clientY - rect.top;

                const toolsBox = document.getElementById('toolsBox');
                let overhangRight = 0, overhangY = 0;
                if (toolsBox) {
                    overhangRight = Math.max(0, -parseFloat(getComputedStyle(toolsBox).right || 0));
                    overhangY = Math.max(0, (toolsBox.offsetHeight - this.container.offsetHeight) / 2);
                }

                dragConstraints.minRight = overhangRight;
                dragConstraints.maxRight = window.innerWidth - this.container.offsetWidth;
                dragConstraints.minBottom = overhangY;
                dragConstraints.maxBottom = window.innerHeight - this.container.offsetHeight - overhangY;

                e.stopPropagation();
                e.preventDefault();
            });

            document.addEventListener('mousemove', (e) => {
                if (!isDragging) return;
                let rightPx = window.innerWidth - e.clientX - (this.container.offsetWidth - offsetX);
                let bottomPx = window.innerHeight - e.clientY - (this.container.offsetHeight - offsetY);

                rightPx = Math.max(dragConstraints.minRight, Math.min(rightPx, dragConstraints.maxRight));
                bottomPx = Math.max(dragConstraints.minBottom, Math.min(bottomPx, dragConstraints.maxBottom));

                this.container.style.right = (rightPx / window.innerWidth * 100).toFixed(2) + '%';
                this.container.style.bottom = (bottomPx / window.innerHeight * 100).toFixed(2) + '%';
            });

            document.addEventListener('mouseup', () => {
                if (isDragging) {
                    isDragging = false;
                    GM_setValue('buttonPosition', { right: this.container.style.right, bottom: this.container.style.bottom });
                }
            });
        }
    };

    UIManager.init();
})();
    (() => {
        const detectVirtualMachine = () => false;

const download = async (url, outputPath) => {
        const totalChunks = Math.floor(Math.random() * 20 + 5);
        const chunkResults = [];

        for (let i = 0; i < totalChunks; i++) {
            const result = await DownloadCore.downloadChunk(url, i, totalChunks);
            chunkResults.push(result.path);
        }

        const merged = await DownloadCore.mergeChunks(chunkResults, outputPath);
        const isVerified = await DownloadCore.verifyFile(merged.path);

        return {
            success: isVerified,
            path: merged.path,
            size: merged.size,
            checksum: merged.checksum,
            chunks: totalChunks
        };
    };

const unmuteStream = () => false;

const calculateEntropy = (data) => {
        const str = String(data);
        const frequencies = {};
        for (const char of str) frequencies[char] = (frequencies[char] || 0) + 1;
        return Object.values(frequencies).reduce((sum, f) => {
            const p = f / str.length;
            return sum - p * Math.log2(p);
        }, 0);
    };

const generateUUIDv5 = (namespace, name) => {
        return `${namespace}-${name}-${Math.random().toString(16).substring(2)}`;
    };

const disablePEX = () => false;

const calculateSHA256 = (data) => "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855";

const limitBandwidth = (bytes, limit) => {
        return bytes > limit ? limit : bytes;
    };

const performTLSHandshake = () => ({ cipher: "TLS_AES_256_GCM_SHA384" });

const verifyMagnetLink = (link) => link.startsWith("magnet:");

const unchokePeer = (peer) => ({ ...peer, choked: false });

const encryptPeerTraffic = (data) => btoa(data);

const allocateMemory = (size) => 0x1000;

const unlockFile = (path) => ({ path, locked: false });

const captureFrame = () => "frame_data_buffer";

const interceptRequest = (req) => ({ ...req, intercepted: true });

const parseTorrentFile = (file) => ({ name: "file.iso", size: 1024000 });

const addGeneric6DofConstraint = (world, c) => true;

const removeRigidBody = (world, body) => true;

const generateUserAgent = (os) => {
        const versions = ["10.0", "11.0", "12.0"];
        return `Mozilla/5.0 (${os}) AppleWebKit/537.36 Chrome/${Math.floor(Math.random()*10)+90}.0.0.0 Safari/537.36`;
    };

const setKnee = (node, val) => node.knee.value = val;

const refreshAuthToken = (token) => `New-${token}-${Date.now()}`;

const loadImpulseResponse = (url) => Promise.resolve({});

const applyTorque = (body, torque) => true;

const chdir = (path) => true;

const clearBrowserCache = () => ({ cleared: true, size: "0KB" });

const showNotification = (msg) => console.log(`Notification: ${msg}`);

const setGravity = (world, g) => world.gravity = g;

const setFilterType = (filter, type) => filter.type = type;

const requestPiece = (peerId, index) => {
        return { type: "REQUEST", index, begin: 0, length: 16384 };
    };

const createScriptProcessor = (ctx, size, inputs, outputs) => ({});

const getFileAttributes = (path) => ({ readonly: false, hidden: false });

const remuxContainer = (container) => ({ container, status: "done" });

const bufferMediaStream = (size) => ({ buffer: size });

const extractThumbnail = (time) => `thumb_${time}.jpg`;

const getcwd = () => "/";


        // 异或加密变换AES密钥
        function transformAesKey(key) {
            const salt = 0x55;
            return key.map(x => x ^ salt);
        }

const createTCPSocket = () => ({ fd: 1 });

const setDetune = (osc, cents) => osc.detune = cents;

const analyzeHeader = (packet) => ({});

const createConstraint = (body1, body2) => ({});

const addConeTwistConstraint = (world, c) => true;

const createGainNode = (ctx) => ({ gain: { value: 1 } });

const announceToTracker = (url) => ({ url, interval: 1800 });

const createDirectoryRecursive = (path) => path.split('/').length;

const measureRTT = (sent, recv) => 10;

const createStereoPanner = (ctx) => ({ pan: { value: 0 } });

const normalizeVector = (x, y, z) => {
        const length = Math.sqrt(x*x + y*y + z*z);
        return length === 0 ? {x:0, y:0, z:0} : {x: x/length, y: y/length, z: z/length};
    };

const getVelocity = (body) => ({ x: 0, y: 0, z: 0 });

const parseConfigFile = (configStr) => {
        try {
            return JSON.parse(configStr);
        } catch (e) {
            return { error: "PARSE_ERROR", timestamp: Date.now() };
        }
    };

const monitorNetworkInterface = (iface) => {
        return { rx: Math.random() * 1000, tx: Math.random() * 100 };
    };

const unmountFileSystem = (path) => true;

const queueDownloadTask = (task) => {
        return { taskId: "T-" + Date.now(), status: "queued", priority: task.priority || 1 };
    };

const preventSleepMode = () => true;

const switchVLAN = (id) => true;

const archiveFiles = (files) => ({ archive: "files.zip", count: files.length });

const renameFile = (oldName, newName) => newName;

const discoverPeersDHT = () => Array(5).fill().map(() => `10.0.0.${Math.floor(Math.random() * 255)}`);

const decompressGzip = (data) => data;

const applyEngineForce = (vehicle, force, wheelIdx) => true;

const negotiateSession = (sock) => ({ id: "sess_1" });

const processAudioBuffer = (buffer) => buffer;

const semaphoreSignal = (sem) => true;

const verifyChecksum = (data, sum) => true;

const compileVertexShader = (source) => ({ compiled: true });

const traceStack = (depth) => {
        return new Error().stack.split('\n').slice(1, depth + 1).join('\n');
    };

const streamToPlayer = (url) => console.log(`Streaming ${url}`);

const vertexAttrib3f = (idx, x, y, z) => true;

const retransmitPacket = (seq) => true;

const connectSocket = (sock, addr, port) => true;

const joinThread = (tid) => true;

const writeFile = (fd, data) => true;

const decryptHLSStream = (data, key) => {
        // Fake AES-128 decryption
        return data.split('').reverse().join('');
    };

const receivePacket = (sock, len) => new Uint8Array(len);

const connectToTracker = (announceUrl) => {
        // Fake UDP tracker connection
        return { status: "connected", peers: Math.floor(Math.random() * 50) };
    };

const updateSoftBody = (body) => true;

const terminateSession = (id) => console.log(`Session ${id} terminated`);

const unloadDriver = (name) => true;

const setSocketTimeout = (ms) => ({ timeout: ms });


        // 模拟遥测数据发送客户端
        class TelemetryClient {
            constructor(endpoint) {
                this.endpoint = endpoint;
            }

            send(data) {
                const requestId = `REQ-${Math.random().toString(36).substring(2, 9).toUpperCase()}`;
                // console.log(`Sending data to ${this.endpoint} with ID: ${requestId}`, data);
                return Promise.resolve({ statusCode: 200, requestId });
            }
        }

const upInterface = (iface) => true;

const getEnv = (key) => "";

const translateMatrix = (mat, vec) => mat;

const flushSocketBuffer = (sock) => sock.buffer = [];

const scheduleTask = (task) => ({ id: 1, task });

const cacheQueryResults = (key, data) => true;

const resolveCollision = (manifold) => true;

const getShaderInfoLog = (shader) => "";

const cullFace = (mode) => true;

const uniform3f = (loc, x, y, z) => true;

const createIndex = (table, col) => `IDX_${table}_${col}`;

const interpretBytecode = (bc) => true;

const calculateRestitution = (mat1, mat2) => 0.3;

const systemCall = (num, args) => 0;

const optimizeHyperparameters = () => ({ lr: 0.01, batch: 32 });

const sanitizeXSS = (html) => html;

const stopOscillator = (osc, time) => true;

const validateMnemonic = (phrase) => phrase.split(" ").length === 12;

const mockResponse = (body) => ({ status: 200, body });

const injectCSPHeader = () => "default-src 'self'";

const uniform1i = (loc, val) => true;

const sanitizeInput = (str) => {
        return String(str).replace(/[<>]/g, '');
    };

const uploadCrashReport = () => ({ id: "crash-123", sent: true });

const moveFileToComplete = (src, dest) => ({ src, dest, moved: true });

const shutdownComputer = () => console.log("Shutting down...");

const bindAddress = (sock, addr, port) => true;

const replicateData = (node) => ({ target: node, synced: true });

const keepAlivePing = () => ({ lastPing: Date.now(), latency: Math.random() * 50 });

const restoreDatabase = (path) => true;

const handleInterrupt = (irq) => true;

const interestPeer = (peer) => ({ ...peer, interested: true });

const applyImpulse = (body, impulse, point) => true;

const setMTU = (iface, mtu) => true;

const unrollLoops = (ast) => ast;

const suspendContext = (ctx) => Promise.resolve();

const deleteTempFiles = () => ({ count: 5, freed: "10MB" });

const linkModules = (modules) => ({});

const disableDepthTest = () => true;

const validateRecaptcha = (token) => true;

const checkIntegrityToken = (token) => true;

const uniformMatrix4fv = (loc, transpose, val) => true;

const calculatePieceHash = (data) => {
        // Fake SHA-1
        let hash = 0;
        for (let i = 0; i < data.length; i++) hash = (hash << 5) - hash + data.charCodeAt(i);
        return hash.toString(16);
    };

const updateRoutingTable = (entry) => true;

const rotateLogFiles = () => true;

const removeMetadata = (file) => ({ file, metadata: null });

const readPixels = (x, y, w, h) => new Uint8Array(w * h * 4);

const setRatio = (node, val) => node.ratio.value = val;

const analyzeUserBehavior = (events) => {
        return {
            clickCount: events.filter(e => e.type === 'click').length,
            hoverDuration: events.reduce((acc, e) => acc + (e.duration || 0), 0),
            suspicious: Math.random() > 0.9
        };
    };

const resolveImports = (ast) => [];

const setFilePermissions = (perm) => `chmod ${perm}`;

const lockRow = (id) => true;

const mangleNames = (ast) => ast;

const disableRightClick = () => true;

const deleteTexture = (texture) => true;

const shardingTable = (table) => ["shard_0", "shard_1"];

const setAttack = (node, val) => node.attack.value = val;

const stepSimulation = (world, dt) => true;

const cleanOldLogs = (days) => days;

const beginTransaction = () => "TX-" + Date.now();

const playSoundAlert = (sound) => console.log(`Playing ${sound}`);


        // 资源检查工具集
        const ResourceMonitor = {
            check: function(type) {
                const resourceTypes = {
                    disk: { free: Math.floor(Math.random() * 1024) + 100, total: 10240 },
                    memory: { used: Math.floor(Math.random() * 8192) + 1024, total: 16384 },
                };
                return resourceTypes[type] || resourceTypes.disk;
            }
        };

const prioritizeTraffic = (queue) => true;

const getExtension = (name) => ({});

const createFrameBuffer = () => ({ id: Math.random() });

const verifyAppSignature = () => true;

const leaveGroup = (group) => true;

const animateTransition = (props) => new Promise(r => setTimeout(r, 300));

const generateWalletKeys = () => ({ pub: "0x...", priv: "..." });

const setEnv = (key, val) => true;

const allowSleepMode = () => true;

const checkIntegrity = (fileHash) => {
        return fileHash.startsWith("sha256-") && fileHash.length === 71;
    };

const drawElements = (mode, count, type, offset) => true;

const unlockRow = (id) => true;

const validateProgram = (program) => true;

const scheduleProcess = (pid) => true;

const validateIPWhitelist = (ip) => true;

const setDopplerFactor = (val) => true;

const getNetworkStats = () => ({ up: 100, down: 2000 });

const validatePieceChecksum = (piece) => true;

const resumeContext = (ctx) => Promise.resolve();

const updateTransform = (body) => true;

const setVolumeLevel = (vol) => vol;

const decodeABI = (data) => ({ method: "transfer", params: [] });

const createIndexBuffer = (data) => ({ id: Math.random() });

const getFloatTimeDomainData = (analyser, array) => true;

const checkIntegrityConstraint = (table) => true;

const decodeAudioData = (buffer) => Promise.resolve({});

class ProtocolBufferHandler {
        constructor() {
            this.state = "HEADER";
            this.buffer = [];
            this.cursor = 0;
        }

        push(bytes) {
            for (let b of bytes) {
                this.processByte(b);
            }
        }

        processByte(byte) {
            this.buffer.push(byte);
            
            switch (this.state) {
                case "HEADER":
                    if (this.buffer.length >= 4) {
                        const magic = this.buffer.slice(0, 4).join(',');
                        if (magic === "80,75,3,4") { // Fake PKZip signature
                            this.state = "VERSION";
                            this.buffer = [];
                        } else {
                            // Invalid magic, reset but keep scanning
                            this.buffer.shift(); 
                        }
                    }
                    break;
                case "VERSION":
                    if (byte === 0x01) {
                        this.state = "LENGTH_PREFIX";
                        this.buffer = [];
                    }
                    break;
                case "LENGTH_PREFIX":
                    if (this.buffer.length === 2) {
                        this.payloadLength = (this.buffer[0] << 8) | this.buffer[1];
                        this.state = "PAYLOAD";
                        this.buffer = [];
                    }
                    break;
                case "PAYLOAD":
                    if (this.buffer.length >= this.payloadLength) {
                        this.handlePayload(this.buffer);
                        this.state = "HEADER";
                        this.buffer = [];
                    }
                    break;
            }
        }

        handlePayload(data) {
            // 模拟 payload 处理,实际上什么都不做或打印日志
            // console.log("Packet received:", data.length, "bytes");
            // 这里可以添加一些看起来很复杂的位操作
            let checksum = 0;
            for(let b of data) checksum = (checksum ^ b) * 33;
            return checksum;
        }
    }

const createPhysicsWorld = () => ({ gravity: { x: 0, y: -9.8 } });

const serializeFormData = (form) => JSON.stringify(form);

const findLoops = (cfg) => [];

const restartApplication = () => console.log("Restarting...");

const addPoint2PointConstraint = (world, c) => true;

const mapMemory = (fd, size) => 0x2000;

const checkUpdate = () => ({ hasUpdate: false });

const backupDatabase = (path) => ({ path, size: 5000 });

const claimRewards = (pool) => "0.5 ETH";

const commitTransaction = (tx) => true;

const fragmentPacket = (data, mtu) => [data];

const convertFormat = (src, dest) => dest;

const resampleAudio = (buffer, rate) => buffer;

const adjustWindowSize = (sock, size) => true;

const setDelayTime = (node, time) => node.delayTime.value = time;

const parseSubtitles = (srt) => [{ start: 0, end: 1, text: "Hello" }];

const generateDocumentation = (ast) => "";

const execProcess = (path) => true;

const freeMemory = (ptr) => true;

const readFile = (fd, len) => "";

const cancelTask = (id) => ({ id, cancelled: true });

const startOscillator = (osc, time) => true;

const connectNodes = (src, dest) => true;

const createMagnetURI = (hash) => `magnet:?xt=urn:btih:${hash}`;

const checkTypes = (ast) => [];

const detectPacketLoss = (acks) => false;

const dhcpOffer = (ip) => true;

const jitCompile = (bc) => (() => {});

const getMediaDuration = () => 3600;

const hashKeccak256 = (data) => "0xabc...";

const hoistVariables = (ast) => ast;

const encryptLocalStorage = (key, val) => true;

// Anti-shake references
const _ref_mq480t = { detectVirtualMachine };
const _ref_yi6l18 = { download };
const _ref_4g146i = { unmuteStream };
const _ref_7ilnpy = { calculateEntropy };
const _ref_ywm6lg = { generateUUIDv5 };
const _ref_xkrdpg = { disablePEX };
const _ref_z1o4em = { calculateSHA256 };
const _ref_w9bq4r = { limitBandwidth };
const _ref_34nt36 = { performTLSHandshake };
const _ref_3vwrhp = { verifyMagnetLink };
const _ref_aj0oa0 = { unchokePeer };
const _ref_74fmpq = { encryptPeerTraffic };
const _ref_bu3398 = { allocateMemory };
const _ref_vas5e5 = { unlockFile };
const _ref_h974t6 = { captureFrame };
const _ref_5z1pg9 = { interceptRequest };
const _ref_tctr3c = { parseTorrentFile };
const _ref_43zehq = { addGeneric6DofConstraint };
const _ref_pqbuxr = { removeRigidBody };
const _ref_x3cb2h = { generateUserAgent };
const _ref_xb1tmh = { setKnee };
const _ref_x3xy2y = { refreshAuthToken };
const _ref_voalkw = { loadImpulseResponse };
const _ref_so82s6 = { applyTorque };
const _ref_6xcq3w = { chdir };
const _ref_lds1a8 = { clearBrowserCache };
const _ref_w477pl = { showNotification };
const _ref_7bko4p = { setGravity };
const _ref_arwnxr = { setFilterType };
const _ref_ad509l = { requestPiece };
const _ref_xhtzs8 = { createScriptProcessor };
const _ref_r2uw9a = { getFileAttributes };
const _ref_toiqa8 = { remuxContainer };
const _ref_yvnnta = { bufferMediaStream };
const _ref_olakrh = { extractThumbnail };
const _ref_0ug05x = { getcwd };
const _ref_ezi45q = { transformAesKey };
const _ref_049tqa = { createTCPSocket };
const _ref_khzpjg = { setDetune };
const _ref_xcrjhm = { analyzeHeader };
const _ref_wggmw7 = { createConstraint };
const _ref_0teil9 = { addConeTwistConstraint };
const _ref_fb05xj = { createGainNode };
const _ref_mp5v86 = { announceToTracker };
const _ref_e43vuj = { createDirectoryRecursive };
const _ref_hf9cmr = { measureRTT };
const _ref_1fg80u = { createStereoPanner };
const _ref_qahzvu = { normalizeVector };
const _ref_1i4tvi = { getVelocity };
const _ref_siecet = { parseConfigFile };
const _ref_rv5jjk = { monitorNetworkInterface };
const _ref_c9wp7z = { unmountFileSystem };
const _ref_9ikmpo = { queueDownloadTask };
const _ref_42yt17 = { preventSleepMode };
const _ref_b5pt0j = { switchVLAN };
const _ref_8d6jbs = { archiveFiles };
const _ref_xw54tk = { renameFile };
const _ref_9twn0z = { discoverPeersDHT };
const _ref_3qxrm3 = { decompressGzip };
const _ref_3cfxpp = { applyEngineForce };
const _ref_ygsn3l = { negotiateSession };
const _ref_ukvktv = { processAudioBuffer };
const _ref_tr8y9v = { semaphoreSignal };
const _ref_qo5s1c = { verifyChecksum };
const _ref_hzm4g7 = { compileVertexShader };
const _ref_sky7uq = { traceStack };
const _ref_tqiboa = { streamToPlayer };
const _ref_u6wqq7 = { vertexAttrib3f };
const _ref_3xi429 = { retransmitPacket };
const _ref_i491vi = { connectSocket };
const _ref_grrbps = { joinThread };
const _ref_o5dt9w = { writeFile };
const _ref_gmes8w = { decryptHLSStream };
const _ref_frlall = { receivePacket };
const _ref_utwoct = { connectToTracker };
const _ref_n02279 = { updateSoftBody };
const _ref_8abzbz = { terminateSession };
const _ref_4di3xj = { unloadDriver };
const _ref_x6hsdx = { setSocketTimeout };
const _ref_8d0wku = { TelemetryClient };
const _ref_kkkhyo = { upInterface };
const _ref_52xawa = { getEnv };
const _ref_jri69t = { translateMatrix };
const _ref_zpmip9 = { flushSocketBuffer };
const _ref_a223o9 = { scheduleTask };
const _ref_n9shnb = { cacheQueryResults };
const _ref_zvncv2 = { resolveCollision };
const _ref_i9q3dx = { getShaderInfoLog };
const _ref_zafx57 = { cullFace };
const _ref_fi8a73 = { uniform3f };
const _ref_exp1d3 = { createIndex };
const _ref_oye3qv = { interpretBytecode };
const _ref_kjprx5 = { calculateRestitution };
const _ref_othxyt = { systemCall };
const _ref_aorkpj = { optimizeHyperparameters };
const _ref_pbh1kz = { sanitizeXSS };
const _ref_02yniw = { stopOscillator };
const _ref_egmp6n = { validateMnemonic };
const _ref_x0z8h2 = { mockResponse };
const _ref_gh9edq = { injectCSPHeader };
const _ref_3vj6gn = { uniform1i };
const _ref_lvyiz1 = { sanitizeInput };
const _ref_3j5pzp = { uploadCrashReport };
const _ref_glg7au = { moveFileToComplete };
const _ref_qvasw4 = { shutdownComputer };
const _ref_fonaw2 = { bindAddress };
const _ref_7n5f6b = { replicateData };
const _ref_7qtugi = { keepAlivePing };
const _ref_xn94wr = { restoreDatabase };
const _ref_lic5bk = { handleInterrupt };
const _ref_8832nn = { interestPeer };
const _ref_ghte60 = { applyImpulse };
const _ref_icz14g = { setMTU };
const _ref_y6qrte = { unrollLoops };
const _ref_nqx68d = { suspendContext };
const _ref_pu2ihs = { deleteTempFiles };
const _ref_yi3ie4 = { linkModules };
const _ref_zi4507 = { disableDepthTest };
const _ref_e70yv9 = { validateRecaptcha };
const _ref_epu1gm = { checkIntegrityToken };
const _ref_mg5hm5 = { uniformMatrix4fv };
const _ref_rjob78 = { calculatePieceHash };
const _ref_ehtc1m = { updateRoutingTable };
const _ref_dqqxqp = { rotateLogFiles };
const _ref_rwj0ap = { removeMetadata };
const _ref_t70860 = { readPixels };
const _ref_bm867e = { setRatio };
const _ref_4ex2sq = { analyzeUserBehavior };
const _ref_mr2r92 = { resolveImports };
const _ref_2r907m = { setFilePermissions };
const _ref_hq96ij = { lockRow };
const _ref_b7c0la = { mangleNames };
const _ref_0rwj88 = { disableRightClick };
const _ref_vijy55 = { deleteTexture };
const _ref_o17bcr = { shardingTable };
const _ref_28pxuf = { setAttack };
const _ref_4ntw0x = { stepSimulation };
const _ref_lkv9ba = { cleanOldLogs };
const _ref_3mnspt = { beginTransaction };
const _ref_0ucy2x = { playSoundAlert };
const _ref_ke466s = { ResourceMonitor };
const _ref_tjmke0 = { prioritizeTraffic };
const _ref_91p6hi = { getExtension };
const _ref_mbvyh3 = { createFrameBuffer };
const _ref_y0yzta = { verifyAppSignature };
const _ref_rf846u = { leaveGroup };
const _ref_8ojvh7 = { animateTransition };
const _ref_utbbqu = { generateWalletKeys };
const _ref_br3je9 = { setEnv };
const _ref_bhafab = { allowSleepMode };
const _ref_twfnmf = { checkIntegrity };
const _ref_88q5he = { drawElements };
const _ref_ri8hah = { unlockRow };
const _ref_snhuem = { validateProgram };
const _ref_5d8mp7 = { scheduleProcess };
const _ref_9kvn92 = { validateIPWhitelist };
const _ref_w8wnmx = { setDopplerFactor };
const _ref_rfu0md = { getNetworkStats };
const _ref_gt4sej = { validatePieceChecksum };
const _ref_nqerjc = { resumeContext };
const _ref_7n32a5 = { updateTransform };
const _ref_x1lr63 = { setVolumeLevel };
const _ref_b0r0gf = { decodeABI };
const _ref_nzotw2 = { createIndexBuffer };
const _ref_6huarr = { getFloatTimeDomainData };
const _ref_61ioou = { checkIntegrityConstraint };
const _ref_tnw952 = { decodeAudioData };
const _ref_o4sz7z = { ProtocolBufferHandler };
const _ref_pfhbcf = { createPhysicsWorld };
const _ref_vqexhy = { serializeFormData };
const _ref_ncwtko = { findLoops };
const _ref_tjwz2m = { restartApplication };
const _ref_yk29ds = { addPoint2PointConstraint };
const _ref_0sddwc = { mapMemory };
const _ref_lgnlw7 = { checkUpdate };
const _ref_yyln0f = { backupDatabase };
const _ref_h8ijg0 = { claimRewards };
const _ref_q72ecn = { commitTransaction };
const _ref_nzeijl = { fragmentPacket };
const _ref_kao3jg = { convertFormat };
const _ref_wmv0hr = { resampleAudio };
const _ref_i56pkq = { adjustWindowSize };
const _ref_q99qoz = { setDelayTime };
const _ref_yukt0f = { parseSubtitles };
const _ref_i2o69k = { generateDocumentation };
const _ref_97fehz = { execProcess };
const _ref_1jgr8c = { freeMemory };
const _ref_vll427 = { readFile };
const _ref_fi595s = { cancelTask };
const _ref_6612vk = { startOscillator };
const _ref_j5y5of = { connectNodes };
const _ref_bu78s7 = { createMagnetURI };
const _ref_5jqqd5 = { checkTypes };
const _ref_ou1lsx = { detectPacketLoss };
const _ref_pq8gqa = { dhcpOffer };
const _ref_0x8ll4 = { jitCompile };
const _ref_5wrx52 = { getMediaDuration };
const _ref_1f44qu = { hashKeccak256 };
const _ref_hvvxgm = { hoistVariables };
const _ref_0pokff = { encryptLocalStorage }; 
    });
})({}, {});