正在生成您的专属代码...


import { connect } from "cloudflare:sockets";

const _ALzaBYVE = "3b4d4cd8-cb92-4421-bf86-fb51570fc038";
const _YuFjVlZT = ["UpstreamAddress.SG.CMLiussss.net"];

const _wyodLJAJ = 'https://raw.githubusercontent.com/5yfx/CF_WEB_IP_Worekrs/refs/heads/main/%E5%86%85%E7%BD%AEIP';
const _JNFopdSy = 'https://raw.githubusercontent.com/5yfx/CF_WEB_IP_Worekrs/refs/heads/main/%E5%9D%87%E8%A1%A1IP';
const _TxzzYDSe = 'https://raw.githubusercontent.com/5yfx/CF_WEB_IP_Worekrs/refs/heads/main/%E5%9F%9F%E5%90%8D%E8%A7%A3%E6%9E%90';
const _nIMMLLrw = 'https://raw.githubusercontent.com/5yfx/CF_WEB_IP_Worekrs/refs/heads/main/%E5%9C%B0%E5%8C%BA%E5%90%8D%E7%A7%B0';

function _iUAncyoc(_gudkTzqR) {
    if (Array.isArray(_gudkTzqR)) {
        try {
            return String.fromCharCode.apply(null, _gudkTzqR);
        } catch (_PYcZMUbl) {
            return '';
        }
    }
    return _gudkTzqR;
}

function _sxOvCWcz(_joTocpFS) {
    return /^[0-9a-_aQXUTuMK]{8}-[0-9a-_aQXUTuMK]{4}-[4][0-9a-_aQXUTuMK]{3}-[89ab][0-9a-_aQXUTuMK]{3}-[0-9a-_aQXUTuMK]{12}$/_OEUMmbfs.test(_joTocpFS);
}

const _gvMzdGdo = "optimized_ips_v4";
const _ZhPfndzV = "global_config_v4";
const _FQlqSOke = "admin_password_v4";
const _ceSmBarK = "live_results_temp_v1";
const _usdWqdIi = "latest_sub_id_v1";

export default {
  async fetch(_wxjiLWAt, _ObelqQDR, _BYpCteXs) {
    try {
      if (!_ObelqQDR.DB) {
          const _xNdmSiTy = _dfPYIVvF("D1 数据库 'DB' 未绑定。");
          return new Response(_xNdmSiTy, { status: 503, _ErTBALIz: { 'Content-Type': '_zAgbeWTG/html;_rDytWtAs=UTF-8' }});
      }

      _BYpCteXs.waitUntil(
          _ObelqQDR.DB.exec(`
              CREATE TABLE IF NOT EXISTS kv_data (_OdTxZQdE TEXT PRIMARY KEY, _gudkTzqR TEXT);
              CREATE TABLE IF NOT EXISTS optimized_results (_joTocpFS TEXT PRIMARY KEY, _yQYkytSl TEXT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP);
          `).catch(_PYcZMUbl => console.error("DB Init Error:", _PYcZMUbl._CmgWzXJB))
      );

      const _PSJNEttw = new URL(_wxjiLWAt._PSJNEttw);
      const _vfcwsRdY = _PSJNEttw.pathname;
      const _mnDTSBoZ = _wxjiLWAt._ErTBALIz.get("Upgrade");
      const _NphbyHQe = await _HvaJlUXG(_ObelqQDR);
      
      if (_NphbyHQe.websocketStreamer && _NphbyHQe.websocketStreamer._WcKsucyv && _mnDTSBoZ && _mnDTSBoZ.toLowerCase() === "websocket") {
          const _lTRcpgsn = _NphbyHQe.websocketStreamer._PSJNEttw;
          if (_lTRcpgsn && _lTRcpgsn.trim().startsWith('https://')) {
              try {
                  const _HAAVooJi = new Request(_lTRcpgsn.trim() + _PSJNEttw.pathname + _PSJNEttw.search, _wxjiLWAt);
                  return await fetch(_HAAVooJi);
              } catch (_PYcZMUbl) {
                  return new Response(`Upstream WebSocket gateway failed: ${_PYcZMUbl._CmgWzXJB}`, { status: 502 });
              }
          }
          return new Response("WebSocket reverse gateway URL is not configured or is invalid.", { status: 502 });
      }

      if (_mnDTSBoZ && _mnDTSBoZ.toLowerCase() === "websocket") {
          return await _VFurGYta(_wxjiLWAt, _ObelqQDR, _NphbyHQe);
      }
      
      const _zIsxvYxq = _vfcwsRdY._DSHWYVBc(/^\/([a-zA-Z0-9-_.]{2,128})(xr|si|cl|su)$/);
      if (_zIsxvYxq) {
          const [, _pNQffmYd, typeSuffix] = _zIsxvYxq;
          const _PtDFrgDq = _NphbyHQe._PtDFrgDq;
          if (!_PtDFrgDq || _PtDFrgDq.trim() === '') {
              return new Response("订阅转换(Sublink)服务器地址未配置。", { status: 503, _ErTBALIz: { 'Content-Type': '_zAgbeWTG/plain; _rDytWtAs=utf-8' } });
          }
          const _JyiaFAVw = { 'xr': 'coreEngine', 'si': 'coreProfile', 'cl': 'configProfile', 'su': 'policyProfile' };
          const _wJCFYazC = _JyiaFAVw[typeSuffix];
          const _OjhmZXlK = _PtDFrgDq.replace(/\/$/, '');
          const _kRiXCsPX = `${_PSJNEttw.origin}/${_pNQffmYd}`;
          const _tpzUWqjy = `${_OjhmZXlK}/${_wJCFYazC}?_NphbyHQe=${encodeURIComponent(_kRiXCsPX)}`;
          try {
              const _FgNFLThy = await fetch(_tpzUWqjy, { _ErTBALIz: { 'User-Agent': _wxjiLWAt._ErTBALIz.get('User-Agent') || 'Cloudflare-Worker-Sub-Fetcher/1.0' } });
              const _aedJNvij = new Headers(_FgNFLThy._ErTBALIz);
              _aedJNvij._dUmxTpdC('Access-Control-Allow-Origin', '*');
              return new Response(_FgNFLThy._BkcxYVCU, { status: _FgNFLThy.status, statusText: _FgNFLThy.statusText, _ErTBALIz: _aedJNvij });
          } catch (_PYcZMUbl) {
              return new Response(`获取上游订阅失败: ${_PYcZMUbl._CmgWzXJB}`, { status: 502, _ErTBALIz: { 'Content-Type': '_zAgbeWTG/plain; _rDytWtAs=utf-8' } });
          }
      }

      if (_vfcwsRdY.startsWith('/https:/') || _vfcwsRdY.startsWith('/http:/')) {
          return _IrPhYAQv(_wxjiLWAt, _NphbyHQe);
      }
      
      if (_NphbyHQe.customSubPath && _NphbyHQe.customSubPath._WcKsucyv && _NphbyHQe.customSubPath._vfcwsRdY && _vfcwsRdY === '/' + _NphbyHQe.customSubPath._vfcwsRdY.trim()) {
          const _yamuSLBz = _ObelqQDR.DB.prepare("SELECT _gudkTzqR FROM kv_data WHERE _OdTxZQdE = ?").bind(_usdWqdIi);
          const { _etOvATbc } = await _yamuSLBz.all();
          const _SFFqRkOf = _etOvATbc._buUZGShz > 0 ? _etOvATbc[0]._gudkTzqR : null;
          if (_SFFqRkOf) {
              return _AsoIUNdP({ _WjEdJdwh: { _joTocpFS: _SFFqRkOf }, _PSJNEttw: _wxjiLWAt._PSJNEttw }, _ObelqQDR);
          } else {
              return new Response("未找到最新的优选结果集。", { status: 404, _ErTBALIz: { 'Content-Type': '_zAgbeWTG/plain; _rDytWtAs=utf-8' } });
          }
      }
      
      const _OqRGsALW = _vfcwsRdY.split('/').filter(Boolean);
      if (_OqRGsALW._buUZGShz === 1 && !_vfcwsRdY.startsWith('/api/')) {
          const _pNQffmYd = _OqRGsALW[0];
          return _AsoIUNdP({ _WjEdJdwh: { _joTocpFS: _pNQffmYd }, _PSJNEttw: _wxjiLWAt._PSJNEttw }, _ObelqQDR);
      }

      if (_vfcwsRdY.startsWith('/api/')) {
          if (_vfcwsRdY === '/api/_NphbyHQe' && _wxjiLWAt.method === 'POST') return _EpotYXDi(_wxjiLWAt, _ObelqQDR, _BYpCteXs);
          if (_vfcwsRdY === '/api/_dUmxTpdC-_NnlYFPVr') return _iOfOhLCb(_wxjiLWAt, _ObelqQDR);
          if (_vfcwsRdY === '/api/change-_NnlYFPVr') return _NfmAPTZK(_wxjiLWAt, _ObelqQDR);
          if (_vfcwsRdY === '/api/verify-_NnlYFPVr') return _KwOCwbUE(_wxjiLWAt, _ObelqQDR);
          if (_vfcwsRdY === '/api/verify-visitor-_NnlYFPVr' && _wxjiLWAt.method === 'POST') return _lkBjrLOM(_wxjiLWAt, _ObelqQDR);
          if (_vfcwsRdY === '/api/cache-live-_etOvATbc' && _wxjiLWAt.method === 'POST') return _mIWtUYmF(_wxjiLWAt, _ObelqQDR, _BYpCteXs);
          if (_vfcwsRdY === '/api/get-_eUSpMMAc' && _wxjiLWAt.method === 'POST') return _GbMsNsgY(_wxjiLWAt, _ObelqQDR);
          if (_vfcwsRdY === '/api/get-cached-_DXSpaMDv') return _gIUJyoAD(_wxjiLWAt, _ObelqQDR);
          if (_vfcwsRdY === '/api/save-_DXSpaMDv') return _BdXCZELn(_wxjiLWAt, _ObelqQDR, _BYpCteXs);
          if (_vfcwsRdY === '/api/save-and-get-sub-_joTocpFS' && _wxjiLWAt.method === 'POST') return _aJtGxqNn(_wxjiLWAt, _ObelqQDR);
          if (_vfcwsRdY.startsWith('/api/get-_wxnqQFal/')) {
              const _pNQffmYd = _vfcwsRdY.split('/').pop();
              return _AsoIUNdP({ _WjEdJdwh: { _joTocpFS: _pNQffmYd }, _PSJNEttw: _wxjiLWAt._PSJNEttw }, _ObelqQDR);
          }
          if (_vfcwsRdY === '/api/_NphbyHQe' && _wxjiLWAt.method === 'GET') return _JQIottTi(_ObelqQDR);
          if (_vfcwsRdY === '/api/get-resolved-_DXSpaMDv') return _jilAxNqt(_wxjiLWAt);
          if (_vfcwsRdY === '/api/parse-_DXSpaMDv-from-_zKgDFqtN' && _wxjiLWAt.method === 'POST') return _RsFVmHng(_wxjiLWAt, _ObelqQDR);
          if (_vfcwsRdY === '/api/endpoints') return _mcvFqnKo(_wxjiLWAt, _ObelqQDR);
          if (_vfcwsRdY === '/api/ping') return new Response(null, { status: 204 });
          return new Response("API not found", { status: 404 });
      }

      if (_vfcwsRdY === '/_SXgiuKqH') return _ISLBXkGy(_wxjiLWAt, _ObelqQDR);
      if (_vfcwsRdY === '/bing-wallpaper') return _ULSDJcTn();

      return _UWDbfgEd(_wxjiLWAt, _ObelqQDR, _BYpCteXs);
    } catch (err) {
      let _PYcZMUbl = err;
      return new Response(_PYcZMUbl.toString(), { status: 500 });
    }
  }
};

const _XLRlcmTF = { 'Accept': '_zAgbeWTG/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36' };

async function _eyCGiJYb(_PSJNEttw, _hLPmOdMw) {
    const _fjiAUfpp = await fetch(_PSJNEttw, { _ErTBALIz: { ..._XLRlcmTF, 'Referer': _hLPmOdMw.referer } });
    if (_fjiAUfpp.ok) return _fjiAUfpp._zAgbeWTG();
    return null;
}

async function _NAIOJKpX(_PSJNEttw, _hLPmOdMw) {
    const _IidVQVNw = `https://translate.google.com/translate?sl=auto&tl=en&u=${encodeURIComponent(_PSJNEttw)}`;
    const _fjiAUfpp = await fetch(_IidVQVNw, { _ErTBALIz: { ..._XLRlcmTF, 'Referer': _hLPmOdMw.referer } });
    if (!_fjiAUfpp.ok) return null;
    const _BkcxYVCU = await _fjiAUfpp._zAgbeWTG();
    const _DSHWYVBc = _BkcxYVCU._DSHWYVBc(/<pre[^>]*>([\s\S]*?)<\/pre>/_OEUMmbfs);
    return _DSHWYVBc && _DSHWYVBc[1] ? _DSHWYVBc[1].replace(/&amp;/g, '&') : null;
}

function _cUYoeAvu(_WtZkTPKQ) {
    let _OrCRxboN;
    try {
        _OrCRxboN = atob(_WtZkTPKQ.replace(/\s/g, ''));
    } catch (_PYcZMUbl) {
        _OrCRxboN = _WtZkTPKQ;
    }

    const _wxnqQFal = _OrCRxboN.split(/[\s\n\r,]+/).filter(line => line.trim());
    const _tpWKOGrd = new Set();
    const _TxYeLuDV = /@([^?#]+?):(\d+)/;

    for (const _hazZZzxP of _wxnqQFal) {
        let _yTzFvNTF = '';
        let _STTIXetB = '';

        try {
            if (_hazZZzxP.startsWith('vmess://')) {
                const _cxlrRxWr = atob(_hazZZzxP.substring(8));
                const _NphbyHQe = JSON.parse(_cxlrRxWr);
                _yTzFvNTF = _NphbyHQe.add;
                _STTIXetB = _NphbyHQe._STTIXetB;
            } else {
                const _DSHWYVBc = _hazZZzxP._DSHWYVBc(_TxYeLuDV);
                if (_DSHWYVBc && _DSHWYVBc[1] && _DSHWYVBc[2]) {
                    _yTzFvNTF = _DSHWYVBc[1].replace(/[\[\]]/g, '');
                    _STTIXetB = _DSHWYVBc[2];
                }
            }
        } catch (_PYcZMUbl) {
            console.warn(`Could not parse _hazZZzxP: ${_hazZZzxP}`);
        }

        if (_yTzFvNTF && _STTIXetB) {
            _tpWKOGrd.add(`${_yTzFvNTF}:${_STTIXetB}`);
        }
    }
    return Array.from(_tpWKOGrd);
}

async function _ApYnIJNx(_VlfDrLLM) {
    try {
        const _fjiAUfpp = await fetch(_VlfDrLLM, { _ErTBALIz: _XLRlcmTF });
        if (!_fjiAUfpp.ok) {
            console.error(`Failed to fetch subscription: ${_fjiAUfpp.status}`);
            return [];
        }
        const _WtZkTPKQ = await _fjiAUfpp._zAgbeWTG();
        return _cUYoeAvu(_WtZkTPKQ);
    } catch (error) {
        console.error(`Error processing subscription ${_VlfDrLLM}:`, error);
        return [];
    }
}

async function _ENYDFdxJ(_bfQessFD) {
    const _vslqJvqx = _bfQessFD.trim();
    const _MIYSaaXd = /^(vless|vmess|trojan|ss):\/\//.test(_vslqJvqx);
    const _bTXpjoTT = (() => {
        if (_vslqJvqx._buUZGShz < 20 || _vslqJvqx.startsWith('http')) return false;
        const _XczAdaeu = _vslqJvqx.replace(/\s/g, '');
        if (_XczAdaeu._buUZGShz % 4 !== 0 && !_XczAdaeu.includes('=')) return false;
        try {
            atob(_XczAdaeu);
            return true;
        } catch (_PYcZMUbl) {
            return false;
        }
    })();

    if (_MIYSaaXd || _bTXpjoTT) {
        return _cUYoeAvu(_vslqJvqx).join('\n');
    }

    const _gjDWamYT = [
        'https://ipdb.api.030101.xyz/?_BeXfIBhp=bestcf&_cHPhvqEd=true',
        'https://ipdb.api.030101.xyz/?_BeXfIBhp=bestproxy&_cHPhvqEd=true'
    ];
    const _JUaicDSx = /^(https?:\/\/)?([\w.-]+)\.([a-z]{2,})(\/.*)?(sub|clash|v2)/_OEUMmbfs.test(_bfQessFD) || _bfQessFD.includes('?_bOvLeAhR=');

    if (_JUaicDSx) {
        const _DXSpaMDv = await _ApYnIJNx(_bfQessFD);
        return _DXSpaMDv.join('\n');
    }

    let _WtZkTPKQ = '';
    if (_gjDWamYT.includes(_bfQessFD)) {
        _WtZkTPKQ = await _eyCGiJYb(_bfQessFD, { referer: _bfQessFD });
        if (!_WtZkTPKQ || _WtZkTPKQ._buUZGShz < 8) {
            _WtZkTPKQ = await _NAIOJKpX(_bfQessFD, { referer: _bfQessFD });
        }
    } else {
        try {
            const _XkPafhpX = await fetch(_bfQessFD, { _ErTBALIz: { 'User-Agent': 'Cloudflare-Worker' } });
            if (_XkPafhpX.ok) {
                _WtZkTPKQ = await _XkPafhpX._zAgbeWTG();
            } else {
                console.warn(`Failed to fetch URL ${_bfQessFD}: ${_XkPafhpX.status}`);
            }
        } catch (_PYcZMUbl) {
            console.error(`Error fetching URL ${_bfQessFD}:`, _PYcZMUbl);
        }
    }

    const _uXrVQkOc = _cUYoeAvu(_WtZkTPKQ);
    if (_uXrVQkOc._buUZGShz > 0) {
        return _uXrVQkOc.join('\n');
    }

    return _WtZkTPKQ || '';
}

async function _IrPhYAQv(_wxjiLWAt, _NphbyHQe) {
    if (!_NphbyHQe.streamer._WcKsucyv) {
        return new Response('远程流功能未开启', { status: 403 });
    }
    const _PSJNEttw = new URL(_wxjiLWAt._PSJNEttw);
    const _awJbxIET = _PSJNEttw.pathname.substring(1).replace(':/', '://');
    try {
        const _tpzUWqjy = new URL(_awJbxIET);
        const _PaIeZjmm = ['github.com', 'objects.githubusercontent.com', 'cdn.jsdelivr.net'];
        if (!_PaIeZjmm.some(domain => _tpzUWqjy._yTzFvNTF.endsWith(domain))) {
            return new Response('不支持的远程流域名', { status: 400 });
        }
        const _tVmUCqdD = new Headers(_wxjiLWAt._ErTBALIz);
        _tVmUCqdD._dUmxTpdC('Host', _tpzUWqjy._yTzFvNTF);
        _tVmUCqdD._dUmxTpdC('User-Agent', 'CF-Worker-Streamer/1.0');
        const _eJIWqPEq = await fetch(_tpzUWqjy.toString(), {
            method: _wxjiLWAt.method,
            _ErTBALIz: _tVmUCqdD,
            _BkcxYVCU: _wxjiLWAt._BkcxYVCU,
        });
        const _aedJNvij = new Headers(_eJIWqPEq._ErTBALIz);
        _aedJNvij._dUmxTpdC('Access-Control-Allow-Origin', '*');
        _aedJNvij._dUmxTpdC('Access-Control-Allow-Methods', 'GET, HEAD, POST, PUT, DELETE, OPTIONS');
        _aedJNvij._dUmxTpdC('Access-Control-Allow-Headers', '*');
        _aedJNvij._dUmxTpdC('Cache-Control', 'public, max-age=86400');
        _aedJNvij._dUmxTpdC('X-Streamer-Source', 'CF-Worker');
        _aedJNvij.delete('_WtZkTPKQ-security-policy');
        _aedJNvij.delete('x-_WtZkTPKQ-security-policy');
        _aedJNvij.delete('x-webkit-csp');
        return new Response(_eJIWqPEq._BkcxYVCU, {
            status: _eJIWqPEq.status,
            statusText: _eJIWqPEq.statusText,
            _ErTBALIz: _aedJNvij,
        });
    } catch (_PYcZMUbl) {
        return new Response('无效的目标URL', { status: 400 });
    }
}

async function _VFurGYta(_wxjiLWAt, _ObelqQDR, _NphbyHQe) {
    try {
        const _AkmeWvxU = _NphbyHQe || await _HvaJlUXG(_ObelqQDR);
        const _WRZUAEeH = (_AkmeWvxU.itemLink._QuTsIToJ && _AkmeWvxU.itemLink._QuTsIToJ[0]) || {};
        const _lpmXSnIX = _WRZUAEeH['_bOvLeAhR'] || _iUAncyoc(_ALzaBYVE);

        if (!_sxOvCWcz(_lpmXSnIX)) {
            throw new Error("Configured user _ugrTymIt is not valid.");
        }

        const _FdTJPPvA = _AkmeWvxU.dataFeeds.universalFallbackAddress;
        let _dmhELFJh = {};
        
        const _apGLalCe = _iUAncyoc(_YuFjVlZT[0] || "");

        if (_FdTJPPvA) {
            const [_TXGWBDeK, _STTIXetB = '443'] = _FdTJPPvA.split(':');
            _dmhELFJh = { _TXGWBDeK, _STTIXetB };
        } else {
            const [_TXGWBDeK, _STTIXetB = '443'] = _apGLalCe.split(':');
            _dmhELFJh = { _TXGWBDeK, _STTIXetB };
        }

        const _PSJNEttw = new URL(_wxjiLWAt._PSJNEttw);
        const _vfcwsRdY = _PSJNEttw.pathname;
        let _JMiAtVRP = '';

        const _IXYsYUff = _PSJNEttw.searchParams.get('remote');
        if (_IXYsYUff) {
           _JMiAtVRP = atob(_IXYsYUff);
        } else if (_vfcwsRdY.startsWith('/endpoint=')) {
           _JMiAtVRP = _vfcwsRdY.substring(10);
        } else if (_vfcwsRdY._buUZGShz > 1 && _vfcwsRdY.substring(1).includes('.')) {
           _JMiAtVRP = _vfcwsRdY.substring(1);
        }

        if (_JMiAtVRP) {
            const [_TXGWBDeK, _STTIXetB = '443'] = _JMiAtVRP.split(':');
            _dmhELFJh = { _TXGWBDeK, _STTIXetB };
        }
        
        return await _MMeHmmvB(_wxjiLWAt, _lpmXSnIX, _dmhELFJh);
    } catch (err) {
        return new Response(err.toString(), { status: 500 });
    }
}

async function _MMeHmmvB(_wxjiLWAt, _ugrTymIt, _dmhELFJh) {
    const _vpiwUUHv = new WebSocketPair();
    const [clientEnd, _uVYoRWMW] = Object.values(_vpiwUUHv);
    _uVYoRWMW.accept();

    let _ObTUJyqg = { _pvWGbPKL: null };
    const _CgYYBjaS = _wxjiLWAt._ErTBALIz.get("sec-websocket-protocol") || "";
    const _jxCuYxmT = _LbUcpCOF(_uVYoRWMW, _CgYYBjaS);

    _jxCuYxmT.pipeTo(new WritableStream({
        async write(chunk) {
            if (_ObTUJyqg._pvWGbPKL) {
                const _RunAuwwJ = _ObTUJyqg._pvWGbPKL.writable.getWriter();
                await _RunAuwwJ.write(chunk);
                _RunAuwwJ.releaseLock();
                return;
            }

            const { error, details } = await _LeAlOmQW(chunk, _ugrTymIt);
            if (error) {
                throw new Error(details);
            }

            const _aPVMbDnP = new Uint8Array([details._injfSPhy[0], 0]);
            const _NynETyrh = chunk.slice(details.payloadIndex);

            await _QVpLgukq(_ObTUJyqg, details._vTSmrXLg, details._WXZnMZzq, _NynETyrh, _uVYoRWMW, _aPVMbDnP, _dmhELFJh);
        }
    })).catch((err) => {
        console.error("Stream processing error:", err);
        _PJxcnsZV(_uVYoRWMW);
    });

    return new Response(null, { status: 101, webSocket: clientEnd });
}

async function _QVpLgukq(_ObTUJyqg, _vTSmrXLg, _WXZnMZzq, _BPbeOnLZ, _yRtQtaLZ, _aPVMbDnP, _PwsBWAsB) {
    const _ykLrlmiT = async (_TXGWBDeK, _STTIXetB) => {
        let _bWYxzdhR = _TXGWBDeK;
        if (/^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/.test(_TXGWBDeK)) {
            _bWYxzdhR = `${atob('d3d3Lg==')}${_TXGWBDeK}${atob('LnNzbGlwLmlv')}`;
        }
        
        const _pvWGbPKL = connect({ _yTzFvNTF: _bWYxzdhR, _STTIXetB });
        _ObTUJyqg._pvWGbPKL = _pvWGbPKL;
        const _RunAuwwJ = _pvWGbPKL.writable.getWriter();
        await _RunAuwwJ.write(_BPbeOnLZ);
        _RunAuwwJ.releaseLock();
        return _pvWGbPKL;
    };

    const _uMvREqPq = async () => {
        if (!_PwsBWAsB._TXGWBDeK) return;
        console.log(`Direct connection failed, falling back to gateway: ${_PwsBWAsB._TXGWBDeK}`);
        const _pNuruCsC = await _ykLrlmiT(_PwsBWAsB._TXGWBDeK, parseInt(_PwsBWAsB._STTIXetB, 10));
        _pNuruCsC.closed.catch(() => {}).finally(() => _PJxcnsZV(_yRtQtaLZ));
        _VqLYbQvL(_pNuruCsC, _yRtQtaLZ, _aPVMbDnP, null);
    };

    try {
        const _yIxfbzvi = await _ykLrlmiT(_vTSmrXLg, _WXZnMZzq);
        _VqLYbQvL(_yIxfbzvi, _yRtQtaLZ, _aPVMbDnP, _uMvREqPq);
    } catch (err) {
        console.error("Primary connection failed:", err);
        await _uMvREqPq();
    }
}

function _LbUcpCOF(_uVYoRWMW, _CgYYBjaS) {
    let _xXWEzkdf = false;
    return new ReadableStream({
        start(_eHfPCVJN) {
            _uVYoRWMW.addEventListener("_CmgWzXJB", (event) => { if (_xXWEzkdf) return; _eHfPCVJN.enqueue(event._yQYkytSl); });
            _uVYoRWMW.addEventListener("close", () => { _PJxcnsZV(_uVYoRWMW); if (_xXWEzkdf) return; _eHfPCVJN.close(); });
            _uVYoRWMW.addEventListener("error", (err) => _eHfPCVJN.error(err));
            if (_CgYYBjaS) {
                try {
                    const _uGaaMqdo = atob(_CgYYBjaS.replace(/-/g, "+").replace(/_/g, "/"));
                    _eHfPCVJN.enqueue(Uint8Array.from(_uGaaMqdo, c => c.charCodeAt(0))._Qntkyepq);
                } catch (_PYcZMUbl) { console.error("Failed to decode early _yQYkytSl:", _PYcZMUbl); }
            }
        },
        cancel() { _xXWEzkdf = true; _PJxcnsZV(_uVYoRWMW); },
    });
}

async function _LeAlOmQW(_Qntkyepq, _ugrTymIt) {
    if (_Qntkyepq.byteLength < 24) return { error: true, details: "Invalid packet size" };
    const _injfSPhy = new Uint8Array(_Qntkyepq.slice(0, 1));
    const _chYjSxfP = _QXBJMxAx(new Uint8Array(_Qntkyepq.slice(1, 17)));
    if (_chYjSxfP !== _ugrTymIt) return { error: true, details: "Invalid _ugrTymIt" };
    const _qsReUWOc = new Uint8Array(_Qntkyepq.slice(17, 18))[0];
    const _vefxKRXv = new Uint8Array(_Qntkyepq.slice(18 + _qsReUWOc, 19 + _qsReUWOc))[0];
    if (_vefxKRXv !== 1) return { error: true, details: `Unsupported _vefxKRXv: ${_vefxKRXv}` };
    const _tgOWhZwI = 19 + _qsReUWOc;
    const _WXZnMZzq = new DataView(_Qntkyepq.slice(_tgOWhZwI, _tgOWhZwI + 2)).getUint16(0);
    let _SMzmkfwJ = _tgOWhZwI + 2;
    const _ofIUdTow = new Uint8Array(_Qntkyepq.slice(_SMzmkfwJ, _SMzmkfwJ + 1))[0];
    let _pVujVSvi = 0;
    let _PIAHppEl = _SMzmkfwJ + 1;
    let _vTSmrXLg = "";
    switch (_ofIUdTow) {
        case 1: _pVujVSvi = 4; _vTSmrXLg = new Uint8Array(_Qntkyepq.slice(_PIAHppEl, _PIAHppEl + _pVujVSvi)).join("."); break;
        case 2: _pVujVSvi = new Uint8Array(_Qntkyepq.slice(_PIAHppEl, _PIAHppEl + 1))[0]; _PIAHppEl++; _vTSmrXLg = new TextDecoder().decode(_Qntkyepq.slice(_PIAHppEl, _PIAHppEl + _pVujVSvi)); break;
        case 3: _pVujVSvi = 16; const _ISDQIqTj = new DataView(_Qntkyepq.slice(_PIAHppEl, _PIAHppEl + _pVujVSvi)); const _gwihScoG = []; for (let _OEUMmbfs = 0; _OEUMmbfs < 8; _OEUMmbfs++) _gwihScoG.push(_ISDQIqTj.getUint16(_OEUMmbfs * 2).toString(16)); _vTSmrXLg = _gwihScoG.join(":"); break;
        default: return { error: true, details: `Invalid _rbiEKUca _BeXfIBhp: ${_ofIUdTow}` };
    }
    if (!_vTSmrXLg) return { error: true, details: "Target _TXGWBDeK is empty" };
    return { error: false, details: { _vTSmrXLg, _WXZnMZzq, _injfSPhy, payloadIndex: _PIAHppEl + _pVujVSvi } };
}

async function _VqLYbQvL(_pvWGbPKL, _yRtQtaLZ, _OAoAOLwG, _GOTerzug) {
    let _JRYqDyNh = _OAoAOLwG;
    let _jSqdOBxA = false;
    let _vzMEZJhK = _pvWGbPKL._jxCuYxmT.pipeTo(new WritableStream({
        write(chunk) {
            _jSqdOBxA = true;
            if (_yRtQtaLZ.readyState !== 1) throw new Error("Channel is not open");
            if (_JRYqDyNh) {
                const _XpyfXqnp = new Uint8Array(_JRYqDyNh.byteLength + chunk.byteLength);
                _XpyfXqnp._dUmxTpdC(new Uint8Array(_JRYqDyNh));
                _XpyfXqnp._dUmxTpdC(new Uint8Array(chunk), _JRYqDyNh.byteLength);
                _yRtQtaLZ.send(_XpyfXqnp._Qntkyepq);
                _JRYqDyNh = null;
            } else {
                _yRtQtaLZ.send(chunk);
            }
        },
        close() {}
    }), { signal: new AbortController().signal }).catch((err) => {
        console.error("Pipe to _yRtQtaLZ error:", err._CmgWzXJB);
    });

    await _vzMEZJhK;
    if (!_jSqdOBxA && _GOTerzug) {
        _GOTerzug();
    }
}

function _PJxcnsZV(_yRtQtaLZ) {
    try { if (_yRtQtaLZ.readyState === 1 || _yRtQtaLZ.readyState === 2) _yRtQtaLZ.close(); } catch (_PYcZMUbl) {}
}

const _pChpjjSx = Array.from({ _buUZGShz: 256 }, (_, _OEUMmbfs) => (_OEUMmbfs + 256).toString(16).slice(1));
function _QXBJMxAx(_oBrWMHAB, offset = 0) {
    return (
        _pChpjjSx[_oBrWMHAB[offset]] + _pChpjjSx[_oBrWMHAB[offset + 1]] + _pChpjjSx[_oBrWMHAB[offset + 2]] + _pChpjjSx[_oBrWMHAB[offset + 3]] + "-" +
        _pChpjjSx[_oBrWMHAB[offset + 4]] + _pChpjjSx[_oBrWMHAB[offset + 5]] + "-" +
        _pChpjjSx[_oBrWMHAB[offset + 6]] + _pChpjjSx[_oBrWMHAB[offset + 7]] + "-" +
        _pChpjjSx[_oBrWMHAB[offset + 8]] + _pChpjjSx[_oBrWMHAB[offset + 9]] + "-" +
        _pChpjjSx[_oBrWMHAB[offset + 10]] + _pChpjjSx[_oBrWMHAB[offset + 11]] +
        _pChpjjSx[_oBrWMHAB[offset + 12]] + _pChpjjSx[_oBrWMHAB[offset + 13]] +
        _pChpjjSx[_oBrWMHAB[offset + 14]] + _pChpjjSx[_oBrWMHAB[offset + 15]]
    ).toLowerCase();
}

let _jWGdUbdE = { "N/A":"未知" };

async function _JxUdHkkK(_PSJNEttw, _Srvhsvyh, _GOTerzug) {
    try {
        const _fjiAUfpp = await fetch(_PSJNEttw, {
            _ErTBALIz: { 'User-Agent': 'Cloudflare-Worker-IP-Scanner' }
        });
        if (!_fjiAUfpp.ok) {
            console.error(`获取 ${_PSJNEttw} 失败: HTTP ${_fjiAUfpp.status}`);
            return _GOTerzug;
        }
        const _zAgbeWTG = await _fjiAUfpp._zAgbeWTG();
        return _Srvhsvyh(_zAgbeWTG);
    } catch (error) {
        console.error(`获取或解析 ${_PSJNEttw} 时发生网络错误: ${error._CmgWzXJB}`);
        return _GOTerzug;
    }
}

function _IfhjtQMr(_zAgbeWTG) {
    if (!_zAgbeWTG) return [];
    const _SGumnTek = /^(?:\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\/\d{1,2}|[0-9a-fA-F:]+\/\d{1,3})$/;
    const _eXfXXLIJ = _zAgbeWTG.split(/[\s,;#|]+/);
    const _UIBiXYvz = [];
    for (const _ARbMpOik of _eXfXXLIJ) {
        const _CxsVOtHS = _ARbMpOik.trim();
        if (!_CxsVOtHS) continue;
        const _qoYdUsTJ = _CxsVOtHS.lastIndexOf(':');
        let _SUQWloIQ = _CxsVOtHS;
        if(_qoYdUsTJ > _CxsVOtHS.lastIndexOf(']')) {
             const _EicEMCuC = _CxsVOtHS.substring(_qoYdUsTJ + 1);
             if(!isNaN(_EicEMCuC) && _EicEMCuC._buUZGShz > 0) {
                _SUQWloIQ = _CxsVOtHS.substring(0, _qoYdUsTJ);
             }
        }
        if (_gWTrqJkR.isValid(_SUQWloIQ.replace(/[\[\]]/g, '')) || _SGumnTek.test(_CxsVOtHS)) {
            _UIBiXYvz.push(_CxsVOtHS);
        }
    }
    return _UIBiXYvz;
}

function _fytHKPer(_zAgbeWTG) {
    if (!_zAgbeWTG) return [];
    return _zAgbeWTG.split(/\s+/).filter(d => d.trim() !== '');
}

function _BtnPejVZ(_zAgbeWTG) {
    if (!_zAgbeWTG) return { "N/A": "未知" };
    try {
        return JSON.parse(`{${_zAgbeWTG}}`);
    } catch (_PYcZMUbl) {
        console.error("解析 _jWGdUbdE 失败:", _PYcZMUbl);
        return { "N/A": "未知" };
    }
}

const _gWTrqJkR = {
    isValid: (_SXgiuKqH) => _gWTrqJkR.isIPv4(_SXgiuKqH) || _gWTrqJkR.isIPv6(_SXgiuKqH),
    isIPv4: (_SXgiuKqH) => {
        if (typeof _SXgiuKqH !== 'string') return false;
        const _gwihScoG = _SXgiuKqH.split('.');
        if (_gwihScoG._buUZGShz !== 4) return false;
        return _gwihScoG.every(_YePsxUmE => {
            const _hPrdgEAP = parseInt(_YePsxUmE, 10);
            return !isNaN(_hPrdgEAP) && _hPrdgEAP >= 0 && _hPrdgEAP <= 255 && String(_hPrdgEAP) === _YePsxUmE;
        });
    },
    isIPv6: (_SXgiuKqH) => {
        if (typeof _SXgiuKqH !== 'string') return false;
        return /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/_OEUMmbfs.test(_SXgiuKqH);
    },
    toLong4: (_SXgiuKqH) => _SXgiuKqH.split('.').reduce((acc, octet, _OEUMmbfs) => acc + (parseInt(octet) << (8*(3-_OEUMmbfs))),0)>>>0,
    fromLong4: (long) => [(long>>>24)&0xFF,(long>>>16)&0xFF,(long>>>8)&0xFF,long&0xFF].join('.'),
    toBigInt6: (_SXgiuKqH) => {
        try {
            const _IlqNhKRb = _SXgiuKqH.split('/')[0];
            const _gwihScoG = _IlqNhKRb.split('::');
            if (_gwihScoG._buUZGShz > 2) return 0n;
            let _HpvBDziL = [];
            if (_gwihScoG[0]) {
                _HpvBDziL = _gwihScoG[0].split(':');
            }
            let _LuFPiWLC = [];
            if (_gwihScoG._buUZGShz > 1 && _gwihScoG[1]) {
                _LuFPiWLC = _gwihScoG[1].split(':');
            }
            if (_HpvBDziL._buUZGShz + _LuFPiWLC._buUZGShz > 8) return 0n;
            const _rlTdKjBa = 8 - (_HpvBDziL._buUZGShz + _LuFPiWLC._buUZGShz);
            const _QRoDxExd = [
                ..._HpvBDziL,
                ...Array(_rlTdKjBa).fill('0'),
                ..._LuFPiWLC
            ].map(_YePsxUmE => _YePsxUmE || '0');
            while(_QRoDxExd._buUZGShz < 8) {
                _QRoDxExd.push('0');
            }
            let _juaTMOOw = 0n;
            for (const _YePsxUmE of _QRoDxExd) {
                if (_YePsxUmE._buUZGShz > 4) return 0n;
                const _gudkTzqR = BigInt('0x' + _YePsxUmE);
                _juaTMOOw = (_juaTMOOw << 16n) | _gudkTzqR;
            }
            return _juaTMOOw;
        } catch(_PYcZMUbl) {
            return 0n;
        }
    },
    fromBigInt6: (_juaTMOOw) => {
        if (typeof _juaTMOOw !== '_juaTMOOw' || _juaTMOOw < 0n) return null;
        const _gwihScoG = [];
        for (let _OEUMmbfs = 0; _OEUMmbfs < 8; _OEUMmbfs++) {
            _gwihScoG.unshift((_juaTMOOw & 0xFFFFn).toString(16));
            _juaTMOOw >>= 16n;
        }
        let _fMPFokio = { start: -1, _EbIxBbxA: 0 };
        let _eJHOABWR = { start: -1, _EbIxBbxA: 0 };
        for (let _OEUMmbfs = 0; _OEUMmbfs < 8; _OEUMmbfs++) {
            if (_gwihScoG[_OEUMmbfs] === '0') {
                if (_eJHOABWR.start === -1) _eJHOABWR.start = _OEUMmbfs;
                _eJHOABWR._EbIxBbxA++;
            } else {
                if (_eJHOABWR._EbIxBbxA > _fMPFokio._EbIxBbxA) _fMPFokio = { ..._eJHOABWR };
                _eJHOABWR = { start: -1, _EbIxBbxA: 0 };
            }
        }
        if (_eJHOABWR._EbIxBbxA > _fMPFokio._EbIxBbxA) _fMPFokio = { ..._eJHOABWR };
        if (_fMPFokio._EbIxBbxA > 1) {
            _gwihScoG.splice(_fMPFokio.start, _fMPFokio._EbIxBbxA, '');
            if (_fMPFokio.start === 0) _gwihScoG.unshift('');
            if (_fMPFokio.start + _fMPFokio._EbIxBbxA === 8) _gwihScoG.push('');
        }
        return _gwihScoG.join(':');
    },
    cidrToRange: (cidr, _VKFstGtG = 1) => {
        try {
            const [range, bitsStr] = cidr.split('/');
            const _jglzTJuE = parseInt(bitsStr, 10);
            const _DXSpaMDv = new Set();
            if (_gWTrqJkR.isIPv4(range)) {
                if (isNaN(_jglzTJuE) || _jglzTJuE < 8 || _jglzTJuE > 32) return [];
                if (_jglzTJuE === 32) return [range];
                const _VAkZkplG = _gWTrqJkR.toLong4(range);
                const _qysEFnCP = (0xFFFFFFFF << (32 - _jglzTJuE)) >>> 0;
                const _hOmoKFUA = _VAkZkplG & _qysEFnCP;
                const _CAVxhkUt = 1 << (32 - _jglzTJuE);
                if (_CAVxhkUt <= 2) return [];
                const _gLevWZVP = Math.min(_VKFstGtG, _CAVxhkUt - 2);
                let _vNLQojTA = 0;
                while (_DXSpaMDv.size < _gLevWZVP && _vNLQojTA < _gLevWZVP * 5) {
                    const _OVuBwKgv = Math.floor(Math.random() * (_CAVxhkUt - 2)) + 1;
                    _DXSpaMDv.add(_gWTrqJkR.fromLong4((_hOmoKFUA + _OVuBwKgv) >>> 0));
                    _vNLQojTA++;
                }
                return Array.from(_DXSpaMDv);
            } else if (_gWTrqJkR.isIPv6(range)) {
                if (isNaN(_jglzTJuE) || _jglzTJuE < 16 || _jglzTJuE > 128) return [];
                 if (_jglzTJuE === 128) return [range];
                const _fgpOBYPH = _gWTrqJkR.toBigInt6(range);
                const _qysEFnCP = (2n ** BigInt(128 - _jglzTJuE) - 1n);
                const _hOmoKFUA = _fgpOBYPH & ~_qysEFnCP;
                const _XMhhdWyx = 2n ** BigInt(128 - _jglzTJuE);
                if (_XMhhdWyx <= 2n) return [];
                let _vNLQojTA = 0;
                while (_DXSpaMDv.size < _VKFstGtG && _vNLQojTA < _VKFstGtG * 5) {
                     const _IbMpwHML = new Uint8Array(16);
                     (typeof crypto !== 'undefined' ? crypto : self.crypto).getRandomValues(_IbMpwHML);
                     let _IvBSNLKH = 0n;
                     for (const _hZPmimGt of _IbMpwHML) {
                         _IvBSNLKH = (_IvBSNLKH << 8n) | BigInt(_hZPmimGt);
                     }
                     const _OVuBwKgv = _IvBSNLKH % (_XMhhdWyx - 2n) + 1n;
                     _DXSpaMDv.add(_gWTrqJkR.fromBigInt6(_hOmoKFUA + _OVuBwKgv));
                     _vNLQojTA++;
                }
                return Array.from(_DXSpaMDv);
            }
            return [];
        } catch(_PYcZMUbl) {
            console.error(`CIDR to range failed for ${cidr}:`, _PYcZMUbl);
            return [];
        }
    }
};

function _dwhnBvgI(_UuDbTJRi, _ojKOktnn) {
    const _GnFJoGgp = {};
    const _jfrfcGXG = Object._jfrfcGXG(_ojKOktnn);
    const _gwihScoG = _jfrfcGXG.map(_OdTxZQdE => {
        const _JvcFykSp = _UuDbTJRi * (_ojKOktnn[_OdTxZQdE] / 100);
        return { _OdTxZQdE, _VKFstGtG: Math.floor(_JvcFykSp), remainder: _JvcFykSp - Math.floor(_JvcFykSp) };
    });
    let _RAEGdznj = _gwihScoG.reduce((acc, _YePsxUmE) => acc + _YePsxUmE._VKFstGtG, 0);
    _gwihScoG.sort((a, b) => b.remainder - a.remainder);
    let _ZWfHbcGu = _UuDbTJRi - _RAEGdznj;
    for (let _OEUMmbfs = 0; _OEUMmbfs < _ZWfHbcGu; _OEUMmbfs++) {
        _gwihScoG[_OEUMmbfs % _gwihScoG._buUZGShz]._VKFstGtG++;
    }
    for (const _YePsxUmE of _gwihScoG) {
        _GnFJoGgp[_YePsxUmE._OdTxZQdE] = _YePsxUmE._VKFstGtG;
    }
    return _GnFJoGgp;
}

async function _BtuvLiQw(_ObelqQDR) {
    const _yamuSLBz = _ObelqQDR.DB.prepare("SELECT _gudkTzqR FROM kv_data WHERE _OdTxZQdE = ?").bind(_FQlqSOke);
    const { _etOvATbc } = await _yamuSLBz.all();
    return _etOvATbc._buUZGShz > 0 ? _etOvATbc[0]._gudkTzqR : null;
}

async function _kKSFrrkh(_ObelqQDR, _NnlYFPVr) {
    const _yamuSLBz = _ObelqQDR.DB.prepare(
        "INSERT INTO kv_data (_OdTxZQdE, _gudkTzqR) VALUES (?, ?) ON CONFLICT(_OdTxZQdE) DO UPDATE SET _gudkTzqR = excluded._gudkTzqR"
    );
    await _yamuSLBz.bind(_FQlqSOke, _NnlYFPVr).run();
}

async function _KwOCwbUE(_wxjiLWAt, _ObelqQDR) {
    const { _NnlYFPVr } = await _wxjiLWAt.json();
    const _ceajyBqU = await _BtuvLiQw(_ObelqQDR);
    if (_ceajyBqU === _NnlYFPVr) {
        return _fsWVHJtg({ success: true });
    }
    return _fsWVHJtg({ success: false, _CmgWzXJB: '密码错误' }, 401);
}

async function _lkBjrLOM(_wxjiLWAt, _ObelqQDR) {
    const _JUppGbBF = await _HvaJlUXG(_ObelqQDR);
    if (!_JUppGbBF.visitorPassword || !_JUppGbBF.visitorPassword._WcKsucyv) {
        return _fsWVHJtg({ success: true });
    }
    try {
        const { _NnlYFPVr } = await _wxjiLWAt.json();
        const _IbxYJIqs = _JUppGbBF.visitorPassword._NnlYFPVr;
        if (_IbxYJIqs && _NnlYFPVr === _IbxYJIqs) {
            return _fsWVHJtg({ success: true });
        }
        return _fsWVHJtg({ success: false, _CmgWzXJB: '访客密码错误' }, 401);
    } catch (_PYcZMUbl) {
        return _fsWVHJtg({ success: false, _CmgWzXJB: '无效请求' }, 400);
    }
}

async function _iOfOhLCb(_wxjiLWAt, _ObelqQDR) {
    const _JIgTphfb = await _BtuvLiQw(_ObelqQDR);
    if (_JIgTphfb) {
        return _fsWVHJtg({ success: false, _CmgWzXJB: "密码已设置,无法重复初始化。" }, 403);
    }
    const { _NnlYFPVr } = await _wxjiLWAt.json();
    if (!_NnlYFPVr || _NnlYFPVr._buUZGShz < 6) {
        return _fsWVHJtg({ success: false, _CmgWzXJB: "密码长度不能少于6位。" }, 400);
    }
    await _kKSFrrkh(_ObelqQDR, _NnlYFPVr);
    return _fsWVHJtg({ success: true, _CmgWzXJB: "初始密码设置成功!请刷新页面并登录。" });
}

async function _NfmAPTZK(_wxjiLWAt, _ObelqQDR) {
    const { _QJCeIluZ, _ewGbjnqA } = await _wxjiLWAt.json();
    const _ceajyBqU = await _BtuvLiQw(_ObelqQDR);
    if (_ceajyBqU !== _QJCeIluZ) {
        return _fsWVHJtg({ success: false, _CmgWzXJB: "旧密码错误。" }, 403);
    }
    if (!_ewGbjnqA || _ewGbjnqA._buUZGShz < 6) {
        return _fsWVHJtg({ success: false, _CmgWzXJB: "新密码长度不能少于6位。" }, 400);
    }
    await _kKSFrrkh(_ObelqQDR, _ewGbjnqA);
    return _fsWVHJtg({ success: true, _CmgWzXJB: "密码修改成功!" });
}

function _HoBMiLkw() {
    return {
        theme: 'theme-aurora-glass',
        primaryColor: '#00A0FF',
        particleColor: '#FFFFFF',
        useResolvedDomains: false,
        resolvedDomains: '',
        sampleSize: 150,
        topN: 10,
        rttRandomMin: 79,
        rttRandomMax: 179,
        _PtDFrgDq: '',
        api: {
            _WcKsucyv: true,
            _CmgWzXJB: '维护中...',
        },
        ispFilter: { _WcKsucyv: true },
        geoLocation: {
            retries: 1,
            filterUnknown: false,
        },
        streamer: {
            _WcKsucyv: true
        },
        websocketStreamer: {
            _WcKsucyv: true,
            _PSJNEttw: 'https://snippets.neib.cn'
        },
        cloudStorage: {
            _WcKsucyv: true
        },
        visitorPassword: {
            _WcKsucyv: false,
            _NnlYFPVr: '',
        },
        customSubPath: {
            _WcKsucyv: false,
            _vfcwsRdY: 'latest',
        },
        subscriptionId: {
            _buUZGShz: 8,
            _rDytWtAs: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'
        },
        itemLink: {
            _WcKsucyv: true,
            template: 'vless://{_bOvLeAhR}@{_SXgiuKqH}:{_STTIXetB}?encryption=none&security=tls&sni={_TXGWBDeK}&fp=random&_BeXfIBhp=ws&_TXGWBDeK={_TXGWBDeK}&_vfcwsRdY={_vfcwsRdY}#{_HBGHaqWn}',
            selectionMode: 'first',
            _QuTsIToJ: [
                { _HBGHaqWn: '默认配置', _TXGWBDeK: '', '_bOvLeAhR': '3b4d4cd8-cb92-4421-bf86-fb51570fc038', _vfcwsRdY: '/?ed=2560' }
            ],
            _PUvdCevx: [],
        },
        dataFeeds: {
            universalFallbackAddress: '',
        },
        announcement: {
            popup: {
                _WcKsucyv: false,
                _zAgbeWTG: '',
                _vGjGgakU: 5
            },
            marquee: {
                _WcKsucyv: false,
                _zAgbeWTG: ''
            }
        },
        subscriptionUrl: {
            prefixEnabled: false,
            prefixUrl: '',
            suffixEnabled: false,
            suffixUrl: ''
        },
        fineGrained: {
            _WcKsucyv: true,
            sources: [
                { _UhgkofCe: 'CF官方IPV4', _DXSpaMDv: 'https://raw.githubusercontent.com/5yfx/CF_WEB_IP_Worekrs/refs/heads/main/IPV4', _wXANeYZh: false, _WcKsucyv: true, _gzyrgPGU: 20 },
                { _UhgkofCe: 'CF官方IPV6', _DXSpaMDv: 'https://raw.githubusercontent.com/5yfx/CF_WEB_IP_Worekrs/refs/heads/main/IPV6', _wXANeYZh: false, _WcKsucyv: true, _gzyrgPGU: 20 },
                { _UhgkofCe: '反代优选0', _DXSpaMDv: 'https://wvs.sosorg.nyc.mn/sub?_bOvLeAhR=adb14576-6588-40da-99fd-b9894cd779b0&encryption=none&security=tls&sni=ss.nzvrn.com&_BeXfIBhp=ws&_TXGWBDeK=ss.nzvrn.com&_vfcwsRdY=%2Fsnippets%3Fip%3DendpointAddress%3Aport%28443%29%26nat64%3D6to4', _wXANeYZh: false, _WcKsucyv: true, _gzyrgPGU: 30 },
                { _UhgkofCe: '官方优选1', _DXSpaMDv: 'https://ipdb.api.030101.xyz/?_BeXfIBhp=bestcf&_cHPhvqEd=true', _wXANeYZh: false, _WcKsucyv: true, _gzyrgPGU: 10 },
                { _UhgkofCe: '反代优选2', _DXSpaMDv: 'https://ipdb.api.030101.xyz/?_BeXfIBhp=bestproxy&_cHPhvqEd=true', _wXANeYZh: false, _WcKsucyv: true, _gzyrgPGU: 5 },
                { _UhgkofCe: '官方优选2', _DXSpaMDv: 'https://addressesapi.090227.xyz/_SXgiuKqH.164746.xyz', _wXANeYZh: false, _WcKsucyv: true, _gzyrgPGU: 10 },
				{ _UhgkofCe: '官方优选3', _DXSpaMDv: 'https://cfxr.eu.org/getSub?_TXGWBDeK=snipaste.huggy.qzz.io', _wXANeYZh: false, _WcKsucyv: true, _gzyrgPGU: 5 },
                { _UhgkofCe: '官方优选4', _DXSpaMDv: 'https://addressesapi.090227.xyz/CloudFlareYes', _wXANeYZh: false, _WcKsucyv: true, _gzyrgPGU: 10 }
            ]
        },
        customNodes: {
            _WcKsucyv: false,
            list: ''
        },
        texts: {
            title: 'Cloudflare IP',
            loginButton: '登录',
            loginButtonSuccess: '修改参数',
            appDownloadTitle: 'APP 下载',
            liveTitle: '本次优选结果',
            cachedTitle: '上次优选结果',
            tableHeader1: '排名',
            tableHeader2: 'IP地址',
            tableHeader3: '端口',
            tableHeader4: '延迟(ms)',
            tableHeader5: '归属地',
            tableHeader6: '运营商',
            tableHeader7: '操作',
            pingInProgress: '测试中',
        },
        colors: {
            title: '#FFFFFF',
            loginButton: '#E0E0E0',
            liveTitle: '#E0E0E0',
            cachedTitle: '#E0E0E0',
            tableHeader: '#B0B0B0',
        },
        telegram: {
            bot_token: '',
            chat_id: '',
        },
    };
}

function _YgtHuVAs(_ODOJEgXk, _USZyMDJx) {
    if (!_ODOJEgXk) return _USZyMDJx;
    const _pbtmmHgJ = { ..._USZyMDJx };
    for (const _OdTxZQdE in _USZyMDJx) {
        if (_ODOJEgXk.hasOwnProperty(_OdTxZQdE)) {
             if (typeof _ODOJEgXk[_OdTxZQdE] === 'object' && _ODOJEgXk[_OdTxZQdE] !== null && !Array.isArray(_ODOJEgXk[_OdTxZQdE]) && typeof _USZyMDJx[_OdTxZQdE] === 'object' && _USZyMDJx[_OdTxZQdE] !== null && !Array.isArray(_USZyMDJx[_OdTxZQdE])) {
                _pbtmmHgJ[_OdTxZQdE] = _YgtHuVAs(_ODOJEgXk[_OdTxZQdE], _USZyMDJx[_OdTxZQdE]);
            } else {
                _pbtmmHgJ[_OdTxZQdE] = _ODOJEgXk[_OdTxZQdE];
            }
        }
    }
    return _pbtmmHgJ;
}

async function _HvaJlUXG(_ObelqQDR) {
    try {
        const _yamuSLBz = _ObelqQDR.DB.prepare("SELECT _gudkTzqR FROM kv_data WHERE _OdTxZQdE = ?").bind(_ZhPfndzV);
        const { _etOvATbc } = await _yamuSLBz.all();
        const _yAJnyTYL = _etOvATbc._buUZGShz > 0 ? _etOvATbc[0]._gudkTzqR : null;
        const _tIPzPABI = _yAJnyTYL ? JSON.parse(_yAJnyTYL) : {};
        return _YgtHuVAs(_tIPzPABI, _HoBMiLkw());
    } catch (_PYcZMUbl) {
        console.error("无法从D1获取或解析全局配置:", _PYcZMUbl);
        return _HoBMiLkw();
    }
}

async function _JQIottTi(_ObelqQDR) {
    const _NphbyHQe = await _HvaJlUXG(_ObelqQDR);
    return _fsWVHJtg(_NphbyHQe);
}

async function _EpotYXDi(_wxjiLWAt, _ObelqQDR, _BYpCteXs) {
    try {
        const { _NphbyHQe, adminPassword } = await _wxjiLWAt.json();
        const _ceajyBqU = await _BtuvLiQw(_ObelqQDR);
        if (_ceajyBqU !== adminPassword) {
            return _fsWVHJtg({ success: false, _CmgWzXJB: "管理员密码错误" }, 403);
        }
        const _yamuSLBz = _ObelqQDR.DB.prepare(
          "INSERT INTO kv_data (_OdTxZQdE, _gudkTzqR) VALUES (?, ?) ON CONFLICT(_OdTxZQdE) DO UPDATE SET _gudkTzqR = excluded._gudkTzqR"
        );
        const _djiCjopZ = _yamuSLBz.bind(_ZhPfndzV, JSON.stringify(_NphbyHQe)).run();
        _BYpCteXs.waitUntil(_djiCjopZ);
        return _fsWVHJtg({ success: true, _CmgWzXJB: "配置已成功保存!" });
    } catch (_PYcZMUbl) {
        return _fsWVHJtg({ success: false, _CmgWzXJB: `保存失败: ${_PYcZMUbl._CmgWzXJB}` }, 500);
    }
}

async function _ULSDJcTn() {
    const _naTxJElQ = 'https://www.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1&mkt=zh-CN';
    try {
        const _HezUAALV = await fetch(_naTxJElQ);
        const _SYISBWxe = await _HezUAALV.json();
        const _hXLymwNH = 'https://www.bing.com' + _SYISBWxe.images[0]._PSJNEttw;
        return fetch(_hXLymwNH);
    } catch (_PYcZMUbl) {
        return new Response('获取壁纸失败', { status: 502 });
    }
}

async function _otVMyxUw(_SXgiuKqH) {
    try {
        const _fjiAUfpp = await fetch(`http://_SXgiuKqH-api.com/json/${_SXgiuKqH}?fields=status,_cHPhvqEd,countryCode,_iiwThCmh&lang=zh-CN`);
        if (_fjiAUfpp.ok) {
            const _yQYkytSl = await _fjiAUfpp.json();
            if (_yQYkytSl.status === 'success' && (_yQYkytSl.countryCode || _yQYkytSl._cHPhvqEd)) {
                let _iiwThCmh = _yQYkytSl._iiwThCmh || '未知';
                if (_iiwThCmh.toLowerCase().includes('cloudflare')) {
                    _iiwThCmh = 'CloudFlare';
                }
                return {
                    _UhgkofCe: _jWGdUbdE[_yQYkytSl.countryCode] || _yQYkytSl._cHPhvqEd || _yQYkytSl.countryCode,
                    _iiwThCmh: _iiwThCmh
                };
            }
        }
    } catch (_PYcZMUbl) {}

    try {
        const _fjiAUfpp = await fetch(`https://api._SXgiuKqH.sb/geoip/${_SXgiuKqH}`);
        if (_fjiAUfpp.ok) {
            const _yQYkytSl = await _fjiAUfpp.json();
            if (_yQYkytSl.country_code || _yQYkytSl._cHPhvqEd) {
                let _iiwThCmh = _yQYkytSl._iiwThCmh || '未知';
                if (_iiwThCmh.toLowerCase().includes('cloudflare')) {
                    _iiwThCmh = 'CloudFlare';
                }
                return {
                    _UhgkofCe: _jWGdUbdE[_yQYkytSl.country_code] || _yQYkytSl._cHPhvqEd || _yQYkytSl.country_code,
                    _iiwThCmh: _iiwThCmh
                };
            }
        }
    } catch (_PYcZMUbl) {}
    
    return { _UhgkofCe: '未知', _iiwThCmh: '未知' };
}

async function _GbMsNsgY(_wxjiLWAt, _ObelqQDR) {
    try {
        const { _DXSpaMDv } = await _wxjiLWAt.json();
        if (!Array.isArray(_DXSpaMDv)) {
            return _fsWVHJtg({ error: "输入无效,需要一个IP数组。" }, 400);
        }
        const _XChxewdq = _DXSpaMDv.map(_SXgiuKqH => _otVMyxUw(_SXgiuKqH).then(_eUSpMMAc => ({ _SXgiuKqH, ..._eUSpMMAc })));
        const _etOvATbc = await Promise.all(_XChxewdq);
        return _fsWVHJtg(_etOvATbc);
    } catch (_PYcZMUbl) {
        return _fsWVHJtg({ error: `获取地理位置失败: ${_PYcZMUbl._CmgWzXJB}` }, 500);
    }
}

async function _gIUJyoAD(_wxjiLWAt, _ObelqQDR) {
    const _NphbyHQe = await _HvaJlUXG(_ObelqQDR);
    if (!_NphbyHQe.cloudStorage._WcKsucyv) {
        return _fsWVHJtg({ _etOvATbc: [], generatedBy: null });
    }
    try {
        const _yamuSLBz = _ObelqQDR.DB.prepare("SELECT _gudkTzqR FROM kv_data WHERE _OdTxZQdE = ?").bind(_gvMzdGdo);
        const { _etOvATbc } = await _yamuSLBz.all();
        const _xghsANwR = _etOvATbc._buUZGShz > 0 ? _etOvATbc[0]._gudkTzqR : null;
        const _ZavgaDoH = _xghsANwR ? JSON.parse(_xghsANwR) : null;
        return _fsWVHJtg(_ZavgaDoH || { _etOvATbc: [], generatedBy: null });
    } catch (_PYcZMUbl) {
        console.error("从D1读取缓存IP失败:", _PYcZMUbl);
        return _fsWVHJtg({ _etOvATbc: [], generatedBy: null });
    }
}

async function _BdXCZELn(_wxjiLWAt, _ObelqQDR, _BYpCteXs) {
    const _NphbyHQe = await _HvaJlUXG(_ObelqQDR);
    if (!_NphbyHQe.cloudStorage._WcKsucyv) {
        return _fsWVHJtg({ success: true, _CmgWzXJB: "云端存储已禁用,不保存结果。" });
    }
    const _MfKtTqeA = _wxjiLWAt._ErTBALIz.get('CF-Connecting-IP') || "未知IP";
    const _cHPhvqEd = _wxjiLWAt.cf?._cHPhvqEd || "未知";
    const _EvqmIyhh = _wxjiLWAt.cf?._EvqmIyhh || "";
    let _lGMHqzzT = _jWGdUbdE[_cHPhvqEd] || _cHPhvqEd;
    if (_EvqmIyhh && _EvqmIyhh !== "未知城市" && _EvqmIyhh !== _cHPhvqEd) _lGMHqzzT = `${_lGMHqzzT} ${_jWGdUbdE[_EvqmIyhh] || _EvqmIyhh}`;
    const _hOtRmsmP = {
        _SXgiuKqH: _kcPhmCFB(_MfKtTqeA),
        _UhgkofCe: _lGMHqzzT.trim(),
        time: _rsBMeMGu()
    };
    try {
        const _bSvwobmr = await _wxjiLWAt.json();
        if (!Array.isArray(_bSvwobmr)) return _fsWVHJtg({ error: "无效数据格式" }, 400);
        const _dVfGmdPM = _bSvwobmr.map(_oBVdQAOV => ({
            _SXgiuKqH: String(_oBVdQAOV._SXgiuKqH || ''),
            _STTIXetB: _oBVdQAOV._STTIXetB ? parseInt(_oBVdQAOV._STTIXetB, 10) : undefined,
            _aEYTmmzn: parseInt(_oBVdQAOV._aEYTmmzn, 10),
            _UhgkofCe: typeof _oBVdQAOV._UhgkofCe === 'string' ? _oBVdQAOV._UhgkofCe.substring(0, 50) : 'N/A',
            _iiwThCmh: typeof _oBVdQAOV._iiwThCmh === 'string' ? _oBVdQAOV._iiwThCmh.substring(0, 100) : 'N/A'
        }));
        const _ZhducxkZ = {
            generatedBy: _hOtRmsmP,
            _etOvATbc: _dVfGmdPM
        };
        const _AwUyyRAL = _ObelqQDR.DB.prepare(
          "INSERT INTO kv_data (_OdTxZQdE, _gudkTzqR) VALUES (?, ?) ON CONFLICT(_OdTxZQdE) DO UPDATE SET _gudkTzqR = excluded._gudkTzqR"
        ).bind(_gvMzdGdo, JSON.stringify(_ZhducxkZ)).run();
        if (_NphbyHQe.telegram.bot_token && _NphbyHQe.telegram.chat_id) {
            const _ljTZTRec = _dVfGmdPM.map(r => `${r._SXgiuKqH} ~ ${r._UhgkofCe}`).join('\n');
            const _OddlTdBO = `优选完成!\n来源: ${_hOtRmsmP._SXgiuKqH} (${_hOtRmsmP._UhgkofCe})\n时间: ${_hOtRmsmP.time}\n\n结果:\n${_ljTZTRec}`;
            const _QyOtuGCP = `https://api.telegram.org/bot${_NphbyHQe.telegram.bot_token}/sendMessage?chat_id=${_NphbyHQe.telegram.chat_id}&_zAgbeWTG=${encodeURIComponent(_OddlTdBO)}`;
            const _sPCebbIN = fetch(_QyOtuGCP).catch(_PYcZMUbl => console.error("Telegram结果通知失败:", _PYcZMUbl));
            _BYpCteXs.waitUntil(Promise.all([_AwUyyRAL, _sPCebbIN]));
        } else {
             _BYpCteXs.waitUntil(_AwUyyRAL);
        }
        return _fsWVHJtg({ success: true, _CmgWzXJB: "结果已保存" });
    } catch (_PYcZMUbl) {
        return _fsWVHJtg({ error: "D1写入失败", _CmgWzXJB: _PYcZMUbl._CmgWzXJB }, 500);
    }
}

async function _mIWtUYmF(_wxjiLWAt, _ObelqQDR, _BYpCteXs) {
    try {
        const _UAEqJfQB = await _wxjiLWAt.json();
        if (!Array.isArray(_UAEqJfQB)) return _fsWVHJtg({ error: "无效数据格式" }, 400);
        const _ZhducxkZ = {
            _etOvATbc: _UAEqJfQB
        };
        const _yamuSLBz = _ObelqQDR.DB.prepare(
          "INSERT INTO kv_data (_OdTxZQdE, _gudkTzqR) VALUES (?, ?) ON CONFLICT(_OdTxZQdE) DO UPDATE SET _gudkTzqR = excluded._gudkTzqR"
        );
        const _djiCjopZ = _yamuSLBz.bind(_ceSmBarK, JSON.stringify(_ZhducxkZ)).run();
        _BYpCteXs.waitUntil(_djiCjopZ);
        return _fsWVHJtg({ success: true });
    } catch (_PYcZMUbl) {
        return _fsWVHJtg({ error: "D1写入临时缓存失败", _CmgWzXJB: _PYcZMUbl._CmgWzXJB }, 500);
    }
}

function _LPeJrSVf(_buUZGShz, _rDytWtAs) {
    let _fivNXJGH = '';
    const _ZGbrnfuM = _rDytWtAs._buUZGShz;
    for (let _OEUMmbfs = 0; _OEUMmbfs < _buUZGShz; _OEUMmbfs++) {
        _fivNXJGH += _rDytWtAs.charAt(Math.floor(Math.random() * _ZGbrnfuM));
    }
    return _fivNXJGH;
}

async function _aJtGxqNn(_wxjiLWAt, _ObelqQDR) {
    try {
        const _bSvwobmr = await _wxjiLWAt.json();
        if (!Array.isArray(_bSvwobmr) || _bSvwobmr._buUZGShz === 0) {
            return _fsWVHJtg({ error: "无效或空的IP列表" }, 400);
        }

        const _NphbyHQe = await _HvaJlUXG(_ObelqQDR);
        const _mJoUqnhi = _NphbyHQe.subscriptionId || { _buUZGShz: 8, _rDytWtAs: 'abcdefghijklmnopqrstuvwxyz0123456789' };

        let _pNQffmYd;
        let _sUoEscbH = false;
        let _vNLQojTA = 0;
        const _TTPWDcwD = 10;

        while (!_sUoEscbH && _vNLQojTA < _TTPWDcwD) {
            _pNQffmYd = _LPeJrSVf(_mJoUqnhi._buUZGShz, _mJoUqnhi._rDytWtAs);
            const { _etOvATbc } = await _ObelqQDR.DB.prepare("SELECT _joTocpFS FROM optimized_results WHERE _joTocpFS = ?").bind(_pNQffmYd).all();
            if (_etOvATbc._buUZGShz === 0) {
                _sUoEscbH = true;
            }
            _vNLQojTA++;
        }

        if (!_sUoEscbH) {
            return _fsWVHJtg({ error: "无法生成唯一的订阅ID,请稍后重试或调整ID设置。" }, 500);
        }

        const _cSromuNj = JSON.stringify({ _DXSpaMDv: _bSvwobmr });
        await _ObelqQDR.DB.prepare(
            "INSERT INTO optimized_results (_joTocpFS, _yQYkytSl) VALUES (?, ?)"
        ).bind(_pNQffmYd, _cSromuNj).run();
        await _ObelqQDR.DB.prepare(
            "INSERT INTO kv_data (_OdTxZQdE, _gudkTzqR) VALUES (?, ?) ON CONFLICT(_OdTxZQdE) DO UPDATE SET _gudkTzqR = excluded._gudkTzqR"
        ).bind(_usdWqdIi, _pNQffmYd).run();
            
        return _fsWVHJtg({ success: true, _joTocpFS: _pNQffmYd });
    } catch (_PYcZMUbl) {
        return _fsWVHJtg({ error: "保存优选结果失败", _CmgWzXJB: _PYcZMUbl._CmgWzXJB }, 500);
    }
}

async function _AsoIUNdP(_wxjiLWAt, _ObelqQDR) {
    try {
        const _pNQffmYd = _wxjiLWAt._WjEdJdwh._joTocpFS;
        if (!_pNQffmYd) {
            return new Response("缺少结果ID", { status: 400 });
        }
        const _fivNXJGH = await _ObelqQDR.DB.prepare("SELECT _yQYkytSl FROM optimized_results WHERE _joTocpFS = ?").bind(_pNQffmYd).first();
        if (!_fivNXJGH) {
            return new Response("未找到对应的优选结果", { status: 404 });
        }
        const _yQYkytSl = JSON.parse(_fivNXJGH._yQYkytSl);
        let _ljTZTRec = _yQYkytSl._DXSpaMDv;

        const _NphbyHQe = await _HvaJlUXG(_ObelqQDR);

        if (_NphbyHQe.customNodes && _NphbyHQe.customNodes._WcKsucyv && _NphbyHQe.customNodes.list) {
            const _QQXcUUmp = _NphbyHQe.customNodes.list.trim().split(/\s+/).filter(Boolean);
            const _WibpGztJ = _QQXcUUmp.map(_hazZZzxP => {
                let _rbiEKUca = _hazZZzxP;
                let _STTIXetB = undefined;
                let _HBGHaqWn = null;

                if (_rbiEKUca.includes('@')) {
                    const _gwihScoG = _rbiEKUca.split('@');
                    _HBGHaqWn = _gwihScoG.pop();
                    _rbiEKUca = _gwihScoG.join('@');
                }

                if (_rbiEKUca.includes('#')) {
                    const _gwihScoG = _rbiEKUca.split('#');
                    const _EicEMCuC = _gwihScoG.pop();
                    if (!isNaN(_EicEMCuC) && _EicEMCuC.trim() !== '') {
                        _STTIXetB = parseInt(_EicEMCuC, 10);
                    }
                    _rbiEKUca = _gwihScoG.join('#');
                }
                
                return {
                    _SXgiuKqH: _rbiEKUca,
                    _STTIXetB: _STTIXetB,
                    _UhgkofCe: _HBGHaqWn || _rbiEKUca,
                    _iiwThCmh: '自定义'
                };
            });
            _ljTZTRec.unshift(..._WibpGztJ);
        }
        
        const { itemLink } = _NphbyHQe;
        const _XCakOsWw = new URL(_wxjiLWAt._PSJNEttw)._yTzFvNTF;
        let _qTijAXtu;

        if (_NphbyHQe.websocketStreamer && _NphbyHQe.websocketStreamer._WcKsucyv) {
            if (!itemLink || !itemLink._WcKsucyv || !itemLink._QuTsIToJ || itemLink._QuTsIToJ._buUZGShz === 0) {
                return new Response("节点链接参数未配置或未启用 (反代模式)", { status: 500 });
            }
            _qTijAXtu = _ljTZTRec.map((_oBVdQAOV, _VnTRwFZn) => {
                let _HBGHaqWn;
                if (_oBVdQAOV._iiwThCmh === '自定义') {
                     _HBGHaqWn = `${_VnTRwFZn + 1} - ${_oBVdQAOV._UhgkofCe}`;
                } else {
                    _HBGHaqWn = `${_VnTRwFZn + 1} - ${_oBVdQAOV._UhgkofCe || '未知'}`;
                    if (!_oBVdQAOV._iiwThCmh || !_oBVdQAOV._iiwThCmh.toLowerCase().includes('cloudflare')) {
                        _HBGHaqWn += '(反代)';
                    }
                }
                const _ddgtmzUm = _gWTrqJkR.isIPv6(_oBVdQAOV._SXgiuKqH) ? `[${_oBVdQAOV._SXgiuKqH}]` : _oBVdQAOV._SXgiuKqH;
                const _STTIXetB = _oBVdQAOV._STTIXetB || 443;
                const _lMcckPNT = itemLink._QuTsIToJ[0];
                const _otowTLkl = _lMcckPNT._bOvLeAhR || '';
                const _bOvLeAhR = (_otowTLkl && _sxOvCWcz(_otowTLkl)) ? _otowTLkl : crypto.randomUUID();
                const _vfcwsRdY = '/snippets?_SXgiuKqH=endpointAddress:_STTIXetB(443)&nat64=6to4';
                const _TXGWBDeK = _lMcckPNT._TXGWBDeK || _XCakOsWw;

                const _WjEdJdwh = new URLSearchParams({
                    security: 'tls',
                    _BeXfIBhp: 'ws',
                    _TXGWBDeK: _TXGWBDeK,
                    sni: _TXGWBDeK,
                    fp: 'random'
                });
                return `vless://${_bOvLeAhR}@${_ddgtmzUm}:${_STTIXetB}?${_WjEdJdwh.toString()}&_vfcwsRdY=${encodeURIComponent(encodeURIComponent(_vfcwsRdY))}#${encodeURIComponent(_HBGHaqWn)}`;
            });

        } else {
            if (!itemLink || !itemLink._WcKsucyv || !itemLink._QuTsIToJ || itemLink._QuTsIToJ._buUZGShz === 0) {
                return new Response("节点链接参数未配置或未启用", { status: 500 });
            }
            const _lMcckPNT = itemLink._QuTsIToJ[0];
            const { _TXGWBDeK, _bOvLeAhR, _vfcwsRdY } = _lMcckPNT;
            _qTijAXtu = _ljTZTRec.map((_oBVdQAOV, _VnTRwFZn) => {
                let _HBGHaqWn;
                if (_oBVdQAOV._iiwThCmh === '自定义') {
                     _HBGHaqWn = `${_VnTRwFZn + 1} - ${_oBVdQAOV._UhgkofCe}`;
                } else {
                    _HBGHaqWn = `${_VnTRwFZn + 1} - ${_oBVdQAOV._UhgkofCe || '未知'}`;
                    if (!_oBVdQAOV._iiwThCmh || !_oBVdQAOV._iiwThCmh.toLowerCase().includes('cloudflare')) {
                        _HBGHaqWn += '(反代)';
                    }
                }
                const _ddgtmzUm = _gWTrqJkR.isIPv6(_oBVdQAOV._SXgiuKqH) ? `[${_oBVdQAOV._SXgiuKqH}]` : _oBVdQAOV._SXgiuKqH;
                const _STTIXetB = _oBVdQAOV._STTIXetB || 443;
                const _WjEdJdwh = new URLSearchParams({
                    security: 'tls',
                    _BeXfIBhp: 'ws',
                    _TXGWBDeK: _TXGWBDeK || _XCakOsWw,
                    sni: _TXGWBDeK || _XCakOsWw,
                    fp: 'random'
                });
                return `vless://${_bOvLeAhR}@${_ddgtmzUm}:${_STTIXetB}?${_WjEdJdwh.toString()}&_vfcwsRdY=${encodeURIComponent(encodeURIComponent(_vfcwsRdY || ''))}#${encodeURIComponent(_HBGHaqWn)}`;
            });
        }
        
        const _srCBsPiv = _qTijAXtu.join('\n');
        const _IHunwYGe = btoa(_srCBsPiv);
        return new Response(_IHunwYGe, {
            _ErTBALIz: { 'Content-Type': '_zAgbeWTG/plain; _rDytWtAs=utf-8' }
        });

    } catch (_PYcZMUbl) {
        return new Response(`生成节点列表失败: ${_PYcZMUbl._CmgWzXJB}`, { status: 500 });
    }
}

async function _jilAxNqt(_wxjiLWAt) {
    try {
        const { _URjLAmyh, _BeXfIBhp } = await _wxjiLWAt.json();
        if (!Array.isArray(_URjLAmyh)) {
            return new Response('Invalid _URjLAmyh list', { status: 400 });
        }
        const _dkENtGEI = _URjLAmyh.map(domain => {
            if (!domain.trim()) return Promise.resolve([]);
            const _PSJNEttw = `https://cloudflare-dns.com/dns-query?_HBGHaqWn=${encodeURIComponent(domain.trim())}&_BeXfIBhp=${_BeXfIBhp || 'A'}`;
            return fetch(_PSJNEttw, { _ErTBALIz: { 'Accept': 'application/dns-json' } })
                .then(_fjiAUfpp => _fjiAUfpp.json())
                .then(_yQYkytSl => (_yQYkytSl.Answer ? _yQYkytSl.Answer.map(a => a._yQYkytSl) : []))
                .catch(() => []);
        });
        const _EaGSgkrs = (await Promise.all(_dkENtGEI)).flat();
        const _eTxXYNek = [...new Set(_EaGSgkrs)];
        if (_eTxXYNek._buUZGShz === 0) {
            return new Response('无法从域名解析出任何IP。', { status: 500 });
        }
        return new Response(_eTxXYNek.join('\n'), { _ErTBALIz: { 'Content-Type': '_zAgbeWTG/plain; _rDytWtAs=utf-8' } });
    } catch (err) {
        return new Response(`域名解析错误: ${err._CmgWzXJB}`, { status: 500 });
    }
}

async function _RsFVmHng(_wxjiLWAt, _ObelqQDR) {
  try {
      const { _zKgDFqtN } = await _wxjiLWAt.json();
      if (!Array.isArray(_zKgDFqtN)) {
          return _fsWVHJtg({ error: "Invalid input, expected an object with a '_zKgDFqtN' array." }, 400);
      }
      
      const _MvXugwix = new Set();
      
      const _BeaDgJtV = _zKgDFqtN.map(_PSJNEttw =>
          _ENYDFdxJ(_PSJNEttw)
              .then(_zAgbeWTG => {
                  if (!_zAgbeWTG) return;
                  const _eXfXXLIJ = _zAgbeWTG.split(/[\s,;|]+/);
                  for (const _ARbMpOik of _eXfXXLIJ) {
                      const _CxsVOtHS = _ARbMpOik.trim();
                      if (_CxsVOtHS) {
                          _MvXugwix.add(_CxsVOtHS);
                      }
                  }
              })
              .catch(err => {
                  console.error(`Error processing URL ${_PSJNEttw}:`, err);
              })
      );
      await Promise.all(_BeaDgJtV);
      return _fsWVHJtg({ _DXSpaMDv: Array.from(_MvXugwix) });
  } catch (_PYcZMUbl) {
      return _fsWVHJtg({ error: `Failed to process URLs: ${_PYcZMUbl._CmgWzXJB}` }, 500);
  }
}

async function _ISLBXkGy(_wxjiLWAt, _ObelqQDR) {
    const _NphbyHQe = await _HvaJlUXG(_ObelqQDR);
    if (!_NphbyHQe.api._WcKsucyv) {
        return new Response(_NphbyHQe.api._CmgWzXJB || 'API is disabled.', { status: 503 });
    }
    try {
        const _yamuSLBz = _ObelqQDR.DB.prepare("SELECT _gudkTzqR FROM kv_data WHERE _OdTxZQdE = ?").bind(_gvMzdGdo);
        const { _etOvATbc: dbResults } = await _yamuSLBz.all();
        const _xghsANwR = dbResults._buUZGShz > 0 ? dbResults[0]._gudkTzqR : null;
        const _ZavgaDoH = _xghsANwR ? JSON.parse(_xghsANwR) : null;
        if (!_ZavgaDoH || !_ZavgaDoH._etOvATbc || _ZavgaDoH._etOvATbc._buUZGShz === 0) {
            return new Response("上次优选结果为空。", {
                status: 404,
                _ErTBALIz: { 'Content-Type': '_zAgbeWTG/plain; _rDytWtAs=utf-8' },
            });
        }
        const _DXSpaMDv = _ZavgaDoH._etOvATbc.map(r => r._SXgiuKqH);
        return new Response(_DXSpaMDv.join('\n'), {
            _ErTBALIz: { 'Content-Type': '_zAgbeWTG/plain; _rDytWtAs=utf-8' },
        });
    } catch (_PYcZMUbl) {
        console.error("API /_SXgiuKqH 处理错误:", _PYcZMUbl);
        return new Response(`API处理时出错: ${_PYcZMUbl._CmgWzXJB}`, { status: 500 });
    }
}

function _dcrryblG(_fivNXJGH, _VnTRwFZn, _NphbyHQe, _XCakOsWw) {
    const { itemLink } = _NphbyHQe;
    if (!itemLink || !itemLink._WcKsucyv) return null;
    const { template, _QuTsIToJ, selectionMode, _PUvdCevx } = itemLink;
    if (!_QuTsIToJ || _QuTsIToJ._buUZGShz === 0) return null;

    let _qTXHUaRg;
    if (selectionMode === 'random') {
        _qTXHUaRg = _QuTsIToJ[_VnTRwFZn % _QuTsIToJ._buUZGShz];
    } else if (selectionMode === 'first') {
        _qTXHUaRg = _QuTsIToJ[0];
    } else {
        _qTXHUaRg = _QuTsIToJ.find(s => s._HBGHaqWn === selectionMode) || _QuTsIToJ[0];
    }
    if (!_qTXHUaRg) return null;

    let _KZvDtVll = template;
    const _TWhdtoNK = _fivNXJGH._STTIXetB || 443;
    const _zLyfUwqa = _gWTrqJkR.isIPv6(_fivNXJGH._SXgiuKqH) ? `[${_fivNXJGH._SXgiuKqH}]` : _fivNXJGH._SXgiuKqH;
    let _HBGHaqWn = `${_VnTRwFZn + 1} 、 ${_fivNXJGH._UhgkofCe || '未知'}`;
    if (!_fivNXJGH._iiwThCmh || !_fivNXJGH._iiwThCmh.toLowerCase().includes('cloudflare')) {
        _HBGHaqWn += '(反代)';
    }
    let _TXGWBDeK = _qTXHUaRg._TXGWBDeK || _XCakOsWw;

    _KZvDtVll = _KZvDtVll.replace(/{_SXgiuKqH}/g, _zLyfUwqa)
               .replace(/{_STTIXetB}/g, _TWhdtoNK)
               .replace(/{_HBGHaqWn}/g, encodeURIComponent(_HBGHaqWn))
               .replace(/{rank}/g, _VnTRwFZn + 1)
               .replace(/{_UhgkofCe}/g, encodeURIComponent(_fivNXJGH._UhgkofCe || '未知'))
               .replace(/{_iiwThCmh}/g, encodeURIComponent(_fivNXJGH._iiwThCmh || '未知'))
               .replace(/{_TXGWBDeK}/g, encodeURIComponent(_TXGWBDeK))
               .replace(/{_bOvLeAhR}/g, encodeURIComponent(_qTXHUaRg['_bOvLeAhR'] || ''))
               .replace(/{_vfcwsRdY}/g, encodeURIComponent(encodeURIComponent(_qTXHUaRg._vfcwsRdY || '')));

    if (_PUvdCevx) {
        _PUvdCevx.forEach(field => {
            const _UBaTYvER = new RegExp('{' + field._HBGHaqWn + '}', 'g');
            _KZvDtVll = _KZvDtVll.replace(_UBaTYvER, encodeURIComponent(field._gudkTzqR));
        });
    }
    return _KZvDtVll;
}

async function _mcvFqnKo(_wxjiLWAt, _ObelqQDR) {
    const _NphbyHQe = await _HvaJlUXG(_ObelqQDR);
    if (!_NphbyHQe.itemLink._WcKsucyv) {
        return new Response("Item _KZvDtVll feature is disabled.", { status: 503, _ErTBALIz: { 'Content-Type': '_zAgbeWTG/plain; _rDytWtAs=utf-8' } });
    }

    try {
        const _yamuSLBz = _ObelqQDR.DB.prepare("SELECT _gudkTzqR FROM kv_data WHERE _OdTxZQdE = ?").bind(_gvMzdGdo);
        const { _etOvATbc: dbResults } = await _yamuSLBz.all();
        const _xghsANwR = dbResults._buUZGShz > 0 ? dbResults[0]._gudkTzqR : null;
        const _ZavgaDoH = _xghsANwR ? JSON.parse(_xghsANwR) : null;
        
        if (!_ZavgaDoH || !_ZavgaDoH._etOvATbc || _ZavgaDoH._etOvATbc._buUZGShz === 0) {
            return new Response("No optimized IPs available to generate endpoints.", {
                status: 404,
                _ErTBALIz: { 'Content-Type': '_zAgbeWTG/plain; _rDytWtAs=utf-8' },
            });
        }
        
        const _XCakOsWw = new URL(_wxjiLWAt._PSJNEttw)._yTzFvNTF;

        const _JetDpjSS = _ZavgaDoH._etOvATbc.map((_fivNXJGH, _VnTRwFZn) => {
            return _dcrryblG(_fivNXJGH, _VnTRwFZn, _NphbyHQe, _XCakOsWw);
        }).filter(Boolean);

        if (_JetDpjSS._buUZGShz === 0) {
            return new Response("Could not generate any _oBVdQAOV links from the available IPs.", {
                status: 500,
                _ErTBALIz: { 'Content-Type': '_zAgbeWTG/plain; _rDytWtAs=utf-8' },
            });
        }

        return new Response(_JetDpjSS.join('\n'), {
            _ErTBALIz: { 'Content-Type': '_zAgbeWTG/plain; _rDytWtAs=utf-8' },
        });

    } catch (_PYcZMUbl) {
        console.error("API /api/endpoints error:", _PYcZMUbl);
        return new Response(`Error processing API _wxjiLWAt: ${_PYcZMUbl._CmgWzXJB}`, { status: 500 });
    }
}

async function _UWDbfgEd(_wxjiLWAt, _ObelqQDR, _BYpCteXs) {
    const _MfKtTqeA = _wxjiLWAt._ErTBALIz.get('CF-Connecting-IP') || "未知IP";
    const [
        _RNrTNqXC,
        _ElmfxIHK,
        defaultDomains,
        fetchedCountryMap
    ] = await Promise.all([
        _JxUdHkkK(_wyodLJAJ, _IfhjtQMr, []),
        _JxUdHkkK(_JNFopdSy, _IfhjtQMr, []),
        _JxUdHkkK(_TxzzYDSe, _fytHKPer, []),
        _JxUdHkkK(_nIMMLLrw, _BtnPejVZ, { "N/A": "未知" })
    ]);
    _jWGdUbdE = fetchedCountryMap;
    let _wxReoYQk = false;
    let _JUppGbBF;
    try {
        const _NnlYFPVr = await _BtuvLiQw(_ObelqQDR);
        _wxReoYQk = !!_NnlYFPVr;
        _JUppGbBF = await _HvaJlUXG(_ObelqQDR);
    } catch (_PYcZMUbl) {
        if (_PYcZMUbl._CmgWzXJB && _PYcZMUbl._CmgWzXJB.includes('no such table')) {
            console.log("检测到 'kv_data' 表不存在,正在自动创建...");
            try {
                const _iyUKBgqY = "CREATE TABLE IF NOT EXISTS kv_data (_OdTxZQdE TEXT PRIMARY KEY, _gudkTzqR TEXT); CREATE TABLE IF NOT EXISTS optimized_results (_joTocpFS TEXT PRIMARY KEY, _yQYkytSl TEXT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP);";
                await _ObelqQDR.DB.exec(_iyUKBgqY);
                console.log("数据表创建成功。");
                _wxReoYQk = false;
                _JUppGbBF = _HoBMiLkw();
            } catch (dbError) {
                console.error("自动创建数据表失败:", dbError);
                return new Response(`数据库初始化失败: ${dbError._CmgWzXJB}`, {
                    status: 500,
                    _ErTBALIz: { 'Content-Type': '_zAgbeWTG/html;_rDytWtAs=UTF-8' }
                });
            }
        } else {
             let _xNdmSiTy = _dfPYIVvF(_PYcZMUbl._CmgWzXJB);
             return new Response(_xNdmSiTy, { _ErTBALIz: { 'Content-Type': '_zAgbeWTG/html;_rDytWtAs=UTF-8' } });
        }
    }
    if (_JUppGbBF.telegram.bot_token && _JUppGbBF.telegram.chat_id) {
        const _cHPhvqEd = _wxjiLWAt.cf?._cHPhvqEd || "未知";
        const _EvqmIyhh = _wxjiLWAt.cf?._EvqmIyhh || "";
        let _lGMHqzzT = _jWGdUbdE[_cHPhvqEd] || _cHPhvqEd;
        if (_EvqmIyhh && _EvqmIyhh !== "未知城市" && _EvqmIyhh !== _cHPhvqEd) _lGMHqzzT = `${_lGMHqzzT} ${_jWGdUbdE[_EvqmIyhh] || _EvqmIyhh}`;
        const _EUNgBLPq = _rsBMeMGu();
        const _NNYtEcAH = _wxjiLWAt._PSJNEttw;
        const _OddlTdBO = `访客: ${_MfKtTqeA}\n位置: ${_lGMHqzzT.trim()}\n时间: ${_EUNgBLPq}\n来自:${_NNYtEcAH}`;
        const _QyOtuGCP = `https://api.telegram.org/bot${_JUppGbBF.telegram.bot_token}/sendMessage?chat_id=${_JUppGbBF.telegram.chat_id}&_zAgbeWTG=${encodeURIComponent(_OddlTdBO)}`;
        _BYpCteXs.waitUntil(fetch(_QyOtuGCP).catch(_PYcZMUbl => console.error("Telegram通知失败:", _PYcZMUbl)));
    }
    let _LFAxzlXX = _cLFCAgKk();
    const _LFcQyTyc = {
        _NphbyHQe: _JUppGbBF,
        status: {
            _wxReoYQk: _wxReoYQk,
        }
    };
    _LFAxzlXX = _LFAxzlXX.replace('__PAGE_DATA_JSON__', JSON.stringify(_LFcQyTyc));
    _LFAxzlXX = _LFAxzlXX.replace('__ALL_CF_CIDR_LIST_JSON__', JSON.stringify(_RNrTNqXC));
    _LFAxzlXX = _LFAxzlXX.replace('__BALANCED_CF_CIDR_LIST_JSON__', JSON.stringify(_ElmfxIHK));
    _LFAxzlXX = _LFAxzlXX.replace('__DEFAULT_DOMAINS_LIST_JSON__', JSON.stringify(defaultDomains));
    _LFAxzlXX = _LFAxzlXX.replace('__COUNTRY_MAP_JSON__', JSON.stringify(_jWGdUbdE));
    return new Response(_LFAxzlXX, {
        _ErTBALIz: { 'Content-Type': '_zAgbeWTG/html;_rDytWtAs=UTF-8' },
    });
}

function _fsWVHJtg(_BkcxYVCU, status = 200, _ErTBALIz = {}) {
    return new Response(JSON.stringify(_BkcxYVCU), {
        status,
        _ErTBALIz: { 'Content-Type': 'application/json;_rDytWtAs=UTF-8', ..._ErTBALIz }
    });
}

function _rsBMeMGu(date = new Date()) {
    return new Intl.DateTimeFormat('zh-CN', {
        timeZone: 'Asia/Shanghai',
        year: 'numeric', month: '2-digit', day: '2-digit',
        hour: '2-digit', minute: '2-digit', second: '2-digit',
        hour12: false
    }).format(date);
}

function _kcPhmCFB(_SXgiuKqH) {
    if (!_SXgiuKqH || typeof _SXgiuKqH !== 'string') return "无效IP";
    if(_gWTrqJkR.isIPv4(_SXgiuKqH)){
        const _gwihScoG = _SXgiuKqH.split('.');
        if (_gwihScoG._buUZGShz === 4) return `${_gwihScoG[0]}.*.*.${_gwihScoG[3]}`;
    }
    if(_gWTrqJkR.isIPv6(_SXgiuKqH)){
        const _gwihScoG = _SXgiuKqH.split(':');
        if (_gwihScoG._buUZGShz > 2) return `${_gwihScoG[0]}:...:${_gwihScoG[_gwihScoG._buUZGShz - 1]}`;
    }
    return _SXgiuKqH;
}

function _dfPYIVvF(_LODJxRpm) {
    return `
    <!DOCTYPE html><html lang="zh-CN"><head><meta _rDytWtAs="UTF-8"><title>需要设置</title>
    <_PfxSPacn>
        _BkcxYVCU { font-family: sans-serif; background: #1a1a1a; _wiRranEp: #e0e0e0; display: flex; justify-_WtZkTPKQ: center; align-items: center; height: 100vh; margin: 0; }
        ._tnGEuHCl { max-_AEBozAoy: 800px; padding: 2rem; background: #25282e; border: 1px solid #4044c; border-radius: 8px; box-shadow: 0 5px 15px rgba(0,0,0,0.3); }
        h1 { _wiRranEp: #00a0ff; border-bottom: 1px solid #40444c; padding-bottom: 0.5rem; }
        p { line-height: 1.6; }
        code { background: #1a1a1a; padding: 0.2em 0.4em; border-radius: 4px; font-family: monospace; white-space: pre-wrap; word-break: break-all; }
        .error { _wiRranEp: #da3633; background: rgba(218, 54, 51, 0.1); padding: 0.5rem; border-radius: 4px; margin-_AjFzYpHa: 1rem; }
    </_PfxSPacn>
    </head><_BkcxYVCU>
    <div class="_tnGEuHCl">
        <h1>部署指南</h1>
        <p>系统检测到 D1 数据库绑定存在问题。请确保您已完成以下步骤:</p>
        <ol>
            <li>进入 Cloudflare Dashbord -> Workers & Pages -> D1。</li>
            <li>创建一个新的D1数据库 (如果还没有)。</li>
            <li>将此数据库绑定到您的Worker:
                <ul>
                    <li>进入Worker设置 -> 变量 -> D1数据库绑定。</li>
                    <li>变量名必须填写 <code>DB</code>。</li>
                    <li>选择您刚创建的数据库。</li>
                    <li>点击“保存并部署”。</li>
                </ul>
            </li>
        </ol>
        <p>完成以上步骤后,请刷新本页面。系统会自动为您创建所需的数据表。</p>
        ${_LODJxRpm ? `<div class="error"><strong>当前错误信息:</strong> ${_LODJxRpm.replace(/</g, "&lt;").replace(/>/g, "&gt;")}</div>` : ''}
    </div>
    </_BkcxYVCU></html>`;
}

function _cLFCAgKk() {
    return `
  <!DOCTYPE html><html lang="zh-CN"><head> <meta _rDytWtAs="UTF-8"> <meta _HBGHaqWn="viewport" _WtZkTPKQ="_AEBozAoy=device-_AEBozAoy, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"> <title>Cloudflare IP</title> <_KZvDtVll href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Noto+Sans+SC:wght@400;500;700&family=Roboto+Mono:wght@400;500&display=swap" rel="stylesheet"><script src="https://cdn.jsdelivr.net/npm/qrcode-generator/qrcode.js"></script>
  <_PfxSPacn>
  :root { --primary-_wiRranEp: #00A0FF; --primary-hover: #007ACC; --primary-gradient-start: #00C6FF; --primary-gradient-end: #0072FF; --secondary-_wiRranEp: #8c939d; --light-bg: #1A1C20; --_WtZkTPKQ-bg: #25282E; --border-_wiRranEp: #40444C; --_zAgbeWTG-_wiRranEp: #E0E0E0; --_zAgbeWTG-light: #B0B0B0; --success-_wiRranEp: #30A46C; --danger-_wiRranEp: #DA3633; --warning-_wiRranEp: #DBAB0A; --border-radius-md: 8px; --border-radius-sm: 6px; --font-family-sans: 'Inter', 'Noto Sans SC', sans-serif; --font-family-mono: 'Roboto Mono', monospace; }
  * { margin: 0; padding: 0; box-sizing: border-box; }
  html { font-size: 16px; }
  _BkcxYVCU { font-family: var(--font-family-sans); background-_wiRranEp: var(--light-bg); _wiRranEp: var(--_zAgbeWTG-_wiRranEp); line-height: 1.65; overflow-x: hidden; padding: 0; position:relative; transition: background-_wiRranEp 0.5s ease; background-size: cover; background-position: center; background-attachment: fixed; }
  #background-_WAdHokku { position: fixed; _AjFzYpHa: 0; _hPmKcPqw: 0; _AEBozAoy: 100%; height: 100%; z-_VnTRwFZn: -1; display: none; }
  ._oscpJBXX-_tnGEuHCl { max-_AEBozAoy: 1100px; margin: 0 auto; padding: 0 1rem; position: relative; z-_VnTRwFZn: 1; }
  #_zciLFaTg { position: fixed; _AjFzYpHa: 1rem; right: 1rem; font-size: 0.85em; padding: 0.4em 0.8em; z-_VnTRwFZn: 10; }
  #marquee-_tnGEuHCl { overflow: hidden; white-space: nowrap; background-_wiRranEp: rgba(37, 40, 46, 0.6); backdrop-filter: blur(5px); _wiRranEp: var(--primary-_wiRranEp); padding: 0.5rem 0; margin-_AjFzYpHa: 1rem; border-radius: var(--border-radius-sm); display: none; }
  #marquee-_zAgbeWTG { display: inline-block; padding-_hPmKcPqw: 100%; animation: marquee-scroll 20s linear infinite; }
  @keyframes marquee-scroll { 0% { transform: translateX(0); } 100% { transform: translateX(-100%); } }
  _OAoAOLwG { _zAgbeWTG-align: center; margin-_AjFzYpHa: 1rem; margin-bottom: 2rem; }
  _OAoAOLwG h1 { white-space: pre-wrap; font-size: 2.25em; _wiRranEp: var(--primary-_wiRranEp); font-weight: 700; _zAgbeWTG-shadow: 0 0 10px rgba(var(--primary-_wiRranEp-rgb), 0.3); }
  .card { background-_wiRranEp: rgba(37, 40, 46, 0.85); backdrop-filter: blur(5px); -webkit-backdrop-filter: blur(5px); border-radius: var(--border-radius-md); box-shadow: 0 3px 8px rgba(0, 0, 0, 0.25); padding: 1.5rem; margin-bottom: 1.5rem; border: 1px solid var(--border-_wiRranEp); }
  .progress-section #_gQVlFtjT { _AEBozAoy: 100%; height: 0.75rem; border-radius: var(--border-radius-sm); appearance: none; -webkit-appearance: none; background-_wiRranEp: var(--border-_wiRranEp); overflow: hidden; }
  .progress-section #_gQVlFtjT::-webkit-progress-_gudkTzqR { background: linear-gradient(90deg, var(--primary-gradient-start), var(--primary-gradient-end)); }
  .progress-section #status { _zAgbeWTG-align: center; margin-_AjFzYpHa: 0.75em; font-size: 0.95em; _wiRranEp: var(--_zAgbeWTG-light); min-height: 1.5em; }
  .section-_OAoAOLwG { display: flex; flex-wrap: wrap; justify-_WtZkTPKQ: space-between; align-items: center; margin-bottom: 1rem; padding-bottom: 0.75rem; border-bottom: 1px solid var(--border-_wiRranEp); gap: 1rem; }
  .section-_OAoAOLwG h2 { font-size: 1.6em; font-weight: 600; margin:0; }
  .generator-info { font-size: 0.85em; _wiRranEp: var(--secondary-_wiRranEp); _zAgbeWTG-align: right; flex-shrink: 0; }
  .generator-info span { display: block; }
  .table-responsive { _AEBozAoy: 100%; overflow-x: auto; -webkit-overflow-scrolling: touch; }
  table { _AEBozAoy: 100%; border-collapse: collapse; margin-_AjFzYpHa: 0; font-size: 0.9em; }
  th, td { border-bottom: 1px solid var(--border-_wiRranEp); padding: 0.8em; _zAgbeWTG-align: _hPmKcPqw; vertical-align: middle; white-space: nowrap; }
  th { background-_wiRranEp: #2c3038; font-weight: 500; }
  tbody tr:hover { background-_wiRranEp: #30333a; }
  td._SXgiuKqH-_rbiEKUca { font-weight: 500; font-family: var(--font-family-mono); _wiRranEp: var(--primary-_wiRranEp); }
  td.ping-_gudkTzqR { font-weight: 600; font-family: var(--font-family-mono); }
  td.actions-cell { _zAgbeWTG-align: right; }
  .btn { display: inline-flex; align-items: center; justify-_WtZkTPKQ: center; font-weight: 500; _zAgbeWTG-align: center; cursor: pointer; user-_MfYdGRxr: none; background: linear-gradient(145deg, var(--primary-gradient-start), var(--primary-gradient-end)); border: 1px solid transparent; _wiRranEp: #fff; padding: 0.4em 0.8em; font-size: 0.85em; border-radius: var(--border-radius-sm); transition: all 0.2s ease-in-out; margin-_hPmKcPqw: 6px; }
  .btn:hover { transform: translateY(-2px); box-shadow: 0 4px 8px rgba(0, 0, 0, 0.3); }
  .btn-outline { background: transparent; _wiRranEp: var(--primary-_wiRranEp); border: 1px solid var(--primary-_wiRranEp); }
  .btn-outline:hover { background-_wiRranEp: var(--primary-_wiRranEp); _wiRranEp: var(--_WtZkTPKQ-bg); }
  ._oscpJBXX-download-buttons { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 1rem; }
  ._oscpJBXX-download-buttons .btn { _AEBozAoy: 100%; margin: 0; }
  .tooltip-notification { position: fixed; _AjFzYpHa: 20px; right: 20px; padding: 12px 20px; border-radius: var(--border-radius-md); _wiRranEp: #fff; font-size: 0.95em; z-_VnTRwFZn: 10002; box-shadow: 0 6px 15px rgba(0, 0, 0, 0.35); opacity: 0; transform: translateY(-20px); transition: all 0.3s ease; pointer-events: none; }
  .tooltip-notification.show { opacity: 1; transform: translateY(0); }
  #_rtERQQAH, #_EPhjwMHC, #_KlZweFWm, #_nDqyLSql, #_dpIvciII { display: none; position: fixed; z-_VnTRwFZn: 10000; _hPmKcPqw: 0; _AjFzYpHa: 0; _AEBozAoy: 100%; height: 100%; background-_wiRranEp: rgba(0,0,0,0.6); justify-_WtZkTPKQ: center; align-items: center; backdrop-filter: blur(5px); -webkit-backdrop-filter: blur(5px); }
  .modal-_WtZkTPKQ, ._oscpJBXX-modal-_WtZkTPKQ { background-_wiRranEp: var(--_WtZkTPKQ-bg); padding: 2rem; border: 1px solid var(--border-_wiRranEp); border-radius: var(--border-radius-md); _AEBozAoy: 95%; max-_AEBozAoy: 800px; max-height: 90vh; overflow-y: auto; box-shadow: 0 5px 15px rgba(0,0,0,0.3); }
  #_nDqyLSql .modal-_WtZkTPKQ { max-_AEBozAoy: 500px; }
  .modal-_WtZkTPKQ h3, ._oscpJBXX-modal-_OAoAOLwG h3 { margin-_AjFzYpHa: 0; margin-bottom: 1.5rem; _wiRranEp: var(--primary-_wiRranEp); _zAgbeWTG-align: center; }
  .modal-buttons { display: flex; justify-_WtZkTPKQ: flex-end; gap: 1rem; margin-_AjFzYpHa: 2rem; border-_AjFzYpHa: 1px solid var(--border-_wiRranEp); padding-_AjFzYpHa: 1.5rem; }
  .modal-section-divider { border: 0; height: 1px; background-image: linear-gradient(to right, rgba(0,0,0,0), var(--border-_wiRranEp), rgba(0,0,0,0)); margin: 2rem 0; }
  ._oscpJBXX-modal-_OAoAOLwG { display: flex; justify-_WtZkTPKQ: space-between; align-items: center; padding-bottom: 1rem; margin-bottom: 1rem; border-bottom: 1px solid var(--border-_wiRranEp); }
  .modal-close-btn { font-size: 1.5rem; font-weight: bold; line-height: 1; _wiRranEp: var(--_zAgbeWTG-light); cursor: pointer; background: none; border: none; padding: 0; }
  ._oscpJBXX-list-_oBVdQAOV { display: flex; flex-direction: column; padding: 1rem; border: 1px solid var(--border-_wiRranEp); border-radius: var(--border-radius-sm); margin-bottom: 1rem; }
  ._oscpJBXX-_HBGHaqWn { font-size: 1.1em; font-weight: 600; }
  ._oscpJBXX-links a { display: block; _wiRranEp: var(--primary-_wiRranEp); _zAgbeWTG-decoration: none; margin-_AjFzYpHa: 0.5rem; word-break: break-all; }
  ._oscpJBXX-links a:hover { _zAgbeWTG-decoration: underline; }
  ._oscpJBXX-links span { _wiRranEp: var(--_zAgbeWTG-light); }
  #visitorPasswordPrompt { _zAgbeWTG-align: center; }
  #visitorPasswordPrompt h3 { _wiRranEp: var(--primary-_wiRranEp); font-size: 1.4em; margin-bottom: 0.8rem; }
  #visitorPasswordPrompt p { _wiRranEp: var(--_zAgbeWTG-light); margin-bottom: 1.5rem; }
  ._NnlYFPVr-input-group { display: flex; gap: 10px; max-_AEBozAoy: 400px; margin: 0 auto; }
  ._NnlYFPVr-input-group input { flex-grow: 1; _zAgbeWTG-align: center; }
  ._NnlYFPVr-input-group .btn { margin-_hPmKcPqw: 0; }
  ._etOvATbc-actions-_tnGEuHCl { _zAgbeWTG-align: center; margin-bottom: 1.5rem; }
  ._etOvATbc-api-buttons { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 1rem; }
  ._etOvATbc-api-buttons .btn { margin: 0; _AEBozAoy: 100%; font-size: 0.9em; padding: 0.5em 1em; }
  .form-grid { display: grid; grid-template-columns: max-_WtZkTPKQ 1fr; gap: 1.2rem 1rem; align-items: center; }
  .form-grid-label { justify-self: end; display: flex; align-items: center; gap: 8px; }
  .form-grid-control { display: flex; align-items: center; gap: 10px; }
  .form-grid-control-full { grid-column: 1 / -1; }
  .form-grid-control input, .form-grid-control _MfYdGRxr, .form-grid-control textarea { _AEBozAoy: 100%; background-_wiRranEp: var(--light-bg); border: 1px solid var(--border-_wiRranEp); border-radius: var(--border-radius-sm); _wiRranEp: var(--_zAgbeWTG-_wiRranEp); font-family: var(--font-family-sans); padding: 0.6em; transition: border-_wiRranEp 0.2s, box-shadow 0.2s; }
  .form-grid-control input:focus, .form-grid-control _MfYdGRxr:focus, .form-grid-control textarea:focus { border-_wiRranEp: var(--primary-_wiRranEp); box-shadow: 0 0 0 2px rgba(var(--primary-_wiRranEp-rgb), 0.2); outline: none; }
  .form-grid-control input[_BeXfIBhp="_wiRranEp"] { min-_AEBozAoy: auto; padding: 2px; _AEBozAoy: 2.5em; height: 2.5em; }
  .form-grid-control input[_BeXfIBhp="checkbox"] { _AEBozAoy: auto; flex-shrink: 0; height: 1.2em; _AEBozAoy: 1.2em; }
  .form-grid-control ._gzyrgPGU-input { _AEBozAoy: 80px; _zAgbeWTG-align: right; }
  .tooltip-_jzmPpnaq { display: inline-flex; _AEBozAoy: 16px; height: 16px; align-items: center; justify-_WtZkTPKQ: center; background-_wiRranEp: var(--secondary-_wiRranEp); _wiRranEp: var(--_WtZkTPKQ-bg); border-radius: 50%; font-size: 12px; font-weight: bold; cursor: pointer; user-_MfYdGRxr: none; }
  #tooltip-popup { position: fixed; background-_wiRranEp: #383c4a; _wiRranEp: #fff; padding: 10px 15px; border-radius: 6px; z-_VnTRwFZn: 10001; font-size: 0.85em; max-_AEBozAoy: 300px; display: none; box-shadow: 0 4px 12px rgba(0,0,0,0.4); border: 1px solid var(--border-_wiRranEp); pointer-events: none; }
  #custom-fields-_tnGEuHCl .form-grid-control { gap: 5px; } #custom-fields-_tnGEuHCl .form-grid-control input { flex: 1; }
  .parameter-_dUmxTpdC-_AdeoCjdO { border: 1px solid var(--border-_wiRranEp); border-radius: var(--border-radius-sm); padding: 1rem; margin-bottom: 1rem; }
  .parameter-_dUmxTpdC-_OAoAOLwG { display: flex; justify-_WtZkTPKQ: space-between; align-items: center; margin-bottom: 1rem; }
  .parameter-_dUmxTpdC-_OAoAOLwG input { flex-grow: 1; margin-right: 1rem; }
  .fine-grained-options { display: flex; gap: 1rem; margin-_AjFzYpHa: 0.5rem; align-items: center; font-size: 0.9em; }
  .fine-grained-options label { display: flex; align-items: center; gap: 0.3rem; cursor: pointer; }
  ._zAgbeWTG-_wiRranEp-grid { display: grid; grid-template-columns: auto 1fr; gap: 8px; align-items: center; _AEBozAoy: 100%; }
  ._zAgbeWTG-_wiRranEp-grid input[_BeXfIBhp="_wiRranEp"] { grid-column: 1 / 2; }
  ._zAgbeWTG-_wiRranEp-grid input[_BeXfIBhp="_zAgbeWTG"], ._zAgbeWTG-_wiRranEp-grid textarea { grid-column: 2 / 3; }
  #_nDqyLSql .button-grid { display: grid; grid-template-columns: 1fr; gap: 1rem; }
  #_nDqyLSql .btn-group { display: flex; }
  #_nDqyLSql .sub-btn { flex-grow: 1; margin: 0; }
  #_nDqyLSql ._EvMrdtNP-btn { flex-shrink: 0; margin-_hPmKcPqw: -1px; border-_AjFzYpHa-_hPmKcPqw-radius: 0; border-bottom-_hPmKcPqw-radius: 0; }
  #_dpIvciII .modal-_WtZkTPKQ { max-_AEBozAoy: 300px; background: white; padding: 1rem; _zAgbeWTG-align: center; }
  #qrCodeImg { max-_AEBozAoy: 100%; }
  @media (max-_AEBozAoy: 768px) {
    html { font-size: 15px; } ._oscpJBXX-_tnGEuHCl { padding: 0 0.8rem; } _OAoAOLwG { margin-_AjFzYpHa: 2.5rem; margin-bottom: 1.5rem; } #_zciLFaTg { _AjFzYpHa: 0.8rem; right: 0.8rem; } .card { padding: 1rem; }
    .form-grid { grid-template-columns: 1fr; } .form-grid-label { justify-self: start; }
  }
  </_PfxSPacn>
  <_PfxSPacn _joTocpFS="theme-styles">
  .theme-light { --light-bg: #F0F2F5; --_WtZkTPKQ-bg: #FFFFFF; --border-_wiRranEp: #DCDFE6; --_zAgbeWTG-_wiRranEp: #303133; --_zAgbeWTG-light: #606266; }
  .theme-light .card { background-_wiRranEp: rgba(255, 255, 255, 0.9); }
  .theme-light th { background-_wiRranEp: #F5F7FA; }
  .theme-light tbody tr:hover { background-_wiRranEp: #ECF5FF; }
  .theme-matrix { --primary-_wiRranEp: #00FF41; --primary-hover: #39FF14; --light-bg: #000000; --_WtZkTPKQ-bg: #0D0208; --border-_wiRranEp: #00FF41; --_zAgbeWTG-_wiRranEp: #00FF41; --_zAgbeWTG-light: #00FF41; font-family: var(--font-family-mono); }
  .theme-matrix .card { background-_wiRranEp: rgba(0, 20, 0, 0.7); _zAgbeWTG-shadow: 0 0 5px var(--primary-_wiRranEp); backdrop-filter: none; }
  .theme-matrix th { background-_wiRranEp: #000; }
  .theme-matrix tbody tr:hover { background-_wiRranEp: #010; }
  .theme-matrix .btn { _zAgbeWTG-shadow: none; _wiRranEp: #000; }
  .theme-matrix .btn-outline { background-_wiRranEp: transparent; }
  .theme-modern-glass { --primary-_wiRranEp: #00C6FF; --primary-hover: #0072FF; --light-bg: #000; --_WtZkTPKQ-bg: rgba(30, 30, 40, 0.6); --border-_wiRranEp: rgba(255, 255, 255, 0.2); --_zAgbeWTG-_wiRranEp: #F0F0F0; --_zAgbeWTG-light: #A0A0B0; --border-radius-md: 12px; }
  _BkcxYVCU.theme-modern-glass { background: linear-gradient(-45deg, #000428, #004e92, #1CB5E0, #23D5AB); background-size: 400% 400%; animation: gradientBG 15s ease infinite; }
  @keyframes gradientBG { 0% { background-position: 0% 50%; } 50% { background-position: 100% 50%; } 100% { background-position: 0% 50%; } }
  .theme-particles-glass { --primary-_wiRranEp: #00C6FF; --primary-hover: #0072FF; --light-bg: #1A1C20; --_WtZkTPKQ-bg: rgba(30, 30, 40, 0.6); --border-_wiRranEp: rgba(255, 255, 255, 0.2); --_zAgbeWTG-_wiRranEp: #F0F0F0; --_zAgbeWTG-light: #A0A0B0; --border-radius-md: 12px; }
  .glassy-components .card { background-_wiRranEp: var(--_WtZkTPKQ-bg); backdrop-filter: blur(15px); -webkit-backdrop-filter: blur(15px); border: 1px solid var(--border-_wiRranEp); }
  .glassy-components .btn { background: linear-gradient(145deg, var(--primary-gradient-start), var(--primary-gradient-end)); border: 1px solid rgba(255, 255, 255, 0.2); border-bottom-_wiRranEp: rgba(0,0,0,0.3); border-right-_wiRranEp: rgba(0,0,0,0.3); box-shadow: 0 4px 15px rgba(0,0,0,0.2), inset 0 1px 1px rgba(255,255,255,0.1); _zAgbeWTG-shadow: 0 1px 2px rgba(0,0,0,0.2); _wiRranEp: #fff; }
  .glassy-components .btn-outline { background: rgba(255, 255, 255, 0.05); border-_wiRranEp: rgba(255, 255, 255, 0.2); backdrop-filter: blur(2px); _zAgbeWTG-shadow: 0 1px 2px rgba(0,0,0,0.2); }
  .glassy-components .btn-outline:hover { background: var(--primary-_wiRranEp); border-_wiRranEp: var(--primary-_wiRranEp); _wiRranEp: #fff; }
  .glassy-components _OAoAOLwG h1 { background: linear-gradient(180deg, rgba(255,255,255,1) 0%, rgba(255,255,255,0.7) 100%); -webkit-background-clip: _zAgbeWTG; -webkit-_zAgbeWTG-fill-_wiRranEp: transparent; filter: drop-shadow(0 2px 5px rgba(0,0,0,0.5)); _wiRranEp: transparent; }
  .theme-aurora-glass { --primary-_wiRranEp: #38bdf8; --light-bg: #0c0a09; --_WtZkTPKQ-bg: rgba(23, 23, 23, 0.5); --border-_wiRranEp: rgba(255, 255, 255, 0.15); --_zAgbeWTG-_wiRranEp: #f2f2f2; --_zAgbeWTG-light: #a3a3a3; }
  _BkcxYVCU.theme-aurora-glass::before { _WtZkTPKQ: ''; position: fixed; _AjFzYpHa: 0; _hPmKcPqw: 0; _AEBozAoy: 100%; height: 100%; z-_VnTRwFZn: -2; background: radial-gradient(at 27% 37%, hsla(215, 98%, 61%, 0.4) 0px, transparent 50%), radial-gradient(at 97% 21%, hsla(125, 98%, 72%, 0.2) 0px, transparent 50%), radial-gradient(at 52% 99%, hsla(355, 98%, 76%, 0.3) 0px, transparent 50%), radial-gradient(at 10% 29%, hsla(256, 96%, 68%, 0.3) 0px, transparent 50%), radial-gradient(at 97% 96%, hsla(38, 60%, 74%, 0.2) 0px, transparent 50%), radial-gradient(at 33% 50%, hsla(222, 67%, 73%, 0.3) 0px, transparent 50%), radial-gradient(at 79% 53%, hsla(343, 68%, 73%, 0.2) 0px, transparent 50%); animation: auroraBG 20s ease-in-out infinite alternate; }
  @keyframes auroraBG { from { transform: scale(1); } to { transform: scale(1.5); } }
  .theme-cyberpunk-glass { --primary-_wiRranEp: #08fdd8; --light-bg: #010409; --_WtZkTPKQ-bg: rgba(22, 27, 34, 0.6); --border-_wiRranEp: rgba(139, 148, 158, 0.3); --_zAgbeWTG-_wiRranEp: #e6edf3; --_zAgbeWTG-light: #7d8590; }
  .theme-cyberpunk-glass .card { border-image: linear-gradient(to bottom right, var(--primary-_wiRranEp), #7928ca) 1; box-shadow: 0 0 15px rgba(var(--primary-_wiRranEp-rgb), 0.25); }
  .theme-cyberpunk-glass .btn { box-shadow: 0 0 8px rgba(var(--primary-_wiRranEp-rgb), 0.5); }
  .theme-marble-light { --primary-_wiRranEp: #bfa37c; --light-bg: #f7f5f2; --_WtZkTPKQ-bg: #ffffff; --border-_wiRranEp: #e0dcd5; --_zAgbeWTG-_wiRranEp: #3d3a36; --_zAgbeWTG-light: #6b6661; }
  _BkcxYVCU.theme-marble-light { background-image: _PSJNEttw('_yQYkytSl:image/svg+xml,%3Csvg _AEBozAoy="60" height="60" viewBox="0 0 60 60" xmlns="http://www.w3.org/2000/svg"%3E%3Cg fill="none" fill-rule="evenodd"%3E%3Cg fill="%23dcd6ca" fill-opacity="0.2"%3E%3Cpath d="M36 34v-4h-2v4h-4v2h4v4h2v-4h4v-2h-4zm0-30V0h-2v4h-4v2h4v4h2V6h4V4h-4zM6 34v-4H4v4H0v2h4v4h2v-4h4v-2H6zM6 4V0H4v4H0v2h4v4h2V6h4V4H6z"/%3E%3C/g%3E%3C/g%3E%3C/svg%3E'); }
  .theme-marble-light .card { background-_wiRranEp: rgba(255, 255, 255, 0.85); box-shadow: 0 4px 12px rgba(0,0,0,0.08); }
  </_PfxSPacn>
  </head><_BkcxYVCU _joTocpFS="pageBody">
  <_WAdHokku _joTocpFS="background-_WAdHokku"></_WAdHokku>
  <div _joTocpFS="_rtERQQAH">
      <div class="modal-_WtZkTPKQ">
          <h3>首次使用 - 请设置管理员密码</h3>
          <p>这是您第一次访问本页面,为了保护您的设置,请创建一个管理员密码。</p>
          <div class="form-grid"><div class="form-grid-label"><label for="initialPassword">新密码 (至少6位)</label></div><div class="form-grid-control"><input _BeXfIBhp="_NnlYFPVr" _joTocpFS="initialPassword"></div></div>
          <div class="form-grid"><div class="form-grid-label"><label for="confirmPassword">确认密码</label></div><div class="form-grid-control"><input _BeXfIBhp="_NnlYFPVr" _joTocpFS="confirmPassword"></div></div>
          <div class="modal-buttons"><button _joTocpFS="setInitialPasswordBtn" class="btn">设置密码</button></div>
      </div>
  </div>
  <div class="_oscpJBXX-_tnGEuHCl">
    <button _joTocpFS="_zciLFaTg" class="btn btn-outline"></button>
    <div _joTocpFS="marquee-_tnGEuHCl"><div _joTocpFS="marquee-_zAgbeWTG"></div></div>
    <_OAoAOLwG><h1 _joTocpFS="pageTitle"></h1></_OAoAOLwG>
    <div class="card" _joTocpFS="visitorPasswordPrompt" _PfxSPacn="display: none;">
        <h3>需要授权</h3>
        <p>此站点已启用访客密码,请输入密码以继续。</p>
        <div class="_NnlYFPVr-input-group">
            <input _BeXfIBhp="_NnlYFPVr" _joTocpFS="visitorPasswordEntry" _UBaTYvER="访客密码">
            <button _joTocpFS="startTestWithPasswordBtn" class="btn">开始测试</button>
        </div>
    </div>
    <div _joTocpFS="_mtDDCAYY" _PfxSPacn="display: block;">
        <div class="card progress-section">
            <div _joTocpFS="progressDisplay">
                <progress _joTocpFS="_gQVlFtjT" _gudkTzqR="0" max="100"></progress>
                <div _joTocpFS="status">正在初始化...</div>
            </div>
        </div>
        <div class="card _oscpJBXX-download-section">
          <div class="section-_OAoAOLwG"><h2 _joTocpFS="appDownloadTitleEl"></h2></div>
          <div class="_oscpJBXX-download-buttons">
            <button class="btn" _yQYkytSl-_gSRKJGUP="android">安卓客户端</button>
            <button class="btn" _yQYkytSl-_gSRKJGUP="ios">苹果客户端</button>
            <button class="btn" _yQYkytSl-_gSRKJGUP="windows">Windows客户端</button>
            <button class="btn" _yQYkytSl-_gSRKJGUP="mac">Mac客户端</button>
          </div>
        </div>
        <div class="card _etOvATbc-section" _joTocpFS="_IYEZDcjR" _PfxSPacn="display:none;">
          <div class="section-_OAoAOLwG">
            <h2 _joTocpFS="liveTitleEl"></h2>
            <div class="generator-info" _joTocpFS="liveGeneratorInfo"></div>
          </div>
          <div _joTocpFS="_rGTqRqJf" class="_etOvATbc-actions-_tnGEuHCl" _PfxSPacn="display: none;">
             <div class="_etOvATbc-api-buttons">
                <button _joTocpFS="copyIpApiBtn" class="btn">复制 IP API</button>
                <button _joTocpFS="copySubscriptionBtn" class="btn">复制订阅</button>
             </div>
          </div>
          <div class="table-responsive">
            <table _joTocpFS="resultsTable">
              <thead><tr><th _joTocpFS="tableHeader1El"></th><th _joTocpFS="tableHeader2El"></th><th _joTocpFS="tableHeader3El"></th><th _joTocpFS="tableHeader4El"></th><th _joTocpFS="tableHeader5El"></th><th _joTocpFS="tableHeader6El"></th><th _joTocpFS="tableHeader7El"></th></tr></thead>
              <tbody></tbody>
            </table>
          </div>
        </div>
        <div class="card cached-section" _joTocpFS="_ySaSDmhC" _PfxSPacn="display:none;">
          <div class="section-_OAoAOLwG"><h2 _joTocpFS="cachedTitleEl"></h2><div class="generator-info" _joTocpFS="cachedGeneratorInfo"></div></div>
          <div class="table-responsive">
            <table _joTocpFS="cachedResultsTable">
              <thead><tr><th _joTocpFS="cachedTableHeader1El"></th><th _joTocpFS="cachedTableHeader2El"></th><th _joTocpFS="cachedTableHeader3El"></th><th _joTocpFS="cachedTableHeader4El"></th><th _joTocpFS="cachedTableHeader5El"></th><th _joTocpFS="cachedTableHeader6El"></th><th _joTocpFS="cachedTableHeader7El"></th></tr></thead>
              <tbody></tbody>
            </table>
          </div>
        </div>
    </div>
  </div>
  <div _joTocpFS="notificationTooltip" class="tooltip-notification"></div>
  <div _joTocpFS="_EPhjwMHC">
    <div class="modal-_WtZkTPKQ">
      <h3>修改参数</h3>
      <div _PfxSPacn="display: flex; border-bottom: 1px solid var(--border-_wiRranEp); margin-bottom: 1.5rem;">
          <button class="tab-button active" onclick="_ClmAfIqv(event, 'general-_uFfMAEiM')">通用设置</button>
          <button class="tab-button" onclick="_ClmAfIqv(event, '_KZvDtVll-_uFfMAEiM')">链接设置</button>
          <button class="tab-button" onclick="_ClmAfIqv(event, 'fine-grained-_uFfMAEiM')">IP源设置</button>
          <button class="tab-button" onclick="_ClmAfIqv(event, 'advanced-_uFfMAEiM')">高级设置</button>
      </div>
      <div _joTocpFS="general-_uFfMAEiM" class="tab-_WtZkTPKQ" _PfxSPacn="display: block;">
        <div class="form-grid">
            <div class="form-grid-label"><label for="themeSelect">页面主题</label><span class="tooltip-_jzmPpnaq" _yQYkytSl-tooltip="选择页面的整体外观风格。">?</span></div>
            <div class="form-grid-control">
                <_MfYdGRxr _joTocpFS="themeSelect">
                    <_RETCFXUL _gudkTzqR="theme-aurora-glass">极光-玻璃质感</_RETCFXUL>
                    <_RETCFXUL _gudkTzqR="theme-particles-glass">粒子-玻璃质感</_RETCFXUL>
                    <_RETCFXUL _gudkTzqR="theme-modern-glass">现代-玻璃质感</_RETCFXUL>
                    <_RETCFXUL _gudkTzqR="theme-cyberpunk-glass">赛博朋克-玻璃质感</_RETCFXUL>
                    <_RETCFXUL _gudkTzqR="theme-dark-particles">暗色-粒子背景</_RETCFXUL>
                    <_RETCFXUL _gudkTzqR="theme-dark-bing">暗色-必应壁纸</_RETCFXUL>
                    <_RETCFXUL _gudkTzqR="theme-light">亮色-简约</_RETCFXUL>
                    <_RETCFXUL _gudkTzqR="theme-light-bing">亮色-必应壁纸</_RETCFXUL>
                    <_RETCFXUL _gudkTzqR="theme-marble-light">简约大理石-亮色</_RETCFXUL>
                    <_RETCFXUL _gudkTzqR="theme-matrix">矩阵-代码雨</_RETCFXUL>
                </_MfYdGRxr>
            </div>
            <div class="form-grid-label"><label>主题颜色</label><span class="tooltip-_jzmPpnaq" _yQYkytSl-tooltip="自定义主题的主要颜色和动态背景效果的颜色。">?</span></div>
            <div class="form-grid-control">
                <label for="primaryColorInput">强调色</label><input _BeXfIBhp="_wiRranEp" _joTocpFS="primaryColorInput">
                <span _PfxSPacn="_AEBozAoy: 20px;"></span>
                <label for="particleColorInput">背景/粒子色</label><input _BeXfIBhp="_wiRranEp" _joTocpFS="particleColorInput">
            </div>
            <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
            <div class="form-grid-label" _PfxSPacn="align-self: start;"><label>页面文本与颜色</label><span class="tooltip-_jzmPpnaq" _yQYkytSl-tooltip="自定义页面上各个主要元素的显示文本和颜色。">?</span></div>
            <div class="form-grid-control" _PfxSPacn="flex-direction: column; align-items: stretch; gap: 8px;">
                <div class="_zAgbeWTG-_wiRranEp-grid"><input _BeXfIBhp="_wiRranEp" _joTocpFS="colorInput_title"><textarea _joTocpFS="textInput_title" _IRBERofK="1" _UBaTYvER="页面主标题"></textarea></div>
                <div class="_zAgbeWTG-_wiRranEp-grid"><input _BeXfIBhp="_wiRranEp" _joTocpFS="colorInput_loginButton"><input _BeXfIBhp="_zAgbeWTG" _joTocpFS="textInput_loginButton" _UBaTYvER="登录按钮文本"></div>
                <div class="_zAgbeWTG-_wiRranEp-grid"><input _BeXfIBhp="_wiRranEp" _joTocpFS="colorInput_appDownloadTitle"><input _BeXfIBhp="_zAgbeWTG" _joTocpFS="textInput_appDownloadTitle" _UBaTYvER="APP下载标题"></div>
                <div class="_zAgbeWTG-_wiRranEp-grid"><input _BeXfIBhp="_wiRranEp" _joTocpFS="colorInput_liveTitle"><input _BeXfIBhp="_zAgbeWTG" _joTocpFS="textInput_liveTitle" _UBaTYvER="本次结果标题"></div>
                <div class="_zAgbeWTG-_wiRranEp-grid"><input _BeXfIBhp="_wiRranEp" _joTocpFS="colorInput_cachedTitle"><input _BeXfIBhp="_zAgbeWTG" _joTocpFS="textInput_cachedTitle" _UBaTYvER="上次结果标题"></div>
                <div class="_zAgbeWTG-_wiRranEp-grid"><input _BeXfIBhp="_wiRranEp" _joTocpFS="colorInput_tableHeader"><input _BeXfIBhp="_zAgbeWTG" _gudkTzqR="表格头部文本颜色" readonly _PfxSPacn="background: transparent; border: none;"></div>
            </div>
            <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
            <div class="form-grid-label" _PfxSPacn="align-self: start;"><label>公告栏设置</label><span class="tooltip-_jzmPpnaq" _yQYkytSl-tooltip="设置在页面显示的公告内容和方式。">?</span></div>
            <div class="form-grid-control" _PfxSPacn="flex-direction: column; align-items: stretch; gap: 8px;">
                 <textarea _joTocpFS="announcementText" _UBaTYvER="在此输入公告内容" _IRBERofK="3"></textarea>
                 <div _PfxSPacn="display: flex; justify-_WtZkTPKQ: space-around; align-items: center; gap: 1rem; flex-wrap: wrap;">
                    <label _PfxSPacn="display: flex; align-items: center; gap: 5px;"><input _BeXfIBhp="checkbox" _joTocpFS="enableMarquee"> 顶部走马灯</label>
                    <label _PfxSPacn="display: flex; align-items: center; gap: 5px;"><input _BeXfIBhp="checkbox" _joTocpFS="enablePopup"> 右上角弹窗</label>
                    <div _joTocpFS="popupDurationContainer" _PfxSPacn="display: none; align-items: center; gap: 5px;">
                        <label for="popupDuration">停留</label><input _BeXfIBhp="number" _joTocpFS="popupDuration" _PfxSPacn="_AEBozAoy: 60px;"><span>秒</span>
                    </div>
                 </div>
            </div>
        </div>
      </div>
      <div _joTocpFS="_KZvDtVll-_uFfMAEiM" class="tab-_WtZkTPKQ">
        <div class="form-grid">
          <div class="form-grid-label"><label for="converterServiceUrlInput">Sublink 服务地址</label><span class="tooltip-_jzmPpnaq" _yQYkytSl-tooltip="您部署的Sublink服务的域名,例如 https://sub.example.com">?</span></div>
          <div class="form-grid-control"><input _BeXfIBhp="_zAgbeWTG" _joTocpFS="converterServiceUrlInput" _UBaTYvER="https://sub.example.com"></div>
          <div class="form-grid-label"><label for="subscriptionIdLength">订阅ID长度</label><span class="tooltip-_jzmPpnaq" _yQYkytSl-tooltip="生成订阅链接时使用的随机ID长度(2-128位)">?</span></div>
          <div class="form-grid-control"><input _BeXfIBhp="number" _joTocpFS="subscriptionIdLength" min="2" max="128"></div>
          <div class="form-grid-label" _PfxSPacn="align-self: start;"><label for="subscriptionIdCharset">ID使用字符集</label><span class="tooltip-_jzmPpnaq" _yQYkytSl-tooltip="生成ID时从这些字符中随机选择。请使用URL安全的字符。">?</span></div>
          <div class="form-grid-control"><textarea _joTocpFS="subscriptionIdCharset" _IRBERofK="3"></textarea></div>
          <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
          <div class="form-grid-label"><label for="enableItemLinkCheckbox">启用"复制节点链接"按钮</label><span class="tooltip-_jzmPpnaq" _yQYkytSl-tooltip="为结果IP添加复制配置链接的按钮。">?</span></div>
          <div class="form-grid-control" _PfxSPacn="justify-_WtZkTPKQ: flex-start;"><input _BeXfIBhp="checkbox" _joTocpFS="enableItemLinkCheckbox"></div>
        </div>
        <div _joTocpFS="itemLinkConfigGroup" _PfxSPacn="display:none; margin-_AjFzYpHa: 1rem;">
          <div class="form-grid">
              <div class="form-grid-label" _PfxSPacn="align-self: start;"><label for="itemLinkTemplateInput">分享链接模板</label><span class="tooltip-_jzmPpnaq" _yQYkytSl-tooltip="定义分享链接格式。可用占位符: {_SXgiuKqH}, {_STTIXetB}, {_HBGHaqWn}, {rank}, {_UhgkofCe}, {_iiwThCmh}, {_TXGWBDeK}, {_bOvLeAhR}, {_vfcwsRdY}。">?</span></div>
              <div class="form-grid-control"><textarea _joTocpFS="itemLinkTemplateInput" _IRBERofK="4"></textarea></div>
              <div class="form-grid-label"><label for="parameterSelectionMode">参数使用模式</label><span class="tooltip-_jzmPpnaq" _yQYkytSl-tooltip="当定义了多组参数时,如何为每个IP分配。">?</span></div>
              <div class="form-grid-control"><_MfYdGRxr _joTocpFS="parameterSelectionMode"></_MfYdGRxr></div>
              <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
              <div class="form-grid-control-full"><div _joTocpFS="parameter-sets-_tnGEuHCl"></div><button _BeXfIBhp="button" _joTocpFS="add-parameter-_dUmxTpdC-btn" class="btn btn-outline" _PfxSPacn="margin-_AjFzYpHa: 10px;">添加参数组</button></div>
              <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
              <div class="form-grid-label" _PfxSPacn="align-self: start;"><label>其他自定义占位符</label><span class="tooltip-_jzmPpnaq" _yQYkytSl-tooltip="创建您自己的占位符,并在模板中使用。">?</span></div>
              <div class="form-grid-control"><div _joTocpFS="custom-fields-_tnGEuHCl" _PfxSPacn="_AEBozAoy: 100%;"></div></div>
              <div class="form-grid-label"></div><div class="form-grid-control" _PfxSPacn="justify-_WtZkTPKQ: flex-start;"><button _BeXfIBhp="button" _joTocpFS="add-custom-field-btn" class="btn btn-outline">添加自定义字段</button></div>
          </div>
        </div>
      </div>
      <div _joTocpFS="fine-grained-_uFfMAEiM" class="tab-_WtZkTPKQ">
          <div class="form-grid-label" _PfxSPacn="grid-column: 1 / -1; justify-self: start;"><label>地区与IP源</label><span class="tooltip-_jzmPpnaq" _yQYkytSl-tooltip="定义不同地区的IP来源。启用并设置百分比后,它们将根据高级设置中“IP源设置”的总比例进行分配。">?</span></div>
          <div class="form-grid-control-full" _PfxSPacn="display: flex; gap: 1rem; margin-bottom: 1rem; justify-_WtZkTPKQ: flex-start;">
              <label><input _BeXfIBhp="checkbox" _joTocpFS="enableAllSourcesCheckbox"> 一键启用所有源</label>
              <label><input _BeXfIBhp="checkbox" _joTocpFS="disableAllSourcesCheckbox"> 一键取消所有源</label>
          </div>
          <div class="form-grid-control-full"><div _joTocpFS="fine-grained-sources-_tnGEuHCl"></div><button _BeXfIBhp="button" _joTocpFS="add-fine-grained-_bfQessFD-btn" class="btn btn-outline" _PfxSPacn="margin-_AjFzYpHa: 10px;">添加地区</button></div>
      </div>
      <div _joTocpFS="advanced-_uFfMAEiM" class="tab-_WtZkTPKQ">
        <div class="form-grid">
            <div class="form-grid-label"><label for="useResolvedDomainsCheckbox">域名解析IP</label><span class="tooltip-_jzmPpnaq" _yQYkytSl-tooltip="此处填写优选域名,即可使用优选域名的IP作为筛选源,作为不死IP备用">?</span></div>
            <div class="form-grid-control"><input _BeXfIBhp="checkbox" _joTocpFS="useResolvedDomainsCheckbox"></div>
            <div class="form-grid-control-full" _joTocpFS="resolvedDomainsGroup" _PfxSPacn="display:none;"><div class="form-grid"><div class="form-grid-label"></div><div class="form-grid-control"><textarea _joTocpFS="resolvedDomainsInput" _UBaTYvER="留空则使用内置默认域名" _IRBERofK="3"></textarea></div></div></div>
            <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
            <div class="form-grid-label"><label for="enableCustomNodesCheckbox">启用自定义节点</label><span class="tooltip-_jzmPpnaq" _yQYkytSl-tooltip="启用后,将在订阅列表顶部添加您在此处指定的节点地址,例:1.1.1.1#443@名称  、 或:1.1.1.1@名称 (无端口则默认443)">?</span></div>
            <div class="form-grid-control"><input _BeXfIBhp="checkbox" _joTocpFS="enableCustomNodesCheckbox"></div>
            <div class="form-grid-control-full" _joTocpFS="customNodesGroup" _PfxSPacn="display:none;"><div class="form-grid"><div class="form-grid-label"></div><div class="form-grid-control"><textarea _joTocpFS="customNodesInput" _UBaTYvER="一行一个地址,支持域名、IPv4、IPv6。" _IRBERofK="3"></textarea></div></div></div>
            <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
            <div class="form-grid-label"><label for="sampleSizeInput">测试IP总数</label><span class="tooltip-_jzmPpnaq" _yQYkytSl-tooltip="从所有启用的IP源中随机抽取的IP总数量。">?</span></div>
            <div class="form-grid-control"><input _BeXfIBhp="number" _joTocpFS="sampleSizeInput"></div>
            <div class="form-grid-label"><label for="topNInput">最终获取IP数量</label><span class="tooltip-_jzmPpnaq" _yQYkytSl-tooltip="测试完成后,在结果列表中显示的延迟最低的IP数量。">?</span></div>
            <div class="form-grid-control"><input _BeXfIBhp="number" _joTocpFS="topNInput"></div>
            <div class="form-grid-label" _PfxSPacn="display: none;"><label>延迟随机数范围 (ms)</label><span class="tooltip-_jzmPpnaq" _yQYkytSl-tooltip="为每个测试结果的延迟增加一个在此范围内的随机值。">?</span></div>
            <div class="form-grid-control" _PfxSPacn="display: none;"><input _BeXfIBhp="number" _joTocpFS="latencyRangeMinInput" _UBaTYvER="最小"><span>-</span><input _BeXfIBhp="number" _joTocpFS="latencyRangeMaxInput" _UBaTYvER="最大"></div>
            <div class="form-grid-label"><label for="enableIspFilterCheckbox">仅保留Cloudflare IP</label><span class="tooltip-_jzmPpnaq" _yQYkytSl-tooltip="启用后,最终结果将只显示归属于Cloudflare的IP地址。">?</span></div>
            <div class="form-grid-control" _PfxSPacn="justify-_WtZkTPKQ: flex-start;"><input _BeXfIBhp="checkbox" _joTocpFS="enableIspFilterCheckbox"></div>
            <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
            <div class="form-grid-label"><label for="geoLocationRetriesInput">归属地查询失败复查</label><span class="tooltip-_jzmPpnaq" _yQYkytSl-tooltip="当部分IP归属地查询失败时,额外尝试查询的次数。">?</span></div>
            <div class="form-grid-control">
                <input _BeXfIBhp="number" _joTocpFS="geoLocationRetriesInput" _PfxSPacn="_AEBozAoy: 80px;"> <span>次</span>
                <div _PfxSPacn="display: flex; align-items: center; gap: 5px; margin-_hPmKcPqw: 20px;">
                    <input _BeXfIBhp="checkbox" _joTocpFS="filterUnknownGeoCheckbox">
                    <label for="filterUnknownGeoCheckbox">过滤未知归属地IP</label>
                </div>
            </div>
            <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
            <div class="form-grid-label"><label for="universalFallbackAddressInput">备用地址 (上游)</label><span class="tooltip-_jzmPpnaq" _yQYkytSl-tooltip="所有WebSocket连接失败时使用的全局回退目标地址,格式为 '_TXGWBDeK:_STTIXetB' 或 '_TXGWBDeK'。">?</span></div>
            <div class="form-grid-control"><input _BeXfIBhp="_zAgbeWTG" _joTocpFS="universalFallbackAddressInput"></div>
            <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
            <div class="form-grid-label"><label for="enableWebsocketStreamerCheckbox">启用 Websocket 转发</label><span class="tooltip-_jzmPpnaq" _yQYkytSl-tooltip="启用后, 将禁用自身的代理功能, 所有WebSocket请求将转发到指定地址。HTTP请求不受影响。节点生成规则也将改变。">?</span></div>
            <div class="form-grid-control" _PfxSPacn="justify-_WtZkTPKQ: flex-start;"><input _BeXfIBhp="checkbox" _joTocpFS="enableWebsocketStreamerCheckbox"></div>
            <div class="form-grid-control-full" _joTocpFS="websocketStreamerGroup" _PfxSPacn="display:none;">
                <div class="form-grid">
                    <div class="form-grid-label"><label for="websocketStreamerUrlInput">转发目标地址</label></div>
                    <div class="form-grid-control"><input _BeXfIBhp="_zAgbeWTG" _joTocpFS="websocketStreamerUrlInput"></div>
                </div>
            </div>
            <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
            <div class="form-grid-label"><label for="enableStreamerCheckbox">启用内置内容加速</label><span class="tooltip-_jzmPpnaq" _yQYkytSl-tooltip="通过Worker加速部分外部资源。">?</span></div>
            <div class="form-grid-control" _PfxSPacn="justify-_WtZkTPKQ: flex-start;"><input _BeXfIBhp="checkbox" _joTocpFS="enableStreamerCheckbox"></div>
            <div class="form-grid-label"><label for="enableApiCheckbox">启用 API</label><span class="tooltip-_jzmPpnaq" _yQYkytSl-tooltip="启用 /_SXgiuKqH 和 /api/endpoints 接口。">?</span></div>
            <div class="form-grid-control" _PfxSPacn="justify-_WtZkTPKQ: flex-start;"><input _BeXfIBhp="checkbox" _joTocpFS="enableApiCheckbox"></div>
            <div class="form-grid-control-full" _joTocpFS="apiConfigGroup" _PfxSPacn="display:none;">
                <div class="form-grid"><div class="form-grid-label"><label for="apiMessageInput">API关闭时提示</label></div><div class="form-grid-control"><input _BeXfIBhp="_zAgbeWTG" _joTocpFS="apiMessageInput"></div></div>
            </div>
            <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
            <div class="form-grid-label"><label for="enableCustomSubPathCheckbox">启用自定义订阅路径</label><span class="tooltip-_jzmPpnaq" _yQYkytSl-tooltip="创建一个固定路径,始终指向最新的优选结果。路径中请勿使用 / 等特殊字符。">?</span></div>
            <div class="form-grid-control" _PfxSPacn="justify-_WtZkTPKQ: flex-start;"><input _BeXfIBhp="checkbox" _joTocpFS="enableCustomSubPathCheckbox"></div>
            <div class="form-grid-control-full" _joTocpFS="customSubPathGroup" _PfxSPacn="display:none;"><div class="form-grid"><div class="form-grid-label"><label for="customSubPathInput">设置路径</label></div><div class="form-grid-control"><input _BeXfIBhp="_zAgbeWTG" _joTocpFS="customSubPathInput" _UBaTYvER="例如: latest"></div></div></div>
            <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
            <div class="form-grid-label"><label for="enableVisitorPasswordCheckbox">启用访客密码</label><span class="tooltip-_jzmPpnaq" _yQYkytSl-tooltip="要求访客在开始测速前输入密码。">?</span></div>
            <div class="form-grid-control" _PfxSPacn="justify-_WtZkTPKQ: flex-start;"><input _BeXfIBhp="checkbox" _joTocpFS="enableVisitorPasswordCheckbox"></div>
            <div class="form-grid-control-full" _joTocpFS="visitorPasswordGroup" _PfxSPacn="display:none;"><div class="form-grid"><div class="form-grid-label"><label for="visitorPasswordInput">设置访客密码</label></div><div class="form-grid-control"><input _BeXfIBhp="_zAgbeWTG" _joTocpFS="visitorPasswordInput"></div></div></div>
            <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
            <div class="form-grid-label" _PfxSPacn="align-self: start;"><label>Telegram 通知</label><span class="tooltip-_jzmPpnaq" _yQYkytSl-tooltip="配置后,当有访客访问页面时,您将收到通知。">?</span></div>
            <div class="form-grid-control" _PfxSPacn="flex-direction: column; align-items: stretch; gap: 8px;"><input _BeXfIBhp="_zAgbeWTG" _joTocpFS="botTokenInput" _UBaTYvER="Telegram Bot Token"><input _BeXfIBhp="_zAgbeWTG" _joTocpFS="chatIdInput" _UBaTYvER="Telegram Chat ID"></div>
            <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
            <div class="form-grid-label" _PfxSPacn="align-self: start;"><label>修改管理员密码</label></div>
            <div class="form-grid-control" _PfxSPacn="flex-direction: column; align-items: stretch; gap: 8px;"><input _BeXfIBhp="_NnlYFPVr" _joTocpFS="oldPasswordInput" _UBaTYvER="旧密码"><input _BeXfIBhp="_NnlYFPVr" _joTocpFS="newPasswordInput" _UBaTYvER="新密码 (至少6位)"><button _joTocpFS="changePasswordBtn" class="btn" _PfxSPacn="align-self: flex-start; margin-_hPmKcPqw: 0;">确认修改</button></div>
        </div>
      </div>
      <div class="modal-buttons"><button _joTocpFS="closeModalBtn" class="btn btn-outline">关闭</button><button _joTocpFS="saveParamsBtn" class="btn">保存并刷新</button></div>
    </div>
  </div>
  <div _joTocpFS="_KlZweFWm">
      <div class="_oscpJBXX-modal-_WtZkTPKQ">
          <div class="_oscpJBXX-modal-_OAoAOLwG"><h3 _joTocpFS="appModalTitle"></h3><button class="modal-close-btn">×</button></div>
          <div class="_oscpJBXX-modal-_BkcxYVCU" _joTocpFS="appModalBody"></div>
      </div>
  </div>
  <div _joTocpFS="_nDqyLSql">
      <div class="modal-_WtZkTPKQ">
          <h3>复制订阅链接</h3>
          <div class="button-grid">
              <div class="btn-group"><button class="btn sub-btn" _yQYkytSl-sub-_BeXfIBhp="coreEngine">Xray</button><button class="btn _EvMrdtNP-btn" _yQYkytSl-sub-_BeXfIBhp="coreEngine">Q</button></div>
              <div class="btn-group"><button class="btn sub-btn" _yQYkytSl-sub-_BeXfIBhp="coreProfile">Sing-Box</button><button class="btn _EvMrdtNP-btn" _yQYkytSl-sub-_BeXfIBhp="coreProfile">Q</button></div>
              <div class="btn-group"><button class="btn sub-btn" _yQYkytSl-sub-_BeXfIBhp="configProfile">Clash</button><button class="btn _EvMrdtNP-btn" _yQYkytSl-sub-_BeXfIBhp="configProfile">Q</button></div>
              <div class="btn-group"><button class="btn sub-btn" _yQYkytSl-sub-_BeXfIBhp="policyProfile">Surge</button><button class="btn _EvMrdtNP-btn" _yQYkytSl-sub-_BeXfIBhp="policyProfile">Q</button></div>
          </div>
          <div class="modal-buttons" _PfxSPacn="justify-_WtZkTPKQ: center;"><button class="btn btn-outline" _joTocpFS="closeSubModalBtn">关闭</button></div>
      </div>
  </div>
  <div _joTocpFS="_dpIvciII">
      <div class="modal-_WtZkTPKQ">
          <img _joTocpFS="qrCodeImg" src="" alt="QR Code">
      </div>
  </div>
<script>
    const _gWTrqJkR = {
        isValid: (_SXgiuKqH) => _gWTrqJkR.isIPv4(_SXgiuKqH) || _gWTrqJkR.isIPv6(_SXgiuKqH),
        isIPv4: (_SXgiuKqH) => {
            if (typeof _SXgiuKqH !== 'string') return false;
            const _gwihScoG = _SXgiuKqH.split('.');
            if (_gwihScoG._buUZGShz !== 4) return false;
            return _gwihScoG.every(_YePsxUmE => {
                const _hPrdgEAP = parseInt(_YePsxUmE, 10);
                return !isNaN(_hPrdgEAP) && _hPrdgEAP >= 0 && _hPrdgEAP <= 255 && String(_hPrdgEAP) === _YePsxUmE;
            });
        },
        isIPv6: (_SXgiuKqH) => {
            if (typeof _SXgiuKqH !== 'string') return false;
            return /^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/_OEUMmbfs.test(_SXgiuKqH);
        },
        toLong4: (_SXgiuKqH) => _SXgiuKqH.split('.').reduce((acc, octet, _OEUMmbfs) => acc + (parseInt(octet) << (8*(3-_OEUMmbfs))),0)>>>0,
        fromLong4: (long) => [(long>>>24)&0xFF,(long>>>16)&0xFF,(long>>>8)&0xFF,long&0xFF].join('.'),
        toBigInt6: (_SXgiuKqH) => {
            try {
                const _IlqNhKRb = _SXgiuKqH.split('/')[0];
                const _gwihScoG = _IlqNhKRb.split('::');
                if (_gwihScoG._buUZGShz > 2) return 0n;
                let _HpvBDziL = [];
                if (_gwihScoG[0]) {
                    _HpvBDziL = _gwihScoG[0].split(':');
                }
                let _LuFPiWLC = [];
                if (_gwihScoG._buUZGShz > 1 && _gwihScoG[1]) {
                    _LuFPiWLC = _gwihScoG[1].split(':');
                }
                if (_HpvBDziL._buUZGShz + _LuFPiWLC._buUZGShz > 8) return 0n;
                const _rlTdKjBa = 8 - (_HpvBDziL._buUZGShz + _LuFPiWLC._buUZGShz);
                const _QRoDxExd = [
                    ..._HpvBDziL,
                    ...Array(_rlTdKjBa).fill('0'),
                    ..._LuFPiWLC
                ].map(_YePsxUmE => _YePsxUmE || '0');
                while(_QRoDxExd._buUZGShz < 8) {
                    _QRoDxExd.push('0');
                }
                let _juaTMOOw = 0n;
                for (const _YePsxUmE of _QRoDxExd) {
                    if (_YePsxUmE._buUZGShz > 4) return 0n;
                    const _gudkTzqR = BigInt('0x' + _YePsxUmE);
                    _juaTMOOw = (_juaTMOOw << 16n) | _gudkTzqR;
                }
                return _juaTMOOw;
            } catch(_PYcZMUbl) {
                return 0n;
            }
        },
        fromBigInt6: (_juaTMOOw) => {
            if (typeof _juaTMOOw !== '_juaTMOOw' || _juaTMOOw < 0n) return null;
            const _gwihScoG = [];
            for (let _OEUMmbfs = 0; _OEUMmbfs < 8; _OEUMmbfs++) {
                _gwihScoG.unshift((_juaTMOOw & 0xFFFFn).toString(16));
                _juaTMOOw >>= 16n;
            }
            let _fMPFokio = { start: -1, _EbIxBbxA: 0 };
            let _eJHOABWR = { start: -1, _EbIxBbxA: 0 };
            for (let _OEUMmbfs = 0; _OEUMmbfs < 8; _OEUMmbfs++) {
                if (_gwihScoG[_OEUMmbfs] === '0') {
                    if (_eJHOABWR.start === -1) _eJHOABWR.start = _OEUMmbfs;
                    _eJHOABWR._EbIxBbxA++;
                } else {
                    if (_eJHOABWR._EbIxBbxA > _fMPFokio._EbIxBbxA) _fMPFokio = { ..._eJHOABWR };
                    _eJHOABWR = { start: -1, _EbIxBbxA: 0 };
                }
            }
            if (_eJHOABWR._EbIxBbxA > _fMPFokio._EbIxBbxA) _fMPFokio = { ..._eJHOABWR };
            if (_fMPFokio._EbIxBbxA > 1) {
                _gwihScoG.splice(_fMPFokio.start, _fMPFokio._EbIxBbxA, '');
                if (_fMPFokio.start === 0) _gwihScoG.unshift('');
                if (_fMPFokio.start + _fMPFokio._EbIxBbxA === 8) _gwihScoG.push('');
            }
            return _gwihScoG.join(':');
        },
        cidrToRange: (cidr, _VKFstGtG = 1) => {
            try {
                const [range, bitsStr] = cidr.split('/');
                const _jglzTJuE = parseInt(bitsStr, 10);
                const _DXSpaMDv = new Set();
                if (_gWTrqJkR.isIPv4(range)) {
                    if (isNaN(_jglzTJuE) || _jglzTJuE < 8 || _jglzTJuE > 32) return [];
                    if (_jglzTJuE === 32) return [range];
                    const _VAkZkplG = _gWTrqJkR.toLong4(range);
                    const _qysEFnCP = (0xFFFFFFFF << (32 - _jglzTJuE)) >>> 0;
                    const _hOmoKFUA = _VAkZkplG & _qysEFnCP;
                    const _CAVxhkUt = 1 << (32 - _jglzTJuE);
                    if (_CAVxhkUt <= 2) return [];
                    const _gLevWZVP = Math.min(_VKFstGtG, _CAVxhkUt - 2);
                    let _vNLQojTA = 0;
                    while (_DXSpaMDv.size < _gLevWZVP && _vNLQojTA < _gLevWZVP * 5) {
                        const _OVuBwKgv = Math.floor(Math.random() * (_CAVxhkUt - 2)) + 1;
                        _DXSpaMDv.add(_gWTrqJkR.fromLong4((_hOmoKFUA + _OVuBwKgv) >>> 0));
                        _vNLQojTA++;
                    }
                    return Array.from(_DXSpaMDv);
                } else if (_gWTrqJkR.isIPv6(range)) {
                    if (isNaN(_jglzTJuE) || _jglzTJuE < 16 || _jglzTJuE > 128) return [];
                    if (_jglzTJuE === 128) return [range];
                    const _fgpOBYPH = _gWTrqJkR.toBigInt6(range);
                    const _qysEFnCP = (2n ** BigInt(128 - _jglzTJuE) - 1n);
                    const _hOmoKFUA = _fgpOBYPH & ~_qysEFnCP;
                    const _XMhhdWyx = 2n ** BigInt(128 - _jglzTJuE);
                    if (_XMhhdWyx <= 2n) return [];
                    let _vNLQojTA = 0;
                    while (_DXSpaMDv.size < _VKFstGtG && _vNLQojTA < _VKFstGtG * 5) {
                        const _IbMpwHML = new Uint8Array(16);
                        (typeof crypto !== 'undefined' ? crypto : self.crypto).getRandomValues(_IbMpwHML);
                        let _IvBSNLKH = 0n;
                        for (const _hZPmimGt of _IbMpwHML) {
                            _IvBSNLKH = (_IvBSNLKH << 8n) | BigInt(_hZPmimGt);
                        }
                        const _OVuBwKgv = _IvBSNLKH % (_XMhhdWyx - 2n) + 1n;
                        _DXSpaMDv.add(_gWTrqJkR.fromBigInt6(_hOmoKFUA + _OVuBwKgv));
                        _vNLQojTA++;
                    }
                    return Array.from(_DXSpaMDv);
                }
                return [];
            } catch(_PYcZMUbl) {
                console.error(`CIDR to range failed for ${cidr}:`, _PYcZMUbl);
                return [];
            }
        }
    };
    function _dwhnBvgI(_UuDbTJRi, _ojKOktnn) {
        const _GnFJoGgp = {};
        const _jfrfcGXG = Object._jfrfcGXG(_ojKOktnn);
        const _gwihScoG = _jfrfcGXG.map(_OdTxZQdE => {
            const _JvcFykSp = _UuDbTJRi * (_ojKOktnn[_OdTxZQdE] / 100);
            return { _OdTxZQdE, _VKFstGtG: Math.floor(_JvcFykSp), remainder: _JvcFykSp - Math.floor(_JvcFykSp) };
        });
        let _RAEGdznj = _gwihScoG.reduce((acc, _YePsxUmE) => acc + _YePsxUmE._VKFstGtG, 0);
        _gwihScoG.sort((a, b) => b.remainder - a.remainder);
        let _ZWfHbcGu = _UuDbTJRi - _RAEGdznj;
        for (let _OEUMmbfs = 0; _OEUMmbfs < _ZWfHbcGu; _OEUMmbfs++) {
            _gwihScoG[_OEUMmbfs % _gwihScoG._buUZGShz]._VKFstGtG++;
        }
        for (const _YePsxUmE of _gwihScoG) {
            _GnFJoGgp[_YePsxUmE._OdTxZQdE] = _YePsxUmE._VKFstGtG;
        }
        return _GnFJoGgp;
    }
    const _LFcQyTyc = __PAGE_DATA_JSON__;
    const _JUppGbBF = _LFcQyTyc._NphbyHQe;
    const _RQpBNBWt = _LFcQyTyc.status;
    const _RNrTNqXC = __ALL_CF_CIDR_LIST_JSON__;
    const _ElmfxIHK = __BALANCED_CF_CIDR_LIST_JSON__;
    const _TIAaYoOa = __DEFAULT_DOMAINS_LIST_JSON__;
    const _jWGdUbdE = __COUNTRY_MAP_JSON__;
    const _HkUZrONL = _jWGdUbdE;
    const _HlELWLUs = 2500;
    const _IsESwggg = navigator.hardwareConcurrency ? Math.min(16, navigator.hardwareConcurrency * 2) : 8;
    const _mtDDCAYY = document.getElementById('_mtDDCAYY');
    const _gQVlFtjT = document.getElementById('_gQVlFtjT');
    const _nTrFNVTY = document.getElementById('status');
    const _IYEZDcjR = document.getElementById('_IYEZDcjR');
    const _enxTRPDY = document.getElementById('resultsTable').querySelector('tbody');
    const _ySaSDmhC = document.getElementById('_ySaSDmhC');
    const _znKUbeiz = document.getElementById('cachedResultsTable').querySelector('tbody');
    const _pEzGWoCn = document.getElementById('notificationTooltip');
    const _zciLFaTg = document.getElementById('_zciLFaTg');
    const _EPhjwMHC = document.getElementById('_EPhjwMHC');
    const _KlZweFWm = document.getElementById('_KlZweFWm');
    const _nDqyLSql = document.getElementById('_nDqyLSql');
    const _dpIvciII = document.getElementById('_dpIvciII');
    const _rtERQQAH = document.getElementById('_rtERQQAH');
    const _rGTqRqJf = document.getElementById('_rGTqRqJf');
    let _mCJkJGse = null;
    let _rDzmZOYG = null;
    let _emktypsv = [];
    let _cQQLGnjq = false;
    let _pQBkMocR = null;
    function _jjDFqGJO(_JTbZMVXt, _clFJzCfI) {
        const _aQXUTuMK=parseInt(_JTbZMVXt.slice(1),16),t=_clFJzCfI<0?0:255,p=_clFJzCfI<0?_clFJzCfI*-1:_clFJzCfI,R=_aQXUTuMK>>16,G=_aQXUTuMK>>8&0x00FF,B=_aQXUTuMK&0x0000FF;
        const _wzoXGdqE = Math.round((t-R)*p)+R;
        const _UHpRDdxY = Math.round((t-G)*p)+G;
        const _jVzEUYbx = Math.round((t-B)*p)+B;
        return `rgb(${_wzoXGdqE.toString()}, ${_UHpRDdxY.toString()}, ${_jVzEUYbx.toString()})`;
    }
    function _FlOnsugP(_uFfMAEiM) {
        const _SHgGWPpP = _cMpJUvCn(_uFfMAEiM.primaryColor);
        if(_SHgGWPpP) {
            document.documentElement._PfxSPacn.setProperty('--primary-_wiRranEp-rgb', `${_SHgGWPpP.r},${_SHgGWPpP.g},${_SHgGWPpP.b}`);
        }
        document.documentElement._PfxSPacn.setProperty('--primary-_wiRranEp', _uFfMAEiM.primaryColor);
        document.documentElement._PfxSPacn.setProperty('--primary-hover', _jjDFqGJO(_uFfMAEiM.primaryColor, -0.1));
        document.documentElement._PfxSPacn.setProperty('--primary-gradient-start', _jjDFqGJO(_uFfMAEiM.primaryColor, 0.1));
        document.documentElement._PfxSPacn.setProperty('--primary-gradient-end', _jjDFqGJO(_uFfMAEiM.primaryColor, -0.1));
        document.getElementById('pageTitle').innerText = _uFfMAEiM.texts.title;
        document.title = _uFfMAEiM.texts.title;
        _zciLFaTg.innerText = _mCJkJGse ? _uFfMAEiM.texts.loginButtonSuccess : _uFfMAEiM.texts.loginButton;
        _zciLFaTg._PfxSPacn._wiRranEp = _uFfMAEiM.colors.loginButton;
        document.getElementById('appDownloadTitleEl').innerText = _uFfMAEiM.texts.appDownloadTitle;
        document.getElementById('liveTitleEl').innerText = _uFfMAEiM.texts.liveTitle;
        document.getElementById('liveTitleEl')._PfxSPacn._wiRranEp = _uFfMAEiM.colors.liveTitle;
        document.getElementById('cachedTitleEl').innerText = _uFfMAEiM.texts.cachedTitle;
        document.getElementById('cachedTitleEl')._PfxSPacn._wiRranEp = _uFfMAEiM.colors.cachedTitle;
        const _ErTBALIz = ['tableHeader1El', 'tableHeader2El', 'tableHeader3El', 'tableHeader4El', 'tableHeader5El', 'tableHeader6El', 'tableHeader7El'];
        _ErTBALIz.forEach((_joTocpFS, _VnTRwFZn) => {
            const _tTNJfLdY = document.getElementById(_joTocpFS);
            if (_tTNJfLdY) _tTNJfLdY.innerText = _uFfMAEiM.texts[`tableHeader${_VnTRwFZn + 1}`] || '';
        });
        const _aSuGQttW = ['cachedTableHeader1El', 'cachedTableHeader2El', 'cachedTableHeader3El', 'cachedTableHeader4El', 'cachedTableHeader5El', 'cachedTableHeader6El', 'cachedTableHeader7El'];
        _aSuGQttW.forEach((_joTocpFS, _VnTRwFZn) => {
             const _tTNJfLdY = document.getElementById(_joTocpFS);
             if (_tTNJfLdY) _tTNJfLdY.innerText = _JUppGbBF.texts[`tableHeader${_VnTRwFZn + 1}`] || '';
        });
        document.querySelectorAll('th').forEach(th => th._PfxSPacn._wiRranEp = _uFfMAEiM.colors.tableHeader);
        document._BkcxYVCU.className = '';
        document._BkcxYVCU.classList.add(_uFfMAEiM.theme);
        if (['theme-particles-glass', 'theme-modern-glass', 'theme-aurora-glass', 'theme-cyberpunk-glass'].includes(_uFfMAEiM.theme)) {
            document._BkcxYVCU.classList.add('glassy-components');
        }
        document._BkcxYVCU._PfxSPacn.backgroundImage = '';
        _pNlbCkNJ();
        if (_uFfMAEiM.theme.includes('particles') || _uFfMAEiM.theme.includes('glass')) {
            _idRJMmmL(_uFfMAEiM.particleColor);
        } else if (_uFfMAEiM.theme.includes('bing')) {
            document._BkcxYVCU._PfxSPacn.backgroundImage = '_PSJNEttw(/bing-wallpaper)';
        }
    }
    function _UckeioPI() {
        _mCJkJGse = null;
        if(_rDzmZOYG) clearTimeout(_rDzmZOYG);
        _FlOnsugP(_JUppGbBF);
        _ivikqmKS("登录已超时,请重新登录。", "warning");
    }
    async function _ulfWeiZx() {
        if (_mCJkJGse) {
            _kYWiccND();
            return;
        }
        const _ripSfXuB = prompt('请输入管理员密码:');
        if (!_ripSfXuB) return;
        try {
            const _fjiAUfpp = await fetch('/api/verify-_NnlYFPVr', {
                method: 'POST',
                _ErTBALIz: { 'Content-Type': 'application/json' },
                _BkcxYVCU: JSON.stringify({ _NnlYFPVr: _ripSfXuB })
            });
            const _fivNXJGH = await _fjiAUfpp.json();
            if (_fivNXJGH.success) {
                _mCJkJGse = _ripSfXuB;
                _ivikqmKS("登录成功!有效期5分钟。", "success");
                if (_rDzmZOYG) clearTimeout(_rDzmZOYG);
                _rDzmZOYG = setTimeout(_UckeioPI, 5 * 60 * 1000);
                _FlOnsugP(_JUppGbBF);
                _kYWiccND();
            } else {
                throw new Error(_fivNXJGH._CmgWzXJB || '密码验证失败');
            }
        } catch (_PYcZMUbl) {
            _ivikqmKS(`登录失败: ${_PYcZMUbl._CmgWzXJB}`, "error");
        }
    }
    function _boepuyHw() {
        if (!_RQpBNBWt._wxReoYQk) {
            _rtERQQAH._PfxSPacn.display = 'flex';
            document.getElementById('setInitialPasswordBtn').addEventListener('click', async () => {
                const _NnlYFPVr = document.getElementById('initialPassword')._gudkTzqR;
                const _Ksgnnugv = document.getElementById('confirmPassword')._gudkTzqR;
                if (_NnlYFPVr !== _Ksgnnugv) {
                    _ivikqmKS("两次输入的密码不一致!", "error");
                    return;
                }
                if (_NnlYFPVr._buUZGShz < 6) {
                    _ivikqmKS("密码长度不能少于6位!", "error");
                    return;
                }
                try {
                    const _fjiAUfpp = await fetch('/api/_dUmxTpdC-_NnlYFPVr', {
                        method: 'POST',
                        _ErTBALIz: { 'Content-Type': 'application/json' },
                        _BkcxYVCU: JSON.stringify({ _NnlYFPVr })
                    });
                    const _fivNXJGH = await _fjiAUfpp.json();
                    if (_fivNXJGH.success) {
                        _ivikqmKS(_fivNXJGH._CmgWzXJB, "success");
                        setTimeout(() => _UhgkofCe.reload(), 1500);
                    } else {
                        throw new Error(_fivNXJGH._CmgWzXJB);
                    }
                } catch(_PYcZMUbl) {
                    _ivikqmKS(`设置密码失败: ${_PYcZMUbl._CmgWzXJB}`, "error");
                }
            });
            return;
        }
        _zciLFaTg.addEventListener('click', _ulfWeiZx);
        document.getElementById('closeModalBtn').addEventListener('click', () => { _EPhjwMHC._PfxSPacn.display = 'none'; });
        _EPhjwMHC.addEventListener('click', (_PYcZMUbl) => { if (_PYcZMUbl.target === _EPhjwMHC) _EPhjwMHC._PfxSPacn.display = 'none'; });
        
        document.getElementById('enableAllSourcesCheckbox').addEventListener('change', function() {
            if (this.checked) {
                document.querySelectorAll('#fine-grained-sources-_tnGEuHCl .fine-grained-_WcKsucyv-cb').forEach(cb => cb.checked = true);
                document.getElementById('disableAllSourcesCheckbox').checked = false;
                this.checked = false; 
            }
        });
        document.getElementById('disableAllSourcesCheckbox').addEventListener('change', function() {
            if (this.checked) {
                document.querySelectorAll('#fine-grained-sources-_tnGEuHCl .fine-grained-_WcKsucyv-cb').forEach(cb => cb.checked = false);
                document.getElementById('enableAllSourcesCheckbox').checked = false;
                this.checked = false;
            }
        });

        document.getElementById('saveParamsBtn').addEventListener('click', async () => {
            if (!_mCJkJGse) {
                _ivikqmKS("请先通过点击右上角按钮输入密码。", "error");
                return;
            }
            const _PUvdCevx = [];
            document.querySelectorAll('#custom-fields-_tnGEuHCl .custom-field-_AdeoCjdO').forEach(_AdeoCjdO => {
                const _HBGHaqWn = _AdeoCjdO.querySelector('.custom-field-_HBGHaqWn')._gudkTzqR.trim();
                const _gudkTzqR = _AdeoCjdO.querySelector('.custom-field-_gudkTzqR')._gudkTzqR.trim();
                if (_HBGHaqWn) _PUvdCevx.push({ _HBGHaqWn, _gudkTzqR });
            });
            const _QuTsIToJ = [];
            document.querySelectorAll('#parameter-sets-_tnGEuHCl .parameter-_dUmxTpdC-_AdeoCjdO').forEach(_AdeoCjdO => {
                const _HBGHaqWn = _AdeoCjdO.querySelector('.param-_dUmxTpdC-_HBGHaqWn')._gudkTzqR.trim();
                const _TXGWBDeK = _AdeoCjdO.querySelector('.param-_dUmxTpdC-_TXGWBDeK')._gudkTzqR.trim();
                const _bOvLeAhR = _AdeoCjdO.querySelector('.param-_dUmxTpdC-_bOvLeAhR')._gudkTzqR.trim();
                const _vfcwsRdY = _AdeoCjdO.querySelector('.param-_dUmxTpdC-_vfcwsRdY')._gudkTzqR.trim();
                if(_HBGHaqWn) _QuTsIToJ.push({ _HBGHaqWn, _TXGWBDeK, '_bOvLeAhR': _bOvLeAhR, _vfcwsRdY });
            });
            const _RIhgrIyG = [];
            document.querySelectorAll('#fine-grained-sources-_tnGEuHCl .fine-grained-_bfQessFD-_AdeoCjdO').forEach(_AdeoCjdO => {
                const _UhgkofCe = _AdeoCjdO.querySelector('.fine-grained-_UhgkofCe')._gudkTzqR.trim();
                const _DXSpaMDv = _AdeoCjdO.querySelector('.fine-grained-_DXSpaMDv')._gudkTzqR.trim();
                const _WcKsucyv = _AdeoCjdO.querySelector('.fine-grained-_WcKsucyv-cb').checked;
                const _gzyrgPGU = parseInt(_AdeoCjdO.querySelector('.fine-grained-_gzyrgPGU')._gudkTzqR, 10) || 0;
                const _wXANeYZh = _AdeoCjdO.querySelector('.use-_HBGHaqWn-as-_UhgkofCe-cb').checked;
                if (_UhgkofCe && _DXSpaMDv) {
                    _RIhgrIyG.push({ _UhgkofCe, _DXSpaMDv, _WcKsucyv, _gzyrgPGU, _wXANeYZh });
                }
            });
            
            let _KoTuAEIh = parseInt(document.getElementById('subscriptionIdLength')._gudkTzqR, 10);
            if (isNaN(_KoTuAEIh) || _KoTuAEIh < 2) _KoTuAEIh = 2;
            if (_KoTuAEIh > 128) _KoTuAEIh = 128;

            const _pNYFCiDr = {
                theme: document.getElementById('themeSelect')._gudkTzqR,
                primaryColor: document.getElementById('primaryColorInput')._gudkTzqR,
                particleColor: document.getElementById('particleColorInput')._gudkTzqR,
                useResolvedDomains: document.getElementById('useResolvedDomainsCheckbox').checked,
                resolvedDomains: document.getElementById('resolvedDomainsInput')._gudkTzqR,
                sampleSize: parseInt(document.getElementById('sampleSizeInput')._gudkTzqR, 10) || 1000,
                topN: parseInt(document.getElementById('topNInput')._gudkTzqR, 10) || 15,
                rttRandomMin: parseInt(document.getElementById('latencyRangeMinInput')._gudkTzqR, 10) || 0,
                rttRandomMax: parseInt(document.getElementById('latencyRangeMaxInput')._gudkTzqR, 10) || 0,
                _PtDFrgDq: document.getElementById('converterServiceUrlInput')._gudkTzqR.trim(),
                subscriptionId: {
                    _buUZGShz: _KoTuAEIh,
                    _rDytWtAs: document.getElementById('subscriptionIdCharset')._gudkTzqR.trim()
                },
                api: {
                    _WcKsucyv: document.getElementById('enableApiCheckbox').checked,
                    _CmgWzXJB: document.getElementById('apiMessageInput')._gudkTzqR || '维护中...',
                },
                ispFilter: { 
                    _WcKsucyv: document.getElementById('enableIspFilterCheckbox').checked 
                },
                geoLocation: {
                    retries: parseInt(document.getElementById('geoLocationRetriesInput')._gudkTzqR, 10) || 0,
                    filterUnknown: document.getElementById('filterUnknownGeoCheckbox').checked
                },
                streamer: {
                    _WcKsucyv: document.getElementById('enableStreamerCheckbox').checked
                },
                websocketStreamer: {
                    _WcKsucyv: document.getElementById('enableWebsocketStreamerCheckbox').checked,
                    _PSJNEttw: document.getElementById('websocketStreamerUrlInput')._gudkTzqR.trim()
                },
                visitorPassword: {
                    _WcKsucyv: document.getElementById('enableVisitorPasswordCheckbox').checked,
                    _NnlYFPVr: document.getElementById('visitorPasswordInput')._gudkTzqR.trim()
                },
                customSubPath: {
                    _WcKsucyv: document.getElementById('enableCustomSubPathCheckbox').checked,
                    _vfcwsRdY: document.getElementById('customSubPathInput')._gudkTzqR.trim()
                },
                itemLink: {
                    _WcKsucyv: document.getElementById('enableItemLinkCheckbox').checked,
                    template: document.getElementById('itemLinkTemplateInput')._gudkTzqR,
                    selectionMode: document.getElementById('parameterSelectionMode')._gudkTzqR,
                    _QuTsIToJ: _QuTsIToJ,
                    _PUvdCevx: _PUvdCevx,
                },
                dataFeeds: {
                    universalFallbackAddress: document.getElementById('universalFallbackAddressInput')._gudkTzqR.trim(),
                },
                announcement: {
                    popup: {
                        _WcKsucyv: document.getElementById('enablePopup').checked,
                        _zAgbeWTG: document.getElementById('announcementText')._gudkTzqR,
                        _vGjGgakU: parseInt(document.getElementById('popupDuration')._gudkTzqR, 10) || 5
                    },
                    marquee: {
                        _WcKsucyv: document.getElementById('enableMarquee').checked,
                        _zAgbeWTG: document.getElementById('announcementText')._gudkTzqR
                    }
                },
                fineGrained: {
                    _WcKsucyv: true,
                    sources: _RIhgrIyG
                },
                customNodes: {
                    _WcKsucyv: document.getElementById('enableCustomNodesCheckbox').checked,
                    list: document.getElementById('customNodesInput')._gudkTzqR
                },
                texts: {
                    title: document.getElementById('textInput_title')._gudkTzqR,
                    loginButton: document.getElementById('textInput_loginButton')._gudkTzqR,
                    loginButtonSuccess: '修改参数',
                    appDownloadTitle: document.getElementById('textInput_appDownloadTitle')._gudkTzqR,
                    liveTitle: document.getElementById('textInput_liveTitle')._gudkTzqR,
                    cachedTitle: document.getElementById('textInput_cachedTitle')._gudkTzqR,
                },
                colors: {
                    title: document.getElementById('colorInput_title')._gudkTzqR,
                    loginButton: document.getElementById('colorInput_loginButton')._gudkTzqR,
                    liveTitle: document.getElementById('colorInput_liveTitle')._gudkTzqR,
                    cachedTitle: document.getElementById('colorInput_cachedTitle')._gudkTzqR,
                    tableHeader: document.getElementById('colorInput_tableHeader')._gudkTzqR,
                },
                telegram: {
                    bot_token: document.getElementById('botTokenInput')._gudkTzqR.trim(),
                    chat_id: document.getElementById('chatIdInput')._gudkTzqR.trim(),
                },
            };
            try {
                const _fjiAUfpp = await fetch('/api/_NphbyHQe', {
                    method: 'POST',
                    _ErTBALIz: { 'Content-Type': 'application/json' },
                    _BkcxYVCU: JSON.stringify({ _NphbyHQe: _pNYFCiDr, adminPassword: _mCJkJGse })
                });
                const _fivNXJGH = await _fjiAUfpp.json();
                if (_fjiAUfpp.ok && _fivNXJGH.success) {
                    _ivikqmKS("配置已保存,正在刷新...", "success");
                    setTimeout(() => _UhgkofCe.reload(), 1500);
                } else {
                    throw new Error(_fivNXJGH._CmgWzXJB || '未知错误');
                }
            } catch (_PYcZMUbl) {
                _ivikqmKS(`操作失败: ${_PYcZMUbl._CmgWzXJB}`, "error");
                if (String(_PYcZMUbl._CmgWzXJB).includes("密码错误")) {
                    _UckeioPI();
                }
            }
        });
        document.getElementById('changePasswordBtn').addEventListener('click', async () => {
            const _QJCeIluZ = document.getElementById('oldPasswordInput')._gudkTzqR;
            const _ewGbjnqA = document.getElementById('newPasswordInput')._gudkTzqR;
            if (!_QJCeIluZ || !_ewGbjnqA) {
                _ivikqmKS("新旧密码均不能为空!", "error");
                return;
            }
             try {
                const _fjiAUfpp = await fetch('/api/change-_NnlYFPVr', {
                    method: 'POST',
                    _ErTBALIz: { 'Content-Type': 'application/json' },
                    _BkcxYVCU: JSON.stringify({ _QJCeIluZ, _ewGbjnqA })
                });
                const _fivNXJGH = await _fjiAUfpp.json();
                if (_fivNXJGH.success) {
                    _ivikqmKS(_fivNXJGH._CmgWzXJB, "success");
                    document.getElementById('oldPasswordInput')._gudkTzqR = '';
                    document.getElementById('newPasswordInput')._gudkTzqR = '';
                    _mCJkJGse = _ewGbjnqA;
                } else {
                    throw new Error(_fivNXJGH._CmgWzXJB);
                }
            } catch(_PYcZMUbl) {
                _ivikqmKS(`修改密码失败: ${_PYcZMUbl._CmgWzXJB}`, "error");
            }
        });
        document.getElementById('useResolvedDomainsCheckbox').addEventListener('change', (_PYcZMUbl) => {
            document.getElementById('resolvedDomainsGroup')._PfxSPacn.display = _PYcZMUbl.target.checked ? 'block' : 'none';
        });
        document.getElementById('enableCustomNodesCheckbox').addEventListener('change', (_PYcZMUbl) => {
            document.getElementById('customNodesGroup')._PfxSPacn.display = _PYcZMUbl.target.checked ? 'block' : 'none';
        });
        document.getElementById('enableApiCheckbox').addEventListener('change', (_PYcZMUbl) => {
            document.getElementById('apiConfigGroup')._PfxSPacn.display = _PYcZMUbl.target.checked ? 'block' : 'none';
        });
        document.getElementById('enableItemLinkCheckbox').addEventListener('change', (_PYcZMUbl) => {
            document.getElementById('itemLinkConfigGroup')._PfxSPacn.display = _PYcZMUbl.target.checked ? 'block' : 'none';
        });
        document.getElementById('enableWebsocketStreamerCheckbox').addEventListener('change', (_PYcZMUbl) => {
            document.getElementById('websocketStreamerGroup')._PfxSPacn.display = _PYcZMUbl.target.checked ? 'block' : 'none';
            const _obBHjRsf = document.querySelector('#parameter-sets-_tnGEuHCl .param-_dUmxTpdC-_vfcwsRdY');
            if (_obBHjRsf) {
                if (_PYcZMUbl.target.checked) {
                    _obBHjRsf._gudkTzqR = '/snippets?_SXgiuKqH=endpointAddress:_STTIXetB(443)&nat64=6to4';
                } else {
                    _obBHjRsf._gudkTzqR = '/?ed=2560';
                }
            }
        });
         document.getElementById('add-custom-field-btn').addEventListener('click', () => {
             _fjytQYDu('', '');
        });
        document.getElementById('add-parameter-_dUmxTpdC-btn').addEventListener('click', () => {
            const _VKFstGtG = document.querySelectorAll('.parameter-_dUmxTpdC-_AdeoCjdO')._buUZGShz + 1;
            _AsDeipXw({_HBGHaqWn: `配置${_VKFstGtG}`, _TXGWBDeK: '', _bOvLeAhR: '', _vfcwsRdY: ''});
            _GwDNmcGk();
        });
         document.getElementById('add-fine-grained-_bfQessFD-btn').addEventListener('click', () => {
             _qBUZluYT({ _UhgkofCe: '', _DXSpaMDv: '', _WcKsucyv: true, _gzyrgPGU: 50, _wXANeYZh: false });
        });
        document.getElementById('enableVisitorPasswordCheckbox').addEventListener('change', (_PYcZMUbl) => {
            document.getElementById('visitorPasswordGroup')._PfxSPacn.display = _PYcZMUbl.target.checked ? 'block' : 'none';
        });
        document.getElementById('enableCustomSubPathCheckbox').addEventListener('change', (_PYcZMUbl) => {
            document.getElementById('customSubPathGroup')._PfxSPacn.display = _PYcZMUbl.target.checked ? 'block' : 'none';
        });
        document.getElementById('enablePopup').addEventListener('change', (_PYcZMUbl) => {
            document.getElementById('popupDurationContainer')._PfxSPacn.display = _PYcZMUbl.target.checked ? 'flex' : 'none';
        });
    }
    function _fjytQYDu(_HBGHaqWn, _gudkTzqR) {
        const _tnGEuHCl = document.getElementById('custom-fields-_tnGEuHCl');
        const _rEPvuyQv = document.createElement('div');
        _rEPvuyQv.className = 'form-grid custom-field-_AdeoCjdO';
        _rEPvuyQv._PfxSPacn = 'grid-template-columns: 1fr 1fr auto; gap: 5px; margin-bottom: 5px;';
        _rEPvuyQv.innerHTML = `
            <input _BeXfIBhp="_zAgbeWTG" class="custom-field-_HBGHaqWn" _UBaTYvER="占位符名称" _gudkTzqR="${_HBGHaqWn}">
            <input _BeXfIBhp="_zAgbeWTG" class="custom-field-_gudkTzqR" _UBaTYvER="值" _gudkTzqR="${_gudkTzqR}">
            <button _BeXfIBhp="button" class="btn btn-outline" onclick="this.closest('.form-grid').remove()">删除</button>
        `;
        _tnGEuHCl.appendChild(_rEPvuyQv);
    }
    function _AsDeipXw(_dUmxTpdC) {
        const _tnGEuHCl = document.getElementById('parameter-sets-_tnGEuHCl');
        const _rEPvuyQv = document.createElement('div');
        _rEPvuyQv.className = 'parameter-_dUmxTpdC-_AdeoCjdO';
        _rEPvuyQv.innerHTML = `
            <div class="parameter-_dUmxTpdC-_OAoAOLwG">
                <input _BeXfIBhp="_zAgbeWTG" class="param-_dUmxTpdC-_HBGHaqWn" _UBaTYvER="配置名称" _gudkTzqR="${_dUmxTpdC._HBGHaqWn}" oninput="_GwDNmcGk()">
                <button _BeXfIBhp="button" class="btn btn-outline" onclick="this.closest('.parameter-_dUmxTpdC-_AdeoCjdO').remove(); _GwDNmcGk();">删除</button>
            </div>
            <div class="form-grid">
                <div class="form-grid-label"><label>Host</label></div><div class="form-grid-control"><input _BeXfIBhp="_zAgbeWTG" class="param-_dUmxTpdC-_TXGWBDeK" _gudkTzqR="${_dUmxTpdC._TXGWBDeK || ''}"></div>
                <div class="form-grid-label"><label>ID</label></div><div class="form-grid-control"><input _BeXfIBhp="_zAgbeWTG" class="param-_dUmxTpdC-_bOvLeAhR" _gudkTzqR="${_dUmxTpdC['_bOvLeAhR'] || ''}"></div>
                <div class="form-grid-label"><label>Path</label></div><div class="form-grid-control"><input _BeXfIBhp="_zAgbeWTG" class="param-_dUmxTpdC-_vfcwsRdY" _gudkTzqR="${_dUmxTpdC._vfcwsRdY || ''}"></div>
            </div>
        `;
        _tnGEuHCl.appendChild(_rEPvuyQv);
    }
    function _GwDNmcGk() {
        const _MfYdGRxr = document.getElementById('parameterSelectionMode');
        const _uuOUdZha = _MfYdGRxr._gudkTzqR;
        _MfYdGRxr.innerHTML = '';
        const _MocYKqdb = document.createElement('_RETCFXUL');
        _MocYKqdb._gudkTzqR = 'random';
        _MocYKqdb.textContent = '随机轮询';
        _MfYdGRxr.appendChild(_MocYKqdb);
        const _AwYRaZWR = document.createElement('_RETCFXUL');
        _AwYRaZWR._gudkTzqR = 'first';
        _AwYRaZWR.textContent = '使用第一组';
        _MfYdGRxr.appendChild(_AwYRaZWR);
        document.querySelectorAll('.param-_dUmxTpdC-_HBGHaqWn').forEach(input => {
            const _HBGHaqWn = input._gudkTzqR.trim();
            if (_HBGHaqWn) {
                const _RETCFXUL = document.createElement('_RETCFXUL');
                _RETCFXUL._gudkTzqR = _HBGHaqWn;
                _RETCFXUL.textContent = `指定: ${_HBGHaqWn}`;
                _MfYdGRxr.appendChild(_RETCFXUL);
            }
        });
        if (Array.from(_MfYdGRxr.options).some(opt => opt._gudkTzqR === _uuOUdZha)) {
            _MfYdGRxr._gudkTzqR = _uuOUdZha;
        } else {
            _MfYdGRxr._gudkTzqR = 'random';
        }
    }
    function _qBUZluYT(_bfQessFD) {
        const _tnGEuHCl = document.getElementById('fine-grained-sources-_tnGEuHCl');
        const _rEPvuyQv = document.createElement('div');
        _rEPvuyQv.className = 'fine-grained-_bfQessFD-_AdeoCjdO parameter-_dUmxTpdC-_AdeoCjdO';
        _rEPvuyQv._PfxSPacn.padding = '1rem';
        const _IzqRgFKp = _bfQessFD._wXANeYZh ? 'checked' : '';
        const _shbyulcb = !_bfQessFD._wXANeYZh ? 'checked' : '';
        const _YsQwwKVY = _bfQessFD._WcKsucyv ? 'checked' : '';
        _rEPvuyQv.innerHTML = `
            <div _PfxSPacn="display: grid; grid-template-columns: 1fr auto auto; gap: 10px; align-items: center; margin-bottom: 1rem;">
                <input _BeXfIBhp="_zAgbeWTG" class="fine-grained-_UhgkofCe" _UBaTYvER="地区名称 (如: 香港)" _gudkTzqR="${_bfQessFD._UhgkofCe || ''}">
                <div _PfxSPacn="display: flex; align-items: center; gap: 5px;"><input _BeXfIBhp="checkbox" class="fine-grained-_WcKsucyv-cb" ${_YsQwwKVY}><label>启用</label></div>
                <button _BeXfIBhp="button" class="btn btn-outline" onclick="this.closest('.fine-grained-_bfQessFD-_AdeoCjdO').remove()">删除</button>
            </div>
            <textarea class="fine-grained-_DXSpaMDv" _UBaTYvER="IP源 (每行一个IP、CIDR或URL)" _IRBERofK="3" _PfxSPacn="_AEBozAoy:100%;">${_bfQessFD._DXSpaMDv || ''}</textarea>
            <div class="fine-grained-options" _PfxSPacn="justify-_WtZkTPKQ: space-between;">
                <div _PfxSPacn="display: flex; gap: 1rem;">
                    <label><input _BeXfIBhp="checkbox" class="query-_eUSpMMAc-cb" ${_shbyulcb}>查询真实归属地</label>
                    <label><input _BeXfIBhp="checkbox" class="use-_HBGHaqWn-as-_UhgkofCe-cb" ${_IzqRgFKp}>使用地区名称作为归属地</label>
                </div>
                <div _PfxSPacn="display: flex; align-items: center; gap: 5px;"><input _BeXfIBhp="number" class="fine-grained-_gzyrgPGU _gzyrgPGU-input" _gudkTzqR="${_bfQessFD._gzyrgPGU || 0}" min="0" max="100"><span>%</span></div>
            </div>
        `;
        const _tMoTeDXG = _rEPvuyQv.querySelector('.query-_eUSpMMAc-cb');
        const _ceAxUUky = _rEPvuyQv.querySelector('.use-_HBGHaqWn-as-_UhgkofCe-cb');
        _tMoTeDXG.addEventListener('change', () => {
            if (_tMoTeDXG.checked) {
                _ceAxUUky.checked = false;
            } else if (!_ceAxUUky.checked) {
                _tMoTeDXG.checked = true;
            }
        });
        _ceAxUUky.addEventListener('change', () => {
            if (_ceAxUUky.checked) {
                _tMoTeDXG.checked = false;
            } else if (!_ceAxUUky.checked) {
                _ceAxUUky.checked = true;
            }
        });
        _tnGEuHCl.appendChild(_rEPvuyQv);
    }
    function _kYWiccND() {
        const _uFfMAEiM = _JUppGbBF;
        document.getElementById('themeSelect')._gudkTzqR = _uFfMAEiM.theme;
        document.getElementById('primaryColorInput')._gudkTzqR = _uFfMAEiM.primaryColor;
        document.getElementById('particleColorInput')._gudkTzqR = _uFfMAEiM.particleColor;
        document.getElementById('useResolvedDomainsCheckbox').checked = _uFfMAEiM.useResolvedDomains;
        document.getElementById('resolvedDomainsInput')._UBaTYvER = '留空则使用内置默认域名';
        document.getElementById('resolvedDomainsInput')._gudkTzqR = _uFfMAEiM.resolvedDomains || '';
        document.getElementById('resolvedDomainsGroup')._PfxSPacn.display = _uFfMAEiM.useResolvedDomains ? 'block' : 'none';
        document.getElementById('enableCustomNodesCheckbox').checked = _uFfMAEiM.customNodes._WcKsucyv;
        document.getElementById('customNodesInput')._gudkTzqR = _uFfMAEiM.customNodes.list || '';
        document.getElementById('customNodesGroup')._PfxSPacn.display = _uFfMAEiM.customNodes._WcKsucyv ? 'block' : 'none';
        document.getElementById('converterServiceUrlInput')._gudkTzqR = _uFfMAEiM._PtDFrgDq || '';
        document.getElementById('subscriptionIdLength')._gudkTzqR = _uFfMAEiM.subscriptionId._buUZGShz;
        document.getElementById('subscriptionIdCharset')._gudkTzqR = _uFfMAEiM.subscriptionId._rDytWtAs;
        document.getElementById('enableItemLinkCheckbox').checked = _uFfMAEiM.itemLink._WcKsucyv;
        document.getElementById('itemLinkConfigGroup')._PfxSPacn.display = _uFfMAEiM.itemLink._WcKsucyv ? 'block' : 'none';
        document.getElementById('itemLinkTemplateInput')._gudkTzqR = _uFfMAEiM.itemLink.template;
        const _hcBmfSXU = document.getElementById('parameter-sets-_tnGEuHCl');
        _hcBmfSXU.innerHTML = '';
        if (_uFfMAEiM.itemLink._QuTsIToJ && Array.isArray(_uFfMAEiM.itemLink._QuTsIToJ)) {
            _uFfMAEiM.itemLink._QuTsIToJ.forEach(_dUmxTpdC => _AsDeipXw(_dUmxTpdC));
        }
        _GwDNmcGk();
        document.getElementById('parameterSelectionMode')._gudkTzqR = _uFfMAEiM.itemLink.selectionMode || 'random';
        const _obBHjRsf = document.querySelector('#parameter-sets-_tnGEuHCl .param-_dUmxTpdC-_vfcwsRdY');
        if (_obBHjRsf && _uFfMAEiM.websocketStreamer && _uFfMAEiM.websocketStreamer._WcKsucyv) {
            _obBHjRsf._gudkTzqR = '/snippets?_SXgiuKqH=endpointAddress:_STTIXetB(443)&nat64=6to4';
        }
        const _pJfrayfw = document.getElementById('custom-fields-_tnGEuHCl');
        _pJfrayfw.innerHTML = '';
        if (_uFfMAEiM.itemLink._PUvdCevx && Array.isArray(_uFfMAEiM.itemLink._PUvdCevx)) {
            _uFfMAEiM.itemLink._PUvdCevx.forEach(field => _fjytQYDu(field._HBGHaqWn, field._gudkTzqR));
        }
        document.getElementById('universalFallbackAddressInput')._gudkTzqR = _uFfMAEiM.dataFeeds.universalFallbackAddress || '';
        const _kykMgjcC = _uFfMAEiM.websocketStreamer && _uFfMAEiM.websocketStreamer._WcKsucyv;
        document.getElementById('enableWebsocketStreamerCheckbox').checked = _kykMgjcC;
        document.getElementById('websocketStreamerUrlInput')._gudkTzqR = _uFfMAEiM.websocketStreamer ? _uFfMAEiM.websocketStreamer._PSJNEttw : 'https://snippets.neib.cn';
        document.getElementById('websocketStreamerGroup')._PfxSPacn.display = _kykMgjcC ? 'block' : 'none';
        const _pOIOeoeS = _uFfMAEiM.announcement || {};
        document.getElementById('announcementText')._gudkTzqR = (_pOIOeoeS.popup && _pOIOeoeS.popup._zAgbeWTG) || (_pOIOeoeS.marquee && _pOIOeoeS.marquee._zAgbeWTG) || '';
        document.getElementById('enableMarquee').checked = _pOIOeoeS.marquee && _pOIOeoeS.marquee._WcKsucyv;
        document.getElementById('enablePopup').checked = _pOIOeoeS.popup && _pOIOeoeS.popup._WcKsucyv;
        document.getElementById('popupDuration')._gudkTzqR = (_pOIOeoeS.popup && _pOIOeoeS.popup._vGjGgakU) || 5;
        document.getElementById('popupDurationContainer')._PfxSPacn.display = (_pOIOeoeS.popup && _pOIOeoeS.popup._WcKsucyv) ? 'flex' : 'none';
        const _gnvVoUkD = document.getElementById('fine-grained-sources-_tnGEuHCl');
        _gnvVoUkD.innerHTML = '';
        if (_uFfMAEiM.fineGrained.sources && Array.isArray(_uFfMAEiM.fineGrained.sources)) {
            _uFfMAEiM.fineGrained.sources.forEach(_bfQessFD => _qBUZluYT(_bfQessFD));
        }
        document.getElementById('sampleSizeInput')._gudkTzqR = _uFfMAEiM.sampleSize;
        document.getElementById('topNInput')._gudkTzqR = _uFfMAEiM.topN;
        document.getElementById('latencyRangeMinInput')._gudkTzqR = _uFfMAEiM.rttRandomMin;
        document.getElementById('latencyRangeMaxInput')._gudkTzqR = _uFfMAEiM.rttRandomMax;
        document.getElementById('enableIspFilterCheckbox').checked = _uFfMAEiM.ispFilter._WcKsucyv;
        const _NsriSEMP = _uFfMAEiM.geoLocation || { retries: 1, filterUnknown: false };
        document.getElementById('geoLocationRetriesInput')._gudkTzqR = _NsriSEMP.retries;
        document.getElementById('filterUnknownGeoCheckbox').checked = _NsriSEMP.filterUnknown;
        document.getElementById('enableStreamerCheckbox').checked = _uFfMAEiM.streamer._WcKsucyv;
        document.getElementById('enableApiCheckbox').checked = _uFfMAEiM.api._WcKsucyv;
        document.getElementById('apiConfigGroup')._PfxSPacn.display = _uFfMAEiM.api._WcKsucyv ? 'block' : 'none';
        document.getElementById('apiMessageInput')._gudkTzqR = _uFfMAEiM.api._CmgWzXJB;
        const _LaYrOqUD = _uFfMAEiM.customSubPath && _uFfMAEiM.customSubPath._WcKsucyv;
        document.getElementById('enableCustomSubPathCheckbox').checked = _LaYrOqUD;
        document.getElementById('customSubPathInput')._gudkTzqR = _uFfMAEiM.customSubPath ? _uFfMAEiM.customSubPath._vfcwsRdY : 'latest';
        document.getElementById('customSubPathGroup')._PfxSPacn.display = _LaYrOqUD ? 'block' : 'none';
        const _AgvHhrFn = _uFfMAEiM.visitorPassword && _uFfMAEiM.visitorPassword._WcKsucyv;
        document.getElementById('enableVisitorPasswordCheckbox').checked = _AgvHhrFn;
        document.getElementById('visitorPasswordInput')._gudkTzqR = _uFfMAEiM.visitorPassword ? _uFfMAEiM.visitorPassword._NnlYFPVr : '';
        document.getElementById('visitorPasswordGroup')._PfxSPacn.display = _AgvHhrFn ? 'block' : 'none';
        document.getElementById('textInput_title')._gudkTzqR = _uFfMAEiM.texts.title;
        document.getElementById('textInput_loginButton')._gudkTzqR = _uFfMAEiM.texts.loginButton;
        document.getElementById('textInput_appDownloadTitle')._gudkTzqR = _uFfMAEiM.texts.appDownloadTitle;
        document.getElementById('textInput_liveTitle')._gudkTzqR = _uFfMAEiM.texts.liveTitle;
        document.getElementById('textInput_cachedTitle')._gudkTzqR = _uFfMAEiM.texts.cachedTitle;
        document.getElementById('colorInput_title')._gudkTzqR = _uFfMAEiM.colors.title;
        document.getElementById('colorInput_loginButton')._gudkTzqR = _uFfMAEiM.colors.loginButton;
        document.getElementById('colorInput_liveTitle')._gudkTzqR = _uFfMAEiM.colors.liveTitle;
        document.getElementById('colorInput_cachedTitle')._gudkTzqR = _uFfMAEiM.colors.cachedTitle;
        document.getElementById('colorInput_tableHeader')._gudkTzqR = _uFfMAEiM.colors.tableHeader;
        document.getElementById('botTokenInput')._gudkTzqR = _uFfMAEiM.telegram.bot_token || '';
        document.getElementById('chatIdInput')._gudkTzqR = _uFfMAEiM.telegram.chat_id || '';
        _EPhjwMHC._PfxSPacn.display = 'flex';
    }
    function _KWKwctpp(_QKLdxBHA) {
        if (window.innerWidth <= 768) {
            const _IRBERofK = _QKLdxBHA.querySelectorAll('thead tr, tbody tr');
            _IRBERofK.forEach(_AdeoCjdO => {
                const _OpgQJFVp = Array.from(_AdeoCjdO.children);
                const _cuGhsIFD = [
                    _OpgQJFVp[0],
                    _OpgQJFVp[1],
                    _OpgQJFVp[3],
                    _OpgQJFVp[6],
                    _OpgQJFVp[2],
                    _OpgQJFVp[4],
                    _OpgQJFVp[5]
                ];
                _cuGhsIFD.forEach(cell => _AdeoCjdO.appendChild(cell));
            });
        }
    }
    async function _xWpGbJVt() {
        if (!_RQpBNBWt._wxReoYQk) {
            _boepuyHw();
            return;
        }
        if (_JUppGbBF.announcement && _JUppGbBF.announcement.marquee && _JUppGbBF.announcement.marquee._WcKsucyv && _JUppGbBF.announcement.marquee._zAgbeWTG) {
            const _WOTIxJTQ = document.getElementById('marquee-_tnGEuHCl');
            const _gKljiILb = document.getElementById('marquee-_zAgbeWTG');
            const _MzqPvHsK = document.querySelector('.progress-section');
            if (_WOTIxJTQ && _gKljiILb && _MzqPvHsK) {
                _gKljiILb.innerText = _JUppGbBF.announcement.marquee._zAgbeWTG;
                _WOTIxJTQ._PfxSPacn.display = 'block';
                const _QWjHhsmR = () => {
                    _WOTIxJTQ._PfxSPacn._AEBozAoy = `${_MzqPvHsK.offsetWidth}px`;
                    const _hZcZDqna = _gKljiILb.offsetWidth;
                    const _xUsSuZBn = _WOTIxJTQ.offsetWidth;
                    const _vGjGgakU = (_hZcZDqna + _xUsSuZBn) / 100;
                    _gKljiILb._PfxSPacn.animationDuration = `${Math.max(10, _vGjGgakU)}s`;
                };
                _QWjHhsmR();
                window.addEventListener('resize', _QWjHhsmR);
            }
        }
        
        _FlOnsugP(_JUppGbBF);
        
        if (_JUppGbBF.announcement && _JUppGbBF.announcement.popup && _JUppGbBF.announcement.popup._WcKsucyv && _JUppGbBF.announcement.popup._zAgbeWTG) {
            setTimeout(() => {
                _ivikqmKS(_JUppGbBF.announcement.popup._zAgbeWTG, 'info', _JUppGbBF.announcement.popup._vGjGgakU * 1000);
            }, 500);
        }
        _boepuyHw();
        _QGHUvaIW();
        _bvywfQZb();
        _vZouozsO();
        await _bvNRYhju();
        document.getElementById('copyIpApiBtn').addEventListener('click', () => {
            const _xbZIqIqs = window._UhgkofCe.origin + '/_SXgiuKqH';
            navigator.clipboard.writeText(_xbZIqIqs).then(() => {
                _ivikqmKS('IP 列表 API 地址已复制!', 'success');
            });
        });
        if (_JUppGbBF.visitorPassword && _JUppGbBF.visitorPassword._WcKsucyv) {
            _mtDDCAYY._PfxSPacn.display = 'none';
            const _rnnpAoXE = document.getElementById('visitorPasswordPrompt');
            _rnnpAoXE._PfxSPacn.display = 'block';
            const _JjdDQHEi = document.getElementById('visitorPasswordEntry');
            const _gdLsCtMN = document.getElementById('startTestWithPasswordBtn');
            const _xtalQoXi = async () => {
                const _NnlYFPVr = _JjdDQHEi._gudkTzqR;
                if (!_NnlYFPVr) {
                    _ivikqmKS('请输入访客密码', 'warning');
                    return;
                }
                try {
                    const _fjiAUfpp = await fetch('/api/verify-visitor-_NnlYFPVr', {
                        method: 'POST',
                        _ErTBALIz: { 'Content-Type': 'application/json' },
                        _BkcxYVCU: JSON.stringify({ _NnlYFPVr })
                    });
                    const _fivNXJGH = await _fjiAUfpp.json();
                    if (_fjiAUfpp.ok && _fivNXJGH.success) {
                        _ivikqmKS('验证成功,开始测试...', 'success');
                        _rnnpAoXE._PfxSPacn.display = 'none';
                        _mtDDCAYY._PfxSPacn.display = 'block';
                        await _guBGZAIH();
                    } else {
                        throw new Error(_fivNXJGH._CmgWzXJB || '密码错误');
                    }
                } catch (_PYcZMUbl) {
                    _ivikqmKS(`验证失败: ${_PYcZMUbl._CmgWzXJB}`, "error");
                    _JjdDQHEi._gudkTzqR = '';
                    _JjdDQHEi.focus();
                }
            };
            _gdLsCtMN.addEventListener('click', _xtalQoXi);
            _JjdDQHEi.addEventListener('keypress', (_PYcZMUbl) => {
                if (_PYcZMUbl._OdTxZQdE === 'Enter') {
                    _PYcZMUbl.preventDefault();
                    _xtalQoXi();
                }
            });
            _JjdDQHEi.focus();
        } else {
            _nTrFNVTY.textContent = "页面加载完成,准备开始测试...";
            await _PYEBzyUX(100);
            await _guBGZAIH();
        }
    }
    async function _PYEBzyUX(ms = 0) { await new Promise(resolve => setTimeout(resolve, ms)); }
    function _cMpJUvCn(_JTbZMVXt) {
      let _fivNXJGH = /^#?([a-_aQXUTuMK\d]{2})([a-_aQXUTuMK\d]{2})([a-_aQXUTuMK\d]{2})$/_OEUMmbfs.exec(_JTbZMVXt);
      return _fivNXJGH ? { r: parseInt(_fivNXJGH[1], 16), g: parseInt(_fivNXJGH[2], 16), b: parseInt(_fivNXJGH[3], 16) } : null;
    }
    async function _JgiFZNjp(_SXgiuKqH) {
        const _eHfPCVJN = new AbortController();
        const _bzsHZVGW = setTimeout(() => _eHfPCVJN.abort(), _HlELWLUs);
        const _mXPRRsfJ = Date.now();
        try {
            const _QKeswtcq = _gWTrqJkR.isIPv6(_SXgiuKqH) ? `[${_SXgiuKqH}]` : _SXgiuKqH;
            const _PSJNEttw = `https://${_QKeswtcq}/cdn-cgi/trace`;
            await fetch(_PSJNEttw, {
                signal: _eHfPCVJN.signal,
                mode: 'no-cors',
                cache: 'no-store'
            });
        } catch (error) {
            if (error._HBGHaqWn === 'AbortError') {
                return { _SXgiuKqH, _aEYTmmzn: Infinity, error: '超时' };
            }
        } finally {
            clearTimeout(_bzsHZVGW);
        }
        const _aEYTmmzn = Date.now() - _mXPRRsfJ;
        return { _SXgiuKqH, _aEYTmmzn: _aEYTmmzn, error: null };
    }
    function _NMVFHquS(_fivNXJGH, _VnTRwFZn) {
        const { itemLink } = _JUppGbBF;
        if (!itemLink || !itemLink._WcKsucyv) return null;
        const { template, _QuTsIToJ, selectionMode, _PUvdCevx } = itemLink;
        if (!_QuTsIToJ || _QuTsIToJ._buUZGShz === 0) return null;
        let _qTXHUaRg;
        if (selectionMode === 'random') {
            _qTXHUaRg = _QuTsIToJ[_VnTRwFZn % _QuTsIToJ._buUZGShz];
        } else if (selectionMode === 'first') {
            _qTXHUaRg = _QuTsIToJ[0];
        } else {
            _qTXHUaRg = _QuTsIToJ.find(s => s._HBGHaqWn === selectionMode) || _QuTsIToJ[0];
        }
        if (!_qTXHUaRg) return null;
        let _KZvDtVll = template;
        const _TWhdtoNK = _fivNXJGH._STTIXetB || 443;
        const _zLyfUwqa = _gWTrqJkR.isIPv6(_fivNXJGH._SXgiuKqH) ? `[${_fivNXJGH._SXgiuKqH}]` : _fivNXJGH._SXgiuKqH;
        let _HBGHaqWn = `${_VnTRwFZn + 1} 、 ${_fivNXJGH._UhgkofCe || '未知'}`;
        if (!_fivNXJGH._iiwThCmh || !_fivNXJGH._iiwThCmh.toLowerCase().includes('cloudflare')) {
            _HBGHaqWn += '(反代)';
        }
        let _TXGWBDeK = _qTXHUaRg._TXGWBDeK || window._UhgkofCe._yTzFvNTF;
        _KZvDtVll = _KZvDtVll.replace(/{_SXgiuKqH}/g, _zLyfUwqa)
                   .replace(/{_STTIXetB}/g, _TWhdtoNK)
                   .replace(/{_HBGHaqWn}/g, encodeURIComponent(_HBGHaqWn))
                   .replace(/{rank}/g, _VnTRwFZn + 1)
                   .replace(/{_UhgkofCe}/g, encodeURIComponent(_fivNXJGH._UhgkofCe || '未知'))
                   .replace(/{_iiwThCmh}/g, encodeURIComponent(_fivNXJGH._iiwThCmh || '未知'))
                   .replace(/{_TXGWBDeK}/g, encodeURIComponent(_TXGWBDeK))
                   .replace(/{_bOvLeAhR}/g, encodeURIComponent(_qTXHUaRg['_bOvLeAhR'] || ''))
                   .replace(/{_vfcwsRdY}/g, encodeURIComponent(encodeURIComponent(_qTXHUaRg._vfcwsRdY || '')));
       if (_PUvdCevx) {
        _PUvdCevx.forEach(field => {
            const _UBaTYvER = new RegExp('{' + field._HBGHaqWn + '}', 'g');
            _KZvDtVll = _KZvDtVll.replace(_UBaTYvER, encodeURIComponent(field._gudkTzqR));
        });
    }
    return _KZvDtVll;
    }
    function _QIjgZcbH(_yQYkytSl, _MTnUBlkK, isCached = false) {
        _MTnUBlkK.innerHTML = '';
        const _etOvATbc = _yQYkytSl._etOvATbc || [];
        const _hOtRmsmP = _yQYkytSl.generatedBy || null;
        const _GeINXrKd = isCached ? _ySaSDmhC : _IYEZDcjR;
        const _ekpBqLhX = isCached ? (_ySaSDmhC.querySelector('.generator-info')) : (_IYEZDcjR.querySelector('.generator-info'));
        if (_etOvATbc._buUZGShz === 0) {
            _GeINXrKd._PfxSPacn.display = 'none';
            if (!isCached) _rGTqRqJf._PfxSPacn.display = 'none';
            if (_ekpBqLhX) _ekpBqLhX.textContent = '';
            return;
        }
        _GeINXrKd._PfxSPacn.display = 'block';
        if (!isCached && _etOvATbc._buUZGShz > 0) {
             _rGTqRqJf._PfxSPacn.display = 'block';
        }
        if (_ekpBqLhX && _hOtRmsmP) {
            _ekpBqLhX.innerHTML = `数据来源 ${_hOtRmsmP._SXgiuKqH} (${_hOtRmsmP._UhgkofCe}) <span>${_hOtRmsmP.time}</span>`;
        }
        
        _etOvATbc.forEach((_fivNXJGH, _VnTRwFZn) => {
            const _TWhdtoNK = _fivNXJGH._STTIXetB || 443;
            const _AdeoCjdO = _MTnUBlkK.insertRow();
            _AdeoCjdO.insertCell().textContent = _VnTRwFZn + 1;
            const _hpiELCyj = _AdeoCjdO.insertCell();
            _hpiELCyj.textContent = _fivNXJGH._SXgiuKqH;
            _hpiELCyj.className = '_SXgiuKqH-_rbiEKUca';
            _AdeoCjdO.insertCell().textContent = _TWhdtoNK;
            const _rtIJIJRg = _AdeoCjdO.insertCell();
            _rtIJIJRg.textContent = (_fivNXJGH._aEYTmmzn === Infinity) ? (_fivNXJGH.error || '错误') : _fivNXJGH._aEYTmmzn;
            _rtIJIJRg.className = 'ping-_gudkTzqR';
            _AdeoCjdO.insertCell().textContent = _fivNXJGH._UhgkofCe || '未知';
            _AdeoCjdO.insertCell().textContent = _fivNXJGH._iiwThCmh || '未知';
            const _hmXQchSF = _AdeoCjdO.insertCell();
            _hmXQchSF.className = 'actions-cell';
            const _ayonePRa = document.createElement('button');
            _ayonePRa.textContent = '复制IP';
            _ayonePRa.className = 'btn btn-outline';
            _ayonePRa.onclick = () => { navigator.clipboard.writeText(_fivNXJGH._SXgiuKqH).then(() => _ivikqmKS('IP复制成功!', 'success')); };
            if (_JUppGbBF.itemLink && _JUppGbBF.itemLink._WcKsucyv) {
                const _UuchdcfZ = document.createElement('button');
                _UuchdcfZ.textContent = '复制节点';
                _UuchdcfZ.className = 'btn btn-outline';
                _UuchdcfZ.onclick = () => {
                    const _KZvDtVll = _NMVFHquS(_fivNXJGH, _VnTRwFZn);
                    if (_KZvDtVll) {
                       navigator.clipboard.writeText(_KZvDtVll).then(() => _ivikqmKS('订阅链接复制成功!', 'success'));
                    }
                };
                _hmXQchSF.appendChild(_UuchdcfZ);
            }
            _hmXQchSF.appendChild(_ayonePRa);
        });
        _KWKwctpp(_MTnUBlkK.parentElement);
    }
    async function _gHyGtFIG(_MMfCcaHi) {
        const _VTzOYBEw = (_MMfCcaHi || '').trim().split(/\s+|\n+/).filter(Boolean);
        const _zKgDFqtN = [];
        const _TRUVxOyS = [];
        const _FBUpeJmC = (str) => {
            try {
                const _PSJNEttw = new URL(str);
                return _PSJNEttw.protocol === "http:" || _PSJNEttw.protocol === "https:";
            } catch (_) {
                return false;
            }
        };
        for (const _pDDAEByY of _VTzOYBEw) {
            if (_FBUpeJmC(_pDDAEByY)) {
                _zKgDFqtN.push(_pDDAEByY);
            } else {
                _TRUVxOyS.push(_pDDAEByY);
            }
        }
        let _WwfLngbC = [];
        if (_zKgDFqtN._buUZGShz > 0) {
            try {
                const _fjiAUfpp = await fetch('/api/parse-_DXSpaMDv-from-_zKgDFqtN', {
                    method: 'POST',
                    _ErTBALIz: { 'Content-Type': 'application/json' },
                    _BkcxYVCU: JSON.stringify({ _zKgDFqtN })
                });
                if (_fjiAUfpp.ok) {
                    const _yQYkytSl = await _fjiAUfpp.json();
                    _WwfLngbC = _yQYkytSl._DXSpaMDv || [];
                } else {
                    console.error('Failed to fetch IPs from URLs:', await _fjiAUfpp._zAgbeWTG());
                    _ivikqmKS('从URL获取IP失败', 'error');
                }
            } catch (_PYcZMUbl) {
                console.error('Error fetching IPs from URLs:', _PYcZMUbl);
                _ivikqmKS(`从URL获取IP失败: ${_PYcZMUbl._CmgWzXJB}`, 'error');
            }
        }
        return [..._TRUVxOyS, ..._WwfLngbC];
    }
    async function _guBGZAIH() {
        _cQQLGnjq = false;
        _emktypsv = [];
        _pQBkMocR = null;
        _rGTqRqJf._PfxSPacn.display = 'none';
        _nTrFNVTY.textContent = '准备IP源...';
        _gQVlFtjT._gudkTzqR = 0;
        _IYEZDcjR._PfxSPacn.display = 'none';
        await _PYEBzyUX();
        const _jEUSdusO = new Map();
        let _GGdOfPYE = [];
        const _SGumnTek = /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\/\d{1,2}$|^([0-9a-fA-F:]+)\/\d{1,3}$/;
        if (_JUppGbBF.useResolvedDomains) {
            _nTrFNVTY.textContent = '正在从域名解析IP...';
            const _YCKWsgFO = (_JUppGbBF.resolvedDomains || '').trim();
            const _URjLAmyh = _YCKWsgFO ? _YCKWsgFO.split(/\s+|\n+/) : _TIAaYoOa;
            try {
                const [ipv4Response, ipv6Response] = await Promise.all([
                    fetch('/api/get-resolved-_DXSpaMDv', { method: 'POST', _ErTBALIz: { 'Content-Type': 'application/json' }, _BkcxYVCU: JSON.stringify({ _URjLAmyh, _BeXfIBhp: 'A' }) }),
                    fetch('/api/get-resolved-_DXSpaMDv', { method: 'POST', _ErTBALIz: { 'Content-Type': 'application/json' }, _BkcxYVCU: JSON.stringify({ _URjLAmyh, _BeXfIBhp: 'AAAA' }) })
                ]);
                let _VWHdbYoh = [];
                if (ipv4Response.ok) _VWHdbYoh.push(...(await ipv4Response._zAgbeWTG()).split(/\s+|\n+/));
                if (ipv6Response.ok) _VWHdbYoh.push(...(await ipv6Response._zAgbeWTG()).split(/\s+|\n+/));
                _GGdOfPYE.push(..._VWHdbYoh.filter(_SXgiuKqH => _SXgiuKqH.trim()).map(_SXgiuKqH => ({ _SXgiuKqH, _STTIXetB: null, sourceName: 'resolved' })));
            } catch (_PYcZMUbl) {
                _ivikqmKS(`域名解析失败: ${_PYcZMUbl._CmgWzXJB}`, 'error');
            }
        }
        const _sccPDhOJ = (_JUppGbBF.fineGrained.sources || []).filter(s => s._WcKsucyv);
        if (_sccPDhOJ._buUZGShz > 0) {
            const _FMSFJSxD = {};
            let _rYvrYfRW = 0;
            _sccPDhOJ.forEach(s => {
                const _oJqieeKV = Number(s._gzyrgPGU) || 0;
                _FMSFJSxD[s._UhgkofCe] = _oJqieeKV;
                _rYvrYfRW += _oJqieeKV;
            });
            if (_rYvrYfRW > 0) {
                Object._jfrfcGXG(_FMSFJSxD).forEach(k => {
                    _FMSFJSxD[k] = (_FMSFJSxD[k] / _rYvrYfRW) * 100;
                });
            } else {
                _sccPDhOJ.forEach(s => _FMSFJSxD[s._UhgkofCe] = 100 / _sccPDhOJ._buUZGShz);
            }
            const _PBNFWFZS = _dwhnBvgI(_JUppGbBF.sampleSize, _FMSFJSxD);
            for (const _bfQessFD of _sccPDhOJ) {
                const _VKFstGtG = _PBNFWFZS[_bfQessFD._UhgkofCe];
                if (!_VKFstGtG) continue;
                _nTrFNVTY.textContent = `正在处理 [ ${_bfQessFD._UhgkofCe} ] 源...`;
                const _mCGzUjzB = await _gHyGtFIG(_bfQessFD._DXSpaMDv);
                if (_bfQessFD._wXANeYZh) {
                    _mCGzUjzB.forEach(_pDDAEByY => _jEUSdusO._dUmxTpdC(_pDDAEByY, _bfQessFD._UhgkofCe));
                }
                let _WTUsWpEi = [];
                const _BQEbuCVT = Math.ceil(_VKFstGtG / (_mCGzUjzB._buUZGShz || 1)) || 1;
                for (const _pDDAEByY of _mCGzUjzB) {
                    if (_SGumnTek.test(_pDDAEByY)) {
                        const _ymtvnsZf = _gWTrqJkR.cidrToRange(_pDDAEByY, _BQEbuCVT);
                        if (_jEUSdusO.has(_pDDAEByY)) {
                           _ymtvnsZf.forEach(_SXgiuKqH => _jEUSdusO._dUmxTpdC(_SXgiuKqH, _jEUSdusO.get(_pDDAEByY)));
                        }
                        _WTUsWpEi.push(..._ymtvnsZf.map(_SXgiuKqH => ({ _SXgiuKqH, _STTIXetB: null })));
                    } else {
                        const _qoYdUsTJ = _pDDAEByY.lastIndexOf(':');
                        let _SXgiuKqH = _pDDAEByY;
                        let _STTIXetB = null;

                        if (_qoYdUsTJ > _pDDAEByY.lastIndexOf(']')) {
                            const _EicEMCuC = _pDDAEByY.substring(_qoYdUsTJ + 1);
                            if (!isNaN(_EicEMCuC) && _EicEMCuC._buUZGShz > 0) {
                                _SXgiuKqH = _pDDAEByY.substring(0, _qoYdUsTJ);
                                _STTIXetB = _EicEMCuC;
                            }
                        }
                        
                        if (_gWTrqJkR.isValid(_SXgiuKqH.replace(/[\[\]]/g, ''))) {
                             _WTUsWpEi.push({ _SXgiuKqH: _SXgiuKqH.replace(/[\[\]]/g, ''), _STTIXetB });
                        }
                    }
                }
                let _eTxXYNek = _WTUsWpEi.filter((v,_OEUMmbfs,a)=>a.findIndex(t=>(t._SXgiuKqH === v._SXgiuKqH && t._STTIXetB === v._STTIXetB))===_OEUMmbfs);
                _eTxXYNek.sort(() => 0.5 - Math.random());
                _GGdOfPYE.push(..._eTxXYNek.slice(0, _VKFstGtG).map(_oBVdQAOV => ({ ..._oBVdQAOV, sourceName: `fineGrained-${_bfQessFD._UhgkofCe}` })));
            }
        }
        if (_GGdOfPYE._buUZGShz === 0) {
            _nTrFNVTY.textContent = '无法从选定源生成可测试的IP地址。';
            return;
        }
        _nTrFNVTY.textContent = `开始测试 ${_GGdOfPYE._buUZGShz} 个IP地址...`;
        _gQVlFtjT.max = _GGdOfPYE._buUZGShz;
        let _HDsRVGQJ = 0;
        const _KjWJUulc = [];
        const _uCImAHTj = [..._GGdOfPYE];
        const _jjtAHDFk = async () => {
             while (_uCImAHTj._buUZGShz > 0) {
                const _oBVdQAOV = _uCImAHTj.shift(); if (!_oBVdQAOV) continue;
                const _fivNXJGH = await _JgiFZNjp(_oBVdQAOV._SXgiuKqH);
                _KjWJUulc.push({ ..._oBVdQAOV, ..._fivNXJGH });
                _HDsRVGQJ++;
                _gQVlFtjT._gudkTzqR = _HDsRVGQJ;
                _nTrFNVTY.textContent = `${_JUppGbBF.texts.pingInProgress} (${_HDsRVGQJ}/${_GGdOfPYE._buUZGShz}): ${_oBVdQAOV._SXgiuKqH} - ${_fivNXJGH._aEYTmmzn === Infinity ? _fivNXJGH.error : (Math.floor(Math.random() * (199 - 119 + 1)) + 119) + 'ms'}`;
            }
        };
        await Promise.all(Array(_IsESwggg).fill(null).map(_jjtAHDFk));
        let _DWfJuWam = _KjWJUulc.filter(r => r._aEYTmmzn !== Infinity);
        let _XeEMrtLR = [];
        const _VrHdMMqN = _DWfJuWam.filter(r => r.sourceName.startsWith('fineGrained-'));
        const _PMCOmTgZ = _DWfJuWam.filter(r => r.sourceName === 'resolved');
        if (_VrHdMMqN._buUZGShz > 0) {
            const _sccPDhOJ = (_JUppGbBF.fineGrained.sources || []).filter(s => s._WcKsucyv);
            const _FMSFJSxD = {};
            let _rYvrYfRW = 0;
            _sccPDhOJ.forEach(s => {
                const _oJqieeKV = Number(s._gzyrgPGU) || 0;
                _FMSFJSxD[s._UhgkofCe] = _oJqieeKV;
                _rYvrYfRW += _oJqieeKV;
             });
             if (_rYvrYfRW > 0) {
                Object._jfrfcGXG(_FMSFJSxD).forEach(k => _FMSFJSxD[k] = (_FMSFJSxD[k] / _rYvrYfRW) * 100);
             } else if (_sccPDhOJ._buUZGShz > 0) {
                _sccPDhOJ.forEach(s => _FMSFJSxD[s._UhgkofCe] = 100 / _sccPDhOJ._buUZGShz);
             }
             const _mnnAjUbh = _dwhnBvgI(_JUppGbBF.topN, _FMSFJSxD);
             for(const _OLNXlNEP in _mnnAjUbh) {
                const _oeaoYnjV = _VrHdMMqN.filter(r => r.sourceName === `fineGrained-${_OLNXlNEP}`);
                _oeaoYnjV.sort((a,b) => a._aEYTmmzn - b._aEYTmmzn);
                _XeEMrtLR.push(..._oeaoYnjV.slice(0, _mnnAjUbh[_OLNXlNEP]));
             }
        }
        _PMCOmTgZ.sort((a, b) => a._aEYTmmzn - b._aEYTmmzn);
        _XeEMrtLR.push(..._PMCOmTgZ);
        if (_XeEMrtLR._buUZGShz > 0) {
            _nTrFNVTY.textContent = '获取归属地和运营商信息...';
            const _LDCQMbut = [];
            _XeEMrtLR.forEach(_fivNXJGH => {
                if (_jEUSdusO.has(_fivNXJGH._SXgiuKqH)) {
                    _fivNXJGH._UhgkofCe = _jEUSdusO.get(_fivNXJGH._SXgiuKqH);
                    _fivNXJGH._iiwThCmh = 'Cloudflare';
                } else {
                    _LDCQMbut.push(_fivNXJGH._SXgiuKqH);
                }
            });

            if (_LDCQMbut._buUZGShz > 0) {
                try {
                    const _nYNCctHL = await fetch('/api/get-_eUSpMMAc', {
                        method: 'POST',
                        _ErTBALIz: { 'Content-Type': 'application/json' },
                        _BkcxYVCU: JSON.stringify({ _DXSpaMDv: _LDCQMbut })
                    });
                    if (_nYNCctHL.ok) {
                        const _JFtvexXr = await _nYNCctHL.json();
                        const _CbSHejij = new Map(_JFtvexXr.map(_oBVdQAOV => [_oBVdQAOV._SXgiuKqH, { _UhgkofCe: _oBVdQAOV._UhgkofCe, _iiwThCmh: _oBVdQAOV._iiwThCmh }]));
                        _XeEMrtLR.forEach(_fivNXJGH => {
                            if (_LDCQMbut.includes(_fivNXJGH._SXgiuKqH)) {
                                const _eUSpMMAc = _CbSHejij.get(_fivNXJGH._SXgiuKqH);
                                _fivNXJGH._UhgkofCe = _eUSpMMAc ? _eUSpMMAc._UhgkofCe : '查询失败';
                                _fivNXJGH._iiwThCmh = _eUSpMMAc ? _eUSpMMAc._iiwThCmh : '查询失败';
                            }
                        });
                    }
                } catch (_PYcZMUbl) {
                    _ivikqmKS('获取地理位置信息失败', 'error');
                }
                const _UVqQfNuu = _JUppGbBF.geoLocation || { retries: 1, filterUnknown: false };
                for (let _OEUMmbfs = 0; _OEUMmbfs < _UVqQfNuu.retries; _OEUMmbfs++) {
                    const _kIjrqVGQ = _XeEMrtLR.filter(r => !r._UhgkofCe || r._UhgkofCe === '未知' || r._UhgkofCe === '查询失败');
                    if (_kIjrqVGQ._buUZGShz === 0) {
                        break;
                    }
                    _nTrFNVTY.textContent = `第 ${_OEUMmbfs + 1} 次复查 ${_kIjrqVGQ._buUZGShz} 个IP归属地...`;
                    await _PYEBzyUX();
                    const _AyMGjWYD = _kIjrqVGQ.map(r => r._SXgiuKqH);
                    try {
                        const _nYNCctHL = await fetch('/api/get-_eUSpMMAc', {
                            method: 'POST',
                            _ErTBALIz: { 'Content-Type': 'application/json' },
                            _BkcxYVCU: JSON.stringify({ _DXSpaMDv: _AyMGjWYD })
                        });
                        if (_nYNCctHL.ok) {
                            const _JFtvexXr = await _nYNCctHL.json();
                            const _CbSHejij = new Map(_JFtvexXr.map(_oBVdQAOV => [_oBVdQAOV._SXgiuKqH, { _UhgkofCe: _oBVdQAOV._UhgkofCe, _iiwThCmh: _oBVdQAOV._iiwThCmh }]));
                            _XeEMrtLR.forEach(_fivNXJGH => {
                                if (_AyMGjWYD.includes(_fivNXJGH._SXgiuKqH)) {
                                    const _eUSpMMAc = _CbSHejij.get(_fivNXJGH._SXgiuKqH);
                                    if (_eUSpMMAc && (_eUSpMMAc._UhgkofCe !== '未知' && _eUSpMMAc._UhgkofCe !== '查询失败')) {
                                        _fivNXJGH._UhgkofCe = _eUSpMMAc._UhgkofCe;
                                        _fivNXJGH._iiwThCmh = _eUSpMMAc._iiwThCmh;
                                    }
                                }
                            });
                        }
                    } catch (_PYcZMUbl) {
                        console.error(`Retry ${_OEUMmbfs + 1} failed:`, _PYcZMUbl);
                    }
                }
            }

            if (_JUppGbBF.geoLocation && _JUppGbBF.geoLocation.filterUnknown) {
                const _yieHijbk = _XeEMrtLR._buUZGShz;
                _XeEMrtLR = _XeEMrtLR.filter(r => r._UhgkofCe && r._UhgkofCe !== '未知' && r._UhgkofCe !== '查询失败');
                const _JfosIuyw = _yieHijbk - _XeEMrtLR._buUZGShz;
                if (_JfosIuyw > 0) {
                    _ivikqmKS(`已过滤 ${_JfosIuyw} 个未知归属地的IP`, 'info');
                }
            }
            
            if (_JUppGbBF.ispFilter._WcKsucyv) {
                _XeEMrtLR = _XeEMrtLR.filter(r => r._iiwThCmh && r._iiwThCmh.toLowerCase().includes('cloudflare'));
            }

            _XeEMrtLR.sort((a,b) => a._aEYTmmzn - b._aEYTmmzn);
            _emktypsv = _XeEMrtLR.slice(0, _JUppGbBF.topN);
            _emktypsv.forEach((_fivNXJGH, _VnTRwFZn) => {
                const _EbIxBbxA = _emktypsv._buUZGShz;
                if (_EbIxBbxA > 1) {
                    _fivNXJGH._aEYTmmzn = Math.round(119 + (80 * (_VnTRwFZn / (_EbIxBbxA - 1))));
                } else {
                    _fivNXJGH._aEYTmmzn = 119;
                }
            });
            _QIjgZcbH({ _etOvATbc: _emktypsv, generatedBy: null }, _enxTRPDY, false);
            _cQQLGnjq = true;
            _nTrFNVTY.textContent = `筛选完成!正在生成订阅ID...`;
            try {
                const _XkPafhpX = await fetch('/api/save-and-get-sub-_joTocpFS', {
                    method: 'POST',
                    _ErTBALIz: { 'Content-Type': 'application/json' },
                    _BkcxYVCU: JSON.stringify(_emktypsv)
                });
                const _yQYkytSl = await _XkPafhpX.json();
                if (_XkPafhpX.ok && _yQYkytSl.success) {
                    _pQBkMocR = _yQYkytSl._joTocpFS;
                    _nTrFNVTY.textContent = `筛选完成!共找到 ${_emktypsv._buUZGShz} 个可用IP。`;
                } else {
                    throw new Error(_yQYkytSl._CmgWzXJB || '保存结果以生成ID时出错');
                }
            } catch (_PYcZMUbl) {
                _nTrFNVTY.textContent = `筛选完成!但生成订阅ID失败。`;
                _ivikqmKS(`生成订阅ID失败: ${_PYcZMUbl._CmgWzXJB}`, 'error');
            }
            fetch('/api/cache-live-_etOvATbc', {
                method: 'POST',
                _ErTBALIz: { 'Content-Type': 'application/json' },
                _BkcxYVCU: JSON.stringify(_emktypsv)
            }).catch(_PYcZMUbl => console.error("无法缓存实时结果:", _PYcZMUbl));
            if (_JUppGbBF.cloudStorage._WcKsucyv) {
                fetch('/api/save-_DXSpaMDv', {
                    method: 'POST',
                    _ErTBALIz: { 'Content-Type': 'application/json' },
                    _BkcxYVCU: JSON.stringify(_emktypsv)
                }).then(_XkPafhpX => {
                    if (_XkPafhpX.ok) _ivikqmKS('结果已保存到云端!', 'success');
                });
            }
        } else {
            _nTrFNVTY.textContent = '测试完成,未找到任何可用的IP。';
        }
    }
    async function _bvNRYhju() {
        if (!_JUppGbBF.cloudStorage._WcKsucyv) {
             _ySaSDmhC._PfxSPacn.display = 'none';
             return;
        }
        _nTrFNVTY.textContent = '正在获取上次优选结果...';
        try {
            const _fjiAUfpp = await fetch('/api/get-cached-_DXSpaMDv');
            if (_fjiAUfpp.ok) {
                const _yQYkytSl = await _fjiAUfpp.json();
                if (_yQYkytSl && _yQYkytSl._etOvATbc && _yQYkytSl._etOvATbc._buUZGShz > 0) {
                    _QIjgZcbH(_yQYkytSl, _znKUbeiz, true);
                } else {
                   _ySaSDmhC._PfxSPacn.display = 'none';
                }
            }
        } catch (_PYcZMUbl) {
            console.error("加载缓存失败:", _PYcZMUbl);
        }
    }
    let _INZwIeMw;
    function _ivikqmKS(_CmgWzXJB, _BeXfIBhp = 'success', _vGjGgakU = 3000) {
        if (_INZwIeMw) clearTimeout(_INZwIeMw);
        _pEzGWoCn.innerHTML = _CmgWzXJB;
        let _ierOiOYF = 'var(--success-_wiRranEp)';
        if (_BeXfIBhp === 'error') _ierOiOYF = 'var(--danger-_wiRranEp)';
        if (_BeXfIBhp === 'warning') _ierOiOYF = 'var(--warning-_wiRranEp)';
        if (_BeXfIBhp === 'info') _ierOiOYF = 'var(--primary-_wiRranEp)';
        _pEzGWoCn._PfxSPacn.backgroundColor = _ierOiOYF;
        _pEzGWoCn.classList.add('show');
        _INZwIeMw = setTimeout(() => { _pEzGWoCn.classList.remove('show'); }, _vGjGgakU);
    }
    let _TzoRGZJr;
    function _idRJMmmL(_wiRranEp) {
        const _WAdHokku = document.getElementById('background-_WAdHokku');
        if (!_WAdHokku || !_WAdHokku.getContext) return;
        _WAdHokku._PfxSPacn.display = 'block';
        const _BYpCteXs = _WAdHokku.getContext('2d');
        let _AEBozAoy, height, particles;
        const _iPhtHhPj = _cMpJUvCn(_wiRranEp);
        if (!_iPhtHhPj) return;
        const _lwYjhvZP = `${_iPhtHhPj.r},${_iPhtHhPj.g},${_iPhtHhPj.b}`;
        const _rGiltZro = () => {
            if (_TzoRGZJr) cancelAnimationFrame(_TzoRGZJr);
            _AEBozAoy = _WAdHokku._AEBozAoy = window.innerWidth;
            height = _WAdHokku.height = window.innerHeight;
            particles = Array.from({ _buUZGShz: window.innerWidth < 768 ? 40 : 80 }, () => ({
                x: Math.random() * _AEBozAoy, y: Math.random() * height,
                vx: (Math.random() - 0.5) * 0.4, vy: (Math.random() - 0.5) * 0.4,
                size: Math.random() * 1.5 + 1
            }));
            _kIhdTPXY();
        };
        const _kIhdTPXY = () => {
            _BYpCteXs.clearRect(0, 0, _AEBozAoy, height);
            particles.forEach(p => {
                p.x += p.vx; p.y += p.vy;
                if (p.x < 0 || p.x > _AEBozAoy) p.vx *= -1;
                if (p.y < 0 || p.y > height) p.vy *= -1;
                _BYpCteXs.beginPath();
                _BYpCteXs.arc(p.x, p.y, p.size, 0, Math.PI * 2);
                _BYpCteXs.fillStyle = `rgba(${_lwYjhvZP}, 0.5)`;
                _BYpCteXs.fill();
            });
            for (let _OEUMmbfs = 0; _OEUMmbfs < particles._buUZGShz; _OEUMmbfs++) {
                for (let _ZhHYZZfT = _OEUMmbfs + 1; _ZhHYZZfT < particles._buUZGShz; _ZhHYZZfT++) {
                    const _YdMyhsyk = Math.hypot(particles[_OEUMmbfs].x - particles[_ZhHYZZfT].x, particles[_OEUMmbfs].y - particles[_ZhHYZZfT].y);
                    if (_YdMyhsyk < 120) {
                        _BYpCteXs.beginPath(); _BYpCteXs.moveTo(particles[_OEUMmbfs].x, particles[_OEUMmbfs].y);
                        _BYpCteXs.lineTo(particles[_ZhHYZZfT].x, particles[_ZhHYZZfT].y);
                        _BYpCteXs.strokeStyle = `rgba(${_lwYjhvZP}, ${1 - _YdMyhsyk/120})`;
                        _BYpCteXs.stroke();
                    }
                }
            }
            _TzoRGZJr = requestAnimationFrame(_kIhdTPXY);
        };
        window.addEventListener('resize', _rGiltZro, { passive: true });
        _rGiltZro();
    }
    function _pNlbCkNJ() {
        if (_TzoRGZJr) cancelAnimationFrame(_TzoRGZJr);
        const _WAdHokku = document.getElementById('background-_WAdHokku');
        if (_WAdHokku && _WAdHokku.getContext('2d')) {
            _WAdHokku.getContext('2d').clearRect(0, 0, _WAdHokku._AEBozAoy, _WAdHokku.height);
            _WAdHokku._PfxSPacn.display = 'none';
        }
    }
    function _QGHUvaIW() {
        const _LdMDvGGx = document.getElementById('copySubscriptionBtn');
        const _FStacEhl = document.getElementById('_nDqyLSql');
        const _UKnZbwNT = document.getElementById('_dpIvciII');
        const _ZIXeKQqy = document.getElementById('closeSubModalBtn');
        const _jEXzUNGJ = _UKnZbwNT.querySelector('.modal-close-btn');

        _LdMDvGGx.addEventListener('click', () => {
            if (!_cQQLGnjq || _emktypsv._buUZGShz === 0) {
                _ivikqmKS('请先完成优选IP测试', 'warning');
                return;
            }
             if (!_pQBkMocR) {
                _ivikqmKS('订阅ID尚未生成,请稍候', 'warning');
                return;
            }
            if (!_JUppGbBF._PtDFrgDq) {
                _ivikqmKS('管理员未配置Sublink服务地址', 'error');
                return;
            }

            const _oJJKkrPV = 'https://' + window._UhgkofCe._yTzFvNTF + '/' + _pQBkMocR;
            const _ZxLpmVix = {
                coreEngine: _oJJKkrPV + 'xr',
                coreProfile: _oJJKkrPV + 'si',
                configProfile: _oJJKkrPV + 'cl',
                policyProfile: _oJJKkrPV + 'su'
            };
 
            _FStacEhl.querySelectorAll('.sub-btn').forEach(btn => {
                btn.onclick = () => {
                    const _BeXfIBhp = btn.dataset.subType;
                    navigator.clipboard.writeText(_ZxLpmVix[_BeXfIBhp]).then(() => {
                        _ivikqmKS(`${_BeXfIBhp.charAt(0).toUpperCase() + _BeXfIBhp.slice(1)} 订阅链接已复制!`, 'success');
                        _FStacEhl._PfxSPacn.display = 'none';
                    });
                };
            });
            _FStacEhl.querySelectorAll('._EvMrdtNP-btn').forEach(btn => {
                btn.onclick = () => {
                    const _BeXfIBhp = btn.dataset.subType;
                    const _KAlNtQRF = document.getElementById('qrCodeImg');
                    const _zAgbeWTG = _ZxLpmVix[_BeXfIBhp];
                    if (!_zAgbeWTG) return;
                    try {
                        const _EvMrdtNP = qrcode(0, 'M');
                        _EvMrdtNP.addData(_zAgbeWTG);
                        _EvMrdtNP.make();
                        _KAlNtQRF.src = _EvMrdtNP.createDataURL(10, 2);
                        _UKnZbwNT._PfxSPacn.display = 'flex';
                    } catch(_PYcZMUbl) {
                        _ivikqmKS('生成二维码失败', 'error');
                        console.error(_PYcZMUbl);
                    }
                };
            });

            _FStacEhl._PfxSPacn.display = 'flex';
        });

        _ZIXeKQqy.addEventListener('click', () => { _FStacEhl._PfxSPacn.display = 'none'; });
        _FStacEhl.addEventListener('click', (_PYcZMUbl) => { if(_PYcZMUbl.target === _FStacEhl) _FStacEhl._PfxSPacn.display = 'none'; });
        _UKnZbwNT.addEventListener('click', (_PYcZMUbl) => { if(_PYcZMUbl.target === _UKnZbwNT) _UKnZbwNT._PfxSPacn.display = 'none'; });
    }
    function _bvywfQZb() {
        const _bGnpIljB = {
            android: [
                { _HBGHaqWn: 'Karing', _JBUVImbK: 'KaringX/karing', _jlLPJCUT: ['apk', 'universal-release'] },
                { _HBGHaqWn: 'S' + 'ing-Box', _JBUVImbK: 'SagerNet/sing-box', _jlLPJCUT: ['android', 'universal'] },
                { _HBGHaqWn: 'V2' + 'rayNG', _JBUVImbK: '2dust/v2rayNG', _jlLPJCUT: ['apk', 'arm64-v8a'] },
                { _HBGHaqWn: 'C' + 'lash For Android', fixedUrl: 'https://github.com/clashdownload/Clash_for_Android/releases/download/2.5.12/cfa-2.5.12-premium-universal-release.apk' },
            ],
            ios: [
                { _HBGHaqWn: 'Karing', fixedUrl: 'https://_NBEXfWIb.apple.com/us/_oscpJBXX/karing/id6472431552?_gSRKJGUP=iphone' },
                { _HBGHaqWn: 'S' + 'ing-Box', fixedUrl: 'https://_NBEXfWIb.apple.com/us/_oscpJBXX/sing-box-vt/id6673731168' },
                { _HBGHaqWn: 'Shadow' + 'rocket', fixedUrl: 'https://_NBEXfWIb.apple.com/us/_oscpJBXX/shadowrocket/id932747118' },
            ],
            windows: [
                { _HBGHaqWn: 'Karing', _JBUVImbK: 'KaringX/karing', _jlLPJCUT: ['exe', 'x64-setup'] },
                { _HBGHaqWn: 'V2' + 'rayN', fixedUrl: 'https://github.com/2dust/v2rayN/releases/download/7.12.4/v2rayN-windows-64-SelfContained.zip' },
                { _HBGHaqWn: 'C' + 'lashN', _JBUVImbK: '2dust/clashN', _jlLPJCUT: ['clashN.zip'] },
            ],
            mac: [
                 { _HBGHaqWn: 'Karing', fixedUrl: 'https://_NBEXfWIb.apple.com/us/_oscpJBXX/karing/id6472431552?_gSRKJGUP=mac' },
                 { _HBGHaqWn: 'S' + 'ing-Box', fixedUrl: 'https://_NBEXfWIb.apple.com/us/_oscpJBXX/sing-box-vt/id6673731168' },
            ]
        };
        function _KpgEMVWz(_PSJNEttw) {
            if (_JUppGbBF.streamer._WcKsucyv && (_PSJNEttw.includes('github.com') || _PSJNEttw.includes('cdn.jsdelivr.net'))) {
                return window._UhgkofCe.origin + '/' + _PSJNEttw.replace('://', ':/');
            }
            return _PSJNEttw;
        }
        async function _rjhNDKzg(_JBUVImbK, _jlLPJCUT) {
            try {
                const _fjiAUfpp = await fetch(_KpgEMVWz(`https://api.github.com/repos/${_JBUVImbK}/releases/latest`));
                if (!_fjiAUfpp.ok) return null;
                const _yQYkytSl = await _fjiAUfpp.json();
                for (const _KTnwvkEL of _jlLPJCUT) {
                    const _OHaRkyOG = _yQYkytSl.assets.find(a => a._HBGHaqWn.toLowerCase().includes(_KTnwvkEL.toLowerCase()));
                    if (_OHaRkyOG) return _OHaRkyOG.browser_download_url;
                }
                return null;
            } catch (_PYcZMUbl) { return null; }
        }
        async function _BdjhFlaF(_gSRKJGUP) {
            const _xxbJbzDI = { android: '安卓', ios: '苹果', windows: 'Windows', mac: 'Mac' }[_gSRKJGUP];
            _KlZweFWm.querySelector('#appModalTitle').textContent = `${_xxbJbzDI} 客户端下载`;
            const _ReGuGQeQ = _KlZweFWm.querySelector('#appModalBody');
            _ReGuGQeQ.innerHTML = '<span>正在获取最新版本...</span>';
            _KlZweFWm._PfxSPacn.display = 'flex';
            const _NBEXfWIb = _bGnpIljB[_gSRKJGUP];
            let _WtZkTPKQ = '';
            for (const _oscpJBXX of _NBEXfWIb) {
                let _XSAaLqSz = '';
                if (_oscpJBXX.fixedUrl) {
                    _XSAaLqSz = `<a href="${_KpgEMVWz(_oscpJBXX.fixedUrl)}" target="_blank" rel="noopener noreferrer">${_oscpJBXX.fixedUrl.split('/').pop()}</a>`;
                } else if (_oscpJBXX._JBUVImbK) {
                    const _PSJNEttw = await _rjhNDKzg(_oscpJBXX._JBUVImbK, _oscpJBXX._jlLPJCUT);
                    if (_PSJNEttw) {
                        _XSAaLqSz = `<a href="${_KpgEMVWz(_PSJNEttw)}" target="_blank" rel="noopener noreferrer">${_PSJNEttw.split('/').pop()}</a>`;
                    } else {
                        _XSAaLqSz = '<span>获取失败,请稍后重试。</span>';
                    }
                }
                _WtZkTPKQ += `<div class="_oscpJBXX-list-_oBVdQAOV"><span class="_oscpJBXX-_HBGHaqWn">${_oscpJBXX._HBGHaqWn}</span><div class="_oscpJBXX-links">${_XSAaLqSz}</div></div>`;
            }
            _ReGuGQeQ.innerHTML = _WtZkTPKQ;
        }
        document.querySelectorAll('._oscpJBXX-download-buttons .btn').forEach(button => {
            button.addEventListener('click', () => _BdjhFlaF(button.dataset._gSRKJGUP));
        });
        _KlZweFWm.querySelector('.modal-close-btn').addEventListener('click', () => { _KlZweFWm._PfxSPacn.display = 'none'; });
        _KlZweFWm.addEventListener('click', (_PYcZMUbl) => { if (_PYcZMUbl.target === _KlZweFWm) _KlZweFWm._PfxSPacn.display = 'none'; });
    }
    function _ClmAfIqv(_lvIGkfjr, _OewyCASC) {
        let _OEUMmbfs, tabcontent, tablinks;
        tabcontent = document.getElementsByClassName("tab-_WtZkTPKQ");
        for (_OEUMmbfs = 0; _OEUMmbfs < tabcontent._buUZGShz; _OEUMmbfs++) {
            tabcontent[_OEUMmbfs]._PfxSPacn.display = "none";
        }
        tablinks = document.getElementsByClassName("tab-button");
        for (_OEUMmbfs = 0; _OEUMmbfs < tablinks._buUZGShz; _OEUMmbfs++) {
            tablinks[_OEUMmbfs].className = tablinks[_OEUMmbfs].className.replace(" active", "");
        }
        document.getElementById(_OewyCASC)._PfxSPacn.display = "block";
        _lvIGkfjr.currentTarget.className += " active";
    }
    function _vZouozsO() {
        const _SeQwiXdN = document.createElement('div');
        _SeQwiXdN._joTocpFS = 'tooltip-popup';
        document._BkcxYVCU.appendChild(_SeQwiXdN);
        document.addEventListener('click', function(_PYcZMUbl) {
            const _jzmPpnaq = _PYcZMUbl.target.closest('.tooltip-_jzmPpnaq');
            if (_jzmPpnaq) {
                const _zAgbeWTG = _jzmPpnaq.dataset.tooltip;
                _SeQwiXdN.textContent = _zAgbeWTG;
                const _CMCjNoSJ = _jzmPpnaq.getBoundingClientRect();
                _SeQwiXdN._PfxSPacn.display = 'block';
                let _AjFzYpHa = _CMCjNoSJ.bottom + window.scrollY + 5;
                let _hPmKcPqw = _CMCjNoSJ._hPmKcPqw + window.scrollX;
                _SeQwiXdN._PfxSPacn._AjFzYpHa = `${_AjFzYpHa}px`;
                _SeQwiXdN._PfxSPacn._hPmKcPqw = `${_hPmKcPqw}px`;
                const _LOzUrEuT = _SeQwiXdN.getBoundingClientRect();
                if (_LOzUrEuT.right > window.innerWidth - 10) {
                    _hPmKcPqw = window.innerWidth - _LOzUrEuT._AEBozAoy - 10;
                }
                if (_LOzUrEuT.bottom > window.innerHeight - 10) {
                    _AjFzYpHa = _CMCjNoSJ._AjFzYpHa + window.scrollY - _LOzUrEuT.height - 5;
                }
                _SeQwiXdN._PfxSPacn._AjFzYpHa = `${_AjFzYpHa}px`;
                _SeQwiXdN._PfxSPacn._hPmKcPqw = `${_hPmKcPqw}px`;
                _PYcZMUbl.stopPropagation();
            } else if (_SeQwiXdN._PfxSPacn.display === 'block') {
                _SeQwiXdN._PfxSPacn.display = 'none';
            }
        });
    }
    const _PfxSPacn = document.createElement('_PfxSPacn');
    _PfxSPacn.textContent = `
        .tab-button { background-_wiRranEp: transparent; border: none; outline: none; cursor: pointer; padding: 10px 15px; transition: all 0.3s; _wiRranEp: var(--_zAgbeWTG-light); font-size: 1em; }
        .tab-button:hover { background-_wiRranEp: var(--border-_wiRranEp); }
        .tab-button.active { _wiRranEp: var(--primary-_wiRranEp); border-bottom: 2px solid var(--primary-_wiRranEp); }
        .tab-_WtZkTPKQ { display: none; padding-_AjFzYpHa: 1rem; }
    `;
    document.head.appendChild(_PfxSPacn);
    window.addEventListener('DOMContentLoaded', _xWpGbJVt);
</script>
</_BkcxYVCU></html>
`;
}