您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
在豆瓣电影页面获取添加资源链接
// ==UserScript== // @name DoubanFlix - 在豆瓣电影页面获取添加资源链接(网盘,磁力,在线) // @namespace http://tampermonkey.net/ // @version 1.0.8 // @description 在豆瓣电影页面获取添加资源链接 // @updatenote 1. 添加新版本更新提示 // @author Moz // @match https://movie.douban.com/subject/* // @grant GM_xmlhttpRequest // @connect scriptcat.org // @license MIT // @icon https://cdn.zerror.cc/images/%E8%B1%86%E7%93%A3%E7%BD%91.png // ==/UserScript== // 注入CSS样式 (function() { const style = document.createElement('style'); style.textContent = `.auth-switch[data-v-d47a81a4]{display:flex;justify-content:center;margin-bottom:16px}.switch-container[data-v-d47a81a4]{position:relative;display:flex;background:#f8f9fa;border-radius:8px;padding:4px;width:200px;height:30px}.switch-input[data-v-d47a81a4]{position:absolute;opacity:0;pointer-events:none}.switch-label[data-v-d47a81a4]{flex:1;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:500;color:#666;cursor:pointer;transition:color .3s ease;z-index:2;position:relative}.switch-input:checked+.switch-label[data-v-d47a81a4]{color:#007bff}.slider[data-v-d47a81a4]{position:absolute;top:4px;left:0;width:46%;height:calc(100% - 8px);background:#fff;border-radius:6px;box-shadow:0 2px 4px #0000001a;transition:left .3s ease;z-index:1}.switch-label[data-v-d47a81a4]:hover{color:#007bff}.switch-input:checked+.switch-label[data-v-d47a81a4]{color:#007bff;font-weight:600}@media (max-width: 480px){.switch-container[data-v-d47a81a4]{width:180px;height:36px}.switch-label[data-v-d47a81a4]{font-size:13px}}.toast-container[data-v-52e28bd4]{position:fixed;top:20px;left:50%;transform:translate(-50%);z-index:10000;pointer-events:none}.toast[data-v-52e28bd4]{background:#fff;border-radius:8px;padding:12px 16px;margin-bottom:10px;box-shadow:0 4px 12px #00000026;display:flex;align-items:center;justify-content:space-between;min-width:300px;max-width:500px;pointer-events:auto;cursor:pointer;animation:slideDown-52e28bd4 .3s ease-out;transition:all .3s ease}.toast[data-v-52e28bd4]:hover{transform:translateY(-2px);box-shadow:0 6px 16px #0003}.error-toast[data-v-52e28bd4]{background:#fff5f5}.error-toast span[data-v-52e28bd4]{color:#721c24}.success-toast[data-v-52e28bd4]{background:#f0fff4}.success-toast span[data-v-52e28bd4]{color:#155724}.toast-close[data-v-52e28bd4]{background:none;border:none;font-size:18px;font-weight:700;color:#999;cursor:pointer;margin-left:12px;padding:0;line-height:1}.toast-close[data-v-52e28bd4]:hover{color:#666}@keyframes slideDown-52e28bd4{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}.auth-container[data-v-d19c4dd7]{padding:16px}.user-info[data-v-d19c4dd7]{text-align:center}.user-header[data-v-d19c4dd7]{display:flex;align-items:center;margin-bottom:16px;padding:12px;background:#f8f9fa;border-radius:8px;position:relative}.user-avatar[data-v-d19c4dd7]{width:40px;height:40px;border-radius:50%;background:#007bff;color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:16px;margin-right:12px}.user-details[data-v-d19c4dd7]{flex:1;text-align:left}.user-display-name[data-v-d19c4dd7]{font-size:14px;font-weight:500;color:#333;margin-bottom:2px}.user-email[data-v-d19c4dd7]{font-size:12px;color:#666;margin-bottom:2px}.user-status[data-v-d19c4dd7]{font-size:12px;color:#28a745}.user-stats[data-v-d19c4dd7]{margin-top:8px;display:flex;gap:16px}.stat-item[data-v-d19c4dd7]{display:flex;align-items:center;font-size:12px}.stat-icon[data-v-d19c4dd7]{width:16px;height:16px;display:flex;align-items:center;justify-content:center;color:#4caf50}.stat-icon.down-icon[data-v-d19c4dd7]{color:#868686;transform:rotate(180deg)}.stat-icon svg[data-v-d19c4dd7]{width:100%;height:100%}.stat-label[data-v-d19c4dd7]{color:#666;font-weight:500}.stat-value[data-v-d19c4dd7]{color:#333;font-weight:600;background:#f8f9f0;border-radius:12px;min-width:20px;text-align:center}.edit-nickname-btn[data-v-d19c4dd7]{position:absolute;top:12px;right:12px;padding:4px 8px;background:#e3f2fd;color:#1976d2;border:none;border-radius:4px;cursor:pointer;font-size:11px;transition:all .2s}.edit-nickname-btn[data-v-d19c4dd7]:hover{background:#e8f5ff}.nickname-edit-form[data-v-d19c4dd7]{margin-bottom:16px;padding:12px;background:#fff;border:1px solid #dee2e6;border-radius:8px}.nickname-edit-form .form-group[data-v-d19c4dd7]{flex-direction:column;align-items:flex-start;gap:4px}.nickname-edit-form .form-group label[data-v-d19c4dd7]{text-align:left;min-width:auto;margin-bottom:2px}.nickname-hint[data-v-d19c4dd7]{font-size:11px;color:#666;margin-top:4px}.nickname-actions[data-v-d19c4dd7]{display:flex;gap:8px;margin-top:12px}.save-nickname-btn[data-v-d19c4dd7]{padding:6px 12px;background:#beecc8;color:#2e8339;border:none;border-radius:4px;cursor:pointer;font-size:12px;transition:background-color .2s}.save-nickname-btn[data-v-d19c4dd7]:hover:not(:disabled){background:#cef3d6}.save-nickname-btn[data-v-d19c4dd7]:disabled{background:#cef3d6;cursor:not-allowed}.cancel-nickname-btn[data-v-d19c4dd7]{padding:6px 12px;background:#f1f1f1;color:#828282;border:none;border-radius:4px;cursor:pointer;font-size:12px;transition:background-color .2s}.cancel-nickname-btn[data-v-d19c4dd7]:hover{background:#e4e4e4}.sign-out-btn[data-v-d19c4dd7]{width:100%;padding:8px 16px;background:#ffe4e6;color:#f33;border:none;border-radius:4px;cursor:pointer;font-size:13px;transition:background-color .2s}.sign-out-btn[data-v-d19c4dd7]:hover{background:#ffedef}.auth-forms[data-v-d19c4dd7]{width:100%}.auth-form[data-v-d19c4dd7]{display:flex;flex-direction:column;gap:12px}.form-group[data-v-d19c4dd7]{display:flex;align-items:center;gap:6px}.form-group label[data-v-d19c4dd7]{font-size:12px;color:#333;margin-bottom:0;font-weight:500;white-space:nowrap;min-width:50px;text-align:right}.auth-form[data-mode=login] .form-group[data-v-d19c4dd7]{display:flex;flex-direction:column;align-items:flex-start;gap:4px}.auth-form[data-mode=login] .form-group label[data-v-d19c4dd7]{text-align:left;min-width:auto;margin-bottom:2px}.auth-form[data-mode=login] .input-wrapper[data-v-d19c4dd7]{width:100%;border:1px solid #ddd;border-radius:8px;transition:border-color .2s}.auth-form[data-mode=login] .input-wrapper[data-v-d19c4dd7]:focus-within{border-color:none;box-shadow:none}.auth-form[data-mode=login] .form-input[data-v-d19c4dd7]{width:95%;margin:8px;padding:0;border:none;border-radius:0;font-size:13px;background:transparent;outline:none}.auth-form[data-mode=login] .form-input[data-v-d19c4dd7]:focus{border-color:none;box-shadow:none}.form-input[data-v-d19c4dd7]{padding:8px 12px;border:1px solid #ddd;border-radius:8px;font-size:13px;transition:border-color .2s}.form-input[data-v-d19c4dd7]:focus{outline:none}.auth-submit-btn[data-v-d19c4dd7]{padding:10px 16px;background:#e9f4ff;color:#00a2ef;border:1px solid #bfe2ff;border-radius:8px;cursor:pointer;font-size:13px;font-weight:500;transition:background-color .2s;margin-top:8px}.auth-submit-btn[data-v-d19c4dd7]:hover:not(:disabled){background:#cce5ff}.auth-submit-btn[data-v-d19c4dd7]:disabled{background:#c4e0fe;cursor:not-allowed}.forgot-password-link[data-v-d19c4dd7]{text-align:center;margin-top:15px}.link-btn[data-v-d19c4dd7]{background:none;border:none;color:#007bff;cursor:pointer;text-decoration:underline;font-size:14px;padding:0}.link-btn[data-v-d19c4dd7]:hover{color:#0056b3}.link-btn[data-v-d19c4dd7]:disabled{color:#6c757d;cursor:not-allowed;text-decoration:none}.back-button[data-v-d19c4dd7]{margin-bottom:20px}.back-btn[data-v-d19c4dd7]{background:none;border:none;color:#6c757d;cursor:pointer;font-size:14px;padding:8px 0;display:flex;align-items:center;gap:5px}.back-btn[data-v-d19c4dd7]:hover{color:#495057}.form-title[data-v-d19c4dd7]{font-size:24px;font-weight:700;text-align:center;margin-bottom:10px;color:#333}.form-description[data-v-d19c4dd7]{font-size:14px;color:#6c757d;text-align:center;margin-bottom:25px;line-height:1.5}.proof-progress[data-v-d19c4dd7]{margin:20px 0}.progress-text[data-v-d19c4dd7]{font-size:14px;color:#6c757d;text-align:center;margin-bottom:10px}.progress-bar[data-v-d19c4dd7]{width:100%;height:8px;background-color:#e9ecef;border-radius:4px;overflow:hidden}.progress-fill[data-v-d19c4dd7]{height:100%;background:linear-gradient(90deg,#007bff,#0056b3);transition:width .3s ease;border-radius:4px}.resend-code[data-v-d19c4dd7]{text-align:center;margin-top:15px}.error-message[data-v-d19c4dd7]{padding:8px 12px;background:#f8d7da;color:#721c24;border:1px solid #f5c6cb;border-radius:4px;font-size:12px;margin-top:12px}.success-message[data-v-d19c4dd7]{padding:8px 12px;background:#d4edda;color:#155724;border:1px solid #c3e6cb;border-radius:4px;font-size:12px;margin-top:12px}.initializing-container[data-v-d19c4dd7]{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px 20px;text-align:center}.initializing-container .loading-spinner[data-v-d19c4dd7]{width:32px;height:32px;border:3px solid #f3f3f3;border-top:3px solid #007bff;border-radius:50%;animation:spin-d19c4dd7 1s linear infinite;margin-bottom:16px}.initializing-container p[data-v-d19c4dd7]{color:#6c757d;font-size:14px;margin:0}@keyframes spin-d19c4dd7{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.custom-select[data-v-3b2cba4f]{position:relative;width:100%;font-size:14px}.select-trigger[data-v-3b2cba4f]{display:flex;align-items:center;justify-content:space-between;padding:4px 8px;border:1px solid #ddd;border-radius:8px;background-color:#fff;cursor:pointer;transition:all .2s ease;color:#333}.select-trigger[data-v-3b2cba4f]:focus{outline:none}.selected-text[data-v-3b2cba4f]{flex:1;text-align:left;color:#333}.arrow[data-v-3b2cba4f]{width:16px!important;height:16px!important;transition:transform .2s ease;color:#666!important;background:none!important;background-image:none!important;border:none!important;transform-origin:center!important;display:inline-block!important}.arrow-up[data-v-3b2cba4f]{transform:rotate(180deg);padding-left:0}.select-dropdown[data-v-3b2cba4f]{position:absolute;top:110%;left:0;right:0;background:#fff;border:1px solid #ddd;border-radius:6px;box-shadow:0 4px 6px #0000001a;z-index:1000;max-height:400px;overflow-y:auto}.select-option[data-v-3b2cba4f]{padding:4px 12px;cursor:pointer;transition:all .2s ease;color:#666;background-color:#fff;border-radius:6px;margin:2px}.select-option[data-v-3b2cba4f]:hover{background-color:#f5f5f5!important;color:#333!important}.select-option.selected[data-v-3b2cba4f]{background-color:#e3f2fd;color:#1976d2;font-weight:500}.select-option.selected[data-v-3b2cba4f]:hover{background-color:#bbdefb!important;color:#1565c0!important}@media (prefers-color-scheme: dark){.select-trigger[data-v-3b2cba4f]{background-color:#2d3748;border-color:#4a5568;color:#e2e8f0}.selected-text[data-v-3b2cba4f]{color:#e2e8f0}.arrow[data-v-3b2cba4f]{color:#a0aec0}.select-dropdown[data-v-3b2cba4f]{border-radius:4px;background-color:#2d3748;border-color:#4a5568}.select-option[data-v-3b2cba4f]{color:#a0a0a0;background-color:#2d3748}.select-option[data-v-3b2cba4f]:hover{background-color:#718096!important;color:#f7fafc!important}.select-option.selected[data-v-3b2cba4f]{background-color:#2b6cb0;color:#90cdf4}.select-option.selected[data-v-3b2cba4f]:hover{background-color:#2c5282!important;color:#bee3f8!important}}.loading-container[data-v-da15572b]{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:30px 20px;text-align:center}.spinner[data-v-da15572b]{width:32px;height:32px;border:3px solid #e0e0e0;border-top:3px solid #00a1d6;border-radius:50%;animation:spin-da15572b 1s linear infinite;margin-bottom:12px}.loading-text[data-v-da15572b]{color:#666;font-size:14px;font-weight:500}.loading-container.small .spinner[data-v-da15572b]{width:20px;height:20px;border-width:2px;margin-bottom:8px}.loading-container.small .loading-text[data-v-da15572b]{font-size:12px}.loading-container.large .spinner[data-v-da15572b]{width:48px;height:48px;border-width:4px;margin-bottom:16px}.loading-container.large .loading-text[data-v-da15572b]{font-size:16px}@keyframes spin-da15572b{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@media (max-width: 480px){.loading-container[data-v-da15572b]{padding:20px 15px}.spinner[data-v-da15572b]{width:28px;height:28px;border-width:2px}.loading-text[data-v-da15572b]{font-size:13px}}.link-item.skeleton[data-v-115afd35]{background:#f8f9fa;border:1px solid #e9ecef;border-radius:8px;padding:16px;margin-bottom:12px}.skeleton-element[data-v-115afd35]{background:linear-gradient(90deg,#f0f0f0 25%,#e0e0e0,#f0f0f0 75%);background-size:200% 100%;animation:skeleton-loading-115afd35 1.5s infinite;border-radius:4px}@keyframes skeleton-loading-115afd35{0%{background-position:200% 0}to{background-position:-200% 0}}.link-header[data-v-115afd35]{display:flex;align-items:center;gap:12px;margin-bottom:12px}.platform-badge[data-v-115afd35]{display:flex;align-items:center;gap:6px}.skeleton-icon[data-v-115afd35]{width:20px;height:20px;border-radius:50%}.link-meta[data-v-115afd35]{display:flex;flex-direction:column;gap:6px}.skeleton-language[data-v-115afd35]{width:40px;height:16px}.feature-tags[data-v-115afd35]{display:flex;gap:6px}.skeleton-tag[data-v-115afd35]{width:30px;height:14px}.link-title-row[data-v-115afd35]{display:flex;align-items:center;justify-content:space-between}.skeleton-title[data-v-115afd35]{width:70%;height:20px}.skeleton-arrow[data-v-115afd35]{width:16px;height:16px;border-radius:2px}.ios-checkbox[data-v-150f8c13]{--checkbox-size: 28px;--checkbox-color: #3b82f6;--checkbox-bg: #dbeafe;--checkbox-border: #93c5fd;position:relative;display:inline-flex;align-items:center;justify-content:flex-start;gap:8px;cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;vertical-align:middle}.ios-checkbox input[data-v-150f8c13]{display:none}.checkbox-wrapper[data-v-150f8c13]{position:relative;width:var(--checkbox-size);height:var(--checkbox-size);border-radius:8px;flex-shrink:0;display:flex;align-items:center;justify-content:center;transition:all .2s ease}.checkbox-bg[data-v-150f8c13]{position:absolute;top:0;left:0;right:0;bottom:0;border-radius:8px;border:1px solid #d5d5d5;background:#fff;transition:all .2s ease}.checkbox-icon[data-v-150f8c13]{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%) scale(0);width:16px;height:16px;color:#fff;transition:all .2s ease}.check-path[data-v-150f8c13]{stroke-dasharray:40;stroke-dashoffset:40;transition:stroke-dashoffset .3s ease .1s}.checkbox-label[data-v-150f8c13]{font-size:14px;color:#374151;font-weight:500;line-height:28px;height:28px;display:flex;align-items:center}.ios-checkbox input:checked+.checkbox-wrapper .checkbox-bg[data-v-150f8c13]{background:var(--checkbox-color);border-color:var(--checkbox-color)}.ios-checkbox input:checked+.checkbox-wrapper .checkbox-icon[data-v-150f8c13]{transform:translate(-50%,-50%) scale(1)}.ios-checkbox input:checked+.checkbox-wrapper .check-path[data-v-150f8c13]{stroke-dashoffset:0}.ios-checkbox:hover .checkbox-wrapper[data-v-150f8c13]{transform:scale(1.05)}.ios-checkbox:active .checkbox-wrapper[data-v-150f8c13]{transform:scale(.95)}.ios-checkbox input:focus+.checkbox-wrapper .checkbox-bg[data-v-150f8c13]{box-shadow:0 0 0 4px var(--checkbox-bg)}.ios-checkbox.blue[data-v-150f8c13]{--checkbox-color: #3b82f6;--checkbox-bg: #dbeafe;--checkbox-border: #93c5fd}.ios-checkbox.green[data-v-150f8c13]{--checkbox-color: #10b981;--checkbox-bg: #d1fae5;--checkbox-border: #6ee7b7}.ios-checkbox.purple[data-v-150f8c13]{--checkbox-color: #8b5cf6;--checkbox-bg: #ede9fe;--checkbox-border: #c4b5fd}.ios-checkbox.red[data-v-150f8c13]{--checkbox-color: #ef4444;--checkbox-bg: #fee2e2;--checkbox-border: #fca5a5}@keyframes bounce-150f8c13{0%,to{transform:scale(1)}50%{transform:scale(1.1)}}.ios-checkbox input:checked+.checkbox-wrapper[data-v-150f8c13]{animation:bounce-150f8c13 .3s cubic-bezier(.4,0,.2,1)}.copy-item[data-v-aaaa00e5]{position:relative;display:inline-block;cursor:pointer;color:#007bff;text-decoration:none;transition:all .4s cubic-bezier(.23,1,.32,1);word-break:break-all}.copy-item[data-v-aaaa00e5]:hover{text-decoration:underline;background-color:transparent}.tooltip[data-v-aaaa00e5]{position:absolute;top:-35px;left:50%;transform:translate(-50%);padding:6px 12px;background:#333333d1;color:#fff;border-radius:4px;font-size:12px;white-space:nowrap;opacity:0;visibility:hidden;pointer-events:none;transition:all .3s ease;z-index:1000}.tooltip[data-v-aaaa00e5]:after{content:"";position:absolute;top:100%;left:50%;transform:translate(-50%);border:5px solid transparent;border-top-color:#333333d1}.copy-item:hover .tooltip[data-v-aaaa00e5]{opacity:1;visibility:visible;top:-40px}.extract-code[data-v-aaaa00e5]{position:relative;display:inline-block;background:#f8f9fa;padding:2px 6px;border-radius:3px;font-family:monospace;color:#e83e8c;cursor:pointer;transition:all .3s ease}.extract-code[data-v-aaaa00e5]:hover{background:#e9ecef}.extract-code:hover .tooltip[data-v-aaaa00e5]{opacity:1;visibility:visible;top:-40px}.link-manager[data-v-e59e076b]{max-width:1000px;margin:0 auto}.link-stats[data-v-e59e076b]{display:flex;gap:20px;margin-bottom:20px;padding:15px;background:#f5f5f5;border-radius:8px}.stat-item[data-v-e59e076b]{display:flex;flex-direction:column;align-items:center}.stat-label[data-v-e59e076b]{font-size:12px;color:#666;margin-bottom:4px}.stat-value[data-v-e59e076b]{font-size:18px;font-weight:700;color:#333}.add-link-section[data-v-e59e076b]{margin-bottom:20px;display:flex;align-items:center;gap:10px}.add-link-btn[data-v-e59e076b]{padding:10px 20px;background:#007bff;color:#fff;border:none;border-radius:6px;cursor:pointer;font-size:14px}.add-link-btn[data-v-e59e076b]:hover:not(:disabled){background:#0056b3}.add-link-btn[data-v-e59e076b]:disabled{background:#ccc;cursor:not-allowed}.auth-hint[data-v-e59e076b]{color:#666;font-size:12px}.add-form[data-v-e59e076b]{background:#f9f9f9;padding:20px;border-radius:8px;margin-bottom:20px}.add-form h4[data-v-e59e076b]{margin:0 0 15px;color:#333}.form-row[data-v-e59e076b]{display:flex;gap:15px}.form-group[data-v-e59e076b]{flex:1;display:flex;align-items:center;gap:10px;margin-bottom:24px}.form-group label[data-v-e59e076b]{margin-bottom:0;font-weight:540;color:#333;font-size:13px;white-space:nowrap;min-width:80px;text-align:right}.checkbox-group[data-v-e59e076b]{display:flex;flex-wrap:wrap;gap:15px}.form-group input[data-v-e59e076b],.form-group select[data-v-e59e076b]{width:95%;padding:8px 12px;border:1px solid #ddd;border-radius:4px;font-size:14px}.form-group select[data-v-e59e076b]:focus{outline:none}.input-wrapper[data-v-e59e076b]{width:100%;border:1px solid #ddd;border-radius:6px}.input-wrapper input[data-v-e59e076b]{width:95%;border:none;outline:none;font-size:14px;background:transparent}.form-actions[data-v-e59e076b]{display:flex;justify-content:flex-end;gap:10px;margin-top:20px}.form-actions button[data-v-e59e076b]{font-weight:300;padding:10px 20px;border:none;border-radius:8px;cursor:pointer;font-size:14px}.form-actions button[type=submit][data-v-e59e076b]{background:#beecc8;color:#2e8339}.form-actions button[type=submit][data-v-e59e076b]:hover:not(:disabled){background:#b1efbf}.form-actions button[type=submit][data-v-e59e076b]:disabled{background:#b1efbf;cursor:not-allowed}.form-actions button[type=button][data-v-e59e076b]{background:#f1f1f1;color:#828282}.form-actions button[type=button][data-v-e59e076b]:hover{background:#ececec}.filter-bar[data-v-e59e076b]{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:20px;border-radius:6px}.filter-controls[data-v-e59e076b]{display:flex;gap:10px}.filter-bar .custom-select[data-v-e59e076b]{width:auto;min-width:100px}.add-link-btn-compact[data-v-e59e076b]{width:32px;height:32px;background:#e6f3ff;color:#007bff;border:none;border-radius:4px;cursor:pointer;font-size:18px;font-weight:700;display:flex;align-items:center;justify-content:center;transition:all .2s ease;flex-shrink:0;line-height:1;padding:0}.add-link-btn-compact[data-v-e59e076b]:hover:not(:disabled){background:#dae9f7;transform:scale(1)}.add-link-btn-compact[data-v-e59e076b]:disabled{color:#b2b2b2;background:#f5f4f4;cursor:not-allowed;transform:none}.filter-bar select[data-v-e59e076b]{padding:6px 10px;border:1px solid #ddd;border-radius:4px;font-size:13px}.links-list[data-v-e59e076b]{display:flex;flex-direction:column;gap:15px}.link-item[data-v-e59e076b]{background:#fff;border:1px solid rgba(239,239,239,1);border-radius:8px;padding:15px;box-shadow:0 2px 12px #0000000d;transition:box-shadow .3s ease;cursor:pointer}.link-header[data-v-e59e076b]{display:flex;align-items:center;gap:10px;margin-bottom:10px}.link-type-badge[data-v-e59e076b]{padding:4px 8px;border-radius:4px;font-size:12px;font-weight:700;color:#fff}.link-type-badge.netdisk[data-v-e59e076b]{background:#28a745}.link-type-badge.bt[data-v-e59e076b]{background:#dc3545}.link-type-badge.online[data-v-e59e076b]{background:#007bff}.platform-badge[data-v-e59e076b]{padding:4px;background:#fff;color:#fff;border-radius:4px;font-size:12px;display:flex;align-items:center;justify-content:center;border:1px solid #e9ecef}.platform-icon[data-v-e59e076b]{width:16px;height:16px;object-fit:contain}.link-meta[data-v-e59e076b]{display:flex;gap:3px;margin-left:auto;align-items:center}.file-size[data-v-e59e076b]{padding:2px 5px;border-radius:3px;font-size:10px;background:#e3f2fd!important;color:#1976d2!important;font-weight:500}.feature-tags[data-v-e59e076b]{display:flex;gap:3px;flex-wrap:wrap}.feature-tag[data-v-e59e076b]{padding:2px 5px;background:#007bff;color:#fff;border-radius:3px;font-size:10px;font-weight:700}.feature-tag.feature-4k[data-v-e59e076b]{border:1px solid #e7ed27;background:#f6ff00;color:#232323}.feature-tag.feature-hdr[data-v-e59e076b]{background:gold;color:#232323}.feature-tag.feature-dolby[data-v-e59e076b]{background:#eaeaea;color:#121212;font-weight:300}.feature-tag.feature-subtitle[data-v-e59e076b]{background:#cee2e8;color:#036;font-weight:300}.link-content[data-v-e59e076b]{margin-bottom:15px}.link-title-row[data-v-e59e076b]{display:flex;align-items:center;justify-content:space-between;padding:5px 0;margin-bottom:8px;border-radius:4px;transition:background-color .2s ease}.link-title[data-v-e59e076b]{font-weight:500;color:#333;flex:1;overflow:hidden;position:relative;padding-right:10px;min-width:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.4;max-height:2.8em}.link-title.expanded[data-v-e59e076b]{display:block;-webkit-line-clamp:unset;max-height:none;white-space:normal;padding-right:10px;word-wrap:break-word;word-break:break-word}.link-title[data-v-e59e076b]:after{content:"";position:absolute;top:0;right:0;width:100px;height:100%;background:linear-gradient(to right,transparent,#ffffff 85%);pointer-events:none;transition:opacity .3s ease}.link-title.expanded[data-v-e59e076b]:after{opacity:0}.expand-arrow[data-v-e59e076b]{display:flex;align-items:center;justify-content:center;width:24px;height:24px;color:#666;transition:transform .3s ease,color .2s ease}.expand-arrow[data-v-e59e076b]:hover{color:#333}.expand-arrow.expanded[data-v-e59e076b]{transform:rotate(180deg)}.link-details[data-v-e59e076b]{margin-top:10px;animation:slideDown-e59e076b .3s ease forwards}@keyframes slideDown-e59e076b{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.link-url[data-v-e59e076b]{display:flex;align-items:center;gap:8px;margin-bottom:5px}.link-url a[data-v-e59e076b]{color:#007bff;text-decoration:none;flex:1;word-break:break-all}.link-url span[data-v-e59e076b]:hover{text-decoration:none;background-color:transparent}.extract-code-container[data-v-e59e076b]{display:flex;background:#fff;align-items:center;gap:8px;font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;font-size:12px}.extract-code-container code[data-v-e59e076b]{font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;cursor:pointer;background:#eaeaea;padding:2px 6px;border-radius:6px;color:#3d3d3d}.extract-code-container code[data-v-e59e076b]:hover{background:#e6e6e6}.copy-btn[data-v-e59e076b]{background:none;border:none;cursor:pointer;font-size:14px;padding:2px 4px;border-radius:3px}.copy-btn[data-v-e59e076b]:hover{background:#f8f9fa}.link-actions[data-v-e59e076b]{display:flex;justify-content:space-between;align-items:center;margin-top:10px;margin-bottom:10px}.vote-section[data-v-e59e076b]{display:flex;align-items:center;gap:10px}.vote-btn[data-v-e59e076b]{background:transparent;border:none;padding:5px 10px;border-radius:6px;cursor:pointer;font-size:12px;display:flex;align-items:center;gap:4px}.vote-icon[data-v-e59e076b]{width:12px;height:12px}.vote-icon.down-icon[data-v-e59e076b]{transform:rotate(180deg)}.vote-btn[data-v-e59e076b]:hover:not(:disabled){background:#e9ecef}.vote-btn[data-v-e59e076b]:disabled{opacity:.6;cursor:not-allowed}.vote-btn.active.up[data-v-e59e076b]{color:#155724}.vote-btn.active.down[data-v-e59e076b]{color:#721c24}.vote-btn.pending[data-v-e59e076b]{opacity:.7;position:relative}.pending-indicator[data-v-e59e076b]{font-size:10px;margin-left:2px;animation:pulse-e59e076b 1.5s ease-in-out infinite}@keyframes pulse-e59e076b{0%,to{opacity:1}50%{opacity:.5}}.action-buttons[data-v-e59e076b]{display:flex;gap:8px}.action-buttons button[data-v-e59e076b]{padding:4px 8px;border:none;border-radius:6px;cursor:pointer;font-size:12px}.edit-btn[data-v-e59e076b]{background:#ffc107;color:#212529}.edit-btn[data-v-e59e076b]:hover{background:#e0a800}.modify-btn[data-v-e59e076b]{width:48px;height:28px;background:#d4ecef;color:#22899b}.modify-btn[data-v-e59e076b]:hover{background:#bfeff5}.delete-btn[data-v-e59e076b]{width:48px;height:28px;background:#ffccd0;color:#e62e2e}.delete-btn[data-v-e59e076b]:hover{background:#ffd6db}.delete-confirmation[data-v-e59e076b]{text-align:center;padding:20px 0}.warning-icon[data-v-e59e076b]{font-size:48px;margin-bottom:16px}.delete-confirmation p[data-v-e59e076b]{margin:8px 0;font-size:16px}.warning-text[data-v-e59e076b]{color:#dc3545;font-size:14px;font-weight:500}.delete-confirm-btn[data-v-e59e076b]{background:#f8d7da!important;color:#dc3545!important;border:1px solid #f5c6cb!important;padding:8px 16px;border-radius:4px;cursor:pointer;margin-right:8px;font-weight:500}.delete-confirm-btn[data-v-e59e076b]:hover:not(:disabled){background:#f8d7dad2!important;border:1px solid #f5c6cb!important}.delete-confirm-btn[data-v-e59e076b]:disabled{background:#6c757d;cursor:not-allowed}.report-btn[data-v-e59e076b]{width:48px;height:28px;background:#eee;color:#495057}.report-btn[data-v-e59e076b]:hover{color:#495057;background:#e3e3e3}.link-footer[data-v-e59e076b]{display:flex;justify-content:space-between;align-items:center;font-size:12px;color:#666;border-top:1px solid #f0f0f0;padding-top:10px}.report-count[data-v-e59e076b]{color:#dc3545;font-weight:700}.empty-state[data-v-e59e076b]{text-align:center;padding:40px;color:#666}.loading[data-v-e59e076b]{text-align:center;padding:20px;color:#666}.error-message[data-v-e59e076b]{background:#f8d7da;color:#721c24;padding:10px 15px;border-radius:4px;margin:10px 0;border:1px solid #f5c6cb}.success-message[data-v-e59e076b]{background:#d4edda;color:#155724;padding:10px 15px;border-radius:4px;margin:10px 0;border:1px solid #c3e6cb}@media (max-width: 768px){.link-manager[data-v-e59e076b]{padding:10px}.form-row[data-v-e59e076b]{flex-direction:column;gap:10px}.filter-bar[data-v-e59e076b]{flex-direction:column;gap:8px}.link-header[data-v-e59e076b]{flex-wrap:wrap}.link-meta[data-v-e59e076b]{margin-left:0;margin-top:5px}.link-actions[data-v-e59e076b]{flex-direction:column;gap:10px;align-items:flex-start}}.modal-overlay[data-v-e59e076b]{position:fixed;top:0;left:0;width:100%;height:100%;background:#00000080;display:flex;justify-content:center;align-items:center;z-index:1000}.modal-content[data-v-e59e076b]{background:#fff;border-radius:16px;width:90%;max-width:600px;max-height:90vh;box-shadow:0 4px 20px #00000026}.modal-header[data-v-e59e076b]{display:flex;justify-content:space-between;align-items:center;padding:20px;border-bottom:1px solid #eee;margin-bottom:20px}.modal-header h4[data-v-e59e076b]{margin-left:10px;margin-bottom:0;color:#333;font-size:18px}.close-btn[data-v-e59e076b]{background:#f5f5f5;border:none;font-size:24px;cursor:pointer;color:#999;padding:0;width:30px;height:30px;display:flex;align-items:center;justify-content:center;border-radius:8px}.close-btn[data-v-e59e076b]:hover{background:#f5f5f5;color:#333}.modal-body[data-v-e59e076b]{padding:0 20px 20px}.vote-section[data-v-e59e076b]{width:100%}.input-wrapper textarea[data-v-e59e076b]{width:100%;border:none;outline:none;font-size:14px;font-family:inherit;resize:vertical;min-height:80px;background:transparent}.input-wrapper[data-v-e59e076b]:has(textarea):focus-within{border-color:#007bff;box-shadow:0 0 0 2px #007bff40}.input-wrapper textarea[data-v-e59e076b]::placeholder{color:#999}.pagination[data-v-e59e076b]{display:flex;justify-content:center;align-items:center;gap:15px;margin-top:10px;padding:10px;background:#fff;border-radius:8px}.pagination-btn[data-v-e59e076b]{box-shadow:#00000008 4px 4px 20px;padding:8px 16px;border:1px solid rgb(242,242,242);background:#fff;color:#333;border-radius:9999px;cursor:pointer;font-size:14px;transition:all .2s}.pagination-btn[data-v-e59e076b]:hover:not(:disabled){background:#b3d8ff;color:#007bff;border-color:#b3d8ff}.pagination-btn[data-v-e59e076b]:disabled{background:#f5f5f5;color:#999;cursor:not-allowed;border-color:#ddd}.pagination-info[data-v-e59e076b]{font-size:14px;color:#666;font-weight:500}.login-prompt[data-v-e59e076b]{display:flex;justify-content:center;align-items:center;min-height:300px;padding:40px 20px;background:linear-gradient(135deg,#f8f9fa,#e9ecef);border-radius:12px;border:2px dashed #dee2e6;margin:20px 0}.login-prompt-content[data-v-e59e076b]{text-align:center;max-width:400px}.login-icon[data-v-e59e076b]{margin-bottom:20px;color:#6c757d;opacity:.8}.login-prompt h3[data-v-e59e076b]{font-size:24px;font-weight:600;color:#495057;margin-bottom:12px;line-height:1.3}.login-prompt p[data-v-e59e076b]{font-size:16px;color:#6c757d;margin-bottom:24px;line-height:1.5}.login-btn[data-v-e59e076b]{border:1px solid rgb(242,242,242);background:#fff;color:#767676;border:none;padding:12px 32px;border-radius:25px;font-size:16px;font-weight:500;cursor:pointer;transition:all .3s ease;box-shadow:#00000008 4px 4px 20px}.login-btn[data-v-e59e076b]:hover{transform:translateY(-2px);box-shadow:#0000000f 4px 4px 20px}.login-btn[data-v-e59e076b]:active{transform:translateY(0);box-shadow:0 2px 10px #007bff4d}.content-wrapper[data-v-a01b44d5]{padding:16px}.movie-info[data-v-a01b44d5]{margin-bottom:16px;padding:12px;background:#f8f9fa;border-radius:6px;border-left:4px solid #00a1d6}.movie-title[data-v-a01b44d5]{margin:0 0 8px;font-size:16px;font-weight:600;color:#333;line-height:1.3}.movie-meta[data-v-a01b44d5]{display:flex;gap:12px;align-items:center}.movie-meta .year[data-v-a01b44d5]{background:#6c757d;color:#fff;padding:2px 6px;border-radius:3px;font-size:12px;font-weight:500}.movie-meta .rating[data-v-a01b44d5]{color:#ff6b35;font-weight:600;font-size:13px}.navigation-bar[data-v-a01b44d5]{display:flex;border-bottom:1px solid #e0e0e0;margin-bottom:16px}.nav-btn[data-v-a01b44d5]{flex:1;padding:12px 16px;border:none;background:none;cursor:pointer;font-size:14px;font-weight:500;color:#666;transition:all .2s;border-bottom:1px solid transparent}.nav-btn.active[data-v-a01b44d5]{color:#00a1d6;border-bottom-color:#00a1d6}.tab-content[data-v-a01b44d5]{min-height:200px}.tab-panel[data-v-a01b44d5]{padding-top:16px 0}.tab-panel h4[data-v-a01b44d5]{margin:0 0 12px;color:#333;font-size:16px;font-weight:600}.tab-panel p[data-v-a01b44d5]{margin:0;color:#666;line-height:1.5}.sub-nav[data-v-a01b44d5]{display:flex;gap:4px;margin-bottom:12px;padding:4px;background:#e9ecef;border-radius:6px}.sub-tab[data-v-a01b44d5]{flex:1;padding:6px 8px;border:none;background:transparent;color:#666;font-size:12px;border-radius:4px;cursor:pointer;transition:all .2s;text-align:center}.sub-tab[data-v-a01b44d5]:hover{background:#dee2e6;color:#495057}.sub-tab.active[data-v-a01b44d5]{background:#007bff;color:#fff;font-weight:500}.sub-content[data-v-a01b44d5]{margin-top:8px}.sub-tab-content[data-v-a01b44d5]{padding:8px 0}.sub-tab-content p[data-v-a01b44d5]{margin:4px 0;color:#666;font-size:12px}.no-subject[data-v-a01b44d5]{text-align:center;padding:40px 20px;color:#666}.no-subject p[data-v-a01b44d5]{margin:8px 0;line-height:1.5}.no-subject .hint[data-v-a01b44d5]{font-size:12px;color:#999;font-style:italic}.debug-panel[data-v-dba5723e]{position:fixed;top:20px;right:20px;width:400px;max-height:80vh;background:#fff;border:2px solid #007bff;border-radius:8px;box-shadow:0 4px 20px #0000004d;z-index:10000;font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;overflow-y:auto}.debug-header[data-v-dba5723e]{background:#007bff;color:#fff;padding:10px 15px;display:flex;justify-content:space-between;align-items:center}.debug-header h3[data-v-dba5723e]{margin:0;font-size:16px}.close-btn[data-v-dba5723e]{background:none;border:none;color:#fff;font-size:20px;cursor:pointer;padding:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center}.debug-content[data-v-dba5723e]{padding:15px}.debug-section[data-v-dba5723e]{margin-bottom:20px;padding-bottom:15px;border-bottom:1px solid #eee}.debug-section[data-v-dba5723e]:last-child{border-bottom:none;margin-bottom:0}.debug-section h4[data-v-dba5723e]{margin:0 0 10px;color:#333;font-size:14px}.debug-section h5[data-v-dba5723e]{margin:10px 0 5px;color:#666;font-size:12px}.status-item[data-v-dba5723e]{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;font-size:12px}.label[data-v-dba5723e]{font-weight:700;color:#555}.value[data-v-dba5723e]{color:#333;max-width:200px;word-break:break-all}.token[data-v-dba5723e]{font-family:monospace;font-size:10px}.status[data-v-dba5723e]{padding:2px 6px;border-radius:3px;font-size:11px;font-weight:700}.status.success[data-v-dba5723e]{background:#d4edda;color:#155724}.status.error[data-v-dba5723e]{background:#f8d7da;color:#721c24}.button-group[data-v-dba5723e]{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:10px}.debug-btn[data-v-dba5723e]{padding:6px 12px;border:1px solid #007bff;background:#fff;color:#007bff;border-radius:4px;cursor:pointer;font-size:11px;transition:all .2s}.debug-btn[data-v-dba5723e]:hover{background:#007bff;color:#fff}.debug-btn.danger[data-v-dba5723e]{border-color:#dc3545;color:#dc3545}.debug-btn.danger[data-v-dba5723e]:hover{background:#dc3545;color:#fff}.test-result[data-v-dba5723e]{background:#f8f9fa;border:1px solid #dee2e6;border-radius:4px;padding:10px;margin-top:10px}.test-result pre[data-v-dba5723e]{margin:0;font-size:10px;white-space:pre-wrap;word-break:break-word}.headers-preview[data-v-dba5723e]{background:#f8f9fa;border:1px solid #dee2e6;border-radius:4px;padding:10px}.headers-preview code[data-v-dba5723e]{font-size:10px;white-space:pre-wrap;word-break:break-word}.update-notification-overlay[data-v-8ddffaa9]{position:fixed;top:0;left:0;right:0;bottom:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:10000;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.update-notification[data-v-8ddffaa9]{background:#fff;border-radius:12px;box-shadow:0 20px 40px #00000026;width:90%;max-width:480px;max-height:90vh;overflow-y:auto;animation:slideIn-8ddffaa9 .3s ease-out}@keyframes slideIn-8ddffaa9{0%{opacity:0;transform:scale(.9) translateY(-20px)}to{opacity:1;transform:scale(1) translateY(0)}}.notification-header[data-v-8ddffaa9]{display:flex;align-items:flex-start;padding:24px 24px 16px;border-bottom:1px solid #f0f0f0;position:relative}.header-icon[data-v-8ddffaa9]{flex-shrink:0;width:40px;height:40px;background:#e8f5e8;border-radius:50%;display:flex;align-items:center;justify-content:center;margin-right:16px}.header-content[data-v-8ddffaa9]{flex:1}.notification-title[data-v-8ddffaa9]{font-size:18px;font-weight:600;color:#333;margin:0 0 4px}.notification-subtitle[data-v-8ddffaa9]{font-size:14px;color:#666;margin:0}.close-btn[data-v-8ddffaa9]{position:absolute;top:20px;right:20px;width:32px;height:32px;border:none;background:#f5f5f5;border-radius:8px;display:flex;align-items:center;justify-content:center;cursor:pointer;color:#666;transition:all .2s ease}.close-btn[data-v-8ddffaa9]:hover{background:#e0e0e0;color:#333}.version-info[data-v-8ddffaa9]{padding:16px 24px;background:#f8f9fa;margin:16px 24px 0;border-radius:8px}.version-row[data-v-8ddffaa9]{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.version-row[data-v-8ddffaa9]:last-child{margin-bottom:0}.version-label[data-v-8ddffaa9]{font-size:14px;color:#666;font-weight:500}.version-current[data-v-8ddffaa9]{font-size:14px;color:#666;font-family:monospace;background:#e9ecef;padding:2px 8px;border-radius:4px}.version-latest[data-v-8ddffaa9]{font-size:14px;color:#4caf50;font-family:monospace;font-weight:600;background:#e8f5e8;padding:2px 8px;border-radius:4px}.update-description[data-v-8ddffaa9]{padding:16px 24px}.description-title[data-v-8ddffaa9]{font-size:16px;font-weight:600;color:#333;margin:0 0 12px;display:flex;align-items:center;gap:8px}.description-title[data-v-8ddffaa9]:before{content:"";width:4px;height:16px;background:#4caf50;border-radius:2px}.description-content[data-v-8ddffaa9]{font-size:14px;color:#555;line-height:1.6;margin:0;max-height:120px;overflow-y:auto;padding:12px;background:#f8f9fa;border-radius:6px}.notification-actions[data-v-8ddffaa9]{padding:16px 24px 24px}.skip-option[data-v-8ddffaa9]{margin-bottom:16px}.skip-checkbox[data-v-8ddffaa9]{display:flex;align-items:center;cursor:pointer;font-size:14px;color:#666}.skip-checkbox input[type=checkbox][data-v-8ddffaa9]{display:none}.checkmark[data-v-8ddffaa9]{width:16px;height:16px;border:2px solid #ddd;border-radius:3px;margin-right:8px;position:relative;transition:all .2s ease}.skip-checkbox input[type=checkbox]:checked+.checkmark[data-v-8ddffaa9]{background:#4caf50;border-color:#4caf50}.skip-checkbox input[type=checkbox]:checked+.checkmark[data-v-8ddffaa9]:after{content:"";position:absolute;left:4px;top:1px;width:4px;height:8px;border:solid white;border-width:0 2px 2px 0;transform:rotate(45deg)}.skip-text[data-v-8ddffaa9]{-webkit-user-select:none;user-select:none}.action-buttons[data-v-8ddffaa9]{display:flex;gap:12px;justify-content:flex-end}.btn[data-v-8ddffaa9]{padding:10px 20px;border:none;border-radius:6px;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s ease;display:flex;align-items:center;gap:8px;min-width:100px;justify-content:center}.btn[data-v-8ddffaa9]:disabled{cursor:not-allowed;opacity:.6}.btn-secondary[data-v-8ddffaa9]{background:#f5f5f5;color:#666}.btn-secondary[data-v-8ddffaa9]:hover:not(:disabled){background:#e0e0e0;color:#333}.btn-primary[data-v-8ddffaa9]{background:#4caf50;color:#fff}.btn-primary[data-v-8ddffaa9]:hover:not(:disabled){background:#45a049}.loading-spinner[data-v-8ddffaa9]{width:14px;height:14px;border:2px solid rgba(255,255,255,.3);border-top:2px solid white;border-radius:50%;animation:spin-8ddffaa9 1s linear infinite}@keyframes spin-8ddffaa9{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.update-note[data-v-8ddffaa9]{padding:16px 24px 24px;border-top:1px solid #f0f0f0;margin-top:16px}.note-text[data-v-8ddffaa9]{font-size:12px;color:#666;margin:0;display:flex;align-items:center;gap:6px;line-height:1.4}@media (max-width: 480px){.update-notification[data-v-8ddffaa9]{width:95%;margin:20px}.notification-header[data-v-8ddffaa9]{padding:20px 20px 16px}.version-info[data-v-8ddffaa9],.update-description[data-v-8ddffaa9],.notification-actions[data-v-8ddffaa9],.update-note[data-v-8ddffaa9]{padding-left:20px;padding-right:20px}.action-buttons[data-v-8ddffaa9]{flex-direction:column}.btn[data-v-8ddffaa9]{width:100%}}@media (prefers-color-scheme: dark){.update-notification[data-v-8ddffaa9]{background:#2d3748;color:#e2e8f0}.notification-header[data-v-8ddffaa9]{border-bottom-color:#4a5568}.notification-title[data-v-8ddffaa9]{color:#e2e8f0}.notification-subtitle[data-v-8ddffaa9]{color:#a0aec0}.close-btn[data-v-8ddffaa9]{background:#4a5568;color:#a0aec0}.close-btn[data-v-8ddffaa9]:hover{background:#718096;color:#e2e8f0}.version-info[data-v-8ddffaa9]{background:#4a5568}.version-current[data-v-8ddffaa9]{background:#718096;color:#e2e8f0}.version-latest[data-v-8ddffaa9]{background:#2f855a;color:#c6f6d5}.update-description p[data-v-8ddffaa9]{color:#cbd5e0}.description-title[data-v-8ddffaa9]{color:#e2e8f0}.description-content[data-v-8ddffaa9]{color:#cbd5e0;background:#4a5568}.skip-checkbox[data-v-8ddffaa9]{color:#a0aec0}.checkmark[data-v-8ddffaa9]{border-color:#718096}.btn-secondary[data-v-8ddffaa9]{background:#4a5568;color:#a0aec0}.btn-secondary[data-v-8ddffaa9]:hover:not(:disabled){background:#718096;color:#e2e8f0}.update-note[data-v-8ddffaa9]{border-top-color:#4a5568}.note-text[data-v-8ddffaa9]{color:#a0aec0}}.custom-window[data-v-7591ec42]{position:relative;width:100%;max-width:350px;min-height:200px;background:#fff;border:1px solid rgba(239,239,239,1);border-radius:16px;box-shadow:0 2px 12px #0000000d;margin-bottom:15px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}.window-header[data-v-7591ec42]{color:#545454;padding:6px 12px;border-radius:0 0 8px 8px;display:flex;justify-content:space-between;align-items:center;-webkit-user-select:none;user-select:none}.window-title[data-v-7591ec42]{font-weight:300;font-size:12px}.close-btn[data-v-7591ec42]{background:none;border:none;color:#fff;font-size:16px;cursor:pointer;padding:0;width:20px;height:20px;border-radius:50%;display:flex;align-items:center;justify-content:center;transition:background-color .2s}.close-btn[data-v-7591ec42]:hover{background-color:#fff3}.window-content[data-v-7591ec42]{padding:0}#douban-trigger-btn:hover{background:#005a1a!important;transform:translateY(-1px);box-shadow:0 2px 8px #00772280}#douban-custom-window{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}#douban-custom-window ::-webkit-scrollbar{width:6px}#douban-custom-window ::-webkit-scrollbar-track{background:#f1f1f1;border-radius:3px}#douban-custom-window ::-webkit-scrollbar-thumb{background:#c1c1c1;border-radius:3px}#douban-custom-window ::-webkit-scrollbar-thumb:hover{background:#a8a8a8}@keyframes fadeIn{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}@keyframes slideIn{0%{transform:translateY(-20px);opacity:0}to{transform:translateY(0);opacity:1}}.custom-window{animation:fadeIn .3s ease-out}.window-content>*{animation:slideIn .4s ease-out}@media (max-width: 480px){.custom-window{width:90vw!important;left:5vw!important}.stats-grid{grid-template-columns:1fr!important}.action-section{flex-direction:column}.action-btn{width:100%}}@media (prefers-color-scheme: dark){.custom-window{background:#2d3748;border-color:#4a5568;color:#e2e8f0}.window-content h3,.window-content h4{color:#e2e8f0}.window-content p{color:#cbd5e0}.feature-section li,.info-section{background:#4a5568;color:#cbd5e0}.info-item strong{color:#e2e8f0}}select option{color:#666;background-color:#fff;padding:8px 12px;border-radius:6px;margin:2px 0;transition:background-color .2s ease}select option:hover{background-color:#f5f5f5}select{border-radius:6px;padding:8px 12px}@media (prefers-color-scheme: dark){select option{color:#a0a0a0;background-color:#2d3748}select option:hover{background-color:#718096;color:#f7fafc}} `; document.head.appendChild(style); })(); (function(){"use strict";(function(){"use strict";/** * @vue/shared v3.5.18 * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT **//*! #__NO_SIDE_EFFECTS__ */function lo(e){const t=Object.create(null);for(const s of e.split(","))t[s]=1;return s=>s in t}const le={},Nt=[],Xe=()=>{},zr=()=>!1,As=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),io=e=>e.startsWith("onUpdate:"),Ee=Object.assign,ao=(e,t)=>{const s=e.indexOf(t);s>-1&&e.splice(s,1)},jr=Object.prototype.hasOwnProperty,se=(e,t)=>jr.call(e,t),z=Array.isArray,qt=e=>os(e)==="[object Map]",Is=e=>os(e)==="[object Set]",Ho=e=>os(e)==="[object Date]",W=e=>typeof e=="function",ve=e=>typeof e=="string",et=e=>typeof e=="symbol",ce=e=>e!==null&&typeof e=="object",Ko=e=>(ce(e)||W(e))&&W(e.then)&&W(e.catch),Wo=Object.prototype.toString,os=e=>Wo.call(e),Hr=e=>os(e).slice(8,-1),Go=e=>os(e)==="[object Object]",uo=e=>ve(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,ns=lo(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Vs=e=>{const t=Object.create(null);return s=>t[s]||(t[s]=e(s))},Kr=/-(\w)/g,gt=Vs(e=>e.replace(Kr,(t,s)=>s?s.toUpperCase():"")),Wr=/\B([A-Z])/g,Ut=Vs(e=>e.replace(Wr,"-$1").toLowerCase()),Qo=Vs(e=>e.charAt(0).toUpperCase()+e.slice(1)),co=Vs(e=>e?`on${Qo(e)}`:""),_t=(e,t)=>!Object.is(e,t),Us=(e,...t)=>{for(let s=0;s<e.length;s++)e[s](...t)},fo=(e,t,s,o=!1)=>{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:o,value:s})},po=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let Zo;const $s=()=>Zo||(Zo=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function zt(e){if(z(e)){const t={};for(let s=0;s<e.length;s++){const o=e[s],n=ve(o)?Yr(o):zt(o);if(n)for(const r in n)t[r]=n[r]}return t}else if(ve(e)||ce(e))return e}const Gr=/;(?![^(]*\))/g,Qr=/:([^]+)/,Zr=/\/\*[^]*?\*\//g;function Yr(e){const t={};return e.replace(Zr,"").split(Gr).forEach(s=>{if(s){const o=s.split(Qr);o.length>1&&(t[o[0].trim()]=o[1].trim())}}),t}function _e(e){let t="";if(ve(e))t=e;else if(z(e))for(let s=0;s<e.length;s++){const o=_e(e[s]);o&&(t+=o+" ")}else if(ce(e))for(const s in e)e[s]&&(t+=s+" ");return t.trim()}const Jr=lo("itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly");function Yo(e){return!!e||e===""}function Xr(e,t){if(e.length!==t.length)return!1;let s=!0;for(let o=0;s&&o<e.length;o++)s=Ps(e[o],t[o]);return s}function Ps(e,t){if(e===t)return!0;let s=Ho(e),o=Ho(t);if(s||o)return s&&o?e.getTime()===t.getTime():!1;if(s=et(e),o=et(t),s||o)return e===t;if(s=z(e),o=z(t),s||o)return s&&o?Xr(e,t):!1;if(s=ce(e),o=ce(t),s||o){if(!s||!o)return!1;const n=Object.keys(e).length,r=Object.keys(t).length;if(n!==r)return!1;for(const l in e){const i=e.hasOwnProperty(l),u=t.hasOwnProperty(l);if(i&&!u||!i&&u||!Ps(e[l],t[l]))return!1}}return String(e)===String(t)}function Jo(e,t){return e.findIndex(s=>Ps(s,t))}const Xo=e=>!!(e&&e.__v_isRef===!0),j=e=>ve(e)?e:e==null?"":z(e)||ce(e)&&(e.toString===Wo||!W(e.toString))?Xo(e)?j(e.value):JSON.stringify(e,en,2):String(e),en=(e,t)=>Xo(t)?en(e,t.value):qt(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((s,[o,n],r)=>(s[ho(o,r)+" =>"]=n,s),{})}:Is(t)?{[`Set(${t.size})`]:[...t.values()].map(s=>ho(s))}:et(t)?ho(t):ce(t)&&!z(t)&&!Go(t)?String(t):t,ho=(e,t="")=>{var s;return et(e)?`Symbol(${(s=e.description)!=null?s:t})`:e};/** * @vue/reactivity v3.5.18 * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT **/let Oe;class el{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=Oe,!t&&Oe&&(this.index=(Oe.scopes||(Oe.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,s;if(this.scopes)for(t=0,s=this.scopes.length;t<s;t++)this.scopes[t].pause();for(t=0,s=this.effects.length;t<s;t++)this.effects[t].pause()}}resume(){if(this._active&&this._isPaused){this._isPaused=!1;let t,s;if(this.scopes)for(t=0,s=this.scopes.length;t<s;t++)this.scopes[t].resume();for(t=0,s=this.effects.length;t<s;t++)this.effects[t].resume()}}run(t){if(this._active){const s=Oe;try{return Oe=this,t()}finally{Oe=s}}}on(){++this._on===1&&(this.prevScope=Oe,Oe=this)}off(){this._on>0&&--this._on===0&&(Oe=this.prevScope,this.prevScope=void 0)}stop(t){if(this._active){this._active=!1;let s,o;for(s=0,o=this.effects.length;s<o;s++)this.effects[s].stop();for(this.effects.length=0,s=0,o=this.cleanups.length;s<o;s++)this.cleanups[s]();if(this.cleanups.length=0,this.scopes){for(s=0,o=this.scopes.length;s<o;s++)this.scopes[s].stop(!0);this.scopes.length=0}if(!this.detached&&this.parent&&!t){const n=this.parent.scopes.pop();n&&n!==this&&(this.parent.scopes[this.index]=n,n.index=this.index)}this.parent=void 0}}}function tl(){return Oe}let ae;const mo=new WeakSet;class tn{constructor(t){this.fn=t,this.deps=void 0,this.depsTail=void 0,this.flags=5,this.next=void 0,this.cleanup=void 0,this.scheduler=void 0,Oe&&Oe.active&&Oe.effects.push(this)}pause(){this.flags|=64}resume(){this.flags&64&&(this.flags&=-65,mo.has(this)&&(mo.delete(this),this.trigger()))}notify(){this.flags&2&&!(this.flags&32)||this.flags&8||on(this)}run(){if(!(this.flags&1))return this.fn();this.flags|=2,un(this),nn(this);const t=ae,s=Ye;ae=this,Ye=!0;try{return this.fn()}finally{rn(this),ae=t,Ye=s,this.flags&=-3}}stop(){if(this.flags&1){for(let t=this.deps;t;t=t.nextDep)yo(t);this.deps=this.depsTail=void 0,un(this),this.onStop&&this.onStop(),this.flags&=-2}}trigger(){this.flags&64?mo.add(this):this.scheduler?this.scheduler():this.runIfDirty()}runIfDirty(){_o(this)&&this.run()}get dirty(){return _o(this)}}let sn=0,rs,ls;function on(e,t=!1){if(e.flags|=8,t){e.next=ls,ls=e;return}e.next=rs,rs=e}function vo(){sn++}function go(){if(--sn>0)return;if(ls){let t=ls;for(ls=void 0;t;){const s=t.next;t.next=void 0,t.flags&=-9,t=s}}let e;for(;rs;){let t=rs;for(rs=void 0;t;){const s=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(o){e||(e=o)}t=s}}if(e)throw e}function nn(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function rn(e){let t,s=e.depsTail,o=s;for(;o;){const n=o.prevDep;o.version===-1?(o===s&&(s=n),yo(o),sl(o)):t=o,o.dep.activeLink=o.prevActiveLink,o.prevActiveLink=void 0,o=n}e.deps=t,e.depsTail=s}function _o(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(ln(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function ln(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===is)||(e.globalVersion=is,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!_o(e))))return;e.flags|=2;const t=e.dep,s=ae,o=Ye;ae=e,Ye=!0;try{nn(e);const n=e.fn(e._value);(t.version===0||_t(n,e._value))&&(e.flags|=128,e._value=n,t.version++)}catch(n){throw t.version++,n}finally{ae=s,Ye=o,rn(e),e.flags&=-3}}function yo(e,t=!1){const{dep:s,prevSub:o,nextSub:n}=e;if(o&&(o.nextSub=n,e.prevSub=void 0),n&&(n.prevSub=o,e.nextSub=void 0),s.subs===e&&(s.subs=o,!o&&s.computed)){s.computed.flags&=-5;for(let r=s.computed.deps;r;r=r.nextDep)yo(r,!0)}!t&&!--s.sc&&s.map&&s.map.delete(s.key)}function sl(e){const{prevDep:t,nextDep:s}=e;t&&(t.nextDep=s,e.prevDep=void 0),s&&(s.prevDep=t,e.nextDep=void 0)}let Ye=!0;const an=[];function tt(){an.push(Ye),Ye=!1}function st(){const e=an.pop();Ye=e===void 0?!0:e}function un(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const s=ae;ae=void 0;try{t()}finally{ae=s}}}let is=0;class ol{constructor(t,s){this.sub=t,this.dep=s,this.version=s.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class bo{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(t){if(!ae||!Ye||ae===this.computed)return;let s=this.activeLink;if(s===void 0||s.sub!==ae)s=this.activeLink=new ol(ae,this),ae.deps?(s.prevDep=ae.depsTail,ae.depsTail.nextDep=s,ae.depsTail=s):ae.deps=ae.depsTail=s,cn(s);else if(s.version===-1&&(s.version=this.version,s.nextDep)){const o=s.nextDep;o.prevDep=s.prevDep,s.prevDep&&(s.prevDep.nextDep=o),s.prevDep=ae.depsTail,s.nextDep=void 0,ae.depsTail.nextDep=s,ae.depsTail=s,ae.deps===s&&(ae.deps=o)}return s}trigger(t){this.version++,is++,this.notify(t)}notify(t){vo();try{for(let s=this.subs;s;s=s.prevSub)s.sub.notify()&&s.sub.dep.notify()}finally{go()}}}function cn(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let o=t.deps;o;o=o.nextDep)cn(o)}const s=e.dep.subs;s!==e&&(e.prevSub=s,s&&(s.nextSub=e)),e.dep.subs=e}}const wo=new WeakMap,$t=Symbol(""),ko=Symbol(""),as=Symbol("");function Te(e,t,s){if(Ye&&ae){let o=wo.get(e);o||wo.set(e,o=new Map);let n=o.get(s);n||(o.set(s,n=new bo),n.map=o,n.key=s),n.track()}}function ut(e,t,s,o,n,r){const l=wo.get(e);if(!l){is++;return}const i=u=>{u&&u.trigger()};if(vo(),t==="clear")l.forEach(i);else{const u=z(e),m=u&&uo(s);if(u&&s==="length"){const d=Number(o);l.forEach((_,S)=>{(S==="length"||S===as||!et(S)&&S>=d)&&i(_)})}else switch((s!==void 0||l.has(void 0))&&i(l.get(s)),m&&i(l.get(as)),t){case"add":u?m&&i(l.get("length")):(i(l.get($t)),qt(e)&&i(l.get(ko)));break;case"delete":u||(i(l.get($t)),qt(e)&&i(l.get(ko)));break;case"set":qt(e)&&i(l.get($t));break}}go()}function jt(e){const t=J(e);return t===e?t:(Te(t,"iterate",as),ze(e)?t:t.map(we))}function Ms(e){return Te(e=J(e),"iterate",as),e}const nl={__proto__:null,[Symbol.iterator](){return xo(this,Symbol.iterator,we)},concat(...e){return jt(this).concat(...e.map(t=>z(t)?jt(t):t))},entries(){return xo(this,"entries",e=>(e[1]=we(e[1]),e))},every(e,t){return ct(this,"every",e,t,void 0,arguments)},filter(e,t){return ct(this,"filter",e,t,s=>s.map(we),arguments)},find(e,t){return ct(this,"find",e,t,we,arguments)},findIndex(e,t){return ct(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return ct(this,"findLast",e,t,we,arguments)},findLastIndex(e,t){return ct(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return ct(this,"forEach",e,t,void 0,arguments)},includes(...e){return Co(this,"includes",e)},indexOf(...e){return Co(this,"indexOf",e)},join(e){return jt(this).join(e)},lastIndexOf(...e){return Co(this,"lastIndexOf",e)},map(e,t){return ct(this,"map",e,t,void 0,arguments)},pop(){return us(this,"pop")},push(...e){return us(this,"push",e)},reduce(e,...t){return dn(this,"reduce",e,t)},reduceRight(e,...t){return dn(this,"reduceRight",e,t)},shift(){return us(this,"shift")},some(e,t){return ct(this,"some",e,t,void 0,arguments)},splice(...e){return us(this,"splice",e)},toReversed(){return jt(this).toReversed()},toSorted(e){return jt(this).toSorted(e)},toSpliced(...e){return jt(this).toSpliced(...e)},unshift(...e){return us(this,"unshift",e)},values(){return xo(this,"values",we)}};function xo(e,t,s){const o=Ms(e),n=o[t]();return o!==e&&!ze(e)&&(n._next=n.next,n.next=()=>{const r=n._next();return r.value&&(r.value=s(r.value)),r}),n}const rl=Array.prototype;function ct(e,t,s,o,n,r){const l=Ms(e),i=l!==e&&!ze(e),u=l[t];if(u!==rl[t]){const _=u.apply(e,r);return i?we(_):_}let m=s;l!==e&&(i?m=function(_,S){return s.call(this,we(_),S,e)}:s.length>2&&(m=function(_,S){return s.call(this,_,S,e)}));const d=u.call(l,m,o);return i&&n?n(d):d}function dn(e,t,s,o){const n=Ms(e);let r=s;return n!==e&&(ze(e)?s.length>3&&(r=function(l,i,u){return s.call(this,l,i,u,e)}):r=function(l,i,u){return s.call(this,l,we(i),u,e)}),n[t](r,...o)}function Co(e,t,s){const o=J(e);Te(o,"iterate",as);const n=o[t](...s);return(n===-1||n===!1)&&To(s[0])?(s[0]=J(s[0]),o[t](...s)):n}function us(e,t,s=[]){tt(),vo();const o=J(e)[t].apply(e,s);return go(),st(),o}const ll=lo("__proto__,__v_isRef,__isVue"),fn=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(et));function il(e){et(e)||(e=String(e));const t=J(this);return Te(t,"has",e),t.hasOwnProperty(e)}class pn{constructor(t=!1,s=!1){this._isReadonly=t,this._isShallow=s}get(t,s,o){if(s==="__v_skip")return t.__v_skip;const n=this._isReadonly,r=this._isShallow;if(s==="__v_isReactive")return!n;if(s==="__v_isReadonly")return n;if(s==="__v_isShallow")return r;if(s==="__v_raw")return o===(n?r?yn:_n:r?gn:vn).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(o)?t:void 0;const l=z(t);if(!n){let u;if(l&&(u=nl[s]))return u;if(s==="hasOwnProperty")return il}const i=Reflect.get(t,s,ke(t)?t:o);return(et(s)?fn.has(s):ll(s))||(n||Te(t,"get",s),r)?i:ke(i)?l&&uo(s)?i:i.value:ce(i)?n?bn(i):Pt(i):i}}class hn extends pn{constructor(t=!1){super(!1,t)}set(t,s,o,n){let r=t[s];if(!this._isShallow){const u=yt(r);if(!ze(o)&&!yt(o)&&(r=J(r),o=J(o)),!z(t)&&ke(r)&&!ke(o))return u?!1:(r.value=o,!0)}const l=z(t)&&uo(s)?Number(s)<t.length:se(t,s),i=Reflect.set(t,s,o,ke(t)?t:n);return t===J(n)&&(l?_t(o,r)&&ut(t,"set",s,o):ut(t,"add",s,o)),i}deleteProperty(t,s){const o=se(t,s);t[s];const n=Reflect.deleteProperty(t,s);return n&&o&&ut(t,"delete",s,void 0),n}has(t,s){const o=Reflect.has(t,s);return(!et(s)||!fn.has(s))&&Te(t,"has",s),o}ownKeys(t){return Te(t,"iterate",z(t)?"length":$t),Reflect.ownKeys(t)}}class mn extends pn{constructor(t=!1){super(!0,t)}set(t,s){return!0}deleteProperty(t,s){return!0}}const al=new hn,ul=new mn,cl=new hn(!0),dl=new mn(!0),So=e=>e,Ls=e=>Reflect.getPrototypeOf(e);function fl(e,t,s){return function(...o){const n=this.__v_raw,r=J(n),l=qt(r),i=e==="entries"||e===Symbol.iterator&&l,u=e==="keys"&&l,m=n[e](...o),d=s?So:t?Rs:we;return!t&&Te(r,"iterate",u?ko:$t),{next(){const{value:_,done:S}=m.next();return S?{value:_,done:S}:{value:i?[d(_[0]),d(_[1])]:d(_),done:S}},[Symbol.iterator](){return this}}}}function Ds(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function pl(e,t){const s={get(n){const r=this.__v_raw,l=J(r),i=J(n);e||(_t(n,i)&&Te(l,"get",n),Te(l,"get",i));const{has:u}=Ls(l),m=t?So:e?Rs:we;if(u.call(l,n))return m(r.get(n));if(u.call(l,i))return m(r.get(i));r!==l&&r.get(n)},get size(){const n=this.__v_raw;return!e&&Te(J(n),"iterate",$t),Reflect.get(n,"size",n)},has(n){const r=this.__v_raw,l=J(r),i=J(n);return e||(_t(n,i)&&Te(l,"has",n),Te(l,"has",i)),n===i?r.has(n):r.has(n)||r.has(i)},forEach(n,r){const l=this,i=l.__v_raw,u=J(i),m=t?So:e?Rs:we;return!e&&Te(u,"iterate",$t),i.forEach((d,_)=>n.call(r,m(d),m(_),l))}};return Ee(s,e?{add:Ds("add"),set:Ds("set"),delete:Ds("delete"),clear:Ds("clear")}:{add(n){!t&&!ze(n)&&!yt(n)&&(n=J(n));const r=J(this);return Ls(r).has.call(r,n)||(r.add(n),ut(r,"add",n,n)),this},set(n,r){!t&&!ze(r)&&!yt(r)&&(r=J(r));const l=J(this),{has:i,get:u}=Ls(l);let m=i.call(l,n);m||(n=J(n),m=i.call(l,n));const d=u.call(l,n);return l.set(n,r),m?_t(r,d)&&ut(l,"set",n,r):ut(l,"add",n,r),this},delete(n){const r=J(this),{has:l,get:i}=Ls(r);let u=l.call(r,n);u||(n=J(n),u=l.call(r,n)),i&&i.call(r,n);const m=r.delete(n);return u&&ut(r,"delete",n,void 0),m},clear(){const n=J(this),r=n.size!==0,l=n.clear();return r&&ut(n,"clear",void 0,void 0),l}}),["keys","values","entries",Symbol.iterator].forEach(n=>{s[n]=fl(n,e,t)}),s}function Os(e,t){const s=pl(e,t);return(o,n,r)=>n==="__v_isReactive"?!e:n==="__v_isReadonly"?e:n==="__v_raw"?o:Reflect.get(se(s,n)&&n in o?s:o,n,r)}const hl={get:Os(!1,!1)},ml={get:Os(!1,!0)},vl={get:Os(!0,!1)},gl={get:Os(!0,!0)},vn=new WeakMap,gn=new WeakMap,_n=new WeakMap,yn=new WeakMap;function _l(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function yl(e){return e.__v_skip||!Object.isExtensible(e)?0:_l(Hr(e))}function Pt(e){return yt(e)?e:Fs(e,!1,al,hl,vn)}function bl(e){return Fs(e,!1,cl,ml,gn)}function bn(e){return Fs(e,!0,ul,vl,_n)}function Rf(e){return Fs(e,!0,dl,gl,yn)}function Fs(e,t,s,o,n){if(!ce(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const r=yl(e);if(r===0)return e;const l=n.get(e);if(l)return l;const i=new Proxy(e,r===2?o:s);return n.set(e,i),i}function Ht(e){return yt(e)?Ht(e.__v_raw):!!(e&&e.__v_isReactive)}function yt(e){return!!(e&&e.__v_isReadonly)}function ze(e){return!!(e&&e.__v_isShallow)}function To(e){return e?!!e.__v_raw:!1}function J(e){const t=e&&e.__v_raw;return t?J(t):e}function wl(e){return!se(e,"__v_skip")&&Object.isExtensible(e)&&fo(e,"__v_skip",!0),e}const we=e=>ce(e)?Pt(e):e,Rs=e=>ce(e)?bn(e):e;function ke(e){return e?e.__v_isRef===!0:!1}function L(e){return kl(e,!1)}function kl(e,t){return ke(e)?e:new xl(e,t)}class xl{constructor(t,s){this.dep=new bo,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=s?t:J(t),this._value=s?t:we(t),this.__v_isShallow=s}get value(){return this.dep.track(),this._value}set value(t){const s=this._rawValue,o=this.__v_isShallow||ze(t)||yt(t);t=o?t:J(t),_t(t,s)&&(this._rawValue=t,this._value=o?t:we(t),this.dep.trigger())}}function Cl(e){return ke(e)?e.value:e}const Sl={get:(e,t,s)=>t==="__v_raw"?e:Cl(Reflect.get(e,t,s)),set:(e,t,s,o)=>{const n=e[t];return ke(n)&&!ke(s)?(n.value=s,!0):Reflect.set(e,t,s,o)}};function wn(e){return Ht(e)?e:new Proxy(e,Sl)}class Tl{constructor(t,s,o){this.fn=t,this.setter=s,this._value=void 0,this.dep=new bo(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=is-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!s,this.isSSR=o}notify(){if(this.flags|=16,!(this.flags&8)&&ae!==this)return on(this,!0),!0}get value(){const t=this.dep.track();return ln(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function El(e,t,s=!1){let o,n;return W(e)?o=e:(o=e.get,n=e.set),new Tl(o,n,s)}const Bs={},Ns=new WeakMap;let Mt;function Al(e,t=!1,s=Mt){if(s){let o=Ns.get(s);o||Ns.set(s,o=[]),o.push(e)}}function Il(e,t,s=le){const{immediate:o,deep:n,once:r,scheduler:l,augmentJob:i,call:u}=s,m=R=>n?R:ze(R)||n===!1||n===0?dt(R,1):dt(R);let d,_,S,w,g=!1,b=!1;if(ke(e)?(_=()=>e.value,g=ze(e)):Ht(e)?(_=()=>m(e),g=!0):z(e)?(b=!0,g=e.some(R=>Ht(R)||ze(R)),_=()=>e.map(R=>{if(ke(R))return R.value;if(Ht(R))return m(R);if(W(R))return u?u(R,2):R()})):W(e)?t?_=u?()=>u(e,2):e:_=()=>{if(S){tt();try{S()}finally{st()}}const R=Mt;Mt=d;try{return u?u(e,3,[w]):e(w)}finally{Mt=R}}:_=Xe,t&&n){const R=_,de=n===!0?1/0:n;_=()=>dt(R(),de)}const F=tl(),N=()=>{d.stop(),F&&F.active&&ao(F.effects,d)};if(r&&t){const R=t;t=(...de)=>{R(...de),N()}}let G=b?new Array(e.length).fill(Bs):Bs;const Q=R=>{if(!(!(d.flags&1)||!d.dirty&&!R))if(t){const de=d.run();if(n||g||(b?de.some((he,me)=>_t(he,G[me])):_t(de,G))){S&&S();const he=Mt;Mt=d;try{const me=[de,G===Bs?void 0:b&&G[0]===Bs?[]:G,w];G=de,u?u(t,3,me):t(...me)}finally{Mt=he}}}else d.run()};return i&&i(Q),d=new tn(_),d.scheduler=l?()=>l(Q,!1):Q,w=R=>Al(R,!1,d),S=d.onStop=()=>{const R=Ns.get(d);if(R){if(u)u(R,4);else for(const de of R)de();Ns.delete(d)}},t?o?Q(!0):G=d.run():l?l(Q.bind(null,!0),!0):d.run(),N.pause=d.pause.bind(d),N.resume=d.resume.bind(d),N.stop=N,N}function dt(e,t=1/0,s){if(t<=0||!ce(e)||e.__v_skip||(s=s||new Set,s.has(e)))return e;if(s.add(e),t--,ke(e))dt(e.value,t,s);else if(z(e))for(let o=0;o<e.length;o++)dt(e[o],t,s);else if(Is(e)||qt(e))e.forEach(o=>{dt(o,t,s)});else if(Go(e)){for(const o in e)dt(e[o],t,s);for(const o of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,o)&&dt(e[o],t,s)}return e}/** * @vue/runtime-core v3.5.18 * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT **/const cs=[];let Eo=!1;function Bf(e,...t){if(Eo)return;Eo=!0,tt();const s=cs.length?cs[cs.length-1].component:null,o=s&&s.appContext.config.warnHandler,n=Vl();if(o)Kt(o,s,11,[e+t.map(r=>{var l,i;return(i=(l=r.toString)==null?void 0:l.call(r))!=null?i:JSON.stringify(r)}).join(""),s&&s.proxy,n.map(({vnode:r})=>`at <${fr(s,r.type)}>`).join(` `),n]);else{const r=[`[Vue warn]: ${e}`,...t];n.length&&r.push(` `,...Ul(n)),console.warn(...r)}st(),Eo=!1}function Vl(){let e=cs[cs.length-1];if(!e)return[];const t=[];for(;e;){const s=t[0];s&&s.vnode===e?s.recurseCount++:t.push({vnode:e,recurseCount:0});const o=e.component&&e.component.parent;e=o&&o.vnode}return t}function Ul(e){const t=[];return e.forEach((s,o)=>{t.push(...o===0?[]:[` `],...$l(s))}),t}function $l({vnode:e,recurseCount:t}){const s=t>0?`... (${t} recursive calls)`:"",o=e.component?e.component.parent==null:!1,n=` at <${fr(e.component,e.type,o)}`,r=">"+s;return e.props?[n,...Pl(e.props),r]:[n+r]}function Pl(e){const t=[],s=Object.keys(e);return s.slice(0,3).forEach(o=>{t.push(...kn(o,e[o]))}),s.length>3&&t.push(" ..."),t}function kn(e,t,s){return ve(t)?(t=JSON.stringify(t),s?t:[`${e}=${t}`]):typeof t=="number"||typeof t=="boolean"||t==null?s?t:[`${e}=${t}`]:ke(t)?(t=kn(e,J(t.value),!0),s?t:[`${e}=Ref<`,t,">"]):W(t)?[`${e}=fn${t.name?`<${t.name}>`:""}`]:(t=J(t),s?t:[`${e}=`,t])}function Kt(e,t,s,o){try{return o?e(...o):e()}catch(n){qs(n,t,s)}}function ot(e,t,s,o){if(W(e)){const n=Kt(e,t,s,o);return n&&Ko(n)&&n.catch(r=>{qs(r,t,s)}),n}if(z(e)){const n=[];for(let r=0;r<e.length;r++)n.push(ot(e[r],t,s,o));return n}}function qs(e,t,s,o=!0){const n=t?t.vnode:null,{errorHandler:r,throwUnhandledErrorInProduction:l}=t&&t.appContext.config||le;if(t){let i=t.parent;const u=t.proxy,m=`https://vuejs.org/error-reference/#runtime-${s}`;for(;i;){const d=i.ec;if(d){for(let _=0;_<d.length;_++)if(d[_](e,u,m)===!1)return}i=i.parent}if(r){tt(),Kt(r,null,10,[e,u,m]),st();return}}Ml(e,s,n,o,l)}function Ml(e,t,s,o=!0,n=!1){if(n)throw e;console.error(e)}const Ae=[];let nt=-1;const Wt=[];let bt=null,Gt=0;const xn=Promise.resolve();let zs=null;function Ll(e){const t=zs||xn;return e?t.then(this?e.bind(this):e):t}function Dl(e){let t=nt+1,s=Ae.length;for(;t<s;){const o=t+s>>>1,n=Ae[o],r=ds(n);r<e||r===e&&n.flags&2?t=o+1:s=o}return t}function Ao(e){if(!(e.flags&1)){const t=ds(e),s=Ae[Ae.length-1];!s||!(e.flags&2)&&t>=ds(s)?Ae.push(e):Ae.splice(Dl(t),0,e),e.flags|=1,Cn()}}function Cn(){zs||(zs=xn.then(En))}function Ol(e){z(e)?Wt.push(...e):bt&&e.id===-1?bt.splice(Gt+1,0,e):e.flags&1||(Wt.push(e),e.flags|=1),Cn()}function Sn(e,t,s=nt+1){for(;s<Ae.length;s++){const o=Ae[s];if(o&&o.flags&2){if(e&&o.id!==e.uid)continue;Ae.splice(s,1),s--,o.flags&4&&(o.flags&=-2),o(),o.flags&4||(o.flags&=-2)}}}function Tn(e){if(Wt.length){const t=[...new Set(Wt)].sort((s,o)=>ds(s)-ds(o));if(Wt.length=0,bt){bt.push(...t);return}for(bt=t,Gt=0;Gt<bt.length;Gt++){const s=bt[Gt];s.flags&4&&(s.flags&=-2),s.flags&8||s(),s.flags&=-2}bt=null,Gt=0}}const ds=e=>e.id==null?e.flags&2?-1:1/0:e.id;function En(e){try{for(nt=0;nt<Ae.length;nt++){const t=Ae[nt];t&&!(t.flags&8)&&(t.flags&4&&(t.flags&=-2),Kt(t,t.i,t.i?15:14),t.flags&4||(t.flags&=-2))}}finally{for(;nt<Ae.length;nt++){const t=Ae[nt];t&&(t.flags&=-2)}nt=-1,Ae.length=0,Tn(),zs=null,(Ae.length||Wt.length)&&En()}}let je=null,An=null;function js(e){const t=je;return je=e,An=e&&e.type.__scopeId||null,t}function Fl(e,t=je,s){if(!t||e._n)return e;const o=(...n)=>{o._d&&or(-1);const r=js(t);let l;try{l=e(...n)}finally{js(r),o._d&&or(1)}return l};return o._n=!0,o._c=!0,o._d=!0,o}function oe(e,t){if(je===null)return e;const s=Xs(je),o=e.dirs||(e.dirs=[]);for(let n=0;n<t.length;n++){let[r,l,i,u=le]=t[n];r&&(W(r)&&(r={mounted:r,updated:r}),r.deep&&dt(l),o.push({dir:r,instance:s,value:l,oldValue:void 0,arg:i,modifiers:u}))}return e}function Lt(e,t,s,o){const n=e.dirs,r=t&&t.dirs;for(let l=0;l<n.length;l++){const i=n[l];r&&(i.oldValue=r[l].value);let u=i.dir[o];u&&(tt(),ot(u,s,8,[e.el,i,e,t]),st())}}const Rl=Symbol("_vte"),Bl=e=>e.__isTeleport;function Io(e,t){e.shapeFlag&6&&e.component?(e.transition=t,Io(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function In(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}function fs(e,t,s,o,n=!1){if(z(e)){e.forEach((g,b)=>fs(g,t&&(z(t)?t[b]:t),s,o,n));return}if(ps(o)&&!n){o.shapeFlag&512&&o.type.__asyncResolved&&o.component.subTree.component&&fs(e,t,s,o.component.subTree);return}const r=o.shapeFlag&4?Xs(o.component):o.el,l=n?null:r,{i,r:u}=e,m=t&&t.r,d=i.refs===le?i.refs={}:i.refs,_=i.setupState,S=J(_),w=_===le?()=>!1:g=>se(S,g);if(m!=null&&m!==u&&(ve(m)?(d[m]=null,w(m)&&(_[m]=null)):ke(m)&&(m.value=null)),W(u))Kt(u,i,12,[l,d]);else{const g=ve(u),b=ke(u);if(g||b){const F=()=>{if(e.f){const N=g?w(u)?_[u]:d[u]:u.value;n?z(N)&&ao(N,r):z(N)?N.includes(r)||N.push(r):g?(d[u]=[r],w(u)&&(_[u]=d[u])):(u.value=[r],e.k&&(d[e.k]=u.value))}else g?(d[u]=l,w(u)&&(_[u]=l)):b&&(u.value=l,e.k&&(d[e.k]=l))};l?(F.id=-1,Be(F,s)):F()}}}$s().requestIdleCallback,$s().cancelIdleCallback;const ps=e=>!!e.type.__asyncLoader,Vn=e=>e.type.__isKeepAlive;function Nl(e,t){Un(e,"a",t)}function ql(e,t){Un(e,"da",t)}function Un(e,t,s=Ve){const o=e.__wdc||(e.__wdc=()=>{let n=s;for(;n;){if(n.isDeactivated)return;n=n.parent}return e()});if(Hs(t,o,s),s){let n=s.parent;for(;n&&n.parent;)Vn(n.parent.vnode)&&zl(o,t,s,n),n=n.parent}}function zl(e,t,s,o){const n=Hs(t,e,o,!0);hs(()=>{ao(o[t],n)},s)}function Hs(e,t,s=Ve,o=!1){if(s){const n=s[e]||(s[e]=[]),r=t.__weh||(t.__weh=(...l)=>{tt();const i=ws(s),u=ot(t,s,e,l);return i(),st(),u});return o?n.unshift(r):n.push(r),r}}const ft=e=>(t,s=Ve)=>{(!ks||e==="sp")&&Hs(e,(...o)=>t(...o),s)},jl=ft("bm"),Qt=ft("m"),Hl=ft("bu"),Kl=ft("u"),Wl=ft("bum"),hs=ft("um"),Gl=ft("sp"),Ql=ft("rtg"),Zl=ft("rtc");function Yl(e,t=Ve){Hs("ec",e,t)}const Jl=Symbol.for("v-ndc");function Vo(e,t,s,o){let n;const r=s,l=z(e);if(l||ve(e)){const i=l&&Ht(e);let u=!1,m=!1;i&&(u=!ze(e),m=yt(e),e=Ms(e)),n=new Array(e.length);for(let d=0,_=e.length;d<_;d++)n[d]=t(u?m?Rs(we(e[d])):we(e[d]):e[d],d,void 0,r)}else if(typeof e=="number"){n=new Array(e);for(let i=0;i<e;i++)n[i]=t(i+1,i,void 0,r)}else if(ce(e))if(e[Symbol.iterator])n=Array.from(e,(i,u)=>t(i,u,void 0,r));else{const i=Object.keys(e);n=new Array(i.length);for(let u=0,m=i.length;u<m;u++){const d=i[u];n[u]=t(e[d],d,u,r)}}else n=[];return n}const Uo=e=>e?ur(e)?Xs(e):Uo(e.parent):null,ms=Ee(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Uo(e.parent),$root:e=>Uo(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>Ln(e),$forceUpdate:e=>e.f||(e.f=()=>{Ao(e.update)}),$nextTick:e=>e.n||(e.n=Ll.bind(e.proxy)),$watch:e=>bi.bind(e)}),$o=(e,t)=>e!==le&&!e.__isScriptSetup&&se(e,t),Xl={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:s,setupState:o,data:n,props:r,accessCache:l,type:i,appContext:u}=e;let m;if(t[0]!=="$"){const w=l[t];if(w!==void 0)switch(w){case 1:return o[t];case 2:return n[t];case 4:return s[t];case 3:return r[t]}else{if($o(o,t))return l[t]=1,o[t];if(n!==le&&se(n,t))return l[t]=2,n[t];if((m=e.propsOptions[0])&&se(m,t))return l[t]=3,r[t];if(s!==le&&se(s,t))return l[t]=4,s[t];Po&&(l[t]=0)}}const d=ms[t];let _,S;if(d)return t==="$attrs"&&Te(e.attrs,"get",""),d(e);if((_=i.__cssModules)&&(_=_[t]))return _;if(s!==le&&se(s,t))return l[t]=4,s[t];if(S=u.config.globalProperties,se(S,t))return S[t]},set({_:e},t,s){const{data:o,setupState:n,ctx:r}=e;return $o(n,t)?(n[t]=s,!0):o!==le&&se(o,t)?(o[t]=s,!0):se(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(r[t]=s,!0)},has({_:{data:e,setupState:t,accessCache:s,ctx:o,appContext:n,propsOptions:r}},l){let i;return!!s[l]||e!==le&&se(e,l)||$o(t,l)||(i=r[0])&&se(i,l)||se(o,l)||se(ms,l)||se(n.config.globalProperties,l)},defineProperty(e,t,s){return s.get!=null?e._.accessCache[t]=0:se(s,"value")&&this.set(e,t,s.value,null),Reflect.defineProperty(e,t,s)}};function $n(e){return z(e)?e.reduce((t,s)=>(t[s]=null,t),{}):e}let Po=!0;function ei(e){const t=Ln(e),s=e.proxy,o=e.ctx;Po=!1,t.beforeCreate&&Pn(t.beforeCreate,e,"bc");const{data:n,computed:r,methods:l,watch:i,provide:u,inject:m,created:d,beforeMount:_,mounted:S,beforeUpdate:w,updated:g,activated:b,deactivated:F,beforeDestroy:N,beforeUnmount:G,destroyed:Q,unmounted:R,render:de,renderTracked:he,renderTriggered:me,errorCaptured:Pe,serverPrefetch:Et,expose:Re,inheritAttrs:Me,components:We,directives:ht,filters:q}=t;if(m&&ti(m,o,null),l)for(const ee in l){const te=l[ee];W(te)&&(o[ee]=te.bind(s))}if(n){const ee=n.call(s,s);ce(ee)&&(e.data=Pt(ee))}if(Po=!0,r)for(const ee in r){const te=r[ee],it=W(te)?te.bind(s,s):W(te.get)?te.get.bind(s,s):Xe,At=!W(te)&&W(te.set)?te.set.bind(s):Xe,Ge=Ue({get:it,set:At});Object.defineProperty(o,ee,{enumerable:!0,configurable:!0,get:()=>Ge.value,set:Le=>Ge.value=Le})}if(i)for(const ee in i)Mn(i[ee],o,s,ee);if(u){const ee=W(u)?u.call(s):u;Reflect.ownKeys(ee).forEach(te=>{ii(te,ee[te])})}d&&Pn(d,e,"c");function M(ee,te){z(te)?te.forEach(it=>ee(it.bind(s))):te&&ee(te.bind(s))}if(M(jl,_),M(Qt,S),M(Hl,w),M(Kl,g),M(Nl,b),M(ql,F),M(Yl,Pe),M(Zl,he),M(Ql,me),M(Wl,G),M(hs,R),M(Gl,Et),z(Re))if(Re.length){const ee=e.exposed||(e.exposed={});Re.forEach(te=>{Object.defineProperty(ee,te,{get:()=>s[te],set:it=>s[te]=it,enumerable:!0})})}else e.exposed||(e.exposed={});de&&e.render===Xe&&(e.render=de),Me!=null&&(e.inheritAttrs=Me),We&&(e.components=We),ht&&(e.directives=ht),Et&&In(e)}function ti(e,t,s=Xe){z(e)&&(e=Mo(e));for(const o in e){const n=e[o];let r;ce(n)?"default"in n?r=Ws(n.from||o,n.default,!0):r=Ws(n.from||o):r=Ws(n),ke(r)?Object.defineProperty(t,o,{enumerable:!0,configurable:!0,get:()=>r.value,set:l=>r.value=l}):t[o]=r}}function Pn(e,t,s){ot(z(e)?e.map(o=>o.bind(t.proxy)):e.bind(t.proxy),t,s)}function Mn(e,t,s,o){let n=o.includes(".")?Jn(s,o):()=>s[o];if(ve(e)){const r=t[e];W(r)&&He(n,r)}else if(W(e))He(n,e.bind(s));else if(ce(e))if(z(e))e.forEach(r=>Mn(r,t,s,o));else{const r=W(e.handler)?e.handler.bind(s):t[e.handler];W(r)&&He(n,r,e)}}function Ln(e){const t=e.type,{mixins:s,extends:o}=t,{mixins:n,optionsCache:r,config:{optionMergeStrategies:l}}=e.appContext,i=r.get(t);let u;return i?u=i:!n.length&&!s&&!o?u=t:(u={},n.length&&n.forEach(m=>Ks(u,m,l,!0)),Ks(u,t,l)),ce(t)&&r.set(t,u),u}function Ks(e,t,s,o=!1){const{mixins:n,extends:r}=t;r&&Ks(e,r,s,!0),n&&n.forEach(l=>Ks(e,l,s,!0));for(const l in t)if(!(o&&l==="expose")){const i=si[l]||s&&s[l];e[l]=i?i(e[l],t[l]):t[l]}return e}const si={data:Dn,props:On,emits:On,methods:vs,computed:vs,beforeCreate:Ie,created:Ie,beforeMount:Ie,mounted:Ie,beforeUpdate:Ie,updated:Ie,beforeDestroy:Ie,beforeUnmount:Ie,destroyed:Ie,unmounted:Ie,activated:Ie,deactivated:Ie,errorCaptured:Ie,serverPrefetch:Ie,components:vs,directives:vs,watch:ni,provide:Dn,inject:oi};function Dn(e,t){return t?e?function(){return Ee(W(e)?e.call(this,this):e,W(t)?t.call(this,this):t)}:t:e}function oi(e,t){return vs(Mo(e),Mo(t))}function Mo(e){if(z(e)){const t={};for(let s=0;s<e.length;s++)t[e[s]]=e[s];return t}return e}function Ie(e,t){return e?[...new Set([].concat(e,t))]:t}function vs(e,t){return e?Ee(Object.create(null),e,t):t}function On(e,t){return e?z(e)&&z(t)?[...new Set([...e,...t])]:Ee(Object.create(null),$n(e),$n(t??{})):t}function ni(e,t){if(!e)return t;if(!t)return e;const s=Ee(Object.create(null),e);for(const o in t)s[o]=Ie(e[o],t[o]);return s}function Fn(){return{app:null,config:{isNativeTag:zr,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let ri=0;function li(e,t){return function(o,n=null){W(o)||(o=Ee({},o)),n!=null&&!ce(n)&&(n=null);const r=Fn(),l=new WeakSet,i=[];let u=!1;const m=r.app={_uid:ri++,_component:o,_props:n,_container:null,_context:r,_instance:null,version:ji,get config(){return r.config},set config(d){},use(d,..._){return l.has(d)||(d&&W(d.install)?(l.add(d),d.install(m,..._)):W(d)&&(l.add(d),d(m,..._))),m},mixin(d){return r.mixins.includes(d)||r.mixins.push(d),m},component(d,_){return _?(r.components[d]=_,m):r.components[d]},directive(d,_){return _?(r.directives[d]=_,m):r.directives[d]},mount(d,_,S){if(!u){const w=m._ceVNode||X(o,n);return w.appContext=r,S===!0?S="svg":S===!1&&(S=void 0),e(w,d,S),u=!0,m._container=d,d.__vue_app__=m,Xs(w.component)}},onUnmount(d){i.push(d)},unmount(){u&&(ot(i,m._instance,16),e(null,m._container),delete m._container.__vue_app__)},provide(d,_){return r.provides[d]=_,m},runWithContext(d){const _=Zt;Zt=m;try{return d()}finally{Zt=_}}};return m}}let Zt=null;function ii(e,t){if(Ve){let s=Ve.provides;const o=Ve.parent&&Ve.parent.provides;o===s&&(s=Ve.provides=Object.create(o)),s[e]=t}}function Ws(e,t,s=!1){const o=Li();if(o||Zt){let n=Zt?Zt._context.provides:o?o.parent==null||o.ce?o.vnode.appContext&&o.vnode.appContext.provides:o.parent.provides:void 0;if(n&&e in n)return n[e];if(arguments.length>1)return s&&W(t)?t.call(o&&o.proxy):t}}const Rn={},Bn=()=>Object.create(Rn),Nn=e=>Object.getPrototypeOf(e)===Rn;function ai(e,t,s,o=!1){const n={},r=Bn();e.propsDefaults=Object.create(null),qn(e,t,n,r);for(const l in e.propsOptions[0])l in n||(n[l]=void 0);s?e.props=o?n:bl(n):e.type.props?e.props=n:e.props=r,e.attrs=r}function ui(e,t,s,o){const{props:n,attrs:r,vnode:{patchFlag:l}}=e,i=J(n),[u]=e.propsOptions;let m=!1;if((o||l>0)&&!(l&16)){if(l&8){const d=e.vnode.dynamicProps;for(let _=0;_<d.length;_++){let S=d[_];if(Gs(e.emitsOptions,S))continue;const w=t[S];if(u)if(se(r,S))w!==r[S]&&(r[S]=w,m=!0);else{const g=gt(S);n[g]=Lo(u,i,g,w,e,!1)}else w!==r[S]&&(r[S]=w,m=!0)}}}else{qn(e,t,n,r)&&(m=!0);let d;for(const _ in i)(!t||!se(t,_)&&((d=Ut(_))===_||!se(t,d)))&&(u?s&&(s[_]!==void 0||s[d]!==void 0)&&(n[_]=Lo(u,i,_,void 0,e,!0)):delete n[_]);if(r!==i)for(const _ in r)(!t||!se(t,_))&&(delete r[_],m=!0)}m&&ut(e.attrs,"set","")}function qn(e,t,s,o){const[n,r]=e.propsOptions;let l=!1,i;if(t)for(let u in t){if(ns(u))continue;const m=t[u];let d;n&&se(n,d=gt(u))?!r||!r.includes(d)?s[d]=m:(i||(i={}))[d]=m:Gs(e.emitsOptions,u)||(!(u in o)||m!==o[u])&&(o[u]=m,l=!0)}if(r){const u=J(s),m=i||le;for(let d=0;d<r.length;d++){const _=r[d];s[_]=Lo(n,u,_,m[_],e,!se(m,_))}}return l}function Lo(e,t,s,o,n,r){const l=e[s];if(l!=null){const i=se(l,"default");if(i&&o===void 0){const u=l.default;if(l.type!==Function&&!l.skipFactory&&W(u)){const{propsDefaults:m}=n;if(s in m)o=m[s];else{const d=ws(n);o=m[s]=u.call(null,t),d()}}else o=u;n.ce&&n.ce._setProp(s,o)}l[0]&&(r&&!i?o=!1:l[1]&&(o===""||o===Ut(s))&&(o=!0))}return o}const ci=new WeakMap;function zn(e,t,s=!1){const o=s?ci:t.propsCache,n=o.get(e);if(n)return n;const r=e.props,l={},i=[];let u=!1;if(!W(e)){const d=_=>{u=!0;const[S,w]=zn(_,t,!0);Ee(l,S),w&&i.push(...w)};!s&&t.mixins.length&&t.mixins.forEach(d),e.extends&&d(e.extends),e.mixins&&e.mixins.forEach(d)}if(!r&&!u)return ce(e)&&o.set(e,Nt),Nt;if(z(r))for(let d=0;d<r.length;d++){const _=gt(r[d]);jn(_)&&(l[_]=le)}else if(r)for(const d in r){const _=gt(d);if(jn(_)){const S=r[d],w=l[_]=z(S)||W(S)?{type:S}:Ee({},S),g=w.type;let b=!1,F=!0;if(z(g))for(let N=0;N<g.length;++N){const G=g[N],Q=W(G)&&G.name;if(Q==="Boolean"){b=!0;break}else Q==="String"&&(F=!1)}else b=W(g)&&g.name==="Boolean";w[0]=b,w[1]=F,(b||se(w,"default"))&&i.push(_)}}const m=[l,i];return ce(e)&&o.set(e,m),m}function jn(e){return e[0]!=="$"&&!ns(e)}const Do=e=>e==="_"||e==="__"||e==="_ctx"||e==="$stable",Oo=e=>z(e)?e.map(rt):[rt(e)],di=(e,t,s)=>{if(t._n)return t;const o=Fl((...n)=>Oo(t(...n)),s);return o._c=!1,o},Hn=(e,t,s)=>{const o=e._ctx;for(const n in e){if(Do(n))continue;const r=e[n];if(W(r))t[n]=di(n,r,o);else if(r!=null){const l=Oo(r);t[n]=()=>l}}},Kn=(e,t)=>{const s=Oo(t);e.slots.default=()=>s},Wn=(e,t,s)=>{for(const o in t)(s||!Do(o))&&(e[o]=t[o])},fi=(e,t,s)=>{const o=e.slots=Bn();if(e.vnode.shapeFlag&32){const n=t.__;n&&fo(o,"__",n,!0);const r=t._;r?(Wn(o,t,s),s&&fo(o,"_",r,!0)):Hn(t,o)}else t&&Kn(e,t)},pi=(e,t,s)=>{const{vnode:o,slots:n}=e;let r=!0,l=le;if(o.shapeFlag&32){const i=t._;i?s&&i===1?r=!1:Wn(n,t,s):(r=!t.$stable,Hn(t,n)),l=t}else t&&(Kn(e,t),l={default:1});if(r)for(const i in n)!Do(i)&&l[i]==null&&delete n[i]},Be=Ei;function hi(e){return mi(e)}function mi(e,t){const s=$s();s.__VUE__=!0;const{insert:o,remove:n,patchProp:r,createElement:l,createText:i,createComment:u,setText:m,setElementText:d,parentNode:_,nextSibling:S,setScopeId:w=Xe,insertStaticContent:g}=e,b=(c,p,y,T=null,x=null,C=null,U=void 0,I=null,A=!!p.dynamicChildren)=>{if(c===p)return;c&&!bs(c,p)&&(T=ts(c),Le(c,x,C,!0),c=null),p.patchFlag===-2&&(A=!1,p.dynamicChildren=null);const{type:E,ref:O,shapeFlag:$}=p;switch(E){case Qs:F(c,p,y,T);break;case wt:N(c,p,y,T);break;case Zs:c==null&&G(p,y,T,U);break;case Fe:We(c,p,y,T,x,C,U,I,A);break;default:$&1?de(c,p,y,T,x,C,U,I,A):$&6?ht(c,p,y,T,x,C,U,I,A):($&64||$&128)&&E.process(c,p,y,T,x,C,U,I,A,Vt)}O!=null&&x?fs(O,c&&c.ref,C,p||c,!p):O==null&&c&&c.ref!=null&&fs(c.ref,null,C,c,!0)},F=(c,p,y,T)=>{if(c==null)o(p.el=i(p.children),y,T);else{const x=p.el=c.el;p.children!==c.children&&m(x,p.children)}},N=(c,p,y,T)=>{c==null?o(p.el=u(p.children||""),y,T):p.el=c.el},G=(c,p,y,T)=>{[c.el,c.anchor]=g(c.children,p,y,T,c.el,c.anchor)},Q=({el:c,anchor:p},y,T)=>{let x;for(;c&&c!==p;)x=S(c),o(c,y,T),c=x;o(p,y,T)},R=({el:c,anchor:p})=>{let y;for(;c&&c!==p;)y=S(c),n(c),c=y;n(p)},de=(c,p,y,T,x,C,U,I,A)=>{p.type==="svg"?U="svg":p.type==="math"&&(U="mathml"),c==null?he(p,y,T,x,C,U,I,A):Et(c,p,x,C,U,I,A)},he=(c,p,y,T,x,C,U,I)=>{let A,E;const{props:O,shapeFlag:$,transition:D,dirs:H}=c;if(A=c.el=l(c.type,C,O&&O.is,O),$&8?d(A,c.children):$&16&&Pe(c.children,A,null,T,x,Fo(c,C),U,I),H&&Lt(c,null,T,"created"),me(A,c,c.scopeId,U,T),O){for(const re in O)re!=="value"&&!ns(re)&&r(A,re,null,O[re],C,T);"value"in O&&r(A,"value",null,O.value,C),(E=O.onVnodeBeforeMount)&<(E,T,c)}H&&Lt(c,null,T,"beforeMount");const Z=vi(x,D);Z&&D.beforeEnter(A),o(A,p,y),((E=O&&O.onVnodeMounted)||Z||H)&&Be(()=>{E&<(E,T,c),Z&&D.enter(A),H&&Lt(c,null,T,"mounted")},x)},me=(c,p,y,T,x)=>{if(y&&w(c,y),T)for(let C=0;C<T.length;C++)w(c,T[C]);if(x){let C=x.subTree;if(p===C||sr(C.type)&&(C.ssContent===p||C.ssFallback===p)){const U=x.vnode;me(c,U,U.scopeId,U.slotScopeIds,x.parent)}}},Pe=(c,p,y,T,x,C,U,I,A=0)=>{for(let E=A;E<c.length;E++){const O=c[E]=I?kt(c[E]):rt(c[E]);b(null,O,p,y,T,x,C,U,I)}},Et=(c,p,y,T,x,C,U)=>{const I=p.el=c.el;let{patchFlag:A,dynamicChildren:E,dirs:O}=p;A|=c.patchFlag&16;const $=c.props||le,D=p.props||le;let H;if(y&&Dt(y,!1),(H=D.onVnodeBeforeUpdate)&<(H,y,p,c),O&&Lt(p,c,y,"beforeUpdate"),y&&Dt(y,!0),($.innerHTML&&D.innerHTML==null||$.textContent&&D.textContent==null)&&d(I,""),E?Re(c.dynamicChildren,E,I,y,T,Fo(p,x),C):U||te(c,p,I,null,y,T,Fo(p,x),C,!1),A>0){if(A&16)Me(I,$,D,y,x);else if(A&2&&$.class!==D.class&&r(I,"class",null,D.class,x),A&4&&r(I,"style",$.style,D.style,x),A&8){const Z=p.dynamicProps;for(let re=0;re<Z.length;re++){const Y=Z[re],ge=$[Y],Se=D[Y];(Se!==ge||Y==="value")&&r(I,Y,ge,Se,x,y)}}A&1&&c.children!==p.children&&d(I,p.children)}else!U&&E==null&&Me(I,$,D,y,x);((H=D.onVnodeUpdated)||O)&&Be(()=>{H&<(H,y,p,c),O&&Lt(p,c,y,"updated")},T)},Re=(c,p,y,T,x,C,U)=>{for(let I=0;I<p.length;I++){const A=c[I],E=p[I],O=A.el&&(A.type===Fe||!bs(A,E)||A.shapeFlag&198)?_(A.el):y;b(A,E,O,null,T,x,C,U,!0)}},Me=(c,p,y,T,x)=>{if(p!==y){if(p!==le)for(const C in p)!ns(C)&&!(C in y)&&r(c,C,p[C],null,x,T);for(const C in y){if(ns(C))continue;const U=y[C],I=p[C];U!==I&&C!=="value"&&r(c,C,I,U,x,T)}"value"in y&&r(c,"value",p.value,y.value,x)}},We=(c,p,y,T,x,C,U,I,A)=>{const E=p.el=c?c.el:i(""),O=p.anchor=c?c.anchor:i("");let{patchFlag:$,dynamicChildren:D,slotScopeIds:H}=p;H&&(I=I?I.concat(H):H),c==null?(o(E,y,T),o(O,y,T),Pe(p.children||[],y,O,x,C,U,I,A)):$>0&&$&64&&D&&c.dynamicChildren?(Re(c.dynamicChildren,D,y,x,C,U,I),(p.key!=null||x&&p===x.subTree)&&Gn(c,p,!0)):te(c,p,y,O,x,C,U,I,A)},ht=(c,p,y,T,x,C,U,I,A)=>{p.slotScopeIds=I,c==null?p.shapeFlag&512?x.ctx.activate(p,y,T,U,A):q(p,y,T,x,C,U,A):k(c,p,A)},q=(c,p,y,T,x,C,U)=>{const I=c.component=Mi(c,T,x);if(Vn(c)&&(I.ctx.renderer=Vt),Di(I,!1,U),I.asyncDep){if(x&&x.registerDep(I,M,U),!c.el){const A=I.subTree=X(wt);N(null,A,p,y),c.placeholder=A.el}}else M(I,c,p,y,x,C,U)},k=(c,p,y)=>{const T=p.component=c.component;if(Si(c,p,y))if(T.asyncDep&&!T.asyncResolved){ee(T,p,y);return}else T.next=p,T.update();else p.el=c.el,T.vnode=p},M=(c,p,y,T,x,C,U)=>{const I=()=>{if(c.isMounted){let{next:$,bu:D,u:H,parent:Z,vnode:re}=c;{const Ze=Qn(c);if(Ze){$&&($.el=re.el,ee(c,$,U)),Ze.asyncDep.then(()=>{c.isUnmounted||I()});return}}let Y=$,ge;Dt(c,!1),$?($.el=re.el,ee(c,$,U)):$=re,D&&Us(D),(ge=$.props&&$.props.onVnodeBeforeUpdate)&<(ge,Z,$,re),Dt(c,!0);const Se=er(c),Qe=c.subTree;c.subTree=Se,b(Qe,Se,_(Qe.el),ts(Qe),c,x,C),$.el=Se.el,Y===null&&Ti(c,Se.el),H&&Be(H,x),(ge=$.props&&$.props.onVnodeUpdated)&&Be(()=>lt(ge,Z,$,re),x)}else{let $;const{el:D,props:H}=p,{bm:Z,m:re,parent:Y,root:ge,type:Se}=c,Qe=ps(p);Dt(c,!1),Z&&Us(Z),!Qe&&($=H&&H.onVnodeBeforeMount)&<($,Y,p),Dt(c,!0);{ge.ce&&ge.ce._def.shadowRoot!==!1&&ge.ce._injectChildStyle(Se);const Ze=c.subTree=er(c);b(null,Ze,y,T,c,x,C),p.el=Ze.el}if(re&&Be(re,x),!Qe&&($=H&&H.onVnodeMounted)){const Ze=p;Be(()=>lt($,Y,Ze),x)}(p.shapeFlag&256||Y&&ps(Y.vnode)&&Y.vnode.shapeFlag&256)&&c.a&&Be(c.a,x),c.isMounted=!0,p=y=T=null}};c.scope.on();const A=c.effect=new tn(I);c.scope.off();const E=c.update=A.run.bind(A),O=c.job=A.runIfDirty.bind(A);O.i=c,O.id=c.uid,A.scheduler=()=>Ao(O),Dt(c,!0),E()},ee=(c,p,y)=>{p.component=c;const T=c.vnode.props;c.vnode=p,c.next=null,ui(c,p.props,T,y),pi(c,p.children,y),tt(),Sn(c),st()},te=(c,p,y,T,x,C,U,I,A=!1)=>{const E=c&&c.children,O=c?c.shapeFlag:0,$=p.children,{patchFlag:D,shapeFlag:H}=p;if(D>0){if(D&128){At(E,$,y,T,x,C,U,I,A);return}else if(D&256){it(E,$,y,T,x,C,U,I,A);return}}H&8?(O&16&&at(E,x,C),$!==E&&d(y,$)):O&16?H&16?At(E,$,y,T,x,C,U,I,A):at(E,x,C,!0):(O&8&&d(y,""),H&16&&Pe($,y,T,x,C,U,I,A))},it=(c,p,y,T,x,C,U,I,A)=>{c=c||Nt,p=p||Nt;const E=c.length,O=p.length,$=Math.min(E,O);let D;for(D=0;D<$;D++){const H=p[D]=A?kt(p[D]):rt(p[D]);b(c[D],H,y,null,x,C,U,I,A)}E>O?at(c,x,C,!0,!1,$):Pe(p,y,T,x,C,U,I,A,$)},At=(c,p,y,T,x,C,U,I,A)=>{let E=0;const O=p.length;let $=c.length-1,D=O-1;for(;E<=$&&E<=D;){const H=c[E],Z=p[E]=A?kt(p[E]):rt(p[E]);if(bs(H,Z))b(H,Z,y,null,x,C,U,I,A);else break;E++}for(;E<=$&&E<=D;){const H=c[$],Z=p[D]=A?kt(p[D]):rt(p[D]);if(bs(H,Z))b(H,Z,y,null,x,C,U,I,A);else break;$--,D--}if(E>$){if(E<=D){const H=D+1,Z=H<O?p[H].el:T;for(;E<=D;)b(null,p[E]=A?kt(p[E]):rt(p[E]),y,Z,x,C,U,I,A),E++}}else if(E>D)for(;E<=$;)Le(c[E],x,C,!0),E++;else{const H=E,Z=E,re=new Map;for(E=Z;E<=D;E++){const h=p[E]=A?kt(p[E]):rt(p[E]);h.key!=null&&re.set(h.key,E)}let Y,ge=0;const Se=D-Z+1;let Qe=!1,Ze=0;const Bt=new Array(Se);for(E=0;E<Se;E++)Bt[E]=0;for(E=H;E<=$;E++){const h=c[E];if(ge>=Se){Le(h,x,C,!0);continue}let f;if(h.key!=null)f=re.get(h.key);else for(Y=Z;Y<=D;Y++)if(Bt[Y-Z]===0&&bs(h,p[Y])){f=Y;break}f===void 0?Le(h,x,C,!0):(Bt[f-Z]=E+1,f>=Ze?Ze=f:Qe=!0,b(h,p[f],y,null,x,C,U,I,A),ge++)}const ss=Qe?gi(Bt):Nt;for(Y=ss.length-1,E=Se-1;E>=0;E--){const h=Z+E,f=p[h],v=p[h+1],K=h+1<O?v.el||v.placeholder:T;Bt[E]===0?b(null,f,y,K,x,C,U,I,A):Qe&&(Y<0||E!==ss[Y]?Ge(f,y,K,2):Y--)}}},Ge=(c,p,y,T,x=null)=>{const{el:C,type:U,transition:I,children:A,shapeFlag:E}=c;if(E&6){Ge(c.component.subTree,p,y,T);return}if(E&128){c.suspense.move(p,y,T);return}if(E&64){U.move(c,p,y,Vt);return}if(U===Fe){o(C,p,y);for(let $=0;$<A.length;$++)Ge(A[$],p,y,T);o(c.anchor,p,y);return}if(U===Zs){Q(c,p,y);return}if(T!==2&&E&1&&I)if(T===0)I.beforeEnter(C),o(C,p,y),Be(()=>I.enter(C),x);else{const{leave:$,delayLeave:D,afterLeave:H}=I,Z=()=>{c.ctx.isUnmounted?n(C):o(C,p,y)},re=()=>{$(C,()=>{Z(),H&&H()})};D?D(C,Z,re):re()}else o(C,p,y)},Le=(c,p,y,T=!1,x=!1)=>{const{type:C,props:U,ref:I,children:A,dynamicChildren:E,shapeFlag:O,patchFlag:$,dirs:D,cacheIndex:H}=c;if($===-2&&(x=!1),I!=null&&(tt(),fs(I,null,y,c,!0),st()),H!=null&&(p.renderCache[H]=void 0),O&256){p.ctx.deactivate(c);return}const Z=O&1&&D,re=!ps(c);let Y;if(re&&(Y=U&&U.onVnodeBeforeUnmount)&<(Y,p,c),O&6)Ce(c.component,y,T);else{if(O&128){c.suspense.unmount(y,T);return}Z&&Lt(c,null,p,"beforeUnmount"),O&64?c.type.remove(c,p,y,Vt,T):E&&!E.hasOnce&&(C!==Fe||$>0&&$&64)?at(E,p,y,!1,!0):(C===Fe&&$&384||!x&&O&16)&&at(A,p,y),T&&It(c)}(re&&(Y=U&&U.onVnodeUnmounted)||Z)&&Be(()=>{Y&<(Y,p,c),Z&&Lt(c,null,p,"unmounted")},y)},It=c=>{const{type:p,el:y,anchor:T,transition:x}=c;if(p===Fe){es(y,T);return}if(p===Zs){R(c);return}const C=()=>{n(y),x&&!x.persisted&&x.afterLeave&&x.afterLeave()};if(c.shapeFlag&1&&x&&!x.persisted){const{leave:U,delayLeave:I}=x,A=()=>U(y,C);I?I(c.el,C,A):A()}else C()},es=(c,p)=>{let y;for(;c!==p;)y=S(c),n(c),c=y;n(p)},Ce=(c,p,y)=>{const{bum:T,scope:x,job:C,subTree:U,um:I,m:A,a:E,parent:O,slots:{__:$}}=c;Zn(A),Zn(E),T&&Us(T),O&&z($)&&$.forEach(D=>{O.renderCache[D]=void 0}),x.stop(),C&&(C.flags|=8,Le(U,c,p,y)),I&&Be(I,p),Be(()=>{c.isUnmounted=!0},p),p&&p.pendingBranch&&!p.isUnmounted&&c.asyncDep&&!c.asyncResolved&&c.suspenseId===p.pendingId&&(p.deps--,p.deps===0&&p.resolve())},at=(c,p,y,T=!1,x=!1,C=0)=>{for(let U=C;U<c.length;U++)Le(c[U],p,y,T,x)},ts=c=>{if(c.shapeFlag&6)return ts(c.component.subTree);if(c.shapeFlag&128)return c.suspense.next();const p=S(c.anchor||c.el),y=p&&p[Rl];return y?S(y):p};let Es=!1;const ro=(c,p,y)=>{c==null?p._vnode&&Le(p._vnode,null,null,!0):b(p._vnode||null,c,p,null,null,null,y),p._vnode=c,Es||(Es=!0,Sn(),Tn(),Es=!1)},Vt={p:b,um:Le,m:Ge,r:It,mt:q,mc:Pe,pc:te,pbc:Re,n:ts,o:e};return{render:ro,hydrate:void 0,createApp:li(ro)}}function Fo({type:e,props:t},s){return s==="svg"&&e==="foreignObject"||s==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:s}function Dt({effect:e,job:t},s){s?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function vi(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Gn(e,t,s=!1){const o=e.children,n=t.children;if(z(o)&&z(n))for(let r=0;r<o.length;r++){const l=o[r];let i=n[r];i.shapeFlag&1&&!i.dynamicChildren&&((i.patchFlag<=0||i.patchFlag===32)&&(i=n[r]=kt(n[r]),i.el=l.el),!s&&i.patchFlag!==-2&&Gn(l,i)),i.type===Qs&&(i.el=l.el),i.type===wt&&!i.el&&(i.el=l.el)}}function gi(e){const t=e.slice(),s=[0];let o,n,r,l,i;const u=e.length;for(o=0;o<u;o++){const m=e[o];if(m!==0){if(n=s[s.length-1],e[n]<m){t[o]=n,s.push(o);continue}for(r=0,l=s.length-1;r<l;)i=r+l>>1,e[s[i]]<m?r=i+1:l=i;m<e[s[r]]&&(r>0&&(t[o]=s[r-1]),s[r]=o)}}for(r=s.length,l=s[r-1];r-- >0;)s[r]=l,l=t[l];return s}function Qn(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Qn(t)}function Zn(e){if(e)for(let t=0;t<e.length;t++)e[t].flags|=8}const _i=Symbol.for("v-scx"),yi=()=>Ws(_i);function He(e,t,s){return Yn(e,t,s)}function Yn(e,t,s=le){const{immediate:o,deep:n,flush:r,once:l}=s,i=Ee({},s),u=t&&o||!t&&r!=="post";let m;if(ks){if(r==="sync"){const w=yi();m=w.__watcherHandles||(w.__watcherHandles=[])}else if(!u){const w=()=>{};return w.stop=Xe,w.resume=Xe,w.pause=Xe,w}}const d=Ve;i.call=(w,g,b)=>ot(w,d,g,b);let _=!1;r==="post"?i.scheduler=w=>{Be(w,d&&d.suspense)}:r!=="sync"&&(_=!0,i.scheduler=(w,g)=>{g?w():Ao(w)}),i.augmentJob=w=>{t&&(w.flags|=4),_&&(w.flags|=2,d&&(w.id=d.uid,w.i=d))};const S=Il(e,t,i);return ks&&(m?m.push(S):u&&S()),S}function bi(e,t,s){const o=this.proxy,n=ve(e)?e.includes(".")?Jn(o,e):()=>o[e]:e.bind(o,o);let r;W(t)?r=t:(r=t.handler,s=t);const l=ws(this),i=Yn(n,r.bind(o),s);return l(),i}function Jn(e,t){const s=t.split(".");return()=>{let o=e;for(let n=0;n<s.length&&o;n++)o=o[s[n]];return o}}const wi=(e,t)=>t==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${gt(t)}Modifiers`]||e[`${Ut(t)}Modifiers`];function ki(e,t,...s){if(e.isUnmounted)return;const o=e.vnode.props||le;let n=s;const r=t.startsWith("update:"),l=r&&wi(o,t.slice(7));l&&(l.trim&&(n=s.map(d=>ve(d)?d.trim():d)),l.number&&(n=s.map(po)));let i,u=o[i=co(t)]||o[i=co(gt(t))];!u&&r&&(u=o[i=co(Ut(t))]),u&&ot(u,e,6,n);const m=o[i+"Once"];if(m){if(!e.emitted)e.emitted={};else if(e.emitted[i])return;e.emitted[i]=!0,ot(m,e,6,n)}}function Xn(e,t,s=!1){const o=t.emitsCache,n=o.get(e);if(n!==void 0)return n;const r=e.emits;let l={},i=!1;if(!W(e)){const u=m=>{const d=Xn(m,t,!0);d&&(i=!0,Ee(l,d))};!s&&t.mixins.length&&t.mixins.forEach(u),e.extends&&u(e.extends),e.mixins&&e.mixins.forEach(u)}return!r&&!i?(ce(e)&&o.set(e,null),null):(z(r)?r.forEach(u=>l[u]=null):Ee(l,r),ce(e)&&o.set(e,l),l)}function Gs(e,t){return!e||!As(t)?!1:(t=t.slice(2).replace(/Once$/,""),se(e,t[0].toLowerCase()+t.slice(1))||se(e,Ut(t))||se(e,t))}function Nf(){}function er(e){const{type:t,vnode:s,proxy:o,withProxy:n,propsOptions:[r],slots:l,attrs:i,emit:u,render:m,renderCache:d,props:_,data:S,setupState:w,ctx:g,inheritAttrs:b}=e,F=js(e);let N,G;try{if(s.shapeFlag&4){const R=n||o,de=R;N=rt(m.call(de,R,d,_,w,S,g)),G=i}else{const R=t;N=rt(R.length>1?R(_,{attrs:i,slots:l,emit:u}):R(_,null)),G=t.props?i:xi(i)}}catch(R){gs.length=0,qs(R,e,1),N=X(wt)}let Q=N;if(G&&b!==!1){const R=Object.keys(G),{shapeFlag:de}=Q;R.length&&de&7&&(r&&R.some(io)&&(G=Ci(G,r)),Q=Yt(Q,G,!1,!0))}return s.dirs&&(Q=Yt(Q,null,!1,!0),Q.dirs=Q.dirs?Q.dirs.concat(s.dirs):s.dirs),s.transition&&Io(Q,s.transition),N=Q,js(F),N}const xi=e=>{let t;for(const s in e)(s==="class"||s==="style"||As(s))&&((t||(t={}))[s]=e[s]);return t},Ci=(e,t)=>{const s={};for(const o in e)(!io(o)||!(o.slice(9)in t))&&(s[o]=e[o]);return s};function Si(e,t,s){const{props:o,children:n,component:r}=e,{props:l,children:i,patchFlag:u}=t,m=r.emitsOptions;if(t.dirs||t.transition)return!0;if(s&&u>=0){if(u&1024)return!0;if(u&16)return o?tr(o,l,m):!!l;if(u&8){const d=t.dynamicProps;for(let _=0;_<d.length;_++){const S=d[_];if(l[S]!==o[S]&&!Gs(m,S))return!0}}}else return(n||i)&&(!i||!i.$stable)?!0:o===l?!1:o?l?tr(o,l,m):!0:!!l;return!1}function tr(e,t,s){const o=Object.keys(t);if(o.length!==Object.keys(e).length)return!0;for(let n=0;n<o.length;n++){const r=o[n];if(t[r]!==e[r]&&!Gs(s,r))return!0}return!1}function Ti({vnode:e,parent:t},s){for(;t;){const o=t.subTree;if(o.suspense&&o.suspense.activeBranch===e&&(o.el=e.el),o===e)(e=t.vnode).el=s,t=t.parent;else break}}const sr=e=>e.__isSuspense;function Ei(e,t){t&&t.pendingBranch?z(e)?t.effects.push(...e):t.effects.push(e):Ol(e)}const Fe=Symbol.for("v-fgt"),Qs=Symbol.for("v-txt"),wt=Symbol.for("v-cmt"),Zs=Symbol.for("v-stc"),gs=[];let Ne=null;function V(e=!1){gs.push(Ne=e?null:[])}function Ai(){gs.pop(),Ne=gs[gs.length-1]||null}let _s=1;function or(e,t=!1){_s+=e,e<0&&Ne&&t&&(Ne.hasOnce=!0)}function nr(e){return e.dynamicChildren=_s>0?Ne||Nt:null,Ai(),_s>0&&Ne&&Ne.push(e),e}function P(e,t,s,o,n,r){return nr(a(e,t,s,o,n,r,!0))}function ys(e,t,s,o,n){return nr(X(e,t,s,o,n,!0))}function rr(e){return e?e.__v_isVNode===!0:!1}function bs(e,t){return e.type===t.type&&e.key===t.key}const lr=({key:e})=>e??null,Ys=({ref:e,ref_key:t,ref_for:s})=>(typeof e=="number"&&(e=""+e),e!=null?ve(e)||ke(e)||W(e)?{i:je,r:e,k:t,f:!!s}:e:null);function a(e,t=null,s=null,o=0,n=null,r=e===Fe?0:1,l=!1,i=!1){const u={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&lr(t),ref:t&&Ys(t),scopeId:An,slotScopeIds:null,children:s,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:r,patchFlag:o,dynamicProps:n,dynamicChildren:null,appContext:null,ctx:je};return i?(Ro(u,s),r&128&&e.normalize(u)):s&&(u.shapeFlag|=ve(s)?8:16),_s>0&&!l&&Ne&&(u.patchFlag>0||r&6)&&u.patchFlag!==32&&Ne.push(u),u}const X=Ii;function Ii(e,t=null,s=null,o=0,n=null,r=!1){if((!e||e===Jl)&&(e=wt),rr(e)){const i=Yt(e,t,!0);return s&&Ro(i,s),_s>0&&!r&&Ne&&(i.shapeFlag&6?Ne[Ne.indexOf(e)]=i:Ne.push(i)),i.patchFlag=-2,i}if(zi(e)&&(e=e.__vccOpts),t){t=Vi(t);let{class:i,style:u}=t;i&&!ve(i)&&(t.class=_e(i)),ce(u)&&(To(u)&&!z(u)&&(u=Ee({},u)),t.style=zt(u))}const l=ve(e)?1:sr(e)?128:Bl(e)?64:ce(e)?4:W(e)?2:0;return a(e,t,s,o,n,l,r,!0)}function Vi(e){return e?To(e)||Nn(e)?Ee({},e):e:null}function Yt(e,t,s=!1,o=!1){const{props:n,ref:r,patchFlag:l,children:i,transition:u}=e,m=t?Ui(n||{},t):n,d={__v_isVNode:!0,__v_skip:!0,type:e.type,props:m,key:m&&lr(m),ref:t&&t.ref?s&&r?z(r)?r.concat(Ys(t)):[r,Ys(t)]:Ys(t):r,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:i,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==Fe?l===-1?16:l|16:l,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:u,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Yt(e.ssContent),ssFallback:e.ssFallback&&Yt(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return u&&o&&Io(d,u.clone(d)),d}function Jt(e=" ",t=0){return X(Qs,null,e,t)}function ir(e,t){const s=X(Zs,null,e);return s.staticCount=t,s}function B(e="",t=!1){return t?(V(),ys(wt,null,e)):X(wt,null,e)}function rt(e){return e==null||typeof e=="boolean"?X(wt):z(e)?X(Fe,null,e.slice()):rr(e)?kt(e):X(Qs,null,String(e))}function kt(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Yt(e)}function Ro(e,t){let s=0;const{shapeFlag:o}=e;if(t==null)t=null;else if(z(t))s=16;else if(typeof t=="object")if(o&65){const n=t.default;n&&(n._c&&(n._d=!1),Ro(e,n()),n._c&&(n._d=!0));return}else{s=32;const n=t._;!n&&!Nn(t)?t._ctx=je:n===3&&je&&(je.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else W(t)?(t={default:t,_ctx:je},s=32):(t=String(t),o&64?(s=16,t=[Jt(t)]):s=8);e.children=t,e.shapeFlag|=s}function Ui(...e){const t={};for(let s=0;s<e.length;s++){const o=e[s];for(const n in o)if(n==="class")t.class!==o.class&&(t.class=_e([t.class,o.class]));else if(n==="style")t.style=zt([t.style,o.style]);else if(As(n)){const r=t[n],l=o[n];l&&r!==l&&!(z(r)&&r.includes(l))&&(t[n]=r?[].concat(r,l):l)}else n!==""&&(t[n]=o[n])}return t}function lt(e,t,s,o=null){ot(e,t,7,[s,o])}const $i=Fn();let Pi=0;function Mi(e,t,s){const o=e.type,n=(t?t.appContext:e.appContext)||$i,r={uid:Pi++,vnode:e,type:o,parent:t,appContext:n,root:null,next:null,subTree:null,effect:null,update:null,job:null,scope:new el(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:t?t.provides:Object.create(n.provides),ids:t?t.ids:["",0,0],accessCache:null,renderCache:[],components:null,directives:null,propsOptions:zn(o,n),emitsOptions:Xn(o,n),emit:null,emitted:null,propsDefaults:le,inheritAttrs:o.inheritAttrs,ctx:le,data:le,props:le,attrs:le,slots:le,refs:le,setupState:le,setupContext:null,suspense:s,suspenseId:s?s.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null,sp:null};return r.ctx={_:r},r.root=t?t.root:r,r.emit=ki.bind(null,r),e.ce&&e.ce(r),r}let Ve=null;const Li=()=>Ve||je;let Js,Bo;{const e=$s(),t=(s,o)=>{let n;return(n=e[s])||(n=e[s]=[]),n.push(o),r=>{n.length>1?n.forEach(l=>l(r)):n[0](r)}};Js=t("__VUE_INSTANCE_SETTERS__",s=>Ve=s),Bo=t("__VUE_SSR_SETTERS__",s=>ks=s)}const ws=e=>{const t=Ve;return Js(e),e.scope.on(),()=>{e.scope.off(),Js(t)}},ar=()=>{Ve&&Ve.scope.off(),Js(null)};function ur(e){return e.vnode.shapeFlag&4}let ks=!1;function Di(e,t=!1,s=!1){t&&Bo(t);const{props:o,children:n}=e.vnode,r=ur(e);ai(e,o,r,t),fi(e,n,s||t);const l=r?Oi(e,t):void 0;return t&&Bo(!1),l}function Oi(e,t){const s=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,Xl);const{setup:o}=s;if(o){tt();const n=e.setupContext=o.length>1?Ri(e):null,r=ws(e),l=Kt(o,e,0,[e.props,n]),i=Ko(l);if(st(),r(),(i||e.sp)&&!ps(e)&&In(e),i){if(l.then(ar,ar),t)return l.then(u=>{cr(e,u)}).catch(u=>{qs(u,e,0)});e.asyncDep=l}else cr(e,l)}else dr(e)}function cr(e,t,s){W(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:ce(t)&&(e.setupState=wn(t)),dr(e)}function dr(e,t,s){const o=e.type;e.render||(e.render=o.render||Xe);{const n=ws(e);tt();try{ei(e)}finally{st(),n()}}}const Fi={get(e,t){return Te(e,"get",""),e[t]}};function Ri(e){const t=s=>{e.exposed=s||{}};return{attrs:new Proxy(e.attrs,Fi),slots:e.slots,emit:e.emit,expose:t}}function Xs(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(wn(wl(e.exposed)),{get(t,s){if(s in t)return t[s];if(s in ms)return ms[s](e)},has(t,s){return s in t||s in ms}})):e.proxy}const Bi=/(?:^|[-_])(\w)/g,Ni=e=>e.replace(Bi,t=>t.toUpperCase()).replace(/[-_]/g,"");function qi(e,t=!0){return W(e)?e.displayName||e.name:e.name||t&&e.__name}function fr(e,t,s=!1){let o=qi(t);if(!o&&t.__file){const n=t.__file.match(/([^/\\]+)\.\w+$/);n&&(o=n[1])}if(!o&&e&&e.parent){const n=r=>{for(const l in r)if(r[l]===t)return l};o=n(e.components||e.parent.type.components)||n(e.appContext.components)}return o?Ni(o):s?"App":"Anonymous"}function zi(e){return W(e)&&"__vccOpts"in e}const Ue=(e,t)=>El(e,t,ks),ji="3.5.18";/** * @vue/runtime-dom v3.5.18 * (c) 2018-present Yuxi (Evan) You and Vue contributors * @license MIT **/let No;const pr=typeof window<"u"&&window.trustedTypes;if(pr)try{No=pr.createPolicy("vue",{createHTML:e=>e})}catch{}const hr=No?e=>No.createHTML(e):e=>e,Hi="http://www.w3.org/2000/svg",Ki="http://www.w3.org/1998/Math/MathML",pt=typeof document<"u"?document:null,mr=pt&&pt.createElement("template"),Wi={insert:(e,t,s)=>{t.insertBefore(e,s||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,s,o)=>{const n=t==="svg"?pt.createElementNS(Hi,e):t==="mathml"?pt.createElementNS(Ki,e):s?pt.createElement(e,{is:s}):pt.createElement(e);return e==="select"&&o&&o.multiple!=null&&n.setAttribute("multiple",o.multiple),n},createText:e=>pt.createTextNode(e),createComment:e=>pt.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>pt.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,s,o,n,r){const l=s?s.previousSibling:t.lastChild;if(n&&(n===r||n.nextSibling))for(;t.insertBefore(n.cloneNode(!0),s),!(n===r||!(n=n.nextSibling)););else{mr.innerHTML=hr(o==="svg"?`<svg>${e}</svg>`:o==="mathml"?`<math>${e}</math>`:e);const i=mr.content;if(o==="svg"||o==="mathml"){const u=i.firstChild;for(;u.firstChild;)i.appendChild(u.firstChild);i.removeChild(u)}t.insertBefore(i,s)}return[l?l.nextSibling:t.firstChild,s?s.previousSibling:t.lastChild]}},Gi=Symbol("_vtc");function Qi(e,t,s){const o=e[Gi];o&&(t=(t?[t,...o]:[...o]).join(" ")),t==null?e.removeAttribute("class"):s?e.setAttribute("class",t):e.className=t}const eo=Symbol("_vod"),vr=Symbol("_vsh"),to={beforeMount(e,{value:t},{transition:s}){e[eo]=e.style.display==="none"?"":e.style.display,s&&t?s.beforeEnter(e):xs(e,t)},mounted(e,{value:t},{transition:s}){s&&t&&s.enter(e)},updated(e,{value:t,oldValue:s},{transition:o}){!t!=!s&&(o?t?(o.beforeEnter(e),xs(e,!0),o.enter(e)):o.leave(e,()=>{xs(e,!1)}):xs(e,t))},beforeUnmount(e,{value:t}){xs(e,t)}};function xs(e,t){e.style.display=t?e[eo]:"none",e[vr]=!t}const Zi=Symbol(""),Yi=/(^|;)\s*display\s*:/;function Ji(e,t,s){const o=e.style,n=ve(s);let r=!1;if(s&&!n){if(t)if(ve(t))for(const l of t.split(";")){const i=l.slice(0,l.indexOf(":")).trim();s[i]==null&&so(o,i,"")}else for(const l in t)s[l]==null&&so(o,l,"");for(const l in s)l==="display"&&(r=!0),so(o,l,s[l])}else if(n){if(t!==s){const l=o[Zi];l&&(s+=";"+l),o.cssText=s,r=Yi.test(s)}}else t&&e.removeAttribute("style");eo in e&&(e[eo]=r?o.display:"",e[vr]&&(o.display="none"))}const gr=/\s*!important$/;function so(e,t,s){if(z(s))s.forEach(o=>so(e,t,o));else if(s==null&&(s=""),t.startsWith("--"))e.setProperty(t,s);else{const o=Xi(e,t);gr.test(s)?e.setProperty(Ut(o),s.replace(gr,""),"important"):e[o]=s}}const _r=["Webkit","Moz","ms"],qo={};function Xi(e,t){const s=qo[t];if(s)return s;let o=gt(t);if(o!=="filter"&&o in e)return qo[t]=o;o=Qo(o);for(let n=0;n<_r.length;n++){const r=_r[n]+o;if(r in e)return qo[t]=r}return t}const yr="http://www.w3.org/1999/xlink";function br(e,t,s,o,n,r=Jr(t)){o&&t.startsWith("xlink:")?s==null?e.removeAttributeNS(yr,t.slice(6,t.length)):e.setAttributeNS(yr,t,s):s==null||r&&!Yo(s)?e.removeAttribute(t):e.setAttribute(t,r?"":et(s)?String(s):s)}function wr(e,t,s,o,n){if(t==="innerHTML"||t==="textContent"){s!=null&&(e[t]=t==="innerHTML"?hr(s):s);return}const r=e.tagName;if(t==="value"&&r!=="PROGRESS"&&!r.includes("-")){const i=r==="OPTION"?e.getAttribute("value")||"":e.value,u=s==null?e.type==="checkbox"?"on":"":String(s);(i!==u||!("_value"in e))&&(e.value=u),s==null&&e.removeAttribute(t),e._value=s;return}let l=!1;if(s===""||s==null){const i=typeof e[t];i==="boolean"?s=Yo(s):s==null&&i==="string"?(s="",l=!0):i==="number"&&(s=0,l=!0)}try{e[t]=s}catch{}l&&e.removeAttribute(n||t)}function Ot(e,t,s,o){e.addEventListener(t,s,o)}function ea(e,t,s,o){e.removeEventListener(t,s,o)}const kr=Symbol("_vei");function ta(e,t,s,o,n=null){const r=e[kr]||(e[kr]={}),l=r[t];if(o&&l)l.value=o;else{const[i,u]=sa(t);if(o){const m=r[t]=ra(o,n);Ot(e,i,m,u)}else l&&(ea(e,i,l,u),r[t]=void 0)}}const xr=/(?:Once|Passive|Capture)$/;function sa(e){let t;if(xr.test(e)){t={};let o;for(;o=e.match(xr);)e=e.slice(0,e.length-o[0].length),t[o[0].toLowerCase()]=!0}return[e[2]===":"?e.slice(3):Ut(e.slice(2)),t]}let zo=0;const oa=Promise.resolve(),na=()=>zo||(oa.then(()=>zo=0),zo=Date.now());function ra(e,t){const s=o=>{if(!o._vts)o._vts=Date.now();else if(o._vts<=s.attached)return;ot(la(o,s.value),t,5,[o])};return s.value=e,s.attached=na(),s}function la(e,t){if(z(t)){const s=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{s.call(e),e._stopped=!0},t.map(o=>n=>!n._stopped&&o&&o(n))}else return t}const Cr=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,ia=(e,t,s,o,n,r)=>{const l=n==="svg";t==="class"?Qi(e,o,l):t==="style"?Ji(e,s,o):As(t)?io(t)||ta(e,t,s,o,r):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):aa(e,t,o,l))?(wr(e,t,o),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&br(e,t,o,l,r,t!=="value")):e._isVueCE&&(/[A-Z]/.test(t)||!ve(o))?wr(e,gt(t),o,r,t):(t==="true-value"?e._trueValue=o:t==="false-value"&&(e._falseValue=o),br(e,t,o,l))};function aa(e,t,s,o){if(o)return!!(t==="innerHTML"||t==="textContent"||t in e&&Cr(t)&&W(s));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="autocorrect"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const n=e.tagName;if(n==="IMG"||n==="VIDEO"||n==="CANVAS"||n==="SOURCE")return!1}return Cr(t)&&ve(s)?!1:t in e}const oo=e=>{const t=e.props["onUpdate:modelValue"]||!1;return z(t)?s=>Us(t,s):t};function ua(e){e.target.composing=!0}function Sr(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const Xt=Symbol("_assign"),pe={created(e,{modifiers:{lazy:t,trim:s,number:o}},n){e[Xt]=oo(n);const r=o||n.props&&n.props.type==="number";Ot(e,t?"change":"input",l=>{if(l.target.composing)return;let i=e.value;s&&(i=i.trim()),r&&(i=po(i)),e[Xt](i)}),s&&Ot(e,"change",()=>{e.value=e.value.trim()}),t||(Ot(e,"compositionstart",ua),Ot(e,"compositionend",Sr),Ot(e,"change",Sr))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:s,modifiers:{lazy:o,trim:n,number:r}},l){if(e[Xt]=oo(l),e.composing)return;const i=(r||e.type==="number")&&!/^0\d/.test(e.value)?po(e.value):e.value,u=t??"";i!==u&&(document.activeElement===e&&e.type!=="range"&&(o&&t===s||n&&e.value.trim()===u)||(e.value=u))}},ca={deep:!0,created(e,t,s){e[Xt]=oo(s),Ot(e,"change",()=>{const o=e._modelValue,n=da(e),r=e.checked,l=e[Xt];if(z(o)){const i=Jo(o,n),u=i!==-1;if(r&&!u)l(o.concat(n));else if(!r&&u){const m=[...o];m.splice(i,1),l(m)}}else if(Is(o)){const i=new Set(o);r?i.add(n):i.delete(n),l(i)}else l(Er(e,r))})},mounted:Tr,beforeUpdate(e,t,s){e[Xt]=oo(s),Tr(e,t,s)}};function Tr(e,{value:t,oldValue:s},o){e._modelValue=t;let n;if(z(t))n=Jo(t,o.props.value)>-1;else if(Is(t))n=t.has(o.props.value);else{if(t===s)return;n=Ps(t,Er(e,!0))}e.checked!==n&&(e.checked=n)}function da(e){return"_value"in e?e._value:e.value}function Er(e,t){const s=t?"_trueValue":"_falseValue";return s in e?e[s]:t}const fa=["ctrl","shift","alt","meta"],pa={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>fa.some(s=>e[`${s}Key`]&&!t.includes(s))},qe=(e,t)=>{const s=e._withMods||(e._withMods={}),o=t.join(".");return s[o]||(s[o]=(n,...r)=>{for(let l=0;l<t.length;l++){const i=pa[t[l]];if(i&&i(n,t))return}return e(n,...r)})},ha=Ee({patchProp:ia},Wi);let Ar;function ma(){return Ar||(Ar=hi(ha))}const va=(...e)=>{const t=ma().createApp(...e),{mount:s}=t;return t.mount=o=>{const n=_a(o);if(!n)return;const r=t._component;!W(r)&&!r.render&&!r.template&&(r.template=n.innerHTML),n.nodeType===1&&(n.textContent="");const l=s(n,!1,ga(n));return n instanceof Element&&(n.removeAttribute("v-cloak"),n.setAttribute("data-v-app","")),l},t};function ga(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function _a(e){return ve(e)?document.querySelector(e):e}const ya="https://das.doubanflix.com/api",ba="https://api.doubanflix.com/api",wa=1e4,ka=1e3,Ir=2*60*60*1e3;class xa{constructor(){this.primaryURL=ya,this.fallbackURL=ba,this.currentURL=this.primaryURL,this.timeout=wa,this.isUsingFallback=!1,this.resetTimer=null}switchToFallback(){this.isUsingFallback||(console.warn("主要API接口无法访问,切换到备用接口:",this.fallbackURL),this.currentURL=this.fallbackURL,this.isUsingFallback=!0,this.startAutoResetTimer())}resetToPrimary(){this.isUsingFallback&&(console.log("重置到主要API接口:",this.primaryURL),this.currentURL=this.primaryURL,this.isUsingFallback=!1,this.clearAutoResetTimer())}startAutoResetTimer(){this.clearAutoResetTimer(),console.log(`将在 ${Ir/1e3/60} 分钟后自动尝试切换回主接口`),this.resetTimer=setTimeout(()=>{console.log("定时器触发,自动切换回主接口"),this.forceResetToPrimary()},Ir)}clearAutoResetTimer(){this.resetTimer&&(clearTimeout(this.resetTimer),this.resetTimer=null)}forceResetToPrimary(){console.log("强制重置到主要API接口:",this.primaryURL),this.currentURL=this.primaryURL,this.isUsingFallback=!1,this.clearAutoResetTimer()}isNetworkError(t){return t.name==="AbortError"||t.name==="TypeError"||t.message.includes("Failed to fetch")||t.message.includes("Network request failed")||t.message.includes("请求超时")}addAuthHeaders(t={}){const s=localStorage.getItem("auth_token");return s&&(t.Authorization=`Bearer ${s}`),{"Content-Type":"application/json",...t}}async handleResponse(t){if(!t.ok){const s=await t.json().catch(()=>({}));switch(t.status){case 401:return localStorage.getItem("auth_token")?(localStorage.removeItem("auth_token"),{success:!1,error:"登录(不可用)已过期,请重新登录(不可用)",status:401,isAuthError:!0}):{success:!1,error:"请先登录(不可用)",status:401,isAuthError:!0};case 403:throw new Error("没有权限访问该资源");case 404:return{success:!1,error:"NOT_FOUND",status:404,message:"请求的资源不存在"};case 500:throw new Error("服务器内部错误");default:throw new Error(s.message||"请求失败")}}return t.json()}async request(t,s={}){const o=async n=>{const r=`${n}${t}`,l={headers:this.addAuthHeaders(s.headers),...s},i=new AbortController,u=setTimeout(()=>i.abort(),this.timeout);try{const m=await fetch(r,{...l,signal:i.signal});return clearTimeout(u),await this.handleResponse(m)}catch(m){throw clearTimeout(u),m.name==="AbortError"?new Error("请求超时,请检查网络连接"):m}};try{return await o(this.currentURL)}catch(n){if(this.isNetworkError(n)&&!this.isUsingFallback){console.warn("主要接口请求失败,尝试备用接口:",n.message),await new Promise(r=>setTimeout(r,ka));try{return this.switchToFallback(),await o(this.currentURL)}catch(r){throw console.error("备用接口也无法访问:",r.message),n}}throw n}}async get(t,s={}){const o=new URLSearchParams(s).toString(),n=o?`${t}?${o}`:t;return this.request(n,{method:"GET"})}async post(t,s={}){return this.request(t,{method:"POST",body:JSON.stringify(s)})}async put(t,s={}){return this.request(t,{method:"PUT",body:JSON.stringify(s)})}async delete(t){return this.request(t,{method:"DELETE"})}}const ue=new xa,$e={getChallenge(){return ue.get("/auth/challenge")},register(e){return ue.post("/auth/register",e)},login(e){return ue.post("/auth/login",e)},verifyEmail(e){return ue.post("/auth/verify-email",e)},resendVerificationCode(e){return ue.post("/auth/resend-code",e)},getUserInfo(){return ue.get("/user/profile")},getCurrentUser(){return ue.get("/user/profile")},logout(){return ue.post("/auth/logout")},forgotPassword(e){return ue.post("/auth/forgot-password",e)},resetPassword(e){return ue.post("/auth/reset-password",e)}},xt={getMovieLinks(e,t={}){return ue.get(`/movie/${e}/links`,t)},addMovieLink(e,t){return ue.post(`/movies/${e}/links`,t)},updateMovieLink(e,t){return ue.put(`/movies/links/${e}`,t)},deleteMovieLink(e,t){return ue.delete(`/movies/${e}/links/${t}`)},voteLink(e,t){return ue.post(`/links/${e}/vote`,{vote_type:t})},removeVote(e,t){return ue.post(`/links/${e}/vote`,{vote_type:t})},getLinkVoteStatus(e){return ue.get(`/links/${e}/vote-status`)},getUserVote(e){return ue.get(`/links/${e}/vote-status`)},reportLink(e){return ue.post("/reports",e)}},Cs={getUserProfile(e){return ue.get(`/user/profile/${e}`)},getUserLinks(e={}){return ue.get("/user/links",e)},getUserLinksByCategory(){return ue.get("/user/links/category")},updateUserName(e){return ue.put("/user/name",e)},getAllUsers(){return ue.get("/admin/users")},banUser(e,t){return ue.put(`/admin/users/${e}/ban`,{reason:t})},unbanUser(e){return ue.put(`/admin/users/${e}/unban`)}};async function Ca(e){const t=new TextEncoder().encode(e),s=await crypto.subtle.digest("SHA-256",t);return Array.from(new Uint8Array(s)).map(r=>r.toString(16).padStart(2,"0")).join("")}function Sa(e,t){return e.startsWith("0".repeat(t))}async function no(e,t,s=null){let o=0;const n=Date.now();for(;;){const r=e+o.toString(),l=await Ca(r);if(Sa(l,t)){const u=Date.now()-n;return console.log(`工作量证明完成: nonce=${o}, 耗时=${u}ms, hash=${l}`),{challenge:e,nonce:o.toString(),hash:l}}o++,o%1e3===0&&(s&&s(o),await new Promise(i=>setTimeout(i,1)))}}const xe=L(null),Ct=L(null),ye=L(!1),ie=L(""),jo=L(!1),Ta=Ue(()=>!!xe.value&&!!Ct.value),Ea=Ue(()=>{var e;return((e=xe.value)==null?void 0:e.email)||""}),Aa=Ue(()=>{var e;return((e=xe.value)==null?void 0:e.id)||""}),ne={user:xe,token:Ct,loading:ye,error:ie,initialized:jo,isAuthenticated:Ta,userEmail:Ea,userId:Aa,async initAuth(){if(!jo.value)try{ye.value=!0;const e=localStorage.getItem("auth_token");if(e){Ct.value=e;try{const t=await $e.getCurrentUser();t&&t.data?xe.value=t.data:xe.value=t,ie.value=""}catch(t){console.error("获取用户信息失败:",t),t.status===401||t.status===403?(localStorage.removeItem("auth_token"),Ct.value=null,xe.value=null):console.warn("网络或其他错误,保留token:",t.message)}}}catch(e){console.error("初始化认证失败:",e)}finally{ye.value=!1,jo.value=!0}},async signIn(e,t){try{ye.value=!0,ie.value="";const s=await $e.login({email:e,password:t});return Ct.value=s.data.token,xe.value=s.data.user,localStorage.setItem("auth_token",s.data.token),{success:!0,user:s.data.user}}catch(s){return console.error("登录(不可用)错误:",s),ie.value=s.message||"登录(不可用)过程中发生错误",{success:!1,error:ie.value}}finally{ye.value=!1}},async signUp(e,t,s={}){try{ye.value=!0,ie.value="";const o=await $e.register({email:e,password:t,...s});return Ct.value=o.token,xe.value=o.user,localStorage.setItem("auth_token",o.token),{success:!0,data:o}}catch(o){return console.error("注册(不可用)错误:",o),ie.value=o.message||"注册(不可用)过程中发生错误",{success:!1,error:ie.value}}finally{ye.value=!1}},async signUpWithProof(e,t){try{ye.value=!0,ie.value="";const s=await $e.getChallenge();if(!s.success)throw new Error(s.error||"获取挑战失败");const{challenge:o,difficulty:n}=s.data,r=await no(o,n,t),l={username:e.username,email:e.email,password:e.password,proof_of_work:{challenge:o,nonce:r.nonce,hash:r.hash}},i=await $e.register(l);return i.success?{success:!0,data:i.data}:{success:!1,error:i.error}}catch(s){return console.error("注册(不可用)失败:",s),ie.value=s.message||"注册(不可用)失败",{success:!1,error:ie.value}}finally{ye.value=!1}},async verifyEmail(e,t){try{ye.value=!0,ie.value="";const s={email:e,code:t},o=await $e.verifyEmail(s);return o.success?{success:!0,data:o.data}:{success:!1,error:o.error}}catch(s){return console.error("邮箱验证失败:",s),ie.value=s.message||"验证失败",{success:!1,error:ie.value}}finally{ye.value=!1}},async resendVerificationCode(e,t=()=>{}){try{ye.value=!0,ie.value="";const s=await $e.getChallenge();if(!s.success)throw new Error(s.error||"获取挑战失败");const{challenge:o,difficulty:n}=s.data,r=await no(o,n,t),l={email:e,challenge:o,solution:r.nonce},i=await $e.resendVerificationCode(l);return i.success?{success:!0,data:i.data}:{success:!1,error:i.error}}catch(s){return console.error("重发验证码失败:",s),ie.value=s.message||"发送失败",{success:!1,error:ie.value}}finally{ye.value=!1}},async forgotPassword(e,t){try{ye.value=!0,ie.value="";const s=await $e.getChallenge();if(!s.success)throw new Error(s.error||"获取挑战失败");const{challenge:o,difficulty:n}=s.data,r=await no(o,n,t),l={email:e,proof_of_work:{challenge:o,nonce:r.nonce,hash:r.hash}},i=await $e.forgotPassword(l);return i.success?{success:!0,data:i.data}:{success:!1,error:i.message||i.error}}catch(s){return console.error("忘记密码失败:",s),ie.value=s.message||"发送失败",{success:!1,error:ie.value}}finally{ye.value=!1}},async resetPassword(e,t,s){try{ye.value=!0,ie.value="";const o=await $e.resetPassword({email:e,code:t,password:s});return o.success?{success:!0,data:o.data}:{success:!1,error:o.message||o.error}}catch(o){return console.error("重置密码失败:",o),ie.value=o.message||"重置失败",{success:!1,error:ie.value}}finally{ye.value=!1}},async signOut(){try{return ye.value=!0,ie.value="",localStorage.removeItem("auth_token"),Ct.value=null,xe.value=null,{success:!0}}catch(e){return console.error("登出错误:",e),ie.value="登出过程中发生错误",localStorage.removeItem("auth_token"),Ct.value=null,xe.value=null,{success:!1,error:ie.value}}finally{ye.value=!1}},clearError(){ie.value=""},hasPermission(e){return!!xe.value},getDisplayName(){var e;return xe.value?((e=xe.value.user_metadata)==null?void 0:e.full_name)||xe.value.email||"用户":"未登录(不可用)"},getAvatarUrl(){var e;return xe.value&&((e=xe.value.user_metadata)==null?void 0:e.avatar_url)||null}};class Ia{async getUserProfile(t=null){try{let s=t;if(!s){const n=await $e.getCurrentUser();if(!n)return{success:!1,error:"用户未登录(不可用)"};s=n.id}const o=await Cs.getUserProfile(s);return o?{success:!0,data:o}:{success:!0,data:{user_id:s,nickname:null,avatar_url:null,bio:null}}}catch(s){return console.error("获取用户配置异常:",s),{success:!1,error:"获取用户配置失败"}}}async updateUserProfile(t){try{return await $e.getCurrentUser()?t.nickname&&t.nickname.length>50?{success:!1,error:"昵称长度不能超过50个字符"}:t.nickname&&!(await Cs.checkNicknameAvailability(t.nickname)).available?{success:!1,error:"该昵称已被使用,请选择其他昵称"}:{success:!0,data:await Cs.updateUserProfile(t),message:"用户配置更新成功"}:{success:!1,error:"用户未登录(不可用)"}}catch(s){return console.error("更新用户配置异常:",s),{success:!1,error:"更新用户配置失败"}}}async getUserDisplayName(t,s="匿名用户"){var o;try{const n=await this.getUserProfile(t);return n.success&&((o=n.data)!=null&&o.nickname)?n.data.nickname:s||"匿名用户"}catch(n){return console.error("获取用户显示名称失败:",n),s||"匿名用户"}}async checkNicknameAvailability(t){try{return!t||t.trim().length===0?{success:!1,error:"昵称不能为空"}:t.length>50?{success:!1,error:"昵称长度不能超过50个字符"}:await $e.getCurrentUser()?{success:!0,available:(await Cs.checkNicknameAvailability(t.trim())).available}:{success:!1,error:"用户未登录(不可用)"}}catch(s){return console.error("检查昵称可用性失败:",s),{success:!1,error:"检查昵称可用性失败"}}}}const Va=new Ia,Ke=(e,t)=>{const s=e.__vccOpts||e;for(const[o,n]of t)s[o]=n;return s},Ua={class:"auth-switch"},$a={class:"switch-container"},Pa=["checked"],Ma=["checked"],La=Ke({__name:"AuthSwitch",props:{modelValue:{type:String,default:"login"}},emits:["update:modelValue"],setup(e,{emit:t}){const s=e,o=Ue(()=>s.modelValue==="login"?"2%":"52%");return(n,r)=>(V(),P("div",Ua,[a("div",$a,[a("input",{id:"login",type:"radio",name:"authMode",value:"login",checked:e.modelValue==="login",onChange:r[0]||(r[0]=l=>n.$emit("update:modelValue","login")),class:"switch-input"},null,40,Pa),r[2]||(r[2]=a("label",{for:"login",class:"switch-label"},"登录(不可用)",-1)),a("input",{id:"register",type:"radio",name:"authMode",value:"register",checked:e.modelValue==="register",onChange:r[1]||(r[1]=l=>n.$emit("update:modelValue","register")),class:"switch-input"},null,40,Ma),r[3]||(r[3]=a("label",{for:"register",class:"switch-label"},"注册(不可用)",-1)),a("div",{class:"slider",style:zt({left:o.value})},null,4)])]))}},[["__scopeId","data-v-d47a81a4"]]),Da={class:"toast-container"},Vr=Ke({__name:"ToastContainer",props:{errorMessage:{type:String,default:""},successMessage:{type:String,default:""},duration:{type:Number,default:3e3},autoClose:{type:Boolean,default:!0}},emits:["clear-error","clear-success"],setup(e,{emit:t}){const s=e,o=t;let n=null,r=null;const l=()=>{n&&(clearTimeout(n),n=null),o("clear-error")},i=()=>{r&&(clearTimeout(r),r=null),o("clear-success")};return He(()=>s.errorMessage,u=>{u&&s.autoClose&&(n&&clearTimeout(n),n=setTimeout(()=>{l()},s.duration))}),He(()=>s.successMessage,u=>{u&&s.autoClose&&(r&&clearTimeout(r),r=setTimeout(()=>{i()},s.duration))}),hs(()=>{n&&clearTimeout(n),r&&clearTimeout(r)}),(u,m)=>(V(),P("div",Da,[e.errorMessage?(V(),P("div",{key:0,class:"toast error-toast",onClick:l},[a("span",null,j(e.errorMessage),1),m[0]||(m[0]=a("button",{class:"toast-close"},"×",-1))])):B("",!0),e.successMessage?(V(),P("div",{key:1,class:"toast success-toast",onClick:i},[a("span",null,j(e.successMessage),1),m[1]||(m[1]=a("button",{class:"toast-close"},"×",-1))])):B("",!0)]))}},[["__scopeId","data-v-52e28bd4"]]),Oa={class:"auth-container"},Fa={key:0,class:"initializing-container"},Ra={key:1,class:"user-info"},Ba={class:"user-header"},Na={class:"user-details"},qa={class:"user-display-name"},za={key:0,class:"user-email"},ja={key:1,class:"user-stats"},Ha={class:"stat-item"},Ka={class:"stat-value"},Wa={class:"stat-item"},Ga={class:"stat-value"},Qa={key:0,class:"nickname-edit-form"},Za={class:"form-group"},Ya={class:"nickname-actions"},Ja=["disabled"],Xa={key:2,class:"auth-forms"},eu={key:1,class:"back-button"},tu={class:"form-group"},su={class:"input-wrapper"},ou={class:"form-group"},nu={class:"input-wrapper"},ru=["disabled"],lu={class:"forgot-password-link"},iu={class:"form-group"},au={class:"form-group"},uu={class:"form-group"},cu={class:"form-group"},du={key:0,class:"proof-progress"},fu={class:"progress-bar"},pu=["disabled"],hu={class:"form-description"},mu={class:"form-group"},vu=["readonly"],gu={class:"form-group"},_u=["disabled"],yu={class:"resend-code"},bu=["disabled"],wu={class:"form-group"},ku={key:0,class:"proof-progress"},xu={class:"progress-bar"},Cu=["disabled"],Su={class:"form-group"},Tu={class:"form-group"},Eu={class:"form-group"},Au={class:"form-group"},Iu=["disabled"],Vu=Ke({__name:"AuthComponent",setup(e){const t=L(null),s=L(null),o=L("login"),n=L(!1);L(""),L("");const r=L(!1),l=L(!0),i=L(""),u=L(""),m=L({email:"",password:""});hs(()=>{stopWatching&&stopWatching()});const d=L({email:"",password:"",confirmPassword:"",username:""}),_=L({email:"",code:""}),S=L({email:""}),w=L({email:"",code:"",password:"",confirmPassword:""}),g=L(!1),b=L(0),F=L(""),N=L({username:""});Qt(async()=>{try{await ne.initAuth(),t.value=ne.user.value,t.value&&await Q();const q=He(()=>ne.user.value,k=>{t.value=k,k?Q():s.value=null},{immediate:!1})}finally{l.value=!1}});const G=()=>{i.value="",u.value=""},Q=async()=>{if(t.value)try{const q=await Va.getUserProfile(t.value.id);q.success?(s.value=q.data,console.log("用户资料数据:",q.data)):console.error("加载用户资料失败:",q.error)}catch(q){console.error("加载用户资料异常:",q)}},R=()=>{var q;r.value=!r.value,r.value&&(N.value.username=((q=t.value)==null?void 0:q.username)||""),G()},de=async()=>{var q,k;if(t.value){G(),n.value=!0;try{const M=N.value.username.trim();if(!M){i.value="用户名不能为空";return}if(M.length<2||M.length>10){i.value="用户名长度必须在2-10个字符之间";return}const ee=await Cs.updateUserName({username:M});if(ee.data.success){const te={...t.value,...ee.data.data};t.value=te,ne.user.value=te,u.value=ee.data.message||"用户名更新成功!",r.value=!1,await Q()}else i.value=ee.data.message||"更新用户名失败"}catch(M){console.error("更新用户名错误:",M),(k=(q=M.response)==null?void 0:q.data)!=null&&k.message?i.value=M.response.data.message:i.value="更新用户名失败,请稍后重试"}finally{n.value=!1}}},he=async()=>{G(),n.value=!0;try{const q=await ne.signIn(m.value.email,m.value.password);q.success?(t.value=q.user,u.value="登录(不可用)成功!",m.value={email:"",password:""},await Q()):i.value=q.error||"登录(不可用)失败,请检查邮箱和密码"}catch(q){i.value="登录(不可用)过程中发生错误",console.error("登录(不可用)错误:",q)}finally{n.value=!1}},me=async()=>{if(G(),d.value.password!==d.value.confirmPassword){i.value="两次输入的密码不一致";return}n.value=!0;try{const q=await ne.signUpWithProof(d.value,k=>{g.value=!0,b.value=k});g.value=!1,b.value=0,q.success?(F.value=d.value.email,_.value.email=d.value.email,o.value="verify-email",u.value="注册(不可用)成功!请查收邮件并验证邮箱",d.value={email:"",password:"",confirmPassword:"",username:""}):i.value=q.error||"注册(不可用)失败,请稍后重试"}catch(q){g.value=!1,b.value=0,i.value="注册(不可用)过程中发生错误",console.error("注册(不可用)错误:",q)}finally{n.value=!1}},Pe=async()=>{G(),n.value=!0;try{const q=await ne.verifyEmail(_.value.email,_.value.code);q.success?(u.value="邮箱验证成功!请登录(不可用)",o.value="login",_.value={email:"",code:""},F.value=""):i.value=q.error||"验证失败,请重试"}catch(q){i.value="验证过程中发生错误",console.error("验证错误:",q)}finally{n.value=!1}},Et=async()=>{G(),n.value=!0;try{const q=_.value.email||F.value,k=await ne.resendVerificationCode(q,M=>{console.log("重发验证码进度:",M)});k.success?u.value="验证码已重新发送,请查收邮件":i.value=k.error||"发送失败,请重试"}catch(q){i.value="发送过程中发生错误",console.error("重发验证码错误:",q)}finally{n.value=!1}},Re=async()=>{G(),n.value=!0;try{const q=await ne.forgotPassword(S.value.email,k=>{g.value=!0,b.value=k});g.value=!1,b.value=0,q.success?(w.value.email=S.value.email,o.value="reset-password",u.value="重置码已发送,请查收邮件",S.value={email:""}):i.value=q.error||"发送失败,请重试"}catch(q){g.value=!1,b.value=0,i.value="发送过程中发生错误",console.error("忘记密码错误:",q)}finally{n.value=!1}},Me=async()=>{if(G(),w.value.password!==w.value.confirmPassword){i.value="两次输入的密码不一致";return}n.value=!0;try{const q=await ne.resetPassword(w.value.email,w.value.code,w.value.password);q.success?(u.value="密码重置成功!请使用新密码登录(不可用)",o.value="login",w.value={email:"",code:"",password:"",confirmPassword:""}):i.value=q.error||"重置失败,请重试"}catch(q){i.value="重置过程中发生错误",console.error("重置密码错误:",q)}finally{n.value=!1}},We=()=>{o.value="login",G()},ht=()=>{ne.signOut(),u.value="已成功登出",t.value=null,s.value=null};return(q,k)=>(V(),P("div",Oa,[l.value?(V(),P("div",Fa,k[18]||(k[18]=[a("div",{class:"loading-spinner"},null,-1),a("p",null,"加载中...",-1)]))):t.value?(V(),P("div",Ra,[a("div",Ba,[a("div",Na,[a("div",qa,j(t.value.username||t.value.email),1),t.value.username?(V(),P("div",za,j(t.value.email),1)):B("",!0),s.value?(V(),P("div",ja,[a("span",Ha,[k[19]||(k[19]=a("span",{class:"stat-icon"},[a("svg",{viewBox:"0 0 100 100",xmlns:"http://www.w3.org/2000/svg"},[a("path",{d:"M15 75 Q15 80 20 80 L80 80 Q85 80 85 75 Q85 70 80 65 L55 25 Q52 20 50 20 Q48 20 45 25 L20 65 Q15 70 15 75 Z",fill:"currentColor",stroke:"currentColor","stroke-width":"2","stroke-linejoin":"round"})])],-1)),a("span",Ka,j(s.value.total_likes||0),1)]),a("span",Wa,[k[20]||(k[20]=a("span",{class:"stat-icon down-icon"},[a("svg",{viewBox:"0 0 100 100",xmlns:"http://www.w3.org/2000/svg"},[a("path",{d:"M15 75 Q15 80 20 80 L80 80 Q85 80 85 75 Q85 70 80 65 L55 25 Q52 20 50 20 Q48 20 45 25 L20 65 Q15 70 15 75 Z",fill:"currentColor",stroke:"currentColor","stroke-width":"2","stroke-linejoin":"round"})])],-1)),a("span",Ga,j(s.value.total_dislikes||0),1)])])):B("",!0)]),a("button",{onClick:R,class:"edit-nickname-btn"},j(r.value?"取消":"编辑用户名"),1)]),r.value?(V(),P("div",Qa,[a("div",Za,[k[21]||(k[21]=a("label",null,"用户名",-1)),oe(a("input",{"onUpdate:modelValue":k[0]||(k[0]=M=>N.value.username=M),type:"text",placeholder:"请输入用户名",class:"form-input",maxlength:"10"},null,512),[[pe,N.value.username]]),k[22]||(k[22]=a("div",{class:"nickname-hint"},"用户名长度为2-10个字符",-1))]),a("div",Ya,[a("button",{onClick:de,disabled:n.value,class:"save-nickname-btn"},j(n.value?"保存中...":"保存"),9,Ja),a("button",{onClick:R,class:"cancel-nickname-btn"}," 取消 ")])])):B("",!0),a("button",{onClick:ht,class:"sign-out-btn"}," 退出登录(不可用) ")])):(V(),P("div",Xa,[["verify-email","forgot-password","reset-password"].includes(o.value)?B("",!0):(V(),ys(La,{key:0,modelValue:o.value,"onUpdate:modelValue":k[1]||(k[1]=M=>o.value=M)},null,8,["modelValue"])),["verify-email","forgot-password","reset-password"].includes(o.value)?(V(),P("div",eu,[a("button",{onClick:We,class:"back-btn"}," ← 返回登录(不可用) ")])):B("",!0),o.value==="login"?(V(),P("form",{key:2,onSubmit:qe(he,["prevent"]),class:"auth-form","data-mode":"login"},[a("div",tu,[k[23]||(k[23]=a("label",null,"邮箱",-1)),a("div",su,[oe(a("input",{"onUpdate:modelValue":k[2]||(k[2]=M=>m.value.email=M),type:"email",required:"",placeholder:"请输入邮箱",class:"form-input"},null,512),[[pe,m.value.email]])])]),a("div",ou,[k[24]||(k[24]=a("label",null,"密码",-1)),a("div",nu,[oe(a("input",{"onUpdate:modelValue":k[3]||(k[3]=M=>m.value.password=M),type:"password",required:"",placeholder:"请输入密码",class:"form-input"},null,512),[[pe,m.value.password]])])]),a("button",{type:"submit",disabled:n.value,class:"auth-submit-btn"},j(n.value?"登录(不可用)中...":"登录(不可用)"),9,ru),a("div",lu,[a("button",{type:"button",onClick:k[4]||(k[4]=M=>o.value="forgot-password"),class:"link-btn"}," 忘记密码? ")])],32)):B("",!0),o.value==="register"?(V(),P("form",{key:3,onSubmit:qe(me,["prevent"]),class:"auth-form","data-mode":"register"},[a("div",iu,[k[25]||(k[25]=a("label",null,"用户名",-1)),oe(a("input",{"onUpdate:modelValue":k[5]||(k[5]=M=>d.value.username=M),type:"text",required:"",placeholder:"3-10个字符",class:"form-input",minlength:"3",maxlength:"10"},null,512),[[pe,d.value.username]])]),a("div",au,[k[26]||(k[26]=a("label",null,"邮箱",-1)),oe(a("input",{"onUpdate:modelValue":k[6]||(k[6]=M=>d.value.email=M),type:"email",required:"",placeholder:"请输入邮箱",class:"form-input"},null,512),[[pe,d.value.email]])]),a("div",uu,[k[27]||(k[27]=a("label",null,"密码",-1)),oe(a("input",{"onUpdate:modelValue":k[7]||(k[7]=M=>d.value.password=M),type:"password",required:"",placeholder:"至少6位",class:"form-input",minlength:"6"},null,512),[[pe,d.value.password]])]),a("div",cu,[k[28]||(k[28]=a("label",null,"确认密码",-1)),oe(a("input",{"onUpdate:modelValue":k[8]||(k[8]=M=>d.value.confirmPassword=M),type:"password",required:"",placeholder:"请再次输入密码",class:"form-input"},null,512),[[pe,d.value.confirmPassword]])]),g.value?(V(),P("div",du,[k[29]||(k[29]=a("div",{class:"progress-text"},"正在计算工作量证明...",-1)),a("div",fu,[a("div",{class:"progress-fill",style:zt({width:Math.min(b.value/1e3,100)+"%"})},null,4)])])):B("",!0),a("button",{type:"submit",disabled:n.value||g.value,class:"auth-submit-btn"},j(g.value?"计算中...":n.value?"注册(不可用)中...":"注册(不可用)"),9,pu)],32)):B("",!0),o.value==="verify-email"?(V(),P("form",{key:4,onSubmit:qe(Pe,["prevent"]),class:"auth-form"},[k[32]||(k[32]=a("div",{class:"form-title"},"邮箱验证",-1)),a("div",hu," 我们已向 "+j(F.value||_.value.email)+" 发送了验证码,请查收邮件并输入验证码。 ",1),a("div",mu,[k[30]||(k[30]=a("label",null,"邮箱",-1)),oe(a("input",{"onUpdate:modelValue":k[9]||(k[9]=M=>_.value.email=M),type:"email",required:"",placeholder:"请输入邮箱",class:"form-input",readonly:!!F.value},null,8,vu),[[pe,_.value.email]])]),a("div",gu,[k[31]||(k[31]=a("label",null,"验证码",-1)),oe(a("input",{"onUpdate:modelValue":k[10]||(k[10]=M=>_.value.code=M),type:"text",required:"",placeholder:"请输入6位验证码",class:"form-input",maxlength:"6"},null,512),[[pe,_.value.code]])]),a("button",{type:"submit",disabled:n.value,class:"auth-submit-btn"},j(n.value?"验证中...":"验证邮箱"),9,_u),a("div",yu,[a("button",{type:"button",onClick:Et,disabled:n.value,class:"link-btn"}," 重新发送验证码 ",8,bu)])],32)):B("",!0),o.value==="forgot-password"?(V(),P("form",{key:5,onSubmit:qe(Re,["prevent"]),class:"auth-form"},[k[35]||(k[35]=a("div",{class:"form-title"},"忘记密码",-1)),k[36]||(k[36]=a("div",{class:"form-description"}," 请输入您的邮箱地址,我们将向您发送重置密码的验证码。 ",-1)),a("div",wu,[k[33]||(k[33]=a("label",null,"邮箱",-1)),oe(a("input",{"onUpdate:modelValue":k[11]||(k[11]=M=>S.value.email=M),type:"email",required:"",placeholder:"请输入注册(不可用)时使用的邮箱",class:"form-input"},null,512),[[pe,S.value.email]])]),g.value?(V(),P("div",ku,[k[34]||(k[34]=a("div",{class:"progress-text"},"正在计算工作量证明...",-1)),a("div",xu,[a("div",{class:"progress-fill",style:zt({width:Math.min(b.value/1e3,100)+"%"})},null,4)])])):B("",!0),a("button",{type:"submit",disabled:n.value||g.value,class:"auth-submit-btn"},j(g.value?"计算中...":n.value?"发送中...":"发送重置码"),9,Cu)],32)):B("",!0),o.value==="reset-password"?(V(),P("form",{key:6,onSubmit:qe(Me,["prevent"]),class:"auth-form"},[k[41]||(k[41]=a("div",{class:"form-title"},"重置密码",-1)),k[42]||(k[42]=a("div",{class:"form-description"}," 请输入您收到的验证码和新密码。 ",-1)),a("div",Su,[k[37]||(k[37]=a("label",null,"邮箱",-1)),oe(a("input",{"onUpdate:modelValue":k[12]||(k[12]=M=>w.value.email=M),type:"email",required:"",placeholder:"请输入邮箱",class:"form-input",readonly:""},null,512),[[pe,w.value.email]])]),a("div",Tu,[k[38]||(k[38]=a("label",null,"验证码",-1)),oe(a("input",{"onUpdate:modelValue":k[13]||(k[13]=M=>w.value.code=M),type:"text",required:"",placeholder:"请输入6位验证码",class:"form-input",maxlength:"6"},null,512),[[pe,w.value.code]])]),a("div",Eu,[k[39]||(k[39]=a("label",null,"新密码",-1)),oe(a("input",{"onUpdate:modelValue":k[14]||(k[14]=M=>w.value.password=M),type:"password",required:"",placeholder:"请输入新密码(至少6位)",class:"form-input",minlength:"6"},null,512),[[pe,w.value.password]])]),a("div",Au,[k[40]||(k[40]=a("label",null,"确认新密码",-1)),oe(a("input",{"onUpdate:modelValue":k[15]||(k[15]=M=>w.value.confirmPassword=M),type:"password",required:"",placeholder:"请再次输入新密码",class:"form-input"},null,512),[[pe,w.value.confirmPassword]])]),a("button",{type:"submit",disabled:n.value,class:"auth-submit-btn"},j(n.value?"重置中...":"重置密码"),9,Iu)],32)):B("",!0)])),X(Vr,{"error-message":i.value,"success-message":u.value,duration:3e3,"auto-close":!0,onClearError:k[16]||(k[16]=M=>i.value=""),onClearSuccess:k[17]||(k[17]=M=>u.value="")},null,8,["error-message","success-message"])]))}},[["__scopeId","data-v-d19c4dd7"]]);class St{static async getLinks(t,s={}){try{const o={},{linkType:n,platform:r,page:l=1,limit:i=5,sortBy:u="created_at",sortOrder:m="desc"}=s;l&&(o.page=l),i&&(o.limit=i),u&&(o.sort_by=u),m&&(o.sort_order=m),n&&(o.type=n==="bt"?"magnet":n),r&&(o.platform=r);const d=await xt.getMovieLinks(t,o);if(!d.success)throw d.error==="NOT_FOUND"||d.status===404?(console.log("电影不存在,返回空结果"),new Error("电影不存在")):(console.error("获取链接失败:",d.error),new Error(`获取链接失败: ${d.error}`));const _=d.data||{};let S=_.links||[];const w=_.pagination||{};Array.isArray(S)||(console.warn("API返回的links不是数组格式:",S),S=[]);const g=S.map(b=>({...b,up_votes:b.likes_count||0,down_votes:b.dislikes_count||0,score:(b.likes_count||0)-(b.dislikes_count||0),user_vote_type:b.user_vote_type==="like"?"up":b.user_vote_type==="dislike"?"down":b.user_vote_type||"",user_display_name:b.username||"匿名用户"}));return{success:!0,data:g,pagination:w,count:g.length,total:w.total||0}}catch(o){return console.error("获取链接服务错误:",o),{success:!1,error:o.message||"获取链接失败",data:[],pagination:{page:1,limit:5,total:0,pages:0},count:0,total:0}}}static async addLink(t){try{const{movieId:s,linkType:o,platform:n,url:r,extractCode:l,title:i,quality:u,size:m,has_4k:d,has_hdr:_,has_dolby_atmos:S,has_subtitles:w}=t;if(!s||!o||!r)throw new Error("缺少必填字段:movieId, linkType, url");if(!["netdisk","bt","online"].includes(o))throw new Error("无效的链接类型");if(l&&l.length>10)throw new Error("提取码长度不能超过10个字符");const g=await $e.getChallenge();if(!g.success)throw new Error("获取工作量证明挑战失败");const{challenge:b,difficulty:F}=g.data,N=await no(b,F),G={title:i||"",url:r.trim(),type:o==="bt"?"magnet":o,password:l||"",quality:u||"",size:m||"",has_4k:!!d,has_hdr:!!_,has_dolby_atmos:!!S,has_subtitles:!!w,proof_of_work:N};o==="netdisk"&&n&&n.trim()&&(G.platform=n.trim());const Q=await xt.addMovieLink(s,G);if(!Q.success)throw console.error("添加链接失败:",Q.error),new Error(`添加链接失败: ${Q.error}`);return{success:!0,data:Q.data,message:"链接添加成功"}}catch(s){return console.error("添加链接服务错误:",s),{success:!1,error:s.message||"添加链接失败"}}}static async deleteLink(t,s){try{if(!s)throw new Error("链接ID不能为空");if(!t)throw new Error("电影ID不能为空");if(!ne.isAuthenticated.value)throw new Error("用户未登录(不可用)");const o=await xt.deleteMovieLink(t,s);if(!o.success)throw console.error("删除链接失败:",o.error),new Error(`删除链接失败: ${o.error}`);return{success:!0,message:o.message||"链接删除成功"}}catch(o){return console.error("删除链接服务错误:",o),{success:!1,error:o.message||"删除链接失败"}}}static async updateLink(t,s){try{if(!t)throw new Error("链接ID不能为空");if(!ne.isAuthenticated.value)throw new Error("用户未登录(不可用)");if(!s.url||!s.linkType)throw new Error("链接地址和类型不能为空");const o={title:s.title||"",url:s.url,type:s.linkType,platform:s.platform||"",password:s.extractCode||"",size:s.size||"",has_4k:s.has_4k||!1,has_hdr:s.has_hdr||!1,has_dolby_atmos:s.has_dolby_atmos||!1,has_subtitles:s.has_subtitles||!1},n=await xt.updateMovieLink(t,o);if(!n.success)throw console.error("修改链接失败:",n.error),new Error(`修改链接失败: ${n.error}`);return{success:!0,message:n.message||"链接修改成功",data:n.data}}catch(o){return console.error("修改链接服务错误:",o),{success:!1,error:o.message||"修改链接失败"}}}static async voteLink(t,s){try{if(!t||!s)throw new Error("链接ID和投票类型不能为空");if(!["up","down"].includes(s))throw new Error("无效的投票类型");if(!ne.isAuthenticated.value)throw new Error("用户未登录(不可用)");const o=s==="up"?"like":"dislike",n=await xt.voteLink(t,o);if(!n.success)throw console.error("投票失败:",n.error),new Error(`投票失败: ${n.error}`);const r=n.data||{};return{success:!0,message:`${s==="up"?"点赞":"点踩"}成功`,data:{up_votes:r.likes_count||0,down_votes:r.dislikes_count||0,user_vote_type:r.user_vote_type==="like"?"up":r.user_vote_type==="dislike"?"down":null}}}catch(o){return console.error("投票服务错误:",o),{success:!1,error:o.message||"投票失败"}}}static async removeVote(t,s=0,o=0,n="up"){try{if(!t)throw new Error("链接ID不能为空");if(!ne.isAuthenticated.value)throw new Error("用户未登录(不可用)");const r=n==="up"?"like":"dislike",l=await xt.removeVote(t,r);if(!l.success)throw console.error("取消投票失败:",l.error),new Error(`取消投票失败: ${l.error}`);const i=l.data||{};console.log("removeVote API原始响应:",i);let u,m;if(i.likes_count!==void 0&&i.dislikes_count!==void 0){const d=Math.max(0,i.likes_count||0),_=Math.max(0,i.dislikes_count||0);i.likes_count<0||i.dislikes_count<0?(console.warn("API返回负数,使用本地计算:",i),n==="up"?(u=Math.max(0,s-1),m=o):(u=s,m=Math.max(0,o-1))):(u=d,m=_),console.log("使用API返回数据:",{finalUpVotes:u,finalDownVotes:m,apiUpVotes:d,apiDownVotes:_})}else n==="up"?(u=Math.max(0,s-1),m=o):(u=s,m=Math.max(0,o-1)),console.log("使用本地计算数据:",{finalUpVotes:u,finalDownVotes:m,currentUpVotes:s,currentDownVotes:o,voteType:n});return{success:!0,message:"取消投票成功",data:{up_votes:u,down_votes:m,user_vote_type:null}}}catch(r){return console.error("取消投票服务错误:",r),{success:!1,error:r.message||"取消投票失败"}}}static async reportLink(t,s,o=""){try{if(!t||!s)throw new Error("链接ID和反馈类型不能为空");if(!ne.isAuthenticated.value)throw new Error("用户未登录(不可用)");const n={link_id:t,type:s.trim(),reason:o.trim()||null},r=await xt.reportLink(n);if(!r.success)throw console.error("反馈失败:",r.error),new Error(`反馈失败: ${r.error}`);return{success:!0,data:r.data,message:"反馈提交成功"}}catch(n){return console.error("反馈服务错误:",n),{success:!1,error:n.message||"反馈失败"}}}}const Uu="data:image/svg+xml,%3c?xml%20version='1.0'%20standalone='no'?%3e%3c!DOCTYPE%20svg%20PUBLIC%20'-//W3C//DTD%20SVG%201.1//EN'%20'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3e%3csvg%20t='1756543843235'%20class='icon'%20viewBox='0%200%201024%201024'%20version='1.1'%20xmlns='http://www.w3.org/2000/svg'%20p-id='20280'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20width='200'%20height='200'%3e%3cpath%20d='M512%20330.666667c14.933333%200%2029.866667%204.266667%2040.533333%2014.933333l277.33333399%20234.666667c27.733333%2023.466667%2029.866667%2064%208.53333301%2089.6-23.466667%2027.733333-64%2029.866667-89.6%208.53333299L512%20477.866667l-236.8%20200.53333299c-27.733333%2023.466667-68.266667%2019.19999999-89.6-8.53333299-23.466667-27.733333-19.19999999-68.266667%208.53333301-89.6l277.33333399-234.666667c10.666667-10.666667%2025.6-14.933333%2040.533333-14.933333z'%20fill='currentColor'%20p-id='20281'%3e%3c/path%3e%3c/svg%3e",$u={name:"CustomSelect",props:{modelValue:{type:[String,Number],default:""},options:{type:Array,required:!0,default:()=>[]},placeholder:{type:String,default:"请选择"}},emits:["update:modelValue","change"],data(){return{isOpen:!1}},computed:{selectedLabel(){const e=this.options.find(t=>t.value===this.modelValue);return e?e.label:""}},mounted(){document.addEventListener("click",this.closeDropdown)},beforeUnmount(){document.removeEventListener("click",this.closeDropdown)},methods:{toggleDropdown(){this.isOpen=!this.isOpen},selectOption(e){this.$emit("update:modelValue",e.value),this.$emit("change",e.value),this.isOpen=!1},closeDropdown(){this.isOpen=!1}}},Pu={class:"selected-text"},Mu={class:"select-dropdown"},Lu=["onClick"];function Du(e,t,s,o,n,r){return V(),P("div",{class:_e(["custom-select",{"is-open":n.isOpen}]),onClick:t[1]||(t[1]=qe(()=>{},["stop"]))},[a("div",{class:"select-trigger",onClick:t[0]||(t[0]=(...l)=>r.toggleDropdown&&r.toggleDropdown(...l))},[a("span",Pu,j(r.selectedLabel||s.placeholder),1),a("img",{src:Uu,class:_e(["arrow",{"arrow-up":n.isOpen}]),alt:"箭头"},null,2)]),oe(a("div",Mu,[(V(!0),P(Fe,null,Vo(s.options,l=>(V(),P("div",{class:_e(["select-option",{selected:l.value===s.modelValue}]),key:l.value,onClick:i=>r.selectOption(l)},j(l.label),11,Lu))),128))],512),[[to,n.isOpen]])],2)}const Ft=Ke($u,[["render",Du],["__scopeId","data-v-3b2cba4f"]]),Ou={name:"LinkItemSkeleton"},Fu={class:"link-item skeleton"};function Ru(e,t,s,o,n,r){return V(),P("div",Fu,t[0]||(t[0]=[ir('<div class="link-header" data-v-115afd35><div class="platform-badge skeleton-element" data-v-115afd35><div class="skeleton-icon" data-v-115afd35></div></div><div class="link-meta" data-v-115afd35><div class="skeleton-element skeleton-language" data-v-115afd35></div></div></div><div class="link-content" data-v-115afd35><div class="link-title-row" data-v-115afd35><div class="skeleton-element skeleton-title" data-v-115afd35></div><div class="expand-arrow" data-v-115afd35><div class="skeleton-element skeleton-arrow" data-v-115afd35></div></div></div></div>',2)]))}const Bu=Ke(Ou,[["render",Ru],["__scopeId","data-v-115afd35"]]),Nu=["checked"],qu={key:0,class:"checkbox-label"},Tt=Ke({__name:"CheckBox",props:{modelValue:{type:Boolean,default:!1},label:{type:String,default:""},color:{type:String,default:"blue",validator:e=>["blue","green","purple","red"].includes(e)}},emits:["update:modelValue"],setup(e){return(t,s)=>(V(),P("label",{class:_e(["ios-checkbox",e.color])},[a("input",{type:"checkbox",checked:e.modelValue,onChange:s[0]||(s[0]=o=>t.$emit("update:modelValue",o.target.checked))},null,40,Nu),s[1]||(s[1]=a("div",{class:"checkbox-wrapper"},[a("div",{class:"checkbox-bg"}),a("svg",{fill:"none",viewBox:"0 0 24 24",class:"checkbox-icon"},[a("path",{"stroke-linejoin":"round","stroke-linecap":"round","stroke-width":"3",stroke:"currentColor",d:"M4 12L10 18L20 6",class:"check-path"})])],-1)),e.label?(V(),P("span",qu,j(e.label),1)):B("",!0)],2))}},[["__scopeId","data-v-150f8c13"]]),zu={class:"tooltip"},ju={class:"tooltip"},Ur=Ke({__name:"CopyTooltip",props:{text:{type:String,required:!0},type:{type:String,default:"url",validator:e=>["url","code"].includes(e)}},emits:["copy-success","copy-error"],setup(e,{emit:t}){const s=e,o=t,n=L(!1),r=Ue(()=>n.value?"已复制":s.type==="url"?"点击复制链接(右键打开)":"点击复制提取码"),l=u=>u,i=async()=>{try{await navigator.clipboard.writeText(s.text),n.value=!0,o("copy-success",s.text),setTimeout(()=>{n.value=!1},2e3)}catch(u){console.error("复制失败:",u),o("copy-error",u)}};return(u,m)=>e.type==="url"?(V(),P("span",{key:0,class:_e(["copy-item",{copied:n.value}]),onClick:i},[Jt(j(l(e.text))+" ",1),a("span",zu,j(r.value),1)],2)):e.type==="code"?(V(),P("code",{key:1,class:_e(["extract-code",{copied:n.value}]),onClick:i},[Jt(j(e.text)+" ",1),a("span",ju,j(r.value),1)],2)):B("",!0)}},[["__scopeId","data-v-aaaa00e5"]]),Hu={quark:{domains:["pan.quark.cn"],patterns:[/https?:\/\/pan\.quark\.cn\/s\/[a-zA-Z0-9]+/]},ali:{domains:["www.aliyundrive.com","www.alipan.com"],patterns:[/https?:\/\/www\.aliyundrive\.com\/s\/[a-zA-Z0-9]+/,/https?:\/\/www\.alipan\.com\/s\/[a-zA-Z0-9]+/]},baidu:{domains:["pan.baidu.com"],patterns:[/https?:\/\/pan\.baidu\.com\/s\/[a-zA-Z0-9]+/]},tianyi:{domains:["cloud.189.cn"],patterns:[/https?:\/\/cloud\.189\.cn\/t\/[a-zA-Z0-9]+/]},mobile:{domains:["caiyun.139.com","yun.139.com"],patterns:[/https?:\/\/caiyun\.139\.com\/w\/i\/[a-zA-Z0-9]+/,/https?:\/\/yun\.139\.com\/shareweb\/#\/w\/i\/[a-zA-Z0-9]+/]},115:{domains:["115cdn.com"],patterns:[/https?:\/\/115cdn\.com\/s\/[a-zA-Z0-9]+/]},xunlei:{domains:["pan.xunlei.com"],patterns:[/https?:\/\/pan\.xunlei\.com\/s\/[a-zA-Z0-9]+/]},uc:{domains:["drive.uc.cn"],patterns:[/https?:\/\/drive\.uc\.cn\/s\/[a-zA-Z0-9]+/]},"123pan":{domains:["www.123684.com"],patterns:[/https?:\/\/www\.123684\.com\/s\/[a-zA-Z0-9\-]+/]}},Ku=/^magnet:\?xt=urn:btih:[a-fA-F0-9]{32,40}/;function Wu(e){if(!e||typeof e!="string")return{type:null,platform:null,isValid:!1};const t=e.trim();if(Ku.test(t))return{type:"bt",platform:null,isValid:!0};for(const[s,o]of Object.entries(Hu))try{const n=new URL(t);if(o.domains.includes(n.hostname)&&o.patterns.some(l=>l.test(t)))return{type:"netdisk",platform:s,isValid:!0}}catch{continue}return/^https?:\/\/.+/.test(t)?{type:"online",platform:null,isValid:!0}:{type:null,platform:null,isValid:!1}}function $r(e){if(!e||typeof e!="string")return null;const t=[/[?&]password=([a-zA-Z0-9]+)/i,/[?&]pwd=([a-zA-Z0-9]+)/i,/#([a-zA-Z0-9]{4})$/,/提取码[::]\s*([a-zA-Z0-9]+)/i,/密码[::]\s*([a-zA-Z0-9]+)/i,/访问码[::]\s*([a-zA-Z0-9]+)/i,/验证码[::]\s*([a-zA-Z0-9]+)/i,/code[::]\s*([a-zA-Z0-9]+)/i];for(const s of t){const o=e.match(s);if(o&&o[1])return o[1]}return null}function Gu(e){if(!e||typeof e!="string")return"";let t=e.trim();const s=t.match(/(https?:\/\/[^\s]+)/i);if(s)return s[1];const o=t.match(/(magnet:\?[^\s]+)/i);return o?o[1]:t}function Pr(e){if(!e||typeof e!="string")return{has_4k:!1,has_hdr:!1,has_dolby_atmos:!1,file_size:null};e.toLowerCase();const t=/\b(4k|4K|2160p|2160P)\b/i.test(e),s=/\b(hdr|HDR)\b/i.test(e),o=/\b(ddp[\d\.]*|DDP[\d\.]*|杜比全景声|dolby\s*atmos|Dolby\s*Atmos|atmos|Atmos)\b/i.test(e),n=[/[\(\[\(](\d+(?:\.\d+)?[KMGT]B?)[\)\]\)]/gi,/[\(\[\(](\d+(?:\.\d+)?[kmgt]b?)[\)\]\)]/gi];let r=null;for(const l of n){const i=e.match(l);if(i&&i.length>0){const u=i.map(m=>{const d=m.match(/(\d+(?:\.\d+)?[KMGTkmgt]B?)/i);return d?d[1].toUpperCase():null}).filter(Boolean);if(u.length>0){r=u.join(" + ");break}}}return{has_4k:t,has_hdr:s,has_dolby_atmos:o,file_size:r}}function Mr(e){const t=$r(e),s=Gu(e),o=Wu(s),n=$r(s),r=t||n;return{linkType:o.type||"",platform:o.platform||"",extractCode:r||"",cleanedUrl:s,isValid:o.isValid}}const Qu={class:"link-manager"},Zu={key:0,class:"modal-overlay"},Yu={class:"modal-content"},Ju={class:"modal-body"},Xu={class:"form-row"},ec={class:"form-group"},tc={class:"form-row"},sc={key:0,class:"form-group"},oc={key:1,class:"form-group"},nc={class:"input-wrapper"},rc={class:"form-group"},lc={class:"input-wrapper"},ic={class:"form-row"},ac={class:"form-group"},uc={class:"input-wrapper"},cc={class:"form-row"},dc={class:"form-group"},fc={class:"input-wrapper"},pc={class:"form-group"},hc={class:"checkbox-group"},mc={class:"form-actions"},vc=["disabled"],gc={key:1,class:"modal-overlay"},_c={class:"modal-content"},yc={class:"modal-body"},bc={class:"form-row"},wc={class:"form-group"},kc={class:"form-row"},xc={key:0,class:"form-group"},Cc={key:1,class:"form-group"},Sc={class:"input-wrapper"},Tc={class:"form-group"},Ec={class:"input-wrapper"},Ac={class:"form-row"},Ic={class:"form-group"},Vc={class:"input-wrapper"},Uc={class:"form-row"},$c={class:"form-group"},Pc={class:"input-wrapper"},Mc={class:"form-group"},Lc={class:"checkbox-group"},Dc={class:"form-actions"},Oc=["disabled"],Fc={class:"links-section"},Rc={class:"filter-bar"},Bc={class:"filter-controls"},Nc=["disabled"],qc={key:0,class:"links-list"},zc={key:1,class:"links-list"},jc=["onClick"],Hc={class:"link-header"},Kc={key:0,class:"platform-badge"},Wc=["src","alt"],Gc={class:"link-meta"},Qc={key:0,class:"language"},Zc={key:1,class:"file-size"},Yc={key:2,class:"feature-tags"},Jc={key:0,class:"feature-tag feature-4k"},Xc={key:1,class:"feature-tag feature-hdr"},ed={key:2,class:"feature-tag feature-dolby"},td={key:3,class:"feature-tag feature-subtitle"},sd={class:"link-content"},od={class:"link-title-row"},nd={class:"link-details"},rd=["onContextmenu"],ld={class:"vote-section"},id=["onClick","disabled"],ad={viewBox:"0 0 100 100",class:"vote-icon",xmlns:"http://www.w3.org/2000/svg"},ud=["fill"],cd=["onClick","disabled"],dd={viewBox:"0 0 100 100",class:"vote-icon down-icon",xmlns:"http://www.w3.org/2000/svg"},fd=["fill"],pd={class:"action-buttons"},hd=["onClick"],md=["onClick"],vd=["onClick"],gd={class:"link-footer"},_d={class:"author"},yd={class:"date"},bd={key:0,class:"report-count"},wd={key:2,class:"login-prompt"},kd={key:3,class:"empty-state"},xd={key:2,class:"pagination"},Cd=["disabled"],Sd={class:"pagination-info"},Td=["disabled"],Ed={key:0,class:"modal-overlay"},Ad={class:"modal-content"},Id={class:"modal-body"},Vd={class:"form-actions"},Ud=["disabled"],$d={key:1,class:"modal-overlay"},Pd={class:"modal-content"},Md={class:"modal-body"},Ld={class:"form-group"},Dd={class:"form-group"},Od={class:"input-wrapper"},Fd={class:"form-actions"},Rd=["disabled"],Bd=800,Ss="doubanflix_link_draft",Nd=Ke({__name:"LinkManager",props:{movieId:{type:String,required:!0},linkType:{type:String,default:"all"}},setup(e){const t=e,s=Ue(()=>t.linkType),o=L([]),n=L({total:0,netdisk:0,bt:0,online:0,platforms:{}}),r=L(!1),l=L(""),i=L(""),u=L(!1),m=L(!1),d=L(null),_=L(!1),S=L(new Set),w=L({page:1,limit:5,total:0,pages:0}),g=Pt({linkType:"",platform:"",url:"",extractCode:"",title:"",size:"",has_4k:!1,has_hdr:!1,has_dolby_atmos:!1,has_subtitles:!1}),b=Pt({id:"",linkType:"",platform:"",url:"",extractCode:"",title:"",size:"",has_4k:!1,has_hdr:!1,has_dolby_atmos:!1,has_subtitles:!1}),F=Pt({platform:"",sortBy:"created_at"}),N=[{value:"",label:"请选择类型"},{value:"netdisk",label:"网盘"},{value:"bt",label:"BT"},{value:"online",label:"在线"}],G=[{value:"",label:"请选择平台"},{value:"quark",label:"夸克网盘"},{value:"ali",label:"阿里云盘"},{value:"baidu",label:"百度网盘"},{value:"tianyi",label:"天翼云盘"},{value:"mobile",label:"移动云盘"},{value:"115",label:"115网盘"},{value:"xunlei",label:"迅雷网盘"},{value:"uc",label:"UC网盘"},{value:"123pan",label:"123网盘"}];He(()=>g.url,(h,f)=>{if(h&&h.trim()){const v=Mr(h.trim());v.isValid&&(g.url=v.cleanedUrl,g.linkType=v.linkType,g.platform=v.platform,g.extractCode=v.extractCode)}else(!h||h.trim()==="")&&(g.linkType="",g.platform="",g.extractCode="")}),He(()=>b.url,(h,f)=>{if(h&&h.trim()){const v=Mr(h.trim());v.isValid&&(b.url=v.cleanedUrl,b.linkType=v.linkType,b.platform=v.platform,b.extractCode=v.extractCode)}else(!h||h.trim()==="")&&(b.linkType="",b.platform="",b.extractCode="")}),He(()=>g.title,h=>{if(h&&h.trim()){const f=Pr(h.trim());g.has_4k=f.has_4k,g.has_hdr=f.has_hdr,g.has_dolby_atmos=f.has_dolby_atmos,f.file_size&&!g.size&&(g.size=f.file_size)}}),He(()=>b.title,h=>{if(h&&h.trim()){const f=Pr(h.trim());b.has_4k=f.has_4k,b.has_hdr=f.has_hdr,b.has_dolby_atmos=f.has_dolby_atmos,f.file_size&&!b.size&&(b.size=f.file_size)}});const Q=[{value:"created_at",label:"按时间"},{value:"likes_count",label:"按点赞数"},{value:"like_rate",label:"按点赞率"}],R=Ue(()=>{switch(m.value?b.linkType:g.linkType){case"netdisk":return G;default:return[{value:"",label:"请选择平台"}]}}),de=Ue(()=>{const h=[{value:"",label:"所有平台"}];switch(t.linkType){case"netdisk":return h.concat([{value:"quark",label:"夸克"},{value:"ali",label:"阿里"},{value:"baidu",label:"百度"},{value:"tianyi",label:"天翼"},{value:"mobile",label:"移动"},{value:"115",label:"115"},{value:"xunlei",label:"迅雷"},{value:"uc",label:"UC"},{value:"123",label:"123"}]);default:return h}}),he=Ue(()=>ne.isAuthenticated.value),me=async(h=1)=>{if(t.movieId){if(!he.value){o.value=[],w.value={page:1,limit:5,total:0,pages:0};return}r.value=!0,l.value="";try{const f=t.linkType==="all"?void 0:t.linkType,v=await St.getLinks(t.movieId,{linkType:f,platform:F.platform||void 0,sortBy:F.sortBy,sortOrder:"desc",page:h,limit:w.value.limit});v.success?(o.value=v.data,v.pagination&&(w.value={page:v.pagination.page||1,limit:v.pagination.limit||5,total:v.pagination.total||0,pages:v.pagination.pages||0})):v.error&&v.error.includes("电影不存在")?(console.log("电影不存在,静默处理"),o.value=[],w.value={page:1,limit:5,total:0,pages:0}):v.error&&(v.error.includes("请先登录(不可用)")||v.error.includes("登录(不可用)已过期"))?console.log("认证错误,静默处理:",v.error):l.value=v.error}catch(f){f.message&&f.message.includes("电影不存在")?(console.log("电影不存在,静默处理"),o.value=[],w.value={page:1,limit:5,total:0,pages:0}):f.message&&(f.message.includes("请先登录(不可用)")||f.message.includes("登录(不可用)已过期"))?console.log("认证错误,静默处理:",f.message):(l.value="加载链接失败",console.error("加载链接错误:",f))}finally{r.value=!1}}},Pe=async()=>{if(t.movieId)try{const h=await St.getLinkStats(t.movieId);h.success&&(n.value=h.data)}catch(h){console.error("加载统计失败:",h)}},Et=async()=>{if(he.value){_.value=!0,l.value="";try{const h=await St.addLink({movieId:t.movieId,linkType:g.linkType,platform:g.platform,url:g.url,extractCode:g.extractCode,title:g.title,size:g.size,has_4k:g.has_4k,has_hdr:g.has_hdr,has_dolby_atmos:g.has_dolby_atmos,has_subtitles:g.has_subtitles});h.success?(i.value=h.message,it(),p(),u.value=!1,await me(),await Pe(),setTimeout(()=>{i.value=""},3e3)):h.error&&(h.error.includes("请先登录(不可用)")||h.error.includes("登录(不可用)已过期"))?console.log("认证错误,静默处理:",h.error):l.value=h.error}catch(h){h.message&&(h.message.includes("请先登录(不可用)")||h.message.includes("登录(不可用)已过期"))?console.log("认证错误,静默处理:",h.message):(l.value="添加链接失败",console.error("添加链接错误:",h))}finally{_.value=!1}}},Re=L(new Map),Me=L(new Map),We=L(new Map),ht=async(h,f)=>{if(!he.value)return;const v=o.value.find(Je=>Je.id===h);if(!v)return;if(Re.value.has(h)&&clearTimeout(Re.value.get(h)),We.value.has(h)){const Je=We.value.get(h);Je.cancelled=!0,console.log("取消上一次正在执行的投票操作:",h)}Me.value.has(h)||Me.value.set(h,{originalUserVote:v.user_vote_type,originalUpVotes:v.up_votes||0,originalDownVotes:v.down_votes||0,clickSequence:[],link:v});const K=Me.value.get(h);K.clickSequence.push({voteType:f,timestamp:Date.now()});const De=k(K.originalUserVote,K.clickSequence);let mt=K.originalUpVotes,be=K.originalDownVotes;K.originalUserVote==="up"?De===null?mt=Math.max(0,K.originalUpVotes-1):De==="down"?(mt=Math.max(0,K.originalUpVotes-1),be=K.originalDownVotes+1):mt=K.originalUpVotes:K.originalUserVote==="down"?De===null?be=Math.max(0,K.originalDownVotes-1):De==="up"?(be=Math.max(0,K.originalDownVotes-1),mt=K.originalUpVotes+1):be=K.originalDownVotes:De==="up"?mt=K.originalUpVotes+1:De==="down"&&(be=K.originalDownVotes+1),v.user_vote_type=De,v.up_votes=mt,v.down_votes=be;const vt=setTimeout(async()=>{const Je=Me.value.get(h);if(!Je)return;const fe={cancelled:!1,linkId:h,timestamp:Date.now()};We.value.set(h,fe),Re.value.delete(h),Me.value.delete(h),await q(Je,fe),We.value.get(h)===fe&&We.value.delete(h)},Bd);Re.value.set(h,vt)},q=async(h,f)=>{const{originalUserVote:v,originalUpVotes:K,originalDownVotes:De,clickSequence:mt,link:be}=h,vt=be.id;if(f&&f.cancelled){console.log("投票操作已被取消,跳过API请求:",vt);return}const Je=k(v,mt);if(console.log("分析用户投票意图:",{linkId:vt,originalUserVote:v,clickSequence:mt.map(fe=>fe.voteType),finalIntention:Je,currentUIState:be.user_vote_type,executionId:f==null?void 0:f.timestamp}),Je===v){console.log("用户最终意图与原始状态相同,跳过API请求");return}try{if(f&&f.cancelled){console.log("API请求前检查:投票操作已被取消:",vt);return}let fe;if(Je===null?fe=await St.removeVote(vt,K,De,v):fe=await St.voteLink(vt,Je),f&&f.cancelled){console.log("API请求完成后检查:投票操作已被取消,忽略结果:",vt);return}fe.success?fe.data&&(be.user_vote_type=fe.data.user_vote_type,be.up_votes=fe.data.up_votes||0,be.down_votes=fe.data.down_votes||0):(be.user_vote_type=v,be.up_votes=K,be.down_votes=De,fe.error&&(fe.error.includes("请先登录(不可用)")||fe.error.includes("登录(不可用)已过期"))?console.log("认证错误,静默处理:",fe.error):l.value=fe.error)}catch(fe){if(f&&f.cancelled){console.log("异常处理中检查:投票操作已被取消,忽略错误:",vt);return}be.user_vote_type=v,be.up_votes=K,be.down_votes=De,fe.message&&(fe.message.includes("请先登录(不可用)")||fe.message.includes("登录(不可用)已过期"))?console.log("认证错误,静默处理:",fe.message):(l.value="投票操作失败",console.error("投票请求错误:",fe))}},k=(h,f)=>{if(f.length===0)return h;let v=h;for(const K of f){const{voteType:De}=K;v===De?v=null:v=De}return v},M=async h=>{Ge.value=h.id,Le.value=h.movie_id,At.value=!0},ee=()=>{At.value=!1,Ge.value="",Le.value="",It.value=!1},te=async()=>{if(!(!Ge.value||!Le.value))try{It.value=!0;const h=await St.deleteLink(Le.value,Ge.value);h.success?(i.value=h.message,ee(),await me(),await Pe(),setTimeout(()=>{i.value=""},3e3)):h.error&&(h.error.includes("请先登录(不可用)")||h.error.includes("登录(不可用)已过期"))?console.log("认证错误,静默处理:",h.error):l.value=h.error}catch(h){h.message&&(h.message.includes("请先登录(不可用)")||h.message.includes("登录(不可用)已过期"))?console.log("认证错误,静默处理:",h.message):(l.value="删除链接失败",console.error("删除链接错误:",h))}finally{It.value=!1}},it=()=>{Object.assign(g,{linkType:"",platform:"",url:"",extractCode:"",title:"",size:"",has_4k:!1,has_hdr:!1,has_dolby_atmos:!1,has_subtitles:!1})},At=L(!1),Ge=L(""),Le=L(""),It=L(!1),es=L(!1),Ce=Pt({linkId:"",type:"",reason:""}),at=L(!1),ts=[{value:"invalid_link",label:"无效链接"},{value:"copyright_issue",label:"版权问题"},{value:"malicious_link",label:"恶意链接"},{value:"spam",label:"垃圾信息"},{value:"fake_content",label:"虚假内容"},{value:"other",label:"其他"}],Es=h=>{he.value&&(Ce.linkId=h,Ce.type="invalid_link",Ce.reason="",es.value=!0)},ro=async()=>{if(!Ce.type){he.value&&(l.value="请选择反馈类型");return}at.value=!0,l.value="";try{const h=await St.reportLink(Ce.linkId,Ce.type,Ce.reason);h.success?(i.value=h.message,es.value=!1,await me(),setTimeout(()=>{i.value=""},3e3)):h.error&&(h.error.includes("请先登录(不可用)")||h.error.includes("登录(不可用)已过期"))?console.log("认证错误,静默处理:",h.error):l.value=h.error}catch(h){h.message&&(h.message.includes("请先登录(不可用)")||h.message.includes("登录(不可用)已过期"))?console.log("认证错误,静默处理:",h.message):(l.value="反馈提交失败",console.error("反馈错误:",h))}finally{at.value=!1}},Vt=()=>{es.value=!1,Ce.linkId="",Ce.reason="",Ce.description=""},qr=()=>{const h={linkType:g.linkType,platform:g.platform,url:g.url,extractCode:g.extractCode,title:g.title,language:g.language,has_4k:g.has_4k,has_hdr:g.has_hdr,has_dolby_atmos:g.has_dolby_atmos,has_subtitles:g.has_subtitles,timestamp:Date.now()};Object.values(h).some(v=>v&&v!==""&&typeof v!="number")&&localStorage.setItem(Ss,JSON.stringify(h))},c=()=>{try{const h=localStorage.getItem(Ss);if(h){const f=JSON.parse(h);if(Date.now()-f.timestamp>24*60*60*1e3)localStorage.removeItem(Ss);else return Object.assign(g,{linkType:f.linkType||"",platform:f.platform||"",url:f.url||"",extractCode:f.extractCode||"",title:f.title||"",language:f.language||"",has_4k:f.has_4k||!1,has_hdr:f.has_hdr||!1,has_dolby_atmos:f.has_dolby_atmos||!1,has_subtitles:f.has_subtitles||!1}),!0}}catch(h){console.error("恢复草稿失败:",h),localStorage.removeItem(Ss)}return!1},p=()=>{localStorage.removeItem(Ss)},y=()=>{u.value=!0,c()&&console.log("已恢复草稿内容")},T=()=>{qr(),u.value=!1,it()},x=()=>{m.value=!1,d.value=null,U()},C=h=>{d.value=h,b.id=h.id,b.linkType=h.type,b.platform=h.platform||"",b.url=h.url,b.extractCode=h.password||"",b.title=h.title||"",b.size=h.size||"",b.has_4k=h.has_4k||!1,b.has_hdr=h.has_hdr||!1,b.has_dolby_atmos=h.has_dolby_atmos||!1,b.has_subtitles=h.has_subtitles||!1,m.value=!0},U=()=>{b.id="",b.linkType="",b.platform="",b.url="",b.extractCode="",b.title="",b.size="",b.has_4k=!1,b.has_hdr=!1,b.has_dolby_atmos=!1,b.has_subtitles=!1},I=async()=>{if(!_.value)try{_.value=!0,l.value="";const h=await St.updateLink(b.id,b);h.success?(i.value=h.message,x(),await me(w.value.page),setTimeout(()=>{i.value=""},3e3)):h.error&&(h.error.includes("请先登录(不可用)")||h.error.includes("登录(不可用)已过期"))?console.log("认证错误,静默处理:",h.error):l.value=h.error}catch(h){console.error("修改链接失败:",h),h.message&&(h.message.includes("请先登录(不可用)")||h.message.includes("登录(不可用)已过期"))?console.log("认证错误,静默处理:",h.message):l.value=h.message||"修改链接失败"}finally{_.value=!1}},A=h=>h.hasOwnProperty("is_owner")?he.value&&h.is_owner:he.value&&ne.userId.value===h.user_id,E=h=>({quark:"夸克",ali:"阿里",baidu:"百度",tianyi:"天翼",mobile:"移动",115:"115",xunlei:"迅雷",uc:"UC",123:"123",bilibili:"B站",iqiyi:"爱奇艺",youku:"优酷",tencent:"腾讯",bt:"磁力"})[h]||h,O=h=>{const f={quark:"data:image/svg+xml;base64,"+btoa('<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1756540462038" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4774" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M469.134884 976.133953c-110.258605-9.763721-215.516279-59.534884-290.768372-137.168372-75.490233-78.109767-113.830698-154.552558-132.167442-263.858604-4.762791-28.338605-5.477209-95.970233-1.190698-123.832558 10.24-68.822326 33.101395-134.072558 64.297675-184.32 88.349767-142.407442 236.710698-226.470698 399.598139-226.470698 69.536744 0 132.167442 12.621395 192.416744 39.054884 52.628837 23.099535 110.496744 64.297674 149.313489 106.448372 60.725581 65.964651 91.92186 122.165581 114.783255 206.943256 18.098605 66.917209 18.574884 160.982326 1.428838 227.423255-19.289302 73.585116-45.484651 126.213953-92.636279 184.55814-40.96 50.96186-84.063256 86.92093-140.740466 117.402791-59.534884 32.148837-114.545116 48.104186-184.08186 53.819534-34.053953 2.857674-47.151628 2.857674-80.253023 0z m84.063256-238.615813c11.668837-5.00093 20.71814-19.051163 20.718139-32.625117 0-23.337674 4.524651-49.771163 10.47814-61.44 12.145116-23.813953 28.338605-32.148837 77.395348-39.769302 19.051163-2.857674 38.578605-6.906047 43.341396-8.811163 13.573953-5.953488 24.766512-17.384186 32.148837-33.339535 6.667907-14.526512 6.906047-15.955349 6.906047-53.105116-0.23814-41.19814-1.666977-50.247442-15.955349-87.15907-21.194419-55.486512-76.91907-110.734884-132.167442-130.738604-11.430698-4.048372-33.577674-9.525581-49.294884-12.383256-26.195349-4.286512-31.196279-4.524651-53.819535-1.905117-44.770233 5.23907-72.394419 14.050233-103.352558 32.625117-19.527442 11.906977-20.956279 13.097674-44.532093 36.435349-34.530233 34.053953-52.390698 67.155349-63.345116 116.688372-19.051163 86.92093 15.47907 178.604651 87.873488 233.853023 30.243721 23.099535 74.537674 41.674419 106.686512 44.770232 27.624186 2.857674 66.67907 1.190698 76.91907-3.095813z" fill="#3A25DD" p-id="4775"></path></svg>'),ali:"data:image/svg+xml;base64,"+btoa('<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1756540539411" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="5761" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M841.984 576.554667a18.816 18.816 0 0 1-13.184-21.973334c41.941333-200.448-75.605333-402.346667-269.226667-456.021333-199.509333-55.125333-405.333333 67.285333-459.52 273.109333v0.981334a460.586667 460.586667 0 0 0 62.464 371.2 439.893333 439.893333 0 0 0 208.768 167.765333c236.544 89.301333 491.178667-44.373333 566.272-283.349333a23.04 23.04 0 0 0-15.573333-29.269334l-80-22.442666z m-393.130667 194.133333c-72.704-20.010667-133.162667-68.266667-170.752-135.125333a298.112 298.112 0 0 1-28.288-219.989334C282.026667 293.12 404.48 220.501333 523.52 253.141333c112.64 31.232 182.4 146.346667 161.92 262.912a21.205333 21.205333 0 0 0 15.104 24.405334l75.605333 20.949333a17.493333 17.493333 0 0 1 11.733334 22.954667c-47.36 142.933333-195.114667 225.834667-338.986667 186.325333z" fill="#6666FF" p-id="5762"></path></svg>'),baidu:"data:image/svg+xml;base64,"+btoa('<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1756540564286" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="6851" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M292.571429 435.931429c-1.462857-11.702857-2.925714-24.868571-2.925715-38.034286C289.645714 275.017143 389.12 175.542857 512 175.542857c122.88 0 222.354286 99.474286 222.354286 223.817143 0 13.165714-1.462857 24.868571-2.925715 38.034286 112.64 0 204.8 92.16 204.8 206.262857 0 112.64-92.16 204.8-206.262857 204.8-57.051429 0-109.714286-23.405714-146.285714-61.44-19.017143-20.48-19.017143-52.662857 0-71.68 20.48-20.48 52.662857-20.48 71.68 0l1.462857 1.462857c19.017143 17.554286 43.885714 29.257143 71.68 29.257143 57.051429 0 103.862857-46.811429 103.862857-103.862857 0-57.051429-46.811429-103.862857-103.862857-103.862857-26.331429 0-49.737143 10.24-68.754286 26.331428l-1.462857 1.462857-5.851428 5.851429-4.388572 4.388571-207.725714 210.651429c-38.034286 38.034286-89.234286 61.44-146.285714 61.44C179.931429 848.457143 87.771429 756.297143 87.771429 642.194286c0-112.64 90.697143-204.8 204.8-206.262857m1.462857 310.125714c57.051429 0 103.862857-46.811429 103.862857-103.862857 0-57.051429-46.811429-103.862857-103.862857-103.862857-57.051429 0-103.862857 46.811429-103.862857 103.862857 0 57.051429 46.811429 103.862857 103.862857 103.862857M512 520.777143c67.291429 0 121.417143-54.125714 121.417143-121.417143 0-67.291429-54.125714-121.417143-121.417143-121.417143-67.291429 0-121.417143 54.125714-121.417143 121.417143 0 65.828571 54.125714 121.417143 121.417143 121.417143" fill="#06A7FF" p-id="6852"></path><path d="M631.954286 412.525714v-5.851428c0-27.794286 23.405714-51.2 51.2-51.2s51.2 23.405714 51.2 51.2v5.851428c-7.314286 117.028571-103.862857 209.188571-222.354286 209.188572s-215.04-92.16-222.354286-209.188572v-5.851428c0-27.794286 23.405714-51.2 51.2-51.2s51.2 23.405714 51.2 51.2v5.851428c5.851429 61.44 58.514286 108.251429 119.954286 108.251429 62.902857 0 114.102857-46.811429 119.954286-108.251429" fill="#FF436A" p-id="6853"></path></svg>'),tianyi:"data:image/svg+xml;base64,"+btoa('<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1756540718396" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="8675" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M833.39946667 423.28746667a185.00266667 185.00266667 0 0 0-205.55093334-134.07573333A226.304 226.304 0 0 0 463.0528 217.6c-93.52533333 0-176.5376 58.29973333-209.92 143.01866667A210.80746667 210.80746667 0 0 0 34.13333333 571.01653334c0 116.05333333 94.48106667 210.5344 210.5344 210.5344h281.87306667a41.09653333 41.09653333 0 0 0 0-82.1248H244.66773333a128.54613333 128.54613333 0 0 1-128.34133333-128.4096 128.54613333 128.54613333 0 0 1 157.01333333-125.20106667l40.82346667 9.35253333 8.46506667-41.09653333a143.7696 143.7696 0 0 1 140.42453333-114.34666667c45.73866667 0 89.15626667 22.18666667 116.05333333 59.32373334l17.47626667 24.02986666 28.2624-9.0112a101.5808 101.5808 0 0 1 132.36906667 88.95146667l2.79893333 35.97653333 36.0448 1.8432a117.62346667 117.62346667 0 0 1 111.68426667 117.62346667 117.89653333 117.89653333 0 0 1-128.88746667 117.21386667l-4.36906667-0.54613334a115.3024 115.3024 0 0 1-6.48533333-1.024l-5.12-1.09226666a128.88746667 128.88746667 0 0 1-15.83786667-4.98346667 133.46133333 133.46133333 0 0 1-10.4448-4.7104l-3.75466666-1.91146667a119.73973333 119.73973333 0 0 1-6.82666667-4.16426666l-2.2528-1.36533334a118.23786667 118.23786667 0 0 1-47.78666667-67.65226666h69.4272l-113.73226666-162.47466667-113.73226667 162.47466667h74.41066667c7.23626667 48.46933333 31.88053333 91.27253333 67.44746666 121.78773333l2.18453334 2.048 2.18453333 1.6384a182.39466667 182.39466667 0 0 0 9.216 7.03146667l4.02773333 2.8672c3.75466667 2.52586667 7.5776 4.98346667 11.53706667 7.30453333l3.072 1.77493333c4.36906667 2.4576 8.73813333 4.77866667 13.24373333 6.82666667l1.57013334 0.68266667c15.01866667 6.9632 31.06133333 12.01493333 47.78666666 15.01866666l1.36533334 0.2048c5.12 0.95573333 10.4448 1.6384 15.7696 2.11626667l2.048 0.13653333a203.22986667 203.22986667 0 0 0 46.55786666-1.57013333A200.22613333 200.22613333 0 0 0 989.86666667 618.46186667a199.81653333 199.81653333 0 0 0-156.4672-195.24266667" p-id="8676"></path></svg>'),mobile:"data:image/svg+xml;base64,"+btoa('<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1756540741796" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="9705" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M1020.16 266.88c-44.16 11.52-88.32 21.12-133.12 30.08-28.8 5.76-57.6 11.52-87.04 14.08-35.84 3.84-71.04 5.12-106.88 7.04-81.92 3.84-163.84 2.56-245.76 1.92-64.64-0.64-129.92 0-193.28 13.44-56.96 12.16-111.36 30.08-159.36 64-30.08 21.12-59.52 43.52-94.72 55.68 1.92 5.76 7.04 4.48 10.88 4.48 37.76 1.28 75.52-1.92 112.64-6.4 24.96-3.2 50.56-6.4 75.52-10.24 32-5.12 64-6.4 96-8.32 17.92-1.28 35.84-1.92 53.76 1.28 12.8 1.92 16.64 9.6 10.88 21.12-3.2 7.04-8.96 12.8-14.08 18.56-14.72 15.36-32 28.16-48 42.24-40.96 36.48-80.64 75.52-119.04 115.2-21.12 21.76-41.6 44.16-53.76 72.32-29.44 68.48-26.88 134.4 17.28 195.2 33.92 46.72 85.76 65.28 140.16 75.52 28.16 5.12 56.96 3.2 85.76 3.2 87.04 0 174.08-0.64 261.12 1.28 51.84 1.28 103.04 1.28 154.24-7.04 52.48-8.32 95.36-34.56 125.44-77.44 42.88-60.8 54.4-128.64 37.12-200.96-12.16-51.2-37.12-94.72-80.64-126.08-69.76-49.28-147.84-64-231.68-48.64-32.64 5.76-61.44 20.48-83.2 45.44-43.52 49.92-47.36 107.52-27.52 167.04 17.28 52.48 81.92 81.28 136.96 65.28 24.96-7.04 44.8-21.76 55.04-46.08 8.32-18.56 1.92-35.2-15.36-42.24-2.56 26.88-14.72 38.4-42.88 39.04H640a54.912 54.912 0 0 1-53.12-56.32c0-31.36 26.88-67.84 59.52-78.72 51.84-17.28 98.56-8.32 140.16 27.52 40.96 36.48 55.04 97.92 30.72 140.8-24.32 43.52-64 67.84-111.36 78.08-40.96 8.32-82.56 8.96-124.16 10.88-44.16 1.92-88.32 1.28-132.48-1.28-33.28-1.92-67.2-4.48-99.84-11.52-28.8-6.4-56.96-14.72-79.36-35.2a61.696 61.696 0 0 1-21.76-51.84c2.56-34.56 17.28-64.64 39.68-90.88a3790.08 3790.08 0 0 1 190.72-202.24c25.6-25.6 56.96-40.32 92.8-43.52 32-2.56 63.36-3.84 95.36-5.76 58.88-3.84 117.12-11.52 174.72-27.52 64-17.28 120.96-46.72 161.92-101.12 7.68-9.6 15.36-19.2 18.56-32h-3.84zM869.12 44.8c0 7.68-3.84 13.44-7.04 19.2-19.2 35.84-49.92 58.88-84.48 77.44-48 26.24-99.84 41.6-153.6 49.28-65.92 9.6-132.48 8.32-199.04 7.04-78.08-1.92-156.16 1.92-232.96 16.64-23.04 4.48-46.08 6.4-69.12 9.6-3.84 0-8.32 1.28-14.08 1.92 1.92-1.92 3.2-2.56 4.48-3.84 13.44-7.04 24.32-17.28 33.92-28.8 40.32-48.64 91.52-75.52 153.6-85.12 44.8-7.04 90.24-7.68 135.68-9.6 65.92-1.92 131.2-1.28 197.12-6.4 78.08-5.76 154.24-22.4 228.48-46.08 1.92 0 3.84-0.64 6.4-1.28z" fill="#0090FE" p-id="9706"></path></svg>'),115:"data:image/svg+xml;base64,"+btoa('<svg t="1758974307798" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="13186" width="200" height="200"><path d="M701.004655 35.208896c29.184693-0.150426 57.568137-7.509021 84.900645-17.220197 20.924565 9.561773-3.704368 30.886451-7.559163 44.903699-9.81146 18.4717-18.371416 37.594223-29.084409 55.516408-10.562567 15.618723-29.785374 24.128537-48.4075 23.228027-75.139328-0.100284-150.228513 0-225.367841-0.050142-21.425985-0.851391-42.250266 12.565177-50.960649 32.03767-11.763928 24.329105-25.080212 47.957245-36.193317 72.586179 67.680449 13.216 137.012514 25.430182 198.886723 57.31845 58.670238 29.9358 109.880573 76.740802 139.615804 136.01172 37.294394 72.836889 39.797401 162.54298 5.106298 236.882082C696.149067 753.612827 625.013937 810.830993 545.56956 838.764182c-95.764064 32.989345-205.795063 33.939997-297.453622-12.214183-0.550539-0.751107-1.701758-2.252297-2.302439-3.053546 89.155553 11.914354 183.668113-3.604084 260.560364-51.611471 49.659003-30.836309 89.305979-80.195483 101.069907-138.214898 11.062963-44.803415 2.753717-93.411483-22.577205-131.957381-38.845727-60.021002-102.421694-100.519368-169.70203-121.895211-63.825654-21.926382-131.005706-30.036084-197.685361-37.594223 47.306422-93.110631 93.66117-186.721659 140.567479-280.032858 8.760524-17.020652 28.234041-27.432793 47.206138-26.78197C503.81969 35.208896 602.437755 35.609009 701.004655 35.208896z" fill="#224888" p-id="13187"></path></svg>'),xunlei:"data:image/svg+xml;base64,"+btoa('<svg t="1758974328647" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="14190" width="200" height="200"><path d="M432.64 407.04s199.68-217.6 468.48-322.56c0 0 12.8-5.12 2.56 7.68s-56.32 84.48-66.56 97.28l-35.84 33.28 17.92-5.12-35.84 79.36-46.08 46.08 33.28-10.24-38.4 92.16-40.96 40.96 35.84-20.48s-17.92 38.4-35.84 66.56c0 0 163.84 17.92 302.08 81.92 0 0-76.8 20.48-107.52 28.16l-33.28-7.68 15.36 10.24-35.84 15.36c-2.56 0-28.16-7.68-40.96-2.56 0 0 15.36 5.12 17.92 10.24l-38.4 15.36s-7.68 5.12-15.36 5.12c-5.12 0-38.4-7.68-48.64-2.56 0 0 20.48 10.24 28.16 10.24 0 0-12.8 17.92-122.88 23.04 0 0 81.92 227.84 79.36 258.56-2.56 30.72-48.64-35.84-48.64-35.84s-69.12-76.8-89.6-92.16c-20.48-15.36-79.36-25.6-204.8-104.96s-125.44-181.76-117.76-230.4c7.68-48.64 7.68-84.48-23.04-94.72s-81.92-23.04-189.44-25.6c0 0-17.92-12.8 12.8-12.8 30.72 2.56 112.64 2.56 156.16-5.12 48.64-10.24 66.56-25.6 104.96-20.48 38.4 5.12 87.04 17.92 140.8 71.68z" fill="#1390F2" p-id="14191"></path></svg>'),uc:"data:image/svg+xml;base64,"+btoa('<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1758974377018" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="17084" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M240.32 674.282667c11.093333-57.856 42.837333-102.656 89.450667-136.896 28.458667-20.885333 58.709333-39.338667 88.362666-58.538667 47.36-30.634667 87.018667-67.989333 107.221334-122.304 22.592-60.650667 20.970667-119.701333-20.117334-171.818667-52.053333-66.005333-122.389333-86.208-203.648-71.658666-59.093333 10.581333-107.52 41.173333-149.397333 82.88-17.429333 17.344-32.256 36.778667-43.648 61.354666 3.925333-2.645333 6.037333-4.053333 8.106667-5.482666 22.549333-15.722667 47.36-23.253333 74.986666-22.186667 46.144 1.813333 84.352 41.088 85.397334 87.189333 0.682667 30.336-8.725333 57.386667-26.88 80.704-23.104 29.76-48 58.112-72.298667 86.933334-52.266667 62.08-79.338667 132.672-68.416 214.336 10.965333 82.090667 53.802667 144.064 126.528 183.808 45.845333 25.024 96.149333 33.344 150.378667 32.832-2.922667-1.237333-4.096-1.856-5.333334-2.197334-104.170667-28.672-159.253333-142.016-140.693333-238.933333zM653.184 473.6c42.176 13.888 80.213333 36.138667 118.826667 57.344 40.576 22.293333 83.285333 23.210667 127.018666 10.304 8.533333-2.517333 12.010667-7.168 11.178667-16.042667-1.066667-11.690667-0.448-23.594667-2.197333-35.157333-11.584-76.970667-53.141333-130.026667-126.997334-156.288-9.258667-3.285333-12.224-8.405333-14.976-17.194667-5.290667-16.853333-12.416-33.237333-19.925333-49.28-3.093333-6.613333-9.088-11.84-14.869333-19.050666-5.504 8.234667-10.176 14.357333-13.930667 21.013333-14.122667 24.917333-18.666667 52.373333-19.690667 80.426667-0.298667 8.618667-2.56 14.997333-9.408 19.754666-15.189333 10.538667-29.632 22.549333-45.888 31.082667-34.794667 18.218667-70.549333 34.624-104.96 51.285333 39.018667-0.213333 77.653333 9.237333 115.84 21.802667z m43.456 380.224c-14.826667-3.456-30.058667-5.162667-45.738667-7.765333 0.789333-2.986667 1.365333-5.546667 2.154667-8.064 11.52-36.458667 13.568-73.386667 8.789333-111.36-15.893333-126.421333-143.893333-202.218667-246.506666-180.288-54.613333 11.648-93.269333 42.154667-115.690667 93.226666 82.154667-81.365333 205.12-56.512 255.872 13.781334 33.493333 46.378667 42.602667 97.408 25.472 152-17.173333 54.762667-56.661333 88.533333-111.573333 109.653333 70.634667 1.984 266.624-4.16 290.432-11.733333-2.666667-5.12-4.672-10.453333-7.914667-14.869334-13.845333-18.730667-33.088-29.44-55.296-34.581333z m-158.72-97.877333c-0.490667-64.533333-49.024-117.546667-117.056-117.909334-73.429333-0.362667-118.229333 59.946667-118.229333 117.717334 0 61.76 51.136 118.186667 117.546666 117.12 65.194667-0.042667 118.250667-52.266667 117.76-116.928z m-118.336 53.397333a53.461333 53.461333 0 0 1-53.333333-54.144c0.128-29.312 25.386667-54.464 54.186666-53.973333 29.248 0.490667 54.08 25.344 54.293334 54.314666 0.213333 29.632-24.704 53.930667-55.146667 53.802667z m493.653333-168.576c-5.866667-23.061333-22.058667-35.882667-43.904-41.322667-15.210667-3.818667-31.04-5.290667-46.656-7.296-42.645333-5.504-80.149333-23.210667-116.096-45.994666-72.213333-45.76-150.976-65.92-236.373333-55.978667-14.784 1.728-29.098667 7.402667-43.626667 11.242667l0.768 3.072c9.386667 0 18.88-0.917333 28.16 0.170666 22.570667 2.666667 45.717333 3.861333 67.456 9.898667 77.056 21.44 132.288 71.104 171.669334 139.306667 5.610667 9.749333 11.968 16.277333 22.826666 16.853333 15.616 0.853333 31.488 2.432 46.826667 0.426667a125.013333 125.013333 0 0 0 39.125333-12.458667c35.072-17.6 70.677333-25.450667 109.077334-10.752 0.853333-2.026667 1.344-2.645333 1.322666-3.221333a19.626667 19.626667 0 0 0-0.597333-3.946667z" fill="#FC7A28" p-id="17085"></path></svg>'),123:"data:image/svg+xml;base64,"+btoa('<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1759299472449" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="9534" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M296.48 1018.44c-157.16 0-285-129.24-285-288.12V293.72C11.48 134.84 139.32 5.6 296.48 5.6h431.04c157.16 0 285 129.24 285 288.12v436.56c0 158.88-127.84 288.12-285 288.12H296.48z" fill="#FFFFFF" p-id="9535"></path><path d="M306.08 68.08h411.88c128.4 0 232.32 105.24 232.32 235.32v417.16c0 130.08-103.92 235.32-232.32 235.32H306.08c-128.4 0-232.32-105.24-232.32-235.32V303.4c-0.04-130.04 103.88-235.32 232.32-235.32z" fill="#597DFC" p-id="9536"></path><path d="M234.88 304.48H147.24v415.04h87.64V304.48z m129.28 304.84c0.44-21.6 3.8-35.72 10.36-42.36 4.84-6.64 12.48-11.12 22.4-13.68 9.72-2.56 10.12-2.36 30.64-2.56h23.24c42.68 0 52.6-6.4 73.92-19.24 14.36-8.76 23.24-23.32 31.48-41.92 8.24-18.4 12.24-39.8 12.24-63.76 0-19.48-3.4-37.64-9.92-54.32-6.56-16.92-16.04-30.16-28.32-40.2-20.48-17.76-37.6-26.76-109.4-26.76H283.48v74h118.92c23.04 0 39.48 3.2 49.84 9.4 13.52 8.76 20.28 22.48 20.28 41.08 0 17.12-7.4 29.96-22.16 38.52-9.52 5.36-17.96 8.12-40.56 8.12h-14.16c-27.88 0-34.64 1.92-47.72 5.56-13.08 3.64-25.12 10.92-36.32 21.84-23.64 24.4-35.28 59.88-34.44 106.32v110.16h280.48v-73.36H363.72v-36.8h0.44z m353.56 110.2c30.64 0 53.64-1.48 69.08-4.72 15.44-3.2 29.56-9 42.68-17.76 29.56-19.04 44.16-48.36 44.16-87.72 0-42.8-18.16-76.16-54.72-100.12 36.56-21.6 54.72-51.56 54.72-90.28 0-22.48-4.24-44.28-16.48-63.96-12.24-21.16-31.04-34.64-52.4-42.56-9.08-3.44-17.32-5.36-24.92-6.2-7.6-0.84-24.92-1.48-51.96-1.92h-117v74h101.8c14.36 0 24.52 0.44 30.4 1.48 5.92 1.08 11.2 3.2 15.64 6.64 12.24 8.36 18.36 21.6 18.36 39.8 0 16.68-4.64 28.88-14.16 36.8-7.8 6.64-24.52 10.04-50.28 10.04h-62.96v73.36h62.96c21.32 0 36.32 2.56 44.76 7.48 13.52 7.92 20.28 22.24 20.28 43 0 17.12-5.28 29.96-16.04 38.52-8.64 7.08-24.92 10.48-49.2 10.48h-101.8v73.36h107.08v0.28z" fill="#FFFFFF" p-id="9537"></path></svg>')};return f[h]||f.quark},$=h=>{const f=new Date(h);return f.toLocaleDateString("zh-CN")+" "+f.toLocaleTimeString("zh-CN",{hour:"2-digit",minute:"2-digit"})},D=h=>{i.value="已复制到剪贴板",setTimeout(()=>{i.value=""},2e3)},H=async(h,f)=>{try{if(window.open(h,"_blank"),f)try{await navigator.clipboard.writeText(f),i.value=`链接已打开,提取码 "${f}" 已复制到剪贴板`}catch{const K=document.createElement("textarea");K.value=f,K.style.position="fixed",K.style.left="-999999px",K.style.top="-999999px",document.body.appendChild(K),K.focus(),K.select();try{document.execCommand("copy"),i.value=`链接已打开,提取码 "${f}" 已复制到剪贴板`}catch{i.value=`链接已打开,提取码: ${f} (请手动复制)`}finally{document.body.removeChild(K)}}else i.value="链接已打开";setTimeout(()=>{i.value=""},3e3)}catch(v){console.error("操作失败:",v),l.value="操作失败"}},Z=(h,f)=>{h.preventDefault(),H(f.url,f.password)},re=h=>{S.value.has(h)?S.value.delete(h):S.value.add(h)},Y=h=>S.value.has(h),ge=()=>{S.value.clear()};He(()=>t.movieId,async h=>{h&&(ge(),await ss(),me(),Pe())},{immediate:!0}),He(()=>t.linkType,async()=>{ge(),F.platform="",w.value.page=1,t.movieId&&(await ss(),me())});const Se=h=>{h>=1&&h<=w.value.pages&&(ge(),me(h))},Qe=()=>{w.value.page>1&&Se(w.value.page-1)},Ze=()=>{w.value.page<w.value.pages&&Se(w.value.page+1)},Bt=()=>{const h=document.querySelector(".auth-container")||document.querySelector(".auth-component")||document.querySelector("[data-auth-component]")||document.querySelector("#user-section");if(h)h.scrollIntoView({behavior:"smooth",block:"start"});else{const f=document.querySelector('.nav-btn[data-tab="user"]')||document.querySelector('button[data-tab="user"]')||Array.from(document.querySelectorAll(".nav-btn")).find(v=>v.textContent.includes("👤")||v.textContent.includes("用户"));if(f)f.click();else{const v=new CustomEvent("switchToUserTab",{bubbles:!0,detail:{tab:"user"}});document.dispatchEvent(v)}}};Qt(async()=>{t.movieId&&(await ss(),me(),Pe())});const ss=async()=>{if(!ne.initialized.value)return new Promise(h=>{let f=0;const v=50,K=()=>{if(f++,ne.initialized.value||f>=v){h();return}setTimeout(K,100)};K()})};return(h,f)=>(V(),P(Fe,null,[a("div",Qu,[m.value?(V(),P("div",Zu,[a("div",Yu,[a("div",{class:"modal-header"},[f[33]||(f[33]=a("h4",null,"修改链接",-1)),a("button",{class:"close-btn",onClick:x},"×")]),a("div",Ju,[a("form",{onSubmit:qe(I,["prevent"])},[a("div",Xu,[a("div",ec,[f[34]||(f[34]=a("label",null,"链接类型 *",-1)),X(Ft,{modelValue:b.linkType,"onUpdate:modelValue":f[0]||(f[0]=v=>b.linkType=v),options:N,placeholder:"请选择类型",onChange:f[1]||(f[1]=v=>b.platform="")},null,8,["modelValue"])])]),a("div",tc,[b.linkType==="netdisk"?(V(),P("div",sc,[f[35]||(f[35]=a("label",null,"平台",-1)),X(Ft,{modelValue:b.platform,"onUpdate:modelValue":f[2]||(f[2]=v=>b.platform=v),options:R.value,placeholder:"请选择平台"},null,8,["modelValue","options"])])):B("",!0),b.linkType==="netdisk"?(V(),P("div",oc,[f[36]||(f[36]=a("label",null,"提取码",-1)),a("div",nc,[oe(a("input",{type:"text","onUpdate:modelValue":f[3]||(f[3]=v=>b.extractCode=v),placeholder:"如有提取码请填写",maxlength:"10"},null,512),[[pe,b.extractCode]])])])):B("",!0)]),a("div",rc,[f[37]||(f[37]=a("label",null,"链接地址 *",-1)),a("div",lc,[oe(a("input",{type:"url","onUpdate:modelValue":f[4]||(f[4]=v=>b.url=v),placeholder:"(会自动识别链接类型)请输入完整的链接地址",required:""},null,512),[[pe,b.url]])])]),a("div",ic,[a("div",ac,[f[38]||(f[38]=a("label",null,"标题描述 *",-1)),a("div",uc,[oe(a("input",{type:"text","onUpdate:modelValue":f[5]||(f[5]=v=>b.title=v),placeholder:"简短描述这个链接"},null,512),[[pe,b.title]])])])]),a("div",cc,[a("div",dc,[f[39]||(f[39]=a("label",null,"文件大小",-1)),a("div",fc,[oe(a("input",{type:"text","onUpdate:modelValue":f[6]||(f[6]=v=>b.size=v),placeholder:"如: 2.5G 或 1024M",pattern:"^\\d+(\\.\\d+)?[GMgm]$",title:"请输入数字+G或M,如: 2.5G 或 1024M"},null,512),[[pe,b.size]])])])]),a("div",pc,[f[40]||(f[40]=a("label",null,"特性标签",-1)),a("div",hc,[X(Tt,{modelValue:b.has_4k,"onUpdate:modelValue":f[7]||(f[7]=v=>b.has_4k=v),label:"4K画质",color:"blue"},null,8,["modelValue"]),X(Tt,{modelValue:b.has_hdr,"onUpdate:modelValue":f[8]||(f[8]=v=>b.has_hdr=v),label:"HDR",color:"green"},null,8,["modelValue"]),X(Tt,{modelValue:b.has_dolby_atmos,"onUpdate:modelValue":f[9]||(f[9]=v=>b.has_dolby_atmos=v),label:"杜比全景声",color:"purple"},null,8,["modelValue"]),X(Tt,{modelValue:b.has_subtitles,"onUpdate:modelValue":f[10]||(f[10]=v=>b.has_subtitles=v),label:"外挂字幕",color:"red"},null,8,["modelValue"])])]),a("div",mc,[a("button",{type:"submit",disabled:_.value},j(_.value?"修改中...":"保存修改"),9,vc),a("button",{type:"button",onClick:x},"取消")])],32)])])])):B("",!0),u.value?(V(),P("div",gc,[a("div",_c,[a("div",{class:"modal-header"},[f[42]||(f[42]=a("h4",null,"添加新链接",-1)),a("button",{class:"close-btn",onClick:T},f[41]||(f[41]=[a("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"currentColor"},[a("path",{d:"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"})],-1)]))]),a("div",yc,[a("form",{onSubmit:qe(Et,["prevent"])},[a("div",bc,[a("div",wc,[f[43]||(f[43]=a("label",null,"链接类型 *",-1)),X(Ft,{modelValue:g.linkType,"onUpdate:modelValue":f[11]||(f[11]=v=>g.linkType=v),options:N,placeholder:"请选择类型",onChange:f[12]||(f[12]=v=>g.platform="")},null,8,["modelValue"])])]),a("div",kc,[g.linkType==="netdisk"?(V(),P("div",xc,[f[44]||(f[44]=a("label",null,"平台",-1)),X(Ft,{modelValue:g.platform,"onUpdate:modelValue":f[13]||(f[13]=v=>g.platform=v),options:R.value,placeholder:"请选择平台"},null,8,["modelValue","options"])])):B("",!0),g.linkType==="netdisk"?(V(),P("div",Cc,[f[45]||(f[45]=a("label",null,"提取码",-1)),a("div",Sc,[oe(a("input",{type:"text","onUpdate:modelValue":f[14]||(f[14]=v=>g.extractCode=v),placeholder:"如有提取码请填写",maxlength:"10"},null,512),[[pe,g.extractCode]])])])):B("",!0)]),a("div",Tc,[f[46]||(f[46]=a("label",null,"链接地址 *",-1)),a("div",Ec,[oe(a("input",{type:"url","onUpdate:modelValue":f[15]||(f[15]=v=>g.url=v),placeholder:"(会自动识别链接类型)请输入完整的链接地址",required:""},null,512),[[pe,g.url]])])]),a("div",Ac,[a("div",Ic,[f[47]||(f[47]=a("label",null,"标题描述",-1)),a("div",Vc,[oe(a("input",{type:"text","onUpdate:modelValue":f[16]||(f[16]=v=>g.title=v),placeholder:"简短描述这个链接"},null,512),[[pe,g.title]])])])]),a("div",Uc,[a("div",$c,[f[48]||(f[48]=a("label",null,"文件大小",-1)),a("div",Pc,[oe(a("input",{type:"text","onUpdate:modelValue":f[17]||(f[17]=v=>g.size=v),placeholder:"如: 2.5G 或 1024M",pattern:"^\\d+(\\.\\d+)?[GMgm]$",title:"请输入数字+G或M,如: 2.5G 或 1024M"},null,512),[[pe,g.size]])])])]),a("div",Mc,[f[49]||(f[49]=a("label",null,"特性标签",-1)),a("div",Lc,[X(Tt,{modelValue:g.has_4k,"onUpdate:modelValue":f[18]||(f[18]=v=>g.has_4k=v),label:"4K画质",color:"green"},null,8,["modelValue"]),X(Tt,{modelValue:g.has_hdr,"onUpdate:modelValue":f[19]||(f[19]=v=>g.has_hdr=v),label:"HDR",color:"green"},null,8,["modelValue"]),X(Tt,{modelValue:g.has_dolby_atmos,"onUpdate:modelValue":f[20]||(f[20]=v=>g.has_dolby_atmos=v),label:"杜比全景声",color:"green"},null,8,["modelValue"]),X(Tt,{modelValue:g.has_subtitles,"onUpdate:modelValue":f[21]||(f[21]=v=>g.has_subtitles=v),label:"外挂字幕",color:"green"},null,8,["modelValue"])])]),a("div",Dc,[a("button",{type:"submit",disabled:_.value},j(_.value?"添加中...":"添加链接"),9,Oc),a("button",{type:"button",onClick:T},"取消")])],32)])])])):B("",!0),a("div",Fc,[a("div",Rc,[a("div",Bc,[s.value==="netdisk"?(V(),ys(Ft,{key:0,modelValue:F.platform,"onUpdate:modelValue":f[22]||(f[22]=v=>F.platform=v),options:de.value,placeholder:"所有平台",onChange:f[23]||(f[23]=()=>{ge(),me()})},null,8,["modelValue","options"])):B("",!0),X(Ft,{modelValue:F.sortBy,"onUpdate:modelValue":f[24]||(f[24]=v=>F.sortBy=v),options:Q,placeholder:"按时间",onChange:f[25]||(f[25]=()=>{ge(),me()})},null,8,["modelValue"])]),a("button",{class:"add-link-btn-compact",onClick:y,disabled:!he.value,title:"添加链接"},f[50]||(f[50]=[a("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"currentColor"},[a("path",{d:"M8 1a.5.5 0 0 1 .5.5v6h6a.5.5 0 0 1 0 1h-6v6a.5.5 0 0 1-1 0v-6h-6a.5.5 0 0 1 0-1h6v-6A.5.5 0 0 1 8 1z"})],-1)]),8,Nc)]),r.value?(V(),P("div",qc,[(V(),P(Fe,null,Vo(3,v=>X(Bu,{key:"skeleton-"+v})),64))])):o.value.length>0?(V(),P("div",zc,[(V(!0),P(Fe,null,Vo(o.value,v=>(V(),P("div",{class:"link-item",key:v.id,onClick:K=>re(v.id)},[a("div",Hc,[v.platform&&t.linkType!=="bt"&&t.linkType!=="online"?(V(),P("div",Kc,[a("img",{src:O(v.platform),alt:E(v.platform),class:"platform-icon"},null,8,Wc)])):B("",!0),a("div",Gc,[v.language?(V(),P("span",Qc,j(v.language),1)):B("",!0),v.size?(V(),P("span",Zc,j(v.size),1)):B("",!0),v.has_4k||v.has_hdr||v.has_dolby_atmos||v.has_subtitles?(V(),P("div",Yc,[v.has_4k?(V(),P("span",Jc,"4K")):B("",!0),v.has_hdr?(V(),P("span",Xc,"HDR")):B("",!0),v.has_dolby_atmos?(V(),P("span",ed,"杜比")):B("",!0),v.has_subtitles?(V(),P("span",td,"外挂字幕")):B("",!0)])):B("",!0)])]),a("div",sd,[a("div",od,[v.title?(V(),P("div",{key:0,class:_e(["link-title",{expanded:Y(v.id)}])},j(v.title),3)):B("",!0),a("div",{class:_e(["expand-arrow",{expanded:Y(v.id)}])},f[51]||(f[51]=[a("svg",{viewBox:"0 0 1024 1024",width:"16",height:"16"},[a("path",{d:"M512 330.666667c14.933333 0 29.866667 4.266667 40.533333 14.933333l277.33333399 234.666667c27.733333 23.466667 29.866667 64 8.53333301 89.6-23.466667 27.733333-64 29.866667-89.6 8.53333299L512 477.866667l-236.8 200.53333299c-27.733333 23.466667-68.266667 19.19999999-89.6-8.53333299-23.466667-27.733333-19.19999999-68.266667 8.53333301-89.6l277.33333399-234.666667c10.666667-10.666667 25.6-14.933333 40.533333-14.933333z",fill:"currentColor"})],-1)]),2)]),oe(a("div",nd,[a("div",{class:"link-url",onClick:f[26]||(f[26]=qe(()=>{},["stop"])),onContextmenu:K=>Z(K,v)},[X(Ur,{text:v.url,type:"url",onCopySuccess:D},null,8,["text"])],40,rd),v.password?(V(),P("div",{key:0,class:"extract-code-container",onClick:f[27]||(f[27]=qe(()=>{},["stop"]))},[f[52]||(f[52]=a("span",null,"提取码: ",-1)),X(Ur,{text:v.password,type:"code",onCopySuccess:D},null,8,["text"])])):B("",!0)],512),[[to,Y(v.id)]])]),oe(a("div",{class:"link-actions",onClick:f[28]||(f[28]=qe(()=>{},["stop"]))},[a("div",ld,[a("button",{class:_e(["vote-btn up",{active:v.user_vote_type==="up",pending:Me.value.has(v.id)}]),onClick:K=>ht(v.id,"up"),disabled:!he.value},[(V(),P("svg",ad,[a("path",{d:"M15 75 Q15 80 20 80 L80 80 Q85 80 85 75 Q85 70 80 65 L55 25 Q52 20 50 20 Q48 20 45 25 L20 65 Q15 70 15 75 Z",fill:v.user_vote_type==="up"?"currentColor":"none",stroke:"currentColor","stroke-width":"6","stroke-linejoin":"round"},null,8,ud)])),Jt(" "+j(v.up_votes||0),1)],10,id),a("button",{class:_e(["vote-btn down",{active:v.user_vote_type==="down",pending:Me.value.has(v.id)}]),onClick:K=>ht(v.id,"down"),disabled:!he.value},[(V(),P("svg",dd,[a("path",{d:"M15 75 Q15 80 20 80 L80 80 Q85 80 85 75 Q85 70 80 65 L55 25 Q52 20 50 20 Q48 20 45 25 L20 65 Q15 70 15 75 Z",fill:v.user_vote_type==="down"?"currentColor":"none",stroke:"currentColor","stroke-width":"6","stroke-linejoin":"round"},null,8,fd)])),Jt(" "+j(v.down_votes||0),1)],10,cd)]),a("div",pd,[A(v)?(V(),P("button",{key:0,class:"modify-btn",onClick:K=>C(v)}," 修改 ",8,hd)):B("",!0),A(v)?(V(),P("button",{key:1,class:"delete-btn",onClick:K=>M(v)}," 删除 ",8,md)):B("",!0),!A(v)&&he.value?(V(),P("button",{key:2,class:"report-btn",onClick:K=>Es(v.id)}," 反馈 ",8,vd)):B("",!0)])],512),[[to,Y(v.id)]]),oe(a("div",gd,[a("span",_d,"by "+j(v.user_display_name||"匿名用户"),1),a("span",yd,j($(v.created_at)),1),v.report_count>0?(V(),P("span",bd," 被反馈 "+j(v.report_count)+" 次 ",1)):B("",!0)],512),[[to,Y(v.id)]])],8,jc))),128))])):!r.value&&!he.value?(V(),P("div",wd,[a("div",{class:"login-prompt-content"},[f[53]||(f[53]=a("div",{class:"login-icon"},[a("svg",{width:"48",height:"48",viewBox:"0 0 24 24",fill:"currentColor"},[a("path",{d:"M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z"})])],-1)),f[54]||(f[54]=a("h3",null,"登录(不可用)后浏览链接",-1)),f[55]||(f[55]=a("p",null,"登录(不可用)后即可查看和添加资源链接",-1)),a("button",{class:"login-btn",onClick:Bt}," 立即登录(不可用) ")])])):!r.value&&o.value.length===0?(V(),P("div",kd,f[56]||(f[56]=[a("p",null,"暂无链接,成为第一个添加链接的人吧!",-1)]))):B("",!0)]),w.value.pages>1&&!r.value?(V(),P("div",xd,[a("button",{class:"pagination-btn",disabled:w.value.page<=1,onClick:Qe}," 上一页 ",8,Cd),a("span",Sd,j(w.value.page)+" / "+j(w.value.pages),1),a("button",{class:"pagination-btn",disabled:w.value.page>=w.value.pages,onClick:Ze}," 下一页 ",8,Td)])):B("",!0),X(Vr,{"error-message":l.value,"success-message":i.value,duration:3e3,"auto-close":!0,onClearError:f[29]||(f[29]=v=>l.value=""),onClearSuccess:f[30]||(f[30]=v=>i.value="")},null,8,["error-message","success-message"])]),At.value?(V(),P("div",Ed,[a("div",Ad,[a("div",{class:"modal-header"},[f[58]||(f[58]=a("h4",null,"删除链接",-1)),a("button",{class:"close-btn",onClick:ee},f[57]||(f[57]=[a("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"currentColor"},[a("path",{d:"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"})],-1)]))]),a("div",Id,[f[59]||(f[59]=a("div",{class:"delete-confirmation"},[a("div",{class:"warning-icon"},"⚠️"),a("p",null,"确定要删除这个链接吗?"),a("p",{class:"warning-text"},"此操作不可撤销")],-1)),a("div",Vd,[a("button",{type:"button",class:"delete-confirm-btn",disabled:It.value,onClick:te},j(It.value?"删除中...":"确认删除"),9,Ud),a("button",{type:"button",onClick:ee}," 取消 ")])])])])):B("",!0),es.value?(V(),P("div",$d,[a("div",Pd,[a("div",{class:"modal-header"},[f[61]||(f[61]=a("h4",null,"反馈链接",-1)),a("button",{class:"close-btn",onClick:Vt},f[60]||(f[60]=[a("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"currentColor"},[a("path",{d:"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"})],-1)]))]),a("div",Md,[a("form",{onSubmit:qe(ro,["prevent"])},[a("div",Ld,[f[62]||(f[62]=a("label",{for:"report-type"},"反馈类型 *",-1)),X(Ft,{id:"report-type",modelValue:Ce.type,"onUpdate:modelValue":f[31]||(f[31]=v=>Ce.type=v),options:ts,placeholder:"请选择反馈类型",required:""},null,8,["modelValue"])]),a("div",Dd,[f[63]||(f[63]=a("label",{for:"report-reason"},"详细原因",-1)),a("div",Od,[oe(a("input",{id:"report-reason","onUpdate:modelValue":f[32]||(f[32]=v=>Ce.reason=v),placeholder:"请详细描述反馈原因(可选)",rows:"4"},null,512),[[pe,Ce.reason]])])]),a("div",Fd,[a("button",{type:"submit",disabled:at.value||!Ce.type},j(at.value?"提交中...":"提交反馈"),9,Rd),a("button",{type:"button",onClick:Vt}," 取消 ")])],32)])])])):B("",!0)],64))}},[["__scopeId","data-v-e59e076b"]]),qd={class:"content-wrapper"},zd={class:"navigation-bar"},jd={class:"tab-content"},Hd={key:0,class:"tab-panel"},Kd={key:1,class:"no-subject"},Wd={key:1,class:"tab-panel"},Gd=Ke({__name:"WindowContent",setup(e){const t=L("links"),s=L("netdisk"),o=L(""),n=L({title:"",year:"",rating:""}),r=(i,u=null)=>{t.value=i,i==="links"&&u&&(s.value=u)},l=()=>{try{const u=window.location.href.match(/\/subject\/(\d+)\/?/);u&&(o.value=u[1],console.log("检测到豆瓣电影ID:",o.value));const m=document.querySelector('h1 span[property="v:itemreviewed"]')||document.querySelector("h1 span")||document.querySelector("h1");m&&(n.value.title=m.textContent.trim());const d=document.querySelector(".year")||document.querySelector("span.year");if(d){const S=d.textContent.match(/(\d{4})/);S&&(n.value.year=S[1])}const _=document.querySelector(".rating_num")||document.querySelector('[property="v:average"]');_&&(n.value.rating=_.textContent.trim()),console.log("获取到的电影信息:",n.value)}catch(i){console.error("获取豆瓣电影信息失败:",i)}};return Qt(()=>{l(),new MutationObserver(()=>{window.location.href.includes("/subject/")&&setTimeout(l,500)}).observe(document.body,{childList:!0,subtree:!0});const u=m=>{m.detail&&m.detail.tab==="user"&&r("user")};return document.addEventListener("switchToUserTab",u),()=>{document.removeEventListener("switchToUserTab",u)}}),(i,u)=>(V(),P("div",qd,[a("div",zd,[a("button",{class:_e(["nav-btn",{active:t.value==="links"&&s.value==="netdisk"}]),onClick:u[0]||(u[0]=m=>r("links","netdisk"))}," 💾 网盘 ",2),a("button",{class:_e(["nav-btn",{active:t.value==="links"&&s.value==="bt"}]),onClick:u[1]||(u[1]=m=>r("links","bt"))}," 🧲 BT ",2),a("button",{class:_e(["nav-btn",{active:t.value==="links"&&s.value==="online"}]),onClick:u[2]||(u[2]=m=>r("links","online"))}," 📺 在线 ",2),a("button",{class:_e(["nav-btn",{active:t.value==="user"}]),onClick:u[3]||(u[3]=m=>r("user"))}," 👤 用户 ",2)]),a("div",jd,[t.value==="links"?(V(),P("div",Hd,[o.value?(V(),ys(Nd,{key:0,"movie-id":o.value,"link-type":s.value},null,8,["movie-id","link-type"])):(V(),P("div",Kd,u[4]||(u[4]=[a("p",null,"未检测到豆瓣电影页面,请在豆瓣电影详情页使用此功能。",-1),a("p",{class:"hint"},"支持的页面格式:https://movie.douban.com/subject/[ID]/",-1)])))])):B("",!0),t.value==="user"?(V(),P("div",Wd,[X(Vu)])):B("",!0)])]))}},[["__scopeId","data-v-a01b44d5"]]),Qd={key:0,class:"debug-panel"},Zd={class:"debug-content"},Yd={class:"debug-section"},Jd={class:"status-item"},Xd={class:"status-item"},ef={class:"value"},tf={class:"status-item"},sf={class:"value token"},of={class:"status-item"},nf={class:"value token"},rf={class:"status-item"},lf={class:"debug-section"},af={key:0,class:"test-result"},uf={class:"debug-section"},cf={class:"headers-preview"},df=Ke({__name:"DebugPanel",setup(e){const t=L(!1),s=L(""),o=L(""),n=Ue(()=>ne.isAuthenticated.value),r=Ue(()=>ne.token.value),l=Ue(()=>ne.user.value?`${ne.user.value.email} (ID: ${ne.user.value.id})`:"无用户信息"),i=Ue(()=>{const w=r.value,g=s.value;return w&&g&&w===g}),u=Ue(()=>{const w=s.value;return JSON.stringify(w?{Authorization:`Bearer ${w.substring(0,20)}...`,"Content-Type":"application/json"}:{"Content-Type":"application/json"},null,2)}),m=()=>{t.value=!t.value,t.value&&d()},d=()=>{s.value=localStorage.getItem("auth_token")||"",console.log("Token状态刷新:",{memory:r.value,localStorage:s.value,match:i.value})},_=async()=>{try{o.value="测试中...";const w=await xt.getLinks();o.value=JSON.stringify({success:!0,dataLength:(w==null?void 0:w.length)||0,message:"请求成功"},null,2)}catch(w){o.value=JSON.stringify({success:!1,error:w.message,status:w.status||"unknown"},null,2)}},S=()=>{localStorage.removeItem("auth_token"),ne.token.value=null,ne.user.value=null,d(),o.value="",console.log("所有Token已清除")};return Qt(()=>{d(),window.addEventListener("storage",w=>{w.key==="auth_token"&&d()})}),(w,g)=>t.value?(V(),P("div",Qd,[a("div",{class:"debug-header"},[g[0]||(g[0]=a("h3",null,"🔧 调试面板",-1)),a("button",{onClick:m,class:"close-btn"},"×")]),a("div",Zd,[a("div",Yd,[g[6]||(g[6]=a("h4",null,"认证状态",-1)),a("div",Jd,[g[1]||(g[1]=a("span",{class:"label"},"登录(不可用)状态:",-1)),a("span",{class:_e(["status",n.value?"success":"error"])},j(n.value?"已登录(不可用)":"未登录(不可用)"),3)]),a("div",Xd,[g[2]||(g[2]=a("span",{class:"label"},"用户信息:",-1)),a("span",ef,j(l.value),1)]),a("div",tf,[g[3]||(g[3]=a("span",{class:"label"},"Token (内存):",-1)),a("span",sf,j(r.value||"无"),1)]),a("div",of,[g[4]||(g[4]=a("span",{class:"label"},"Token (localStorage):",-1)),a("span",nf,j(s.value||"无"),1)]),a("div",rf,[g[5]||(g[5]=a("span",{class:"label"},"Token匹配:",-1)),a("span",{class:_e(["status",i.value?"success":"error"])},j(i.value?"匹配":"不匹配"),3)])]),a("div",lf,[g[8]||(g[8]=a("h4",null,"测试操作",-1)),a("div",{class:"button-group"},[a("button",{onClick:d,class:"debug-btn"},"刷新Token状态"),a("button",{onClick:_,class:"debug-btn"},"测试API请求"),a("button",{onClick:S,class:"debug-btn danger"},"清除所有Token")]),o.value?(V(),P("div",af,[g[7]||(g[7]=a("h5",null,"API测试结果:",-1)),a("pre",null,j(o.value),1)])):B("",!0)]),a("div",uf,[g[9]||(g[9]=a("h4",null,"请求头预览",-1)),a("div",cf,[a("code",null,j(u.value),1)])])])])):B("",!0)}},[["__scopeId","data-v-dba5723e"]]),Ts="1.0.8",Lr="https://scriptcat.org/scripts/code/4290/DoubanFlix%20-%20%E5%9C%A8%E8%B1%86%E7%93%A3%E7%94%B5%E5%BD%B1%E9%A1%B5%E9%9D%A2%E8%8E%B7%E5%8F%96%E6%B7%BB%E5%8A%A0%E8%B5%84%E6%BA%90%E9%93%BE%E6%8E%A5%EF%BC%88%E7%BD%91%E7%9B%98%EF%BC%8C%E7%A3%81%E5%8A%9B%EF%BC%8C%E5%9C%A8%E7%BA%BF%EF%BC%89.user.js",Rt={LAST_CHECK_TIME:"doubanflix_last_version_check",SKIP_VERSION:"doubanflix_skip_version",SKIP_UNTIL:"doubanflix_skip_until"};function Dr(e,t){const s=e.split(".").map(Number),o=t.split(".").map(Number),n=Math.max(s.length,o.length);for(let r=0;r<n;r++){const l=s[r]||0,i=o[r]||0;if(l>i)return 1;if(l<i)return-1}return 0}async function ff(){return new Promise(e=>{try{if(typeof GM_xmlhttpRequest>"u"){console.warn("GM_xmlhttpRequest 不可用,可能不在用户脚本环境中"),e({success:!1,error:"GM_xmlhttpRequest API 不可用"});return}GM_xmlhttpRequest({method:"GET",url:Lr,headers:{"User-Agent":"DoubanFlix Version Checker"},timeout:1e4,onload:function(t){try{if(t.status!==200)throw new Error(`HTTP ${t.status}: ${t.statusText}`);const s=t.responseText,o=s.match(/@version\s+([^\r\n]+)/),n=s.match(/@name\s+([^\r\n]+)/),r=s.match(/@description\s+([^\r\n]+)/);let l="";const i=s.split(` `);let u=!1;for(const m of i){if(m.trim()==="// ==/UserScript==")break;if(m.includes("@updatenote")){u=!0;const d=m.match(/@updatenote\s+(.+)/);d&&(l=d[1].trim())}else if(u){const d=m.match(/^\/\/\s+(.+)/);if(d&&!m.includes("@"))l+=` `+d[1].trim();else if(m.trim().startsWith("//")&&m.includes("@"))break}}if(!o)throw new Error("无法解析脚本版本信息");e({version:o[1].trim(),name:n?n[1].trim():"DoubanFlix",description:r?r[1].trim():"",updateNote:l||"",downloadUrl:Lr,success:!0})}catch(s){console.error("解析脚本信息失败:",s),e({success:!1,error:s.message})}},onerror:function(t){console.error("请求脚本信息失败:",t),e({success:!1,error:"网络请求失败"})},ontimeout:function(){console.error("请求脚本信息超时"),e({success:!1,error:"请求超时"})}})}catch(t){console.error("获取脚本信息失败:",t),e({success:!1,error:t.message})}})}function Or(){const e=localStorage.getItem(Rt.SKIP_UNTIL);if(e){const t=parseInt(e);if(Date.now()<t)return!0;localStorage.removeItem(Rt.SKIP_UNTIL),localStorage.removeItem(Rt.SKIP_VERSION)}return!1}function Fr(e,t=7){const s=Date.now()+t*24*60*60*1e3;localStorage.setItem(Rt.SKIP_VERSION,e),localStorage.setItem(Rt.SKIP_UNTIL,s.toString())}async function Rr(e=!1){try{if(!e&&Or())return{hasUpdate:!1,skipped:!0,message:"用户选择暂时跳过版本检查"};const t=await ff();if(!t.success)return{hasUpdate:!1,error:!0,message:`检查更新失败: ${t.error}`};const s=t.version,o=Dr(s,Ts);return localStorage.setItem(Rt.LAST_CHECK_TIME,Date.now().toString()),o>0?{hasUpdate:!0,currentVersion:Ts,latestVersion:s,scriptInfo:t,message:`发现新版本 ${s},当前版本 ${Ts}`}:{hasUpdate:!1,currentVersion:Ts,latestVersion:s,message:"当前已是最新版本"}}catch(t){return console.error("版本检查失败:",t),{hasUpdate:!1,error:!0,message:`版本检查失败: ${t.message}`}}}function Br(){const e=localStorage.getItem(Rt.LAST_CHECK_TIME);return e?parseInt(e):null}function pf(e=24){const t=Br();if(!t)return!0;const s=Date.now(),o=e*60*60*1e3;return s-t>=o}const Nr={checkForUpdates:Rr,setSkipVersionCheck:Fr,shouldSkipVersionCheck:Or,getLastCheckTime:Br,shouldCheckForUpdates:pf,compareVersions:Dr,CURRENT_VERSION:Ts},hf={name:"UpdateNotification",props:{updateInfo:{type:Object,required:!0},visible:{type:Boolean,default:!1}},emits:["close","update","later"],setup(e,{emit:t}){const s=L(!1),o=L(!1),n=()=>{t("close")};return{skipForWeek:s,isUpdating:o,handleClose:n,handleOverlayClick:()=>{n()},handleSkipChange:()=>{},handleLater:()=>{s.value&&Nr.setSkipVersionCheck(e.updateInfo.latestVersion,7),t("later"),n()},handleUpdate:async()=>{try{o.value=!0,s.value&&Nr.setSkipVersionCheck(e.updateInfo.latestVersion,7),t("update",e.updateInfo),setTimeout(()=>{window.open(e.updateInfo.scriptInfo.downloadUrl,"_blank"),n()},500)}catch(d){console.error("处理更新失败:",d)}finally{setTimeout(()=>{o.value=!1},1e3)}},formatUpdateLog:d=>{if(!d)return"";if(d.includes(` `))return d.split(` `).map(g=>g.trim()).filter(g=>g.length>0).map(g=>g.match(/^\d+\.\s/)?g:g.startsWith("*")?g.replace(/^\*\s*/,"• "):g.startsWith("-")?g.replace(/^-\s*/,"• "):"• "+g).join("<br>").replace(/(\d+\.\d+\.\d+)/g,"<strong>$1</strong>");if(d.match(/^\d+\.\d+\.\d+/))return d.replace(/\n/g,"<br>").replace(/\*\s*(.+)/g,"• $1").replace(/(\d+\.\d+\.\d+)/g,"<strong>$1</strong>");const _=["更新日志","新日志","更新说明","版本更新","changelog","update log"];let S=d;for(const g of _){const b=S.toLowerCase().indexOf(g.toLowerCase());if(b!==-1){S=S.substring(b+g.length).replace(/^[:\s\-=]+/,"").trim();break}}const w=S.split(` `).filter(g=>g.trim());return w.length>5&&(S=w.slice(0,5).join(` `)+` ...`),S.replace(/\n/g,"<br>").replace(/\*\s*(.+)/g,"• $1").replace(/(\d+\.\d+\.\d+)/g,"<strong>$1</strong>")}}}},mf={class:"notification-header"},vf={class:"version-info"},gf={class:"version-row"},_f={class:"version-current"},yf={class:"version-row"},bf={class:"version-latest"},wf={key:0,class:"update-description"},kf=["innerHTML"],xf={class:"notification-actions"},Cf={class:"skip-option"},Sf={class:"skip-checkbox"},Tf={class:"action-buttons"},Ef=["disabled"],Af=["disabled"],If={key:0,class:"loading-spinner"};function Vf(e,t,s,o,n,r){var l,i,u,m;return s.visible?(V(),P("div",{key:0,class:"update-notification-overlay",onClick:t[6]||(t[6]=(...d)=>o.handleOverlayClick&&o.handleOverlayClick(...d))},[a("div",{class:"update-notification",onClick:t[5]||(t[5]=qe(()=>{},["stop"]))},[a("div",mf,[t[8]||(t[8]=ir('<div class="header-icon" data-v-8ddffaa9><svg width="24" height="24" viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg" data-v-8ddffaa9><path d="M303.3088 772.9152l-68.608-3.8912c-44.6464-1.4336-89.2928-37.4784-114.8928-65.1264-26.624-28.4672-37.2736-68.4032-36.864-107.9296-0.2048-39.936 12.4928-88.6784 39.5264-117.76 23.3472-25.3952 61.0304-49.152 101.7856-59.8016h0.4096l43.4176-6.7584c1.2288-0.2048 2.2528-1.024 2.6624-2.4576l12.4928-49.3568c11.0592-52.224 35.2256-111.4112 73.9328-147.2512 55.5008-50.5856 137.4208-67.1744 210.3296-51.2 72.704 15.9744 140.4928 76.5952 175.3088 135.5776l19.2512 33.1776c0.4096 0.8192 1.2288 1.2288 2.048 1.4336l36.2496 8.3968h0.2048c48.9472 15.9744 82.3296 41.5744 111.8208 73.728 11.4688 12.288 23.7568 32.768 31.5392 47.7184 5.9392 12.0832 21.0944 30.72 40.1408 24.1664 17.2032-6.144 20.0704-27.648 7.5776-53.0432-11.4688-23.9616-26.2144-45.8752-44.2368-65.3312-41.7792-46.08-84.5824-75.1616-145.2032-81.92-1.024-0.2048-2.048-0.8192-2.4576-1.8432-40.5504-91.3408-120.832-157.9008-216.6784-178.9952-96.4608-21.2992-197.2224 5.9392-270.7456 72.9088-50.7904 47.5136-71.0656 109.568-85.8112 177.9712-0.2048 1.2288-1.4336 2.2528-2.6624 2.4576-51.6096 5.9392-99.5328 30.5152-135.168 69.0176C2.2528 519.5776 1.8432 664.3712 87.2448 757.76c39.1168 43.008 93.3888 69.632 150.9376 72.704 14.7456 0.8192 63.0784 2.4576 65.536 2.6624h0.2048c10.4448-0.2048 20.2752-4.5056 27.4432-12.0832s6.9632-28.4672-0.4096-36.0448c-7.3728-7.7824-17.2032-12.0832-27.648-12.0832z m669.696-236.7488c-13.1072-0.4096-25.1904 7.3728-30.5152 19.456-5.3248 12.288-2.8672 26.4192 6.3488 36.0448 9.216 9.6256 22.9376 12.4928 35.2256 7.5776 12.0832-4.9152 20.0704-16.9984 20.0704-30.3104 0.4096-17.8176-13.5168-32.3584-31.1296-32.768z m-15.36 114.4832c-12.6976 0.2048-18.8416 8.3968-26.2144 19.456-6.3488 9.4208-11.264 16.9984-17.408 26.624-24.1664 37.4784-84.5824 79.4624-145.6128 78.4384h-38.0928c-22.3232 0.4096-39.7312 7.168-37.4784 29.9008 2.048 21.2992 24.3712 23.552 34.4064 23.552h35.4304c87.8592-0.2048 167.5264-46.2848 214.2208-122.0608 7.7824-11.264 11.8784-24.7808 8.3968-38.0928-2.2528-9.0112-14.9504-18.0224-27.648-17.8176z m-259.6864-101.9904l-153.3952-156.4672c-5.9392-6.3488-14.1312-10.0352-22.9376-10.0352-8.6016 0-16.9984 3.6864-22.9376 10.0352l-155.8528 157.696c-12.6976 13.312-15.5648 32.768-2.4576 45.6704 8.192 8.192 29.696 8.6016 43.008-2.8672l0.2048-0.2048 105.2672-110.592c2.048-2.048 5.5296-0.6144 5.5296 2.2528v413.0816c-0.4096 12.0832 5.5296 23.552 15.7696 29.696 5.9392 3.4816 16.384 3.8912 22.528 0 10.0352-6.3488 16.1792-17.6128 15.7696-29.696V484.1472c0-2.8672 3.4816-4.3008 5.3248-2.2528l106.7008 110.7968c5.9392 6.144 28.672 15.5648 42.1888 1.6384 13.312-13.1072 8.192-32.3584-4.7104-45.6704z m0 0" fill="#4CAF50" data-v-8ddffaa9></path></svg></div><div class="header-content" data-v-8ddffaa9><h3 class="notification-title" data-v-8ddffaa9>发现新版本</h3><p class="notification-subtitle" data-v-8ddffaa9>DoubanFlix 有新版本可用</p></div>',2)),a("button",{class:"close-btn",onClick:t[0]||(t[0]=(...d)=>o.handleClose&&o.handleClose(...d)),title:"关闭"},t[7]||(t[7]=[a("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg"},[a("path",{d:"M12 4L4 12M4 4L12 12",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round"})],-1)]))]),a("div",vf,[a("div",gf,[t[9]||(t[9]=a("span",{class:"version-label"},"当前版本:",-1)),a("span",_f,j(s.updateInfo.currentVersion),1)]),a("div",yf,[t[10]||(t[10]=a("span",{class:"version-label"},"最新版本:",-1)),a("span",bf,j(s.updateInfo.latestVersion),1)])]),(l=s.updateInfo.scriptInfo)!=null&&l.updateNote||(i=s.updateInfo.scriptInfo)!=null&&i.description?(V(),P("div",wf,[t[11]||(t[11]=a("h4",{class:"description-title"},"更新日志",-1)),a("div",{class:"description-content",innerHTML:o.formatUpdateLog(((u=s.updateInfo.scriptInfo)==null?void 0:u.updateNote)||((m=s.updateInfo.scriptInfo)==null?void 0:m.description))},null,8,kf)])):B("",!0),a("div",xf,[a("div",Cf,[a("label",Sf,[oe(a("input",{type:"checkbox","onUpdate:modelValue":t[1]||(t[1]=d=>o.skipForWeek=d),onChange:t[2]||(t[2]=(...d)=>o.handleSkipChange&&o.handleSkipChange(...d))},null,544),[[ca,o.skipForWeek]]),t[12]||(t[12]=a("span",{class:"checkmark"},null,-1)),t[13]||(t[13]=a("span",{class:"skip-text"},"一周内不再提醒",-1))])]),a("div",Tf,[a("button",{class:"btn btn-secondary",onClick:t[3]||(t[3]=(...d)=>o.handleLater&&o.handleLater(...d)),disabled:o.isUpdating}," 稍后提醒 ",8,Ef),a("button",{class:"btn btn-primary",onClick:t[4]||(t[4]=(...d)=>o.handleUpdate&&o.handleUpdate(...d)),disabled:o.isUpdating},[o.isUpdating?(V(),P("span",If)):B("",!0),Jt(" "+j(o.isUpdating?"正在跳转...":"立即更新"),1)],8,Af)])])])])):B("",!0)}const Uf=Ke(hf,[["render",Vf],["__scopeId","data-v-8ddffaa9"]]),$f={key:0,class:"custom-window"},Pf={class:"window-content"},Mf={class:"window-header"},Lf={class:"window-title"},Df=Ke({__name:"App",setup(e){const t=L(!0),s=L(!1),o=L("DoubanFlix 1.0.8"),n=L(null),r=L(!1),l=()=>new Promise(F=>{const N=()=>{const Q=document.querySelector(".aside")||document.querySelector("#aside")||document.querySelector(".sidebar")||document.querySelector("#sidebar")||document.querySelector(".right-col")||document.querySelector(".side-panel")||document.querySelector("#content .article")||document.querySelector(".grid-16-8 .aside")||document.querySelector('[class*="aside"]')||document.querySelector('[class*="side"]');return Q?(console.log("找到aside元素:",Q.className||Q.tagName),F(Q),!0):!1};if(N())return;const G=new MutationObserver(Q=>{for(const R of Q)if(R.type==="childList"){for(const de of R.addedNodes)if(de.nodeType===Node.ELEMENT_NODE&&N()){G.disconnect();return}}});G.observe(document.body,{childList:!0,subtree:!0}),setTimeout(()=>{G.disconnect(),console.log("超时未找到aside元素,强制显示窗口"),F(null)},1e4)}),i=()=>{t.value=!t.value,t.value&&s.value&&u()},u=()=>{const F=document.querySelector("#bilibili-custom-window");if(!F){console.log("未找到Vue应用容器");return}const N=document.querySelector(".aside")||document.querySelector("#aside")||document.querySelector(".sidebar")||document.querySelector("#sidebar")||document.querySelector(".right-col")||document.querySelector(".side-panel")||document.querySelector("#content .article")||document.querySelector(".grid-16-8 .aside")||document.querySelector('[class*="aside"]')||document.querySelector('[class*="side"]');N?F.parentNode!==N&&(N.firstChild?N.insertBefore(F,N.firstChild):N.appendChild(F),console.log("Vue应用容器已移动到aside元素的第一个位置:",N.className||N.tagName)):console.log("未找到aside元素,Vue应用容器保持在当前位置")},m=()=>{t.value=!1},d=async()=>{try{const F=await Rr();F.hasUpdate&&(n.value=F,r.value=!0)}catch(F){console.error("版本检查失败:",F)}},_=()=>{r.value=!1,n.value=null},S=()=>{window.open("https://scriptcat.org/scripts/code/4290/DoubanFlix%20-%20%E5%9C%A8%E8%B1%86%E7%93%A3%E7%94%B5%E5%BD%B1%E9%A1%B5%E9%9D%A2%E8%8E%B7%E5%8F%96%E6%B7%BB%E5%8A%A0%E8%B5%84%E6%BA%90%E9%93%BE%E6%8E%A5%EF%BC%88%E7%BD%91%E7%9B%98%EF%BC%8C%E7%A3%81%E5%8A%9B%EF%BC%8C%E5%9C%A8%E7%BA%BF%EF%BC%89.user.js","_blank"),_()},w=(F=0)=>{F>0&&Fr(F),_()},g=()=>{i()},b=F=>{F.ctrlKey&&F.key==="q"&&(F.preventDefault(),i())};return Qt(async()=>{await ne.initAuth(),window.addEventListener("toggle-window",g),document.addEventListener("keydown",b),await l(),s.value=!0,u(),setTimeout(()=>{d()},2e3)}),hs(()=>{window.removeEventListener("toggle-window",g),document.removeEventListener("keydown",b)}),(F,N)=>(V(),P(Fe,null,[t.value&&s.value?(V(),P("div",$f,[a("div",Pf,[X(Gd)]),a("div",Mf,[a("span",Lf,j(o.value),1),a("button",{class:"close-btn",onClick:m},"×")])])):B("",!0),X(df),n.value&&r.value?(V(),ys(Uf,{key:1,"update-info":n.value,visible:r.value,onClose:_,onUpdate:S,onLater:w},null,8,["update-info","visible"])):B("",!0)],64))}},[["__scopeId","data-v-7591ec42"]]);async function Of(){const e=document.querySelectorAll("h1"),t=document.querySelector(".article");t&&e.length>0&&e.forEach(n=>{t.insertBefore(n,t.firstChild)});const s=document.createElement("div");s.id="bilibili-custom-window",document.body.appendChild(s),va(Df).mount("#bilibili-custom-window"),console.log("DoubanFlix应用已初始化")}Of()})()})();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址