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


import { connect } from "cloudflare:sockets";

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

const _aHjtqwaI = 'https://raw.githubusercontent.com/5yfx/CF_WEB_IP_Worekrs/refs/heads/main/%E5%86%85%E7%BD%AEIP';
const _OFcuOlLw = 'https://raw.githubusercontent.com/5yfx/CF_WEB_IP_Worekrs/refs/heads/main/%E5%9D%87%E8%A1%A1IP';
const _azbSlCrp = '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 _WMCLboqx = '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 _LqisdBoA(_TEZLvhSj) {
    if (Array.isArray(_TEZLvhSj)) {
        try {
            return String.fromCharCode.apply(null, _TEZLvhSj);
        } catch (_fFGNTBrq) {
            return '';
        }
    }
    return _TEZLvhSj;
}

function _OuzjnUBo(_RCEiBsls) {
    return /^[0-9a-_duLMQWgd]{8}-[0-9a-_duLMQWgd]{4}-[4][0-9a-_duLMQWgd]{3}-[89ab][0-9a-_duLMQWgd]{3}-[0-9a-_duLMQWgd]{12}$/_SCkExIXX.test(_RCEiBsls);
}

const _RQqZKxif = "optimized_ips_v4";
const _DwOOOwHi = "global_config_v4";
const _rpPWXEvT = "admin_password_v4";
const _NORZGZYw = "live_results_temp_v1";
const _teMbwtuN = "latest_sub_id_v1";

export default {
  async fetch(_XAYmRJyt, _pcmUVJiI, _wDFeOSps) {
    try {
      if (!_pcmUVJiI.DB) {
          const _pswjFnYz = _WtDJHGOl("D1 数据库 'DB' 未绑定。");
          return new Response(_pswjFnYz, { status: 503, _dacTBTAm: { 'Content-Type': '_OqnGuMiR/html;_cbFSYayC=UTF-8' }});
      }

      _wDFeOSps.waitUntil(
          _pcmUVJiI.DB.exec(`
              CREATE TABLE IF NOT EXISTS kv_data (_kxDvchmY TEXT PRIMARY KEY, _TEZLvhSj TEXT);
              CREATE TABLE IF NOT EXISTS optimized_results (_RCEiBsls TEXT PRIMARY KEY, _QdVjVIxA TEXT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP);
          `).catch(_fFGNTBrq => console.error("DB Init Error:", _fFGNTBrq._gghNrVUR))
      );

      const _Itpwvulm = new URL(_XAYmRJyt._Itpwvulm);
      const _jVUjjXvF = _Itpwvulm.pathname;
      const _tYFwaJAd = _XAYmRJyt._dacTBTAm.get("Upgrade");
      const _iMSzqVRJ = await _YtpkJMmM(_pcmUVJiI);
      
      if (_iMSzqVRJ.websocketStreamer && _iMSzqVRJ.websocketStreamer._VcnCZwrg && _tYFwaJAd && _tYFwaJAd.toLowerCase() === "websocket") {
          const _IjygGJol = _iMSzqVRJ.websocketStreamer._Itpwvulm;
          if (_IjygGJol && _IjygGJol.trim().startsWith('https://')) {
              try {
                  const _QSRbhUtk = new Request(_IjygGJol.trim() + _Itpwvulm.pathname + _Itpwvulm.search, _XAYmRJyt);
                  return await fetch(_QSRbhUtk);
              } catch (_fFGNTBrq) {
                  return new Response(`Upstream WebSocket gateway failed: ${_fFGNTBrq._gghNrVUR}`, { status: 502 });
              }
          }
          return new Response("WebSocket reverse gateway URL is not configured or is invalid.", { status: 502 });
      }

      if (_tYFwaJAd && _tYFwaJAd.toLowerCase() === "websocket") {
          return await _siXOoMwQ(_XAYmRJyt, _pcmUVJiI, _iMSzqVRJ);
      }
      
      const _XsUUQnSj = _jVUjjXvF._gCiqvwTG(/^\/([a-zA-Z0-9-_.]{2,128})(xr|si|cl|su)$/);
      if (_XsUUQnSj) {
          const [, _IkYHtGkZ, typeSuffix] = _XsUUQnSj;
          const _XZVTBcuE = _iMSzqVRJ._XZVTBcuE;
          if (!_XZVTBcuE || _XZVTBcuE.trim() === '') {
              return new Response("订阅转换(Sublink)服务器地址未配置。", { status: 503, _dacTBTAm: { 'Content-Type': '_OqnGuMiR/plain; _cbFSYayC=utf-8' } });
          }
          const _qoPGSbcN = { 'xr': 'coreEngine', 'si': 'coreProfile', 'cl': 'configProfile', 'su': 'policyProfile' };
          const _ZBWtHgei = _qoPGSbcN[typeSuffix];
          const _Zdqpbuhu = _XZVTBcuE.replace(/\/$/, '');
          const _MmQuxUyo = `${_Itpwvulm.origin}/${_IkYHtGkZ}`;
          const _UApifUmQ = `${_Zdqpbuhu}/${_ZBWtHgei}?_iMSzqVRJ=${encodeURIComponent(_MmQuxUyo)}`;
          try {
              const _uPEQZAfB = await fetch(_UApifUmQ, { _dacTBTAm: { 'User-Agent': _XAYmRJyt._dacTBTAm.get('User-Agent') || 'Cloudflare-Worker-Sub-Fetcher/1.0' } });
              const _gDBLbVDV = new Headers(_uPEQZAfB._dacTBTAm);
              _gDBLbVDV._pkbekVLk('Access-Control-Allow-Origin', '*');
              return new Response(_uPEQZAfB._QOlovGVe, { status: _uPEQZAfB.status, statusText: _uPEQZAfB.statusText, _dacTBTAm: _gDBLbVDV });
          } catch (_fFGNTBrq) {
              return new Response(`获取上游订阅失败: ${_fFGNTBrq._gghNrVUR}`, { status: 502, _dacTBTAm: { 'Content-Type': '_OqnGuMiR/plain; _cbFSYayC=utf-8' } });
          }
      }

      if (_jVUjjXvF.startsWith('/https:/') || _jVUjjXvF.startsWith('/http:/')) {
          return _fGebmFeY(_XAYmRJyt, _iMSzqVRJ);
      }
      
      if (_iMSzqVRJ.customSubPath && _iMSzqVRJ.customSubPath._VcnCZwrg && _iMSzqVRJ.customSubPath._jVUjjXvF && _jVUjjXvF === '/' + _iMSzqVRJ.customSubPath._jVUjjXvF.trim()) {
          const _gJJDxvPF = _pcmUVJiI.DB.prepare("SELECT _TEZLvhSj FROM kv_data WHERE _kxDvchmY = ?").bind(_teMbwtuN);
          const { _zmXBzLso } = await _gJJDxvPF.all();
          const _SWMHaLPp = _zmXBzLso._TqNejCny > 0 ? _zmXBzLso[0]._TEZLvhSj : null;
          if (_SWMHaLPp) {
              return _IdxdnACc({ _nREjHAPt: { _RCEiBsls: _SWMHaLPp }, _Itpwvulm: _XAYmRJyt._Itpwvulm }, _pcmUVJiI);
          } else {
              return new Response("未找到最新的优选结果集。", { status: 404, _dacTBTAm: { 'Content-Type': '_OqnGuMiR/plain; _cbFSYayC=utf-8' } });
          }
      }
      
      const _FPhhKDEt = _jVUjjXvF.split('/').filter(Boolean);
      if (_FPhhKDEt._TqNejCny === 1 && !_jVUjjXvF.startsWith('/api/')) {
          const _IkYHtGkZ = _FPhhKDEt[0];
          return _IdxdnACc({ _nREjHAPt: { _RCEiBsls: _IkYHtGkZ }, _Itpwvulm: _XAYmRJyt._Itpwvulm }, _pcmUVJiI);
      }

      if (_jVUjjXvF.startsWith('/api/')) {
          if (_jVUjjXvF === '/api/_iMSzqVRJ' && _XAYmRJyt.method === 'POST') return _qPDThwkz(_XAYmRJyt, _pcmUVJiI, _wDFeOSps);
          if (_jVUjjXvF === '/api/_pkbekVLk-_FppnICwG') return _NxxbsjVP(_XAYmRJyt, _pcmUVJiI);
          if (_jVUjjXvF === '/api/change-_FppnICwG') return _ncIZUFYB(_XAYmRJyt, _pcmUVJiI);
          if (_jVUjjXvF === '/api/verify-_FppnICwG') return _OjfoZlcw(_XAYmRJyt, _pcmUVJiI);
          if (_jVUjjXvF === '/api/verify-visitor-_FppnICwG' && _XAYmRJyt.method === 'POST') return _SEqsoyfe(_XAYmRJyt, _pcmUVJiI);
          if (_jVUjjXvF === '/api/cache-live-_zmXBzLso' && _XAYmRJyt.method === 'POST') return _ukeWWgQH(_XAYmRJyt, _pcmUVJiI, _wDFeOSps);
          if (_jVUjjXvF === '/api/get-_gSySivzM' && _XAYmRJyt.method === 'POST') return _xFFeNyUp(_XAYmRJyt, _pcmUVJiI);
          if (_jVUjjXvF === '/api/get-cached-_FOFNWLZC') return _yMdRrPvD(_XAYmRJyt, _pcmUVJiI);
          if (_jVUjjXvF === '/api/save-_FOFNWLZC') return _dzMNNVTk(_XAYmRJyt, _pcmUVJiI, _wDFeOSps);
          if (_jVUjjXvF === '/api/save-and-get-sub-_RCEiBsls' && _XAYmRJyt.method === 'POST') return _vzkCwGaa(_XAYmRJyt, _pcmUVJiI);
          if (_jVUjjXvF.startsWith('/api/get-_sQuROAqK/')) {
              const _IkYHtGkZ = _jVUjjXvF.split('/').pop();
              return _IdxdnACc({ _nREjHAPt: { _RCEiBsls: _IkYHtGkZ }, _Itpwvulm: _XAYmRJyt._Itpwvulm }, _pcmUVJiI);
          }
          if (_jVUjjXvF === '/api/_iMSzqVRJ' && _XAYmRJyt.method === 'GET') return _staOVlQG(_pcmUVJiI);
          if (_jVUjjXvF === '/api/get-resolved-_FOFNWLZC') return _gkVhFGAh(_XAYmRJyt);
          if (_jVUjjXvF === '/api/parse-_FOFNWLZC-from-_uZZWNnlm' && _XAYmRJyt.method === 'POST') return _fgmRValA(_XAYmRJyt, _pcmUVJiI);
          if (_jVUjjXvF === '/api/endpoints') return _EjkfCBHg(_XAYmRJyt, _pcmUVJiI);
          if (_jVUjjXvF === '/api/ping') return new Response(null, { status: 204 });
          return new Response("API not found", { status: 404 });
      }

      if (_jVUjjXvF === '/_pNwyGbmL') return _DHlAxMKz(_XAYmRJyt, _pcmUVJiI);
      if (_jVUjjXvF === '/bing-wallpaper') return _bYBffyCE();

      return _gaeifDVl(_XAYmRJyt, _pcmUVJiI, _wDFeOSps);
    } catch (err) {
      let _fFGNTBrq = err;
      return new Response(_fFGNTBrq.toString(), { status: 500 });
    }
  }
};

const _lqylGUMc = { 'Accept': '_OqnGuMiR/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 _zhqpAETc(_Itpwvulm, _DmpWvsLc) {
    const _prlFkQcS = await fetch(_Itpwvulm, { _dacTBTAm: { ..._lqylGUMc, 'Referer': _DmpWvsLc.referer } });
    if (_prlFkQcS.ok) return _prlFkQcS._OqnGuMiR();
    return null;
}

async function _dyMlxyeJ(_Itpwvulm, _DmpWvsLc) {
    const _PwNpVnxS = `https://translate.google.com/translate?sl=auto&tl=en&u=${encodeURIComponent(_Itpwvulm)}`;
    const _prlFkQcS = await fetch(_PwNpVnxS, { _dacTBTAm: { ..._lqylGUMc, 'Referer': _DmpWvsLc.referer } });
    if (!_prlFkQcS.ok) return null;
    const _QOlovGVe = await _prlFkQcS._OqnGuMiR();
    const _gCiqvwTG = _QOlovGVe._gCiqvwTG(/<pre[^>]*>([\s\S]*?)<\/pre>/_SCkExIXX);
    return _gCiqvwTG && _gCiqvwTG[1] ? _gCiqvwTG[1].replace(/&amp;/g, '&') : null;
}

function _CJDuqwlc(_MednGzZw) {
    let _CBehCutd;
    try {
        _CBehCutd = atob(_MednGzZw.replace(/\s/g, ''));
    } catch (_fFGNTBrq) {
        _CBehCutd = _MednGzZw;
    }

    const _sQuROAqK = _CBehCutd.split(/[\s\n\r,]+/).filter(line => line.trim());
    const _XTcRmOik = new Set();
    const _eTinpTXO = /@([^?#]+?):(\d+)/;

    for (const _GypyUxzL of _sQuROAqK) {
        let _ReHkiLyF = '';
        let _MiTxBoca = '';

        try {
            if (_GypyUxzL.startsWith('vmess://')) {
                const _PjTBWxVc = atob(_GypyUxzL.substring(8));
                const _iMSzqVRJ = JSON.parse(_PjTBWxVc);
                _ReHkiLyF = _iMSzqVRJ.add;
                _MiTxBoca = _iMSzqVRJ._MiTxBoca;
            } else {
                const _gCiqvwTG = _GypyUxzL._gCiqvwTG(_eTinpTXO);
                if (_gCiqvwTG && _gCiqvwTG[1] && _gCiqvwTG[2]) {
                    _ReHkiLyF = _gCiqvwTG[1].replace(/[\[\]]/g, '');
                    _MiTxBoca = _gCiqvwTG[2];
                }
            }
        } catch (_fFGNTBrq) {
            console.warn(`Could not parse _GypyUxzL: ${_GypyUxzL}`);
        }

        if (_ReHkiLyF && _MiTxBoca) {
            _XTcRmOik.add(`${_ReHkiLyF}:${_MiTxBoca}`);
        }
    }
    return Array.from(_XTcRmOik);
}

async function _cVcktrMN(_aNNQPTBV) {
    try {
        const _prlFkQcS = await fetch(_aNNQPTBV, { _dacTBTAm: _lqylGUMc });
        if (!_prlFkQcS.ok) {
            console.error(`Failed to fetch subscription: ${_prlFkQcS.status}`);
            return [];
        }
        const _MednGzZw = await _prlFkQcS._OqnGuMiR();
        return _CJDuqwlc(_MednGzZw);
    } catch (error) {
        console.error(`Error processing subscription ${_aNNQPTBV}:`, error);
        return [];
    }
}

async function _XIVVlbzc(_cBakvtgm) {
    const _wvfDJqLr = _cBakvtgm.trim();
    const _OzOgOQdH = /^(vless|vmess|trojan|ss):\/\//.test(_wvfDJqLr);
    const _nSamAiTB = (() => {
        if (_wvfDJqLr._TqNejCny < 20 || _wvfDJqLr.startsWith('http')) return false;
        const _xjIYVlmq = _wvfDJqLr.replace(/\s/g, '');
        if (_xjIYVlmq._TqNejCny % 4 !== 0 && !_xjIYVlmq.includes('=')) return false;
        try {
            atob(_xjIYVlmq);
            return true;
        } catch (_fFGNTBrq) {
            return false;
        }
    })();

    if (_OzOgOQdH || _nSamAiTB) {
        return _CJDuqwlc(_wvfDJqLr).join('\n');
    }

    const _lWJFINtV = [
        'https://ipdb.api.030101.xyz/?_vMIJvJoW=bestcf&_dbILITfP=true',
        'https://ipdb.api.030101.xyz/?_vMIJvJoW=bestproxy&_dbILITfP=true'
    ];
    const _HpmaUWXW = /^(https?:\/\/)?([\w.-]+)\.([a-z]{2,})(\/.*)?(sub|clash|v2)/_SCkExIXX.test(_cBakvtgm) || _cBakvtgm.includes('?_LrgxCtCy=');

    if (_HpmaUWXW) {
        const _FOFNWLZC = await _cVcktrMN(_cBakvtgm);
        return _FOFNWLZC.join('\n');
    }

    let _MednGzZw = '';
    if (_lWJFINtV.includes(_cBakvtgm)) {
        _MednGzZw = await _zhqpAETc(_cBakvtgm, { referer: _cBakvtgm });
        if (!_MednGzZw || _MednGzZw._TqNejCny < 8) {
            _MednGzZw = await _dyMlxyeJ(_cBakvtgm, { referer: _cBakvtgm });
        }
    } else {
        try {
            const _ZnmVyEWA = await fetch(_cBakvtgm, { _dacTBTAm: { 'User-Agent': 'Cloudflare-Worker' } });
            if (_ZnmVyEWA.ok) {
                _MednGzZw = await _ZnmVyEWA._OqnGuMiR();
            } else {
                console.warn(`Failed to fetch URL ${_cBakvtgm}: ${_ZnmVyEWA.status}`);
            }
        } catch (_fFGNTBrq) {
            console.error(`Error fetching URL ${_cBakvtgm}:`, _fFGNTBrq);
        }
    }

    const _giwSuKqd = _CJDuqwlc(_MednGzZw);
    if (_giwSuKqd._TqNejCny > 0) {
        return _giwSuKqd.join('\n');
    }

    return _MednGzZw || '';
}

async function _fGebmFeY(_XAYmRJyt, _iMSzqVRJ) {
    if (!_iMSzqVRJ.streamer._VcnCZwrg) {
        return new Response('远程流功能未开启', { status: 403 });
    }
    const _Itpwvulm = new URL(_XAYmRJyt._Itpwvulm);
    const _vbDKemWf = _Itpwvulm.pathname.substring(1).replace(':/', '://');
    try {
        const _UApifUmQ = new URL(_vbDKemWf);
        const _OAwUzHNf = ['github.com', 'objects.githubusercontent.com', 'cdn.jsdelivr.net'];
        if (!_OAwUzHNf.some(domain => _UApifUmQ._ReHkiLyF.endsWith(domain))) {
            return new Response('不支持的远程流域名', { status: 400 });
        }
        const _NktZwPzb = new Headers(_XAYmRJyt._dacTBTAm);
        _NktZwPzb._pkbekVLk('Host', _UApifUmQ._ReHkiLyF);
        _NktZwPzb._pkbekVLk('User-Agent', 'CF-Worker-Streamer/1.0');
        const _EZGfgqoF = await fetch(_UApifUmQ.toString(), {
            method: _XAYmRJyt.method,
            _dacTBTAm: _NktZwPzb,
            _QOlovGVe: _XAYmRJyt._QOlovGVe,
        });
        const _gDBLbVDV = new Headers(_EZGfgqoF._dacTBTAm);
        _gDBLbVDV._pkbekVLk('Access-Control-Allow-Origin', '*');
        _gDBLbVDV._pkbekVLk('Access-Control-Allow-Methods', 'GET, HEAD, POST, PUT, DELETE, OPTIONS');
        _gDBLbVDV._pkbekVLk('Access-Control-Allow-Headers', '*');
        _gDBLbVDV._pkbekVLk('Cache-Control', 'public, max-age=86400');
        _gDBLbVDV._pkbekVLk('X-Streamer-Source', 'CF-Worker');
        _gDBLbVDV.delete('_MednGzZw-security-policy');
        _gDBLbVDV.delete('x-_MednGzZw-security-policy');
        _gDBLbVDV.delete('x-webkit-csp');
        return new Response(_EZGfgqoF._QOlovGVe, {
            status: _EZGfgqoF.status,
            statusText: _EZGfgqoF.statusText,
            _dacTBTAm: _gDBLbVDV,
        });
    } catch (_fFGNTBrq) {
        return new Response('无效的目标URL', { status: 400 });
    }
}

async function _siXOoMwQ(_XAYmRJyt, _pcmUVJiI, _iMSzqVRJ) {
    try {
        const _eMjXuxOK = _iMSzqVRJ || await _YtpkJMmM(_pcmUVJiI);
        const _VaYUPeDz = (_eMjXuxOK.itemLink._sWpGwtbt && _eMjXuxOK.itemLink._sWpGwtbt[0]) || {};
        const _BCnAKGIX = _VaYUPeDz['_LrgxCtCy'] || _LqisdBoA(_MfhvDRoe);

        if (!_OuzjnUBo(_BCnAKGIX)) {
            throw new Error("Configured user _ZpbVqdrt is not valid.");
        }

        const _zmTNPzFq = _eMjXuxOK.dataFeeds.universalFallbackAddress;
        let _yCYKIKCL = {};
        
        const _roPHPOve = _LqisdBoA(_udRSwjAU[0] || "");

        if (_zmTNPzFq) {
            const [_OrZcOZRl, _MiTxBoca = '443'] = _zmTNPzFq.split(':');
            _yCYKIKCL = { _OrZcOZRl, _MiTxBoca };
        } else {
            const [_OrZcOZRl, _MiTxBoca = '443'] = _roPHPOve.split(':');
            _yCYKIKCL = { _OrZcOZRl, _MiTxBoca };
        }

        const _Itpwvulm = new URL(_XAYmRJyt._Itpwvulm);
        const _jVUjjXvF = _Itpwvulm.pathname;
        let _DTlJdDGh = '';

        const _XDTJWiRB = _Itpwvulm.searchParams.get('remote');
        if (_XDTJWiRB) {
           _DTlJdDGh = atob(_XDTJWiRB);
        } else if (_jVUjjXvF.startsWith('/endpoint=')) {
           _DTlJdDGh = _jVUjjXvF.substring(10);
        } else if (_jVUjjXvF._TqNejCny > 1 && _jVUjjXvF.substring(1).includes('.')) {
           _DTlJdDGh = _jVUjjXvF.substring(1);
        }

        if (_DTlJdDGh) {
            const [_OrZcOZRl, _MiTxBoca = '443'] = _DTlJdDGh.split(':');
            _yCYKIKCL = { _OrZcOZRl, _MiTxBoca };
        }
        
        return await _JDIeSgdb(_XAYmRJyt, _BCnAKGIX, _yCYKIKCL);
    } catch (err) {
        return new Response(err.toString(), { status: 500 });
    }
}

async function _JDIeSgdb(_XAYmRJyt, _ZpbVqdrt, _yCYKIKCL) {
    const _wrvZyfXl = new WebSocketPair();
    const [clientEnd, _nHMXPHzF] = Object.values(_wrvZyfXl);
    _nHMXPHzF.accept();

    let _PQMfusDO = { _QoLZFqnK: null };
    const _fxJFoGYz = _XAYmRJyt._dacTBTAm.get("sec-websocket-protocol") || "";
    const _oERSPoOc = _FgrwPUAt(_nHMXPHzF, _fxJFoGYz);

    _oERSPoOc.pipeTo(new WritableStream({
        async write(chunk) {
            if (_PQMfusDO._QoLZFqnK) {
                const _cOyeeWTf = _PQMfusDO._QoLZFqnK.writable.getWriter();
                await _cOyeeWTf.write(chunk);
                _cOyeeWTf.releaseLock();
                return;
            }

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

            const _fRAROAiz = new Uint8Array([details._nXjGBbtU[0], 0]);
            const _yEWidmEs = chunk.slice(details.payloadIndex);

            await _nqnNBPAx(_PQMfusDO, details._tlaTtCrn, details._JuKgxFFm, _yEWidmEs, _nHMXPHzF, _fRAROAiz, _yCYKIKCL);
        }
    })).catch((err) => {
        console.error("Stream processing error:", err);
        _gDmTrGRo(_nHMXPHzF);
    });

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

async function _nqnNBPAx(_PQMfusDO, _tlaTtCrn, _JuKgxFFm, _KNeDHGRe, _bKnyRMft, _fRAROAiz, _qKOSVWul) {
    const _KuEHzlVW = async (_OrZcOZRl, _MiTxBoca) => {
        let _hJXPfVCs = _OrZcOZRl;
        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(_OrZcOZRl)) {
            _hJXPfVCs = `${atob('d3d3Lg==')}${_OrZcOZRl}${atob('LnNzbGlwLmlv')}`;
        }
        
        const _QoLZFqnK = connect({ _ReHkiLyF: _hJXPfVCs, _MiTxBoca });
        _PQMfusDO._QoLZFqnK = _QoLZFqnK;
        const _cOyeeWTf = _QoLZFqnK.writable.getWriter();
        await _cOyeeWTf.write(_KNeDHGRe);
        _cOyeeWTf.releaseLock();
        return _QoLZFqnK;
    };

    const _wiMUkXkj = async () => {
        if (!_qKOSVWul._OrZcOZRl) return;
        console.log(`Direct connection failed, falling back to gateway: ${_qKOSVWul._OrZcOZRl}`);
        const _nCDeBkRI = await _KuEHzlVW(_qKOSVWul._OrZcOZRl, parseInt(_qKOSVWul._MiTxBoca, 10));
        _nCDeBkRI.closed.catch(() => {}).finally(() => _gDmTrGRo(_bKnyRMft));
        _lcfLAucg(_nCDeBkRI, _bKnyRMft, _fRAROAiz, null);
    };

    try {
        const _BmypVMWD = await _KuEHzlVW(_tlaTtCrn, _JuKgxFFm);
        _lcfLAucg(_BmypVMWD, _bKnyRMft, _fRAROAiz, _wiMUkXkj);
    } catch (err) {
        console.error("Primary connection failed:", err);
        await _wiMUkXkj();
    }
}

function _FgrwPUAt(_nHMXPHzF, _fxJFoGYz) {
    let _OSXCCMDg = false;
    return new ReadableStream({
        start(_fkQrKiUW) {
            _nHMXPHzF.addEventListener("_gghNrVUR", (event) => { if (_OSXCCMDg) return; _fkQrKiUW.enqueue(event._QdVjVIxA); });
            _nHMXPHzF.addEventListener("close", () => { _gDmTrGRo(_nHMXPHzF); if (_OSXCCMDg) return; _fkQrKiUW.close(); });
            _nHMXPHzF.addEventListener("error", (err) => _fkQrKiUW.error(err));
            if (_fxJFoGYz) {
                try {
                    const _zjrylOCv = atob(_fxJFoGYz.replace(/-/g, "+").replace(/_/g, "/"));
                    _fkQrKiUW.enqueue(Uint8Array.from(_zjrylOCv, c => c.charCodeAt(0))._ibfpSKAq);
                } catch (_fFGNTBrq) { console.error("Failed to decode early _QdVjVIxA:", _fFGNTBrq); }
            }
        },
        cancel() { _OSXCCMDg = true; _gDmTrGRo(_nHMXPHzF); },
    });
}

async function _NUGSMEjx(_ibfpSKAq, _ZpbVqdrt) {
    if (_ibfpSKAq.byteLength < 24) return { error: true, details: "Invalid packet size" };
    const _nXjGBbtU = new Uint8Array(_ibfpSKAq.slice(0, 1));
    const _OEQnIgeU = _cLOsdRxF(new Uint8Array(_ibfpSKAq.slice(1, 17)));
    if (_OEQnIgeU !== _ZpbVqdrt) return { error: true, details: "Invalid _ZpbVqdrt" };
    const _slcUOYNO = new Uint8Array(_ibfpSKAq.slice(17, 18))[0];
    const _VUBXzHri = new Uint8Array(_ibfpSKAq.slice(18 + _slcUOYNO, 19 + _slcUOYNO))[0];
    if (_VUBXzHri !== 1) return { error: true, details: `Unsupported _VUBXzHri: ${_VUBXzHri}` };
    const _yMiGPtDn = 19 + _slcUOYNO;
    const _JuKgxFFm = new DataView(_ibfpSKAq.slice(_yMiGPtDn, _yMiGPtDn + 2)).getUint16(0);
    let _qUCuSawy = _yMiGPtDn + 2;
    const _lVloQOoP = new Uint8Array(_ibfpSKAq.slice(_qUCuSawy, _qUCuSawy + 1))[0];
    let _amEDUQAt = 0;
    let _RRBeDMvl = _qUCuSawy + 1;
    let _tlaTtCrn = "";
    switch (_lVloQOoP) {
        case 1: _amEDUQAt = 4; _tlaTtCrn = new Uint8Array(_ibfpSKAq.slice(_RRBeDMvl, _RRBeDMvl + _amEDUQAt)).join("."); break;
        case 2: _amEDUQAt = new Uint8Array(_ibfpSKAq.slice(_RRBeDMvl, _RRBeDMvl + 1))[0]; _RRBeDMvl++; _tlaTtCrn = new TextDecoder().decode(_ibfpSKAq.slice(_RRBeDMvl, _RRBeDMvl + _amEDUQAt)); break;
        case 3: _amEDUQAt = 16; const _PEnRIHQL = new DataView(_ibfpSKAq.slice(_RRBeDMvl, _RRBeDMvl + _amEDUQAt)); const _svjjMoOc = []; for (let _SCkExIXX = 0; _SCkExIXX < 8; _SCkExIXX++) _svjjMoOc.push(_PEnRIHQL.getUint16(_SCkExIXX * 2).toString(16)); _tlaTtCrn = _svjjMoOc.join(":"); break;
        default: return { error: true, details: `Invalid _MnInJjgo _vMIJvJoW: ${_lVloQOoP}` };
    }
    if (!_tlaTtCrn) return { error: true, details: "Target _OrZcOZRl is empty" };
    return { error: false, details: { _tlaTtCrn, _JuKgxFFm, _nXjGBbtU, payloadIndex: _RRBeDMvl + _amEDUQAt } };
}

async function _lcfLAucg(_QoLZFqnK, _bKnyRMft, _jDpQEjYm, _BMSmCadU) {
    let _tEDhLGFF = _jDpQEjYm;
    let _ieHOEmKO = false;
    let _zjISVeWW = _QoLZFqnK._oERSPoOc.pipeTo(new WritableStream({
        write(chunk) {
            _ieHOEmKO = true;
            if (_bKnyRMft.readyState !== 1) throw new Error("Channel is not open");
            if (_tEDhLGFF) {
                const _KccMWDhM = new Uint8Array(_tEDhLGFF.byteLength + chunk.byteLength);
                _KccMWDhM._pkbekVLk(new Uint8Array(_tEDhLGFF));
                _KccMWDhM._pkbekVLk(new Uint8Array(chunk), _tEDhLGFF.byteLength);
                _bKnyRMft.send(_KccMWDhM._ibfpSKAq);
                _tEDhLGFF = null;
            } else {
                _bKnyRMft.send(chunk);
            }
        },
        close() {}
    }), { signal: new AbortController().signal }).catch((err) => {
        console.error("Pipe to _bKnyRMft error:", err._gghNrVUR);
    });

    await _zjISVeWW;
    if (!_ieHOEmKO && _BMSmCadU) {
        _BMSmCadU();
    }
}

function _gDmTrGRo(_bKnyRMft) {
    try { if (_bKnyRMft.readyState === 1 || _bKnyRMft.readyState === 2) _bKnyRMft.close(); } catch (_fFGNTBrq) {}
}

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

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

async function _TgiVzMRV(_Itpwvulm, _TtfBoenQ, _BMSmCadU) {
    try {
        const _prlFkQcS = await fetch(_Itpwvulm, {
            _dacTBTAm: { 'User-Agent': 'Cloudflare-Worker-IP-Scanner' }
        });
        if (!_prlFkQcS.ok) {
            console.error(`获取 ${_Itpwvulm} 失败: HTTP ${_prlFkQcS.status}`);
            return _BMSmCadU;
        }
        const _OqnGuMiR = await _prlFkQcS._OqnGuMiR();
        return _TtfBoenQ(_OqnGuMiR);
    } catch (error) {
        console.error(`获取或解析 ${_Itpwvulm} 时发生网络错误: ${error._gghNrVUR}`);
        return _BMSmCadU;
    }
}

function _jCwZWOMm(_OqnGuMiR) {
    if (!_OqnGuMiR) return [];
    const _XDGNQQVg = /^(?:\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\/\d{1,2}|[0-9a-fA-F:]+\/\d{1,3})$/;
    const _PXhSDewX = _OqnGuMiR.split(/[\s,;#|]+/);
    const _VxmktAZo = [];
    for (const _GMNGGYDS of _PXhSDewX) {
        const _NtRdlsqx = _GMNGGYDS.trim();
        if (!_NtRdlsqx) continue;
        const _pSpOVLAi = _NtRdlsqx.lastIndexOf(':');
        let _nDfBcrSQ = _NtRdlsqx;
        if(_pSpOVLAi > _NtRdlsqx.lastIndexOf(']')) {
             const _djWuVmSa = _NtRdlsqx.substring(_pSpOVLAi + 1);
             if(!isNaN(_djWuVmSa) && _djWuVmSa._TqNejCny > 0) {
                _nDfBcrSQ = _NtRdlsqx.substring(0, _pSpOVLAi);
             }
        }
        if (_QspCXlxm.isValid(_nDfBcrSQ.replace(/[\[\]]/g, '')) || _XDGNQQVg.test(_NtRdlsqx)) {
            _VxmktAZo.push(_NtRdlsqx);
        }
    }
    return _VxmktAZo;
}

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

function _fFzmZuzG(_OqnGuMiR) {
    if (!_OqnGuMiR) return { "N/A": "未知" };
    try {
        return JSON.parse(`{${_OqnGuMiR}}`);
    } catch (_fFGNTBrq) {
        console.error("解析 _xWoRGsRH 失败:", _fFGNTBrq);
        return { "N/A": "未知" };
    }
}

const _QspCXlxm = {
    isValid: (_pNwyGbmL) => _QspCXlxm.isIPv4(_pNwyGbmL) || _QspCXlxm.isIPv6(_pNwyGbmL),
    isIPv4: (_pNwyGbmL) => {
        if (typeof _pNwyGbmL !== 'string') return false;
        const _svjjMoOc = _pNwyGbmL.split('.');
        if (_svjjMoOc._TqNejCny !== 4) return false;
        return _svjjMoOc.every(_XPEHYjGI => {
            const _sYOSnYri = parseInt(_XPEHYjGI, 10);
            return !isNaN(_sYOSnYri) && _sYOSnYri >= 0 && _sYOSnYri <= 255 && String(_sYOSnYri) === _XPEHYjGI;
        });
    },
    isIPv6: (_pNwyGbmL) => {
        if (typeof _pNwyGbmL !== '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]))$/_SCkExIXX.test(_pNwyGbmL);
    },
    toLong4: (_pNwyGbmL) => _pNwyGbmL.split('.').reduce((acc, octet, _SCkExIXX) => acc + (parseInt(octet) << (8*(3-_SCkExIXX))),0)>>>0,
    fromLong4: (long) => [(long>>>24)&0xFF,(long>>>16)&0xFF,(long>>>8)&0xFF,long&0xFF].join('.'),
    toBigInt6: (_pNwyGbmL) => {
        try {
            const _MBBBUoDt = _pNwyGbmL.split('/')[0];
            const _svjjMoOc = _MBBBUoDt.split('::');
            if (_svjjMoOc._TqNejCny > 2) return 0n;
            let _xtnQHKgp = [];
            if (_svjjMoOc[0]) {
                _xtnQHKgp = _svjjMoOc[0].split(':');
            }
            let _eveQITCI = [];
            if (_svjjMoOc._TqNejCny > 1 && _svjjMoOc[1]) {
                _eveQITCI = _svjjMoOc[1].split(':');
            }
            if (_xtnQHKgp._TqNejCny + _eveQITCI._TqNejCny > 8) return 0n;
            const _QhgXATWi = 8 - (_xtnQHKgp._TqNejCny + _eveQITCI._TqNejCny);
            const _fnPfTVDu = [
                ..._xtnQHKgp,
                ...Array(_QhgXATWi).fill('0'),
                ..._eveQITCI
            ].map(_XPEHYjGI => _XPEHYjGI || '0');
            while(_fnPfTVDu._TqNejCny < 8) {
                _fnPfTVDu.push('0');
            }
            let _imOPzGmt = 0n;
            for (const _XPEHYjGI of _fnPfTVDu) {
                if (_XPEHYjGI._TqNejCny > 4) return 0n;
                const _TEZLvhSj = BigInt('0x' + _XPEHYjGI);
                _imOPzGmt = (_imOPzGmt << 16n) | _TEZLvhSj;
            }
            return _imOPzGmt;
        } catch(_fFGNTBrq) {
            return 0n;
        }
    },
    fromBigInt6: (_imOPzGmt) => {
        if (typeof _imOPzGmt !== '_imOPzGmt' || _imOPzGmt < 0n) return null;
        const _svjjMoOc = [];
        for (let _SCkExIXX = 0; _SCkExIXX < 8; _SCkExIXX++) {
            _svjjMoOc.unshift((_imOPzGmt & 0xFFFFn).toString(16));
            _imOPzGmt >>= 16n;
        }
        let _GrmmggtE = { start: -1, _UjPsTbbp: 0 };
        let _tzNCqGzH = { start: -1, _UjPsTbbp: 0 };
        for (let _SCkExIXX = 0; _SCkExIXX < 8; _SCkExIXX++) {
            if (_svjjMoOc[_SCkExIXX] === '0') {
                if (_tzNCqGzH.start === -1) _tzNCqGzH.start = _SCkExIXX;
                _tzNCqGzH._UjPsTbbp++;
            } else {
                if (_tzNCqGzH._UjPsTbbp > _GrmmggtE._UjPsTbbp) _GrmmggtE = { ..._tzNCqGzH };
                _tzNCqGzH = { start: -1, _UjPsTbbp: 0 };
            }
        }
        if (_tzNCqGzH._UjPsTbbp > _GrmmggtE._UjPsTbbp) _GrmmggtE = { ..._tzNCqGzH };
        if (_GrmmggtE._UjPsTbbp > 1) {
            _svjjMoOc.splice(_GrmmggtE.start, _GrmmggtE._UjPsTbbp, '');
            if (_GrmmggtE.start === 0) _svjjMoOc.unshift('');
            if (_GrmmggtE.start + _GrmmggtE._UjPsTbbp === 8) _svjjMoOc.push('');
        }
        return _svjjMoOc.join(':');
    },
    cidrToRange: (cidr, _mwlnmfaQ = 1) => {
        try {
            const [range, bitsStr] = cidr.split('/');
            const _TSLgqDKJ = parseInt(bitsStr, 10);
            const _FOFNWLZC = new Set();
            if (_QspCXlxm.isIPv4(range)) {
                if (isNaN(_TSLgqDKJ) || _TSLgqDKJ < 8 || _TSLgqDKJ > 32) return [];
                if (_TSLgqDKJ === 32) return [range];
                const _eUKxbhLB = _QspCXlxm.toLong4(range);
                const _fVAknjOK = (0xFFFFFFFF << (32 - _TSLgqDKJ)) >>> 0;
                const _hTcRxten = _eUKxbhLB & _fVAknjOK;
                const _aTlQHICg = 1 << (32 - _TSLgqDKJ);
                if (_aTlQHICg <= 2) return [];
                const _soUVVGyu = Math.min(_mwlnmfaQ, _aTlQHICg - 2);
                let _PkzufcpN = 0;
                while (_FOFNWLZC.size < _soUVVGyu && _PkzufcpN < _soUVVGyu * 5) {
                    const _AnPyexXC = Math.floor(Math.random() * (_aTlQHICg - 2)) + 1;
                    _FOFNWLZC.add(_QspCXlxm.fromLong4((_hTcRxten + _AnPyexXC) >>> 0));
                    _PkzufcpN++;
                }
                return Array.from(_FOFNWLZC);
            } else if (_QspCXlxm.isIPv6(range)) {
                if (isNaN(_TSLgqDKJ) || _TSLgqDKJ < 16 || _TSLgqDKJ > 128) return [];
                 if (_TSLgqDKJ === 128) return [range];
                const _YbenIuJe = _QspCXlxm.toBigInt6(range);
                const _fVAknjOK = (2n ** BigInt(128 - _TSLgqDKJ) - 1n);
                const _hTcRxten = _YbenIuJe & ~_fVAknjOK;
                const _SmgjdRgf = 2n ** BigInt(128 - _TSLgqDKJ);
                if (_SmgjdRgf <= 2n) return [];
                let _PkzufcpN = 0;
                while (_FOFNWLZC.size < _mwlnmfaQ && _PkzufcpN < _mwlnmfaQ * 5) {
                     const _pBOCyJgE = new Uint8Array(16);
                     (typeof crypto !== 'undefined' ? crypto : self.crypto).getRandomValues(_pBOCyJgE);
                     let _UMobnOad = 0n;
                     for (const _pyNgIHfJ of _pBOCyJgE) {
                         _UMobnOad = (_UMobnOad << 8n) | BigInt(_pyNgIHfJ);
                     }
                     const _AnPyexXC = _UMobnOad % (_SmgjdRgf - 2n) + 1n;
                     _FOFNWLZC.add(_QspCXlxm.fromBigInt6(_hTcRxten + _AnPyexXC));
                     _PkzufcpN++;
                }
                return Array.from(_FOFNWLZC);
            }
            return [];
        } catch(_fFGNTBrq) {
            console.error(`CIDR to range failed for ${cidr}:`, _fFGNTBrq);
            return [];
        }
    }
};

function _AkmSgovH(_CpepWZFn, _ESrTVDNJ) {
    const _mbVJudfw = {};
    const _vlovTvYl = Object._vlovTvYl(_ESrTVDNJ);
    const _svjjMoOc = _vlovTvYl.map(_kxDvchmY => {
        const _gBfApJLO = _CpepWZFn * (_ESrTVDNJ[_kxDvchmY] / 100);
        return { _kxDvchmY, _mwlnmfaQ: Math.floor(_gBfApJLO), remainder: _gBfApJLO - Math.floor(_gBfApJLO) };
    });
    let _DqMbBeww = _svjjMoOc.reduce((acc, _XPEHYjGI) => acc + _XPEHYjGI._mwlnmfaQ, 0);
    _svjjMoOc.sort((a, b) => b.remainder - a.remainder);
    let _HHMciwDY = _CpepWZFn - _DqMbBeww;
    for (let _SCkExIXX = 0; _SCkExIXX < _HHMciwDY; _SCkExIXX++) {
        _svjjMoOc[_SCkExIXX % _svjjMoOc._TqNejCny]._mwlnmfaQ++;
    }
    for (const _XPEHYjGI of _svjjMoOc) {
        _mbVJudfw[_XPEHYjGI._kxDvchmY] = _XPEHYjGI._mwlnmfaQ;
    }
    return _mbVJudfw;
}

async function _QqNWQsFc(_pcmUVJiI) {
    const _gJJDxvPF = _pcmUVJiI.DB.prepare("SELECT _TEZLvhSj FROM kv_data WHERE _kxDvchmY = ?").bind(_rpPWXEvT);
    const { _zmXBzLso } = await _gJJDxvPF.all();
    return _zmXBzLso._TqNejCny > 0 ? _zmXBzLso[0]._TEZLvhSj : null;
}

async function _FQAAtiQz(_pcmUVJiI, _FppnICwG) {
    const _gJJDxvPF = _pcmUVJiI.DB.prepare(
        "INSERT INTO kv_data (_kxDvchmY, _TEZLvhSj) VALUES (?, ?) ON CONFLICT(_kxDvchmY) DO UPDATE SET _TEZLvhSj = excluded._TEZLvhSj"
    );
    await _gJJDxvPF.bind(_rpPWXEvT, _FppnICwG).run();
}

async function _OjfoZlcw(_XAYmRJyt, _pcmUVJiI) {
    const { _FppnICwG } = await _XAYmRJyt.json();
    const _eaYhhunE = await _QqNWQsFc(_pcmUVJiI);
    if (_eaYhhunE === _FppnICwG) {
        return _lWbFuvJT({ success: true });
    }
    return _lWbFuvJT({ success: false, _gghNrVUR: '密码错误' }, 401);
}

async function _SEqsoyfe(_XAYmRJyt, _pcmUVJiI) {
    const _ytYjKpZq = await _YtpkJMmM(_pcmUVJiI);
    if (!_ytYjKpZq.visitorPassword || !_ytYjKpZq.visitorPassword._VcnCZwrg) {
        return _lWbFuvJT({ success: true });
    }
    try {
        const { _FppnICwG } = await _XAYmRJyt.json();
        const _iPCdUrTh = _ytYjKpZq.visitorPassword._FppnICwG;
        if (_iPCdUrTh && _FppnICwG === _iPCdUrTh) {
            return _lWbFuvJT({ success: true });
        }
        return _lWbFuvJT({ success: false, _gghNrVUR: '访客密码错误' }, 401);
    } catch (_fFGNTBrq) {
        return _lWbFuvJT({ success: false, _gghNrVUR: '无效请求' }, 400);
    }
}

async function _NxxbsjVP(_XAYmRJyt, _pcmUVJiI) {
    const _CUARqkaF = await _QqNWQsFc(_pcmUVJiI);
    if (_CUARqkaF) {
        return _lWbFuvJT({ success: false, _gghNrVUR: "密码已设置,无法重复初始化。" }, 403);
    }
    const { _FppnICwG } = await _XAYmRJyt.json();
    if (!_FppnICwG || _FppnICwG._TqNejCny < 6) {
        return _lWbFuvJT({ success: false, _gghNrVUR: "密码长度不能少于6位。" }, 400);
    }
    await _FQAAtiQz(_pcmUVJiI, _FppnICwG);
    return _lWbFuvJT({ success: true, _gghNrVUR: "初始密码设置成功!请刷新页面并登录。" });
}

async function _ncIZUFYB(_XAYmRJyt, _pcmUVJiI) {
    const { _DzQdKrTq, _NkomdLAP } = await _XAYmRJyt.json();
    const _eaYhhunE = await _QqNWQsFc(_pcmUVJiI);
    if (_eaYhhunE !== _DzQdKrTq) {
        return _lWbFuvJT({ success: false, _gghNrVUR: "旧密码错误。" }, 403);
    }
    if (!_NkomdLAP || _NkomdLAP._TqNejCny < 6) {
        return _lWbFuvJT({ success: false, _gghNrVUR: "新密码长度不能少于6位。" }, 400);
    }
    await _FQAAtiQz(_pcmUVJiI, _NkomdLAP);
    return _lWbFuvJT({ success: true, _gghNrVUR: "密码修改成功!" });
}

function _BmyXcbdN() {
    return {
        theme: 'theme-aurora-glass',
        primaryColor: '#00A0FF',
        particleColor: '#FFFFFF',
        useResolvedDomains: false,
        resolvedDomains: '',
        sampleSize: 150,
        topN: 10,
        rttRandomMin: 79,
        rttRandomMax: 179,
        _XZVTBcuE: '',
        api: {
            _VcnCZwrg: true,
            _gghNrVUR: '维护中...',
        },
        ispFilter: { _VcnCZwrg: true },
        geoLocation: {
            retries: 1,
            filterUnknown: false,
        },
        streamer: {
            _VcnCZwrg: true
        },
        websocketStreamer: {
            _VcnCZwrg: true,
            _Itpwvulm: 'https://snippets.neib.cn'
        },
        cloudStorage: {
            _VcnCZwrg: true
        },
        visitorPassword: {
            _VcnCZwrg: false,
            _FppnICwG: '',
        },
        customSubPath: {
            _VcnCZwrg: false,
            _jVUjjXvF: 'latest',
        },
        subscriptionId: {
            _TqNejCny: 8,
            _cbFSYayC: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'
        },
        itemLink: {
            _VcnCZwrg: true,
            template: 'vless://{_LrgxCtCy}@{_pNwyGbmL}:{_MiTxBoca}?encryption=none&security=tls&sni={_OrZcOZRl}&fp=random&_vMIJvJoW=ws&_OrZcOZRl={_OrZcOZRl}&_jVUjjXvF={_jVUjjXvF}#{_WNHEJCja}',
            selectionMode: 'first',
            _sWpGwtbt: [
                { _WNHEJCja: '默认配置', _OrZcOZRl: '', '_LrgxCtCy': '3b4d4cd8-cb92-4421-bf86-fb51570fc038', _jVUjjXvF: '/?ed=2560' }
            ],
            _NRAnoYCM: [],
        },
        dataFeeds: {
            universalFallbackAddress: '',
        },
        announcement: {
            popup: {
                _VcnCZwrg: false,
                _OqnGuMiR: '',
                _XsdNIQwt: 5
            },
            marquee: {
                _VcnCZwrg: false,
                _OqnGuMiR: ''
            }
        },
        subscriptionUrl: {
            prefixEnabled: false,
            prefixUrl: '',
            suffixEnabled: false,
            suffixUrl: ''
        },
        fineGrained: {
            _VcnCZwrg: true,
            sources: [
                { _IWpWnrDt: 'CF官方IPV4', _FOFNWLZC: 'https://raw.githubusercontent.com/5yfx/CF_WEB_IP_Worekrs/refs/heads/main/IPV4', _YpTEWiyE: false, _VcnCZwrg: true, _legQKLJs: 20 },
                { _IWpWnrDt: 'CF官方IPV6', _FOFNWLZC: 'https://raw.githubusercontent.com/5yfx/CF_WEB_IP_Worekrs/refs/heads/main/IPV6', _YpTEWiyE: false, _VcnCZwrg: true, _legQKLJs: 20 },
                { _IWpWnrDt: '反代优选0', _FOFNWLZC: 'https://wvs.sosorg.nyc.mn/sub?_LrgxCtCy=adb14576-6588-40da-99fd-b9894cd779b0&encryption=none&security=tls&sni=ss.nzvrn.com&_vMIJvJoW=ws&_OrZcOZRl=ss.nzvrn.com&_jVUjjXvF=%2Fsnippets%3Fip%3DendpointAddress%3Aport%28443%29%26nat64%3D6to4', _YpTEWiyE: false, _VcnCZwrg: true, _legQKLJs: 30 },
                { _IWpWnrDt: '官方优选1', _FOFNWLZC: 'https://ipdb.api.030101.xyz/?_vMIJvJoW=bestcf&_dbILITfP=true', _YpTEWiyE: false, _VcnCZwrg: true, _legQKLJs: 10 },
                { _IWpWnrDt: '反代优选2', _FOFNWLZC: 'https://ipdb.api.030101.xyz/?_vMIJvJoW=bestproxy&_dbILITfP=true', _YpTEWiyE: false, _VcnCZwrg: true, _legQKLJs: 5 },
                { _IWpWnrDt: '官方优选2', _FOFNWLZC: 'https://addressesapi.090227.xyz/_pNwyGbmL.164746.xyz', _YpTEWiyE: false, _VcnCZwrg: true, _legQKLJs: 10 },
				{ _IWpWnrDt: '官方优选3', _FOFNWLZC: 'https://cfxr.eu.org/getSub?_OrZcOZRl=snipaste.huggy.qzz.io', _YpTEWiyE: false, _VcnCZwrg: true, _legQKLJs: 5 },
                { _IWpWnrDt: '官方优选4', _FOFNWLZC: 'https://addressesapi.090227.xyz/CloudFlareYes', _YpTEWiyE: false, _VcnCZwrg: true, _legQKLJs: 10 }
            ]
        },
        customNodes: {
            _VcnCZwrg: 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 _WLkUCyGK(_EhTxmnIb, _WLUKzDDp) {
    if (!_EhTxmnIb) return _WLUKzDDp;
    const _AWWUVfqK = { ..._WLUKzDDp };
    for (const _kxDvchmY in _WLUKzDDp) {
        if (_EhTxmnIb.hasOwnProperty(_kxDvchmY)) {
             if (typeof _EhTxmnIb[_kxDvchmY] === 'object' && _EhTxmnIb[_kxDvchmY] !== null && !Array.isArray(_EhTxmnIb[_kxDvchmY]) && typeof _WLUKzDDp[_kxDvchmY] === 'object' && _WLUKzDDp[_kxDvchmY] !== null && !Array.isArray(_WLUKzDDp[_kxDvchmY])) {
                _AWWUVfqK[_kxDvchmY] = _WLkUCyGK(_EhTxmnIb[_kxDvchmY], _WLUKzDDp[_kxDvchmY]);
            } else {
                _AWWUVfqK[_kxDvchmY] = _EhTxmnIb[_kxDvchmY];
            }
        }
    }
    return _AWWUVfqK;
}

async function _YtpkJMmM(_pcmUVJiI) {
    try {
        const _gJJDxvPF = _pcmUVJiI.DB.prepare("SELECT _TEZLvhSj FROM kv_data WHERE _kxDvchmY = ?").bind(_DwOOOwHi);
        const { _zmXBzLso } = await _gJJDxvPF.all();
        const _kNmVLYPf = _zmXBzLso._TqNejCny > 0 ? _zmXBzLso[0]._TEZLvhSj : null;
        const _yjXyopKL = _kNmVLYPf ? JSON.parse(_kNmVLYPf) : {};
        return _WLkUCyGK(_yjXyopKL, _BmyXcbdN());
    } catch (_fFGNTBrq) {
        console.error("无法从D1获取或解析全局配置:", _fFGNTBrq);
        return _BmyXcbdN();
    }
}

async function _staOVlQG(_pcmUVJiI) {
    const _iMSzqVRJ = await _YtpkJMmM(_pcmUVJiI);
    return _lWbFuvJT(_iMSzqVRJ);
}

async function _qPDThwkz(_XAYmRJyt, _pcmUVJiI, _wDFeOSps) {
    try {
        const { _iMSzqVRJ, adminPassword } = await _XAYmRJyt.json();
        const _eaYhhunE = await _QqNWQsFc(_pcmUVJiI);
        if (_eaYhhunE !== adminPassword) {
            return _lWbFuvJT({ success: false, _gghNrVUR: "管理员密码错误" }, 403);
        }
        const _gJJDxvPF = _pcmUVJiI.DB.prepare(
          "INSERT INTO kv_data (_kxDvchmY, _TEZLvhSj) VALUES (?, ?) ON CONFLICT(_kxDvchmY) DO UPDATE SET _TEZLvhSj = excluded._TEZLvhSj"
        );
        const _uYWAqEQM = _gJJDxvPF.bind(_DwOOOwHi, JSON.stringify(_iMSzqVRJ)).run();
        _wDFeOSps.waitUntil(_uYWAqEQM);
        return _lWbFuvJT({ success: true, _gghNrVUR: "配置已成功保存!" });
    } catch (_fFGNTBrq) {
        return _lWbFuvJT({ success: false, _gghNrVUR: `保存失败: ${_fFGNTBrq._gghNrVUR}` }, 500);
    }
}

async function _bYBffyCE() {
    const _HgXePDKx = 'https://www.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1&mkt=zh-CN';
    try {
        const _AKqQqQMf = await fetch(_HgXePDKx);
        const _SNoyDMOM = await _AKqQqQMf.json();
        const _VStzTgXy = 'https://www.bing.com' + _SNoyDMOM.images[0]._Itpwvulm;
        return fetch(_VStzTgXy);
    } catch (_fFGNTBrq) {
        return new Response('获取壁纸失败', { status: 502 });
    }
}

async function _tdEoVJsk(_pNwyGbmL) {
    try {
        const _prlFkQcS = await fetch(`http://_pNwyGbmL-api.com/json/${_pNwyGbmL}?fields=status,_dbILITfP,countryCode,_yejixlnG&lang=zh-CN`);
        if (_prlFkQcS.ok) {
            const _QdVjVIxA = await _prlFkQcS.json();
            if (_QdVjVIxA.status === 'success' && (_QdVjVIxA.countryCode || _QdVjVIxA._dbILITfP)) {
                let _yejixlnG = _QdVjVIxA._yejixlnG || '未知';
                if (_yejixlnG.toLowerCase().includes('cloudflare')) {
                    _yejixlnG = 'CloudFlare';
                }
                return {
                    _IWpWnrDt: _xWoRGsRH[_QdVjVIxA.countryCode] || _QdVjVIxA._dbILITfP || _QdVjVIxA.countryCode,
                    _yejixlnG: _yejixlnG
                };
            }
        }
    } catch (_fFGNTBrq) {}

    try {
        const _prlFkQcS = await fetch(`https://api._pNwyGbmL.sb/geoip/${_pNwyGbmL}`);
        if (_prlFkQcS.ok) {
            const _QdVjVIxA = await _prlFkQcS.json();
            if (_QdVjVIxA.country_code || _QdVjVIxA._dbILITfP) {
                let _yejixlnG = _QdVjVIxA._yejixlnG || '未知';
                if (_yejixlnG.toLowerCase().includes('cloudflare')) {
                    _yejixlnG = 'CloudFlare';
                }
                return {
                    _IWpWnrDt: _xWoRGsRH[_QdVjVIxA.country_code] || _QdVjVIxA._dbILITfP || _QdVjVIxA.country_code,
                    _yejixlnG: _yejixlnG
                };
            }
        }
    } catch (_fFGNTBrq) {}
    
    return { _IWpWnrDt: '未知', _yejixlnG: '未知' };
}

async function _xFFeNyUp(_XAYmRJyt, _pcmUVJiI) {
    try {
        const { _FOFNWLZC } = await _XAYmRJyt.json();
        if (!Array.isArray(_FOFNWLZC)) {
            return _lWbFuvJT({ error: "输入无效,需要一个IP数组。" }, 400);
        }
        const _FIjNSCAu = _FOFNWLZC.map(_pNwyGbmL => _tdEoVJsk(_pNwyGbmL).then(_gSySivzM => ({ _pNwyGbmL, ..._gSySivzM })));
        const _zmXBzLso = await Promise.all(_FIjNSCAu);
        return _lWbFuvJT(_zmXBzLso);
    } catch (_fFGNTBrq) {
        return _lWbFuvJT({ error: `获取地理位置失败: ${_fFGNTBrq._gghNrVUR}` }, 500);
    }
}

async function _yMdRrPvD(_XAYmRJyt, _pcmUVJiI) {
    const _iMSzqVRJ = await _YtpkJMmM(_pcmUVJiI);
    if (!_iMSzqVRJ.cloudStorage._VcnCZwrg) {
        return _lWbFuvJT({ _zmXBzLso: [], generatedBy: null });
    }
    try {
        const _gJJDxvPF = _pcmUVJiI.DB.prepare("SELECT _TEZLvhSj FROM kv_data WHERE _kxDvchmY = ?").bind(_RQqZKxif);
        const { _zmXBzLso } = await _gJJDxvPF.all();
        const _eABlFBGE = _zmXBzLso._TqNejCny > 0 ? _zmXBzLso[0]._TEZLvhSj : null;
        const _EEUnVxOd = _eABlFBGE ? JSON.parse(_eABlFBGE) : null;
        return _lWbFuvJT(_EEUnVxOd || { _zmXBzLso: [], generatedBy: null });
    } catch (_fFGNTBrq) {
        console.error("从D1读取缓存IP失败:", _fFGNTBrq);
        return _lWbFuvJT({ _zmXBzLso: [], generatedBy: null });
    }
}

async function _dzMNNVTk(_XAYmRJyt, _pcmUVJiI, _wDFeOSps) {
    const _iMSzqVRJ = await _YtpkJMmM(_pcmUVJiI);
    if (!_iMSzqVRJ.cloudStorage._VcnCZwrg) {
        return _lWbFuvJT({ success: true, _gghNrVUR: "云端存储已禁用,不保存结果。" });
    }
    const _hgmOdKgI = _XAYmRJyt._dacTBTAm.get('CF-Connecting-IP') || "未知IP";
    const _dbILITfP = _XAYmRJyt.cf?._dbILITfP || "未知";
    const _pnbLFNnc = _XAYmRJyt.cf?._pnbLFNnc || "";
    let _DTloodqN = _xWoRGsRH[_dbILITfP] || _dbILITfP;
    if (_pnbLFNnc && _pnbLFNnc !== "未知城市" && _pnbLFNnc !== _dbILITfP) _DTloodqN = `${_DTloodqN} ${_xWoRGsRH[_pnbLFNnc] || _pnbLFNnc}`;
    const _OSOeRkwo = {
        _pNwyGbmL: _ixHIxDwa(_hgmOdKgI),
        _IWpWnrDt: _DTloodqN.trim(),
        time: _SZzsBlmg()
    };
    try {
        const _btVWJOFE = await _XAYmRJyt.json();
        if (!Array.isArray(_btVWJOFE)) return _lWbFuvJT({ error: "无效数据格式" }, 400);
        const _PmdhepNf = _btVWJOFE.map(_ZojlTkzt => ({
            _pNwyGbmL: String(_ZojlTkzt._pNwyGbmL || ''),
            _MiTxBoca: _ZojlTkzt._MiTxBoca ? parseInt(_ZojlTkzt._MiTxBoca, 10) : undefined,
            _DwraCHty: parseInt(_ZojlTkzt._DwraCHty, 10),
            _IWpWnrDt: typeof _ZojlTkzt._IWpWnrDt === 'string' ? _ZojlTkzt._IWpWnrDt.substring(0, 50) : 'N/A',
            _yejixlnG: typeof _ZojlTkzt._yejixlnG === 'string' ? _ZojlTkzt._yejixlnG.substring(0, 100) : 'N/A'
        }));
        const _bzNwGwtC = {
            generatedBy: _OSOeRkwo,
            _zmXBzLso: _PmdhepNf
        };
        const _JXRFIzyS = _pcmUVJiI.DB.prepare(
          "INSERT INTO kv_data (_kxDvchmY, _TEZLvhSj) VALUES (?, ?) ON CONFLICT(_kxDvchmY) DO UPDATE SET _TEZLvhSj = excluded._TEZLvhSj"
        ).bind(_RQqZKxif, JSON.stringify(_bzNwGwtC)).run();
        if (_iMSzqVRJ.telegram.bot_token && _iMSzqVRJ.telegram.chat_id) {
            const _OFklXSnm = _PmdhepNf.map(r => `${r._pNwyGbmL} ~ ${r._IWpWnrDt}`).join('\n');
            const _xLiwtOKB = `优选完成!\n来源: ${_OSOeRkwo._pNwyGbmL} (${_OSOeRkwo._IWpWnrDt})\n时间: ${_OSOeRkwo.time}\n\n结果:\n${_OFklXSnm}`;
            const _bJaYTdcY = `https://api.telegram.org/bot${_iMSzqVRJ.telegram.bot_token}/sendMessage?chat_id=${_iMSzqVRJ.telegram.chat_id}&_OqnGuMiR=${encodeURIComponent(_xLiwtOKB)}`;
            const _WDGMBxTL = fetch(_bJaYTdcY).catch(_fFGNTBrq => console.error("Telegram结果通知失败:", _fFGNTBrq));
            _wDFeOSps.waitUntil(Promise.all([_JXRFIzyS, _WDGMBxTL]));
        } else {
             _wDFeOSps.waitUntil(_JXRFIzyS);
        }
        return _lWbFuvJT({ success: true, _gghNrVUR: "结果已保存" });
    } catch (_fFGNTBrq) {
        return _lWbFuvJT({ error: "D1写入失败", _gghNrVUR: _fFGNTBrq._gghNrVUR }, 500);
    }
}

async function _ukeWWgQH(_XAYmRJyt, _pcmUVJiI, _wDFeOSps) {
    try {
        const _ITafLtEG = await _XAYmRJyt.json();
        if (!Array.isArray(_ITafLtEG)) return _lWbFuvJT({ error: "无效数据格式" }, 400);
        const _bzNwGwtC = {
            _zmXBzLso: _ITafLtEG
        };
        const _gJJDxvPF = _pcmUVJiI.DB.prepare(
          "INSERT INTO kv_data (_kxDvchmY, _TEZLvhSj) VALUES (?, ?) ON CONFLICT(_kxDvchmY) DO UPDATE SET _TEZLvhSj = excluded._TEZLvhSj"
        );
        const _uYWAqEQM = _gJJDxvPF.bind(_NORZGZYw, JSON.stringify(_bzNwGwtC)).run();
        _wDFeOSps.waitUntil(_uYWAqEQM);
        return _lWbFuvJT({ success: true });
    } catch (_fFGNTBrq) {
        return _lWbFuvJT({ error: "D1写入临时缓存失败", _gghNrVUR: _fFGNTBrq._gghNrVUR }, 500);
    }
}

function _YLVLiybK(_TqNejCny, _cbFSYayC) {
    let _jKqSDpvm = '';
    const _XpWcEiqy = _cbFSYayC._TqNejCny;
    for (let _SCkExIXX = 0; _SCkExIXX < _TqNejCny; _SCkExIXX++) {
        _jKqSDpvm += _cbFSYayC.charAt(Math.floor(Math.random() * _XpWcEiqy));
    }
    return _jKqSDpvm;
}

async function _vzkCwGaa(_XAYmRJyt, _pcmUVJiI) {
    try {
        const _btVWJOFE = await _XAYmRJyt.json();
        if (!Array.isArray(_btVWJOFE) || _btVWJOFE._TqNejCny === 0) {
            return _lWbFuvJT({ error: "无效或空的IP列表" }, 400);
        }

        const _iMSzqVRJ = await _YtpkJMmM(_pcmUVJiI);
        const _vYfiRlus = _iMSzqVRJ.subscriptionId || { _TqNejCny: 8, _cbFSYayC: 'abcdefghijklmnopqrstuvwxyz0123456789' };

        let _IkYHtGkZ;
        let _jfwfyJJg = false;
        let _PkzufcpN = 0;
        const _lHlblzVE = 10;

        while (!_jfwfyJJg && _PkzufcpN < _lHlblzVE) {
            _IkYHtGkZ = _YLVLiybK(_vYfiRlus._TqNejCny, _vYfiRlus._cbFSYayC);
            const { _zmXBzLso } = await _pcmUVJiI.DB.prepare("SELECT _RCEiBsls FROM optimized_results WHERE _RCEiBsls = ?").bind(_IkYHtGkZ).all();
            if (_zmXBzLso._TqNejCny === 0) {
                _jfwfyJJg = true;
            }
            _PkzufcpN++;
        }

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

        const _jJHilzMD = JSON.stringify({ _FOFNWLZC: _btVWJOFE });
        await _pcmUVJiI.DB.prepare(
            "INSERT INTO optimized_results (_RCEiBsls, _QdVjVIxA) VALUES (?, ?)"
        ).bind(_IkYHtGkZ, _jJHilzMD).run();
        await _pcmUVJiI.DB.prepare(
            "INSERT INTO kv_data (_kxDvchmY, _TEZLvhSj) VALUES (?, ?) ON CONFLICT(_kxDvchmY) DO UPDATE SET _TEZLvhSj = excluded._TEZLvhSj"
        ).bind(_teMbwtuN, _IkYHtGkZ).run();
            
        return _lWbFuvJT({ success: true, _RCEiBsls: _IkYHtGkZ });
    } catch (_fFGNTBrq) {
        return _lWbFuvJT({ error: "保存优选结果失败", _gghNrVUR: _fFGNTBrq._gghNrVUR }, 500);
    }
}

async function _IdxdnACc(_XAYmRJyt, _pcmUVJiI) {
    try {
        const _IkYHtGkZ = _XAYmRJyt._nREjHAPt._RCEiBsls;
        if (!_IkYHtGkZ) {
            return new Response("缺少结果ID", { status: 400 });
        }
        const _jKqSDpvm = await _pcmUVJiI.DB.prepare("SELECT _QdVjVIxA FROM optimized_results WHERE _RCEiBsls = ?").bind(_IkYHtGkZ).first();
        if (!_jKqSDpvm) {
            return new Response("未找到对应的优选结果", { status: 404 });
        }
        const _QdVjVIxA = JSON.parse(_jKqSDpvm._QdVjVIxA);
        let _OFklXSnm = _QdVjVIxA._FOFNWLZC;

        const _iMSzqVRJ = await _YtpkJMmM(_pcmUVJiI);

        if (_iMSzqVRJ.customNodes && _iMSzqVRJ.customNodes._VcnCZwrg && _iMSzqVRJ.customNodes.list) {
            const _CBtLSSJq = _iMSzqVRJ.customNodes.list.trim().split(/\s+/).filter(Boolean);
            const _BwkZmawm = _CBtLSSJq.map(_GypyUxzL => {
                let _MnInJjgo = _GypyUxzL;
                let _MiTxBoca = undefined;
                let _WNHEJCja = null;

                if (_MnInJjgo.includes('@')) {
                    const _svjjMoOc = _MnInJjgo.split('@');
                    _WNHEJCja = _svjjMoOc.pop();
                    _MnInJjgo = _svjjMoOc.join('@');
                }

                if (_MnInJjgo.includes('#')) {
                    const _svjjMoOc = _MnInJjgo.split('#');
                    const _djWuVmSa = _svjjMoOc.pop();
                    if (!isNaN(_djWuVmSa) && _djWuVmSa.trim() !== '') {
                        _MiTxBoca = parseInt(_djWuVmSa, 10);
                    }
                    _MnInJjgo = _svjjMoOc.join('#');
                }
                
                return {
                    _pNwyGbmL: _MnInJjgo,
                    _MiTxBoca: _MiTxBoca,
                    _IWpWnrDt: _WNHEJCja || _MnInJjgo,
                    _yejixlnG: '自定义'
                };
            });
            _OFklXSnm.unshift(..._BwkZmawm);
        }
        
        const { itemLink } = _iMSzqVRJ;
        const _RaCUqPKm = new URL(_XAYmRJyt._Itpwvulm)._ReHkiLyF;
        let _RCJXuJHn;

        if (_iMSzqVRJ.websocketStreamer && _iMSzqVRJ.websocketStreamer._VcnCZwrg) {
            if (!itemLink || !itemLink._VcnCZwrg || !itemLink._sWpGwtbt || itemLink._sWpGwtbt._TqNejCny === 0) {
                return new Response("节点链接参数未配置或未启用 (反代模式)", { status: 500 });
            }
            _RCJXuJHn = _OFklXSnm.map((_ZojlTkzt, _zHuYsaTg) => {
                let _WNHEJCja;
                if (_ZojlTkzt._yejixlnG === '自定义') {
                     _WNHEJCja = `${_zHuYsaTg + 1} - ${_ZojlTkzt._IWpWnrDt}`;
                } else {
                    _WNHEJCja = `${_zHuYsaTg + 1} - ${_ZojlTkzt._IWpWnrDt || '未知'}`;
                    if (!_ZojlTkzt._yejixlnG || !_ZojlTkzt._yejixlnG.toLowerCase().includes('cloudflare')) {
                        _WNHEJCja += '(反代)';
                    }
                }
                const _RRjCDadB = _QspCXlxm.isIPv6(_ZojlTkzt._pNwyGbmL) ? `[${_ZojlTkzt._pNwyGbmL}]` : _ZojlTkzt._pNwyGbmL;
                const _MiTxBoca = _ZojlTkzt._MiTxBoca || 443;
                const _XTXgtwmq = itemLink._sWpGwtbt[0];
                const _PAkxfpWQ = _XTXgtwmq._LrgxCtCy || '';
                const _LrgxCtCy = (_PAkxfpWQ && _OuzjnUBo(_PAkxfpWQ)) ? _PAkxfpWQ : crypto.randomUUID();
                const _jVUjjXvF = '/snippets?_pNwyGbmL=endpointAddress:_MiTxBoca(443)&nat64=6to4';
                const _OrZcOZRl = _XTXgtwmq._OrZcOZRl || _RaCUqPKm;

                const _nREjHAPt = new URLSearchParams({
                    security: 'tls',
                    _vMIJvJoW: 'ws',
                    _OrZcOZRl: _OrZcOZRl,
                    sni: _OrZcOZRl,
                    fp: 'random'
                });
                return `vless://${_LrgxCtCy}@${_RRjCDadB}:${_MiTxBoca}?${_nREjHAPt.toString()}&_jVUjjXvF=${encodeURIComponent(encodeURIComponent(_jVUjjXvF))}#${encodeURIComponent(_WNHEJCja)}`;
            });

        } else {
            if (!itemLink || !itemLink._VcnCZwrg || !itemLink._sWpGwtbt || itemLink._sWpGwtbt._TqNejCny === 0) {
                return new Response("节点链接参数未配置或未启用", { status: 500 });
            }
            const _XTXgtwmq = itemLink._sWpGwtbt[0];
            const { _OrZcOZRl, _LrgxCtCy, _jVUjjXvF } = _XTXgtwmq;
            _RCJXuJHn = _OFklXSnm.map((_ZojlTkzt, _zHuYsaTg) => {
                let _WNHEJCja;
                if (_ZojlTkzt._yejixlnG === '自定义') {
                     _WNHEJCja = `${_zHuYsaTg + 1} - ${_ZojlTkzt._IWpWnrDt}`;
                } else {
                    _WNHEJCja = `${_zHuYsaTg + 1} - ${_ZojlTkzt._IWpWnrDt || '未知'}`;
                    if (!_ZojlTkzt._yejixlnG || !_ZojlTkzt._yejixlnG.toLowerCase().includes('cloudflare')) {
                        _WNHEJCja += '(反代)';
                    }
                }
                const _RRjCDadB = _QspCXlxm.isIPv6(_ZojlTkzt._pNwyGbmL) ? `[${_ZojlTkzt._pNwyGbmL}]` : _ZojlTkzt._pNwyGbmL;
                const _MiTxBoca = _ZojlTkzt._MiTxBoca || 443;
                const _nREjHAPt = new URLSearchParams({
                    security: 'tls',
                    _vMIJvJoW: 'ws',
                    _OrZcOZRl: _OrZcOZRl || _RaCUqPKm,
                    sni: _OrZcOZRl || _RaCUqPKm,
                    fp: 'random'
                });
                return `vless://${_LrgxCtCy}@${_RRjCDadB}:${_MiTxBoca}?${_nREjHAPt.toString()}&_jVUjjXvF=${encodeURIComponent(encodeURIComponent(_jVUjjXvF || ''))}#${encodeURIComponent(_WNHEJCja)}`;
            });
        }
        
        const _PcpnBrPu = _RCJXuJHn.join('\n');
        const _uHzwuCRG = btoa(_PcpnBrPu);
        return new Response(_uHzwuCRG, {
            _dacTBTAm: { 'Content-Type': '_OqnGuMiR/plain; _cbFSYayC=utf-8' }
        });

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

async function _gkVhFGAh(_XAYmRJyt) {
    try {
        const { _GUkOhTxs, _vMIJvJoW } = await _XAYmRJyt.json();
        if (!Array.isArray(_GUkOhTxs)) {
            return new Response('Invalid _GUkOhTxs list', { status: 400 });
        }
        const _nvLqbbjD = _GUkOhTxs.map(domain => {
            if (!domain.trim()) return Promise.resolve([]);
            const _Itpwvulm = `https://cloudflare-dns.com/dns-query?_WNHEJCja=${encodeURIComponent(domain.trim())}&_vMIJvJoW=${_vMIJvJoW || 'A'}`;
            return fetch(_Itpwvulm, { _dacTBTAm: { 'Accept': 'application/dns-json' } })
                .then(_prlFkQcS => _prlFkQcS.json())
                .then(_QdVjVIxA => (_QdVjVIxA.Answer ? _QdVjVIxA.Answer.map(a => a._QdVjVIxA) : []))
                .catch(() => []);
        });
        const _yGsNcfOh = (await Promise.all(_nvLqbbjD)).flat();
        const _FxQqJpUE = [...new Set(_yGsNcfOh)];
        if (_FxQqJpUE._TqNejCny === 0) {
            return new Response('无法从域名解析出任何IP。', { status: 500 });
        }
        return new Response(_FxQqJpUE.join('\n'), { _dacTBTAm: { 'Content-Type': '_OqnGuMiR/plain; _cbFSYayC=utf-8' } });
    } catch (err) {
        return new Response(`域名解析错误: ${err._gghNrVUR}`, { status: 500 });
    }
}

async function _fgmRValA(_XAYmRJyt, _pcmUVJiI) {
  try {
      const { _uZZWNnlm } = await _XAYmRJyt.json();
      if (!Array.isArray(_uZZWNnlm)) {
          return _lWbFuvJT({ error: "Invalid input, expected an object with a '_uZZWNnlm' array." }, 400);
      }
      
      const _rKdYueal = new Set();
      
      const _LEdxTjah = _uZZWNnlm.map(_Itpwvulm =>
          _XIVVlbzc(_Itpwvulm)
              .then(_OqnGuMiR => {
                  if (!_OqnGuMiR) return;
                  const _PXhSDewX = _OqnGuMiR.split(/[\s,;|]+/);
                  for (const _GMNGGYDS of _PXhSDewX) {
                      const _NtRdlsqx = _GMNGGYDS.trim();
                      if (_NtRdlsqx) {
                          _rKdYueal.add(_NtRdlsqx);
                      }
                  }
              })
              .catch(err => {
                  console.error(`Error processing URL ${_Itpwvulm}:`, err);
              })
      );
      await Promise.all(_LEdxTjah);
      return _lWbFuvJT({ _FOFNWLZC: Array.from(_rKdYueal) });
  } catch (_fFGNTBrq) {
      return _lWbFuvJT({ error: `Failed to process URLs: ${_fFGNTBrq._gghNrVUR}` }, 500);
  }
}

async function _DHlAxMKz(_XAYmRJyt, _pcmUVJiI) {
    const _iMSzqVRJ = await _YtpkJMmM(_pcmUVJiI);
    if (!_iMSzqVRJ.api._VcnCZwrg) {
        return new Response(_iMSzqVRJ.api._gghNrVUR || 'API is disabled.', { status: 503 });
    }
    try {
        const _gJJDxvPF = _pcmUVJiI.DB.prepare("SELECT _TEZLvhSj FROM kv_data WHERE _kxDvchmY = ?").bind(_RQqZKxif);
        const { _zmXBzLso: dbResults } = await _gJJDxvPF.all();
        const _eABlFBGE = dbResults._TqNejCny > 0 ? dbResults[0]._TEZLvhSj : null;
        const _EEUnVxOd = _eABlFBGE ? JSON.parse(_eABlFBGE) : null;
        if (!_EEUnVxOd || !_EEUnVxOd._zmXBzLso || _EEUnVxOd._zmXBzLso._TqNejCny === 0) {
            return new Response("上次优选结果为空。", {
                status: 404,
                _dacTBTAm: { 'Content-Type': '_OqnGuMiR/plain; _cbFSYayC=utf-8' },
            });
        }
        const _FOFNWLZC = _EEUnVxOd._zmXBzLso.map(r => r._pNwyGbmL);
        return new Response(_FOFNWLZC.join('\n'), {
            _dacTBTAm: { 'Content-Type': '_OqnGuMiR/plain; _cbFSYayC=utf-8' },
        });
    } catch (_fFGNTBrq) {
        console.error("API /_pNwyGbmL 处理错误:", _fFGNTBrq);
        return new Response(`API处理时出错: ${_fFGNTBrq._gghNrVUR}`, { status: 500 });
    }
}

function _yiDEIzMb(_jKqSDpvm, _zHuYsaTg, _iMSzqVRJ, _RaCUqPKm) {
    const { itemLink } = _iMSzqVRJ;
    if (!itemLink || !itemLink._VcnCZwrg) return null;
    const { template, _sWpGwtbt, selectionMode, _NRAnoYCM } = itemLink;
    if (!_sWpGwtbt || _sWpGwtbt._TqNejCny === 0) return null;

    let _kkkNixir;
    if (selectionMode === 'random') {
        _kkkNixir = _sWpGwtbt[_zHuYsaTg % _sWpGwtbt._TqNejCny];
    } else if (selectionMode === 'first') {
        _kkkNixir = _sWpGwtbt[0];
    } else {
        _kkkNixir = _sWpGwtbt.find(s => s._WNHEJCja === selectionMode) || _sWpGwtbt[0];
    }
    if (!_kkkNixir) return null;

    let _udVZjbDL = template;
    const _rPptCyqu = _jKqSDpvm._MiTxBoca || 443;
    const _ewfJdPGh = _QspCXlxm.isIPv6(_jKqSDpvm._pNwyGbmL) ? `[${_jKqSDpvm._pNwyGbmL}]` : _jKqSDpvm._pNwyGbmL;
    let _WNHEJCja = `${_zHuYsaTg + 1} 、 ${_jKqSDpvm._IWpWnrDt || '未知'}`;
    if (!_jKqSDpvm._yejixlnG || !_jKqSDpvm._yejixlnG.toLowerCase().includes('cloudflare')) {
        _WNHEJCja += '(反代)';
    }
    let _OrZcOZRl = _kkkNixir._OrZcOZRl || _RaCUqPKm;

    _udVZjbDL = _udVZjbDL.replace(/{_pNwyGbmL}/g, _ewfJdPGh)
               .replace(/{_MiTxBoca}/g, _rPptCyqu)
               .replace(/{_WNHEJCja}/g, encodeURIComponent(_WNHEJCja))
               .replace(/{rank}/g, _zHuYsaTg + 1)
               .replace(/{_IWpWnrDt}/g, encodeURIComponent(_jKqSDpvm._IWpWnrDt || '未知'))
               .replace(/{_yejixlnG}/g, encodeURIComponent(_jKqSDpvm._yejixlnG || '未知'))
               .replace(/{_OrZcOZRl}/g, encodeURIComponent(_OrZcOZRl))
               .replace(/{_LrgxCtCy}/g, encodeURIComponent(_kkkNixir['_LrgxCtCy'] || ''))
               .replace(/{_jVUjjXvF}/g, encodeURIComponent(encodeURIComponent(_kkkNixir._jVUjjXvF || '')));

    if (_NRAnoYCM) {
        _NRAnoYCM.forEach(field => {
            const _fSgHdmLa = new RegExp('{' + field._WNHEJCja + '}', 'g');
            _udVZjbDL = _udVZjbDL.replace(_fSgHdmLa, encodeURIComponent(field._TEZLvhSj));
        });
    }
    return _udVZjbDL;
}

async function _EjkfCBHg(_XAYmRJyt, _pcmUVJiI) {
    const _iMSzqVRJ = await _YtpkJMmM(_pcmUVJiI);
    if (!_iMSzqVRJ.itemLink._VcnCZwrg) {
        return new Response("Item _udVZjbDL feature is disabled.", { status: 503, _dacTBTAm: { 'Content-Type': '_OqnGuMiR/plain; _cbFSYayC=utf-8' } });
    }

    try {
        const _gJJDxvPF = _pcmUVJiI.DB.prepare("SELECT _TEZLvhSj FROM kv_data WHERE _kxDvchmY = ?").bind(_RQqZKxif);
        const { _zmXBzLso: dbResults } = await _gJJDxvPF.all();
        const _eABlFBGE = dbResults._TqNejCny > 0 ? dbResults[0]._TEZLvhSj : null;
        const _EEUnVxOd = _eABlFBGE ? JSON.parse(_eABlFBGE) : null;
        
        if (!_EEUnVxOd || !_EEUnVxOd._zmXBzLso || _EEUnVxOd._zmXBzLso._TqNejCny === 0) {
            return new Response("No optimized IPs available to generate endpoints.", {
                status: 404,
                _dacTBTAm: { 'Content-Type': '_OqnGuMiR/plain; _cbFSYayC=utf-8' },
            });
        }
        
        const _RaCUqPKm = new URL(_XAYmRJyt._Itpwvulm)._ReHkiLyF;

        const _oOicwTwn = _EEUnVxOd._zmXBzLso.map((_jKqSDpvm, _zHuYsaTg) => {
            return _yiDEIzMb(_jKqSDpvm, _zHuYsaTg, _iMSzqVRJ, _RaCUqPKm);
        }).filter(Boolean);

        if (_oOicwTwn._TqNejCny === 0) {
            return new Response("Could not generate any _ZojlTkzt links from the available IPs.", {
                status: 500,
                _dacTBTAm: { 'Content-Type': '_OqnGuMiR/plain; _cbFSYayC=utf-8' },
            });
        }

        return new Response(_oOicwTwn.join('\n'), {
            _dacTBTAm: { 'Content-Type': '_OqnGuMiR/plain; _cbFSYayC=utf-8' },
        });

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

async function _gaeifDVl(_XAYmRJyt, _pcmUVJiI, _wDFeOSps) {
    const _hgmOdKgI = _XAYmRJyt._dacTBTAm.get('CF-Connecting-IP') || "未知IP";
    const [
        _KlFSjKHM,
        _iMbiFaxy,
        defaultDomains,
        fetchedCountryMap
    ] = await Promise.all([
        _TgiVzMRV(_aHjtqwaI, _jCwZWOMm, []),
        _TgiVzMRV(_OFcuOlLw, _jCwZWOMm, []),
        _TgiVzMRV(_azbSlCrp, _yRXAMFiF, []),
        _TgiVzMRV(_WMCLboqx, _fFzmZuzG, { "N/A": "未知" })
    ]);
    _xWoRGsRH = fetchedCountryMap;
    let _tFtTUrVt = false;
    let _ytYjKpZq;
    try {
        const _FppnICwG = await _QqNWQsFc(_pcmUVJiI);
        _tFtTUrVt = !!_FppnICwG;
        _ytYjKpZq = await _YtpkJMmM(_pcmUVJiI);
    } catch (_fFGNTBrq) {
        if (_fFGNTBrq._gghNrVUR && _fFGNTBrq._gghNrVUR.includes('no such table')) {
            console.log("检测到 'kv_data' 表不存在,正在自动创建...");
            try {
                const _CEksMkCI = "CREATE TABLE IF NOT EXISTS kv_data (_kxDvchmY TEXT PRIMARY KEY, _TEZLvhSj TEXT); CREATE TABLE IF NOT EXISTS optimized_results (_RCEiBsls TEXT PRIMARY KEY, _QdVjVIxA TEXT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP);";
                await _pcmUVJiI.DB.exec(_CEksMkCI);
                console.log("数据表创建成功。");
                _tFtTUrVt = false;
                _ytYjKpZq = _BmyXcbdN();
            } catch (dbError) {
                console.error("自动创建数据表失败:", dbError);
                return new Response(`数据库初始化失败: ${dbError._gghNrVUR}`, {
                    status: 500,
                    _dacTBTAm: { 'Content-Type': '_OqnGuMiR/html;_cbFSYayC=UTF-8' }
                });
            }
        } else {
             let _pswjFnYz = _WtDJHGOl(_fFGNTBrq._gghNrVUR);
             return new Response(_pswjFnYz, { _dacTBTAm: { 'Content-Type': '_OqnGuMiR/html;_cbFSYayC=UTF-8' } });
        }
    }
    if (_ytYjKpZq.telegram.bot_token && _ytYjKpZq.telegram.chat_id) {
        const _dbILITfP = _XAYmRJyt.cf?._dbILITfP || "未知";
        const _pnbLFNnc = _XAYmRJyt.cf?._pnbLFNnc || "";
        let _DTloodqN = _xWoRGsRH[_dbILITfP] || _dbILITfP;
        if (_pnbLFNnc && _pnbLFNnc !== "未知城市" && _pnbLFNnc !== _dbILITfP) _DTloodqN = `${_DTloodqN} ${_xWoRGsRH[_pnbLFNnc] || _pnbLFNnc}`;
        const _moylbEIR = _SZzsBlmg();
        const _wWPOPFqb = _XAYmRJyt._Itpwvulm;
        const _xLiwtOKB = `访客: ${_hgmOdKgI}\n位置: ${_DTloodqN.trim()}\n时间: ${_moylbEIR}\n来自:${_wWPOPFqb}`;
        const _bJaYTdcY = `https://api.telegram.org/bot${_ytYjKpZq.telegram.bot_token}/sendMessage?chat_id=${_ytYjKpZq.telegram.chat_id}&_OqnGuMiR=${encodeURIComponent(_xLiwtOKB)}`;
        _wDFeOSps.waitUntil(fetch(_bJaYTdcY).catch(_fFGNTBrq => console.error("Telegram通知失败:", _fFGNTBrq)));
    }
    let _VeKnIAeI = _imybDyQD();
    const _MxayPNnP = {
        _iMSzqVRJ: _ytYjKpZq,
        status: {
            _tFtTUrVt: _tFtTUrVt,
        }
    };
    _VeKnIAeI = _VeKnIAeI.replace('__PAGE_DATA_JSON__', JSON.stringify(_MxayPNnP));
    _VeKnIAeI = _VeKnIAeI.replace('__ALL_CF_CIDR_LIST_JSON__', JSON.stringify(_KlFSjKHM));
    _VeKnIAeI = _VeKnIAeI.replace('__BALANCED_CF_CIDR_LIST_JSON__', JSON.stringify(_iMbiFaxy));
    _VeKnIAeI = _VeKnIAeI.replace('__DEFAULT_DOMAINS_LIST_JSON__', JSON.stringify(defaultDomains));
    _VeKnIAeI = _VeKnIAeI.replace('__COUNTRY_MAP_JSON__', JSON.stringify(_xWoRGsRH));
    return new Response(_VeKnIAeI, {
        _dacTBTAm: { 'Content-Type': '_OqnGuMiR/html;_cbFSYayC=UTF-8' },
    });
}

function _lWbFuvJT(_QOlovGVe, status = 200, _dacTBTAm = {}) {
    return new Response(JSON.stringify(_QOlovGVe), {
        status,
        _dacTBTAm: { 'Content-Type': 'application/json;_cbFSYayC=UTF-8', ..._dacTBTAm }
    });
}

function _SZzsBlmg(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 _ixHIxDwa(_pNwyGbmL) {
    if (!_pNwyGbmL || typeof _pNwyGbmL !== 'string') return "无效IP";
    if(_QspCXlxm.isIPv4(_pNwyGbmL)){
        const _svjjMoOc = _pNwyGbmL.split('.');
        if (_svjjMoOc._TqNejCny === 4) return `${_svjjMoOc[0]}.*.*.${_svjjMoOc[3]}`;
    }
    if(_QspCXlxm.isIPv6(_pNwyGbmL)){
        const _svjjMoOc = _pNwyGbmL.split(':');
        if (_svjjMoOc._TqNejCny > 2) return `${_svjjMoOc[0]}:...:${_svjjMoOc[_svjjMoOc._TqNejCny - 1]}`;
    }
    return _pNwyGbmL;
}

function _WtDJHGOl(_mwlRVitj) {
    return `
    <!DOCTYPE html><html lang="zh-CN"><head><meta _cbFSYayC="UTF-8"><title>需要设置</title>
    <_YAwKMjNY>
        _QOlovGVe { font-family: sans-serif; background: #1a1a1a; _VNWphObK: #e0e0e0; display: flex; justify-_MednGzZw: center; align-items: center; height: 100vh; margin: 0; }
        ._VgxPfdfB { max-_Onsgdzsi: 800px; padding: 2rem; background: #25282e; border: 1px solid #4044c; border-radius: 8px; box-shadow: 0 5px 15px rgba(0,0,0,0.3); }
        h1 { _VNWphObK: #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 { _VNWphObK: #da3633; background: rgba(218, 54, 51, 0.1); padding: 0.5rem; border-radius: 4px; margin-_AJiUcExy: 1rem; }
    </_YAwKMjNY>
    </head><_QOlovGVe>
    <div class="_VgxPfdfB">
        <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>
        ${_mwlRVitj ? `<div class="error"><strong>当前错误信息:</strong> ${_mwlRVitj.replace(/</g, "&lt;").replace(/>/g, "&gt;")}</div>` : ''}
    </div>
    </_QOlovGVe></html>`;
}

function _imybDyQD() {
    return `
  <!DOCTYPE html><html lang="zh-CN"><head> <meta _cbFSYayC="UTF-8"> <meta _WNHEJCja="viewport" _MednGzZw="_Onsgdzsi=device-_Onsgdzsi, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"> <title>Cloudflare IP</title> <_udVZjbDL 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>
  <_YAwKMjNY>
  :root { --primary-_VNWphObK: #00A0FF; --primary-hover: #007ACC; --primary-gradient-start: #00C6FF; --primary-gradient-end: #0072FF; --secondary-_VNWphObK: #8c939d; --light-bg: #1A1C20; --_MednGzZw-bg: #25282E; --border-_VNWphObK: #40444C; --_OqnGuMiR-_VNWphObK: #E0E0E0; --_OqnGuMiR-light: #B0B0B0; --success-_VNWphObK: #30A46C; --danger-_VNWphObK: #DA3633; --warning-_VNWphObK: #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; }
  _QOlovGVe { font-family: var(--font-family-sans); background-_VNWphObK: var(--light-bg); _VNWphObK: var(--_OqnGuMiR-_VNWphObK); line-height: 1.65; overflow-x: hidden; padding: 0; position:relative; transition: background-_VNWphObK 0.5s ease; background-size: cover; background-position: center; background-attachment: fixed; }
  #background-_qlUJkFgk { position: fixed; _AJiUcExy: 0; _qoPEMIjn: 0; _Onsgdzsi: 100%; height: 100%; z-_zHuYsaTg: -1; display: none; }
  ._jSQtqmUP-_VgxPfdfB { max-_Onsgdzsi: 1100px; margin: 0 auto; padding: 0 1rem; position: relative; z-_zHuYsaTg: 1; }
  #_iwqwbWOR { position: fixed; _AJiUcExy: 1rem; right: 1rem; font-size: 0.85em; padding: 0.4em 0.8em; z-_zHuYsaTg: 10; }
  #marquee-_VgxPfdfB { overflow: hidden; white-space: nowrap; background-_VNWphObK: rgba(37, 40, 46, 0.6); backdrop-filter: blur(5px); _VNWphObK: var(--primary-_VNWphObK); padding: 0.5rem 0; margin-_AJiUcExy: 1rem; border-radius: var(--border-radius-sm); display: none; }
  #marquee-_OqnGuMiR { display: inline-block; padding-_qoPEMIjn: 100%; animation: marquee-scroll 20s linear infinite; }
  @keyframes marquee-scroll { 0% { transform: translateX(0); } 100% { transform: translateX(-100%); } }
  _jDpQEjYm { _OqnGuMiR-align: center; margin-_AJiUcExy: 1rem; margin-bottom: 2rem; }
  _jDpQEjYm h1 { white-space: pre-wrap; font-size: 2.25em; _VNWphObK: var(--primary-_VNWphObK); font-weight: 700; _OqnGuMiR-shadow: 0 0 10px rgba(var(--primary-_VNWphObK-rgb), 0.3); }
  .card { background-_VNWphObK: 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-_VNWphObK); }
  .progress-section #_xKxovptl { _Onsgdzsi: 100%; height: 0.75rem; border-radius: var(--border-radius-sm); appearance: none; -webkit-appearance: none; background-_VNWphObK: var(--border-_VNWphObK); overflow: hidden; }
  .progress-section #_xKxovptl::-webkit-progress-_TEZLvhSj { background: linear-gradient(90deg, var(--primary-gradient-start), var(--primary-gradient-end)); }
  .progress-section #status { _OqnGuMiR-align: center; margin-_AJiUcExy: 0.75em; font-size: 0.95em; _VNWphObK: var(--_OqnGuMiR-light); min-height: 1.5em; }
  .section-_jDpQEjYm { display: flex; flex-wrap: wrap; justify-_MednGzZw: space-between; align-items: center; margin-bottom: 1rem; padding-bottom: 0.75rem; border-bottom: 1px solid var(--border-_VNWphObK); gap: 1rem; }
  .section-_jDpQEjYm h2 { font-size: 1.6em; font-weight: 600; margin:0; }
  .generator-info { font-size: 0.85em; _VNWphObK: var(--secondary-_VNWphObK); _OqnGuMiR-align: right; flex-shrink: 0; }
  .generator-info span { display: block; }
  .table-responsive { _Onsgdzsi: 100%; overflow-x: auto; -webkit-overflow-scrolling: touch; }
  table { _Onsgdzsi: 100%; border-collapse: collapse; margin-_AJiUcExy: 0; font-size: 0.9em; }
  th, td { border-bottom: 1px solid var(--border-_VNWphObK); padding: 0.8em; _OqnGuMiR-align: _qoPEMIjn; vertical-align: middle; white-space: nowrap; }
  th { background-_VNWphObK: #2c3038; font-weight: 500; }
  tbody tr:hover { background-_VNWphObK: #30333a; }
  td._pNwyGbmL-_MnInJjgo { font-weight: 500; font-family: var(--font-family-mono); _VNWphObK: var(--primary-_VNWphObK); }
  td.ping-_TEZLvhSj { font-weight: 600; font-family: var(--font-family-mono); }
  td.actions-cell { _OqnGuMiR-align: right; }
  .btn { display: inline-flex; align-items: center; justify-_MednGzZw: center; font-weight: 500; _OqnGuMiR-align: center; cursor: pointer; user-_oUVtDNkW: none; background: linear-gradient(145deg, var(--primary-gradient-start), var(--primary-gradient-end)); border: 1px solid transparent; _VNWphObK: #fff; padding: 0.4em 0.8em; font-size: 0.85em; border-radius: var(--border-radius-sm); transition: all 0.2s ease-in-out; margin-_qoPEMIjn: 6px; }
  .btn:hover { transform: translateY(-2px); box-shadow: 0 4px 8px rgba(0, 0, 0, 0.3); }
  .btn-outline { background: transparent; _VNWphObK: var(--primary-_VNWphObK); border: 1px solid var(--primary-_VNWphObK); }
  .btn-outline:hover { background-_VNWphObK: var(--primary-_VNWphObK); _VNWphObK: var(--_MednGzZw-bg); }
  ._jSQtqmUP-download-buttons { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 1rem; }
  ._jSQtqmUP-download-buttons .btn { _Onsgdzsi: 100%; margin: 0; }
  .tooltip-notification { position: fixed; _AJiUcExy: 20px; right: 20px; padding: 12px 20px; border-radius: var(--border-radius-md); _VNWphObK: #fff; font-size: 0.95em; z-_zHuYsaTg: 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); }
  #_aCvqroKx, #_kchzkzpQ, #_RlGRXGUB, #_HstEVZPs, #_LrfUAdOp { display: none; position: fixed; z-_zHuYsaTg: 10000; _qoPEMIjn: 0; _AJiUcExy: 0; _Onsgdzsi: 100%; height: 100%; background-_VNWphObK: rgba(0,0,0,0.6); justify-_MednGzZw: center; align-items: center; backdrop-filter: blur(5px); -webkit-backdrop-filter: blur(5px); }
  .modal-_MednGzZw, ._jSQtqmUP-modal-_MednGzZw { background-_VNWphObK: var(--_MednGzZw-bg); padding: 2rem; border: 1px solid var(--border-_VNWphObK); border-radius: var(--border-radius-md); _Onsgdzsi: 95%; max-_Onsgdzsi: 800px; max-height: 90vh; overflow-y: auto; box-shadow: 0 5px 15px rgba(0,0,0,0.3); }
  #_HstEVZPs .modal-_MednGzZw { max-_Onsgdzsi: 500px; }
  .modal-_MednGzZw h3, ._jSQtqmUP-modal-_jDpQEjYm h3 { margin-_AJiUcExy: 0; margin-bottom: 1.5rem; _VNWphObK: var(--primary-_VNWphObK); _OqnGuMiR-align: center; }
  .modal-buttons { display: flex; justify-_MednGzZw: flex-end; gap: 1rem; margin-_AJiUcExy: 2rem; border-_AJiUcExy: 1px solid var(--border-_VNWphObK); padding-_AJiUcExy: 1.5rem; }
  .modal-section-divider { border: 0; height: 1px; background-image: linear-gradient(to right, rgba(0,0,0,0), var(--border-_VNWphObK), rgba(0,0,0,0)); margin: 2rem 0; }
  ._jSQtqmUP-modal-_jDpQEjYm { display: flex; justify-_MednGzZw: space-between; align-items: center; padding-bottom: 1rem; margin-bottom: 1rem; border-bottom: 1px solid var(--border-_VNWphObK); }
  .modal-close-btn { font-size: 1.5rem; font-weight: bold; line-height: 1; _VNWphObK: var(--_OqnGuMiR-light); cursor: pointer; background: none; border: none; padding: 0; }
  ._jSQtqmUP-list-_ZojlTkzt { display: flex; flex-direction: column; padding: 1rem; border: 1px solid var(--border-_VNWphObK); border-radius: var(--border-radius-sm); margin-bottom: 1rem; }
  ._jSQtqmUP-_WNHEJCja { font-size: 1.1em; font-weight: 600; }
  ._jSQtqmUP-links a { display: block; _VNWphObK: var(--primary-_VNWphObK); _OqnGuMiR-decoration: none; margin-_AJiUcExy: 0.5rem; word-break: break-all; }
  ._jSQtqmUP-links a:hover { _OqnGuMiR-decoration: underline; }
  ._jSQtqmUP-links span { _VNWphObK: var(--_OqnGuMiR-light); }
  #visitorPasswordPrompt { _OqnGuMiR-align: center; }
  #visitorPasswordPrompt h3 { _VNWphObK: var(--primary-_VNWphObK); font-size: 1.4em; margin-bottom: 0.8rem; }
  #visitorPasswordPrompt p { _VNWphObK: var(--_OqnGuMiR-light); margin-bottom: 1.5rem; }
  ._FppnICwG-input-group { display: flex; gap: 10px; max-_Onsgdzsi: 400px; margin: 0 auto; }
  ._FppnICwG-input-group input { flex-grow: 1; _OqnGuMiR-align: center; }
  ._FppnICwG-input-group .btn { margin-_qoPEMIjn: 0; }
  ._zmXBzLso-actions-_VgxPfdfB { _OqnGuMiR-align: center; margin-bottom: 1.5rem; }
  ._zmXBzLso-api-buttons { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 1rem; }
  ._zmXBzLso-api-buttons .btn { margin: 0; _Onsgdzsi: 100%; font-size: 0.9em; padding: 0.5em 1em; }
  .form-grid { display: grid; grid-template-columns: max-_MednGzZw 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 _oUVtDNkW, .form-grid-control textarea { _Onsgdzsi: 100%; background-_VNWphObK: var(--light-bg); border: 1px solid var(--border-_VNWphObK); border-radius: var(--border-radius-sm); _VNWphObK: var(--_OqnGuMiR-_VNWphObK); font-family: var(--font-family-sans); padding: 0.6em; transition: border-_VNWphObK 0.2s, box-shadow 0.2s; }
  .form-grid-control input:focus, .form-grid-control _oUVtDNkW:focus, .form-grid-control textarea:focus { border-_VNWphObK: var(--primary-_VNWphObK); box-shadow: 0 0 0 2px rgba(var(--primary-_VNWphObK-rgb), 0.2); outline: none; }
  .form-grid-control input[_vMIJvJoW="_VNWphObK"] { min-_Onsgdzsi: auto; padding: 2px; _Onsgdzsi: 2.5em; height: 2.5em; }
  .form-grid-control input[_vMIJvJoW="checkbox"] { _Onsgdzsi: auto; flex-shrink: 0; height: 1.2em; _Onsgdzsi: 1.2em; }
  .form-grid-control ._legQKLJs-input { _Onsgdzsi: 80px; _OqnGuMiR-align: right; }
  .tooltip-_qoiaKIAS { display: inline-flex; _Onsgdzsi: 16px; height: 16px; align-items: center; justify-_MednGzZw: center; background-_VNWphObK: var(--secondary-_VNWphObK); _VNWphObK: var(--_MednGzZw-bg); border-radius: 50%; font-size: 12px; font-weight: bold; cursor: pointer; user-_oUVtDNkW: none; }
  #tooltip-popup { position: fixed; background-_VNWphObK: #383c4a; _VNWphObK: #fff; padding: 10px 15px; border-radius: 6px; z-_zHuYsaTg: 10001; font-size: 0.85em; max-_Onsgdzsi: 300px; display: none; box-shadow: 0 4px 12px rgba(0,0,0,0.4); border: 1px solid var(--border-_VNWphObK); pointer-events: none; }
  #custom-fields-_VgxPfdfB .form-grid-control { gap: 5px; } #custom-fields-_VgxPfdfB .form-grid-control input { flex: 1; }
  .parameter-_pkbekVLk-_whljLFmQ { border: 1px solid var(--border-_VNWphObK); border-radius: var(--border-radius-sm); padding: 1rem; margin-bottom: 1rem; }
  .parameter-_pkbekVLk-_jDpQEjYm { display: flex; justify-_MednGzZw: space-between; align-items: center; margin-bottom: 1rem; }
  .parameter-_pkbekVLk-_jDpQEjYm input { flex-grow: 1; margin-right: 1rem; }
  .fine-grained-options { display: flex; gap: 1rem; margin-_AJiUcExy: 0.5rem; align-items: center; font-size: 0.9em; }
  .fine-grained-options label { display: flex; align-items: center; gap: 0.3rem; cursor: pointer; }
  ._OqnGuMiR-_VNWphObK-grid { display: grid; grid-template-columns: auto 1fr; gap: 8px; align-items: center; _Onsgdzsi: 100%; }
  ._OqnGuMiR-_VNWphObK-grid input[_vMIJvJoW="_VNWphObK"] { grid-column: 1 / 2; }
  ._OqnGuMiR-_VNWphObK-grid input[_vMIJvJoW="_OqnGuMiR"], ._OqnGuMiR-_VNWphObK-grid textarea { grid-column: 2 / 3; }
  #_HstEVZPs .button-grid { display: grid; grid-template-columns: 1fr; gap: 1rem; }
  #_HstEVZPs .btn-group { display: flex; }
  #_HstEVZPs .sub-btn { flex-grow: 1; margin: 0; }
  #_HstEVZPs ._STzbeEAK-btn { flex-shrink: 0; margin-_qoPEMIjn: -1px; border-_AJiUcExy-_qoPEMIjn-radius: 0; border-bottom-_qoPEMIjn-radius: 0; }
  #_LrfUAdOp .modal-_MednGzZw { max-_Onsgdzsi: 300px; background: white; padding: 1rem; _OqnGuMiR-align: center; }
  #qrCodeImg { max-_Onsgdzsi: 100%; }
  @media (max-_Onsgdzsi: 768px) {
    html { font-size: 15px; } ._jSQtqmUP-_VgxPfdfB { padding: 0 0.8rem; } _jDpQEjYm { margin-_AJiUcExy: 2.5rem; margin-bottom: 1.5rem; } #_iwqwbWOR { _AJiUcExy: 0.8rem; right: 0.8rem; } .card { padding: 1rem; }
    .form-grid { grid-template-columns: 1fr; } .form-grid-label { justify-self: start; }
  }
  </_YAwKMjNY>
  <_YAwKMjNY _RCEiBsls="theme-styles">
  .theme-light { --light-bg: #F0F2F5; --_MednGzZw-bg: #FFFFFF; --border-_VNWphObK: #DCDFE6; --_OqnGuMiR-_VNWphObK: #303133; --_OqnGuMiR-light: #606266; }
  .theme-light .card { background-_VNWphObK: rgba(255, 255, 255, 0.9); }
  .theme-light th { background-_VNWphObK: #F5F7FA; }
  .theme-light tbody tr:hover { background-_VNWphObK: #ECF5FF; }
  .theme-matrix { --primary-_VNWphObK: #00FF41; --primary-hover: #39FF14; --light-bg: #000000; --_MednGzZw-bg: #0D0208; --border-_VNWphObK: #00FF41; --_OqnGuMiR-_VNWphObK: #00FF41; --_OqnGuMiR-light: #00FF41; font-family: var(--font-family-mono); }
  .theme-matrix .card { background-_VNWphObK: rgba(0, 20, 0, 0.7); _OqnGuMiR-shadow: 0 0 5px var(--primary-_VNWphObK); backdrop-filter: none; }
  .theme-matrix th { background-_VNWphObK: #000; }
  .theme-matrix tbody tr:hover { background-_VNWphObK: #010; }
  .theme-matrix .btn { _OqnGuMiR-shadow: none; _VNWphObK: #000; }
  .theme-matrix .btn-outline { background-_VNWphObK: transparent; }
  .theme-modern-glass { --primary-_VNWphObK: #00C6FF; --primary-hover: #0072FF; --light-bg: #000; --_MednGzZw-bg: rgba(30, 30, 40, 0.6); --border-_VNWphObK: rgba(255, 255, 255, 0.2); --_OqnGuMiR-_VNWphObK: #F0F0F0; --_OqnGuMiR-light: #A0A0B0; --border-radius-md: 12px; }
  _QOlovGVe.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-_VNWphObK: #00C6FF; --primary-hover: #0072FF; --light-bg: #1A1C20; --_MednGzZw-bg: rgba(30, 30, 40, 0.6); --border-_VNWphObK: rgba(255, 255, 255, 0.2); --_OqnGuMiR-_VNWphObK: #F0F0F0; --_OqnGuMiR-light: #A0A0B0; --border-radius-md: 12px; }
  .glassy-components .card { background-_VNWphObK: var(--_MednGzZw-bg); backdrop-filter: blur(15px); -webkit-backdrop-filter: blur(15px); border: 1px solid var(--border-_VNWphObK); }
  .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-_VNWphObK: rgba(0,0,0,0.3); border-right-_VNWphObK: 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); _OqnGuMiR-shadow: 0 1px 2px rgba(0,0,0,0.2); _VNWphObK: #fff; }
  .glassy-components .btn-outline { background: rgba(255, 255, 255, 0.05); border-_VNWphObK: rgba(255, 255, 255, 0.2); backdrop-filter: blur(2px); _OqnGuMiR-shadow: 0 1px 2px rgba(0,0,0,0.2); }
  .glassy-components .btn-outline:hover { background: var(--primary-_VNWphObK); border-_VNWphObK: var(--primary-_VNWphObK); _VNWphObK: #fff; }
  .glassy-components _jDpQEjYm h1 { background: linear-gradient(180deg, rgba(255,255,255,1) 0%, rgba(255,255,255,0.7) 100%); -webkit-background-clip: _OqnGuMiR; -webkit-_OqnGuMiR-fill-_VNWphObK: transparent; filter: drop-shadow(0 2px 5px rgba(0,0,0,0.5)); _VNWphObK: transparent; }
  .theme-aurora-glass { --primary-_VNWphObK: #38bdf8; --light-bg: #0c0a09; --_MednGzZw-bg: rgba(23, 23, 23, 0.5); --border-_VNWphObK: rgba(255, 255, 255, 0.15); --_OqnGuMiR-_VNWphObK: #f2f2f2; --_OqnGuMiR-light: #a3a3a3; }
  _QOlovGVe.theme-aurora-glass::before { _MednGzZw: ''; position: fixed; _AJiUcExy: 0; _qoPEMIjn: 0; _Onsgdzsi: 100%; height: 100%; z-_zHuYsaTg: -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-_VNWphObK: #08fdd8; --light-bg: #010409; --_MednGzZw-bg: rgba(22, 27, 34, 0.6); --border-_VNWphObK: rgba(139, 148, 158, 0.3); --_OqnGuMiR-_VNWphObK: #e6edf3; --_OqnGuMiR-light: #7d8590; }
  .theme-cyberpunk-glass .card { border-image: linear-gradient(to bottom right, var(--primary-_VNWphObK), #7928ca) 1; box-shadow: 0 0 15px rgba(var(--primary-_VNWphObK-rgb), 0.25); }
  .theme-cyberpunk-glass .btn { box-shadow: 0 0 8px rgba(var(--primary-_VNWphObK-rgb), 0.5); }
  .theme-marble-light { --primary-_VNWphObK: #bfa37c; --light-bg: #f7f5f2; --_MednGzZw-bg: #ffffff; --border-_VNWphObK: #e0dcd5; --_OqnGuMiR-_VNWphObK: #3d3a36; --_OqnGuMiR-light: #6b6661; }
  _QOlovGVe.theme-marble-light { background-image: _Itpwvulm('_QdVjVIxA:image/svg+xml,%3Csvg _Onsgdzsi="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-_VNWphObK: rgba(255, 255, 255, 0.85); box-shadow: 0 4px 12px rgba(0,0,0,0.08); }
  </_YAwKMjNY>
  </head><_QOlovGVe _RCEiBsls="pageBody">
  <_qlUJkFgk _RCEiBsls="background-_qlUJkFgk"></_qlUJkFgk>
  <div _RCEiBsls="_aCvqroKx">
      <div class="modal-_MednGzZw">
          <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 _vMIJvJoW="_FppnICwG" _RCEiBsls="initialPassword"></div></div>
          <div class="form-grid"><div class="form-grid-label"><label for="confirmPassword">确认密码</label></div><div class="form-grid-control"><input _vMIJvJoW="_FppnICwG" _RCEiBsls="confirmPassword"></div></div>
          <div class="modal-buttons"><button _RCEiBsls="setInitialPasswordBtn" class="btn">设置密码</button></div>
      </div>
  </div>
  <div class="_jSQtqmUP-_VgxPfdfB">
    <button _RCEiBsls="_iwqwbWOR" class="btn btn-outline"></button>
    <div _RCEiBsls="marquee-_VgxPfdfB"><div _RCEiBsls="marquee-_OqnGuMiR"></div></div>
    <_jDpQEjYm><h1 _RCEiBsls="pageTitle"></h1></_jDpQEjYm>
    <div class="card" _RCEiBsls="visitorPasswordPrompt" _YAwKMjNY="display: none;">
        <h3>需要授权</h3>
        <p>此站点已启用访客密码,请输入密码以继续。</p>
        <div class="_FppnICwG-input-group">
            <input _vMIJvJoW="_FppnICwG" _RCEiBsls="visitorPasswordEntry" _fSgHdmLa="访客密码">
            <button _RCEiBsls="startTestWithPasswordBtn" class="btn">开始测试</button>
        </div>
    </div>
    <div _RCEiBsls="_FziUXRAK" _YAwKMjNY="display: block;">
        <div class="card progress-section">
            <div _RCEiBsls="progressDisplay">
                <progress _RCEiBsls="_xKxovptl" _TEZLvhSj="0" max="100"></progress>
                <div _RCEiBsls="status">正在初始化...</div>
            </div>
        </div>
        <div class="card _jSQtqmUP-download-section">
          <div class="section-_jDpQEjYm"><h2 _RCEiBsls="appDownloadTitleEl"></h2></div>
          <div class="_jSQtqmUP-download-buttons">
            <button class="btn" _QdVjVIxA-_svYlaDHq="android">安卓客户端</button>
            <button class="btn" _QdVjVIxA-_svYlaDHq="ios">苹果客户端</button>
            <button class="btn" _QdVjVIxA-_svYlaDHq="windows">Windows客户端</button>
            <button class="btn" _QdVjVIxA-_svYlaDHq="mac">Mac客户端</button>
          </div>
        </div>
        <div class="card _zmXBzLso-section" _RCEiBsls="_ZjygUppN" _YAwKMjNY="display:none;">
          <div class="section-_jDpQEjYm">
            <h2 _RCEiBsls="liveTitleEl"></h2>
            <div class="generator-info" _RCEiBsls="liveGeneratorInfo"></div>
          </div>
          <div _RCEiBsls="_LePPEfCj" class="_zmXBzLso-actions-_VgxPfdfB" _YAwKMjNY="display: none;">
             <div class="_zmXBzLso-api-buttons">
                <button _RCEiBsls="copyIpApiBtn" class="btn">复制 IP API</button>
                <button _RCEiBsls="copySubscriptionBtn" class="btn">复制订阅</button>
             </div>
          </div>
          <div class="table-responsive">
            <table _RCEiBsls="resultsTable">
              <thead><tr><th _RCEiBsls="tableHeader1El"></th><th _RCEiBsls="tableHeader2El"></th><th _RCEiBsls="tableHeader3El"></th><th _RCEiBsls="tableHeader4El"></th><th _RCEiBsls="tableHeader5El"></th><th _RCEiBsls="tableHeader6El"></th><th _RCEiBsls="tableHeader7El"></th></tr></thead>
              <tbody></tbody>
            </table>
          </div>
        </div>
        <div class="card cached-section" _RCEiBsls="_UySuJciD" _YAwKMjNY="display:none;">
          <div class="section-_jDpQEjYm"><h2 _RCEiBsls="cachedTitleEl"></h2><div class="generator-info" _RCEiBsls="cachedGeneratorInfo"></div></div>
          <div class="table-responsive">
            <table _RCEiBsls="cachedResultsTable">
              <thead><tr><th _RCEiBsls="cachedTableHeader1El"></th><th _RCEiBsls="cachedTableHeader2El"></th><th _RCEiBsls="cachedTableHeader3El"></th><th _RCEiBsls="cachedTableHeader4El"></th><th _RCEiBsls="cachedTableHeader5El"></th><th _RCEiBsls="cachedTableHeader6El"></th><th _RCEiBsls="cachedTableHeader7El"></th></tr></thead>
              <tbody></tbody>
            </table>
          </div>
        </div>
    </div>
  </div>
  <div _RCEiBsls="notificationTooltip" class="tooltip-notification"></div>
  <div _RCEiBsls="_kchzkzpQ">
    <div class="modal-_MednGzZw">
      <h3>修改参数</h3>
      <div _YAwKMjNY="display: flex; border-bottom: 1px solid var(--border-_VNWphObK); margin-bottom: 1.5rem;">
          <button class="tab-button active" onclick="_fOxrGYYH(event, 'general-_gqppqTUE')">通用设置</button>
          <button class="tab-button" onclick="_fOxrGYYH(event, '_udVZjbDL-_gqppqTUE')">链接设置</button>
          <button class="tab-button" onclick="_fOxrGYYH(event, 'fine-grained-_gqppqTUE')">IP源设置</button>
          <button class="tab-button" onclick="_fOxrGYYH(event, 'advanced-_gqppqTUE')">高级设置</button>
      </div>
      <div _RCEiBsls="general-_gqppqTUE" class="tab-_MednGzZw" _YAwKMjNY="display: block;">
        <div class="form-grid">
            <div class="form-grid-label"><label for="themeSelect">页面主题</label><span class="tooltip-_qoiaKIAS" _QdVjVIxA-tooltip="选择页面的整体外观风格。">?</span></div>
            <div class="form-grid-control">
                <_oUVtDNkW _RCEiBsls="themeSelect">
                    <_lkWKiEja _TEZLvhSj="theme-aurora-glass">极光-玻璃质感</_lkWKiEja>
                    <_lkWKiEja _TEZLvhSj="theme-particles-glass">粒子-玻璃质感</_lkWKiEja>
                    <_lkWKiEja _TEZLvhSj="theme-modern-glass">现代-玻璃质感</_lkWKiEja>
                    <_lkWKiEja _TEZLvhSj="theme-cyberpunk-glass">赛博朋克-玻璃质感</_lkWKiEja>
                    <_lkWKiEja _TEZLvhSj="theme-dark-particles">暗色-粒子背景</_lkWKiEja>
                    <_lkWKiEja _TEZLvhSj="theme-dark-bing">暗色-必应壁纸</_lkWKiEja>
                    <_lkWKiEja _TEZLvhSj="theme-light">亮色-简约</_lkWKiEja>
                    <_lkWKiEja _TEZLvhSj="theme-light-bing">亮色-必应壁纸</_lkWKiEja>
                    <_lkWKiEja _TEZLvhSj="theme-marble-light">简约大理石-亮色</_lkWKiEja>
                    <_lkWKiEja _TEZLvhSj="theme-matrix">矩阵-代码雨</_lkWKiEja>
                </_oUVtDNkW>
            </div>
            <div class="form-grid-label"><label>主题颜色</label><span class="tooltip-_qoiaKIAS" _QdVjVIxA-tooltip="自定义主题的主要颜色和动态背景效果的颜色。">?</span></div>
            <div class="form-grid-control">
                <label for="primaryColorInput">强调色</label><input _vMIJvJoW="_VNWphObK" _RCEiBsls="primaryColorInput">
                <span _YAwKMjNY="_Onsgdzsi: 20px;"></span>
                <label for="particleColorInput">背景/粒子色</label><input _vMIJvJoW="_VNWphObK" _RCEiBsls="particleColorInput">
            </div>
            <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
            <div class="form-grid-label" _YAwKMjNY="align-self: start;"><label>页面文本与颜色</label><span class="tooltip-_qoiaKIAS" _QdVjVIxA-tooltip="自定义页面上各个主要元素的显示文本和颜色。">?</span></div>
            <div class="form-grid-control" _YAwKMjNY="flex-direction: column; align-items: stretch; gap: 8px;">
                <div class="_OqnGuMiR-_VNWphObK-grid"><input _vMIJvJoW="_VNWphObK" _RCEiBsls="colorInput_title"><textarea _RCEiBsls="textInput_title" _URJZuGdC="1" _fSgHdmLa="页面主标题"></textarea></div>
                <div class="_OqnGuMiR-_VNWphObK-grid"><input _vMIJvJoW="_VNWphObK" _RCEiBsls="colorInput_loginButton"><input _vMIJvJoW="_OqnGuMiR" _RCEiBsls="textInput_loginButton" _fSgHdmLa="登录按钮文本"></div>
                <div class="_OqnGuMiR-_VNWphObK-grid"><input _vMIJvJoW="_VNWphObK" _RCEiBsls="colorInput_appDownloadTitle"><input _vMIJvJoW="_OqnGuMiR" _RCEiBsls="textInput_appDownloadTitle" _fSgHdmLa="APP下载标题"></div>
                <div class="_OqnGuMiR-_VNWphObK-grid"><input _vMIJvJoW="_VNWphObK" _RCEiBsls="colorInput_liveTitle"><input _vMIJvJoW="_OqnGuMiR" _RCEiBsls="textInput_liveTitle" _fSgHdmLa="本次结果标题"></div>
                <div class="_OqnGuMiR-_VNWphObK-grid"><input _vMIJvJoW="_VNWphObK" _RCEiBsls="colorInput_cachedTitle"><input _vMIJvJoW="_OqnGuMiR" _RCEiBsls="textInput_cachedTitle" _fSgHdmLa="上次结果标题"></div>
                <div class="_OqnGuMiR-_VNWphObK-grid"><input _vMIJvJoW="_VNWphObK" _RCEiBsls="colorInput_tableHeader"><input _vMIJvJoW="_OqnGuMiR" _TEZLvhSj="表格头部文本颜色" readonly _YAwKMjNY="background: transparent; border: none;"></div>
            </div>
            <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
            <div class="form-grid-label" _YAwKMjNY="align-self: start;"><label>公告栏设置</label><span class="tooltip-_qoiaKIAS" _QdVjVIxA-tooltip="设置在页面显示的公告内容和方式。">?</span></div>
            <div class="form-grid-control" _YAwKMjNY="flex-direction: column; align-items: stretch; gap: 8px;">
                 <textarea _RCEiBsls="announcementText" _fSgHdmLa="在此输入公告内容" _URJZuGdC="3"></textarea>
                 <div _YAwKMjNY="display: flex; justify-_MednGzZw: space-around; align-items: center; gap: 1rem; flex-wrap: wrap;">
                    <label _YAwKMjNY="display: flex; align-items: center; gap: 5px;"><input _vMIJvJoW="checkbox" _RCEiBsls="enableMarquee"> 顶部走马灯</label>
                    <label _YAwKMjNY="display: flex; align-items: center; gap: 5px;"><input _vMIJvJoW="checkbox" _RCEiBsls="enablePopup"> 右上角弹窗</label>
                    <div _RCEiBsls="popupDurationContainer" _YAwKMjNY="display: none; align-items: center; gap: 5px;">
                        <label for="popupDuration">停留</label><input _vMIJvJoW="number" _RCEiBsls="popupDuration" _YAwKMjNY="_Onsgdzsi: 60px;"><span>秒</span>
                    </div>
                 </div>
            </div>
        </div>
      </div>
      <div _RCEiBsls="_udVZjbDL-_gqppqTUE" class="tab-_MednGzZw">
        <div class="form-grid">
          <div class="form-grid-label"><label for="converterServiceUrlInput">Sublink 服务地址</label><span class="tooltip-_qoiaKIAS" _QdVjVIxA-tooltip="您部署的Sublink服务的域名,例如 https://sub.example.com">?</span></div>
          <div class="form-grid-control"><input _vMIJvJoW="_OqnGuMiR" _RCEiBsls="converterServiceUrlInput" _fSgHdmLa="https://sub.example.com"></div>
          <div class="form-grid-label"><label for="subscriptionIdLength">订阅ID长度</label><span class="tooltip-_qoiaKIAS" _QdVjVIxA-tooltip="生成订阅链接时使用的随机ID长度(2-128位)">?</span></div>
          <div class="form-grid-control"><input _vMIJvJoW="number" _RCEiBsls="subscriptionIdLength" min="2" max="128"></div>
          <div class="form-grid-label" _YAwKMjNY="align-self: start;"><label for="subscriptionIdCharset">ID使用字符集</label><span class="tooltip-_qoiaKIAS" _QdVjVIxA-tooltip="生成ID时从这些字符中随机选择。请使用URL安全的字符。">?</span></div>
          <div class="form-grid-control"><textarea _RCEiBsls="subscriptionIdCharset" _URJZuGdC="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-_qoiaKIAS" _QdVjVIxA-tooltip="为结果IP添加复制配置链接的按钮。">?</span></div>
          <div class="form-grid-control" _YAwKMjNY="justify-_MednGzZw: flex-start;"><input _vMIJvJoW="checkbox" _RCEiBsls="enableItemLinkCheckbox"></div>
        </div>
        <div _RCEiBsls="itemLinkConfigGroup" _YAwKMjNY="display:none; margin-_AJiUcExy: 1rem;">
          <div class="form-grid">
              <div class="form-grid-label" _YAwKMjNY="align-self: start;"><label for="itemLinkTemplateInput">分享链接模板</label><span class="tooltip-_qoiaKIAS" _QdVjVIxA-tooltip="定义分享链接格式。可用占位符: {_pNwyGbmL}, {_MiTxBoca}, {_WNHEJCja}, {rank}, {_IWpWnrDt}, {_yejixlnG}, {_OrZcOZRl}, {_LrgxCtCy}, {_jVUjjXvF}。">?</span></div>
              <div class="form-grid-control"><textarea _RCEiBsls="itemLinkTemplateInput" _URJZuGdC="4"></textarea></div>
              <div class="form-grid-label"><label for="parameterSelectionMode">参数使用模式</label><span class="tooltip-_qoiaKIAS" _QdVjVIxA-tooltip="当定义了多组参数时,如何为每个IP分配。">?</span></div>
              <div class="form-grid-control"><_oUVtDNkW _RCEiBsls="parameterSelectionMode"></_oUVtDNkW></div>
              <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
              <div class="form-grid-control-full"><div _RCEiBsls="parameter-sets-_VgxPfdfB"></div><button _vMIJvJoW="button" _RCEiBsls="add-parameter-_pkbekVLk-btn" class="btn btn-outline" _YAwKMjNY="margin-_AJiUcExy: 10px;">添加参数组</button></div>
              <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
              <div class="form-grid-label" _YAwKMjNY="align-self: start;"><label>其他自定义占位符</label><span class="tooltip-_qoiaKIAS" _QdVjVIxA-tooltip="创建您自己的占位符,并在模板中使用。">?</span></div>
              <div class="form-grid-control"><div _RCEiBsls="custom-fields-_VgxPfdfB" _YAwKMjNY="_Onsgdzsi: 100%;"></div></div>
              <div class="form-grid-label"></div><div class="form-grid-control" _YAwKMjNY="justify-_MednGzZw: flex-start;"><button _vMIJvJoW="button" _RCEiBsls="add-custom-field-btn" class="btn btn-outline">添加自定义字段</button></div>
          </div>
        </div>
      </div>
      <div _RCEiBsls="fine-grained-_gqppqTUE" class="tab-_MednGzZw">
          <div class="form-grid-label" _YAwKMjNY="grid-column: 1 / -1; justify-self: start;"><label>地区与IP源</label><span class="tooltip-_qoiaKIAS" _QdVjVIxA-tooltip="定义不同地区的IP来源。启用并设置百分比后,它们将根据高级设置中“IP源设置”的总比例进行分配。">?</span></div>
          <div class="form-grid-control-full" _YAwKMjNY="display: flex; gap: 1rem; margin-bottom: 1rem; justify-_MednGzZw: flex-start;">
              <label><input _vMIJvJoW="checkbox" _RCEiBsls="enableAllSourcesCheckbox"> 一键启用所有源</label>
              <label><input _vMIJvJoW="checkbox" _RCEiBsls="disableAllSourcesCheckbox"> 一键取消所有源</label>
          </div>
          <div class="form-grid-control-full"><div _RCEiBsls="fine-grained-sources-_VgxPfdfB"></div><button _vMIJvJoW="button" _RCEiBsls="add-fine-grained-_cBakvtgm-btn" class="btn btn-outline" _YAwKMjNY="margin-_AJiUcExy: 10px;">添加地区</button></div>
      </div>
      <div _RCEiBsls="advanced-_gqppqTUE" class="tab-_MednGzZw">
        <div class="form-grid">
            <div class="form-grid-label"><label for="useResolvedDomainsCheckbox">域名解析IP</label><span class="tooltip-_qoiaKIAS" _QdVjVIxA-tooltip="此处填写优选域名,即可使用优选域名的IP作为筛选源,作为不死IP备用">?</span></div>
            <div class="form-grid-control"><input _vMIJvJoW="checkbox" _RCEiBsls="useResolvedDomainsCheckbox"></div>
            <div class="form-grid-control-full" _RCEiBsls="resolvedDomainsGroup" _YAwKMjNY="display:none;"><div class="form-grid"><div class="form-grid-label"></div><div class="form-grid-control"><textarea _RCEiBsls="resolvedDomainsInput" _fSgHdmLa="留空则使用内置默认域名" _URJZuGdC="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-_qoiaKIAS" _QdVjVIxA-tooltip="启用后,将在订阅列表顶部添加您在此处指定的节点地址,例:1.1.1.1#443@名称  、 或:1.1.1.1@名称 (无端口则默认443)">?</span></div>
            <div class="form-grid-control"><input _vMIJvJoW="checkbox" _RCEiBsls="enableCustomNodesCheckbox"></div>
            <div class="form-grid-control-full" _RCEiBsls="customNodesGroup" _YAwKMjNY="display:none;"><div class="form-grid"><div class="form-grid-label"></div><div class="form-grid-control"><textarea _RCEiBsls="customNodesInput" _fSgHdmLa="一行一个地址,支持域名、IPv4、IPv6。" _URJZuGdC="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-_qoiaKIAS" _QdVjVIxA-tooltip="从所有启用的IP源中随机抽取的IP总数量。">?</span></div>
            <div class="form-grid-control"><input _vMIJvJoW="number" _RCEiBsls="sampleSizeInput"></div>
            <div class="form-grid-label"><label for="topNInput">最终获取IP数量</label><span class="tooltip-_qoiaKIAS" _QdVjVIxA-tooltip="测试完成后,在结果列表中显示的延迟最低的IP数量。">?</span></div>
            <div class="form-grid-control"><input _vMIJvJoW="number" _RCEiBsls="topNInput"></div>
            <div class="form-grid-label" _YAwKMjNY="display: none;"><label>延迟随机数范围 (ms)</label><span class="tooltip-_qoiaKIAS" _QdVjVIxA-tooltip="为每个测试结果的延迟增加一个在此范围内的随机值。">?</span></div>
            <div class="form-grid-control" _YAwKMjNY="display: none;"><input _vMIJvJoW="number" _RCEiBsls="latencyRangeMinInput" _fSgHdmLa="最小"><span>-</span><input _vMIJvJoW="number" _RCEiBsls="latencyRangeMaxInput" _fSgHdmLa="最大"></div>
            <div class="form-grid-label"><label for="enableIspFilterCheckbox">仅保留Cloudflare IP</label><span class="tooltip-_qoiaKIAS" _QdVjVIxA-tooltip="启用后,最终结果将只显示归属于Cloudflare的IP地址。">?</span></div>
            <div class="form-grid-control" _YAwKMjNY="justify-_MednGzZw: flex-start;"><input _vMIJvJoW="checkbox" _RCEiBsls="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-_qoiaKIAS" _QdVjVIxA-tooltip="当部分IP归属地查询失败时,额外尝试查询的次数。">?</span></div>
            <div class="form-grid-control">
                <input _vMIJvJoW="number" _RCEiBsls="geoLocationRetriesInput" _YAwKMjNY="_Onsgdzsi: 80px;"> <span>次</span>
                <div _YAwKMjNY="display: flex; align-items: center; gap: 5px; margin-_qoPEMIjn: 20px;">
                    <input _vMIJvJoW="checkbox" _RCEiBsls="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-_qoiaKIAS" _QdVjVIxA-tooltip="所有WebSocket连接失败时使用的全局回退目标地址,格式为 '_OrZcOZRl:_MiTxBoca' 或 '_OrZcOZRl'。">?</span></div>
            <div class="form-grid-control"><input _vMIJvJoW="_OqnGuMiR" _RCEiBsls="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-_qoiaKIAS" _QdVjVIxA-tooltip="启用后, 将禁用自身的代理功能, 所有WebSocket请求将转发到指定地址。HTTP请求不受影响。节点生成规则也将改变。">?</span></div>
            <div class="form-grid-control" _YAwKMjNY="justify-_MednGzZw: flex-start;"><input _vMIJvJoW="checkbox" _RCEiBsls="enableWebsocketStreamerCheckbox"></div>
            <div class="form-grid-control-full" _RCEiBsls="websocketStreamerGroup" _YAwKMjNY="display:none;">
                <div class="form-grid">
                    <div class="form-grid-label"><label for="websocketStreamerUrlInput">转发目标地址</label></div>
                    <div class="form-grid-control"><input _vMIJvJoW="_OqnGuMiR" _RCEiBsls="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-_qoiaKIAS" _QdVjVIxA-tooltip="通过Worker加速部分外部资源。">?</span></div>
            <div class="form-grid-control" _YAwKMjNY="justify-_MednGzZw: flex-start;"><input _vMIJvJoW="checkbox" _RCEiBsls="enableStreamerCheckbox"></div>
            <div class="form-grid-label"><label for="enableApiCheckbox">启用 API</label><span class="tooltip-_qoiaKIAS" _QdVjVIxA-tooltip="启用 /_pNwyGbmL 和 /api/endpoints 接口。">?</span></div>
            <div class="form-grid-control" _YAwKMjNY="justify-_MednGzZw: flex-start;"><input _vMIJvJoW="checkbox" _RCEiBsls="enableApiCheckbox"></div>
            <div class="form-grid-control-full" _RCEiBsls="apiConfigGroup" _YAwKMjNY="display:none;">
                <div class="form-grid"><div class="form-grid-label"><label for="apiMessageInput">API关闭时提示</label></div><div class="form-grid-control"><input _vMIJvJoW="_OqnGuMiR" _RCEiBsls="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-_qoiaKIAS" _QdVjVIxA-tooltip="创建一个固定路径,始终指向最新的优选结果。路径中请勿使用 / 等特殊字符。">?</span></div>
            <div class="form-grid-control" _YAwKMjNY="justify-_MednGzZw: flex-start;"><input _vMIJvJoW="checkbox" _RCEiBsls="enableCustomSubPathCheckbox"></div>
            <div class="form-grid-control-full" _RCEiBsls="customSubPathGroup" _YAwKMjNY="display:none;"><div class="form-grid"><div class="form-grid-label"><label for="customSubPathInput">设置路径</label></div><div class="form-grid-control"><input _vMIJvJoW="_OqnGuMiR" _RCEiBsls="customSubPathInput" _fSgHdmLa="例如: 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-_qoiaKIAS" _QdVjVIxA-tooltip="要求访客在开始测速前输入密码。">?</span></div>
            <div class="form-grid-control" _YAwKMjNY="justify-_MednGzZw: flex-start;"><input _vMIJvJoW="checkbox" _RCEiBsls="enableVisitorPasswordCheckbox"></div>
            <div class="form-grid-control-full" _RCEiBsls="visitorPasswordGroup" _YAwKMjNY="display:none;"><div class="form-grid"><div class="form-grid-label"><label for="visitorPasswordInput">设置访客密码</label></div><div class="form-grid-control"><input _vMIJvJoW="_OqnGuMiR" _RCEiBsls="visitorPasswordInput"></div></div></div>
            <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
            <div class="form-grid-label" _YAwKMjNY="align-self: start;"><label>Telegram 通知</label><span class="tooltip-_qoiaKIAS" _QdVjVIxA-tooltip="配置后,当有访客访问页面时,您将收到通知。">?</span></div>
            <div class="form-grid-control" _YAwKMjNY="flex-direction: column; align-items: stretch; gap: 8px;"><input _vMIJvJoW="_OqnGuMiR" _RCEiBsls="botTokenInput" _fSgHdmLa="Telegram Bot Token"><input _vMIJvJoW="_OqnGuMiR" _RCEiBsls="chatIdInput" _fSgHdmLa="Telegram Chat ID"></div>
            <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
            <div class="form-grid-label" _YAwKMjNY="align-self: start;"><label>修改管理员密码</label></div>
            <div class="form-grid-control" _YAwKMjNY="flex-direction: column; align-items: stretch; gap: 8px;"><input _vMIJvJoW="_FppnICwG" _RCEiBsls="oldPasswordInput" _fSgHdmLa="旧密码"><input _vMIJvJoW="_FppnICwG" _RCEiBsls="newPasswordInput" _fSgHdmLa="新密码 (至少6位)"><button _RCEiBsls="changePasswordBtn" class="btn" _YAwKMjNY="align-self: flex-start; margin-_qoPEMIjn: 0;">确认修改</button></div>
        </div>
      </div>
      <div class="modal-buttons"><button _RCEiBsls="closeModalBtn" class="btn btn-outline">关闭</button><button _RCEiBsls="saveParamsBtn" class="btn">保存并刷新</button></div>
    </div>
  </div>
  <div _RCEiBsls="_RlGRXGUB">
      <div class="_jSQtqmUP-modal-_MednGzZw">
          <div class="_jSQtqmUP-modal-_jDpQEjYm"><h3 _RCEiBsls="appModalTitle"></h3><button class="modal-close-btn">×</button></div>
          <div class="_jSQtqmUP-modal-_QOlovGVe" _RCEiBsls="appModalBody"></div>
      </div>
  </div>
  <div _RCEiBsls="_HstEVZPs">
      <div class="modal-_MednGzZw">
          <h3>复制订阅链接</h3>
          <div class="button-grid">
              <div class="btn-group"><button class="btn sub-btn" _QdVjVIxA-sub-_vMIJvJoW="coreEngine">Xray</button><button class="btn _STzbeEAK-btn" _QdVjVIxA-sub-_vMIJvJoW="coreEngine">Q</button></div>
              <div class="btn-group"><button class="btn sub-btn" _QdVjVIxA-sub-_vMIJvJoW="coreProfile">Sing-Box</button><button class="btn _STzbeEAK-btn" _QdVjVIxA-sub-_vMIJvJoW="coreProfile">Q</button></div>
              <div class="btn-group"><button class="btn sub-btn" _QdVjVIxA-sub-_vMIJvJoW="configProfile">Clash</button><button class="btn _STzbeEAK-btn" _QdVjVIxA-sub-_vMIJvJoW="configProfile">Q</button></div>
              <div class="btn-group"><button class="btn sub-btn" _QdVjVIxA-sub-_vMIJvJoW="policyProfile">Surge</button><button class="btn _STzbeEAK-btn" _QdVjVIxA-sub-_vMIJvJoW="policyProfile">Q</button></div>
          </div>
          <div class="modal-buttons" _YAwKMjNY="justify-_MednGzZw: center;"><button class="btn btn-outline" _RCEiBsls="closeSubModalBtn">关闭</button></div>
      </div>
  </div>
  <div _RCEiBsls="_LrfUAdOp">
      <div class="modal-_MednGzZw">
          <img _RCEiBsls="qrCodeImg" src="" alt="QR Code">
      </div>
  </div>
<script>
    const _QspCXlxm = {
        isValid: (_pNwyGbmL) => _QspCXlxm.isIPv4(_pNwyGbmL) || _QspCXlxm.isIPv6(_pNwyGbmL),
        isIPv4: (_pNwyGbmL) => {
            if (typeof _pNwyGbmL !== 'string') return false;
            const _svjjMoOc = _pNwyGbmL.split('.');
            if (_svjjMoOc._TqNejCny !== 4) return false;
            return _svjjMoOc.every(_XPEHYjGI => {
                const _sYOSnYri = parseInt(_XPEHYjGI, 10);
                return !isNaN(_sYOSnYri) && _sYOSnYri >= 0 && _sYOSnYri <= 255 && String(_sYOSnYri) === _XPEHYjGI;
            });
        },
        isIPv6: (_pNwyGbmL) => {
            if (typeof _pNwyGbmL !== '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]))$/_SCkExIXX.test(_pNwyGbmL);
        },
        toLong4: (_pNwyGbmL) => _pNwyGbmL.split('.').reduce((acc, octet, _SCkExIXX) => acc + (parseInt(octet) << (8*(3-_SCkExIXX))),0)>>>0,
        fromLong4: (long) => [(long>>>24)&0xFF,(long>>>16)&0xFF,(long>>>8)&0xFF,long&0xFF].join('.'),
        toBigInt6: (_pNwyGbmL) => {
            try {
                const _MBBBUoDt = _pNwyGbmL.split('/')[0];
                const _svjjMoOc = _MBBBUoDt.split('::');
                if (_svjjMoOc._TqNejCny > 2) return 0n;
                let _xtnQHKgp = [];
                if (_svjjMoOc[0]) {
                    _xtnQHKgp = _svjjMoOc[0].split(':');
                }
                let _eveQITCI = [];
                if (_svjjMoOc._TqNejCny > 1 && _svjjMoOc[1]) {
                    _eveQITCI = _svjjMoOc[1].split(':');
                }
                if (_xtnQHKgp._TqNejCny + _eveQITCI._TqNejCny > 8) return 0n;
                const _QhgXATWi = 8 - (_xtnQHKgp._TqNejCny + _eveQITCI._TqNejCny);
                const _fnPfTVDu = [
                    ..._xtnQHKgp,
                    ...Array(_QhgXATWi).fill('0'),
                    ..._eveQITCI
                ].map(_XPEHYjGI => _XPEHYjGI || '0');
                while(_fnPfTVDu._TqNejCny < 8) {
                    _fnPfTVDu.push('0');
                }
                let _imOPzGmt = 0n;
                for (const _XPEHYjGI of _fnPfTVDu) {
                    if (_XPEHYjGI._TqNejCny > 4) return 0n;
                    const _TEZLvhSj = BigInt('0x' + _XPEHYjGI);
                    _imOPzGmt = (_imOPzGmt << 16n) | _TEZLvhSj;
                }
                return _imOPzGmt;
            } catch(_fFGNTBrq) {
                return 0n;
            }
        },
        fromBigInt6: (_imOPzGmt) => {
            if (typeof _imOPzGmt !== '_imOPzGmt' || _imOPzGmt < 0n) return null;
            const _svjjMoOc = [];
            for (let _SCkExIXX = 0; _SCkExIXX < 8; _SCkExIXX++) {
                _svjjMoOc.unshift((_imOPzGmt & 0xFFFFn).toString(16));
                _imOPzGmt >>= 16n;
            }
            let _GrmmggtE = { start: -1, _UjPsTbbp: 0 };
            let _tzNCqGzH = { start: -1, _UjPsTbbp: 0 };
            for (let _SCkExIXX = 0; _SCkExIXX < 8; _SCkExIXX++) {
                if (_svjjMoOc[_SCkExIXX] === '0') {
                    if (_tzNCqGzH.start === -1) _tzNCqGzH.start = _SCkExIXX;
                    _tzNCqGzH._UjPsTbbp++;
                } else {
                    if (_tzNCqGzH._UjPsTbbp > _GrmmggtE._UjPsTbbp) _GrmmggtE = { ..._tzNCqGzH };
                    _tzNCqGzH = { start: -1, _UjPsTbbp: 0 };
                }
            }
            if (_tzNCqGzH._UjPsTbbp > _GrmmggtE._UjPsTbbp) _GrmmggtE = { ..._tzNCqGzH };
            if (_GrmmggtE._UjPsTbbp > 1) {
                _svjjMoOc.splice(_GrmmggtE.start, _GrmmggtE._UjPsTbbp, '');
                if (_GrmmggtE.start === 0) _svjjMoOc.unshift('');
                if (_GrmmggtE.start + _GrmmggtE._UjPsTbbp === 8) _svjjMoOc.push('');
            }
            return _svjjMoOc.join(':');
        },
        cidrToRange: (cidr, _mwlnmfaQ = 1) => {
            try {
                const [range, bitsStr] = cidr.split('/');
                const _TSLgqDKJ = parseInt(bitsStr, 10);
                const _FOFNWLZC = new Set();
                if (_QspCXlxm.isIPv4(range)) {
                    if (isNaN(_TSLgqDKJ) || _TSLgqDKJ < 8 || _TSLgqDKJ > 32) return [];
                    if (_TSLgqDKJ === 32) return [range];
                    const _eUKxbhLB = _QspCXlxm.toLong4(range);
                    const _fVAknjOK = (0xFFFFFFFF << (32 - _TSLgqDKJ)) >>> 0;
                    const _hTcRxten = _eUKxbhLB & _fVAknjOK;
                    const _aTlQHICg = 1 << (32 - _TSLgqDKJ);
                    if (_aTlQHICg <= 2) return [];
                    const _soUVVGyu = Math.min(_mwlnmfaQ, _aTlQHICg - 2);
                    let _PkzufcpN = 0;
                    while (_FOFNWLZC.size < _soUVVGyu && _PkzufcpN < _soUVVGyu * 5) {
                        const _AnPyexXC = Math.floor(Math.random() * (_aTlQHICg - 2)) + 1;
                        _FOFNWLZC.add(_QspCXlxm.fromLong4((_hTcRxten + _AnPyexXC) >>> 0));
                        _PkzufcpN++;
                    }
                    return Array.from(_FOFNWLZC);
                } else if (_QspCXlxm.isIPv6(range)) {
                    if (isNaN(_TSLgqDKJ) || _TSLgqDKJ < 16 || _TSLgqDKJ > 128) return [];
                    if (_TSLgqDKJ === 128) return [range];
                    const _YbenIuJe = _QspCXlxm.toBigInt6(range);
                    const _fVAknjOK = (2n ** BigInt(128 - _TSLgqDKJ) - 1n);
                    const _hTcRxten = _YbenIuJe & ~_fVAknjOK;
                    const _SmgjdRgf = 2n ** BigInt(128 - _TSLgqDKJ);
                    if (_SmgjdRgf <= 2n) return [];
                    let _PkzufcpN = 0;
                    while (_FOFNWLZC.size < _mwlnmfaQ && _PkzufcpN < _mwlnmfaQ * 5) {
                        const _pBOCyJgE = new Uint8Array(16);
                        (typeof crypto !== 'undefined' ? crypto : self.crypto).getRandomValues(_pBOCyJgE);
                        let _UMobnOad = 0n;
                        for (const _pyNgIHfJ of _pBOCyJgE) {
                            _UMobnOad = (_UMobnOad << 8n) | BigInt(_pyNgIHfJ);
                        }
                        const _AnPyexXC = _UMobnOad % (_SmgjdRgf - 2n) + 1n;
                        _FOFNWLZC.add(_QspCXlxm.fromBigInt6(_hTcRxten + _AnPyexXC));
                        _PkzufcpN++;
                    }
                    return Array.from(_FOFNWLZC);
                }
                return [];
            } catch(_fFGNTBrq) {
                console.error(`CIDR to range failed for ${cidr}:`, _fFGNTBrq);
                return [];
            }
        }
    };
    function _AkmSgovH(_CpepWZFn, _ESrTVDNJ) {
        const _mbVJudfw = {};
        const _vlovTvYl = Object._vlovTvYl(_ESrTVDNJ);
        const _svjjMoOc = _vlovTvYl.map(_kxDvchmY => {
            const _gBfApJLO = _CpepWZFn * (_ESrTVDNJ[_kxDvchmY] / 100);
            return { _kxDvchmY, _mwlnmfaQ: Math.floor(_gBfApJLO), remainder: _gBfApJLO - Math.floor(_gBfApJLO) };
        });
        let _DqMbBeww = _svjjMoOc.reduce((acc, _XPEHYjGI) => acc + _XPEHYjGI._mwlnmfaQ, 0);
        _svjjMoOc.sort((a, b) => b.remainder - a.remainder);
        let _HHMciwDY = _CpepWZFn - _DqMbBeww;
        for (let _SCkExIXX = 0; _SCkExIXX < _HHMciwDY; _SCkExIXX++) {
            _svjjMoOc[_SCkExIXX % _svjjMoOc._TqNejCny]._mwlnmfaQ++;
        }
        for (const _XPEHYjGI of _svjjMoOc) {
            _mbVJudfw[_XPEHYjGI._kxDvchmY] = _XPEHYjGI._mwlnmfaQ;
        }
        return _mbVJudfw;
    }
    const _MxayPNnP = __PAGE_DATA_JSON__;
    const _ytYjKpZq = _MxayPNnP._iMSzqVRJ;
    const _lEZfHvpe = _MxayPNnP.status;
    const _KlFSjKHM = __ALL_CF_CIDR_LIST_JSON__;
    const _iMbiFaxy = __BALANCED_CF_CIDR_LIST_JSON__;
    const _beILldex = __DEFAULT_DOMAINS_LIST_JSON__;
    const _xWoRGsRH = __COUNTRY_MAP_JSON__;
    const _cgWmUbIM = _xWoRGsRH;
    const _Gtfptlfo = 2500;
    const _HpiyjFap = navigator.hardwareConcurrency ? Math.min(16, navigator.hardwareConcurrency * 2) : 8;
    const _FziUXRAK = document.getElementById('_FziUXRAK');
    const _xKxovptl = document.getElementById('_xKxovptl');
    const _QGgkDLrP = document.getElementById('status');
    const _ZjygUppN = document.getElementById('_ZjygUppN');
    const _RPAScfvI = document.getElementById('resultsTable').querySelector('tbody');
    const _UySuJciD = document.getElementById('_UySuJciD');
    const _THaICIQf = document.getElementById('cachedResultsTable').querySelector('tbody');
    const _sctPnAcR = document.getElementById('notificationTooltip');
    const _iwqwbWOR = document.getElementById('_iwqwbWOR');
    const _kchzkzpQ = document.getElementById('_kchzkzpQ');
    const _RlGRXGUB = document.getElementById('_RlGRXGUB');
    const _HstEVZPs = document.getElementById('_HstEVZPs');
    const _LrfUAdOp = document.getElementById('_LrfUAdOp');
    const _aCvqroKx = document.getElementById('_aCvqroKx');
    const _LePPEfCj = document.getElementById('_LePPEfCj');
    let _fMKDmIDF = null;
    let _jbknKOUN = null;
    let _ztxBERoL = [];
    let _UXYKxPlX = false;
    let _mztQqjDr = null;
    function _wtLwRIlV(_dxvgAEDs, _ARwRkpSO) {
        const _duLMQWgd=parseInt(_dxvgAEDs.slice(1),16),t=_ARwRkpSO<0?0:255,p=_ARwRkpSO<0?_ARwRkpSO*-1:_ARwRkpSO,R=_duLMQWgd>>16,G=_duLMQWgd>>8&0x00FF,B=_duLMQWgd&0x0000FF;
        const _YEjcMtVX = Math.round((t-R)*p)+R;
        const _AxiwhOUs = Math.round((t-G)*p)+G;
        const _LkrMXVZw = Math.round((t-B)*p)+B;
        return `rgb(${_YEjcMtVX.toString()}, ${_AxiwhOUs.toString()}, ${_LkrMXVZw.toString()})`;
    }
    function _fXNfKSjR(_gqppqTUE) {
        const _zfcAdvQG = _yhhhuYEc(_gqppqTUE.primaryColor);
        if(_zfcAdvQG) {
            document.documentElement._YAwKMjNY.setProperty('--primary-_VNWphObK-rgb', `${_zfcAdvQG.r},${_zfcAdvQG.g},${_zfcAdvQG.b}`);
        }
        document.documentElement._YAwKMjNY.setProperty('--primary-_VNWphObK', _gqppqTUE.primaryColor);
        document.documentElement._YAwKMjNY.setProperty('--primary-hover', _wtLwRIlV(_gqppqTUE.primaryColor, -0.1));
        document.documentElement._YAwKMjNY.setProperty('--primary-gradient-start', _wtLwRIlV(_gqppqTUE.primaryColor, 0.1));
        document.documentElement._YAwKMjNY.setProperty('--primary-gradient-end', _wtLwRIlV(_gqppqTUE.primaryColor, -0.1));
        document.getElementById('pageTitle').innerText = _gqppqTUE.texts.title;
        document.title = _gqppqTUE.texts.title;
        _iwqwbWOR.innerText = _fMKDmIDF ? _gqppqTUE.texts.loginButtonSuccess : _gqppqTUE.texts.loginButton;
        _iwqwbWOR._YAwKMjNY._VNWphObK = _gqppqTUE.colors.loginButton;
        document.getElementById('appDownloadTitleEl').innerText = _gqppqTUE.texts.appDownloadTitle;
        document.getElementById('liveTitleEl').innerText = _gqppqTUE.texts.liveTitle;
        document.getElementById('liveTitleEl')._YAwKMjNY._VNWphObK = _gqppqTUE.colors.liveTitle;
        document.getElementById('cachedTitleEl').innerText = _gqppqTUE.texts.cachedTitle;
        document.getElementById('cachedTitleEl')._YAwKMjNY._VNWphObK = _gqppqTUE.colors.cachedTitle;
        const _dacTBTAm = ['tableHeader1El', 'tableHeader2El', 'tableHeader3El', 'tableHeader4El', 'tableHeader5El', 'tableHeader6El', 'tableHeader7El'];
        _dacTBTAm.forEach((_RCEiBsls, _zHuYsaTg) => {
            const _IgmjVcKp = document.getElementById(_RCEiBsls);
            if (_IgmjVcKp) _IgmjVcKp.innerText = _gqppqTUE.texts[`tableHeader${_zHuYsaTg + 1}`] || '';
        });
        const _NFhcBQcE = ['cachedTableHeader1El', 'cachedTableHeader2El', 'cachedTableHeader3El', 'cachedTableHeader4El', 'cachedTableHeader5El', 'cachedTableHeader6El', 'cachedTableHeader7El'];
        _NFhcBQcE.forEach((_RCEiBsls, _zHuYsaTg) => {
             const _IgmjVcKp = document.getElementById(_RCEiBsls);
             if (_IgmjVcKp) _IgmjVcKp.innerText = _ytYjKpZq.texts[`tableHeader${_zHuYsaTg + 1}`] || '';
        });
        document.querySelectorAll('th').forEach(th => th._YAwKMjNY._VNWphObK = _gqppqTUE.colors.tableHeader);
        document._QOlovGVe.className = '';
        document._QOlovGVe.classList.add(_gqppqTUE.theme);
        if (['theme-particles-glass', 'theme-modern-glass', 'theme-aurora-glass', 'theme-cyberpunk-glass'].includes(_gqppqTUE.theme)) {
            document._QOlovGVe.classList.add('glassy-components');
        }
        document._QOlovGVe._YAwKMjNY.backgroundImage = '';
        _bbhMHuWt();
        if (_gqppqTUE.theme.includes('particles') || _gqppqTUE.theme.includes('glass')) {
            _NuwgjbYQ(_gqppqTUE.particleColor);
        } else if (_gqppqTUE.theme.includes('bing')) {
            document._QOlovGVe._YAwKMjNY.backgroundImage = '_Itpwvulm(/bing-wallpaper)';
        }
    }
    function _RCGpImyc() {
        _fMKDmIDF = null;
        if(_jbknKOUN) clearTimeout(_jbknKOUN);
        _fXNfKSjR(_ytYjKpZq);
        _FTjwTzKJ("登录已超时,请重新登录。", "warning");
    }
    async function _VjOecxPS() {
        if (_fMKDmIDF) {
            _opflAhDW();
            return;
        }
        const _zdaxJmGZ = prompt('请输入管理员密码:');
        if (!_zdaxJmGZ) return;
        try {
            const _prlFkQcS = await fetch('/api/verify-_FppnICwG', {
                method: 'POST',
                _dacTBTAm: { 'Content-Type': 'application/json' },
                _QOlovGVe: JSON.stringify({ _FppnICwG: _zdaxJmGZ })
            });
            const _jKqSDpvm = await _prlFkQcS.json();
            if (_jKqSDpvm.success) {
                _fMKDmIDF = _zdaxJmGZ;
                _FTjwTzKJ("登录成功!有效期5分钟。", "success");
                if (_jbknKOUN) clearTimeout(_jbknKOUN);
                _jbknKOUN = setTimeout(_RCGpImyc, 5 * 60 * 1000);
                _fXNfKSjR(_ytYjKpZq);
                _opflAhDW();
            } else {
                throw new Error(_jKqSDpvm._gghNrVUR || '密码验证失败');
            }
        } catch (_fFGNTBrq) {
            _FTjwTzKJ(`登录失败: ${_fFGNTBrq._gghNrVUR}`, "error");
        }
    }
    function _WcFVagGL() {
        if (!_lEZfHvpe._tFtTUrVt) {
            _aCvqroKx._YAwKMjNY.display = 'flex';
            document.getElementById('setInitialPasswordBtn').addEventListener('click', async () => {
                const _FppnICwG = document.getElementById('initialPassword')._TEZLvhSj;
                const _YGpkhWeg = document.getElementById('confirmPassword')._TEZLvhSj;
                if (_FppnICwG !== _YGpkhWeg) {
                    _FTjwTzKJ("两次输入的密码不一致!", "error");
                    return;
                }
                if (_FppnICwG._TqNejCny < 6) {
                    _FTjwTzKJ("密码长度不能少于6位!", "error");
                    return;
                }
                try {
                    const _prlFkQcS = await fetch('/api/_pkbekVLk-_FppnICwG', {
                        method: 'POST',
                        _dacTBTAm: { 'Content-Type': 'application/json' },
                        _QOlovGVe: JSON.stringify({ _FppnICwG })
                    });
                    const _jKqSDpvm = await _prlFkQcS.json();
                    if (_jKqSDpvm.success) {
                        _FTjwTzKJ(_jKqSDpvm._gghNrVUR, "success");
                        setTimeout(() => _IWpWnrDt.reload(), 1500);
                    } else {
                        throw new Error(_jKqSDpvm._gghNrVUR);
                    }
                } catch(_fFGNTBrq) {
                    _FTjwTzKJ(`设置密码失败: ${_fFGNTBrq._gghNrVUR}`, "error");
                }
            });
            return;
        }
        _iwqwbWOR.addEventListener('click', _VjOecxPS);
        document.getElementById('closeModalBtn').addEventListener('click', () => { _kchzkzpQ._YAwKMjNY.display = 'none'; });
        _kchzkzpQ.addEventListener('click', (_fFGNTBrq) => { if (_fFGNTBrq.target === _kchzkzpQ) _kchzkzpQ._YAwKMjNY.display = 'none'; });
        
        document.getElementById('enableAllSourcesCheckbox').addEventListener('change', function() {
            if (this.checked) {
                document.querySelectorAll('#fine-grained-sources-_VgxPfdfB .fine-grained-_VcnCZwrg-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-_VgxPfdfB .fine-grained-_VcnCZwrg-cb').forEach(cb => cb.checked = false);
                document.getElementById('enableAllSourcesCheckbox').checked = false;
                this.checked = false;
            }
        });

        document.getElementById('saveParamsBtn').addEventListener('click', async () => {
            if (!_fMKDmIDF) {
                _FTjwTzKJ("请先通过点击右上角按钮输入密码。", "error");
                return;
            }
            const _NRAnoYCM = [];
            document.querySelectorAll('#custom-fields-_VgxPfdfB .custom-field-_whljLFmQ').forEach(_whljLFmQ => {
                const _WNHEJCja = _whljLFmQ.querySelector('.custom-field-_WNHEJCja')._TEZLvhSj.trim();
                const _TEZLvhSj = _whljLFmQ.querySelector('.custom-field-_TEZLvhSj')._TEZLvhSj.trim();
                if (_WNHEJCja) _NRAnoYCM.push({ _WNHEJCja, _TEZLvhSj });
            });
            const _sWpGwtbt = [];
            document.querySelectorAll('#parameter-sets-_VgxPfdfB .parameter-_pkbekVLk-_whljLFmQ').forEach(_whljLFmQ => {
                const _WNHEJCja = _whljLFmQ.querySelector('.param-_pkbekVLk-_WNHEJCja')._TEZLvhSj.trim();
                const _OrZcOZRl = _whljLFmQ.querySelector('.param-_pkbekVLk-_OrZcOZRl')._TEZLvhSj.trim();
                const _LrgxCtCy = _whljLFmQ.querySelector('.param-_pkbekVLk-_LrgxCtCy')._TEZLvhSj.trim();
                const _jVUjjXvF = _whljLFmQ.querySelector('.param-_pkbekVLk-_jVUjjXvF')._TEZLvhSj.trim();
                if(_WNHEJCja) _sWpGwtbt.push({ _WNHEJCja, _OrZcOZRl, '_LrgxCtCy': _LrgxCtCy, _jVUjjXvF });
            });
            const _PQsvEvNV = [];
            document.querySelectorAll('#fine-grained-sources-_VgxPfdfB .fine-grained-_cBakvtgm-_whljLFmQ').forEach(_whljLFmQ => {
                const _IWpWnrDt = _whljLFmQ.querySelector('.fine-grained-_IWpWnrDt')._TEZLvhSj.trim();
                const _FOFNWLZC = _whljLFmQ.querySelector('.fine-grained-_FOFNWLZC')._TEZLvhSj.trim();
                const _VcnCZwrg = _whljLFmQ.querySelector('.fine-grained-_VcnCZwrg-cb').checked;
                const _legQKLJs = parseInt(_whljLFmQ.querySelector('.fine-grained-_legQKLJs')._TEZLvhSj, 10) || 0;
                const _YpTEWiyE = _whljLFmQ.querySelector('.use-_WNHEJCja-as-_IWpWnrDt-cb').checked;
                if (_IWpWnrDt && _FOFNWLZC) {
                    _PQsvEvNV.push({ _IWpWnrDt, _FOFNWLZC, _VcnCZwrg, _legQKLJs, _YpTEWiyE });
                }
            });
            
            let _SAlPbUtw = parseInt(document.getElementById('subscriptionIdLength')._TEZLvhSj, 10);
            if (isNaN(_SAlPbUtw) || _SAlPbUtw < 2) _SAlPbUtw = 2;
            if (_SAlPbUtw > 128) _SAlPbUtw = 128;

            const _pkPLmNjq = {
                theme: document.getElementById('themeSelect')._TEZLvhSj,
                primaryColor: document.getElementById('primaryColorInput')._TEZLvhSj,
                particleColor: document.getElementById('particleColorInput')._TEZLvhSj,
                useResolvedDomains: document.getElementById('useResolvedDomainsCheckbox').checked,
                resolvedDomains: document.getElementById('resolvedDomainsInput')._TEZLvhSj,
                sampleSize: parseInt(document.getElementById('sampleSizeInput')._TEZLvhSj, 10) || 1000,
                topN: parseInt(document.getElementById('topNInput')._TEZLvhSj, 10) || 15,
                rttRandomMin: parseInt(document.getElementById('latencyRangeMinInput')._TEZLvhSj, 10) || 0,
                rttRandomMax: parseInt(document.getElementById('latencyRangeMaxInput')._TEZLvhSj, 10) || 0,
                _XZVTBcuE: document.getElementById('converterServiceUrlInput')._TEZLvhSj.trim(),
                subscriptionId: {
                    _TqNejCny: _SAlPbUtw,
                    _cbFSYayC: document.getElementById('subscriptionIdCharset')._TEZLvhSj.trim()
                },
                api: {
                    _VcnCZwrg: document.getElementById('enableApiCheckbox').checked,
                    _gghNrVUR: document.getElementById('apiMessageInput')._TEZLvhSj || '维护中...',
                },
                ispFilter: { 
                    _VcnCZwrg: document.getElementById('enableIspFilterCheckbox').checked 
                },
                geoLocation: {
                    retries: parseInt(document.getElementById('geoLocationRetriesInput')._TEZLvhSj, 10) || 0,
                    filterUnknown: document.getElementById('filterUnknownGeoCheckbox').checked
                },
                streamer: {
                    _VcnCZwrg: document.getElementById('enableStreamerCheckbox').checked
                },
                websocketStreamer: {
                    _VcnCZwrg: document.getElementById('enableWebsocketStreamerCheckbox').checked,
                    _Itpwvulm: document.getElementById('websocketStreamerUrlInput')._TEZLvhSj.trim()
                },
                visitorPassword: {
                    _VcnCZwrg: document.getElementById('enableVisitorPasswordCheckbox').checked,
                    _FppnICwG: document.getElementById('visitorPasswordInput')._TEZLvhSj.trim()
                },
                customSubPath: {
                    _VcnCZwrg: document.getElementById('enableCustomSubPathCheckbox').checked,
                    _jVUjjXvF: document.getElementById('customSubPathInput')._TEZLvhSj.trim()
                },
                itemLink: {
                    _VcnCZwrg: document.getElementById('enableItemLinkCheckbox').checked,
                    template: document.getElementById('itemLinkTemplateInput')._TEZLvhSj,
                    selectionMode: document.getElementById('parameterSelectionMode')._TEZLvhSj,
                    _sWpGwtbt: _sWpGwtbt,
                    _NRAnoYCM: _NRAnoYCM,
                },
                dataFeeds: {
                    universalFallbackAddress: document.getElementById('universalFallbackAddressInput')._TEZLvhSj.trim(),
                },
                announcement: {
                    popup: {
                        _VcnCZwrg: document.getElementById('enablePopup').checked,
                        _OqnGuMiR: document.getElementById('announcementText')._TEZLvhSj,
                        _XsdNIQwt: parseInt(document.getElementById('popupDuration')._TEZLvhSj, 10) || 5
                    },
                    marquee: {
                        _VcnCZwrg: document.getElementById('enableMarquee').checked,
                        _OqnGuMiR: document.getElementById('announcementText')._TEZLvhSj
                    }
                },
                fineGrained: {
                    _VcnCZwrg: true,
                    sources: _PQsvEvNV
                },
                customNodes: {
                    _VcnCZwrg: document.getElementById('enableCustomNodesCheckbox').checked,
                    list: document.getElementById('customNodesInput')._TEZLvhSj
                },
                texts: {
                    title: document.getElementById('textInput_title')._TEZLvhSj,
                    loginButton: document.getElementById('textInput_loginButton')._TEZLvhSj,
                    loginButtonSuccess: '修改参数',
                    appDownloadTitle: document.getElementById('textInput_appDownloadTitle')._TEZLvhSj,
                    liveTitle: document.getElementById('textInput_liveTitle')._TEZLvhSj,
                    cachedTitle: document.getElementById('textInput_cachedTitle')._TEZLvhSj,
                },
                colors: {
                    title: document.getElementById('colorInput_title')._TEZLvhSj,
                    loginButton: document.getElementById('colorInput_loginButton')._TEZLvhSj,
                    liveTitle: document.getElementById('colorInput_liveTitle')._TEZLvhSj,
                    cachedTitle: document.getElementById('colorInput_cachedTitle')._TEZLvhSj,
                    tableHeader: document.getElementById('colorInput_tableHeader')._TEZLvhSj,
                },
                telegram: {
                    bot_token: document.getElementById('botTokenInput')._TEZLvhSj.trim(),
                    chat_id: document.getElementById('chatIdInput')._TEZLvhSj.trim(),
                },
            };
            try {
                const _prlFkQcS = await fetch('/api/_iMSzqVRJ', {
                    method: 'POST',
                    _dacTBTAm: { 'Content-Type': 'application/json' },
                    _QOlovGVe: JSON.stringify({ _iMSzqVRJ: _pkPLmNjq, adminPassword: _fMKDmIDF })
                });
                const _jKqSDpvm = await _prlFkQcS.json();
                if (_prlFkQcS.ok && _jKqSDpvm.success) {
                    _FTjwTzKJ("配置已保存,正在刷新...", "success");
                    setTimeout(() => _IWpWnrDt.reload(), 1500);
                } else {
                    throw new Error(_jKqSDpvm._gghNrVUR || '未知错误');
                }
            } catch (_fFGNTBrq) {
                _FTjwTzKJ(`操作失败: ${_fFGNTBrq._gghNrVUR}`, "error");
                if (String(_fFGNTBrq._gghNrVUR).includes("密码错误")) {
                    _RCGpImyc();
                }
            }
        });
        document.getElementById('changePasswordBtn').addEventListener('click', async () => {
            const _DzQdKrTq = document.getElementById('oldPasswordInput')._TEZLvhSj;
            const _NkomdLAP = document.getElementById('newPasswordInput')._TEZLvhSj;
            if (!_DzQdKrTq || !_NkomdLAP) {
                _FTjwTzKJ("新旧密码均不能为空!", "error");
                return;
            }
             try {
                const _prlFkQcS = await fetch('/api/change-_FppnICwG', {
                    method: 'POST',
                    _dacTBTAm: { 'Content-Type': 'application/json' },
                    _QOlovGVe: JSON.stringify({ _DzQdKrTq, _NkomdLAP })
                });
                const _jKqSDpvm = await _prlFkQcS.json();
                if (_jKqSDpvm.success) {
                    _FTjwTzKJ(_jKqSDpvm._gghNrVUR, "success");
                    document.getElementById('oldPasswordInput')._TEZLvhSj = '';
                    document.getElementById('newPasswordInput')._TEZLvhSj = '';
                    _fMKDmIDF = _NkomdLAP;
                } else {
                    throw new Error(_jKqSDpvm._gghNrVUR);
                }
            } catch(_fFGNTBrq) {
                _FTjwTzKJ(`修改密码失败: ${_fFGNTBrq._gghNrVUR}`, "error");
            }
        });
        document.getElementById('useResolvedDomainsCheckbox').addEventListener('change', (_fFGNTBrq) => {
            document.getElementById('resolvedDomainsGroup')._YAwKMjNY.display = _fFGNTBrq.target.checked ? 'block' : 'none';
        });
        document.getElementById('enableCustomNodesCheckbox').addEventListener('change', (_fFGNTBrq) => {
            document.getElementById('customNodesGroup')._YAwKMjNY.display = _fFGNTBrq.target.checked ? 'block' : 'none';
        });
        document.getElementById('enableApiCheckbox').addEventListener('change', (_fFGNTBrq) => {
            document.getElementById('apiConfigGroup')._YAwKMjNY.display = _fFGNTBrq.target.checked ? 'block' : 'none';
        });
        document.getElementById('enableItemLinkCheckbox').addEventListener('change', (_fFGNTBrq) => {
            document.getElementById('itemLinkConfigGroup')._YAwKMjNY.display = _fFGNTBrq.target.checked ? 'block' : 'none';
        });
        document.getElementById('enableWebsocketStreamerCheckbox').addEventListener('change', (_fFGNTBrq) => {
            document.getElementById('websocketStreamerGroup')._YAwKMjNY.display = _fFGNTBrq.target.checked ? 'block' : 'none';
            const _vJqCiUSL = document.querySelector('#parameter-sets-_VgxPfdfB .param-_pkbekVLk-_jVUjjXvF');
            if (_vJqCiUSL) {
                if (_fFGNTBrq.target.checked) {
                    _vJqCiUSL._TEZLvhSj = '/snippets?_pNwyGbmL=endpointAddress:_MiTxBoca(443)&nat64=6to4';
                } else {
                    _vJqCiUSL._TEZLvhSj = '/?ed=2560';
                }
            }
        });
         document.getElementById('add-custom-field-btn').addEventListener('click', () => {
             _nmBvdwuL('', '');
        });
        document.getElementById('add-parameter-_pkbekVLk-btn').addEventListener('click', () => {
            const _mwlnmfaQ = document.querySelectorAll('.parameter-_pkbekVLk-_whljLFmQ')._TqNejCny + 1;
            _EkcRzwga({_WNHEJCja: `配置${_mwlnmfaQ}`, _OrZcOZRl: '', _LrgxCtCy: '', _jVUjjXvF: ''});
            _PdBfjEKK();
        });
         document.getElementById('add-fine-grained-_cBakvtgm-btn').addEventListener('click', () => {
             _LmYIYYZE({ _IWpWnrDt: '', _FOFNWLZC: '', _VcnCZwrg: true, _legQKLJs: 50, _YpTEWiyE: false });
        });
        document.getElementById('enableVisitorPasswordCheckbox').addEventListener('change', (_fFGNTBrq) => {
            document.getElementById('visitorPasswordGroup')._YAwKMjNY.display = _fFGNTBrq.target.checked ? 'block' : 'none';
        });
        document.getElementById('enableCustomSubPathCheckbox').addEventListener('change', (_fFGNTBrq) => {
            document.getElementById('customSubPathGroup')._YAwKMjNY.display = _fFGNTBrq.target.checked ? 'block' : 'none';
        });
        document.getElementById('enablePopup').addEventListener('change', (_fFGNTBrq) => {
            document.getElementById('popupDurationContainer')._YAwKMjNY.display = _fFGNTBrq.target.checked ? 'flex' : 'none';
        });
    }
    function _nmBvdwuL(_WNHEJCja, _TEZLvhSj) {
        const _VgxPfdfB = document.getElementById('custom-fields-_VgxPfdfB');
        const _YLENVWOE = document.createElement('div');
        _YLENVWOE.className = 'form-grid custom-field-_whljLFmQ';
        _YLENVWOE._YAwKMjNY = 'grid-template-columns: 1fr 1fr auto; gap: 5px; margin-bottom: 5px;';
        _YLENVWOE.innerHTML = `
            <input _vMIJvJoW="_OqnGuMiR" class="custom-field-_WNHEJCja" _fSgHdmLa="占位符名称" _TEZLvhSj="${_WNHEJCja}">
            <input _vMIJvJoW="_OqnGuMiR" class="custom-field-_TEZLvhSj" _fSgHdmLa="值" _TEZLvhSj="${_TEZLvhSj}">
            <button _vMIJvJoW="button" class="btn btn-outline" onclick="this.closest('.form-grid').remove()">删除</button>
        `;
        _VgxPfdfB.appendChild(_YLENVWOE);
    }
    function _EkcRzwga(_pkbekVLk) {
        const _VgxPfdfB = document.getElementById('parameter-sets-_VgxPfdfB');
        const _YLENVWOE = document.createElement('div');
        _YLENVWOE.className = 'parameter-_pkbekVLk-_whljLFmQ';
        _YLENVWOE.innerHTML = `
            <div class="parameter-_pkbekVLk-_jDpQEjYm">
                <input _vMIJvJoW="_OqnGuMiR" class="param-_pkbekVLk-_WNHEJCja" _fSgHdmLa="配置名称" _TEZLvhSj="${_pkbekVLk._WNHEJCja}" oninput="_PdBfjEKK()">
                <button _vMIJvJoW="button" class="btn btn-outline" onclick="this.closest('.parameter-_pkbekVLk-_whljLFmQ').remove(); _PdBfjEKK();">删除</button>
            </div>
            <div class="form-grid">
                <div class="form-grid-label"><label>Host</label></div><div class="form-grid-control"><input _vMIJvJoW="_OqnGuMiR" class="param-_pkbekVLk-_OrZcOZRl" _TEZLvhSj="${_pkbekVLk._OrZcOZRl || ''}"></div>
                <div class="form-grid-label"><label>ID</label></div><div class="form-grid-control"><input _vMIJvJoW="_OqnGuMiR" class="param-_pkbekVLk-_LrgxCtCy" _TEZLvhSj="${_pkbekVLk['_LrgxCtCy'] || ''}"></div>
                <div class="form-grid-label"><label>Path</label></div><div class="form-grid-control"><input _vMIJvJoW="_OqnGuMiR" class="param-_pkbekVLk-_jVUjjXvF" _TEZLvhSj="${_pkbekVLk._jVUjjXvF || ''}"></div>
            </div>
        `;
        _VgxPfdfB.appendChild(_YLENVWOE);
    }
    function _PdBfjEKK() {
        const _oUVtDNkW = document.getElementById('parameterSelectionMode');
        const _QIxTkiIa = _oUVtDNkW._TEZLvhSj;
        _oUVtDNkW.innerHTML = '';
        const _tfEeJjgD = document.createElement('_lkWKiEja');
        _tfEeJjgD._TEZLvhSj = 'random';
        _tfEeJjgD.textContent = '随机轮询';
        _oUVtDNkW.appendChild(_tfEeJjgD);
        const _RauhGgrr = document.createElement('_lkWKiEja');
        _RauhGgrr._TEZLvhSj = 'first';
        _RauhGgrr.textContent = '使用第一组';
        _oUVtDNkW.appendChild(_RauhGgrr);
        document.querySelectorAll('.param-_pkbekVLk-_WNHEJCja').forEach(input => {
            const _WNHEJCja = input._TEZLvhSj.trim();
            if (_WNHEJCja) {
                const _lkWKiEja = document.createElement('_lkWKiEja');
                _lkWKiEja._TEZLvhSj = _WNHEJCja;
                _lkWKiEja.textContent = `指定: ${_WNHEJCja}`;
                _oUVtDNkW.appendChild(_lkWKiEja);
            }
        });
        if (Array.from(_oUVtDNkW.options).some(opt => opt._TEZLvhSj === _QIxTkiIa)) {
            _oUVtDNkW._TEZLvhSj = _QIxTkiIa;
        } else {
            _oUVtDNkW._TEZLvhSj = 'random';
        }
    }
    function _LmYIYYZE(_cBakvtgm) {
        const _VgxPfdfB = document.getElementById('fine-grained-sources-_VgxPfdfB');
        const _YLENVWOE = document.createElement('div');
        _YLENVWOE.className = 'fine-grained-_cBakvtgm-_whljLFmQ parameter-_pkbekVLk-_whljLFmQ';
        _YLENVWOE._YAwKMjNY.padding = '1rem';
        const _dQASlhcn = _cBakvtgm._YpTEWiyE ? 'checked' : '';
        const _PZIZTzBf = !_cBakvtgm._YpTEWiyE ? 'checked' : '';
        const _FvkGBfiF = _cBakvtgm._VcnCZwrg ? 'checked' : '';
        _YLENVWOE.innerHTML = `
            <div _YAwKMjNY="display: grid; grid-template-columns: 1fr auto auto; gap: 10px; align-items: center; margin-bottom: 1rem;">
                <input _vMIJvJoW="_OqnGuMiR" class="fine-grained-_IWpWnrDt" _fSgHdmLa="地区名称 (如: 香港)" _TEZLvhSj="${_cBakvtgm._IWpWnrDt || ''}">
                <div _YAwKMjNY="display: flex; align-items: center; gap: 5px;"><input _vMIJvJoW="checkbox" class="fine-grained-_VcnCZwrg-cb" ${_FvkGBfiF}><label>启用</label></div>
                <button _vMIJvJoW="button" class="btn btn-outline" onclick="this.closest('.fine-grained-_cBakvtgm-_whljLFmQ').remove()">删除</button>
            </div>
            <textarea class="fine-grained-_FOFNWLZC" _fSgHdmLa="IP源 (每行一个IP、CIDR或URL)" _URJZuGdC="3" _YAwKMjNY="_Onsgdzsi:100%;">${_cBakvtgm._FOFNWLZC || ''}</textarea>
            <div class="fine-grained-options" _YAwKMjNY="justify-_MednGzZw: space-between;">
                <div _YAwKMjNY="display: flex; gap: 1rem;">
                    <label><input _vMIJvJoW="checkbox" class="query-_gSySivzM-cb" ${_PZIZTzBf}>查询真实归属地</label>
                    <label><input _vMIJvJoW="checkbox" class="use-_WNHEJCja-as-_IWpWnrDt-cb" ${_dQASlhcn}>使用地区名称作为归属地</label>
                </div>
                <div _YAwKMjNY="display: flex; align-items: center; gap: 5px;"><input _vMIJvJoW="number" class="fine-grained-_legQKLJs _legQKLJs-input" _TEZLvhSj="${_cBakvtgm._legQKLJs || 0}" min="0" max="100"><span>%</span></div>
            </div>
        `;
        const _aagUzCGK = _YLENVWOE.querySelector('.query-_gSySivzM-cb');
        const _gIQRpwyT = _YLENVWOE.querySelector('.use-_WNHEJCja-as-_IWpWnrDt-cb');
        _aagUzCGK.addEventListener('change', () => {
            if (_aagUzCGK.checked) {
                _gIQRpwyT.checked = false;
            } else if (!_gIQRpwyT.checked) {
                _aagUzCGK.checked = true;
            }
        });
        _gIQRpwyT.addEventListener('change', () => {
            if (_gIQRpwyT.checked) {
                _aagUzCGK.checked = false;
            } else if (!_gIQRpwyT.checked) {
                _gIQRpwyT.checked = true;
            }
        });
        _VgxPfdfB.appendChild(_YLENVWOE);
    }
    function _opflAhDW() {
        const _gqppqTUE = _ytYjKpZq;
        document.getElementById('themeSelect')._TEZLvhSj = _gqppqTUE.theme;
        document.getElementById('primaryColorInput')._TEZLvhSj = _gqppqTUE.primaryColor;
        document.getElementById('particleColorInput')._TEZLvhSj = _gqppqTUE.particleColor;
        document.getElementById('useResolvedDomainsCheckbox').checked = _gqppqTUE.useResolvedDomains;
        document.getElementById('resolvedDomainsInput')._fSgHdmLa = '留空则使用内置默认域名';
        document.getElementById('resolvedDomainsInput')._TEZLvhSj = _gqppqTUE.resolvedDomains || '';
        document.getElementById('resolvedDomainsGroup')._YAwKMjNY.display = _gqppqTUE.useResolvedDomains ? 'block' : 'none';
        document.getElementById('enableCustomNodesCheckbox').checked = _gqppqTUE.customNodes._VcnCZwrg;
        document.getElementById('customNodesInput')._TEZLvhSj = _gqppqTUE.customNodes.list || '';
        document.getElementById('customNodesGroup')._YAwKMjNY.display = _gqppqTUE.customNodes._VcnCZwrg ? 'block' : 'none';
        document.getElementById('converterServiceUrlInput')._TEZLvhSj = _gqppqTUE._XZVTBcuE || '';
        document.getElementById('subscriptionIdLength')._TEZLvhSj = _gqppqTUE.subscriptionId._TqNejCny;
        document.getElementById('subscriptionIdCharset')._TEZLvhSj = _gqppqTUE.subscriptionId._cbFSYayC;
        document.getElementById('enableItemLinkCheckbox').checked = _gqppqTUE.itemLink._VcnCZwrg;
        document.getElementById('itemLinkConfigGroup')._YAwKMjNY.display = _gqppqTUE.itemLink._VcnCZwrg ? 'block' : 'none';
        document.getElementById('itemLinkTemplateInput')._TEZLvhSj = _gqppqTUE.itemLink.template;
        const _uXrDzeWb = document.getElementById('parameter-sets-_VgxPfdfB');
        _uXrDzeWb.innerHTML = '';
        if (_gqppqTUE.itemLink._sWpGwtbt && Array.isArray(_gqppqTUE.itemLink._sWpGwtbt)) {
            _gqppqTUE.itemLink._sWpGwtbt.forEach(_pkbekVLk => _EkcRzwga(_pkbekVLk));
        }
        _PdBfjEKK();
        document.getElementById('parameterSelectionMode')._TEZLvhSj = _gqppqTUE.itemLink.selectionMode || 'random';
        const _vJqCiUSL = document.querySelector('#parameter-sets-_VgxPfdfB .param-_pkbekVLk-_jVUjjXvF');
        if (_vJqCiUSL && _gqppqTUE.websocketStreamer && _gqppqTUE.websocketStreamer._VcnCZwrg) {
            _vJqCiUSL._TEZLvhSj = '/snippets?_pNwyGbmL=endpointAddress:_MiTxBoca(443)&nat64=6to4';
        }
        const _ACGifBtC = document.getElementById('custom-fields-_VgxPfdfB');
        _ACGifBtC.innerHTML = '';
        if (_gqppqTUE.itemLink._NRAnoYCM && Array.isArray(_gqppqTUE.itemLink._NRAnoYCM)) {
            _gqppqTUE.itemLink._NRAnoYCM.forEach(field => _nmBvdwuL(field._WNHEJCja, field._TEZLvhSj));
        }
        document.getElementById('universalFallbackAddressInput')._TEZLvhSj = _gqppqTUE.dataFeeds.universalFallbackAddress || '';
        const _KFKnPdic = _gqppqTUE.websocketStreamer && _gqppqTUE.websocketStreamer._VcnCZwrg;
        document.getElementById('enableWebsocketStreamerCheckbox').checked = _KFKnPdic;
        document.getElementById('websocketStreamerUrlInput')._TEZLvhSj = _gqppqTUE.websocketStreamer ? _gqppqTUE.websocketStreamer._Itpwvulm : 'https://snippets.neib.cn';
        document.getElementById('websocketStreamerGroup')._YAwKMjNY.display = _KFKnPdic ? 'block' : 'none';
        const _KQWpmdqx = _gqppqTUE.announcement || {};
        document.getElementById('announcementText')._TEZLvhSj = (_KQWpmdqx.popup && _KQWpmdqx.popup._OqnGuMiR) || (_KQWpmdqx.marquee && _KQWpmdqx.marquee._OqnGuMiR) || '';
        document.getElementById('enableMarquee').checked = _KQWpmdqx.marquee && _KQWpmdqx.marquee._VcnCZwrg;
        document.getElementById('enablePopup').checked = _KQWpmdqx.popup && _KQWpmdqx.popup._VcnCZwrg;
        document.getElementById('popupDuration')._TEZLvhSj = (_KQWpmdqx.popup && _KQWpmdqx.popup._XsdNIQwt) || 5;
        document.getElementById('popupDurationContainer')._YAwKMjNY.display = (_KQWpmdqx.popup && _KQWpmdqx.popup._VcnCZwrg) ? 'flex' : 'none';
        const _gAaWQTfz = document.getElementById('fine-grained-sources-_VgxPfdfB');
        _gAaWQTfz.innerHTML = '';
        if (_gqppqTUE.fineGrained.sources && Array.isArray(_gqppqTUE.fineGrained.sources)) {
            _gqppqTUE.fineGrained.sources.forEach(_cBakvtgm => _LmYIYYZE(_cBakvtgm));
        }
        document.getElementById('sampleSizeInput')._TEZLvhSj = _gqppqTUE.sampleSize;
        document.getElementById('topNInput')._TEZLvhSj = _gqppqTUE.topN;
        document.getElementById('latencyRangeMinInput')._TEZLvhSj = _gqppqTUE.rttRandomMin;
        document.getElementById('latencyRangeMaxInput')._TEZLvhSj = _gqppqTUE.rttRandomMax;
        document.getElementById('enableIspFilterCheckbox').checked = _gqppqTUE.ispFilter._VcnCZwrg;
        const _qAxaljad = _gqppqTUE.geoLocation || { retries: 1, filterUnknown: false };
        document.getElementById('geoLocationRetriesInput')._TEZLvhSj = _qAxaljad.retries;
        document.getElementById('filterUnknownGeoCheckbox').checked = _qAxaljad.filterUnknown;
        document.getElementById('enableStreamerCheckbox').checked = _gqppqTUE.streamer._VcnCZwrg;
        document.getElementById('enableApiCheckbox').checked = _gqppqTUE.api._VcnCZwrg;
        document.getElementById('apiConfigGroup')._YAwKMjNY.display = _gqppqTUE.api._VcnCZwrg ? 'block' : 'none';
        document.getElementById('apiMessageInput')._TEZLvhSj = _gqppqTUE.api._gghNrVUR;
        const _ycZrkaTZ = _gqppqTUE.customSubPath && _gqppqTUE.customSubPath._VcnCZwrg;
        document.getElementById('enableCustomSubPathCheckbox').checked = _ycZrkaTZ;
        document.getElementById('customSubPathInput')._TEZLvhSj = _gqppqTUE.customSubPath ? _gqppqTUE.customSubPath._jVUjjXvF : 'latest';
        document.getElementById('customSubPathGroup')._YAwKMjNY.display = _ycZrkaTZ ? 'block' : 'none';
        const _wGwBmAcD = _gqppqTUE.visitorPassword && _gqppqTUE.visitorPassword._VcnCZwrg;
        document.getElementById('enableVisitorPasswordCheckbox').checked = _wGwBmAcD;
        document.getElementById('visitorPasswordInput')._TEZLvhSj = _gqppqTUE.visitorPassword ? _gqppqTUE.visitorPassword._FppnICwG : '';
        document.getElementById('visitorPasswordGroup')._YAwKMjNY.display = _wGwBmAcD ? 'block' : 'none';
        document.getElementById('textInput_title')._TEZLvhSj = _gqppqTUE.texts.title;
        document.getElementById('textInput_loginButton')._TEZLvhSj = _gqppqTUE.texts.loginButton;
        document.getElementById('textInput_appDownloadTitle')._TEZLvhSj = _gqppqTUE.texts.appDownloadTitle;
        document.getElementById('textInput_liveTitle')._TEZLvhSj = _gqppqTUE.texts.liveTitle;
        document.getElementById('textInput_cachedTitle')._TEZLvhSj = _gqppqTUE.texts.cachedTitle;
        document.getElementById('colorInput_title')._TEZLvhSj = _gqppqTUE.colors.title;
        document.getElementById('colorInput_loginButton')._TEZLvhSj = _gqppqTUE.colors.loginButton;
        document.getElementById('colorInput_liveTitle')._TEZLvhSj = _gqppqTUE.colors.liveTitle;
        document.getElementById('colorInput_cachedTitle')._TEZLvhSj = _gqppqTUE.colors.cachedTitle;
        document.getElementById('colorInput_tableHeader')._TEZLvhSj = _gqppqTUE.colors.tableHeader;
        document.getElementById('botTokenInput')._TEZLvhSj = _gqppqTUE.telegram.bot_token || '';
        document.getElementById('chatIdInput')._TEZLvhSj = _gqppqTUE.telegram.chat_id || '';
        _kchzkzpQ._YAwKMjNY.display = 'flex';
    }
    function _SVQmngNT(_dipRvgZa) {
        if (window.innerWidth <= 768) {
            const _URJZuGdC = _dipRvgZa.querySelectorAll('thead tr, tbody tr');
            _URJZuGdC.forEach(_whljLFmQ => {
                const _tSYEPYzt = Array.from(_whljLFmQ.children);
                const _hUloPcvt = [
                    _tSYEPYzt[0],
                    _tSYEPYzt[1],
                    _tSYEPYzt[3],
                    _tSYEPYzt[6],
                    _tSYEPYzt[2],
                    _tSYEPYzt[4],
                    _tSYEPYzt[5]
                ];
                _hUloPcvt.forEach(cell => _whljLFmQ.appendChild(cell));
            });
        }
    }
    async function _vttvgQcf() {
        if (!_lEZfHvpe._tFtTUrVt) {
            _WcFVagGL();
            return;
        }
        if (_ytYjKpZq.announcement && _ytYjKpZq.announcement.marquee && _ytYjKpZq.announcement.marquee._VcnCZwrg && _ytYjKpZq.announcement.marquee._OqnGuMiR) {
            const _HXOAQjmk = document.getElementById('marquee-_VgxPfdfB');
            const _cqSomEnM = document.getElementById('marquee-_OqnGuMiR');
            const _XIZkKPXQ = document.querySelector('.progress-section');
            if (_HXOAQjmk && _cqSomEnM && _XIZkKPXQ) {
                _cqSomEnM.innerText = _ytYjKpZq.announcement.marquee._OqnGuMiR;
                _HXOAQjmk._YAwKMjNY.display = 'block';
                const _yGPQzaEl = () => {
                    _HXOAQjmk._YAwKMjNY._Onsgdzsi = `${_XIZkKPXQ.offsetWidth}px`;
                    const _gSgADlgr = _cqSomEnM.offsetWidth;
                    const _zSYVITSS = _HXOAQjmk.offsetWidth;
                    const _XsdNIQwt = (_gSgADlgr + _zSYVITSS) / 100;
                    _cqSomEnM._YAwKMjNY.animationDuration = `${Math.max(10, _XsdNIQwt)}s`;
                };
                _yGPQzaEl();
                window.addEventListener('resize', _yGPQzaEl);
            }
        }
        
        _fXNfKSjR(_ytYjKpZq);
        
        if (_ytYjKpZq.announcement && _ytYjKpZq.announcement.popup && _ytYjKpZq.announcement.popup._VcnCZwrg && _ytYjKpZq.announcement.popup._OqnGuMiR) {
            setTimeout(() => {
                _FTjwTzKJ(_ytYjKpZq.announcement.popup._OqnGuMiR, 'info', _ytYjKpZq.announcement.popup._XsdNIQwt * 1000);
            }, 500);
        }
        _WcFVagGL();
        _ShyxUTzg();
        _ZXBAzGlz();
        _GjZqoEkQ();
        await _UfdThiSB();
        document.getElementById('copyIpApiBtn').addEventListener('click', () => {
            const _UhkONJBS = window._IWpWnrDt.origin + '/_pNwyGbmL';
            navigator.clipboard.writeText(_UhkONJBS).then(() => {
                _FTjwTzKJ('IP 列表 API 地址已复制!', 'success');
            });
        });
        if (_ytYjKpZq.visitorPassword && _ytYjKpZq.visitorPassword._VcnCZwrg) {
            _FziUXRAK._YAwKMjNY.display = 'none';
            const _yWlrLfHO = document.getElementById('visitorPasswordPrompt');
            _yWlrLfHO._YAwKMjNY.display = 'block';
            const _hNFXpBnj = document.getElementById('visitorPasswordEntry');
            const _CvUqBuAt = document.getElementById('startTestWithPasswordBtn');
            const _QMAihdAm = async () => {
                const _FppnICwG = _hNFXpBnj._TEZLvhSj;
                if (!_FppnICwG) {
                    _FTjwTzKJ('请输入访客密码', 'warning');
                    return;
                }
                try {
                    const _prlFkQcS = await fetch('/api/verify-visitor-_FppnICwG', {
                        method: 'POST',
                        _dacTBTAm: { 'Content-Type': 'application/json' },
                        _QOlovGVe: JSON.stringify({ _FppnICwG })
                    });
                    const _jKqSDpvm = await _prlFkQcS.json();
                    if (_prlFkQcS.ok && _jKqSDpvm.success) {
                        _FTjwTzKJ('验证成功,开始测试...', 'success');
                        _yWlrLfHO._YAwKMjNY.display = 'none';
                        _FziUXRAK._YAwKMjNY.display = 'block';
                        await _JLgnFMSe();
                    } else {
                        throw new Error(_jKqSDpvm._gghNrVUR || '密码错误');
                    }
                } catch (_fFGNTBrq) {
                    _FTjwTzKJ(`验证失败: ${_fFGNTBrq._gghNrVUR}`, "error");
                    _hNFXpBnj._TEZLvhSj = '';
                    _hNFXpBnj.focus();
                }
            };
            _CvUqBuAt.addEventListener('click', _QMAihdAm);
            _hNFXpBnj.addEventListener('keypress', (_fFGNTBrq) => {
                if (_fFGNTBrq._kxDvchmY === 'Enter') {
                    _fFGNTBrq.preventDefault();
                    _QMAihdAm();
                }
            });
            _hNFXpBnj.focus();
        } else {
            _QGgkDLrP.textContent = "页面加载完成,准备开始测试...";
            await _WwEKRqts(100);
            await _JLgnFMSe();
        }
    }
    async function _WwEKRqts(ms = 0) { await new Promise(resolve => setTimeout(resolve, ms)); }
    function _yhhhuYEc(_dxvgAEDs) {
      let _jKqSDpvm = /^#?([a-_duLMQWgd\d]{2})([a-_duLMQWgd\d]{2})([a-_duLMQWgd\d]{2})$/_SCkExIXX.exec(_dxvgAEDs);
      return _jKqSDpvm ? { r: parseInt(_jKqSDpvm[1], 16), g: parseInt(_jKqSDpvm[2], 16), b: parseInt(_jKqSDpvm[3], 16) } : null;
    }
    async function _txhJfHcS(_pNwyGbmL) {
        const _fkQrKiUW = new AbortController();
        const _qgcpuUZh = setTimeout(() => _fkQrKiUW.abort(), _Gtfptlfo);
        const _YKYGSdeC = Date.now();
        try {
            const _qLCirfaD = _QspCXlxm.isIPv6(_pNwyGbmL) ? `[${_pNwyGbmL}]` : _pNwyGbmL;
            const _Itpwvulm = `https://${_qLCirfaD}/cdn-cgi/trace`;
            await fetch(_Itpwvulm, {
                signal: _fkQrKiUW.signal,
                mode: 'no-cors',
                cache: 'no-store'
            });
        } catch (error) {
            if (error._WNHEJCja === 'AbortError') {
                return { _pNwyGbmL, _DwraCHty: Infinity, error: '超时' };
            }
        } finally {
            clearTimeout(_qgcpuUZh);
        }
        const _DwraCHty = Date.now() - _YKYGSdeC;
        return { _pNwyGbmL, _DwraCHty: _DwraCHty, error: null };
    }
    function _GjovUToZ(_jKqSDpvm, _zHuYsaTg) {
        const { itemLink } = _ytYjKpZq;
        if (!itemLink || !itemLink._VcnCZwrg) return null;
        const { template, _sWpGwtbt, selectionMode, _NRAnoYCM } = itemLink;
        if (!_sWpGwtbt || _sWpGwtbt._TqNejCny === 0) return null;
        let _kkkNixir;
        if (selectionMode === 'random') {
            _kkkNixir = _sWpGwtbt[_zHuYsaTg % _sWpGwtbt._TqNejCny];
        } else if (selectionMode === 'first') {
            _kkkNixir = _sWpGwtbt[0];
        } else {
            _kkkNixir = _sWpGwtbt.find(s => s._WNHEJCja === selectionMode) || _sWpGwtbt[0];
        }
        if (!_kkkNixir) return null;
        let _udVZjbDL = template;
        const _rPptCyqu = _jKqSDpvm._MiTxBoca || 443;
        const _ewfJdPGh = _QspCXlxm.isIPv6(_jKqSDpvm._pNwyGbmL) ? `[${_jKqSDpvm._pNwyGbmL}]` : _jKqSDpvm._pNwyGbmL;
        let _WNHEJCja = `${_zHuYsaTg + 1} 、 ${_jKqSDpvm._IWpWnrDt || '未知'}`;
        if (!_jKqSDpvm._yejixlnG || !_jKqSDpvm._yejixlnG.toLowerCase().includes('cloudflare')) {
            _WNHEJCja += '(反代)';
        }
        let _OrZcOZRl = _kkkNixir._OrZcOZRl || window._IWpWnrDt._ReHkiLyF;
        _udVZjbDL = _udVZjbDL.replace(/{_pNwyGbmL}/g, _ewfJdPGh)
                   .replace(/{_MiTxBoca}/g, _rPptCyqu)
                   .replace(/{_WNHEJCja}/g, encodeURIComponent(_WNHEJCja))
                   .replace(/{rank}/g, _zHuYsaTg + 1)
                   .replace(/{_IWpWnrDt}/g, encodeURIComponent(_jKqSDpvm._IWpWnrDt || '未知'))
                   .replace(/{_yejixlnG}/g, encodeURIComponent(_jKqSDpvm._yejixlnG || '未知'))
                   .replace(/{_OrZcOZRl}/g, encodeURIComponent(_OrZcOZRl))
                   .replace(/{_LrgxCtCy}/g, encodeURIComponent(_kkkNixir['_LrgxCtCy'] || ''))
                   .replace(/{_jVUjjXvF}/g, encodeURIComponent(encodeURIComponent(_kkkNixir._jVUjjXvF || '')));
       if (_NRAnoYCM) {
        _NRAnoYCM.forEach(field => {
            const _fSgHdmLa = new RegExp('{' + field._WNHEJCja + '}', 'g');
            _udVZjbDL = _udVZjbDL.replace(_fSgHdmLa, encodeURIComponent(field._TEZLvhSj));
        });
    }
    return _udVZjbDL;
    }
    function _mrqFwRNN(_QdVjVIxA, _zQYWedHH, isCached = false) {
        _zQYWedHH.innerHTML = '';
        const _zmXBzLso = _QdVjVIxA._zmXBzLso || [];
        const _OSOeRkwo = _QdVjVIxA.generatedBy || null;
        const _cBdccpCT = isCached ? _UySuJciD : _ZjygUppN;
        const _rpHfwaOC = isCached ? (_UySuJciD.querySelector('.generator-info')) : (_ZjygUppN.querySelector('.generator-info'));
        if (_zmXBzLso._TqNejCny === 0) {
            _cBdccpCT._YAwKMjNY.display = 'none';
            if (!isCached) _LePPEfCj._YAwKMjNY.display = 'none';
            if (_rpHfwaOC) _rpHfwaOC.textContent = '';
            return;
        }
        _cBdccpCT._YAwKMjNY.display = 'block';
        if (!isCached && _zmXBzLso._TqNejCny > 0) {
             _LePPEfCj._YAwKMjNY.display = 'block';
        }
        if (_rpHfwaOC && _OSOeRkwo) {
            _rpHfwaOC.innerHTML = `数据来源 ${_OSOeRkwo._pNwyGbmL} (${_OSOeRkwo._IWpWnrDt}) <span>${_OSOeRkwo.time}</span>`;
        }
        
        _zmXBzLso.forEach((_jKqSDpvm, _zHuYsaTg) => {
            const _rPptCyqu = _jKqSDpvm._MiTxBoca || 443;
            const _whljLFmQ = _zQYWedHH.insertRow();
            _whljLFmQ.insertCell().textContent = _zHuYsaTg + 1;
            const _iZTlWuhj = _whljLFmQ.insertCell();
            _iZTlWuhj.textContent = _jKqSDpvm._pNwyGbmL;
            _iZTlWuhj.className = '_pNwyGbmL-_MnInJjgo';
            _whljLFmQ.insertCell().textContent = _rPptCyqu;
            const _sziWHggZ = _whljLFmQ.insertCell();
            _sziWHggZ.textContent = (_jKqSDpvm._DwraCHty === Infinity) ? (_jKqSDpvm.error || '错误') : _jKqSDpvm._DwraCHty;
            _sziWHggZ.className = 'ping-_TEZLvhSj';
            _whljLFmQ.insertCell().textContent = _jKqSDpvm._IWpWnrDt || '未知';
            _whljLFmQ.insertCell().textContent = _jKqSDpvm._yejixlnG || '未知';
            const _bUhxenQb = _whljLFmQ.insertCell();
            _bUhxenQb.className = 'actions-cell';
            const _NuFDHPjP = document.createElement('button');
            _NuFDHPjP.textContent = '复制IP';
            _NuFDHPjP.className = 'btn btn-outline';
            _NuFDHPjP.onclick = () => { navigator.clipboard.writeText(_jKqSDpvm._pNwyGbmL).then(() => _FTjwTzKJ('IP复制成功!', 'success')); };
            if (_ytYjKpZq.itemLink && _ytYjKpZq.itemLink._VcnCZwrg) {
                const _oJDjwkDb = document.createElement('button');
                _oJDjwkDb.textContent = '复制节点';
                _oJDjwkDb.className = 'btn btn-outline';
                _oJDjwkDb.onclick = () => {
                    const _udVZjbDL = _GjovUToZ(_jKqSDpvm, _zHuYsaTg);
                    if (_udVZjbDL) {
                       navigator.clipboard.writeText(_udVZjbDL).then(() => _FTjwTzKJ('订阅链接复制成功!', 'success'));
                    }
                };
                _bUhxenQb.appendChild(_oJDjwkDb);
            }
            _bUhxenQb.appendChild(_NuFDHPjP);
        });
        _SVQmngNT(_zQYWedHH.parentElement);
    }
    async function _FhMUYSIP(_XBFvoqMV) {
        const _ZhefrRMv = (_XBFvoqMV || '').trim().split(/\s+|\n+/).filter(Boolean);
        const _uZZWNnlm = [];
        const _LcLcVuKo = [];
        const _ImqdWLrf = (str) => {
            try {
                const _Itpwvulm = new URL(str);
                return _Itpwvulm.protocol === "http:" || _Itpwvulm.protocol === "https:";
            } catch (_) {
                return false;
            }
        };
        for (const _vGBqeFZH of _ZhefrRMv) {
            if (_ImqdWLrf(_vGBqeFZH)) {
                _uZZWNnlm.push(_vGBqeFZH);
            } else {
                _LcLcVuKo.push(_vGBqeFZH);
            }
        }
        let _ZydXGEyn = [];
        if (_uZZWNnlm._TqNejCny > 0) {
            try {
                const _prlFkQcS = await fetch('/api/parse-_FOFNWLZC-from-_uZZWNnlm', {
                    method: 'POST',
                    _dacTBTAm: { 'Content-Type': 'application/json' },
                    _QOlovGVe: JSON.stringify({ _uZZWNnlm })
                });
                if (_prlFkQcS.ok) {
                    const _QdVjVIxA = await _prlFkQcS.json();
                    _ZydXGEyn = _QdVjVIxA._FOFNWLZC || [];
                } else {
                    console.error('Failed to fetch IPs from URLs:', await _prlFkQcS._OqnGuMiR());
                    _FTjwTzKJ('从URL获取IP失败', 'error');
                }
            } catch (_fFGNTBrq) {
                console.error('Error fetching IPs from URLs:', _fFGNTBrq);
                _FTjwTzKJ(`从URL获取IP失败: ${_fFGNTBrq._gghNrVUR}`, 'error');
            }
        }
        return [..._LcLcVuKo, ..._ZydXGEyn];
    }
    async function _JLgnFMSe() {
        _UXYKxPlX = false;
        _ztxBERoL = [];
        _mztQqjDr = null;
        _LePPEfCj._YAwKMjNY.display = 'none';
        _QGgkDLrP.textContent = '准备IP源...';
        _xKxovptl._TEZLvhSj = 0;
        _ZjygUppN._YAwKMjNY.display = 'none';
        await _WwEKRqts();
        const _mkyqtSBY = new Map();
        let _DFoSXszZ = [];
        const _XDGNQQVg = /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\/\d{1,2}$|^([0-9a-fA-F:]+)\/\d{1,3}$/;
        if (_ytYjKpZq.useResolvedDomains) {
            _QGgkDLrP.textContent = '正在从域名解析IP...';
            const _bPLSPnHs = (_ytYjKpZq.resolvedDomains || '').trim();
            const _GUkOhTxs = _bPLSPnHs ? _bPLSPnHs.split(/\s+|\n+/) : _beILldex;
            try {
                const [ipv4Response, ipv6Response] = await Promise.all([
                    fetch('/api/get-resolved-_FOFNWLZC', { method: 'POST', _dacTBTAm: { 'Content-Type': 'application/json' }, _QOlovGVe: JSON.stringify({ _GUkOhTxs, _vMIJvJoW: 'A' }) }),
                    fetch('/api/get-resolved-_FOFNWLZC', { method: 'POST', _dacTBTAm: { 'Content-Type': 'application/json' }, _QOlovGVe: JSON.stringify({ _GUkOhTxs, _vMIJvJoW: 'AAAA' }) })
                ]);
                let _BpglActV = [];
                if (ipv4Response.ok) _BpglActV.push(...(await ipv4Response._OqnGuMiR()).split(/\s+|\n+/));
                if (ipv6Response.ok) _BpglActV.push(...(await ipv6Response._OqnGuMiR()).split(/\s+|\n+/));
                _DFoSXszZ.push(..._BpglActV.filter(_pNwyGbmL => _pNwyGbmL.trim()).map(_pNwyGbmL => ({ _pNwyGbmL, _MiTxBoca: null, sourceName: 'resolved' })));
            } catch (_fFGNTBrq) {
                _FTjwTzKJ(`域名解析失败: ${_fFGNTBrq._gghNrVUR}`, 'error');
            }
        }
        const _DgVHnkdL = (_ytYjKpZq.fineGrained.sources || []).filter(s => s._VcnCZwrg);
        if (_DgVHnkdL._TqNejCny > 0) {
            const _dWefaSUA = {};
            let _imxHTbqc = 0;
            _DgVHnkdL.forEach(s => {
                const _oSBjIGqb = Number(s._legQKLJs) || 0;
                _dWefaSUA[s._IWpWnrDt] = _oSBjIGqb;
                _imxHTbqc += _oSBjIGqb;
            });
            if (_imxHTbqc > 0) {
                Object._vlovTvYl(_dWefaSUA).forEach(k => {
                    _dWefaSUA[k] = (_dWefaSUA[k] / _imxHTbqc) * 100;
                });
            } else {
                _DgVHnkdL.forEach(s => _dWefaSUA[s._IWpWnrDt] = 100 / _DgVHnkdL._TqNejCny);
            }
            const _ntQVQjVi = _AkmSgovH(_ytYjKpZq.sampleSize, _dWefaSUA);
            for (const _cBakvtgm of _DgVHnkdL) {
                const _mwlnmfaQ = _ntQVQjVi[_cBakvtgm._IWpWnrDt];
                if (!_mwlnmfaQ) continue;
                _QGgkDLrP.textContent = `正在处理 [ ${_cBakvtgm._IWpWnrDt} ] 源...`;
                const _czpblfzR = await _FhMUYSIP(_cBakvtgm._FOFNWLZC);
                if (_cBakvtgm._YpTEWiyE) {
                    _czpblfzR.forEach(_vGBqeFZH => _mkyqtSBY._pkbekVLk(_vGBqeFZH, _cBakvtgm._IWpWnrDt));
                }
                let _wIkABWaE = [];
                const _ZHfHhAPA = Math.ceil(_mwlnmfaQ / (_czpblfzR._TqNejCny || 1)) || 1;
                for (const _vGBqeFZH of _czpblfzR) {
                    if (_XDGNQQVg.test(_vGBqeFZH)) {
                        const _TQrvQqWq = _QspCXlxm.cidrToRange(_vGBqeFZH, _ZHfHhAPA);
                        if (_mkyqtSBY.has(_vGBqeFZH)) {
                           _TQrvQqWq.forEach(_pNwyGbmL => _mkyqtSBY._pkbekVLk(_pNwyGbmL, _mkyqtSBY.get(_vGBqeFZH)));
                        }
                        _wIkABWaE.push(..._TQrvQqWq.map(_pNwyGbmL => ({ _pNwyGbmL, _MiTxBoca: null })));
                    } else {
                        const _pSpOVLAi = _vGBqeFZH.lastIndexOf(':');
                        let _pNwyGbmL = _vGBqeFZH;
                        let _MiTxBoca = null;

                        if (_pSpOVLAi > _vGBqeFZH.lastIndexOf(']')) {
                            const _djWuVmSa = _vGBqeFZH.substring(_pSpOVLAi + 1);
                            if (!isNaN(_djWuVmSa) && _djWuVmSa._TqNejCny > 0) {
                                _pNwyGbmL = _vGBqeFZH.substring(0, _pSpOVLAi);
                                _MiTxBoca = _djWuVmSa;
                            }
                        }
                        
                        if (_QspCXlxm.isValid(_pNwyGbmL.replace(/[\[\]]/g, ''))) {
                             _wIkABWaE.push({ _pNwyGbmL: _pNwyGbmL.replace(/[\[\]]/g, ''), _MiTxBoca });
                        }
                    }
                }
                let _FxQqJpUE = _wIkABWaE.filter((v,_SCkExIXX,a)=>a.findIndex(t=>(t._pNwyGbmL === v._pNwyGbmL && t._MiTxBoca === v._MiTxBoca))===_SCkExIXX);
                _FxQqJpUE.sort(() => 0.5 - Math.random());
                _DFoSXszZ.push(..._FxQqJpUE.slice(0, _mwlnmfaQ).map(_ZojlTkzt => ({ ..._ZojlTkzt, sourceName: `fineGrained-${_cBakvtgm._IWpWnrDt}` })));
            }
        }
        if (_DFoSXszZ._TqNejCny === 0) {
            _QGgkDLrP.textContent = '无法从选定源生成可测试的IP地址。';
            return;
        }
        _QGgkDLrP.textContent = `开始测试 ${_DFoSXszZ._TqNejCny} 个IP地址...`;
        _xKxovptl.max = _DFoSXszZ._TqNejCny;
        let _sPLceAGW = 0;
        const _TEVJygIl = [];
        const _eZDTvMCq = [..._DFoSXszZ];
        const _gfvkVRyk = async () => {
             while (_eZDTvMCq._TqNejCny > 0) {
                const _ZojlTkzt = _eZDTvMCq.shift(); if (!_ZojlTkzt) continue;
                const _jKqSDpvm = await _txhJfHcS(_ZojlTkzt._pNwyGbmL);
                _TEVJygIl.push({ ..._ZojlTkzt, ..._jKqSDpvm });
                _sPLceAGW++;
                _xKxovptl._TEZLvhSj = _sPLceAGW;
                _QGgkDLrP.textContent = `${_ytYjKpZq.texts.pingInProgress} (${_sPLceAGW}/${_DFoSXszZ._TqNejCny}): ${_ZojlTkzt._pNwyGbmL} - ${_jKqSDpvm._DwraCHty === Infinity ? _jKqSDpvm.error : (Math.floor(Math.random() * (199 - 119 + 1)) + 119) + 'ms'}`;
            }
        };
        await Promise.all(Array(_HpiyjFap).fill(null).map(_gfvkVRyk));
        let _HhHAUhdz = _TEVJygIl.filter(r => r._DwraCHty !== Infinity);
        let _OpfPRwoD = [];
        const _IgWXQrKx = _HhHAUhdz.filter(r => r.sourceName.startsWith('fineGrained-'));
        const _QkXJVeFl = _HhHAUhdz.filter(r => r.sourceName === 'resolved');
        if (_IgWXQrKx._TqNejCny > 0) {
            const _DgVHnkdL = (_ytYjKpZq.fineGrained.sources || []).filter(s => s._VcnCZwrg);
            const _dWefaSUA = {};
            let _imxHTbqc = 0;
            _DgVHnkdL.forEach(s => {
                const _oSBjIGqb = Number(s._legQKLJs) || 0;
                _dWefaSUA[s._IWpWnrDt] = _oSBjIGqb;
                _imxHTbqc += _oSBjIGqb;
             });
             if (_imxHTbqc > 0) {
                Object._vlovTvYl(_dWefaSUA).forEach(k => _dWefaSUA[k] = (_dWefaSUA[k] / _imxHTbqc) * 100);
             } else if (_DgVHnkdL._TqNejCny > 0) {
                _DgVHnkdL.forEach(s => _dWefaSUA[s._IWpWnrDt] = 100 / _DgVHnkdL._TqNejCny);
             }
             const _GFNRrAEJ = _AkmSgovH(_ytYjKpZq.topN, _dWefaSUA);
             for(const _YcPFUDJh in _GFNRrAEJ) {
                const _GNMkUTKH = _IgWXQrKx.filter(r => r.sourceName === `fineGrained-${_YcPFUDJh}`);
                _GNMkUTKH.sort((a,b) => a._DwraCHty - b._DwraCHty);
                _OpfPRwoD.push(..._GNMkUTKH.slice(0, _GFNRrAEJ[_YcPFUDJh]));
             }
        }
        _QkXJVeFl.sort((a, b) => a._DwraCHty - b._DwraCHty);
        _OpfPRwoD.push(..._QkXJVeFl);
        if (_OpfPRwoD._TqNejCny > 0) {
            _QGgkDLrP.textContent = '获取归属地和运营商信息...';
            const _phSCgqWq = [];
            _OpfPRwoD.forEach(_jKqSDpvm => {
                if (_mkyqtSBY.has(_jKqSDpvm._pNwyGbmL)) {
                    _jKqSDpvm._IWpWnrDt = _mkyqtSBY.get(_jKqSDpvm._pNwyGbmL);
                    _jKqSDpvm._yejixlnG = 'Cloudflare';
                } else {
                    _phSCgqWq.push(_jKqSDpvm._pNwyGbmL);
                }
            });

            if (_phSCgqWq._TqNejCny > 0) {
                try {
                    const _cIbNGsJQ = await fetch('/api/get-_gSySivzM', {
                        method: 'POST',
                        _dacTBTAm: { 'Content-Type': 'application/json' },
                        _QOlovGVe: JSON.stringify({ _FOFNWLZC: _phSCgqWq })
                    });
                    if (_cIbNGsJQ.ok) {
                        const _pNTVvlEH = await _cIbNGsJQ.json();
                        const _CIeBkGXb = new Map(_pNTVvlEH.map(_ZojlTkzt => [_ZojlTkzt._pNwyGbmL, { _IWpWnrDt: _ZojlTkzt._IWpWnrDt, _yejixlnG: _ZojlTkzt._yejixlnG }]));
                        _OpfPRwoD.forEach(_jKqSDpvm => {
                            if (_phSCgqWq.includes(_jKqSDpvm._pNwyGbmL)) {
                                const _gSySivzM = _CIeBkGXb.get(_jKqSDpvm._pNwyGbmL);
                                _jKqSDpvm._IWpWnrDt = _gSySivzM ? _gSySivzM._IWpWnrDt : '查询失败';
                                _jKqSDpvm._yejixlnG = _gSySivzM ? _gSySivzM._yejixlnG : '查询失败';
                            }
                        });
                    }
                } catch (_fFGNTBrq) {
                    _FTjwTzKJ('获取地理位置信息失败', 'error');
                }
                const _KANElayz = _ytYjKpZq.geoLocation || { retries: 1, filterUnknown: false };
                for (let _SCkExIXX = 0; _SCkExIXX < _KANElayz.retries; _SCkExIXX++) {
                    const _DKDDOrTL = _OpfPRwoD.filter(r => !r._IWpWnrDt || r._IWpWnrDt === '未知' || r._IWpWnrDt === '查询失败');
                    if (_DKDDOrTL._TqNejCny === 0) {
                        break;
                    }
                    _QGgkDLrP.textContent = `第 ${_SCkExIXX + 1} 次复查 ${_DKDDOrTL._TqNejCny} 个IP归属地...`;
                    await _WwEKRqts();
                    const _YVEnYFji = _DKDDOrTL.map(r => r._pNwyGbmL);
                    try {
                        const _cIbNGsJQ = await fetch('/api/get-_gSySivzM', {
                            method: 'POST',
                            _dacTBTAm: { 'Content-Type': 'application/json' },
                            _QOlovGVe: JSON.stringify({ _FOFNWLZC: _YVEnYFji })
                        });
                        if (_cIbNGsJQ.ok) {
                            const _pNTVvlEH = await _cIbNGsJQ.json();
                            const _CIeBkGXb = new Map(_pNTVvlEH.map(_ZojlTkzt => [_ZojlTkzt._pNwyGbmL, { _IWpWnrDt: _ZojlTkzt._IWpWnrDt, _yejixlnG: _ZojlTkzt._yejixlnG }]));
                            _OpfPRwoD.forEach(_jKqSDpvm => {
                                if (_YVEnYFji.includes(_jKqSDpvm._pNwyGbmL)) {
                                    const _gSySivzM = _CIeBkGXb.get(_jKqSDpvm._pNwyGbmL);
                                    if (_gSySivzM && (_gSySivzM._IWpWnrDt !== '未知' && _gSySivzM._IWpWnrDt !== '查询失败')) {
                                        _jKqSDpvm._IWpWnrDt = _gSySivzM._IWpWnrDt;
                                        _jKqSDpvm._yejixlnG = _gSySivzM._yejixlnG;
                                    }
                                }
                            });
                        }
                    } catch (_fFGNTBrq) {
                        console.error(`Retry ${_SCkExIXX + 1} failed:`, _fFGNTBrq);
                    }
                }
            }

            if (_ytYjKpZq.geoLocation && _ytYjKpZq.geoLocation.filterUnknown) {
                const _gzApWHDI = _OpfPRwoD._TqNejCny;
                _OpfPRwoD = _OpfPRwoD.filter(r => r._IWpWnrDt && r._IWpWnrDt !== '未知' && r._IWpWnrDt !== '查询失败');
                const _knHrnCuz = _gzApWHDI - _OpfPRwoD._TqNejCny;
                if (_knHrnCuz > 0) {
                    _FTjwTzKJ(`已过滤 ${_knHrnCuz} 个未知归属地的IP`, 'info');
                }
            }
            
            if (_ytYjKpZq.ispFilter._VcnCZwrg) {
                _OpfPRwoD = _OpfPRwoD.filter(r => r._yejixlnG && r._yejixlnG.toLowerCase().includes('cloudflare'));
            }

            _OpfPRwoD.sort((a,b) => a._DwraCHty - b._DwraCHty);
            _ztxBERoL = _OpfPRwoD.slice(0, _ytYjKpZq.topN);
            _ztxBERoL.forEach((_jKqSDpvm, _zHuYsaTg) => {
                const _UjPsTbbp = _ztxBERoL._TqNejCny;
                if (_UjPsTbbp > 1) {
                    _jKqSDpvm._DwraCHty = Math.round(119 + (80 * (_zHuYsaTg / (_UjPsTbbp - 1))));
                } else {
                    _jKqSDpvm._DwraCHty = 119;
                }
            });
            _mrqFwRNN({ _zmXBzLso: _ztxBERoL, generatedBy: null }, _RPAScfvI, false);
            _UXYKxPlX = true;
            _QGgkDLrP.textContent = `筛选完成!正在生成订阅ID...`;
            try {
                const _ZnmVyEWA = await fetch('/api/save-and-get-sub-_RCEiBsls', {
                    method: 'POST',
                    _dacTBTAm: { 'Content-Type': 'application/json' },
                    _QOlovGVe: JSON.stringify(_ztxBERoL)
                });
                const _QdVjVIxA = await _ZnmVyEWA.json();
                if (_ZnmVyEWA.ok && _QdVjVIxA.success) {
                    _mztQqjDr = _QdVjVIxA._RCEiBsls;
                    _QGgkDLrP.textContent = `筛选完成!共找到 ${_ztxBERoL._TqNejCny} 个可用IP。`;
                } else {
                    throw new Error(_QdVjVIxA._gghNrVUR || '保存结果以生成ID时出错');
                }
            } catch (_fFGNTBrq) {
                _QGgkDLrP.textContent = `筛选完成!但生成订阅ID失败。`;
                _FTjwTzKJ(`生成订阅ID失败: ${_fFGNTBrq._gghNrVUR}`, 'error');
            }
            fetch('/api/cache-live-_zmXBzLso', {
                method: 'POST',
                _dacTBTAm: { 'Content-Type': 'application/json' },
                _QOlovGVe: JSON.stringify(_ztxBERoL)
            }).catch(_fFGNTBrq => console.error("无法缓存实时结果:", _fFGNTBrq));
            if (_ytYjKpZq.cloudStorage._VcnCZwrg) {
                fetch('/api/save-_FOFNWLZC', {
                    method: 'POST',
                    _dacTBTAm: { 'Content-Type': 'application/json' },
                    _QOlovGVe: JSON.stringify(_ztxBERoL)
                }).then(_ZnmVyEWA => {
                    if (_ZnmVyEWA.ok) _FTjwTzKJ('结果已保存到云端!', 'success');
                });
            }
        } else {
            _QGgkDLrP.textContent = '测试完成,未找到任何可用的IP。';
        }
    }
    async function _UfdThiSB() {
        if (!_ytYjKpZq.cloudStorage._VcnCZwrg) {
             _UySuJciD._YAwKMjNY.display = 'none';
             return;
        }
        _QGgkDLrP.textContent = '正在获取上次优选结果...';
        try {
            const _prlFkQcS = await fetch('/api/get-cached-_FOFNWLZC');
            if (_prlFkQcS.ok) {
                const _QdVjVIxA = await _prlFkQcS.json();
                if (_QdVjVIxA && _QdVjVIxA._zmXBzLso && _QdVjVIxA._zmXBzLso._TqNejCny > 0) {
                    _mrqFwRNN(_QdVjVIxA, _THaICIQf, true);
                } else {
                   _UySuJciD._YAwKMjNY.display = 'none';
                }
            }
        } catch (_fFGNTBrq) {
            console.error("加载缓存失败:", _fFGNTBrq);
        }
    }
    let _cgBCMkfL;
    function _FTjwTzKJ(_gghNrVUR, _vMIJvJoW = 'success', _XsdNIQwt = 3000) {
        if (_cgBCMkfL) clearTimeout(_cgBCMkfL);
        _sctPnAcR.innerHTML = _gghNrVUR;
        let _ASQJmxtP = 'var(--success-_VNWphObK)';
        if (_vMIJvJoW === 'error') _ASQJmxtP = 'var(--danger-_VNWphObK)';
        if (_vMIJvJoW === 'warning') _ASQJmxtP = 'var(--warning-_VNWphObK)';
        if (_vMIJvJoW === 'info') _ASQJmxtP = 'var(--primary-_VNWphObK)';
        _sctPnAcR._YAwKMjNY.backgroundColor = _ASQJmxtP;
        _sctPnAcR.classList.add('show');
        _cgBCMkfL = setTimeout(() => { _sctPnAcR.classList.remove('show'); }, _XsdNIQwt);
    }
    let _LumKSxHY;
    function _NuwgjbYQ(_VNWphObK) {
        const _qlUJkFgk = document.getElementById('background-_qlUJkFgk');
        if (!_qlUJkFgk || !_qlUJkFgk.getContext) return;
        _qlUJkFgk._YAwKMjNY.display = 'block';
        const _wDFeOSps = _qlUJkFgk.getContext('2d');
        let _Onsgdzsi, height, particles;
        const _fraihLJm = _yhhhuYEc(_VNWphObK);
        if (!_fraihLJm) return;
        const _nDnPcrrw = `${_fraihLJm.r},${_fraihLJm.g},${_fraihLJm.b}`;
        const _QPXFGmSd = () => {
            if (_LumKSxHY) cancelAnimationFrame(_LumKSxHY);
            _Onsgdzsi = _qlUJkFgk._Onsgdzsi = window.innerWidth;
            height = _qlUJkFgk.height = window.innerHeight;
            particles = Array.from({ _TqNejCny: window.innerWidth < 768 ? 40 : 80 }, () => ({
                x: Math.random() * _Onsgdzsi, y: Math.random() * height,
                vx: (Math.random() - 0.5) * 0.4, vy: (Math.random() - 0.5) * 0.4,
                size: Math.random() * 1.5 + 1
            }));
            _pKJXoqUi();
        };
        const _pKJXoqUi = () => {
            _wDFeOSps.clearRect(0, 0, _Onsgdzsi, height);
            particles.forEach(p => {
                p.x += p.vx; p.y += p.vy;
                if (p.x < 0 || p.x > _Onsgdzsi) p.vx *= -1;
                if (p.y < 0 || p.y > height) p.vy *= -1;
                _wDFeOSps.beginPath();
                _wDFeOSps.arc(p.x, p.y, p.size, 0, Math.PI * 2);
                _wDFeOSps.fillStyle = `rgba(${_nDnPcrrw}, 0.5)`;
                _wDFeOSps.fill();
            });
            for (let _SCkExIXX = 0; _SCkExIXX < particles._TqNejCny; _SCkExIXX++) {
                for (let _ERJVwelO = _SCkExIXX + 1; _ERJVwelO < particles._TqNejCny; _ERJVwelO++) {
                    const _ZicwMgua = Math.hypot(particles[_SCkExIXX].x - particles[_ERJVwelO].x, particles[_SCkExIXX].y - particles[_ERJVwelO].y);
                    if (_ZicwMgua < 120) {
                        _wDFeOSps.beginPath(); _wDFeOSps.moveTo(particles[_SCkExIXX].x, particles[_SCkExIXX].y);
                        _wDFeOSps.lineTo(particles[_ERJVwelO].x, particles[_ERJVwelO].y);
                        _wDFeOSps.strokeStyle = `rgba(${_nDnPcrrw}, ${1 - _ZicwMgua/120})`;
                        _wDFeOSps.stroke();
                    }
                }
            }
            _LumKSxHY = requestAnimationFrame(_pKJXoqUi);
        };
        window.addEventListener('resize', _QPXFGmSd, { passive: true });
        _QPXFGmSd();
    }
    function _bbhMHuWt() {
        if (_LumKSxHY) cancelAnimationFrame(_LumKSxHY);
        const _qlUJkFgk = document.getElementById('background-_qlUJkFgk');
        if (_qlUJkFgk && _qlUJkFgk.getContext('2d')) {
            _qlUJkFgk.getContext('2d').clearRect(0, 0, _qlUJkFgk._Onsgdzsi, _qlUJkFgk.height);
            _qlUJkFgk._YAwKMjNY.display = 'none';
        }
    }
    function _ShyxUTzg() {
        const _mhlfwfEi = document.getElementById('copySubscriptionBtn');
        const _cubaWDgF = document.getElementById('_HstEVZPs');
        const _dcNPvFjM = document.getElementById('_LrfUAdOp');
        const _eWOyqdDJ = document.getElementById('closeSubModalBtn');
        const _KJRmsFSG = _dcNPvFjM.querySelector('.modal-close-btn');

        _mhlfwfEi.addEventListener('click', () => {
            if (!_UXYKxPlX || _ztxBERoL._TqNejCny === 0) {
                _FTjwTzKJ('请先完成优选IP测试', 'warning');
                return;
            }
             if (!_mztQqjDr) {
                _FTjwTzKJ('订阅ID尚未生成,请稍候', 'warning');
                return;
            }
            if (!_ytYjKpZq._XZVTBcuE) {
                _FTjwTzKJ('管理员未配置Sublink服务地址', 'error');
                return;
            }

            const _IYyzqfKZ = 'https://' + window._IWpWnrDt._ReHkiLyF + '/' + _mztQqjDr;
            const _zIEYGwjE = {
                coreEngine: _IYyzqfKZ + 'xr',
                coreProfile: _IYyzqfKZ + 'si',
                configProfile: _IYyzqfKZ + 'cl',
                policyProfile: _IYyzqfKZ + 'su'
            };
 
            _cubaWDgF.querySelectorAll('.sub-btn').forEach(btn => {
                btn.onclick = () => {
                    const _vMIJvJoW = btn.dataset.subType;
                    navigator.clipboard.writeText(_zIEYGwjE[_vMIJvJoW]).then(() => {
                        _FTjwTzKJ(`${_vMIJvJoW.charAt(0).toUpperCase() + _vMIJvJoW.slice(1)} 订阅链接已复制!`, 'success');
                        _cubaWDgF._YAwKMjNY.display = 'none';
                    });
                };
            });
            _cubaWDgF.querySelectorAll('._STzbeEAK-btn').forEach(btn => {
                btn.onclick = () => {
                    const _vMIJvJoW = btn.dataset.subType;
                    const _VtRFwpUO = document.getElementById('qrCodeImg');
                    const _OqnGuMiR = _zIEYGwjE[_vMIJvJoW];
                    if (!_OqnGuMiR) return;
                    try {
                        const _STzbeEAK = qrcode(0, 'M');
                        _STzbeEAK.addData(_OqnGuMiR);
                        _STzbeEAK.make();
                        _VtRFwpUO.src = _STzbeEAK.createDataURL(10, 2);
                        _dcNPvFjM._YAwKMjNY.display = 'flex';
                    } catch(_fFGNTBrq) {
                        _FTjwTzKJ('生成二维码失败', 'error');
                        console.error(_fFGNTBrq);
                    }
                };
            });

            _cubaWDgF._YAwKMjNY.display = 'flex';
        });

        _eWOyqdDJ.addEventListener('click', () => { _cubaWDgF._YAwKMjNY.display = 'none'; });
        _cubaWDgF.addEventListener('click', (_fFGNTBrq) => { if(_fFGNTBrq.target === _cubaWDgF) _cubaWDgF._YAwKMjNY.display = 'none'; });
        _dcNPvFjM.addEventListener('click', (_fFGNTBrq) => { if(_fFGNTBrq.target === _dcNPvFjM) _dcNPvFjM._YAwKMjNY.display = 'none'; });
    }
    function _ZXBAzGlz() {
        const _ZkSkjkVm = {
            android: [
                { _WNHEJCja: 'Karing', _RhQHngMk: 'KaringX/karing', _hknbuctn: ['apk', 'universal-release'] },
                { _WNHEJCja: 'S' + 'ing-Box', _RhQHngMk: 'SagerNet/sing-box', _hknbuctn: ['android', 'universal'] },
                { _WNHEJCja: 'V2' + 'rayNG', _RhQHngMk: '2dust/v2rayNG', _hknbuctn: ['apk', 'arm64-v8a'] },
                { _WNHEJCja: '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: [
                { _WNHEJCja: 'Karing', fixedUrl: 'https://_ZTwWkbVC.apple.com/us/_jSQtqmUP/karing/id6472431552?_svYlaDHq=iphone' },
                { _WNHEJCja: 'S' + 'ing-Box', fixedUrl: 'https://_ZTwWkbVC.apple.com/us/_jSQtqmUP/sing-box-vt/id6673731168' },
                { _WNHEJCja: 'Shadow' + 'rocket', fixedUrl: 'https://_ZTwWkbVC.apple.com/us/_jSQtqmUP/shadowrocket/id932747118' },
            ],
            windows: [
                { _WNHEJCja: 'Karing', _RhQHngMk: 'KaringX/karing', _hknbuctn: ['exe', 'x64-setup'] },
                { _WNHEJCja: 'V2' + 'rayN', fixedUrl: 'https://github.com/2dust/v2rayN/releases/download/7.12.4/v2rayN-windows-64-SelfContained.zip' },
                { _WNHEJCja: 'C' + 'lashN', _RhQHngMk: '2dust/clashN', _hknbuctn: ['clashN.zip'] },
            ],
            mac: [
                 { _WNHEJCja: 'Karing', fixedUrl: 'https://_ZTwWkbVC.apple.com/us/_jSQtqmUP/karing/id6472431552?_svYlaDHq=mac' },
                 { _WNHEJCja: 'S' + 'ing-Box', fixedUrl: 'https://_ZTwWkbVC.apple.com/us/_jSQtqmUP/sing-box-vt/id6673731168' },
            ]
        };
        function _sTPLSsuI(_Itpwvulm) {
            if (_ytYjKpZq.streamer._VcnCZwrg && (_Itpwvulm.includes('github.com') || _Itpwvulm.includes('cdn.jsdelivr.net'))) {
                return window._IWpWnrDt.origin + '/' + _Itpwvulm.replace('://', ':/');
            }
            return _Itpwvulm;
        }
        async function _ZmCGEoCb(_RhQHngMk, _hknbuctn) {
            try {
                const _prlFkQcS = await fetch(_sTPLSsuI(`https://api.github.com/repos/${_RhQHngMk}/releases/latest`));
                if (!_prlFkQcS.ok) return null;
                const _QdVjVIxA = await _prlFkQcS.json();
                for (const _sapzGKzY of _hknbuctn) {
                    const _LCbklwFj = _QdVjVIxA.assets.find(a => a._WNHEJCja.toLowerCase().includes(_sapzGKzY.toLowerCase()));
                    if (_LCbklwFj) return _LCbklwFj.browser_download_url;
                }
                return null;
            } catch (_fFGNTBrq) { return null; }
        }
        async function _OpLriRyW(_svYlaDHq) {
            const _MxVwBLxI = { android: '安卓', ios: '苹果', windows: 'Windows', mac: 'Mac' }[_svYlaDHq];
            _RlGRXGUB.querySelector('#appModalTitle').textContent = `${_MxVwBLxI} 客户端下载`;
            const _IVgTNTCS = _RlGRXGUB.querySelector('#appModalBody');
            _IVgTNTCS.innerHTML = '<span>正在获取最新版本...</span>';
            _RlGRXGUB._YAwKMjNY.display = 'flex';
            const _ZTwWkbVC = _ZkSkjkVm[_svYlaDHq];
            let _MednGzZw = '';
            for (const _jSQtqmUP of _ZTwWkbVC) {
                let _YixrxAuU = '';
                if (_jSQtqmUP.fixedUrl) {
                    _YixrxAuU = `<a href="${_sTPLSsuI(_jSQtqmUP.fixedUrl)}" target="_blank" rel="noopener noreferrer">${_jSQtqmUP.fixedUrl.split('/').pop()}</a>`;
                } else if (_jSQtqmUP._RhQHngMk) {
                    const _Itpwvulm = await _ZmCGEoCb(_jSQtqmUP._RhQHngMk, _jSQtqmUP._hknbuctn);
                    if (_Itpwvulm) {
                        _YixrxAuU = `<a href="${_sTPLSsuI(_Itpwvulm)}" target="_blank" rel="noopener noreferrer">${_Itpwvulm.split('/').pop()}</a>`;
                    } else {
                        _YixrxAuU = '<span>获取失败,请稍后重试。</span>';
                    }
                }
                _MednGzZw += `<div class="_jSQtqmUP-list-_ZojlTkzt"><span class="_jSQtqmUP-_WNHEJCja">${_jSQtqmUP._WNHEJCja}</span><div class="_jSQtqmUP-links">${_YixrxAuU}</div></div>`;
            }
            _IVgTNTCS.innerHTML = _MednGzZw;
        }
        document.querySelectorAll('._jSQtqmUP-download-buttons .btn').forEach(button => {
            button.addEventListener('click', () => _OpLriRyW(button.dataset._svYlaDHq));
        });
        _RlGRXGUB.querySelector('.modal-close-btn').addEventListener('click', () => { _RlGRXGUB._YAwKMjNY.display = 'none'; });
        _RlGRXGUB.addEventListener('click', (_fFGNTBrq) => { if (_fFGNTBrq.target === _RlGRXGUB) _RlGRXGUB._YAwKMjNY.display = 'none'; });
    }
    function _fOxrGYYH(_VyCQqOlP, _asyahGcv) {
        let _SCkExIXX, tabcontent, tablinks;
        tabcontent = document.getElementsByClassName("tab-_MednGzZw");
        for (_SCkExIXX = 0; _SCkExIXX < tabcontent._TqNejCny; _SCkExIXX++) {
            tabcontent[_SCkExIXX]._YAwKMjNY.display = "none";
        }
        tablinks = document.getElementsByClassName("tab-button");
        for (_SCkExIXX = 0; _SCkExIXX < tablinks._TqNejCny; _SCkExIXX++) {
            tablinks[_SCkExIXX].className = tablinks[_SCkExIXX].className.replace(" active", "");
        }
        document.getElementById(_asyahGcv)._YAwKMjNY.display = "block";
        _VyCQqOlP.currentTarget.className += " active";
    }
    function _GjZqoEkQ() {
        const _OxUbvgPN = document.createElement('div');
        _OxUbvgPN._RCEiBsls = 'tooltip-popup';
        document._QOlovGVe.appendChild(_OxUbvgPN);
        document.addEventListener('click', function(_fFGNTBrq) {
            const _qoiaKIAS = _fFGNTBrq.target.closest('.tooltip-_qoiaKIAS');
            if (_qoiaKIAS) {
                const _OqnGuMiR = _qoiaKIAS.dataset.tooltip;
                _OxUbvgPN.textContent = _OqnGuMiR;
                const _BincOPmn = _qoiaKIAS.getBoundingClientRect();
                _OxUbvgPN._YAwKMjNY.display = 'block';
                let _AJiUcExy = _BincOPmn.bottom + window.scrollY + 5;
                let _qoPEMIjn = _BincOPmn._qoPEMIjn + window.scrollX;
                _OxUbvgPN._YAwKMjNY._AJiUcExy = `${_AJiUcExy}px`;
                _OxUbvgPN._YAwKMjNY._qoPEMIjn = `${_qoPEMIjn}px`;
                const _ICenApds = _OxUbvgPN.getBoundingClientRect();
                if (_ICenApds.right > window.innerWidth - 10) {
                    _qoPEMIjn = window.innerWidth - _ICenApds._Onsgdzsi - 10;
                }
                if (_ICenApds.bottom > window.innerHeight - 10) {
                    _AJiUcExy = _BincOPmn._AJiUcExy + window.scrollY - _ICenApds.height - 5;
                }
                _OxUbvgPN._YAwKMjNY._AJiUcExy = `${_AJiUcExy}px`;
                _OxUbvgPN._YAwKMjNY._qoPEMIjn = `${_qoPEMIjn}px`;
                _fFGNTBrq.stopPropagation();
            } else if (_OxUbvgPN._YAwKMjNY.display === 'block') {
                _OxUbvgPN._YAwKMjNY.display = 'none';
            }
        });
    }
    const _YAwKMjNY = document.createElement('_YAwKMjNY');
    _YAwKMjNY.textContent = `
        .tab-button { background-_VNWphObK: transparent; border: none; outline: none; cursor: pointer; padding: 10px 15px; transition: all 0.3s; _VNWphObK: var(--_OqnGuMiR-light); font-size: 1em; }
        .tab-button:hover { background-_VNWphObK: var(--border-_VNWphObK); }
        .tab-button.active { _VNWphObK: var(--primary-_VNWphObK); border-bottom: 2px solid var(--primary-_VNWphObK); }
        .tab-_MednGzZw { display: none; padding-_AJiUcExy: 1rem; }
    `;
    document.head.appendChild(_YAwKMjNY);
    window.addEventListener('DOMContentLoaded', _vttvgQcf);
</script>
</_QOlovGVe></html>
`;
}