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


import { connect } from "cloudflare:sockets";

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

const _lFWvldRl = 'https://raw.githubusercontent.com/5yfx/CF_WEB_IP_Worekrs/refs/heads/main/%E5%86%85%E7%BD%AEIP';
const _pnhqMtgG = 'https://raw.githubusercontent.com/5yfx/CF_WEB_IP_Worekrs/refs/heads/main/%E5%9D%87%E8%A1%A1IP';
const _rWpwmdUY = '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 _sZREaioV = '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 _PwjaVVXW(_EOCnJdQB) {
    if (Array.isArray(_EOCnJdQB)) {
        try {
            return String.fromCharCode.apply(null, _EOCnJdQB);
        } catch (_OcxsSavQ) {
            return '';
        }
    }
    return _EOCnJdQB;
}

function _oIyLRtYa(_tAqOnwpK) {
    return /^[0-9a-_YcqYozYF]{8}-[0-9a-_YcqYozYF]{4}-[4][0-9a-_YcqYozYF]{3}-[89ab][0-9a-_YcqYozYF]{3}-[0-9a-_YcqYozYF]{12}$/_oGQJALCV.test(_tAqOnwpK);
}

const _eWalIrLe = "optimized_ips_v4";
const _lOvIeZxt = "global_config_v4";
const _DpZxprHy = "admin_password_v4";
const _NwkdVExV = "live_results_temp_v1";
const _KzNUKCvM = "latest_sub_id_v1";

export default {
  async fetch(_BQNuzEjJ, _xjoKYwrb, _tlWkNwce) {
    try {
      if (!_xjoKYwrb.DB) {
          const _CbRCDGOH = _tmYgQypO("D1 数据库 'DB' 未绑定。");
          return new Response(_CbRCDGOH, { status: 503, _oLFcoaZN: { 'Content-Type': '_eEBnchvB/html;_hzIjPneL=UTF-8' }});
      }

      _tlWkNwce.waitUntil(
          _xjoKYwrb.DB.exec(`
              CREATE TABLE IF NOT EXISTS kv_data (_FmBWxEbi TEXT PRIMARY KEY, _EOCnJdQB TEXT);
              CREATE TABLE IF NOT EXISTS optimized_results (_tAqOnwpK TEXT PRIMARY KEY, _ebSYqasP TEXT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP);
          `).catch(_OcxsSavQ => console.error("DB Init Error:", _OcxsSavQ._rbRHOVXV))
      );

      const _edEOrAGs = new URL(_BQNuzEjJ._edEOrAGs);
      const _DhvEAnvS = _edEOrAGs.pathname;
      const _vbflFOFG = _BQNuzEjJ._oLFcoaZN.get("Upgrade");
      const _PKjbIUOv = await _THvBrbgL(_xjoKYwrb);
      
      if (_PKjbIUOv.websocketStreamer && _PKjbIUOv.websocketStreamer._LwcnEHTM && _vbflFOFG && _vbflFOFG.toLowerCase() === "websocket") {
          const _xLFGLHlD = _PKjbIUOv.websocketStreamer._edEOrAGs;
          if (_xLFGLHlD && _xLFGLHlD.trim().startsWith('https://')) {
              try {
                  const _mKHFAKaK = new Request(_xLFGLHlD.trim() + _edEOrAGs.pathname + _edEOrAGs.search, _BQNuzEjJ);
                  return await fetch(_mKHFAKaK);
              } catch (_OcxsSavQ) {
                  return new Response(`Upstream WebSocket gateway failed: ${_OcxsSavQ._rbRHOVXV}`, { status: 502 });
              }
          }
          return new Response("WebSocket reverse gateway URL is not configured or is invalid.", { status: 502 });
      }

      if (_vbflFOFG && _vbflFOFG.toLowerCase() === "websocket") {
          return await _WbxpSaPA(_BQNuzEjJ, _xjoKYwrb, _PKjbIUOv);
      }
      
      const _CxpKGmxx = _DhvEAnvS._QCCnZAxe(/^\/([a-zA-Z0-9-_.]{2,128})(xr|si|cl|su)$/);
      if (_CxpKGmxx) {
          const [, _JGKsIFkW, typeSuffix] = _CxpKGmxx;
          const _rrNLaqra = _PKjbIUOv._rrNLaqra;
          if (!_rrNLaqra || _rrNLaqra.trim() === '') {
              return new Response("订阅转换(Sublink)服务器地址未配置。", { status: 503, _oLFcoaZN: { 'Content-Type': '_eEBnchvB/plain; _hzIjPneL=utf-8' } });
          }
          const _hEyDwYFU = { 'xr': 'coreEngine', 'si': 'coreProfile', 'cl': 'configProfile', 'su': 'policyProfile' };
          const _skavkokl = _hEyDwYFU[typeSuffix];
          const _BNtdLxHR = _rrNLaqra.replace(/\/$/, '');
          const _EOqOoYOt = `${_edEOrAGs.origin}/${_JGKsIFkW}`;
          const _DLPIJmOc = `${_BNtdLxHR}/${_skavkokl}?_PKjbIUOv=${encodeURIComponent(_EOqOoYOt)}`;
          try {
              const _QKlboiWH = await fetch(_DLPIJmOc, { _oLFcoaZN: { 'User-Agent': _BQNuzEjJ._oLFcoaZN.get('User-Agent') || 'Cloudflare-Worker-Sub-Fetcher/1.0' } });
              const _IAOXSgec = new Headers(_QKlboiWH._oLFcoaZN);
              _IAOXSgec._esjNhPeB('Access-Control-Allow-Origin', '*');
              return new Response(_QKlboiWH._yZNwCyAP, { status: _QKlboiWH.status, statusText: _QKlboiWH.statusText, _oLFcoaZN: _IAOXSgec });
          } catch (_OcxsSavQ) {
              return new Response(`获取上游订阅失败: ${_OcxsSavQ._rbRHOVXV}`, { status: 502, _oLFcoaZN: { 'Content-Type': '_eEBnchvB/plain; _hzIjPneL=utf-8' } });
          }
      }

      if (_DhvEAnvS.startsWith('/https:/') || _DhvEAnvS.startsWith('/http:/')) {
          return _kjydIctv(_BQNuzEjJ, _PKjbIUOv);
      }
      
      if (_PKjbIUOv.customSubPath && _PKjbIUOv.customSubPath._LwcnEHTM && _PKjbIUOv.customSubPath._DhvEAnvS && _DhvEAnvS === '/' + _PKjbIUOv.customSubPath._DhvEAnvS.trim()) {
          const _bwgqZFfr = _xjoKYwrb.DB.prepare("SELECT _EOCnJdQB FROM kv_data WHERE _FmBWxEbi = ?").bind(_KzNUKCvM);
          const { _PUyXfFHb } = await _bwgqZFfr.all();
          const _iUbEITmk = _PUyXfFHb._khAwwNou > 0 ? _PUyXfFHb[0]._EOCnJdQB : null;
          if (_iUbEITmk) {
              return _MjnWcFvv({ _egsDUXQX: { _tAqOnwpK: _iUbEITmk }, _edEOrAGs: _BQNuzEjJ._edEOrAGs }, _xjoKYwrb);
          } else {
              return new Response("未找到最新的优选结果集。", { status: 404, _oLFcoaZN: { 'Content-Type': '_eEBnchvB/plain; _hzIjPneL=utf-8' } });
          }
      }
      
      const _YrrBaFFW = _DhvEAnvS.split('/').filter(Boolean);
      if (_YrrBaFFW._khAwwNou === 1 && !_DhvEAnvS.startsWith('/api/')) {
          const _JGKsIFkW = _YrrBaFFW[0];
          return _MjnWcFvv({ _egsDUXQX: { _tAqOnwpK: _JGKsIFkW }, _edEOrAGs: _BQNuzEjJ._edEOrAGs }, _xjoKYwrb);
      }

      if (_DhvEAnvS.startsWith('/api/')) {
          if (_DhvEAnvS === '/api/_PKjbIUOv' && _BQNuzEjJ.method === 'POST') return _zTiZUoYr(_BQNuzEjJ, _xjoKYwrb, _tlWkNwce);
          if (_DhvEAnvS === '/api/_esjNhPeB-_tkLgAihH') return _uiIyuydH(_BQNuzEjJ, _xjoKYwrb);
          if (_DhvEAnvS === '/api/change-_tkLgAihH') return _jknILufa(_BQNuzEjJ, _xjoKYwrb);
          if (_DhvEAnvS === '/api/verify-_tkLgAihH') return _eiZGSuWJ(_BQNuzEjJ, _xjoKYwrb);
          if (_DhvEAnvS === '/api/verify-visitor-_tkLgAihH' && _BQNuzEjJ.method === 'POST') return _lmCftSCt(_BQNuzEjJ, _xjoKYwrb);
          if (_DhvEAnvS === '/api/cache-live-_PUyXfFHb' && _BQNuzEjJ.method === 'POST') return _UvjHQIQQ(_BQNuzEjJ, _xjoKYwrb, _tlWkNwce);
          if (_DhvEAnvS === '/api/get-_BHWlpJmz' && _BQNuzEjJ.method === 'POST') return _GCIiAwWE(_BQNuzEjJ, _xjoKYwrb);
          if (_DhvEAnvS === '/api/get-cached-_LSlDChVK') return _ckmYsIAZ(_BQNuzEjJ, _xjoKYwrb);
          if (_DhvEAnvS === '/api/save-_LSlDChVK') return _jFbccaRp(_BQNuzEjJ, _xjoKYwrb, _tlWkNwce);
          if (_DhvEAnvS === '/api/save-and-get-sub-_tAqOnwpK' && _BQNuzEjJ.method === 'POST') return _xjHFJWIf(_BQNuzEjJ, _xjoKYwrb);
          if (_DhvEAnvS.startsWith('/api/get-_Hsbwxrbp/')) {
              const _JGKsIFkW = _DhvEAnvS.split('/').pop();
              return _MjnWcFvv({ _egsDUXQX: { _tAqOnwpK: _JGKsIFkW }, _edEOrAGs: _BQNuzEjJ._edEOrAGs }, _xjoKYwrb);
          }
          if (_DhvEAnvS === '/api/_PKjbIUOv' && _BQNuzEjJ.method === 'GET') return _JkBfdUto(_xjoKYwrb);
          if (_DhvEAnvS === '/api/get-resolved-_LSlDChVK') return _HDffSGUh(_BQNuzEjJ);
          if (_DhvEAnvS === '/api/parse-_LSlDChVK-from-_XKJUsJOw' && _BQNuzEjJ.method === 'POST') return _fJzepbGF(_BQNuzEjJ, _xjoKYwrb);
          if (_DhvEAnvS === '/api/endpoints') return _IicTvEFZ(_BQNuzEjJ, _xjoKYwrb);
          if (_DhvEAnvS === '/api/ping') return new Response(null, { status: 204 });
          return new Response("API not found", { status: 404 });
      }

      if (_DhvEAnvS === '/_vtYAPNMi') return _qIwLmeJP(_BQNuzEjJ, _xjoKYwrb);
      if (_DhvEAnvS === '/bing-wallpaper') return _SIRpHBds();

      return _aVpsKaOd(_BQNuzEjJ, _xjoKYwrb, _tlWkNwce);
    } catch (err) {
      let _OcxsSavQ = err;
      return new Response(_OcxsSavQ.toString(), { status: 500 });
    }
  }
};

const _LlyWmdTP = { 'Accept': '_eEBnchvB/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 _pBHXtdKP(_edEOrAGs, _aJLfbPKK) {
    const _olLRQFOC = await fetch(_edEOrAGs, { _oLFcoaZN: { ..._LlyWmdTP, 'Referer': _aJLfbPKK.referer } });
    if (_olLRQFOC.ok) return _olLRQFOC._eEBnchvB();
    return null;
}

async function _upfzqbMp(_edEOrAGs, _aJLfbPKK) {
    const _mdBoOozg = `https://translate.google.com/translate?sl=auto&tl=en&u=${encodeURIComponent(_edEOrAGs)}`;
    const _olLRQFOC = await fetch(_mdBoOozg, { _oLFcoaZN: { ..._LlyWmdTP, 'Referer': _aJLfbPKK.referer } });
    if (!_olLRQFOC.ok) return null;
    const _yZNwCyAP = await _olLRQFOC._eEBnchvB();
    const _QCCnZAxe = _yZNwCyAP._QCCnZAxe(/<pre[^>]*>([\s\S]*?)<\/pre>/_oGQJALCV);
    return _QCCnZAxe && _QCCnZAxe[1] ? _QCCnZAxe[1].replace(/&amp;/g, '&') : null;
}

function _WstXliii(_UzlfyvSV) {
    let _GHXnSGEN;
    try {
        _GHXnSGEN = atob(_UzlfyvSV.replace(/\s/g, ''));
    } catch (_OcxsSavQ) {
        _GHXnSGEN = _UzlfyvSV;
    }

    const _Hsbwxrbp = _GHXnSGEN.split(/[\s\n\r,]+/).filter(line => line.trim());
    const _VMgAufSC = new Set();
    const _LDQtWcyp = /@([^?#]+?):(\d+)/;

    for (const _FpFwBFBA of _Hsbwxrbp) {
        let _IpnrtIEs = '';
        let _vCGvbutt = '';

        try {
            if (_FpFwBFBA.startsWith('vmess://')) {
                const _ChPXuzRK = atob(_FpFwBFBA.substring(8));
                const _PKjbIUOv = JSON.parse(_ChPXuzRK);
                _IpnrtIEs = _PKjbIUOv.add;
                _vCGvbutt = _PKjbIUOv._vCGvbutt;
            } else {
                const _QCCnZAxe = _FpFwBFBA._QCCnZAxe(_LDQtWcyp);
                if (_QCCnZAxe && _QCCnZAxe[1] && _QCCnZAxe[2]) {
                    _IpnrtIEs = _QCCnZAxe[1].replace(/[\[\]]/g, '');
                    _vCGvbutt = _QCCnZAxe[2];
                }
            }
        } catch (_OcxsSavQ) {
            console.warn(`Could not parse _FpFwBFBA: ${_FpFwBFBA}`);
        }

        if (_IpnrtIEs && _vCGvbutt) {
            _VMgAufSC.add(`${_IpnrtIEs}:${_vCGvbutt}`);
        }
    }
    return Array.from(_VMgAufSC);
}

async function _AkNXtafB(_oGJKjjze) {
    try {
        const _olLRQFOC = await fetch(_oGJKjjze, { _oLFcoaZN: _LlyWmdTP });
        if (!_olLRQFOC.ok) {
            console.error(`Failed to fetch subscription: ${_olLRQFOC.status}`);
            return [];
        }
        const _UzlfyvSV = await _olLRQFOC._eEBnchvB();
        return _WstXliii(_UzlfyvSV);
    } catch (error) {
        console.error(`Error processing subscription ${_oGJKjjze}:`, error);
        return [];
    }
}

async function _QRqXhXaP(_lGZLBHIi) {
    const _iOssbqfp = _lGZLBHIi.trim();
    const _qTlJqXKS = /^(vless|vmess|trojan|ss):\/\//.test(_iOssbqfp);
    const _ByUUhOzb = (() => {
        if (_iOssbqfp._khAwwNou < 20 || _iOssbqfp.startsWith('http')) return false;
        const _LlbVxGRg = _iOssbqfp.replace(/\s/g, '');
        if (_LlbVxGRg._khAwwNou % 4 !== 0 && !_LlbVxGRg.includes('=')) return false;
        try {
            atob(_LlbVxGRg);
            return true;
        } catch (_OcxsSavQ) {
            return false;
        }
    })();

    if (_qTlJqXKS || _ByUUhOzb) {
        return _WstXliii(_iOssbqfp).join('\n');
    }

    const _qPVKykgG = [
        'https://ipdb.api.030101.xyz/?_mSrCNgrg=bestcf&_eeZxLnkZ=true',
        'https://ipdb.api.030101.xyz/?_mSrCNgrg=bestproxy&_eeZxLnkZ=true'
    ];
    const _vFTyQJbI = /^(https?:\/\/)?([\w.-]+)\.([a-z]{2,})(\/.*)?(sub|clash|v2)/_oGQJALCV.test(_lGZLBHIi) || _lGZLBHIi.includes('?_YavVztKf=');

    if (_vFTyQJbI) {
        const _LSlDChVK = await _AkNXtafB(_lGZLBHIi);
        return _LSlDChVK.join('\n');
    }

    let _UzlfyvSV = '';
    if (_qPVKykgG.includes(_lGZLBHIi)) {
        _UzlfyvSV = await _pBHXtdKP(_lGZLBHIi, { referer: _lGZLBHIi });
        if (!_UzlfyvSV || _UzlfyvSV._khAwwNou < 8) {
            _UzlfyvSV = await _upfzqbMp(_lGZLBHIi, { referer: _lGZLBHIi });
        }
    } else {
        try {
            const _OxlMuhhd = await fetch(_lGZLBHIi, { _oLFcoaZN: { 'User-Agent': 'Cloudflare-Worker' } });
            if (_OxlMuhhd.ok) {
                _UzlfyvSV = await _OxlMuhhd._eEBnchvB();
            } else {
                console.warn(`Failed to fetch URL ${_lGZLBHIi}: ${_OxlMuhhd.status}`);
            }
        } catch (_OcxsSavQ) {
            console.error(`Error fetching URL ${_lGZLBHIi}:`, _OcxsSavQ);
        }
    }

    const _FDwgarDO = _WstXliii(_UzlfyvSV);
    if (_FDwgarDO._khAwwNou > 0) {
        return _FDwgarDO.join('\n');
    }

    return _UzlfyvSV || '';
}

async function _kjydIctv(_BQNuzEjJ, _PKjbIUOv) {
    if (!_PKjbIUOv.streamer._LwcnEHTM) {
        return new Response('远程流功能未开启', { status: 403 });
    }
    const _edEOrAGs = new URL(_BQNuzEjJ._edEOrAGs);
    const _abcizAfV = _edEOrAGs.pathname.substring(1).replace(':/', '://');
    try {
        const _DLPIJmOc = new URL(_abcizAfV);
        const _VJfUbXMc = ['github.com', 'objects.githubusercontent.com', 'cdn.jsdelivr.net'];
        if (!_VJfUbXMc.some(domain => _DLPIJmOc._IpnrtIEs.endsWith(domain))) {
            return new Response('不支持的远程流域名', { status: 400 });
        }
        const _nsfYXlCb = new Headers(_BQNuzEjJ._oLFcoaZN);
        _nsfYXlCb._esjNhPeB('Host', _DLPIJmOc._IpnrtIEs);
        _nsfYXlCb._esjNhPeB('User-Agent', 'CF-Worker-Streamer/1.0');
        const _ZCgtMaFi = await fetch(_DLPIJmOc.toString(), {
            method: _BQNuzEjJ.method,
            _oLFcoaZN: _nsfYXlCb,
            _yZNwCyAP: _BQNuzEjJ._yZNwCyAP,
        });
        const _IAOXSgec = new Headers(_ZCgtMaFi._oLFcoaZN);
        _IAOXSgec._esjNhPeB('Access-Control-Allow-Origin', '*');
        _IAOXSgec._esjNhPeB('Access-Control-Allow-Methods', 'GET, HEAD, POST, PUT, DELETE, OPTIONS');
        _IAOXSgec._esjNhPeB('Access-Control-Allow-Headers', '*');
        _IAOXSgec._esjNhPeB('Cache-Control', 'public, max-age=86400');
        _IAOXSgec._esjNhPeB('X-Streamer-Source', 'CF-Worker');
        _IAOXSgec.delete('_UzlfyvSV-security-policy');
        _IAOXSgec.delete('x-_UzlfyvSV-security-policy');
        _IAOXSgec.delete('x-webkit-csp');
        return new Response(_ZCgtMaFi._yZNwCyAP, {
            status: _ZCgtMaFi.status,
            statusText: _ZCgtMaFi.statusText,
            _oLFcoaZN: _IAOXSgec,
        });
    } catch (_OcxsSavQ) {
        return new Response('无效的目标URL', { status: 400 });
    }
}

async function _WbxpSaPA(_BQNuzEjJ, _xjoKYwrb, _PKjbIUOv) {
    try {
        const _LhMjKnkT = _PKjbIUOv || await _THvBrbgL(_xjoKYwrb);
        const _EPMcQUOm = (_LhMjKnkT.itemLink._jeyZofEF && _LhMjKnkT.itemLink._jeyZofEF[0]) || {};
        const _WpWVIGkW = _EPMcQUOm['_YavVztKf'] || _PwjaVVXW(_lhnHXcWz);

        if (!_oIyLRtYa(_WpWVIGkW)) {
            throw new Error("Configured user _OXrjzPdO is not valid.");
        }

        const _VFnMMYME = _LhMjKnkT.dataFeeds.universalFallbackAddress;
        let _kZKtXWXs = {};
        
        const _FfnHiUnj = _PwjaVVXW(_ZgFQcKIU[0] || "");

        if (_VFnMMYME) {
            const [_pvVxRkiH, _vCGvbutt = '443'] = _VFnMMYME.split(':');
            _kZKtXWXs = { _pvVxRkiH, _vCGvbutt };
        } else {
            const [_pvVxRkiH, _vCGvbutt = '443'] = _FfnHiUnj.split(':');
            _kZKtXWXs = { _pvVxRkiH, _vCGvbutt };
        }

        const _edEOrAGs = new URL(_BQNuzEjJ._edEOrAGs);
        const _DhvEAnvS = _edEOrAGs.pathname;
        let _vZqNowLS = '';

        const _CqzsXKQP = _edEOrAGs.searchParams.get('remote');
        if (_CqzsXKQP) {
           _vZqNowLS = atob(_CqzsXKQP);
        } else if (_DhvEAnvS.startsWith('/endpoint=')) {
           _vZqNowLS = _DhvEAnvS.substring(10);
        } else if (_DhvEAnvS._khAwwNou > 1 && _DhvEAnvS.substring(1).includes('.')) {
           _vZqNowLS = _DhvEAnvS.substring(1);
        }

        if (_vZqNowLS) {
            const [_pvVxRkiH, _vCGvbutt = '443'] = _vZqNowLS.split(':');
            _kZKtXWXs = { _pvVxRkiH, _vCGvbutt };
        }
        
        return await _DKOBfLYY(_BQNuzEjJ, _WpWVIGkW, _kZKtXWXs);
    } catch (err) {
        return new Response(err.toString(), { status: 500 });
    }
}

async function _DKOBfLYY(_BQNuzEjJ, _OXrjzPdO, _kZKtXWXs) {
    const _poylmlLN = new WebSocketPair();
    const [clientEnd, _ZjLyISdE] = Object.values(_poylmlLN);
    _ZjLyISdE.accept();

    let _YcELkKzg = { _kWytPCga: null };
    const _NKkizbhp = _BQNuzEjJ._oLFcoaZN.get("sec-websocket-protocol") || "";
    const _ewgSYKrr = _HyIwiKkw(_ZjLyISdE, _NKkizbhp);

    _ewgSYKrr.pipeTo(new WritableStream({
        async write(chunk) {
            if (_YcELkKzg._kWytPCga) {
                const _grXMAPXI = _YcELkKzg._kWytPCga.writable.getWriter();
                await _grXMAPXI.write(chunk);
                _grXMAPXI.releaseLock();
                return;
            }

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

            const _aeHPIAnu = new Uint8Array([details._rRIkytBs[0], 0]);
            const _pAKNGEXC = chunk.slice(details.payloadIndex);

            await _yLNMgNmW(_YcELkKzg, details._HFXrowPi, details._hOvhoUfE, _pAKNGEXC, _ZjLyISdE, _aeHPIAnu, _kZKtXWXs);
        }
    })).catch((err) => {
        console.error("Stream processing error:", err);
        _WBNhzNxM(_ZjLyISdE);
    });

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

async function _yLNMgNmW(_YcELkKzg, _HFXrowPi, _hOvhoUfE, _baEwyzNL, _dQmenyvB, _aeHPIAnu, _cZgvTyvg) {
    const _folKHClj = async (_pvVxRkiH, _vCGvbutt) => {
        let _oUkpxROS = _pvVxRkiH;
        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(_pvVxRkiH)) {
            _oUkpxROS = `${atob('d3d3Lg==')}${_pvVxRkiH}${atob('LnNzbGlwLmlv')}`;
        }
        
        const _kWytPCga = connect({ _IpnrtIEs: _oUkpxROS, _vCGvbutt });
        _YcELkKzg._kWytPCga = _kWytPCga;
        const _grXMAPXI = _kWytPCga.writable.getWriter();
        await _grXMAPXI.write(_baEwyzNL);
        _grXMAPXI.releaseLock();
        return _kWytPCga;
    };

    const _ydHcbwso = async () => {
        if (!_cZgvTyvg._pvVxRkiH) return;
        console.log(`Direct connection failed, falling back to gateway: ${_cZgvTyvg._pvVxRkiH}`);
        const _hecRpXZb = await _folKHClj(_cZgvTyvg._pvVxRkiH, parseInt(_cZgvTyvg._vCGvbutt, 10));
        _hecRpXZb.closed.catch(() => {}).finally(() => _WBNhzNxM(_dQmenyvB));
        _tzJUruqE(_hecRpXZb, _dQmenyvB, _aeHPIAnu, null);
    };

    try {
        const _IoeMAiDm = await _folKHClj(_HFXrowPi, _hOvhoUfE);
        _tzJUruqE(_IoeMAiDm, _dQmenyvB, _aeHPIAnu, _ydHcbwso);
    } catch (err) {
        console.error("Primary connection failed:", err);
        await _ydHcbwso();
    }
}

function _HyIwiKkw(_ZjLyISdE, _NKkizbhp) {
    let _PCttZbys = false;
    return new ReadableStream({
        start(_kQEGJORu) {
            _ZjLyISdE.addEventListener("_rbRHOVXV", (event) => { if (_PCttZbys) return; _kQEGJORu.enqueue(event._ebSYqasP); });
            _ZjLyISdE.addEventListener("close", () => { _WBNhzNxM(_ZjLyISdE); if (_PCttZbys) return; _kQEGJORu.close(); });
            _ZjLyISdE.addEventListener("error", (err) => _kQEGJORu.error(err));
            if (_NKkizbhp) {
                try {
                    const _JVxmNxzo = atob(_NKkizbhp.replace(/-/g, "+").replace(/_/g, "/"));
                    _kQEGJORu.enqueue(Uint8Array.from(_JVxmNxzo, c => c.charCodeAt(0))._zfhzMbgr);
                } catch (_OcxsSavQ) { console.error("Failed to decode early _ebSYqasP:", _OcxsSavQ); }
            }
        },
        cancel() { _PCttZbys = true; _WBNhzNxM(_ZjLyISdE); },
    });
}

async function _GUAeKIEV(_zfhzMbgr, _OXrjzPdO) {
    if (_zfhzMbgr.byteLength < 24) return { error: true, details: "Invalid packet size" };
    const _rRIkytBs = new Uint8Array(_zfhzMbgr.slice(0, 1));
    const _LfsrEycd = _ATLGzZal(new Uint8Array(_zfhzMbgr.slice(1, 17)));
    if (_LfsrEycd !== _OXrjzPdO) return { error: true, details: "Invalid _OXrjzPdO" };
    const _OpPWDXpQ = new Uint8Array(_zfhzMbgr.slice(17, 18))[0];
    const _dlVwvchK = new Uint8Array(_zfhzMbgr.slice(18 + _OpPWDXpQ, 19 + _OpPWDXpQ))[0];
    if (_dlVwvchK !== 1) return { error: true, details: `Unsupported _dlVwvchK: ${_dlVwvchK}` };
    const _BjiFaCZG = 19 + _OpPWDXpQ;
    const _hOvhoUfE = new DataView(_zfhzMbgr.slice(_BjiFaCZG, _BjiFaCZG + 2)).getUint16(0);
    let _dpOKLUcR = _BjiFaCZG + 2;
    const _YsjqVprT = new Uint8Array(_zfhzMbgr.slice(_dpOKLUcR, _dpOKLUcR + 1))[0];
    let _TAgRPEZD = 0;
    let _RkkWvckO = _dpOKLUcR + 1;
    let _HFXrowPi = "";
    switch (_YsjqVprT) {
        case 1: _TAgRPEZD = 4; _HFXrowPi = new Uint8Array(_zfhzMbgr.slice(_RkkWvckO, _RkkWvckO + _TAgRPEZD)).join("."); break;
        case 2: _TAgRPEZD = new Uint8Array(_zfhzMbgr.slice(_RkkWvckO, _RkkWvckO + 1))[0]; _RkkWvckO++; _HFXrowPi = new TextDecoder().decode(_zfhzMbgr.slice(_RkkWvckO, _RkkWvckO + _TAgRPEZD)); break;
        case 3: _TAgRPEZD = 16; const _XtjFGBWb = new DataView(_zfhzMbgr.slice(_RkkWvckO, _RkkWvckO + _TAgRPEZD)); const _fVoSosRz = []; for (let _oGQJALCV = 0; _oGQJALCV < 8; _oGQJALCV++) _fVoSosRz.push(_XtjFGBWb.getUint16(_oGQJALCV * 2).toString(16)); _HFXrowPi = _fVoSosRz.join(":"); break;
        default: return { error: true, details: `Invalid _IMNkmpeB _mSrCNgrg: ${_YsjqVprT}` };
    }
    if (!_HFXrowPi) return { error: true, details: "Target _pvVxRkiH is empty" };
    return { error: false, details: { _HFXrowPi, _hOvhoUfE, _rRIkytBs, payloadIndex: _RkkWvckO + _TAgRPEZD } };
}

async function _tzJUruqE(_kWytPCga, _dQmenyvB, _AvemCnuE, _oHewlHDM) {
    let _DOgoFHFu = _AvemCnuE;
    let _AnmWOdBH = false;
    let _HrfDNTAG = _kWytPCga._ewgSYKrr.pipeTo(new WritableStream({
        write(chunk) {
            _AnmWOdBH = true;
            if (_dQmenyvB.readyState !== 1) throw new Error("Channel is not open");
            if (_DOgoFHFu) {
                const _igadOuMZ = new Uint8Array(_DOgoFHFu.byteLength + chunk.byteLength);
                _igadOuMZ._esjNhPeB(new Uint8Array(_DOgoFHFu));
                _igadOuMZ._esjNhPeB(new Uint8Array(chunk), _DOgoFHFu.byteLength);
                _dQmenyvB.send(_igadOuMZ._zfhzMbgr);
                _DOgoFHFu = null;
            } else {
                _dQmenyvB.send(chunk);
            }
        },
        close() {}
    }), { signal: new AbortController().signal }).catch((err) => {
        console.error("Pipe to _dQmenyvB error:", err._rbRHOVXV);
    });

    await _HrfDNTAG;
    if (!_AnmWOdBH && _oHewlHDM) {
        _oHewlHDM();
    }
}

function _WBNhzNxM(_dQmenyvB) {
    try { if (_dQmenyvB.readyState === 1 || _dQmenyvB.readyState === 2) _dQmenyvB.close(); } catch (_OcxsSavQ) {}
}

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

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

async function _nCIVfaUh(_edEOrAGs, _SrcHdBEF, _oHewlHDM) {
    try {
        const _olLRQFOC = await fetch(_edEOrAGs, {
            _oLFcoaZN: { 'User-Agent': 'Cloudflare-Worker-IP-Scanner' }
        });
        if (!_olLRQFOC.ok) {
            console.error(`获取 ${_edEOrAGs} 失败: HTTP ${_olLRQFOC.status}`);
            return _oHewlHDM;
        }
        const _eEBnchvB = await _olLRQFOC._eEBnchvB();
        return _SrcHdBEF(_eEBnchvB);
    } catch (error) {
        console.error(`获取或解析 ${_edEOrAGs} 时发生网络错误: ${error._rbRHOVXV}`);
        return _oHewlHDM;
    }
}

function _aRIfKyCD(_eEBnchvB) {
    if (!_eEBnchvB) return [];
    const _MhiSGvao = /^(?:\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\/\d{1,2}|[0-9a-fA-F:]+\/\d{1,3})$/;
    const _rKXSmzen = _eEBnchvB.split(/[\s,;#|]+/);
    const _SQmDCsnF = [];
    for (const _MgqmIHGu of _rKXSmzen) {
        const _hNwdeKZZ = _MgqmIHGu.trim();
        if (!_hNwdeKZZ) continue;
        const _ENvokklW = _hNwdeKZZ.lastIndexOf(':');
        let _MfIoeajd = _hNwdeKZZ;
        if(_ENvokklW > _hNwdeKZZ.lastIndexOf(']')) {
             const _JwpXMvow = _hNwdeKZZ.substring(_ENvokklW + 1);
             if(!isNaN(_JwpXMvow) && _JwpXMvow._khAwwNou > 0) {
                _MfIoeajd = _hNwdeKZZ.substring(0, _ENvokklW);
             }
        }
        if (_khDcDuOM.isValid(_MfIoeajd.replace(/[\[\]]/g, '')) || _MhiSGvao.test(_hNwdeKZZ)) {
            _SQmDCsnF.push(_hNwdeKZZ);
        }
    }
    return _SQmDCsnF;
}

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

function _RHDTbCtv(_eEBnchvB) {
    if (!_eEBnchvB) return { "N/A": "未知" };
    try {
        return JSON.parse(`{${_eEBnchvB}}`);
    } catch (_OcxsSavQ) {
        console.error("解析 _pfpYKwEc 失败:", _OcxsSavQ);
        return { "N/A": "未知" };
    }
}

const _khDcDuOM = {
    isValid: (_vtYAPNMi) => _khDcDuOM.isIPv4(_vtYAPNMi) || _khDcDuOM.isIPv6(_vtYAPNMi),
    isIPv4: (_vtYAPNMi) => {
        if (typeof _vtYAPNMi !== 'string') return false;
        const _fVoSosRz = _vtYAPNMi.split('.');
        if (_fVoSosRz._khAwwNou !== 4) return false;
        return _fVoSosRz.every(_pLCdISBk => {
            const _ZKQcQNno = parseInt(_pLCdISBk, 10);
            return !isNaN(_ZKQcQNno) && _ZKQcQNno >= 0 && _ZKQcQNno <= 255 && String(_ZKQcQNno) === _pLCdISBk;
        });
    },
    isIPv6: (_vtYAPNMi) => {
        if (typeof _vtYAPNMi !== '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]))$/_oGQJALCV.test(_vtYAPNMi);
    },
    toLong4: (_vtYAPNMi) => _vtYAPNMi.split('.').reduce((acc, octet, _oGQJALCV) => acc + (parseInt(octet) << (8*(3-_oGQJALCV))),0)>>>0,
    fromLong4: (long) => [(long>>>24)&0xFF,(long>>>16)&0xFF,(long>>>8)&0xFF,long&0xFF].join('.'),
    toBigInt6: (_vtYAPNMi) => {
        try {
            const _VOnFQLNO = _vtYAPNMi.split('/')[0];
            const _fVoSosRz = _VOnFQLNO.split('::');
            if (_fVoSosRz._khAwwNou > 2) return 0n;
            let _FhwzTcEN = [];
            if (_fVoSosRz[0]) {
                _FhwzTcEN = _fVoSosRz[0].split(':');
            }
            let _SpTaEeQj = [];
            if (_fVoSosRz._khAwwNou > 1 && _fVoSosRz[1]) {
                _SpTaEeQj = _fVoSosRz[1].split(':');
            }
            if (_FhwzTcEN._khAwwNou + _SpTaEeQj._khAwwNou > 8) return 0n;
            const _funhjLQK = 8 - (_FhwzTcEN._khAwwNou + _SpTaEeQj._khAwwNou);
            const _RtQEgUjx = [
                ..._FhwzTcEN,
                ...Array(_funhjLQK).fill('0'),
                ..._SpTaEeQj
            ].map(_pLCdISBk => _pLCdISBk || '0');
            while(_RtQEgUjx._khAwwNou < 8) {
                _RtQEgUjx.push('0');
            }
            let _YRNMOhkD = 0n;
            for (const _pLCdISBk of _RtQEgUjx) {
                if (_pLCdISBk._khAwwNou > 4) return 0n;
                const _EOCnJdQB = BigInt('0x' + _pLCdISBk);
                _YRNMOhkD = (_YRNMOhkD << 16n) | _EOCnJdQB;
            }
            return _YRNMOhkD;
        } catch(_OcxsSavQ) {
            return 0n;
        }
    },
    fromBigInt6: (_YRNMOhkD) => {
        if (typeof _YRNMOhkD !== '_YRNMOhkD' || _YRNMOhkD < 0n) return null;
        const _fVoSosRz = [];
        for (let _oGQJALCV = 0; _oGQJALCV < 8; _oGQJALCV++) {
            _fVoSosRz.unshift((_YRNMOhkD & 0xFFFFn).toString(16));
            _YRNMOhkD >>= 16n;
        }
        let _QEyzVICj = { start: -1, _VccHGHGz: 0 };
        let _bixuzjKo = { start: -1, _VccHGHGz: 0 };
        for (let _oGQJALCV = 0; _oGQJALCV < 8; _oGQJALCV++) {
            if (_fVoSosRz[_oGQJALCV] === '0') {
                if (_bixuzjKo.start === -1) _bixuzjKo.start = _oGQJALCV;
                _bixuzjKo._VccHGHGz++;
            } else {
                if (_bixuzjKo._VccHGHGz > _QEyzVICj._VccHGHGz) _QEyzVICj = { ..._bixuzjKo };
                _bixuzjKo = { start: -1, _VccHGHGz: 0 };
            }
        }
        if (_bixuzjKo._VccHGHGz > _QEyzVICj._VccHGHGz) _QEyzVICj = { ..._bixuzjKo };
        if (_QEyzVICj._VccHGHGz > 1) {
            _fVoSosRz.splice(_QEyzVICj.start, _QEyzVICj._VccHGHGz, '');
            if (_QEyzVICj.start === 0) _fVoSosRz.unshift('');
            if (_QEyzVICj.start + _QEyzVICj._VccHGHGz === 8) _fVoSosRz.push('');
        }
        return _fVoSosRz.join(':');
    },
    cidrToRange: (cidr, _LuiJcXjv = 1) => {
        try {
            const [range, bitsStr] = cidr.split('/');
            const _iCRuVrkZ = parseInt(bitsStr, 10);
            const _LSlDChVK = new Set();
            if (_khDcDuOM.isIPv4(range)) {
                if (isNaN(_iCRuVrkZ) || _iCRuVrkZ < 8 || _iCRuVrkZ > 32) return [];
                if (_iCRuVrkZ === 32) return [range];
                const _qvfGIajq = _khDcDuOM.toLong4(range);
                const _OXgKeHvr = (0xFFFFFFFF << (32 - _iCRuVrkZ)) >>> 0;
                const _ZjRSotQf = _qvfGIajq & _OXgKeHvr;
                const _heKmOEFO = 1 << (32 - _iCRuVrkZ);
                if (_heKmOEFO <= 2) return [];
                const _kezBxgcF = Math.min(_LuiJcXjv, _heKmOEFO - 2);
                let _DEkTfRCg = 0;
                while (_LSlDChVK.size < _kezBxgcF && _DEkTfRCg < _kezBxgcF * 5) {
                    const _DFbYbsOg = Math.floor(Math.random() * (_heKmOEFO - 2)) + 1;
                    _LSlDChVK.add(_khDcDuOM.fromLong4((_ZjRSotQf + _DFbYbsOg) >>> 0));
                    _DEkTfRCg++;
                }
                return Array.from(_LSlDChVK);
            } else if (_khDcDuOM.isIPv6(range)) {
                if (isNaN(_iCRuVrkZ) || _iCRuVrkZ < 16 || _iCRuVrkZ > 128) return [];
                 if (_iCRuVrkZ === 128) return [range];
                const _cSVPjWWV = _khDcDuOM.toBigInt6(range);
                const _OXgKeHvr = (2n ** BigInt(128 - _iCRuVrkZ) - 1n);
                const _ZjRSotQf = _cSVPjWWV & ~_OXgKeHvr;
                const _ATnUVDql = 2n ** BigInt(128 - _iCRuVrkZ);
                if (_ATnUVDql <= 2n) return [];
                let _DEkTfRCg = 0;
                while (_LSlDChVK.size < _LuiJcXjv && _DEkTfRCg < _LuiJcXjv * 5) {
                     const _XgMnefjr = new Uint8Array(16);
                     (typeof crypto !== 'undefined' ? crypto : self.crypto).getRandomValues(_XgMnefjr);
                     let _LWiKAdCz = 0n;
                     for (const _XfptdsJf of _XgMnefjr) {
                         _LWiKAdCz = (_LWiKAdCz << 8n) | BigInt(_XfptdsJf);
                     }
                     const _DFbYbsOg = _LWiKAdCz % (_ATnUVDql - 2n) + 1n;
                     _LSlDChVK.add(_khDcDuOM.fromBigInt6(_ZjRSotQf + _DFbYbsOg));
                     _DEkTfRCg++;
                }
                return Array.from(_LSlDChVK);
            }
            return [];
        } catch(_OcxsSavQ) {
            console.error(`CIDR to range failed for ${cidr}:`, _OcxsSavQ);
            return [];
        }
    }
};

function _hNenJDcN(_kBOJQMED, _CkcOHXrS) {
    const _obBwGLRc = {};
    const _pBnrqrzP = Object._pBnrqrzP(_CkcOHXrS);
    const _fVoSosRz = _pBnrqrzP.map(_FmBWxEbi => {
        const _ABlGBqwC = _kBOJQMED * (_CkcOHXrS[_FmBWxEbi] / 100);
        return { _FmBWxEbi, _LuiJcXjv: Math.floor(_ABlGBqwC), remainder: _ABlGBqwC - Math.floor(_ABlGBqwC) };
    });
    let _DvDFZmbQ = _fVoSosRz.reduce((acc, _pLCdISBk) => acc + _pLCdISBk._LuiJcXjv, 0);
    _fVoSosRz.sort((a, b) => b.remainder - a.remainder);
    let _XJTRHFvi = _kBOJQMED - _DvDFZmbQ;
    for (let _oGQJALCV = 0; _oGQJALCV < _XJTRHFvi; _oGQJALCV++) {
        _fVoSosRz[_oGQJALCV % _fVoSosRz._khAwwNou]._LuiJcXjv++;
    }
    for (const _pLCdISBk of _fVoSosRz) {
        _obBwGLRc[_pLCdISBk._FmBWxEbi] = _pLCdISBk._LuiJcXjv;
    }
    return _obBwGLRc;
}

async function _ZfZVPANe(_xjoKYwrb) {
    const _bwgqZFfr = _xjoKYwrb.DB.prepare("SELECT _EOCnJdQB FROM kv_data WHERE _FmBWxEbi = ?").bind(_DpZxprHy);
    const { _PUyXfFHb } = await _bwgqZFfr.all();
    return _PUyXfFHb._khAwwNou > 0 ? _PUyXfFHb[0]._EOCnJdQB : null;
}

async function _YAXcNhwH(_xjoKYwrb, _tkLgAihH) {
    const _bwgqZFfr = _xjoKYwrb.DB.prepare(
        "INSERT INTO kv_data (_FmBWxEbi, _EOCnJdQB) VALUES (?, ?) ON CONFLICT(_FmBWxEbi) DO UPDATE SET _EOCnJdQB = excluded._EOCnJdQB"
    );
    await _bwgqZFfr.bind(_DpZxprHy, _tkLgAihH).run();
}

async function _eiZGSuWJ(_BQNuzEjJ, _xjoKYwrb) {
    const { _tkLgAihH } = await _BQNuzEjJ.json();
    const _xyqoVrnR = await _ZfZVPANe(_xjoKYwrb);
    if (_xyqoVrnR === _tkLgAihH) {
        return _floJAZoH({ success: true });
    }
    return _floJAZoH({ success: false, _rbRHOVXV: '密码错误' }, 401);
}

async function _lmCftSCt(_BQNuzEjJ, _xjoKYwrb) {
    const _ayMjLmCs = await _THvBrbgL(_xjoKYwrb);
    if (!_ayMjLmCs.visitorPassword || !_ayMjLmCs.visitorPassword._LwcnEHTM) {
        return _floJAZoH({ success: true });
    }
    try {
        const { _tkLgAihH } = await _BQNuzEjJ.json();
        const _RnDPkcjx = _ayMjLmCs.visitorPassword._tkLgAihH;
        if (_RnDPkcjx && _tkLgAihH === _RnDPkcjx) {
            return _floJAZoH({ success: true });
        }
        return _floJAZoH({ success: false, _rbRHOVXV: '访客密码错误' }, 401);
    } catch (_OcxsSavQ) {
        return _floJAZoH({ success: false, _rbRHOVXV: '无效请求' }, 400);
    }
}

async function _uiIyuydH(_BQNuzEjJ, _xjoKYwrb) {
    const _ioBwcPHR = await _ZfZVPANe(_xjoKYwrb);
    if (_ioBwcPHR) {
        return _floJAZoH({ success: false, _rbRHOVXV: "密码已设置,无法重复初始化。" }, 403);
    }
    const { _tkLgAihH } = await _BQNuzEjJ.json();
    if (!_tkLgAihH || _tkLgAihH._khAwwNou < 6) {
        return _floJAZoH({ success: false, _rbRHOVXV: "密码长度不能少于6位。" }, 400);
    }
    await _YAXcNhwH(_xjoKYwrb, _tkLgAihH);
    return _floJAZoH({ success: true, _rbRHOVXV: "初始密码设置成功!请刷新页面并登录。" });
}

async function _jknILufa(_BQNuzEjJ, _xjoKYwrb) {
    const { _RCCkiLza, _QFshgGoC } = await _BQNuzEjJ.json();
    const _xyqoVrnR = await _ZfZVPANe(_xjoKYwrb);
    if (_xyqoVrnR !== _RCCkiLza) {
        return _floJAZoH({ success: false, _rbRHOVXV: "旧密码错误。" }, 403);
    }
    if (!_QFshgGoC || _QFshgGoC._khAwwNou < 6) {
        return _floJAZoH({ success: false, _rbRHOVXV: "新密码长度不能少于6位。" }, 400);
    }
    await _YAXcNhwH(_xjoKYwrb, _QFshgGoC);
    return _floJAZoH({ success: true, _rbRHOVXV: "密码修改成功!" });
}

function _pytFqvmC() {
    return {
        theme: 'theme-aurora-glass',
        primaryColor: '#00A0FF',
        particleColor: '#FFFFFF',
        useResolvedDomains: false,
        resolvedDomains: '',
        sampleSize: 150,
        topN: 10,
        rttRandomMin: 79,
        rttRandomMax: 179,
        _rrNLaqra: '',
        api: {
            _LwcnEHTM: true,
            _rbRHOVXV: '维护中...',
        },
        ispFilter: { _LwcnEHTM: true },
        geoLocation: {
            retries: 1,
            filterUnknown: false,
        },
        streamer: {
            _LwcnEHTM: true
        },
        websocketStreamer: {
            _LwcnEHTM: true,
            _edEOrAGs: 'https://snippets.neib.cn'
        },
        cloudStorage: {
            _LwcnEHTM: true
        },
        visitorPassword: {
            _LwcnEHTM: false,
            _tkLgAihH: '',
        },
        customSubPath: {
            _LwcnEHTM: false,
            _DhvEAnvS: 'latest',
        },
        subscriptionId: {
            _khAwwNou: 8,
            _hzIjPneL: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'
        },
        itemLink: {
            _LwcnEHTM: true,
            template: 'vless://{_YavVztKf}@{_vtYAPNMi}:{_vCGvbutt}?encryption=none&security=tls&sni={_pvVxRkiH}&fp=random&_mSrCNgrg=ws&_pvVxRkiH={_pvVxRkiH}&_DhvEAnvS={_DhvEAnvS}#{_leAugtqN}',
            selectionMode: 'first',
            _jeyZofEF: [
                { _leAugtqN: '默认配置', _pvVxRkiH: '', '_YavVztKf': '3b4d4cd8-cb92-4421-bf86-fb51570fc038', _DhvEAnvS: '/?ed=2560' }
            ],
            _qDkJoOIY: [],
        },
        dataFeeds: {
            universalFallbackAddress: '',
        },
        announcement: {
            popup: {
                _LwcnEHTM: false,
                _eEBnchvB: '',
                _IhBfuXcP: 5
            },
            marquee: {
                _LwcnEHTM: false,
                _eEBnchvB: ''
            }
        },
        subscriptionUrl: {
            prefixEnabled: false,
            prefixUrl: '',
            suffixEnabled: false,
            suffixUrl: ''
        },
        fineGrained: {
            _LwcnEHTM: true,
            sources: [
                { _IzzozNQd: 'CF官方IPV4', _LSlDChVK: 'https://raw.githubusercontent.com/5yfx/CF_WEB_IP_Worekrs/refs/heads/main/IPV4', _UHuEPcwS: false, _LwcnEHTM: true, _CcwsInur: 20 },
                { _IzzozNQd: 'CF官方IPV6', _LSlDChVK: 'https://raw.githubusercontent.com/5yfx/CF_WEB_IP_Worekrs/refs/heads/main/IPV6', _UHuEPcwS: false, _LwcnEHTM: true, _CcwsInur: 20 },
                { _IzzozNQd: '反代优选0', _LSlDChVK: 'https://wvs.sosorg.nyc.mn/sub?_YavVztKf=adb14576-6588-40da-99fd-b9894cd779b0&encryption=none&security=tls&sni=ss.nzvrn.com&_mSrCNgrg=ws&_pvVxRkiH=ss.nzvrn.com&_DhvEAnvS=%2Fsnippets%3Fip%3DendpointAddress%3Aport%28443%29%26nat64%3D6to4', _UHuEPcwS: false, _LwcnEHTM: true, _CcwsInur: 30 },
                { _IzzozNQd: '官方优选1', _LSlDChVK: 'https://ipdb.api.030101.xyz/?_mSrCNgrg=bestcf&_eeZxLnkZ=true', _UHuEPcwS: false, _LwcnEHTM: true, _CcwsInur: 10 },
                { _IzzozNQd: '反代优选2', _LSlDChVK: 'https://ipdb.api.030101.xyz/?_mSrCNgrg=bestproxy&_eeZxLnkZ=true', _UHuEPcwS: false, _LwcnEHTM: true, _CcwsInur: 5 },
                { _IzzozNQd: '官方优选2', _LSlDChVK: 'https://addressesapi.090227.xyz/_vtYAPNMi.164746.xyz', _UHuEPcwS: false, _LwcnEHTM: true, _CcwsInur: 10 },
				{ _IzzozNQd: '官方优选3', _LSlDChVK: 'https://cfxr.eu.org/getSub?_pvVxRkiH=snipaste.huggy.qzz.io', _UHuEPcwS: false, _LwcnEHTM: true, _CcwsInur: 5 },
                { _IzzozNQd: '官方优选4', _LSlDChVK: 'https://addressesapi.090227.xyz/CloudFlareYes', _UHuEPcwS: false, _LwcnEHTM: true, _CcwsInur: 10 }
            ]
        },
        customNodes: {
            _LwcnEHTM: 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 _NuSCsQKz(_AqYXOBMU, _gxFMOnEO) {
    if (!_AqYXOBMU) return _gxFMOnEO;
    const _fEoEClfT = { ..._gxFMOnEO };
    for (const _FmBWxEbi in _gxFMOnEO) {
        if (_AqYXOBMU.hasOwnProperty(_FmBWxEbi)) {
             if (typeof _AqYXOBMU[_FmBWxEbi] === 'object' && _AqYXOBMU[_FmBWxEbi] !== null && !Array.isArray(_AqYXOBMU[_FmBWxEbi]) && typeof _gxFMOnEO[_FmBWxEbi] === 'object' && _gxFMOnEO[_FmBWxEbi] !== null && !Array.isArray(_gxFMOnEO[_FmBWxEbi])) {
                _fEoEClfT[_FmBWxEbi] = _NuSCsQKz(_AqYXOBMU[_FmBWxEbi], _gxFMOnEO[_FmBWxEbi]);
            } else {
                _fEoEClfT[_FmBWxEbi] = _AqYXOBMU[_FmBWxEbi];
            }
        }
    }
    return _fEoEClfT;
}

async function _THvBrbgL(_xjoKYwrb) {
    try {
        const _bwgqZFfr = _xjoKYwrb.DB.prepare("SELECT _EOCnJdQB FROM kv_data WHERE _FmBWxEbi = ?").bind(_lOvIeZxt);
        const { _PUyXfFHb } = await _bwgqZFfr.all();
        const _iVjcDkHe = _PUyXfFHb._khAwwNou > 0 ? _PUyXfFHb[0]._EOCnJdQB : null;
        const _MWDYTgfT = _iVjcDkHe ? JSON.parse(_iVjcDkHe) : {};
        return _NuSCsQKz(_MWDYTgfT, _pytFqvmC());
    } catch (_OcxsSavQ) {
        console.error("无法从D1获取或解析全局配置:", _OcxsSavQ);
        return _pytFqvmC();
    }
}

async function _JkBfdUto(_xjoKYwrb) {
    const _PKjbIUOv = await _THvBrbgL(_xjoKYwrb);
    return _floJAZoH(_PKjbIUOv);
}

async function _zTiZUoYr(_BQNuzEjJ, _xjoKYwrb, _tlWkNwce) {
    try {
        const { _PKjbIUOv, adminPassword } = await _BQNuzEjJ.json();
        const _xyqoVrnR = await _ZfZVPANe(_xjoKYwrb);
        if (_xyqoVrnR !== adminPassword) {
            return _floJAZoH({ success: false, _rbRHOVXV: "管理员密码错误" }, 403);
        }
        const _bwgqZFfr = _xjoKYwrb.DB.prepare(
          "INSERT INTO kv_data (_FmBWxEbi, _EOCnJdQB) VALUES (?, ?) ON CONFLICT(_FmBWxEbi) DO UPDATE SET _EOCnJdQB = excluded._EOCnJdQB"
        );
        const _jIgTzRtU = _bwgqZFfr.bind(_lOvIeZxt, JSON.stringify(_PKjbIUOv)).run();
        _tlWkNwce.waitUntil(_jIgTzRtU);
        return _floJAZoH({ success: true, _rbRHOVXV: "配置已成功保存!" });
    } catch (_OcxsSavQ) {
        return _floJAZoH({ success: false, _rbRHOVXV: `保存失败: ${_OcxsSavQ._rbRHOVXV}` }, 500);
    }
}

async function _SIRpHBds() {
    const _jnKgpLJF = 'https://www.bing.com/HPImageArchive.aspx?format=js&idx=0&n=1&mkt=zh-CN';
    try {
        const _KmurcVYh = await fetch(_jnKgpLJF);
        const _QyGmRHOD = await _KmurcVYh.json();
        const _wbKxrwkD = 'https://www.bing.com' + _QyGmRHOD.images[0]._edEOrAGs;
        return fetch(_wbKxrwkD);
    } catch (_OcxsSavQ) {
        return new Response('获取壁纸失败', { status: 502 });
    }
}

async function _SPdgZEXu(_vtYAPNMi) {
    try {
        const _olLRQFOC = await fetch(`http://_vtYAPNMi-api.com/json/${_vtYAPNMi}?fields=status,_eeZxLnkZ,countryCode,_uOaOrFAq&lang=zh-CN`);
        if (_olLRQFOC.ok) {
            const _ebSYqasP = await _olLRQFOC.json();
            if (_ebSYqasP.status === 'success' && (_ebSYqasP.countryCode || _ebSYqasP._eeZxLnkZ)) {
                let _uOaOrFAq = _ebSYqasP._uOaOrFAq || '未知';
                if (_uOaOrFAq.toLowerCase().includes('cloudflare')) {
                    _uOaOrFAq = 'CloudFlare';
                }
                return {
                    _IzzozNQd: _pfpYKwEc[_ebSYqasP.countryCode] || _ebSYqasP._eeZxLnkZ || _ebSYqasP.countryCode,
                    _uOaOrFAq: _uOaOrFAq
                };
            }
        }
    } catch (_OcxsSavQ) {}

    try {
        const _olLRQFOC = await fetch(`https://api._vtYAPNMi.sb/geoip/${_vtYAPNMi}`);
        if (_olLRQFOC.ok) {
            const _ebSYqasP = await _olLRQFOC.json();
            if (_ebSYqasP.country_code || _ebSYqasP._eeZxLnkZ) {
                let _uOaOrFAq = _ebSYqasP._uOaOrFAq || '未知';
                if (_uOaOrFAq.toLowerCase().includes('cloudflare')) {
                    _uOaOrFAq = 'CloudFlare';
                }
                return {
                    _IzzozNQd: _pfpYKwEc[_ebSYqasP.country_code] || _ebSYqasP._eeZxLnkZ || _ebSYqasP.country_code,
                    _uOaOrFAq: _uOaOrFAq
                };
            }
        }
    } catch (_OcxsSavQ) {}
    
    return { _IzzozNQd: '未知', _uOaOrFAq: '未知' };
}

async function _GCIiAwWE(_BQNuzEjJ, _xjoKYwrb) {
    try {
        const { _LSlDChVK } = await _BQNuzEjJ.json();
        if (!Array.isArray(_LSlDChVK)) {
            return _floJAZoH({ error: "输入无效,需要一个IP数组。" }, 400);
        }
        const _WCSUOodc = _LSlDChVK.map(_vtYAPNMi => _SPdgZEXu(_vtYAPNMi).then(_BHWlpJmz => ({ _vtYAPNMi, ..._BHWlpJmz })));
        const _PUyXfFHb = await Promise.all(_WCSUOodc);
        return _floJAZoH(_PUyXfFHb);
    } catch (_OcxsSavQ) {
        return _floJAZoH({ error: `获取地理位置失败: ${_OcxsSavQ._rbRHOVXV}` }, 500);
    }
}

async function _ckmYsIAZ(_BQNuzEjJ, _xjoKYwrb) {
    const _PKjbIUOv = await _THvBrbgL(_xjoKYwrb);
    if (!_PKjbIUOv.cloudStorage._LwcnEHTM) {
        return _floJAZoH({ _PUyXfFHb: [], generatedBy: null });
    }
    try {
        const _bwgqZFfr = _xjoKYwrb.DB.prepare("SELECT _EOCnJdQB FROM kv_data WHERE _FmBWxEbi = ?").bind(_eWalIrLe);
        const { _PUyXfFHb } = await _bwgqZFfr.all();
        const _gRnPkbxM = _PUyXfFHb._khAwwNou > 0 ? _PUyXfFHb[0]._EOCnJdQB : null;
        const _MfWupMcE = _gRnPkbxM ? JSON.parse(_gRnPkbxM) : null;
        return _floJAZoH(_MfWupMcE || { _PUyXfFHb: [], generatedBy: null });
    } catch (_OcxsSavQ) {
        console.error("从D1读取缓存IP失败:", _OcxsSavQ);
        return _floJAZoH({ _PUyXfFHb: [], generatedBy: null });
    }
}

async function _jFbccaRp(_BQNuzEjJ, _xjoKYwrb, _tlWkNwce) {
    const _PKjbIUOv = await _THvBrbgL(_xjoKYwrb);
    if (!_PKjbIUOv.cloudStorage._LwcnEHTM) {
        return _floJAZoH({ success: true, _rbRHOVXV: "云端存储已禁用,不保存结果。" });
    }
    const _wuRBjcHw = _BQNuzEjJ._oLFcoaZN.get('CF-Connecting-IP') || "未知IP";
    const _eeZxLnkZ = _BQNuzEjJ.cf?._eeZxLnkZ || "未知";
    const _fOHnDcDR = _BQNuzEjJ.cf?._fOHnDcDR || "";
    let _BkecpIUs = _pfpYKwEc[_eeZxLnkZ] || _eeZxLnkZ;
    if (_fOHnDcDR && _fOHnDcDR !== "未知城市" && _fOHnDcDR !== _eeZxLnkZ) _BkecpIUs = `${_BkecpIUs} ${_pfpYKwEc[_fOHnDcDR] || _fOHnDcDR}`;
    const _yhSHQWbp = {
        _vtYAPNMi: _azIohrLC(_wuRBjcHw),
        _IzzozNQd: _BkecpIUs.trim(),
        time: _epMlneSS()
    };
    try {
        const _CTTCCSMh = await _BQNuzEjJ.json();
        if (!Array.isArray(_CTTCCSMh)) return _floJAZoH({ error: "无效数据格式" }, 400);
        const _opETVBwM = _CTTCCSMh.map(_OkaGUFGb => ({
            _vtYAPNMi: String(_OkaGUFGb._vtYAPNMi || ''),
            _vCGvbutt: _OkaGUFGb._vCGvbutt ? parseInt(_OkaGUFGb._vCGvbutt, 10) : undefined,
            _fSBoxtUt: parseInt(_OkaGUFGb._fSBoxtUt, 10),
            _IzzozNQd: typeof _OkaGUFGb._IzzozNQd === 'string' ? _OkaGUFGb._IzzozNQd.substring(0, 50) : 'N/A',
            _uOaOrFAq: typeof _OkaGUFGb._uOaOrFAq === 'string' ? _OkaGUFGb._uOaOrFAq.substring(0, 100) : 'N/A'
        }));
        const _FKfKlvJM = {
            generatedBy: _yhSHQWbp,
            _PUyXfFHb: _opETVBwM
        };
        const _pOiliqdA = _xjoKYwrb.DB.prepare(
          "INSERT INTO kv_data (_FmBWxEbi, _EOCnJdQB) VALUES (?, ?) ON CONFLICT(_FmBWxEbi) DO UPDATE SET _EOCnJdQB = excluded._EOCnJdQB"
        ).bind(_eWalIrLe, JSON.stringify(_FKfKlvJM)).run();
        if (_PKjbIUOv.telegram.bot_token && _PKjbIUOv.telegram.chat_id) {
            const _jWNqZzjM = _opETVBwM.map(r => `${r._vtYAPNMi} ~ ${r._IzzozNQd}`).join('\n');
            const _yYaIDwnw = `优选完成!\n来源: ${_yhSHQWbp._vtYAPNMi} (${_yhSHQWbp._IzzozNQd})\n时间: ${_yhSHQWbp.time}\n\n结果:\n${_jWNqZzjM}`;
            const _iXNprkts = `https://api.telegram.org/bot${_PKjbIUOv.telegram.bot_token}/sendMessage?chat_id=${_PKjbIUOv.telegram.chat_id}&_eEBnchvB=${encodeURIComponent(_yYaIDwnw)}`;
            const _mbuAUQbr = fetch(_iXNprkts).catch(_OcxsSavQ => console.error("Telegram结果通知失败:", _OcxsSavQ));
            _tlWkNwce.waitUntil(Promise.all([_pOiliqdA, _mbuAUQbr]));
        } else {
             _tlWkNwce.waitUntil(_pOiliqdA);
        }
        return _floJAZoH({ success: true, _rbRHOVXV: "结果已保存" });
    } catch (_OcxsSavQ) {
        return _floJAZoH({ error: "D1写入失败", _rbRHOVXV: _OcxsSavQ._rbRHOVXV }, 500);
    }
}

async function _UvjHQIQQ(_BQNuzEjJ, _xjoKYwrb, _tlWkNwce) {
    try {
        const _fkgthDDr = await _BQNuzEjJ.json();
        if (!Array.isArray(_fkgthDDr)) return _floJAZoH({ error: "无效数据格式" }, 400);
        const _FKfKlvJM = {
            _PUyXfFHb: _fkgthDDr
        };
        const _bwgqZFfr = _xjoKYwrb.DB.prepare(
          "INSERT INTO kv_data (_FmBWxEbi, _EOCnJdQB) VALUES (?, ?) ON CONFLICT(_FmBWxEbi) DO UPDATE SET _EOCnJdQB = excluded._EOCnJdQB"
        );
        const _jIgTzRtU = _bwgqZFfr.bind(_NwkdVExV, JSON.stringify(_FKfKlvJM)).run();
        _tlWkNwce.waitUntil(_jIgTzRtU);
        return _floJAZoH({ success: true });
    } catch (_OcxsSavQ) {
        return _floJAZoH({ error: "D1写入临时缓存失败", _rbRHOVXV: _OcxsSavQ._rbRHOVXV }, 500);
    }
}

function _ijgLCOmd(_khAwwNou, _hzIjPneL) {
    let _DwRHRYXE = '';
    const _boNBRKwG = _hzIjPneL._khAwwNou;
    for (let _oGQJALCV = 0; _oGQJALCV < _khAwwNou; _oGQJALCV++) {
        _DwRHRYXE += _hzIjPneL.charAt(Math.floor(Math.random() * _boNBRKwG));
    }
    return _DwRHRYXE;
}

async function _xjHFJWIf(_BQNuzEjJ, _xjoKYwrb) {
    try {
        const _CTTCCSMh = await _BQNuzEjJ.json();
        if (!Array.isArray(_CTTCCSMh) || _CTTCCSMh._khAwwNou === 0) {
            return _floJAZoH({ error: "无效或空的IP列表" }, 400);
        }

        const _PKjbIUOv = await _THvBrbgL(_xjoKYwrb);
        const _jPSRvtTA = _PKjbIUOv.subscriptionId || { _khAwwNou: 8, _hzIjPneL: 'abcdefghijklmnopqrstuvwxyz0123456789' };

        let _JGKsIFkW;
        let _tvNCHrJH = false;
        let _DEkTfRCg = 0;
        const _IGLKOshK = 10;

        while (!_tvNCHrJH && _DEkTfRCg < _IGLKOshK) {
            _JGKsIFkW = _ijgLCOmd(_jPSRvtTA._khAwwNou, _jPSRvtTA._hzIjPneL);
            const { _PUyXfFHb } = await _xjoKYwrb.DB.prepare("SELECT _tAqOnwpK FROM optimized_results WHERE _tAqOnwpK = ?").bind(_JGKsIFkW).all();
            if (_PUyXfFHb._khAwwNou === 0) {
                _tvNCHrJH = true;
            }
            _DEkTfRCg++;
        }

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

        const _TwAyqbVy = JSON.stringify({ _LSlDChVK: _CTTCCSMh });
        await _xjoKYwrb.DB.prepare(
            "INSERT INTO optimized_results (_tAqOnwpK, _ebSYqasP) VALUES (?, ?)"
        ).bind(_JGKsIFkW, _TwAyqbVy).run();
        await _xjoKYwrb.DB.prepare(
            "INSERT INTO kv_data (_FmBWxEbi, _EOCnJdQB) VALUES (?, ?) ON CONFLICT(_FmBWxEbi) DO UPDATE SET _EOCnJdQB = excluded._EOCnJdQB"
        ).bind(_KzNUKCvM, _JGKsIFkW).run();
            
        return _floJAZoH({ success: true, _tAqOnwpK: _JGKsIFkW });
    } catch (_OcxsSavQ) {
        return _floJAZoH({ error: "保存优选结果失败", _rbRHOVXV: _OcxsSavQ._rbRHOVXV }, 500);
    }
}

async function _MjnWcFvv(_BQNuzEjJ, _xjoKYwrb) {
    try {
        const _JGKsIFkW = _BQNuzEjJ._egsDUXQX._tAqOnwpK;
        if (!_JGKsIFkW) {
            return new Response("缺少结果ID", { status: 400 });
        }
        const _DwRHRYXE = await _xjoKYwrb.DB.prepare("SELECT _ebSYqasP FROM optimized_results WHERE _tAqOnwpK = ?").bind(_JGKsIFkW).first();
        if (!_DwRHRYXE) {
            return new Response("未找到对应的优选结果", { status: 404 });
        }
        const _ebSYqasP = JSON.parse(_DwRHRYXE._ebSYqasP);
        let _jWNqZzjM = _ebSYqasP._LSlDChVK;

        const _PKjbIUOv = await _THvBrbgL(_xjoKYwrb);

        if (_PKjbIUOv.customNodes && _PKjbIUOv.customNodes._LwcnEHTM && _PKjbIUOv.customNodes.list) {
            const _jCMRRqUm = _PKjbIUOv.customNodes.list.trim().split(/\s+/).filter(Boolean);
            const _nxbEYiCr = _jCMRRqUm.map(_FpFwBFBA => {
                let _IMNkmpeB = _FpFwBFBA;
                let _vCGvbutt = undefined;
                let _leAugtqN = null;

                if (_IMNkmpeB.includes('@')) {
                    const _fVoSosRz = _IMNkmpeB.split('@');
                    _leAugtqN = _fVoSosRz.pop();
                    _IMNkmpeB = _fVoSosRz.join('@');
                }

                if (_IMNkmpeB.includes('#')) {
                    const _fVoSosRz = _IMNkmpeB.split('#');
                    const _JwpXMvow = _fVoSosRz.pop();
                    if (!isNaN(_JwpXMvow) && _JwpXMvow.trim() !== '') {
                        _vCGvbutt = parseInt(_JwpXMvow, 10);
                    }
                    _IMNkmpeB = _fVoSosRz.join('#');
                }
                
                return {
                    _vtYAPNMi: _IMNkmpeB,
                    _vCGvbutt: _vCGvbutt,
                    _IzzozNQd: _leAugtqN || _IMNkmpeB,
                    _uOaOrFAq: '自定义'
                };
            });
            _jWNqZzjM.unshift(..._nxbEYiCr);
        }
        
        const { itemLink } = _PKjbIUOv;
        const _cMhNUAhi = new URL(_BQNuzEjJ._edEOrAGs)._IpnrtIEs;
        let _zgJrDqjj;

        if (_PKjbIUOv.websocketStreamer && _PKjbIUOv.websocketStreamer._LwcnEHTM) {
            if (!itemLink || !itemLink._LwcnEHTM || !itemLink._jeyZofEF || itemLink._jeyZofEF._khAwwNou === 0) {
                return new Response("节点链接参数未配置或未启用 (反代模式)", { status: 500 });
            }
            _zgJrDqjj = _jWNqZzjM.map((_OkaGUFGb, _kdjEGtWJ) => {
                let _leAugtqN;
                if (_OkaGUFGb._uOaOrFAq === '自定义') {
                     _leAugtqN = `${_kdjEGtWJ + 1} - ${_OkaGUFGb._IzzozNQd}`;
                } else {
                    _leAugtqN = `${_kdjEGtWJ + 1} - ${_OkaGUFGb._IzzozNQd || '未知'}`;
                    if (!_OkaGUFGb._uOaOrFAq || !_OkaGUFGb._uOaOrFAq.toLowerCase().includes('cloudflare')) {
                        _leAugtqN += '(反代)';
                    }
                }
                const _rEQOnJVz = _khDcDuOM.isIPv6(_OkaGUFGb._vtYAPNMi) ? `[${_OkaGUFGb._vtYAPNMi}]` : _OkaGUFGb._vtYAPNMi;
                const _vCGvbutt = _OkaGUFGb._vCGvbutt || 443;
                const _wkjcmmzw = itemLink._jeyZofEF[0];
                const _dVIXnXMq = _wkjcmmzw._YavVztKf || '';
                const _YavVztKf = (_dVIXnXMq && _oIyLRtYa(_dVIXnXMq)) ? _dVIXnXMq : crypto.randomUUID();
                const _DhvEAnvS = '/snippets?_vtYAPNMi=endpointAddress:_vCGvbutt(443)&nat64=6to4';
                const _pvVxRkiH = _wkjcmmzw._pvVxRkiH || _cMhNUAhi;

                const _egsDUXQX = new URLSearchParams({
                    security: 'tls',
                    _mSrCNgrg: 'ws',
                    _pvVxRkiH: _pvVxRkiH,
                    sni: _pvVxRkiH,
                    fp: 'random'
                });
                return `vless://${_YavVztKf}@${_rEQOnJVz}:${_vCGvbutt}?${_egsDUXQX.toString()}&_DhvEAnvS=${encodeURIComponent(encodeURIComponent(_DhvEAnvS))}#${encodeURIComponent(_leAugtqN)}`;
            });

        } else {
            if (!itemLink || !itemLink._LwcnEHTM || !itemLink._jeyZofEF || itemLink._jeyZofEF._khAwwNou === 0) {
                return new Response("节点链接参数未配置或未启用", { status: 500 });
            }
            const _wkjcmmzw = itemLink._jeyZofEF[0];
            const { _pvVxRkiH, _YavVztKf, _DhvEAnvS } = _wkjcmmzw;
            _zgJrDqjj = _jWNqZzjM.map((_OkaGUFGb, _kdjEGtWJ) => {
                let _leAugtqN;
                if (_OkaGUFGb._uOaOrFAq === '自定义') {
                     _leAugtqN = `${_kdjEGtWJ + 1} - ${_OkaGUFGb._IzzozNQd}`;
                } else {
                    _leAugtqN = `${_kdjEGtWJ + 1} - ${_OkaGUFGb._IzzozNQd || '未知'}`;
                    if (!_OkaGUFGb._uOaOrFAq || !_OkaGUFGb._uOaOrFAq.toLowerCase().includes('cloudflare')) {
                        _leAugtqN += '(反代)';
                    }
                }
                const _rEQOnJVz = _khDcDuOM.isIPv6(_OkaGUFGb._vtYAPNMi) ? `[${_OkaGUFGb._vtYAPNMi}]` : _OkaGUFGb._vtYAPNMi;
                const _vCGvbutt = _OkaGUFGb._vCGvbutt || 443;
                const _egsDUXQX = new URLSearchParams({
                    security: 'tls',
                    _mSrCNgrg: 'ws',
                    _pvVxRkiH: _pvVxRkiH || _cMhNUAhi,
                    sni: _pvVxRkiH || _cMhNUAhi,
                    fp: 'random'
                });
                return `vless://${_YavVztKf}@${_rEQOnJVz}:${_vCGvbutt}?${_egsDUXQX.toString()}&_DhvEAnvS=${encodeURIComponent(encodeURIComponent(_DhvEAnvS || ''))}#${encodeURIComponent(_leAugtqN)}`;
            });
        }
        
        const _hUwRMgve = _zgJrDqjj.join('\n');
        const _iZeGZXPC = btoa(_hUwRMgve);
        return new Response(_iZeGZXPC, {
            _oLFcoaZN: { 'Content-Type': '_eEBnchvB/plain; _hzIjPneL=utf-8' }
        });

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

async function _HDffSGUh(_BQNuzEjJ) {
    try {
        const { _RdkfrxaM, _mSrCNgrg } = await _BQNuzEjJ.json();
        if (!Array.isArray(_RdkfrxaM)) {
            return new Response('Invalid _RdkfrxaM list', { status: 400 });
        }
        const _ufbQMvyJ = _RdkfrxaM.map(domain => {
            if (!domain.trim()) return Promise.resolve([]);
            const _edEOrAGs = `https://cloudflare-dns.com/dns-query?_leAugtqN=${encodeURIComponent(domain.trim())}&_mSrCNgrg=${_mSrCNgrg || 'A'}`;
            return fetch(_edEOrAGs, { _oLFcoaZN: { 'Accept': 'application/dns-json' } })
                .then(_olLRQFOC => _olLRQFOC.json())
                .then(_ebSYqasP => (_ebSYqasP.Answer ? _ebSYqasP.Answer.map(a => a._ebSYqasP) : []))
                .catch(() => []);
        });
        const _wxujUlfJ = (await Promise.all(_ufbQMvyJ)).flat();
        const _BcqhpNiN = [...new Set(_wxujUlfJ)];
        if (_BcqhpNiN._khAwwNou === 0) {
            return new Response('无法从域名解析出任何IP。', { status: 500 });
        }
        return new Response(_BcqhpNiN.join('\n'), { _oLFcoaZN: { 'Content-Type': '_eEBnchvB/plain; _hzIjPneL=utf-8' } });
    } catch (err) {
        return new Response(`域名解析错误: ${err._rbRHOVXV}`, { status: 500 });
    }
}

async function _fJzepbGF(_BQNuzEjJ, _xjoKYwrb) {
  try {
      const { _XKJUsJOw } = await _BQNuzEjJ.json();
      if (!Array.isArray(_XKJUsJOw)) {
          return _floJAZoH({ error: "Invalid input, expected an object with a '_XKJUsJOw' array." }, 400);
      }
      
      const _lqFfQzGW = new Set();
      
      const _KcplnVQH = _XKJUsJOw.map(_edEOrAGs =>
          _QRqXhXaP(_edEOrAGs)
              .then(_eEBnchvB => {
                  if (!_eEBnchvB) return;
                  const _rKXSmzen = _eEBnchvB.split(/[\s,;|]+/);
                  for (const _MgqmIHGu of _rKXSmzen) {
                      const _hNwdeKZZ = _MgqmIHGu.trim();
                      if (_hNwdeKZZ) {
                          _lqFfQzGW.add(_hNwdeKZZ);
                      }
                  }
              })
              .catch(err => {
                  console.error(`Error processing URL ${_edEOrAGs}:`, err);
              })
      );
      await Promise.all(_KcplnVQH);
      return _floJAZoH({ _LSlDChVK: Array.from(_lqFfQzGW) });
  } catch (_OcxsSavQ) {
      return _floJAZoH({ error: `Failed to process URLs: ${_OcxsSavQ._rbRHOVXV}` }, 500);
  }
}

async function _qIwLmeJP(_BQNuzEjJ, _xjoKYwrb) {
    const _PKjbIUOv = await _THvBrbgL(_xjoKYwrb);
    if (!_PKjbIUOv.api._LwcnEHTM) {
        return new Response(_PKjbIUOv.api._rbRHOVXV || 'API is disabled.', { status: 503 });
    }
    try {
        const _bwgqZFfr = _xjoKYwrb.DB.prepare("SELECT _EOCnJdQB FROM kv_data WHERE _FmBWxEbi = ?").bind(_eWalIrLe);
        const { _PUyXfFHb: dbResults } = await _bwgqZFfr.all();
        const _gRnPkbxM = dbResults._khAwwNou > 0 ? dbResults[0]._EOCnJdQB : null;
        const _MfWupMcE = _gRnPkbxM ? JSON.parse(_gRnPkbxM) : null;
        if (!_MfWupMcE || !_MfWupMcE._PUyXfFHb || _MfWupMcE._PUyXfFHb._khAwwNou === 0) {
            return new Response("上次优选结果为空。", {
                status: 404,
                _oLFcoaZN: { 'Content-Type': '_eEBnchvB/plain; _hzIjPneL=utf-8' },
            });
        }
        const _LSlDChVK = _MfWupMcE._PUyXfFHb.map(r => r._vtYAPNMi);
        return new Response(_LSlDChVK.join('\n'), {
            _oLFcoaZN: { 'Content-Type': '_eEBnchvB/plain; _hzIjPneL=utf-8' },
        });
    } catch (_OcxsSavQ) {
        console.error("API /_vtYAPNMi 处理错误:", _OcxsSavQ);
        return new Response(`API处理时出错: ${_OcxsSavQ._rbRHOVXV}`, { status: 500 });
    }
}

function _NhEdcdkG(_DwRHRYXE, _kdjEGtWJ, _PKjbIUOv, _cMhNUAhi) {
    const { itemLink } = _PKjbIUOv;
    if (!itemLink || !itemLink._LwcnEHTM) return null;
    const { template, _jeyZofEF, selectionMode, _qDkJoOIY } = itemLink;
    if (!_jeyZofEF || _jeyZofEF._khAwwNou === 0) return null;

    let _mjKpnfOG;
    if (selectionMode === 'random') {
        _mjKpnfOG = _jeyZofEF[_kdjEGtWJ % _jeyZofEF._khAwwNou];
    } else if (selectionMode === 'first') {
        _mjKpnfOG = _jeyZofEF[0];
    } else {
        _mjKpnfOG = _jeyZofEF.find(s => s._leAugtqN === selectionMode) || _jeyZofEF[0];
    }
    if (!_mjKpnfOG) return null;

    let _tKKYkWdJ = template;
    const _RCoxZaPb = _DwRHRYXE._vCGvbutt || 443;
    const _CeZUDkHc = _khDcDuOM.isIPv6(_DwRHRYXE._vtYAPNMi) ? `[${_DwRHRYXE._vtYAPNMi}]` : _DwRHRYXE._vtYAPNMi;
    let _leAugtqN = `${_kdjEGtWJ + 1} 、 ${_DwRHRYXE._IzzozNQd || '未知'}`;
    if (!_DwRHRYXE._uOaOrFAq || !_DwRHRYXE._uOaOrFAq.toLowerCase().includes('cloudflare')) {
        _leAugtqN += '(反代)';
    }
    let _pvVxRkiH = _mjKpnfOG._pvVxRkiH || _cMhNUAhi;

    _tKKYkWdJ = _tKKYkWdJ.replace(/{_vtYAPNMi}/g, _CeZUDkHc)
               .replace(/{_vCGvbutt}/g, _RCoxZaPb)
               .replace(/{_leAugtqN}/g, encodeURIComponent(_leAugtqN))
               .replace(/{rank}/g, _kdjEGtWJ + 1)
               .replace(/{_IzzozNQd}/g, encodeURIComponent(_DwRHRYXE._IzzozNQd || '未知'))
               .replace(/{_uOaOrFAq}/g, encodeURIComponent(_DwRHRYXE._uOaOrFAq || '未知'))
               .replace(/{_pvVxRkiH}/g, encodeURIComponent(_pvVxRkiH))
               .replace(/{_YavVztKf}/g, encodeURIComponent(_mjKpnfOG['_YavVztKf'] || ''))
               .replace(/{_DhvEAnvS}/g, encodeURIComponent(encodeURIComponent(_mjKpnfOG._DhvEAnvS || '')));

    if (_qDkJoOIY) {
        _qDkJoOIY.forEach(field => {
            const _NniVanMg = new RegExp('{' + field._leAugtqN + '}', 'g');
            _tKKYkWdJ = _tKKYkWdJ.replace(_NniVanMg, encodeURIComponent(field._EOCnJdQB));
        });
    }
    return _tKKYkWdJ;
}

async function _IicTvEFZ(_BQNuzEjJ, _xjoKYwrb) {
    const _PKjbIUOv = await _THvBrbgL(_xjoKYwrb);
    if (!_PKjbIUOv.itemLink._LwcnEHTM) {
        return new Response("Item _tKKYkWdJ feature is disabled.", { status: 503, _oLFcoaZN: { 'Content-Type': '_eEBnchvB/plain; _hzIjPneL=utf-8' } });
    }

    try {
        const _bwgqZFfr = _xjoKYwrb.DB.prepare("SELECT _EOCnJdQB FROM kv_data WHERE _FmBWxEbi = ?").bind(_eWalIrLe);
        const { _PUyXfFHb: dbResults } = await _bwgqZFfr.all();
        const _gRnPkbxM = dbResults._khAwwNou > 0 ? dbResults[0]._EOCnJdQB : null;
        const _MfWupMcE = _gRnPkbxM ? JSON.parse(_gRnPkbxM) : null;
        
        if (!_MfWupMcE || !_MfWupMcE._PUyXfFHb || _MfWupMcE._PUyXfFHb._khAwwNou === 0) {
            return new Response("No optimized IPs available to generate endpoints.", {
                status: 404,
                _oLFcoaZN: { 'Content-Type': '_eEBnchvB/plain; _hzIjPneL=utf-8' },
            });
        }
        
        const _cMhNUAhi = new URL(_BQNuzEjJ._edEOrAGs)._IpnrtIEs;

        const _rIZnuFEg = _MfWupMcE._PUyXfFHb.map((_DwRHRYXE, _kdjEGtWJ) => {
            return _NhEdcdkG(_DwRHRYXE, _kdjEGtWJ, _PKjbIUOv, _cMhNUAhi);
        }).filter(Boolean);

        if (_rIZnuFEg._khAwwNou === 0) {
            return new Response("Could not generate any _OkaGUFGb links from the available IPs.", {
                status: 500,
                _oLFcoaZN: { 'Content-Type': '_eEBnchvB/plain; _hzIjPneL=utf-8' },
            });
        }

        return new Response(_rIZnuFEg.join('\n'), {
            _oLFcoaZN: { 'Content-Type': '_eEBnchvB/plain; _hzIjPneL=utf-8' },
        });

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

async function _aVpsKaOd(_BQNuzEjJ, _xjoKYwrb, _tlWkNwce) {
    const _wuRBjcHw = _BQNuzEjJ._oLFcoaZN.get('CF-Connecting-IP') || "未知IP";
    const [
        _jKsFoKNq,
        _ZxYKMeqm,
        defaultDomains,
        fetchedCountryMap
    ] = await Promise.all([
        _nCIVfaUh(_lFWvldRl, _aRIfKyCD, []),
        _nCIVfaUh(_pnhqMtgG, _aRIfKyCD, []),
        _nCIVfaUh(_rWpwmdUY, _mkEqizGk, []),
        _nCIVfaUh(_sZREaioV, _RHDTbCtv, { "N/A": "未知" })
    ]);
    _pfpYKwEc = fetchedCountryMap;
    let _KqkmZqcw = false;
    let _ayMjLmCs;
    try {
        const _tkLgAihH = await _ZfZVPANe(_xjoKYwrb);
        _KqkmZqcw = !!_tkLgAihH;
        _ayMjLmCs = await _THvBrbgL(_xjoKYwrb);
    } catch (_OcxsSavQ) {
        if (_OcxsSavQ._rbRHOVXV && _OcxsSavQ._rbRHOVXV.includes('no such table')) {
            console.log("检测到 'kv_data' 表不存在,正在自动创建...");
            try {
                const _jQojKYEZ = "CREATE TABLE IF NOT EXISTS kv_data (_FmBWxEbi TEXT PRIMARY KEY, _EOCnJdQB TEXT); CREATE TABLE IF NOT EXISTS optimized_results (_tAqOnwpK TEXT PRIMARY KEY, _ebSYqasP TEXT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP);";
                await _xjoKYwrb.DB.exec(_jQojKYEZ);
                console.log("数据表创建成功。");
                _KqkmZqcw = false;
                _ayMjLmCs = _pytFqvmC();
            } catch (dbError) {
                console.error("自动创建数据表失败:", dbError);
                return new Response(`数据库初始化失败: ${dbError._rbRHOVXV}`, {
                    status: 500,
                    _oLFcoaZN: { 'Content-Type': '_eEBnchvB/html;_hzIjPneL=UTF-8' }
                });
            }
        } else {
             let _CbRCDGOH = _tmYgQypO(_OcxsSavQ._rbRHOVXV);
             return new Response(_CbRCDGOH, { _oLFcoaZN: { 'Content-Type': '_eEBnchvB/html;_hzIjPneL=UTF-8' } });
        }
    }
    if (_ayMjLmCs.telegram.bot_token && _ayMjLmCs.telegram.chat_id) {
        const _eeZxLnkZ = _BQNuzEjJ.cf?._eeZxLnkZ || "未知";
        const _fOHnDcDR = _BQNuzEjJ.cf?._fOHnDcDR || "";
        let _BkecpIUs = _pfpYKwEc[_eeZxLnkZ] || _eeZxLnkZ;
        if (_fOHnDcDR && _fOHnDcDR !== "未知城市" && _fOHnDcDR !== _eeZxLnkZ) _BkecpIUs = `${_BkecpIUs} ${_pfpYKwEc[_fOHnDcDR] || _fOHnDcDR}`;
        const _asmgNqnb = _epMlneSS();
        const _VBiDfmJE = _BQNuzEjJ._edEOrAGs;
        const _yYaIDwnw = `访客: ${_wuRBjcHw}\n位置: ${_BkecpIUs.trim()}\n时间: ${_asmgNqnb}\n来自:${_VBiDfmJE}`;
        const _iXNprkts = `https://api.telegram.org/bot${_ayMjLmCs.telegram.bot_token}/sendMessage?chat_id=${_ayMjLmCs.telegram.chat_id}&_eEBnchvB=${encodeURIComponent(_yYaIDwnw)}`;
        _tlWkNwce.waitUntil(fetch(_iXNprkts).catch(_OcxsSavQ => console.error("Telegram通知失败:", _OcxsSavQ)));
    }
    let _TKZXnzEe = _NJJEJdgS();
    const _jSekIzQc = {
        _PKjbIUOv: _ayMjLmCs,
        status: {
            _KqkmZqcw: _KqkmZqcw,
        }
    };
    _TKZXnzEe = _TKZXnzEe.replace('__PAGE_DATA_JSON__', JSON.stringify(_jSekIzQc));
    _TKZXnzEe = _TKZXnzEe.replace('__ALL_CF_CIDR_LIST_JSON__', JSON.stringify(_jKsFoKNq));
    _TKZXnzEe = _TKZXnzEe.replace('__BALANCED_CF_CIDR_LIST_JSON__', JSON.stringify(_ZxYKMeqm));
    _TKZXnzEe = _TKZXnzEe.replace('__DEFAULT_DOMAINS_LIST_JSON__', JSON.stringify(defaultDomains));
    _TKZXnzEe = _TKZXnzEe.replace('__COUNTRY_MAP_JSON__', JSON.stringify(_pfpYKwEc));
    return new Response(_TKZXnzEe, {
        _oLFcoaZN: { 'Content-Type': '_eEBnchvB/html;_hzIjPneL=UTF-8' },
    });
}

function _floJAZoH(_yZNwCyAP, status = 200, _oLFcoaZN = {}) {
    return new Response(JSON.stringify(_yZNwCyAP), {
        status,
        _oLFcoaZN: { 'Content-Type': 'application/json;_hzIjPneL=UTF-8', ..._oLFcoaZN }
    });
}

function _epMlneSS(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 _azIohrLC(_vtYAPNMi) {
    if (!_vtYAPNMi || typeof _vtYAPNMi !== 'string') return "无效IP";
    if(_khDcDuOM.isIPv4(_vtYAPNMi)){
        const _fVoSosRz = _vtYAPNMi.split('.');
        if (_fVoSosRz._khAwwNou === 4) return `${_fVoSosRz[0]}.*.*.${_fVoSosRz[3]}`;
    }
    if(_khDcDuOM.isIPv6(_vtYAPNMi)){
        const _fVoSosRz = _vtYAPNMi.split(':');
        if (_fVoSosRz._khAwwNou > 2) return `${_fVoSosRz[0]}:...:${_fVoSosRz[_fVoSosRz._khAwwNou - 1]}`;
    }
    return _vtYAPNMi;
}

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

function _NJJEJdgS() {
    return `
  <!DOCTYPE html><html lang="zh-CN"><head> <meta _hzIjPneL="UTF-8"> <meta _leAugtqN="viewport" _UzlfyvSV="_FlJxBCin=device-_FlJxBCin, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"> <title>Cloudflare IP</title> <_tKKYkWdJ 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>
  <_IpbbDXDB>
  :root { --primary-_vYgkQCeS: #00A0FF; --primary-hover: #007ACC; --primary-gradient-start: #00C6FF; --primary-gradient-end: #0072FF; --secondary-_vYgkQCeS: #8c939d; --light-bg: #1A1C20; --_UzlfyvSV-bg: #25282E; --border-_vYgkQCeS: #40444C; --_eEBnchvB-_vYgkQCeS: #E0E0E0; --_eEBnchvB-light: #B0B0B0; --success-_vYgkQCeS: #30A46C; --danger-_vYgkQCeS: #DA3633; --warning-_vYgkQCeS: #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; }
  _yZNwCyAP { font-family: var(--font-family-sans); background-_vYgkQCeS: var(--light-bg); _vYgkQCeS: var(--_eEBnchvB-_vYgkQCeS); line-height: 1.65; overflow-x: hidden; padding: 0; position:relative; transition: background-_vYgkQCeS 0.5s ease; background-size: cover; background-position: center; background-attachment: fixed; }
  #background-_rxBKOCMR { position: fixed; _fZNpOKlE: 0; _qhvoANlU: 0; _FlJxBCin: 100%; height: 100%; z-_kdjEGtWJ: -1; display: none; }
  ._UBbuqoDV-_BScJLCCF { max-_FlJxBCin: 1100px; margin: 0 auto; padding: 0 1rem; position: relative; z-_kdjEGtWJ: 1; }
  #_kaPwmuYZ { position: fixed; _fZNpOKlE: 1rem; right: 1rem; font-size: 0.85em; padding: 0.4em 0.8em; z-_kdjEGtWJ: 10; }
  #marquee-_BScJLCCF { overflow: hidden; white-space: nowrap; background-_vYgkQCeS: rgba(37, 40, 46, 0.6); backdrop-filter: blur(5px); _vYgkQCeS: var(--primary-_vYgkQCeS); padding: 0.5rem 0; margin-_fZNpOKlE: 1rem; border-radius: var(--border-radius-sm); display: none; }
  #marquee-_eEBnchvB { display: inline-block; padding-_qhvoANlU: 100%; animation: marquee-scroll 20s linear infinite; }
  @keyframes marquee-scroll { 0% { transform: translateX(0); } 100% { transform: translateX(-100%); } }
  _AvemCnuE { _eEBnchvB-align: center; margin-_fZNpOKlE: 1rem; margin-bottom: 2rem; }
  _AvemCnuE h1 { white-space: pre-wrap; font-size: 2.25em; _vYgkQCeS: var(--primary-_vYgkQCeS); font-weight: 700; _eEBnchvB-shadow: 0 0 10px rgba(var(--primary-_vYgkQCeS-rgb), 0.3); }
  .card { background-_vYgkQCeS: 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-_vYgkQCeS); }
  .progress-section #_xzMDVeKw { _FlJxBCin: 100%; height: 0.75rem; border-radius: var(--border-radius-sm); appearance: none; -webkit-appearance: none; background-_vYgkQCeS: var(--border-_vYgkQCeS); overflow: hidden; }
  .progress-section #_xzMDVeKw::-webkit-progress-_EOCnJdQB { background: linear-gradient(90deg, var(--primary-gradient-start), var(--primary-gradient-end)); }
  .progress-section #status { _eEBnchvB-align: center; margin-_fZNpOKlE: 0.75em; font-size: 0.95em; _vYgkQCeS: var(--_eEBnchvB-light); min-height: 1.5em; }
  .section-_AvemCnuE { display: flex; flex-wrap: wrap; justify-_UzlfyvSV: space-between; align-items: center; margin-bottom: 1rem; padding-bottom: 0.75rem; border-bottom: 1px solid var(--border-_vYgkQCeS); gap: 1rem; }
  .section-_AvemCnuE h2 { font-size: 1.6em; font-weight: 600; margin:0; }
  .generator-info { font-size: 0.85em; _vYgkQCeS: var(--secondary-_vYgkQCeS); _eEBnchvB-align: right; flex-shrink: 0; }
  .generator-info span { display: block; }
  .table-responsive { _FlJxBCin: 100%; overflow-x: auto; -webkit-overflow-scrolling: touch; }
  table { _FlJxBCin: 100%; border-collapse: collapse; margin-_fZNpOKlE: 0; font-size: 0.9em; }
  th, td { border-bottom: 1px solid var(--border-_vYgkQCeS); padding: 0.8em; _eEBnchvB-align: _qhvoANlU; vertical-align: middle; white-space: nowrap; }
  th { background-_vYgkQCeS: #2c3038; font-weight: 500; }
  tbody tr:hover { background-_vYgkQCeS: #30333a; }
  td._vtYAPNMi-_IMNkmpeB { font-weight: 500; font-family: var(--font-family-mono); _vYgkQCeS: var(--primary-_vYgkQCeS); }
  td.ping-_EOCnJdQB { font-weight: 600; font-family: var(--font-family-mono); }
  td.actions-cell { _eEBnchvB-align: right; }
  .btn { display: inline-flex; align-items: center; justify-_UzlfyvSV: center; font-weight: 500; _eEBnchvB-align: center; cursor: pointer; user-_FeHGaBrr: none; background: linear-gradient(145deg, var(--primary-gradient-start), var(--primary-gradient-end)); border: 1px solid transparent; _vYgkQCeS: #fff; padding: 0.4em 0.8em; font-size: 0.85em; border-radius: var(--border-radius-sm); transition: all 0.2s ease-in-out; margin-_qhvoANlU: 6px; }
  .btn:hover { transform: translateY(-2px); box-shadow: 0 4px 8px rgba(0, 0, 0, 0.3); }
  .btn-outline { background: transparent; _vYgkQCeS: var(--primary-_vYgkQCeS); border: 1px solid var(--primary-_vYgkQCeS); }
  .btn-outline:hover { background-_vYgkQCeS: var(--primary-_vYgkQCeS); _vYgkQCeS: var(--_UzlfyvSV-bg); }
  ._UBbuqoDV-download-buttons { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 1rem; }
  ._UBbuqoDV-download-buttons .btn { _FlJxBCin: 100%; margin: 0; }
  .tooltip-notification { position: fixed; _fZNpOKlE: 20px; right: 20px; padding: 12px 20px; border-radius: var(--border-radius-md); _vYgkQCeS: #fff; font-size: 0.95em; z-_kdjEGtWJ: 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); }
  #_iUUFTzfG, #_VUXPTKZe, #_RRAJVPbt, #_qpTQrDAR, #_cupENVvA { display: none; position: fixed; z-_kdjEGtWJ: 10000; _qhvoANlU: 0; _fZNpOKlE: 0; _FlJxBCin: 100%; height: 100%; background-_vYgkQCeS: rgba(0,0,0,0.6); justify-_UzlfyvSV: center; align-items: center; backdrop-filter: blur(5px); -webkit-backdrop-filter: blur(5px); }
  .modal-_UzlfyvSV, ._UBbuqoDV-modal-_UzlfyvSV { background-_vYgkQCeS: var(--_UzlfyvSV-bg); padding: 2rem; border: 1px solid var(--border-_vYgkQCeS); border-radius: var(--border-radius-md); _FlJxBCin: 95%; max-_FlJxBCin: 800px; max-height: 90vh; overflow-y: auto; box-shadow: 0 5px 15px rgba(0,0,0,0.3); }
  #_qpTQrDAR .modal-_UzlfyvSV { max-_FlJxBCin: 500px; }
  .modal-_UzlfyvSV h3, ._UBbuqoDV-modal-_AvemCnuE h3 { margin-_fZNpOKlE: 0; margin-bottom: 1.5rem; _vYgkQCeS: var(--primary-_vYgkQCeS); _eEBnchvB-align: center; }
  .modal-buttons { display: flex; justify-_UzlfyvSV: flex-end; gap: 1rem; margin-_fZNpOKlE: 2rem; border-_fZNpOKlE: 1px solid var(--border-_vYgkQCeS); padding-_fZNpOKlE: 1.5rem; }
  .modal-section-divider { border: 0; height: 1px; background-image: linear-gradient(to right, rgba(0,0,0,0), var(--border-_vYgkQCeS), rgba(0,0,0,0)); margin: 2rem 0; }
  ._UBbuqoDV-modal-_AvemCnuE { display: flex; justify-_UzlfyvSV: space-between; align-items: center; padding-bottom: 1rem; margin-bottom: 1rem; border-bottom: 1px solid var(--border-_vYgkQCeS); }
  .modal-close-btn { font-size: 1.5rem; font-weight: bold; line-height: 1; _vYgkQCeS: var(--_eEBnchvB-light); cursor: pointer; background: none; border: none; padding: 0; }
  ._UBbuqoDV-list-_OkaGUFGb { display: flex; flex-direction: column; padding: 1rem; border: 1px solid var(--border-_vYgkQCeS); border-radius: var(--border-radius-sm); margin-bottom: 1rem; }
  ._UBbuqoDV-_leAugtqN { font-size: 1.1em; font-weight: 600; }
  ._UBbuqoDV-links a { display: block; _vYgkQCeS: var(--primary-_vYgkQCeS); _eEBnchvB-decoration: none; margin-_fZNpOKlE: 0.5rem; word-break: break-all; }
  ._UBbuqoDV-links a:hover { _eEBnchvB-decoration: underline; }
  ._UBbuqoDV-links span { _vYgkQCeS: var(--_eEBnchvB-light); }
  #visitorPasswordPrompt { _eEBnchvB-align: center; }
  #visitorPasswordPrompt h3 { _vYgkQCeS: var(--primary-_vYgkQCeS); font-size: 1.4em; margin-bottom: 0.8rem; }
  #visitorPasswordPrompt p { _vYgkQCeS: var(--_eEBnchvB-light); margin-bottom: 1.5rem; }
  ._tkLgAihH-input-group { display: flex; gap: 10px; max-_FlJxBCin: 400px; margin: 0 auto; }
  ._tkLgAihH-input-group input { flex-grow: 1; _eEBnchvB-align: center; }
  ._tkLgAihH-input-group .btn { margin-_qhvoANlU: 0; }
  ._PUyXfFHb-actions-_BScJLCCF { _eEBnchvB-align: center; margin-bottom: 1.5rem; }
  ._PUyXfFHb-api-buttons { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 1rem; }
  ._PUyXfFHb-api-buttons .btn { margin: 0; _FlJxBCin: 100%; font-size: 0.9em; padding: 0.5em 1em; }
  .form-grid { display: grid; grid-template-columns: max-_UzlfyvSV 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 _FeHGaBrr, .form-grid-control textarea { _FlJxBCin: 100%; background-_vYgkQCeS: var(--light-bg); border: 1px solid var(--border-_vYgkQCeS); border-radius: var(--border-radius-sm); _vYgkQCeS: var(--_eEBnchvB-_vYgkQCeS); font-family: var(--font-family-sans); padding: 0.6em; transition: border-_vYgkQCeS 0.2s, box-shadow 0.2s; }
  .form-grid-control input:focus, .form-grid-control _FeHGaBrr:focus, .form-grid-control textarea:focus { border-_vYgkQCeS: var(--primary-_vYgkQCeS); box-shadow: 0 0 0 2px rgba(var(--primary-_vYgkQCeS-rgb), 0.2); outline: none; }
  .form-grid-control input[_mSrCNgrg="_vYgkQCeS"] { min-_FlJxBCin: auto; padding: 2px; _FlJxBCin: 2.5em; height: 2.5em; }
  .form-grid-control input[_mSrCNgrg="checkbox"] { _FlJxBCin: auto; flex-shrink: 0; height: 1.2em; _FlJxBCin: 1.2em; }
  .form-grid-control ._CcwsInur-input { _FlJxBCin: 80px; _eEBnchvB-align: right; }
  .tooltip-_xjCIWzOI { display: inline-flex; _FlJxBCin: 16px; height: 16px; align-items: center; justify-_UzlfyvSV: center; background-_vYgkQCeS: var(--secondary-_vYgkQCeS); _vYgkQCeS: var(--_UzlfyvSV-bg); border-radius: 50%; font-size: 12px; font-weight: bold; cursor: pointer; user-_FeHGaBrr: none; }
  #tooltip-popup { position: fixed; background-_vYgkQCeS: #383c4a; _vYgkQCeS: #fff; padding: 10px 15px; border-radius: 6px; z-_kdjEGtWJ: 10001; font-size: 0.85em; max-_FlJxBCin: 300px; display: none; box-shadow: 0 4px 12px rgba(0,0,0,0.4); border: 1px solid var(--border-_vYgkQCeS); pointer-events: none; }
  #custom-fields-_BScJLCCF .form-grid-control { gap: 5px; } #custom-fields-_BScJLCCF .form-grid-control input { flex: 1; }
  .parameter-_esjNhPeB-_YSOATzWa { border: 1px solid var(--border-_vYgkQCeS); border-radius: var(--border-radius-sm); padding: 1rem; margin-bottom: 1rem; }
  .parameter-_esjNhPeB-_AvemCnuE { display: flex; justify-_UzlfyvSV: space-between; align-items: center; margin-bottom: 1rem; }
  .parameter-_esjNhPeB-_AvemCnuE input { flex-grow: 1; margin-right: 1rem; }
  .fine-grained-options { display: flex; gap: 1rem; margin-_fZNpOKlE: 0.5rem; align-items: center; font-size: 0.9em; }
  .fine-grained-options label { display: flex; align-items: center; gap: 0.3rem; cursor: pointer; }
  ._eEBnchvB-_vYgkQCeS-grid { display: grid; grid-template-columns: auto 1fr; gap: 8px; align-items: center; _FlJxBCin: 100%; }
  ._eEBnchvB-_vYgkQCeS-grid input[_mSrCNgrg="_vYgkQCeS"] { grid-column: 1 / 2; }
  ._eEBnchvB-_vYgkQCeS-grid input[_mSrCNgrg="_eEBnchvB"], ._eEBnchvB-_vYgkQCeS-grid textarea { grid-column: 2 / 3; }
  #_qpTQrDAR .button-grid { display: grid; grid-template-columns: 1fr; gap: 1rem; }
  #_qpTQrDAR .btn-group { display: flex; }
  #_qpTQrDAR .sub-btn { flex-grow: 1; margin: 0; }
  #_qpTQrDAR ._JFZvxnhv-btn { flex-shrink: 0; margin-_qhvoANlU: -1px; border-_fZNpOKlE-_qhvoANlU-radius: 0; border-bottom-_qhvoANlU-radius: 0; }
  #_cupENVvA .modal-_UzlfyvSV { max-_FlJxBCin: 300px; background: white; padding: 1rem; _eEBnchvB-align: center; }
  #qrCodeImg { max-_FlJxBCin: 100%; }
  @media (max-_FlJxBCin: 768px) {
    html { font-size: 15px; } ._UBbuqoDV-_BScJLCCF { padding: 0 0.8rem; } _AvemCnuE { margin-_fZNpOKlE: 2.5rem; margin-bottom: 1.5rem; } #_kaPwmuYZ { _fZNpOKlE: 0.8rem; right: 0.8rem; } .card { padding: 1rem; }
    .form-grid { grid-template-columns: 1fr; } .form-grid-label { justify-self: start; }
  }
  </_IpbbDXDB>
  <_IpbbDXDB _tAqOnwpK="theme-styles">
  .theme-light { --light-bg: #F0F2F5; --_UzlfyvSV-bg: #FFFFFF; --border-_vYgkQCeS: #DCDFE6; --_eEBnchvB-_vYgkQCeS: #303133; --_eEBnchvB-light: #606266; }
  .theme-light .card { background-_vYgkQCeS: rgba(255, 255, 255, 0.9); }
  .theme-light th { background-_vYgkQCeS: #F5F7FA; }
  .theme-light tbody tr:hover { background-_vYgkQCeS: #ECF5FF; }
  .theme-matrix { --primary-_vYgkQCeS: #00FF41; --primary-hover: #39FF14; --light-bg: #000000; --_UzlfyvSV-bg: #0D0208; --border-_vYgkQCeS: #00FF41; --_eEBnchvB-_vYgkQCeS: #00FF41; --_eEBnchvB-light: #00FF41; font-family: var(--font-family-mono); }
  .theme-matrix .card { background-_vYgkQCeS: rgba(0, 20, 0, 0.7); _eEBnchvB-shadow: 0 0 5px var(--primary-_vYgkQCeS); backdrop-filter: none; }
  .theme-matrix th { background-_vYgkQCeS: #000; }
  .theme-matrix tbody tr:hover { background-_vYgkQCeS: #010; }
  .theme-matrix .btn { _eEBnchvB-shadow: none; _vYgkQCeS: #000; }
  .theme-matrix .btn-outline { background-_vYgkQCeS: transparent; }
  .theme-modern-glass { --primary-_vYgkQCeS: #00C6FF; --primary-hover: #0072FF; --light-bg: #000; --_UzlfyvSV-bg: rgba(30, 30, 40, 0.6); --border-_vYgkQCeS: rgba(255, 255, 255, 0.2); --_eEBnchvB-_vYgkQCeS: #F0F0F0; --_eEBnchvB-light: #A0A0B0; --border-radius-md: 12px; }
  _yZNwCyAP.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-_vYgkQCeS: #00C6FF; --primary-hover: #0072FF; --light-bg: #1A1C20; --_UzlfyvSV-bg: rgba(30, 30, 40, 0.6); --border-_vYgkQCeS: rgba(255, 255, 255, 0.2); --_eEBnchvB-_vYgkQCeS: #F0F0F0; --_eEBnchvB-light: #A0A0B0; --border-radius-md: 12px; }
  .glassy-components .card { background-_vYgkQCeS: var(--_UzlfyvSV-bg); backdrop-filter: blur(15px); -webkit-backdrop-filter: blur(15px); border: 1px solid var(--border-_vYgkQCeS); }
  .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-_vYgkQCeS: rgba(0,0,0,0.3); border-right-_vYgkQCeS: 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); _eEBnchvB-shadow: 0 1px 2px rgba(0,0,0,0.2); _vYgkQCeS: #fff; }
  .glassy-components .btn-outline { background: rgba(255, 255, 255, 0.05); border-_vYgkQCeS: rgba(255, 255, 255, 0.2); backdrop-filter: blur(2px); _eEBnchvB-shadow: 0 1px 2px rgba(0,0,0,0.2); }
  .glassy-components .btn-outline:hover { background: var(--primary-_vYgkQCeS); border-_vYgkQCeS: var(--primary-_vYgkQCeS); _vYgkQCeS: #fff; }
  .glassy-components _AvemCnuE h1 { background: linear-gradient(180deg, rgba(255,255,255,1) 0%, rgba(255,255,255,0.7) 100%); -webkit-background-clip: _eEBnchvB; -webkit-_eEBnchvB-fill-_vYgkQCeS: transparent; filter: drop-shadow(0 2px 5px rgba(0,0,0,0.5)); _vYgkQCeS: transparent; }
  .theme-aurora-glass { --primary-_vYgkQCeS: #38bdf8; --light-bg: #0c0a09; --_UzlfyvSV-bg: rgba(23, 23, 23, 0.5); --border-_vYgkQCeS: rgba(255, 255, 255, 0.15); --_eEBnchvB-_vYgkQCeS: #f2f2f2; --_eEBnchvB-light: #a3a3a3; }
  _yZNwCyAP.theme-aurora-glass::before { _UzlfyvSV: ''; position: fixed; _fZNpOKlE: 0; _qhvoANlU: 0; _FlJxBCin: 100%; height: 100%; z-_kdjEGtWJ: -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-_vYgkQCeS: #08fdd8; --light-bg: #010409; --_UzlfyvSV-bg: rgba(22, 27, 34, 0.6); --border-_vYgkQCeS: rgba(139, 148, 158, 0.3); --_eEBnchvB-_vYgkQCeS: #e6edf3; --_eEBnchvB-light: #7d8590; }
  .theme-cyberpunk-glass .card { border-image: linear-gradient(to bottom right, var(--primary-_vYgkQCeS), #7928ca) 1; box-shadow: 0 0 15px rgba(var(--primary-_vYgkQCeS-rgb), 0.25); }
  .theme-cyberpunk-glass .btn { box-shadow: 0 0 8px rgba(var(--primary-_vYgkQCeS-rgb), 0.5); }
  .theme-marble-light { --primary-_vYgkQCeS: #bfa37c; --light-bg: #f7f5f2; --_UzlfyvSV-bg: #ffffff; --border-_vYgkQCeS: #e0dcd5; --_eEBnchvB-_vYgkQCeS: #3d3a36; --_eEBnchvB-light: #6b6661; }
  _yZNwCyAP.theme-marble-light { background-image: _edEOrAGs('_ebSYqasP:image/svg+xml,%3Csvg _FlJxBCin="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-_vYgkQCeS: rgba(255, 255, 255, 0.85); box-shadow: 0 4px 12px rgba(0,0,0,0.08); }
  </_IpbbDXDB>
  </head><_yZNwCyAP _tAqOnwpK="pageBody">
  <_rxBKOCMR _tAqOnwpK="background-_rxBKOCMR"></_rxBKOCMR>
  <div _tAqOnwpK="_iUUFTzfG">
      <div class="modal-_UzlfyvSV">
          <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 _mSrCNgrg="_tkLgAihH" _tAqOnwpK="initialPassword"></div></div>
          <div class="form-grid"><div class="form-grid-label"><label for="confirmPassword">确认密码</label></div><div class="form-grid-control"><input _mSrCNgrg="_tkLgAihH" _tAqOnwpK="confirmPassword"></div></div>
          <div class="modal-buttons"><button _tAqOnwpK="setInitialPasswordBtn" class="btn">设置密码</button></div>
      </div>
  </div>
  <div class="_UBbuqoDV-_BScJLCCF">
    <button _tAqOnwpK="_kaPwmuYZ" class="btn btn-outline"></button>
    <div _tAqOnwpK="marquee-_BScJLCCF"><div _tAqOnwpK="marquee-_eEBnchvB"></div></div>
    <_AvemCnuE><h1 _tAqOnwpK="pageTitle"></h1></_AvemCnuE>
    <div class="card" _tAqOnwpK="visitorPasswordPrompt" _IpbbDXDB="display: none;">
        <h3>需要授权</h3>
        <p>此站点已启用访客密码,请输入密码以继续。</p>
        <div class="_tkLgAihH-input-group">
            <input _mSrCNgrg="_tkLgAihH" _tAqOnwpK="visitorPasswordEntry" _NniVanMg="访客密码">
            <button _tAqOnwpK="startTestWithPasswordBtn" class="btn">开始测试</button>
        </div>
    </div>
    <div _tAqOnwpK="_AUsGHGci" _IpbbDXDB="display: block;">
        <div class="card progress-section">
            <div _tAqOnwpK="progressDisplay">
                <progress _tAqOnwpK="_xzMDVeKw" _EOCnJdQB="0" max="100"></progress>
                <div _tAqOnwpK="status">正在初始化...</div>
            </div>
        </div>
        <div class="card _UBbuqoDV-download-section">
          <div class="section-_AvemCnuE"><h2 _tAqOnwpK="appDownloadTitleEl"></h2></div>
          <div class="_UBbuqoDV-download-buttons">
            <button class="btn" _ebSYqasP-_GqBURUBA="android">安卓客户端</button>
            <button class="btn" _ebSYqasP-_GqBURUBA="ios">苹果客户端</button>
            <button class="btn" _ebSYqasP-_GqBURUBA="windows">Windows客户端</button>
            <button class="btn" _ebSYqasP-_GqBURUBA="mac">Mac客户端</button>
          </div>
        </div>
        <div class="card _PUyXfFHb-section" _tAqOnwpK="_GbTzLrGt" _IpbbDXDB="display:none;">
          <div class="section-_AvemCnuE">
            <h2 _tAqOnwpK="liveTitleEl"></h2>
            <div class="generator-info" _tAqOnwpK="liveGeneratorInfo"></div>
          </div>
          <div _tAqOnwpK="_amYwpZAc" class="_PUyXfFHb-actions-_BScJLCCF" _IpbbDXDB="display: none;">
             <div class="_PUyXfFHb-api-buttons">
                <button _tAqOnwpK="copyIpApiBtn" class="btn">复制 IP API</button>
                <button _tAqOnwpK="copySubscriptionBtn" class="btn">复制订阅</button>
             </div>
          </div>
          <div class="table-responsive">
            <table _tAqOnwpK="resultsTable">
              <thead><tr><th _tAqOnwpK="tableHeader1El"></th><th _tAqOnwpK="tableHeader2El"></th><th _tAqOnwpK="tableHeader3El"></th><th _tAqOnwpK="tableHeader4El"></th><th _tAqOnwpK="tableHeader5El"></th><th _tAqOnwpK="tableHeader6El"></th><th _tAqOnwpK="tableHeader7El"></th></tr></thead>
              <tbody></tbody>
            </table>
          </div>
        </div>
        <div class="card cached-section" _tAqOnwpK="_RSDKZTQp" _IpbbDXDB="display:none;">
          <div class="section-_AvemCnuE"><h2 _tAqOnwpK="cachedTitleEl"></h2><div class="generator-info" _tAqOnwpK="cachedGeneratorInfo"></div></div>
          <div class="table-responsive">
            <table _tAqOnwpK="cachedResultsTable">
              <thead><tr><th _tAqOnwpK="cachedTableHeader1El"></th><th _tAqOnwpK="cachedTableHeader2El"></th><th _tAqOnwpK="cachedTableHeader3El"></th><th _tAqOnwpK="cachedTableHeader4El"></th><th _tAqOnwpK="cachedTableHeader5El"></th><th _tAqOnwpK="cachedTableHeader6El"></th><th _tAqOnwpK="cachedTableHeader7El"></th></tr></thead>
              <tbody></tbody>
            </table>
          </div>
        </div>
    </div>
  </div>
  <div _tAqOnwpK="notificationTooltip" class="tooltip-notification"></div>
  <div _tAqOnwpK="_VUXPTKZe">
    <div class="modal-_UzlfyvSV">
      <h3>修改参数</h3>
      <div _IpbbDXDB="display: flex; border-bottom: 1px solid var(--border-_vYgkQCeS); margin-bottom: 1.5rem;">
          <button class="tab-button active" onclick="_eocMpYqD(event, 'general-_WPjxsUwt')">通用设置</button>
          <button class="tab-button" onclick="_eocMpYqD(event, '_tKKYkWdJ-_WPjxsUwt')">链接设置</button>
          <button class="tab-button" onclick="_eocMpYqD(event, 'fine-grained-_WPjxsUwt')">IP源设置</button>
          <button class="tab-button" onclick="_eocMpYqD(event, 'advanced-_WPjxsUwt')">高级设置</button>
      </div>
      <div _tAqOnwpK="general-_WPjxsUwt" class="tab-_UzlfyvSV" _IpbbDXDB="display: block;">
        <div class="form-grid">
            <div class="form-grid-label"><label for="themeSelect">页面主题</label><span class="tooltip-_xjCIWzOI" _ebSYqasP-tooltip="选择页面的整体外观风格。">?</span></div>
            <div class="form-grid-control">
                <_FeHGaBrr _tAqOnwpK="themeSelect">
                    <_SlRpkXor _EOCnJdQB="theme-aurora-glass">极光-玻璃质感</_SlRpkXor>
                    <_SlRpkXor _EOCnJdQB="theme-particles-glass">粒子-玻璃质感</_SlRpkXor>
                    <_SlRpkXor _EOCnJdQB="theme-modern-glass">现代-玻璃质感</_SlRpkXor>
                    <_SlRpkXor _EOCnJdQB="theme-cyberpunk-glass">赛博朋克-玻璃质感</_SlRpkXor>
                    <_SlRpkXor _EOCnJdQB="theme-dark-particles">暗色-粒子背景</_SlRpkXor>
                    <_SlRpkXor _EOCnJdQB="theme-dark-bing">暗色-必应壁纸</_SlRpkXor>
                    <_SlRpkXor _EOCnJdQB="theme-light">亮色-简约</_SlRpkXor>
                    <_SlRpkXor _EOCnJdQB="theme-light-bing">亮色-必应壁纸</_SlRpkXor>
                    <_SlRpkXor _EOCnJdQB="theme-marble-light">简约大理石-亮色</_SlRpkXor>
                    <_SlRpkXor _EOCnJdQB="theme-matrix">矩阵-代码雨</_SlRpkXor>
                </_FeHGaBrr>
            </div>
            <div class="form-grid-label"><label>主题颜色</label><span class="tooltip-_xjCIWzOI" _ebSYqasP-tooltip="自定义主题的主要颜色和动态背景效果的颜色。">?</span></div>
            <div class="form-grid-control">
                <label for="primaryColorInput">强调色</label><input _mSrCNgrg="_vYgkQCeS" _tAqOnwpK="primaryColorInput">
                <span _IpbbDXDB="_FlJxBCin: 20px;"></span>
                <label for="particleColorInput">背景/粒子色</label><input _mSrCNgrg="_vYgkQCeS" _tAqOnwpK="particleColorInput">
            </div>
            <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
            <div class="form-grid-label" _IpbbDXDB="align-self: start;"><label>页面文本与颜色</label><span class="tooltip-_xjCIWzOI" _ebSYqasP-tooltip="自定义页面上各个主要元素的显示文本和颜色。">?</span></div>
            <div class="form-grid-control" _IpbbDXDB="flex-direction: column; align-items: stretch; gap: 8px;">
                <div class="_eEBnchvB-_vYgkQCeS-grid"><input _mSrCNgrg="_vYgkQCeS" _tAqOnwpK="colorInput_title"><textarea _tAqOnwpK="textInput_title" _ZjUyjiQZ="1" _NniVanMg="页面主标题"></textarea></div>
                <div class="_eEBnchvB-_vYgkQCeS-grid"><input _mSrCNgrg="_vYgkQCeS" _tAqOnwpK="colorInput_loginButton"><input _mSrCNgrg="_eEBnchvB" _tAqOnwpK="textInput_loginButton" _NniVanMg="登录按钮文本"></div>
                <div class="_eEBnchvB-_vYgkQCeS-grid"><input _mSrCNgrg="_vYgkQCeS" _tAqOnwpK="colorInput_appDownloadTitle"><input _mSrCNgrg="_eEBnchvB" _tAqOnwpK="textInput_appDownloadTitle" _NniVanMg="APP下载标题"></div>
                <div class="_eEBnchvB-_vYgkQCeS-grid"><input _mSrCNgrg="_vYgkQCeS" _tAqOnwpK="colorInput_liveTitle"><input _mSrCNgrg="_eEBnchvB" _tAqOnwpK="textInput_liveTitle" _NniVanMg="本次结果标题"></div>
                <div class="_eEBnchvB-_vYgkQCeS-grid"><input _mSrCNgrg="_vYgkQCeS" _tAqOnwpK="colorInput_cachedTitle"><input _mSrCNgrg="_eEBnchvB" _tAqOnwpK="textInput_cachedTitle" _NniVanMg="上次结果标题"></div>
                <div class="_eEBnchvB-_vYgkQCeS-grid"><input _mSrCNgrg="_vYgkQCeS" _tAqOnwpK="colorInput_tableHeader"><input _mSrCNgrg="_eEBnchvB" _EOCnJdQB="表格头部文本颜色" readonly _IpbbDXDB="background: transparent; border: none;"></div>
            </div>
            <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
            <div class="form-grid-label" _IpbbDXDB="align-self: start;"><label>公告栏设置</label><span class="tooltip-_xjCIWzOI" _ebSYqasP-tooltip="设置在页面显示的公告内容和方式。">?</span></div>
            <div class="form-grid-control" _IpbbDXDB="flex-direction: column; align-items: stretch; gap: 8px;">
                 <textarea _tAqOnwpK="announcementText" _NniVanMg="在此输入公告内容" _ZjUyjiQZ="3"></textarea>
                 <div _IpbbDXDB="display: flex; justify-_UzlfyvSV: space-around; align-items: center; gap: 1rem; flex-wrap: wrap;">
                    <label _IpbbDXDB="display: flex; align-items: center; gap: 5px;"><input _mSrCNgrg="checkbox" _tAqOnwpK="enableMarquee"> 顶部走马灯</label>
                    <label _IpbbDXDB="display: flex; align-items: center; gap: 5px;"><input _mSrCNgrg="checkbox" _tAqOnwpK="enablePopup"> 右上角弹窗</label>
                    <div _tAqOnwpK="popupDurationContainer" _IpbbDXDB="display: none; align-items: center; gap: 5px;">
                        <label for="popupDuration">停留</label><input _mSrCNgrg="number" _tAqOnwpK="popupDuration" _IpbbDXDB="_FlJxBCin: 60px;"><span>秒</span>
                    </div>
                 </div>
            </div>
        </div>
      </div>
      <div _tAqOnwpK="_tKKYkWdJ-_WPjxsUwt" class="tab-_UzlfyvSV">
        <div class="form-grid">
          <div class="form-grid-label"><label for="converterServiceUrlInput">Sublink 服务地址</label><span class="tooltip-_xjCIWzOI" _ebSYqasP-tooltip="您部署的Sublink服务的域名,例如 https://sub.example.com">?</span></div>
          <div class="form-grid-control"><input _mSrCNgrg="_eEBnchvB" _tAqOnwpK="converterServiceUrlInput" _NniVanMg="https://sub.example.com"></div>
          <div class="form-grid-label"><label for="subscriptionIdLength">订阅ID长度</label><span class="tooltip-_xjCIWzOI" _ebSYqasP-tooltip="生成订阅链接时使用的随机ID长度(2-128位)">?</span></div>
          <div class="form-grid-control"><input _mSrCNgrg="number" _tAqOnwpK="subscriptionIdLength" min="2" max="128"></div>
          <div class="form-grid-label" _IpbbDXDB="align-self: start;"><label for="subscriptionIdCharset">ID使用字符集</label><span class="tooltip-_xjCIWzOI" _ebSYqasP-tooltip="生成ID时从这些字符中随机选择。请使用URL安全的字符。">?</span></div>
          <div class="form-grid-control"><textarea _tAqOnwpK="subscriptionIdCharset" _ZjUyjiQZ="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-_xjCIWzOI" _ebSYqasP-tooltip="为结果IP添加复制配置链接的按钮。">?</span></div>
          <div class="form-grid-control" _IpbbDXDB="justify-_UzlfyvSV: flex-start;"><input _mSrCNgrg="checkbox" _tAqOnwpK="enableItemLinkCheckbox"></div>
        </div>
        <div _tAqOnwpK="itemLinkConfigGroup" _IpbbDXDB="display:none; margin-_fZNpOKlE: 1rem;">
          <div class="form-grid">
              <div class="form-grid-label" _IpbbDXDB="align-self: start;"><label for="itemLinkTemplateInput">分享链接模板</label><span class="tooltip-_xjCIWzOI" _ebSYqasP-tooltip="定义分享链接格式。可用占位符: {_vtYAPNMi}, {_vCGvbutt}, {_leAugtqN}, {rank}, {_IzzozNQd}, {_uOaOrFAq}, {_pvVxRkiH}, {_YavVztKf}, {_DhvEAnvS}。">?</span></div>
              <div class="form-grid-control"><textarea _tAqOnwpK="itemLinkTemplateInput" _ZjUyjiQZ="4"></textarea></div>
              <div class="form-grid-label"><label for="parameterSelectionMode">参数使用模式</label><span class="tooltip-_xjCIWzOI" _ebSYqasP-tooltip="当定义了多组参数时,如何为每个IP分配。">?</span></div>
              <div class="form-grid-control"><_FeHGaBrr _tAqOnwpK="parameterSelectionMode"></_FeHGaBrr></div>
              <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
              <div class="form-grid-control-full"><div _tAqOnwpK="parameter-sets-_BScJLCCF"></div><button _mSrCNgrg="button" _tAqOnwpK="add-parameter-_esjNhPeB-btn" class="btn btn-outline" _IpbbDXDB="margin-_fZNpOKlE: 10px;">添加参数组</button></div>
              <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
              <div class="form-grid-label" _IpbbDXDB="align-self: start;"><label>其他自定义占位符</label><span class="tooltip-_xjCIWzOI" _ebSYqasP-tooltip="创建您自己的占位符,并在模板中使用。">?</span></div>
              <div class="form-grid-control"><div _tAqOnwpK="custom-fields-_BScJLCCF" _IpbbDXDB="_FlJxBCin: 100%;"></div></div>
              <div class="form-grid-label"></div><div class="form-grid-control" _IpbbDXDB="justify-_UzlfyvSV: flex-start;"><button _mSrCNgrg="button" _tAqOnwpK="add-custom-field-btn" class="btn btn-outline">添加自定义字段</button></div>
          </div>
        </div>
      </div>
      <div _tAqOnwpK="fine-grained-_WPjxsUwt" class="tab-_UzlfyvSV">
          <div class="form-grid-label" _IpbbDXDB="grid-column: 1 / -1; justify-self: start;"><label>地区与IP源</label><span class="tooltip-_xjCIWzOI" _ebSYqasP-tooltip="定义不同地区的IP来源。启用并设置百分比后,它们将根据高级设置中“IP源设置”的总比例进行分配。">?</span></div>
          <div class="form-grid-control-full" _IpbbDXDB="display: flex; gap: 1rem; margin-bottom: 1rem; justify-_UzlfyvSV: flex-start;">
              <label><input _mSrCNgrg="checkbox" _tAqOnwpK="enableAllSourcesCheckbox"> 一键启用所有源</label>
              <label><input _mSrCNgrg="checkbox" _tAqOnwpK="disableAllSourcesCheckbox"> 一键取消所有源</label>
          </div>
          <div class="form-grid-control-full"><div _tAqOnwpK="fine-grained-sources-_BScJLCCF"></div><button _mSrCNgrg="button" _tAqOnwpK="add-fine-grained-_lGZLBHIi-btn" class="btn btn-outline" _IpbbDXDB="margin-_fZNpOKlE: 10px;">添加地区</button></div>
      </div>
      <div _tAqOnwpK="advanced-_WPjxsUwt" class="tab-_UzlfyvSV">
        <div class="form-grid">
            <div class="form-grid-label"><label for="useResolvedDomainsCheckbox">域名解析IP</label><span class="tooltip-_xjCIWzOI" _ebSYqasP-tooltip="此处填写优选域名,即可使用优选域名的IP作为筛选源,作为不死IP备用">?</span></div>
            <div class="form-grid-control"><input _mSrCNgrg="checkbox" _tAqOnwpK="useResolvedDomainsCheckbox"></div>
            <div class="form-grid-control-full" _tAqOnwpK="resolvedDomainsGroup" _IpbbDXDB="display:none;"><div class="form-grid"><div class="form-grid-label"></div><div class="form-grid-control"><textarea _tAqOnwpK="resolvedDomainsInput" _NniVanMg="留空则使用内置默认域名" _ZjUyjiQZ="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-_xjCIWzOI" _ebSYqasP-tooltip="启用后,将在订阅列表顶部添加您在此处指定的节点地址,例:1.1.1.1#443@名称  、 或:1.1.1.1@名称 (无端口则默认443)">?</span></div>
            <div class="form-grid-control"><input _mSrCNgrg="checkbox" _tAqOnwpK="enableCustomNodesCheckbox"></div>
            <div class="form-grid-control-full" _tAqOnwpK="customNodesGroup" _IpbbDXDB="display:none;"><div class="form-grid"><div class="form-grid-label"></div><div class="form-grid-control"><textarea _tAqOnwpK="customNodesInput" _NniVanMg="一行一个地址,支持域名、IPv4、IPv6。" _ZjUyjiQZ="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-_xjCIWzOI" _ebSYqasP-tooltip="从所有启用的IP源中随机抽取的IP总数量。">?</span></div>
            <div class="form-grid-control"><input _mSrCNgrg="number" _tAqOnwpK="sampleSizeInput"></div>
            <div class="form-grid-label"><label for="topNInput">最终获取IP数量</label><span class="tooltip-_xjCIWzOI" _ebSYqasP-tooltip="测试完成后,在结果列表中显示的延迟最低的IP数量。">?</span></div>
            <div class="form-grid-control"><input _mSrCNgrg="number" _tAqOnwpK="topNInput"></div>
            <div class="form-grid-label" _IpbbDXDB="display: none;"><label>延迟随机数范围 (ms)</label><span class="tooltip-_xjCIWzOI" _ebSYqasP-tooltip="为每个测试结果的延迟增加一个在此范围内的随机值。">?</span></div>
            <div class="form-grid-control" _IpbbDXDB="display: none;"><input _mSrCNgrg="number" _tAqOnwpK="latencyRangeMinInput" _NniVanMg="最小"><span>-</span><input _mSrCNgrg="number" _tAqOnwpK="latencyRangeMaxInput" _NniVanMg="最大"></div>
            <div class="form-grid-label"><label for="enableIspFilterCheckbox">仅保留Cloudflare IP</label><span class="tooltip-_xjCIWzOI" _ebSYqasP-tooltip="启用后,最终结果将只显示归属于Cloudflare的IP地址。">?</span></div>
            <div class="form-grid-control" _IpbbDXDB="justify-_UzlfyvSV: flex-start;"><input _mSrCNgrg="checkbox" _tAqOnwpK="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-_xjCIWzOI" _ebSYqasP-tooltip="当部分IP归属地查询失败时,额外尝试查询的次数。">?</span></div>
            <div class="form-grid-control">
                <input _mSrCNgrg="number" _tAqOnwpK="geoLocationRetriesInput" _IpbbDXDB="_FlJxBCin: 80px;"> <span>次</span>
                <div _IpbbDXDB="display: flex; align-items: center; gap: 5px; margin-_qhvoANlU: 20px;">
                    <input _mSrCNgrg="checkbox" _tAqOnwpK="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-_xjCIWzOI" _ebSYqasP-tooltip="所有WebSocket连接失败时使用的全局回退目标地址,格式为 '_pvVxRkiH:_vCGvbutt' 或 '_pvVxRkiH'。">?</span></div>
            <div class="form-grid-control"><input _mSrCNgrg="_eEBnchvB" _tAqOnwpK="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-_xjCIWzOI" _ebSYqasP-tooltip="启用后, 将禁用自身的代理功能, 所有WebSocket请求将转发到指定地址。HTTP请求不受影响。节点生成规则也将改变。">?</span></div>
            <div class="form-grid-control" _IpbbDXDB="justify-_UzlfyvSV: flex-start;"><input _mSrCNgrg="checkbox" _tAqOnwpK="enableWebsocketStreamerCheckbox"></div>
            <div class="form-grid-control-full" _tAqOnwpK="websocketStreamerGroup" _IpbbDXDB="display:none;">
                <div class="form-grid">
                    <div class="form-grid-label"><label for="websocketStreamerUrlInput">转发目标地址</label></div>
                    <div class="form-grid-control"><input _mSrCNgrg="_eEBnchvB" _tAqOnwpK="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-_xjCIWzOI" _ebSYqasP-tooltip="通过Worker加速部分外部资源。">?</span></div>
            <div class="form-grid-control" _IpbbDXDB="justify-_UzlfyvSV: flex-start;"><input _mSrCNgrg="checkbox" _tAqOnwpK="enableStreamerCheckbox"></div>
            <div class="form-grid-label"><label for="enableApiCheckbox">启用 API</label><span class="tooltip-_xjCIWzOI" _ebSYqasP-tooltip="启用 /_vtYAPNMi 和 /api/endpoints 接口。">?</span></div>
            <div class="form-grid-control" _IpbbDXDB="justify-_UzlfyvSV: flex-start;"><input _mSrCNgrg="checkbox" _tAqOnwpK="enableApiCheckbox"></div>
            <div class="form-grid-control-full" _tAqOnwpK="apiConfigGroup" _IpbbDXDB="display:none;">
                <div class="form-grid"><div class="form-grid-label"><label for="apiMessageInput">API关闭时提示</label></div><div class="form-grid-control"><input _mSrCNgrg="_eEBnchvB" _tAqOnwpK="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-_xjCIWzOI" _ebSYqasP-tooltip="创建一个固定路径,始终指向最新的优选结果。路径中请勿使用 / 等特殊字符。">?</span></div>
            <div class="form-grid-control" _IpbbDXDB="justify-_UzlfyvSV: flex-start;"><input _mSrCNgrg="checkbox" _tAqOnwpK="enableCustomSubPathCheckbox"></div>
            <div class="form-grid-control-full" _tAqOnwpK="customSubPathGroup" _IpbbDXDB="display:none;"><div class="form-grid"><div class="form-grid-label"><label for="customSubPathInput">设置路径</label></div><div class="form-grid-control"><input _mSrCNgrg="_eEBnchvB" _tAqOnwpK="customSubPathInput" _NniVanMg="例如: 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-_xjCIWzOI" _ebSYqasP-tooltip="要求访客在开始测速前输入密码。">?</span></div>
            <div class="form-grid-control" _IpbbDXDB="justify-_UzlfyvSV: flex-start;"><input _mSrCNgrg="checkbox" _tAqOnwpK="enableVisitorPasswordCheckbox"></div>
            <div class="form-grid-control-full" _tAqOnwpK="visitorPasswordGroup" _IpbbDXDB="display:none;"><div class="form-grid"><div class="form-grid-label"><label for="visitorPasswordInput">设置访客密码</label></div><div class="form-grid-control"><input _mSrCNgrg="_eEBnchvB" _tAqOnwpK="visitorPasswordInput"></div></div></div>
            <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
            <div class="form-grid-label" _IpbbDXDB="align-self: start;"><label>Telegram 通知</label><span class="tooltip-_xjCIWzOI" _ebSYqasP-tooltip="配置后,当有访客访问页面时,您将收到通知。">?</span></div>
            <div class="form-grid-control" _IpbbDXDB="flex-direction: column; align-items: stretch; gap: 8px;"><input _mSrCNgrg="_eEBnchvB" _tAqOnwpK="botTokenInput" _NniVanMg="Telegram Bot Token"><input _mSrCNgrg="_eEBnchvB" _tAqOnwpK="chatIdInput" _NniVanMg="Telegram Chat ID"></div>
            <div class="form-grid-control-full"><hr class="modal-section-divider"></div>
            <div class="form-grid-label" _IpbbDXDB="align-self: start;"><label>修改管理员密码</label></div>
            <div class="form-grid-control" _IpbbDXDB="flex-direction: column; align-items: stretch; gap: 8px;"><input _mSrCNgrg="_tkLgAihH" _tAqOnwpK="oldPasswordInput" _NniVanMg="旧密码"><input _mSrCNgrg="_tkLgAihH" _tAqOnwpK="newPasswordInput" _NniVanMg="新密码 (至少6位)"><button _tAqOnwpK="changePasswordBtn" class="btn" _IpbbDXDB="align-self: flex-start; margin-_qhvoANlU: 0;">确认修改</button></div>
        </div>
      </div>
      <div class="modal-buttons"><button _tAqOnwpK="closeModalBtn" class="btn btn-outline">关闭</button><button _tAqOnwpK="saveParamsBtn" class="btn">保存并刷新</button></div>
    </div>
  </div>
  <div _tAqOnwpK="_RRAJVPbt">
      <div class="_UBbuqoDV-modal-_UzlfyvSV">
          <div class="_UBbuqoDV-modal-_AvemCnuE"><h3 _tAqOnwpK="appModalTitle"></h3><button class="modal-close-btn">×</button></div>
          <div class="_UBbuqoDV-modal-_yZNwCyAP" _tAqOnwpK="appModalBody"></div>
      </div>
  </div>
  <div _tAqOnwpK="_qpTQrDAR">
      <div class="modal-_UzlfyvSV">
          <h3>复制订阅链接</h3>
          <div class="button-grid">
              <div class="btn-group"><button class="btn sub-btn" _ebSYqasP-sub-_mSrCNgrg="coreEngine">Xray</button><button class="btn _JFZvxnhv-btn" _ebSYqasP-sub-_mSrCNgrg="coreEngine">Q</button></div>
              <div class="btn-group"><button class="btn sub-btn" _ebSYqasP-sub-_mSrCNgrg="coreProfile">Sing-Box</button><button class="btn _JFZvxnhv-btn" _ebSYqasP-sub-_mSrCNgrg="coreProfile">Q</button></div>
              <div class="btn-group"><button class="btn sub-btn" _ebSYqasP-sub-_mSrCNgrg="configProfile">Clash</button><button class="btn _JFZvxnhv-btn" _ebSYqasP-sub-_mSrCNgrg="configProfile">Q</button></div>
              <div class="btn-group"><button class="btn sub-btn" _ebSYqasP-sub-_mSrCNgrg="policyProfile">Surge</button><button class="btn _JFZvxnhv-btn" _ebSYqasP-sub-_mSrCNgrg="policyProfile">Q</button></div>
          </div>
          <div class="modal-buttons" _IpbbDXDB="justify-_UzlfyvSV: center;"><button class="btn btn-outline" _tAqOnwpK="closeSubModalBtn">关闭</button></div>
      </div>
  </div>
  <div _tAqOnwpK="_cupENVvA">
      <div class="modal-_UzlfyvSV">
          <img _tAqOnwpK="qrCodeImg" src="" alt="QR Code">
      </div>
  </div>
<script>
    const _khDcDuOM = {
        isValid: (_vtYAPNMi) => _khDcDuOM.isIPv4(_vtYAPNMi) || _khDcDuOM.isIPv6(_vtYAPNMi),
        isIPv4: (_vtYAPNMi) => {
            if (typeof _vtYAPNMi !== 'string') return false;
            const _fVoSosRz = _vtYAPNMi.split('.');
            if (_fVoSosRz._khAwwNou !== 4) return false;
            return _fVoSosRz.every(_pLCdISBk => {
                const _ZKQcQNno = parseInt(_pLCdISBk, 10);
                return !isNaN(_ZKQcQNno) && _ZKQcQNno >= 0 && _ZKQcQNno <= 255 && String(_ZKQcQNno) === _pLCdISBk;
            });
        },
        isIPv6: (_vtYAPNMi) => {
            if (typeof _vtYAPNMi !== '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]))$/_oGQJALCV.test(_vtYAPNMi);
        },
        toLong4: (_vtYAPNMi) => _vtYAPNMi.split('.').reduce((acc, octet, _oGQJALCV) => acc + (parseInt(octet) << (8*(3-_oGQJALCV))),0)>>>0,
        fromLong4: (long) => [(long>>>24)&0xFF,(long>>>16)&0xFF,(long>>>8)&0xFF,long&0xFF].join('.'),
        toBigInt6: (_vtYAPNMi) => {
            try {
                const _VOnFQLNO = _vtYAPNMi.split('/')[0];
                const _fVoSosRz = _VOnFQLNO.split('::');
                if (_fVoSosRz._khAwwNou > 2) return 0n;
                let _FhwzTcEN = [];
                if (_fVoSosRz[0]) {
                    _FhwzTcEN = _fVoSosRz[0].split(':');
                }
                let _SpTaEeQj = [];
                if (_fVoSosRz._khAwwNou > 1 && _fVoSosRz[1]) {
                    _SpTaEeQj = _fVoSosRz[1].split(':');
                }
                if (_FhwzTcEN._khAwwNou + _SpTaEeQj._khAwwNou > 8) return 0n;
                const _funhjLQK = 8 - (_FhwzTcEN._khAwwNou + _SpTaEeQj._khAwwNou);
                const _RtQEgUjx = [
                    ..._FhwzTcEN,
                    ...Array(_funhjLQK).fill('0'),
                    ..._SpTaEeQj
                ].map(_pLCdISBk => _pLCdISBk || '0');
                while(_RtQEgUjx._khAwwNou < 8) {
                    _RtQEgUjx.push('0');
                }
                let _YRNMOhkD = 0n;
                for (const _pLCdISBk of _RtQEgUjx) {
                    if (_pLCdISBk._khAwwNou > 4) return 0n;
                    const _EOCnJdQB = BigInt('0x' + _pLCdISBk);
                    _YRNMOhkD = (_YRNMOhkD << 16n) | _EOCnJdQB;
                }
                return _YRNMOhkD;
            } catch(_OcxsSavQ) {
                return 0n;
            }
        },
        fromBigInt6: (_YRNMOhkD) => {
            if (typeof _YRNMOhkD !== '_YRNMOhkD' || _YRNMOhkD < 0n) return null;
            const _fVoSosRz = [];
            for (let _oGQJALCV = 0; _oGQJALCV < 8; _oGQJALCV++) {
                _fVoSosRz.unshift((_YRNMOhkD & 0xFFFFn).toString(16));
                _YRNMOhkD >>= 16n;
            }
            let _QEyzVICj = { start: -1, _VccHGHGz: 0 };
            let _bixuzjKo = { start: -1, _VccHGHGz: 0 };
            for (let _oGQJALCV = 0; _oGQJALCV < 8; _oGQJALCV++) {
                if (_fVoSosRz[_oGQJALCV] === '0') {
                    if (_bixuzjKo.start === -1) _bixuzjKo.start = _oGQJALCV;
                    _bixuzjKo._VccHGHGz++;
                } else {
                    if (_bixuzjKo._VccHGHGz > _QEyzVICj._VccHGHGz) _QEyzVICj = { ..._bixuzjKo };
                    _bixuzjKo = { start: -1, _VccHGHGz: 0 };
                }
            }
            if (_bixuzjKo._VccHGHGz > _QEyzVICj._VccHGHGz) _QEyzVICj = { ..._bixuzjKo };
            if (_QEyzVICj._VccHGHGz > 1) {
                _fVoSosRz.splice(_QEyzVICj.start, _QEyzVICj._VccHGHGz, '');
                if (_QEyzVICj.start === 0) _fVoSosRz.unshift('');
                if (_QEyzVICj.start + _QEyzVICj._VccHGHGz === 8) _fVoSosRz.push('');
            }
            return _fVoSosRz.join(':');
        },
        cidrToRange: (cidr, _LuiJcXjv = 1) => {
            try {
                const [range, bitsStr] = cidr.split('/');
                const _iCRuVrkZ = parseInt(bitsStr, 10);
                const _LSlDChVK = new Set();
                if (_khDcDuOM.isIPv4(range)) {
                    if (isNaN(_iCRuVrkZ) || _iCRuVrkZ < 8 || _iCRuVrkZ > 32) return [];
                    if (_iCRuVrkZ === 32) return [range];
                    const _qvfGIajq = _khDcDuOM.toLong4(range);
                    const _OXgKeHvr = (0xFFFFFFFF << (32 - _iCRuVrkZ)) >>> 0;
                    const _ZjRSotQf = _qvfGIajq & _OXgKeHvr;
                    const _heKmOEFO = 1 << (32 - _iCRuVrkZ);
                    if (_heKmOEFO <= 2) return [];
                    const _kezBxgcF = Math.min(_LuiJcXjv, _heKmOEFO - 2);
                    let _DEkTfRCg = 0;
                    while (_LSlDChVK.size < _kezBxgcF && _DEkTfRCg < _kezBxgcF * 5) {
                        const _DFbYbsOg = Math.floor(Math.random() * (_heKmOEFO - 2)) + 1;
                        _LSlDChVK.add(_khDcDuOM.fromLong4((_ZjRSotQf + _DFbYbsOg) >>> 0));
                        _DEkTfRCg++;
                    }
                    return Array.from(_LSlDChVK);
                } else if (_khDcDuOM.isIPv6(range)) {
                    if (isNaN(_iCRuVrkZ) || _iCRuVrkZ < 16 || _iCRuVrkZ > 128) return [];
                    if (_iCRuVrkZ === 128) return [range];
                    const _cSVPjWWV = _khDcDuOM.toBigInt6(range);
                    const _OXgKeHvr = (2n ** BigInt(128 - _iCRuVrkZ) - 1n);
                    const _ZjRSotQf = _cSVPjWWV & ~_OXgKeHvr;
                    const _ATnUVDql = 2n ** BigInt(128 - _iCRuVrkZ);
                    if (_ATnUVDql <= 2n) return [];
                    let _DEkTfRCg = 0;
                    while (_LSlDChVK.size < _LuiJcXjv && _DEkTfRCg < _LuiJcXjv * 5) {
                        const _XgMnefjr = new Uint8Array(16);
                        (typeof crypto !== 'undefined' ? crypto : self.crypto).getRandomValues(_XgMnefjr);
                        let _LWiKAdCz = 0n;
                        for (const _XfptdsJf of _XgMnefjr) {
                            _LWiKAdCz = (_LWiKAdCz << 8n) | BigInt(_XfptdsJf);
                        }
                        const _DFbYbsOg = _LWiKAdCz % (_ATnUVDql - 2n) + 1n;
                        _LSlDChVK.add(_khDcDuOM.fromBigInt6(_ZjRSotQf + _DFbYbsOg));
                        _DEkTfRCg++;
                    }
                    return Array.from(_LSlDChVK);
                }
                return [];
            } catch(_OcxsSavQ) {
                console.error(`CIDR to range failed for ${cidr}:`, _OcxsSavQ);
                return [];
            }
        }
    };
    function _hNenJDcN(_kBOJQMED, _CkcOHXrS) {
        const _obBwGLRc = {};
        const _pBnrqrzP = Object._pBnrqrzP(_CkcOHXrS);
        const _fVoSosRz = _pBnrqrzP.map(_FmBWxEbi => {
            const _ABlGBqwC = _kBOJQMED * (_CkcOHXrS[_FmBWxEbi] / 100);
            return { _FmBWxEbi, _LuiJcXjv: Math.floor(_ABlGBqwC), remainder: _ABlGBqwC - Math.floor(_ABlGBqwC) };
        });
        let _DvDFZmbQ = _fVoSosRz.reduce((acc, _pLCdISBk) => acc + _pLCdISBk._LuiJcXjv, 0);
        _fVoSosRz.sort((a, b) => b.remainder - a.remainder);
        let _XJTRHFvi = _kBOJQMED - _DvDFZmbQ;
        for (let _oGQJALCV = 0; _oGQJALCV < _XJTRHFvi; _oGQJALCV++) {
            _fVoSosRz[_oGQJALCV % _fVoSosRz._khAwwNou]._LuiJcXjv++;
        }
        for (const _pLCdISBk of _fVoSosRz) {
            _obBwGLRc[_pLCdISBk._FmBWxEbi] = _pLCdISBk._LuiJcXjv;
        }
        return _obBwGLRc;
    }
    const _jSekIzQc = __PAGE_DATA_JSON__;
    const _ayMjLmCs = _jSekIzQc._PKjbIUOv;
    const _OayGjkpB = _jSekIzQc.status;
    const _jKsFoKNq = __ALL_CF_CIDR_LIST_JSON__;
    const _ZxYKMeqm = __BALANCED_CF_CIDR_LIST_JSON__;
    const _GKkEmbHG = __DEFAULT_DOMAINS_LIST_JSON__;
    const _pfpYKwEc = __COUNTRY_MAP_JSON__;
    const _hRrvTokv = _pfpYKwEc;
    const _EWbiQcwE = 2500;
    const _aPJxOahW = navigator.hardwareConcurrency ? Math.min(16, navigator.hardwareConcurrency * 2) : 8;
    const _AUsGHGci = document.getElementById('_AUsGHGci');
    const _xzMDVeKw = document.getElementById('_xzMDVeKw');
    const _iGlRCADo = document.getElementById('status');
    const _GbTzLrGt = document.getElementById('_GbTzLrGt');
    const _WBueSHgE = document.getElementById('resultsTable').querySelector('tbody');
    const _RSDKZTQp = document.getElementById('_RSDKZTQp');
    const _PkKHUwSk = document.getElementById('cachedResultsTable').querySelector('tbody');
    const _IEcSnioZ = document.getElementById('notificationTooltip');
    const _kaPwmuYZ = document.getElementById('_kaPwmuYZ');
    const _VUXPTKZe = document.getElementById('_VUXPTKZe');
    const _RRAJVPbt = document.getElementById('_RRAJVPbt');
    const _qpTQrDAR = document.getElementById('_qpTQrDAR');
    const _cupENVvA = document.getElementById('_cupENVvA');
    const _iUUFTzfG = document.getElementById('_iUUFTzfG');
    const _amYwpZAc = document.getElementById('_amYwpZAc');
    let _uwEYnvca = null;
    let _hzAmNuIu = null;
    let _ErHOhyiX = [];
    let _wWoRSBzG = false;
    let _ymlwHlnV = null;
    function _sMAdeLtR(_czjQlTPl, _jpKAjVTb) {
        const _YcqYozYF=parseInt(_czjQlTPl.slice(1),16),t=_jpKAjVTb<0?0:255,p=_jpKAjVTb<0?_jpKAjVTb*-1:_jpKAjVTb,R=_YcqYozYF>>16,G=_YcqYozYF>>8&0x00FF,B=_YcqYozYF&0x0000FF;
        const _aMtmRgXq = Math.round((t-R)*p)+R;
        const _fipmAJVL = Math.round((t-G)*p)+G;
        const _cqRkVPCw = Math.round((t-B)*p)+B;
        return `rgb(${_aMtmRgXq.toString()}, ${_fipmAJVL.toString()}, ${_cqRkVPCw.toString()})`;
    }
    function _wvbJfeQR(_WPjxsUwt) {
        const _yADJyIhb = _lXnvPbzp(_WPjxsUwt.primaryColor);
        if(_yADJyIhb) {
            document.documentElement._IpbbDXDB.setProperty('--primary-_vYgkQCeS-rgb', `${_yADJyIhb.r},${_yADJyIhb.g},${_yADJyIhb.b}`);
        }
        document.documentElement._IpbbDXDB.setProperty('--primary-_vYgkQCeS', _WPjxsUwt.primaryColor);
        document.documentElement._IpbbDXDB.setProperty('--primary-hover', _sMAdeLtR(_WPjxsUwt.primaryColor, -0.1));
        document.documentElement._IpbbDXDB.setProperty('--primary-gradient-start', _sMAdeLtR(_WPjxsUwt.primaryColor, 0.1));
        document.documentElement._IpbbDXDB.setProperty('--primary-gradient-end', _sMAdeLtR(_WPjxsUwt.primaryColor, -0.1));
        document.getElementById('pageTitle').innerText = _WPjxsUwt.texts.title;
        document.title = _WPjxsUwt.texts.title;
        _kaPwmuYZ.innerText = _uwEYnvca ? _WPjxsUwt.texts.loginButtonSuccess : _WPjxsUwt.texts.loginButton;
        _kaPwmuYZ._IpbbDXDB._vYgkQCeS = _WPjxsUwt.colors.loginButton;
        document.getElementById('appDownloadTitleEl').innerText = _WPjxsUwt.texts.appDownloadTitle;
        document.getElementById('liveTitleEl').innerText = _WPjxsUwt.texts.liveTitle;
        document.getElementById('liveTitleEl')._IpbbDXDB._vYgkQCeS = _WPjxsUwt.colors.liveTitle;
        document.getElementById('cachedTitleEl').innerText = _WPjxsUwt.texts.cachedTitle;
        document.getElementById('cachedTitleEl')._IpbbDXDB._vYgkQCeS = _WPjxsUwt.colors.cachedTitle;
        const _oLFcoaZN = ['tableHeader1El', 'tableHeader2El', 'tableHeader3El', 'tableHeader4El', 'tableHeader5El', 'tableHeader6El', 'tableHeader7El'];
        _oLFcoaZN.forEach((_tAqOnwpK, _kdjEGtWJ) => {
            const _UEaplnyS = document.getElementById(_tAqOnwpK);
            if (_UEaplnyS) _UEaplnyS.innerText = _WPjxsUwt.texts[`tableHeader${_kdjEGtWJ + 1}`] || '';
        });
        const _VgfgRras = ['cachedTableHeader1El', 'cachedTableHeader2El', 'cachedTableHeader3El', 'cachedTableHeader4El', 'cachedTableHeader5El', 'cachedTableHeader6El', 'cachedTableHeader7El'];
        _VgfgRras.forEach((_tAqOnwpK, _kdjEGtWJ) => {
             const _UEaplnyS = document.getElementById(_tAqOnwpK);
             if (_UEaplnyS) _UEaplnyS.innerText = _ayMjLmCs.texts[`tableHeader${_kdjEGtWJ + 1}`] || '';
        });
        document.querySelectorAll('th').forEach(th => th._IpbbDXDB._vYgkQCeS = _WPjxsUwt.colors.tableHeader);
        document._yZNwCyAP.className = '';
        document._yZNwCyAP.classList.add(_WPjxsUwt.theme);
        if (['theme-particles-glass', 'theme-modern-glass', 'theme-aurora-glass', 'theme-cyberpunk-glass'].includes(_WPjxsUwt.theme)) {
            document._yZNwCyAP.classList.add('glassy-components');
        }
        document._yZNwCyAP._IpbbDXDB.backgroundImage = '';
        _RMeaNsPE();
        if (_WPjxsUwt.theme.includes('particles') || _WPjxsUwt.theme.includes('glass')) {
            _ASPJHXwy(_WPjxsUwt.particleColor);
        } else if (_WPjxsUwt.theme.includes('bing')) {
            document._yZNwCyAP._IpbbDXDB.backgroundImage = '_edEOrAGs(/bing-wallpaper)';
        }
    }
    function _vxHFfGbV() {
        _uwEYnvca = null;
        if(_hzAmNuIu) clearTimeout(_hzAmNuIu);
        _wvbJfeQR(_ayMjLmCs);
        _LxsRGnKL("登录已超时,请重新登录。", "warning");
    }
    async function _ruTdnpNN() {
        if (_uwEYnvca) {
            _LVJTymsf();
            return;
        }
        const _jftbfOeE = prompt('请输入管理员密码:');
        if (!_jftbfOeE) return;
        try {
            const _olLRQFOC = await fetch('/api/verify-_tkLgAihH', {
                method: 'POST',
                _oLFcoaZN: { 'Content-Type': 'application/json' },
                _yZNwCyAP: JSON.stringify({ _tkLgAihH: _jftbfOeE })
            });
            const _DwRHRYXE = await _olLRQFOC.json();
            if (_DwRHRYXE.success) {
                _uwEYnvca = _jftbfOeE;
                _LxsRGnKL("登录成功!有效期5分钟。", "success");
                if (_hzAmNuIu) clearTimeout(_hzAmNuIu);
                _hzAmNuIu = setTimeout(_vxHFfGbV, 5 * 60 * 1000);
                _wvbJfeQR(_ayMjLmCs);
                _LVJTymsf();
            } else {
                throw new Error(_DwRHRYXE._rbRHOVXV || '密码验证失败');
            }
        } catch (_OcxsSavQ) {
            _LxsRGnKL(`登录失败: ${_OcxsSavQ._rbRHOVXV}`, "error");
        }
    }
    function _GKxEdqVg() {
        if (!_OayGjkpB._KqkmZqcw) {
            _iUUFTzfG._IpbbDXDB.display = 'flex';
            document.getElementById('setInitialPasswordBtn').addEventListener('click', async () => {
                const _tkLgAihH = document.getElementById('initialPassword')._EOCnJdQB;
                const _kUkwAMSN = document.getElementById('confirmPassword')._EOCnJdQB;
                if (_tkLgAihH !== _kUkwAMSN) {
                    _LxsRGnKL("两次输入的密码不一致!", "error");
                    return;
                }
                if (_tkLgAihH._khAwwNou < 6) {
                    _LxsRGnKL("密码长度不能少于6位!", "error");
                    return;
                }
                try {
                    const _olLRQFOC = await fetch('/api/_esjNhPeB-_tkLgAihH', {
                        method: 'POST',
                        _oLFcoaZN: { 'Content-Type': 'application/json' },
                        _yZNwCyAP: JSON.stringify({ _tkLgAihH })
                    });
                    const _DwRHRYXE = await _olLRQFOC.json();
                    if (_DwRHRYXE.success) {
                        _LxsRGnKL(_DwRHRYXE._rbRHOVXV, "success");
                        setTimeout(() => _IzzozNQd.reload(), 1500);
                    } else {
                        throw new Error(_DwRHRYXE._rbRHOVXV);
                    }
                } catch(_OcxsSavQ) {
                    _LxsRGnKL(`设置密码失败: ${_OcxsSavQ._rbRHOVXV}`, "error");
                }
            });
            return;
        }
        _kaPwmuYZ.addEventListener('click', _ruTdnpNN);
        document.getElementById('closeModalBtn').addEventListener('click', () => { _VUXPTKZe._IpbbDXDB.display = 'none'; });
        _VUXPTKZe.addEventListener('click', (_OcxsSavQ) => { if (_OcxsSavQ.target === _VUXPTKZe) _VUXPTKZe._IpbbDXDB.display = 'none'; });
        
        document.getElementById('enableAllSourcesCheckbox').addEventListener('change', function() {
            if (this.checked) {
                document.querySelectorAll('#fine-grained-sources-_BScJLCCF .fine-grained-_LwcnEHTM-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-_BScJLCCF .fine-grained-_LwcnEHTM-cb').forEach(cb => cb.checked = false);
                document.getElementById('enableAllSourcesCheckbox').checked = false;
                this.checked = false;
            }
        });

        document.getElementById('saveParamsBtn').addEventListener('click', async () => {
            if (!_uwEYnvca) {
                _LxsRGnKL("请先通过点击右上角按钮输入密码。", "error");
                return;
            }
            const _qDkJoOIY = [];
            document.querySelectorAll('#custom-fields-_BScJLCCF .custom-field-_YSOATzWa').forEach(_YSOATzWa => {
                const _leAugtqN = _YSOATzWa.querySelector('.custom-field-_leAugtqN')._EOCnJdQB.trim();
                const _EOCnJdQB = _YSOATzWa.querySelector('.custom-field-_EOCnJdQB')._EOCnJdQB.trim();
                if (_leAugtqN) _qDkJoOIY.push({ _leAugtqN, _EOCnJdQB });
            });
            const _jeyZofEF = [];
            document.querySelectorAll('#parameter-sets-_BScJLCCF .parameter-_esjNhPeB-_YSOATzWa').forEach(_YSOATzWa => {
                const _leAugtqN = _YSOATzWa.querySelector('.param-_esjNhPeB-_leAugtqN')._EOCnJdQB.trim();
                const _pvVxRkiH = _YSOATzWa.querySelector('.param-_esjNhPeB-_pvVxRkiH')._EOCnJdQB.trim();
                const _YavVztKf = _YSOATzWa.querySelector('.param-_esjNhPeB-_YavVztKf')._EOCnJdQB.trim();
                const _DhvEAnvS = _YSOATzWa.querySelector('.param-_esjNhPeB-_DhvEAnvS')._EOCnJdQB.trim();
                if(_leAugtqN) _jeyZofEF.push({ _leAugtqN, _pvVxRkiH, '_YavVztKf': _YavVztKf, _DhvEAnvS });
            });
            const _EMunadZP = [];
            document.querySelectorAll('#fine-grained-sources-_BScJLCCF .fine-grained-_lGZLBHIi-_YSOATzWa').forEach(_YSOATzWa => {
                const _IzzozNQd = _YSOATzWa.querySelector('.fine-grained-_IzzozNQd')._EOCnJdQB.trim();
                const _LSlDChVK = _YSOATzWa.querySelector('.fine-grained-_LSlDChVK')._EOCnJdQB.trim();
                const _LwcnEHTM = _YSOATzWa.querySelector('.fine-grained-_LwcnEHTM-cb').checked;
                const _CcwsInur = parseInt(_YSOATzWa.querySelector('.fine-grained-_CcwsInur')._EOCnJdQB, 10) || 0;
                const _UHuEPcwS = _YSOATzWa.querySelector('.use-_leAugtqN-as-_IzzozNQd-cb').checked;
                if (_IzzozNQd && _LSlDChVK) {
                    _EMunadZP.push({ _IzzozNQd, _LSlDChVK, _LwcnEHTM, _CcwsInur, _UHuEPcwS });
                }
            });
            
            let _rpVtPPgG = parseInt(document.getElementById('subscriptionIdLength')._EOCnJdQB, 10);
            if (isNaN(_rpVtPPgG) || _rpVtPPgG < 2) _rpVtPPgG = 2;
            if (_rpVtPPgG > 128) _rpVtPPgG = 128;

            const _gcamjYJA = {
                theme: document.getElementById('themeSelect')._EOCnJdQB,
                primaryColor: document.getElementById('primaryColorInput')._EOCnJdQB,
                particleColor: document.getElementById('particleColorInput')._EOCnJdQB,
                useResolvedDomains: document.getElementById('useResolvedDomainsCheckbox').checked,
                resolvedDomains: document.getElementById('resolvedDomainsInput')._EOCnJdQB,
                sampleSize: parseInt(document.getElementById('sampleSizeInput')._EOCnJdQB, 10) || 1000,
                topN: parseInt(document.getElementById('topNInput')._EOCnJdQB, 10) || 15,
                rttRandomMin: parseInt(document.getElementById('latencyRangeMinInput')._EOCnJdQB, 10) || 0,
                rttRandomMax: parseInt(document.getElementById('latencyRangeMaxInput')._EOCnJdQB, 10) || 0,
                _rrNLaqra: document.getElementById('converterServiceUrlInput')._EOCnJdQB.trim(),
                subscriptionId: {
                    _khAwwNou: _rpVtPPgG,
                    _hzIjPneL: document.getElementById('subscriptionIdCharset')._EOCnJdQB.trim()
                },
                api: {
                    _LwcnEHTM: document.getElementById('enableApiCheckbox').checked,
                    _rbRHOVXV: document.getElementById('apiMessageInput')._EOCnJdQB || '维护中...',
                },
                ispFilter: { 
                    _LwcnEHTM: document.getElementById('enableIspFilterCheckbox').checked 
                },
                geoLocation: {
                    retries: parseInt(document.getElementById('geoLocationRetriesInput')._EOCnJdQB, 10) || 0,
                    filterUnknown: document.getElementById('filterUnknownGeoCheckbox').checked
                },
                streamer: {
                    _LwcnEHTM: document.getElementById('enableStreamerCheckbox').checked
                },
                websocketStreamer: {
                    _LwcnEHTM: document.getElementById('enableWebsocketStreamerCheckbox').checked,
                    _edEOrAGs: document.getElementById('websocketStreamerUrlInput')._EOCnJdQB.trim()
                },
                visitorPassword: {
                    _LwcnEHTM: document.getElementById('enableVisitorPasswordCheckbox').checked,
                    _tkLgAihH: document.getElementById('visitorPasswordInput')._EOCnJdQB.trim()
                },
                customSubPath: {
                    _LwcnEHTM: document.getElementById('enableCustomSubPathCheckbox').checked,
                    _DhvEAnvS: document.getElementById('customSubPathInput')._EOCnJdQB.trim()
                },
                itemLink: {
                    _LwcnEHTM: document.getElementById('enableItemLinkCheckbox').checked,
                    template: document.getElementById('itemLinkTemplateInput')._EOCnJdQB,
                    selectionMode: document.getElementById('parameterSelectionMode')._EOCnJdQB,
                    _jeyZofEF: _jeyZofEF,
                    _qDkJoOIY: _qDkJoOIY,
                },
                dataFeeds: {
                    universalFallbackAddress: document.getElementById('universalFallbackAddressInput')._EOCnJdQB.trim(),
                },
                announcement: {
                    popup: {
                        _LwcnEHTM: document.getElementById('enablePopup').checked,
                        _eEBnchvB: document.getElementById('announcementText')._EOCnJdQB,
                        _IhBfuXcP: parseInt(document.getElementById('popupDuration')._EOCnJdQB, 10) || 5
                    },
                    marquee: {
                        _LwcnEHTM: document.getElementById('enableMarquee').checked,
                        _eEBnchvB: document.getElementById('announcementText')._EOCnJdQB
                    }
                },
                fineGrained: {
                    _LwcnEHTM: true,
                    sources: _EMunadZP
                },
                customNodes: {
                    _LwcnEHTM: document.getElementById('enableCustomNodesCheckbox').checked,
                    list: document.getElementById('customNodesInput')._EOCnJdQB
                },
                texts: {
                    title: document.getElementById('textInput_title')._EOCnJdQB,
                    loginButton: document.getElementById('textInput_loginButton')._EOCnJdQB,
                    loginButtonSuccess: '修改参数',
                    appDownloadTitle: document.getElementById('textInput_appDownloadTitle')._EOCnJdQB,
                    liveTitle: document.getElementById('textInput_liveTitle')._EOCnJdQB,
                    cachedTitle: document.getElementById('textInput_cachedTitle')._EOCnJdQB,
                },
                colors: {
                    title: document.getElementById('colorInput_title')._EOCnJdQB,
                    loginButton: document.getElementById('colorInput_loginButton')._EOCnJdQB,
                    liveTitle: document.getElementById('colorInput_liveTitle')._EOCnJdQB,
                    cachedTitle: document.getElementById('colorInput_cachedTitle')._EOCnJdQB,
                    tableHeader: document.getElementById('colorInput_tableHeader')._EOCnJdQB,
                },
                telegram: {
                    bot_token: document.getElementById('botTokenInput')._EOCnJdQB.trim(),
                    chat_id: document.getElementById('chatIdInput')._EOCnJdQB.trim(),
                },
            };
            try {
                const _olLRQFOC = await fetch('/api/_PKjbIUOv', {
                    method: 'POST',
                    _oLFcoaZN: { 'Content-Type': 'application/json' },
                    _yZNwCyAP: JSON.stringify({ _PKjbIUOv: _gcamjYJA, adminPassword: _uwEYnvca })
                });
                const _DwRHRYXE = await _olLRQFOC.json();
                if (_olLRQFOC.ok && _DwRHRYXE.success) {
                    _LxsRGnKL("配置已保存,正在刷新...", "success");
                    setTimeout(() => _IzzozNQd.reload(), 1500);
                } else {
                    throw new Error(_DwRHRYXE._rbRHOVXV || '未知错误');
                }
            } catch (_OcxsSavQ) {
                _LxsRGnKL(`操作失败: ${_OcxsSavQ._rbRHOVXV}`, "error");
                if (String(_OcxsSavQ._rbRHOVXV).includes("密码错误")) {
                    _vxHFfGbV();
                }
            }
        });
        document.getElementById('changePasswordBtn').addEventListener('click', async () => {
            const _RCCkiLza = document.getElementById('oldPasswordInput')._EOCnJdQB;
            const _QFshgGoC = document.getElementById('newPasswordInput')._EOCnJdQB;
            if (!_RCCkiLza || !_QFshgGoC) {
                _LxsRGnKL("新旧密码均不能为空!", "error");
                return;
            }
             try {
                const _olLRQFOC = await fetch('/api/change-_tkLgAihH', {
                    method: 'POST',
                    _oLFcoaZN: { 'Content-Type': 'application/json' },
                    _yZNwCyAP: JSON.stringify({ _RCCkiLza, _QFshgGoC })
                });
                const _DwRHRYXE = await _olLRQFOC.json();
                if (_DwRHRYXE.success) {
                    _LxsRGnKL(_DwRHRYXE._rbRHOVXV, "success");
                    document.getElementById('oldPasswordInput')._EOCnJdQB = '';
                    document.getElementById('newPasswordInput')._EOCnJdQB = '';
                    _uwEYnvca = _QFshgGoC;
                } else {
                    throw new Error(_DwRHRYXE._rbRHOVXV);
                }
            } catch(_OcxsSavQ) {
                _LxsRGnKL(`修改密码失败: ${_OcxsSavQ._rbRHOVXV}`, "error");
            }
        });
        document.getElementById('useResolvedDomainsCheckbox').addEventListener('change', (_OcxsSavQ) => {
            document.getElementById('resolvedDomainsGroup')._IpbbDXDB.display = _OcxsSavQ.target.checked ? 'block' : 'none';
        });
        document.getElementById('enableCustomNodesCheckbox').addEventListener('change', (_OcxsSavQ) => {
            document.getElementById('customNodesGroup')._IpbbDXDB.display = _OcxsSavQ.target.checked ? 'block' : 'none';
        });
        document.getElementById('enableApiCheckbox').addEventListener('change', (_OcxsSavQ) => {
            document.getElementById('apiConfigGroup')._IpbbDXDB.display = _OcxsSavQ.target.checked ? 'block' : 'none';
        });
        document.getElementById('enableItemLinkCheckbox').addEventListener('change', (_OcxsSavQ) => {
            document.getElementById('itemLinkConfigGroup')._IpbbDXDB.display = _OcxsSavQ.target.checked ? 'block' : 'none';
        });
        document.getElementById('enableWebsocketStreamerCheckbox').addEventListener('change', (_OcxsSavQ) => {
            document.getElementById('websocketStreamerGroup')._IpbbDXDB.display = _OcxsSavQ.target.checked ? 'block' : 'none';
            const _SztdhfyH = document.querySelector('#parameter-sets-_BScJLCCF .param-_esjNhPeB-_DhvEAnvS');
            if (_SztdhfyH) {
                if (_OcxsSavQ.target.checked) {
                    _SztdhfyH._EOCnJdQB = '/snippets?_vtYAPNMi=endpointAddress:_vCGvbutt(443)&nat64=6to4';
                } else {
                    _SztdhfyH._EOCnJdQB = '/?ed=2560';
                }
            }
        });
         document.getElementById('add-custom-field-btn').addEventListener('click', () => {
             _blDhAwaH('', '');
        });
        document.getElementById('add-parameter-_esjNhPeB-btn').addEventListener('click', () => {
            const _LuiJcXjv = document.querySelectorAll('.parameter-_esjNhPeB-_YSOATzWa')._khAwwNou + 1;
            _MAjMDJTF({_leAugtqN: `配置${_LuiJcXjv}`, _pvVxRkiH: '', _YavVztKf: '', _DhvEAnvS: ''});
            _GQWPPCko();
        });
         document.getElementById('add-fine-grained-_lGZLBHIi-btn').addEventListener('click', () => {
             _DbVDPztd({ _IzzozNQd: '', _LSlDChVK: '', _LwcnEHTM: true, _CcwsInur: 50, _UHuEPcwS: false });
        });
        document.getElementById('enableVisitorPasswordCheckbox').addEventListener('change', (_OcxsSavQ) => {
            document.getElementById('visitorPasswordGroup')._IpbbDXDB.display = _OcxsSavQ.target.checked ? 'block' : 'none';
        });
        document.getElementById('enableCustomSubPathCheckbox').addEventListener('change', (_OcxsSavQ) => {
            document.getElementById('customSubPathGroup')._IpbbDXDB.display = _OcxsSavQ.target.checked ? 'block' : 'none';
        });
        document.getElementById('enablePopup').addEventListener('change', (_OcxsSavQ) => {
            document.getElementById('popupDurationContainer')._IpbbDXDB.display = _OcxsSavQ.target.checked ? 'flex' : 'none';
        });
    }
    function _blDhAwaH(_leAugtqN, _EOCnJdQB) {
        const _BScJLCCF = document.getElementById('custom-fields-_BScJLCCF');
        const _DBAHHCWI = document.createElement('div');
        _DBAHHCWI.className = 'form-grid custom-field-_YSOATzWa';
        _DBAHHCWI._IpbbDXDB = 'grid-template-columns: 1fr 1fr auto; gap: 5px; margin-bottom: 5px;';
        _DBAHHCWI.innerHTML = `
            <input _mSrCNgrg="_eEBnchvB" class="custom-field-_leAugtqN" _NniVanMg="占位符名称" _EOCnJdQB="${_leAugtqN}">
            <input _mSrCNgrg="_eEBnchvB" class="custom-field-_EOCnJdQB" _NniVanMg="值" _EOCnJdQB="${_EOCnJdQB}">
            <button _mSrCNgrg="button" class="btn btn-outline" onclick="this.closest('.form-grid').remove()">删除</button>
        `;
        _BScJLCCF.appendChild(_DBAHHCWI);
    }
    function _MAjMDJTF(_esjNhPeB) {
        const _BScJLCCF = document.getElementById('parameter-sets-_BScJLCCF');
        const _DBAHHCWI = document.createElement('div');
        _DBAHHCWI.className = 'parameter-_esjNhPeB-_YSOATzWa';
        _DBAHHCWI.innerHTML = `
            <div class="parameter-_esjNhPeB-_AvemCnuE">
                <input _mSrCNgrg="_eEBnchvB" class="param-_esjNhPeB-_leAugtqN" _NniVanMg="配置名称" _EOCnJdQB="${_esjNhPeB._leAugtqN}" oninput="_GQWPPCko()">
                <button _mSrCNgrg="button" class="btn btn-outline" onclick="this.closest('.parameter-_esjNhPeB-_YSOATzWa').remove(); _GQWPPCko();">删除</button>
            </div>
            <div class="form-grid">
                <div class="form-grid-label"><label>Host</label></div><div class="form-grid-control"><input _mSrCNgrg="_eEBnchvB" class="param-_esjNhPeB-_pvVxRkiH" _EOCnJdQB="${_esjNhPeB._pvVxRkiH || ''}"></div>
                <div class="form-grid-label"><label>ID</label></div><div class="form-grid-control"><input _mSrCNgrg="_eEBnchvB" class="param-_esjNhPeB-_YavVztKf" _EOCnJdQB="${_esjNhPeB['_YavVztKf'] || ''}"></div>
                <div class="form-grid-label"><label>Path</label></div><div class="form-grid-control"><input _mSrCNgrg="_eEBnchvB" class="param-_esjNhPeB-_DhvEAnvS" _EOCnJdQB="${_esjNhPeB._DhvEAnvS || ''}"></div>
            </div>
        `;
        _BScJLCCF.appendChild(_DBAHHCWI);
    }
    function _GQWPPCko() {
        const _FeHGaBrr = document.getElementById('parameterSelectionMode');
        const _IMpNvZle = _FeHGaBrr._EOCnJdQB;
        _FeHGaBrr.innerHTML = '';
        const _hyoUTFiN = document.createElement('_SlRpkXor');
        _hyoUTFiN._EOCnJdQB = 'random';
        _hyoUTFiN.textContent = '随机轮询';
        _FeHGaBrr.appendChild(_hyoUTFiN);
        const _TiZgFvdq = document.createElement('_SlRpkXor');
        _TiZgFvdq._EOCnJdQB = 'first';
        _TiZgFvdq.textContent = '使用第一组';
        _FeHGaBrr.appendChild(_TiZgFvdq);
        document.querySelectorAll('.param-_esjNhPeB-_leAugtqN').forEach(input => {
            const _leAugtqN = input._EOCnJdQB.trim();
            if (_leAugtqN) {
                const _SlRpkXor = document.createElement('_SlRpkXor');
                _SlRpkXor._EOCnJdQB = _leAugtqN;
                _SlRpkXor.textContent = `指定: ${_leAugtqN}`;
                _FeHGaBrr.appendChild(_SlRpkXor);
            }
        });
        if (Array.from(_FeHGaBrr.options).some(opt => opt._EOCnJdQB === _IMpNvZle)) {
            _FeHGaBrr._EOCnJdQB = _IMpNvZle;
        } else {
            _FeHGaBrr._EOCnJdQB = 'random';
        }
    }
    function _DbVDPztd(_lGZLBHIi) {
        const _BScJLCCF = document.getElementById('fine-grained-sources-_BScJLCCF');
        const _DBAHHCWI = document.createElement('div');
        _DBAHHCWI.className = 'fine-grained-_lGZLBHIi-_YSOATzWa parameter-_esjNhPeB-_YSOATzWa';
        _DBAHHCWI._IpbbDXDB.padding = '1rem';
        const _oZDJclTb = _lGZLBHIi._UHuEPcwS ? 'checked' : '';
        const _HHCfqMun = !_lGZLBHIi._UHuEPcwS ? 'checked' : '';
        const _wBuPALOM = _lGZLBHIi._LwcnEHTM ? 'checked' : '';
        _DBAHHCWI.innerHTML = `
            <div _IpbbDXDB="display: grid; grid-template-columns: 1fr auto auto; gap: 10px; align-items: center; margin-bottom: 1rem;">
                <input _mSrCNgrg="_eEBnchvB" class="fine-grained-_IzzozNQd" _NniVanMg="地区名称 (如: 香港)" _EOCnJdQB="${_lGZLBHIi._IzzozNQd || ''}">
                <div _IpbbDXDB="display: flex; align-items: center; gap: 5px;"><input _mSrCNgrg="checkbox" class="fine-grained-_LwcnEHTM-cb" ${_wBuPALOM}><label>启用</label></div>
                <button _mSrCNgrg="button" class="btn btn-outline" onclick="this.closest('.fine-grained-_lGZLBHIi-_YSOATzWa').remove()">删除</button>
            </div>
            <textarea class="fine-grained-_LSlDChVK" _NniVanMg="IP源 (每行一个IP、CIDR或URL)" _ZjUyjiQZ="3" _IpbbDXDB="_FlJxBCin:100%;">${_lGZLBHIi._LSlDChVK || ''}</textarea>
            <div class="fine-grained-options" _IpbbDXDB="justify-_UzlfyvSV: space-between;">
                <div _IpbbDXDB="display: flex; gap: 1rem;">
                    <label><input _mSrCNgrg="checkbox" class="query-_BHWlpJmz-cb" ${_HHCfqMun}>查询真实归属地</label>
                    <label><input _mSrCNgrg="checkbox" class="use-_leAugtqN-as-_IzzozNQd-cb" ${_oZDJclTb}>使用地区名称作为归属地</label>
                </div>
                <div _IpbbDXDB="display: flex; align-items: center; gap: 5px;"><input _mSrCNgrg="number" class="fine-grained-_CcwsInur _CcwsInur-input" _EOCnJdQB="${_lGZLBHIi._CcwsInur || 0}" min="0" max="100"><span>%</span></div>
            </div>
        `;
        const _SWmlfmkZ = _DBAHHCWI.querySelector('.query-_BHWlpJmz-cb');
        const _DvEXvfoh = _DBAHHCWI.querySelector('.use-_leAugtqN-as-_IzzozNQd-cb');
        _SWmlfmkZ.addEventListener('change', () => {
            if (_SWmlfmkZ.checked) {
                _DvEXvfoh.checked = false;
            } else if (!_DvEXvfoh.checked) {
                _SWmlfmkZ.checked = true;
            }
        });
        _DvEXvfoh.addEventListener('change', () => {
            if (_DvEXvfoh.checked) {
                _SWmlfmkZ.checked = false;
            } else if (!_DvEXvfoh.checked) {
                _DvEXvfoh.checked = true;
            }
        });
        _BScJLCCF.appendChild(_DBAHHCWI);
    }
    function _LVJTymsf() {
        const _WPjxsUwt = _ayMjLmCs;
        document.getElementById('themeSelect')._EOCnJdQB = _WPjxsUwt.theme;
        document.getElementById('primaryColorInput')._EOCnJdQB = _WPjxsUwt.primaryColor;
        document.getElementById('particleColorInput')._EOCnJdQB = _WPjxsUwt.particleColor;
        document.getElementById('useResolvedDomainsCheckbox').checked = _WPjxsUwt.useResolvedDomains;
        document.getElementById('resolvedDomainsInput')._NniVanMg = '留空则使用内置默认域名';
        document.getElementById('resolvedDomainsInput')._EOCnJdQB = _WPjxsUwt.resolvedDomains || '';
        document.getElementById('resolvedDomainsGroup')._IpbbDXDB.display = _WPjxsUwt.useResolvedDomains ? 'block' : 'none';
        document.getElementById('enableCustomNodesCheckbox').checked = _WPjxsUwt.customNodes._LwcnEHTM;
        document.getElementById('customNodesInput')._EOCnJdQB = _WPjxsUwt.customNodes.list || '';
        document.getElementById('customNodesGroup')._IpbbDXDB.display = _WPjxsUwt.customNodes._LwcnEHTM ? 'block' : 'none';
        document.getElementById('converterServiceUrlInput')._EOCnJdQB = _WPjxsUwt._rrNLaqra || '';
        document.getElementById('subscriptionIdLength')._EOCnJdQB = _WPjxsUwt.subscriptionId._khAwwNou;
        document.getElementById('subscriptionIdCharset')._EOCnJdQB = _WPjxsUwt.subscriptionId._hzIjPneL;
        document.getElementById('enableItemLinkCheckbox').checked = _WPjxsUwt.itemLink._LwcnEHTM;
        document.getElementById('itemLinkConfigGroup')._IpbbDXDB.display = _WPjxsUwt.itemLink._LwcnEHTM ? 'block' : 'none';
        document.getElementById('itemLinkTemplateInput')._EOCnJdQB = _WPjxsUwt.itemLink.template;
        const _oruNwXoI = document.getElementById('parameter-sets-_BScJLCCF');
        _oruNwXoI.innerHTML = '';
        if (_WPjxsUwt.itemLink._jeyZofEF && Array.isArray(_WPjxsUwt.itemLink._jeyZofEF)) {
            _WPjxsUwt.itemLink._jeyZofEF.forEach(_esjNhPeB => _MAjMDJTF(_esjNhPeB));
        }
        _GQWPPCko();
        document.getElementById('parameterSelectionMode')._EOCnJdQB = _WPjxsUwt.itemLink.selectionMode || 'random';
        const _SztdhfyH = document.querySelector('#parameter-sets-_BScJLCCF .param-_esjNhPeB-_DhvEAnvS');
        if (_SztdhfyH && _WPjxsUwt.websocketStreamer && _WPjxsUwt.websocketStreamer._LwcnEHTM) {
            _SztdhfyH._EOCnJdQB = '/snippets?_vtYAPNMi=endpointAddress:_vCGvbutt(443)&nat64=6to4';
        }
        const _eqSWdkmg = document.getElementById('custom-fields-_BScJLCCF');
        _eqSWdkmg.innerHTML = '';
        if (_WPjxsUwt.itemLink._qDkJoOIY && Array.isArray(_WPjxsUwt.itemLink._qDkJoOIY)) {
            _WPjxsUwt.itemLink._qDkJoOIY.forEach(field => _blDhAwaH(field._leAugtqN, field._EOCnJdQB));
        }
        document.getElementById('universalFallbackAddressInput')._EOCnJdQB = _WPjxsUwt.dataFeeds.universalFallbackAddress || '';
        const _pojBnYfn = _WPjxsUwt.websocketStreamer && _WPjxsUwt.websocketStreamer._LwcnEHTM;
        document.getElementById('enableWebsocketStreamerCheckbox').checked = _pojBnYfn;
        document.getElementById('websocketStreamerUrlInput')._EOCnJdQB = _WPjxsUwt.websocketStreamer ? _WPjxsUwt.websocketStreamer._edEOrAGs : 'https://snippets.neib.cn';
        document.getElementById('websocketStreamerGroup')._IpbbDXDB.display = _pojBnYfn ? 'block' : 'none';
        const _mzhAQdta = _WPjxsUwt.announcement || {};
        document.getElementById('announcementText')._EOCnJdQB = (_mzhAQdta.popup && _mzhAQdta.popup._eEBnchvB) || (_mzhAQdta.marquee && _mzhAQdta.marquee._eEBnchvB) || '';
        document.getElementById('enableMarquee').checked = _mzhAQdta.marquee && _mzhAQdta.marquee._LwcnEHTM;
        document.getElementById('enablePopup').checked = _mzhAQdta.popup && _mzhAQdta.popup._LwcnEHTM;
        document.getElementById('popupDuration')._EOCnJdQB = (_mzhAQdta.popup && _mzhAQdta.popup._IhBfuXcP) || 5;
        document.getElementById('popupDurationContainer')._IpbbDXDB.display = (_mzhAQdta.popup && _mzhAQdta.popup._LwcnEHTM) ? 'flex' : 'none';
        const _txCrDkvX = document.getElementById('fine-grained-sources-_BScJLCCF');
        _txCrDkvX.innerHTML = '';
        if (_WPjxsUwt.fineGrained.sources && Array.isArray(_WPjxsUwt.fineGrained.sources)) {
            _WPjxsUwt.fineGrained.sources.forEach(_lGZLBHIi => _DbVDPztd(_lGZLBHIi));
        }
        document.getElementById('sampleSizeInput')._EOCnJdQB = _WPjxsUwt.sampleSize;
        document.getElementById('topNInput')._EOCnJdQB = _WPjxsUwt.topN;
        document.getElementById('latencyRangeMinInput')._EOCnJdQB = _WPjxsUwt.rttRandomMin;
        document.getElementById('latencyRangeMaxInput')._EOCnJdQB = _WPjxsUwt.rttRandomMax;
        document.getElementById('enableIspFilterCheckbox').checked = _WPjxsUwt.ispFilter._LwcnEHTM;
        const _sOUVvxPY = _WPjxsUwt.geoLocation || { retries: 1, filterUnknown: false };
        document.getElementById('geoLocationRetriesInput')._EOCnJdQB = _sOUVvxPY.retries;
        document.getElementById('filterUnknownGeoCheckbox').checked = _sOUVvxPY.filterUnknown;
        document.getElementById('enableStreamerCheckbox').checked = _WPjxsUwt.streamer._LwcnEHTM;
        document.getElementById('enableApiCheckbox').checked = _WPjxsUwt.api._LwcnEHTM;
        document.getElementById('apiConfigGroup')._IpbbDXDB.display = _WPjxsUwt.api._LwcnEHTM ? 'block' : 'none';
        document.getElementById('apiMessageInput')._EOCnJdQB = _WPjxsUwt.api._rbRHOVXV;
        const _eloGbGIG = _WPjxsUwt.customSubPath && _WPjxsUwt.customSubPath._LwcnEHTM;
        document.getElementById('enableCustomSubPathCheckbox').checked = _eloGbGIG;
        document.getElementById('customSubPathInput')._EOCnJdQB = _WPjxsUwt.customSubPath ? _WPjxsUwt.customSubPath._DhvEAnvS : 'latest';
        document.getElementById('customSubPathGroup')._IpbbDXDB.display = _eloGbGIG ? 'block' : 'none';
        const _uZfWvCRP = _WPjxsUwt.visitorPassword && _WPjxsUwt.visitorPassword._LwcnEHTM;
        document.getElementById('enableVisitorPasswordCheckbox').checked = _uZfWvCRP;
        document.getElementById('visitorPasswordInput')._EOCnJdQB = _WPjxsUwt.visitorPassword ? _WPjxsUwt.visitorPassword._tkLgAihH : '';
        document.getElementById('visitorPasswordGroup')._IpbbDXDB.display = _uZfWvCRP ? 'block' : 'none';
        document.getElementById('textInput_title')._EOCnJdQB = _WPjxsUwt.texts.title;
        document.getElementById('textInput_loginButton')._EOCnJdQB = _WPjxsUwt.texts.loginButton;
        document.getElementById('textInput_appDownloadTitle')._EOCnJdQB = _WPjxsUwt.texts.appDownloadTitle;
        document.getElementById('textInput_liveTitle')._EOCnJdQB = _WPjxsUwt.texts.liveTitle;
        document.getElementById('textInput_cachedTitle')._EOCnJdQB = _WPjxsUwt.texts.cachedTitle;
        document.getElementById('colorInput_title')._EOCnJdQB = _WPjxsUwt.colors.title;
        document.getElementById('colorInput_loginButton')._EOCnJdQB = _WPjxsUwt.colors.loginButton;
        document.getElementById('colorInput_liveTitle')._EOCnJdQB = _WPjxsUwt.colors.liveTitle;
        document.getElementById('colorInput_cachedTitle')._EOCnJdQB = _WPjxsUwt.colors.cachedTitle;
        document.getElementById('colorInput_tableHeader')._EOCnJdQB = _WPjxsUwt.colors.tableHeader;
        document.getElementById('botTokenInput')._EOCnJdQB = _WPjxsUwt.telegram.bot_token || '';
        document.getElementById('chatIdInput')._EOCnJdQB = _WPjxsUwt.telegram.chat_id || '';
        _VUXPTKZe._IpbbDXDB.display = 'flex';
    }
    function _tNMwpwlx(_rnSnuVaG) {
        if (window.innerWidth <= 768) {
            const _ZjUyjiQZ = _rnSnuVaG.querySelectorAll('thead tr, tbody tr');
            _ZjUyjiQZ.forEach(_YSOATzWa => {
                const _JavOylAL = Array.from(_YSOATzWa.children);
                const _ZfFQfCcH = [
                    _JavOylAL[0],
                    _JavOylAL[1],
                    _JavOylAL[3],
                    _JavOylAL[6],
                    _JavOylAL[2],
                    _JavOylAL[4],
                    _JavOylAL[5]
                ];
                _ZfFQfCcH.forEach(cell => _YSOATzWa.appendChild(cell));
            });
        }
    }
    async function _uOlrXpGL() {
        if (!_OayGjkpB._KqkmZqcw) {
            _GKxEdqVg();
            return;
        }
        if (_ayMjLmCs.announcement && _ayMjLmCs.announcement.marquee && _ayMjLmCs.announcement.marquee._LwcnEHTM && _ayMjLmCs.announcement.marquee._eEBnchvB) {
            const _imZnhlRC = document.getElementById('marquee-_BScJLCCF');
            const _xzweLIAs = document.getElementById('marquee-_eEBnchvB');
            const _fYUFnbgY = document.querySelector('.progress-section');
            if (_imZnhlRC && _xzweLIAs && _fYUFnbgY) {
                _xzweLIAs.innerText = _ayMjLmCs.announcement.marquee._eEBnchvB;
                _imZnhlRC._IpbbDXDB.display = 'block';
                const _jZqpDZST = () => {
                    _imZnhlRC._IpbbDXDB._FlJxBCin = `${_fYUFnbgY.offsetWidth}px`;
                    const _lidBZWLl = _xzweLIAs.offsetWidth;
                    const _TvkIcNLZ = _imZnhlRC.offsetWidth;
                    const _IhBfuXcP = (_lidBZWLl + _TvkIcNLZ) / 100;
                    _xzweLIAs._IpbbDXDB.animationDuration = `${Math.max(10, _IhBfuXcP)}s`;
                };
                _jZqpDZST();
                window.addEventListener('resize', _jZqpDZST);
            }
        }
        
        _wvbJfeQR(_ayMjLmCs);
        
        if (_ayMjLmCs.announcement && _ayMjLmCs.announcement.popup && _ayMjLmCs.announcement.popup._LwcnEHTM && _ayMjLmCs.announcement.popup._eEBnchvB) {
            setTimeout(() => {
                _LxsRGnKL(_ayMjLmCs.announcement.popup._eEBnchvB, 'info', _ayMjLmCs.announcement.popup._IhBfuXcP * 1000);
            }, 500);
        }
        _GKxEdqVg();
        _cTUOYoSe();
        _lzWzBNua();
        _QSqkcUeV();
        await _xhlrHcTl();
        document.getElementById('copyIpApiBtn').addEventListener('click', () => {
            const _bKzPIANK = window._IzzozNQd.origin + '/_vtYAPNMi';
            navigator.clipboard.writeText(_bKzPIANK).then(() => {
                _LxsRGnKL('IP 列表 API 地址已复制!', 'success');
            });
        });
        if (_ayMjLmCs.visitorPassword && _ayMjLmCs.visitorPassword._LwcnEHTM) {
            _AUsGHGci._IpbbDXDB.display = 'none';
            const _skjxpscl = document.getElementById('visitorPasswordPrompt');
            _skjxpscl._IpbbDXDB.display = 'block';
            const _ReqbpCFw = document.getElementById('visitorPasswordEntry');
            const _AwTaTvjt = document.getElementById('startTestWithPasswordBtn');
            const _MyUHbTdJ = async () => {
                const _tkLgAihH = _ReqbpCFw._EOCnJdQB;
                if (!_tkLgAihH) {
                    _LxsRGnKL('请输入访客密码', 'warning');
                    return;
                }
                try {
                    const _olLRQFOC = await fetch('/api/verify-visitor-_tkLgAihH', {
                        method: 'POST',
                        _oLFcoaZN: { 'Content-Type': 'application/json' },
                        _yZNwCyAP: JSON.stringify({ _tkLgAihH })
                    });
                    const _DwRHRYXE = await _olLRQFOC.json();
                    if (_olLRQFOC.ok && _DwRHRYXE.success) {
                        _LxsRGnKL('验证成功,开始测试...', 'success');
                        _skjxpscl._IpbbDXDB.display = 'none';
                        _AUsGHGci._IpbbDXDB.display = 'block';
                        await _XLjQJkkI();
                    } else {
                        throw new Error(_DwRHRYXE._rbRHOVXV || '密码错误');
                    }
                } catch (_OcxsSavQ) {
                    _LxsRGnKL(`验证失败: ${_OcxsSavQ._rbRHOVXV}`, "error");
                    _ReqbpCFw._EOCnJdQB = '';
                    _ReqbpCFw.focus();
                }
            };
            _AwTaTvjt.addEventListener('click', _MyUHbTdJ);
            _ReqbpCFw.addEventListener('keypress', (_OcxsSavQ) => {
                if (_OcxsSavQ._FmBWxEbi === 'Enter') {
                    _OcxsSavQ.preventDefault();
                    _MyUHbTdJ();
                }
            });
            _ReqbpCFw.focus();
        } else {
            _iGlRCADo.textContent = "页面加载完成,准备开始测试...";
            await _ghbqMBST(100);
            await _XLjQJkkI();
        }
    }
    async function _ghbqMBST(ms = 0) { await new Promise(resolve => setTimeout(resolve, ms)); }
    function _lXnvPbzp(_czjQlTPl) {
      let _DwRHRYXE = /^#?([a-_YcqYozYF\d]{2})([a-_YcqYozYF\d]{2})([a-_YcqYozYF\d]{2})$/_oGQJALCV.exec(_czjQlTPl);
      return _DwRHRYXE ? { r: parseInt(_DwRHRYXE[1], 16), g: parseInt(_DwRHRYXE[2], 16), b: parseInt(_DwRHRYXE[3], 16) } : null;
    }
    async function _oeASsQEn(_vtYAPNMi) {
        const _kQEGJORu = new AbortController();
        const _qwVKNDDZ = setTimeout(() => _kQEGJORu.abort(), _EWbiQcwE);
        const _GWUuEtvd = Date.now();
        try {
            const _cjSLdSYE = _khDcDuOM.isIPv6(_vtYAPNMi) ? `[${_vtYAPNMi}]` : _vtYAPNMi;
            const _edEOrAGs = `https://${_cjSLdSYE}/cdn-cgi/trace`;
            await fetch(_edEOrAGs, {
                signal: _kQEGJORu.signal,
                mode: 'no-cors',
                cache: 'no-store'
            });
        } catch (error) {
            if (error._leAugtqN === 'AbortError') {
                return { _vtYAPNMi, _fSBoxtUt: Infinity, error: '超时' };
            }
        } finally {
            clearTimeout(_qwVKNDDZ);
        }
        const _fSBoxtUt = Date.now() - _GWUuEtvd;
        return { _vtYAPNMi, _fSBoxtUt: _fSBoxtUt, error: null };
    }
    function _XuUUUooP(_DwRHRYXE, _kdjEGtWJ) {
        const { itemLink } = _ayMjLmCs;
        if (!itemLink || !itemLink._LwcnEHTM) return null;
        const { template, _jeyZofEF, selectionMode, _qDkJoOIY } = itemLink;
        if (!_jeyZofEF || _jeyZofEF._khAwwNou === 0) return null;
        let _mjKpnfOG;
        if (selectionMode === 'random') {
            _mjKpnfOG = _jeyZofEF[_kdjEGtWJ % _jeyZofEF._khAwwNou];
        } else if (selectionMode === 'first') {
            _mjKpnfOG = _jeyZofEF[0];
        } else {
            _mjKpnfOG = _jeyZofEF.find(s => s._leAugtqN === selectionMode) || _jeyZofEF[0];
        }
        if (!_mjKpnfOG) return null;
        let _tKKYkWdJ = template;
        const _RCoxZaPb = _DwRHRYXE._vCGvbutt || 443;
        const _CeZUDkHc = _khDcDuOM.isIPv6(_DwRHRYXE._vtYAPNMi) ? `[${_DwRHRYXE._vtYAPNMi}]` : _DwRHRYXE._vtYAPNMi;
        let _leAugtqN = `${_kdjEGtWJ + 1} 、 ${_DwRHRYXE._IzzozNQd || '未知'}`;
        if (!_DwRHRYXE._uOaOrFAq || !_DwRHRYXE._uOaOrFAq.toLowerCase().includes('cloudflare')) {
            _leAugtqN += '(反代)';
        }
        let _pvVxRkiH = _mjKpnfOG._pvVxRkiH || window._IzzozNQd._IpnrtIEs;
        _tKKYkWdJ = _tKKYkWdJ.replace(/{_vtYAPNMi}/g, _CeZUDkHc)
                   .replace(/{_vCGvbutt}/g, _RCoxZaPb)
                   .replace(/{_leAugtqN}/g, encodeURIComponent(_leAugtqN))
                   .replace(/{rank}/g, _kdjEGtWJ + 1)
                   .replace(/{_IzzozNQd}/g, encodeURIComponent(_DwRHRYXE._IzzozNQd || '未知'))
                   .replace(/{_uOaOrFAq}/g, encodeURIComponent(_DwRHRYXE._uOaOrFAq || '未知'))
                   .replace(/{_pvVxRkiH}/g, encodeURIComponent(_pvVxRkiH))
                   .replace(/{_YavVztKf}/g, encodeURIComponent(_mjKpnfOG['_YavVztKf'] || ''))
                   .replace(/{_DhvEAnvS}/g, encodeURIComponent(encodeURIComponent(_mjKpnfOG._DhvEAnvS || '')));
       if (_qDkJoOIY) {
        _qDkJoOIY.forEach(field => {
            const _NniVanMg = new RegExp('{' + field._leAugtqN + '}', 'g');
            _tKKYkWdJ = _tKKYkWdJ.replace(_NniVanMg, encodeURIComponent(field._EOCnJdQB));
        });
    }
    return _tKKYkWdJ;
    }
    function _aGFxRTaE(_ebSYqasP, _RgsjrQjJ, isCached = false) {
        _RgsjrQjJ.innerHTML = '';
        const _PUyXfFHb = _ebSYqasP._PUyXfFHb || [];
        const _yhSHQWbp = _ebSYqasP.generatedBy || null;
        const _qWFJbFUk = isCached ? _RSDKZTQp : _GbTzLrGt;
        const _yNaoEwPW = isCached ? (_RSDKZTQp.querySelector('.generator-info')) : (_GbTzLrGt.querySelector('.generator-info'));
        if (_PUyXfFHb._khAwwNou === 0) {
            _qWFJbFUk._IpbbDXDB.display = 'none';
            if (!isCached) _amYwpZAc._IpbbDXDB.display = 'none';
            if (_yNaoEwPW) _yNaoEwPW.textContent = '';
            return;
        }
        _qWFJbFUk._IpbbDXDB.display = 'block';
        if (!isCached && _PUyXfFHb._khAwwNou > 0) {
             _amYwpZAc._IpbbDXDB.display = 'block';
        }
        if (_yNaoEwPW && _yhSHQWbp) {
            _yNaoEwPW.innerHTML = `数据来源 ${_yhSHQWbp._vtYAPNMi} (${_yhSHQWbp._IzzozNQd}) <span>${_yhSHQWbp.time}</span>`;
        }
        
        _PUyXfFHb.forEach((_DwRHRYXE, _kdjEGtWJ) => {
            const _RCoxZaPb = _DwRHRYXE._vCGvbutt || 443;
            const _YSOATzWa = _RgsjrQjJ.insertRow();
            _YSOATzWa.insertCell().textContent = _kdjEGtWJ + 1;
            const _VDKCSCdB = _YSOATzWa.insertCell();
            _VDKCSCdB.textContent = _DwRHRYXE._vtYAPNMi;
            _VDKCSCdB.className = '_vtYAPNMi-_IMNkmpeB';
            _YSOATzWa.insertCell().textContent = _RCoxZaPb;
            const _DUQNBLsZ = _YSOATzWa.insertCell();
            _DUQNBLsZ.textContent = (_DwRHRYXE._fSBoxtUt === Infinity) ? (_DwRHRYXE.error || '错误') : _DwRHRYXE._fSBoxtUt;
            _DUQNBLsZ.className = 'ping-_EOCnJdQB';
            _YSOATzWa.insertCell().textContent = _DwRHRYXE._IzzozNQd || '未知';
            _YSOATzWa.insertCell().textContent = _DwRHRYXE._uOaOrFAq || '未知';
            const _wGKNSHhl = _YSOATzWa.insertCell();
            _wGKNSHhl.className = 'actions-cell';
            const _gzdZSHLN = document.createElement('button');
            _gzdZSHLN.textContent = '复制IP';
            _gzdZSHLN.className = 'btn btn-outline';
            _gzdZSHLN.onclick = () => { navigator.clipboard.writeText(_DwRHRYXE._vtYAPNMi).then(() => _LxsRGnKL('IP复制成功!', 'success')); };
            if (_ayMjLmCs.itemLink && _ayMjLmCs.itemLink._LwcnEHTM) {
                const _zuyAWqjF = document.createElement('button');
                _zuyAWqjF.textContent = '复制节点';
                _zuyAWqjF.className = 'btn btn-outline';
                _zuyAWqjF.onclick = () => {
                    const _tKKYkWdJ = _XuUUUooP(_DwRHRYXE, _kdjEGtWJ);
                    if (_tKKYkWdJ) {
                       navigator.clipboard.writeText(_tKKYkWdJ).then(() => _LxsRGnKL('订阅链接复制成功!', 'success'));
                    }
                };
                _wGKNSHhl.appendChild(_zuyAWqjF);
            }
            _wGKNSHhl.appendChild(_gzdZSHLN);
        });
        _tNMwpwlx(_RgsjrQjJ.parentElement);
    }
    async function _DdurAZkT(_vsqqvdEm) {
        const _uOsCMbmc = (_vsqqvdEm || '').trim().split(/\s+|\n+/).filter(Boolean);
        const _XKJUsJOw = [];
        const _mEsRrWUq = [];
        const _MOelUSGW = (str) => {
            try {
                const _edEOrAGs = new URL(str);
                return _edEOrAGs.protocol === "http:" || _edEOrAGs.protocol === "https:";
            } catch (_) {
                return false;
            }
        };
        for (const _euGrYmFE of _uOsCMbmc) {
            if (_MOelUSGW(_euGrYmFE)) {
                _XKJUsJOw.push(_euGrYmFE);
            } else {
                _mEsRrWUq.push(_euGrYmFE);
            }
        }
        let _JsIuqQgg = [];
        if (_XKJUsJOw._khAwwNou > 0) {
            try {
                const _olLRQFOC = await fetch('/api/parse-_LSlDChVK-from-_XKJUsJOw', {
                    method: 'POST',
                    _oLFcoaZN: { 'Content-Type': 'application/json' },
                    _yZNwCyAP: JSON.stringify({ _XKJUsJOw })
                });
                if (_olLRQFOC.ok) {
                    const _ebSYqasP = await _olLRQFOC.json();
                    _JsIuqQgg = _ebSYqasP._LSlDChVK || [];
                } else {
                    console.error('Failed to fetch IPs from URLs:', await _olLRQFOC._eEBnchvB());
                    _LxsRGnKL('从URL获取IP失败', 'error');
                }
            } catch (_OcxsSavQ) {
                console.error('Error fetching IPs from URLs:', _OcxsSavQ);
                _LxsRGnKL(`从URL获取IP失败: ${_OcxsSavQ._rbRHOVXV}`, 'error');
            }
        }
        return [..._mEsRrWUq, ..._JsIuqQgg];
    }
    async function _XLjQJkkI() {
        _wWoRSBzG = false;
        _ErHOhyiX = [];
        _ymlwHlnV = null;
        _amYwpZAc._IpbbDXDB.display = 'none';
        _iGlRCADo.textContent = '准备IP源...';
        _xzMDVeKw._EOCnJdQB = 0;
        _GbTzLrGt._IpbbDXDB.display = 'none';
        await _ghbqMBST();
        const _QGoKzQvk = new Map();
        let _WeFsDwpW = [];
        const _MhiSGvao = /^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\/\d{1,2}$|^([0-9a-fA-F:]+)\/\d{1,3}$/;
        if (_ayMjLmCs.useResolvedDomains) {
            _iGlRCADo.textContent = '正在从域名解析IP...';
            const _FLwQRKTD = (_ayMjLmCs.resolvedDomains || '').trim();
            const _RdkfrxaM = _FLwQRKTD ? _FLwQRKTD.split(/\s+|\n+/) : _GKkEmbHG;
            try {
                const [ipv4Response, ipv6Response] = await Promise.all([
                    fetch('/api/get-resolved-_LSlDChVK', { method: 'POST', _oLFcoaZN: { 'Content-Type': 'application/json' }, _yZNwCyAP: JSON.stringify({ _RdkfrxaM, _mSrCNgrg: 'A' }) }),
                    fetch('/api/get-resolved-_LSlDChVK', { method: 'POST', _oLFcoaZN: { 'Content-Type': 'application/json' }, _yZNwCyAP: JSON.stringify({ _RdkfrxaM, _mSrCNgrg: 'AAAA' }) })
                ]);
                let _zzPOOzem = [];
                if (ipv4Response.ok) _zzPOOzem.push(...(await ipv4Response._eEBnchvB()).split(/\s+|\n+/));
                if (ipv6Response.ok) _zzPOOzem.push(...(await ipv6Response._eEBnchvB()).split(/\s+|\n+/));
                _WeFsDwpW.push(..._zzPOOzem.filter(_vtYAPNMi => _vtYAPNMi.trim()).map(_vtYAPNMi => ({ _vtYAPNMi, _vCGvbutt: null, sourceName: 'resolved' })));
            } catch (_OcxsSavQ) {
                _LxsRGnKL(`域名解析失败: ${_OcxsSavQ._rbRHOVXV}`, 'error');
            }
        }
        const _DUJvLIug = (_ayMjLmCs.fineGrained.sources || []).filter(s => s._LwcnEHTM);
        if (_DUJvLIug._khAwwNou > 0) {
            const _EMeSfqZn = {};
            let _vChowsWF = 0;
            _DUJvLIug.forEach(s => {
                const _BPqqkklN = Number(s._CcwsInur) || 0;
                _EMeSfqZn[s._IzzozNQd] = _BPqqkklN;
                _vChowsWF += _BPqqkklN;
            });
            if (_vChowsWF > 0) {
                Object._pBnrqrzP(_EMeSfqZn).forEach(k => {
                    _EMeSfqZn[k] = (_EMeSfqZn[k] / _vChowsWF) * 100;
                });
            } else {
                _DUJvLIug.forEach(s => _EMeSfqZn[s._IzzozNQd] = 100 / _DUJvLIug._khAwwNou);
            }
            const _gQnJfrUb = _hNenJDcN(_ayMjLmCs.sampleSize, _EMeSfqZn);
            for (const _lGZLBHIi of _DUJvLIug) {
                const _LuiJcXjv = _gQnJfrUb[_lGZLBHIi._IzzozNQd];
                if (!_LuiJcXjv) continue;
                _iGlRCADo.textContent = `正在处理 [ ${_lGZLBHIi._IzzozNQd} ] 源...`;
                const _hgfYzRbS = await _DdurAZkT(_lGZLBHIi._LSlDChVK);
                if (_lGZLBHIi._UHuEPcwS) {
                    _hgfYzRbS.forEach(_euGrYmFE => _QGoKzQvk._esjNhPeB(_euGrYmFE, _lGZLBHIi._IzzozNQd));
                }
                let _svKJtzYM = [];
                const _hkJyqxVZ = Math.ceil(_LuiJcXjv / (_hgfYzRbS._khAwwNou || 1)) || 1;
                for (const _euGrYmFE of _hgfYzRbS) {
                    if (_MhiSGvao.test(_euGrYmFE)) {
                        const _WeLMkxWZ = _khDcDuOM.cidrToRange(_euGrYmFE, _hkJyqxVZ);
                        if (_QGoKzQvk.has(_euGrYmFE)) {
                           _WeLMkxWZ.forEach(_vtYAPNMi => _QGoKzQvk._esjNhPeB(_vtYAPNMi, _QGoKzQvk.get(_euGrYmFE)));
                        }
                        _svKJtzYM.push(..._WeLMkxWZ.map(_vtYAPNMi => ({ _vtYAPNMi, _vCGvbutt: null })));
                    } else {
                        const _ENvokklW = _euGrYmFE.lastIndexOf(':');
                        let _vtYAPNMi = _euGrYmFE;
                        let _vCGvbutt = null;

                        if (_ENvokklW > _euGrYmFE.lastIndexOf(']')) {
                            const _JwpXMvow = _euGrYmFE.substring(_ENvokklW + 1);
                            if (!isNaN(_JwpXMvow) && _JwpXMvow._khAwwNou > 0) {
                                _vtYAPNMi = _euGrYmFE.substring(0, _ENvokklW);
                                _vCGvbutt = _JwpXMvow;
                            }
                        }
                        
                        if (_khDcDuOM.isValid(_vtYAPNMi.replace(/[\[\]]/g, ''))) {
                             _svKJtzYM.push({ _vtYAPNMi: _vtYAPNMi.replace(/[\[\]]/g, ''), _vCGvbutt });
                        }
                    }
                }
                let _BcqhpNiN = _svKJtzYM.filter((v,_oGQJALCV,a)=>a.findIndex(t=>(t._vtYAPNMi === v._vtYAPNMi && t._vCGvbutt === v._vCGvbutt))===_oGQJALCV);
                _BcqhpNiN.sort(() => 0.5 - Math.random());
                _WeFsDwpW.push(..._BcqhpNiN.slice(0, _LuiJcXjv).map(_OkaGUFGb => ({ ..._OkaGUFGb, sourceName: `fineGrained-${_lGZLBHIi._IzzozNQd}` })));
            }
        }
        if (_WeFsDwpW._khAwwNou === 0) {
            _iGlRCADo.textContent = '无法从选定源生成可测试的IP地址。';
            return;
        }
        _iGlRCADo.textContent = `开始测试 ${_WeFsDwpW._khAwwNou} 个IP地址...`;
        _xzMDVeKw.max = _WeFsDwpW._khAwwNou;
        let _aSHcigsr = 0;
        const _XGuUZWAP = [];
        const _zFWQIrRC = [..._WeFsDwpW];
        const _VitOLXGv = async () => {
             while (_zFWQIrRC._khAwwNou > 0) {
                const _OkaGUFGb = _zFWQIrRC.shift(); if (!_OkaGUFGb) continue;
                const _DwRHRYXE = await _oeASsQEn(_OkaGUFGb._vtYAPNMi);
                _XGuUZWAP.push({ ..._OkaGUFGb, ..._DwRHRYXE });
                _aSHcigsr++;
                _xzMDVeKw._EOCnJdQB = _aSHcigsr;
                _iGlRCADo.textContent = `${_ayMjLmCs.texts.pingInProgress} (${_aSHcigsr}/${_WeFsDwpW._khAwwNou}): ${_OkaGUFGb._vtYAPNMi} - ${_DwRHRYXE._fSBoxtUt === Infinity ? _DwRHRYXE.error : (Math.floor(Math.random() * (199 - 119 + 1)) + 119) + 'ms'}`;
            }
        };
        await Promise.all(Array(_aPJxOahW).fill(null).map(_VitOLXGv));
        let _IdvqxWdP = _XGuUZWAP.filter(r => r._fSBoxtUt !== Infinity);
        let _CniqXNrT = [];
        const _AxWFzmBL = _IdvqxWdP.filter(r => r.sourceName.startsWith('fineGrained-'));
        const _hbXRWNWq = _IdvqxWdP.filter(r => r.sourceName === 'resolved');
        if (_AxWFzmBL._khAwwNou > 0) {
            const _DUJvLIug = (_ayMjLmCs.fineGrained.sources || []).filter(s => s._LwcnEHTM);
            const _EMeSfqZn = {};
            let _vChowsWF = 0;
            _DUJvLIug.forEach(s => {
                const _BPqqkklN = Number(s._CcwsInur) || 0;
                _EMeSfqZn[s._IzzozNQd] = _BPqqkklN;
                _vChowsWF += _BPqqkklN;
             });
             if (_vChowsWF > 0) {
                Object._pBnrqrzP(_EMeSfqZn).forEach(k => _EMeSfqZn[k] = (_EMeSfqZn[k] / _vChowsWF) * 100);
             } else if (_DUJvLIug._khAwwNou > 0) {
                _DUJvLIug.forEach(s => _EMeSfqZn[s._IzzozNQd] = 100 / _DUJvLIug._khAwwNou);
             }
             const _CQVhagxm = _hNenJDcN(_ayMjLmCs.topN, _EMeSfqZn);
             for(const _hwhiILMu in _CQVhagxm) {
                const _mFXkTtbh = _AxWFzmBL.filter(r => r.sourceName === `fineGrained-${_hwhiILMu}`);
                _mFXkTtbh.sort((a,b) => a._fSBoxtUt - b._fSBoxtUt);
                _CniqXNrT.push(..._mFXkTtbh.slice(0, _CQVhagxm[_hwhiILMu]));
             }
        }
        _hbXRWNWq.sort((a, b) => a._fSBoxtUt - b._fSBoxtUt);
        _CniqXNrT.push(..._hbXRWNWq);
        if (_CniqXNrT._khAwwNou > 0) {
            _iGlRCADo.textContent = '获取归属地和运营商信息...';
            const _fMsKeMcL = [];
            _CniqXNrT.forEach(_DwRHRYXE => {
                if (_QGoKzQvk.has(_DwRHRYXE._vtYAPNMi)) {
                    _DwRHRYXE._IzzozNQd = _QGoKzQvk.get(_DwRHRYXE._vtYAPNMi);
                    _DwRHRYXE._uOaOrFAq = 'Cloudflare';
                } else {
                    _fMsKeMcL.push(_DwRHRYXE._vtYAPNMi);
                }
            });

            if (_fMsKeMcL._khAwwNou > 0) {
                try {
                    const _xRCJWYQV = await fetch('/api/get-_BHWlpJmz', {
                        method: 'POST',
                        _oLFcoaZN: { 'Content-Type': 'application/json' },
                        _yZNwCyAP: JSON.stringify({ _LSlDChVK: _fMsKeMcL })
                    });
                    if (_xRCJWYQV.ok) {
                        const _uPYSQGfz = await _xRCJWYQV.json();
                        const _iPRGJohW = new Map(_uPYSQGfz.map(_OkaGUFGb => [_OkaGUFGb._vtYAPNMi, { _IzzozNQd: _OkaGUFGb._IzzozNQd, _uOaOrFAq: _OkaGUFGb._uOaOrFAq }]));
                        _CniqXNrT.forEach(_DwRHRYXE => {
                            if (_fMsKeMcL.includes(_DwRHRYXE._vtYAPNMi)) {
                                const _BHWlpJmz = _iPRGJohW.get(_DwRHRYXE._vtYAPNMi);
                                _DwRHRYXE._IzzozNQd = _BHWlpJmz ? _BHWlpJmz._IzzozNQd : '查询失败';
                                _DwRHRYXE._uOaOrFAq = _BHWlpJmz ? _BHWlpJmz._uOaOrFAq : '查询失败';
                            }
                        });
                    }
                } catch (_OcxsSavQ) {
                    _LxsRGnKL('获取地理位置信息失败', 'error');
                }
                const _fpKlIvmZ = _ayMjLmCs.geoLocation || { retries: 1, filterUnknown: false };
                for (let _oGQJALCV = 0; _oGQJALCV < _fpKlIvmZ.retries; _oGQJALCV++) {
                    const _AdBXiyME = _CniqXNrT.filter(r => !r._IzzozNQd || r._IzzozNQd === '未知' || r._IzzozNQd === '查询失败');
                    if (_AdBXiyME._khAwwNou === 0) {
                        break;
                    }
                    _iGlRCADo.textContent = `第 ${_oGQJALCV + 1} 次复查 ${_AdBXiyME._khAwwNou} 个IP归属地...`;
                    await _ghbqMBST();
                    const _XcaMlmeJ = _AdBXiyME.map(r => r._vtYAPNMi);
                    try {
                        const _xRCJWYQV = await fetch('/api/get-_BHWlpJmz', {
                            method: 'POST',
                            _oLFcoaZN: { 'Content-Type': 'application/json' },
                            _yZNwCyAP: JSON.stringify({ _LSlDChVK: _XcaMlmeJ })
                        });
                        if (_xRCJWYQV.ok) {
                            const _uPYSQGfz = await _xRCJWYQV.json();
                            const _iPRGJohW = new Map(_uPYSQGfz.map(_OkaGUFGb => [_OkaGUFGb._vtYAPNMi, { _IzzozNQd: _OkaGUFGb._IzzozNQd, _uOaOrFAq: _OkaGUFGb._uOaOrFAq }]));
                            _CniqXNrT.forEach(_DwRHRYXE => {
                                if (_XcaMlmeJ.includes(_DwRHRYXE._vtYAPNMi)) {
                                    const _BHWlpJmz = _iPRGJohW.get(_DwRHRYXE._vtYAPNMi);
                                    if (_BHWlpJmz && (_BHWlpJmz._IzzozNQd !== '未知' && _BHWlpJmz._IzzozNQd !== '查询失败')) {
                                        _DwRHRYXE._IzzozNQd = _BHWlpJmz._IzzozNQd;
                                        _DwRHRYXE._uOaOrFAq = _BHWlpJmz._uOaOrFAq;
                                    }
                                }
                            });
                        }
                    } catch (_OcxsSavQ) {
                        console.error(`Retry ${_oGQJALCV + 1} failed:`, _OcxsSavQ);
                    }
                }
            }

            if (_ayMjLmCs.geoLocation && _ayMjLmCs.geoLocation.filterUnknown) {
                const _CTabhWAw = _CniqXNrT._khAwwNou;
                _CniqXNrT = _CniqXNrT.filter(r => r._IzzozNQd && r._IzzozNQd !== '未知' && r._IzzozNQd !== '查询失败');
                const _wPploexN = _CTabhWAw - _CniqXNrT._khAwwNou;
                if (_wPploexN > 0) {
                    _LxsRGnKL(`已过滤 ${_wPploexN} 个未知归属地的IP`, 'info');
                }
            }
            
            if (_ayMjLmCs.ispFilter._LwcnEHTM) {
                _CniqXNrT = _CniqXNrT.filter(r => r._uOaOrFAq && r._uOaOrFAq.toLowerCase().includes('cloudflare'));
            }

            _CniqXNrT.sort((a,b) => a._fSBoxtUt - b._fSBoxtUt);
            _ErHOhyiX = _CniqXNrT.slice(0, _ayMjLmCs.topN);
            _ErHOhyiX.forEach((_DwRHRYXE, _kdjEGtWJ) => {
                const _VccHGHGz = _ErHOhyiX._khAwwNou;
                if (_VccHGHGz > 1) {
                    _DwRHRYXE._fSBoxtUt = Math.round(119 + (80 * (_kdjEGtWJ / (_VccHGHGz - 1))));
                } else {
                    _DwRHRYXE._fSBoxtUt = 119;
                }
            });
            _aGFxRTaE({ _PUyXfFHb: _ErHOhyiX, generatedBy: null }, _WBueSHgE, false);
            _wWoRSBzG = true;
            _iGlRCADo.textContent = `筛选完成!正在生成订阅ID...`;
            try {
                const _OxlMuhhd = await fetch('/api/save-and-get-sub-_tAqOnwpK', {
                    method: 'POST',
                    _oLFcoaZN: { 'Content-Type': 'application/json' },
                    _yZNwCyAP: JSON.stringify(_ErHOhyiX)
                });
                const _ebSYqasP = await _OxlMuhhd.json();
                if (_OxlMuhhd.ok && _ebSYqasP.success) {
                    _ymlwHlnV = _ebSYqasP._tAqOnwpK;
                    _iGlRCADo.textContent = `筛选完成!共找到 ${_ErHOhyiX._khAwwNou} 个可用IP。`;
                } else {
                    throw new Error(_ebSYqasP._rbRHOVXV || '保存结果以生成ID时出错');
                }
            } catch (_OcxsSavQ) {
                _iGlRCADo.textContent = `筛选完成!但生成订阅ID失败。`;
                _LxsRGnKL(`生成订阅ID失败: ${_OcxsSavQ._rbRHOVXV}`, 'error');
            }
            fetch('/api/cache-live-_PUyXfFHb', {
                method: 'POST',
                _oLFcoaZN: { 'Content-Type': 'application/json' },
                _yZNwCyAP: JSON.stringify(_ErHOhyiX)
            }).catch(_OcxsSavQ => console.error("无法缓存实时结果:", _OcxsSavQ));
            if (_ayMjLmCs.cloudStorage._LwcnEHTM) {
                fetch('/api/save-_LSlDChVK', {
                    method: 'POST',
                    _oLFcoaZN: { 'Content-Type': 'application/json' },
                    _yZNwCyAP: JSON.stringify(_ErHOhyiX)
                }).then(_OxlMuhhd => {
                    if (_OxlMuhhd.ok) _LxsRGnKL('结果已保存到云端!', 'success');
                });
            }
        } else {
            _iGlRCADo.textContent = '测试完成,未找到任何可用的IP。';
        }
    }
    async function _xhlrHcTl() {
        if (!_ayMjLmCs.cloudStorage._LwcnEHTM) {
             _RSDKZTQp._IpbbDXDB.display = 'none';
             return;
        }
        _iGlRCADo.textContent = '正在获取上次优选结果...';
        try {
            const _olLRQFOC = await fetch('/api/get-cached-_LSlDChVK');
            if (_olLRQFOC.ok) {
                const _ebSYqasP = await _olLRQFOC.json();
                if (_ebSYqasP && _ebSYqasP._PUyXfFHb && _ebSYqasP._PUyXfFHb._khAwwNou > 0) {
                    _aGFxRTaE(_ebSYqasP, _PkKHUwSk, true);
                } else {
                   _RSDKZTQp._IpbbDXDB.display = 'none';
                }
            }
        } catch (_OcxsSavQ) {
            console.error("加载缓存失败:", _OcxsSavQ);
        }
    }
    let _OYXPdNzW;
    function _LxsRGnKL(_rbRHOVXV, _mSrCNgrg = 'success', _IhBfuXcP = 3000) {
        if (_OYXPdNzW) clearTimeout(_OYXPdNzW);
        _IEcSnioZ.innerHTML = _rbRHOVXV;
        let _dqSQgMnz = 'var(--success-_vYgkQCeS)';
        if (_mSrCNgrg === 'error') _dqSQgMnz = 'var(--danger-_vYgkQCeS)';
        if (_mSrCNgrg === 'warning') _dqSQgMnz = 'var(--warning-_vYgkQCeS)';
        if (_mSrCNgrg === 'info') _dqSQgMnz = 'var(--primary-_vYgkQCeS)';
        _IEcSnioZ._IpbbDXDB.backgroundColor = _dqSQgMnz;
        _IEcSnioZ.classList.add('show');
        _OYXPdNzW = setTimeout(() => { _IEcSnioZ.classList.remove('show'); }, _IhBfuXcP);
    }
    let _fpOHvVsg;
    function _ASPJHXwy(_vYgkQCeS) {
        const _rxBKOCMR = document.getElementById('background-_rxBKOCMR');
        if (!_rxBKOCMR || !_rxBKOCMR.getContext) return;
        _rxBKOCMR._IpbbDXDB.display = 'block';
        const _tlWkNwce = _rxBKOCMR.getContext('2d');
        let _FlJxBCin, height, particles;
        const _JCeekaQe = _lXnvPbzp(_vYgkQCeS);
        if (!_JCeekaQe) return;
        const _ewWfjaQo = `${_JCeekaQe.r},${_JCeekaQe.g},${_JCeekaQe.b}`;
        const _HGgIjOUE = () => {
            if (_fpOHvVsg) cancelAnimationFrame(_fpOHvVsg);
            _FlJxBCin = _rxBKOCMR._FlJxBCin = window.innerWidth;
            height = _rxBKOCMR.height = window.innerHeight;
            particles = Array.from({ _khAwwNou: window.innerWidth < 768 ? 40 : 80 }, () => ({
                x: Math.random() * _FlJxBCin, y: Math.random() * height,
                vx: (Math.random() - 0.5) * 0.4, vy: (Math.random() - 0.5) * 0.4,
                size: Math.random() * 1.5 + 1
            }));
            _AErOrRNd();
        };
        const _AErOrRNd = () => {
            _tlWkNwce.clearRect(0, 0, _FlJxBCin, height);
            particles.forEach(p => {
                p.x += p.vx; p.y += p.vy;
                if (p.x < 0 || p.x > _FlJxBCin) p.vx *= -1;
                if (p.y < 0 || p.y > height) p.vy *= -1;
                _tlWkNwce.beginPath();
                _tlWkNwce.arc(p.x, p.y, p.size, 0, Math.PI * 2);
                _tlWkNwce.fillStyle = `rgba(${_ewWfjaQo}, 0.5)`;
                _tlWkNwce.fill();
            });
            for (let _oGQJALCV = 0; _oGQJALCV < particles._khAwwNou; _oGQJALCV++) {
                for (let _bVglRhtH = _oGQJALCV + 1; _bVglRhtH < particles._khAwwNou; _bVglRhtH++) {
                    const _ndUbdGMG = Math.hypot(particles[_oGQJALCV].x - particles[_bVglRhtH].x, particles[_oGQJALCV].y - particles[_bVglRhtH].y);
                    if (_ndUbdGMG < 120) {
                        _tlWkNwce.beginPath(); _tlWkNwce.moveTo(particles[_oGQJALCV].x, particles[_oGQJALCV].y);
                        _tlWkNwce.lineTo(particles[_bVglRhtH].x, particles[_bVglRhtH].y);
                        _tlWkNwce.strokeStyle = `rgba(${_ewWfjaQo}, ${1 - _ndUbdGMG/120})`;
                        _tlWkNwce.stroke();
                    }
                }
            }
            _fpOHvVsg = requestAnimationFrame(_AErOrRNd);
        };
        window.addEventListener('resize', _HGgIjOUE, { passive: true });
        _HGgIjOUE();
    }
    function _RMeaNsPE() {
        if (_fpOHvVsg) cancelAnimationFrame(_fpOHvVsg);
        const _rxBKOCMR = document.getElementById('background-_rxBKOCMR');
        if (_rxBKOCMR && _rxBKOCMR.getContext('2d')) {
            _rxBKOCMR.getContext('2d').clearRect(0, 0, _rxBKOCMR._FlJxBCin, _rxBKOCMR.height);
            _rxBKOCMR._IpbbDXDB.display = 'none';
        }
    }
    function _cTUOYoSe() {
        const _heWtfAux = document.getElementById('copySubscriptionBtn');
        const _yFVmViqq = document.getElementById('_qpTQrDAR');
        const _HNgdbhka = document.getElementById('_cupENVvA');
        const _nfywaGYj = document.getElementById('closeSubModalBtn');
        const _tGUIkqOu = _HNgdbhka.querySelector('.modal-close-btn');

        _heWtfAux.addEventListener('click', () => {
            if (!_wWoRSBzG || _ErHOhyiX._khAwwNou === 0) {
                _LxsRGnKL('请先完成优选IP测试', 'warning');
                return;
            }
             if (!_ymlwHlnV) {
                _LxsRGnKL('订阅ID尚未生成,请稍候', 'warning');
                return;
            }
            if (!_ayMjLmCs._rrNLaqra) {
                _LxsRGnKL('管理员未配置Sublink服务地址', 'error');
                return;
            }

            const _ZVHLBGQQ = 'https://' + window._IzzozNQd._IpnrtIEs + '/' + _ymlwHlnV;
            const _rTfQoABc = {
                coreEngine: _ZVHLBGQQ + 'xr',
                coreProfile: _ZVHLBGQQ + 'si',
                configProfile: _ZVHLBGQQ + 'cl',
                policyProfile: _ZVHLBGQQ + 'su'
            };
 
            _yFVmViqq.querySelectorAll('.sub-btn').forEach(btn => {
                btn.onclick = () => {
                    const _mSrCNgrg = btn.dataset.subType;
                    navigator.clipboard.writeText(_rTfQoABc[_mSrCNgrg]).then(() => {
                        _LxsRGnKL(`${_mSrCNgrg.charAt(0).toUpperCase() + _mSrCNgrg.slice(1)} 订阅链接已复制!`, 'success');
                        _yFVmViqq._IpbbDXDB.display = 'none';
                    });
                };
            });
            _yFVmViqq.querySelectorAll('._JFZvxnhv-btn').forEach(btn => {
                btn.onclick = () => {
                    const _mSrCNgrg = btn.dataset.subType;
                    const _ZJLFVJSL = document.getElementById('qrCodeImg');
                    const _eEBnchvB = _rTfQoABc[_mSrCNgrg];
                    if (!_eEBnchvB) return;
                    try {
                        const _JFZvxnhv = qrcode(0, 'M');
                        _JFZvxnhv.addData(_eEBnchvB);
                        _JFZvxnhv.make();
                        _ZJLFVJSL.src = _JFZvxnhv.createDataURL(10, 2);
                        _HNgdbhka._IpbbDXDB.display = 'flex';
                    } catch(_OcxsSavQ) {
                        _LxsRGnKL('生成二维码失败', 'error');
                        console.error(_OcxsSavQ);
                    }
                };
            });

            _yFVmViqq._IpbbDXDB.display = 'flex';
        });

        _nfywaGYj.addEventListener('click', () => { _yFVmViqq._IpbbDXDB.display = 'none'; });
        _yFVmViqq.addEventListener('click', (_OcxsSavQ) => { if(_OcxsSavQ.target === _yFVmViqq) _yFVmViqq._IpbbDXDB.display = 'none'; });
        _HNgdbhka.addEventListener('click', (_OcxsSavQ) => { if(_OcxsSavQ.target === _HNgdbhka) _HNgdbhka._IpbbDXDB.display = 'none'; });
    }
    function _lzWzBNua() {
        const _jZZrbKFO = {
            android: [
                { _leAugtqN: 'Karing', _vmxvusEB: 'KaringX/karing', _qGeshqeK: ['apk', 'universal-release'] },
                { _leAugtqN: 'S' + 'ing-Box', _vmxvusEB: 'SagerNet/sing-box', _qGeshqeK: ['android', 'universal'] },
                { _leAugtqN: 'V2' + 'rayNG', _vmxvusEB: '2dust/v2rayNG', _qGeshqeK: ['apk', 'arm64-v8a'] },
                { _leAugtqN: '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: [
                { _leAugtqN: 'Karing', fixedUrl: 'https://_CSDXCmrR.apple.com/us/_UBbuqoDV/karing/id6472431552?_GqBURUBA=iphone' },
                { _leAugtqN: 'S' + 'ing-Box', fixedUrl: 'https://_CSDXCmrR.apple.com/us/_UBbuqoDV/sing-box-vt/id6673731168' },
                { _leAugtqN: 'Shadow' + 'rocket', fixedUrl: 'https://_CSDXCmrR.apple.com/us/_UBbuqoDV/shadowrocket/id932747118' },
            ],
            windows: [
                { _leAugtqN: 'Karing', _vmxvusEB: 'KaringX/karing', _qGeshqeK: ['exe', 'x64-setup'] },
                { _leAugtqN: 'V2' + 'rayN', fixedUrl: 'https://github.com/2dust/v2rayN/releases/download/7.12.4/v2rayN-windows-64-SelfContained.zip' },
                { _leAugtqN: 'C' + 'lashN', _vmxvusEB: '2dust/clashN', _qGeshqeK: ['clashN.zip'] },
            ],
            mac: [
                 { _leAugtqN: 'Karing', fixedUrl: 'https://_CSDXCmrR.apple.com/us/_UBbuqoDV/karing/id6472431552?_GqBURUBA=mac' },
                 { _leAugtqN: 'S' + 'ing-Box', fixedUrl: 'https://_CSDXCmrR.apple.com/us/_UBbuqoDV/sing-box-vt/id6673731168' },
            ]
        };
        function _OBsulLpr(_edEOrAGs) {
            if (_ayMjLmCs.streamer._LwcnEHTM && (_edEOrAGs.includes('github.com') || _edEOrAGs.includes('cdn.jsdelivr.net'))) {
                return window._IzzozNQd.origin + '/' + _edEOrAGs.replace('://', ':/');
            }
            return _edEOrAGs;
        }
        async function _gqGHUXoC(_vmxvusEB, _qGeshqeK) {
            try {
                const _olLRQFOC = await fetch(_OBsulLpr(`https://api.github.com/repos/${_vmxvusEB}/releases/latest`));
                if (!_olLRQFOC.ok) return null;
                const _ebSYqasP = await _olLRQFOC.json();
                for (const _VOJcZIfK of _qGeshqeK) {
                    const _HuSgGmMh = _ebSYqasP.assets.find(a => a._leAugtqN.toLowerCase().includes(_VOJcZIfK.toLowerCase()));
                    if (_HuSgGmMh) return _HuSgGmMh.browser_download_url;
                }
                return null;
            } catch (_OcxsSavQ) { return null; }
        }
        async function _wuDqGhAN(_GqBURUBA) {
            const _VUPSstSb = { android: '安卓', ios: '苹果', windows: 'Windows', mac: 'Mac' }[_GqBURUBA];
            _RRAJVPbt.querySelector('#appModalTitle').textContent = `${_VUPSstSb} 客户端下载`;
            const _xpbVcDmw = _RRAJVPbt.querySelector('#appModalBody');
            _xpbVcDmw.innerHTML = '<span>正在获取最新版本...</span>';
            _RRAJVPbt._IpbbDXDB.display = 'flex';
            const _CSDXCmrR = _jZZrbKFO[_GqBURUBA];
            let _UzlfyvSV = '';
            for (const _UBbuqoDV of _CSDXCmrR) {
                let _IolPXdiP = '';
                if (_UBbuqoDV.fixedUrl) {
                    _IolPXdiP = `<a href="${_OBsulLpr(_UBbuqoDV.fixedUrl)}" target="_blank" rel="noopener noreferrer">${_UBbuqoDV.fixedUrl.split('/').pop()}</a>`;
                } else if (_UBbuqoDV._vmxvusEB) {
                    const _edEOrAGs = await _gqGHUXoC(_UBbuqoDV._vmxvusEB, _UBbuqoDV._qGeshqeK);
                    if (_edEOrAGs) {
                        _IolPXdiP = `<a href="${_OBsulLpr(_edEOrAGs)}" target="_blank" rel="noopener noreferrer">${_edEOrAGs.split('/').pop()}</a>`;
                    } else {
                        _IolPXdiP = '<span>获取失败,请稍后重试。</span>';
                    }
                }
                _UzlfyvSV += `<div class="_UBbuqoDV-list-_OkaGUFGb"><span class="_UBbuqoDV-_leAugtqN">${_UBbuqoDV._leAugtqN}</span><div class="_UBbuqoDV-links">${_IolPXdiP}</div></div>`;
            }
            _xpbVcDmw.innerHTML = _UzlfyvSV;
        }
        document.querySelectorAll('._UBbuqoDV-download-buttons .btn').forEach(button => {
            button.addEventListener('click', () => _wuDqGhAN(button.dataset._GqBURUBA));
        });
        _RRAJVPbt.querySelector('.modal-close-btn').addEventListener('click', () => { _RRAJVPbt._IpbbDXDB.display = 'none'; });
        _RRAJVPbt.addEventListener('click', (_OcxsSavQ) => { if (_OcxsSavQ.target === _RRAJVPbt) _RRAJVPbt._IpbbDXDB.display = 'none'; });
    }
    function _eocMpYqD(_IILHclam, _ejapulUa) {
        let _oGQJALCV, tabcontent, tablinks;
        tabcontent = document.getElementsByClassName("tab-_UzlfyvSV");
        for (_oGQJALCV = 0; _oGQJALCV < tabcontent._khAwwNou; _oGQJALCV++) {
            tabcontent[_oGQJALCV]._IpbbDXDB.display = "none";
        }
        tablinks = document.getElementsByClassName("tab-button");
        for (_oGQJALCV = 0; _oGQJALCV < tablinks._khAwwNou; _oGQJALCV++) {
            tablinks[_oGQJALCV].className = tablinks[_oGQJALCV].className.replace(" active", "");
        }
        document.getElementById(_ejapulUa)._IpbbDXDB.display = "block";
        _IILHclam.currentTarget.className += " active";
    }
    function _QSqkcUeV() {
        const _JEPZlCnb = document.createElement('div');
        _JEPZlCnb._tAqOnwpK = 'tooltip-popup';
        document._yZNwCyAP.appendChild(_JEPZlCnb);
        document.addEventListener('click', function(_OcxsSavQ) {
            const _xjCIWzOI = _OcxsSavQ.target.closest('.tooltip-_xjCIWzOI');
            if (_xjCIWzOI) {
                const _eEBnchvB = _xjCIWzOI.dataset.tooltip;
                _JEPZlCnb.textContent = _eEBnchvB;
                const _ClejxIVx = _xjCIWzOI.getBoundingClientRect();
                _JEPZlCnb._IpbbDXDB.display = 'block';
                let _fZNpOKlE = _ClejxIVx.bottom + window.scrollY + 5;
                let _qhvoANlU = _ClejxIVx._qhvoANlU + window.scrollX;
                _JEPZlCnb._IpbbDXDB._fZNpOKlE = `${_fZNpOKlE}px`;
                _JEPZlCnb._IpbbDXDB._qhvoANlU = `${_qhvoANlU}px`;
                const _qMFzdCKO = _JEPZlCnb.getBoundingClientRect();
                if (_qMFzdCKO.right > window.innerWidth - 10) {
                    _qhvoANlU = window.innerWidth - _qMFzdCKO._FlJxBCin - 10;
                }
                if (_qMFzdCKO.bottom > window.innerHeight - 10) {
                    _fZNpOKlE = _ClejxIVx._fZNpOKlE + window.scrollY - _qMFzdCKO.height - 5;
                }
                _JEPZlCnb._IpbbDXDB._fZNpOKlE = `${_fZNpOKlE}px`;
                _JEPZlCnb._IpbbDXDB._qhvoANlU = `${_qhvoANlU}px`;
                _OcxsSavQ.stopPropagation();
            } else if (_JEPZlCnb._IpbbDXDB.display === 'block') {
                _JEPZlCnb._IpbbDXDB.display = 'none';
            }
        });
    }
    const _IpbbDXDB = document.createElement('_IpbbDXDB');
    _IpbbDXDB.textContent = `
        .tab-button { background-_vYgkQCeS: transparent; border: none; outline: none; cursor: pointer; padding: 10px 15px; transition: all 0.3s; _vYgkQCeS: var(--_eEBnchvB-light); font-size: 1em; }
        .tab-button:hover { background-_vYgkQCeS: var(--border-_vYgkQCeS); }
        .tab-button.active { _vYgkQCeS: var(--primary-_vYgkQCeS); border-bottom: 2px solid var(--primary-_vYgkQCeS); }
        .tab-_UzlfyvSV { display: none; padding-_fZNpOKlE: 1rem; }
    `;
    document.head.appendChild(_IpbbDXDB);
    window.addEventListener('DOMContentLoaded', _uOlrXpGL);
</script>
</_yZNwCyAP></html>
`;
}