Greasy Fork

Greasy Fork is available in English.

DoubanFlix - 在豆瓣电影页面获取添加资源链接(网盘,磁力,在线)

在豆瓣电影页面获取添加资源链接

当前为 2025-09-29 提交的版本,查看 最新版本

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

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

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

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

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

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

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

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

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

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

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

// ==UserScript==
// @name         DoubanFlix - 在豆瓣电影页面获取添加资源链接(网盘,磁力,在线)
// @namespace    http://tampermonkey.net/
// @version      1.0.4
// @description  在豆瓣电影页面获取添加资源链接
// @author       Moz
// @match        https://movie.douban.com/subject/*
// @grant        none
// @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-container[data-v-f9dbeb3c]{padding:16px}.user-info[data-v-f9dbeb3c]{text-align:center}.user-header[data-v-f9dbeb3c]{display:flex;align-items:center;margin-bottom:16px;padding:12px;background:#f8f9fa;border-radius:8px;position:relative}.user-avatar[data-v-f9dbeb3c]{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-f9dbeb3c]{flex:1;text-align:left}.user-display-name[data-v-f9dbeb3c]{font-size:14px;font-weight:500;color:#333;margin-bottom:2px}.user-email[data-v-f9dbeb3c]{font-size:12px;color:#666;margin-bottom:2px}.user-status[data-v-f9dbeb3c]{font-size:12px;color:#28a745}.edit-nickname-btn[data-v-f9dbeb3c]{position:absolute;top:12px;right:12px;padding:4px 8px;background:#e3f2fd;color:#1976d2;border:1px solid #bbdefb;border-radius:4px;cursor:pointer;font-size:11px;transition:all .2s}.edit-nickname-btn[data-v-f9dbeb3c]:hover{background:#bbdefb;color:#0d47a1}.nickname-edit-form[data-v-f9dbeb3c]{margin-bottom:16px;padding:12px;background:#fff;border:1px solid #dee2e6;border-radius:6px}.nickname-hint[data-v-f9dbeb3c]{font-size:11px;color:#666;margin-top:4px}.nickname-actions[data-v-f9dbeb3c]{display:flex;gap:8px;margin-top:12px}.save-nickname-btn[data-v-f9dbeb3c]{padding:6px 12px;background:#28a745;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:12px;transition:background-color .2s}.save-nickname-btn[data-v-f9dbeb3c]:hover:not(:disabled){background:#218838}.save-nickname-btn[data-v-f9dbeb3c]:disabled{background:#6c757d;cursor:not-allowed}.cancel-nickname-btn[data-v-f9dbeb3c]{padding:6px 12px;background:#6c757d;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:12px;transition:background-color .2s}.cancel-nickname-btn[data-v-f9dbeb3c]:hover{background:#5a6268}.sign-out-btn[data-v-f9dbeb3c]{width:100%;padding:8px 16px;background:#dc3545;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:13px;transition:background-color .2s}.sign-out-btn[data-v-f9dbeb3c]:hover{background:#c82333}.auth-forms[data-v-f9dbeb3c]{width:100%}.auth-tabs[data-v-f9dbeb3c]{display:flex;margin-bottom:16px;background:#e9ecef;border-radius:6px;padding:2px}.auth-tab[data-v-f9dbeb3c]{flex:1;padding:8px 12px;border:none;background:transparent;color:#666;font-size:13px;border-radius:4px;cursor:pointer;transition:all .2s}.auth-tab[data-v-f9dbeb3c]:hover{background:#dee2e6}.auth-tab.active[data-v-f9dbeb3c]{background:#007bff;color:#fff;font-weight:500}.auth-form[data-v-f9dbeb3c]{display:flex;flex-direction:column;gap:12px}.form-group[data-v-f9dbeb3c]{display:flex;flex-direction:column}.form-group label[data-v-f9dbeb3c]{font-size:12px;color:#333;margin-bottom:4px;font-weight:500}.form-input[data-v-f9dbeb3c]{padding:8px 12px;border:1px solid #ddd;border-radius:4px;font-size:13px;transition:border-color .2s}.form-input[data-v-f9dbeb3c]:focus{outline:none;border-color:#007bff;box-shadow:0 0 0 2px #007bff40}.auth-submit-btn[data-v-f9dbeb3c]{padding:10px 16px;background:#007bff;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:13px;font-weight:500;transition:background-color .2s;margin-top:8px}.auth-submit-btn[data-v-f9dbeb3c]:hover:not(:disabled){background:#0056b3}.auth-submit-btn[data-v-f9dbeb3c]:disabled{background:#6c757d;cursor:not-allowed}.forgot-password-link[data-v-f9dbeb3c]{text-align:center;margin-top:15px}.link-btn[data-v-f9dbeb3c]{background:none;border:none;color:#007bff;cursor:pointer;text-decoration:underline;font-size:14px;padding:0}.link-btn[data-v-f9dbeb3c]:hover{color:#0056b3}.link-btn[data-v-f9dbeb3c]:disabled{color:#6c757d;cursor:not-allowed;text-decoration:none}.back-button[data-v-f9dbeb3c]{margin-bottom:20px}.back-btn[data-v-f9dbeb3c]{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-f9dbeb3c]:hover{color:#495057}.form-title[data-v-f9dbeb3c]{font-size:24px;font-weight:700;text-align:center;margin-bottom:10px;color:#333}.form-description[data-v-f9dbeb3c]{font-size:14px;color:#6c757d;text-align:center;margin-bottom:25px;line-height:1.5}.proof-progress[data-v-f9dbeb3c]{margin:20px 0}.progress-text[data-v-f9dbeb3c]{font-size:14px;color:#6c757d;text-align:center;margin-bottom:10px}.progress-bar[data-v-f9dbeb3c]{width:100%;height:8px;background-color:#e9ecef;border-radius:4px;overflow:hidden}.progress-fill[data-v-f9dbeb3c]{height:100%;background:linear-gradient(90deg,#007bff,#0056b3);transition:width .3s ease;border-radius:4px}.resend-code[data-v-f9dbeb3c]{text-align:center;margin-top:15px}.error-message[data-v-f9dbeb3c]{padding:8px 12px;background:#f8d7da;color:#721c24;border:1px solid #f5c6cb;border-radius:4px;font-size:12px;margin-top:12px}.success-message[data-v-f9dbeb3c]{padding:8px 12px;background:#d4edda;color:#155724;border:1px solid #c3e6cb;border-radius:4px;font-size:12px;margin-top:12px}.initializing-container[data-v-f9dbeb3c]{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px 20px;text-align:center}.initializing-container .loading-spinner[data-v-f9dbeb3c]{width:32px;height:32px;border:3px solid #f3f3f3;border-top:3px solid #007bff;border-radius:50%;animation:spin-f9dbeb3c 1s linear infinite;margin-bottom:16px}.initializing-container p[data-v-f9dbeb3c]{color:#6c757d;font-size:14px;margin:0}@keyframes spin-f9dbeb3c{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.custom-select[data-v-411df2ed]{position:relative;width:100%;font-size:14px}.select-trigger[data-v-411df2ed]{display:flex;align-items:center;justify-content:space-between;padding:4px 8px;border:1px solid #ddd;border-radius:6px;background-color:#fff;cursor:pointer;transition:all .2s ease;color:#333}.select-trigger[data-v-411df2ed]:hover{border-color:#007bff;box-shadow:0 0 0 2px #007bff1a}.select-trigger[data-v-411df2ed]:focus{outline:none;border-color:#007bff;box-shadow:0 0 0 2px #007bff40}.selected-text[data-v-411df2ed]{flex:1;text-align:left;color:#333}.arrow[data-v-411df2ed]{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-411df2ed]{transform:rotate(180deg);padding-left:0}.select-dropdown[data-v-411df2ed]{position:absolute;top:110%;left:0;width:200px;background:#fff;border:1px solid #ddd;border-top:none;border-radius:4px;box-shadow:0 4px 6px #0000001a;z-index:1000;max-height:200px;overflow-y:auto}.select-option[data-v-411df2ed]{padding:4px 12px;cursor:pointer;transition:all .2s ease;color:#666;background-color:#fff;border-radius:6px;margin:2px}.select-option[data-v-411df2ed]:hover{background-color:#f5f5f5!important;color:#333!important}.select-option.selected[data-v-411df2ed]{background-color:#e3f2fd;color:#1976d2;font-weight:500}.select-option.selected[data-v-411df2ed]:hover{background-color:#bbdefb!important;color:#1565c0!important}@media (prefers-color-scheme: dark){.select-trigger[data-v-411df2ed]{background-color:#2d3748;border-color:#4a5568;color:#e2e8f0}.select-trigger[data-v-411df2ed]:hover{border-color:#63b3ed;box-shadow:0 0 0 2px #63b3ed1a}.selected-text[data-v-411df2ed]{color:#e2e8f0}.arrow[data-v-411df2ed]{color:#a0aec0}.select-dropdown[data-v-411df2ed]{border-radius:4px;background-color:#2d3748;border-color:#4a5568}.select-option[data-v-411df2ed]{color:#a0a0a0;background-color:#2d3748}.select-option[data-v-411df2ed]:hover{background-color:#718096!important;color:#f7fafc!important}.select-option.selected[data-v-411df2ed]{background-color:#2b6cb0;color:#90cdf4}.select-option.selected[data-v-411df2ed]: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-77ac6b2a]{--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-77ac6b2a]{display:none}.checkbox-wrapper[data-v-77ac6b2a]{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-77ac6b2a]{position:absolute;top:0;left:0;right:0;bottom:0;border-radius:8px;border:2px solid var(--checkbox-border);background:#fff;transition:all .2s ease}.checkbox-icon[data-v-77ac6b2a]{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-77ac6b2a]{stroke-dasharray:40;stroke-dashoffset:40;transition:stroke-dashoffset .3s ease .1s}.checkbox-label[data-v-77ac6b2a]{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-77ac6b2a]{background:var(--checkbox-color);border-color:var(--checkbox-color)}.ios-checkbox input:checked+.checkbox-wrapper .checkbox-icon[data-v-77ac6b2a]{transform:translate(-50%,-50%) scale(1)}.ios-checkbox input:checked+.checkbox-wrapper .check-path[data-v-77ac6b2a]{stroke-dashoffset:0}.ios-checkbox:hover .checkbox-wrapper[data-v-77ac6b2a]{transform:scale(1.05)}.ios-checkbox:active .checkbox-wrapper[data-v-77ac6b2a]{transform:scale(.95)}.ios-checkbox input:focus+.checkbox-wrapper .checkbox-bg[data-v-77ac6b2a]{box-shadow:0 0 0 4px var(--checkbox-bg)}.ios-checkbox.blue[data-v-77ac6b2a]{--checkbox-color: #3b82f6;--checkbox-bg: #dbeafe;--checkbox-border: #93c5fd}.ios-checkbox.green[data-v-77ac6b2a]{--checkbox-color: #10b981;--checkbox-bg: #d1fae5;--checkbox-border: #6ee7b7}.ios-checkbox.purple[data-v-77ac6b2a]{--checkbox-color: #8b5cf6;--checkbox-bg: #ede9fe;--checkbox-border: #c4b5fd}.ios-checkbox.red[data-v-77ac6b2a]{--checkbox-color: #ef4444;--checkbox-bg: #fee2e2;--checkbox-border: #fca5a5}@keyframes bounce-77ac6b2a{0%,to{transform:scale(1)}50%{transform:scale(1.1)}}.ios-checkbox input:checked+.checkbox-wrapper[data-v-77ac6b2a]{animation:bounce-77ac6b2a .3s cubic-bezier(.4,0,.2,1)}.copy-item[data-v-e586dbae]{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-e586dbae]:hover{text-decoration:underline;background-color:transparent}.tooltip[data-v-e586dbae]{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-e586dbae]: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-e586dbae]{opacity:1;visibility:visible;top:-40px}.extract-code[data-v-e586dbae]{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-e586dbae]:hover{background:#e9ecef}.extract-code:hover .tooltip[data-v-e586dbae]{opacity:1;visibility:visible;top:-40px}.link-manager[data-v-50cc6ac7]{max-width:1000px;margin:0 auto}.link-stats[data-v-50cc6ac7]{display:flex;gap:20px;margin-bottom:20px;padding:15px;background:#f5f5f5;border-radius:8px}.stat-item[data-v-50cc6ac7]{display:flex;flex-direction:column;align-items:center}.stat-label[data-v-50cc6ac7]{font-size:12px;color:#666;margin-bottom:4px}.stat-value[data-v-50cc6ac7]{font-size:18px;font-weight:700;color:#333}.add-link-section[data-v-50cc6ac7]{margin-bottom:20px;display:flex;align-items:center;gap:10px}.add-link-btn[data-v-50cc6ac7]{padding:10px 20px;background:#007bff;color:#fff;border:none;border-radius:6px;cursor:pointer;font-size:14px}.add-link-btn[data-v-50cc6ac7]:hover:not(:disabled){background:#0056b3}.add-link-btn[data-v-50cc6ac7]:disabled{background:#ccc;cursor:not-allowed}.auth-hint[data-v-50cc6ac7]{color:#666;font-size:12px}.add-form[data-v-50cc6ac7]{background:#f9f9f9;padding:20px;border-radius:8px;margin-bottom:20px}.add-form h4[data-v-50cc6ac7]{margin:0 0 15px;color:#333}.form-row[data-v-50cc6ac7]{display:flex;gap:15px;margin-bottom:15px}.form-group[data-v-50cc6ac7]{flex:1}.form-group label[data-v-50cc6ac7]{margin-bottom:5px;font-weight:700;color:#333;font-size:13px}.checkbox-group[data-v-50cc6ac7]{display:flex;flex-wrap:wrap;gap:15px}.form-group input[data-v-50cc6ac7],.form-group select[data-v-50cc6ac7]{width:100%;padding:8px 12px;border:1px solid #ddd;border-radius:4px;font-size:14px}.form-group select[data-v-50cc6ac7]:focus{outline:none;border-color:#007bff;box-shadow:0 0 0 2px #007bff40}.input-wrapper[data-v-50cc6ac7]{border:1px solid #ddd;border-radius:6px}.input-wrapper input[data-v-50cc6ac7]{width:100%;border:none;outline:none;font-size:14px;background:transparent}.input-wrapper[data-v-50cc6ac7]:focus-within{border-color:#007bff;box-shadow:0 0 0 2px #007bff40}.form-actions[data-v-50cc6ac7]{display:flex;gap:10px;margin-top:20px}.form-actions button[data-v-50cc6ac7]{padding:10px 20px;border:none;border-radius:4px;cursor:pointer;font-size:14px}.form-actions button[type=submit][data-v-50cc6ac7]{background:#28a745;color:#fff}.form-actions button[type=submit][data-v-50cc6ac7]:hover:not(:disabled){background:#218838}.form-actions button[type=button][data-v-50cc6ac7]{background:#6c757d;color:#fff}.form-actions button[type=button][data-v-50cc6ac7]:hover{background:#545b62}.filter-bar[data-v-50cc6ac7]{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:20px;border-radius:6px}.filter-controls[data-v-50cc6ac7]{display:flex;gap:10px}.filter-bar .custom-select[data-v-50cc6ac7]{width:auto;min-width:100px}.add-link-btn-compact[data-v-50cc6ac7]{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-50cc6ac7]:hover:not(:disabled){background:#b1cfef;transform:scale(1)}.add-link-btn-compact[data-v-50cc6ac7]:disabled{background:#ccc;cursor:not-allowed;transform:none}.filter-bar select[data-v-50cc6ac7]{padding:6px 10px;border:1px solid #ddd;border-radius:4px;font-size:13px}.links-list[data-v-50cc6ac7]{display:flex;flex-direction:column;gap:15px}.link-item[data-v-50cc6ac7]{background:#f8f9fa;border:1px solid #e0e0e0;border-radius:8px;padding:15px;box-shadow:0 2px 4px #0000001a;transition:box-shadow .3s ease;cursor:pointer}.link-item[data-v-50cc6ac7]:hover{box-shadow:0 4px 8px #00000026}.link-header[data-v-50cc6ac7]{display:flex;align-items:center;gap:10px;margin-bottom:10px}.link-type-badge[data-v-50cc6ac7]{padding:4px 8px;border-radius:4px;font-size:12px;font-weight:700;color:#fff}.link-type-badge.netdisk[data-v-50cc6ac7]{background:#28a745}.link-type-badge.bt[data-v-50cc6ac7]{background:#dc3545}.link-type-badge.online[data-v-50cc6ac7]{background:#007bff}.platform-badge[data-v-50cc6ac7]{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-50cc6ac7]{width:16px;height:16px;object-fit:contain}.link-meta[data-v-50cc6ac7]{display:flex;gap:3px;margin-left:auto;align-items:center}.file-size[data-v-50cc6ac7]{padding:2px 5px;border-radius:3px;font-size:10px;background:#e3f2fd!important;color:#1976d2!important;font-weight:500}.feature-tags[data-v-50cc6ac7]{display:flex;gap:3px;flex-wrap:wrap}.feature-tag[data-v-50cc6ac7]{padding:2px 5px;background:#007bff;color:#fff;border-radius:3px;font-size:10px;font-weight:700}.feature-tag.feature-4k[data-v-50cc6ac7]{background:#edf25c;color:#232323}.feature-tag.feature-hdr[data-v-50cc6ac7]{background:gold;color:#232323}.feature-tag.feature-dolby[data-v-50cc6ac7]{background:#eaeaea;color:#121212;font-weight:300}.feature-tag.feature-subtitle[data-v-50cc6ac7]{background:#cee2e8;color:#036;font-weight:300}.link-content[data-v-50cc6ac7]{margin-bottom:15px}.link-title-row[data-v-50cc6ac7]{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-row[data-v-50cc6ac7]:hover{background-color:#f8f9fa}.link-title[data-v-50cc6ac7]{font-weight:700;color:#333;flex:1;overflow:hidden;position:relative;padding-right:20px;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-50cc6ac7]{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-50cc6ac7]:after{content:"";position:absolute;top:0;right:0;width:140px;height:100%;background:linear-gradient(to right,transparent,#f8f9fa);pointer-events:none;transition:opacity .3s ease}.link-title.expanded[data-v-50cc6ac7]:after{opacity:0}.expand-arrow[data-v-50cc6ac7]{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-50cc6ac7]:hover{color:#333}.expand-arrow.expanded[data-v-50cc6ac7]{transform:rotate(180deg)}.link-details[data-v-50cc6ac7]{margin-top:10px;animation:slideDown-50cc6ac7 .3s ease forwards}@keyframes slideDown-50cc6ac7{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.link-url[data-v-50cc6ac7]{display:flex;align-items:center;gap:8px;margin-bottom:5px}.link-url a[data-v-50cc6ac7]{color:#007bff;text-decoration:none;flex:1;word-break:break-all}.link-url a[data-v-50cc6ac7]:hover{text-decoration:underline;background-color:transparent}.extract-code[data-v-50cc6ac7]{display:flex;background:#f8f9fa;align-items:center;gap:8px;font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;font-size:12px}.extract-code code[data-v-50cc6ac7]{cursor:pointer;background:#eaeaea;padding:2px 6px;border-radius:3px;color:#3d3d3d}.extract-code code[data-v-50cc6ac7]:hover{background:#e6e6e6}.copy-btn[data-v-50cc6ac7]{background:none;border:none;cursor:pointer;font-size:14px;padding:2px 4px;border-radius:3px}.copy-btn[data-v-50cc6ac7]:hover{background:#f8f9fa}.link-actions[data-v-50cc6ac7]{display:flex;justify-content:space-between;align-items:center;margin-top:10px;margin-bottom:10px}.vote-section[data-v-50cc6ac7]{display:flex;align-items:center;gap:10px}.vote-btn[data-v-50cc6ac7]{background:#f8f9fa;border:1px solid #dee2e6;padding:5px 10px;border-radius:4px;cursor:pointer;font-size:12px;display:flex;align-items:center;gap:4px}.vote-btn[data-v-50cc6ac7]:hover:not(:disabled){background:#e9ecef}.vote-btn[data-v-50cc6ac7]:disabled{opacity:.6;cursor:not-allowed}.vote-btn.active.up[data-v-50cc6ac7]{background:#d4edda;border-color:#c3e6cb;color:#155724}.vote-btn.active.down[data-v-50cc6ac7]{background:#f8d7da;border-color:#f5c6cb;color:#721c24}.score[data-v-50cc6ac7]{font-weight:700;color:#333;font-size:13px}.action-buttons[data-v-50cc6ac7]{display:flex;gap:8px}.action-buttons button[data-v-50cc6ac7]{padding:4px 8px;border:none;border-radius:3px;cursor:pointer;font-size:12px}.edit-btn[data-v-50cc6ac7]{background:#ffc107;color:#212529}.edit-btn[data-v-50cc6ac7]:hover{background:#e0a800}.delete-btn[data-v-50cc6ac7]{background:#dc3545;color:#fff}.delete-btn[data-v-50cc6ac7]:hover{background:#c82333}.report-btn[data-v-50cc6ac7]{width:48px;height:28px;background:#eee;color:#495057}.report-btn[data-v-50cc6ac7]:hover{color:#495057;background:#e3e3e3}.link-footer[data-v-50cc6ac7]{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-50cc6ac7]{color:#dc3545;font-weight:700}.empty-state[data-v-50cc6ac7]{text-align:center;padding:40px;color:#666}.loading[data-v-50cc6ac7]{text-align:center;padding:20px;color:#666}.toast-container[data-v-50cc6ac7]{position:fixed;top:20px;left:50%;transform:translate(-50%);z-index:10000;pointer-events:none}.toast[data-v-50cc6ac7]{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-50cc6ac7 .3s ease-out;transition:all .3s ease}.toast[data-v-50cc6ac7]:hover{transform:translateY(-2px);box-shadow:0 6px 16px #0003}.error-toast[data-v-50cc6ac7]{background:#fff5f5}.error-toast span[data-v-50cc6ac7]{color:#721c24}.success-toast[data-v-50cc6ac7]{background:#f0fff4}.success-toast span[data-v-50cc6ac7]{color:#155724}.toast-close[data-v-50cc6ac7]{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-50cc6ac7]:hover{color:#666}@keyframes slideDown-50cc6ac7{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}.error-message[data-v-50cc6ac7]{background:#f8d7da;color:#721c24;padding:10px 15px;border-radius:4px;margin:10px 0;border:1px solid #f5c6cb}.success-message[data-v-50cc6ac7]{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-50cc6ac7]{padding:10px}.form-row[data-v-50cc6ac7]{flex-direction:column;gap:10px}.filter-bar[data-v-50cc6ac7]{flex-direction:column;gap:8px}.link-header[data-v-50cc6ac7]{flex-wrap:wrap}.link-meta[data-v-50cc6ac7]{margin-left:0;margin-top:5px}.link-actions[data-v-50cc6ac7]{flex-direction:column;gap:10px;align-items:flex-start}}.modal-overlay[data-v-50cc6ac7]{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-50cc6ac7]{background:#fff;border-radius:8px;width:90%;max-width:600px;max-height:90vh;box-shadow:0 4px 20px #00000026}.modal-header[data-v-50cc6ac7]{display:flex;justify-content:space-between;align-items:center;padding:20px 20px 0;border-bottom:1px solid #eee;margin-bottom:20px}.modal-header h4[data-v-50cc6ac7]{margin:0;color:#333;font-size:18px}.close-btn[data-v-50cc6ac7]{background:none;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:50%}.close-btn[data-v-50cc6ac7]:hover{background:#f5f5f5;color:#333}.modal-body[data-v-50cc6ac7]{padding:0 20px 20px}.vote-section[data-v-50cc6ac7]{width:100%}.input-wrapper textarea[data-v-50cc6ac7]{width:100%;border:none;outline:none;font-size:14px;font-family:inherit;resize:vertical;min-height:80px;background:transparent}.input-wrapper[data-v-50cc6ac7]:has(textarea):focus-within{border-color:#007bff;box-shadow:0 0 0 2px #007bff40}.input-wrapper textarea[data-v-50cc6ac7]::placeholder{color:#999}.form-actions button[data-v-50cc6ac7]:disabled{background:#ccc;cursor:not-allowed}.form-actions button[data-v-50cc6ac7]:disabled:hover{background:#ccc}.pagination[data-v-50cc6ac7]{display:flex;justify-content:center;align-items:center;gap:15px;margin-top:10px;padding:10px;background:#f8f9fa;border-radius:8px}.pagination-btn[data-v-50cc6ac7]{padding:8px 16px;border:1px solid #ddd;background:#fff;color:#333;border-radius:4px;cursor:pointer;font-size:14px;transition:all .2s}.pagination-btn[data-v-50cc6ac7]:hover:not(:disabled){background:#b3d8ff;color:#007bff;border-color:#b3d8ff}.pagination-btn[data-v-50cc6ac7]:disabled{background:#f5f5f5;color:#999;cursor:not-allowed;border-color:#ddd}.pagination-info[data-v-50cc6ac7]{font-size:14px;color:#666;font-weight:500}.content-wrapper[data-v-2fb0e09c]{padding:16px}.movie-info[data-v-2fb0e09c]{margin-bottom:16px;padding:12px;background:#f8f9fa;border-radius:6px;border-left:4px solid #00a1d6}.movie-title[data-v-2fb0e09c]{margin:0 0 8px;font-size:16px;font-weight:600;color:#333;line-height:1.3}.movie-meta[data-v-2fb0e09c]{display:flex;gap:12px;align-items:center}.movie-meta .year[data-v-2fb0e09c]{background:#6c757d;color:#fff;padding:2px 6px;border-radius:3px;font-size:12px;font-weight:500}.movie-meta .rating[data-v-2fb0e09c]{color:#ff6b35;font-weight:600;font-size:13px}.navigation-bar[data-v-2fb0e09c]{display:flex;border-bottom:1px solid #e0e0e0;margin-bottom:16px}.nav-btn[data-v-2fb0e09c]{flex:1;padding:12px 16px;border:none;background:none;cursor:pointer;font-size:14px;font-weight:500;color:#666;transition:all .2s;border-bottom:2px solid transparent}.nav-btn[data-v-2fb0e09c]:hover{background-color:#f5f5f5;color:#333}.nav-btn.active[data-v-2fb0e09c]{color:#00a1d6;border-bottom-color:#00a1d6;background-color:#f8fbff}.tab-content[data-v-2fb0e09c]{min-height:200px}.tab-panel[data-v-2fb0e09c]{padding-top:16px 0}.tab-panel h4[data-v-2fb0e09c]{margin:0 0 12px;color:#333;font-size:16px;font-weight:600}.tab-panel p[data-v-2fb0e09c]{margin:0;color:#666;line-height:1.5}.sub-nav[data-v-2fb0e09c]{display:flex;gap:4px;margin-bottom:12px;padding:4px;background:#e9ecef;border-radius:6px}.sub-tab[data-v-2fb0e09c]{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-2fb0e09c]:hover{background:#dee2e6;color:#495057}.sub-tab.active[data-v-2fb0e09c]{background:#007bff;color:#fff;font-weight:500}.sub-content[data-v-2fb0e09c]{margin-top:8px}.sub-tab-content[data-v-2fb0e09c]{padding:8px 0}.sub-tab-content p[data-v-2fb0e09c]{margin:4px 0;color:#666;font-size:12px}.no-subject[data-v-2fb0e09c]{text-align:center;padding:40px 20px;color:#666}.no-subject p[data-v-2fb0e09c]{margin:8px 0;line-height:1.5}.no-subject .hint[data-v-2fb0e09c]{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}.custom-window[data-v-0af292b5]{position:relative;width:100%;max-width:350px;min-height:200px;background:#fff;border:1px solid #ddd;border-radius:8px;box-shadow:0 2px 12px #0000000d;margin-bottom:15px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}.window-header[data-v-0af292b5]{color:#545454;border-top:1px solid #ddd;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-0af292b5]{font-weight:300;font-size:12px}.close-btn[data-v-0af292b5]{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-0af292b5]:hover{background-color:#fff3}.window-content[data-v-0af292b5]{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 Bs(e){const t=Object.create(null);for(const s of e.split(","))t[s]=1;return s=>s in t}const Z={},St=[],je=()=>{},_o=()=>!1,cs=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),js=e=>e.startsWith("onUpdate:"),me=Object.assign,Hs=(e,t)=>{const s=e.indexOf(t);s>-1&&e.splice(s,1)},bo=Object.prototype.hasOwnProperty,J=(e,t)=>bo.call(e,t),V=Array.isArray,Tt=e=>fs(e)==="[object Map]",On=e=>fs(e)==="[object Set]",F=e=>typeof e=="function",ue=e=>typeof e=="string",lt=e=>typeof e=="symbol",oe=e=>e!==null&&typeof e=="object",Dn=e=>(oe(e)||F(e))&&F(e.then)&&F(e.catch),Mn=Object.prototype.toString,fs=e=>Mn.call(e),yo=e=>fs(e).slice(8,-1),Un=e=>fs(e)==="[object Object]",qs=e=>ue(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Nt=Bs(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),ds=e=>{const t=Object.create(null);return s=>t[s]||(t[s]=e(s))},wo=/-(\w)/g,it=ds(e=>e.replace(wo,(t,s)=>s?s.toUpperCase():"")),xo=/\B([A-Z])/g,gt=ds(e=>e.replace(xo,"-$1").toLowerCase()),Vn=ds(e=>e.charAt(0).toUpperCase()+e.slice(1)),Ws=ds(e=>e?`on${Vn(e)}`:""),at=(e,t)=>!Object.is(e,t),ps=(e,...t)=>{for(let s=0;s<e.length;s++)e[s](...t)},Ks=(e,t,s,n=!1)=>{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:n,value:s})},zs=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let Rn;const hs=()=>Rn||(Rn=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Bt(e){if(V(e)){const t={};for(let s=0;s<e.length;s++){const n=e[s],r=ue(n)?To(n):Bt(n);if(r)for(const o in r)t[o]=r[o]}return t}else if(ue(e)||oe(e))return e}const ko=/;(?![^(]*\))/g,Co=/:([^]+)/,So=/\/\*[^]*?\*\//g;function To(e){const t={};return e.replace(So,"").split(ko).forEach(s=>{if(s){const n=s.split(Co);n.length>1&&(t[n[0].trim()]=n[1].trim())}}),t}function ce(e){let t="";if(ue(e))t=e;else if(V(e))for(let s=0;s<e.length;s++){const n=ce(e[s]);n&&(t+=n+" ")}else if(oe(e))for(const s in e)e[s]&&(t+=s+" ");return t.trim()}const Eo=Bs("itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly");function Ln(e){return!!e||e===""}const Fn=e=>!!(e&&e.__v_isRef===!0),L=e=>ue(e)?e:e==null?"":V(e)||oe(e)&&(e.toString===Mn||!F(e.toString))?Fn(e)?L(e.value):JSON.stringify(e,Nn,2):String(e),Nn=(e,t)=>Fn(t)?Nn(e,t.value):Tt(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((s,[n,r],o)=>(s[Gs(n,o)+" =>"]=r,s),{})}:On(t)?{[`Set(${t.size})`]:[...t.values()].map(s=>Gs(s))}:lt(t)?Gs(t):oe(t)&&!V(t)&&!Un(t)?String(t):t,Gs=(e,t="")=>{var s;return lt(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 ke;class $o{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=ke,!t&&ke&&(this.index=(ke.scopes||(ke.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=ke;try{return ke=this,t()}finally{ke=s}}}on(){++this._on===1&&(this.prevScope=ke,ke=this)}off(){this._on>0&&--this._on===0&&(ke=this.prevScope,this.prevScope=void 0)}stop(t){if(this._active){this._active=!1;let s,n;for(s=0,n=this.effects.length;s<n;s++)this.effects[s].stop();for(this.effects.length=0,s=0,n=this.cleanups.length;s<n;s++)this.cleanups[s]();if(this.cleanups.length=0,this.scopes){for(s=0,n=this.scopes.length;s<n;s++)this.scopes[s].stop(!0);this.scopes.length=0}if(!this.detached&&this.parent&&!t){const r=this.parent.scopes.pop();r&&r!==this&&(this.parent.scopes[this.index]=r,r.index=this.index)}this.parent=void 0}}}function Po(){return ke}let ee;const Js=new WeakSet;class Bn{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,ke&&ke.active&&ke.effects.push(this)}pause(){this.flags|=64}resume(){this.flags&64&&(this.flags&=-65,Js.has(this)&&(Js.delete(this),this.trigger()))}notify(){this.flags&2&&!(this.flags&32)||this.flags&8||Hn(this)}run(){if(!(this.flags&1))return this.fn();this.flags|=2,Gn(this),qn(this);const t=ee,s=Le;ee=this,Le=!0;try{return this.fn()}finally{Wn(this),ee=t,Le=s,this.flags&=-3}}stop(){if(this.flags&1){for(let t=this.deps;t;t=t.nextDep)Zs(t);this.deps=this.depsTail=void 0,Gn(this),this.onStop&&this.onStop(),this.flags&=-2}}trigger(){this.flags&64?Js.add(this):this.scheduler?this.scheduler():this.runIfDirty()}runIfDirty(){Xs(this)&&this.run()}get dirty(){return Xs(this)}}let jn=0,jt,Ht;function Hn(e,t=!1){if(e.flags|=8,t){e.next=Ht,Ht=e;return}e.next=jt,jt=e}function Ys(){jn++}function Qs(){if(--jn>0)return;if(Ht){let t=Ht;for(Ht=void 0;t;){const s=t.next;t.next=void 0,t.flags&=-9,t=s}}let e;for(;jt;){let t=jt;for(jt=void 0;t;){const s=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(n){e||(e=n)}t=s}}if(e)throw e}function qn(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function Wn(e){let t,s=e.depsTail,n=s;for(;n;){const r=n.prevDep;n.version===-1?(n===s&&(s=r),Zs(n),Ao(n)):t=n,n.dep.activeLink=n.prevActiveLink,n.prevActiveLink=void 0,n=r}e.deps=t,e.depsTail=s}function Xs(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(Kn(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function Kn(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===qt)||(e.globalVersion=qt,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!Xs(e))))return;e.flags|=2;const t=e.dep,s=ee,n=Le;ee=e,Le=!0;try{qn(e);const r=e.fn(e._value);(t.version===0||at(r,e._value))&&(e.flags|=128,e._value=r,t.version++)}catch(r){throw t.version++,r}finally{ee=s,Le=n,Wn(e),e.flags&=-3}}function Zs(e,t=!1){const{dep:s,prevSub:n,nextSub:r}=e;if(n&&(n.nextSub=r,e.prevSub=void 0),r&&(r.prevSub=n,e.nextSub=void 0),s.subs===e&&(s.subs=n,!n&&s.computed)){s.computed.flags&=-5;for(let o=s.computed.deps;o;o=o.nextDep)Zs(o,!0)}!t&&!--s.sc&&s.map&&s.map.delete(s.key)}function Ao(e){const{prevDep:t,nextDep:s}=e;t&&(t.nextDep=s,e.prevDep=void 0),s&&(s.prevDep=t,e.nextDep=void 0)}let Le=!0;const zn=[];function He(){zn.push(Le),Le=!1}function qe(){const e=zn.pop();Le=e===void 0?!0:e}function Gn(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const s=ee;ee=void 0;try{t()}finally{ee=s}}}let qt=0;class Io{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 en{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(!ee||!Le||ee===this.computed)return;let s=this.activeLink;if(s===void 0||s.sub!==ee)s=this.activeLink=new Io(ee,this),ee.deps?(s.prevDep=ee.depsTail,ee.depsTail.nextDep=s,ee.depsTail=s):ee.deps=ee.depsTail=s,Jn(s);else if(s.version===-1&&(s.version=this.version,s.nextDep)){const n=s.nextDep;n.prevDep=s.prevDep,s.prevDep&&(s.prevDep.nextDep=n),s.prevDep=ee.depsTail,s.nextDep=void 0,ee.depsTail.nextDep=s,ee.depsTail=s,ee.deps===s&&(ee.deps=n)}return s}trigger(t){this.version++,qt++,this.notify(t)}notify(t){Ys();try{for(let s=this.subs;s;s=s.prevSub)s.sub.notify()&&s.sub.dep.notify()}finally{Qs()}}}function Jn(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let n=t.deps;n;n=n.nextDep)Jn(n)}const s=e.dep.subs;s!==e&&(e.prevSub=s,s&&(s.nextSub=e)),e.dep.subs=e}}const tn=new WeakMap,mt=Symbol(""),sn=Symbol(""),Wt=Symbol("");function ge(e,t,s){if(Le&&ee){let n=tn.get(e);n||tn.set(e,n=new Map);let r=n.get(s);r||(n.set(s,r=new en),r.map=n,r.key=s),r.track()}}function Xe(e,t,s,n,r,o){const l=tn.get(e);if(!l){qt++;return}const i=a=>{a&&a.trigger()};if(Ys(),t==="clear")l.forEach(i);else{const a=V(e),g=a&&qs(s);if(a&&s==="length"){const h=Number(n);l.forEach((m,_)=>{(_==="length"||_===Wt||!lt(_)&&_>=h)&&i(m)})}else switch((s!==void 0||l.has(void 0))&&i(l.get(s)),g&&i(l.get(Wt)),t){case"add":a?g&&i(l.get("length")):(i(l.get(mt)),Tt(e)&&i(l.get(sn)));break;case"delete":a||(i(l.get(mt)),Tt(e)&&i(l.get(sn)));break;case"set":Tt(e)&&i(l.get(mt));break}}Qs()}function Et(e){const t=K(e);return t===e?t:(ge(t,"iterate",Wt),Me(e)?t:t.map(pe))}function vs(e){return ge(e=K(e),"iterate",Wt),e}const Oo={__proto__:null,[Symbol.iterator](){return nn(this,Symbol.iterator,pe)},concat(...e){return Et(this).concat(...e.map(t=>V(t)?Et(t):t))},entries(){return nn(this,"entries",e=>(e[1]=pe(e[1]),e))},every(e,t){return Ze(this,"every",e,t,void 0,arguments)},filter(e,t){return Ze(this,"filter",e,t,s=>s.map(pe),arguments)},find(e,t){return Ze(this,"find",e,t,pe,arguments)},findIndex(e,t){return Ze(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return Ze(this,"findLast",e,t,pe,arguments)},findLastIndex(e,t){return Ze(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return Ze(this,"forEach",e,t,void 0,arguments)},includes(...e){return rn(this,"includes",e)},indexOf(...e){return rn(this,"indexOf",e)},join(e){return Et(this).join(e)},lastIndexOf(...e){return rn(this,"lastIndexOf",e)},map(e,t){return Ze(this,"map",e,t,void 0,arguments)},pop(){return Kt(this,"pop")},push(...e){return Kt(this,"push",e)},reduce(e,...t){return Yn(this,"reduce",e,t)},reduceRight(e,...t){return Yn(this,"reduceRight",e,t)},shift(){return Kt(this,"shift")},some(e,t){return Ze(this,"some",e,t,void 0,arguments)},splice(...e){return Kt(this,"splice",e)},toReversed(){return Et(this).toReversed()},toSorted(e){return Et(this).toSorted(e)},toSpliced(...e){return Et(this).toSpliced(...e)},unshift(...e){return Kt(this,"unshift",e)},values(){return nn(this,"values",pe)}};function nn(e,t,s){const n=vs(e),r=n[t]();return n!==e&&!Me(e)&&(r._next=r.next,r.next=()=>{const o=r._next();return o.value&&(o.value=s(o.value)),o}),r}const Do=Array.prototype;function Ze(e,t,s,n,r,o){const l=vs(e),i=l!==e&&!Me(e),a=l[t];if(a!==Do[t]){const m=a.apply(e,o);return i?pe(m):m}let g=s;l!==e&&(i?g=function(m,_){return s.call(this,pe(m),_,e)}:s.length>2&&(g=function(m,_){return s.call(this,m,_,e)}));const h=a.call(l,g,n);return i&&r?r(h):h}function Yn(e,t,s,n){const r=vs(e);let o=s;return r!==e&&(Me(e)?s.length>3&&(o=function(l,i,a){return s.call(this,l,i,a,e)}):o=function(l,i,a){return s.call(this,l,pe(i),a,e)}),r[t](o,...n)}function rn(e,t,s){const n=K(e);ge(n,"iterate",Wt);const r=n[t](...s);return(r===-1||r===!1)&&ln(s[0])?(s[0]=K(s[0]),n[t](...s)):r}function Kt(e,t,s=[]){He(),Ys();const n=K(e)[t].apply(e,s);return Qs(),qe(),n}const Mo=Bs("__proto__,__v_isRef,__isVue"),Qn=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(lt));function Uo(e){lt(e)||(e=String(e));const t=K(this);return ge(t,"has",e),t.hasOwnProperty(e)}class Xn{constructor(t=!1,s=!1){this._isReadonly=t,this._isShallow=s}get(t,s,n){if(s==="__v_skip")return t.__v_skip;const r=this._isReadonly,o=this._isShallow;if(s==="__v_isReactive")return!r;if(s==="__v_isReadonly")return r;if(s==="__v_isShallow")return o;if(s==="__v_raw")return n===(r?o?rr:nr:o?sr:tr).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(n)?t:void 0;const l=V(t);if(!r){let a;if(l&&(a=Oo[s]))return a;if(s==="hasOwnProperty")return Uo}const i=Reflect.get(t,s,he(t)?t:n);return(lt(s)?Qn.has(s):Mo(s))||(r||ge(t,"get",s),o)?i:he(i)?l&&qs(s)?i:i.value:oe(i)?r?or(i):$t(i):i}}class Zn extends Xn{constructor(t=!1){super(!1,t)}set(t,s,n,r){let o=t[s];if(!this._isShallow){const a=ut(o);if(!Me(n)&&!ut(n)&&(o=K(o),n=K(n)),!V(t)&&he(o)&&!he(n))return a?!1:(o.value=n,!0)}const l=V(t)&&qs(s)?Number(s)<t.length:J(t,s),i=Reflect.set(t,s,n,he(t)?t:r);return t===K(r)&&(l?at(n,o)&&Xe(t,"set",s,n):Xe(t,"add",s,n)),i}deleteProperty(t,s){const n=J(t,s);t[s];const r=Reflect.deleteProperty(t,s);return r&&n&&Xe(t,"delete",s,void 0),r}has(t,s){const n=Reflect.has(t,s);return(!lt(s)||!Qn.has(s))&&ge(t,"has",s),n}ownKeys(t){return ge(t,"iterate",V(t)?"length":mt),Reflect.ownKeys(t)}}class er extends Xn{constructor(t=!1){super(!0,t)}set(t,s){return!0}deleteProperty(t,s){return!0}}const Vo=new Zn,Ro=new er,Lo=new Zn(!0),Fo=new er(!0),on=e=>e,gs=e=>Reflect.getPrototypeOf(e);function No(e,t,s){return function(...n){const r=this.__v_raw,o=K(r),l=Tt(o),i=e==="entries"||e===Symbol.iterator&&l,a=e==="keys"&&l,g=r[e](...n),h=s?on:t?ys:pe;return!t&&ge(o,"iterate",a?sn:mt),{next(){const{value:m,done:_}=g.next();return _?{value:m,done:_}:{value:i?[h(m[0]),h(m[1])]:h(m),done:_}},[Symbol.iterator](){return this}}}}function ms(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function Bo(e,t){const s={get(r){const o=this.__v_raw,l=K(o),i=K(r);e||(at(r,i)&&ge(l,"get",r),ge(l,"get",i));const{has:a}=gs(l),g=t?on:e?ys:pe;if(a.call(l,r))return g(o.get(r));if(a.call(l,i))return g(o.get(i));o!==l&&o.get(r)},get size(){const r=this.__v_raw;return!e&&ge(K(r),"iterate",mt),Reflect.get(r,"size",r)},has(r){const o=this.__v_raw,l=K(o),i=K(r);return e||(at(r,i)&&ge(l,"has",r),ge(l,"has",i)),r===i?o.has(r):o.has(r)||o.has(i)},forEach(r,o){const l=this,i=l.__v_raw,a=K(i),g=t?on:e?ys:pe;return!e&&ge(a,"iterate",mt),i.forEach((h,m)=>r.call(o,g(h),g(m),l))}};return me(s,e?{add:ms("add"),set:ms("set"),delete:ms("delete"),clear:ms("clear")}:{add(r){!t&&!Me(r)&&!ut(r)&&(r=K(r));const o=K(this);return gs(o).has.call(o,r)||(o.add(r),Xe(o,"add",r,r)),this},set(r,o){!t&&!Me(o)&&!ut(o)&&(o=K(o));const l=K(this),{has:i,get:a}=gs(l);let g=i.call(l,r);g||(r=K(r),g=i.call(l,r));const h=a.call(l,r);return l.set(r,o),g?at(o,h)&&Xe(l,"set",r,o):Xe(l,"add",r,o),this},delete(r){const o=K(this),{has:l,get:i}=gs(o);let a=l.call(o,r);a||(r=K(r),a=l.call(o,r)),i&&i.call(o,r);const g=o.delete(r);return a&&Xe(o,"delete",r,void 0),g},clear(){const r=K(this),o=r.size!==0,l=r.clear();return o&&Xe(r,"clear",void 0,void 0),l}}),["keys","values","entries",Symbol.iterator].forEach(r=>{s[r]=No(r,e,t)}),s}function _s(e,t){const s=Bo(e,t);return(n,r,o)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?n:Reflect.get(J(s,r)&&r in n?s:n,r,o)}const jo={get:_s(!1,!1)},Ho={get:_s(!1,!0)},qo={get:_s(!0,!1)},Wo={get:_s(!0,!0)},tr=new WeakMap,sr=new WeakMap,nr=new WeakMap,rr=new WeakMap;function Ko(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function zo(e){return e.__v_skip||!Object.isExtensible(e)?0:Ko(yo(e))}function $t(e){return ut(e)?e:bs(e,!1,Vo,jo,tr)}function Go(e){return bs(e,!1,Lo,Ho,sr)}function or(e){return bs(e,!0,Ro,qo,nr)}function Yc(e){return bs(e,!0,Fo,Wo,rr)}function bs(e,t,s,n,r){if(!oe(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const o=zo(e);if(o===0)return e;const l=r.get(e);if(l)return l;const i=new Proxy(e,o===2?n:s);return r.set(e,i),i}function Pt(e){return ut(e)?Pt(e.__v_raw):!!(e&&e.__v_isReactive)}function ut(e){return!!(e&&e.__v_isReadonly)}function Me(e){return!!(e&&e.__v_isShallow)}function ln(e){return e?!!e.__v_raw:!1}function K(e){const t=e&&e.__v_raw;return t?K(t):e}function Jo(e){return!J(e,"__v_skip")&&Object.isExtensible(e)&&Ks(e,"__v_skip",!0),e}const pe=e=>oe(e)?$t(e):e,ys=e=>oe(e)?or(e):e;function he(e){return e?e.__v_isRef===!0:!1}function B(e){return Yo(e,!1)}function Yo(e,t){return he(e)?e:new Qo(e,t)}class Qo{constructor(t,s){this.dep=new en,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=s?t:K(t),this._value=s?t:pe(t),this.__v_isShallow=s}get value(){return this.dep.track(),this._value}set value(t){const s=this._rawValue,n=this.__v_isShallow||Me(t)||ut(t);t=n?t:K(t),at(t,s)&&(this._rawValue=t,this._value=n?t:pe(t),this.dep.trigger())}}function Xo(e){return he(e)?e.value:e}const Zo={get:(e,t,s)=>t==="__v_raw"?e:Xo(Reflect.get(e,t,s)),set:(e,t,s,n)=>{const r=e[t];return he(r)&&!he(s)?(r.value=s,!0):Reflect.set(e,t,s,n)}};function lr(e){return Pt(e)?e:new Proxy(e,Zo)}class el{constructor(t,s,n){this.fn=t,this.setter=s,this._value=void 0,this.dep=new en(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=qt-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!s,this.isSSR=n}notify(){if(this.flags|=16,!(this.flags&8)&&ee!==this)return Hn(this,!0),!0}get value(){const t=this.dep.track();return Kn(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function tl(e,t,s=!1){let n,r;return F(e)?n=e:(n=e.get,r=e.set),new el(n,r,s)}const ws={},xs=new WeakMap;let _t;function sl(e,t=!1,s=_t){if(s){let n=xs.get(s);n||xs.set(s,n=[]),n.push(e)}}function nl(e,t,s=Z){const{immediate:n,deep:r,once:o,scheduler:l,augmentJob:i,call:a}=s,g=O=>r?O:Me(O)||r===!1||r===0?et(O,1):et(O);let h,m,_,y,E=!1,D=!1;if(he(e)?(m=()=>e.value,E=Me(e)):Pt(e)?(m=()=>g(e),E=!0):V(e)?(D=!0,E=e.some(O=>Pt(O)||Me(O)),m=()=>e.map(O=>{if(he(O))return O.value;if(Pt(O))return g(O);if(F(O))return a?a(O,2):O()})):F(e)?t?m=a?()=>a(e,2):e:m=()=>{if(_){He();try{_()}finally{qe()}}const O=_t;_t=h;try{return a?a(e,3,[y]):e(y)}finally{_t=O}}:m=je,t&&r){const O=m,z=r===!0?1/0:r;m=()=>et(O(),z)}const te=Po(),H=()=>{h.stop(),te&&te.active&&Hs(te.effects,h)};if(o&&t){const O=t;t=(...z)=>{O(...z),H()}}let j=D?new Array(e.length).fill(ws):ws;const q=O=>{if(!(!(h.flags&1)||!h.dirty&&!O))if(t){const z=h.run();if(r||E||(D?z.some((xe,Te)=>at(xe,j[Te])):at(z,j))){_&&_();const xe=_t;_t=h;try{const Te=[z,j===ws?void 0:D&&j[0]===ws?[]:j,y];j=z,a?a(t,3,Te):t(...Te)}finally{_t=xe}}}else h.run()};return i&&i(q),h=new Bn(m),h.scheduler=l?()=>l(q,!1):q,y=O=>sl(O,!1,h),_=h.onStop=()=>{const O=xs.get(h);if(O){if(a)a(O,4);else for(const z of O)z();xs.delete(h)}},t?n?q(!0):j=h.run():l?l(q.bind(null,!0),!0):h.run(),H.pause=h.pause.bind(h),H.resume=h.resume.bind(h),H.stop=H,H}function et(e,t=1/0,s){if(t<=0||!oe(e)||e.__v_skip||(s=s||new Set,s.has(e)))return e;if(s.add(e),t--,he(e))et(e.value,t,s);else if(V(e))for(let n=0;n<e.length;n++)et(e[n],t,s);else if(On(e)||Tt(e))e.forEach(n=>{et(n,t,s)});else if(Un(e)){for(const n in e)et(e[n],t,s);for(const n of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,n)&&et(e[n],t,s)}return e}/**
* @vue/runtime-core v3.5.18
* (c) 2018-present Yuxi (Evan) You and Vue contributors
* @license MIT
**/const zt=[];let an=!1;function Qc(e,...t){if(an)return;an=!0,He();const s=zt.length?zt[zt.length-1].component:null,n=s&&s.appContext.config.warnHandler,r=rl();if(n)At(n,s,11,[e+t.map(o=>{var l,i;return(i=(l=o.toString)==null?void 0:l.call(o))!=null?i:JSON.stringify(o)}).join(""),s&&s.proxy,r.map(({vnode:o})=>`at <${Yr(s,o.type)}>`).join(`
`),r]);else{const o=[`[Vue warn]: ${e}`,...t];r.length&&o.push(`
`,...ol(r)),console.warn(...o)}qe(),an=!1}function rl(){let e=zt[zt.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 n=e.component&&e.component.parent;e=n&&n.vnode}return t}function ol(e){const t=[];return e.forEach((s,n)=>{t.push(...n===0?[]:[`
`],...ll(s))}),t}function ll({vnode:e,recurseCount:t}){const s=t>0?`... (${t} recursive calls)`:"",n=e.component?e.component.parent==null:!1,r=` at <${Yr(e.component,e.type,n)}`,o=">"+s;return e.props?[r,...il(e.props),o]:[r+o]}function il(e){const t=[],s=Object.keys(e);return s.slice(0,3).forEach(n=>{t.push(...ir(n,e[n]))}),s.length>3&&t.push(" ..."),t}function ir(e,t,s){return ue(t)?(t=JSON.stringify(t),s?t:[`${e}=${t}`]):typeof t=="number"||typeof t=="boolean"||t==null?s?t:[`${e}=${t}`]:he(t)?(t=ir(e,K(t.value),!0),s?t:[`${e}=Ref<`,t,">"]):F(t)?[`${e}=fn${t.name?`<${t.name}>`:""}`]:(t=K(t),s?t:[`${e}=`,t])}function At(e,t,s,n){try{return n?e(...n):e()}catch(r){ks(r,t,s)}}function We(e,t,s,n){if(F(e)){const r=At(e,t,s,n);return r&&Dn(r)&&r.catch(o=>{ks(o,t,s)}),r}if(V(e)){const r=[];for(let o=0;o<e.length;o++)r.push(We(e[o],t,s,n));return r}}function ks(e,t,s,n=!0){const r=t?t.vnode:null,{errorHandler:o,throwUnhandledErrorInProduction:l}=t&&t.appContext.config||Z;if(t){let i=t.parent;const a=t.proxy,g=`https://vuejs.org/error-reference/#runtime-${s}`;for(;i;){const h=i.ec;if(h){for(let m=0;m<h.length;m++)if(h[m](e,a,g)===!1)return}i=i.parent}if(o){He(),At(o,null,10,[e,a,g]),qe();return}}al(e,s,r,n,l)}function al(e,t,s,n=!0,r=!1){if(r)throw e;console.error(e)}const _e=[];let Ke=-1;const It=[];let ct=null,Ot=0;const ar=Promise.resolve();let Cs=null;function un(e){const t=Cs||ar;return e?t.then(this?e.bind(this):e):t}function ul(e){let t=Ke+1,s=_e.length;for(;t<s;){const n=t+s>>>1,r=_e[n],o=Gt(r);o<e||o===e&&r.flags&2?t=n+1:s=n}return t}function cn(e){if(!(e.flags&1)){const t=Gt(e),s=_e[_e.length-1];!s||!(e.flags&2)&&t>=Gt(s)?_e.push(e):_e.splice(ul(t),0,e),e.flags|=1,ur()}}function ur(){Cs||(Cs=ar.then(dr))}function cl(e){V(e)?It.push(...e):ct&&e.id===-1?ct.splice(Ot+1,0,e):e.flags&1||(It.push(e),e.flags|=1),ur()}function cr(e,t,s=Ke+1){for(;s<_e.length;s++){const n=_e[s];if(n&&n.flags&2){if(e&&n.id!==e.uid)continue;_e.splice(s,1),s--,n.flags&4&&(n.flags&=-2),n(),n.flags&4||(n.flags&=-2)}}}function fr(e){if(It.length){const t=[...new Set(It)].sort((s,n)=>Gt(s)-Gt(n));if(It.length=0,ct){ct.push(...t);return}for(ct=t,Ot=0;Ot<ct.length;Ot++){const s=ct[Ot];s.flags&4&&(s.flags&=-2),s.flags&8||s(),s.flags&=-2}ct=null,Ot=0}}const Gt=e=>e.id==null?e.flags&2?-1:1/0:e.id;function dr(e){try{for(Ke=0;Ke<_e.length;Ke++){const t=_e[Ke];t&&!(t.flags&8)&&(t.flags&4&&(t.flags&=-2),At(t,t.i,t.i?15:14),t.flags&4||(t.flags&=-2))}}finally{for(;Ke<_e.length;Ke++){const t=_e[Ke];t&&(t.flags&=-2)}Ke=-1,_e.length=0,fr(),Cs=null,(_e.length||It.length)&&dr()}}let Ue=null,pr=null;function Ss(e){const t=Ue;return Ue=e,pr=e&&e.type.__scopeId||null,t}function fl(e,t=Ue,s){if(!t||e._n)return e;const n=(...r)=>{n._d&&jr(-1);const o=Ss(t);let l;try{l=e(...r)}finally{Ss(o),n._d&&jr(1)}return l};return n._n=!0,n._c=!0,n._d=!0,n}function le(e,t){if(Ue===null)return e;const s=Us(Ue),n=e.dirs||(e.dirs=[]);for(let r=0;r<t.length;r++){let[o,l,i,a=Z]=t[r];o&&(F(o)&&(o={mounted:o,updated:o}),o.deep&&et(l),n.push({dir:o,instance:s,value:l,oldValue:void 0,arg:i,modifiers:a}))}return e}function bt(e,t,s,n){const r=e.dirs,o=t&&t.dirs;for(let l=0;l<r.length;l++){const i=r[l];o&&(i.oldValue=o[l].value);let a=i.dir[n];a&&(He(),We(a,s,8,[e.el,i,e,t]),qe())}}const dl=Symbol("_vte"),pl=e=>e.__isTeleport;function fn(e,t){e.shapeFlag&6&&e.component?(e.transition=t,fn(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 hr(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}function Jt(e,t,s,n,r=!1){if(V(e)){e.forEach((E,D)=>Jt(E,t&&(V(t)?t[D]:t),s,n,r));return}if(Yt(n)&&!r){n.shapeFlag&512&&n.type.__asyncResolved&&n.component.subTree.component&&Jt(e,t,s,n.component.subTree);return}const o=n.shapeFlag&4?Us(n.component):n.el,l=r?null:o,{i,r:a}=e,g=t&&t.r,h=i.refs===Z?i.refs={}:i.refs,m=i.setupState,_=K(m),y=m===Z?()=>!1:E=>J(_,E);if(g!=null&&g!==a&&(ue(g)?(h[g]=null,y(g)&&(m[g]=null)):he(g)&&(g.value=null)),F(a))At(a,i,12,[l,h]);else{const E=ue(a),D=he(a);if(E||D){const te=()=>{if(e.f){const H=E?y(a)?m[a]:h[a]:a.value;r?V(H)&&Hs(H,o):V(H)?H.includes(o)||H.push(o):E?(h[a]=[o],y(a)&&(m[a]=h[a])):(a.value=[o],e.k&&(h[e.k]=a.value))}else E?(h[a]=l,y(a)&&(m[a]=l)):D&&(a.value=l,e.k&&(h[e.k]=l))};l?(te.id=-1,Pe(te,s)):te()}}}hs().requestIdleCallback,hs().cancelIdleCallback;const Yt=e=>!!e.type.__asyncLoader,vr=e=>e.type.__isKeepAlive;function hl(e,t){gr(e,"a",t)}function vl(e,t){gr(e,"da",t)}function gr(e,t,s=ye){const n=e.__wdc||(e.__wdc=()=>{let r=s;for(;r;){if(r.isDeactivated)return;r=r.parent}return e()});if(Ts(t,n,s),s){let r=s.parent;for(;r&&r.parent;)vr(r.parent.vnode)&&gl(n,t,s,r),r=r.parent}}function gl(e,t,s,n){const r=Ts(t,e,n,!0);Es(()=>{Hs(n[t],r)},s)}function Ts(e,t,s=ye,n=!1){if(s){const r=s[e]||(s[e]=[]),o=t.__weh||(t.__weh=(...l)=>{He();const i=ss(s),a=We(t,s,e,l);return i(),qe(),a});return n?r.unshift(o):r.push(o),o}}const tt=e=>(t,s=ye)=>{(!ns||e==="sp")&&Ts(e,(...n)=>t(...n),s)},ml=tt("bm"),Dt=tt("m"),_l=tt("bu"),bl=tt("u"),yl=tt("bum"),Es=tt("um"),wl=tt("sp"),xl=tt("rtg"),kl=tt("rtc");function Cl(e,t=ye){Ts("ec",e,t)}const Sl=Symbol.for("v-ndc");function dn(e,t,s,n){let r;const o=s,l=V(e);if(l||ue(e)){const i=l&&Pt(e);let a=!1,g=!1;i&&(a=!Me(e),g=ut(e),e=vs(e)),r=new Array(e.length);for(let h=0,m=e.length;h<m;h++)r[h]=t(a?g?ys(pe(e[h])):pe(e[h]):e[h],h,void 0,o)}else if(typeof e=="number"){r=new Array(e);for(let i=0;i<e;i++)r[i]=t(i+1,i,void 0,o)}else if(oe(e))if(e[Symbol.iterator])r=Array.from(e,(i,a)=>t(i,a,void 0,o));else{const i=Object.keys(e);r=new Array(i.length);for(let a=0,g=i.length;a<g;a++){const h=i[a];r[a]=t(e[h],h,a,o)}}else r=[];return r}const pn=e=>e?zr(e)?Us(e):pn(e.parent):null,Qt=me(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=>pn(e.parent),$root:e=>pn(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>yr(e),$forceUpdate:e=>e.f||(e.f=()=>{cn(e.update)}),$nextTick:e=>e.n||(e.n=un.bind(e.proxy)),$watch:e=>zl.bind(e)}),hn=(e,t)=>e!==Z&&!e.__isScriptSetup&&J(e,t),Tl={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:s,setupState:n,data:r,props:o,accessCache:l,type:i,appContext:a}=e;let g;if(t[0]!=="$"){const y=l[t];if(y!==void 0)switch(y){case 1:return n[t];case 2:return r[t];case 4:return s[t];case 3:return o[t]}else{if(hn(n,t))return l[t]=1,n[t];if(r!==Z&&J(r,t))return l[t]=2,r[t];if((g=e.propsOptions[0])&&J(g,t))return l[t]=3,o[t];if(s!==Z&&J(s,t))return l[t]=4,s[t];vn&&(l[t]=0)}}const h=Qt[t];let m,_;if(h)return t==="$attrs"&&ge(e.attrs,"get",""),h(e);if((m=i.__cssModules)&&(m=m[t]))return m;if(s!==Z&&J(s,t))return l[t]=4,s[t];if(_=a.config.globalProperties,J(_,t))return _[t]},set({_:e},t,s){const{data:n,setupState:r,ctx:o}=e;return hn(r,t)?(r[t]=s,!0):n!==Z&&J(n,t)?(n[t]=s,!0):J(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(o[t]=s,!0)},has({_:{data:e,setupState:t,accessCache:s,ctx:n,appContext:r,propsOptions:o}},l){let i;return!!s[l]||e!==Z&&J(e,l)||hn(t,l)||(i=o[0])&&J(i,l)||J(n,l)||J(Qt,l)||J(r.config.globalProperties,l)},defineProperty(e,t,s){return s.get!=null?e._.accessCache[t]=0:J(s,"value")&&this.set(e,t,s.value,null),Reflect.defineProperty(e,t,s)}};function mr(e){return V(e)?e.reduce((t,s)=>(t[s]=null,t),{}):e}let vn=!0;function El(e){const t=yr(e),s=e.proxy,n=e.ctx;vn=!1,t.beforeCreate&&_r(t.beforeCreate,e,"bc");const{data:r,computed:o,methods:l,watch:i,provide:a,inject:g,created:h,beforeMount:m,mounted:_,beforeUpdate:y,updated:E,activated:D,deactivated:te,beforeDestroy:H,beforeUnmount:j,destroyed:q,unmounted:O,render:z,renderTracked:xe,renderTriggered:Te,errorCaptured:Ie,serverPrefetch:ht,expose:Ve,inheritAttrs:Re,components:ae,directives:Ne,filters:U}=t;if(g&&$l(g,n,null),l)for(const P in l){const G=l[P];F(G)&&(n[P]=G.bind(s))}if(r){const P=r.call(s,s);oe(P)&&(e.data=$t(P))}if(vn=!0,o)for(const P in o){const G=o[P],rt=F(G)?G.bind(s,s):F(G.get)?G.get.bind(s,s):je,Lt=!F(G)&&F(G.set)?G.set.bind(s):je,ot=Se({get:rt,set:Lt});Object.defineProperty(n,P,{enumerable:!0,configurable:!0,get:()=>ot.value,set:Oe=>ot.value=Oe})}if(i)for(const P in i)br(i[P],n,s,P);if(a){const P=F(a)?a.call(s):a;Reflect.ownKeys(P).forEach(G=>{Ml(G,P[G])})}h&&_r(h,e,"c");function Y(P,G){V(G)?G.forEach(rt=>P(rt.bind(s))):G&&P(G.bind(s))}if(Y(ml,m),Y(Dt,_),Y(_l,y),Y(bl,E),Y(hl,D),Y(vl,te),Y(Cl,Ie),Y(kl,xe),Y(xl,Te),Y(yl,j),Y(Es,O),Y(wl,ht),V(Ve))if(Ve.length){const P=e.exposed||(e.exposed={});Ve.forEach(G=>{Object.defineProperty(P,G,{get:()=>s[G],set:rt=>s[G]=rt,enumerable:!0})})}else e.exposed||(e.exposed={});z&&e.render===je&&(e.render=z),Re!=null&&(e.inheritAttrs=Re),ae&&(e.components=ae),Ne&&(e.directives=Ne),ht&&hr(e)}function $l(e,t,s=je){V(e)&&(e=gn(e));for(const n in e){const r=e[n];let o;oe(r)?"default"in r?o=Ps(r.from||n,r.default,!0):o=Ps(r.from||n):o=Ps(r),he(o)?Object.defineProperty(t,n,{enumerable:!0,configurable:!0,get:()=>o.value,set:l=>o.value=l}):t[n]=o}}function _r(e,t,s){We(V(e)?e.map(n=>n.bind(t.proxy)):e.bind(t.proxy),t,s)}function br(e,t,s,n){let r=n.includes(".")?Rr(s,n):()=>s[n];if(ue(e)){const o=t[e];F(o)&&Ut(r,o)}else if(F(e))Ut(r,e.bind(s));else if(oe(e))if(V(e))e.forEach(o=>br(o,t,s,n));else{const o=F(e.handler)?e.handler.bind(s):t[e.handler];F(o)&&Ut(r,o,e)}}function yr(e){const t=e.type,{mixins:s,extends:n}=t,{mixins:r,optionsCache:o,config:{optionMergeStrategies:l}}=e.appContext,i=o.get(t);let a;return i?a=i:!r.length&&!s&&!n?a=t:(a={},r.length&&r.forEach(g=>$s(a,g,l,!0)),$s(a,t,l)),oe(t)&&o.set(t,a),a}function $s(e,t,s,n=!1){const{mixins:r,extends:o}=t;o&&$s(e,o,s,!0),r&&r.forEach(l=>$s(e,l,s,!0));for(const l in t)if(!(n&&l==="expose")){const i=Pl[l]||s&&s[l];e[l]=i?i(e[l],t[l]):t[l]}return e}const Pl={data:wr,props:xr,emits:xr,methods:Xt,computed:Xt,beforeCreate:be,created:be,beforeMount:be,mounted:be,beforeUpdate:be,updated:be,beforeDestroy:be,beforeUnmount:be,destroyed:be,unmounted:be,activated:be,deactivated:be,errorCaptured:be,serverPrefetch:be,components:Xt,directives:Xt,watch:Il,provide:wr,inject:Al};function wr(e,t){return t?e?function(){return me(F(e)?e.call(this,this):e,F(t)?t.call(this,this):t)}:t:e}function Al(e,t){return Xt(gn(e),gn(t))}function gn(e){if(V(e)){const t={};for(let s=0;s<e.length;s++)t[e[s]]=e[s];return t}return e}function be(e,t){return e?[...new Set([].concat(e,t))]:t}function Xt(e,t){return e?me(Object.create(null),e,t):t}function xr(e,t){return e?V(e)&&V(t)?[...new Set([...e,...t])]:me(Object.create(null),mr(e),mr(t??{})):t}function Il(e,t){if(!e)return t;if(!t)return e;const s=me(Object.create(null),e);for(const n in t)s[n]=be(e[n],t[n]);return s}function kr(){return{app:null,config:{isNativeTag:_o,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 Ol=0;function Dl(e,t){return function(n,r=null){F(n)||(n=me({},n)),r!=null&&!oe(r)&&(r=null);const o=kr(),l=new WeakSet,i=[];let a=!1;const g=o.app={_uid:Ol++,_component:n,_props:r,_container:null,_context:o,_instance:null,version:_i,get config(){return o.config},set config(h){},use(h,...m){return l.has(h)||(h&&F(h.install)?(l.add(h),h.install(g,...m)):F(h)&&(l.add(h),h(g,...m))),g},mixin(h){return o.mixins.includes(h)||o.mixins.push(h),g},component(h,m){return m?(o.components[h]=m,g):o.components[h]},directive(h,m){return m?(o.directives[h]=m,g):o.directives[h]},mount(h,m,_){if(!a){const y=g._ceVNode||re(n,r);return y.appContext=o,_===!0?_="svg":_===!1&&(_=void 0),e(y,h,_),a=!0,g._container=h,h.__vue_app__=g,Us(y.component)}},onUnmount(h){i.push(h)},unmount(){a&&(We(i,g._instance,16),e(null,g._container),delete g._container.__vue_app__)},provide(h,m){return o.provides[h]=m,g},runWithContext(h){const m=Mt;Mt=g;try{return h()}finally{Mt=m}}};return g}}let Mt=null;function Ml(e,t){if(ye){let s=ye.provides;const n=ye.parent&&ye.parent.provides;n===s&&(s=ye.provides=Object.create(n)),s[e]=t}}function Ps(e,t,s=!1){const n=ui();if(n||Mt){let r=Mt?Mt._context.provides:n?n.parent==null||n.ce?n.vnode.appContext&&n.vnode.appContext.provides:n.parent.provides:void 0;if(r&&e in r)return r[e];if(arguments.length>1)return s&&F(t)?t.call(n&&n.proxy):t}}const Cr={},Sr=()=>Object.create(Cr),Tr=e=>Object.getPrototypeOf(e)===Cr;function Ul(e,t,s,n=!1){const r={},o=Sr();e.propsDefaults=Object.create(null),Er(e,t,r,o);for(const l in e.propsOptions[0])l in r||(r[l]=void 0);s?e.props=n?r:Go(r):e.type.props?e.props=r:e.props=o,e.attrs=o}function Vl(e,t,s,n){const{props:r,attrs:o,vnode:{patchFlag:l}}=e,i=K(r),[a]=e.propsOptions;let g=!1;if((n||l>0)&&!(l&16)){if(l&8){const h=e.vnode.dynamicProps;for(let m=0;m<h.length;m++){let _=h[m];if(As(e.emitsOptions,_))continue;const y=t[_];if(a)if(J(o,_))y!==o[_]&&(o[_]=y,g=!0);else{const E=it(_);r[E]=mn(a,i,E,y,e,!1)}else y!==o[_]&&(o[_]=y,g=!0)}}}else{Er(e,t,r,o)&&(g=!0);let h;for(const m in i)(!t||!J(t,m)&&((h=gt(m))===m||!J(t,h)))&&(a?s&&(s[m]!==void 0||s[h]!==void 0)&&(r[m]=mn(a,i,m,void 0,e,!0)):delete r[m]);if(o!==i)for(const m in o)(!t||!J(t,m))&&(delete o[m],g=!0)}g&&Xe(e.attrs,"set","")}function Er(e,t,s,n){const[r,o]=e.propsOptions;let l=!1,i;if(t)for(let a in t){if(Nt(a))continue;const g=t[a];let h;r&&J(r,h=it(a))?!o||!o.includes(h)?s[h]=g:(i||(i={}))[h]=g:As(e.emitsOptions,a)||(!(a in n)||g!==n[a])&&(n[a]=g,l=!0)}if(o){const a=K(s),g=i||Z;for(let h=0;h<o.length;h++){const m=o[h];s[m]=mn(r,a,m,g[m],e,!J(g,m))}}return l}function mn(e,t,s,n,r,o){const l=e[s];if(l!=null){const i=J(l,"default");if(i&&n===void 0){const a=l.default;if(l.type!==Function&&!l.skipFactory&&F(a)){const{propsDefaults:g}=r;if(s in g)n=g[s];else{const h=ss(r);n=g[s]=a.call(null,t),h()}}else n=a;r.ce&&r.ce._setProp(s,n)}l[0]&&(o&&!i?n=!1:l[1]&&(n===""||n===gt(s))&&(n=!0))}return n}const Rl=new WeakMap;function $r(e,t,s=!1){const n=s?Rl:t.propsCache,r=n.get(e);if(r)return r;const o=e.props,l={},i=[];let a=!1;if(!F(e)){const h=m=>{a=!0;const[_,y]=$r(m,t,!0);me(l,_),y&&i.push(...y)};!s&&t.mixins.length&&t.mixins.forEach(h),e.extends&&h(e.extends),e.mixins&&e.mixins.forEach(h)}if(!o&&!a)return oe(e)&&n.set(e,St),St;if(V(o))for(let h=0;h<o.length;h++){const m=it(o[h]);Pr(m)&&(l[m]=Z)}else if(o)for(const h in o){const m=it(h);if(Pr(m)){const _=o[h],y=l[m]=V(_)||F(_)?{type:_}:me({},_),E=y.type;let D=!1,te=!0;if(V(E))for(let H=0;H<E.length;++H){const j=E[H],q=F(j)&&j.name;if(q==="Boolean"){D=!0;break}else q==="String"&&(te=!1)}else D=F(E)&&E.name==="Boolean";y[0]=D,y[1]=te,(D||J(y,"default"))&&i.push(m)}}const g=[l,i];return oe(e)&&n.set(e,g),g}function Pr(e){return e[0]!=="$"&&!Nt(e)}const _n=e=>e==="_"||e==="__"||e==="_ctx"||e==="$stable",bn=e=>V(e)?e.map(ze):[ze(e)],Ll=(e,t,s)=>{if(t._n)return t;const n=fl((...r)=>bn(t(...r)),s);return n._c=!1,n},Ar=(e,t,s)=>{const n=e._ctx;for(const r in e){if(_n(r))continue;const o=e[r];if(F(o))t[r]=Ll(r,o,n);else if(o!=null){const l=bn(o);t[r]=()=>l}}},Ir=(e,t)=>{const s=bn(t);e.slots.default=()=>s},Or=(e,t,s)=>{for(const n in t)(s||!_n(n))&&(e[n]=t[n])},Fl=(e,t,s)=>{const n=e.slots=Sr();if(e.vnode.shapeFlag&32){const r=t.__;r&&Ks(n,"__",r,!0);const o=t._;o?(Or(n,t,s),s&&Ks(n,"_",o,!0)):Ar(t,n)}else t&&Ir(e,t)},Nl=(e,t,s)=>{const{vnode:n,slots:r}=e;let o=!0,l=Z;if(n.shapeFlag&32){const i=t._;i?s&&i===1?o=!1:Or(r,t,s):(o=!t.$stable,Ar(t,r)),l=t}else t&&(Ir(e,t),l={default:1});if(o)for(const i in r)!_n(i)&&l[i]==null&&delete r[i]},Pe=ei;function Bl(e){return jl(e)}function jl(e,t){const s=hs();s.__VUE__=!0;const{insert:n,remove:r,patchProp:o,createElement:l,createText:i,createComment:a,setText:g,setElementText:h,parentNode:m,nextSibling:_,setScopeId:y=je,insertStaticContent:E}=e,D=(u,p,v,d=null,c=null,b=null,T=void 0,C=null,S=!!p.dynamicChildren)=>{if(u===p)return;u&&!ts(u,p)&&(d=Ct(u),Oe(u,c,b,!0),u=null),p.patchFlag===-2&&(S=!1,p.dynamicChildren=null);const{type:x,ref:I,shapeFlag:k}=p;switch(x){case Is:te(u,p,v,d);break;case ft:H(u,p,v,d);break;case Os:u==null&&j(p,v,d,T);break;case Ce:ae(u,p,v,d,c,b,T,C,S);break;default:k&1?z(u,p,v,d,c,b,T,C,S):k&6?Ne(u,p,v,d,c,b,T,C,S):(k&64||k&128)&&x.process(u,p,v,d,c,b,T,C,S,Be)}I!=null&&c?Jt(I,u&&u.ref,b,p||u,!p):I==null&&u&&u.ref!=null&&Jt(u.ref,null,b,u,!0)},te=(u,p,v,d)=>{if(u==null)n(p.el=i(p.children),v,d);else{const c=p.el=u.el;p.children!==u.children&&g(c,p.children)}},H=(u,p,v,d)=>{u==null?n(p.el=a(p.children||""),v,d):p.el=u.el},j=(u,p,v,d)=>{[u.el,u.anchor]=E(u.children,p,v,d,u.el,u.anchor)},q=({el:u,anchor:p},v,d)=>{let c;for(;u&&u!==p;)c=_(u),n(u,v,d),u=c;n(p,v,d)},O=({el:u,anchor:p})=>{let v;for(;u&&u!==p;)v=_(u),r(u),u=v;r(p)},z=(u,p,v,d,c,b,T,C,S)=>{p.type==="svg"?T="svg":p.type==="math"&&(T="mathml"),u==null?xe(p,v,d,c,b,T,C,S):ht(u,p,c,b,T,C,S)},xe=(u,p,v,d,c,b,T,C)=>{let S,x;const{props:I,shapeFlag:k,transition:M,dirs:R}=u;if(S=u.el=l(u.type,b,I&&I.is,I),k&8?h(S,u.children):k&16&&Ie(u.children,S,null,d,c,yn(u,b),T,C),R&&bt(u,null,d,"created"),Te(S,u,u.scopeId,T,d),I){for(const se in I)se!=="value"&&!Nt(se)&&o(S,se,null,I[se],b,d);"value"in I&&o(S,"value",null,I.value,b),(x=I.onVnodeBeforeMount)&&Ge(x,d,u)}R&&bt(u,null,d,"beforeMount");const W=Hl(c,M);W&&M.beforeEnter(S),n(S,p,v),((x=I&&I.onVnodeMounted)||W||R)&&Pe(()=>{x&&Ge(x,d,u),W&&M.enter(S),R&&bt(u,null,d,"mounted")},c)},Te=(u,p,v,d,c)=>{if(v&&y(u,v),d)for(let b=0;b<d.length;b++)y(u,d[b]);if(c){let b=c.subTree;if(p===b||Br(b.type)&&(b.ssContent===p||b.ssFallback===p)){const T=c.vnode;Te(u,T,T.scopeId,T.slotScopeIds,c.parent)}}},Ie=(u,p,v,d,c,b,T,C,S=0)=>{for(let x=S;x<u.length;x++){const I=u[x]=C?dt(u[x]):ze(u[x]);D(null,I,p,v,d,c,b,T,C)}},ht=(u,p,v,d,c,b,T)=>{const C=p.el=u.el;let{patchFlag:S,dynamicChildren:x,dirs:I}=p;S|=u.patchFlag&16;const k=u.props||Z,M=p.props||Z;let R;if(v&&yt(v,!1),(R=M.onVnodeBeforeUpdate)&&Ge(R,v,p,u),I&&bt(p,u,v,"beforeUpdate"),v&&yt(v,!0),(k.innerHTML&&M.innerHTML==null||k.textContent&&M.textContent==null)&&h(C,""),x?Ve(u.dynamicChildren,x,C,v,d,yn(p,c),b):T||G(u,p,C,null,v,d,yn(p,c),b,!1),S>0){if(S&16)Re(C,k,M,v,c);else if(S&2&&k.class!==M.class&&o(C,"class",null,M.class,c),S&4&&o(C,"style",k.style,M.style,c),S&8){const W=p.dynamicProps;for(let se=0;se<W.length;se++){const Q=W[se],Ee=k[Q],$e=M[Q];($e!==Ee||Q==="value")&&o(C,Q,Ee,$e,c,v)}}S&1&&u.children!==p.children&&h(C,p.children)}else!T&&x==null&&Re(C,k,M,v,c);((R=M.onVnodeUpdated)||I)&&Pe(()=>{R&&Ge(R,v,p,u),I&&bt(p,u,v,"updated")},d)},Ve=(u,p,v,d,c,b,T)=>{for(let C=0;C<p.length;C++){const S=u[C],x=p[C],I=S.el&&(S.type===Ce||!ts(S,x)||S.shapeFlag&198)?m(S.el):v;D(S,x,I,null,d,c,b,T,!0)}},Re=(u,p,v,d,c)=>{if(p!==v){if(p!==Z)for(const b in p)!Nt(b)&&!(b in v)&&o(u,b,p[b],null,c,d);for(const b in v){if(Nt(b))continue;const T=v[b],C=p[b];T!==C&&b!=="value"&&o(u,b,C,T,c,d)}"value"in v&&o(u,"value",p.value,v.value,c)}},ae=(u,p,v,d,c,b,T,C,S)=>{const x=p.el=u?u.el:i(""),I=p.anchor=u?u.anchor:i("");let{patchFlag:k,dynamicChildren:M,slotScopeIds:R}=p;R&&(C=C?C.concat(R):R),u==null?(n(x,v,d),n(I,v,d),Ie(p.children||[],v,I,c,b,T,C,S)):k>0&&k&64&&M&&u.dynamicChildren?(Ve(u.dynamicChildren,M,v,c,b,T,C),(p.key!=null||c&&p===c.subTree)&&Dr(u,p,!0)):G(u,p,v,I,c,b,T,C,S)},Ne=(u,p,v,d,c,b,T,C,S)=>{p.slotScopeIds=C,u==null?p.shapeFlag&512?c.ctx.activate(p,v,d,T,S):U(p,v,d,c,b,T,S):w(u,p,S)},U=(u,p,v,d,c,b,T)=>{const C=u.component=ai(u,d,c);if(vr(u)&&(C.ctx.renderer=Be),ci(C,!1,T),C.asyncDep){if(c&&c.registerDep(C,Y,T),!u.el){const S=C.subTree=re(ft);H(null,S,p,v),u.placeholder=S.el}}else Y(C,u,p,v,c,b,T)},w=(u,p,v)=>{const d=p.component=u.component;if(Xl(u,p,v))if(d.asyncDep&&!d.asyncResolved){P(d,p,v);return}else d.next=p,d.update();else p.el=u.el,d.vnode=p},Y=(u,p,v,d,c,b,T)=>{const C=()=>{if(u.isMounted){let{next:k,bu:M,u:R,parent:W,vnode:se}=u;{const Ye=Mr(u);if(Ye){k&&(k.el=se.el,P(u,k,T)),Ye.asyncDep.then(()=>{u.isUnmounted||C()});return}}let Q=k,Ee;yt(u,!1),k?(k.el=se.el,P(u,k,T)):k=se,M&&ps(M),(Ee=k.props&&k.props.onVnodeBeforeUpdate)&&Ge(Ee,W,k,se),yt(u,!0);const $e=Fr(u),Je=u.subTree;u.subTree=$e,D(Je,$e,m(Je.el),Ct(Je),u,c,b),k.el=$e.el,Q===null&&Zl(u,$e.el),R&&Pe(R,c),(Ee=k.props&&k.props.onVnodeUpdated)&&Pe(()=>Ge(Ee,W,k,se),c)}else{let k;const{el:M,props:R}=p,{bm:W,m:se,parent:Q,root:Ee,type:$e}=u,Je=Yt(p);yt(u,!1),W&&ps(W),!Je&&(k=R&&R.onVnodeBeforeMount)&&Ge(k,Q,p),yt(u,!0);{Ee.ce&&Ee.ce._def.shadowRoot!==!1&&Ee.ce._injectChildStyle($e);const Ye=u.subTree=Fr(u);D(null,Ye,v,d,u,c,b),p.el=Ye.el}if(se&&Pe(se,c),!Je&&(k=R&&R.onVnodeMounted)){const Ye=p;Pe(()=>Ge(k,Q,Ye),c)}(p.shapeFlag&256||Q&&Yt(Q.vnode)&&Q.vnode.shapeFlag&256)&&u.a&&Pe(u.a,c),u.isMounted=!0,p=v=d=null}};u.scope.on();const S=u.effect=new Bn(C);u.scope.off();const x=u.update=S.run.bind(S),I=u.job=S.runIfDirty.bind(S);I.i=u,I.id=u.uid,S.scheduler=()=>cn(I),yt(u,!0),x()},P=(u,p,v)=>{p.component=u;const d=u.vnode.props;u.vnode=p,u.next=null,Vl(u,p.props,d,v),Nl(u,p.children,v),He(),cr(u),qe()},G=(u,p,v,d,c,b,T,C,S=!1)=>{const x=u&&u.children,I=u?u.shapeFlag:0,k=p.children,{patchFlag:M,shapeFlag:R}=p;if(M>0){if(M&128){Lt(x,k,v,d,c,b,T,C,S);return}else if(M&256){rt(x,k,v,d,c,b,T,C,S);return}}R&8?(I&16&&kt(x,c,b),k!==x&&h(v,k)):I&16?R&16?Lt(x,k,v,d,c,b,T,C,S):kt(x,c,b,!0):(I&8&&h(v,""),R&16&&Ie(k,v,d,c,b,T,C,S))},rt=(u,p,v,d,c,b,T,C,S)=>{u=u||St,p=p||St;const x=u.length,I=p.length,k=Math.min(x,I);let M;for(M=0;M<k;M++){const R=p[M]=S?dt(p[M]):ze(p[M]);D(u[M],R,v,null,c,b,T,C,S)}x>I?kt(u,c,b,!0,!1,k):Ie(p,v,d,c,b,T,C,S,k)},Lt=(u,p,v,d,c,b,T,C,S)=>{let x=0;const I=p.length;let k=u.length-1,M=I-1;for(;x<=k&&x<=M;){const R=u[x],W=p[x]=S?dt(p[x]):ze(p[x]);if(ts(R,W))D(R,W,v,null,c,b,T,C,S);else break;x++}for(;x<=k&&x<=M;){const R=u[k],W=p[M]=S?dt(p[M]):ze(p[M]);if(ts(R,W))D(R,W,v,null,c,b,T,C,S);else break;k--,M--}if(x>k){if(x<=M){const R=M+1,W=R<I?p[R].el:d;for(;x<=M;)D(null,p[x]=S?dt(p[x]):ze(p[x]),v,W,c,b,T,C,S),x++}}else if(x>M)for(;x<=k;)Oe(u[x],c,b,!0),x++;else{const R=x,W=x,se=new Map;for(x=W;x<=M;x++){const De=p[x]=S?dt(p[x]):ze(p[x]);De.key!=null&&se.set(De.key,x)}let Q,Ee=0;const $e=M-W+1;let Je=!1,Ye=0;const us=new Array($e);for(x=0;x<$e;x++)us[x]=0;for(x=R;x<=k;x++){const De=u[x];if(Ee>=$e){Oe(De,c,b,!0);continue}let Qe;if(De.key!=null)Qe=se.get(De.key);else for(Q=W;Q<=M;Q++)if(us[Q-W]===0&&ts(De,p[Q])){Qe=Q;break}Qe===void 0?Oe(De,c,b,!0):(us[Qe-W]=x+1,Qe>=Ye?Ye=Qe:Je=!0,D(De,p[Qe],v,null,c,b,T,C,S),Ee++)}const vo=Je?ql(us):St;for(Q=vo.length-1,x=$e-1;x>=0;x--){const De=W+x,Qe=p[De],go=p[De+1],mo=De+1<I?go.el||go.placeholder:d;us[x]===0?D(null,Qe,v,mo,c,b,T,C,S):Je&&(Q<0||x!==vo[Q]?ot(Qe,v,mo,2):Q--)}}},ot=(u,p,v,d,c=null)=>{const{el:b,type:T,transition:C,children:S,shapeFlag:x}=u;if(x&6){ot(u.component.subTree,p,v,d);return}if(x&128){u.suspense.move(p,v,d);return}if(x&64){T.move(u,p,v,Be);return}if(T===Ce){n(b,p,v);for(let k=0;k<S.length;k++)ot(S[k],p,v,d);n(u.anchor,p,v);return}if(T===Os){q(u,p,v);return}if(d!==2&&x&1&&C)if(d===0)C.beforeEnter(b),n(b,p,v),Pe(()=>C.enter(b),c);else{const{leave:k,delayLeave:M,afterLeave:R}=C,W=()=>{u.ctx.isUnmounted?r(b):n(b,p,v)},se=()=>{k(b,()=>{W(),R&&R()})};M?M(b,W,se):se()}else n(b,p,v)},Oe=(u,p,v,d=!1,c=!1)=>{const{type:b,props:T,ref:C,children:S,dynamicChildren:x,shapeFlag:I,patchFlag:k,dirs:M,cacheIndex:R}=u;if(k===-2&&(c=!1),C!=null&&(He(),Jt(C,null,v,u,!0),qe()),R!=null&&(p.renderCache[R]=void 0),I&256){p.ctx.deactivate(u);return}const W=I&1&&M,se=!Yt(u);let Q;if(se&&(Q=T&&T.onVnodeBeforeUnmount)&&Ge(Q,p,u),I&6)An(u.component,v,d);else{if(I&128){u.suspense.unmount(v,d);return}W&&bt(u,null,p,"beforeUnmount"),I&64?u.type.remove(u,p,v,Be,d):x&&!x.hasOnce&&(b!==Ce||k>0&&k&64)?kt(x,p,v,!1,!0):(b===Ce&&k&384||!c&&I&16)&&kt(S,p,v),d&&Ft(u)}(se&&(Q=T&&T.onVnodeUnmounted)||W)&&Pe(()=>{Q&&Ge(Q,p,u),W&&bt(u,null,p,"unmounted")},v)},Ft=u=>{const{type:p,el:v,anchor:d,transition:c}=u;if(p===Ce){Pn(v,d);return}if(p===Os){O(u);return}const b=()=>{r(v),c&&!c.persisted&&c.afterLeave&&c.afterLeave()};if(u.shapeFlag&1&&c&&!c.persisted){const{leave:T,delayLeave:C}=c,S=()=>T(v,b);C?C(u.el,b,S):S()}else b()},Pn=(u,p)=>{let v;for(;u!==p;)v=_(u),r(u),u=v;r(p)},An=(u,p,v)=>{const{bum:d,scope:c,job:b,subTree:T,um:C,m:S,a:x,parent:I,slots:{__:k}}=u;Ur(S),Ur(x),d&&ps(d),I&&V(k)&&k.forEach(M=>{I.renderCache[M]=void 0}),c.stop(),b&&(b.flags|=8,Oe(T,u,p,v)),C&&Pe(C,p),Pe(()=>{u.isUnmounted=!0},p),p&&p.pendingBranch&&!p.isUnmounted&&u.asyncDep&&!u.asyncResolved&&u.suspenseId===p.pendingId&&(p.deps--,p.deps===0&&p.resolve())},kt=(u,p,v,d=!1,c=!1,b=0)=>{for(let T=b;T<u.length;T++)Oe(u[T],p,v,d,c)},Ct=u=>{if(u.shapeFlag&6)return Ct(u.component.subTree);if(u.shapeFlag&128)return u.suspense.next();const p=_(u.anchor||u.el),v=p&&p[dl];return v?_(v):p};let as=!1;const vt=(u,p,v)=>{u==null?p._vnode&&Oe(p._vnode,null,null,!0):D(p._vnode||null,u,p,null,null,null,v),p._vnode=u,as||(as=!0,cr(),fr(),as=!1)},Be={p:D,um:Oe,m:ot,r:Ft,mt:U,mc:Ie,pc:G,pbc:Ve,n:Ct,o:e};return{render:vt,hydrate:void 0,createApp:Dl(vt)}}function yn({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 yt({effect:e,job:t},s){s?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function Hl(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Dr(e,t,s=!1){const n=e.children,r=t.children;if(V(n)&&V(r))for(let o=0;o<n.length;o++){const l=n[o];let i=r[o];i.shapeFlag&1&&!i.dynamicChildren&&((i.patchFlag<=0||i.patchFlag===32)&&(i=r[o]=dt(r[o]),i.el=l.el),!s&&i.patchFlag!==-2&&Dr(l,i)),i.type===Is&&(i.el=l.el),i.type===ft&&!i.el&&(i.el=l.el)}}function ql(e){const t=e.slice(),s=[0];let n,r,o,l,i;const a=e.length;for(n=0;n<a;n++){const g=e[n];if(g!==0){if(r=s[s.length-1],e[r]<g){t[n]=r,s.push(n);continue}for(o=0,l=s.length-1;o<l;)i=o+l>>1,e[s[i]]<g?o=i+1:l=i;g<e[s[o]]&&(o>0&&(t[n]=s[o-1]),s[o]=n)}}for(o=s.length,l=s[o-1];o-- >0;)s[o]=l,l=t[l];return s}function Mr(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Mr(t)}function Ur(e){if(e)for(let t=0;t<e.length;t++)e[t].flags|=8}const Wl=Symbol.for("v-scx"),Kl=()=>Ps(Wl);function Ut(e,t,s){return Vr(e,t,s)}function Vr(e,t,s=Z){const{immediate:n,deep:r,flush:o,once:l}=s,i=me({},s),a=t&&n||!t&&o!=="post";let g;if(ns){if(o==="sync"){const y=Kl();g=y.__watcherHandles||(y.__watcherHandles=[])}else if(!a){const y=()=>{};return y.stop=je,y.resume=je,y.pause=je,y}}const h=ye;i.call=(y,E,D)=>We(y,h,E,D);let m=!1;o==="post"?i.scheduler=y=>{Pe(y,h&&h.suspense)}:o!=="sync"&&(m=!0,i.scheduler=(y,E)=>{E?y():cn(y)}),i.augmentJob=y=>{t&&(y.flags|=4),m&&(y.flags|=2,h&&(y.id=h.uid,y.i=h))};const _=nl(e,t,i);return ns&&(g?g.push(_):a&&_()),_}function zl(e,t,s){const n=this.proxy,r=ue(e)?e.includes(".")?Rr(n,e):()=>n[e]:e.bind(n,n);let o;F(t)?o=t:(o=t.handler,s=t);const l=ss(this),i=Vr(r,o.bind(n),s);return l(),i}function Rr(e,t){const s=t.split(".");return()=>{let n=e;for(let r=0;r<s.length&&n;r++)n=n[s[r]];return n}}const Gl=(e,t)=>t==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${it(t)}Modifiers`]||e[`${gt(t)}Modifiers`];function Jl(e,t,...s){if(e.isUnmounted)return;const n=e.vnode.props||Z;let r=s;const o=t.startsWith("update:"),l=o&&Gl(n,t.slice(7));l&&(l.trim&&(r=s.map(h=>ue(h)?h.trim():h)),l.number&&(r=s.map(zs)));let i,a=n[i=Ws(t)]||n[i=Ws(it(t))];!a&&o&&(a=n[i=Ws(gt(t))]),a&&We(a,e,6,r);const g=n[i+"Once"];if(g){if(!e.emitted)e.emitted={};else if(e.emitted[i])return;e.emitted[i]=!0,We(g,e,6,r)}}function Lr(e,t,s=!1){const n=t.emitsCache,r=n.get(e);if(r!==void 0)return r;const o=e.emits;let l={},i=!1;if(!F(e)){const a=g=>{const h=Lr(g,t,!0);h&&(i=!0,me(l,h))};!s&&t.mixins.length&&t.mixins.forEach(a),e.extends&&a(e.extends),e.mixins&&e.mixins.forEach(a)}return!o&&!i?(oe(e)&&n.set(e,null),null):(V(o)?o.forEach(a=>l[a]=null):me(l,o),oe(e)&&n.set(e,l),l)}function As(e,t){return!e||!cs(t)?!1:(t=t.slice(2).replace(/Once$/,""),J(e,t[0].toLowerCase()+t.slice(1))||J(e,gt(t))||J(e,t))}function Xc(){}function Fr(e){const{type:t,vnode:s,proxy:n,withProxy:r,propsOptions:[o],slots:l,attrs:i,emit:a,render:g,renderCache:h,props:m,data:_,setupState:y,ctx:E,inheritAttrs:D}=e,te=Ss(e);let H,j;try{if(s.shapeFlag&4){const O=r||n,z=O;H=ze(g.call(z,O,h,m,y,_,E)),j=i}else{const O=t;H=ze(O.length>1?O(m,{attrs:i,slots:l,emit:a}):O(m,null)),j=t.props?i:Yl(i)}}catch(O){Zt.length=0,ks(O,e,1),H=re(ft)}let q=H;if(j&&D!==!1){const O=Object.keys(j),{shapeFlag:z}=q;O.length&&z&7&&(o&&O.some(js)&&(j=Ql(j,o)),q=Vt(q,j,!1,!0))}return s.dirs&&(q=Vt(q,null,!1,!0),q.dirs=q.dirs?q.dirs.concat(s.dirs):s.dirs),s.transition&&fn(q,s.transition),H=q,Ss(te),H}const Yl=e=>{let t;for(const s in e)(s==="class"||s==="style"||cs(s))&&((t||(t={}))[s]=e[s]);return t},Ql=(e,t)=>{const s={};for(const n in e)(!js(n)||!(n.slice(9)in t))&&(s[n]=e[n]);return s};function Xl(e,t,s){const{props:n,children:r,component:o}=e,{props:l,children:i,patchFlag:a}=t,g=o.emitsOptions;if(t.dirs||t.transition)return!0;if(s&&a>=0){if(a&1024)return!0;if(a&16)return n?Nr(n,l,g):!!l;if(a&8){const h=t.dynamicProps;for(let m=0;m<h.length;m++){const _=h[m];if(l[_]!==n[_]&&!As(g,_))return!0}}}else return(r||i)&&(!i||!i.$stable)?!0:n===l?!1:n?l?Nr(n,l,g):!0:!!l;return!1}function Nr(e,t,s){const n=Object.keys(t);if(n.length!==Object.keys(e).length)return!0;for(let r=0;r<n.length;r++){const o=n[r];if(t[o]!==e[o]&&!As(s,o))return!0}return!1}function Zl({vnode:e,parent:t},s){for(;t;){const n=t.subTree;if(n.suspense&&n.suspense.activeBranch===e&&(n.el=e.el),n===e)(e=t.vnode).el=s,t=t.parent;else break}}const Br=e=>e.__isSuspense;function ei(e,t){t&&t.pendingBranch?V(e)?t.effects.push(...e):t.effects.push(e):cl(e)}const Ce=Symbol.for("v-fgt"),Is=Symbol.for("v-txt"),ft=Symbol.for("v-cmt"),Os=Symbol.for("v-stc"),Zt=[];let Ae=null;function $(e=!1){Zt.push(Ae=e?null:[])}function ti(){Zt.pop(),Ae=Zt[Zt.length-1]||null}let es=1;function jr(e,t=!1){es+=e,e<0&&Ae&&t&&(Ae.hasOnce=!0)}function Hr(e){return e.dynamicChildren=es>0?Ae||St:null,ti(),es>0&&Ae&&Ae.push(e),e}function A(e,t,s,n,r,o){return Hr(f(e,t,s,n,r,o,!0))}function wn(e,t,s,n,r){return Hr(re(e,t,s,n,r,!0))}function qr(e){return e?e.__v_isVNode===!0:!1}function ts(e,t){return e.type===t.type&&e.key===t.key}const Wr=({key:e})=>e??null,Ds=({ref:e,ref_key:t,ref_for:s})=>(typeof e=="number"&&(e=""+e),e!=null?ue(e)||he(e)||F(e)?{i:Ue,r:e,k:t,f:!!s}:e:null);function f(e,t=null,s=null,n=0,r=null,o=e===Ce?0:1,l=!1,i=!1){const a={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Wr(t),ref:t&&Ds(t),scopeId:pr,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:o,patchFlag:n,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:Ue};return i?(kn(a,s),o&128&&e.normalize(a)):s&&(a.shapeFlag|=ue(s)?8:16),es>0&&!l&&Ae&&(a.patchFlag>0||o&6)&&a.patchFlag!==32&&Ae.push(a),a}const re=si;function si(e,t=null,s=null,n=0,r=null,o=!1){if((!e||e===Sl)&&(e=ft),qr(e)){const i=Vt(e,t,!0);return s&&kn(i,s),es>0&&!o&&Ae&&(i.shapeFlag&6?Ae[Ae.indexOf(e)]=i:Ae.push(i)),i.patchFlag=-2,i}if(mi(e)&&(e=e.__vccOpts),t){t=ni(t);let{class:i,style:a}=t;i&&!ue(i)&&(t.class=ce(i)),oe(a)&&(ln(a)&&!V(a)&&(a=me({},a)),t.style=Bt(a))}const l=ue(e)?1:Br(e)?128:pl(e)?64:oe(e)?4:F(e)?2:0;return f(e,t,s,n,r,l,o,!0)}function ni(e){return e?ln(e)||Tr(e)?me({},e):e:null}function Vt(e,t,s=!1,n=!1){const{props:r,ref:o,patchFlag:l,children:i,transition:a}=e,g=t?oi(r||{},t):r,h={__v_isVNode:!0,__v_skip:!0,type:e.type,props:g,key:g&&Wr(g),ref:t&&t.ref?s&&o?V(o)?o.concat(Ds(t)):[o,Ds(t)]:Ds(t):o,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!==Ce?l===-1?16:l|16:l,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:a,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&Vt(e.ssContent),ssFallback:e.ssFallback&&Vt(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return a&&n&&fn(h,a.clone(h)),h}function xn(e=" ",t=0){return re(Is,null,e,t)}function ri(e,t){const s=re(Os,null,e);return s.staticCount=t,s}function N(e="",t=!1){return t?($(),wn(ft,null,e)):re(ft,null,e)}function ze(e){return e==null||typeof e=="boolean"?re(ft):V(e)?re(Ce,null,e.slice()):qr(e)?dt(e):re(Is,null,String(e))}function dt(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:Vt(e)}function kn(e,t){let s=0;const{shapeFlag:n}=e;if(t==null)t=null;else if(V(t))s=16;else if(typeof t=="object")if(n&65){const r=t.default;r&&(r._c&&(r._d=!1),kn(e,r()),r._c&&(r._d=!0));return}else{s=32;const r=t._;!r&&!Tr(t)?t._ctx=Ue:r===3&&Ue&&(Ue.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else F(t)?(t={default:t,_ctx:Ue},s=32):(t=String(t),n&64?(s=16,t=[xn(t)]):s=8);e.children=t,e.shapeFlag|=s}function oi(...e){const t={};for(let s=0;s<e.length;s++){const n=e[s];for(const r in n)if(r==="class")t.class!==n.class&&(t.class=ce([t.class,n.class]));else if(r==="style")t.style=Bt([t.style,n.style]);else if(cs(r)){const o=t[r],l=n[r];l&&o!==l&&!(V(o)&&o.includes(l))&&(t[r]=o?[].concat(o,l):l)}else r!==""&&(t[r]=n[r])}return t}function Ge(e,t,s,n=null){We(e,t,7,[s,n])}const li=kr();let ii=0;function ai(e,t,s){const n=e.type,r=(t?t.appContext:e.appContext)||li,o={uid:ii++,vnode:e,type:n,parent:t,appContext:r,root:null,next:null,subTree:null,effect:null,update:null,job:null,scope:new $o(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:t?t.provides:Object.create(r.provides),ids:t?t.ids:["",0,0],accessCache:null,renderCache:[],components:null,directives:null,propsOptions:$r(n,r),emitsOptions:Lr(n,r),emit:null,emitted:null,propsDefaults:Z,inheritAttrs:n.inheritAttrs,ctx:Z,data:Z,props:Z,attrs:Z,slots:Z,refs:Z,setupState:Z,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 o.ctx={_:o},o.root=t?t.root:o,o.emit=Jl.bind(null,o),e.ce&&e.ce(o),o}let ye=null;const ui=()=>ye||Ue;let Ms,Cn;{const e=hs(),t=(s,n)=>{let r;return(r=e[s])||(r=e[s]=[]),r.push(n),o=>{r.length>1?r.forEach(l=>l(o)):r[0](o)}};Ms=t("__VUE_INSTANCE_SETTERS__",s=>ye=s),Cn=t("__VUE_SSR_SETTERS__",s=>ns=s)}const ss=e=>{const t=ye;return Ms(e),e.scope.on(),()=>{e.scope.off(),Ms(t)}},Kr=()=>{ye&&ye.scope.off(),Ms(null)};function zr(e){return e.vnode.shapeFlag&4}let ns=!1;function ci(e,t=!1,s=!1){t&&Cn(t);const{props:n,children:r}=e.vnode,o=zr(e);Ul(e,n,o,t),Fl(e,r,s||t);const l=o?fi(e,t):void 0;return t&&Cn(!1),l}function fi(e,t){const s=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,Tl);const{setup:n}=s;if(n){He();const r=e.setupContext=n.length>1?pi(e):null,o=ss(e),l=At(n,e,0,[e.props,r]),i=Dn(l);if(qe(),o(),(i||e.sp)&&!Yt(e)&&hr(e),i){if(l.then(Kr,Kr),t)return l.then(a=>{Gr(e,a)}).catch(a=>{ks(a,e,0)});e.asyncDep=l}else Gr(e,l)}else Jr(e)}function Gr(e,t,s){F(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:oe(t)&&(e.setupState=lr(t)),Jr(e)}function Jr(e,t,s){const n=e.type;e.render||(e.render=n.render||je);{const r=ss(e);He();try{El(e)}finally{qe(),r()}}}const di={get(e,t){return ge(e,"get",""),e[t]}};function pi(e){const t=s=>{e.exposed=s||{}};return{attrs:new Proxy(e.attrs,di),slots:e.slots,emit:e.emit,expose:t}}function Us(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(lr(Jo(e.exposed)),{get(t,s){if(s in t)return t[s];if(s in Qt)return Qt[s](e)},has(t,s){return s in t||s in Qt}})):e.proxy}const hi=/(?:^|[-_])(\w)/g,vi=e=>e.replace(hi,t=>t.toUpperCase()).replace(/[-_]/g,"");function gi(e,t=!0){return F(e)?e.displayName||e.name:e.name||t&&e.__name}function Yr(e,t,s=!1){let n=gi(t);if(!n&&t.__file){const r=t.__file.match(/([^/\\]+)\.\w+$/);r&&(n=r[1])}if(!n&&e&&e.parent){const r=o=>{for(const l in o)if(o[l]===t)return l};n=r(e.components||e.parent.type.components)||r(e.appContext.components)}return n?vi(n):s?"App":"Anonymous"}function mi(e){return F(e)&&"__vccOpts"in e}const Se=(e,t)=>tl(e,t,ns),_i="3.5.18";/**
* @vue/runtime-dom v3.5.18
* (c) 2018-present Yuxi (Evan) You and Vue contributors
* @license MIT
**/let Sn;const Qr=typeof window<"u"&&window.trustedTypes;if(Qr)try{Sn=Qr.createPolicy("vue",{createHTML:e=>e})}catch{}const Xr=Sn?e=>Sn.createHTML(e):e=>e,bi="http://www.w3.org/2000/svg",yi="http://www.w3.org/1998/Math/MathML",st=typeof document<"u"?document:null,Zr=st&&st.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,n)=>{const r=t==="svg"?st.createElementNS(bi,e):t==="mathml"?st.createElementNS(yi,e):s?st.createElement(e,{is:s}):st.createElement(e);return e==="select"&&n&&n.multiple!=null&&r.setAttribute("multiple",n.multiple),r},createText:e=>st.createTextNode(e),createComment:e=>st.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>st.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,s,n,r,o){const l=s?s.previousSibling:t.lastChild;if(r&&(r===o||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),s),!(r===o||!(r=r.nextSibling)););else{Zr.innerHTML=Xr(n==="svg"?`<svg>${e}</svg>`:n==="mathml"?`<math>${e}</math>`:e);const i=Zr.content;if(n==="svg"||n==="mathml"){const a=i.firstChild;for(;a.firstChild;)i.appendChild(a.firstChild);i.removeChild(a)}t.insertBefore(i,s)}return[l?l.nextSibling:t.firstChild,s?s.previousSibling:t.lastChild]}},xi=Symbol("_vtc");function ki(e,t,s){const n=e[xi];n&&(t=(t?[t,...n]:[...n]).join(" ")),t==null?e.removeAttribute("class"):s?e.setAttribute("class",t):e.className=t}const Vs=Symbol("_vod"),eo=Symbol("_vsh"),Rs={beforeMount(e,{value:t},{transition:s}){e[Vs]=e.style.display==="none"?"":e.style.display,s&&t?s.beforeEnter(e):rs(e,t)},mounted(e,{value:t},{transition:s}){s&&t&&s.enter(e)},updated(e,{value:t,oldValue:s},{transition:n}){!t!=!s&&(n?t?(n.beforeEnter(e),rs(e,!0),n.enter(e)):n.leave(e,()=>{rs(e,!1)}):rs(e,t))},beforeUnmount(e,{value:t}){rs(e,t)}};function rs(e,t){e.style.display=t?e[Vs]:"none",e[eo]=!t}const Ci=Symbol(""),Si=/(^|;)\s*display\s*:/;function Ti(e,t,s){const n=e.style,r=ue(s);let o=!1;if(s&&!r){if(t)if(ue(t))for(const l of t.split(";")){const i=l.slice(0,l.indexOf(":")).trim();s[i]==null&&Ls(n,i,"")}else for(const l in t)s[l]==null&&Ls(n,l,"");for(const l in s)l==="display"&&(o=!0),Ls(n,l,s[l])}else if(r){if(t!==s){const l=n[Ci];l&&(s+=";"+l),n.cssText=s,o=Si.test(s)}}else t&&e.removeAttribute("style");Vs in e&&(e[Vs]=o?n.display:"",e[eo]&&(n.display="none"))}const to=/\s*!important$/;function Ls(e,t,s){if(V(s))s.forEach(n=>Ls(e,t,n));else if(s==null&&(s=""),t.startsWith("--"))e.setProperty(t,s);else{const n=Ei(e,t);to.test(s)?e.setProperty(gt(n),s.replace(to,""),"important"):e[n]=s}}const so=["Webkit","Moz","ms"],Tn={};function Ei(e,t){const s=Tn[t];if(s)return s;let n=it(t);if(n!=="filter"&&n in e)return Tn[t]=n;n=Vn(n);for(let r=0;r<so.length;r++){const o=so[r]+n;if(o in e)return Tn[t]=o}return t}const no="http://www.w3.org/1999/xlink";function ro(e,t,s,n,r,o=Eo(t)){n&&t.startsWith("xlink:")?s==null?e.removeAttributeNS(no,t.slice(6,t.length)):e.setAttributeNS(no,t,s):s==null||o&&!Ln(s)?e.removeAttribute(t):e.setAttribute(t,o?"":lt(s)?String(s):s)}function oo(e,t,s,n,r){if(t==="innerHTML"||t==="textContent"){s!=null&&(e[t]=t==="innerHTML"?Xr(s):s);return}const o=e.tagName;if(t==="value"&&o!=="PROGRESS"&&!o.includes("-")){const i=o==="OPTION"?e.getAttribute("value")||"":e.value,a=s==null?e.type==="checkbox"?"on":"":String(s);(i!==a||!("_value"in e))&&(e.value=a),s==null&&e.removeAttribute(t),e._value=s;return}let l=!1;if(s===""||s==null){const i=typeof e[t];i==="boolean"?s=Ln(s):s==null&&i==="string"?(s="",l=!0):i==="number"&&(s=0,l=!0)}try{e[t]=s}catch{}l&&e.removeAttribute(r||t)}function Rt(e,t,s,n){e.addEventListener(t,s,n)}function $i(e,t,s,n){e.removeEventListener(t,s,n)}const lo=Symbol("_vei");function Pi(e,t,s,n,r=null){const o=e[lo]||(e[lo]={}),l=o[t];if(n&&l)l.value=n;else{const[i,a]=Ai(t);if(n){const g=o[t]=Di(n,r);Rt(e,i,g,a)}else l&&($i(e,i,l,a),o[t]=void 0)}}const io=/(?:Once|Passive|Capture)$/;function Ai(e){let t;if(io.test(e)){t={};let n;for(;n=e.match(io);)e=e.slice(0,e.length-n[0].length),t[n[0].toLowerCase()]=!0}return[e[2]===":"?e.slice(3):gt(e.slice(2)),t]}let En=0;const Ii=Promise.resolve(),Oi=()=>En||(Ii.then(()=>En=0),En=Date.now());function Di(e,t){const s=n=>{if(!n._vts)n._vts=Date.now();else if(n._vts<=s.attached)return;We(Mi(n,s.value),t,5,[n])};return s.value=e,s.attached=Oi(),s}function Mi(e,t){if(V(t)){const s=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{s.call(e),e._stopped=!0},t.map(n=>r=>!r._stopped&&n&&n(r))}else return t}const ao=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Ui=(e,t,s,n,r,o)=>{const l=r==="svg";t==="class"?ki(e,n,l):t==="style"?Ti(e,s,n):cs(t)?js(t)||Pi(e,t,s,n,o):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Vi(e,t,n,l))?(oo(e,t,n),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&ro(e,t,n,l,o,t!=="value")):e._isVueCE&&(/[A-Z]/.test(t)||!ue(n))?oo(e,it(t),n,o,t):(t==="true-value"?e._trueValue=n:t==="false-value"&&(e._falseValue=n),ro(e,t,n,l))};function Vi(e,t,s,n){if(n)return!!(t==="innerHTML"||t==="textContent"||t in e&&ao(t)&&F(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 r=e.tagName;if(r==="IMG"||r==="VIDEO"||r==="CANVAS"||r==="SOURCE")return!1}return ao(t)&&ue(s)?!1:t in e}const uo=e=>{const t=e.props["onUpdate:modelValue"]||!1;return V(t)?s=>ps(t,s):t};function Ri(e){e.target.composing=!0}function co(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const $n=Symbol("_assign"),fe={created(e,{modifiers:{lazy:t,trim:s,number:n}},r){e[$n]=uo(r);const o=n||r.props&&r.props.type==="number";Rt(e,t?"change":"input",l=>{if(l.target.composing)return;let i=e.value;s&&(i=i.trim()),o&&(i=zs(i)),e[$n](i)}),s&&Rt(e,"change",()=>{e.value=e.value.trim()}),t||(Rt(e,"compositionstart",Ri),Rt(e,"compositionend",co),Rt(e,"change",co))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:s,modifiers:{lazy:n,trim:r,number:o}},l){if(e[$n]=uo(l),e.composing)return;const i=(o||e.type==="number")&&!/^0\d/.test(e.value)?zs(e.value):e.value,a=t??"";i!==a&&(document.activeElement===e&&e.type!=="range"&&(n&&t===s||r&&e.value.trim()===a)||(e.value=a))}},Li=["ctrl","shift","alt","meta"],Fi={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)=>Li.some(s=>e[`${s}Key`]&&!t.includes(s))},Fe=(e,t)=>{const s=e._withMods||(e._withMods={}),n=t.join(".");return s[n]||(s[n]=(r,...o)=>{for(let l=0;l<t.length;l++){const i=Fi[t[l]];if(i&&i(r,t))return}return e(r,...o)})},Ni=me({patchProp:Ui},wi);let fo;function Bi(){return fo||(fo=Bl(Ni))}const ji=(...e)=>{const t=Bi().createApp(...e),{mount:s}=t;return t.mount=n=>{const r=qi(n);if(!r)return;const o=t._component;!F(o)&&!o.render&&!o.template&&(o.template=r.innerHTML),r.nodeType===1&&(r.textContent="");const l=s(r,!1,Hi(r));return r instanceof Element&&(r.removeAttribute("v-cloak"),r.setAttribute("data-v-app","")),l},t};function Hi(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function qi(e){return ue(e)?document.querySelector(e):e}const Wi="https://das.doubanflix.com/api",Ki=1e4;class zi{constructor(){this.baseURL=Wi,this.timeout=Ki}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:throw localStorage.removeItem("auth_token"),new Error("登录已过期,请重新登录");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 n=`${this.baseURL}${t}`,r={headers:this.addAuthHeaders(s.headers),...s};try{const o=new AbortController,l=setTimeout(()=>o.abort(),this.timeout),i=await fetch(n,{...r,signal:o.signal});return clearTimeout(l),await this.handleResponse(i)}catch(o){throw o.name==="AbortError"?new Error("请求超时,请检查网络连接"):o}}async get(t,s={}){const n=new URLSearchParams(s).toString(),r=n?`${t}?${n}`:t;return this.request(r,{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 ie=new zi,we={getChallenge(){return ie.get("/auth/challenge")},register(e){return ie.post("/auth/register",e)},login(e){return ie.post("/auth/login",e)},verifyEmail(e){return ie.post("/auth/verify-email",e)},resendVerificationCode(e){return ie.post("/auth/resend-code",e)},getUserInfo(){return ie.get("/user/profile")},getCurrentUser(){return ie.get("/user/profile")},logout(){return ie.post("/auth/logout")},forgotPassword(e){return ie.post("/auth/forgot-password",e)},resetPassword(e){return ie.post("/auth/reset-password",e)}},wt={getMovieLinks(e,t={}){return ie.get(`/movie/${e}/links`,t)},addMovieLink(e,t){return ie.post(`/movies/${e}/links`,t)},deleteMovieLink(e,t){return ie.delete(`/movies/${e}/links/${t}`)},voteLink(e,t){return ie.post(`/links/${e}/vote`,{vote_type:t})},removeVote(e){return Promise.resolve({success:!0,message:"取消投票成功"})},getLinkVoteStatus(e){return ie.get(`/links/${e}/vote-status`)},getUserVote(e){return ie.get(`/links/${e}/vote-status`)},reportLink(e){return ie.post("/reports",e)}},os={getUserLinks(e={}){return ie.get("/user/links",e)},getUserLinksByCategory(){return ie.get("/user/links/category")},updateUserName(e){return ie.put("/user/name",e)},getAllUsers(){return ie.get("/admin/users")},banUser(e,t){return ie.put(`/admin/users/${e}/ban`,{reason:t})},unbanUser(e){return ie.put(`/admin/users/${e}/unban`)}};async function Gi(e){const t=new TextEncoder().encode(e),s=await crypto.subtle.digest("SHA-256",t);return Array.from(new Uint8Array(s)).map(o=>o.toString(16).padStart(2,"0")).join("")}function Ji(e,t){return e.startsWith("0".repeat(t))}async function Fs(e,t,s=null){let n=0;const r=Date.now();for(;;){const o=e+n.toString(),l=await Gi(o);if(Ji(l,t)){const a=Date.now()-r;return console.log(`工作量证明完成: nonce=${n}, 耗时=${a}ms, hash=${l}`),{challenge:e,nonce:n.toString(),hash:l}}n++,n%1e3===0&&(s&&s(n),await new Promise(i=>setTimeout(i,1)))}}const ve=B(null),pt=B(null),de=B(!1),X=B(""),Yi=Se(()=>!!ve.value&&!!pt.value),Qi=Se(()=>{var e;return((e=ve.value)==null?void 0:e.email)||""}),Xi=Se(()=>{var e;return((e=ve.value)==null?void 0:e.id)||""}),ne={user:ve,token:pt,loading:de,error:X,isAuthenticated:Yi,userEmail:Qi,userId:Xi,async initAuth(){try{de.value=!0;const e=localStorage.getItem("auth_token");if(e){pt.value=e;try{const t=await we.getCurrentUser();t&&t.data?ve.value=t.data:ve.value=t,X.value=""}catch(t){console.error("获取用户信息失败:",t),(t.status===401||t.status===403)&&(localStorage.removeItem("auth_token"),pt.value=null,ve.value=null)}}}catch(e){console.error("初始化认证失败:",e),X.value="初始化认证失败"}finally{de.value=!1}},async signIn(e,t){try{de.value=!0,X.value="";const s=await we.login({email:e,password:t});return pt.value=s.data.token,ve.value=s.data.user,localStorage.setItem("auth_token",s.data.token),{success:!0,user:s.data.user}}catch(s){return console.error("登录错误:",s),X.value=s.message||"登录过程中发生错误",{success:!1,error:X.value}}finally{de.value=!1}},async signUp(e,t,s={}){try{de.value=!0,X.value="";const n=await we.register({email:e,password:t,...s});return pt.value=n.token,ve.value=n.user,localStorage.setItem("auth_token",n.token),{success:!0,data:n}}catch(n){return console.error("注册错误:",n),X.value=n.message||"注册过程中发生错误",{success:!1,error:X.value}}finally{de.value=!1}},async signUpWithProof(e,t){try{de.value=!0,X.value="";const s=await we.getChallenge();if(!s.success)throw new Error(s.error||"获取挑战失败");const{challenge:n,difficulty:r}=s.data,o=await Fs(n,r,t),l={username:e.username,email:e.email,password:e.password,proof_of_work:{challenge:n,nonce:o.nonce,hash:o.hash}},i=await we.register(l);return i.success?{success:!0,data:i.data}:{success:!1,error:i.error}}catch(s){return console.error("注册失败:",s),X.value=s.message||"注册失败",{success:!1,error:X.value}}finally{de.value=!1}},async verifyEmail(e,t){try{de.value=!0,X.value="";const s={email:e,code:t},n=await we.verifyEmail(s);return n.success?{success:!0,data:n.data}:{success:!1,error:n.error}}catch(s){return console.error("邮箱验证失败:",s),X.value=s.message||"验证失败",{success:!1,error:X.value}}finally{de.value=!1}},async resendVerificationCode(e){try{de.value=!0,X.value="";const t=await we.getChallenge();if(!t.success)throw new Error(t.error||"获取挑战失败");const{challenge:s,difficulty:n}=t.data,r=await Fs(s,n,onProgress),o={email:e,challenge:s,solution:r.nonce},l=await we.resendVerificationCode(o);return l.success?{success:!0,data:l.data}:{success:!1,error:l.error}}catch(t){return console.error("重发验证码失败:",t),X.value=t.message||"发送失败",{success:!1,error:X.value}}finally{de.value=!1}},async forgotPassword(e,t){try{de.value=!0,X.value="";const s=await we.getChallenge();if(!s.success)throw new Error(s.error||"获取挑战失败");const{challenge:n,difficulty:r}=s.data,o=await Fs(n,r,t),l={email:e,proof_of_work:{challenge:n,nonce:o.nonce,hash:o.hash}},i=await we.forgotPassword(l);return i.success?{success:!0,data:i.data}:{success:!1,error:i.message||i.error}}catch(s){return console.error("忘记密码失败:",s),X.value=s.message||"发送失败",{success:!1,error:X.value}}finally{de.value=!1}},async resetPassword(e,t,s){try{de.value=!0,X.value="";const n=await we.resetPassword({email:e,code:t,password:s});return n.success?{success:!0,data:n.data}:{success:!1,error:n.message||n.error}}catch(n){return console.error("重置密码失败:",n),X.value=n.message||"重置失败",{success:!1,error:X.value}}finally{de.value=!1}},async signOut(){try{return de.value=!0,X.value="",localStorage.removeItem("auth_token"),pt.value=null,ve.value=null,{success:!0}}catch(e){return console.error("登出错误:",e),X.value="登出过程中发生错误",localStorage.removeItem("auth_token"),pt.value=null,ve.value=null,{success:!1,error:X.value}}finally{de.value=!1}},clearError(){X.value=""},hasPermission(e){return!!ve.value},getDisplayName(){var e;return ve.value?((e=ve.value.user_metadata)==null?void 0:e.full_name)||ve.value.email||"用户":"未登录"},getAvatarUrl(){var e;return ve.value&&((e=ve.value.user_metadata)==null?void 0:e.avatar_url)||null}};class Zi{async getUserProfile(t=null){try{let s=t;if(!s){const r=await we.getCurrentUser();if(!r)return{success:!1,error:"用户未登录"};s=r.id}const n=await os.getUserProfile(s);return n?{success:!0,data:n}:{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 we.getCurrentUser()?t.nickname&&t.nickname.length>50?{success:!1,error:"昵称长度不能超过50个字符"}:t.nickname&&!(await os.checkNicknameAvailability(t.nickname)).available?{success:!1,error:"该昵称已被使用,请选择其他昵称"}:{success:!0,data:await os.updateUserProfile(t),message:"用户配置更新成功"}:{success:!1,error:"用户未登录"}}catch(s){return console.error("更新用户配置异常:",s),{success:!1,error:"更新用户配置失败"}}}async getUserDisplayName(t,s="匿名用户"){var n;try{const r=await this.getUserProfile(t);return r.success&&((n=r.data)!=null&&n.nickname)?r.data.nickname:s||"匿名用户"}catch(r){return console.error("获取用户显示名称失败:",r),s||"匿名用户"}}async checkNicknameAvailability(t){try{return!t||t.trim().length===0?{success:!1,error:"昵称不能为空"}:t.length>50?{success:!1,error:"昵称长度不能超过50个字符"}:await we.getCurrentUser()?{success:!0,available:(await os.checkNicknameAvailability(t.trim())).available}:{success:!1,error:"用户未登录"}}catch(s){return console.error("检查昵称可用性失败:",s),{success:!1,error:"检查昵称可用性失败"}}}}const ea=new Zi,nt=(e,t)=>{const s=e.__vccOpts||e;for(const[n,r]of t)s[n]=r;return s},ta={class:"auth-container"},sa={key:0,class:"initializing-container"},na={key:1,class:"user-info"},ra={class:"user-header"},oa={class:"user-avatar"},la={class:"user-details"},ia={class:"user-display-name"},aa={key:0,class:"user-email"},ua={key:0,class:"nickname-edit-form"},ca={class:"form-group"},fa={class:"nickname-actions"},da=["disabled"],pa={key:2,class:"auth-forms"},ha={key:0,class:"auth-tabs"},va={key:1,class:"back-button"},ga={class:"form-group"},ma={class:"form-group"},_a=["disabled"],ba={class:"forgot-password-link"},ya={class:"form-group"},wa={class:"form-group"},xa={class:"form-group"},ka={class:"form-group"},Ca={key:0,class:"proof-progress"},Sa={class:"progress-bar"},Ta=["disabled"],Ea={class:"form-description"},$a={class:"form-group"},Pa=["readonly"],Aa={class:"form-group"},Ia=["disabled"],Oa={class:"resend-code"},Da=["disabled"],Ma={class:"form-group"},Ua={key:0,class:"proof-progress"},Va={class:"progress-bar"},Ra=["disabled"],La={class:"form-group"},Fa={class:"form-group"},Na={class:"form-group"},Ba={class:"form-group"},ja=["disabled"],Ha={key:7,class:"error-message"},qa={key:8,class:"success-message"},Wa=nt({__name:"AuthComponent",setup(e){const t=B(null),s=B(null),n=B("login"),r=B(!1),o=B(""),l=B(""),i=B(!1),a=B(!0),g=B({email:"",password:""});Es(()=>{stopWatching&&stopWatching()});const h=B({email:"",password:"",confirmPassword:"",username:""}),m=B({email:"",code:""}),_=B({email:""}),y=B({email:"",code:"",password:"",confirmPassword:""}),E=B(!1),D=B(0),te=B(""),H=B({username:""});Dt(async()=>{try{await ne.initAuth(),t.value=ne.user.value,t.value&&await q();const U=Ut(()=>ne.user.value,w=>{t.value=w,w?q():s.value=null},{immediate:!1})}finally{a.value=!1}});const j=()=>{o.value="",l.value=""},q=async()=>{if(t.value)try{const U=await ea.getUserProfile(t.value.id);U.success?s.value=U.data:console.error("加载用户资料失败:",U.error)}catch(U){console.error("加载用户资料失败:",U)}},O=()=>{var U;i.value=!i.value,i.value&&(H.value.username=((U=t.value)==null?void 0:U.username)||""),j()},z=async()=>{var U,w;if(t.value){j(),r.value=!0;try{const Y=H.value.username.trim();if(!Y){o.value="用户名不能为空";return}if(Y.length<2||Y.length>10){o.value="用户名长度必须在2-10个字符之间";return}const P=await os.updateUserName({username:Y});if(P.data.success){const G={...t.value,...P.data.data};t.value=G,ne.user.value=G,l.value=P.data.message||"用户名更新成功!",i.value=!1,await q()}else o.value=P.data.message||"更新用户名失败"}catch(Y){console.error("更新用户名错误:",Y),(w=(U=Y.response)==null?void 0:U.data)!=null&&w.message?o.value=Y.response.data.message:o.value="更新用户名失败,请稍后重试"}finally{r.value=!1}}},xe=async()=>{j(),r.value=!0;try{const U=await ne.signIn(g.value.email,g.value.password);U.success?(t.value=U.user,l.value="登录成功!",g.value={email:"",password:""},await q()):o.value=U.error||"登录失败,请检查邮箱和密码"}catch(U){o.value="登录过程中发生错误",console.error("登录错误:",U)}finally{r.value=!1}},Te=async()=>{if(j(),h.value.password!==h.value.confirmPassword){o.value="两次输入的密码不一致";return}r.value=!0;try{const U=await ne.signUpWithProof(h.value,w=>{E.value=!0,D.value=w});E.value=!1,D.value=0,U.success?(te.value=h.value.email,m.value.email=h.value.email,n.value="verify-email",l.value="注册成功!请查收邮件并验证邮箱",h.value={email:"",password:"",confirmPassword:"",username:""}):o.value=U.error||"注册失败,请稍后重试"}catch(U){E.value=!1,D.value=0,o.value="注册过程中发生错误",console.error("注册错误:",U)}finally{r.value=!1}},Ie=async()=>{j(),r.value=!0;try{const U=await ne.verifyEmail(m.value.email,m.value.code);U.success?(l.value="邮箱验证成功!请登录",n.value="login",m.value={email:"",code:""},te.value=""):o.value=U.error||"验证失败,请重试"}catch(U){o.value="验证过程中发生错误",console.error("验证错误:",U)}finally{r.value=!1}},ht=async()=>{j(),r.value=!0;try{const U=m.value.email||te.value,w=await ne.resendVerificationCode(U);w.success?l.value="验证码已重新发送,请查收邮件":o.value=w.error||"发送失败,请重试"}catch(U){o.value="发送过程中发生错误",console.error("重发验证码错误:",U)}finally{r.value=!1}},Ve=async()=>{j(),r.value=!0;try{const U=await ne.forgotPassword(_.value.email,w=>{E.value=!0,D.value=w});E.value=!1,D.value=0,U.success?(y.value.email=_.value.email,n.value="reset-password",l.value="重置码已发送,请查收邮件",_.value={email:""}):o.value=U.error||"发送失败,请重试"}catch(U){E.value=!1,D.value=0,o.value="发送过程中发生错误",console.error("忘记密码错误:",U)}finally{r.value=!1}},Re=async()=>{if(j(),y.value.password!==y.value.confirmPassword){o.value="两次输入的密码不一致";return}r.value=!0;try{const U=await ne.resetPassword(y.value.email,y.value.code,y.value.password);U.success?(l.value="密码重置成功!请使用新密码登录",n.value="login",y.value={email:"",code:"",password:"",confirmPassword:""}):o.value=U.error||"重置失败,请重试"}catch(U){o.value="重置过程中发生错误",console.error("重置密码错误:",U)}finally{r.value=!1}},ae=()=>{n.value="login",j()},Ne=()=>{ne.signOut(),l.value="已成功登出",t.value=null,s.value=null};return(U,w)=>{var Y;return $(),A("div",ta,[a.value?($(),A("div",sa,w[17]||(w[17]=[f("div",{class:"loading-spinner"},null,-1),f("p",null,"加载中...",-1)]))):t.value?($(),A("div",na,[f("div",ra,[f("div",oa,[f("span",null,L((((Y=s.value)==null?void 0:Y.nickname)||t.value.email).charAt(0).toUpperCase()),1)]),f("div",la,[f("div",ia,L(t.value.username||t.value.email),1),t.value.username?($(),A("div",aa,L(t.value.email),1)):N("",!0),w[18]||(w[18]=f("div",{class:"user-status"},"已登录",-1))]),f("button",{onClick:O,class:"edit-nickname-btn"},L(i.value?"取消":"编辑用户名"),1)]),i.value?($(),A("div",ua,[f("div",ca,[w[19]||(w[19]=f("label",null,"用户名",-1)),le(f("input",{"onUpdate:modelValue":w[0]||(w[0]=P=>H.value.username=P),type:"text",placeholder:"请输入用户名",class:"form-input",maxlength:"10"},null,512),[[fe,H.value.username]]),w[20]||(w[20]=f("div",{class:"nickname-hint"},"用户名长度为2-10个字符",-1))]),f("div",fa,[f("button",{onClick:z,disabled:r.value,class:"save-nickname-btn"},L(r.value?"保存中...":"保存"),9,da),f("button",{onClick:O,class:"cancel-nickname-btn"}," 取消 ")])])):N("",!0),f("button",{onClick:Ne,class:"sign-out-btn"}," 退出登录 ")])):($(),A("div",pa,[["verify-email","forgot-password","reset-password"].includes(n.value)?N("",!0):($(),A("div",ha,[f("button",{class:ce(["auth-tab",{active:n.value==="login"}]),onClick:w[1]||(w[1]=P=>n.value="login")}," 登录 ",2),f("button",{class:ce(["auth-tab",{active:n.value==="register"}]),onClick:w[2]||(w[2]=P=>n.value="register")}," 注册 ",2)])),["verify-email","forgot-password","reset-password"].includes(n.value)?($(),A("div",va,[f("button",{onClick:ae,class:"back-btn"}," ← 返回登录 ")])):N("",!0),n.value==="login"?($(),A("form",{key:2,onSubmit:Fe(xe,["prevent"]),class:"auth-form"},[f("div",ga,[w[21]||(w[21]=f("label",null,"邮箱",-1)),le(f("input",{"onUpdate:modelValue":w[3]||(w[3]=P=>g.value.email=P),type:"email",required:"",placeholder:"请输入邮箱",class:"form-input"},null,512),[[fe,g.value.email]])]),f("div",ma,[w[22]||(w[22]=f("label",null,"密码",-1)),le(f("input",{"onUpdate:modelValue":w[4]||(w[4]=P=>g.value.password=P),type:"password",required:"",placeholder:"请输入密码",class:"form-input"},null,512),[[fe,g.value.password]])]),f("button",{type:"submit",disabled:r.value,class:"auth-submit-btn"},L(r.value?"登录中...":"登录"),9,_a),f("div",ba,[f("button",{type:"button",onClick:w[5]||(w[5]=P=>n.value="forgot-password"),class:"link-btn"}," 忘记密码? ")])],32)):N("",!0),n.value==="register"?($(),A("form",{key:3,onSubmit:Fe(Te,["prevent"]),class:"auth-form"},[f("div",ya,[w[23]||(w[23]=f("label",null,"用户名",-1)),le(f("input",{"onUpdate:modelValue":w[6]||(w[6]=P=>h.value.username=P),type:"text",required:"",placeholder:"请输入用户名(3-10个字符)",class:"form-input",minlength:"3",maxlength:"10"},null,512),[[fe,h.value.username]])]),f("div",wa,[w[24]||(w[24]=f("label",null,"邮箱",-1)),le(f("input",{"onUpdate:modelValue":w[7]||(w[7]=P=>h.value.email=P),type:"email",required:"",placeholder:"请输入邮箱",class:"form-input"},null,512),[[fe,h.value.email]])]),f("div",xa,[w[25]||(w[25]=f("label",null,"密码",-1)),le(f("input",{"onUpdate:modelValue":w[8]||(w[8]=P=>h.value.password=P),type:"password",required:"",placeholder:"请输入密码(至少6位)",class:"form-input",minlength:"6"},null,512),[[fe,h.value.password]])]),f("div",ka,[w[26]||(w[26]=f("label",null,"确认密码",-1)),le(f("input",{"onUpdate:modelValue":w[9]||(w[9]=P=>h.value.confirmPassword=P),type:"password",required:"",placeholder:"请再次输入密码",class:"form-input"},null,512),[[fe,h.value.confirmPassword]])]),E.value?($(),A("div",Ca,[w[27]||(w[27]=f("div",{class:"progress-text"},"正在计算工作量证明...",-1)),f("div",Sa,[f("div",{class:"progress-fill",style:Bt({width:Math.min(D.value/1e3,100)+"%"})},null,4)])])):N("",!0),f("button",{type:"submit",disabled:r.value||E.value,class:"auth-submit-btn"},L(E.value?"计算中...":r.value?"注册中...":"注册"),9,Ta)],32)):N("",!0),n.value==="verify-email"?($(),A("form",{key:4,onSubmit:Fe(Ie,["prevent"]),class:"auth-form"},[w[30]||(w[30]=f("div",{class:"form-title"},"邮箱验证",-1)),f("div",Ea," 我们已向 "+L(te.value||m.value.email)+" 发送了验证码,请查收邮件并输入验证码。 ",1),f("div",$a,[w[28]||(w[28]=f("label",null,"邮箱",-1)),le(f("input",{"onUpdate:modelValue":w[10]||(w[10]=P=>m.value.email=P),type:"email",required:"",placeholder:"请输入邮箱",class:"form-input",readonly:!!te.value},null,8,Pa),[[fe,m.value.email]])]),f("div",Aa,[w[29]||(w[29]=f("label",null,"验证码",-1)),le(f("input",{"onUpdate:modelValue":w[11]||(w[11]=P=>m.value.code=P),type:"text",required:"",placeholder:"请输入6位验证码",class:"form-input",maxlength:"6"},null,512),[[fe,m.value.code]])]),f("button",{type:"submit",disabled:r.value,class:"auth-submit-btn"},L(r.value?"验证中...":"验证邮箱"),9,Ia),f("div",Oa,[f("button",{type:"button",onClick:ht,disabled:r.value,class:"link-btn"}," 重新发送验证码 ",8,Da)])],32)):N("",!0),n.value==="forgot-password"?($(),A("form",{key:5,onSubmit:Fe(Ve,["prevent"]),class:"auth-form"},[w[33]||(w[33]=f("div",{class:"form-title"},"忘记密码",-1)),w[34]||(w[34]=f("div",{class:"form-description"}," 请输入您的邮箱地址,我们将向您发送重置密码的验证码。 ",-1)),f("div",Ma,[w[31]||(w[31]=f("label",null,"邮箱",-1)),le(f("input",{"onUpdate:modelValue":w[12]||(w[12]=P=>_.value.email=P),type:"email",required:"",placeholder:"请输入注册时使用的邮箱",class:"form-input"},null,512),[[fe,_.value.email]])]),E.value?($(),A("div",Ua,[w[32]||(w[32]=f("div",{class:"progress-text"},"正在计算工作量证明...",-1)),f("div",Va,[f("div",{class:"progress-fill",style:Bt({width:Math.min(D.value/1e3,100)+"%"})},null,4)])])):N("",!0),f("button",{type:"submit",disabled:r.value||E.value,class:"auth-submit-btn"},L(E.value?"计算中...":r.value?"发送中...":"发送重置码"),9,Ra)],32)):N("",!0),n.value==="reset-password"?($(),A("form",{key:6,onSubmit:Fe(Re,["prevent"]),class:"auth-form"},[w[39]||(w[39]=f("div",{class:"form-title"},"重置密码",-1)),w[40]||(w[40]=f("div",{class:"form-description"}," 请输入您收到的验证码和新密码。 ",-1)),f("div",La,[w[35]||(w[35]=f("label",null,"邮箱",-1)),le(f("input",{"onUpdate:modelValue":w[13]||(w[13]=P=>y.value.email=P),type:"email",required:"",placeholder:"请输入邮箱",class:"form-input",readonly:""},null,512),[[fe,y.value.email]])]),f("div",Fa,[w[36]||(w[36]=f("label",null,"验证码",-1)),le(f("input",{"onUpdate:modelValue":w[14]||(w[14]=P=>y.value.code=P),type:"text",required:"",placeholder:"请输入6位验证码",class:"form-input",maxlength:"6"},null,512),[[fe,y.value.code]])]),f("div",Na,[w[37]||(w[37]=f("label",null,"新密码",-1)),le(f("input",{"onUpdate:modelValue":w[15]||(w[15]=P=>y.value.password=P),type:"password",required:"",placeholder:"请输入新密码(至少6位)",class:"form-input",minlength:"6"},null,512),[[fe,y.value.password]])]),f("div",Ba,[w[38]||(w[38]=f("label",null,"确认新密码",-1)),le(f("input",{"onUpdate:modelValue":w[16]||(w[16]=P=>y.value.confirmPassword=P),type:"password",required:"",placeholder:"请再次输入新密码",class:"form-input"},null,512),[[fe,y.value.confirmPassword]])]),f("button",{type:"submit",disabled:r.value,class:"auth-submit-btn"},L(r.value?"重置中...":"重置密码"),9,ja)],32)):N("",!0),o.value?($(),A("div",Ha,L(o.value),1)):N("",!0),l.value?($(),A("div",qa,L(l.value),1)):N("",!0)]))])}}},[["__scopeId","data-v-f9dbeb3c"]]);class xt{static async getLinks(t,s={}){try{const n={},{linkType:r,platform:o,page:l=1,limit:i=5,sortBy:a="created_at",sortOrder:g="desc"}=s;l&&(n.page=l),i&&(n.limit=i),a&&(n.sort_by=a),g&&(n.sort_order=g),r&&(n.type=r==="bt"?"magnet":r),o&&(n.platform=o);const h=await wt.getMovieLinks(t,n);if(!h.success)throw h.error==="NOT_FOUND"||h.status===404?(console.log("电影不存在,返回空结果"),new Error("电影不存在")):(console.error("获取链接失败:",h.error),new Error(`获取链接失败: ${h.error}`));const m=h.data||{};let _=m.links||[];const y=m.pagination||{};Array.isArray(_)||(console.warn("API返回的links不是数组格式:",_),_=[]);const E=_.map(D=>({...D,up_votes:D.likes_count||0,down_votes:D.dislikes_count||0,score:(D.likes_count||0)-(D.dislikes_count||0),user_vote_type:D.user_vote_type==="like"?"up":D.user_vote_type==="dislike"?"down":D.user_vote_type||"",user_display_name:D.username||"匿名用户"}));return{success:!0,data:E,pagination:y,count:E.length,total:y.total||0}}catch(n){return console.error("获取链接服务错误:",n),{success:!1,error:n.message||"获取链接失败",data:[],pagination:{page:1,limit:5,total:0,pages:0},count:0,total:0}}}static async addLink(t){try{const{movieId:s,linkType:n,platform:r,url:o,extractCode:l,title:i,quality:a,size:g,has_4k:h,has_hdr:m,has_dolby_atmos:_,has_subtitles:y}=t;if(!s||!n||!o)throw new Error("缺少必填字段:movieId, linkType, url");if(!["netdisk","bt","online"].includes(n))throw new Error("无效的链接类型");if(l&&l.length>10)throw new Error("提取码长度不能超过10个字符");const E=await we.getChallenge();if(!E.success)throw new Error("获取工作量证明挑战失败");const{challenge:D,difficulty:te}=E.data,H=await Fs(D,te),j={title:i||"",url:o.trim(),type:n==="bt"?"magnet":n,password:l||"",quality:a||"",size:g||"",has_4k:!!h,has_hdr:!!m,has_dolby_atmos:!!_,has_subtitles:!!y,proof_of_work:H};n==="netdisk"&&r&&r.trim()&&(j.platform=r.trim());const q=await wt.addMovieLink(s,j);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){try{if(!t)throw new Error("链接ID不能为空");if(!ne.isAuthenticated.value)throw new Error("用户未登录");const s=await wt.deleteLink(t);if(!s.success)throw console.error("删除链接失败:",s.error),new Error(`删除链接失败: ${s.error}`);return{success:!0,message:"链接删除成功"}}catch(s){return console.error("删除链接服务错误:",s),{success:!1,error:s.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 n=s==="up"?"like":"dislike",r=await wt.voteLink(t,n);if(!r.success)throw console.error("投票失败:",r.error),new Error(`投票失败: ${r.error}`);const o=r.data||{};return{success:!0,message:`${s==="up"?"点赞":"点踩"}成功`,data:{up_votes:o.likes_count||0,down_votes:o.dislikes_count||0,user_vote_type:o.user_vote_type==="like"?"up":o.user_vote_type==="dislike"?"down":null}}}catch(n){return console.error("投票服务错误:",n),{success:!1,error:n.message||"投票失败"}}}static async removeVote(t){try{if(!t)throw new Error("链接ID不能为空");if(!ne.isAuthenticated.value)throw new Error("用户未登录");const s=await wt.removeVote(t);if(!s.success)throw console.error("取消投票失败:",s.error),new Error(`取消投票失败: ${s.error}`);return{success:!0,message:"取消投票成功"}}catch(s){return console.error("取消投票服务错误:",s),{success:!1,error:s.message||"取消投票失败"}}}static async reportLink(t,s,n=""){try{if(!t||!s)throw new Error("链接ID和反馈类型不能为空");if(!ne.isAuthenticated.value)throw new Error("用户未登录");const r={link_id:t,type:s.trim(),reason:n.trim()||null},o=await wt.reportLink(r);if(!o.success)throw console.error("反馈失败:",o.error),new Error(`反馈失败: ${o.error}`);return{success:!0,data:o.data,message:"反馈提交成功"}}catch(r){return console.error("反馈服务错误:",r),{success:!1,error:r.message||"反馈失败"}}}}const Ka="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",za={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}}},Ga={class:"selected-text"},Ja={class:"select-dropdown"},Ya=["onClick"];function Qa(e,t,s,n,r,o){return $(),A("div",{class:ce(["custom-select",{"is-open":r.isOpen}]),onClick:t[1]||(t[1]=Fe(()=>{},["stop"]))},[f("div",{class:"select-trigger",onClick:t[0]||(t[0]=(...l)=>o.toggleDropdown&&o.toggleDropdown(...l))},[f("span",Ga,L(o.selectedLabel||s.placeholder),1),f("img",{src:Ka,class:ce(["arrow",{"arrow-up":r.isOpen}]),alt:"箭头"},null,2)]),le(f("div",Ja,[($(!0),A(Ce,null,dn(s.options,l=>($(),A("div",{class:ce(["select-option",{selected:l.value===s.modelValue}]),key:l.value,onClick:i=>o.selectOption(l)},L(l.label),11,Ya))),128))],512),[[Rs,r.isOpen]])],2)}const ls=nt(za,[["render",Qa],["__scopeId","data-v-411df2ed"]]),Xa={name:"LinkItemSkeleton"},Za={class:"link-item skeleton"};function eu(e,t,s,n,r,o){return $(),A("div",Za,t[0]||(t[0]=[ri('<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 tu=nt(Xa,[["render",eu],["__scopeId","data-v-115afd35"]]),su=["checked"],nu={key:0,class:"checkbox-label"},Ns=nt({__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)=>($(),A("label",{class:ce(["ios-checkbox",e.color])},[f("input",{type:"checkbox",checked:e.modelValue,onChange:s[0]||(s[0]=n=>t.$emit("update:modelValue",n.target.checked))},null,40,su),s[1]||(s[1]=f("div",{class:"checkbox-wrapper"},[f("div",{class:"checkbox-bg"}),f("svg",{fill:"none",viewBox:"0 0 24 24",class:"checkbox-icon"},[f("path",{"stroke-linejoin":"round","stroke-linecap":"round","stroke-width":"3",stroke:"currentColor",d:"M4 12L10 18L20 6",class:"check-path"})])],-1)),e.label?($(),A("span",nu,L(e.label),1)):N("",!0)],2))}},[["__scopeId","data-v-77ac6b2a"]]),ru={class:"tooltip"},ou={class:"tooltip"},po=nt({__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,n=t,r=B(!1),o=Se(()=>r.value?"已复制":s.type==="url"?"点击复制链接":"点击复制提取码"),l=a=>a.length>50?a.substring(0,47)+"...":a,i=async()=>{try{await navigator.clipboard.writeText(s.text),r.value=!0,n("copy-success",s.text),setTimeout(()=>{r.value=!1},2e3)}catch(a){console.error("复制失败:",a),n("copy-error",a)}};return(a,g)=>e.type==="url"?($(),A("span",{key:0,class:ce(["copy-item",{copied:r.value}]),onClick:i},[xn(L(l(e.text))+" ",1),f("span",ru,L(o.value),1)],2)):e.type==="code"?($(),A("code",{key:1,class:ce(["extract-code",{copied:r.value}]),onClick:i},[xn(L(e.text)+" ",1),f("span",ou,L(o.value),1)],2)):N("",!0)}},[["__scopeId","data-v-e586dbae"]]),lu={class:"link-manager"},iu={key:0,class:"modal-overlay"},au={class:"modal-content"},uu={class:"modal-body"},cu={class:"form-row"},fu={class:"form-group"},du={key:0,class:"form-group"},pu={class:"form-group"},hu={class:"input-wrapper"},vu={class:"form-row"},gu={key:0,class:"form-group"},mu={class:"input-wrapper"},_u={class:"form-group"},bu={class:"input-wrapper"},yu={class:"form-row"},wu={class:"form-group"},xu={class:"input-wrapper"},ku={class:"form-group"},Cu={class:"checkbox-group"},Su={class:"form-actions"},Tu=["disabled"],Eu={class:"links-section"},$u={class:"filter-bar"},Pu={class:"filter-controls"},Au=["disabled"],Iu={key:0,class:"links-list"},Ou={key:1,class:"links-list"},Du=["onClick"],Mu={class:"link-header"},Uu={key:0,class:"platform-badge"},Vu=["src","alt"],Ru={class:"link-meta"},Lu={key:0,class:"language"},Fu={key:1,class:"file-size"},Nu={key:2,class:"feature-tags"},Bu={key:0,class:"feature-tag feature-4k"},ju={key:1,class:"feature-tag feature-hdr"},Hu={key:2,class:"feature-tag feature-dolby"},qu={key:3,class:"feature-tag feature-subtitle"},Wu={class:"link-content"},Ku={class:"link-title-row"},zu={class:"link-details"},Gu={class:"vote-section"},Ju=["onClick","disabled"],Yu=["onClick","disabled"],Qu={class:"score"},Xu={class:"action-buttons"},Zu=["onClick"],ec=["onClick"],tc=["onClick"],sc={class:"link-footer"},nc={class:"author"},rc={class:"date"},oc={key:0,class:"report-count"},lc={key:2,class:"empty-state"},ic={key:1,class:"pagination"},ac=["disabled"],uc={class:"pagination-info"},cc=["disabled"],fc={class:"toast-container"},dc={key:0,class:"modal-overlay"},pc={class:"modal-content"},hc={class:"modal-body"},vc={class:"form-group"},gc={class:"form-group"},mc={class:"input-wrapper"},_c={class:"form-actions"},bc=["disabled"],is="doubanflix_link_draft",yc=nt({__name:"LinkManager",props:{movieId:{type:String,required:!0},linkType:{type:String,default:"all"}},setup(e){const t=e,s=Se(()=>t.linkType),n=B([]),r=B({total:0,netdisk:0,bt:0,online:0,platforms:{}}),o=B(!1),l=B(""),i=B(""),a=B(!1),g=B(!1),h=B(new Set),m=B({page:1,limit:5,total:0,pages:0}),_=$t({linkType:"",platform:"",url:"",extractCode:"",title:"",size:"",has_4k:!1,has_hdr:!1,has_dolby_atmos:!1,has_subtitles:!1}),y=$t({platform:"",sortBy:"created_at"}),E=[{value:"",label:"请选择类型"},{value:"netdisk",label:"网盘"},{value:"bt",label:"BT"},{value:"online",label:"在线"}],D=[{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网盘"}],te=(v,d,c)=>{const b=d+c;if(b===0)return 5;const C=d/b*10;return Math.round(C*10)/10},H=[{value:"created_at",label:"按时间"},{value:"likes_count",label:"按点赞数"},{value:"like_rate",label:"按点赞率"}],j=Se(()=>{switch(_.linkType){case"netdisk":return D;default:return[{value:"",label:"请选择平台"}]}}),q=Se(()=>{const v=[{value:"",label:"所有平台"}];switch(t.linkType){case"netdisk":return v.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"}]);default:return v}}),O=Se(()=>ne.isAuthenticated.value),z=async(v=1)=>{if(t.movieId){o.value=!0,l.value="";try{const d=t.linkType==="all"?void 0:t.linkType,c=await xt.getLinks(t.movieId,{linkType:d,platform:y.platform||void 0,sortBy:y.sortBy,sortOrder:"desc",page:v,limit:m.value.limit});c.success?(n.value=c.data,c.pagination&&(m.value={page:c.pagination.page||1,limit:c.pagination.limit||5,total:c.pagination.total||0,pages:c.pagination.pages||0})):c.error&&c.error.includes("电影不存在")?(console.log("电影不存在,静默处理"),n.value=[],m.value={page:1,limit:5,total:0,pages:0}):l.value=c.error}catch(d){d.message&&d.message.includes("电影不存在")?(console.log("电影不存在,静默处理"),n.value=[],m.value={page:1,limit:5,total:0,pages:0}):(l.value="加载链接失败",console.error("加载链接错误:",d))}finally{o.value=!1}}},xe=async()=>{if(t.movieId)try{const v=await xt.getLinkStats(t.movieId);v.success&&(r.value=v.data)}catch(v){console.error("加载统计失败:",v)}},Te=async()=>{if(!O.value){l.value="请先登录";return}g.value=!0,l.value="";try{const v=await xt.addLink({movieId:t.movieId,linkType:_.linkType,platform:_.platform,url:_.url,extractCode:_.extractCode,title:_.title,size:_.size,has_4k:_.has_4k,has_hdr:_.has_hdr,has_dolby_atmos:_.has_dolby_atmos,has_subtitles:_.has_subtitles});v.success?(i.value=v.message,Ve(),Lt(),a.value=!1,await z(),await xe(),setTimeout(()=>{i.value=""},3e3)):l.value=v.error}catch(v){l.value="添加链接失败",console.error("添加链接错误:",v)}finally{g.value=!1}},Ie=async(v,d)=>{if(!O.value){l.value="请先登录";return}const c=n.value.find(k=>k.id===v);if(!c)return;const b=c.user_vote_type,T=c.up_votes||0,C=c.down_votes||0,S=c.score||0;let x=T,I=C;if(c.user_vote_type===d)c.user_vote_type=null,d==="up"?x=Math.max(0,T-1):I=Math.max(0,C-1);else{const k=c.user_vote_type;c.user_vote_type=d,k==="up"?x=Math.max(0,T-1):k==="down"&&(I=Math.max(0,C-1)),d==="up"?x=x+1:I=I+1}c.up_votes=x,c.down_votes=I,c.score=x-I;try{let k;b===d?k=await xt.removeVote(v):k=await xt.voteLink(v,d),k.success?k.data&&(c.up_votes=k.data.up_votes,c.down_votes=k.data.down_votes,c.score=c.up_votes-c.down_votes,c.user_vote_type=k.data.user_vote_type||null):(c.user_vote_type=b,c.up_votes=T,c.down_votes=C,c.score=S,l.value=k.error)}catch(k){c.user_vote_type=b,c.up_votes=T,c.down_votes=C,c.score=S,l.value="投票失败",console.error("投票错误:",k)}},ht=async v=>{if(confirm("确定要删除这个链接吗?"))try{const d=await xt.deleteLink(v);d.success?(i.value=d.message,await z(),await xe(),setTimeout(()=>{i.value=""},3e3)):l.value=d.error}catch(d){l.value="删除链接失败",console.error("删除链接错误:",d)}},Ve=()=>{Object.assign(_,{linkType:"",platform:"",url:"",extractCode:"",title:"",size:"",has_4k:!1,has_hdr:!1,has_dolby_atmos:!1,has_subtitles:!1})},Re=B(!1),ae=$t({linkId:"",type:"",reason:""}),Ne=B(!1),U=[{value:"invalid_link",label:"无效链接"},{value:"copyright_issue",label:"版权问题"},{value:"malicious_link",label:"恶意链接"},{value:"spam",label:"垃圾信息"},{value:"fake_content",label:"虚假内容"},{value:"other",label:"其他"}],w=v=>{if(!O.value){l.value="请先登录";return}ae.linkId=v,ae.type="invalid_link",ae.reason="",Re.value=!0},Y=async()=>{if(!ae.type){l.value="请选择反馈类型";return}Ne.value=!0,l.value="";try{const v=await xt.reportLink(ae.linkId,ae.type,ae.reason);v.success?(i.value=v.message,Re.value=!1,await z(),setTimeout(()=>{i.value=""},3e3)):l.value=v.error}catch(v){l.value="反馈提交失败",console.error("反馈错误:",v)}finally{Ne.value=!1}},P=()=>{Re.value=!1,ae.linkId="",ae.reason="",ae.description=""},G=()=>{const v={linkType:_.linkType,platform:_.platform,url:_.url,extractCode:_.extractCode,title:_.title,language:_.language,has_4k:_.has_4k,has_hdr:_.has_hdr,has_dolby_atmos:_.has_dolby_atmos,has_subtitles:_.has_subtitles,timestamp:Date.now()};Object.values(v).some(c=>c&&c!==""&&typeof c!="number")&&localStorage.setItem(is,JSON.stringify(v))},rt=()=>{try{const v=localStorage.getItem(is);if(v){const d=JSON.parse(v);if(Date.now()-d.timestamp>24*60*60*1e3)localStorage.removeItem(is);else return Object.assign(_,{linkType:d.linkType||"",platform:d.platform||"",url:d.url||"",extractCode:d.extractCode||"",title:d.title||"",language:d.language||"",has_4k:d.has_4k||!1,has_hdr:d.has_hdr||!1,has_dolby_atmos:d.has_dolby_atmos||!1,has_subtitles:d.has_subtitles||!1}),!0}}catch(v){console.error("恢复草稿失败:",v),localStorage.removeItem(is)}return!1},Lt=()=>{localStorage.removeItem(is)},ot=()=>{a.value=!0,rt()&&console.log("已恢复草稿内容")},Oe=()=>{G(),a.value=!1,Ve()},Ft=v=>O.value&&ne.userId.value===v.user_id,Pn=v=>({quark:"夸克",ali:"阿里",baidu:"百度",tianyi:"天翼",mobile:"移动",115:"115",xunlei:"迅雷",uc:"UC",bilibili:"B站",iqiyi:"爱奇艺",youku:"优酷",tencent:"腾讯",bt:"磁力"})[v]||v,An=v=>{const d={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>')};return d[v]||d.quark},kt=v=>{const d=new Date(v);return d.toLocaleDateString("zh-CN")+" "+d.toLocaleTimeString("zh-CN",{hour:"2-digit",minute:"2-digit"})},Ct=v=>{i.value="已复制到剪贴板",setTimeout(()=>{i.value=""},2e3)},as=v=>{h.value.has(v)?h.value.delete(v):h.value.add(v)},vt=v=>h.value.has(v),Be=()=>{h.value.clear()};Ut(()=>t.movieId,v=>{v&&(Be(),z(),xe())},{immediate:!0}),Ut(()=>t.linkType,()=>{Be(),y.platform="",m.value.page=1,t.movieId&&z()});const In=v=>{v>=1&&v<=m.value.pages&&(Be(),z(v))},u=()=>{m.value.page>1&&In(m.value.page-1)},p=()=>{m.value.page<m.value.pages&&In(m.value.page+1)};return Dt(()=>{t.movieId&&(z(),xe())}),(v,d)=>($(),A(Ce,null,[f("div",lu,[a.value?($(),A("div",iu,[f("div",au,[f("div",{class:"modal-header"},[d[22]||(d[22]=f("h4",null,"添加新链接",-1)),f("button",{class:"close-btn",onClick:Oe},"×")]),f("div",uu,[f("form",{onSubmit:Fe(Te,["prevent"])},[f("div",cu,[f("div",fu,[d[23]||(d[23]=f("label",null,"链接类型 *",-1)),re(ls,{modelValue:_.linkType,"onUpdate:modelValue":d[0]||(d[0]=c=>_.linkType=c),options:E,placeholder:"请选择类型",onChange:d[1]||(d[1]=c=>_.platform="")},null,8,["modelValue"])]),_.linkType==="netdisk"?($(),A("div",du,[d[24]||(d[24]=f("label",null,"平台",-1)),re(ls,{modelValue:_.platform,"onUpdate:modelValue":d[2]||(d[2]=c=>_.platform=c),options:j.value,placeholder:"请选择平台"},null,8,["modelValue","options"])])):N("",!0)]),f("div",pu,[d[25]||(d[25]=f("label",null,"链接地址 *",-1)),f("div",hu,[le(f("input",{type:"url","onUpdate:modelValue":d[3]||(d[3]=c=>_.url=c),placeholder:"请输入完整的链接地址",required:""},null,512),[[fe,_.url]])])]),f("div",vu,[_.linkType==="netdisk"?($(),A("div",gu,[d[26]||(d[26]=f("label",null,"提取码",-1)),f("div",mu,[le(f("input",{type:"text","onUpdate:modelValue":d[4]||(d[4]=c=>_.extractCode=c),placeholder:"如有提取码请填写",maxlength:"10"},null,512),[[fe,_.extractCode]])])])):N("",!0),f("div",_u,[d[27]||(d[27]=f("label",null,"标题描述",-1)),f("div",bu,[le(f("input",{type:"text","onUpdate:modelValue":d[5]||(d[5]=c=>_.title=c),placeholder:"简短描述这个链接"},null,512),[[fe,_.title]])])])]),f("div",yu,[f("div",wu,[d[28]||(d[28]=f("label",null,"文件大小",-1)),f("div",xu,[le(f("input",{type:"text","onUpdate:modelValue":d[6]||(d[6]=c=>_.size=c),placeholder:"如: 2.5G 或 1024M",pattern:"^\\d+(\\.\\d+)?[GMgm]$",title:"请输入数字+G或M,如: 2.5G 或 1024M"},null,512),[[fe,_.size]])])]),f("div",ku,[d[29]||(d[29]=f("label",null,"特性标签",-1)),f("div",Cu,[re(Ns,{modelValue:_.has_4k,"onUpdate:modelValue":d[7]||(d[7]=c=>_.has_4k=c),label:"4K画质",color:"blue"},null,8,["modelValue"]),re(Ns,{modelValue:_.has_hdr,"onUpdate:modelValue":d[8]||(d[8]=c=>_.has_hdr=c),label:"HDR",color:"green"},null,8,["modelValue"]),re(Ns,{modelValue:_.has_dolby_atmos,"onUpdate:modelValue":d[9]||(d[9]=c=>_.has_dolby_atmos=c),label:"杜比全景声",color:"purple"},null,8,["modelValue"]),re(Ns,{modelValue:_.has_subtitles,"onUpdate:modelValue":d[10]||(d[10]=c=>_.has_subtitles=c),label:"外挂字幕",color:"red"},null,8,["modelValue"])])])]),f("div",Su,[f("button",{type:"submit",disabled:g.value},L(g.value?"添加中...":"添加链接"),9,Tu),f("button",{type:"button",onClick:Oe},"取消")])],32)])])])):N("",!0),f("div",Eu,[f("div",$u,[f("div",Pu,[s.value==="netdisk"?($(),wn(ls,{key:0,modelValue:y.platform,"onUpdate:modelValue":d[11]||(d[11]=c=>y.platform=c),options:q.value,placeholder:"所有平台",onChange:d[12]||(d[12]=()=>{Be(),z()})},null,8,["modelValue","options"])):N("",!0),re(ls,{modelValue:y.sortBy,"onUpdate:modelValue":d[13]||(d[13]=c=>y.sortBy=c),options:H,placeholder:"按时间",onChange:d[14]||(d[14]=()=>{Be(),z()})},null,8,["modelValue"])]),f("button",{class:"add-link-btn-compact",onClick:ot,disabled:!O.value,title:"添加链接"},d[30]||(d[30]=[f("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"currentColor"},[f("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,Au)]),o.value?($(),A("div",Iu,[($(),A(Ce,null,dn(3,c=>re(tu,{key:"skeleton-"+c})),64))])):n.value.length>0?($(),A("div",Ou,[($(!0),A(Ce,null,dn(n.value,c=>($(),A("div",{class:"link-item",key:c.id,onClick:b=>as(c.id)},[f("div",Mu,[c.platform&&t.linkType!=="bt"&&t.linkType!=="online"?($(),A("div",Uu,[f("img",{src:An(c.platform),alt:Pn(c.platform),class:"platform-icon"},null,8,Vu)])):N("",!0),f("div",Ru,[c.language?($(),A("span",Lu,L(c.language),1)):N("",!0),c.size?($(),A("span",Fu,L(c.size),1)):N("",!0),c.has_4k||c.has_hdr||c.has_dolby_atmos||c.has_subtitles?($(),A("div",Nu,[c.has_4k?($(),A("span",Bu,"4K")):N("",!0),c.has_hdr?($(),A("span",ju,"HDR")):N("",!0),c.has_dolby_atmos?($(),A("span",Hu,"杜比")):N("",!0),c.has_subtitles?($(),A("span",qu,"外挂字幕")):N("",!0)])):N("",!0)])]),f("div",Wu,[f("div",Ku,[c.title?($(),A("div",{key:0,class:ce(["link-title",{expanded:vt(c.id)}])},L(c.title),3)):N("",!0),f("div",{class:ce(["expand-arrow",{expanded:vt(c.id)}])},d[31]||(d[31]=[f("svg",{viewBox:"0 0 1024 1024",width:"16",height:"16"},[f("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)]),le(f("div",zu,[f("div",{class:"link-url",onClick:d[15]||(d[15]=Fe(()=>{},["stop"]))},[re(po,{text:c.url,type:"url",onCopySuccess:Ct},null,8,["text"])]),c.password?($(),A("div",{key:0,class:"extract-code",onClick:d[16]||(d[16]=Fe(()=>{},["stop"]))},[d[32]||(d[32]=f("span",null,"提取码: ",-1)),re(po,{text:c.password,type:"code",onCopySuccess:Ct},null,8,["text"])])):N("",!0)],512),[[Rs,vt(c.id)]])]),le(f("div",{class:"link-actions",onClick:d[17]||(d[17]=Fe(()=>{},["stop"]))},[f("div",Gu,[f("button",{class:ce(["vote-btn up",{active:c.user_vote_type==="up"}]),onClick:b=>Ie(c.id,"up"),disabled:!O.value}," 👍 "+L(c.up_votes||0),11,Ju),f("button",{class:ce(["vote-btn down",{active:c.user_vote_type==="down"}]),onClick:b=>Ie(c.id,"down"),disabled:!O.value}," 👎 "+L(c.down_votes||0),11,Yu),f("span",Qu,"评分: "+L(te(c.score||0,c.up_votes||0,c.down_votes||0)),1)]),f("div",Xu,[Ft(c)?($(),A("button",{key:0,class:"edit-btn",onClick:b=>v.startEdit(c)}," 编辑 ",8,Zu)):N("",!0),Ft(c)?($(),A("button",{key:1,class:"delete-btn",onClick:b=>ht(c.id)}," 删除 ",8,ec)):N("",!0),!Ft(c)&&O.value?($(),A("button",{key:2,class:"report-btn",onClick:b=>w(c.id)}," 反馈 ",8,tc)):N("",!0)])],512),[[Rs,vt(c.id)]]),le(f("div",sc,[f("span",nc,"by "+L(c.user_display_name||"匿名用户"),1),f("span",rc,L(kt(c.created_at)),1),c.report_count>0?($(),A("span",oc," 被反馈 "+L(c.report_count)+" 次 ",1)):N("",!0)],512),[[Rs,vt(c.id)]])],8,Du))),128))])):!o.value&&n.value.length===0?($(),A("div",lc,d[33]||(d[33]=[f("p",null,"暂无链接,成为第一个添加链接的人吧!",-1)]))):N("",!0)]),m.value.pages>1&&!o.value?($(),A("div",ic,[f("button",{class:"pagination-btn",disabled:m.value.page<=1,onClick:u}," 上一页 ",8,ac),f("span",uc,L(m.value.page)+" / "+L(m.value.pages),1),f("button",{class:"pagination-btn",disabled:m.value.page>=m.value.pages,onClick:p}," 下一页 ",8,cc)])):N("",!0),f("div",fc,[l.value?($(),A("div",{key:0,class:"toast error-toast",onClick:d[18]||(d[18]=c=>l.value="")},[f("span",null,L(l.value),1),d[34]||(d[34]=f("button",{class:"toast-close"},"×",-1))])):N("",!0),i.value?($(),A("div",{key:1,class:"toast success-toast",onClick:d[19]||(d[19]=c=>i.value="")},[f("span",null,L(i.value),1),d[35]||(d[35]=f("button",{class:"toast-close"},"×",-1))])):N("",!0)])]),Re.value?($(),A("div",dc,[f("div",pc,[f("div",{class:"modal-header"},[d[36]||(d[36]=f("h4",null,"反馈链接",-1)),f("button",{class:"close-btn",onClick:P},"×")]),f("div",hc,[f("form",{onSubmit:Fe(Y,["prevent"])},[f("div",vc,[d[37]||(d[37]=f("label",{for:"report-type"},"反馈类型 *",-1)),re(ls,{id:"report-type",modelValue:ae.type,"onUpdate:modelValue":d[20]||(d[20]=c=>ae.type=c),options:U,placeholder:"请选择反馈类型",required:""},null,8,["modelValue"])]),f("div",gc,[d[38]||(d[38]=f("label",{for:"report-reason"},"详细原因",-1)),f("div",mc,[le(f("input",{id:"report-reason","onUpdate:modelValue":d[21]||(d[21]=c=>ae.reason=c),placeholder:"请详细描述反馈原因(可选)",rows:"4"},null,512),[[fe,ae.reason]])])]),f("div",_c,[f("button",{type:"submit",disabled:Ne.value||!ae.type},L(Ne.value?"提交中...":"提交反馈"),9,bc),f("button",{type:"button",onClick:P}," 取消 ")])],32)])])])):N("",!0)],64))}},[["__scopeId","data-v-50cc6ac7"]]),wc={class:"content-wrapper"},xc={class:"navigation-bar"},kc={class:"tab-content"},Cc={key:0,class:"tab-panel"},Sc={key:1,class:"no-subject"},Tc={key:1,class:"tab-panel"},Ec=nt({__name:"WindowContent",setup(e){const t=B("links"),s=B("netdisk"),n=B(""),r=B({title:"",year:"",rating:""}),o=(i,a=null)=>{t.value=i,i==="links"&&a&&(s.value=a)},l=()=>{try{const a=window.location.href.match(/\/subject\/(\d+)\/?/);a&&(n.value=a[1],console.log("检测到豆瓣电影ID:",n.value));const g=document.querySelector('h1 span[property="v:itemreviewed"]')||document.querySelector("h1 span")||document.querySelector("h1");g&&(r.value.title=g.textContent.trim());const h=document.querySelector(".year")||document.querySelector("span.year");if(h){const _=h.textContent.match(/(\d{4})/);_&&(r.value.year=_[1])}const m=document.querySelector(".rating_num")||document.querySelector('[property="v:average"]');m&&(r.value.rating=m.textContent.trim()),console.log("获取到的电影信息:",r.value)}catch(i){console.error("获取豆瓣电影信息失败:",i)}};return Dt(()=>{l(),new MutationObserver(()=>{window.location.href.includes("/subject/")&&setTimeout(l,500)}).observe(document.body,{childList:!0,subtree:!0})}),(i,a)=>($(),A("div",wc,[f("div",xc,[f("button",{class:ce(["nav-btn",{active:t.value==="links"&&s.value==="netdisk"}]),onClick:a[0]||(a[0]=g=>o("links","netdisk"))}," 💾 网盘 ",2),f("button",{class:ce(["nav-btn",{active:t.value==="links"&&s.value==="bt"}]),onClick:a[1]||(a[1]=g=>o("links","bt"))}," 🧲 BT ",2),f("button",{class:ce(["nav-btn",{active:t.value==="links"&&s.value==="online"}]),onClick:a[2]||(a[2]=g=>o("links","online"))}," 📺 在线 ",2),f("button",{class:ce(["nav-btn",{active:t.value==="user"}]),onClick:a[3]||(a[3]=g=>o("user"))}," 👤 用户 ",2)]),f("div",kc,[t.value==="links"?($(),A("div",Cc,[n.value?($(),wn(yc,{key:0,"movie-id":n.value,"link-type":s.value},null,8,["movie-id","link-type"])):($(),A("div",Sc,a[4]||(a[4]=[f("p",null,"未检测到豆瓣电影页面,请在豆瓣电影详情页使用此功能。",-1),f("p",{class:"hint"},"支持的页面格式:https://movie.douban.com/subject/[ID]/",-1)])))])):N("",!0),t.value==="user"?($(),A("div",Tc,[re(Wa)])):N("",!0)])]))}},[["__scopeId","data-v-2fb0e09c"]]),$c={key:0,class:"debug-panel"},Pc={class:"debug-content"},Ac={class:"debug-section"},Ic={class:"status-item"},Oc={class:"status-item"},Dc={class:"value"},Mc={class:"status-item"},Uc={class:"value token"},Vc={class:"status-item"},Rc={class:"value token"},Lc={class:"status-item"},Fc={class:"debug-section"},Nc={key:0,class:"test-result"},Bc={class:"debug-section"},jc={class:"headers-preview"},Hc=nt({__name:"DebugPanel",setup(e){const t=B(!1),s=B(""),n=B(""),r=Se(()=>ne.isAuthenticated.value),o=Se(()=>ne.token.value),l=Se(()=>ne.user.value?`${ne.user.value.email} (ID: ${ne.user.value.id})`:"无用户信息"),i=Se(()=>{const y=o.value,E=s.value;return y&&E&&y===E}),a=Se(()=>{const y=s.value;return JSON.stringify(y?{Authorization:`Bearer ${y.substring(0,20)}...`,"Content-Type":"application/json"}:{"Content-Type":"application/json"},null,2)}),g=()=>{t.value=!t.value,t.value&&h()},h=()=>{s.value=localStorage.getItem("auth_token")||"",console.log("Token状态刷新:",{memory:o.value,localStorage:s.value,match:i.value})},m=async()=>{try{n.value="测试中...";const y=await wt.getLinks();n.value=JSON.stringify({success:!0,dataLength:(y==null?void 0:y.length)||0,message:"请求成功"},null,2)}catch(y){n.value=JSON.stringify({success:!1,error:y.message,status:y.status||"unknown"},null,2)}},_=()=>{localStorage.removeItem("auth_token"),ne.token.value=null,ne.user.value=null,h(),n.value="",console.log("所有Token已清除")};return Dt(()=>{h(),window.addEventListener("storage",y=>{y.key==="auth_token"&&h()})}),(y,E)=>t.value?($(),A("div",$c,[f("div",{class:"debug-header"},[E[0]||(E[0]=f("h3",null,"🔧 调试面板",-1)),f("button",{onClick:g,class:"close-btn"},"×")]),f("div",Pc,[f("div",Ac,[E[6]||(E[6]=f("h4",null,"认证状态",-1)),f("div",Ic,[E[1]||(E[1]=f("span",{class:"label"},"登录状态:",-1)),f("span",{class:ce(["status",r.value?"success":"error"])},L(r.value?"已登录":"未登录"),3)]),f("div",Oc,[E[2]||(E[2]=f("span",{class:"label"},"用户信息:",-1)),f("span",Dc,L(l.value),1)]),f("div",Mc,[E[3]||(E[3]=f("span",{class:"label"},"Token (内存):",-1)),f("span",Uc,L(o.value||"无"),1)]),f("div",Vc,[E[4]||(E[4]=f("span",{class:"label"},"Token (localStorage):",-1)),f("span",Rc,L(s.value||"无"),1)]),f("div",Lc,[E[5]||(E[5]=f("span",{class:"label"},"Token匹配:",-1)),f("span",{class:ce(["status",i.value?"success":"error"])},L(i.value?"匹配":"不匹配"),3)])]),f("div",Fc,[E[8]||(E[8]=f("h4",null,"测试操作",-1)),f("div",{class:"button-group"},[f("button",{onClick:h,class:"debug-btn"},"刷新Token状态"),f("button",{onClick:m,class:"debug-btn"},"测试API请求"),f("button",{onClick:_,class:"debug-btn danger"},"清除所有Token")]),n.value?($(),A("div",Nc,[E[7]||(E[7]=f("h5",null,"API测试结果:",-1)),f("pre",null,L(n.value),1)])):N("",!0)]),f("div",Bc,[E[9]||(E[9]=f("h4",null,"请求头预览",-1)),f("div",jc,[f("code",null,L(a.value),1)])])])])):N("",!0)}},[["__scopeId","data-v-dba5723e"]]),qc={key:0,class:"custom-window"},Wc={class:"window-content"},Kc={class:"window-header"},zc={class:"window-title"},Gc=nt({__name:"App",setup(e){const t=B(!0),s=B("DoubanFlix"),n=()=>{t.value=!t.value,t.value&&un(()=>{r()})},r=()=>{let i=document.querySelector(".aside")||document.querySelector("#aside")||document.querySelector(".sidebar")||document.querySelector("#sidebar")||document.querySelector(".right-col")||document.querySelector(".side-panel");i||(i=document.querySelector("#content .article")||document.querySelector(".grid-16-8 .aside")||document.querySelector('[class*="aside"]')||document.querySelector('[class*="side"]')),i||(i=document.createElement("div"),i.className="douban-movie-aside",i.style.cssText=`
      position: fixed;
      top: 100px;
      right: 20px;
      width: 400px;
      z-index: 9999;
    `,document.body.appendChild(i));const a=document.querySelector(".custom-window");a&&i&&a.parentNode!==i&&(i.firstChild?i.insertBefore(a,i.firstChild):i.appendChild(a),console.log("窗口已插入到第一个位置:",i.className||i.tagName))},o=()=>{t.value=!1},l=()=>{n()};return Dt(async()=>{await ne.initAuth(),window.addEventListener("toggle-window",l),un(()=>{r()})}),Es(()=>{window.removeEventListener("toggle-window",l)}),(i,a)=>($(),A(Ce,null,[t.value?($(),A("div",qc,[f("div",Wc,[re(Ec)]),f("div",Kc,[f("span",zc,L(s.value),1),f("button",{class:"close-btn",onClick:o},"×")])])):N("",!0),re(Hc)],64))}},[["__scopeId","data-v-0af292b5"]]);function ho(){const e=document.querySelectorAll("h1"),t=document.querySelector(".article");t&&e.length>0&&e.forEach(r=>{t.insertBefore(r,t.firstChild)});const s=document.createElement("div");s.id="bilibili-custom-window",document.body.appendChild(s),ji(Gc).mount("#bilibili-custom-window")}document.readyState==="loading"?document.addEventListener("DOMContentLoaded",ho):ho()})()})();