From 064982d76b327d3b3a8ef4e8615c6be0f00a78d0 Mon Sep 17 00:00:00 2001 From: MarSeventh <1193267292@qq.com> Date: Wed, 4 Mar 2026 14:06:11 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=BB=BA=E8=AE=AE=E4=B8=8B?= =?UTF-8?q?=E6=8B=89=E6=A1=86=E6=98=BE=E7=A4=BA=E6=95=88=E6=9E=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- css/489.8dcc9918.css.gz | Bin 11763 -> 0 bytes css/{489.8dcc9918.css => 559.6a658982.css} | 2 +- css/559.6a658982.css.gz | Bin 0 -> 11760 bytes index.html | 2 +- index.html.gz | Bin 510 -> 511 bytes js/489.0082a34f.js | 2 -- js/489.0082a34f.js.gz | Bin 26003 -> 0 bytes js/489.0082a34f.js.map | 1 - js/489.0082a34f.js.map.gz | Bin 68435 -> 0 bytes js/559.09c9efe1.js | 2 ++ js/559.09c9efe1.js.gz | Bin 0 -> 25893 bytes js/559.09c9efe1.js.map | 1 + js/559.09c9efe1.js.map.gz | Bin 0 -> 68502 bytes js/app.0f2d1bad.js.gz | Bin 5107 -> 0 bytes js/app.0f2d1bad.js.map.gz | Bin 15744 -> 0 bytes js/{app.0f2d1bad.js => app.2625aa41.js} | 4 ++-- js/app.2625aa41.js.gz | Bin 0 -> 5106 bytes js/{app.0f2d1bad.js.map => app.2625aa41.js.map} | 2 +- js/app.2625aa41.js.map.gz | Bin 0 -> 15743 bytes 19 files changed, 8 insertions(+), 8 deletions(-) delete mode 100644 css/489.8dcc9918.css.gz rename css/{489.8dcc9918.css => 559.6a658982.css} (99%) create mode 100644 css/559.6a658982.css.gz delete mode 100644 js/489.0082a34f.js delete mode 100644 js/489.0082a34f.js.gz delete mode 100644 js/489.0082a34f.js.map delete mode 100644 js/489.0082a34f.js.map.gz create mode 100644 js/559.09c9efe1.js create mode 100644 js/559.09c9efe1.js.gz create mode 100644 js/559.09c9efe1.js.map create mode 100644 js/559.09c9efe1.js.map.gz delete mode 100644 js/app.0f2d1bad.js.gz delete mode 100644 js/app.0f2d1bad.js.map.gz rename js/{app.0f2d1bad.js => app.2625aa41.js} (96%) create mode 100644 js/app.2625aa41.js.gz rename js/{app.0f2d1bad.js.map => app.2625aa41.js.map} (99%) create mode 100644 js/app.2625aa41.js.map.gz diff --git a/css/489.8dcc9918.css.gz b/css/489.8dcc9918.css.gz deleted file mode 100644 index c54626462a83a5f635c71dea1800ceed184f4e37..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11763 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 VM1?|c&AuIP{|#V;QrcB30RSz$xjO&= diff --git a/css/489.8dcc9918.css b/css/559.6a658982.css similarity index 99% rename from css/489.8dcc9918.css rename to css/559.6a658982.css index b5118353..83506caa 100644 --- a/css/489.8dcc9918.css +++ b/css/559.6a658982.css @@ -1 +1 @@ -.history-container[data-v-05a2ac54]{position:fixed;top:0;left:0;width:100%;height:100%;z-index:2000;display:flex;flex-direction:column;color:var(--upload-text-color);clip-path:circle(0 at calc(100% - 200px) 50px);opacity:0;transition:clip-path .6s cubic-bezier(.4,0,.2,1),opacity .3s ease}.history-container[data-v-05a2ac54]:before{content:"";position:absolute;top:0;left:0;width:100%;height:100%;backdrop-filter:blur(20px);background:var(--admin-container-bg-color);z-index:-1;will-change:transform;transform:translateZ(0)}.history-container.active[data-v-05a2ac54]{clip-path:circle(150% at calc(100% - 200px) 50px);opacity:1}.history-header[data-v-05a2ac54]{padding:20px 40px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--el-border-color-lighter)}.header-left[data-v-05a2ac54]{display:flex;align-items:baseline;gap:15px}.header-left h2[data-v-05a2ac54]{margin:0;font-size:24px;background:var(--upload-main-title-color);background-size:200% auto;background-clip:text;-webkit-background-clip:text;color:transparent;font-weight:700}.record-count[data-v-05a2ac54]{color:var(--upload-text-color);font-size:14px;opacity:.8}.header-right[data-v-05a2ac54]{display:flex;gap:10px}.header-right .el-button[data-v-05a2ac54]{background-color:var(--toolbar-button-bg-color);box-shadow:var(--toolbar-button-shadow);backdrop-filter:blur(10px);border:none;color:var(--theme-toggle-color);transition:all .3s ease}.header-right .el-button[data-v-05a2ac54]:hover{transform:scale(1.05);box-shadow:var(--toolbar-button-shadow-hover)}.header-right .el-button.el-button--danger[data-v-05a2ac54]{background:linear-gradient(135deg,#ff6b6b,#ee5a5a);color:#fff}.history-content[data-v-05a2ac54]{flex:1;overflow-y:auto;padding:20px 40px}.grid-view[data-v-05a2ac54]{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:20px}.grid-item[data-v-05a2ac54]{background:var(--toolbar-button-bg-color);border-radius:12px;overflow:hidden;box-shadow:var(--toolbar-button-shadow);transition:transform .3s ease,box-shadow .3s ease;border:none;backdrop-filter:blur(10px)}.grid-item[data-v-05a2ac54]:hover{transform:translateY(-5px);box-shadow:var(--toolbar-button-shadow-hover)}.grid-preview[data-v-05a2ac54]{height:160px;position:relative;background:var(--el-fill-color-light);display:flex;align-items:center;justify-content:center;overflow:hidden}.grid-preview img[data-v-05a2ac54],.grid-preview video[data-v-05a2ac54]{width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.file-icon-wrapper[data-v-05a2ac54]{font-size:48px;color:var(--theme-toggle-color);opacity:.5}.grid-overlay[data-v-05a2ac54]{position:absolute;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.4);display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .3s ease}.grid-item:hover .grid-overlay[data-v-05a2ac54]{opacity:1}.grid-actions[data-v-05a2ac54]{display:flex;gap:15px}.grid-actions .el-button[data-v-05a2ac54]{backdrop-filter:blur(10px)}.grid-info[data-v-05a2ac54]{padding:12px}.file-name[data-v-05a2ac54]{font-size:14px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:5px;color:var(--upload-text-color)}.upload-time[data-v-05a2ac54]{font-size:12px;color:var(--upload-text-color);opacity:.6}.list-view[data-v-05a2ac54]{display:flex;flex-direction:column;gap:10px}.list-item[data-v-05a2ac54]{display:flex;align-items:center;padding:12px 15px;background:var(--toolbar-button-bg-color);border-radius:12px;box-shadow:var(--toolbar-button-shadow);backdrop-filter:blur(10px);border:none;transition:all .3s ease}.list-item[data-v-05a2ac54]:hover{transform:translateX(5px);box-shadow:var(--toolbar-button-shadow-hover)}.list-preview[data-v-05a2ac54]{width:50px;height:50px;border-radius:8px;overflow:hidden;margin-right:15px;background:var(--el-fill-color-light);display:flex;align-items:center;justify-content:center;flex-shrink:0}.list-preview img[data-v-05a2ac54],.list-preview video[data-v-05a2ac54]{width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.file-icon-wrapper-small[data-v-05a2ac54]{font-size:24px;color:var(--theme-toggle-color);opacity:.5}.list-info[data-v-05a2ac54]{flex:1;min-width:0;margin-right:20px}.file-url[data-v-05a2ac54]{font-size:12px;color:var(--upload-text-color);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;opacity:.6}.list-meta[data-v-05a2ac54]{margin-right:20px;text-align:right;min-width:140px}.list-actions[data-v-05a2ac54]{display:flex;gap:8px}.list-actions .el-button[data-v-05a2ac54]{backdrop-filter:blur(10px)}.empty-state[data-v-05a2ac54]{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--upload-text-color);font-size:18px;opacity:.5}.empty-icon[data-v-05a2ac54]{font-size:64px;margin-bottom:20px;color:var(--theme-toggle-color)}.history-content[data-v-05a2ac54]::-webkit-scrollbar{width:8px}.history-content[data-v-05a2ac54]::-webkit-scrollbar-track{background:transparent}.history-content[data-v-05a2ac54]::-webkit-scrollbar-thumb{background:var(--el-border-color);border-radius:4px}.history-content[data-v-05a2ac54]::-webkit-scrollbar-thumb:hover{background:var(--el-border-color-darker)}.action-btn-view[data-v-05a2ac54]{background-color:var(--toolbar-button-bg-color);box-shadow:var(--toolbar-button-shadow);border:none;color:var(--theme-toggle-color)}.action-btn-view[data-v-05a2ac54]:hover{box-shadow:var(--toolbar-button-shadow-hover);color:var(--el-color-primary)}.history-group[data-v-05a2ac54]{position:relative;padding-left:30px;border-left:2px solid var(--el-border-color-lighter);margin-left:10px;padding-bottom:30px}.history-group[data-v-05a2ac54]:last-child{border-left:2px solid transparent}.timeline-header[data-v-05a2ac54]{display:flex;align-items:center;margin-bottom:20px;position:relative}.timeline-dot[data-v-05a2ac54]{position:absolute;left:-38px;width:14px;height:14px;border-radius:50%;background:var(--el-upload-dragger-uniform-color);box-shadow:0 0 10px var(--el-upload-dragger-uniform-color);z-index:2;box-sizing:border-box}.date-label[data-v-05a2ac54]{font-size:20px;font-weight:700;background:var(--upload-main-title-color);background-size:200% auto;background-clip:text;-webkit-background-clip:text;color:transparent}.load-more-container[data-v-05a2ac54]{display:flex;justify-content:center;padding:20px}.loading-indicator[data-v-05a2ac54]{display:flex;align-items:center;gap:8px;color:var(--el-upload-dragger-uniform-color)}.load-more-hint[data-v-05a2ac54],.no-more-hint[data-v-05a2ac54]{color:var(--upload-text-color);opacity:.5;font-size:14px}.no-more-hint[data-v-05a2ac54]{text-align:center;padding:20px}@media (max-width:768px){.history-header[data-v-05a2ac54]{padding:15px 20px}.header-left h2[data-v-05a2ac54]{font-size:20px}.history-content[data-v-05a2ac54]{padding:15px 20px}.grid-view[data-v-05a2ac54]{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:15px}.grid-preview[data-v-05a2ac54]{height:120px}.list-meta[data-v-05a2ac54]{display:none}.list-info[data-v-05a2ac54]{margin-right:10px}}.page-footer[data-v-08acbaa9]{display:flex;justify-content:center;align-items:center;width:100vw;color:var(--page-footer-text-color);font-size:large;-webkit-user-select:none;-moz-user-select:none;user-select:none}@media (max-width:768px){.page-footer[data-v-08acbaa9]{font-size:small}}.footer-name[data-v-08acbaa9]{color:var(--page-footer-name-color);font-weight:700;text-decoration:none;position:relative;transition:all .3s ease}.footer-name[data-v-08acbaa9]:after{content:"";position:absolute;width:0;height:2px;bottom:-2px;left:0;background-color:var(--page-footer-name-color);transition:width .3s ease-in-out}.footer-name[data-v-08acbaa9]:hover:after{width:100%}.footer-link-icon[data-v-08acbaa9]{color:var(--page-footer-name-color);margin-left:5px;transition:transform .3s ease-in-out}.footer-link-icon[data-v-08acbaa9]:hover{transform:scale(1.2) rotate(-12deg)}.el-input-number{display:inline-flex;line-height:30px;position:relative;vertical-align:middle;width:150px}.el-input-number .el-input__wrapper{padding-left:42px;padding-right:42px}.el-input-number .el-input__inner{-webkit-appearance:none;-moz-appearance:textfield;line-height:1;text-align:center}.el-input-number .el-input__inner::-webkit-inner-spin-button,.el-input-number .el-input__inner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.el-input-number.is-left .el-input__inner{text-align:left}.el-input-number.is-right .el-input__inner{text-align:right}.el-input-number.is-center .el-input__inner{text-align:center}.el-input-number__decrease,.el-input-number__increase{align-items:center;background:var(--el-fill-color-light);bottom:1px;color:var(--el-text-color-regular);cursor:pointer;display:flex;font-size:13px;height:auto;justify-content:center;position:absolute;top:1px;-webkit-user-select:none;user-select:none;width:32px;z-index:1}.el-input-number__decrease:hover,.el-input-number__increase:hover{color:var(--el-color-primary)}.el-input-number__decrease:hover~.el-input:not(.is-disabled) .el-input__wrapper,.el-input-number__increase:hover~.el-input:not(.is-disabled) .el-input__wrapper{box-shadow:0 0 0 1px var(--el-input-focus-border-color,var(--el-color-primary)) inset}.el-input-number__decrease.is-disabled,.el-input-number__increase.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-input-number__increase{border-left:var(--el-border);border-radius:0 var(--el-border-radius-base) var(--el-border-radius-base) 0;right:1px}.el-input-number__decrease{border-radius:var(--el-border-radius-base) 0 0 var(--el-border-radius-base);border-right:var(--el-border);left:1px}.el-input-number.is-disabled .el-input-number__decrease,.el-input-number.is-disabled .el-input-number__increase{border-color:var(--el-disabled-border-color);color:var(--el-disabled-border-color)}.el-input-number.is-disabled .el-input-number__decrease:hover,.el-input-number.is-disabled .el-input-number__increase:hover{color:var(--el-disabled-border-color);cursor:not-allowed}.el-input-number--large{line-height:38px;width:180px}.el-input-number--large .el-input-number__decrease,.el-input-number--large .el-input-number__increase{font-size:14px;width:40px}.el-input-number--large.is-controls-right .el-input--large .el-input__wrapper{padding-right:47px}.el-input-number--large .el-input--large .el-input__wrapper{padding-left:47px;padding-right:47px}.el-input-number--small{line-height:22px;width:120px}.el-input-number--small .el-input-number__decrease,.el-input-number--small .el-input-number__increase{font-size:12px;width:24px}.el-input-number--small.is-controls-right .el-input--small .el-input__wrapper{padding-right:31px}.el-input-number--small .el-input--small .el-input__wrapper{padding-left:31px;padding-right:31px}.el-input-number--small .el-input-number__decrease [class*=el-icon],.el-input-number--small .el-input-number__increase [class*=el-icon]{transform:scale(.9)}.el-input-number.is-without-controls .el-input__wrapper{padding-left:15px;padding-right:15px}.el-input-number.is-controls-right .el-input__wrapper{padding-left:15px;padding-right:42px}.el-input-number.is-controls-right .el-input-number__decrease,.el-input-number.is-controls-right .el-input-number__increase{--el-input-number-controls-height:15px;height:var(--el-input-number-controls-height);line-height:var(--el-input-number-controls-height)}.el-input-number.is-controls-right .el-input-number__decrease [class*=el-icon],.el-input-number.is-controls-right .el-input-number__increase [class*=el-icon]{transform:scale(.8)}.el-input-number.is-controls-right .el-input-number__increase{border-bottom:var(--el-border);border-radius:0 var(--el-border-radius-base) 0 0;bottom:auto;left:auto}.el-input-number.is-controls-right .el-input-number__decrease{border-left:var(--el-border);border-radius:0 0 var(--el-border-radius-base) 0;border-right:none;left:auto;right:1px;top:auto}.el-input-number.is-controls-right[class*=large] [class*=decrease],.el-input-number.is-controls-right[class*=large] [class*=increase]{--el-input-number-controls-height:19px}.el-input-number.is-controls-right[class*=small] [class*=decrease],.el-input-number.is-controls-right[class*=small] [class*=increase]{--el-input-number-controls-height:11px}.el-slider{--el-slider-main-bg-color:var(--el-color-primary);--el-slider-runway-bg-color:var(--el-border-color-light);--el-slider-stop-bg-color:var(--el-color-white);--el-slider-disabled-color:var(--el-text-color-placeholder);--el-slider-border-radius:3px;--el-slider-height:6px;--el-slider-button-size:20px;--el-slider-button-wrapper-size:36px;--el-slider-button-wrapper-offset:-15px;align-items:center;display:flex;height:32px;width:100%}.el-slider__runway{background-color:var(--el-slider-runway-bg-color);border-radius:var(--el-slider-border-radius);cursor:pointer;flex:1;height:var(--el-slider-height);position:relative}.el-slider__runway.show-input{margin-right:30px;width:auto}.el-slider__runway.is-disabled{cursor:default}.el-slider__runway.is-disabled .el-slider__bar{background-color:var(--el-slider-disabled-color)}.el-slider__runway.is-disabled .el-slider__button{border-color:var(--el-slider-disabled-color)}.el-slider__runway.is-disabled .el-slider__button-wrapper.dragging,.el-slider__runway.is-disabled .el-slider__button-wrapper.hover,.el-slider__runway.is-disabled .el-slider__button-wrapper:hover{cursor:not-allowed}.el-slider__runway.is-disabled .el-slider__button.dragging,.el-slider__runway.is-disabled .el-slider__button.hover,.el-slider__runway.is-disabled .el-slider__button:hover{transform:scale(1)}.el-slider__runway.is-disabled .el-slider__button.dragging,.el-slider__runway.is-disabled .el-slider__button.hover,.el-slider__runway.is-disabled .el-slider__button:hover{cursor:not-allowed}.el-slider__input{flex-shrink:0;width:130px}.el-slider__bar{background-color:var(--el-slider-main-bg-color);border-bottom-left-radius:var(--el-slider-border-radius);border-top-left-radius:var(--el-slider-border-radius);height:var(--el-slider-height);position:absolute}.el-slider__button-wrapper{background-color:transparent;height:var(--el-slider-button-wrapper-size);line-height:normal;outline:none;position:absolute;text-align:center;top:var(--el-slider-button-wrapper-offset);transform:translateX(-50%);-webkit-user-select:none;user-select:none;width:var(--el-slider-button-wrapper-size);z-index:1}.el-slider__button-wrapper:after{content:"";display:inline-block;height:100%;vertical-align:middle}.el-slider__button-wrapper.hover,.el-slider__button-wrapper:hover{cursor:grab}.el-slider__button-wrapper.dragging{cursor:grabbing}.el-slider__button{background-color:var(--el-color-white);border:2px solid var(--el-slider-main-bg-color);border-radius:50%;box-sizing:border-box;display:inline-block;height:var(--el-slider-button-size);transition:var(--el-transition-duration-fast);-webkit-user-select:none;user-select:none;vertical-align:middle;width:var(--el-slider-button-size)}.el-slider__button.dragging,.el-slider__button.hover,.el-slider__button:hover{transform:scale(1.2)}.el-slider__button.hover,.el-slider__button:hover{cursor:grab}.el-slider__button.dragging{cursor:grabbing}.el-slider__stop{background-color:var(--el-slider-stop-bg-color);border-radius:var(--el-border-radius-circle);height:var(--el-slider-height);position:absolute;transform:translateX(-50%);width:var(--el-slider-height)}.el-slider__marks{height:100%;left:12px;top:0;width:18px}.el-slider__marks-text{color:var(--el-color-info);font-size:14px;margin-top:15px;position:absolute;transform:translateX(-50%);white-space:pre}.el-slider.is-vertical{display:inline-flex;flex:0;height:100%;position:relative;width:auto}.el-slider.is-vertical .el-slider__runway{height:100%;margin:0 16px;width:var(--el-slider-height)}.el-slider.is-vertical .el-slider__bar{border-radius:0 0 3px 3px;height:auto;width:var(--el-slider-height)}.el-slider.is-vertical .el-slider__button-wrapper{left:var(--el-slider-button-wrapper-offset);top:auto;transform:translateY(50%)}.el-slider.is-vertical .el-slider__stop{transform:translateY(50%)}.el-slider.is-vertical .el-slider__marks-text{left:15px;margin-top:0;transform:translateY(50%)}.el-slider--large{height:40px}.el-slider--small{height:24px}.el-progress{align-items:center;display:flex;line-height:1;position:relative}.el-progress__text{color:var(--el-text-color-regular);font-size:14px;line-height:1;margin-left:5px;min-width:50px}.el-progress__text i{display:block;vertical-align:middle}.el-progress--circle,.el-progress--dashboard{display:inline-block}.el-progress--circle .el-progress__text,.el-progress--dashboard .el-progress__text{left:0;margin:0;position:absolute;text-align:center;top:50%;transform:translateY(-50%);width:100%}.el-progress--circle .el-progress__text i,.el-progress--dashboard .el-progress__text i{display:inline-block;vertical-align:middle}.el-progress--without-text .el-progress__text{display:none}.el-progress--without-text .el-progress-bar{display:block;margin-right:0;padding-right:0}.el-progress--text-inside .el-progress-bar{margin-right:0;padding-right:0}.el-progress.is-success .el-progress-bar__inner{background-color:var(--el-color-success)}.el-progress.is-success .el-progress__text{color:var(--el-color-success)}.el-progress.is-warning .el-progress-bar__inner{background-color:var(--el-color-warning)}.el-progress.is-warning .el-progress__text{color:var(--el-color-warning)}.el-progress.is-exception .el-progress-bar__inner{background-color:var(--el-color-danger)}.el-progress.is-exception .el-progress__text{color:var(--el-color-danger)}.el-progress-bar{box-sizing:border-box;flex-grow:1}.el-progress-bar__outer{background-color:var(--el-border-color-lighter);border-radius:100px;height:6px;overflow:hidden;position:relative;vertical-align:middle}.el-progress-bar__inner{background-color:var(--el-color-primary);border-radius:100px;height:100%;left:0;line-height:1;position:absolute;text-align:right;top:0;transition:width .6s ease;white-space:nowrap}.el-progress-bar__inner:after{content:"";display:inline-block;height:100%;vertical-align:middle}.el-progress-bar__inner--indeterminate{animation:indeterminate 3s infinite;transform:translateZ(0)}.el-progress-bar__inner--striped{background-image:linear-gradient(45deg,rgba(0,0,0,.1) 25%,transparent 0,transparent 50%,rgba(0,0,0,.1) 0,rgba(0,0,0,.1) 75%,transparent 0,transparent);background-size:1.25em 1.25em}.el-progress-bar__inner--striped.el-progress-bar__inner--striped-flow{animation:striped-flow 3s linear infinite}.el-progress-bar__innerText{color:#fff;display:inline-block;font-size:12px;margin:0 5px;vertical-align:middle}@keyframes progress{0%{background-position:0 0}to{background-position:32px 0}}@keyframes indeterminate{0%{left:-100%}to{left:100%}}@keyframes striped-flow{0%{background-position:-100%}to{background-position:100%}}.upload-list-item[data-v-85bdebae]{display:flex;align-items:center;justify-content:space-between;margin:8px 10px;border:1px solid var(--upload-list-item-border-color,rgba(64,158,255,.1));padding:10px 12px;border-radius:16px;background:var(--upload-list-item-bg,linear-gradient(135deg,hsla(0,0%,100%,.9) 0,hsla(0,0%,100%,.7) 100%));backdrop-filter:blur(10px);box-shadow:0 2px 8px var(--upload-list-item-shadow,rgba(0,0,0,.04));transition:all .3s cubic-bezier(.4,0,.2,1)}.upload-list-item[data-v-85bdebae]:hover{border-color:var(--upload-list-item-hover-border,rgba(64,158,255,.25));box-shadow:0 4px 16px var(--upload-list-item-hover-shadow,rgba(64,158,255,.12));transform:translateY(-2px)}.upload-list-item-content[data-v-85bdebae]{display:flex;flex-direction:column;margin-left:10px}.upload-list-item-action[data-v-85bdebae]{display:flex;flex-direction:column;align-items:center;gap:6px}.upload-list-item-url-row[data-v-85bdebae]{display:flex;flex-direction:row;align-items:center;width:38vw;gap:8px;margin-bottom:6px}.upload-list-item-url-row[data-v-85bdebae]:last-child{margin-bottom:0}.upload-list-item-url[data-v-85bdebae]{display:flex;flex-direction:column}.file-icon[data-v-85bdebae]{font-size:30px;color:var(--upload-list-file-icon-color)}.upload-list-item-name-wrapper[data-v-85bdebae]{display:flex;align-items:center;justify-content:center;padding:8px 16px;background:var(--file-name-bg,linear-gradient(135deg,rgba(64,158,255,.08) 0,rgba(64,158,255,.03) 100%));border-radius:10px;margin-bottom:8px;border:1px solid var(--file-name-border,rgba(64,158,255,.12));backdrop-filter:blur(4px);transition:all .3s ease}.upload-list-item-name-wrapper[data-v-85bdebae]:hover{background:var(--file-name-hover-bg,linear-gradient(135deg,rgba(64,158,255,.12) 0,rgba(64,158,255,.06) 100%));border-color:var(--file-name-hover-border,rgba(64,158,255,.2))}.upload-list-item-name[data-v-85bdebae]{font-size:14px;font-weight:600;max-width:28vw;color:var(--el-text-color-primary);letter-spacing:.3px;text-align:center}.upload-list-item-progress[data-v-85bdebae]{margin-top:8px;width:28vw;padding:4px 8px;background:var(--progress-wrapper-bg,linear-gradient(135deg,rgba(64,158,255,.05) 0,rgba(64,158,255,.02) 100%));border-radius:12px;border:1px solid var(--progress-wrapper-border,rgba(64,158,255,.1))}.upload-list-item-progress[data-v-85bdebae] .el-progress{--el-color-primary:#409eff}.upload-list-item-progress[data-v-85bdebae] .el-progress-bar{padding-right:0;margin-right:0}.upload-list-item-progress[data-v-85bdebae] .el-progress-bar__outer{height:10px!important;border-radius:8px;background:var(--progress-outer-bg,linear-gradient(135deg,rgba(0,0,0,.06) 0,rgba(0,0,0,.03) 100%));box-shadow:inset 0 1px 3px rgba(0,0,0,.08);overflow:hidden}.upload-list-item-progress[data-v-85bdebae] .el-progress-bar__inner{border-radius:8px;background:linear-gradient(90deg,#409eff,#66b1ff 50%,#409eff)!important;box-shadow:0 0 12px rgba(64,158,255,.5),0 0 4px rgba(64,158,255,.3),inset 0 1px 0 hsla(0,0%,100%,.3);position:relative;overflow:hidden;transition:width .3s ease}.upload-list-item-progress[data-v-85bdebae] .el-progress-bar__inner:after{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background:linear-gradient(90deg,transparent,hsla(0,0%,100%,.2) 50%,transparent);pointer-events:none}.upload-list-item-progress[data-v-85bdebae] .el-progress-bar__inner:before{content:"";position:absolute;top:0;left:-100%;width:300%;height:100%;background:repeating-linear-gradient(45deg,transparent,transparent 8px,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 16px);animation:progressStripes-85bdebae 1s linear infinite}.upload-list-item-progress[data-v-85bdebae] .el-progress--success .el-progress-bar__inner{background:linear-gradient(90deg,#67c23a,#85ce61 25%,#95d475 50%,#85ce61 75%,#67c23a)!important;background-size:200% 100%;box-shadow:0 0 12px rgba(103,194,58,.5),0 0 4px rgba(103,194,58,.3),inset 0 1px 0 hsla(0,0%,100%,.3);animation:none}.upload-list-item-progress[data-v-85bdebae] .el-progress--success .el-progress-bar__inner:after,.upload-list-item-progress[data-v-85bdebae] .el-progress--success .el-progress-bar__inner:before{animation:none;background:none}.upload-list-item-progress[data-v-85bdebae] .el-progress--exception .el-progress-bar__inner{background:linear-gradient(90deg,#f56c6c,#f78989 25%,#f9a7a7 50%,#f78989 75%,#f56c6c)!important;background-size:200% 100%;box-shadow:0 0 12px hsla(0,87%,69%,.5),0 0 4px hsla(0,87%,69%,.3),inset 0 1px 0 hsla(0,0%,100%,.3);animation:progressPulse-85bdebae 1s ease-in-out infinite}.upload-list-item-progress[data-v-85bdebae] .el-progress--exception .el-progress-bar__inner:before{animation:none;background:none}@keyframes progressStripes-85bdebae{0%{transform:translateX(0)}to{transform:translateX(22.627px)}}@keyframes progressPulse-85bdebae{0%,to{opacity:1}50%{opacity:.7}}.upload-list-item-url[data-v-85bdebae] .el-input{transition:all .3s cubic-bezier(.4,0,.2,1)}.upload-list-item-url[data-v-85bdebae] .el-input:hover{transform:translateY(-1px)}.upload-list-item-url[data-v-85bdebae] .el-input__wrapper{border-radius:10px;box-shadow:0 1px 3px rgba(0,0,0,.08);transition:all .3s cubic-bezier(.4,0,.2,1);background:var(--el-fill-color-blank);border:1px solid var(--el-border-color-lighter);overflow:hidden;position:relative;padding:0}.upload-list-item-url[data-v-85bdebae] .el-input-group>.el-input__wrapper{border-radius:0 9px 9px 0!important}.upload-list-item-url[data-v-85bdebae] .el-input__wrapper:hover{box-shadow:0 2px 8px rgba(0,0,0,.12);border-color:var(--el-color-primary-light-5)}.upload-list-item-url[data-v-85bdebae] .el-input__wrapper.is-focus{box-shadow:0 0 0 2px var(--el-color-primary-light-8),0 4px 12px rgba(0,0,0,.15);border-color:var(--el-color-primary)}.upload-list-item-url[data-v-85bdebae] .el-input__wrapper.is-focus:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(64,158,255,.08),transparent);animation:shimmer-85bdebae 2s infinite;z-index:0}@keyframes shimmer-85bdebae{0%{left:-100%}to{left:100%}}.upload-list-item-url[data-v-85bdebae] .el-input__inner{font-size:13px;font-family:Courier New,Monaco,monospace;color:var(--el-text-color-regular);transition:all .3s ease;padding-left:12px;position:relative;z-index:1;border-radius:0 10px 10px 0}.upload-list-item-url[data-v-85bdebae] .el-input__inner::-moz-selection{background-color:var(--el-color-primary-light-7)}.upload-list-item-url[data-v-85bdebae] .el-input__inner::selection{background-color:var(--el-color-primary-light-7)}.upload-list-item-url[data-v-85bdebae] .el-input-group__prepend{background:var(--el-color-primary-light-9);color:var(--el-color-primary);font-weight:600;font-size:12px;border:none;padding:0 14px;margin:0;border-radius:9px 0 0 9px;box-shadow:none;transition:all .3s ease;letter-spacing:.5px;position:relative;z-index:1}.upload-list-item-url[data-v-85bdebae] .el-input-group__prepend:after{content:"";position:absolute;right:0;top:50%;transform:translateY(-50%);height:60%;width:1px;background:var(--el-color-primary-light-7);opacity:.3;transition:all .3s ease}.upload-list-item-url[data-v-85bdebae] .el-input:hover .el-input-group__prepend{background:var(--el-color-primary-light-8)}.upload-list-item-url[data-v-85bdebae] .el-input:hover .el-input-group__prepend:after{opacity:.5}.upload-list-item-url[data-v-85bdebae] .el-input.is-focus .el-input-group__prepend{background:var(--el-color-primary);color:#fff;animation:prependPulse-85bdebae 2s ease-in-out infinite}.upload-list-item-url[data-v-85bdebae] .el-input.is-focus .el-input-group__prepend:after{background:hsla(0,0%,100%,.3);opacity:1}@keyframes prependPulse-85bdebae{0%,to{opacity:1}50%{opacity:.95}}.modern-file-action-btn[data-v-85bdebae]{display:flex;align-items:center;justify-content:center;width:30px;height:30px;border:none;border-radius:12px;cursor:pointer;transition:all .3s cubic-bezier(.4,0,.2,1);font-size:16px;position:relative;overflow:hidden;margin:4px 0}.modern-file-action-btn[data-v-85bdebae]:before{content:"";position:absolute;top:50%;left:50%;width:0;height:0;background:hsla(0,0%,100%,.3);border-radius:50%;transform:translate(-50%,-50%);transition:width .4s ease,height .4s ease}.modern-file-action-btn[data-v-85bdebae]:active:before{width:100%;height:100%}.modern-file-action-btn-primary[data-v-85bdebae]{background:var(--file-action-primary-bg,linear-gradient(145deg,#409eff 0,#53a8ff 50%,#66b1ff 100%));color:#fff;box-shadow:0 3px 10px rgba(64,158,255,.3),inset 0 1px 0 hsla(0,0%,100%,.2)}.modern-file-action-btn-primary[data-v-85bdebae]:hover{transform:translateY(-3px) scale(1.08);box-shadow:0 6px 20px rgba(64,158,255,.45),inset 0 1px 0 hsla(0,0%,100%,.25)}.modern-file-action-btn-primary[data-v-85bdebae]:active{transform:translateY(-1px) scale(1.02)}.modern-file-action-btn-danger[data-v-85bdebae]{background:var(--file-action-danger-bg,linear-gradient(145deg,#f56c6c 0,#f78989 50%,#f9a7a7 100%));color:#fff;box-shadow:0 3px 10px hsla(0,87%,69%,.3),inset 0 1px 0 hsla(0,0%,100%,.2)}.modern-file-action-btn-danger[data-v-85bdebae]:hover{transform:translateY(-3px) scale(1.08);box-shadow:0 6px 20px hsla(0,87%,69%,.45),inset 0 1px 0 hsla(0,0%,100%,.25)}.modern-file-action-btn-danger[data-v-85bdebae]:active{transform:translateY(-1px) scale(1.02)}@media (max-width:768px){.upload-list-item-content[data-v-85bdebae]{margin-left:2px}.upload-list-item-url-row[data-v-85bdebae]{width:42vw;flex-direction:column;gap:6px}.upload-list-item-progress[data-v-85bdebae]{width:32vw;padding:3px 6px}.upload-list-item-progress[data-v-85bdebae] .el-progress-bar__outer{height:8px!important}.upload-list-item-url[data-v-85bdebae] .el-input__wrapper{border-radius:8px}.upload-list-item-url[data-v-85bdebae] .el-input__inner{font-size:12px}.upload-list-item-url[data-v-85bdebae] .el-input-group__prepend{font-size:11px;padding:0 8px;border-radius:8px 0 0 8px}.modern-file-action-btn[data-v-85bdebae]{width:34px;height:34px;border-radius:10px;font-size:14px}.upload-list-item-name-wrapper[data-v-85bdebae]{padding:4px 10px;border-radius:8px}.upload-list-item-name[data-v-85bdebae]{font-size:12px;width:32vw}}.el-radio-button{--el-radio-button-checked-bg-color:var(--el-color-primary);--el-radio-button-checked-text-color:var(--el-color-white);--el-radio-button-checked-border-color:var(--el-color-primary);--el-radio-button-disabled-checked-fill:var(--el-border-color-extra-light);display:inline-block;outline:none;position:relative}.el-radio-button__inner{-webkit-appearance:none;background:var(--el-button-bg-color,var(--el-fill-color-blank));border-radius:0;box-sizing:border-box;color:var(--el-button-text-color,var(--el-text-color-regular));cursor:pointer;display:inline-block;font-size:var(--el-font-size-base);font-weight:var(--el-button-font-weight,var(--el-font-weight-primary));line-height:1;margin:0;outline:var(--el-border);padding:8px 15px;position:relative;text-align:center;transition:var(--el-transition-all);-webkit-user-select:none;user-select:none;vertical-align:middle;white-space:nowrap}.el-radio-button__inner.is-round{padding:8px 15px}.el-radio-button__inner:hover{color:var(--el-color-primary)}.el-radio-button__inner [class*=el-icon-]{line-height:.9}.el-radio-button__inner [class*=el-icon-]+span{margin-left:5px}.el-radio-button:first-child .el-radio-button__inner{border-radius:var(--el-border-radius-base) 0 0 var(--el-border-radius-base);box-shadow:none!important}.el-radio-button.is-active .el-radio-button__original-radio:not(:disabled)+.el-radio-button__inner{background-color:var(--el-radio-button-checked-bg-color,var(--el-color-primary));border-color:var(--el-radio-button-checked-border-color,var(--el-color-primary));box-shadow:-1px 0 0 0 var(--el-radio-button-checked-border-color,var(--el-color-primary));color:var(--el-radio-button-checked-text-color,var(--el-color-white))}.el-radio-button__original-radio{opacity:0;outline:none;position:absolute;z-index:-1}.el-radio-button__original-radio:focus-visible+.el-radio-button__inner{border-left:var(--el-border);border-left-color:var(--el-radio-button-checked-border-color,var(--el-color-primary));border-radius:var(--el-border-radius-base);box-shadow:none;outline:2px solid var(--el-radio-button-checked-border-color);outline-offset:1px;z-index:2}.el-radio-button__original-radio:disabled+.el-radio-button__inner{background-color:var(--el-button-disabled-bg-color,var(--el-fill-color-blank));background-image:none;border-color:var(--el-button-disabled-border-color,var(--el-border-color-light));box-shadow:none;color:var(--el-disabled-text-color);cursor:not-allowed}.el-radio-button__original-radio:disabled:checked+.el-radio-button__inner{background-color:var(--el-radio-button-disabled-checked-fill)}.el-radio-button:last-child .el-radio-button__inner{border-radius:0 var(--el-border-radius-base) var(--el-border-radius-base) 0}.el-radio-button:first-child:last-child .el-radio-button__inner{border-radius:var(--el-border-radius-base)}.el-radio-button--large .el-radio-button__inner{border-radius:0;font-size:var(--el-font-size-base);padding:12px 19px}.el-radio-button--large .el-radio-button__inner.is-round{padding:12px 19px}.el-radio-button--small .el-radio-button__inner{border-radius:0;font-size:12px;padding:5px 11px}.el-radio-button--small .el-radio-button__inner.is-round{padding:5px 11px}.el-upload{--el-upload-dragger-padding-horizontal:10px;--el-upload-dragger-padding-vertical:40px;--el-upload-list-picture-card-size:var(--el-upload-picture-card-size);--el-upload-picture-card-size:148px;align-items:center;cursor:pointer;display:inline-flex;justify-content:center;outline:none}.el-upload.is-disabled{cursor:not-allowed}.el-upload.is-disabled:focus{color:inherit}.el-upload.is-disabled:focus,.el-upload.is-disabled:focus .el-upload-dragger{border-color:var(--el-border-color-darker)}.el-upload.is-disabled .el-upload-dragger{background-color:var(--el-disabled-bg-color);cursor:not-allowed}.el-upload.is-disabled .el-upload-dragger .el-upload__text{color:var(--el-text-color-placeholder)}.el-upload.is-disabled .el-upload-dragger .el-upload__text em{color:var(--el-disabled-text-color)}.el-upload.is-disabled .el-upload-dragger:hover{border-color:var(--el-border-color-darker)}.el-upload__input{display:none}.el-upload__tip{color:var(--el-text-color-regular);font-size:12px;margin-top:7px}.el-upload iframe{filter:alpha(opacity=0);left:0;opacity:0;position:absolute;top:0;z-index:-1}.el-upload--picture-card{align-items:center;background-color:var(--el-fill-color-lighter);border:1px dashed var(--el-border-color-darker);border-radius:6px;box-sizing:border-box;cursor:pointer;display:inline-flex;height:var(--el-upload-picture-card-size);justify-content:center;vertical-align:top;width:var(--el-upload-picture-card-size)}.el-upload--picture-card>i{color:var(--el-text-color-secondary);font-size:28px}.el-upload--picture-card:hover{border-color:var(--el-color-primary);color:var(--el-color-primary)}.el-upload.is-drag{display:block}.el-upload:focus{color:var(--el-color-primary)}.el-upload:focus,.el-upload:focus .el-upload-dragger{border-color:var(--el-color-primary)}.el-upload-dragger{background-color:var(--el-fill-color-blank);border:1px dashed var(--el-border-color);border-radius:6px;box-sizing:border-box;cursor:pointer;overflow:hidden;padding:var(--el-upload-dragger-padding-vertical) var(--el-upload-dragger-padding-horizontal);position:relative;text-align:center}.el-upload-dragger .el-icon--upload{color:var(--el-text-color-placeholder);font-size:67px;line-height:50px;margin-bottom:16px}.el-upload-dragger+.el-upload__tip{text-align:center}.el-upload-dragger~.el-upload__files{border-top:var(--el-border);margin-top:7px;padding-top:5px}.el-upload-dragger .el-upload__text{color:var(--el-text-color-regular);font-size:14px;text-align:center}.el-upload-dragger .el-upload__text em{color:var(--el-color-primary);font-style:normal}.el-upload-dragger:hover{border-color:var(--el-color-primary)}.el-upload-dragger.is-dragover{background-color:var(--el-color-primary-light-9);border:2px dashed var(--el-color-primary);padding:calc(var(--el-upload-dragger-padding-vertical) - 1px) calc(var(--el-upload-dragger-padding-horizontal) - 1px)}.el-upload-list{--el-upload-dragger-padding-horizontal:10px;--el-upload-dragger-padding-vertical:40px;--el-upload-list-picture-card-size:var(--el-upload-picture-card-size);--el-upload-picture-card-size:148px;list-style:none;margin:10px 0 0;padding:0;position:relative}.el-upload-list__item{border-radius:4px;box-sizing:border-box;color:var(--el-text-color-regular);font-size:14px;margin-bottom:5px;position:relative;transition:all .5s cubic-bezier(.55,0,.1,1);width:100%}.el-upload-list__item .el-progress{position:absolute;top:20px;width:100%}.el-upload-list__item .el-progress__text{position:absolute;right:0;top:-13px}.el-upload-list__item .el-progress-bar{margin-right:0;padding-right:0}.el-upload-list__item .el-icon--upload-success{color:var(--el-color-success)}.el-upload-list__item .el-icon--close{color:var(--el-text-color-regular);cursor:pointer;display:none;opacity:.75;position:absolute;right:5px;top:50%;transform:translateY(-50%);transition:opacity var(--el-transition-duration)}.el-upload-list__item .el-icon--close:hover{color:var(--el-color-primary);opacity:1}.el-upload-list__item .el-icon--close-tip{color:var(--el-color-primary);cursor:pointer;display:none;font-size:12px;font-style:normal;opacity:1;position:absolute;right:5px;top:1px}.el-upload-list__item:hover{background-color:var(--el-fill-color-light)}.el-upload-list__item:hover .el-icon--close{display:inline-flex}.el-upload-list__item:hover .el-progress__text{display:none}.el-upload-list__item .el-upload-list__item-info{display:inline-flex;flex-direction:column;justify-content:center;margin-left:4px;width:calc(100% - 30px)}.el-upload-list__item.is-success .el-upload-list__item-status-label{display:inline-flex}.el-upload-list__item.is-success .el-upload-list__item-name:focus,.el-upload-list__item.is-success .el-upload-list__item-name:hover{color:var(--el-color-primary);cursor:pointer}.el-upload-list__item.is-success:focus:not(:hover) .el-icon--close-tip{display:inline-block}.el-upload-list__item.is-success:active,.el-upload-list__item.is-success:not(.focusing):focus{outline-width:0}.el-upload-list__item.is-success:active .el-icon--close-tip,.el-upload-list__item.is-success:not(.focusing):focus .el-icon--close-tip{display:none}.el-upload-list__item.is-success:focus .el-upload-list__item-status-label,.el-upload-list__item.is-success:hover .el-upload-list__item-status-label{display:none;opacity:0}.el-upload-list__item-name{align-items:center;color:var(--el-text-color-regular);display:inline-flex;font-size:var(--el-font-size-base);padding:0 4px;text-align:center;transition:color var(--el-transition-duration)}.el-upload-list__item-name .el-icon{color:var(--el-text-color-secondary);margin-right:6px}.el-upload-list__item-file-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.el-upload-list__item-status-label{align-items:center;display:none;height:100%;justify-content:center;line-height:inherit;position:absolute;right:5px;top:0;transition:opacity var(--el-transition-duration)}.el-upload-list__item-delete{color:var(--el-text-color-regular);display:none;font-size:12px;position:absolute;right:10px;top:0}.el-upload-list__item-delete:hover{color:var(--el-color-primary)}.el-upload-list--picture-card{display:inline-flex;flex-wrap:wrap;margin:0}.el-upload-list--picture-card .el-upload-list__item{background-color:var(--el-fill-color-blank);border:1px solid var(--el-border-color);border-radius:6px;box-sizing:border-box;display:inline-flex;height:var(--el-upload-list-picture-card-size);margin:0 8px 8px 0;overflow:hidden;padding:0;width:var(--el-upload-list-picture-card-size)}.el-upload-list--picture-card .el-upload-list__item .el-icon--check,.el-upload-list--picture-card .el-upload-list__item .el-icon--circle-check{color:#fff}.el-upload-list--picture-card .el-upload-list__item .el-icon--close{display:none}.el-upload-list--picture-card .el-upload-list__item:hover .el-upload-list__item-status-label{display:block;opacity:0}.el-upload-list--picture-card .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture-card .el-upload-list__item .el-upload-list__item-name{display:none}.el-upload-list--picture-card .el-upload-list__item-thumbnail{height:100%;object-fit:contain;width:100%}.el-upload-list--picture-card .el-upload-list__item-status-label{background:var(--el-color-success);height:24px;right:-15px;text-align:center;top:-6px;transform:rotate(45deg);width:40px}.el-upload-list--picture-card .el-upload-list__item-status-label i{font-size:12px;margin-top:11px;transform:rotate(-45deg)}.el-upload-list--picture-card .el-upload-list__item-actions{align-items:center;background-color:var(--el-overlay-color-lighter);color:#fff;cursor:default;display:inline-flex;font-size:20px;height:100%;justify-content:center;left:0;opacity:0;position:absolute;top:0;transition:opacity var(--el-transition-duration);width:100%}.el-upload-list--picture-card .el-upload-list__item-actions span{cursor:pointer;display:none}.el-upload-list--picture-card .el-upload-list__item-actions span+span{margin-left:16px}.el-upload-list--picture-card .el-upload-list__item-actions .el-upload-list__item-delete{color:inherit;font-size:inherit;position:static}.el-upload-list--picture-card .el-upload-list__item-actions:hover{opacity:1}.el-upload-list--picture-card .el-upload-list__item-actions:hover span{display:inline-flex}.el-upload-list--picture-card .el-progress{bottom:auto;left:50%;top:50%;transform:translate(-50%,-50%);width:126px}.el-upload-list--picture-card .el-progress .el-progress__text{top:50%}.el-upload-list--picture .el-upload-list__item{align-items:center;background-color:var(--el-fill-color-blank);border:1px solid var(--el-border-color);border-radius:6px;box-sizing:border-box;display:flex;margin-top:10px;overflow:hidden;padding:10px;z-index:0}.el-upload-list--picture .el-upload-list__item .el-icon--check,.el-upload-list--picture .el-upload-list__item .el-icon--circle-check{color:#fff}.el-upload-list--picture .el-upload-list__item:hover .el-upload-list__item-status-label{display:inline-flex;opacity:0}.el-upload-list--picture .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name i{display:none}.el-upload-list--picture .el-upload-list__item .el-icon--close{top:5px;transform:translateY(0)}.el-upload-list--picture .el-upload-list__item-thumbnail{align-items:center;background-color:var(--el-color-white);display:inline-flex;height:70px;justify-content:center;object-fit:contain;position:relative;width:70px;z-index:1}.el-upload-list--picture .el-upload-list__item-status-label{background:var(--el-color-success);height:26px;position:absolute;right:-17px;text-align:center;top:-7px;transform:rotate(45deg);width:46px}.el-upload-list--picture .el-upload-list__item-status-label i{font-size:12px;margin-top:12px;transform:rotate(-45deg)}.el-upload-list--picture .el-progress{position:relative;top:-7px}.el-upload-cover{cursor:default;height:100%;left:0;overflow:hidden;position:absolute;top:0;width:100%;z-index:10}.el-upload-cover:after{content:"";display:inline-block;height:100%;vertical-align:middle}.el-upload-cover img{display:block;height:100%;width:100%}.el-upload-cover__label{background:var(--el-color-success);height:24px;right:-15px;text-align:center;top:-6px;transform:rotate(45deg);width:40px}.el-upload-cover__label i{color:#fff;font-size:12px;margin-top:11px;transform:rotate(-45deg)}.el-upload-cover__progress{display:inline-block;position:static;vertical-align:middle;width:243px}.el-upload-cover__progress+.el-upload__inner{opacity:0}.el-upload-cover__content{height:100%;left:0;position:absolute;top:0;width:100%}.el-upload-cover__interact{background-color:var(--el-overlay-color-light);bottom:0;height:100%;left:0;position:absolute;text-align:center;width:100%}.el-upload-cover__interact .btn{color:#fff;cursor:pointer;display:inline-block;font-size:14px;margin-top:60px;transition:var(--el-transition-md-fade);vertical-align:middle}.el-upload-cover__interact .btn i{margin-top:0}.el-upload-cover__interact .btn span{opacity:0;transition:opacity .15s linear}.el-upload-cover__interact .btn:not(:first-child){margin-left:35px}.el-upload-cover__interact .btn:hover{transform:translateY(-13px)}.el-upload-cover__interact .btn:hover span{opacity:1}.el-upload-cover__interact .btn i{color:#fff;display:block;font-size:24px;line-height:inherit;margin:0 auto 5px}.el-upload-cover__title{background-color:#fff;bottom:0;color:var(--el-text-color-primary);font-size:14px;font-weight:400;height:36px;left:0;line-height:36px;margin:0;overflow:hidden;padding:0 10px;position:absolute;text-align:left;text-overflow:ellipsis;white-space:nowrap;width:100%}.el-upload-cover+.el-upload__inner{opacity:0;position:relative;z-index:1}@property --border-angle{syntax:"";initial-value:0deg;inherits:false}@keyframes borderRotate-a12d47f4{0%{--border-angle:0deg}to{--border-angle:360deg}}.upload-form[data-v-a12d47f4],.upload-list-card[data-v-a12d47f4]{display:flex;flex-direction:column;justify-content:center;align-items:center}.upload-list-card[data-v-a12d47f4]{width:55vw;height:7vh;margin-top:10px;border-radius:15px;background-color:var(--upload-list-card-bg-color);backdrop-filter:blur(10px);border:var(--upload-list-card-border);box-shadow:var(--upload-list-card-box-shadow)!important;transition:height .3s ease;overflow:hidden}.upload-list-card[data-v-a12d47f4] .el-card__body{padding:0;width:100%;overflow:hidden}.upload-list-container[data-v-a12d47f4]{width:55vw;height:7vh;transition:height .3s ease;overflow:hidden}@media (max-width:768px){.upload-list-card[data-v-a12d47f4],.upload-list-container[data-v-a12d47f4]{width:70vw}}.upload-list-card.upload-list-busy[data-v-a12d47f4],.upload-list-container.upload-list-busy[data-v-a12d47f4]{height:40vh}.upload-list-card.is-uploading[data-v-a12d47f4]{border:1px solid var(--el-upload-dragger-uniform-color,#409eff)!important;box-shadow:0 0 20px color-mix(in srgb,var(--el-upload-dragger-uniform-color,#409eff) 30%,transparent),0 0 40px color-mix(in srgb,var(--el-upload-dragger-uniform-color,#409eff) 15%,transparent),inset 0 0 20px color-mix(in srgb,var(--el-upload-dragger-uniform-color,#409eff) 8%,transparent)!important}.upload-card-wrapper[data-v-a12d47f4]{position:relative;overflow:visible}.upload-card-glow[data-v-a12d47f4]{position:absolute;width:200px;height:200px;border-radius:50%;background:radial-gradient(circle,rgba(96,165,250,.2) 0,transparent 70%);pointer-events:none;transform:translate(-50%,-50%);opacity:0;transition:opacity .3s ease;z-index:10}.upload-card[data-v-a12d47f4]{width:55vw;padding:20px;background:none}@media (max-width:768px){.upload-card[data-v-a12d47f4]{width:70vw}}.upload-card-busy[data-v-a12d47f4] .el-upload-dragger{height:17vh}[data-v-a12d47f4] .el-upload-dragger{display:flex;flex-direction:column;justify-content:center;align-items:center;height:45vh;border-radius:15px;border:var(--el-upload-dragger-border);opacity:.7;background-color:var(--el-upload-dragger-bg-color);backdrop-filter:blur(10px);transition:all .3s ease}[data-v-a12d47f4] .el-upload:focus .el-upload-dragger{border-color:var(--el-upload-dragger-border-color)}[data-v-a12d47f4] .el-upload-dragger.is-dragover,[data-v-a12d47f4] .el-upload-dragger:hover{opacity:.8;box-shadow:var(--el-upload-dragger-hover-box-shadow)}.is-uploading[data-v-a12d47f4] .el-upload-dragger{border-color:transparent!important}.upload-card.is-uploading[data-v-a12d47f4]{position:relative;background:none}.upload-card.is-uploading[data-v-a12d47f4]:before{content:"";position:absolute;top:20px;left:20px;right:20px;bottom:20px;border-radius:15px;padding:2px;background:conic-gradient(from var(--border-angle),transparent 0deg,transparent 30deg,var(--el-upload-dragger-uniform-color,#409eff) 60deg,color-mix(in srgb,var(--el-upload-dragger-uniform-color,#409eff) 70%,#fff) 90deg,transparent 120deg,transparent 180deg,color-mix(in srgb,var(--el-upload-dragger-uniform-color,#409eff) 70%,#fff) 210deg,var(--el-upload-dragger-uniform-color,#409eff) 240deg,transparent 270deg,transparent 1turn);-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;animation:borderRotate-a12d47f4 2s linear infinite;pointer-events:none;z-index:1}.el-upload__text[data-v-a12d47f4]{font-weight:700;font-size:medium;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:all .3s ease}@media (max-width:768px){.el-upload__text[data-v-a12d47f4]{font-size:small}}.el-upload__text.upload-list-busy[data-v-a12d47f4]{font-size:small}.el-icon--upload[data-v-a12d47f4]{font-size:100px;transition:font-size .3s ease;color:var(--el-icon--upload-color)}.el-icon--upload.upload-list-busy[data-v-a12d47f4]{font-size:60px}@media (max-width:768px){.el-icon--upload[data-v-a12d47f4]{font-size:50px}.el-icon--upload.upload-list-busy[data-v-a12d47f4]{font-size:30px}}.paste-card[data-v-a12d47f4]{display:flex;flex-direction:column;justify-content:center;align-items:center;height:45vh;border-radius:15px;border:var(--el-upload-dragger-border);box-shadow:none;opacity:.7;background-color:var(--el-upload-dragger-bg-color);backdrop-filter:blur(10px);transition:all .3s ease;box-sizing:border-box}.paste-card[data-v-a12d47f4]:hover{opacity:.8;box-shadow:var(--el-upload-dragger-hover-box-shadow)}.paste-card.is-uploading[data-v-a12d47f4]{position:relative;border-color:transparent!important;overflow:visible}.paste-card.is-uploading[data-v-a12d47f4]:before{content:"";position:absolute;inset:-4px;border-radius:15px;padding:2px;background:conic-gradient(from var(--border-angle),transparent 0deg,transparent 30deg,var(--el-upload-dragger-uniform-color,#409eff) 60deg,color-mix(in srgb,var(--el-upload-dragger-uniform-color,#409eff) 70%,#fff) 90deg,transparent 120deg,transparent 180deg,color-mix(in srgb,var(--el-upload-dragger-uniform-color,#409eff) 70%,#fff) 210deg,var(--el-upload-dragger-uniform-color,#409eff) 240deg,transparent 270deg,transparent 1turn);-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;animation:borderRotate-a12d47f4 2s linear infinite;pointer-events:none;z-index:1}.paste-card[data-v-a12d47f4] .el-card__body{padding:0;width:100%;height:100%;display:flex;flex-direction:column;justify-content:center;align-items:center}.upload-card-busy.paste-card[data-v-a12d47f4]{height:17vh}.upload-card-textarea[data-v-a12d47f4]{width:50vw;height:70%;border-radius:16px;background:var(--textarea-bg,linear-gradient(135deg,rgba(64,158,255,.03) 0,rgba(64,158,255,.01) 100%));backdrop-filter:blur(12px);transition:all .3s cubic-bezier(.4,0,.2,1);box-sizing:border-box;display:flex;position:relative}.upload-card-busy .upload-card-textarea[data-v-a12d47f4]{height:50%}.upload-card-textarea[data-v-a12d47f4]:before{content:"";position:absolute;inset:-1px;border-radius:17px;padding:1px;background:linear-gradient(135deg,rgba(64,158,255,.3),rgba(64,158,255,.1) 50%,rgba(64,158,255,.3));-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none;opacity:.6;transition:opacity .3s ease}.upload-card-textarea[data-v-a12d47f4]:hover:before{opacity:1}.upload-card-textarea[data-v-a12d47f4]:focus-within:before{opacity:1;background:linear-gradient(135deg,rgba(64,158,255,.6),rgba(64,158,255,.2) 50%,rgba(64,158,255,.6))}[data-v-a12d47f4] .el-textarea__inner{border-radius:16px;background:var(--textarea-inner-bg,rgba(0,0,0,.02));backdrop-filter:blur(12px);transition:all .3s cubic-bezier(.4,0,.2,1);resize:none;border:1px solid transparent;padding:16px 20px;font-size:14px;line-height:1.6;color:var(--el-text-color-primary)}[data-v-a12d47f4] .el-textarea__inner::-moz-placeholder{color:var(--el-text-color-placeholder);font-weight:400;opacity:.7}[data-v-a12d47f4] .el-textarea__inner::placeholder{color:var(--el-text-color-placeholder);font-weight:400;opacity:.7}[data-v-a12d47f4] .el-textarea__inner:hover{background:var(--textarea-inner-hover-bg,rgba(64,158,255,.03))}[data-v-a12d47f4] .el-textarea__inner:focus{border-color:transparent;box-shadow:0 0 0 3px rgba(64,158,255,.15),0 4px 20px rgba(64,158,255,.1),inset 0 1px 3px rgba(0,0,0,.05);background:var(--textarea-inner-focus-bg,rgba(64,158,255,.02))}.upload-card-textarea[data-v-a12d47f4] ::-webkit-scrollbar{width:6px;height:6px}.upload-card-textarea[data-v-a12d47f4] ::-webkit-scrollbar-track{background:transparent;border-radius:6px;margin:8px}.upload-card-textarea[data-v-a12d47f4] ::-webkit-scrollbar-thumb{background:linear-gradient(180deg,rgba(64,158,255,.4),rgba(64,158,255,.6));border-radius:6px;-webkit-transition:background .3s ease;transition:background .3s ease}.upload-card-textarea[data-v-a12d47f4] ::-webkit-scrollbar-thumb:hover{background:linear-gradient(180deg,rgba(64,158,255,.6),rgba(64,158,255,.8))}.paste-card-actions[data-v-a12d47f4]{display:flex;justify-content:space-between;align-items:center;width:50vw;margin-top:3%}.paste-card-upload-button[data-v-a12d47f4]{min-width:100px;height:42px;border-radius:14px!important;font-weight:600;font-size:15px;letter-spacing:2px;background:linear-gradient(135deg,#409eff,#66b1ff)!important;border:none!important;box-shadow:0 4px 15px rgba(64,158,255,.35),inset 0 1px 0 hsla(0,0%,100%,.2);transition:all .3s cubic-bezier(.4,0,.2,1)!important;position:relative;overflow:hidden}.paste-card-upload-button[data-v-a12d47f4]:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,hsla(0,0%,100%,.25),transparent);transition:left .6s ease}.paste-card-upload-button[data-v-a12d47f4]:hover{transform:translateY(-3px) scale(1.02);box-shadow:0 8px 25px rgba(64,158,255,.45),inset 0 1px 0 hsla(0,0%,100%,.25)}.paste-card-upload-button[data-v-a12d47f4]:hover:before{left:100%}.paste-card-upload-button[data-v-a12d47f4]:active{transform:translateY(-1px) scale(.98)}.upload-card-busy .paste-card-upload-button[data-v-a12d47f4]{min-width:70px;height:32px;border-radius:10px!important;font-size:13px;letter-spacing:1px}.upload-card-busy .paste-card-actions[data-v-a12d47f4]{margin-top:2%}.paste-card-method-group[data-v-a12d47f4]{background:var(--paste-method-group-bg,rgba(64,158,255,.08));border-radius:14px;padding:4px;border:1px solid var(--paste-method-group-border,rgba(64,158,255,.15))}.paste-card-method-group[data-v-a12d47f4] .el-radio-button__inner{transition:all .3s cubic-bezier(.4,0,.2,1);border-radius:10px!important;border:none!important;background:transparent;font-weight:500;padding:10px 20px;color:var(--el-text-color-regular)}.paste-card-method-group[data-v-a12d47f4] .el-radio-button:first-child .el-radio-button__inner,.paste-card-method-group[data-v-a12d47f4] .el-radio-button:last-child .el-radio-button__inner{border-radius:10px!important}.paste-card-method-group[data-v-a12d47f4] .el-radio-button__inner:hover{background:var(--paste-method-hover-bg,rgba(64,158,255,.12));color:var(--el-color-primary)}.paste-card-method-group[data-v-a12d47f4] .el-radio-button__original-radio:checked+.el-radio-button__inner{background:linear-gradient(135deg,#409eff,#66b1ff)!important;color:#fff!important;box-shadow:0 3px 10px rgba(64,158,255,.35)}@media (max-width:768px){.paste-card[data-v-a12d47f4]{height:auto;min-height:30vh;padding:6px;border-radius:12px}.upload-card-busy.paste-card[data-v-a12d47f4]{height:auto;min-height:18vh;padding:5px}.upload-card-textarea[data-v-a12d47f4]{margin-top:4px;width:calc(100% - 4px)!important}.upload-card-textarea[data-v-a12d47f4]:before{border-radius:11px}[data-v-a12d47f4] .el-textarea__inner{border-radius:10px;padding:8px 10px;font-size:12px}.paste-card-actions[data-v-a12d47f4]{width:100%!important;margin-top:6px;gap:6px}.paste-card-upload-button[data-v-a12d47f4]{height:30px;min-width:55px;border-radius:8px!important;font-size:12px;letter-spacing:.5px;padding:0 10px}.paste-card-method-group[data-v-a12d47f4]{border-radius:8px;padding:2px;height:30px;display:flex;align-items:center}.paste-card-method-group[data-v-a12d47f4] .el-radio-button__inner{padding:4px 10px;font-size:11px;border-radius:6px!important;height:26px;display:flex;align-items:center}}.upload-list-dashboard[data-v-a12d47f4]{display:flex;justify-content:space-between;align-items:center;height:7vh;padding:0 15px;position:sticky;top:0;z-index:1;border-radius:15px;transition:all .3s ease}.upload-list-dashboard.list-scrolled[data-v-a12d47f4]{background-color:var(--upload-list-dashboard-bg-color);box-shadow:var(--upload-list-dashboard-shadow)}[data-v-a12d47f4] .el-upload-dragger{position:relative;overflow:hidden}[data-v-a12d47f4] .el-upload-dragger:before{background-image:radial-gradient(2px 2px at 10% 10%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2px 2px at 20% 30%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2px 2px at 30% 10%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2px 2px at 40% 30%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2px 2px at 50% 10%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2px 2px at 60% 30%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2px 2px at 70% 10%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2px 2px at 80% 30%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2px 2px at 90% 10%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2px 2px at 15% 70%,var(--el-upload-dragger-uniform-color) 50%,transparent 0);background-size:200px 200px}[data-v-a12d47f4] .el-upload-dragger:after,[data-v-a12d47f4] .el-upload-dragger:before{content:"";position:absolute;inset:0;pointer-events:none;opacity:0;z-index:0;transition:opacity .6s ease}[data-v-a12d47f4] .el-upload-dragger:after{background-image:radial-gradient(3px 3px at 15% 15%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(3px 3px at 50% 50%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(3px 3px at 85% 85%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2.5px 2.5px at 35% 65%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2.5px 2.5px at 65% 35%,var(--el-upload-dragger-uniform-color) 50%,transparent 0);background-size:150px 150px}.upload-card[data-v-a12d47f4]:hover .el-upload-dragger:before{opacity:.3;animation:starScroll-a12d47f4 60s linear infinite}.upload-card[data-v-a12d47f4]:hover .el-upload-dragger:after{opacity:.6;animation:starScroll-a12d47f4 40s linear infinite,starPulse-a12d47f4 4s ease-in-out infinite}@keyframes starScroll-a12d47f4{0%{background-position:0 0}to{background-position:100px 100px}}@keyframes starPulse-a12d47f4{0%,to{opacity:.6}50%{opacity:.3}}.modern-action-group[data-v-a12d47f4]{display:flex;align-items:center;gap:6px;padding:4px;background:var(--modern-action-group-bg,rgba(64,158,255,.08));border-radius:14px;border:1px solid var(--modern-action-group-border,rgba(64,158,255,.15));box-shadow:0 2px 8px var(--modern-action-group-shadow,rgba(0,0,0,.06));transition:all .3s cubic-bezier(.4,0,.2,1)}.modern-action-group[data-v-a12d47f4]:hover{background:var(--modern-action-group-hover-bg,rgba(64,158,255,.12));box-shadow:0 4px 16px var(--modern-action-group-hover-shadow,rgba(64,158,255,.15));transform:translateY(-1px)}.modern-action-btn[data-v-a12d47f4]{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border:none;border-radius:10px;background:var(--modern-action-btn-bg,linear-gradient(135deg,#409eff 0,#66b1ff 100%));color:#fff;cursor:pointer;transition:all .25s cubic-bezier(.4,0,.2,1);font-size:14px;box-shadow:0 2px 6px rgba(64,158,255,.25);position:relative;overflow:hidden;outline:none!important}.modern-action-btn[data-v-a12d47f4]:focus,.modern-action-btn[data-v-a12d47f4]:focus-visible{outline:none!important}.modern-action-btn[data-v-a12d47f4]:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,hsla(0,0%,100%,.2),transparent);transition:left .5s ease}.modern-action-btn[data-v-a12d47f4]:hover{transform:translateY(-2px) scale(1.05);box-shadow:0 4px 12px rgba(64,158,255,.4)}.modern-action-btn[data-v-a12d47f4]:hover:before{left:100%}.modern-action-btn[data-v-a12d47f4]:active{transform:translateY(0) scale(.98);box-shadow:0 1px 4px rgba(64,158,255,.3)}.modern-action-btn-danger[data-v-a12d47f4]{background:var(--modern-action-btn-danger-bg,linear-gradient(135deg,#f56c6c 0,#f78989 100%));box-shadow:0 2px 6px hsla(0,87%,69%,.25)}.modern-action-btn-danger[data-v-a12d47f4]:hover{box-shadow:0 4px 12px hsla(0,87%,69%,.4)}.modern-dropdown-item-content[data-v-a12d47f4]{display:flex;align-items:center;justify-content:space-between;width:100%;gap:12px;padding:4px 0}.modern-dropdown-item-content span[data-v-a12d47f4]{font-weight:500;color:var(--el-text-color-primary)}.upload-list-dashboard-title[data-v-a12d47f4]{font-size:14px;font-weight:600;display:flex;align-items:center;gap:8px;padding:6px 14px;background:var(--dashboard-title-bg,linear-gradient(135deg,rgba(64,158,255,.06) 0,transparent 100%));border-radius:12px;color:var(--el-text-color-primary)}.upload-list-dashboard-title .el-icon[data-v-a12d47f4]{font-size:16px;margin-right:4px;opacity:.85}@media (max-width:768px){.modern-action-group[data-v-a12d47f4]{gap:4px;padding:3px;border-radius:12px}.modern-action-btn[data-v-a12d47f4]{width:32px;height:32px;border-radius:8px;font-size:12px}.upload-list-dashboard-title[data-v-a12d47f4]{font-size:12px;padding:4px 10px}}.logo-link[data-v-17f54292]{text-decoration:none;display:inline-block}.logo[data-v-17f54292]{transition:all .3s ease;border-radius:8px}.logo--fixed[data-v-17f54292]{position:fixed;top:20px;left:20px;z-index:100}.logo--relative[data-v-17f54292]{position:relative}.logo--absolute[data-v-17f54292]{position:absolute;top:5px;left:5px;z-index:100}.logo--static[data-v-17f54292]{position:static}.logo--small[data-v-17f54292]{height:50px;width:50px}.logo--normal[data-v-17f54292]{height:70px;width:70px}.logo--large[data-v-17f54292]{height:90px;width:90px}.logo--hover-enabled[data-v-17f54292]:hover{transform:scale(1.1) rotate(5deg);filter:drop-shadow(0 0 10px var(--logo-glow-color))}@media (max-width:768px){.logo--small[data-v-17f54292]{height:40px;width:40px}.logo--normal[data-v-17f54292]{height:60px;width:60px}.logo--large[data-v-17f54292]{height:75px;width:75px}}.logo[data-v-17f54292]:focus{outline:2px solid var(--el-color-primary);outline-offset:2px}.logo[data-v-17f54292]{filter:var(--logo-filter,none);opacity:var(--logo-opacity,1)}@media (prefers-color-scheme:dark){.logo[data-v-17f54292]{filter:var(--logo-dark-filter,brightness(.9))}}.el-autocomplete{--el-input-text-color:var(--el-text-color-regular);--el-input-border:var(--el-border);--el-input-hover-border:var(--el-border-color-hover);--el-input-focus-border:var(--el-color-primary);--el-input-transparent-border:0 0 0 1px transparent inset;--el-input-border-color:var(--el-border-color);--el-input-border-radius:var(--el-border-radius-base);--el-input-bg-color:var(--el-fill-color-blank);--el-input-icon-color:var(--el-text-color-placeholder);--el-input-placeholder-color:var(--el-text-color-placeholder);--el-input-hover-border-color:var(--el-border-color-hover);--el-input-clear-hover-color:var(--el-text-color-secondary);--el-input-focus-border-color:var(--el-color-primary);--el-input-width:100%;display:inline-block;position:relative;width:var(--el-input-width)}.el-autocomplete__popper.el-popper{background:var(--el-bg-color-overlay);box-shadow:var(--el-box-shadow-light)}.el-autocomplete__popper.el-popper,.el-autocomplete__popper.el-popper .el-popper__arrow:before{border:1px solid var(--el-border-color-light)}.el-autocomplete__popper.el-popper[data-popper-placement^=top] .el-popper__arrow:before{border-left-color:transparent;border-top-color:transparent}.el-autocomplete__popper.el-popper[data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:transparent;border-right-color:transparent}.el-autocomplete__popper.el-popper[data-popper-placement^=left] .el-popper__arrow:before{border-bottom-color:transparent;border-left-color:transparent}.el-autocomplete__popper.el-popper[data-popper-placement^=right] .el-popper__arrow:before{border-right-color:transparent;border-top-color:transparent}.el-autocomplete-suggestion{border-radius:var(--el-border-radius-base);box-sizing:border-box}.el-autocomplete-suggestion__header{border-bottom:1px solid var(--el-border-color-lighter);padding:10px}.el-autocomplete-suggestion__footer{border-top:1px solid var(--el-border-color-lighter);padding:10px}.el-autocomplete-suggestion__wrap{box-sizing:border-box;max-height:280px;padding:10px 0}.el-autocomplete-suggestion__list{margin:0;padding:0}.el-autocomplete-suggestion li{color:var(--el-text-color-regular);cursor:pointer;font-size:var(--el-font-size-base);line-height:34px;list-style:none;margin:0;overflow:hidden;padding:0 20px;text-align:left;text-overflow:ellipsis;white-space:nowrap}.el-autocomplete-suggestion li.highlighted,.el-autocomplete-suggestion li:hover{background-color:var(--el-fill-color-light)}.el-autocomplete-suggestion li.divider{border-top:1px solid var(--el-color-black);margin-top:6px}.el-autocomplete-suggestion li.divider:last-child{margin-bottom:-6px}.el-autocomplete-suggestion.is-loading li{align-items:center;color:var(--el-text-color-secondary);cursor:default;display:flex;font-size:20px;height:100px;justify-content:center}.el-autocomplete-suggestion.is-loading li:hover{background-color:var(--el-bg-color-overlay)}.directory-suggestion-input[data-v-cedd90b2]{width:100%;height:100%}#themeToggle[data-v-466b2b5c]{border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem}@media (max-width:768px){#themeToggle[data-v-466b2b5c]{width:2rem;height:2rem}}.theme_toggle_circle1[data-v-466b2b5c]{transition:cx .5s ease-in-out,cy .5s ease-in-out,r .5s ease-in-out}.theme_toggle_circle2[data-v-466b2b5c]{transition:all .5s ease-in-out;fill:var(--theme-toggle-bg-color)}.theme_toggle_svg[data-v-466b2b5c]{transition:transform .5s cubic-bezier(.68,-.55,.27,1.55);color:var(--theme-toggle-color)}.dark.theme_toggle_svg[data-v-466b2b5c]{transform:rotate(40deg)}.theme_toggle_g[data-v-466b2b5c]{transition:opacity .5s ease-in-out}.icon-fade-enter-active[data-v-466b2b5c],.icon-fade-leave-active[data-v-466b2b5c]{transition:opacity .3s ease-in-out,transform .3s ease-in-out}.icon-fade-enter-from[data-v-466b2b5c]{opacity:0;transform:scale(.8) rotate(-90deg)}.icon-fade-leave-to[data-v-466b2b5c]{opacity:0;transform:scale(.8) rotate(90deg)}.icon-fade-enter-to[data-v-466b2b5c],.icon-fade-leave-from[data-v-466b2b5c]{opacity:1;transform:scale(1) rotate(0deg)}.auto-icon[data-v-466b2b5c]{display:inline-block}.container[data-v-1db22ef8]{background:var(--bg-color);min-height:100vh}.rotate[data-v-1db22ef8]{animation:spin-1db22ef8 2s ease-in-out}.scale[data-v-1db22ef8]{animation:scale-1db22ef8 .5s ease-in-out}@keyframes spin-1db22ef8{0%{transform:rotate(0deg)}25%{transform:rotate(5deg)}50%{transform:rotate(0deg)}75%{transform:rotate(-3deg)}to{transform:rotate(0deg)}}@keyframes streamer-1db22ef8{0%{background-position:200%}to{background-position:-200%}}@keyframes rotate-shake-1db22ef8{0%{transform:rotate(0deg)}50%{transform:rotate(10deg)}to{transform:rotate(0deg)}}@keyframes shake-1db22ef8{0%{transform:translateX(0)}50%{transform:translateX(-1px)}to{transform:translateX(0)}}@keyframes scale-1db22ef8{0%{transform:scale(1)}50%{transform:scale(1.1)}to{transform:scale(1)}}.desktop-only[data-v-1db22ef8]{display:inline-block}.mobile-only[data-v-1db22ef8]{display:none}@media (max-width:768px){.desktop-only[data-v-1db22ef8]{display:none!important}.mobile-only[data-v-1db22ef8]{display:flex!important}}.toggle-dark-button[data-v-1db22ef8]{right:30px}.toggle-dark-button[data-v-1db22ef8],.upload-method-button[data-v-1db22ef8]{border:none;transition:all .3s ease;background-color:var(--toolbar-button-bg-color);box-shadow:var(--toolbar-button-shadow);backdrop-filter:blur(10px);border-radius:12px;position:fixed;top:30px}.upload-method-button[data-v-1db22ef8]{width:2.5rem;height:2.5rem;display:flex;justify-content:center;align-items:center;color:var(--theme-toggle-color);right:130px;outline:none}@media (max-width:768px){.upload-method-button[data-v-1db22ef8]{width:2rem;height:2rem}}.upload-method-icon[data-v-1db22ef8]{outline:none}.history-button[data-v-1db22ef8]{width:2.5rem;height:2.5rem;display:flex;justify-content:center;align-items:center;position:fixed;top:30px;right:180px;border:none;transition:all .3s ease;background-color:var(--toolbar-button-bg-color);box-shadow:var(--toolbar-button-shadow);backdrop-filter:blur(10px);color:var(--theme-toggle-color);z-index:100;border-radius:12px;outline:none}@media (max-width:768px){.history-button[data-v-1db22ef8]{width:2rem;height:2rem;top:85px;right:80px}}.history-button[data-v-1db22ef8]:hover{transform:scale(1.05);box-shadow:var(--toolbar-button-shadow-hover)}.announcement-button[data-v-1db22ef8]{width:2.5rem;height:2.5rem;display:flex;justify-content:center;align-items:center;position:fixed;top:30px;right:230px;border:none;transition:all .3s ease;background-color:var(--toolbar-button-bg-color);box-shadow:var(--toolbar-button-shadow);backdrop-filter:blur(10px);color:var(--theme-toggle-color);z-index:100;border-radius:12px;outline:none}.announcement-button[data-v-1db22ef8]:hover:not(:disabled){transform:scale(1.05);box-shadow:var(--toolbar-button-shadow-hover)}.announcement-button[data-v-1db22ef8]:disabled{opacity:.5;cursor:not-allowed}.mobile-more-dropdown[data-v-1db22ef8]{position:fixed;top:30px;right:30px;z-index:100}.mobile-more-button[data-v-1db22ef8]{width:2rem;height:2rem;display:flex;justify-content:center;align-items:center;border:none;transition:all .3s ease;background-color:var(--toolbar-button-bg-color);box-shadow:var(--toolbar-button-shadow);backdrop-filter:blur(10px);color:var(--theme-toggle-color);border-radius:12px;outline:none;padding:0}.mobile-more-button[data-v-1db22ef8]:hover{transform:scale(1.05);box-shadow:var(--toolbar-button-shadow-hover)}.upload-folder-container[data-v-1db22ef8]{display:flex;align-items:center;position:fixed;top:30px;right:280px;z-index:100}.upload-folder-container.no-announcement[data-v-1db22ef8]{right:230px}@media (max-width:768px){.upload-folder-container.no-announcement[data-v-1db22ef8],.upload-folder-container[data-v-1db22ef8]{right:110px}}.upload-folder[data-v-1db22ef8]{width:100px;height:2.5rem;border-radius:12px;transition:all .3s ease,width .4s ease}.upload-folder.active[data-v-1db22ef8]{width:200px}@media (max-width:768px){.upload-folder[data-v-1db22ef8]{width:80px;height:2rem}.upload-folder.active[data-v-1db22ef8]{width:120px}}.directory-tree-trigger[data-v-1db22ef8]{width:2.5rem;height:2.5rem;display:flex;justify-content:center;align-items:center;border:none;margin-left:10px;transition:all .3s ease;background-color:var(--toolbar-button-bg-color);box-shadow:var(--toolbar-button-shadow);backdrop-filter:blur(10px);color:var(--theme-toggle-color);border-radius:12px;outline:none}.directory-tree-trigger[data-v-1db22ef8]:hover{transform:scale(1.05);box-shadow:var(--toolbar-button-shadow-hover)}@media (max-width:768px){.directory-tree-trigger[data-v-1db22ef8]{width:2rem;height:2rem}}.upload-folder[data-v-1db22ef8] .inner-folder-input{width:100%;height:100%}.upload-folder[data-v-1db22ef8] .el-input{height:100%}.upload-folder[data-v-1db22ef8] .el-input__wrapper{border-radius:12px;height:100%}.info-container[data-v-1db22ef8],.upload-folder[data-v-1db22ef8] .el-input__wrapper{background-color:var(--toolbar-button-bg-color);box-shadow:var(--toolbar-button-shadow);backdrop-filter:blur(10px);border:none}.info-container[data-v-1db22ef8]{width:2.5rem;height:2.5rem;display:flex;justify-content:center;align-items:center;border-radius:12px;color:var(--theme-toggle-color);transition:all .3s ease;position:fixed;top:30px;right:80px;cursor:pointer}.info-icon[data-v-1db22ef8]{outline:none}@media (max-width:768px){.info-container[data-v-1db22ef8]{width:2rem;height:2rem;right:70px}}.toolbar-manage[data-v-1db22ef8]{position:fixed;bottom:50px;right:30px;z-index:200}.toolbar-manage-button[data-v-1db22ef8]{border:none;transition:all .3s ease,border-radius .4s ease;margin-left:0;background-color:var(--toolbar-button-bg-color);box-shadow:var(--toolbar-button-shadow);backdrop-filter:blur(10px);color:var(--toolbar-button-color);outline:none;border-radius:12px}.toolbar-manage-button.active[data-v-1db22ef8]{border-radius:50%}.toolbar[data-v-1db22ef8]{position:fixed;bottom:50px;right:30px;display:flex;flex-direction:column;align-items:center;z-index:100}.toolbar-button[data-v-1db22ef8]{border:none;transition:all .3s ease;margin-left:0;background-color:var(--toolbar-button-bg-color);box-shadow:var(--toolbar-button-shadow);backdrop-filter:blur(10px);color:var(--toolbar-button-color)}.info-container[data-v-1db22ef8]:hover,.toggle-dark-button[data-v-1db22ef8]:hover,.toolbar-button[data-v-1db22ef8]:hover,.toolbar-manage-button[data-v-1db22ef8]:hover,.upload-folder[data-v-1db22ef8]:hover,.upload-method-button[data-v-1db22ef8]:hover{transform:scale(1.05);box-shadow:var(--toolbar-button-shadow-hover)}.compress-button[data-v-1db22ef8]{position:fixed;bottom:50px;right:30px;opacity:0;transition:all .3s ease,transform .4s cubic-bezier(.68,-.55,.27,1.55),opacity .3s cubic-bezier(.68,-.55,.27,1.55);pointer-events:none}.compress-button.active[data-v-1db22ef8]{transform:translateY(-75px);opacity:1}.link-button[data-v-1db22ef8]{position:fixed;bottom:50px;right:30px;opacity:0;transition:all .3s ease,transform .4s cubic-bezier(.68,-.55,.27,1.55),opacity .3s cubic-bezier(.68,-.55,.27,1.55);pointer-events:none}.link-button.active[data-v-1db22ef8]{transform:translateY(-58px) translateX(-50px);opacity:1}.config-button[data-v-1db22ef8]{position:fixed;bottom:50px;right:30px;opacity:0;transition:all .3s ease,transform .4s cubic-bezier(.68,-.55,.27,1.55),opacity .3s cubic-bezier(.68,-.55,.27,1.55);pointer-events:none}.config-button.active[data-v-1db22ef8]{transform:translateY(-11px) translateX(-75px);opacity:1}.sign-out-button[data-v-1db22ef8]{position:fixed;bottom:50px;right:30px;opacity:0;transition:all .3s ease,transform .4s cubic-bezier(.68,-.55,.27,1.55),opacity .3s cubic-bezier(.68,-.55,.27,1.55);pointer-events:none}.sign-out-button.active[data-v-1db22ef8]{transform:translateY(42px) translateX(-68px);opacity:1}@media (min-width:768px){.compress-button[data-v-1db22ef8]:hover{transform:translateY(-77px)}.link-button[data-v-1db22ef8]:hover{transform:translateY(-60px) translateX(-52px)}.config-button[data-v-1db22ef8]:hover{transform:translateY(-12px) translateX(-77px)}.sign-out-button[data-v-1db22ef8]:hover{transform:translateY(44px) translateX(-70px)}.compress-icon[data-v-1db22ef8]:hover{animation:scale-1db22ef8 .5s ease-in-out}.config-icon[data-v-1db22ef8]:hover{animation:spin-1db22ef8 .5s ease-in-out}.link-icon[data-v-1db22ef8]:hover{animation:rotate-shake-1db22ef8 .5s ease-in-out}.sign-out-icon[data-v-1db22ef8]:hover{animation:shake-1db22ef8 .5s ease-in-out}}[data-v-1db22ef8] .el-dialog{border-radius:12px;background-color:var(--dialog-bg-color);backdrop-filter:blur(10px);box-shadow:var(--dialog-box-shadow)}.dialog-action[data-v-1db22ef8]{display:flex;justify-content:center;margin-top:20px}.header[data-v-1db22ef8]{display:flex;justify-content:center;align-items:center;padding:15px;margin-top:5vh;color:var(--upload-header-color);-webkit-user-select:none;-moz-user-select:none;user-select:none;text-decoration:none;position:relative;top:-3vh;transition:all .3s ease}.title[data-v-1db22ef8]{font-size:2.5rem;font-weight:400;font-family:Righteous,Noto Sans SC,sans-serif;position:relative;padding-bottom:8px;cursor:pointer;transition:all .4s cubic-bezier(.4,0,.2,1);animation:float-1db22ef8 4s ease-in-out infinite;letter-spacing:3px}.title[data-v-1db22ef8]:hover{transform:scale(1.08) translateY(-3px);filter:drop-shadow(0 0 20px var(--el-upload-dragger-uniform-color))}.title[data-v-1db22ef8]:after{content:"";position:absolute;bottom:0;left:50%;transform:translateX(-50%);width:0;height:3px;background:linear-gradient(90deg,transparent,var(--el-upload-dragger-uniform-color),transparent);border-radius:3px;transition:width .5s cubic-bezier(.4,0,.2,1);box-shadow:0 0 10px var(--el-upload-dragger-uniform-color)}.title[data-v-1db22ef8]:hover:after{width:80%}.main-title[data-v-1db22ef8]{background:var(--upload-main-title-color);background-size:200% auto;background-clip:text;-webkit-background-clip:text;color:transparent;text-decoration:none;display:inline-block;animation:titleShimmer-1db22ef8 3s ease-in-out infinite;position:relative;filter:drop-shadow(0 0 8px rgba(255,255,255,.3))}.title:hover .main-title[data-v-1db22ef8]{animation:titleShimmer-1db22ef8 1s ease-in-out infinite;filter:brightness(1.2)}@keyframes float-1db22ef8{0%,to{transform:translateY(0)}50%{transform:translateY(-5px)}}@keyframes titleShimmer-1db22ef8{0%{background-position:200%}to{background-position:-200%}}@media (max-width:768px){.title[data-v-1db22ef8]{font-size:1.8rem;letter-spacing:1px}.title[data-v-1db22ef8]:hover{transform:scale(1.05) translateY(-2px)}}.upload-home[data-v-1db22ef8]{display:flex;flex-direction:column;justify-content:center;align-items:center;min-height:94vh;background-color:var(--admin-container-bg-color)}.upload[data-v-1db22ef8]{margin-bottom:5px;position:relative;top:-3vh}.footer[data-v-1db22ef8]{height:6vh} \ No newline at end of file +.history-container[data-v-05a2ac54]{position:fixed;top:0;left:0;width:100%;height:100%;z-index:2000;display:flex;flex-direction:column;color:var(--upload-text-color);clip-path:circle(0 at calc(100% - 200px) 50px);opacity:0;transition:clip-path .6s cubic-bezier(.4,0,.2,1),opacity .3s ease}.history-container[data-v-05a2ac54]:before{content:"";position:absolute;top:0;left:0;width:100%;height:100%;backdrop-filter:blur(20px);background:var(--admin-container-bg-color);z-index:-1;will-change:transform;transform:translateZ(0)}.history-container.active[data-v-05a2ac54]{clip-path:circle(150% at calc(100% - 200px) 50px);opacity:1}.history-header[data-v-05a2ac54]{padding:20px 40px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--el-border-color-lighter)}.header-left[data-v-05a2ac54]{display:flex;align-items:baseline;gap:15px}.header-left h2[data-v-05a2ac54]{margin:0;font-size:24px;background:var(--upload-main-title-color);background-size:200% auto;background-clip:text;-webkit-background-clip:text;color:transparent;font-weight:700}.record-count[data-v-05a2ac54]{color:var(--upload-text-color);font-size:14px;opacity:.8}.header-right[data-v-05a2ac54]{display:flex;gap:10px}.header-right .el-button[data-v-05a2ac54]{background-color:var(--toolbar-button-bg-color);box-shadow:var(--toolbar-button-shadow);backdrop-filter:blur(10px);border:none;color:var(--theme-toggle-color);transition:all .3s ease}.header-right .el-button[data-v-05a2ac54]:hover{transform:scale(1.05);box-shadow:var(--toolbar-button-shadow-hover)}.header-right .el-button.el-button--danger[data-v-05a2ac54]{background:linear-gradient(135deg,#ff6b6b,#ee5a5a);color:#fff}.history-content[data-v-05a2ac54]{flex:1;overflow-y:auto;padding:20px 40px}.grid-view[data-v-05a2ac54]{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:20px}.grid-item[data-v-05a2ac54]{background:var(--toolbar-button-bg-color);border-radius:12px;overflow:hidden;box-shadow:var(--toolbar-button-shadow);transition:transform .3s ease,box-shadow .3s ease;border:none;backdrop-filter:blur(10px)}.grid-item[data-v-05a2ac54]:hover{transform:translateY(-5px);box-shadow:var(--toolbar-button-shadow-hover)}.grid-preview[data-v-05a2ac54]{height:160px;position:relative;background:var(--el-fill-color-light);display:flex;align-items:center;justify-content:center;overflow:hidden}.grid-preview img[data-v-05a2ac54],.grid-preview video[data-v-05a2ac54]{width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.file-icon-wrapper[data-v-05a2ac54]{font-size:48px;color:var(--theme-toggle-color);opacity:.5}.grid-overlay[data-v-05a2ac54]{position:absolute;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,.4);display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .3s ease}.grid-item:hover .grid-overlay[data-v-05a2ac54]{opacity:1}.grid-actions[data-v-05a2ac54]{display:flex;gap:15px}.grid-actions .el-button[data-v-05a2ac54]{backdrop-filter:blur(10px)}.grid-info[data-v-05a2ac54]{padding:12px}.file-name[data-v-05a2ac54]{font-size:14px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:5px;color:var(--upload-text-color)}.upload-time[data-v-05a2ac54]{font-size:12px;color:var(--upload-text-color);opacity:.6}.list-view[data-v-05a2ac54]{display:flex;flex-direction:column;gap:10px}.list-item[data-v-05a2ac54]{display:flex;align-items:center;padding:12px 15px;background:var(--toolbar-button-bg-color);border-radius:12px;box-shadow:var(--toolbar-button-shadow);backdrop-filter:blur(10px);border:none;transition:all .3s ease}.list-item[data-v-05a2ac54]:hover{transform:translateX(5px);box-shadow:var(--toolbar-button-shadow-hover)}.list-preview[data-v-05a2ac54]{width:50px;height:50px;border-radius:8px;overflow:hidden;margin-right:15px;background:var(--el-fill-color-light);display:flex;align-items:center;justify-content:center;flex-shrink:0}.list-preview img[data-v-05a2ac54],.list-preview video[data-v-05a2ac54]{width:100%;height:100%;-o-object-fit:cover;object-fit:cover}.file-icon-wrapper-small[data-v-05a2ac54]{font-size:24px;color:var(--theme-toggle-color);opacity:.5}.list-info[data-v-05a2ac54]{flex:1;min-width:0;margin-right:20px}.file-url[data-v-05a2ac54]{font-size:12px;color:var(--upload-text-color);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;opacity:.6}.list-meta[data-v-05a2ac54]{margin-right:20px;text-align:right;min-width:140px}.list-actions[data-v-05a2ac54]{display:flex;gap:8px}.list-actions .el-button[data-v-05a2ac54]{backdrop-filter:blur(10px)}.empty-state[data-v-05a2ac54]{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--upload-text-color);font-size:18px;opacity:.5}.empty-icon[data-v-05a2ac54]{font-size:64px;margin-bottom:20px;color:var(--theme-toggle-color)}.history-content[data-v-05a2ac54]::-webkit-scrollbar{width:8px}.history-content[data-v-05a2ac54]::-webkit-scrollbar-track{background:transparent}.history-content[data-v-05a2ac54]::-webkit-scrollbar-thumb{background:var(--el-border-color);border-radius:4px}.history-content[data-v-05a2ac54]::-webkit-scrollbar-thumb:hover{background:var(--el-border-color-darker)}.action-btn-view[data-v-05a2ac54]{background-color:var(--toolbar-button-bg-color);box-shadow:var(--toolbar-button-shadow);border:none;color:var(--theme-toggle-color)}.action-btn-view[data-v-05a2ac54]:hover{box-shadow:var(--toolbar-button-shadow-hover);color:var(--el-color-primary)}.history-group[data-v-05a2ac54]{position:relative;padding-left:30px;border-left:2px solid var(--el-border-color-lighter);margin-left:10px;padding-bottom:30px}.history-group[data-v-05a2ac54]:last-child{border-left:2px solid transparent}.timeline-header[data-v-05a2ac54]{display:flex;align-items:center;margin-bottom:20px;position:relative}.timeline-dot[data-v-05a2ac54]{position:absolute;left:-38px;width:14px;height:14px;border-radius:50%;background:var(--el-upload-dragger-uniform-color);box-shadow:0 0 10px var(--el-upload-dragger-uniform-color);z-index:2;box-sizing:border-box}.date-label[data-v-05a2ac54]{font-size:20px;font-weight:700;background:var(--upload-main-title-color);background-size:200% auto;background-clip:text;-webkit-background-clip:text;color:transparent}.load-more-container[data-v-05a2ac54]{display:flex;justify-content:center;padding:20px}.loading-indicator[data-v-05a2ac54]{display:flex;align-items:center;gap:8px;color:var(--el-upload-dragger-uniform-color)}.load-more-hint[data-v-05a2ac54],.no-more-hint[data-v-05a2ac54]{color:var(--upload-text-color);opacity:.5;font-size:14px}.no-more-hint[data-v-05a2ac54]{text-align:center;padding:20px}@media (max-width:768px){.history-header[data-v-05a2ac54]{padding:15px 20px}.header-left h2[data-v-05a2ac54]{font-size:20px}.history-content[data-v-05a2ac54]{padding:15px 20px}.grid-view[data-v-05a2ac54]{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:15px}.grid-preview[data-v-05a2ac54]{height:120px}.list-meta[data-v-05a2ac54]{display:none}.list-info[data-v-05a2ac54]{margin-right:10px}}.page-footer[data-v-08acbaa9]{display:flex;justify-content:center;align-items:center;width:100vw;color:var(--page-footer-text-color);font-size:large;-webkit-user-select:none;-moz-user-select:none;user-select:none}@media (max-width:768px){.page-footer[data-v-08acbaa9]{font-size:small}}.footer-name[data-v-08acbaa9]{color:var(--page-footer-name-color);font-weight:700;text-decoration:none;position:relative;transition:all .3s ease}.footer-name[data-v-08acbaa9]:after{content:"";position:absolute;width:0;height:2px;bottom:-2px;left:0;background-color:var(--page-footer-name-color);transition:width .3s ease-in-out}.footer-name[data-v-08acbaa9]:hover:after{width:100%}.footer-link-icon[data-v-08acbaa9]{color:var(--page-footer-name-color);margin-left:5px;transition:transform .3s ease-in-out}.footer-link-icon[data-v-08acbaa9]:hover{transform:scale(1.2) rotate(-12deg)}.el-input-number{display:inline-flex;line-height:30px;position:relative;vertical-align:middle;width:150px}.el-input-number .el-input__wrapper{padding-left:42px;padding-right:42px}.el-input-number .el-input__inner{-webkit-appearance:none;-moz-appearance:textfield;line-height:1;text-align:center}.el-input-number .el-input__inner::-webkit-inner-spin-button,.el-input-number .el-input__inner::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.el-input-number.is-left .el-input__inner{text-align:left}.el-input-number.is-right .el-input__inner{text-align:right}.el-input-number.is-center .el-input__inner{text-align:center}.el-input-number__decrease,.el-input-number__increase{align-items:center;background:var(--el-fill-color-light);bottom:1px;color:var(--el-text-color-regular);cursor:pointer;display:flex;font-size:13px;height:auto;justify-content:center;position:absolute;top:1px;-webkit-user-select:none;user-select:none;width:32px;z-index:1}.el-input-number__decrease:hover,.el-input-number__increase:hover{color:var(--el-color-primary)}.el-input-number__decrease:hover~.el-input:not(.is-disabled) .el-input__wrapper,.el-input-number__increase:hover~.el-input:not(.is-disabled) .el-input__wrapper{box-shadow:0 0 0 1px var(--el-input-focus-border-color,var(--el-color-primary)) inset}.el-input-number__decrease.is-disabled,.el-input-number__increase.is-disabled{color:var(--el-disabled-text-color);cursor:not-allowed}.el-input-number__increase{border-left:var(--el-border);border-radius:0 var(--el-border-radius-base) var(--el-border-radius-base) 0;right:1px}.el-input-number__decrease{border-radius:var(--el-border-radius-base) 0 0 var(--el-border-radius-base);border-right:var(--el-border);left:1px}.el-input-number.is-disabled .el-input-number__decrease,.el-input-number.is-disabled .el-input-number__increase{border-color:var(--el-disabled-border-color);color:var(--el-disabled-border-color)}.el-input-number.is-disabled .el-input-number__decrease:hover,.el-input-number.is-disabled .el-input-number__increase:hover{color:var(--el-disabled-border-color);cursor:not-allowed}.el-input-number--large{line-height:38px;width:180px}.el-input-number--large .el-input-number__decrease,.el-input-number--large .el-input-number__increase{font-size:14px;width:40px}.el-input-number--large.is-controls-right .el-input--large .el-input__wrapper{padding-right:47px}.el-input-number--large .el-input--large .el-input__wrapper{padding-left:47px;padding-right:47px}.el-input-number--small{line-height:22px;width:120px}.el-input-number--small .el-input-number__decrease,.el-input-number--small .el-input-number__increase{font-size:12px;width:24px}.el-input-number--small.is-controls-right .el-input--small .el-input__wrapper{padding-right:31px}.el-input-number--small .el-input--small .el-input__wrapper{padding-left:31px;padding-right:31px}.el-input-number--small .el-input-number__decrease [class*=el-icon],.el-input-number--small .el-input-number__increase [class*=el-icon]{transform:scale(.9)}.el-input-number.is-without-controls .el-input__wrapper{padding-left:15px;padding-right:15px}.el-input-number.is-controls-right .el-input__wrapper{padding-left:15px;padding-right:42px}.el-input-number.is-controls-right .el-input-number__decrease,.el-input-number.is-controls-right .el-input-number__increase{--el-input-number-controls-height:15px;height:var(--el-input-number-controls-height);line-height:var(--el-input-number-controls-height)}.el-input-number.is-controls-right .el-input-number__decrease [class*=el-icon],.el-input-number.is-controls-right .el-input-number__increase [class*=el-icon]{transform:scale(.8)}.el-input-number.is-controls-right .el-input-number__increase{border-bottom:var(--el-border);border-radius:0 var(--el-border-radius-base) 0 0;bottom:auto;left:auto}.el-input-number.is-controls-right .el-input-number__decrease{border-left:var(--el-border);border-radius:0 0 var(--el-border-radius-base) 0;border-right:none;left:auto;right:1px;top:auto}.el-input-number.is-controls-right[class*=large] [class*=decrease],.el-input-number.is-controls-right[class*=large] [class*=increase]{--el-input-number-controls-height:19px}.el-input-number.is-controls-right[class*=small] [class*=decrease],.el-input-number.is-controls-right[class*=small] [class*=increase]{--el-input-number-controls-height:11px}.el-slider{--el-slider-main-bg-color:var(--el-color-primary);--el-slider-runway-bg-color:var(--el-border-color-light);--el-slider-stop-bg-color:var(--el-color-white);--el-slider-disabled-color:var(--el-text-color-placeholder);--el-slider-border-radius:3px;--el-slider-height:6px;--el-slider-button-size:20px;--el-slider-button-wrapper-size:36px;--el-slider-button-wrapper-offset:-15px;align-items:center;display:flex;height:32px;width:100%}.el-slider__runway{background-color:var(--el-slider-runway-bg-color);border-radius:var(--el-slider-border-radius);cursor:pointer;flex:1;height:var(--el-slider-height);position:relative}.el-slider__runway.show-input{margin-right:30px;width:auto}.el-slider__runway.is-disabled{cursor:default}.el-slider__runway.is-disabled .el-slider__bar{background-color:var(--el-slider-disabled-color)}.el-slider__runway.is-disabled .el-slider__button{border-color:var(--el-slider-disabled-color)}.el-slider__runway.is-disabled .el-slider__button-wrapper.dragging,.el-slider__runway.is-disabled .el-slider__button-wrapper.hover,.el-slider__runway.is-disabled .el-slider__button-wrapper:hover{cursor:not-allowed}.el-slider__runway.is-disabled .el-slider__button.dragging,.el-slider__runway.is-disabled .el-slider__button.hover,.el-slider__runway.is-disabled .el-slider__button:hover{transform:scale(1)}.el-slider__runway.is-disabled .el-slider__button.dragging,.el-slider__runway.is-disabled .el-slider__button.hover,.el-slider__runway.is-disabled .el-slider__button:hover{cursor:not-allowed}.el-slider__input{flex-shrink:0;width:130px}.el-slider__bar{background-color:var(--el-slider-main-bg-color);border-bottom-left-radius:var(--el-slider-border-radius);border-top-left-radius:var(--el-slider-border-radius);height:var(--el-slider-height);position:absolute}.el-slider__button-wrapper{background-color:transparent;height:var(--el-slider-button-wrapper-size);line-height:normal;outline:none;position:absolute;text-align:center;top:var(--el-slider-button-wrapper-offset);transform:translateX(-50%);-webkit-user-select:none;user-select:none;width:var(--el-slider-button-wrapper-size);z-index:1}.el-slider__button-wrapper:after{content:"";display:inline-block;height:100%;vertical-align:middle}.el-slider__button-wrapper.hover,.el-slider__button-wrapper:hover{cursor:grab}.el-slider__button-wrapper.dragging{cursor:grabbing}.el-slider__button{background-color:var(--el-color-white);border:2px solid var(--el-slider-main-bg-color);border-radius:50%;box-sizing:border-box;display:inline-block;height:var(--el-slider-button-size);transition:var(--el-transition-duration-fast);-webkit-user-select:none;user-select:none;vertical-align:middle;width:var(--el-slider-button-size)}.el-slider__button.dragging,.el-slider__button.hover,.el-slider__button:hover{transform:scale(1.2)}.el-slider__button.hover,.el-slider__button:hover{cursor:grab}.el-slider__button.dragging{cursor:grabbing}.el-slider__stop{background-color:var(--el-slider-stop-bg-color);border-radius:var(--el-border-radius-circle);height:var(--el-slider-height);position:absolute;transform:translateX(-50%);width:var(--el-slider-height)}.el-slider__marks{height:100%;left:12px;top:0;width:18px}.el-slider__marks-text{color:var(--el-color-info);font-size:14px;margin-top:15px;position:absolute;transform:translateX(-50%);white-space:pre}.el-slider.is-vertical{display:inline-flex;flex:0;height:100%;position:relative;width:auto}.el-slider.is-vertical .el-slider__runway{height:100%;margin:0 16px;width:var(--el-slider-height)}.el-slider.is-vertical .el-slider__bar{border-radius:0 0 3px 3px;height:auto;width:var(--el-slider-height)}.el-slider.is-vertical .el-slider__button-wrapper{left:var(--el-slider-button-wrapper-offset);top:auto;transform:translateY(50%)}.el-slider.is-vertical .el-slider__stop{transform:translateY(50%)}.el-slider.is-vertical .el-slider__marks-text{left:15px;margin-top:0;transform:translateY(50%)}.el-slider--large{height:40px}.el-slider--small{height:24px}.el-progress{align-items:center;display:flex;line-height:1;position:relative}.el-progress__text{color:var(--el-text-color-regular);font-size:14px;line-height:1;margin-left:5px;min-width:50px}.el-progress__text i{display:block;vertical-align:middle}.el-progress--circle,.el-progress--dashboard{display:inline-block}.el-progress--circle .el-progress__text,.el-progress--dashboard .el-progress__text{left:0;margin:0;position:absolute;text-align:center;top:50%;transform:translateY(-50%);width:100%}.el-progress--circle .el-progress__text i,.el-progress--dashboard .el-progress__text i{display:inline-block;vertical-align:middle}.el-progress--without-text .el-progress__text{display:none}.el-progress--without-text .el-progress-bar{display:block;margin-right:0;padding-right:0}.el-progress--text-inside .el-progress-bar{margin-right:0;padding-right:0}.el-progress.is-success .el-progress-bar__inner{background-color:var(--el-color-success)}.el-progress.is-success .el-progress__text{color:var(--el-color-success)}.el-progress.is-warning .el-progress-bar__inner{background-color:var(--el-color-warning)}.el-progress.is-warning .el-progress__text{color:var(--el-color-warning)}.el-progress.is-exception .el-progress-bar__inner{background-color:var(--el-color-danger)}.el-progress.is-exception .el-progress__text{color:var(--el-color-danger)}.el-progress-bar{box-sizing:border-box;flex-grow:1}.el-progress-bar__outer{background-color:var(--el-border-color-lighter);border-radius:100px;height:6px;overflow:hidden;position:relative;vertical-align:middle}.el-progress-bar__inner{background-color:var(--el-color-primary);border-radius:100px;height:100%;left:0;line-height:1;position:absolute;text-align:right;top:0;transition:width .6s ease;white-space:nowrap}.el-progress-bar__inner:after{content:"";display:inline-block;height:100%;vertical-align:middle}.el-progress-bar__inner--indeterminate{animation:indeterminate 3s infinite;transform:translateZ(0)}.el-progress-bar__inner--striped{background-image:linear-gradient(45deg,rgba(0,0,0,.1) 25%,transparent 0,transparent 50%,rgba(0,0,0,.1) 0,rgba(0,0,0,.1) 75%,transparent 0,transparent);background-size:1.25em 1.25em}.el-progress-bar__inner--striped.el-progress-bar__inner--striped-flow{animation:striped-flow 3s linear infinite}.el-progress-bar__innerText{color:#fff;display:inline-block;font-size:12px;margin:0 5px;vertical-align:middle}@keyframes progress{0%{background-position:0 0}to{background-position:32px 0}}@keyframes indeterminate{0%{left:-100%}to{left:100%}}@keyframes striped-flow{0%{background-position:-100%}to{background-position:100%}}.upload-list-item[data-v-85bdebae]{display:flex;align-items:center;justify-content:space-between;margin:8px 10px;border:1px solid var(--upload-list-item-border-color,rgba(64,158,255,.1));padding:10px 12px;border-radius:16px;background:var(--upload-list-item-bg,linear-gradient(135deg,hsla(0,0%,100%,.9) 0,hsla(0,0%,100%,.7) 100%));backdrop-filter:blur(10px);box-shadow:0 2px 8px var(--upload-list-item-shadow,rgba(0,0,0,.04));transition:all .3s cubic-bezier(.4,0,.2,1)}.upload-list-item[data-v-85bdebae]:hover{border-color:var(--upload-list-item-hover-border,rgba(64,158,255,.25));box-shadow:0 4px 16px var(--upload-list-item-hover-shadow,rgba(64,158,255,.12));transform:translateY(-2px)}.upload-list-item-content[data-v-85bdebae]{display:flex;flex-direction:column;margin-left:10px}.upload-list-item-action[data-v-85bdebae]{display:flex;flex-direction:column;align-items:center;gap:6px}.upload-list-item-url-row[data-v-85bdebae]{display:flex;flex-direction:row;align-items:center;width:38vw;gap:8px;margin-bottom:6px}.upload-list-item-url-row[data-v-85bdebae]:last-child{margin-bottom:0}.upload-list-item-url[data-v-85bdebae]{display:flex;flex-direction:column}.file-icon[data-v-85bdebae]{font-size:30px;color:var(--upload-list-file-icon-color)}.upload-list-item-name-wrapper[data-v-85bdebae]{display:flex;align-items:center;justify-content:center;padding:8px 16px;background:var(--file-name-bg,linear-gradient(135deg,rgba(64,158,255,.08) 0,rgba(64,158,255,.03) 100%));border-radius:10px;margin-bottom:8px;border:1px solid var(--file-name-border,rgba(64,158,255,.12));backdrop-filter:blur(4px);transition:all .3s ease}.upload-list-item-name-wrapper[data-v-85bdebae]:hover{background:var(--file-name-hover-bg,linear-gradient(135deg,rgba(64,158,255,.12) 0,rgba(64,158,255,.06) 100%));border-color:var(--file-name-hover-border,rgba(64,158,255,.2))}.upload-list-item-name[data-v-85bdebae]{font-size:14px;font-weight:600;max-width:28vw;color:var(--el-text-color-primary);letter-spacing:.3px;text-align:center}.upload-list-item-progress[data-v-85bdebae]{margin-top:8px;width:28vw;padding:4px 8px;background:var(--progress-wrapper-bg,linear-gradient(135deg,rgba(64,158,255,.05) 0,rgba(64,158,255,.02) 100%));border-radius:12px;border:1px solid var(--progress-wrapper-border,rgba(64,158,255,.1))}.upload-list-item-progress[data-v-85bdebae] .el-progress{--el-color-primary:#409eff}.upload-list-item-progress[data-v-85bdebae] .el-progress-bar{padding-right:0;margin-right:0}.upload-list-item-progress[data-v-85bdebae] .el-progress-bar__outer{height:10px!important;border-radius:8px;background:var(--progress-outer-bg,linear-gradient(135deg,rgba(0,0,0,.06) 0,rgba(0,0,0,.03) 100%));box-shadow:inset 0 1px 3px rgba(0,0,0,.08);overflow:hidden}.upload-list-item-progress[data-v-85bdebae] .el-progress-bar__inner{border-radius:8px;background:linear-gradient(90deg,#409eff,#66b1ff 50%,#409eff)!important;box-shadow:0 0 12px rgba(64,158,255,.5),0 0 4px rgba(64,158,255,.3),inset 0 1px 0 hsla(0,0%,100%,.3);position:relative;overflow:hidden;transition:width .3s ease}.upload-list-item-progress[data-v-85bdebae] .el-progress-bar__inner:after{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background:linear-gradient(90deg,transparent,hsla(0,0%,100%,.2) 50%,transparent);pointer-events:none}.upload-list-item-progress[data-v-85bdebae] .el-progress-bar__inner:before{content:"";position:absolute;top:0;left:-100%;width:300%;height:100%;background:repeating-linear-gradient(45deg,transparent,transparent 8px,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 16px);animation:progressStripes-85bdebae 1s linear infinite}.upload-list-item-progress[data-v-85bdebae] .el-progress--success .el-progress-bar__inner{background:linear-gradient(90deg,#67c23a,#85ce61 25%,#95d475 50%,#85ce61 75%,#67c23a)!important;background-size:200% 100%;box-shadow:0 0 12px rgba(103,194,58,.5),0 0 4px rgba(103,194,58,.3),inset 0 1px 0 hsla(0,0%,100%,.3);animation:none}.upload-list-item-progress[data-v-85bdebae] .el-progress--success .el-progress-bar__inner:after,.upload-list-item-progress[data-v-85bdebae] .el-progress--success .el-progress-bar__inner:before{animation:none;background:none}.upload-list-item-progress[data-v-85bdebae] .el-progress--exception .el-progress-bar__inner{background:linear-gradient(90deg,#f56c6c,#f78989 25%,#f9a7a7 50%,#f78989 75%,#f56c6c)!important;background-size:200% 100%;box-shadow:0 0 12px hsla(0,87%,69%,.5),0 0 4px hsla(0,87%,69%,.3),inset 0 1px 0 hsla(0,0%,100%,.3);animation:progressPulse-85bdebae 1s ease-in-out infinite}.upload-list-item-progress[data-v-85bdebae] .el-progress--exception .el-progress-bar__inner:before{animation:none;background:none}@keyframes progressStripes-85bdebae{0%{transform:translateX(0)}to{transform:translateX(22.627px)}}@keyframes progressPulse-85bdebae{0%,to{opacity:1}50%{opacity:.7}}.upload-list-item-url[data-v-85bdebae] .el-input{transition:all .3s cubic-bezier(.4,0,.2,1)}.upload-list-item-url[data-v-85bdebae] .el-input:hover{transform:translateY(-1px)}.upload-list-item-url[data-v-85bdebae] .el-input__wrapper{border-radius:10px;box-shadow:0 1px 3px rgba(0,0,0,.08);transition:all .3s cubic-bezier(.4,0,.2,1);background:var(--el-fill-color-blank);border:1px solid var(--el-border-color-lighter);overflow:hidden;position:relative;padding:0}.upload-list-item-url[data-v-85bdebae] .el-input-group>.el-input__wrapper{border-radius:0 9px 9px 0!important}.upload-list-item-url[data-v-85bdebae] .el-input__wrapper:hover{box-shadow:0 2px 8px rgba(0,0,0,.12);border-color:var(--el-color-primary-light-5)}.upload-list-item-url[data-v-85bdebae] .el-input__wrapper.is-focus{box-shadow:0 0 0 2px var(--el-color-primary-light-8),0 4px 12px rgba(0,0,0,.15);border-color:var(--el-color-primary)}.upload-list-item-url[data-v-85bdebae] .el-input__wrapper.is-focus:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(64,158,255,.08),transparent);animation:shimmer-85bdebae 2s infinite;z-index:0}@keyframes shimmer-85bdebae{0%{left:-100%}to{left:100%}}.upload-list-item-url[data-v-85bdebae] .el-input__inner{font-size:13px;font-family:Courier New,Monaco,monospace;color:var(--el-text-color-regular);transition:all .3s ease;padding-left:12px;position:relative;z-index:1;border-radius:0 10px 10px 0}.upload-list-item-url[data-v-85bdebae] .el-input__inner::-moz-selection{background-color:var(--el-color-primary-light-7)}.upload-list-item-url[data-v-85bdebae] .el-input__inner::selection{background-color:var(--el-color-primary-light-7)}.upload-list-item-url[data-v-85bdebae] .el-input-group__prepend{background:var(--el-color-primary-light-9);color:var(--el-color-primary);font-weight:600;font-size:12px;border:none;padding:0 14px;margin:0;border-radius:9px 0 0 9px;box-shadow:none;transition:all .3s ease;letter-spacing:.5px;position:relative;z-index:1}.upload-list-item-url[data-v-85bdebae] .el-input-group__prepend:after{content:"";position:absolute;right:0;top:50%;transform:translateY(-50%);height:60%;width:1px;background:var(--el-color-primary-light-7);opacity:.3;transition:all .3s ease}.upload-list-item-url[data-v-85bdebae] .el-input:hover .el-input-group__prepend{background:var(--el-color-primary-light-8)}.upload-list-item-url[data-v-85bdebae] .el-input:hover .el-input-group__prepend:after{opacity:.5}.upload-list-item-url[data-v-85bdebae] .el-input.is-focus .el-input-group__prepend{background:var(--el-color-primary);color:#fff;animation:prependPulse-85bdebae 2s ease-in-out infinite}.upload-list-item-url[data-v-85bdebae] .el-input.is-focus .el-input-group__prepend:after{background:hsla(0,0%,100%,.3);opacity:1}@keyframes prependPulse-85bdebae{0%,to{opacity:1}50%{opacity:.95}}.modern-file-action-btn[data-v-85bdebae]{display:flex;align-items:center;justify-content:center;width:30px;height:30px;border:none;border-radius:12px;cursor:pointer;transition:all .3s cubic-bezier(.4,0,.2,1);font-size:16px;position:relative;overflow:hidden;margin:4px 0}.modern-file-action-btn[data-v-85bdebae]:before{content:"";position:absolute;top:50%;left:50%;width:0;height:0;background:hsla(0,0%,100%,.3);border-radius:50%;transform:translate(-50%,-50%);transition:width .4s ease,height .4s ease}.modern-file-action-btn[data-v-85bdebae]:active:before{width:100%;height:100%}.modern-file-action-btn-primary[data-v-85bdebae]{background:var(--file-action-primary-bg,linear-gradient(145deg,#409eff 0,#53a8ff 50%,#66b1ff 100%));color:#fff;box-shadow:0 3px 10px rgba(64,158,255,.3),inset 0 1px 0 hsla(0,0%,100%,.2)}.modern-file-action-btn-primary[data-v-85bdebae]:hover{transform:translateY(-3px) scale(1.08);box-shadow:0 6px 20px rgba(64,158,255,.45),inset 0 1px 0 hsla(0,0%,100%,.25)}.modern-file-action-btn-primary[data-v-85bdebae]:active{transform:translateY(-1px) scale(1.02)}.modern-file-action-btn-danger[data-v-85bdebae]{background:var(--file-action-danger-bg,linear-gradient(145deg,#f56c6c 0,#f78989 50%,#f9a7a7 100%));color:#fff;box-shadow:0 3px 10px hsla(0,87%,69%,.3),inset 0 1px 0 hsla(0,0%,100%,.2)}.modern-file-action-btn-danger[data-v-85bdebae]:hover{transform:translateY(-3px) scale(1.08);box-shadow:0 6px 20px hsla(0,87%,69%,.45),inset 0 1px 0 hsla(0,0%,100%,.25)}.modern-file-action-btn-danger[data-v-85bdebae]:active{transform:translateY(-1px) scale(1.02)}@media (max-width:768px){.upload-list-item-content[data-v-85bdebae]{margin-left:2px}.upload-list-item-url-row[data-v-85bdebae]{width:42vw;flex-direction:column;gap:6px}.upload-list-item-progress[data-v-85bdebae]{width:32vw;padding:3px 6px}.upload-list-item-progress[data-v-85bdebae] .el-progress-bar__outer{height:8px!important}.upload-list-item-url[data-v-85bdebae] .el-input__wrapper{border-radius:8px}.upload-list-item-url[data-v-85bdebae] .el-input__inner{font-size:12px}.upload-list-item-url[data-v-85bdebae] .el-input-group__prepend{font-size:11px;padding:0 8px;border-radius:8px 0 0 8px}.modern-file-action-btn[data-v-85bdebae]{width:34px;height:34px;border-radius:10px;font-size:14px}.upload-list-item-name-wrapper[data-v-85bdebae]{padding:4px 10px;border-radius:8px}.upload-list-item-name[data-v-85bdebae]{font-size:12px;width:32vw}}.el-radio-button{--el-radio-button-checked-bg-color:var(--el-color-primary);--el-radio-button-checked-text-color:var(--el-color-white);--el-radio-button-checked-border-color:var(--el-color-primary);--el-radio-button-disabled-checked-fill:var(--el-border-color-extra-light);display:inline-block;outline:none;position:relative}.el-radio-button__inner{-webkit-appearance:none;background:var(--el-button-bg-color,var(--el-fill-color-blank));border-radius:0;box-sizing:border-box;color:var(--el-button-text-color,var(--el-text-color-regular));cursor:pointer;display:inline-block;font-size:var(--el-font-size-base);font-weight:var(--el-button-font-weight,var(--el-font-weight-primary));line-height:1;margin:0;outline:var(--el-border);padding:8px 15px;position:relative;text-align:center;transition:var(--el-transition-all);-webkit-user-select:none;user-select:none;vertical-align:middle;white-space:nowrap}.el-radio-button__inner.is-round{padding:8px 15px}.el-radio-button__inner:hover{color:var(--el-color-primary)}.el-radio-button__inner [class*=el-icon-]{line-height:.9}.el-radio-button__inner [class*=el-icon-]+span{margin-left:5px}.el-radio-button:first-child .el-radio-button__inner{border-radius:var(--el-border-radius-base) 0 0 var(--el-border-radius-base);box-shadow:none!important}.el-radio-button.is-active .el-radio-button__original-radio:not(:disabled)+.el-radio-button__inner{background-color:var(--el-radio-button-checked-bg-color,var(--el-color-primary));border-color:var(--el-radio-button-checked-border-color,var(--el-color-primary));box-shadow:-1px 0 0 0 var(--el-radio-button-checked-border-color,var(--el-color-primary));color:var(--el-radio-button-checked-text-color,var(--el-color-white))}.el-radio-button__original-radio{opacity:0;outline:none;position:absolute;z-index:-1}.el-radio-button__original-radio:focus-visible+.el-radio-button__inner{border-left:var(--el-border);border-left-color:var(--el-radio-button-checked-border-color,var(--el-color-primary));border-radius:var(--el-border-radius-base);box-shadow:none;outline:2px solid var(--el-radio-button-checked-border-color);outline-offset:1px;z-index:2}.el-radio-button__original-radio:disabled+.el-radio-button__inner{background-color:var(--el-button-disabled-bg-color,var(--el-fill-color-blank));background-image:none;border-color:var(--el-button-disabled-border-color,var(--el-border-color-light));box-shadow:none;color:var(--el-disabled-text-color);cursor:not-allowed}.el-radio-button__original-radio:disabled:checked+.el-radio-button__inner{background-color:var(--el-radio-button-disabled-checked-fill)}.el-radio-button:last-child .el-radio-button__inner{border-radius:0 var(--el-border-radius-base) var(--el-border-radius-base) 0}.el-radio-button:first-child:last-child .el-radio-button__inner{border-radius:var(--el-border-radius-base)}.el-radio-button--large .el-radio-button__inner{border-radius:0;font-size:var(--el-font-size-base);padding:12px 19px}.el-radio-button--large .el-radio-button__inner.is-round{padding:12px 19px}.el-radio-button--small .el-radio-button__inner{border-radius:0;font-size:12px;padding:5px 11px}.el-radio-button--small .el-radio-button__inner.is-round{padding:5px 11px}.el-upload{--el-upload-dragger-padding-horizontal:10px;--el-upload-dragger-padding-vertical:40px;--el-upload-list-picture-card-size:var(--el-upload-picture-card-size);--el-upload-picture-card-size:148px;align-items:center;cursor:pointer;display:inline-flex;justify-content:center;outline:none}.el-upload.is-disabled{cursor:not-allowed}.el-upload.is-disabled:focus{color:inherit}.el-upload.is-disabled:focus,.el-upload.is-disabled:focus .el-upload-dragger{border-color:var(--el-border-color-darker)}.el-upload.is-disabled .el-upload-dragger{background-color:var(--el-disabled-bg-color);cursor:not-allowed}.el-upload.is-disabled .el-upload-dragger .el-upload__text{color:var(--el-text-color-placeholder)}.el-upload.is-disabled .el-upload-dragger .el-upload__text em{color:var(--el-disabled-text-color)}.el-upload.is-disabled .el-upload-dragger:hover{border-color:var(--el-border-color-darker)}.el-upload__input{display:none}.el-upload__tip{color:var(--el-text-color-regular);font-size:12px;margin-top:7px}.el-upload iframe{filter:alpha(opacity=0);left:0;opacity:0;position:absolute;top:0;z-index:-1}.el-upload--picture-card{align-items:center;background-color:var(--el-fill-color-lighter);border:1px dashed var(--el-border-color-darker);border-radius:6px;box-sizing:border-box;cursor:pointer;display:inline-flex;height:var(--el-upload-picture-card-size);justify-content:center;vertical-align:top;width:var(--el-upload-picture-card-size)}.el-upload--picture-card>i{color:var(--el-text-color-secondary);font-size:28px}.el-upload--picture-card:hover{border-color:var(--el-color-primary);color:var(--el-color-primary)}.el-upload.is-drag{display:block}.el-upload:focus{color:var(--el-color-primary)}.el-upload:focus,.el-upload:focus .el-upload-dragger{border-color:var(--el-color-primary)}.el-upload-dragger{background-color:var(--el-fill-color-blank);border:1px dashed var(--el-border-color);border-radius:6px;box-sizing:border-box;cursor:pointer;overflow:hidden;padding:var(--el-upload-dragger-padding-vertical) var(--el-upload-dragger-padding-horizontal);position:relative;text-align:center}.el-upload-dragger .el-icon--upload{color:var(--el-text-color-placeholder);font-size:67px;line-height:50px;margin-bottom:16px}.el-upload-dragger+.el-upload__tip{text-align:center}.el-upload-dragger~.el-upload__files{border-top:var(--el-border);margin-top:7px;padding-top:5px}.el-upload-dragger .el-upload__text{color:var(--el-text-color-regular);font-size:14px;text-align:center}.el-upload-dragger .el-upload__text em{color:var(--el-color-primary);font-style:normal}.el-upload-dragger:hover{border-color:var(--el-color-primary)}.el-upload-dragger.is-dragover{background-color:var(--el-color-primary-light-9);border:2px dashed var(--el-color-primary);padding:calc(var(--el-upload-dragger-padding-vertical) - 1px) calc(var(--el-upload-dragger-padding-horizontal) - 1px)}.el-upload-list{--el-upload-dragger-padding-horizontal:10px;--el-upload-dragger-padding-vertical:40px;--el-upload-list-picture-card-size:var(--el-upload-picture-card-size);--el-upload-picture-card-size:148px;list-style:none;margin:10px 0 0;padding:0;position:relative}.el-upload-list__item{border-radius:4px;box-sizing:border-box;color:var(--el-text-color-regular);font-size:14px;margin-bottom:5px;position:relative;transition:all .5s cubic-bezier(.55,0,.1,1);width:100%}.el-upload-list__item .el-progress{position:absolute;top:20px;width:100%}.el-upload-list__item .el-progress__text{position:absolute;right:0;top:-13px}.el-upload-list__item .el-progress-bar{margin-right:0;padding-right:0}.el-upload-list__item .el-icon--upload-success{color:var(--el-color-success)}.el-upload-list__item .el-icon--close{color:var(--el-text-color-regular);cursor:pointer;display:none;opacity:.75;position:absolute;right:5px;top:50%;transform:translateY(-50%);transition:opacity var(--el-transition-duration)}.el-upload-list__item .el-icon--close:hover{color:var(--el-color-primary);opacity:1}.el-upload-list__item .el-icon--close-tip{color:var(--el-color-primary);cursor:pointer;display:none;font-size:12px;font-style:normal;opacity:1;position:absolute;right:5px;top:1px}.el-upload-list__item:hover{background-color:var(--el-fill-color-light)}.el-upload-list__item:hover .el-icon--close{display:inline-flex}.el-upload-list__item:hover .el-progress__text{display:none}.el-upload-list__item .el-upload-list__item-info{display:inline-flex;flex-direction:column;justify-content:center;margin-left:4px;width:calc(100% - 30px)}.el-upload-list__item.is-success .el-upload-list__item-status-label{display:inline-flex}.el-upload-list__item.is-success .el-upload-list__item-name:focus,.el-upload-list__item.is-success .el-upload-list__item-name:hover{color:var(--el-color-primary);cursor:pointer}.el-upload-list__item.is-success:focus:not(:hover) .el-icon--close-tip{display:inline-block}.el-upload-list__item.is-success:active,.el-upload-list__item.is-success:not(.focusing):focus{outline-width:0}.el-upload-list__item.is-success:active .el-icon--close-tip,.el-upload-list__item.is-success:not(.focusing):focus .el-icon--close-tip{display:none}.el-upload-list__item.is-success:focus .el-upload-list__item-status-label,.el-upload-list__item.is-success:hover .el-upload-list__item-status-label{display:none;opacity:0}.el-upload-list__item-name{align-items:center;color:var(--el-text-color-regular);display:inline-flex;font-size:var(--el-font-size-base);padding:0 4px;text-align:center;transition:color var(--el-transition-duration)}.el-upload-list__item-name .el-icon{color:var(--el-text-color-secondary);margin-right:6px}.el-upload-list__item-file-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.el-upload-list__item-status-label{align-items:center;display:none;height:100%;justify-content:center;line-height:inherit;position:absolute;right:5px;top:0;transition:opacity var(--el-transition-duration)}.el-upload-list__item-delete{color:var(--el-text-color-regular);display:none;font-size:12px;position:absolute;right:10px;top:0}.el-upload-list__item-delete:hover{color:var(--el-color-primary)}.el-upload-list--picture-card{display:inline-flex;flex-wrap:wrap;margin:0}.el-upload-list--picture-card .el-upload-list__item{background-color:var(--el-fill-color-blank);border:1px solid var(--el-border-color);border-radius:6px;box-sizing:border-box;display:inline-flex;height:var(--el-upload-list-picture-card-size);margin:0 8px 8px 0;overflow:hidden;padding:0;width:var(--el-upload-list-picture-card-size)}.el-upload-list--picture-card .el-upload-list__item .el-icon--check,.el-upload-list--picture-card .el-upload-list__item .el-icon--circle-check{color:#fff}.el-upload-list--picture-card .el-upload-list__item .el-icon--close{display:none}.el-upload-list--picture-card .el-upload-list__item:hover .el-upload-list__item-status-label{display:block;opacity:0}.el-upload-list--picture-card .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture-card .el-upload-list__item .el-upload-list__item-name{display:none}.el-upload-list--picture-card .el-upload-list__item-thumbnail{height:100%;object-fit:contain;width:100%}.el-upload-list--picture-card .el-upload-list__item-status-label{background:var(--el-color-success);height:24px;right:-15px;text-align:center;top:-6px;transform:rotate(45deg);width:40px}.el-upload-list--picture-card .el-upload-list__item-status-label i{font-size:12px;margin-top:11px;transform:rotate(-45deg)}.el-upload-list--picture-card .el-upload-list__item-actions{align-items:center;background-color:var(--el-overlay-color-lighter);color:#fff;cursor:default;display:inline-flex;font-size:20px;height:100%;justify-content:center;left:0;opacity:0;position:absolute;top:0;transition:opacity var(--el-transition-duration);width:100%}.el-upload-list--picture-card .el-upload-list__item-actions span{cursor:pointer;display:none}.el-upload-list--picture-card .el-upload-list__item-actions span+span{margin-left:16px}.el-upload-list--picture-card .el-upload-list__item-actions .el-upload-list__item-delete{color:inherit;font-size:inherit;position:static}.el-upload-list--picture-card .el-upload-list__item-actions:hover{opacity:1}.el-upload-list--picture-card .el-upload-list__item-actions:hover span{display:inline-flex}.el-upload-list--picture-card .el-progress{bottom:auto;left:50%;top:50%;transform:translate(-50%,-50%);width:126px}.el-upload-list--picture-card .el-progress .el-progress__text{top:50%}.el-upload-list--picture .el-upload-list__item{align-items:center;background-color:var(--el-fill-color-blank);border:1px solid var(--el-border-color);border-radius:6px;box-sizing:border-box;display:flex;margin-top:10px;overflow:hidden;padding:10px;z-index:0}.el-upload-list--picture .el-upload-list__item .el-icon--check,.el-upload-list--picture .el-upload-list__item .el-icon--circle-check{color:#fff}.el-upload-list--picture .el-upload-list__item:hover .el-upload-list__item-status-label{display:inline-flex;opacity:0}.el-upload-list--picture .el-upload-list__item:hover .el-progress__text{display:block}.el-upload-list--picture .el-upload-list__item.is-success .el-upload-list__item-name i{display:none}.el-upload-list--picture .el-upload-list__item .el-icon--close{top:5px;transform:translateY(0)}.el-upload-list--picture .el-upload-list__item-thumbnail{align-items:center;background-color:var(--el-color-white);display:inline-flex;height:70px;justify-content:center;object-fit:contain;position:relative;width:70px;z-index:1}.el-upload-list--picture .el-upload-list__item-status-label{background:var(--el-color-success);height:26px;position:absolute;right:-17px;text-align:center;top:-7px;transform:rotate(45deg);width:46px}.el-upload-list--picture .el-upload-list__item-status-label i{font-size:12px;margin-top:12px;transform:rotate(-45deg)}.el-upload-list--picture .el-progress{position:relative;top:-7px}.el-upload-cover{cursor:default;height:100%;left:0;overflow:hidden;position:absolute;top:0;width:100%;z-index:10}.el-upload-cover:after{content:"";display:inline-block;height:100%;vertical-align:middle}.el-upload-cover img{display:block;height:100%;width:100%}.el-upload-cover__label{background:var(--el-color-success);height:24px;right:-15px;text-align:center;top:-6px;transform:rotate(45deg);width:40px}.el-upload-cover__label i{color:#fff;font-size:12px;margin-top:11px;transform:rotate(-45deg)}.el-upload-cover__progress{display:inline-block;position:static;vertical-align:middle;width:243px}.el-upload-cover__progress+.el-upload__inner{opacity:0}.el-upload-cover__content{height:100%;left:0;position:absolute;top:0;width:100%}.el-upload-cover__interact{background-color:var(--el-overlay-color-light);bottom:0;height:100%;left:0;position:absolute;text-align:center;width:100%}.el-upload-cover__interact .btn{color:#fff;cursor:pointer;display:inline-block;font-size:14px;margin-top:60px;transition:var(--el-transition-md-fade);vertical-align:middle}.el-upload-cover__interact .btn i{margin-top:0}.el-upload-cover__interact .btn span{opacity:0;transition:opacity .15s linear}.el-upload-cover__interact .btn:not(:first-child){margin-left:35px}.el-upload-cover__interact .btn:hover{transform:translateY(-13px)}.el-upload-cover__interact .btn:hover span{opacity:1}.el-upload-cover__interact .btn i{color:#fff;display:block;font-size:24px;line-height:inherit;margin:0 auto 5px}.el-upload-cover__title{background-color:#fff;bottom:0;color:var(--el-text-color-primary);font-size:14px;font-weight:400;height:36px;left:0;line-height:36px;margin:0;overflow:hidden;padding:0 10px;position:absolute;text-align:left;text-overflow:ellipsis;white-space:nowrap;width:100%}.el-upload-cover+.el-upload__inner{opacity:0;position:relative;z-index:1}@property --border-angle{syntax:"";initial-value:0deg;inherits:false}@keyframes borderRotate-a12d47f4{0%{--border-angle:0deg}to{--border-angle:360deg}}.upload-form[data-v-a12d47f4],.upload-list-card[data-v-a12d47f4]{display:flex;flex-direction:column;justify-content:center;align-items:center}.upload-list-card[data-v-a12d47f4]{width:55vw;height:7vh;margin-top:10px;border-radius:15px;background-color:var(--upload-list-card-bg-color);backdrop-filter:blur(10px);border:var(--upload-list-card-border);box-shadow:var(--upload-list-card-box-shadow)!important;transition:height .3s ease;overflow:hidden}.upload-list-card[data-v-a12d47f4] .el-card__body{padding:0;width:100%;overflow:hidden}.upload-list-container[data-v-a12d47f4]{width:55vw;height:7vh;transition:height .3s ease;overflow:hidden}@media (max-width:768px){.upload-list-card[data-v-a12d47f4],.upload-list-container[data-v-a12d47f4]{width:70vw}}.upload-list-card.upload-list-busy[data-v-a12d47f4],.upload-list-container.upload-list-busy[data-v-a12d47f4]{height:40vh}.upload-list-card.is-uploading[data-v-a12d47f4]{border:1px solid var(--el-upload-dragger-uniform-color,#409eff)!important;box-shadow:0 0 20px color-mix(in srgb,var(--el-upload-dragger-uniform-color,#409eff) 30%,transparent),0 0 40px color-mix(in srgb,var(--el-upload-dragger-uniform-color,#409eff) 15%,transparent),inset 0 0 20px color-mix(in srgb,var(--el-upload-dragger-uniform-color,#409eff) 8%,transparent)!important}.upload-card-wrapper[data-v-a12d47f4]{position:relative;overflow:visible}.upload-card-glow[data-v-a12d47f4]{position:absolute;width:200px;height:200px;border-radius:50%;background:radial-gradient(circle,rgba(96,165,250,.2) 0,transparent 70%);pointer-events:none;transform:translate(-50%,-50%);opacity:0;transition:opacity .3s ease;z-index:10}.upload-card[data-v-a12d47f4]{width:55vw;padding:20px;background:none}@media (max-width:768px){.upload-card[data-v-a12d47f4]{width:70vw}}.upload-card-busy[data-v-a12d47f4] .el-upload-dragger{height:17vh}[data-v-a12d47f4] .el-upload-dragger{display:flex;flex-direction:column;justify-content:center;align-items:center;height:45vh;border-radius:15px;border:var(--el-upload-dragger-border);opacity:.7;background-color:var(--el-upload-dragger-bg-color);backdrop-filter:blur(10px);transition:all .3s ease}[data-v-a12d47f4] .el-upload:focus .el-upload-dragger{border-color:var(--el-upload-dragger-border-color)}[data-v-a12d47f4] .el-upload-dragger.is-dragover,[data-v-a12d47f4] .el-upload-dragger:hover{opacity:.8;box-shadow:var(--el-upload-dragger-hover-box-shadow)}.is-uploading[data-v-a12d47f4] .el-upload-dragger{border-color:transparent!important}.upload-card.is-uploading[data-v-a12d47f4]{position:relative;background:none}.upload-card.is-uploading[data-v-a12d47f4]:before{content:"";position:absolute;top:20px;left:20px;right:20px;bottom:20px;border-radius:15px;padding:2px;background:conic-gradient(from var(--border-angle),transparent 0deg,transparent 30deg,var(--el-upload-dragger-uniform-color,#409eff) 60deg,color-mix(in srgb,var(--el-upload-dragger-uniform-color,#409eff) 70%,#fff) 90deg,transparent 120deg,transparent 180deg,color-mix(in srgb,var(--el-upload-dragger-uniform-color,#409eff) 70%,#fff) 210deg,var(--el-upload-dragger-uniform-color,#409eff) 240deg,transparent 270deg,transparent 1turn);-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;animation:borderRotate-a12d47f4 2s linear infinite;pointer-events:none;z-index:1}.el-upload__text[data-v-a12d47f4]{font-weight:700;font-size:medium;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:all .3s ease}@media (max-width:768px){.el-upload__text[data-v-a12d47f4]{font-size:small}}.el-upload__text.upload-list-busy[data-v-a12d47f4]{font-size:small}.el-icon--upload[data-v-a12d47f4]{font-size:100px;transition:font-size .3s ease;color:var(--el-icon--upload-color)}.el-icon--upload.upload-list-busy[data-v-a12d47f4]{font-size:60px}@media (max-width:768px){.el-icon--upload[data-v-a12d47f4]{font-size:50px}.el-icon--upload.upload-list-busy[data-v-a12d47f4]{font-size:30px}}.paste-card[data-v-a12d47f4]{display:flex;flex-direction:column;justify-content:center;align-items:center;height:45vh;border-radius:15px;border:var(--el-upload-dragger-border);box-shadow:none;opacity:.7;background-color:var(--el-upload-dragger-bg-color);backdrop-filter:blur(10px);transition:all .3s ease;box-sizing:border-box}.paste-card[data-v-a12d47f4]:hover{opacity:.8;box-shadow:var(--el-upload-dragger-hover-box-shadow)}.paste-card.is-uploading[data-v-a12d47f4]{position:relative;border-color:transparent!important;overflow:visible}.paste-card.is-uploading[data-v-a12d47f4]:before{content:"";position:absolute;inset:-4px;border-radius:15px;padding:2px;background:conic-gradient(from var(--border-angle),transparent 0deg,transparent 30deg,var(--el-upload-dragger-uniform-color,#409eff) 60deg,color-mix(in srgb,var(--el-upload-dragger-uniform-color,#409eff) 70%,#fff) 90deg,transparent 120deg,transparent 180deg,color-mix(in srgb,var(--el-upload-dragger-uniform-color,#409eff) 70%,#fff) 210deg,var(--el-upload-dragger-uniform-color,#409eff) 240deg,transparent 270deg,transparent 1turn);-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;animation:borderRotate-a12d47f4 2s linear infinite;pointer-events:none;z-index:1}.paste-card[data-v-a12d47f4] .el-card__body{padding:0;width:100%;height:100%;display:flex;flex-direction:column;justify-content:center;align-items:center}.upload-card-busy.paste-card[data-v-a12d47f4]{height:17vh}.upload-card-textarea[data-v-a12d47f4]{width:50vw;height:70%;border-radius:16px;background:var(--textarea-bg,linear-gradient(135deg,rgba(64,158,255,.03) 0,rgba(64,158,255,.01) 100%));backdrop-filter:blur(12px);transition:all .3s cubic-bezier(.4,0,.2,1);box-sizing:border-box;display:flex;position:relative}.upload-card-busy .upload-card-textarea[data-v-a12d47f4]{height:50%}.upload-card-textarea[data-v-a12d47f4]:before{content:"";position:absolute;inset:-1px;border-radius:17px;padding:1px;background:linear-gradient(135deg,rgba(64,158,255,.3),rgba(64,158,255,.1) 50%,rgba(64,158,255,.3));-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none;opacity:.6;transition:opacity .3s ease}.upload-card-textarea[data-v-a12d47f4]:hover:before{opacity:1}.upload-card-textarea[data-v-a12d47f4]:focus-within:before{opacity:1;background:linear-gradient(135deg,rgba(64,158,255,.6),rgba(64,158,255,.2) 50%,rgba(64,158,255,.6))}[data-v-a12d47f4] .el-textarea__inner{border-radius:16px;background:var(--textarea-inner-bg,rgba(0,0,0,.02));backdrop-filter:blur(12px);transition:all .3s cubic-bezier(.4,0,.2,1);resize:none;border:1px solid transparent;padding:16px 20px;font-size:14px;line-height:1.6;color:var(--el-text-color-primary)}[data-v-a12d47f4] .el-textarea__inner::-moz-placeholder{color:var(--el-text-color-placeholder);font-weight:400;opacity:.7}[data-v-a12d47f4] .el-textarea__inner::placeholder{color:var(--el-text-color-placeholder);font-weight:400;opacity:.7}[data-v-a12d47f4] .el-textarea__inner:hover{background:var(--textarea-inner-hover-bg,rgba(64,158,255,.03))}[data-v-a12d47f4] .el-textarea__inner:focus{border-color:transparent;box-shadow:0 0 0 3px rgba(64,158,255,.15),0 4px 20px rgba(64,158,255,.1),inset 0 1px 3px rgba(0,0,0,.05);background:var(--textarea-inner-focus-bg,rgba(64,158,255,.02))}.upload-card-textarea[data-v-a12d47f4] ::-webkit-scrollbar{width:6px;height:6px}.upload-card-textarea[data-v-a12d47f4] ::-webkit-scrollbar-track{background:transparent;border-radius:6px;margin:8px}.upload-card-textarea[data-v-a12d47f4] ::-webkit-scrollbar-thumb{background:linear-gradient(180deg,rgba(64,158,255,.4),rgba(64,158,255,.6));border-radius:6px;-webkit-transition:background .3s ease;transition:background .3s ease}.upload-card-textarea[data-v-a12d47f4] ::-webkit-scrollbar-thumb:hover{background:linear-gradient(180deg,rgba(64,158,255,.6),rgba(64,158,255,.8))}.paste-card-actions[data-v-a12d47f4]{display:flex;justify-content:space-between;align-items:center;width:50vw;margin-top:3%}.paste-card-upload-button[data-v-a12d47f4]{min-width:100px;height:42px;border-radius:14px!important;font-weight:600;font-size:15px;letter-spacing:2px;background:linear-gradient(135deg,#409eff,#66b1ff)!important;border:none!important;box-shadow:0 4px 15px rgba(64,158,255,.35),inset 0 1px 0 hsla(0,0%,100%,.2);transition:all .3s cubic-bezier(.4,0,.2,1)!important;position:relative;overflow:hidden}.paste-card-upload-button[data-v-a12d47f4]:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,hsla(0,0%,100%,.25),transparent);transition:left .6s ease}.paste-card-upload-button[data-v-a12d47f4]:hover{transform:translateY(-3px) scale(1.02);box-shadow:0 8px 25px rgba(64,158,255,.45),inset 0 1px 0 hsla(0,0%,100%,.25)}.paste-card-upload-button[data-v-a12d47f4]:hover:before{left:100%}.paste-card-upload-button[data-v-a12d47f4]:active{transform:translateY(-1px) scale(.98)}.upload-card-busy .paste-card-upload-button[data-v-a12d47f4]{min-width:70px;height:32px;border-radius:10px!important;font-size:13px;letter-spacing:1px}.upload-card-busy .paste-card-actions[data-v-a12d47f4]{margin-top:2%}.paste-card-method-group[data-v-a12d47f4]{background:var(--paste-method-group-bg,rgba(64,158,255,.08));border-radius:14px;padding:4px;border:1px solid var(--paste-method-group-border,rgba(64,158,255,.15))}.paste-card-method-group[data-v-a12d47f4] .el-radio-button__inner{transition:all .3s cubic-bezier(.4,0,.2,1);border-radius:10px!important;border:none!important;background:transparent;font-weight:500;padding:10px 20px;color:var(--el-text-color-regular)}.paste-card-method-group[data-v-a12d47f4] .el-radio-button:first-child .el-radio-button__inner,.paste-card-method-group[data-v-a12d47f4] .el-radio-button:last-child .el-radio-button__inner{border-radius:10px!important}.paste-card-method-group[data-v-a12d47f4] .el-radio-button__inner:hover{background:var(--paste-method-hover-bg,rgba(64,158,255,.12));color:var(--el-color-primary)}.paste-card-method-group[data-v-a12d47f4] .el-radio-button__original-radio:checked+.el-radio-button__inner{background:linear-gradient(135deg,#409eff,#66b1ff)!important;color:#fff!important;box-shadow:0 3px 10px rgba(64,158,255,.35)}@media (max-width:768px){.paste-card[data-v-a12d47f4]{height:auto;min-height:30vh;padding:6px;border-radius:12px}.upload-card-busy.paste-card[data-v-a12d47f4]{height:auto;min-height:18vh;padding:5px}.upload-card-textarea[data-v-a12d47f4]{margin-top:4px;width:calc(100% - 4px)!important}.upload-card-textarea[data-v-a12d47f4]:before{border-radius:11px}[data-v-a12d47f4] .el-textarea__inner{border-radius:10px;padding:8px 10px;font-size:12px}.paste-card-actions[data-v-a12d47f4]{width:100%!important;margin-top:6px;gap:6px}.paste-card-upload-button[data-v-a12d47f4]{height:30px;min-width:55px;border-radius:8px!important;font-size:12px;letter-spacing:.5px;padding:0 10px}.paste-card-method-group[data-v-a12d47f4]{border-radius:8px;padding:2px;height:30px;display:flex;align-items:center}.paste-card-method-group[data-v-a12d47f4] .el-radio-button__inner{padding:4px 10px;font-size:11px;border-radius:6px!important;height:26px;display:flex;align-items:center}}.upload-list-dashboard[data-v-a12d47f4]{display:flex;justify-content:space-between;align-items:center;height:7vh;padding:0 15px;position:sticky;top:0;z-index:1;border-radius:15px;transition:all .3s ease}.upload-list-dashboard.list-scrolled[data-v-a12d47f4]{background-color:var(--upload-list-dashboard-bg-color);box-shadow:var(--upload-list-dashboard-shadow)}[data-v-a12d47f4] .el-upload-dragger{position:relative;overflow:hidden}[data-v-a12d47f4] .el-upload-dragger:before{background-image:radial-gradient(2px 2px at 10% 10%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2px 2px at 20% 30%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2px 2px at 30% 10%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2px 2px at 40% 30%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2px 2px at 50% 10%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2px 2px at 60% 30%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2px 2px at 70% 10%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2px 2px at 80% 30%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2px 2px at 90% 10%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2px 2px at 15% 70%,var(--el-upload-dragger-uniform-color) 50%,transparent 0);background-size:200px 200px}[data-v-a12d47f4] .el-upload-dragger:after,[data-v-a12d47f4] .el-upload-dragger:before{content:"";position:absolute;inset:0;pointer-events:none;opacity:0;z-index:0;transition:opacity .6s ease}[data-v-a12d47f4] .el-upload-dragger:after{background-image:radial-gradient(3px 3px at 15% 15%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(3px 3px at 50% 50%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(3px 3px at 85% 85%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2.5px 2.5px at 35% 65%,var(--el-upload-dragger-uniform-color) 50%,transparent 0),radial-gradient(2.5px 2.5px at 65% 35%,var(--el-upload-dragger-uniform-color) 50%,transparent 0);background-size:150px 150px}.upload-card[data-v-a12d47f4]:hover .el-upload-dragger:before{opacity:.3;animation:starScroll-a12d47f4 60s linear infinite}.upload-card[data-v-a12d47f4]:hover .el-upload-dragger:after{opacity:.6;animation:starScroll-a12d47f4 40s linear infinite,starPulse-a12d47f4 4s ease-in-out infinite}@keyframes starScroll-a12d47f4{0%{background-position:0 0}to{background-position:100px 100px}}@keyframes starPulse-a12d47f4{0%,to{opacity:.6}50%{opacity:.3}}.modern-action-group[data-v-a12d47f4]{display:flex;align-items:center;gap:6px;padding:4px;background:var(--modern-action-group-bg,rgba(64,158,255,.08));border-radius:14px;border:1px solid var(--modern-action-group-border,rgba(64,158,255,.15));box-shadow:0 2px 8px var(--modern-action-group-shadow,rgba(0,0,0,.06));transition:all .3s cubic-bezier(.4,0,.2,1)}.modern-action-group[data-v-a12d47f4]:hover{background:var(--modern-action-group-hover-bg,rgba(64,158,255,.12));box-shadow:0 4px 16px var(--modern-action-group-hover-shadow,rgba(64,158,255,.15));transform:translateY(-1px)}.modern-action-btn[data-v-a12d47f4]{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border:none;border-radius:10px;background:var(--modern-action-btn-bg,linear-gradient(135deg,#409eff 0,#66b1ff 100%));color:#fff;cursor:pointer;transition:all .25s cubic-bezier(.4,0,.2,1);font-size:14px;box-shadow:0 2px 6px rgba(64,158,255,.25);position:relative;overflow:hidden;outline:none!important}.modern-action-btn[data-v-a12d47f4]:focus,.modern-action-btn[data-v-a12d47f4]:focus-visible{outline:none!important}.modern-action-btn[data-v-a12d47f4]:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,hsla(0,0%,100%,.2),transparent);transition:left .5s ease}.modern-action-btn[data-v-a12d47f4]:hover{transform:translateY(-2px) scale(1.05);box-shadow:0 4px 12px rgba(64,158,255,.4)}.modern-action-btn[data-v-a12d47f4]:hover:before{left:100%}.modern-action-btn[data-v-a12d47f4]:active{transform:translateY(0) scale(.98);box-shadow:0 1px 4px rgba(64,158,255,.3)}.modern-action-btn-danger[data-v-a12d47f4]{background:var(--modern-action-btn-danger-bg,linear-gradient(135deg,#f56c6c 0,#f78989 100%));box-shadow:0 2px 6px hsla(0,87%,69%,.25)}.modern-action-btn-danger[data-v-a12d47f4]:hover{box-shadow:0 4px 12px hsla(0,87%,69%,.4)}.modern-dropdown-item-content[data-v-a12d47f4]{display:flex;align-items:center;justify-content:space-between;width:100%;gap:12px;padding:4px 0}.modern-dropdown-item-content span[data-v-a12d47f4]{font-weight:500;color:var(--el-text-color-primary)}.upload-list-dashboard-title[data-v-a12d47f4]{font-size:14px;font-weight:600;display:flex;align-items:center;gap:8px;padding:6px 14px;background:var(--dashboard-title-bg,linear-gradient(135deg,rgba(64,158,255,.06) 0,transparent 100%));border-radius:12px;color:var(--el-text-color-primary)}.upload-list-dashboard-title .el-icon[data-v-a12d47f4]{font-size:16px;margin-right:4px;opacity:.85}@media (max-width:768px){.modern-action-group[data-v-a12d47f4]{gap:4px;padding:3px;border-radius:12px}.modern-action-btn[data-v-a12d47f4]{width:32px;height:32px;border-radius:8px;font-size:12px}.upload-list-dashboard-title[data-v-a12d47f4]{font-size:12px;padding:4px 10px}}.logo-link[data-v-17f54292]{text-decoration:none;display:inline-block}.logo[data-v-17f54292]{transition:all .3s ease;border-radius:8px}.logo--fixed[data-v-17f54292]{position:fixed;top:20px;left:20px;z-index:100}.logo--relative[data-v-17f54292]{position:relative}.logo--absolute[data-v-17f54292]{position:absolute;top:5px;left:5px;z-index:100}.logo--static[data-v-17f54292]{position:static}.logo--small[data-v-17f54292]{height:50px;width:50px}.logo--normal[data-v-17f54292]{height:70px;width:70px}.logo--large[data-v-17f54292]{height:90px;width:90px}.logo--hover-enabled[data-v-17f54292]:hover{transform:scale(1.1) rotate(5deg);filter:drop-shadow(0 0 10px var(--logo-glow-color))}@media (max-width:768px){.logo--small[data-v-17f54292]{height:40px;width:40px}.logo--normal[data-v-17f54292]{height:60px;width:60px}.logo--large[data-v-17f54292]{height:75px;width:75px}}.logo[data-v-17f54292]:focus{outline:2px solid var(--el-color-primary);outline-offset:2px}.logo[data-v-17f54292]{filter:var(--logo-filter,none);opacity:var(--logo-opacity,1)}@media (prefers-color-scheme:dark){.logo[data-v-17f54292]{filter:var(--logo-dark-filter,brightness(.9))}}.el-autocomplete{--el-input-text-color:var(--el-text-color-regular);--el-input-border:var(--el-border);--el-input-hover-border:var(--el-border-color-hover);--el-input-focus-border:var(--el-color-primary);--el-input-transparent-border:0 0 0 1px transparent inset;--el-input-border-color:var(--el-border-color);--el-input-border-radius:var(--el-border-radius-base);--el-input-bg-color:var(--el-fill-color-blank);--el-input-icon-color:var(--el-text-color-placeholder);--el-input-placeholder-color:var(--el-text-color-placeholder);--el-input-hover-border-color:var(--el-border-color-hover);--el-input-clear-hover-color:var(--el-text-color-secondary);--el-input-focus-border-color:var(--el-color-primary);--el-input-width:100%;display:inline-block;position:relative;width:var(--el-input-width)}.el-autocomplete__popper.el-popper{background:var(--el-bg-color-overlay);box-shadow:var(--el-box-shadow-light)}.el-autocomplete__popper.el-popper,.el-autocomplete__popper.el-popper .el-popper__arrow:before{border:1px solid var(--el-border-color-light)}.el-autocomplete__popper.el-popper[data-popper-placement^=top] .el-popper__arrow:before{border-left-color:transparent;border-top-color:transparent}.el-autocomplete__popper.el-popper[data-popper-placement^=bottom] .el-popper__arrow:before{border-bottom-color:transparent;border-right-color:transparent}.el-autocomplete__popper.el-popper[data-popper-placement^=left] .el-popper__arrow:before{border-bottom-color:transparent;border-left-color:transparent}.el-autocomplete__popper.el-popper[data-popper-placement^=right] .el-popper__arrow:before{border-right-color:transparent;border-top-color:transparent}.el-autocomplete-suggestion{border-radius:var(--el-border-radius-base);box-sizing:border-box}.el-autocomplete-suggestion__header{border-bottom:1px solid var(--el-border-color-lighter);padding:10px}.el-autocomplete-suggestion__footer{border-top:1px solid var(--el-border-color-lighter);padding:10px}.el-autocomplete-suggestion__wrap{box-sizing:border-box;max-height:280px;padding:10px 0}.el-autocomplete-suggestion__list{margin:0;padding:0}.el-autocomplete-suggestion li{color:var(--el-text-color-regular);cursor:pointer;font-size:var(--el-font-size-base);line-height:34px;list-style:none;margin:0;overflow:hidden;padding:0 20px;text-align:left;text-overflow:ellipsis;white-space:nowrap}.el-autocomplete-suggestion li.highlighted,.el-autocomplete-suggestion li:hover{background-color:var(--el-fill-color-light)}.el-autocomplete-suggestion li.divider{border-top:1px solid var(--el-color-black);margin-top:6px}.el-autocomplete-suggestion li.divider:last-child{margin-bottom:-6px}.el-autocomplete-suggestion.is-loading li{align-items:center;color:var(--el-text-color-secondary);cursor:default;display:flex;font-size:20px;height:100px;justify-content:center}.el-autocomplete-suggestion.is-loading li:hover{background-color:var(--el-bg-color-overlay)}.directory-suggestion-input[data-v-47722a72]{width:100%;height:100%}#themeToggle[data-v-466b2b5c]{border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem}@media (max-width:768px){#themeToggle[data-v-466b2b5c]{width:2rem;height:2rem}}.theme_toggle_circle1[data-v-466b2b5c]{transition:cx .5s ease-in-out,cy .5s ease-in-out,r .5s ease-in-out}.theme_toggle_circle2[data-v-466b2b5c]{transition:all .5s ease-in-out;fill:var(--theme-toggle-bg-color)}.theme_toggle_svg[data-v-466b2b5c]{transition:transform .5s cubic-bezier(.68,-.55,.27,1.55);color:var(--theme-toggle-color)}.dark.theme_toggle_svg[data-v-466b2b5c]{transform:rotate(40deg)}.theme_toggle_g[data-v-466b2b5c]{transition:opacity .5s ease-in-out}.icon-fade-enter-active[data-v-466b2b5c],.icon-fade-leave-active[data-v-466b2b5c]{transition:opacity .3s ease-in-out,transform .3s ease-in-out}.icon-fade-enter-from[data-v-466b2b5c]{opacity:0;transform:scale(.8) rotate(-90deg)}.icon-fade-leave-to[data-v-466b2b5c]{opacity:0;transform:scale(.8) rotate(90deg)}.icon-fade-enter-to[data-v-466b2b5c],.icon-fade-leave-from[data-v-466b2b5c]{opacity:1;transform:scale(1) rotate(0deg)}.auto-icon[data-v-466b2b5c]{display:inline-block}.container[data-v-1db22ef8]{background:var(--bg-color);min-height:100vh}.rotate[data-v-1db22ef8]{animation:spin-1db22ef8 2s ease-in-out}.scale[data-v-1db22ef8]{animation:scale-1db22ef8 .5s ease-in-out}@keyframes spin-1db22ef8{0%{transform:rotate(0deg)}25%{transform:rotate(5deg)}50%{transform:rotate(0deg)}75%{transform:rotate(-3deg)}to{transform:rotate(0deg)}}@keyframes streamer-1db22ef8{0%{background-position:200%}to{background-position:-200%}}@keyframes rotate-shake-1db22ef8{0%{transform:rotate(0deg)}50%{transform:rotate(10deg)}to{transform:rotate(0deg)}}@keyframes shake-1db22ef8{0%{transform:translateX(0)}50%{transform:translateX(-1px)}to{transform:translateX(0)}}@keyframes scale-1db22ef8{0%{transform:scale(1)}50%{transform:scale(1.1)}to{transform:scale(1)}}.desktop-only[data-v-1db22ef8]{display:inline-block}.mobile-only[data-v-1db22ef8]{display:none}@media (max-width:768px){.desktop-only[data-v-1db22ef8]{display:none!important}.mobile-only[data-v-1db22ef8]{display:flex!important}}.toggle-dark-button[data-v-1db22ef8]{right:30px}.toggle-dark-button[data-v-1db22ef8],.upload-method-button[data-v-1db22ef8]{border:none;transition:all .3s ease;background-color:var(--toolbar-button-bg-color);box-shadow:var(--toolbar-button-shadow);backdrop-filter:blur(10px);border-radius:12px;position:fixed;top:30px}.upload-method-button[data-v-1db22ef8]{width:2.5rem;height:2.5rem;display:flex;justify-content:center;align-items:center;color:var(--theme-toggle-color);right:130px;outline:none}@media (max-width:768px){.upload-method-button[data-v-1db22ef8]{width:2rem;height:2rem}}.upload-method-icon[data-v-1db22ef8]{outline:none}.history-button[data-v-1db22ef8]{width:2.5rem;height:2.5rem;display:flex;justify-content:center;align-items:center;position:fixed;top:30px;right:180px;border:none;transition:all .3s ease;background-color:var(--toolbar-button-bg-color);box-shadow:var(--toolbar-button-shadow);backdrop-filter:blur(10px);color:var(--theme-toggle-color);z-index:100;border-radius:12px;outline:none}@media (max-width:768px){.history-button[data-v-1db22ef8]{width:2rem;height:2rem;top:85px;right:80px}}.history-button[data-v-1db22ef8]:hover{transform:scale(1.05);box-shadow:var(--toolbar-button-shadow-hover)}.announcement-button[data-v-1db22ef8]{width:2.5rem;height:2.5rem;display:flex;justify-content:center;align-items:center;position:fixed;top:30px;right:230px;border:none;transition:all .3s ease;background-color:var(--toolbar-button-bg-color);box-shadow:var(--toolbar-button-shadow);backdrop-filter:blur(10px);color:var(--theme-toggle-color);z-index:100;border-radius:12px;outline:none}.announcement-button[data-v-1db22ef8]:hover:not(:disabled){transform:scale(1.05);box-shadow:var(--toolbar-button-shadow-hover)}.announcement-button[data-v-1db22ef8]:disabled{opacity:.5;cursor:not-allowed}.mobile-more-dropdown[data-v-1db22ef8]{position:fixed;top:30px;right:30px;z-index:100}.mobile-more-button[data-v-1db22ef8]{width:2rem;height:2rem;display:flex;justify-content:center;align-items:center;border:none;transition:all .3s ease;background-color:var(--toolbar-button-bg-color);box-shadow:var(--toolbar-button-shadow);backdrop-filter:blur(10px);color:var(--theme-toggle-color);border-radius:12px;outline:none;padding:0}.mobile-more-button[data-v-1db22ef8]:hover{transform:scale(1.05);box-shadow:var(--toolbar-button-shadow-hover)}.upload-folder-container[data-v-1db22ef8]{display:flex;align-items:center;position:fixed;top:30px;right:280px;z-index:100}.upload-folder-container.no-announcement[data-v-1db22ef8]{right:230px}@media (max-width:768px){.upload-folder-container.no-announcement[data-v-1db22ef8],.upload-folder-container[data-v-1db22ef8]{right:110px}}.upload-folder[data-v-1db22ef8]{width:100px;height:2.5rem;border-radius:12px;transition:all .3s ease,width .4s ease}.upload-folder.active[data-v-1db22ef8]{width:200px}@media (max-width:768px){.upload-folder[data-v-1db22ef8]{width:80px;height:2rem}.upload-folder.active[data-v-1db22ef8]{width:120px}}.directory-tree-trigger[data-v-1db22ef8]{width:2.5rem;height:2.5rem;display:flex;justify-content:center;align-items:center;border:none;margin-left:10px;transition:all .3s ease;background-color:var(--toolbar-button-bg-color);box-shadow:var(--toolbar-button-shadow);backdrop-filter:blur(10px);color:var(--theme-toggle-color);border-radius:12px;outline:none}.directory-tree-trigger[data-v-1db22ef8]:hover{transform:scale(1.05);box-shadow:var(--toolbar-button-shadow-hover)}@media (max-width:768px){.directory-tree-trigger[data-v-1db22ef8]{width:2rem;height:2rem}}.upload-folder[data-v-1db22ef8] .inner-folder-input{width:100%;height:100%}.upload-folder[data-v-1db22ef8] .el-input{height:100%}.upload-folder[data-v-1db22ef8] .el-input__wrapper{border-radius:12px;height:100%}.info-container[data-v-1db22ef8],.upload-folder[data-v-1db22ef8] .el-input__wrapper{background-color:var(--toolbar-button-bg-color);box-shadow:var(--toolbar-button-shadow);backdrop-filter:blur(10px);border:none}.info-container[data-v-1db22ef8]{width:2.5rem;height:2.5rem;display:flex;justify-content:center;align-items:center;border-radius:12px;color:var(--theme-toggle-color);transition:all .3s ease;position:fixed;top:30px;right:80px;cursor:pointer}.info-icon[data-v-1db22ef8]{outline:none}@media (max-width:768px){.info-container[data-v-1db22ef8]{width:2rem;height:2rem;right:70px}}.toolbar-manage[data-v-1db22ef8]{position:fixed;bottom:50px;right:30px;z-index:200}.toolbar-manage-button[data-v-1db22ef8]{border:none;transition:all .3s ease,border-radius .4s ease;margin-left:0;background-color:var(--toolbar-button-bg-color);box-shadow:var(--toolbar-button-shadow);backdrop-filter:blur(10px);color:var(--toolbar-button-color);outline:none;border-radius:12px}.toolbar-manage-button.active[data-v-1db22ef8]{border-radius:50%}.toolbar[data-v-1db22ef8]{position:fixed;bottom:50px;right:30px;display:flex;flex-direction:column;align-items:center;z-index:100}.toolbar-button[data-v-1db22ef8]{border:none;transition:all .3s ease;margin-left:0;background-color:var(--toolbar-button-bg-color);box-shadow:var(--toolbar-button-shadow);backdrop-filter:blur(10px);color:var(--toolbar-button-color)}.info-container[data-v-1db22ef8]:hover,.toggle-dark-button[data-v-1db22ef8]:hover,.toolbar-button[data-v-1db22ef8]:hover,.toolbar-manage-button[data-v-1db22ef8]:hover,.upload-folder[data-v-1db22ef8]:hover,.upload-method-button[data-v-1db22ef8]:hover{transform:scale(1.05);box-shadow:var(--toolbar-button-shadow-hover)}.compress-button[data-v-1db22ef8]{position:fixed;bottom:50px;right:30px;opacity:0;transition:all .3s ease,transform .4s cubic-bezier(.68,-.55,.27,1.55),opacity .3s cubic-bezier(.68,-.55,.27,1.55);pointer-events:none}.compress-button.active[data-v-1db22ef8]{transform:translateY(-75px);opacity:1}.link-button[data-v-1db22ef8]{position:fixed;bottom:50px;right:30px;opacity:0;transition:all .3s ease,transform .4s cubic-bezier(.68,-.55,.27,1.55),opacity .3s cubic-bezier(.68,-.55,.27,1.55);pointer-events:none}.link-button.active[data-v-1db22ef8]{transform:translateY(-58px) translateX(-50px);opacity:1}.config-button[data-v-1db22ef8]{position:fixed;bottom:50px;right:30px;opacity:0;transition:all .3s ease,transform .4s cubic-bezier(.68,-.55,.27,1.55),opacity .3s cubic-bezier(.68,-.55,.27,1.55);pointer-events:none}.config-button.active[data-v-1db22ef8]{transform:translateY(-11px) translateX(-75px);opacity:1}.sign-out-button[data-v-1db22ef8]{position:fixed;bottom:50px;right:30px;opacity:0;transition:all .3s ease,transform .4s cubic-bezier(.68,-.55,.27,1.55),opacity .3s cubic-bezier(.68,-.55,.27,1.55);pointer-events:none}.sign-out-button.active[data-v-1db22ef8]{transform:translateY(42px) translateX(-68px);opacity:1}@media (min-width:768px){.compress-button[data-v-1db22ef8]:hover{transform:translateY(-77px)}.link-button[data-v-1db22ef8]:hover{transform:translateY(-60px) translateX(-52px)}.config-button[data-v-1db22ef8]:hover{transform:translateY(-12px) translateX(-77px)}.sign-out-button[data-v-1db22ef8]:hover{transform:translateY(44px) translateX(-70px)}.compress-icon[data-v-1db22ef8]:hover{animation:scale-1db22ef8 .5s ease-in-out}.config-icon[data-v-1db22ef8]:hover{animation:spin-1db22ef8 .5s ease-in-out}.link-icon[data-v-1db22ef8]:hover{animation:rotate-shake-1db22ef8 .5s ease-in-out}.sign-out-icon[data-v-1db22ef8]:hover{animation:shake-1db22ef8 .5s ease-in-out}}[data-v-1db22ef8] .el-dialog{border-radius:12px;background-color:var(--dialog-bg-color);backdrop-filter:blur(10px);box-shadow:var(--dialog-box-shadow)}.dialog-action[data-v-1db22ef8]{display:flex;justify-content:center;margin-top:20px}.header[data-v-1db22ef8]{display:flex;justify-content:center;align-items:center;padding:15px;margin-top:5vh;color:var(--upload-header-color);-webkit-user-select:none;-moz-user-select:none;user-select:none;text-decoration:none;position:relative;top:-3vh;transition:all .3s ease}.title[data-v-1db22ef8]{font-size:2.5rem;font-weight:400;font-family:Righteous,Noto Sans SC,sans-serif;position:relative;padding-bottom:8px;cursor:pointer;transition:all .4s cubic-bezier(.4,0,.2,1);animation:float-1db22ef8 4s ease-in-out infinite;letter-spacing:3px}.title[data-v-1db22ef8]:hover{transform:scale(1.08) translateY(-3px);filter:drop-shadow(0 0 20px var(--el-upload-dragger-uniform-color))}.title[data-v-1db22ef8]:after{content:"";position:absolute;bottom:0;left:50%;transform:translateX(-50%);width:0;height:3px;background:linear-gradient(90deg,transparent,var(--el-upload-dragger-uniform-color),transparent);border-radius:3px;transition:width .5s cubic-bezier(.4,0,.2,1);box-shadow:0 0 10px var(--el-upload-dragger-uniform-color)}.title[data-v-1db22ef8]:hover:after{width:80%}.main-title[data-v-1db22ef8]{background:var(--upload-main-title-color);background-size:200% auto;background-clip:text;-webkit-background-clip:text;color:transparent;text-decoration:none;display:inline-block;animation:titleShimmer-1db22ef8 3s ease-in-out infinite;position:relative;filter:drop-shadow(0 0 8px rgba(255,255,255,.3))}.title:hover .main-title[data-v-1db22ef8]{animation:titleShimmer-1db22ef8 1s ease-in-out infinite;filter:brightness(1.2)}@keyframes float-1db22ef8{0%,to{transform:translateY(0)}50%{transform:translateY(-5px)}}@keyframes titleShimmer-1db22ef8{0%{background-position:200%}to{background-position:-200%}}@media (max-width:768px){.title[data-v-1db22ef8]{font-size:1.8rem;letter-spacing:1px}.title[data-v-1db22ef8]:hover{transform:scale(1.05) translateY(-2px)}}.upload-home[data-v-1db22ef8]{display:flex;flex-direction:column;justify-content:center;align-items:center;min-height:94vh;background-color:var(--admin-container-bg-color)}.upload[data-v-1db22ef8]{margin-bottom:5px;position:relative;top:-3vh}.footer[data-v-1db22ef8]{height:6vh} \ No newline at end of file diff --git a/css/559.6a658982.css.gz b/css/559.6a658982.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..995611bedd122f8ec8ca9b83d36c6f8d3a2ffda5 GIT binary patch literal 11760 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 Sy*2xOxc)yb%ORXqD**t)Sl>DT literal 0 HcmV?d00001 diff --git a/index.html b/index.html index 99948820..3454dd49 100644 --- a/index.html +++ b/index.html @@ -1 +1 @@ -Sanyue ImgHub
\ No newline at end of file +Sanyue ImgHub
\ No newline at end of file diff --git a/index.html.gz b/index.html.gz index 1d3f12bf35edc34d1e577e7404d129d345508448..fa60d74c9da4da93b22309096e8459dd5a0102ab 100644 GIT binary patch delta 473 zcmV;~0Ve+b1OEe%84~ISEg%~xh5_qN8;W7O4YEYrkt-X2fY9^cYI%6UDc@B>)Uroq zYB?Y)(7lQYxe_C{*^M}5d*+bgpV3a0_?7**%RbQ%6x+t308O6Jb0zLSS7wLMe(1i84PdPTQ7@vY8SR$vF!Jqxv?(LiE~>gCwg$UVhZ z#NVx`C0lk_p9z=6l9Y=@FxX-|SZ*;2NKsd!cua+V?nl4NCiI44$~W8crc~SO{4t4I z77O$}3Kc@W*>0|tDlcCEk1IN@M5mYC%B$@an({W+DT!s1iD!qYM`ZCDeQ0!}Zq4=D zT)l-UmdkI*%(e9NgF&=eR0*W&(jji$$cpr8h< z#pG}oDe<$qoil7}gOk%(9DbZr1BlCkC@lF0$JrpUga{FpmiLL;q!Lp@2IW z$Y2W4Igel|vkN^$uehT$oHA~4-cd6772WE{w>n{2fg4o+EYzMx1DPqQmt$8WTS~8p zzdO-LcI>e^5iYAGDHn@iu*0;s++h-sldeVem@936$FMCX42DuJFRnK?8+CnEK4#I# zYJt8-p<*o8-Gw=Cm3aX?tmwEBonLm_TwY(I+1!>oXR&ND^XxHOL>8~n`$jkF)?BU4 zt===e)}o.r(t),o.d(t,"canvastoDataURL",function(){return a}),o.d(t,"canvastoFile",function(){return n}),o.d(t,"dataURLtoFile",function(){return d}),o.d(t,"dataURLtoImage",function(){return c}),o.d(t,"downloadFile",function(){return u}),o.d(t,"filetoDataURL",function(){return p}),o.d(t,"imagetoCanvas",function(){return m}),o.d(t,"urltoBlob",function(){return f}),o.d(t,"urltoImage",function(){return g}),o.d(t,"compress",function(){return b}),o.d(t,"compressAccurately",function(){return C}),o.d(t,"EImageType",function(){return s}),function(e){e.PNG="image/png",e.JPEG="image/jpeg",e.GIF="image/gif"}(s||(s={}));var i=function(e,t,o,s){return new(o||(o=Promise))(function(l,i){function a(e){try{r(s.next(e))}catch(e){i(e)}}function n(e){try{r(s.throw(e))}catch(e){i(e)}}function r(e){var t;e.done?l(e.value):(t=e.value,t instanceof o?t:new o(function(e){e(t)})).then(a,n)}r((s=s.apply(e,t||[])).next())})};function a(e,t=.92,o=s.JPEG){return i(this,void 0,void 0,function*(){return l(o)||(o=s.JPEG),e.toDataURL(o,t)})}function n(e,t=.92,o=s.JPEG){return new Promise(s=>e.toBlob(e=>s(e),o,t))}var r=function(e,t,o,s){return new(o||(o=Promise))(function(l,i){function a(e){try{r(s.next(e))}catch(e){i(e)}}function n(e){try{r(s.throw(e))}catch(e){i(e)}}function r(e){var t;e.done?l(e.value):(t=e.value,t instanceof o?t:new o(function(e){e(t)})).then(a,n)}r((s=s.apply(e,t||[])).next())})};function d(e,t){return r(this,void 0,void 0,function*(){const o=e.split(",");let s=o[0].match(/:(.*?);/)[1];const i=atob(o[1]);let a=i.length;const n=new Uint8Array(a);for(;a--;)n[a]=i.charCodeAt(a);return l(t)&&(s=t),new Blob([n],{type:s})})}function c(e){return new Promise((t,o)=>{const s=new Image;s.onload=()=>t(s),s.onerror=()=>o(new Error("dataURLtoImage(): dataURL is illegal")),s.src=e})}function u(e,t){const o=document.createElement("a");o.href=window.URL.createObjectURL(e),o.download=t||Date.now().toString(36),document.body.appendChild(o);const s=document.createEvent("MouseEvents");s.initEvent("click",!1,!1),o.dispatchEvent(s),document.body.removeChild(o)}function p(e){return new Promise(t=>{const o=new FileReader;o.onloadend=e=>t(e.target.result),o.readAsDataURL(e)})}var h=function(e,t,o,s){return new(o||(o=Promise))(function(l,i){function a(e){try{r(s.next(e))}catch(e){i(e)}}function n(e){try{r(s.throw(e))}catch(e){i(e)}}function r(e){var t;e.done?l(e.value):(t=e.value,t instanceof o?t:new o(function(e){e(t)})).then(a,n)}r((s=s.apply(e,t||[])).next())})};function m(e,t={}){return h(this,void 0,void 0,function*(){const o=Object.assign({},t),s=document.createElement("canvas"),l=s.getContext("2d");let i,a;for(const e in o)Object.prototype.hasOwnProperty.call(o,e)&&(o[e]=Number(o[e]));if(o.scale){const t=o.scale>0&&o.scale<10?o.scale:1;a=e.width*t,i=e.height*t}else a=o.width||o.height*e.width/e.height||e.width,i=o.height||o.width*e.height/e.width||e.height;switch([5,6,7,8].some(e=>e===o.orientation)?(s.height=a,s.width=i):(s.height=i,s.width=a),o.orientation){case 3:l.rotate(180*Math.PI/180),l.drawImage(e,-s.width,-s.height,s.width,s.height);break;case 6:l.rotate(90*Math.PI/180),l.drawImage(e,0,-s.width,s.height,s.width);break;case 8:l.rotate(270*Math.PI/180),l.drawImage(e,-s.height,0,s.height,s.width);break;case 2:l.translate(s.width,0),l.scale(-1,1),l.drawImage(e,0,0,s.width,s.height);break;case 4:l.translate(s.width,0),l.scale(-1,1),l.rotate(180*Math.PI/180),l.drawImage(e,-s.width,-s.height,s.width,s.height);break;case 5:l.translate(s.width,0),l.scale(-1,1),l.rotate(90*Math.PI/180),l.drawImage(e,0,-s.width,s.height,s.width);break;case 7:l.translate(s.width,0),l.scale(-1,1),l.rotate(270*Math.PI/180),l.drawImage(e,-s.height,0,s.height,s.width);break;default:l.drawImage(e,0,0,s.width,s.height)}return s})}function f(e){return fetch(e).then(e=>e.blob())}function g(e){return new Promise((t,o)=>{const s=new Image;s.onload=()=>t(s),s.onerror=()=>o(new Error("urltoImage(): Image failed to load, please check the image URL")),s.src=e})}var y=function(e,t,o,s){return new(o||(o=Promise))(function(l,i){function a(e){try{r(s.next(e))}catch(e){i(e)}}function n(e){try{r(s.throw(e))}catch(e){i(e)}}function r(e){var t;e.done?l(e.value):(t=e.value,t instanceof o?t:new o(function(e){e(t)})).then(a,n)}r((s=s.apply(e,t||[])).next())})};function b(e,t={}){return y(this,void 0,void 0,function*(){if(!(e instanceof Blob))throw new Error("compress(): First arg must be a Blob object or a File object.");if("object"!=typeof t&&(t=Object.assign({quality:t})),t.quality=Number(t.quality),Number.isNaN(t.quality))return e;const o=yield p(e);let i=o.split(",")[0].match(/:(.*?);/)[1],n=s.JPEG;l(t.type)&&(n=t.type,i=t.type);const r=yield c(o),u=yield m(r,Object.assign({},t)),h=yield a(u,t.quality,n),f=yield d(h,i);return f.size>e.size?e:f})}function C(e,t={}){return y(this,void 0,void 0,function*(){if(!(e instanceof Blob))throw new Error("compressAccurately(): First arg must be a Blob object or a File object.");if("object"!=typeof t&&(t=Object.assign({size:t})),t.size=Number(t.size),Number.isNaN(t.size))return e;if(1024*t.size>e.size)return e;t.accuracy=Number(t.accuracy),(!t.accuracy||t.accuracy<.8||t.accuracy>.99)&&(t.accuracy=.95);const o=t.size*(2-t.accuracy)*1024,i=1024*t.size,n=t.size*t.accuracy*1024,r=yield p(e);let u=r.split(",")[0].match(/:(.*?);/)[1],h=s.JPEG;l(t.type)&&(h=t.type,u=t.type);const f=yield c(r),g=yield m(f,Object.assign({},t));let y,b=.5;const C=[null,null];for(let e=1;e<=7;e++){y=yield a(g,b,h);const t=.75*y.length;if(7===e){(ot)&&(y=[y,...C].filter(e=>e).sort((e,t)=>Math.abs(.75*e.length-i)-Math.abs(.75*t.length-i))[0]);break}if(ot))break;C[0]=y,b+=Math.pow(.5,e+1)}}const k=yield d(y,u);return k.size>e.size?e:k})}}])})},2224:function(e,t,o){"use strict";o.d(t,{A:function(){return T}});var s=o(9114),l=(o(5331),o(694),o(9385)),i=(o(7952),o(650)),a=(o(9104),o(1802)),n=(o(3378),o(47)),r=(o(9648),o(6768)),d=o(5130),c=o(4232);const u={class:"directory-tree-picker"},p={class:"tree-container"},h={key:0,class:"error-state"},m={class:"error-text"},f={class:"node-label"},g={class:"tree-container"},y={key:0,class:"error-state"},b={class:"error-text"},C={class:"node-label"};function k(e,t,o,k,v,w){const F=(0,r.g2)("font-awesome-icon"),L=n.S2,U=a.qk,T=i.Vc,S=l.pw,$=s.A;return(0,r.uX)(),(0,r.CE)("div",u,[w.isDesktop?((0,r.uX)(),(0,r.Wv)(T,{key:0,visible:v.popoverVisible,"onUpdate:visible":t[1]||(t[1]=e=>v.popoverVisible=e),placement:"bottom-start",width:320,trigger:"click","popper-class":"directory-tree-popover","show-arrow":!0,"hide-after":0,"show-after":50,transition:"el-zoom-in-top"},{reference:(0,r.k6)(()=>[(0,r.Lk)("span",{class:"popover-trigger-wrapper",onClick:t[0]||(t[0]=(0,d.D$)(()=>{},["stop"]))},[(0,r.RG)(e.$slots,"trigger",{},void 0,!0)])]),default:(0,r.k6)(()=>[(0,r.bo)(((0,r.uX)(),(0,r.CE)("div",p,[v.error?((0,r.uX)(),(0,r.CE)("div",h,[(0,r.bF)(F,{icon:"exclamation-circle",class:"error-icon"}),(0,r.Lk)("span",m,(0,c.v_)(v.error),1),(0,r.bF)(L,{type:"primary",size:"small",onClick:w.fetchDirectoryTree},{default:(0,r.k6)(()=>[...t[4]||(t[4]=[(0,r.eW)(" 重试 ",-1)])]),_:1},8,["onClick"])])):((0,r.uX)(),(0,r.Wv)(U,{key:1,ref:"treeRef",data:v.treeData,props:v.treeProps,"node-key":"path","default-expand-all":!1,"expand-on-click-node":!1,"highlight-current":!0,"current-node-key":o.currentDirectory,class:"directory-tree",onNodeClick:w.handleNodeClick},{default:(0,r.k6)(({node:e,data:t})=>[(0,r.Lk)("span",{class:(0,c.C4)(["tree-node",{"is-current":t.path===o.currentDirectory}])},[(0,r.bF)(F,{icon:e.expanded?"folder-open":"folder",class:"folder-icon"},null,8,["icon"]),(0,r.Lk)("span",f,(0,c.v_)(t.name),1)],2)]),_:1},8,["data","props","current-node-key","onNodeClick"]))])),[[$,v.loading]])]),_:3},8,["visible"])):((0,r.uX)(),(0,r.CE)(r.FK,{key:1},[(0,r.Lk)("span",{class:"drawer-trigger-wrapper",onClick:t[2]||(t[2]=(...e)=>w.openDrawer&&w.openDrawer(...e))},[(0,r.RG)(e.$slots,"trigger",{},void 0,!0)]),(0,r.bF)(S,{modelValue:v.drawerVisible,"onUpdate:modelValue":t[3]||(t[3]=e=>v.drawerVisible=e),direction:"btt",size:"60%","show-close":!0,"with-header":!0,"z-index":3e3,title:"选择目录",class:"directory-tree-drawer"},{default:(0,r.k6)(()=>[(0,r.bo)(((0,r.uX)(),(0,r.CE)("div",g,[v.error?((0,r.uX)(),(0,r.CE)("div",y,[(0,r.bF)(F,{icon:"exclamation-circle",class:"error-icon"}),(0,r.Lk)("span",b,(0,c.v_)(v.error),1),(0,r.bF)(L,{type:"primary",size:"small",onClick:w.fetchDirectoryTree},{default:(0,r.k6)(()=>[...t[5]||(t[5]=[(0,r.eW)(" 重试 ",-1)])]),_:1},8,["onClick"])])):((0,r.uX)(),(0,r.Wv)(U,{key:1,ref:"treeRefMobile",data:v.treeData,props:v.treeProps,"node-key":"path","default-expand-all":!1,"expand-on-click-node":!1,"highlight-current":!0,"current-node-key":o.currentDirectory,class:"directory-tree mobile-tree",onNodeClick:w.handleNodeClick},{default:(0,r.k6)(({node:e,data:t})=>[(0,r.Lk)("span",{class:(0,c.C4)(["tree-node",{"is-current":t.path===o.currentDirectory}])},[(0,r.bF)(F,{icon:e.expanded?"folder-open":"folder",class:"folder-icon"},null,8,["icon"]),(0,r.Lk)("span",C,(0,c.v_)(t.name),1)],2)]),_:1},8,["data","props","current-node-key","onNodeClick"]))])),[[$,v.loading]])]),_:1},8,["modelValue"])],64))])}var v=o(457),w=o(797),F={name:"DirectoryTreePicker",props:{currentDirectory:{type:String,default:""},source:{type:String,default:"upload",validator:e=>["upload","admin"].includes(e)}},data(){return{popoverVisible:!1,drawerVisible:!1,treeData:[],loading:!1,error:"",treeProps:{children:"children",label:"name"},windowWidth:window.innerWidth}},computed:{isDesktop(){return this.windowWidth>=769}},watch:{popoverVisible(e){e?this.fetchDirectoryTree():setTimeout(()=>{if(!this.popoverVisible&&this.$refs.treeRef){const e=this.$refs.treeRef.store;for(const t in e.nodesMap)e.nodesMap[t].expanded=!1}},200)},drawerVisible(e){e?this.fetchDirectoryTree():setTimeout(()=>{if(!this.drawerVisible&&this.$refs.treeRefMobile){const e=this.$refs.treeRefMobile.store;for(const t in e.nodesMap)e.nodesMap[t].expanded=!1}},300)},currentDirectory(e){this.$nextTick(()=>{this.$refs.treeRef&&e&&this.$refs.treeRef.setCurrentKey(e),this.$refs.treeRefMobile&&e&&this.$refs.treeRefMobile.setCurrentKey(e)})}},mounted(){window.addEventListener("resize",this.handleResize)},beforeUnmount(){window.removeEventListener("resize",this.handleResize)},methods:{handleResize(){this.windowWidth=window.innerWidth},openDrawer(){this.drawerVisible=!0},async fetchDirectoryTree(){this.loading=!0,this.error="";try{let e;if("admin"===this.source){const t=await(0,w.A)("/api/directoryTree",{method:"GET"});if(!t.ok)return void(401===t.status?this.error="认证失败,请重新登录":this.error="服务器错误,请稍后重试");e=await t.json()}else{const t=await v.A.get("/api/directoryTree",{withAuthCode:!0});e=t.data}e.tree?this.treeData=[e.tree]:this.treeData=[]}catch(e){console.error("Failed to fetch directory tree:",e),401===e.response?.status?this.error="认证失败,请重新登录":this.error="加载目录树失败,请检查网络连接"}finally{this.loading=!1}},handleNodeClick(e){let t=e.path;t&&!t.startsWith("/")?t="/"+t:t||(t="/"),this.$emit("select",t),this.popoverVisible=!1,this.drawerVisible=!1}}},L=o(1241);const U=(0,L.A)(F,[["render",k],["__scopeId","data-v-296c1702"]]);var T=U},2388:function(e,t,o){"use strict";function s(e,{strict:t=!0}={}){if(!e||""===e.trim())return{valid:!0};if("/"===e)return{valid:!0};if(!e.startsWith("/"))return{valid:!1,error:'目标目录必须以 "/" 开头'};if(/(?:^|\/)\.\.(\/|$)/.test(e)||e.includes(".."))return{valid:!1,error:'目标目录不能包含路径穿越字符 ".."'};const o=t?/\/\.(\/|$)/:/\/\.\//;if(o.test(e))return{valid:!1,error:'目标目录不能包含单独的 "." 路径段'};if(e.includes("//"))return{valid:!1,error:"目标目录不能包含连续的斜杠"};const s=/[\\:\*\?"'<>\| \(\)\[\]\{\}#%\^`~;@&=\+\$,]/;return s.test(e)?{valid:!1,error:"目标目录包含非法字符,请使用合法的路径格式"}:{valid:!0}}o.d(t,{G:function(){return s}})},2753:function(e,t,o){"use strict";o.r(t),o.d(t,{default:function(){return no}});var s=o(8507),l=(o(5331),o(213),o(47)),i=(o(9648),o(6768)),a=o(4232);const n={class:"history-header"},r={class:"header-left"},d={class:"record-count"},c={class:"header-right"},u={class:"timeline-header"},p={class:"date-label"},h={key:0,class:"grid-view"},m={class:"grid-preview"},f=["src"],g=["src"],y={key:2,class:"file-icon-wrapper"},b={class:"grid-overlay"},C={class:"grid-actions"},k={class:"grid-info"},v=["title"],w={class:"upload-time"},F={key:1,class:"list-view"},L={class:"list-preview"},U=["src"],T=["src"],S={key:2,class:"file-icon-wrapper-small"},$={class:"list-info"},M=["title"],R=["title"],_={class:"list-meta"},x={class:"upload-time"},E={class:"list-actions"},A={key:0,class:"load-more-container"},I={key:0,class:"loading-indicator"},D={key:1,class:"load-more-hint"},N={key:1,class:"no-more-hint"},P={key:1,class:"empty-state"};function W(e,t,o,W,V,z){const B=(0,i.g2)("font-awesome-icon"),H=l.S2,X=s.R7;return(0,i.uX)(),(0,i.CE)("div",{class:(0,a.C4)(["history-container",{active:o.show}])},[(0,i.Lk)("div",n,[(0,i.Lk)("div",r,[t[4]||(t[4]=(0,i.Lk)("h2",null,"历史记录",-1)),(0,i.Lk)("span",d,"共 "+(0,a.v_)(V.totalCount)+" 条",1)]),(0,i.Lk)("div",c,[(0,i.bF)(X,{content:"切换视图",placement:"bottom"},{default:(0,i.k6)(()=>[(0,i.bF)(H,{circle:"",onClick:z.toggleViewMode},{default:(0,i.k6)(()=>[(0,i.bF)(B,{icon:"grid"===V.viewMode?"list":"th-large"},null,8,["icon"])]),_:1},8,["onClick"])]),_:1}),(0,i.bF)(X,{content:"清空记录",placement:"bottom"},{default:(0,i.k6)(()=>[(0,i.bF)(H,{circle:"",type:"danger",onClick:z.clearHistory},{default:(0,i.k6)(()=>[(0,i.bF)(B,{icon:"trash-alt"})]),_:1},8,["onClick"])]),_:1}),(0,i.bF)(H,{circle:"",onClick:t[0]||(t[0]=t=>e.$emit("close"))},{default:(0,i.k6)(()=>[(0,i.bF)(B,{icon:"times"})]),_:1})])]),V.historyList.length>0?((0,i.uX)(),(0,i.CE)("div",{key:0,class:"history-content",ref:"historyContent",onScroll:t[3]||(t[3]=(...e)=>z.handleScroll&&z.handleScroll(...e))},[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(z.groupedHistory,e=>((0,i.uX)(),(0,i.CE)("div",{key:e.date,class:"history-group"},[(0,i.Lk)("div",u,[t[5]||(t[5]=(0,i.Lk)("div",{class:"timeline-dot"},null,-1)),(0,i.Lk)("span",p,(0,a.v_)(e.date),1)]),"grid"===V.viewMode?((0,i.uX)(),(0,i.CE)("div",h,[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(e.items,e=>((0,i.uX)(),(0,i.CE)("div",{key:e.time,class:"grid-item"},[(0,i.Lk)("div",m,[z.isImage(e.name)?((0,i.uX)(),(0,i.CE)("img",{key:0,src:e.url,loading:"lazy",onError:t[1]||(t[1]=(...e)=>z.handleImageError&&z.handleImageError(...e))},null,40,f)):z.isVideo(e.name)?((0,i.uX)(),(0,i.CE)("video",{key:1,src:e.url,muted:""},null,8,g)):((0,i.uX)(),(0,i.CE)("div",y,[(0,i.bF)(B,{icon:"file",class:"file-icon"})])),(0,i.Lk)("div",b,[(0,i.Lk)("div",C,[(0,i.bF)(H,{circle:"",size:"default",type:"primary",onClick:t=>z.copyLink(e.url)},{default:(0,i.k6)(()=>[(0,i.bF)(B,{icon:"copy"})]),_:1},8,["onClick"]),(0,i.bF)(H,{circle:"",size:"default",class:"action-btn-view",onClick:t=>z.openLink(e.url)},{default:(0,i.k6)(()=>[(0,i.bF)(B,{icon:"external-link-alt"})]),_:1},8,["onClick"]),(0,i.bF)(H,{circle:"",size:"default",type:"danger",onClick:t=>z.deleteItem(e)},{default:(0,i.k6)(()=>[(0,i.bF)(B,{icon:"trash-alt"})]),_:1},8,["onClick"])])])]),(0,i.Lk)("div",k,[(0,i.Lk)("div",{class:"file-name",title:e.name},(0,a.v_)(e.name),9,v),(0,i.Lk)("div",w,(0,a.v_)(z.formatTime(e.time)),1)])]))),128))])):((0,i.uX)(),(0,i.CE)("div",F,[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(e.items,e=>((0,i.uX)(),(0,i.CE)("div",{key:e.time,class:"list-item"},[(0,i.Lk)("div",L,[z.isImage(e.name)?((0,i.uX)(),(0,i.CE)("img",{key:0,src:e.url,loading:"lazy",onError:t[2]||(t[2]=(...e)=>z.handleImageError&&z.handleImageError(...e))},null,40,U)):z.isVideo(e.name)?((0,i.uX)(),(0,i.CE)("video",{key:1,src:e.url,muted:""},null,8,T)):((0,i.uX)(),(0,i.CE)("div",S,[(0,i.bF)(B,{icon:"file"})]))]),(0,i.Lk)("div",$,[(0,i.Lk)("div",{class:"file-name",title:e.name},(0,a.v_)(e.name),9,M),(0,i.Lk)("div",{class:"file-url",title:e.url},(0,a.v_)(e.url),9,R)]),(0,i.Lk)("div",_,[(0,i.Lk)("div",x,(0,a.v_)(z.formatTime(e.time)),1)]),(0,i.Lk)("div",E,[(0,i.bF)(H,{circle:"",size:"small",type:"primary",onClick:t=>z.copyLink(e.url)},{default:(0,i.k6)(()=>[(0,i.bF)(B,{icon:"copy"})]),_:1},8,["onClick"]),(0,i.bF)(H,{circle:"",size:"small",class:"action-btn-view",onClick:t=>z.openLink(e.url)},{default:(0,i.k6)(()=>[(0,i.bF)(B,{icon:"external-link-alt"})]),_:1},8,["onClick"]),(0,i.bF)(H,{circle:"",size:"small",type:"danger",onClick:t=>z.deleteItem(e)},{default:(0,i.k6)(()=>[(0,i.bF)(B,{icon:"trash-alt"})]),_:1},8,["onClick"])])]))),128))]))]))),128)),z.hasMore?((0,i.uX)(),(0,i.CE)("div",A,[V.loadingMore?((0,i.uX)(),(0,i.CE)("div",I,[(0,i.bF)(B,{icon:"spinner",spin:""}),t[6]||(t[6]=(0,i.Lk)("span",null,"加载中...",-1))])):((0,i.uX)(),(0,i.CE)("div",D,"下拉加载更多"))])):V.historyList.length>0?((0,i.uX)(),(0,i.CE)("div",N,"没有更多记录了")):(0,i.Q3)("",!0)],544)):((0,i.uX)(),(0,i.CE)("div",P,[(0,i.bF)(B,{icon:"history",class:"empty-icon"}),t[7]||(t[7]=(0,i.Lk)("p",null,"暂无上传记录",-1))]))],2)}o(4114),o(8111),o(2489),o(7588),o(1701),o(3110),o(8335);var V={name:"UploadHistory",props:{show:{type:Boolean,default:!1}},data(){return{historyList:[],allHistory:[],viewMode:"grid",pageSize:30,currentPage:0,loadingMore:!1,totalCount:0}},watch:{show(e){e&&this.resetAndLoad()}},computed:{hasMore(){return this.historyList.length{const o=new Date(t.time),s=`${o.getFullYear()}-${String(o.getMonth()+1).padStart(2,"0")}-${String(o.getDate()).padStart(2,"0")}`;e[s]||(e[s]=[]),e[s].push(t)}),Object.keys(e).sort((e,t)=>new Date(t)-new Date(e)).map(t=>({date:t,items:e[t]}))}},mounted(){const e=localStorage.getItem("historyViewMode");e&&(this.viewMode=e)},methods:{resetAndLoad(){this.historyList=[],this.currentPage=0,this.loadAllHistory(),this.loadMore()},loadAllHistory(){try{const e=JSON.parse(localStorage.getItem("uploadHistory")||"[]");this.allHistory=e.sort((e,t)=>t.time-e.time),this.totalCount=this.allHistory.length}catch(e){console.error("Failed to load history",e),this.allHistory=[],this.totalCount=0}},loadMore(){!this.loadingMore&&this.hasMore&&(this.loadingMore=!0,setTimeout(()=>{const e=this.currentPage*this.pageSize,t=e+this.pageSize,o=this.allHistory.slice(e,t);this.historyList=[...this.historyList,...o],this.currentPage++,this.loadingMore=!1},50))},handleScroll(e){const t=e.target,o=t.scrollTop,s=t.scrollHeight,l=t.clientHeight;s-o-l<100&&this.loadMore()},toggleViewMode(){this.viewMode="grid"===this.viewMode?"list":"grid",localStorage.setItem("historyViewMode",this.viewMode)},clearHistory(){this.$confirm("确定要清空所有上传记录吗?","提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then(()=>{this.historyList=[],this.allHistory=[],this.totalCount=0,this.currentPage=0,localStorage.removeItem("uploadHistory"),this.$message.success("记录已清空")}).catch(()=>{})},deleteItem(e){this.$confirm("确定要删除这条记录吗?","提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then(()=>{this.historyList=this.historyList.filter(t=>t.time!==e.time),this.allHistory=this.allHistory.filter(t=>t.time!==e.time),this.totalCount=this.allHistory.length;try{localStorage.setItem("uploadHistory",JSON.stringify(this.allHistory)),this.$message.success("记录已删除")}catch(t){console.error("Failed to update history",t)}}).catch(()=>{})},isImage(e){const t=["jpg","jpeg","png","gif","bmp","webp","svg","tiff","ico","avif","heic","jfif","pjpeg","pjp"],o=e?e.split(".").pop().toLowerCase():"";return t.includes(o)},isVideo(e){const t=["mp4","webm","ogg","mkv"],o=e?e.split(".").pop().toLowerCase():"";return t.includes(o)},formatTime(e){const t=new Date(e),o=t.getFullYear(),s=String(t.getMonth()+1).padStart(2,"0"),l=String(t.getDate()).padStart(2,"0"),i=String(t.getHours()).padStart(2,"0"),a=String(t.getMinutes()).padStart(2,"0"),n=String(t.getSeconds()).padStart(2,"0");return`${o}-${s}-${l} ${i}:${a}:${n}`},copyLink(e){navigator.clipboard.writeText(e).then(()=>{this.$message.success("链接已复制")}).catch(()=>{this.$message.error("复制失败")})},openLink(e){window.open(e,"_blank")},handleImageError(e){e.target.src=o(6682)}}},z=o(1241);const B=(0,z.A)(V,[["render",W],["__scopeId","data-v-05a2ac54"]]);var H=B,X=o(6975),Q=o(9267),j=(o(5616),o(1418)),O=(o(333),o(4757)),q=o(5558),G=(o(8075),o(9623)),K=(o(6711),o(6018)),J=(o(6808),o(200),o(6810));o(4396),o(4885);const Y={class:"dialog-section"},Z={class:"section-content"},ee={class:"setting-item"},te={key:0,class:"setting-item"},oe={class:"setting-label"},se={class:"setting-item"},le={class:"setting-item"},ie={class:"setting-label"},ae={class:"dialog-section"},ne={class:"section-content"},re={class:"dialog-section"},de={class:"section-header"},ce={class:"section-content"},ue={class:"setting-item"},pe={class:"setting-label"},he={class:"setting-item"},me={key:0,class:"setting-item slider-item"},fe={class:"setting-label"},ge={class:"slider-wrapper"},ye={class:"slider-input-wrapper"},be={key:1,class:"setting-item slider-item"},Ce={class:"setting-label"},ke={class:"slider-wrapper"},ve={class:"slider-input-wrapper"},we={key:0,class:"dialog-section"},Fe={class:"section-header"},Le={class:"section-content"},Ue={class:"setting-item"},Te={class:"dialog-action"};function Se(e,t,o,a,n,r){const d=(0,i.g2)("font-awesome-icon"),c=J.ll,u=J.MQ,p=s.R7,h=K.P9,m=K.AV,f=G.WK,g=q.qi,y=O.B8,b=j.lq,C=l.S2,k=Q.kZ;return(0,i.uX)(),(0,i.Wv)(k,{title:"上传设置",modelValue:r.visible,"onUpdate:modelValue":t[12]||(t[12]=e=>r.visible=e),width:r.dialogWidth,"show-close":!1,class:"settings-dialog"},{default:(0,i.k6)(()=>[(0,i.Lk)("div",Y,[t[22]||(t[22]=(0,i.Lk)("div",{class:"section-header"},[(0,i.Lk)("span",{class:"section-title"},"上传渠道")],-1)),(0,i.Lk)("div",Z,[(0,i.Lk)("div",ee,[t[18]||(t[18]=(0,i.Lk)("span",{class:"setting-label"},"渠道类型",-1)),(0,i.bF)(u,{"model-value":o.uploadChannel,"onUpdate:modelValue":t[0]||(t[0]=t=>e.$emit("update:uploadChannel",t)),class:"radio-card-group compact"},{default:(0,i.k6)(()=>[(0,i.bF)(c,{label:"telegram",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(d,{icon:"paper-plane",class:"channel-icon"}),t[13]||(t[13]=(0,i.Lk)("span",null,"TG",-1))]),_:1}),(0,i.bF)(c,{label:"cfr2",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(d,{icon:"cloud",class:"channel-icon"}),t[14]||(t[14]=(0,i.Lk)("span",null,"R2",-1))]),_:1}),(0,i.bF)(c,{label:"s3",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(d,{icon:"database",class:"channel-icon"}),t[15]||(t[15]=(0,i.Lk)("span",null,"S3",-1))]),_:1}),(0,i.bF)(c,{label:"discord",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(d,{icon:"comments",class:"channel-icon"}),t[16]||(t[16]=(0,i.Lk)("span",null,"DC",-1))]),_:1}),(0,i.bF)(c,{label:"huggingface",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(d,{icon:"robot",class:"channel-icon"}),t[17]||(t[17]=(0,i.Lk)("span",null,"HF",-1))]),_:1})]),_:1},8,["model-value"])]),o.currentChannelList.length>1?((0,i.uX)(),(0,i.CE)("div",te,[(0,i.Lk)("span",oe,[t[19]||(t[19]=(0,i.eW)(" 渠道名称 ",-1)),(0,i.bF)(p,{content:"选择具体的渠道名称,不选择则使用负载均衡或默认渠道",placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(d,{icon:"question-circle",class:"inline-help-icon"})]),_:1})]),(0,i.bF)(m,{"model-value":o.channelName,"onUpdate:modelValue":t[1]||(t[1]=t=>e.$emit("update:channelName",t)),placeholder:"自动选择",clearable:"",class:"setting-input"},{default:(0,i.k6)(()=>[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(o.currentChannelList,e=>((0,i.uX)(),(0,i.Wv)(h,{key:e.name,label:e.name,value:e.name},null,8,["label","value"]))),128))]),_:1},8,["model-value"])])):(0,i.Q3)("",!0),(0,i.Lk)("div",se,[t[20]||(t[20]=(0,i.Lk)("span",{class:"setting-label"},"上传目录",-1)),(0,i.bF)(f,{"model-value":o.uploadFolder,"onUpdate:modelValue":r.handleUploadFolderInput,placeholder:"请输入上传目录路径",class:"setting-input"},null,8,["model-value","onUpdate:modelValue"])]),(0,i.Lk)("div",le,[(0,i.Lk)("span",ie,[t[21]||(t[21]=(0,i.eW)(" 自动切换 ",-1)),(0,i.bF)(p,{content:"对于非分块上传文件,上传失败自动切换到其他渠道上传",placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(d,{icon:"question-circle",class:"inline-help-icon"})]),_:1})]),(0,i.bF)(g,{"model-value":o.autoRetry,"onUpdate:modelValue":t[2]||(t[2]=t=>e.$emit("update:autoRetry",t))},null,8,["model-value"])])])]),(0,i.Lk)("div",ae,[t[27]||(t[27]=(0,i.Lk)("div",{class:"section-header"},[(0,i.Lk)("span",{class:"section-title"},"文件命名方式")],-1)),(0,i.Lk)("div",ne,[(0,i.bF)(u,{"model-value":o.uploadNameType,"onUpdate:modelValue":t[3]||(t[3]=t=>e.$emit("update:uploadNameType",t)),class:"radio-card-group grid-2x2"},{default:(0,i.k6)(()=>[(0,i.bF)(c,{label:"default",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(d,{icon:"cog",class:"radio-icon"}),t[23]||(t[23]=(0,i.Lk)("span",null,"默认",-1))]),_:1}),(0,i.bF)(c,{label:"index",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(d,{icon:"hashtag",class:"radio-icon"}),t[24]||(t[24]=(0,i.Lk)("span",null,"仅前缀",-1))]),_:1}),(0,i.bF)(c,{label:"origin",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(d,{icon:"file-signature",class:"radio-icon"}),t[25]||(t[25]=(0,i.Lk)("span",null,"仅原名",-1))]),_:1}),(0,i.bF)(c,{label:"short",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(d,{icon:"compress-alt",class:"radio-icon"}),t[26]||(t[26]=(0,i.Lk)("span",null,"短链接",-1))]),_:1})]),_:1},8,["model-value"])])]),(0,i.Lk)("div",re,[(0,i.Lk)("div",de,[t[28]||(t[28]=(0,i.Lk)("span",{class:"section-title"},"文件预处理",-1)),(0,i.bF)(p,{content:"上传前在本地进行格式转换和压缩,仅对图片文件生效",placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(d,{icon:"question-circle",class:"section-help-icon"})]),_:1})]),(0,i.Lk)("div",ce,[(0,i.Lk)("div",ue,[(0,i.Lk)("span",pe,[t[29]||(t[29]=(0,i.eW)(" 转换为WebP ",-1)),(0,i.bF)(p,{content:"上传前将图片转换为WebP格式,可有效减小文件体积。转换失败时保持原格式上传",placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(d,{icon:"question-circle",class:"inline-help-icon"})]),_:1})]),(0,i.bF)(g,{"model-value":o.convertToWebp,"onUpdate:modelValue":t[4]||(t[4]=t=>e.$emit("update:convertToWebp",t))},null,8,["model-value"])]),(0,i.Lk)("div",he,[t[30]||(t[30]=(0,i.Lk)("span",{class:"setting-label"},"文件压缩",-1)),(0,i.bF)(g,{"model-value":o.customerCompress,"onUpdate:modelValue":t[5]||(t[5]=t=>e.$emit("update:customerCompress",t))},null,8,["model-value"])]),o.customerCompress?((0,i.uX)(),(0,i.CE)("div",me,[(0,i.Lk)("span",fe,[t[31]||(t[31]=(0,i.eW)(" 压缩阈值 ",-1)),(0,i.bF)(p,{content:"设置图片大小阈值,超过此值将自动压缩,单位MB",placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(d,{icon:"question-circle",class:"inline-help-icon"})]),_:1})]),(0,i.Lk)("div",ge,[(0,i.bF)(y,{"model-value":o.compressBar,"onUpdate:modelValue":t[6]||(t[6]=t=>e.$emit("update:compressBar",t)),min:1,max:20,"format-tooltip":e=>`${e} MB`},null,8,["model-value","format-tooltip"]),(0,i.Lk)("div",ye,[(0,i.bF)(b,{"model-value":o.compressBar,"onUpdate:modelValue":t[7]||(t[7]=t=>e.$emit("update:compressBar",t)),min:1,max:20,step:1,"value-on-clear":1,class:"slider-input","controls-position":"right"},null,8,["model-value"]),t[32]||(t[32]=(0,i.Lk)("span",{class:"slider-unit"},"MB",-1))])])])):(0,i.Q3)("",!0),o.customerCompress?((0,i.uX)(),(0,i.CE)("div",be,[(0,i.Lk)("span",Ce,[t[33]||(t[33]=(0,i.eW)(" 期望大小 ",-1)),(0,i.bF)(p,{content:"设置压缩后图片大小期望值,单位MB",placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(d,{icon:"question-circle",class:"inline-help-icon"})]),_:1})]),(0,i.Lk)("div",ke,[(0,i.bF)(y,{"model-value":o.compressQuality,"onUpdate:modelValue":t[8]||(t[8]=t=>e.$emit("update:compressQuality",t)),min:.5,max:o.compressBar,step:.1,"format-tooltip":e=>`${e} MB`},null,8,["model-value","max","format-tooltip"]),(0,i.Lk)("div",ve,[(0,i.bF)(b,{"model-value":o.compressQuality,"onUpdate:modelValue":t[9]||(t[9]=t=>e.$emit("update:compressQuality",t)),min:.5,max:o.compressBar,step:.1,precision:1,"value-on-clear":.5,class:"slider-input","controls-position":"right"},null,8,["model-value","max"]),t[34]||(t[34]=(0,i.Lk)("span",{class:"slider-unit"},"MB",-1))])])])):(0,i.Q3)("",!0)])]),"telegram"===o.uploadChannel?((0,i.uX)(),(0,i.CE)("div",we,[(0,i.Lk)("div",Fe,[t[35]||(t[35]=(0,i.Lk)("span",{class:"section-title"},"服务端压缩",-1)),(0,i.bF)(p,{content:"1. 在 Telegram 端进行压缩,仅对上传渠道为 Telegram 的图片文件生效
2. 若图片大小(本地压缩后大小)大于10MB,本设置自动失效
3. 若上传分辨率过大、透明背景等图片,建议关闭服务端压缩,否则可能出现未知问题",placement:"top","raw-content":""},{default:(0,i.k6)(()=>[(0,i.bF)(d,{icon:"question-circle",class:"section-help-icon"})]),_:1})]),(0,i.Lk)("div",Le,[(0,i.Lk)("div",Ue,[t[36]||(t[36]=(0,i.Lk)("span",{class:"setting-label"},"开启压缩",-1)),(0,i.bF)(g,{"model-value":o.serverCompress,"onUpdate:modelValue":t[10]||(t[10]=t=>e.$emit("update:serverCompress",t))},null,8,["model-value"])])])])):(0,i.Q3)("",!0),(0,i.Lk)("div",Te,[(0,i.bF)(C,{type:"primary",onClick:t[11]||(t[11]=e=>r.visible=!1),class:"confirm-btn"},{default:(0,i.k6)(()=>[...t[37]||(t[37]=[(0,i.eW)("确定",-1)])]),_:1})])]),_:1},8,["modelValue","width"])}var $e={name:"UploadSettingsDialog",methods:{handleUploadFolderInput(e){e&&!e.startsWith("/")&&(e="/"+e),this.$emit("update:uploadFolder",e)}},props:{modelValue:{type:Boolean,default:!1},uploadChannel:{type:String,default:"telegram"},channelName:{type:String,default:""},currentChannelList:{type:Array,default:()=>[]},uploadFolder:{type:String,default:""},autoRetry:{type:Boolean,default:!0},uploadNameType:{type:String,default:"default"},convertToWebp:{type:Boolean,default:!1},customerCompress:{type:Boolean,default:!0},compressBar:{type:Number,default:5},compressQuality:{type:Number,default:4},serverCompress:{type:Boolean,default:!0}},emits:["update:modelValue","update:uploadChannel","update:channelName","update:uploadFolder","update:autoRetry","update:uploadNameType","update:convertToWebp","update:customerCompress","update:compressBar","update:compressQuality","update:serverCompress"],computed:{visible:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}},dialogWidth(){return window.innerWidth>768?"50%":"90%"}}};const Me=(0,z.A)($e,[["render",Se]]);var Re=Me,_e=o(8559),xe=(o(5970),o(813)),Ee=(o(4896),o(9655)),Ae=(o(2893),o(4253));o(9899);const Ie={class:"upload-list-item"},De=["href"],Ne={key:0,style:{width:"10vw","border-radius":"12px"},autoplay:"",muted:"",playsinline:"",loop:""},Pe=["src"],We=["src"],Ve={key:2,style:{width:"10vw","border-radius":"12px"}},ze={class:"upload-list-item-content"},Be={class:"upload-list-item-name-wrapper"},He={key:0,class:"upload-list-item-url"},Xe={class:"upload-list-item-url-row"},Qe={class:"upload-list-item-url-row"},je={key:1,class:"upload-list-item-progress"},Oe={class:"upload-list-item-action"};function qe(e,t,o,s,l,n){const r=(0,i.g2)("font-awesome-icon"),d=Ae.$g,c=G.WK,u=Ee.ve,p=(0,i.g2)("Link"),h=xe.tk,m=(0,i.g2)("Delete");return(0,i.uX)(),(0,i.CE)("div",Ie,[(0,i.Lk)("a",{href:o.file.url,target:"_blank",class:"upload-list-item-preview"},[n.isVideo(o.file.name)?((0,i.uX)(),(0,i.CE)("video",Ne,[(0,i.Lk)("source",{src:o.file.url,type:"video/mp4"},null,8,Pe),t[7]||(t[7]=(0,i.eW)(" Your browser does not support the video tag. ",-1))])):n.isImage(o.file.name)?((0,i.uX)(),(0,i.CE)("img",{key:1,style:{width:"10vw","border-radius":"12px"},src:o.file.url,onError:t[0]||(t[0]=t=>e.$emit("preview-error",o.file))},null,40,We)):((0,i.uX)(),(0,i.CE)("div",Ve,[(0,i.bF)(r,{icon:"file",class:"file-icon"})]))],8,De),(0,i.Lk)("div",ze,[(0,i.Lk)("div",Be,[(0,i.bF)(d,{class:"upload-list-item-name",truncated:""},{default:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(n.truncateFilename(o.file.name)),1)]),_:1})]),"done"===o.file.status?((0,i.uX)(),(0,i.CE)("div",He,[(0,i.Lk)("div",Xe,[(0,i.bF)(c,{modelValue:o.file.finalURL,"onUpdate:modelValue":t[1]||(t[1]=e=>o.file.finalURL=e),readonly:"",onClick:n.selectAllText,size:n.urlSize},{prepend:(0,i.k6)(()=>[...t[8]||(t[8]=[(0,i.eW)("URL",-1)])]),_:1},8,["modelValue","onClick","size"]),(0,i.bF)(c,{modelValue:o.file.mdURL,"onUpdate:modelValue":t[2]||(t[2]=e=>o.file.mdURL=e),readonly:"",onClick:n.selectAllText,size:n.urlSize},{prepend:(0,i.k6)(()=>[...t[9]||(t[9]=[(0,i.eW)("MarkDown",-1)])]),_:1},8,["modelValue","onClick","size"])]),(0,i.Lk)("div",Qe,[(0,i.bF)(c,{modelValue:o.file.htmlURL,"onUpdate:modelValue":t[3]||(t[3]=e=>o.file.htmlURL=e),readonly:"",onClick:n.selectAllText,size:n.urlSize},{prepend:(0,i.k6)(()=>[...t[10]||(t[10]=[(0,i.eW)("HTML",-1)])]),_:1},8,["modelValue","onClick","size"]),(0,i.bF)(c,{modelValue:o.file.ubbURL,"onUpdate:modelValue":t[4]||(t[4]=e=>o.file.ubbURL=e),readonly:"",onClick:n.selectAllText,size:n.urlSize},{prepend:(0,i.k6)(()=>[...t[11]||(t[11]=[(0,i.eW)("BBCode",-1)])]),_:1},8,["modelValue","onClick","size"])])])):((0,i.uX)(),(0,i.CE)("div",je,[(0,i.bF)(u,{percentage:o.file.progreess,status:o.file.status,"show-text":!1},null,8,["percentage","status"])]))]),(0,i.Lk)("div",Oe,[(0,i.Lk)("button",{class:"modern-file-action-btn modern-file-action-btn-primary",onClick:t[5]||(t[5]=t=>e.$emit("copy",o.file))},[(0,i.bF)(h,null,{default:(0,i.k6)(()=>[(0,i.bF)(p)]),_:1})]),(0,i.Lk)("button",{class:"modern-file-action-btn modern-file-action-btn-danger",onClick:t[6]||(t[6]=t=>e.$emit("remove",o.file))},[(0,i.bF)(h,null,{default:(0,i.k6)(()=>[(0,i.bF)(m)]),_:1})])])])}var Ge=o(7477);const Ke=["jpg","jpeg","png","gif","bmp","webp","svg","tiff","ico","avif","heic","jfif","pjpeg","pjp","raw","cr2","nef","dng","eps","ai","emf","wmf"],Je=["mp4","webm","ogg","mkv"];var Ye={name:"UploadFileItem",components:{Link:Ge.Link,Delete:Ge.Delete},props:{file:{type:Object,required:!0}},emits:["copy","remove","preview-error"],computed:{urlSize(){return window.innerWidth<768?"small":"default"}},methods:{isImage(e){const t=e.split(".").pop().toLowerCase();return Ke.includes(t)},isVideo(e){const t=e.split(".").pop().toLowerCase();return Je.includes(t)},truncateFilename(e,t=20){if(!e||e.length<=t)return e;const o=e.lastIndexOf(".");let s,l;o>0?(s=e.substring(0,o),l=e.substring(o)):(s=e,l="");const i=l.length+4,a=t-i-3;return a<=0?e.substring(0,t-3)+"...":s.substring(0,a)+"..."+s.slice(-4)+l},selectAllText(e){navigator.clipboard.writeText(e.target.value).then(()=>{this.$message({type:"success",message:"复制成功"})}).catch(()=>{this.$message({type:"error",message:"复制失败"})})}}};const Ze=(0,z.A)(Ye,[["render",qe],["__scopeId","data-v-85bdebae"]]);var et=Ze,tt=o(2086),ot=(o(670),o(8830),o(3597),o(683)),st=(o(5385),o(7358));const lt={class:"upload-form"},it={class:"upload-card-glow",ref:"uploadCardGlow"},at={key:0,class:"upload-card"},nt={class:"paste-card-actions"},rt={class:"upload-list-dashboard-action"},dt={class:"modern-action-group"},ct={class:"modern-dropdown-item-content"},ut={class:"modern-action-btn modern-action-btn-danger"};function pt(e,t,n,r,d,c){const u=(0,i.g2)("CameraFilled"),p=xe.tk,h=st.j5,m=G.WK,f=l.S2,g=J.Zh,y=J.MQ,b=ot.Ik,C=(0,i.g2)("List"),k=(0,i.g2)("Checked"),v=(0,i.g2)("Failed"),w=Ae.$g,F=(0,i.g2)("font-awesome-icon"),L=s.R7,U=q.qi,T=tt.c6,S=tt.Iy,$=tt.dW,M=et,R=_e.kA;return(0,i.uX)(),(0,i.CE)("div",lt,[(0,i.Lk)("div",{class:"upload-card-wrapper",onMousemove:t[0]||(t[0]=(...e)=>c.handleUploadCardMouseMove&&c.handleUploadCardMouseMove(...e)),onMouseleave:t[1]||(t[1]=(...e)=>c.handleUploadCardMouseLeave&&c.handleUploadCardMouseLeave(...e))},[(0,i.Lk)("div",it,null,512),"default"===n.uploadMethod?((0,i.uX)(),(0,i.Wv)(h,{key:0,class:(0,a.C4)(["upload-card",{"is-uploading":d.uploading,"upload-card-busy":d.fileList.length}]),drag:"",multiple:"","http-request":c.uploadFile,onSuccess:c.handleSuccess,"on-error":c.handleError,"before-upload":c.beforeUpload,"on-progress":c.handleProgress,"file-list":d.fileList,"show-file-list":!1},{default:(0,i.k6)(()=>[(0,i.bF)(p,{class:(0,a.C4)(["el-icon--upload",{"upload-list-busy":d.fileList.length}])},{default:(0,i.k6)(()=>[(0,i.bF)(u)]),_:1},8,["class"]),(0,i.Lk)("div",{class:(0,a.C4)(["el-upload__text",{"upload-list-busy":d.fileList.length}])},[...t[8]||(t[8]=[(0,i.Lk)("em",null,"拖拽",-1),(0,i.eW)(),(0,i.Lk)("em",null,"点击",-1),(0,i.eW)(" 或 ",-1),(0,i.Lk)("em",null,"Ctrl + V",-1),(0,i.eW)(" 粘贴上传",-1)])],2)]),_:1},8,["class","http-request","onSuccess","on-error","before-upload","on-progress","file-list"])):(0,i.Q3)("",!0)],32),"paste"===n.uploadMethod?((0,i.uX)(),(0,i.CE)("div",at,[(0,i.bF)(b,{class:(0,a.C4)(["paste-card",{"is-uploading":d.uploading,"upload-card-busy":d.fileList.length}])},{default:(0,i.k6)(()=>[(0,i.bF)(m,{modelValue:d.pastedUrls,"onUpdate:modelValue":t[2]||(t[2]=e=>d.pastedUrls=e),class:"upload-card-textarea",placeholder:"粘贴外链上传,多个外链用换行分隔",type:"textarea",rows:d.fileList.length?4:14},null,8,["modelValue","rows"]),(0,i.Lk)("div",nt,[(0,i.bF)(f,{class:"paste-card-upload-button",type:"primary",size:c.pasteCardMethodButtonSize,onClick:c.handleUploadPasteUrls},{default:(0,i.k6)(()=>[...t[9]||(t[9]=[(0,i.eW)(" 上 传 ",-1)])]),_:1},8,["size","onClick"]),(0,i.bF)(y,{modelValue:d.pasteUploadMethod,"onUpdate:modelValue":t[3]||(t[3]=e=>d.pasteUploadMethod=e),class:"paste-card-method-group",size:c.pasteCardMethodButtonSize},{default:(0,i.k6)(()=>[(0,i.bF)(g,{label:"save"},{default:(0,i.k6)(()=>[...t[10]||(t[10]=[(0,i.eW)("转存",-1)])]),_:1}),(0,i.bF)(g,{label:"external"},{default:(0,i.k6)(()=>[...t[11]||(t[11]=[(0,i.eW)("外链",-1)])]),_:1})]),_:1},8,["modelValue","size"])])]),_:1},8,["class"])])):(0,i.Q3)("",!0),(0,i.bF)(b,{class:(0,a.C4)(["upload-list-card",{"upload-list-busy":d.fileList.length,"is-uploading":d.uploading}])},{default:(0,i.k6)(()=>[(0,i.Lk)("div",{class:(0,a.C4)(["upload-list-container",{"upload-list-busy":d.fileList.length}])},[(0,i.bF)(R,{onScroll:c.handleScroll,ref:"scrollContainer"},{default:(0,i.k6)(()=>[(0,i.Lk)("div",{class:(0,a.C4)(["upload-list-dashboard",{"list-scrolled":d.listScrolled}])},[(0,i.bF)(w,{class:"upload-list-dashboard-title"},{default:(0,i.k6)(()=>[(0,i.bF)(p,null,{default:(0,i.k6)(()=>[(0,i.bF)(C)]),_:1}),(0,i.eW)((0,a.v_)(c.uploadingCount+c.waitingCount)+" ",1),(0,i.bF)(p,null,{default:(0,i.k6)(()=>[(0,i.bF)(k)]),_:1}),(0,i.eW)((0,a.v_)(c.uploadSuccessCount)+" ",1),(0,i.bF)(p,null,{default:(0,i.k6)(()=>[(0,i.bF)(v)]),_:1}),(0,i.eW)((0,a.v_)(c.uploadErrorCount),1)]),_:1}),(0,i.Lk)("div",rt,[(0,i.Lk)("div",dt,[(0,i.bF)(L,{disabled:c.disableTooltip,content:"整体复制",placement:"top"},{default:(0,i.k6)(()=>[(0,i.Lk)("button",{class:"modern-action-btn",onClick:t[4]||(t[4]=(...e)=>c.copyAll&&c.copyAll(...e))},[(0,i.bF)(F,{icon:"copy"})])]),_:1},8,["disabled"]),(0,i.bF)(L,{disabled:c.disableTooltip,content:"失败重试",placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)($,null,{dropdown:(0,i.k6)(()=>[(0,i.bF)(S,{class:"modern-dropdown-menu"},{default:(0,i.k6)(()=>[(0,i.bF)(T,null,{default:(0,i.k6)(()=>[(0,i.Lk)("div",ct,[t[12]||(t[12]=(0,i.Lk)("span",null,"自动重试",-1)),(0,i.bF)(U,{modelValue:d.autoReUpload,"onUpdate:modelValue":t[6]||(t[6]=e=>d.autoReUpload=e),onChange:c.handleAutoRetryChange,size:"small"},null,8,["modelValue","onChange"])])]),_:1})]),_:1})]),default:(0,i.k6)(()=>[(0,i.Lk)("button",{class:"modern-action-btn",onClick:t[5]||(t[5]=(...e)=>c.retryError&&c.retryError(...e))},[(0,i.bF)(F,{icon:"redo"})])]),_:1})]),_:1},8,["disabled"]),(0,i.bF)(L,{disabled:c.disableTooltip,content:"清空列表",placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)($,null,{dropdown:(0,i.k6)(()=>[(0,i.bF)(S,{class:"modern-dropdown-menu"},{default:(0,i.k6)(()=>[(0,i.bF)(T,{onClick:c.clearFileList},{default:(0,i.k6)(()=>[...t[13]||(t[13]=[(0,i.eW)("清空全部",-1)])]),_:1},8,["onClick"]),(0,i.bF)(T,{onClick:c.clearSuccessList},{default:(0,i.k6)(()=>[...t[14]||(t[14]=[(0,i.eW)("清空已上传",-1)])]),_:1},8,["onClick"])]),_:1})]),default:(0,i.k6)(()=>[(0,i.Lk)("button",ut,[(0,i.bF)(F,{icon:"trash-alt"})])]),_:1})]),_:1},8,["disabled"])])])],2),((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(d.fileList.slice().reverse(),e=>((0,i.uX)(),(0,i.Wv)(M,{key:e.name,file:e,onCopy:c.handleCopy,onRemove:c.handleRemove,onPreviewError:t[7]||(t[7]=e=>e.url=o(6682))},null,8,["file","onCopy","onRemove"]))),128))]),_:1},8,["onScroll"])],2)]),_:1},8,["class"])])}o(6573),o(8100),o(7936),o(116),o(8237),o(9577),o(1549),o(9797),o(9631),o(5623),o(4979),o(4603),o(7566),o(8721);var ht=o(457),mt=o(6334),ft=o(8401);function gt(e,t,o){const s=o+e;return{finalURL:s,mdURL:`![${t}](${s})`,htmlURL:`${t}`,ubbURL:`[img]${s}[/img]`}}function yt(e,t){const o={url:e.finalURL,md:e.mdURL,html:e.htmlURL,ubb:e.ubbURL};return o[t]||e.finalURL}function bt(e,t){e.forEach(e=>{if("external"===e.uploadChannel)return;const o=gt(e.srcID,e.name,t);Object.assign(e,o)})}const Ct=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),kt=(e,t)=>e>>>t|e<<32-t;function vt(e,t){const o=new Uint32Array(64);for(let u=0;u<16;u++)o[u]=e[4*u]<<24|e[4*u+1]<<16|e[4*u+2]<<8|e[4*u+3];for(let u=16;u<64;u++){const e=kt(o[u-15],7)^kt(o[u-15],18)^o[u-15]>>>3,t=kt(o[u-2],17)^kt(o[u-2],19)^o[u-2]>>>10;o[u]=o[u-16]+e+o[u-7]+t>>>0}let[s,l,i,a,n,r,d,c]=t;for(let u=0;u<64;u++){const e=kt(n,6)^kt(n,11)^kt(n,25),t=n&r^~n&d,p=c+e+t+Ct[u]+o[u]>>>0,h=kt(s,2)^kt(s,13)^kt(s,22),m=s&l^s&i^l&i,f=h+m>>>0;c=d,d=r,r=n,n=a+p>>>0,a=i,i=l,l=s,s=p+f>>>0}t[0]=t[0]+s>>>0,t[1]=t[1]+l>>>0,t[2]=t[2]+i>>>0,t[3]=t[3]+a>>>0,t[4]=t[4]+n>>>0,t[5]=t[5]+r>>>0,t[6]=t[6]+d>>>0,t[7]=t[7]+c>>>0}function wt(){let e=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),t=new Uint8Array(64),o=0,s=0;return{update(l){s+=l.length;let i=0;if(o>0){const s=64-o,a=Math.min(s,l.length);t.set(l.subarray(0,a),o),o+=a,i=a,64===o&&(vt(t,e),o=0)}while(i+64<=l.length)vt(l.subarray(i,i+64),e),i+=64;i56&&(t.fill(0,o,64),vt(t,e),o=0),t.fill(0,o,56);const i=new DataView(t.buffer);i.setUint32(56,Math.floor(l/4294967296),!1),i.setUint32(60,l>>>0,!1),vt(t,e);let a="";for(let t=0;t<8;t++)a+=e[t].toString(16).padStart(8,"0");return a}}}async function Ft(e){const t=wt(),o=4194304;let s=0;while(sthis.fileListLength&&this.$nextTick(()=>{setTimeout(()=>{this.$refs.scrollContainer&&this.$refs.scrollContainer.setScrollTop(0)},100)}),this.fileListLength=this.fileList.length},deep:!0},useCustomUrl:{handler(){bt(this.fileList,this.rootUrl)},immediate:!0},customUrlPrefix:{handler(){"true"===this.useCustomUrl&&bt(this.fileList,this.rootUrl)},immediate:!0},autoReUpload(e){this.$store.commit("setStoreAutoReUpload",e)}},computed:{...(0,ft.L8)(["storeAutoReUpload"]),uploadSuccessCount(){return this.fileList.filter(e=>"done"===e.status||"success"===e.status).length},uploadErrorCount(){return this.fileList.filter(e=>"exception"===e.status).length},uploadingCount(){return this.fileList.filter(e=>"uploading"===e.status).length},waitingCount(){return this.uploadQueue.length},urlSize(){return window.innerWidth<768?"small":"default"},disableTooltip(){return window.innerWidth<768},rootUrl(){return"true"===this.useCustomUrl?this.customUrlPrefix:this.urlPrefix||`${window.location.protocol}//${window.location.host}/file/`},pasteCardMethodButtonSize(){return this.fileList.length||window.innerWidth<768?"small":"medium"}},mounted(){document.addEventListener("paste",this.handlePaste),this.autoReUpload=this.storeAutoReUpload},beforeUnmount(){document.removeEventListener("paste",this.handlePaste),this.uploadQueue=[],this.fileList=[],this.activeUploads=0},methods:{truncateFilename(e,t=20){if(!e||e.length<=t)return e;const o=e.lastIndexOf(".");let s,l;o>0?(s=e.substring(0,o),l=e.substring(o)):(s=e,l="");const i=l.length+4,a=t-i-3;return a<=0?e.substring(0,t-3)+"...":s.substring(0,a)+"..."+s.slice(-4)+l},uploadFile(e){if(!this.fileList.find(t=>t.uid===e.file.uid))return;if(this.activeUploads>=this.maxConcurrentUploads){this.uploadQueue.push(e);const t=this.fileList.find(t=>t.uid===e.file.uid);return void(t&&(t.status="waiting"))}this.activeUploads++;const t=this.fileList.find(t=>t.uid===e.file.uid);t&&(t.status="uploading");const o=this.fileList.find(t=>t.uid===e.file.uid),s=o?.uploadChannel||this.uploadChannel;if("external"===s)return void this.uploadSingleFile(e);if("huggingface"===s){const t=20971520;return void(e.file.size>=t?this.uploadToHuggingFaceDirect(e):this.uploadSingleFile(e))}if("discord"===s){const t=9437184;return void(e.file.size>t?this.uploadFileInChunks(e):this.uploadSingleFile(e))}const l=20971520;e.file.size>l?this.uploadFileInChunks(e):this.uploadSingleFile(e)},processUploadQueue(){if(0===this.uploadQueue.length||this.activeUploads>=this.maxConcurrentUploads)return;const e=this.uploadQueue.shift();e&&this.fileList.find(t=>t.uid===e.file.uid)?this.uploadFile(e):this.processUploadQueue()},onUploadComplete(){this.activeUploads=Math.max(0,this.activeUploads-1),this.processUploadQueue(),0===this.activeUploads&&0===this.uploadQueue.length&&(this.uploading=!1)},async uploadSingleFile(e){const t=this.fileList.find(t=>t.uid===e.file.uid);if(!t)return;const o=t.serverCompress,s=t.uploadChannel||this.uploadChannel,l=this.autoRetry&&"external"!==s,i="external"===s?"default":this.uploadNameType,a=new AbortController;this.abortControllers.set(e.file.uid,a);const n=new FormData;if(n.append("file",e.file),"external"===s&&n.append("url",e.file.url),"huggingface"===s)try{console.log("Computing SHA256 for HuggingFace upload...");const t=await Ft(e.file);n.append("sha256",t),console.log("SHA256 computed:",t)}catch(r){console.error("Failed to compute SHA256:",r)}(0,ht.A)({url:"/upload?serverCompress="+o+"&uploadChannel="+s+(this.channelName?"&channelName="+encodeURIComponent(this.channelName):"")+"&uploadNameType="+i+"&autoRetry="+l+"&uploadFolder="+encodeURIComponent(this.uploadFolder),method:"post",data:n,withAuthCode:!0,signal:a.signal,onUploadProgress:t=>{const o=Math.round(t.loaded/t.total*100);e.onProgress({percent:o,file:e.file})}}).then(t=>{e.onSuccess(t,e.file)}).catch(t=>{"CanceledError"!==t.name&&"ERR_CANCELED"!==t.code?t.response&&401!==t.response.status?(this.exceptionList.push(e),e.onError(t,e.file)):t.response||(this.exceptionList.push(e),e.onError(t,e.file)):console.log("上传已取消:",e.file.name)}).finally(()=>{this.abortControllers.delete(e.file.uid),this.onUploadComplete()})},async uploadFileInChunks(e){const t=this.fileList.find(t=>t.uid===e.file.uid);if(!t)return;const o=t.uploadChannel||this.uploadChannel,s=new AbortController;this.abortControllers.set(e.file.uid,s);const l="discord"===o?9437184:16777216,i=e.file.size,a=Math.ceil(i/l),n=t.serverCompress,r=this.autoRetry&&"external"!==o,d="external"===o?"default":this.uploadNameType;let c=null;if("huggingface"===o)try{console.log("Computing SHA256 for HuggingFace chunked upload..."),c=await Ft(e.file),console.log("SHA256 computed:",c)}catch(u){console.error("Failed to compute SHA256:",u)}try{const t=new FormData;t.append("originalFileName",e.file.name),t.append("originalFileType",e.file.type),t.append("totalChunks",a.toString());const p=await(0,ht.A)({url:"/upload?serverCompress="+n+"&uploadChannel="+o+(this.channelName?"&channelName="+encodeURIComponent(this.channelName):"")+"&uploadNameType="+d+"&autoRetry="+r+"&uploadFolder="+encodeURIComponent(this.uploadFolder)+"&initChunked=true",method:"post",data:t,withAuthCode:!0});if(!p.data.success)throw new Error("初始化分块上传失败: "+p.data.message);const h=p.data.uploadId;console.log("分块上传初始化成功,uploadId:",h);const m=this.fileList.find(t=>t.uid===e.file.uid);m&&(m.totalChunks=a,m.uploadId=h);const f=3,g=new Array(a).fill(0);let y=0,b=!1,C="",k=!1;const v=async t=>{if(b||k)return;const c=t*l,p=Math.min(c+l,i),m=e.file.slice(c,p),f=new FormData;f.append("file",m,`${e.file.name}.part${t.toString().padStart(3,"0")}`),f.append("chunkIndex",t.toString()),f.append("totalChunks",a.toString()),f.append("uploadId",h),f.append("originalFileName",e.file.name),f.append("originalFileType",e.file.type);let y=0;const v=3;while(y{if(b||k)return;const s=Math.round(o.loaded/o.total*100);g[t]=s;const l=Math.round(g.reduce((e,t)=>e+t,0)/a);e.onProgress({percent:l,file:e.file})}})}catch(u){if("CanceledError"===u.name||"ERR_CANCELED"===u.code)return k=!0,void console.log("分块上传已取消:",e.file.name);if(y++,console.warn(`分块 ${t+1}/${a} 上传失败 (重试 ${y}/${v}):`,u),y>=v)throw b=!0,C=`分块 ${t+1}/${a} 上传失败: ${u.message}`,new Error(C);await new Promise(e=>setTimeout(e,2e3*y))}}},w=[];for(let e=0;e{while(yt.uid===e.file.uid);t&&t.uploadId&&this.cleanupUploadResources(t.uploadId,t.totalChunks).then(()=>{console.log(`已清理分块上传失败的资源: ${t.uploadId}`)}).catch(e=>{console.warn("清理分块上传失败资源时出错:",e)}),u.response&&401!==u.response.status?(this.exceptionList.push(e),e.onError(u,e.file)):u.response||(this.exceptionList.push(e),e.onError(u,e.file))}finally{this.abortControllers.delete(e.file.uid),this.onUploadComplete()}},handleRemove(e){this.abortControllers.has(e.uid)&&(this.abortControllers.get(e.uid).abort(),this.abortControllers.delete(e.uid)),this.uploadQueue=this.uploadQueue.filter(t=>t.file.uid!==e.uid),this.fileList=this.fileList.filter(t=>t.uid!==e.uid),this.$message({type:"info",message:this.truncateFilename(e.name)+"已删除"})},async cleanupUploadResources(e,t=0){try{await(0,ht.A)({url:`/upload?cleanup=true&uploadId=${e}&totalChunks=${t}`,method:"get",withAuthCode:!0,timeout:5e3}),console.log(`清理上传资源成功: ${e}`)}catch(o){console.warn("清理上传资源失败:",o)}},handleSuccess(e,t){const o=this.fileList.find(e=>e.uid===t.uid);if(o)try{const s=o.uploadChannel||this.uploadChannel;if("external"!==s){const s=e.data[0].src.replace("/file/","");o.url=`${window.location.protocol}//${window.location.host}/file/`+s;const l=gt(s,t.name,this.rootUrl);Object.assign(o,l),o.srcID=s}o.progreess=100,o.status="success",this.saveToHistory(o),this.$message({type:"success",message:this.truncateFilename(t.name)+"上传成功"}),setTimeout(()=>{const e=this.fileList.find(e=>e.uid===t.uid);e&&(e.status="done")},1e3)}catch(s){this.$message.error(this.truncateFilename(t.name)+"上传失败"),o.status="exception"}},saveToHistory(e){try{const t=JSON.parse(localStorage.getItem("uploadHistory")||"[]"),o={name:e.name,url:e.finalURL,time:Date.now(),type:e.name.split(".").pop().toLowerCase()};t.push(o),localStorage.setItem("uploadHistory",JSON.stringify(t))}catch(t){console.error("Failed to save history",t)}},handleError(e,t){const o=this.fileList.find(e=>e.uid===t.uid);o&&(this.$message.error(this.truncateFilename(t.name)+"上传失败"),o.status="exception",this.autoReUpload&&this.scheduleAutoRetry())},handleCopy(e){const t=this.fileList.find(t=>t.uid===e.uid).status;"done"===t||"success"===t?(navigator.clipboard.writeText(yt(e,this.selectedUrlForm)),this.$message({type:"success",message:"复制成功"})):this.$message({type:"warning",message:"文件未上传成功,无法复制链接"})},beforeUpload(e){return new Promise(async(t,o)=>{let s=e;const l=this.convertToWebp&&e.type.includes("image")&&!e.type.includes("webp")&&!e.type.includes("gif")&&!e.type.includes("svg");if(l)try{const t=await this.convertImageToWebp(e);t&&(s=t,console.log(`WebP转换成功: ${e.name} -> ${t.name}, 大小: ${(e.size/1024).toFixed(1)}KB -> ${(t.size/1024).toFixed(1)}KB`))}catch(r){console.warn("WebP转换失败,使用原文件:",r)}const i=s.type.includes("image")&&this.customerCompress&&s.size/1024/1024>this.compressBar,a=s.size/1024/1024<=1024||"telegram"!==this.uploadChannel,n=(e,o)=>{const s=URL.createObjectURL(e);this.fileList.push({uid:e.uid,name:e.name,url:s,finalURL:"",mdURL:"",htmlURL:"",ubbURL:"",srcID:"",status:"uploading",progreess:0,serverCompress:o,retryCount:0}),t(e)};if(i)mt.compressAccurately(s,1024*this.compressQuality).then(t=>{t.size/1024/1024>1024&&"telegram"===this.uploadChannel&&(this.$message.error(s.name+"压缩后文件过大,无法上传!"),o("文件过大")),this.uploading=!0;const l=new File([t],s.name,{type:t.type});l.uid=e.uid;const i=this.uploadCount++,a=this.serverCompress&&l.size/1024/1024<10&&"telegram"===this.uploadChannel;0===i?n(l,a):setTimeout(()=>{n(l,a),this.uploadCount--},300*i)}).catch(e=>{this.$message.error(s.name+"压缩失败,无法上传!"),o(e)});else if(a){this.uploading=!0;const e=this.uploadCount++,t="telegram"===this.uploadChannel&&this.serverCompress&&(!s.type.includes("image")||s.size/1024/1024<10);0===e?n(s,t):setTimeout(()=>{n(s,t),this.uploadCount--},300*e)}else this.$message.error(s.name+"文件过大,无法上传!"),o("文件过大")})},handleProgress(e){const t=this.fileList.find(t=>t.uid===e.file.uid);t&&(t.progreess=e.percent)},copyAll(){const e=this.fileList.filter(e=>"done"===e.status||"success"===e.status).map(e=>yt(e,this.selectedUrlForm)).join("\n");navigator.clipboard.writeText(e),this.$message({type:"success",message:"整体复制成功"})},clearFileList(){this.fileList.length>0?(this.abortControllers.forEach((e,t)=>{e.abort()}),this.abortControllers.clear(),this.uploadQueue=[],this.fileList=[],this.$message({type:"success",message:"文件列表已清空"})):this.$message({type:"info",message:"文件列表为空"})},clearSuccessList(){this.uploadSuccessCount>0?(this.fileList=this.fileList.filter(e=>"done"!==e.status&&"success"!==e.status),this.$message({type:"success",message:"成功上传文件已清空"})):this.$message({type:"info",message:"成功上传文件为空"})},handlePaste(e){if("INPUT"===e.target.tagName||"TEXTAREA"===e.target.tagName)return;const t=e.clipboardData.items;t.length>0&&this.uploadFromUrl(t)},handleUploadPasteUrls(){const e=this.pastedUrls.split("\n"),t=e.map(e=>e.trim()).filter(e=>""!==e).filter(e=>/^(https?:\/\/[^\s$.?#].[^\s]*)$/.test(e));if("save"===this.pasteUploadMethod)this.uploadFromUrl(t.map(e=>({kind:"string",getAsString:t=>{t(e)}})));else if("external"===this.pasteUploadMethod)for(let o=0;o`,a=`[img]${e}[/img]`,n=new File([],e.split("/").pop(),{type:"text/plain"});n.uid=Date.now()+o,n.url=e,this.fileList.push({uid:n.uid,name:n.name,url:e,finalURL:e,mdURL:l,htmlURL:i,ubbURL:a,srcID:e,status:"uploading",progreess:0,serverCompress:!1,uploadChannel:"external",retryCount:0}),this.uploadFile({file:n,onProgress:e=>this.handleProgress(e),onSuccess:(e,t)=>this.handleSuccess(e,t),onError:(e,t)=>this.handleError(e,t)})}},uploadFromUrl(e){for(let t=0;t{e instanceof File&&this.uploadFile({file:e,onProgress:e=>this.handleProgress(e),onSuccess:(e,t)=>this.handleSuccess(e,t),onError:(e,t)=>this.handleError(e,t)})}).catch(e=>{console.log(e)})}else"string"===e[t].kind&&e[t].getAsString(e=>{const o=/^(https?:\/\/[^\s$.?#].[^\s]*)$/;let s="";o.test(e)&&ht.A.post("/api/fetchRes",{url:e},{responseType:"blob",withAuthCode:!0}).then(o=>{o.headers["content-type"];if(200!=o.status)throw new Error("URL地址请求失败");{const i=o.headers["content-disposition"];if(i){const e=/filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/,t=/filename\*\s*=\s*UTF-8''([^;\n]*)/;let o=e.exec(i);if(null!=o&&o[1]){s=o[1].replace(/['"]/g,"");try{s=decodeURIComponent(s)}catch(l){s=""}}""===s&&(o=t.exec(i),null!=o&&o[1]&&(s=decodeURIComponent(o[1])))}if(""===s){const t=new URL(e);s=t.pathname.split("/").pop()}if(""===s){const o=new URL(e);let l=o.pathname.split(".").pop();(!l||""===l||l.length>10)&&(l="bin"),s="PastedFile"+Date.now()+t+"."+l}const a=o.data,n=new File([a],s,{type:a.type});n.uid=Date.now()+t;const r=this.beforeUpload(n);r instanceof Promise&&r.then(e=>{e instanceof File&&this.uploadFile({file:e,onProgress:e=>this.handleProgress(e),onSuccess:(e,t)=>this.handleSuccess(e,t),onError:(e,t)=>this.handleError(e,t)})}).catch(e=>{console.log(e)})}}).catch(e=>{this.$message({type:"warning",message:"粘贴板中的URL地址请求失败"})})})},handleScroll(e){this.listScrolled=e.scrollTop>0&&this.fileList.length>0},retryError(){this.exceptionList.length>0?(this.retryFailedFiles(this.exceptionList),this.exceptionList=[]):this.$message({type:"info",message:"无上传失败文件"})},handleAutoRetryChange(e){this.$message({type:e?"success":"info",message:e?"自动重试已开启":"自动重试已关闭"}),e&&this.exceptionList.length>0&&this.scheduleAutoRetry()},retryFailedFiles(e){e.forEach(e=>{const t=e.retryCount||0;tthis.handleProgress(e),onSuccess:(e,t)=>this.handleSuccess(e,t),onError:(e,t)=>this.handleError(e,t)})):this.$message({type:"warning",message:`${e.name} 已达到最大重试次数(${this.maxRetryCount}),停止重试`})})},scheduleAutoRetry(){this.retryTimer&&clearTimeout(this.retryTimer),this.retryTimer=setTimeout(()=>{if(this.autoReUpload&&this.exceptionList.length>0){const e=[...this.exceptionList];this.exceptionList=[],this.retryFailedFiles(e)}},this.retryDelay)},async uploadToHuggingFaceDirect(e){const t=this.fileList.find(t=>t.uid===e.file.uid);if(!t)return;const o=new AbortController;this.abortControllers.set(e.file.uid,o);try{console.log("=== HuggingFace Direct Upload ==="),console.log("File:",e.file.name,"Size:",e.file.size),e.onProgress({percent:5,file:e.file}),console.log("Computing SHA256...");const t=await Ft(e.file);if(console.log("SHA256:",t),o.signal.aborted)return void console.log("HuggingFace 上传已取消:",e.file.name);const s=new Uint8Array(await e.file.slice(0,512).arrayBuffer()),l=btoa(String.fromCharCode(...s));e.onProgress({percent:10,file:e.file}),console.log("Getting LFS upload URL...");const i=await(0,ht.A)({url:"/upload/huggingface/getUploadUrl",method:"post",data:{fileSize:e.file.size,fileName:e.file.name,fileType:e.file.type,sha256:t,fileSample:l,channelName:this.channelName,uploadNameType:this.uploadNameType,uploadFolder:this.uploadFolder},withAuthCode:!0,signal:o.signal});if(!i.data.success)throw new Error(i.data.error||"Failed to get upload URL");const a=i.data;if(console.log("Upload info:",a),a.alreadyExists)console.log("File already exists in LFS, skipping upload"),e.onProgress({percent:90,file:e.file});else if(a.needsLfs&&a.uploadAction){const{href:t,header:s}=a.uploadAction;if(s?.chunk_size)await this.uploadToHuggingFaceMultipart(e,a,o);else{console.log("Uploading to S3 (basic)...");const l=await fetch(t,{method:"PUT",headers:s||{},body:e.file,signal:o.signal});if(!l.ok){const e=await l.text();throw new Error(`S3 upload failed: ${l.status} - ${e}`)}console.log("S3 upload complete")}}if(o.signal.aborted)return void console.log("HuggingFace 上传已取消:",e.file.name);e.onProgress({percent:95,file:e.file}),console.log("Committing file...");const n=await(0,ht.A)({url:"/upload/huggingface/commitUpload",method:"post",data:{fullId:a.fullId,filePath:a.filePath,sha256:t,fileSize:e.file.size,fileName:e.file.name,fileType:e.file.type,channelName:a.channelName},withAuthCode:!0,signal:o.signal});if(!n.data.success)throw new Error(n.data.error||"Failed to commit file");console.log("Upload complete:",n.data);const r={data:[{src:n.data.src}]};e.onSuccess(r,e.file)}catch(s){if("CanceledError"===s.name||"ERR_CANCELED"===s.code||"AbortError"===s.name)return void console.log("HuggingFace 上传已取消:",e.file.name);console.error("HuggingFace direct upload error:",s),this.exceptionList.push(e),e.onError(s,e.file)}finally{this.abortControllers.delete(e.file.uid),this.onUploadComplete()}},async uploadToHuggingFaceMultipart(e,t,o){const{uploadAction:s}=t,{href:l,header:i}=s,a=parseInt(i.chunk_size),n=Object.keys(i).filter(e=>/^[0-9]+$/.test(e));console.log(`Multipart upload: ${n.length} parts, chunk size: ${a}`);const r=[],d=n.length;for(const u of n){if(o&&o.signal.aborted)throw console.log("HuggingFace 分片上传已取消"),new DOMException("Upload cancelled","AbortError");const t=parseInt(u)-1,s=t*a,l=Math.min(s+a,e.file.size),n=e.file.slice(s,l);console.log(`Uploading part ${u}/${d}`);const c=await fetch(i[u],{method:"PUT",body:n,signal:o?o.signal:void 0});if(!c.ok)throw new Error(`Failed to upload part ${u}: ${c.status}`);const p=c.headers.get("ETag");if(!p)throw new Error(`No ETag for part ${u}`);r.push({partNumber:parseInt(u),etag:p});const h=10+Math.round(parseInt(u)/d*80);e.onProgress({percent:h,file:e.file})}if(o&&o.signal.aborted)throw console.log("HuggingFace 分片上传已取消"),new DOMException("Upload cancelled","AbortError");console.log("Completing multipart upload...");const c=await fetch(l,{method:"POST",headers:{Accept:"application/vnd.git-lfs+json","Content-Type":"application/vnd.git-lfs+json"},body:JSON.stringify({oid:t.oid,parts:r}),signal:o?o.signal:void 0});if(!c.ok){const e=await c.text();throw new Error(`Multipart complete failed: ${c.status} - ${e}`)}console.log("Multipart upload complete")},async convertImageToWebp(e){return new Promise((t,o)=>{if(e.type.includes("gif")||e.type.includes("svg")||e.type.includes("webp"))return void t(null);const s=new Image,l=document.createElement("canvas"),i=l.getContext("2d");s.onload=()=>{l.width=s.width,l.height=s.height,i.drawImage(s,0,0),l.toBlob(l=>{if(l){const o=e.name,s=o.lastIndexOf("."),i=s>0?o.substring(0,s)+".webp":o+".webp",a=new File([l],i,{type:"image/webp"});a.uid=e.uid,t(a)}else o(new Error("WebP 转换失败"));URL.revokeObjectURL(s.src)},"image/webp",.92)},s.onerror=()=>{URL.revokeObjectURL(s.src),o(new Error("图片加载失败"))},s.src=URL.createObjectURL(e)})},handleUploadCardMouseMove(e){const t=this.$refs.uploadCardGlow;if(!t)return;const o=e.currentTarget.getBoundingClientRect(),s=e.clientX-o.left,l=e.clientY-o.top;t.style.opacity="1",t.style.left=s+"px",t.style.top=l+"px"},handleUploadCardMouseLeave(){const e=this.$refs.uploadCardGlow;e&&(e.style.opacity="0")}},beforeDestroy(){this.retryTimer&&clearTimeout(this.retryTimer)}};const Ut=(0,z.A)(Lt,[["render",pt],["__scopeId","data-v-a12d47f4"]]);var Tt=Ut,St=o(732),$t=o(2224),Mt=o(2359);o(9104);function Rt(e,t,o,s,l,a){const n=Mt.s9;return(0,i.uX)(),(0,i.Wv)(n,{ref:"autocompleteRef",modelValue:a.inputValue,"onUpdate:modelValue":t[0]||(t[0]=e=>a.inputValue=e),class:"directory-suggestion-input","popper-class":l.showSuggestions?"directory-suggestion-popper":"directory-suggestion-popper-hidden","hide-loading":!0,placeholder:o.placeholder,"value-key":"value","fetch-suggestions":a.querySuggestions,"trigger-on-focus":!0,debounce:0,"fit-input-width":!1,placement:"bottom-start",onFocus:a.handleFocus,onBlur:a.handleBlur,onSelect:a.handleSelect},null,8,["modelValue","popper-class","placeholder","fetch-suggestions","onFocus","onBlur","onSelect"])}var _t={name:"DirectorySuggestionInput",props:{modelValue:{type:String,default:""},placeholder:{type:String,default:"上传目录"}},emits:["update:modelValue","focus","blur","select"],data(){return{directoryTreeRoot:null,directoryTreeLoaded:!1,directoryTreeLoading:!1,directoryChildrenMap:{},focusTime:null,showSuggestions:!1,isFocused:!1}},computed:{inputValue:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{handleFocus(){this.isFocused=!0,this.focusTime=Date.now(),this.showSuggestions=!1,setTimeout(()=>{this.isFocused&&(this.showSuggestions=!0,this.$nextTick(()=>{setTimeout(()=>{this.updatePopperPosition()},50)}))},400),this.ensureDirectoryTreeLoaded(),this.$emit("focus")},handleBlur(){this.isFocused=!1,this.showSuggestions=!1,this.$emit("blur")},handleSelect(e){const t=e?.value||"";this.$emit("select",t);const o=this.normalizeDirectoryPath(t),s=this.directoryChildrenMap[o];s&&s.length>0&&setTimeout(()=>{const e=this.$refs.autocompleteRef?.inputRef?.input;e&&(e.focus(),e.dispatchEvent(new Event("input")),this.showSuggestions=!0)},50)},normalizeDirectoryPath(e){if(!e)return"/";let t=e;return t.startsWith("/")||(t="/"+t),"/"===t||t.endsWith("/")||(t+="/"),t},buildDirectoryChildrenMap(e){const t={},o=e=>{const s=this.normalizeDirectoryPath(e.path),l=Array.isArray(e.children)?e.children:[];t[s]=l.map(e=>({name:e.name,path:this.normalizeDirectoryPath(e.path)})),l.forEach(o)};o(e),this.directoryChildrenMap=t},async ensureDirectoryTreeLoaded(){if(!this.directoryTreeLoaded&&!this.directoryTreeLoading){this.directoryTreeLoading=!0;try{const e=await ht.A.get("/api/directoryTree",{withAuthCode:!0}),t=e?.data?.tree;t&&(this.directoryTreeRoot=t,this.buildDirectoryChildrenMap(t),this.directoryTreeLoaded=!0)}catch(e){console.error("Failed to load directory tree for autocomplete:",e)}finally{this.directoryTreeLoading=!1}}},parseDirectoryQuery(e){const t=e&&e.startsWith("/")?e:`/${e||""}`,o=t.slice(1),s=o.split("/"),l=s[s.length-1]||"",i=s.slice(0,-1).filter(Boolean),a=i.length>0?`/${i.join("/")}/`:"/";return{segmentInput:l,parentPath:a}},getDirectorySuggestions(e){const{segmentInput:t,parentPath:o}=this.parseDirectoryQuery(e),s=this.directoryChildrenMap[o]||[];if(!t)return s.slice(0,10).map(e=>({value:e.path}));const l=t.toLowerCase(),i=s.filter(e=>e.name.toLowerCase().startsWith(l)).map(e=>({value:e.path}));return i.slice(0,10)},async querySuggestions(e,t){await this.ensureDirectoryTreeLoaded();let o=0;if(this.focusTime){const e=Date.now()-this.focusTime;e<400&&(o=400-e)}o>0?setTimeout(()=>{t(this.getDirectorySuggestions(e))},o):t(this.getDirectorySuggestions(e))},updatePopperPosition(){try{const e=this.$refs.autocompleteRef?.popperRef;e?.popperInstanceRef&&e.popperInstanceRef.update()}catch{}}}};const xt=(0,z.A)(_t,[["render",Rt],["__scopeId","data-v-cedd90b2"]]);var Et=xt,At=o(4453);const It={class:"container"},Dt={class:"upload-home"},Nt={href:"https://cfbed.sanyue.de/qa/",target:"_blank",class:"info-container"},Pt={class:"toolbar-manage"},Wt={class:"toolbar"},Vt={class:"header"},zt={class:"title"},Bt={class:"main-title",href:"https://github.com/MarSeventh/CloudFlare-ImgBed",target:"_blank"},Ht={class:"dialog-section"},Xt={class:"section-content"},Qt={class:"dialog-section"},jt={class:"section-header"},Ot={class:"section-content"},qt={class:"setting-item"},Gt={key:0,class:"setting-item"},Kt={class:"dialog-action"},Jt=["innerHTML"],Yt={class:"dialog-footer"};function Zt(e,t,o,n,r,d){const c=At.A,u=(0,i.g2)("font-awesome-icon"),p=s.R7,h=Et,m=G.WK,f=l.S2,g=$t.A,y=tt.c6,b=tt.Iy,C=tt.dW,k=St.A,v=Tt,w=J.ll,F=J.MQ,L=q.qi,U=Q.kZ,T=Re,S=X.A,$=H;return(0,i.uX)(),(0,i.CE)("div",It,[(0,i.Lk)("div",Dt,[(0,i.bF)(c,{class:"toggle-dark-button desktop-only"}),(0,i.bF)(p,{content:"查看文档",placement:"bottom",disabled:d.disableTooltip},{default:(0,i.k6)(()=>[(0,i.Lk)("a",Nt,[(0,i.bF)(u,{icon:"book",class:"info-icon",size:"lg"})])]),_:1},8,["disabled"]),(0,i.Lk)("div",{class:(0,a.C4)(["upload-folder-container",{"no-announcement":!d.announcementAvailable}])},[(0,i.Lk)("div",{class:(0,a.C4)(["upload-folder",{active:r.isFolderInputActive}])},[d.showDirectorySuggestions?((0,i.uX)(),(0,i.Wv)(h,{key:0,modelValue:r.uploadFolder,"onUpdate:modelValue":t[0]||(t[0]=e=>r.uploadFolder=e),class:"inner-folder-input",placeholder:"上传目录",onFocus:d.handleFolderInputFocus,onBlur:d.handleFolderInputBlur,onSelect:d.handleDirectorySelect},null,8,["modelValue","onFocus","onBlur","onSelect"])):((0,i.uX)(),(0,i.Wv)(m,{key:1,class:"inner-folder-input",modelValue:r.uploadFolder,"onUpdate:modelValue":t[1]||(t[1]=e=>r.uploadFolder=e),placeholder:"上传目录",onFocus:d.handleFolderInputFocus,onBlur:d.handleFolderInputBlur},null,8,["modelValue","onFocus","onBlur"]))],2),d.showDirectorySuggestions?((0,i.uX)(),(0,i.Wv)(g,{key:0,"current-directory":r.uploadFolder,source:"upload",onSelect:d.handleDirectorySelect},{trigger:(0,i.k6)(()=>[(0,i.bF)(f,{class:"directory-tree-trigger"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"folder-tree"})]),_:1})]),_:1},8,["current-directory","onSelect"])):(0,i.Q3)("",!0)],2),(0,i.bF)(p,{content:"切换上传方式",placement:"bottom",disabled:d.disableTooltip},{default:(0,i.k6)(()=>[(0,i.bF)(f,{class:"upload-method-button desktop-only",onClick:d.handleChangeUploadMethod},{default:(0,i.k6)(()=>["default"===r.uploadMethod?((0,i.uX)(),(0,i.Wv)(u,{key:0,icon:"folder-open",class:"upload-method-icon",size:"lg"})):"paste"===r.uploadMethod?((0,i.uX)(),(0,i.Wv)(u,{key:1,icon:"paste",class:"upload-method-icon",size:"lg"})):(0,i.Q3)("",!0)]),_:1},8,["onClick"])]),_:1},8,["disabled"]),(0,i.bF)(p,{content:"上传记录",placement:"bottom",disabled:d.disableTooltip},{default:(0,i.k6)(()=>[(0,i.bF)(f,{class:"history-button desktop-only",onClick:t[2]||(t[2]=e=>r.showHistory=!0)},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"history",class:"history-icon",size:"lg"})]),_:1})]),_:1},8,["disabled"]),d.announcementAvailable?((0,i.uX)(),(0,i.Wv)(p,{key:0,content:"查看公告",placement:"bottom",disabled:d.disableTooltip},{default:(0,i.k6)(()=>[(0,i.bF)(f,{class:"announcement-button desktop-only",onClick:d.handleShowAnnouncement},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"bullhorn",class:"announcement-icon",size:"lg"})]),_:1},8,["onClick"])]),_:1},8,["disabled"])):(0,i.Q3)("",!0),(0,i.bF)(C,{class:"mobile-more-dropdown mobile-only",trigger:"click",onCommand:d.handleMobileMenuCommand},{dropdown:(0,i.k6)(()=>[(0,i.bF)(b,null,{default:(0,i.k6)(()=>[(0,i.bF)(y,{command:"toggleTheme"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:d.getThemeIcon(),style:{"margin-right":"8px"}},null,8,["icon"]),(0,i.eW)(" "+(0,a.v_)(d.getThemeText()),1)]),_:1}),(0,i.bF)(y,{command:"toggleUploadMethod"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"default"===r.uploadMethod?"paste":"folder-open",style:{"margin-right":"8px"}},null,8,["icon"]),(0,i.eW)(" "+(0,a.v_)("default"===r.uploadMethod?"粘贴上传":"文件上传"),1)]),_:1}),(0,i.bF)(y,{command:"showHistory"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"history",style:{"margin-right":"8px"}}),t[22]||(t[22]=(0,i.eW)(" 上传记录 ",-1))]),_:1}),(0,i.bF)(y,{command:"showAnnouncement",disabled:!d.announcementAvailable},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"bullhorn",style:{"margin-right":"8px"}}),t[23]||(t[23]=(0,i.eW)(" 查看公告 ",-1))]),_:1},8,["disabled"])]),_:1})]),default:(0,i.k6)(()=>[(0,i.bF)(f,{class:"mobile-more-button"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"ellipsis-v",size:"lg"})]),_:1})]),_:1},8,["onCommand"]),(0,i.Lk)("div",Pt,[(0,i.bF)(f,{class:(0,a.C4)(["toolbar-manage-button",{active:r.isToolBarOpen}]),size:"large",onClick:d.handleOpenToolbar,circle:""},{default:(0,i.k6)(()=>[r.isToolBarOpen?((0,i.uX)(),(0,i.Wv)(u,{key:1,icon:"times",class:"manage-icon",size:"lg"})):((0,i.uX)(),(0,i.Wv)(u,{key:0,icon:"bars",class:"manage-icon",size:"lg"}))]),_:1},8,["class","onClick"])]),(0,i.Lk)("div",Wt,[(0,i.bF)(p,{disabled:d.disableTooltip,content:"上传设置",placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(f,{class:(0,a.C4)(["toolbar-button compress-button",{active:r.isToolBarOpen}]),size:"large",onClick:d.openCompressDialog,circle:""},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"cloud-upload",class:"compress-icon",size:"lg"})]),_:1},8,["class","onClick"])]),_:1},8,["disabled"]),(0,i.bF)(p,{disabled:d.disableTooltip,content:"链接格式",placement:"left"},{default:(0,i.k6)(()=>[(0,i.bF)(f,{class:(0,a.C4)(["toolbar-button link-button",{active:r.isToolBarOpen}]),size:"large",onClick:d.openUrlDialog,circle:""},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"link",class:"link-icon",size:"lg"})]),_:1},8,["class","onClick"])]),_:1},8,["disabled"]),(0,i.bF)(p,{disabled:d.disableTooltip,content:"系统管理",placement:"left"},{default:(0,i.k6)(()=>[(0,i.bF)(f,{class:(0,a.C4)(["toolbar-button config-button",{active:r.isToolBarOpen}]),size:"large",onClick:d.handleManage,circle:""},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"cog",class:"config-icon",size:"lg"})]),_:1},8,["class","onClick"])]),_:1},8,["disabled"]),(0,i.bF)(p,{disabled:d.disableTooltip,content:"退出登录",placement:"left"},{default:(0,i.k6)(()=>[(0,i.bF)(f,{class:(0,a.C4)(["toolbar-button sign-out-button",{active:r.isToolBarOpen}]),size:"large",onClick:d.handleLogout,circle:""},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"sign-out-alt",class:"sign-out-icon",size:"lg"})]),_:1},8,["class","onClick"])]),_:1},8,["disabled"])]),(0,i.bF)(k,{useConfigLink:!0}),(0,i.Lk)("div",Vt,[(0,i.Lk)("h1",zt,[(0,i.Lk)("a",Bt,(0,a.v_)(d.ownerName),1),t[24]||(t[24]=(0,i.eW)(" ImgHub",-1))])]),(0,i.bF)(v,{selectedUrlForm:r.selectedUrlForm,customerCompress:r.customerCompress,compressQuality:r.compressQuality,compressBar:r.compressBar,serverCompress:r.serverCompress,uploadChannel:r.uploadChannel,channelName:r.channelName,uploadNameType:r.uploadNameType,useCustomUrl:r.useCustomUrl,customUrlPrefix:r.customUrlPrefix,autoRetry:r.autoRetry,urlPrefix:d.urlPrefix,uploadMethod:r.uploadMethod,uploadFolder:r.uploadFolder,convertToWebp:r.convertToWebp,class:"upload"},null,8,["selectedUrlForm","customerCompress","compressQuality","compressBar","serverCompress","uploadChannel","channelName","uploadNameType","useCustomUrl","customUrlPrefix","autoRetry","urlPrefix","uploadMethod","uploadFolder","convertToWebp"]),(0,i.bF)(U,{title:"链接格式设置",modelValue:r.showUrlDialog,"onUpdate:modelValue":t[7]||(t[7]=e=>r.showUrlDialog=e),width:d.dialogWidth,"show-close":!1,class:"settings-dialog"},{default:(0,i.k6)(()=>[(0,i.Lk)("div",Ht,[t[29]||(t[29]=(0,i.Lk)("div",{class:"section-header"},[(0,i.Lk)("span",{class:"section-title"},"默认复制链接")],-1)),(0,i.Lk)("div",Xt,[(0,i.bF)(F,{modelValue:r.selectedUrlForm,"onUpdate:modelValue":t[3]||(t[3]=e=>r.selectedUrlForm=e),onChange:d.changeUrlForm,class:"radio-card-group grid-2x2"},{default:(0,i.k6)(()=>[(0,i.bF)(w,{value:"url",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"link",class:"radio-icon"}),t[25]||(t[25]=(0,i.Lk)("span",null,"原始链接",-1))]),_:1}),(0,i.bF)(w,{value:"md",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"code",class:"radio-icon"}),t[26]||(t[26]=(0,i.Lk)("span",null,"MarkDown",-1))]),_:1}),(0,i.bF)(w,{value:"html",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"code-branch",class:"radio-icon"}),t[27]||(t[27]=(0,i.Lk)("span",null,"HTML",-1))]),_:1}),(0,i.bF)(w,{value:"ubb",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"quote-right",class:"radio-icon"}),t[28]||(t[28]=(0,i.Lk)("span",null,"BBCode",-1))]),_:1})]),_:1},8,["modelValue","onChange"])])]),(0,i.Lk)("div",Qt,[(0,i.Lk)("div",jt,[t[30]||(t[30]=(0,i.Lk)("span",{class:"section-title"},"自定义链接",-1)),(0,i.bF)(p,{content:"默认链接为https://your.domain/file/xxx.jpg
如果启用自定义链接格式,只保留xxx.jpg部分,其他部分请自行输入",placement:"top","raw-content":""},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"question-circle",class:"section-help-icon"})]),_:1})]),(0,i.Lk)("div",Ot,[(0,i.Lk)("div",qt,[t[31]||(t[31]=(0,i.Lk)("span",{class:"setting-label"},"启用自定义",-1)),(0,i.bF)(L,{modelValue:r.useCustomUrl,"onUpdate:modelValue":t[4]||(t[4]=e=>r.useCustomUrl=e),"active-value":"true","inactive-value":"false"},null,8,["modelValue"])]),"true"===r.useCustomUrl?((0,i.uX)(),(0,i.CE)("div",Gt,[t[32]||(t[32]=(0,i.Lk)("span",{class:"setting-label"},"自定义前缀",-1)),(0,i.bF)(m,{modelValue:r.customUrlPrefix,"onUpdate:modelValue":t[5]||(t[5]=e=>r.customUrlPrefix=e),placeholder:"请输入自定义链接前缀",class:"setting-input"},null,8,["modelValue"])])):(0,i.Q3)("",!0)])]),(0,i.Lk)("div",Kt,[(0,i.bF)(f,{type:"primary",onClick:t[6]||(t[6]=e=>r.showUrlDialog=!1),class:"confirm-btn"},{default:(0,i.k6)(()=>[...t[33]||(t[33]=[(0,i.eW)("确定",-1)])]),_:1})])]),_:1},8,["modelValue","width"]),(0,i.bF)(T,{modelValue:r.showCompressDialog,"onUpdate:modelValue":t[8]||(t[8]=e=>r.showCompressDialog=e),uploadChannel:r.uploadChannel,"onUpdate:uploadChannel":t[9]||(t[9]=e=>r.uploadChannel=e),channelName:r.channelName,"onUpdate:channelName":t[10]||(t[10]=e=>r.channelName=e),currentChannelList:d.currentChannelList,uploadFolder:r.uploadFolder,"onUpdate:uploadFolder":t[11]||(t[11]=e=>r.uploadFolder=e),autoRetry:r.autoRetry,"onUpdate:autoRetry":t[12]||(t[12]=e=>r.autoRetry=e),uploadNameType:r.uploadNameType,"onUpdate:uploadNameType":t[13]||(t[13]=e=>r.uploadNameType=e),convertToWebp:r.convertToWebp,"onUpdate:convertToWebp":t[14]||(t[14]=e=>r.convertToWebp=e),customerCompress:r.customerCompress,"onUpdate:customerCompress":t[15]||(t[15]=e=>r.customerCompress=e),compressBar:r.compressBar,"onUpdate:compressBar":t[16]||(t[16]=e=>r.compressBar=e),compressQuality:r.compressQuality,"onUpdate:compressQuality":t[17]||(t[17]=e=>r.compressQuality=e),serverCompress:r.serverCompress,"onUpdate:serverCompress":t[18]||(t[18]=e=>r.serverCompress=e)},null,8,["modelValue","uploadChannel","channelName","currentChannelList","uploadFolder","autoRetry","uploadNameType","convertToWebp","customerCompress","compressBar","compressQuality","serverCompress"])]),(0,i.bF)(S,{class:"footer"}),(0,i.bF)(U,{title:"公告",modelValue:r.showAnnouncementDialog,"onUpdate:modelValue":t[20]||(t[20]=e=>r.showAnnouncementDialog=e),width:d.dialogWidth,"show-close":!1,"close-on-click-modal":!1,"close-on-press-escape":!1,center:""},{footer:(0,i.k6)(()=>[(0,i.Lk)("span",Yt,[(0,i.bF)(f,{type:"primary",onClick:t[19]||(t[19]=e=>r.showAnnouncementDialog=!1)},{default:(0,i.k6)(()=>[...t[34]||(t[34]=[(0,i.eW)("我已知晓!",-1)])]),_:1})])]),default:(0,i.k6)(()=>[(0,i.Lk)("div",{innerHTML:r.announcementContent},null,8,Jt)]),_:1},8,["modelValue","width"]),(0,i.bF)($,{show:r.showHistory,onClose:t[21]||(t[21]=e=>r.showHistory=!1)},null,8,["show"])])}o(3579);var eo=o(8903),to=o(144),oo=o(4570),so=o.n(oo),lo=o(2388),io={name:"UploadHome",mixins:[eo.A],data(){return{selectedUrlForm:(0,to.KR)(""),showUrlDialog:!1,showCompressDialog:!1,customerCompress:!0,compressQuality:4,compressBar:5,convertToWebp:!1,serverCompress:!0,uploadChannel:"",channelName:"",availableChannels:{},uploadNameType:"",customUrlPrefix:"",useCustomUrl:"false",autoRetry:!0,useDefaultWallPaper:!1,isToolBarOpen:!1,uploadMethod:"default",uploadFolder:"",isFolderInputActive:!1,showAnnouncementDialog:!1,announcementContent:"",showHistory:!1,themeMode:"auto"}},watch:{customerCompress(e){this.updateCompressConfig("customerCompress",e)},compressQuality(e){this.updateCompressConfig("compressQuality",e)},compressBar(e){null===e||void 0===e||e<1?this.compressBar=1:(this.compressQuality>e&&(this.compressQuality=e),this.updateCompressConfig("compressBar",e))},serverCompress(e){this.updateCompressConfig("serverCompress",e)},convertToWebp(e){this.updateCompressConfig("convertToWebp",e)},uploadChannel(e){this.updateStoreUploadChannel(e);const t=this.availableChannels[e]||[],o=this.storeChannelName;o&&t.some(e=>e.name===o)?this.channelName=o:this.channelName=""},channelName(e){this.$store.commit("setStoreChannelName",e||"")},uploadNameType(e){this.updateStoreUploadNameType(e)},customUrlPrefix(e){this.$store.commit("setCustomUrlSettings",{key:"customUrlPrefix",value:e})},useCustomUrl(e){this.$store.commit("setCustomUrlSettings",{key:"useCustomUrl",value:e})},autoRetry(e){this.$store.commit("setStoreAutoRetry",e)},uploadFolder(e){if(this.validateUploadFolder(e,!1)){const t=(0,lo.G)(e,{strict:!0});t.valid&&this.$store.commit("setStoreUploadFolder",e)}else this.$nextTick(()=>{this.uploadFolder=this.storeUploadFolder})}},computed:{...(0,ft.L8)(["userConfig","uploadCopyUrlForm","compressConfig","storeUploadChannel","storeChannelName","storeUploadNameType","customUrlSettings","storeAutoRetry","storeUploadMethod","storeUploadFolder"]),ownerName(){return this.userConfig?.ownerName||"Sanyue"},dialogWidth(){return window.innerWidth>768?"50%":"90%"},disableTooltip(){return window.innerWidth<768},urlPrefix(){return this.userConfig?.urlPrefix||`${window.location.protocol}//${window.location.host}/file/`},announcementAvailable(){return!!this.userConfig?.announcement},showDirectorySuggestions(){return this.userConfig?.showDirectorySuggestions??!1},currentChannelList(){return this.availableChannels[this.uploadChannel]||[]}},mounted(){this.initializeBackground("uploadBkImg",".container",!1,!0),this.selectedUrlForm=this.uploadCopyUrlForm||"url",this.customerCompress=this.compressConfig.customerCompress??this.parseBoolean(this.userConfig?.defaultCustomerCompress,!0),this.compressQuality=this.compressConfig.compressQuality??this.parseNumber(this.userConfig?.defaultCompressQuality,4),this.compressBar=this.compressConfig.compressBar??this.parseNumber(this.userConfig?.defaultCompressBar,5),this.serverCompress=this.compressConfig.serverCompress??!0,this.convertToWebp=this.compressConfig.convertToWebp??this.parseBoolean(this.userConfig?.defaultConvertToWebp,!1),this.uploadChannel=this.storeUploadChannel||this.userConfig?.defaultUploadChannel||"telegram",this.autoRetry=this.storeAutoRetry,this.uploadNameType=this.storeUploadNameType||this.userConfig?.defaultUploadNameType||"default",this.customUrlPrefix=this.customUrlSettings.customUrlPrefix,this.useCustomUrl=this.customUrlSettings.useCustomUrl,this.uploadMethod=this.storeUploadMethod,this.fetchAvailableChannels(),this.uploadFolder=this.storeUploadFolder||this.userConfig?.defaultUploadFolder||"";const e=this.$store.getters.cusDarkMode,t=this.$store.getters.useDarkMode;this.themeMode=e?t?"dark":"light":"auto";const o=localStorage.getItem("visitedUploadHome"),s=this.userConfig?.announcement;!o&&s&&(this.announcementContent=s,this.showAnnouncementDialog=!0,localStorage.setItem("visitedUploadHome","true"))},components:{UploadForm:Tt,Footer:X.A,ToggleDark:At.A,Logo:St.A,UploadHistory:H,UploadSettingsDialog:Re,DirectoryTreePicker:$t.A,DirectorySuggestionInput:Et},methods:{async fetchAvailableChannels(){try{const e=await ht.A.get("/api/channels",{withAuthCode:!0});if(e.data){this.availableChannels=e.data;const t=this.storeChannelName,o=this.userConfig?.defaultChannelName,s=this.availableChannels[this.uploadChannel]||[];t&&s.some(e=>e.name===t)?this.channelName=t:""!==t&&null!==t&&void 0!==t||""!==t&&o&&s.some(e=>e.name===o)&&(this.channelName=o)}}catch(e){console.error("Failed to fetch available channels:",e)}},validateUploadFolder(e,t=!0){e&&!e.startsWith("/")&&(e="/"+e,this.uploadFolder=e);const o=(0,lo.G)(e,{strict:t});if(!o.valid){const e=o.error.replace("目标目录","上传目录");return this.$message.error(e),!1}return!0},handleFolderInputFocus(){this.isFolderInputActive=!0},handleFolderInputBlur(){this.isFolderInputActive=!1,this.uploadFolder&&!this.uploadFolder.startsWith("/")&&(this.uploadFolder="/"+this.uploadFolder),this.validateUploadFolder(this.uploadFolder,!0)||this.$nextTick(()=>{this.uploadFolder=this.storeUploadFolder})},handleManage(){this.$router.push("/dashboard")},parseBoolean(e,t){return void 0===e||null===e?t:"boolean"===typeof e?e:"string"===typeof e?"true"===e:t},parseNumber(e,t){if(void 0===e||null===e)return t;const o=parseFloat(e);return isNaN(o)?t:o},openUrlDialog(){this.showUrlDialog=!0},handleLogout(){so().remove("authCode"),this.$router.push("/login"),this.$message.success("已退出登录")},changeUrlForm(){this.$store.commit("setUploadCopyUrlForm",this.selectedUrlForm)},openCompressDialog(){this.showCompressDialog=!0},updateCompressConfig(e,t){this.$store.commit("setCompressConfig",{key:e,value:t})},updateStoreUploadChannel(e){this.$store.commit("setStoreUploadChannel",e)},updateStoreUploadNameType(e){this.$store.commit("setStoreUploadNameType",e)},handleOpenToolbar(){this.isToolBarOpen=!this.isToolBarOpen,setTimeout(()=>{const e=document.querySelectorAll(".toolbar-button");e.forEach(e=>{e.style.pointerEvents=this.isToolBarOpen?"auto":"none"})},300)},handleChangeUploadMethod(){this.uploadMethod="default"===this.uploadMethod?"paste":"default",this.$store.commit("setUploadMethod",this.uploadMethod)},handleMobileMenuCommand(e){"toggleTheme"===e?"auto"===this.themeMode?(this.themeMode="light",this.$store.commit("setCusDarkMode",!0),this.$store.commit("setUseDarkMode",!1)):"light"===this.themeMode?(this.themeMode="dark",this.$store.commit("setCusDarkMode",!0),this.$store.commit("setUseDarkMode",!0)):(this.themeMode="auto",this.$store.commit("setCusDarkMode",!1)):"toggleUploadMethod"===e?this.handleChangeUploadMethod():"showHistory"===e?this.showHistory=!0:"showAnnouncement"===e&&this.handleShowAnnouncement()},getThemeIcon(){return"auto"===this.themeMode?"sun":"light"===this.themeMode?"moon":"adjust"},getThemeText(){return"auto"===this.themeMode?"浅色模式":"light"===this.themeMode?"深色模式":"自动模式"},handleShowAnnouncement(){const e=this.userConfig?.announcement;e?(this.announcementContent=e,this.showAnnouncementDialog=!0):this.$message.info("暂无公告")},handleDirectorySelect(e){this.uploadFolder=e,this.validateUploadFolder(e,!0)&&this.$store.commit("setStoreUploadFolder",e)}}};const ao=(0,z.A)(io,[["render",Zt],["__scopeId","data-v-1db22ef8"]]);var no=ao},2893:function(e,t,o){"use strict";o(5331)},3378:function(e,t,o){"use strict";o(5331),o(8736),o(9899)},3597:function(e,t,o){"use strict";o(5331)},4396:function(e,t,o){"use strict";o(5331),o(4885)},4885:function(e,t,o){"use strict";o(5331)},5385:function(e,t,o){"use strict";o(5331)},5616:function(e,t,o){"use strict";o(5331),o(7197)},5970:function(e,t,o){"use strict";o(5331)},6334:function(e,t,o){e.exports=o(1393)},6682:function(e,t,o){"use strict";e.exports=o.p+"img/404.8ed11fb3.png"},6808:function(e,t,o){"use strict";o(5331),o(8785),o(200),o(5970),o(9104)},7952:function(e,t,o){"use strict";o(5331),o(7197)},8075:function(e,t,o){"use strict";o(5331)},8736:function(e,t,o){"use strict";o(5331)},8785:function(e,t,o){"use strict";o(5331)},8830:function(e,t,o){"use strict";o(5331)},9104:function(e,t,o){"use strict";o(5331)},9899:function(e,t,o){"use strict";o(5331)}}]); -//# sourceMappingURL=489.0082a34f.js.map \ No newline at end of file diff --git a/js/489.0082a34f.js.gz b/js/489.0082a34f.js.gz deleted file mode 100644 index b20af386eda60856272207cb495bfa88ed2d6b04..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26003 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 S+6_oNIQ~C+X9hnUWdQ*4*NqAQ diff --git a/js/489.0082a34f.js.map b/js/489.0082a34f.js.map deleted file mode 100644 index 75560a50..00000000 --- a/js/489.0082a34f.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"js/489.0082a34f.js","mappings":"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","sources":["webpack://sanyue_imghub/./src/utils/fetchWithAuth.js","webpack://sanyue_imghub/./node_modules/image-conversion/build/conversion.js","webpack://sanyue_imghub/./src/components/DirectoryTreePicker.vue?0bf9","webpack://sanyue_imghub/./src/components/DirectoryTreePicker.vue","webpack://sanyue_imghub/./src/components/DirectoryTreePicker.vue?6984","webpack://sanyue_imghub/./src/utils/pathValidator.js","webpack://sanyue_imghub/./src/components/upload/UploadHistory.vue?f0ab","webpack://sanyue_imghub/./src/components/upload/UploadHistory.vue","webpack://sanyue_imghub/./src/components/upload/UploadHistory.vue?d5f5","webpack://sanyue_imghub/./src/components/upload/UploadSettingsDialog.vue?9e07","webpack://sanyue_imghub/./src/components/upload/UploadSettingsDialog.vue","webpack://sanyue_imghub/./src/components/upload/UploadSettingsDialog.vue?adb2","webpack://sanyue_imghub/./src/components/upload/UploadFileItem.vue?32aa","webpack://sanyue_imghub/./src/components/upload/UploadFileItem.vue","webpack://sanyue_imghub/./src/components/upload/UploadFileItem.vue?420c","webpack://sanyue_imghub/./src/components/upload/UploadForm.vue?12e4","webpack://sanyue_imghub/./src/utils/upload/urlBuilder.js","webpack://sanyue_imghub/./src/utils/upload/sha256.js","webpack://sanyue_imghub/./src/components/upload/UploadForm.vue","webpack://sanyue_imghub/./src/components/upload/UploadForm.vue?bdbd","webpack://sanyue_imghub/./src/components/DirectorySuggestionInput.vue?07a4","webpack://sanyue_imghub/./src/components/DirectorySuggestionInput.vue","webpack://sanyue_imghub/./src/components/DirectorySuggestionInput.vue?69c3","webpack://sanyue_imghub/./src/views/UploadHome.vue?1d08","webpack://sanyue_imghub/./src/views/UploadHome.vue","webpack://sanyue_imghub/./src/views/UploadHome.vue?af00","webpack://sanyue_imghub/./node_modules/image-conversion/index.js"],"sourcesContent":["import store from '@/store'\r\nimport { ElMessage } from 'element-plus'\r\nimport router from '@/router'\r\n\r\nexport default async function fetchWithAuth(url, options = {}) {\r\n // 开发环境下添加 /api 前缀\r\n url = process.env.NODE_ENV === 'production' ? url : `/api${url}`;\r\n\r\n const credentials = store.getters.credentials || btoa('unset:unset');\r\n\r\n // 设置 Authorization 头\r\n options.headers = {\r\n ...options.headers,\r\n 'Authorization': `Basic ${credentials}`\r\n };\r\n // 确保包含凭据,如 cookies\r\n options.credentials = 'include'; \r\n\r\n const response = await fetch(url, options);\r\n\r\n if (response.status === 401) {\r\n // Redirect to the login page if a 401 Unauthorized is returned\r\n ElMessage.error('认证状态错误,请重新登录');\r\n router.push('/adminLogin'); \r\n }\r\n\r\n return response;\r\n}\r\n","!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define([],e):\"object\"==typeof exports?exports.imageConversion=e():t.imageConversion=e()}(this,(function(){return function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,\"a\",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p=\"\",n(n.s=0)}([function(t,e,n){\"use strict\";var r;function o(t){return[\"image/png\",\"image/jpeg\",\"image/gif\"].some(e=>e===t)}n.r(e),n.d(e,\"canvastoDataURL\",(function(){return a})),n.d(e,\"canvastoFile\",(function(){return c})),n.d(e,\"dataURLtoFile\",(function(){return s})),n.d(e,\"dataURLtoImage\",(function(){return l})),n.d(e,\"downloadFile\",(function(){return d})),n.d(e,\"filetoDataURL\",(function(){return f})),n.d(e,\"imagetoCanvas\",(function(){return g})),n.d(e,\"urltoBlob\",(function(){return w})),n.d(e,\"urltoImage\",(function(){return m})),n.d(e,\"compress\",(function(){return p})),n.d(e,\"compressAccurately\",(function(){return b})),n.d(e,\"EImageType\",(function(){return r})),function(t){t.PNG=\"image/png\",t.JPEG=\"image/jpeg\",t.GIF=\"image/gif\"}(r||(r={}));var i=function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{u(r.next(t))}catch(t){i(t)}}function c(t){try{u(r.throw(t))}catch(t){i(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,c)}u((r=r.apply(t,e||[])).next())}))};function a(t,e=.92,n=r.JPEG){return i(this,void 0,void 0,(function*(){return o(n)||(n=r.JPEG),t.toDataURL(n,e)}))}function c(t,e=.92,n=r.JPEG){return new Promise(r=>t.toBlob(t=>r(t),n,e))}var u=function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{u(r.next(t))}catch(t){i(t)}}function c(t){try{u(r.throw(t))}catch(t){i(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,c)}u((r=r.apply(t,e||[])).next())}))};function s(t,e){return u(this,void 0,void 0,(function*(){const n=t.split(\",\");let r=n[0].match(/:(.*?);/)[1];const i=atob(n[1]);let a=i.length;const c=new Uint8Array(a);for(;a--;)c[a]=i.charCodeAt(a);return o(e)&&(r=e),new Blob([c],{type:r})}))}function l(t){return new Promise((e,n)=>{const r=new Image;r.onload=()=>e(r),r.onerror=()=>n(new Error(\"dataURLtoImage(): dataURL is illegal\")),r.src=t})}function d(t,e){const n=document.createElement(\"a\");n.href=window.URL.createObjectURL(t),n.download=e||Date.now().toString(36),document.body.appendChild(n);const r=document.createEvent(\"MouseEvents\");r.initEvent(\"click\",!1,!1),n.dispatchEvent(r),document.body.removeChild(n)}function f(t){return new Promise(e=>{const n=new FileReader;n.onloadend=t=>e(t.target.result),n.readAsDataURL(t)})}var h=function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{u(r.next(t))}catch(t){i(t)}}function c(t){try{u(r.throw(t))}catch(t){i(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,c)}u((r=r.apply(t,e||[])).next())}))};function g(t,e={}){return h(this,void 0,void 0,(function*(){const n=Object.assign({},e),r=document.createElement(\"canvas\"),o=r.getContext(\"2d\");let i,a;for(const t in n)Object.prototype.hasOwnProperty.call(n,t)&&(n[t]=Number(n[t]));if(n.scale){const e=n.scale>0&&n.scale<10?n.scale:1;a=t.width*e,i=t.height*e}else a=n.width||n.height*t.width/t.height||t.width,i=n.height||n.width*t.height/t.width||t.height;switch([5,6,7,8].some(t=>t===n.orientation)?(r.height=a,r.width=i):(r.height=i,r.width=a),n.orientation){case 3:o.rotate(180*Math.PI/180),o.drawImage(t,-r.width,-r.height,r.width,r.height);break;case 6:o.rotate(90*Math.PI/180),o.drawImage(t,0,-r.width,r.height,r.width);break;case 8:o.rotate(270*Math.PI/180),o.drawImage(t,-r.height,0,r.height,r.width);break;case 2:o.translate(r.width,0),o.scale(-1,1),o.drawImage(t,0,0,r.width,r.height);break;case 4:o.translate(r.width,0),o.scale(-1,1),o.rotate(180*Math.PI/180),o.drawImage(t,-r.width,-r.height,r.width,r.height);break;case 5:o.translate(r.width,0),o.scale(-1,1),o.rotate(90*Math.PI/180),o.drawImage(t,0,-r.width,r.height,r.width);break;case 7:o.translate(r.width,0),o.scale(-1,1),o.rotate(270*Math.PI/180),o.drawImage(t,-r.height,0,r.height,r.width);break;default:o.drawImage(t,0,0,r.width,r.height)}return r}))}function w(t){return fetch(t).then(t=>t.blob())}function m(t){return new Promise((e,n)=>{const r=new Image;r.onload=()=>e(r),r.onerror=()=>n(new Error(\"urltoImage(): Image failed to load, please check the image URL\")),r.src=t})}var y=function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{u(r.next(t))}catch(t){i(t)}}function c(t){try{u(r.throw(t))}catch(t){i(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,c)}u((r=r.apply(t,e||[])).next())}))};function p(t,e={}){return y(this,void 0,void 0,(function*(){if(!(t instanceof Blob))throw new Error(\"compress(): First arg must be a Blob object or a File object.\");if(\"object\"!=typeof e&&(e=Object.assign({quality:e})),e.quality=Number(e.quality),Number.isNaN(e.quality))return t;const n=yield f(t);let i=n.split(\",\")[0].match(/:(.*?);/)[1],c=r.JPEG;o(e.type)&&(c=e.type,i=e.type);const u=yield l(n),d=yield g(u,Object.assign({},e)),h=yield a(d,e.quality,c),w=yield s(h,i);return w.size>t.size?t:w}))}function b(t,e={}){return y(this,void 0,void 0,(function*(){if(!(t instanceof Blob))throw new Error(\"compressAccurately(): First arg must be a Blob object or a File object.\");if(\"object\"!=typeof e&&(e=Object.assign({size:e})),e.size=Number(e.size),Number.isNaN(e.size))return t;if(1024*e.size>t.size)return t;e.accuracy=Number(e.accuracy),(!e.accuracy||e.accuracy<.8||e.accuracy>.99)&&(e.accuracy=.95);const n=e.size*(2-e.accuracy)*1024,i=1024*e.size,c=e.size*e.accuracy*1024,u=yield f(t);let d=u.split(\",\")[0].match(/:(.*?);/)[1],h=r.JPEG;o(e.type)&&(h=e.type,d=e.type);const w=yield l(u),m=yield g(w,Object.assign({},e));let y,p=.5;const b=[null,null];for(let t=1;t<=7;t++){y=yield a(m,p,h);const e=.75*y.length;if(7===t){(ne)&&(y=[y,...b].filter(t=>t).sort((t,e)=>Math.abs(.75*t.length-i)-Math.abs(.75*e.length-i))[0]);break}if(ne))break;b[0]=y,p+=Math.pow(.5,t+1)}}const v=yield s(y,d);return v.size>t.size?t:v}))}}])}));","import { renderSlot as _renderSlot, withModifiers as _withModifiers, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, createBlock as _createBlock, resolveDirective as _resolveDirective, withDirectives as _withDirectives, Fragment as _Fragment } from \"vue\";\nconst _hoisted_1 = {\n class: \"directory-tree-picker\"\n};\nconst _hoisted_2 = {\n class: \"tree-container\"\n};\nconst _hoisted_3 = {\n key: 0,\n class: \"error-state\"\n};\nconst _hoisted_4 = {\n class: \"error-text\"\n};\nconst _hoisted_5 = {\n class: \"node-label\"\n};\nconst _hoisted_6 = {\n class: \"tree-container\"\n};\nconst _hoisted_7 = {\n key: 0,\n class: \"error-state\"\n};\nconst _hoisted_8 = {\n class: \"error-text\"\n};\nconst _hoisted_9 = {\n class: \"node-label\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_tree = _resolveComponent(\"el-tree\");\n const _component_el_popover = _resolveComponent(\"el-popover\");\n const _component_el_drawer = _resolveComponent(\"el-drawer\");\n const _directive_loading = _resolveDirective(\"loading\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [$options.isDesktop ? (_openBlock(), _createBlock(_component_el_popover, {\n key: 0,\n visible: $data.popoverVisible,\n \"onUpdate:visible\": _cache[1] || (_cache[1] = $event => $data.popoverVisible = $event),\n placement: \"bottom-start\",\n width: 320,\n trigger: \"click\",\n \"popper-class\": \"directory-tree-popover\",\n \"show-arrow\": true,\n \"hide-after\": 0,\n \"show-after\": 50,\n transition: \"el-zoom-in-top\"\n }, {\n reference: _withCtx(() => [_createElementVNode(\"span\", {\n class: \"popover-trigger-wrapper\",\n onClick: _cache[0] || (_cache[0] = _withModifiers(() => {}, [\"stop\"]))\n }, [_renderSlot(_ctx.$slots, \"trigger\", {}, undefined, true)])]),\n default: _withCtx(() => [_withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_2, [$data.error ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [_createVNode(_component_font_awesome_icon, {\n icon: \"exclamation-circle\",\n class: \"error-icon\"\n }), _createElementVNode(\"span\", _hoisted_4, _toDisplayString($data.error), 1), _createVNode(_component_el_button, {\n type: \"primary\",\n size: \"small\",\n onClick: $options.fetchDirectoryTree\n }, {\n default: _withCtx(() => [...(_cache[4] || (_cache[4] = [_createTextVNode(\" 重试 \", -1)]))]),\n _: 1\n }, 8, [\"onClick\"])])) : (_openBlock(), _createBlock(_component_el_tree, {\n key: 1,\n ref: \"treeRef\",\n data: $data.treeData,\n props: $data.treeProps,\n \"node-key\": \"path\",\n \"default-expand-all\": false,\n \"expand-on-click-node\": false,\n \"highlight-current\": true,\n \"current-node-key\": $props.currentDirectory,\n class: \"directory-tree\",\n onNodeClick: $options.handleNodeClick\n }, {\n default: _withCtx(({\n node,\n data\n }) => [_createElementVNode(\"span\", {\n class: _normalizeClass([\"tree-node\", {\n 'is-current': data.path === $props.currentDirectory\n }])\n }, [_createVNode(_component_font_awesome_icon, {\n icon: node.expanded ? 'folder-open' : 'folder',\n class: \"folder-icon\"\n }, null, 8, [\"icon\"]), _createElementVNode(\"span\", _hoisted_5, _toDisplayString(data.name), 1)], 2)]),\n _: 1\n }, 8, [\"data\", \"props\", \"current-node-key\", \"onNodeClick\"]))])), [[_directive_loading, $data.loading]])]),\n _: 3\n }, 8, [\"visible\"])) : (_openBlock(), _createElementBlock(_Fragment, {\n key: 1\n }, [_createElementVNode(\"span\", {\n class: \"drawer-trigger-wrapper\",\n onClick: _cache[2] || (_cache[2] = (...args) => $options.openDrawer && $options.openDrawer(...args))\n }, [_renderSlot(_ctx.$slots, \"trigger\", {}, undefined, true)]), _createVNode(_component_el_drawer, {\n modelValue: $data.drawerVisible,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $data.drawerVisible = $event),\n direction: \"btt\",\n size: \"60%\",\n \"show-close\": true,\n \"with-header\": true,\n \"z-index\": 3000,\n title: \"选择目录\",\n class: \"directory-tree-drawer\"\n }, {\n default: _withCtx(() => [_withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_6, [$data.error ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7, [_createVNode(_component_font_awesome_icon, {\n icon: \"exclamation-circle\",\n class: \"error-icon\"\n }), _createElementVNode(\"span\", _hoisted_8, _toDisplayString($data.error), 1), _createVNode(_component_el_button, {\n type: \"primary\",\n size: \"small\",\n onClick: $options.fetchDirectoryTree\n }, {\n default: _withCtx(() => [...(_cache[5] || (_cache[5] = [_createTextVNode(\" 重试 \", -1)]))]),\n _: 1\n }, 8, [\"onClick\"])])) : (_openBlock(), _createBlock(_component_el_tree, {\n key: 1,\n ref: \"treeRefMobile\",\n data: $data.treeData,\n props: $data.treeProps,\n \"node-key\": \"path\",\n \"default-expand-all\": false,\n \"expand-on-click-node\": false,\n \"highlight-current\": true,\n \"current-node-key\": $props.currentDirectory,\n class: \"directory-tree mobile-tree\",\n onNodeClick: $options.handleNodeClick\n }, {\n default: _withCtx(({\n node,\n data\n }) => [_createElementVNode(\"span\", {\n class: _normalizeClass([\"tree-node\", {\n 'is-current': data.path === $props.currentDirectory\n }])\n }, [_createVNode(_component_font_awesome_icon, {\n icon: node.expanded ? 'folder-open' : 'folder',\n class: \"folder-icon\"\n }, null, 8, [\"icon\"]), _createElementVNode(\"span\", _hoisted_9, _toDisplayString(data.name), 1)], 2)]),\n _: 1\n }, 8, [\"data\", \"props\", \"current-node-key\", \"onNodeClick\"]))])), [[_directive_loading, $data.loading]])]),\n _: 1\n }, 8, [\"modelValue\"])], 64))]);\n}","import axios from '@/utils/axios';\nimport fetchWithAuth from '@/utils/fetchWithAuth';\nexport default {\n name: 'DirectoryTreePicker',\n props: {\n currentDirectory: {\n type: String,\n default: ''\n },\n source: {\n type: String,\n default: 'upload',\n validator: value => ['upload', 'admin'].includes(value)\n }\n },\n data() {\n return {\n popoverVisible: false,\n drawerVisible: false,\n treeData: [],\n loading: false,\n error: '',\n treeProps: {\n children: 'children',\n label: 'name'\n },\n windowWidth: window.innerWidth\n };\n },\n computed: {\n isDesktop() {\n return this.windowWidth >= 769;\n }\n },\n watch: {\n popoverVisible(newVal) {\n if (newVal) {\n this.fetchDirectoryTree();\n } else {\n // 弹窗关闭后延迟折叠所有节点,避免下次打开时出现折叠动画\n setTimeout(() => {\n if (!this.popoverVisible && this.$refs.treeRef) {\n const store = this.$refs.treeRef.store;\n for (const key in store.nodesMap) {\n store.nodesMap[key].expanded = false;\n }\n }\n }, 200);\n }\n },\n drawerVisible(newVal) {\n if (newVal) {\n this.fetchDirectoryTree();\n } else {\n // 抽屉关闭后延迟折叠所有节点\n setTimeout(() => {\n if (!this.drawerVisible && this.$refs.treeRefMobile) {\n const store = this.$refs.treeRefMobile.store;\n for (const key in store.nodesMap) {\n store.nodesMap[key].expanded = false;\n }\n }\n }, 300);\n }\n },\n currentDirectory(newVal) {\n this.$nextTick(() => {\n if (this.$refs.treeRef && newVal) {\n this.$refs.treeRef.setCurrentKey(newVal);\n }\n if (this.$refs.treeRefMobile && newVal) {\n this.$refs.treeRefMobile.setCurrentKey(newVal);\n }\n });\n }\n },\n mounted() {\n window.addEventListener('resize', this.handleResize);\n },\n beforeUnmount() {\n window.removeEventListener('resize', this.handleResize);\n },\n methods: {\n handleResize() {\n this.windowWidth = window.innerWidth;\n },\n openDrawer() {\n this.drawerVisible = true;\n },\n async fetchDirectoryTree() {\n this.loading = true;\n this.error = '';\n try {\n let data;\n if (this.source === 'admin') {\n const response = await fetchWithAuth('/api/directoryTree', {\n method: 'GET'\n });\n if (!response.ok) {\n if (response.status === 401) {\n this.error = '认证失败,请重新登录';\n } else {\n this.error = '服务器错误,请稍后重试';\n }\n return;\n }\n data = await response.json();\n } else {\n const response = await axios.get('/api/directoryTree', {\n withAuthCode: true\n });\n data = response.data;\n }\n if (data.tree) {\n this.treeData = [data.tree];\n } else {\n this.treeData = [];\n }\n } catch (err) {\n console.error('Failed to fetch directory tree:', err);\n if (err.response?.status === 401) {\n this.error = '认证失败,请重新登录';\n } else {\n this.error = '加载目录树失败,请检查网络连接';\n }\n } finally {\n this.loading = false;\n }\n },\n handleNodeClick(data) {\n let path = data.path;\n if (path && !path.startsWith('/')) {\n path = '/' + path;\n } else if (!path) {\n path = '/';\n }\n this.$emit('select', path);\n this.popoverVisible = false;\n this.drawerVisible = false;\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./DirectoryTreePicker.vue?vue&type=template&id=296c1702&scoped=true\"\nimport script from \"./DirectoryTreePicker.vue?vue&type=script&lang=js\"\nexport * from \"./DirectoryTreePicker.vue?vue&type=script&lang=js\"\n\nimport \"./DirectoryTreePicker.vue?vue&type=style&index=0&id=296c1702&scoped=true&lang=css\"\nimport \"./DirectoryTreePicker.vue?vue&type=style&index=1&id=296c1702&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-296c1702\"]])\n\nexport default __exports__","/**\r\n * 路径验证器模块\r\n * 提供共享的文件夹路径验证功能,供 AdminDashBoard 和 UploadHome 共同使用\r\n */\r\n\r\n/**\r\n * 验证文件夹路径的合法性\r\n * @param {string} path - 要验证的路径\r\n * @param {{ strict?: boolean }} options - 选项,strict 为 true 时检查末尾单独的 \".\"(默认 true)\r\n * @returns {{ valid: boolean, error?: string }} 验证结果\r\n */\r\nexport function validateFolderPath(path, { strict = true } = {}) {\r\n // 如果路径为空或仅为空白字符,返回有效(表示根目录)\r\n if (!path || path.trim() === '') {\r\n return { valid: true };\r\n }\r\n \r\n // 如果路径仅为 \"/\",返回有效(表示根目录)\r\n if (path === '/') {\r\n return { valid: true };\r\n }\r\n \r\n // 检查路径是否以 \"/\" 开头\r\n if (!path.startsWith('/')) {\r\n return { \r\n valid: false, \r\n error: '目标目录必须以 \"/\" 开头' \r\n };\r\n }\r\n\r\n // 检查路径穿越:包含 .. 的路径段\r\n if (/(?:^|\\/)\\.\\.(\\/|$)/.test(path) || path.includes('..')) {\r\n return {\r\n valid: false,\r\n error: '目标目录不能包含路径穿越字符 \"..\"'\r\n };\r\n }\r\n\r\n // 检查路径中单独的 . 段\r\n // strict 模式检查 /./ 和末尾 /.,非 strict 模式仅检查 /./ 以允许用户继续输入如 /.123\r\n const dotPattern = strict ? /\\/\\.(\\/|$)/ : /\\/\\.\\//;\r\n if (dotPattern.test(path)) {\r\n return {\r\n valid: false,\r\n error: '目标目录不能包含单独的 \".\" 路径段'\r\n };\r\n }\r\n\r\n // 检查路径是否包含连续的斜杠\r\n if (path.includes('//')) {\r\n return { \r\n valid: false, \r\n error: '目标目录不能包含连续的斜杠' \r\n };\r\n }\r\n \r\n // 检查路径是否包含非法字符\r\n // 非法字符包括: \\ : * ? \" ' < > | 空格 ( ) [ ] { } # % ^ ` ~ ; @ & = + $ ,\r\n const invalidChars = /[\\\\:\\*\\?\"'<>\\| \\(\\)\\[\\]\\{\\}#%\\^`~;@&=\\+\\$,]/;\r\n if (invalidChars.test(path)) {\r\n return { \r\n valid: false, \r\n error: '目标目录包含非法字符,请使用合法的路径格式' \r\n };\r\n }\r\n \r\n return { valid: true };\r\n}\r\n","import { createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass } from \"vue\";\nconst _hoisted_1 = {\n class: \"history-header\"\n};\nconst _hoisted_2 = {\n class: \"header-left\"\n};\nconst _hoisted_3 = {\n class: \"record-count\"\n};\nconst _hoisted_4 = {\n class: \"header-right\"\n};\nconst _hoisted_5 = {\n class: \"timeline-header\"\n};\nconst _hoisted_6 = {\n class: \"date-label\"\n};\nconst _hoisted_7 = {\n key: 0,\n class: \"grid-view\"\n};\nconst _hoisted_8 = {\n class: \"grid-preview\"\n};\nconst _hoisted_9 = [\"src\"];\nconst _hoisted_10 = [\"src\"];\nconst _hoisted_11 = {\n key: 2,\n class: \"file-icon-wrapper\"\n};\nconst _hoisted_12 = {\n class: \"grid-overlay\"\n};\nconst _hoisted_13 = {\n class: \"grid-actions\"\n};\nconst _hoisted_14 = {\n class: \"grid-info\"\n};\nconst _hoisted_15 = [\"title\"];\nconst _hoisted_16 = {\n class: \"upload-time\"\n};\nconst _hoisted_17 = {\n key: 1,\n class: \"list-view\"\n};\nconst _hoisted_18 = {\n class: \"list-preview\"\n};\nconst _hoisted_19 = [\"src\"];\nconst _hoisted_20 = [\"src\"];\nconst _hoisted_21 = {\n key: 2,\n class: \"file-icon-wrapper-small\"\n};\nconst _hoisted_22 = {\n class: \"list-info\"\n};\nconst _hoisted_23 = [\"title\"];\nconst _hoisted_24 = [\"title\"];\nconst _hoisted_25 = {\n class: \"list-meta\"\n};\nconst _hoisted_26 = {\n class: \"upload-time\"\n};\nconst _hoisted_27 = {\n class: \"list-actions\"\n};\nconst _hoisted_28 = {\n key: 0,\n class: \"load-more-container\"\n};\nconst _hoisted_29 = {\n key: 0,\n class: \"loading-indicator\"\n};\nconst _hoisted_30 = {\n key: 1,\n class: \"load-more-hint\"\n};\nconst _hoisted_31 = {\n key: 1,\n class: \"no-more-hint\"\n};\nconst _hoisted_32 = {\n key: 1,\n class: \"empty-state\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n return _openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"history-container\", {\n 'active': $props.show\n }])\n }, [_createElementVNode(\"div\", _hoisted_1, [_createElementVNode(\"div\", _hoisted_2, [_cache[4] || (_cache[4] = _createElementVNode(\"h2\", null, \"历史记录\", -1)), _createElementVNode(\"span\", _hoisted_3, \"共 \" + _toDisplayString($data.totalCount) + \" 条\", 1)]), _createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_tooltip, {\n content: \"切换视图\",\n placement: \"bottom\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n circle: \"\",\n onClick: $options.toggleViewMode\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: $data.viewMode === 'grid' ? 'list' : 'th-large'\n }, null, 8, [\"icon\"])]),\n _: 1\n }, 8, [\"onClick\"])]),\n _: 1\n }), _createVNode(_component_el_tooltip, {\n content: \"清空记录\",\n placement: \"bottom\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n circle: \"\",\n type: \"danger\",\n onClick: $options.clearHistory\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\"\n })]),\n _: 1\n }, 8, [\"onClick\"])]),\n _: 1\n }), _createVNode(_component_el_button, {\n circle: \"\",\n onClick: _cache[0] || (_cache[0] = $event => _ctx.$emit('close'))\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"times\"\n })]),\n _: 1\n })])]), $data.historyList.length > 0 ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"history-content\",\n ref: \"historyContent\",\n onScroll: _cache[3] || (_cache[3] = (...args) => $options.handleScroll && $options.handleScroll(...args))\n }, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.groupedHistory, group => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: group.date,\n class: \"history-group\"\n }, [_createElementVNode(\"div\", _hoisted_5, [_cache[5] || (_cache[5] = _createElementVNode(\"div\", {\n class: \"timeline-dot\"\n }, null, -1)), _createElementVNode(\"span\", _hoisted_6, _toDisplayString(group.date), 1)]), $data.viewMode === 'grid' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList(group.items, item => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: item.time,\n class: \"grid-item\"\n }, [_createElementVNode(\"div\", _hoisted_8, [$options.isImage(item.name) ? (_openBlock(), _createElementBlock(\"img\", {\n key: 0,\n src: item.url,\n loading: \"lazy\",\n onError: _cache[1] || (_cache[1] = (...args) => $options.handleImageError && $options.handleImageError(...args))\n }, null, 40, _hoisted_9)) : $options.isVideo(item.name) ? (_openBlock(), _createElementBlock(\"video\", {\n key: 1,\n src: item.url,\n muted: \"\"\n }, null, 8, _hoisted_10)) : (_openBlock(), _createElementBlock(\"div\", _hoisted_11, [_createVNode(_component_font_awesome_icon, {\n icon: \"file\",\n class: \"file-icon\"\n })])), _createElementVNode(\"div\", _hoisted_12, [_createElementVNode(\"div\", _hoisted_13, [_createVNode(_component_el_button, {\n circle: \"\",\n size: \"default\",\n type: \"primary\",\n onClick: $event => $options.copyLink(item.url)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"copy\"\n })]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n circle: \"\",\n size: \"default\",\n class: \"action-btn-view\",\n onClick: $event => $options.openLink(item.url)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"external-link-alt\"\n })]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n circle: \"\",\n size: \"default\",\n type: \"danger\",\n onClick: $event => $options.deleteItem(item)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\"\n })]),\n _: 1\n }, 8, [\"onClick\"])])])]), _createElementVNode(\"div\", _hoisted_14, [_createElementVNode(\"div\", {\n class: \"file-name\",\n title: item.name\n }, _toDisplayString(item.name), 9, _hoisted_15), _createElementVNode(\"div\", _hoisted_16, _toDisplayString($options.formatTime(item.time)), 1)])]);\n }), 128))])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_17, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList(group.items, item => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: item.time,\n class: \"list-item\"\n }, [_createElementVNode(\"div\", _hoisted_18, [$options.isImage(item.name) ? (_openBlock(), _createElementBlock(\"img\", {\n key: 0,\n src: item.url,\n loading: \"lazy\",\n onError: _cache[2] || (_cache[2] = (...args) => $options.handleImageError && $options.handleImageError(...args))\n }, null, 40, _hoisted_19)) : $options.isVideo(item.name) ? (_openBlock(), _createElementBlock(\"video\", {\n key: 1,\n src: item.url,\n muted: \"\"\n }, null, 8, _hoisted_20)) : (_openBlock(), _createElementBlock(\"div\", _hoisted_21, [_createVNode(_component_font_awesome_icon, {\n icon: \"file\"\n })]))]), _createElementVNode(\"div\", _hoisted_22, [_createElementVNode(\"div\", {\n class: \"file-name\",\n title: item.name\n }, _toDisplayString(item.name), 9, _hoisted_23), _createElementVNode(\"div\", {\n class: \"file-url\",\n title: item.url\n }, _toDisplayString(item.url), 9, _hoisted_24)]), _createElementVNode(\"div\", _hoisted_25, [_createElementVNode(\"div\", _hoisted_26, _toDisplayString($options.formatTime(item.time)), 1)]), _createElementVNode(\"div\", _hoisted_27, [_createVNode(_component_el_button, {\n circle: \"\",\n size: \"small\",\n type: \"primary\",\n onClick: $event => $options.copyLink(item.url)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"copy\"\n })]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n circle: \"\",\n size: \"small\",\n class: \"action-btn-view\",\n onClick: $event => $options.openLink(item.url)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"external-link-alt\"\n })]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n circle: \"\",\n size: \"small\",\n type: \"danger\",\n onClick: $event => $options.deleteItem(item)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\"\n })]),\n _: 1\n }, 8, [\"onClick\"])])]);\n }), 128))]))]);\n }), 128)), $options.hasMore ? (_openBlock(), _createElementBlock(\"div\", _hoisted_28, [$data.loadingMore ? (_openBlock(), _createElementBlock(\"div\", _hoisted_29, [_createVNode(_component_font_awesome_icon, {\n icon: \"spinner\",\n spin: \"\"\n }), _cache[6] || (_cache[6] = _createElementVNode(\"span\", null, \"加载中...\", -1))])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_30, \"下拉加载更多\"))])) : $data.historyList.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_31, \"没有更多记录了\")) : _createCommentVNode(\"\", true)], 544)) : (_openBlock(), _createElementBlock(\"div\", _hoisted_32, [_createVNode(_component_font_awesome_icon, {\n icon: \"history\",\n class: \"empty-icon\"\n }), _cache[7] || (_cache[7] = _createElementVNode(\"p\", null, \"暂无上传记录\", -1))]))], 2);\n}","import \"core-js/modules/es.array.push.js\";\nimport \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nimport \"core-js/modules/es.iterator.for-each.js\";\nimport \"core-js/modules/es.iterator.map.js\";\nimport \"core-js/modules/es.json.stringify.js\";\nimport \"core-js/modules/esnext.json.parse.js\";\nexport default {\n name: 'UploadHistory',\n props: {\n show: {\n type: Boolean,\n default: false\n }\n },\n data() {\n return {\n historyList: [],\n allHistory: [],\n // 完整历史记录\n viewMode: 'grid',\n // 'grid' or 'list'\n pageSize: 30,\n // 每次加载数量\n currentPage: 0,\n loadingMore: false,\n totalCount: 0\n };\n },\n watch: {\n show(val) {\n if (val) {\n this.resetAndLoad();\n }\n }\n },\n computed: {\n hasMore() {\n return this.historyList.length < this.totalCount;\n },\n groupedHistory() {\n const groups = {};\n this.historyList.forEach(item => {\n const date = new Date(item.time);\n const dateStr = `${date.getFullYear()}-${String(date.getMonth() + 1).padStart(2, '0')}-${String(date.getDate()).padStart(2, '0')}`;\n if (!groups[dateStr]) {\n groups[dateStr] = [];\n }\n groups[dateStr].push(item);\n });\n\n // Sort dates descending\n return Object.keys(groups).sort((a, b) => new Date(b) - new Date(a)).map(date => ({\n date,\n items: groups[date]\n }));\n }\n },\n mounted() {\n // Load view mode preference\n const savedMode = localStorage.getItem('historyViewMode');\n if (savedMode) {\n this.viewMode = savedMode;\n }\n },\n methods: {\n resetAndLoad() {\n this.historyList = [];\n this.currentPage = 0;\n this.loadAllHistory();\n this.loadMore();\n },\n loadAllHistory() {\n try {\n const history = JSON.parse(localStorage.getItem('uploadHistory') || '[]');\n // Sort by time desc\n this.allHistory = history.sort((a, b) => b.time - a.time);\n this.totalCount = this.allHistory.length;\n } catch (e) {\n console.error('Failed to load history', e);\n this.allHistory = [];\n this.totalCount = 0;\n }\n },\n loadMore() {\n if (this.loadingMore || !this.hasMore) return;\n this.loadingMore = true;\n\n // 模拟异步加载,避免阻塞UI\n setTimeout(() => {\n const start = this.currentPage * this.pageSize;\n const end = start + this.pageSize;\n const newItems = this.allHistory.slice(start, end);\n this.historyList = [...this.historyList, ...newItems];\n this.currentPage++;\n this.loadingMore = false;\n }, 50);\n },\n handleScroll(e) {\n const container = e.target;\n const scrollTop = container.scrollTop;\n const scrollHeight = container.scrollHeight;\n const clientHeight = container.clientHeight;\n\n // 距离底部 100px 时加载更多\n if (scrollHeight - scrollTop - clientHeight < 100) {\n this.loadMore();\n }\n },\n toggleViewMode() {\n this.viewMode = this.viewMode === 'grid' ? 'list' : 'grid';\n localStorage.setItem('historyViewMode', this.viewMode);\n },\n clearHistory() {\n this.$confirm('确定要清空所有上传记录吗?', '提示', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning'\n }).then(() => {\n this.historyList = [];\n this.allHistory = [];\n this.totalCount = 0;\n this.currentPage = 0;\n localStorage.removeItem('uploadHistory');\n this.$message.success('记录已清空');\n }).catch(() => {});\n },\n deleteItem(item) {\n this.$confirm('确定要删除这条记录吗?', '提示', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning'\n }).then(() => {\n // Remove from lists\n this.historyList = this.historyList.filter(i => i.time !== item.time);\n this.allHistory = this.allHistory.filter(i => i.time !== item.time);\n this.totalCount = this.allHistory.length;\n\n // Update localStorage\n try {\n localStorage.setItem('uploadHistory', JSON.stringify(this.allHistory));\n this.$message.success('记录已删除');\n } catch (e) {\n console.error('Failed to update history', e);\n }\n }).catch(() => {});\n },\n isImage(fileName) {\n const imageExtensions = ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp', 'svg', 'tiff', 'ico', 'avif', 'heic', 'jfif', 'pjpeg', 'pjp'];\n const extension = fileName ? fileName.split('.').pop().toLowerCase() : '';\n return imageExtensions.includes(extension);\n },\n isVideo(fileName) {\n const videoExtensions = ['mp4', 'webm', 'ogg', 'mkv'];\n const extension = fileName ? fileName.split('.').pop().toLowerCase() : '';\n return videoExtensions.includes(extension);\n },\n formatTime(timestamp) {\n const date = new Date(timestamp);\n const year = date.getFullYear();\n const month = String(date.getMonth() + 1).padStart(2, '0');\n const day = String(date.getDate()).padStart(2, '0');\n const hours = String(date.getHours()).padStart(2, '0');\n const minutes = String(date.getMinutes()).padStart(2, '0');\n const seconds = String(date.getSeconds()).padStart(2, '0');\n return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;\n },\n copyLink(url) {\n navigator.clipboard.writeText(url).then(() => {\n this.$message.success('链接已复制');\n }).catch(() => {\n this.$message.error('复制失败');\n });\n },\n openLink(url) {\n window.open(url, '_blank');\n },\n handleImageError(e) {\n e.target.src = require('@/assets/404.png');\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./UploadHistory.vue?vue&type=template&id=05a2ac54&scoped=true\"\nimport script from \"./UploadHistory.vue?vue&type=script&lang=js\"\nexport * from \"./UploadHistory.vue?vue&type=script&lang=js\"\n\nimport \"./UploadHistory.vue?vue&type=style&index=0&id=05a2ac54&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-05a2ac54\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, createTextVNode as _createTextVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"dialog-section\"\n};\nconst _hoisted_2 = {\n class: \"section-content\"\n};\nconst _hoisted_3 = {\n class: \"setting-item\"\n};\nconst _hoisted_4 = {\n key: 0,\n class: \"setting-item\"\n};\nconst _hoisted_5 = {\n class: \"setting-label\"\n};\nconst _hoisted_6 = {\n class: \"setting-item\"\n};\nconst _hoisted_7 = {\n class: \"setting-item\"\n};\nconst _hoisted_8 = {\n class: \"setting-label\"\n};\nconst _hoisted_9 = {\n class: \"dialog-section\"\n};\nconst _hoisted_10 = {\n class: \"section-content\"\n};\nconst _hoisted_11 = {\n class: \"dialog-section\"\n};\nconst _hoisted_12 = {\n class: \"section-header\"\n};\nconst _hoisted_13 = {\n class: \"section-content\"\n};\nconst _hoisted_14 = {\n class: \"setting-item\"\n};\nconst _hoisted_15 = {\n class: \"setting-label\"\n};\nconst _hoisted_16 = {\n class: \"setting-item\"\n};\nconst _hoisted_17 = {\n key: 0,\n class: \"setting-item slider-item\"\n};\nconst _hoisted_18 = {\n class: \"setting-label\"\n};\nconst _hoisted_19 = {\n class: \"slider-wrapper\"\n};\nconst _hoisted_20 = {\n class: \"slider-input-wrapper\"\n};\nconst _hoisted_21 = {\n key: 1,\n class: \"setting-item slider-item\"\n};\nconst _hoisted_22 = {\n class: \"setting-label\"\n};\nconst _hoisted_23 = {\n class: \"slider-wrapper\"\n};\nconst _hoisted_24 = {\n class: \"slider-input-wrapper\"\n};\nconst _hoisted_25 = {\n key: 0,\n class: \"dialog-section\"\n};\nconst _hoisted_26 = {\n class: \"section-header\"\n};\nconst _hoisted_27 = {\n class: \"section-content\"\n};\nconst _hoisted_28 = {\n class: \"setting-item\"\n};\nconst _hoisted_29 = {\n class: \"dialog-action\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_radio = _resolveComponent(\"el-radio\");\n const _component_el_radio_group = _resolveComponent(\"el-radio-group\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_switch = _resolveComponent(\"el-switch\");\n const _component_el_slider = _resolveComponent(\"el-slider\");\n const _component_el_input_number = _resolveComponent(\"el-input-number\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createBlock(_component_el_dialog, {\n title: \"上传设置\",\n modelValue: $options.visible,\n \"onUpdate:modelValue\": _cache[12] || (_cache[12] = $event => $options.visible = $event),\n width: $options.dialogWidth,\n \"show-close\": false,\n class: \"settings-dialog\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_1, [_cache[22] || (_cache[22] = _createElementVNode(\"div\", {\n class: \"section-header\"\n }, [_createElementVNode(\"span\", {\n class: \"section-title\"\n }, \"上传渠道\")], -1)), _createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"div\", _hoisted_3, [_cache[18] || (_cache[18] = _createElementVNode(\"span\", {\n class: \"setting-label\"\n }, \"渠道类型\", -1)), _createVNode(_component_el_radio_group, {\n \"model-value\": $props.uploadChannel,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => _ctx.$emit('update:uploadChannel', $event)),\n class: \"radio-card-group compact\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_radio, {\n label: \"telegram\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"paper-plane\",\n class: \"channel-icon\"\n }), _cache[13] || (_cache[13] = _createElementVNode(\"span\", null, \"TG\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"cfr2\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"cloud\",\n class: \"channel-icon\"\n }), _cache[14] || (_cache[14] = _createElementVNode(\"span\", null, \"R2\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"s3\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"database\",\n class: \"channel-icon\"\n }), _cache[15] || (_cache[15] = _createElementVNode(\"span\", null, \"S3\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"discord\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"comments\",\n class: \"channel-icon\"\n }), _cache[16] || (_cache[16] = _createElementVNode(\"span\", null, \"DC\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"huggingface\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"robot\",\n class: \"channel-icon\"\n }), _cache[17] || (_cache[17] = _createElementVNode(\"span\", null, \"HF\", -1))]),\n _: 1\n })]),\n _: 1\n }, 8, [\"model-value\"])]), $props.currentChannelList.length > 1 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [_createElementVNode(\"span\", _hoisted_5, [_cache[19] || (_cache[19] = _createTextVNode(\" 渠道名称 \", -1)), _createVNode(_component_el_tooltip, {\n content: \"选择具体的渠道名称,不选择则使用负载均衡或默认渠道\",\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"inline-help-icon\"\n })]),\n _: 1\n })]), _createVNode(_component_el_select, {\n \"model-value\": $props.channelName,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => _ctx.$emit('update:channelName', $event)),\n placeholder: \"自动选择\",\n clearable: \"\",\n class: \"setting-input\"\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($props.currentChannelList, ch => {\n return _openBlock(), _createBlock(_component_el_option, {\n key: ch.name,\n label: ch.name,\n value: ch.name\n }, null, 8, [\"label\", \"value\"]);\n }), 128))]),\n _: 1\n }, 8, [\"model-value\"])])) : _createCommentVNode(\"\", true), _createElementVNode(\"div\", _hoisted_6, [_cache[20] || (_cache[20] = _createElementVNode(\"span\", {\n class: \"setting-label\"\n }, \"上传目录\", -1)), _createVNode(_component_el_input, {\n \"model-value\": $props.uploadFolder,\n \"onUpdate:modelValue\": $options.handleUploadFolderInput,\n placeholder: \"请输入上传目录路径\",\n class: \"setting-input\"\n }, null, 8, [\"model-value\", \"onUpdate:modelValue\"])]), _createElementVNode(\"div\", _hoisted_7, [_createElementVNode(\"span\", _hoisted_8, [_cache[21] || (_cache[21] = _createTextVNode(\" 自动切换 \", -1)), _createVNode(_component_el_tooltip, {\n content: \"对于非分块上传文件,上传失败自动切换到其他渠道上传\",\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"inline-help-icon\"\n })]),\n _: 1\n })]), _createVNode(_component_el_switch, {\n \"model-value\": $props.autoRetry,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => _ctx.$emit('update:autoRetry', $event))\n }, null, 8, [\"model-value\"])])])]), _createElementVNode(\"div\", _hoisted_9, [_cache[27] || (_cache[27] = _createElementVNode(\"div\", {\n class: \"section-header\"\n }, [_createElementVNode(\"span\", {\n class: \"section-title\"\n }, \"文件命名方式\")], -1)), _createElementVNode(\"div\", _hoisted_10, [_createVNode(_component_el_radio_group, {\n \"model-value\": $props.uploadNameType,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => _ctx.$emit('update:uploadNameType', $event)),\n class: \"radio-card-group grid-2x2\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_radio, {\n label: \"default\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"cog\",\n class: \"radio-icon\"\n }), _cache[23] || (_cache[23] = _createElementVNode(\"span\", null, \"默认\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"index\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"hashtag\",\n class: \"radio-icon\"\n }), _cache[24] || (_cache[24] = _createElementVNode(\"span\", null, \"仅前缀\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"origin\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"file-signature\",\n class: \"radio-icon\"\n }), _cache[25] || (_cache[25] = _createElementVNode(\"span\", null, \"仅原名\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"short\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"compress-alt\",\n class: \"radio-icon\"\n }), _cache[26] || (_cache[26] = _createElementVNode(\"span\", null, \"短链接\", -1))]),\n _: 1\n })]),\n _: 1\n }, 8, [\"model-value\"])])]), _createElementVNode(\"div\", _hoisted_11, [_createElementVNode(\"div\", _hoisted_12, [_cache[28] || (_cache[28] = _createElementVNode(\"span\", {\n class: \"section-title\"\n }, \"文件预处理\", -1)), _createVNode(_component_el_tooltip, {\n content: \"上传前在本地进行格式转换和压缩,仅对图片文件生效\",\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"section-help-icon\"\n })]),\n _: 1\n })]), _createElementVNode(\"div\", _hoisted_13, [_createElementVNode(\"div\", _hoisted_14, [_createElementVNode(\"span\", _hoisted_15, [_cache[29] || (_cache[29] = _createTextVNode(\" 转换为WebP \", -1)), _createVNode(_component_el_tooltip, {\n content: \"上传前将图片转换为WebP格式,可有效减小文件体积。转换失败时保持原格式上传\",\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"inline-help-icon\"\n })]),\n _: 1\n })]), _createVNode(_component_el_switch, {\n \"model-value\": $props.convertToWebp,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = $event => _ctx.$emit('update:convertToWebp', $event))\n }, null, 8, [\"model-value\"])]), _createElementVNode(\"div\", _hoisted_16, [_cache[30] || (_cache[30] = _createElementVNode(\"span\", {\n class: \"setting-label\"\n }, \"文件压缩\", -1)), _createVNode(_component_el_switch, {\n \"model-value\": $props.customerCompress,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => _ctx.$emit('update:customerCompress', $event))\n }, null, 8, [\"model-value\"])]), $props.customerCompress ? (_openBlock(), _createElementBlock(\"div\", _hoisted_17, [_createElementVNode(\"span\", _hoisted_18, [_cache[31] || (_cache[31] = _createTextVNode(\" 压缩阈值 \", -1)), _createVNode(_component_el_tooltip, {\n content: \"设置图片大小阈值,超过此值将自动压缩,单位MB\",\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"inline-help-icon\"\n })]),\n _: 1\n })]), _createElementVNode(\"div\", _hoisted_19, [_createVNode(_component_el_slider, {\n \"model-value\": $props.compressBar,\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = $event => _ctx.$emit('update:compressBar', $event)),\n min: 1,\n max: 20,\n \"format-tooltip\": value => `${value} MB`\n }, null, 8, [\"model-value\", \"format-tooltip\"]), _createElementVNode(\"div\", _hoisted_20, [_createVNode(_component_el_input_number, {\n \"model-value\": $props.compressBar,\n \"onUpdate:modelValue\": _cache[7] || (_cache[7] = $event => _ctx.$emit('update:compressBar', $event)),\n min: 1,\n max: 20,\n step: 1,\n \"value-on-clear\": 1,\n class: \"slider-input\",\n \"controls-position\": \"right\"\n }, null, 8, [\"model-value\"]), _cache[32] || (_cache[32] = _createElementVNode(\"span\", {\n class: \"slider-unit\"\n }, \"MB\", -1))])])])) : _createCommentVNode(\"\", true), $props.customerCompress ? (_openBlock(), _createElementBlock(\"div\", _hoisted_21, [_createElementVNode(\"span\", _hoisted_22, [_cache[33] || (_cache[33] = _createTextVNode(\" 期望大小 \", -1)), _createVNode(_component_el_tooltip, {\n content: \"设置压缩后图片大小期望值,单位MB\",\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"inline-help-icon\"\n })]),\n _: 1\n })]), _createElementVNode(\"div\", _hoisted_23, [_createVNode(_component_el_slider, {\n \"model-value\": $props.compressQuality,\n \"onUpdate:modelValue\": _cache[8] || (_cache[8] = $event => _ctx.$emit('update:compressQuality', $event)),\n min: 0.5,\n max: $props.compressBar,\n step: 0.1,\n \"format-tooltip\": value => `${value} MB`\n }, null, 8, [\"model-value\", \"max\", \"format-tooltip\"]), _createElementVNode(\"div\", _hoisted_24, [_createVNode(_component_el_input_number, {\n \"model-value\": $props.compressQuality,\n \"onUpdate:modelValue\": _cache[9] || (_cache[9] = $event => _ctx.$emit('update:compressQuality', $event)),\n min: 0.5,\n max: $props.compressBar,\n step: 0.1,\n precision: 1,\n \"value-on-clear\": 0.5,\n class: \"slider-input\",\n \"controls-position\": \"right\"\n }, null, 8, [\"model-value\", \"max\"]), _cache[34] || (_cache[34] = _createElementVNode(\"span\", {\n class: \"slider-unit\"\n }, \"MB\", -1))])])])) : _createCommentVNode(\"\", true)])]), $props.uploadChannel === 'telegram' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_25, [_createElementVNode(\"div\", _hoisted_26, [_cache[35] || (_cache[35] = _createElementVNode(\"span\", {\n class: \"section-title\"\n }, \"服务端压缩\", -1)), _createVNode(_component_el_tooltip, {\n content: \"1. 在 Telegram 端进行压缩,仅对上传渠道为 Telegram 的图片文件生效
2. 若图片大小(本地压缩后大小)大于10MB,本设置自动失效
3. 若上传分辨率过大、透明背景等图片,建议关闭服务端压缩,否则可能出现未知问题\",\n placement: \"top\",\n \"raw-content\": \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"section-help-icon\"\n })]),\n _: 1\n })]), _createElementVNode(\"div\", _hoisted_27, [_createElementVNode(\"div\", _hoisted_28, [_cache[36] || (_cache[36] = _createElementVNode(\"span\", {\n class: \"setting-label\"\n }, \"开启压缩\", -1)), _createVNode(_component_el_switch, {\n \"model-value\": $props.serverCompress,\n \"onUpdate:modelValue\": _cache[10] || (_cache[10] = $event => _ctx.$emit('update:serverCompress', $event))\n }, null, 8, [\"model-value\"])])])])) : _createCommentVNode(\"\", true), _createElementVNode(\"div\", _hoisted_29, [_createVNode(_component_el_button, {\n type: \"primary\",\n onClick: _cache[11] || (_cache[11] = $event => $options.visible = false),\n class: \"confirm-btn\"\n }, {\n default: _withCtx(() => [...(_cache[37] || (_cache[37] = [_createTextVNode(\"确定\", -1)]))]),\n _: 1\n })])]),\n _: 1\n }, 8, [\"modelValue\", \"width\"]);\n}","export default {\n name: 'UploadSettingsDialog',\n methods: {\n handleUploadFolderInput(val) {\n // 自动补全前导 /\n if (val && !val.startsWith('/')) {\n val = '/' + val;\n }\n this.$emit('update:uploadFolder', val);\n }\n },\n props: {\n modelValue: {\n type: Boolean,\n default: false\n },\n uploadChannel: {\n type: String,\n default: 'telegram'\n },\n channelName: {\n type: String,\n default: ''\n },\n currentChannelList: {\n type: Array,\n default: () => []\n },\n uploadFolder: {\n type: String,\n default: ''\n },\n autoRetry: {\n type: Boolean,\n default: true\n },\n uploadNameType: {\n type: String,\n default: 'default'\n },\n convertToWebp: {\n type: Boolean,\n default: false\n },\n customerCompress: {\n type: Boolean,\n default: true\n },\n compressBar: {\n type: Number,\n default: 5\n },\n compressQuality: {\n type: Number,\n default: 4\n },\n serverCompress: {\n type: Boolean,\n default: true\n }\n },\n emits: ['update:modelValue', 'update:uploadChannel', 'update:channelName', 'update:uploadFolder', 'update:autoRetry', 'update:uploadNameType', 'update:convertToWebp', 'update:customerCompress', 'update:compressBar', 'update:compressQuality', 'update:serverCompress'],\n computed: {\n visible: {\n get() {\n return this.modelValue;\n },\n set(val) {\n this.$emit('update:modelValue', val);\n }\n },\n dialogWidth() {\n return window.innerWidth > 768 ? '50%' : '90%';\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./UploadSettingsDialog.vue?vue&type=template&id=73f86595\"\nimport script from \"./UploadSettingsDialog.vue?vue&type=script&lang=js\"\nexport * from \"./UploadSettingsDialog.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, withCtx as _withCtx } from \"vue\";\nconst _hoisted_1 = {\n class: \"upload-list-item\"\n};\nconst _hoisted_2 = [\"href\"];\nconst _hoisted_3 = {\n key: 0,\n style: {\n \"width\": \"10vw\",\n \"border-radius\": \"12px\"\n },\n autoplay: \"\",\n muted: \"\",\n playsinline: \"\",\n loop: \"\"\n};\nconst _hoisted_4 = [\"src\"];\nconst _hoisted_5 = [\"src\"];\nconst _hoisted_6 = {\n key: 2,\n style: {\n \"width\": \"10vw\",\n \"border-radius\": \"12px\"\n }\n};\nconst _hoisted_7 = {\n class: \"upload-list-item-content\"\n};\nconst _hoisted_8 = {\n class: \"upload-list-item-name-wrapper\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"upload-list-item-url\"\n};\nconst _hoisted_10 = {\n class: \"upload-list-item-url-row\"\n};\nconst _hoisted_11 = {\n class: \"upload-list-item-url-row\"\n};\nconst _hoisted_12 = {\n key: 1,\n class: \"upload-list-item-progress\"\n};\nconst _hoisted_13 = {\n class: \"upload-list-item-action\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_text = _resolveComponent(\"el-text\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_progress = _resolveComponent(\"el-progress\");\n const _component_Link = _resolveComponent(\"Link\");\n const _component_el_icon = _resolveComponent(\"el-icon\");\n const _component_Delete = _resolveComponent(\"Delete\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createElementVNode(\"a\", {\n href: $props.file.url,\n target: \"_blank\",\n class: \"upload-list-item-preview\"\n }, [$options.isVideo($props.file.name) ? (_openBlock(), _createElementBlock(\"video\", _hoisted_3, [_createElementVNode(\"source\", {\n src: $props.file.url,\n type: \"video/mp4\"\n }, null, 8, _hoisted_4), _cache[7] || (_cache[7] = _createTextVNode(\" Your browser does not support the video tag. \", -1))])) : $options.isImage($props.file.name) ? (_openBlock(), _createElementBlock(\"img\", {\n key: 1,\n style: {\n \"width\": \"10vw\",\n \"border-radius\": \"12px\"\n },\n src: $props.file.url,\n onError: _cache[0] || (_cache[0] = $event => _ctx.$emit('preview-error', $props.file))\n }, null, 40, _hoisted_5)) : (_openBlock(), _createElementBlock(\"div\", _hoisted_6, [_createVNode(_component_font_awesome_icon, {\n icon: \"file\",\n class: \"file-icon\"\n })]))], 8, _hoisted_2), _createElementVNode(\"div\", _hoisted_7, [_createElementVNode(\"div\", _hoisted_8, [_createVNode(_component_el_text, {\n class: \"upload-list-item-name\",\n truncated: \"\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($options.truncateFilename($props.file.name)), 1)]),\n _: 1\n })]), $props.file.status === 'done' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [_createElementVNode(\"div\", _hoisted_10, [_createVNode(_component_el_input, {\n modelValue: $props.file.finalURL,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $props.file.finalURL = $event),\n readonly: \"\",\n onClick: $options.selectAllText,\n size: $options.urlSize\n }, {\n prepend: _withCtx(() => [...(_cache[8] || (_cache[8] = [_createTextVNode(\"URL\", -1)]))]),\n _: 1\n }, 8, [\"modelValue\", \"onClick\", \"size\"]), _createVNode(_component_el_input, {\n modelValue: $props.file.mdURL,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $props.file.mdURL = $event),\n readonly: \"\",\n onClick: $options.selectAllText,\n size: $options.urlSize\n }, {\n prepend: _withCtx(() => [...(_cache[9] || (_cache[9] = [_createTextVNode(\"MarkDown\", -1)]))]),\n _: 1\n }, 8, [\"modelValue\", \"onClick\", \"size\"])]), _createElementVNode(\"div\", _hoisted_11, [_createVNode(_component_el_input, {\n modelValue: $props.file.htmlURL,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $props.file.htmlURL = $event),\n readonly: \"\",\n onClick: $options.selectAllText,\n size: $options.urlSize\n }, {\n prepend: _withCtx(() => [...(_cache[10] || (_cache[10] = [_createTextVNode(\"HTML\", -1)]))]),\n _: 1\n }, 8, [\"modelValue\", \"onClick\", \"size\"]), _createVNode(_component_el_input, {\n modelValue: $props.file.ubbURL,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = $event => $props.file.ubbURL = $event),\n readonly: \"\",\n onClick: $options.selectAllText,\n size: $options.urlSize\n }, {\n prepend: _withCtx(() => [...(_cache[11] || (_cache[11] = [_createTextVNode(\"BBCode\", -1)]))]),\n _: 1\n }, 8, [\"modelValue\", \"onClick\", \"size\"])])])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_12, [_createVNode(_component_el_progress, {\n percentage: $props.file.progreess,\n status: $props.file.status,\n \"show-text\": false\n }, null, 8, [\"percentage\", \"status\"])]))]), _createElementVNode(\"div\", _hoisted_13, [_createElementVNode(\"button\", {\n class: \"modern-file-action-btn modern-file-action-btn-primary\",\n onClick: _cache[5] || (_cache[5] = $event => _ctx.$emit('copy', $props.file))\n }, [_createVNode(_component_el_icon, null, {\n default: _withCtx(() => [_createVNode(_component_Link)]),\n _: 1\n })]), _createElementVNode(\"button\", {\n class: \"modern-file-action-btn modern-file-action-btn-danger\",\n onClick: _cache[6] || (_cache[6] = $event => _ctx.$emit('remove', $props.file))\n }, [_createVNode(_component_el_icon, null, {\n default: _withCtx(() => [_createVNode(_component_Delete)]),\n _: 1\n })])])]);\n}","import { Link, Delete } from '@element-plus/icons-vue';\nconst IMAGE_EXTENSIONS = ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp', 'svg', 'tiff', 'ico', 'avif', 'heic', 'jfif', 'pjpeg', 'pjp', 'raw', 'cr2', 'nef', 'dng', 'eps', 'ai', 'emf', 'wmf'];\nconst VIDEO_EXTENSIONS = ['mp4', 'webm', 'ogg', 'mkv'];\nexport default {\n name: 'UploadFileItem',\n components: {\n Link,\n Delete\n },\n props: {\n file: {\n type: Object,\n required: true\n }\n },\n emits: ['copy', 'remove', 'preview-error'],\n computed: {\n urlSize() {\n return window.innerWidth < 768 ? 'small' : 'default';\n }\n },\n methods: {\n isImage(fileName) {\n const ext = fileName.split('.').pop().toLowerCase();\n return IMAGE_EXTENSIONS.includes(ext);\n },\n isVideo(fileName) {\n const ext = fileName.split('.').pop().toLowerCase();\n return VIDEO_EXTENSIONS.includes(ext);\n },\n truncateFilename(filename, maxLength = 20) {\n if (!filename || filename.length <= maxLength) return filename;\n const lastDotIndex = filename.lastIndexOf('.');\n let name, ext;\n if (lastDotIndex > 0) {\n name = filename.substring(0, lastDotIndex);\n ext = filename.substring(lastDotIndex);\n } else {\n name = filename;\n ext = '';\n }\n const keepEnd = ext.length + 4;\n const keepStart = maxLength - keepEnd - 3;\n if (keepStart <= 0) return filename.substring(0, maxLength - 3) + '...';\n return name.substring(0, keepStart) + '...' + name.slice(-4) + ext;\n },\n selectAllText(event) {\n navigator.clipboard.writeText(event.target.value).then(() => {\n this.$message({\n type: 'success',\n message: '复制成功'\n });\n }).catch(() => {\n this.$message({\n type: 'error',\n message: '复制失败'\n });\n });\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./UploadFileItem.vue?vue&type=template&id=85bdebae&scoped=true\"\nimport script from \"./UploadFileItem.vue?vue&type=script&lang=js\"\nexport * from \"./UploadFileItem.vue?vue&type=script&lang=js\"\n\nimport \"./UploadFileItem.vue?vue&type=style&index=0&id=85bdebae&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-85bdebae\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, normalizeClass as _normalizeClass, withCtx as _withCtx, createTextVNode as _createTextVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, renderList as _renderList, Fragment as _Fragment } from \"vue\";\nconst _hoisted_1 = {\n class: \"upload-form\"\n};\nconst _hoisted_2 = {\n class: \"upload-card-glow\",\n ref: \"uploadCardGlow\"\n};\nconst _hoisted_3 = {\n key: 0,\n class: \"upload-card\"\n};\nconst _hoisted_4 = {\n class: \"paste-card-actions\"\n};\nconst _hoisted_5 = {\n class: \"upload-list-dashboard-action\"\n};\nconst _hoisted_6 = {\n class: \"modern-action-group\"\n};\nconst _hoisted_7 = {\n class: \"modern-dropdown-item-content\"\n};\nconst _hoisted_8 = {\n class: \"modern-action-btn modern-action-btn-danger\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_CameraFilled = _resolveComponent(\"CameraFilled\");\n const _component_el_icon = _resolveComponent(\"el-icon\");\n const _component_el_upload = _resolveComponent(\"el-upload\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_radio_button = _resolveComponent(\"el-radio-button\");\n const _component_el_radio_group = _resolveComponent(\"el-radio-group\");\n const _component_el_card = _resolveComponent(\"el-card\");\n const _component_List = _resolveComponent(\"List\");\n const _component_Checked = _resolveComponent(\"Checked\");\n const _component_Failed = _resolveComponent(\"Failed\");\n const _component_el_text = _resolveComponent(\"el-text\");\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n const _component_el_switch = _resolveComponent(\"el-switch\");\n const _component_el_dropdown_item = _resolveComponent(\"el-dropdown-item\");\n const _component_el_dropdown_menu = _resolveComponent(\"el-dropdown-menu\");\n const _component_el_dropdown = _resolveComponent(\"el-dropdown\");\n const _component_UploadFileItem = _resolveComponent(\"UploadFileItem\");\n const _component_el_scrollbar = _resolveComponent(\"el-scrollbar\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createElementVNode(\"div\", {\n class: \"upload-card-wrapper\",\n onMousemove: _cache[0] || (_cache[0] = (...args) => $options.handleUploadCardMouseMove && $options.handleUploadCardMouseMove(...args)),\n onMouseleave: _cache[1] || (_cache[1] = (...args) => $options.handleUploadCardMouseLeave && $options.handleUploadCardMouseLeave(...args))\n }, [_createElementVNode(\"div\", _hoisted_2, null, 512), $props.uploadMethod === 'default' ? (_openBlock(), _createBlock(_component_el_upload, {\n key: 0,\n class: _normalizeClass([\"upload-card\", {\n 'is-uploading': $data.uploading,\n 'upload-card-busy': $data.fileList.length\n }]),\n drag: \"\",\n multiple: \"\",\n \"http-request\": $options.uploadFile,\n onSuccess: $options.handleSuccess,\n \"on-error\": $options.handleError,\n \"before-upload\": $options.beforeUpload,\n \"on-progress\": $options.handleProgress,\n \"file-list\": $data.fileList,\n \"show-file-list\": false\n }, {\n default: _withCtx(() => [_createVNode(_component_el_icon, {\n class: _normalizeClass([\"el-icon--upload\", {\n 'upload-list-busy': $data.fileList.length\n }])\n }, {\n default: _withCtx(() => [_createVNode(_component_CameraFilled)]),\n _: 1\n }, 8, [\"class\"]), _createElementVNode(\"div\", {\n class: _normalizeClass([\"el-upload__text\", {\n 'upload-list-busy': $data.fileList.length\n }])\n }, [...(_cache[8] || (_cache[8] = [_createElementVNode(\"em\", null, \"拖拽\", -1), _createTextVNode(), _createElementVNode(\"em\", null, \"点击\", -1), _createTextVNode(\" 或 \", -1), _createElementVNode(\"em\", null, \"Ctrl + V\", -1), _createTextVNode(\" 粘贴上传\", -1)]))], 2)]),\n _: 1\n }, 8, [\"class\", \"http-request\", \"onSuccess\", \"on-error\", \"before-upload\", \"on-progress\", \"file-list\"])) : _createCommentVNode(\"\", true)], 32), $props.uploadMethod === 'paste' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [_createVNode(_component_el_card, {\n class: _normalizeClass([\"paste-card\", {\n 'is-uploading': $data.uploading,\n 'upload-card-busy': $data.fileList.length\n }])\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.pastedUrls,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $data.pastedUrls = $event),\n class: \"upload-card-textarea\",\n placeholder: \"粘贴外链上传,多个外链用换行分隔\",\n type: \"textarea\",\n rows: $data.fileList.length ? 4 : 14\n }, null, 8, [\"modelValue\", \"rows\"]), _createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_button, {\n class: \"paste-card-upload-button\",\n type: \"primary\",\n size: $options.pasteCardMethodButtonSize,\n onClick: $options.handleUploadPasteUrls\n }, {\n default: _withCtx(() => [...(_cache[9] || (_cache[9] = [_createTextVNode(\" 上 传 \", -1)]))]),\n _: 1\n }, 8, [\"size\", \"onClick\"]), _createVNode(_component_el_radio_group, {\n modelValue: $data.pasteUploadMethod,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $data.pasteUploadMethod = $event),\n class: \"paste-card-method-group\",\n size: $options.pasteCardMethodButtonSize\n }, {\n default: _withCtx(() => [_createVNode(_component_el_radio_button, {\n label: \"save\"\n }, {\n default: _withCtx(() => [...(_cache[10] || (_cache[10] = [_createTextVNode(\"转存\", -1)]))]),\n _: 1\n }), _createVNode(_component_el_radio_button, {\n label: \"external\"\n }, {\n default: _withCtx(() => [...(_cache[11] || (_cache[11] = [_createTextVNode(\"外链\", -1)]))]),\n _: 1\n })]),\n _: 1\n }, 8, [\"modelValue\", \"size\"])])]),\n _: 1\n }, 8, [\"class\"])])) : _createCommentVNode(\"\", true), _createVNode(_component_el_card, {\n class: _normalizeClass([\"upload-list-card\", {\n 'upload-list-busy': $data.fileList.length,\n 'is-uploading': $data.uploading\n }])\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", {\n class: _normalizeClass([\"upload-list-container\", {\n 'upload-list-busy': $data.fileList.length\n }])\n }, [_createVNode(_component_el_scrollbar, {\n onScroll: $options.handleScroll,\n ref: \"scrollContainer\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", {\n class: _normalizeClass([\"upload-list-dashboard\", {\n 'list-scrolled': $data.listScrolled\n }])\n }, [_createVNode(_component_el_text, {\n class: \"upload-list-dashboard-title\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_icon, null, {\n default: _withCtx(() => [_createVNode(_component_List)]),\n _: 1\n }), _createTextVNode(_toDisplayString($options.uploadingCount + $options.waitingCount) + \" \", 1), _createVNode(_component_el_icon, null, {\n default: _withCtx(() => [_createVNode(_component_Checked)]),\n _: 1\n }), _createTextVNode(_toDisplayString($options.uploadSuccessCount) + \" \", 1), _createVNode(_component_el_icon, null, {\n default: _withCtx(() => [_createVNode(_component_Failed)]),\n _: 1\n }), _createTextVNode(_toDisplayString($options.uploadErrorCount), 1)]),\n _: 1\n }), _createElementVNode(\"div\", _hoisted_5, [_createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: \"整体复制\",\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"modern-action-btn\",\n onClick: _cache[4] || (_cache[4] = (...args) => $options.copyAll && $options.copyAll(...args))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"copy\"\n })])]),\n _: 1\n }, 8, [\"disabled\"]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: \"失败重试\",\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_dropdown, null, {\n dropdown: _withCtx(() => [_createVNode(_component_el_dropdown_menu, {\n class: \"modern-dropdown-menu\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_dropdown_item, null, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_7, [_cache[12] || (_cache[12] = _createElementVNode(\"span\", null, \"自动重试\", -1)), _createVNode(_component_el_switch, {\n modelValue: $data.autoReUpload,\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = $event => $data.autoReUpload = $event),\n onChange: $options.handleAutoRetryChange,\n size: \"small\"\n }, null, 8, [\"modelValue\", \"onChange\"])])]),\n _: 1\n })]),\n _: 1\n })]),\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"modern-action-btn\",\n onClick: _cache[5] || (_cache[5] = (...args) => $options.retryError && $options.retryError(...args))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"redo\"\n })])]),\n _: 1\n })]),\n _: 1\n }, 8, [\"disabled\"]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: \"清空列表\",\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_dropdown, null, {\n dropdown: _withCtx(() => [_createVNode(_component_el_dropdown_menu, {\n class: \"modern-dropdown-menu\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_dropdown_item, {\n onClick: $options.clearFileList\n }, {\n default: _withCtx(() => [...(_cache[13] || (_cache[13] = [_createTextVNode(\"清空全部\", -1)]))]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_dropdown_item, {\n onClick: $options.clearSuccessList\n }, {\n default: _withCtx(() => [...(_cache[14] || (_cache[14] = [_createTextVNode(\"清空已上传\", -1)]))]),\n _: 1\n }, 8, [\"onClick\"])]),\n _: 1\n })]),\n default: _withCtx(() => [_createElementVNode(\"button\", _hoisted_8, [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\"\n })])]),\n _: 1\n })]),\n _: 1\n }, 8, [\"disabled\"])])])], 2), (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.fileList.slice().reverse(), file => {\n return _openBlock(), _createBlock(_component_UploadFileItem, {\n key: file.name,\n file: file,\n onCopy: $options.handleCopy,\n onRemove: $options.handleRemove,\n onPreviewError: _cache[7] || (_cache[7] = f => f.url = require('@/assets/404.png'))\n }, null, 8, [\"file\", \"onCopy\", \"onRemove\"]);\n }), 128))]),\n _: 1\n }, 8, [\"onScroll\"])], 2)]),\n _: 1\n }, 8, [\"class\"])]);\n}","/**\r\n * URL 构建工具函数\r\n * 用于生成各种格式的文件链接(原始链接、Markdown、HTML、BBCode)\r\n */\r\n\r\n/**\r\n * 根据 srcID 和文件名生成所有格式的 URL\r\n * @param {string} srcID - 文件资源 ID\r\n * @param {string} name - 文件名\r\n * @param {string} rootUrl - 链接前缀\r\n * @returns {{ finalURL: string, mdURL: string, htmlURL: string, ubbURL: string }}\r\n */\r\nexport function buildFileUrls(srcID, name, rootUrl) {\r\n const url = rootUrl + srcID\r\n return {\r\n finalURL: url,\r\n mdURL: `![${name}](${url})`,\r\n htmlURL: `\"${name}\"`,\r\n ubbURL: `[img]${url}[/img]`\r\n }\r\n}\r\n\r\n/**\r\n * 根据 selectedUrlForm 获取对应格式的 URL 值\r\n * @param {object} file - 文件对象,包含 finalURL/mdURL/htmlURL/ubbURL\r\n * @param {string} format - 格式类型:'url' | 'md' | 'html' | 'ubb'\r\n * @returns {string}\r\n */\r\nexport function getUrlByFormat(file, format) {\r\n const map = {\r\n url: file.finalURL,\r\n md: file.mdURL,\r\n html: file.htmlURL,\r\n ubb: file.ubbURL\r\n }\r\n return map[format] || file.finalURL\r\n}\r\n\r\n/**\r\n * 批量更新文件列表中的 URL(当自定义链接前缀变化时)\r\n * @param {Array} fileList - 文件列表\r\n * @param {string} rootUrl - 新的链接前缀\r\n */\r\nexport function updateFileListUrls(fileList, rootUrl) {\r\n fileList.forEach(item => {\r\n if (item.uploadChannel === 'external') {\r\n return\r\n }\r\n const urls = buildFileUrls(item.srcID, item.name, rootUrl)\r\n Object.assign(item, urls)\r\n })\r\n}\r\n","/**\r\n * SHA256 计算工具\r\n * 纯 JavaScript 实现的增量 SHA256 哈希算法,支持任意大小文件\r\n */\r\n\r\n// SHA256 常量\r\nconst K = new Uint32Array([\r\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\r\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\r\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\r\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\r\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\r\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\r\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\r\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\r\n])\r\n\r\nconst rotr = (x, n) => (x >>> n) | (x << (32 - n))\r\n\r\nfunction processBlock(block, H) {\r\n const W = new Uint32Array(64)\r\n\r\n for (let i = 0; i < 16; i++) {\r\n W[i] = (block[i * 4] << 24) | (block[i * 4 + 1] << 16) | (block[i * 4 + 2] << 8) | block[i * 4 + 3]\r\n }\r\n\r\n for (let i = 16; i < 64; i++) {\r\n const s0 = rotr(W[i - 15], 7) ^ rotr(W[i - 15], 18) ^ (W[i - 15] >>> 3)\r\n const s1 = rotr(W[i - 2], 17) ^ rotr(W[i - 2], 19) ^ (W[i - 2] >>> 10)\r\n W[i] = (W[i - 16] + s0 + W[i - 7] + s1) >>> 0\r\n }\r\n\r\n let [a, b, c, d, e, f, g, h] = H\r\n\r\n for (let i = 0; i < 64; i++) {\r\n const S1 = rotr(e, 6) ^ rotr(e, 11) ^ rotr(e, 25)\r\n const ch = (e & f) ^ (~e & g)\r\n const temp1 = (h + S1 + ch + K[i] + W[i]) >>> 0\r\n const S0 = rotr(a, 2) ^ rotr(a, 13) ^ rotr(a, 22)\r\n const maj = (a & b) ^ (a & c) ^ (b & c)\r\n const temp2 = (S0 + maj) >>> 0\r\n\r\n h = g; g = f; f = e\r\n e = (d + temp1) >>> 0\r\n d = c; c = b; b = a\r\n a = (temp1 + temp2) >>> 0\r\n }\r\n\r\n H[0] = (H[0] + a) >>> 0\r\n H[1] = (H[1] + b) >>> 0\r\n H[2] = (H[2] + c) >>> 0\r\n H[3] = (H[3] + d) >>> 0\r\n H[4] = (H[4] + e) >>> 0\r\n H[5] = (H[5] + f) >>> 0\r\n H[6] = (H[6] + g) >>> 0\r\n H[7] = (H[7] + h) >>> 0\r\n}\r\n\r\n/**\r\n * 创建增量 SHA256 哈希器\r\n * @returns {{ update: (data: Uint8Array) => void, digest: () => string }}\r\n */\r\nexport function createSha256() {\r\n let H = new Uint32Array([\r\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\r\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\r\n ])\r\n\r\n let buffer = new Uint8Array(64)\r\n let bufferLength = 0\r\n let totalLength = 0\r\n\r\n return {\r\n update(data) {\r\n totalLength += data.length\r\n let offset = 0\r\n\r\n if (bufferLength > 0) {\r\n const needed = 64 - bufferLength\r\n const toCopy = Math.min(needed, data.length)\r\n buffer.set(data.subarray(0, toCopy), bufferLength)\r\n bufferLength += toCopy\r\n offset = toCopy\r\n\r\n if (bufferLength === 64) {\r\n processBlock(buffer, H)\r\n bufferLength = 0\r\n }\r\n }\r\n\r\n while (offset + 64 <= data.length) {\r\n processBlock(data.subarray(offset, offset + 64), H)\r\n offset += 64\r\n }\r\n\r\n if (offset < data.length) {\r\n buffer.set(data.subarray(offset), 0)\r\n bufferLength = data.length - offset\r\n }\r\n },\r\n digest() {\r\n const bitLength = totalLength * 8\r\n\r\n // Padding\r\n buffer[bufferLength++] = 0x80\r\n\r\n if (bufferLength > 56) {\r\n buffer.fill(0, bufferLength, 64)\r\n processBlock(buffer, H)\r\n bufferLength = 0\r\n }\r\n\r\n buffer.fill(0, bufferLength, 56)\r\n\r\n // Length in bits (big-endian, 64-bit)\r\n const view = new DataView(buffer.buffer)\r\n view.setUint32(56, Math.floor(bitLength / 0x100000000), false)\r\n view.setUint32(60, bitLength >>> 0, false)\r\n\r\n processBlock(buffer, H)\r\n\r\n // Convert to hex\r\n let hex = ''\r\n for (let i = 0; i < 8; i++) {\r\n hex += H[i].toString(16).padStart(8, '0')\r\n }\r\n return hex\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * 计算文件的 SHA256 哈希\r\n * 使用增量哈希算法,支持任意大小文件\r\n * @param {File} file - 要计算哈希的文件\r\n * @returns {Promise} SHA256 哈希值(十六进制字符串)\r\n */\r\nexport async function computeSha256(file) {\r\n const sha256 = createSha256()\r\n\r\n const CHUNK_SIZE = 4 * 1024 * 1024 // 4MB chunks\r\n let offset = 0\r\n\r\n while (offset < file.size) {\r\n const chunk = file.slice(offset, Math.min(offset + CHUNK_SIZE, file.size))\r\n const buffer = await chunk.arrayBuffer()\r\n sha256.update(new Uint8Array(buffer))\r\n offset += CHUNK_SIZE\r\n\r\n // 每处理 20MB 打印一次进度\r\n if (offset % (20 * 1024 * 1024) < CHUNK_SIZE) {\r\n console.log(`SHA256 progress: ${Math.min(100, Math.round(offset / file.size * 100))}%`)\r\n }\r\n }\r\n\r\n return sha256.digest()\r\n}\r\n","import \"core-js/modules/es.array.push.js\";\nimport \"core-js/modules/es.array-buffer.detached.js\";\nimport \"core-js/modules/es.array-buffer.transfer.js\";\nimport \"core-js/modules/es.array-buffer.transfer-to-fixed-length.js\";\nimport \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nimport \"core-js/modules/es.iterator.find.js\";\nimport \"core-js/modules/es.iterator.for-each.js\";\nimport \"core-js/modules/es.iterator.map.js\";\nimport \"core-js/modules/es.iterator.reduce.js\";\nimport \"core-js/modules/es.json.stringify.js\";\nimport \"core-js/modules/es.typed-array.with.js\";\nimport \"core-js/modules/esnext.json.parse.js\";\nimport \"core-js/modules/esnext.uint8-array.set-from-base64.js\";\nimport \"core-js/modules/esnext.uint8-array.set-from-hex.js\";\nimport \"core-js/modules/esnext.uint8-array.to-base64.js\";\nimport \"core-js/modules/esnext.uint8-array.to-hex.js\";\nimport \"core-js/modules/web.dom-exception.stack.js\";\nimport \"core-js/modules/web.url-search-params.delete.js\";\nimport \"core-js/modules/web.url-search-params.has.js\";\nimport \"core-js/modules/web.url-search-params.size.js\";\nimport axios from '@/utils/axios';\nimport * as imageConversion from 'image-conversion';\nimport { mapGetters } from 'vuex';\nimport { buildFileUrls, updateFileListUrls, getUrlByFormat } from '@/utils/upload/urlBuilder';\nimport { computeSha256 } from '@/utils/upload/sha256';\nimport UploadFileItem from '@/components/upload/UploadFileItem.vue';\nexport default {\n name: 'UploadForm',\n components: {\n UploadFileItem\n },\n props: {\n selectedUrlForm: {\n type: String,\n default: 'url',\n required: false\n },\n customerCompress: {\n type: Boolean,\n default: true,\n required: false\n },\n compressQuality: {\n type: Number,\n default: 4,\n required: false\n },\n compressBar: {\n type: Number,\n default: 5,\n required: false\n },\n serverCompress: {\n type: Boolean,\n default: true,\n required: false\n },\n uploadChannel: {\n type: String,\n default: 'telegram',\n required: false\n },\n channelName: {\n type: String,\n default: '',\n required: false\n },\n uploadNameType: {\n type: String,\n default: 'default',\n required: false\n },\n useCustomUrl: {\n type: String,\n default: 'false',\n required: false\n },\n customUrlPrefix: {\n type: String,\n default: '',\n required: false\n },\n autoRetry: {\n type: Boolean,\n default: true,\n required: false\n },\n urlPrefix: {\n type: String,\n default: '',\n required: false\n },\n uploadMethod: {\n type: String,\n default: 'default',\n required: false\n },\n uploadFolder: {\n type: String,\n default: '',\n required: false\n },\n convertToWebp: {\n type: Boolean,\n default: false,\n required: false\n }\n },\n data() {\n return {\n fileList: [],\n uploading: false,\n maxUploading: 6,\n exceptionList: [],\n listScrolled: false,\n fileListLength: 0,\n uploadCount: 0,\n pastedUrls: '',\n pasteUploadMethod: 'save',\n // 失败文件自动重试相关\n autoReUpload: true,\n maxRetryCount: 10,\n // 最大重试次数\n retryTimer: null,\n // 自动重试定时器\n retryDelay: 12000,\n // 重试延迟时间(毫秒)\n // 批量上传并发控制\n uploadQueue: [],\n // 等待上传的文件队列\n activeUploads: 0,\n // 当前正在上传的文件数\n maxConcurrentUploads: 6,\n // 最大并发上传数\n // 取消上传控制\n abortControllers: new Map() // 存储每个文件的 AbortController\n };\n },\n watch: {\n fileList: {\n handler() {\n if (this.fileList.length > this.fileListLength) {\n this.$nextTick(() => {\n setTimeout(() => {\n if (this.$refs.scrollContainer) {\n // this.$refs.scrollContainer.setScrollTop(this.$refs.scrollContainer.wrapRef.scrollHeight) // 滚动到底部\n this.$refs.scrollContainer.setScrollTop(0); // 滚动到顶部\n }\n }, 100);\n });\n }\n this.fileListLength = this.fileList.length;\n },\n deep: true\n },\n useCustomUrl: {\n handler() {\n updateFileListUrls(this.fileList, this.rootUrl);\n },\n immediate: true\n },\n customUrlPrefix: {\n handler() {\n if (this.useCustomUrl === 'true') {\n updateFileListUrls(this.fileList, this.rootUrl);\n }\n },\n immediate: true\n },\n autoReUpload(val) {\n this.$store.commit('setStoreAutoReUpload', val);\n }\n },\n computed: {\n ...mapGetters(['storeAutoReUpload']),\n uploadSuccessCount() {\n return this.fileList.filter(item => item.status === 'done' || item.status === 'success').length;\n },\n uploadErrorCount() {\n return this.fileList.filter(item => item.status === 'exception').length;\n },\n uploadingCount() {\n return this.fileList.filter(item => item.status === 'uploading').length;\n },\n waitingCount() {\n return this.uploadQueue.length;\n },\n urlSize() {\n // 移动端为small\n return window.innerWidth < 768 ? 'small' : 'default';\n },\n disableTooltip() {\n return window.innerWidth < 768;\n },\n rootUrl() {\n // 链接前缀,优先级:用户自定义 > urlPrefix > 默认\n return this.useCustomUrl === 'true' ? this.customUrlPrefix : this.urlPrefix || `${window.location.protocol}//${window.location.host}/file/`;\n },\n pasteCardMethodButtonSize() {\n if (this.fileList.length) {\n return 'small';\n } else {\n return window.innerWidth < 768 ? 'small' : 'medium';\n }\n }\n },\n mounted() {\n document.addEventListener('paste', this.handlePaste);\n this.autoReUpload = this.storeAutoReUpload;\n },\n beforeUnmount() {\n document.removeEventListener('paste', this.handlePaste);\n // 清理状态\n this.uploadQueue = [];\n this.fileList = [];\n this.activeUploads = 0;\n },\n methods: {\n // 文件名中间截断,保留前缀和扩展名\n truncateFilename(filename, maxLength = 20) {\n if (!filename || filename.length <= maxLength) {\n return filename;\n }\n const lastDotIndex = filename.lastIndexOf('.');\n let name, ext;\n if (lastDotIndex > 0) {\n name = filename.substring(0, lastDotIndex);\n ext = filename.substring(lastDotIndex);\n } else {\n name = filename;\n ext = '';\n }\n // 保留扩展名和部分前后缀\n const keepEnd = ext.length + 4; // 扩展名 + 4个字符\n const keepStart = maxLength - keepEnd - 3; // 3个字符留给...\n if (keepStart <= 0) {\n return filename.substring(0, maxLength - 3) + '...';\n }\n return name.substring(0, keepStart) + '...' + name.slice(-4) + ext;\n },\n uploadFile(file) {\n // 如果fileList中不存在该文件,说明已被删除,直接返回\n if (!this.fileList.find(item => item.uid === file.file.uid)) {\n return;\n }\n\n // 并发控制:如果当前上传数已达上限,加入队列等待\n if (this.activeUploads >= this.maxConcurrentUploads) {\n this.uploadQueue.push(file);\n const waitingItem = this.fileList.find(item => item.uid === file.file.uid);\n if (waitingItem) waitingItem.status = 'waiting';\n return;\n }\n\n // 开始上传,增加计数\n this.activeUploads++;\n const uploadingItem = this.fileList.find(item => item.uid === file.file.uid);\n if (uploadingItem) uploadingItem.status = 'uploading';\n const fileItem = this.fileList.find(item => item.uid === file.file.uid);\n const uploadChannel = fileItem?.uploadChannel || this.uploadChannel;\n\n // 如果上传渠道为外链,直接使用外链上传\n if (uploadChannel === 'external') {\n this.uploadSingleFile(file);\n return;\n }\n\n // HuggingFace 渠道:根据文件大小选择上传方式\n // 小文件(<20MB):通过 CF Workers 代理上传\n // 大文件(>=20MB):前端直传到 HuggingFace S3,绕过 CF Workers 限制\n if (uploadChannel === 'huggingface') {\n const HF_DIRECT_THRESHOLD = 20 * 1024 * 1024; // 20MB\n if (file.file.size >= HF_DIRECT_THRESHOLD) {\n this.uploadToHuggingFaceDirect(file);\n } else {\n this.uploadSingleFile(file);\n }\n return;\n }\n\n // Discord 渠道:限制 10MB,超过 9MB 就用分块上传(留安全余量)\n if (uploadChannel === 'discord') {\n const DISCORD_CHUNK_THRESHOLD = 9 * 1024 * 1024; // 9MB\n if (file.file.size > DISCORD_CHUNK_THRESHOLD) {\n this.uploadFileInChunks(file);\n } else {\n this.uploadSingleFile(file);\n }\n return;\n }\n\n // 其他渠道,检查文件大小,决定是否使用分块上传\n const CHUNK_THRESHOLD = 20 * 1024 * 1024; // 20MB\n if (file.file.size > CHUNK_THRESHOLD) {\n this.uploadFileInChunks(file);\n } else {\n this.uploadSingleFile(file);\n }\n },\n // 处理上传队列中的下一个文件\n processUploadQueue() {\n // 如果队列为空或已达并发上限,不处理\n if (this.uploadQueue.length === 0 || this.activeUploads >= this.maxConcurrentUploads) {\n return;\n }\n\n // 从队列中取出下一个文件并上传\n const nextFile = this.uploadQueue.shift();\n if (nextFile && this.fileList.find(item => item.uid === nextFile.file.uid)) {\n this.uploadFile(nextFile);\n } else {\n // 如果文件已被删除,继续处理下一个\n this.processUploadQueue();\n }\n },\n // 上传完成后的清理工作(成功或失败都调用)\n onUploadComplete() {\n this.activeUploads = Math.max(0, this.activeUploads - 1);\n\n // 处理队列中的下一个文件\n this.processUploadQueue();\n\n // 更新上传状态\n if (this.activeUploads === 0 && this.uploadQueue.length === 0) {\n this.uploading = false;\n }\n },\n // 单文件上传\n async uploadSingleFile(file) {\n const fileItem = this.fileList.find(item => item.uid === file.file.uid);\n if (!fileItem) return; // 文件已被删除\n\n const needServerCompress = fileItem.serverCompress;\n const uploadChannel = fileItem.uploadChannel || this.uploadChannel;\n const autoRetry = this.autoRetry && uploadChannel !== 'external';\n const uploadNameType = uploadChannel === 'external' ? 'default' : this.uploadNameType;\n\n // 创建 AbortController 用于取消上传\n const abortController = new AbortController();\n this.abortControllers.set(file.file.uid, abortController);\n const formData = new FormData();\n formData.append('file', file.file);\n if (uploadChannel === 'external') {\n formData.append('url', file.file.url);\n }\n\n // HuggingFace 渠道:在前端预计算 SHA256,避免后端 CPU 超时\n if (uploadChannel === 'huggingface') {\n try {\n console.log('Computing SHA256 for HuggingFace upload...');\n const sha256 = await computeSha256(file.file);\n formData.append('sha256', sha256);\n console.log('SHA256 computed:', sha256);\n } catch (err) {\n console.error('Failed to compute SHA256:', err);\n // 继续上传,让后端计算(可能会超时)\n }\n }\n axios({\n url: '/upload' + '?serverCompress=' + needServerCompress + '&uploadChannel=' + uploadChannel + (this.channelName ? '&channelName=' + encodeURIComponent(this.channelName) : '') + '&uploadNameType=' + uploadNameType + '&autoRetry=' + autoRetry + '&uploadFolder=' + encodeURIComponent(this.uploadFolder),\n method: 'post',\n data: formData,\n withAuthCode: true,\n signal: abortController.signal,\n // 添加取消信号\n onUploadProgress: progressEvent => {\n const percentCompleted = Math.round(progressEvent.loaded / progressEvent.total * 100);\n file.onProgress({\n percent: percentCompleted,\n file: file.file\n });\n }\n }).then(res => {\n file.onSuccess(res, file.file);\n }).catch(err => {\n // 如果是取消操作,不加入异常列表\n if (err.name === 'CanceledError' || err.code === 'ERR_CANCELED') {\n console.log('上传已取消:', file.file.name);\n return;\n }\n if (err.response && err.response.status !== 401) {\n this.exceptionList.push(file);\n file.onError(err, file.file);\n } else if (!err.response) {\n // 网络错误(如 ERR_HTTP2_PROTOCOL_ERROR),也加入异常列表\n this.exceptionList.push(file);\n file.onError(err, file.file);\n }\n }).finally(() => {\n // 清理 AbortController\n this.abortControllers.delete(file.file.uid);\n // 调用并发控制的完成回调\n this.onUploadComplete();\n });\n },\n // 分块上传\n async uploadFileInChunks(file) {\n const fileItem = this.fileList.find(item => item.uid === file.file.uid);\n if (!fileItem) return; // 文件已被删除\n\n const uploadChannel = fileItem.uploadChannel || this.uploadChannel;\n\n // 创建 AbortController 用于取消上传\n const abortController = new AbortController();\n this.abortControllers.set(file.file.uid, abortController);\n\n // Discord 使用 9MB 分块(留安全余量,Discord 限制 10MB)\n // Telegram 使用 16MB 分块(TG Bot getFile 下载限制 20MB,留 4MB 安全余量)\n // 其他渠道使用 16MB 分块\n const CHUNK_SIZE = uploadChannel === 'discord' ? 9 * 1024 * 1024 // 9MB for Discord\n : 16 * 1024 * 1024; // 16MB for Telegram and others (TG getFile limit: 20MB)\n\n const fileSize = file.file.size;\n const totalChunks = Math.ceil(fileSize / CHUNK_SIZE);\n const needServerCompress = fileItem.serverCompress;\n const autoRetry = this.autoRetry && uploadChannel !== 'external';\n const uploadNameType = uploadChannel === 'external' ? 'default' : this.uploadNameType;\n\n // HuggingFace 渠道:在前端预计算 SHA256\n let precomputedSha256 = null;\n if (uploadChannel === 'huggingface') {\n try {\n console.log('Computing SHA256 for HuggingFace chunked upload...');\n precomputedSha256 = await computeSha256(file.file);\n console.log('SHA256 computed:', precomputedSha256);\n } catch (err) {\n console.error('Failed to compute SHA256:', err);\n }\n }\n try {\n // 第一步:初始化分块上传,获取uploadId\n const initFormData = new FormData();\n initFormData.append('originalFileName', file.file.name);\n initFormData.append('originalFileType', file.file.type);\n initFormData.append('totalChunks', totalChunks.toString());\n const initResponse = await axios({\n url: '/upload' + '?serverCompress=' + needServerCompress + '&uploadChannel=' + uploadChannel + (this.channelName ? '&channelName=' + encodeURIComponent(this.channelName) : '') + '&uploadNameType=' + uploadNameType + '&autoRetry=' + autoRetry + '&uploadFolder=' + encodeURIComponent(this.uploadFolder) + '&initChunked=true',\n method: 'post',\n data: initFormData,\n withAuthCode: true\n });\n if (!initResponse.data.success) {\n throw new Error('初始化分块上传失败: ' + initResponse.data.message);\n }\n const uploadId = initResponse.data.uploadId;\n console.log('分块上传初始化成功,uploadId:', uploadId);\n\n // 记录 totalChunks 和 uploadId 到文件项,用于后续清理\n const fileItem = this.fileList.find(item => item.uid === file.file.uid);\n if (fileItem) {\n fileItem.totalChunks = totalChunks;\n fileItem.uploadId = uploadId;\n }\n\n // 第二步:并发上传所有分块\n const maxConcurrency = 3; // 最大并发数\n const chunkProgress = new Array(totalChunks).fill(0);\n let nextChunkIndex = 0;\n let hasError = false;\n let errorMsg = '';\n let isCancelled = false; // 标记是否被取消\n\n const uploadChunk = async chunkIndex => {\n if (hasError || isCancelled) return;\n const start = chunkIndex * CHUNK_SIZE;\n const end = Math.min(start + CHUNK_SIZE, fileSize);\n const chunk = file.file.slice(start, end);\n const formData = new FormData();\n formData.append('file', chunk, `${file.file.name}.part${chunkIndex.toString().padStart(3, '0')}`);\n formData.append('chunkIndex', chunkIndex.toString());\n formData.append('totalChunks', totalChunks.toString());\n formData.append('uploadId', uploadId);\n formData.append('originalFileName', file.file.name);\n formData.append('originalFileType', file.file.type);\n let retryCount = 0;\n const maxRetries = 3;\n while (retryCount < maxRetries) {\n if (hasError || isCancelled) return;\n try {\n await axios({\n url: '/upload' + '?serverCompress=' + needServerCompress + '&uploadChannel=' + uploadChannel + (this.channelName ? '&channelName=' + encodeURIComponent(this.channelName) : '') + '&uploadNameType=' + uploadNameType + '&autoRetry=' + autoRetry + '&uploadFolder=' + encodeURIComponent(this.uploadFolder) + '&chunked=true',\n method: 'post',\n data: formData,\n withAuthCode: true,\n signal: abortController.signal,\n // 添加取消信号\n onUploadProgress: progressEvent => {\n if (hasError || isCancelled) return;\n const percent = Math.round(progressEvent.loaded / progressEvent.total * 100);\n chunkProgress[chunkIndex] = percent;\n const totalPercent = Math.round(chunkProgress.reduce((a, b) => a + b, 0) / totalChunks);\n file.onProgress({\n percent: totalPercent,\n file: file.file\n });\n }\n });\n return; // Success\n } catch (err) {\n // 如果是取消操作,直接返回\n if (err.name === 'CanceledError' || err.code === 'ERR_CANCELED') {\n isCancelled = true;\n console.log('分块上传已取消:', file.file.name);\n return;\n }\n retryCount++;\n console.warn(`分块 ${chunkIndex + 1}/${totalChunks} 上传失败 (重试 ${retryCount}/${maxRetries}):`, err);\n if (retryCount >= maxRetries) {\n hasError = true;\n errorMsg = `分块 ${chunkIndex + 1}/${totalChunks} 上传失败: ${err.message}`;\n throw new Error(errorMsg);\n }\n // 等待后重试\n await new Promise(resolve => setTimeout(resolve, 2000 * retryCount));\n }\n }\n };\n\n // 创建并发池\n const pool = [];\n for (let i = 0; i < maxConcurrency; i++) {\n pool.push((async () => {\n while (nextChunkIndex < totalChunks && !hasError && !isCancelled) {\n const currentIndex = nextChunkIndex++;\n try {\n await uploadChunk(currentIndex);\n } catch (e) {\n if (!isCancelled) {\n hasError = true;\n errorMsg = e.message;\n }\n break;\n }\n }\n })());\n }\n await Promise.all(pool);\n\n // 如果被取消,直接返回\n if (isCancelled) {\n console.log('分块上传已取消,跳过合并步骤');\n return;\n }\n if (hasError) {\n throw new Error(errorMsg || '上传过程中发生错误');\n }\n\n // 第三步:所有分块上传完成,发送合并请求\n this.$message({\n type: 'info',\n message: '分块上传完成,正在合并文件,请耐心等待...',\n duration: 0 // 不自动关闭\n });\n const mergeFormData = new FormData();\n mergeFormData.append('uploadId', uploadId);\n mergeFormData.append('totalChunks', totalChunks.toString());\n mergeFormData.append('originalFileName', file.file.name);\n mergeFormData.append('originalFileType', file.file.type);\n // HuggingFace 渠道:传递预计算的 SHA256\n if (precomputedSha256) {\n mergeFormData.append('sha256', precomputedSha256);\n }\n const response = await axios({\n url: '/upload' + '?serverCompress=' + needServerCompress + '&uploadChannel=' + uploadChannel + (this.channelName ? '&channelName=' + encodeURIComponent(this.channelName) : '') + '&uploadNameType=' + uploadNameType + '&autoRetry=' + autoRetry + '&uploadFolder=' + encodeURIComponent(this.uploadFolder) + '&chunked=true&merge=true',\n method: 'post',\n data: mergeFormData,\n withAuthCode: true\n });\n\n // 关闭提示\n this.$message.closeAll();\n\n // 同步处理完成\n file.onSuccess(response, file.file);\n } catch (err) {\n // 如果是取消操作,不加入异常列表\n if (err.name === 'CanceledError' || err.code === 'ERR_CANCELED') {\n console.log('分块上传已取消:', file.file.name);\n return;\n }\n console.error('分块上传失败:', err);\n\n // 如果有uploadId,清理相关资源\n const fileItem = this.fileList.find(item => item.uid === file.file.uid);\n if (fileItem && fileItem.uploadId) {\n this.cleanupUploadResources(fileItem.uploadId, fileItem.totalChunks).then(() => {\n console.log(`已清理分块上传失败的资源: ${fileItem.uploadId}`);\n }).catch(cleanupError => {\n console.warn('清理分块上传失败资源时出错:', cleanupError);\n });\n }\n if (err.response && err.response.status !== 401) {\n this.exceptionList.push(file);\n file.onError(err, file.file);\n } else if (!err.response) {\n // 网络错误,也加入异常列表\n this.exceptionList.push(file);\n file.onError(err, file.file);\n }\n } finally {\n // 清理 AbortController\n this.abortControllers.delete(file.file.uid);\n // 调用并发控制的完成回调\n this.onUploadComplete();\n }\n },\n handleRemove(file) {\n // 如果文件正在上传,取消上传\n if (this.abortControllers.has(file.uid)) {\n this.abortControllers.get(file.uid).abort();\n this.abortControllers.delete(file.uid);\n }\n // 从上传队列中移除(如果在等待中)\n this.uploadQueue = this.uploadQueue.filter(item => item.file.uid !== file.uid);\n // 从文件列表中移除\n this.fileList = this.fileList.filter(item => item.uid !== file.uid);\n this.$message({\n type: 'info',\n message: this.truncateFilename(file.name) + '已删除'\n });\n },\n // 清理上传资源\n async cleanupUploadResources(uploadId, totalChunks = 0) {\n try {\n await axios({\n url: `/upload?cleanup=true&uploadId=${uploadId}&totalChunks=${totalChunks}`,\n method: 'get',\n withAuthCode: true,\n timeout: 5000\n });\n console.log(`清理上传资源成功: ${uploadId}`);\n } catch (error) {\n console.warn('清理上传资源失败:', error);\n }\n },\n handleSuccess(response, file) {\n const fileItem = this.fileList.find(item => item.uid === file.uid);\n if (!fileItem) return; // 文件已被删除\n\n try {\n // 对上传渠道为外链的,不修改链接\n const uploadChannel = fileItem.uploadChannel || this.uploadChannel;\n if (uploadChannel !== 'external') {\n // 从response.data[0].src中去除/file/前缀\n const srcID = response.data[0].src.replace('/file/', '');\n fileItem.url = `${window.location.protocol}//${window.location.host}/file/` + srcID;\n const urls = buildFileUrls(srcID, file.name, this.rootUrl);\n Object.assign(fileItem, urls);\n fileItem.srcID = srcID;\n }\n fileItem.progreess = 100;\n fileItem.status = 'success';\n\n // Save to history\n this.saveToHistory(fileItem);\n this.$message({\n type: 'success',\n message: this.truncateFilename(file.name) + '上传成功'\n });\n setTimeout(() => {\n const item = this.fileList.find(item => item.uid === file.uid);\n if (item) item.status = 'done';\n }, 1000);\n } catch (error) {\n this.$message.error(this.truncateFilename(file.name) + '上传失败');\n fileItem.status = 'exception';\n }\n // 注意:并发控制的 onUploadComplete 已在各上传方法的 finally 中调用\n },\n saveToHistory(fileItem) {\n try {\n const history = JSON.parse(localStorage.getItem('uploadHistory') || '[]');\n const newRecord = {\n name: fileItem.name,\n url: fileItem.finalURL,\n time: Date.now(),\n type: fileItem.name.split('.').pop().toLowerCase()\n };\n history.push(newRecord);\n localStorage.setItem('uploadHistory', JSON.stringify(history));\n } catch (e) {\n console.error('Failed to save history', e);\n }\n },\n handleError(err, file) {\n const fileItem = this.fileList.find(item => item.uid === file.uid);\n if (!fileItem) return; // 文件已被删除\n\n this.$message.error(this.truncateFilename(file.name) + '上传失败');\n fileItem.status = 'exception';\n\n // 如果开启了自动重试,安排自动重试\n if (this.autoReUpload) {\n this.scheduleAutoRetry();\n }\n // 注意:并发控制的 onUploadComplete 已在各上传方法的 finally 中调用\n },\n handleCopy(file) {\n const status = this.fileList.find(item => item.uid === file.uid).status;\n if (status !== 'done' && status !== 'success') {\n this.$message({\n type: 'warning',\n message: '文件未上传成功,无法复制链接'\n });\n return;\n }\n navigator.clipboard.writeText(getUrlByFormat(file, this.selectedUrlForm));\n this.$message({\n type: 'success',\n message: '复制成功'\n });\n },\n beforeUpload(file) {\n return new Promise(async (resolve, reject) => {\n let processedFile = file;\n\n // WebP 转换:在压缩之前进行\n // 条件:1.开启WebP转换 2.文件类型为图片 3.不是WebP/GIF/SVG格式\n const canConvertToWebp = this.convertToWebp && file.type.includes('image') && !file.type.includes('webp') && !file.type.includes('gif') && !file.type.includes('svg');\n if (canConvertToWebp) {\n try {\n const convertedFile = await this.convertImageToWebp(file);\n if (convertedFile) {\n processedFile = convertedFile;\n console.log(`WebP转换成功: ${file.name} -> ${convertedFile.name}, 大小: ${(file.size / 1024).toFixed(1)}KB -> ${(convertedFile.size / 1024).toFixed(1)}KB`);\n }\n } catch (err) {\n console.warn('WebP转换失败,使用原文件:', err);\n // 转换失败,继续使用原文件\n }\n }\n\n // 客户端压缩条件:1.文件类型为图片 2.开启客户端压缩,且文件大小大于压缩阈值\n const needCustomCompress = processedFile.type.includes('image') && this.customerCompress && processedFile.size / 1024 / 1024 > this.compressBar;\n const isLtLim = processedFile.size / 1024 / 1024 <= 1024 || this.uploadChannel !== 'telegram';\n const pushFileToQueue = (file, serverCompress) => {\n const fileUrl = URL.createObjectURL(file);\n this.fileList.push({\n uid: file.uid,\n name: file.name,\n url: fileUrl,\n finalURL: '',\n mdURL: '',\n htmlURL: '',\n ubbURL: '',\n srcID: '',\n status: 'uploading',\n progreess: 0,\n serverCompress: serverCompress,\n retryCount: 0\n });\n resolve(file);\n };\n if (needCustomCompress) {\n //尝试压缩图片\n imageConversion.compressAccurately(processedFile, 1024 * this.compressQuality).then(res => {\n //如果压缩后大于1024MB,且上传渠道为telegram,则不上传\n if (res.size / 1024 / 1024 > 1024 && this.uploadChannel === 'telegram') {\n this.$message.error(processedFile.name + '压缩后文件过大,无法上传!');\n reject('文件过大');\n }\n this.uploading = true;\n //将res包装成新的file\n const newFile = new File([res], processedFile.name, {\n type: res.type\n });\n newFile.uid = file.uid;\n const myUploadCount = this.uploadCount++;\n\n //开启服务端压缩条件:1.开启服务端压缩 2.文件大小小于10MB 3.上传渠道为Telegram\n const needServerCompress = this.serverCompress && newFile.size / 1024 / 1024 < 10 && this.uploadChannel === 'telegram';\n if (myUploadCount === 0) {\n pushFileToQueue(newFile, needServerCompress);\n } else {\n setTimeout(() => {\n pushFileToQueue(newFile, needServerCompress);\n this.uploadCount--;\n }, 300 * myUploadCount);\n }\n }).catch(err => {\n this.$message.error(processedFile.name + '压缩失败,无法上传!');\n reject(err);\n });\n } else if (isLtLim) {\n this.uploading = true;\n const myUploadCount = this.uploadCount++;\n\n // 开启服务端压缩条件:1.上传渠道为Telegram 2.开启服务端压缩 3.如果为图片,则文件大小小于10MB,否则不限制大小\n const needServerCompress = this.uploadChannel === 'telegram' && this.serverCompress && (processedFile.type.includes('image') ? processedFile.size / 1024 / 1024 < 10 : true);\n if (myUploadCount === 0) {\n pushFileToQueue(processedFile, needServerCompress);\n } else {\n setTimeout(() => {\n pushFileToQueue(processedFile, needServerCompress);\n this.uploadCount--;\n }, 300 * myUploadCount);\n }\n } else {\n this.$message.error(processedFile.name + '文件过大,无法上传!');\n reject('文件过大');\n }\n });\n },\n handleProgress(event) {\n const fileItem = this.fileList.find(item => item.uid === event.file.uid);\n if (fileItem) {\n fileItem.progreess = event.percent;\n }\n },\n copyAll() {\n const urls = this.fileList.filter(item => item.status === 'done' || item.status === 'success').map(item => getUrlByFormat(item, this.selectedUrlForm)).join('\\n');\n navigator.clipboard.writeText(urls);\n this.$message({\n type: 'success',\n message: '整体复制成功'\n });\n },\n clearFileList() {\n if (this.fileList.length > 0) {\n // 取消所有正在上传的文件\n this.abortControllers.forEach((controller, uid) => {\n controller.abort();\n });\n this.abortControllers.clear();\n // 清空上传队列\n this.uploadQueue = [];\n // 清空文件列表\n this.fileList = [];\n this.$message({\n type: 'success',\n message: '文件列表已清空'\n });\n } else {\n this.$message({\n type: 'info',\n message: '文件列表为空'\n });\n }\n },\n clearSuccessList() {\n if (this.uploadSuccessCount > 0) {\n this.fileList = this.fileList.filter(item => item.status !== 'done' && item.status !== 'success');\n this.$message({\n type: 'success',\n message: '成功上传文件已清空'\n });\n } else {\n this.$message({\n type: 'info',\n message: '成功上传文件为空'\n });\n }\n },\n handlePaste(event) {\n // 当粘贴位置是文本框时,不执行该操作\n if (event.target.tagName === 'INPUT' || event.target.tagName === 'TEXTAREA') {\n return;\n }\n const items = event.clipboardData.items;\n if (items.length > 0) {\n this.uploadFromUrl(items);\n }\n },\n handleUploadPasteUrls() {\n // 用于上传在上传文本框中粘贴的外链\n const urls = this.pastedUrls.split('\\n');\n // 处理空行和首尾空字符,链接须符合URL规范\n const validUrls = urls.map(url => url.trim()).filter(url => url !== '').filter(url => /^(https?:\\/\\/[^\\s$.?#].[^\\s]*)$/.test(url));\n\n // 根据粘贴上传方式进行上传\n if (this.pasteUploadMethod === 'save') {\n // 正常上传\n this.uploadFromUrl(validUrls.map(url => {\n return {\n kind: 'string',\n getAsString: callback => {\n callback(url);\n }\n };\n }));\n } else if (this.pasteUploadMethod === 'external') {\n // 仅保存外链,使用 external 渠道上传\n for (let i = 0; i < validUrls.length; i++) {\n const url = validUrls[i];\n const fileName = url.split('/').pop();\n const mdUrl = `![${fileName}](${url})`;\n const htmlUrl = `\"${fileName}\"`;\n const ubbUrl = `[img]${url}[/img]`;\n // 将 url 作为文件内容,文件名为 URL 的最后一部分\n const file = new File([], url.split('/').pop(), {\n type: 'text/plain'\n });\n file.uid = Date.now() + i;\n file.url = url;\n this.fileList.push({\n uid: file.uid,\n name: file.name,\n url: url,\n finalURL: url,\n mdURL: mdUrl,\n htmlURL: htmlUrl,\n ubbURL: ubbUrl,\n srcID: url,\n status: 'uploading',\n progreess: 0,\n serverCompress: false,\n uploadChannel: 'external',\n retryCount: 0\n });\n // 上传\n this.uploadFile({\n file: file,\n onProgress: evt => this.handleProgress(evt),\n onSuccess: (response, file) => this.handleSuccess(response, file),\n onError: (error, file) => this.handleError(error, file)\n });\n }\n }\n },\n uploadFromUrl(items) {\n for (let i = 0; i < items.length; i++) {\n if (items[i].kind === 'file') {\n const file = items[i].getAsFile();\n // 允许上传任意类型的文件\n file.uid = Date.now() + i;\n //接收beforeUpload的Promise对象\n const checkResult = this.beforeUpload(file);\n if (checkResult instanceof Promise) {\n checkResult.then(newFile => {\n if (newFile instanceof File) {\n this.uploadFile({\n file: newFile,\n onProgress: evt => this.handleProgress(evt),\n onSuccess: (response, file) => this.handleSuccess(response, file),\n onError: (error, file) => this.handleError(error, file)\n });\n }\n }).catch(err => {\n console.log(err);\n });\n }\n } else if (items[i].kind === 'string') {\n items[i].getAsString(text => {\n const urlPattern = /^(https?:\\/\\/[^\\s$.?#].[^\\s]*)$/;\n let fileName = '';\n if (urlPattern.test(text)) {\n axios.post('/api/fetchRes', {\n url: text\n }, {\n responseType: 'blob',\n withAuthCode: true\n }).then(response => {\n const contentType = response.headers['content-type'];\n if (response.status == 200) {\n // 提取文件名\n const disposition = response.headers['content-disposition'];\n if (disposition) {\n const filenameRegex = /filename[^;=\\n]*=((['\"]).*?\\2|[^;\\n]*)/;\n const filenameStarRegex = /filename\\*\\s*=\\s*UTF-8''([^;\\n]*)/; // 处理 filename*\n\n let matches = filenameRegex.exec(disposition);\n if (matches != null && matches[1]) {\n fileName = matches[1].replace(/['\"]/g, '');\n // 尝试解码\n try {\n fileName = decodeURIComponent(fileName);\n } catch (e) {\n fileName = '';\n }\n }\n if (fileName === '') {\n matches = filenameStarRegex.exec(disposition); // 尝试匹配 filename*\n if (matches != null && matches[1]) {\n fileName = decodeURIComponent(matches[1]);\n }\n }\n }\n // 尝试从URL中提取文件名\n if (fileName === '') {\n const url = new URL(text);\n fileName = url.pathname.split('/').pop();\n }\n // 未提取到文件名,使用默认文件名\n if (fileName === '') {\n // 获取文件后缀\n const url = new URL(text);\n let extension = url.pathname.split('.').pop();\n // 未能从URL提取有效后缀,使用bin作为默认后缀\n if (!extension || extension === '' || extension.length > 10) {\n extension = 'bin';\n }\n fileName = 'PastedFile' + Date.now() + i + '.' + extension;\n }\n\n // 读取文件内容\n const blob = response.data;\n const file = new File([blob], fileName, {\n type: blob.type\n });\n file.uid = Date.now() + i;\n // 接收beforeUpload的Promise对象\n const checkResult = this.beforeUpload(file);\n if (checkResult instanceof Promise) {\n checkResult.then(newFile => {\n if (newFile instanceof File) {\n this.uploadFile({\n file: newFile,\n onProgress: evt => this.handleProgress(evt),\n onSuccess: (response, file) => this.handleSuccess(response, file),\n onError: (error, file) => this.handleError(error, file)\n });\n }\n }).catch(err => {\n console.log(err);\n });\n }\n } else {\n throw new Error('URL地址请求失败');\n }\n }).catch(error => {\n this.$message({\n type: 'warning',\n message: '粘贴板中的URL地址请求失败'\n });\n });\n }\n });\n }\n }\n },\n handleScroll(event) {\n this.listScrolled = event.scrollTop > 0 && this.fileList.length > 0;\n },\n retryError() {\n if (this.exceptionList.length > 0) {\n this.retryFailedFiles(this.exceptionList);\n this.exceptionList = [];\n } else {\n this.$message({\n type: 'info',\n message: '无上传失败文件'\n });\n }\n },\n handleAutoRetryChange(val) {\n this.$message({\n type: val ? 'success' : 'info',\n message: val ? '自动重试已开启' : '自动重试已关闭'\n });\n\n // 如果开启自动重试且有失败文件,立即开始重试\n if (val && this.exceptionList.length > 0) {\n this.scheduleAutoRetry();\n }\n },\n retryFailedFiles(files) {\n files.forEach(file => {\n const retryCount = file.retryCount || 0;\n if (retryCount < this.maxRetryCount) {\n file.retryCount = retryCount + 1;\n this.uploadFile({\n file: file.file,\n onProgress: evt => this.handleProgress(evt),\n onSuccess: (response, file) => this.handleSuccess(response, file),\n onError: (error, file) => this.handleError(error, file)\n });\n } else {\n this.$message({\n type: 'warning',\n message: `${file.name} 已达到最大重试次数(${this.maxRetryCount}),停止重试`\n });\n }\n });\n },\n scheduleAutoRetry() {\n if (this.retryTimer) {\n clearTimeout(this.retryTimer);\n }\n this.retryTimer = setTimeout(() => {\n if (this.autoReUpload && this.exceptionList.length > 0) {\n const filesToRetry = [...this.exceptionList];\n this.exceptionList = [];\n this.retryFailedFiles(filesToRetry);\n }\n }, this.retryDelay);\n },\n // HuggingFace 大文件直传(绕过 CF Workers 限制)\n // 流程:前端计算 SHA256 → 获取 S3 上传 URL → 直传到 S3 → 提交文件引用\n async uploadToHuggingFaceDirect(file) {\n const fileItem = this.fileList.find(item => item.uid === file.file.uid);\n if (!fileItem) return;\n\n // 创建 AbortController 用于取消上传\n const abortController = new AbortController();\n this.abortControllers.set(file.file.uid, abortController);\n try {\n console.log('=== HuggingFace Direct Upload ===');\n console.log('File:', file.file.name, 'Size:', file.file.size);\n\n // 1. 计算 SHA256\n file.onProgress({\n percent: 5,\n file: file.file\n });\n console.log('Computing SHA256...');\n const sha256 = await computeSha256(file.file);\n console.log('SHA256:', sha256);\n\n // 检查是否已取消\n if (abortController.signal.aborted) {\n console.log('HuggingFace 上传已取消:', file.file.name);\n return;\n }\n\n // 2. 获取文件样本(前512字节的base64)\n const sampleBytes = new Uint8Array(await file.file.slice(0, 512).arrayBuffer());\n const fileSample = btoa(String.fromCharCode(...sampleBytes));\n\n // 3. 获取 LFS 上传 URL\n file.onProgress({\n percent: 10,\n file: file.file\n });\n console.log('Getting LFS upload URL...');\n const uploadInfoRes = await axios({\n url: '/upload/huggingface/getUploadUrl',\n method: 'post',\n data: {\n fileSize: file.file.size,\n fileName: file.file.name,\n fileType: file.file.type,\n sha256,\n fileSample,\n channelName: this.channelName,\n // 传递指定的渠道名称\n uploadNameType: this.uploadNameType,\n uploadFolder: this.uploadFolder\n },\n withAuthCode: true,\n signal: abortController.signal\n });\n if (!uploadInfoRes.data.success) {\n throw new Error(uploadInfoRes.data.error || 'Failed to get upload URL');\n }\n const uploadInfo = uploadInfoRes.data;\n console.log('Upload info:', uploadInfo);\n\n // 检查文件是否已存在\n if (uploadInfo.alreadyExists) {\n console.log('File already exists in LFS, skipping upload');\n file.onProgress({\n percent: 90,\n file: file.file\n });\n } else if (uploadInfo.needsLfs && uploadInfo.uploadAction) {\n // 4. 直接上传到 S3\n const {\n href,\n header\n } = uploadInfo.uploadAction;\n if (header?.chunk_size) {\n // 分片上传\n await this.uploadToHuggingFaceMultipart(file, uploadInfo, abortController);\n } else {\n // 基本上传\n console.log('Uploading to S3 (basic)...');\n const uploadRes = await fetch(href, {\n method: 'PUT',\n headers: header || {},\n body: file.file,\n signal: abortController.signal\n });\n if (!uploadRes.ok) {\n const error = await uploadRes.text();\n throw new Error(`S3 upload failed: ${uploadRes.status} - ${error}`);\n }\n console.log('S3 upload complete');\n }\n }\n\n // 检查是否已取消\n if (abortController.signal.aborted) {\n console.log('HuggingFace 上传已取消:', file.file.name);\n return;\n }\n\n // 5. 提交文件引用\n file.onProgress({\n percent: 95,\n file: file.file\n });\n console.log('Committing file...');\n const commitRes = await axios({\n url: '/upload/huggingface/commitUpload',\n method: 'post',\n data: {\n fullId: uploadInfo.fullId,\n filePath: uploadInfo.filePath,\n sha256,\n fileSize: file.file.size,\n fileName: file.file.name,\n fileType: file.file.type,\n channelName: uploadInfo.channelName\n },\n withAuthCode: true,\n signal: abortController.signal\n });\n if (!commitRes.data.success) {\n throw new Error(commitRes.data.error || 'Failed to commit file');\n }\n console.log('Upload complete:', commitRes.data);\n // 转换响应格式以匹配 handleSuccess 期望的格式\n const formattedResponse = {\n data: [{\n src: commitRes.data.src\n }]\n };\n file.onSuccess(formattedResponse, file.file);\n } catch (err) {\n // 如果是取消操作,不加入异常列表\n if (err.name === 'CanceledError' || err.code === 'ERR_CANCELED' || err.name === 'AbortError') {\n console.log('HuggingFace 上传已取消:', file.file.name);\n return;\n }\n console.error('HuggingFace direct upload error:', err);\n this.exceptionList.push(file);\n file.onError(err, file.file);\n } finally {\n // 清理 AbortController\n this.abortControllers.delete(file.file.uid);\n // 调用并发控制的完成回调\n this.onUploadComplete();\n }\n },\n // HuggingFace 分片上传到 S3\n async uploadToHuggingFaceMultipart(file, uploadInfo, abortController) {\n const {\n uploadAction\n } = uploadInfo;\n const {\n href: completionUrl,\n header\n } = uploadAction;\n const chunkSize = parseInt(header.chunk_size);\n\n // 获取所有分片的上传 URL\n const parts = Object.keys(header).filter(key => /^[0-9]+$/.test(key));\n console.log(`Multipart upload: ${parts.length} parts, chunk size: ${chunkSize}`);\n const completeParts = [];\n const totalParts = parts.length;\n for (const part of parts) {\n // 检查是否已取消\n if (abortController && abortController.signal.aborted) {\n console.log('HuggingFace 分片上传已取消');\n throw new DOMException('Upload cancelled', 'AbortError');\n }\n const index = parseInt(part) - 1;\n const start = index * chunkSize;\n const end = Math.min(start + chunkSize, file.file.size);\n const chunk = file.file.slice(start, end);\n console.log(`Uploading part ${part}/${totalParts}`);\n const response = await fetch(header[part], {\n method: 'PUT',\n body: chunk,\n signal: abortController ? abortController.signal : undefined\n });\n if (!response.ok) {\n throw new Error(`Failed to upload part ${part}: ${response.status}`);\n }\n const etag = response.headers.get('ETag');\n if (!etag) {\n throw new Error(`No ETag for part ${part}`);\n }\n completeParts.push({\n partNumber: parseInt(part),\n etag\n });\n\n // 更新进度(10% - 90%)\n const progress = 10 + Math.round(parseInt(part) / totalParts * 80);\n file.onProgress({\n percent: progress,\n file: file.file\n });\n }\n\n // 检查是否已取消\n if (abortController && abortController.signal.aborted) {\n console.log('HuggingFace 分片上传已取消');\n throw new DOMException('Upload cancelled', 'AbortError');\n }\n\n // 完成分片上传\n console.log('Completing multipart upload...');\n const completeResponse = await fetch(completionUrl, {\n method: 'POST',\n headers: {\n 'Accept': 'application/vnd.git-lfs+json',\n 'Content-Type': 'application/vnd.git-lfs+json'\n },\n body: JSON.stringify({\n oid: uploadInfo.oid,\n parts: completeParts\n }),\n signal: abortController ? abortController.signal : undefined\n });\n if (!completeResponse.ok) {\n const error = await completeResponse.text();\n throw new Error(`Multipart complete failed: ${completeResponse.status} - ${error}`);\n }\n console.log('Multipart upload complete');\n },\n // 将图片转换为 WebP 格式\n async convertImageToWebp(file) {\n return new Promise((resolve, reject) => {\n // 不支持转换的格式直接返回 null\n if (file.type.includes('gif') || file.type.includes('svg') || file.type.includes('webp')) {\n resolve(null);\n return;\n }\n const img = new Image();\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('2d');\n img.onload = () => {\n canvas.width = img.width;\n canvas.height = img.height;\n ctx.drawImage(img, 0, 0);\n canvas.toBlob(blob => {\n if (blob) {\n // 修改文件名:将原扩展名替换为 .webp\n const originalName = file.name;\n const lastDotIndex = originalName.lastIndexOf('.');\n const newName = lastDotIndex > 0 ? originalName.substring(0, lastDotIndex) + '.webp' : originalName + '.webp';\n const webpFile = new File([blob], newName, {\n type: 'image/webp'\n });\n webpFile.uid = file.uid;\n resolve(webpFile);\n } else {\n reject(new Error('WebP 转换失败'));\n }\n\n // 清理\n URL.revokeObjectURL(img.src);\n }, 'image/webp', 0.92); // 0.92 质量参数,平衡质量和大小\n };\n img.onerror = () => {\n URL.revokeObjectURL(img.src);\n reject(new Error('图片加载失败'));\n };\n img.src = URL.createObjectURL(file);\n });\n },\n // 拖拽上传卡片鼠标移动事件 - 悬浮光斑效果\n handleUploadCardMouseMove(e) {\n const glow = this.$refs.uploadCardGlow;\n if (!glow) return;\n const rect = e.currentTarget.getBoundingClientRect();\n const x = e.clientX - rect.left;\n const y = e.clientY - rect.top;\n glow.style.opacity = '1';\n glow.style.left = x + 'px';\n glow.style.top = y + 'px';\n },\n // 拖拽上传卡片鼠标离开事件\n handleUploadCardMouseLeave() {\n const glow = this.$refs.uploadCardGlow;\n if (!glow) return;\n glow.style.opacity = '0';\n }\n },\n beforeDestroy() {\n // 清理定时器\n if (this.retryTimer) {\n clearTimeout(this.retryTimer);\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./UploadForm.vue?vue&type=template&id=a12d47f4&scoped=true\"\nimport script from \"./UploadForm.vue?vue&type=script&lang=js\"\nexport * from \"./UploadForm.vue?vue&type=script&lang=js\"\n\nimport \"./UploadForm.vue?vue&type=style&index=0&id=a12d47f4&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-a12d47f4\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock } from \"vue\";\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_el_autocomplete = _resolveComponent(\"el-autocomplete\");\n return _openBlock(), _createBlock(_component_el_autocomplete, {\n ref: \"autocompleteRef\",\n modelValue: $options.inputValue,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $options.inputValue = $event),\n class: \"directory-suggestion-input\",\n \"popper-class\": $data.showSuggestions ? 'directory-suggestion-popper' : 'directory-suggestion-popper-hidden',\n \"hide-loading\": true,\n placeholder: $props.placeholder,\n \"value-key\": \"value\",\n \"fetch-suggestions\": $options.querySuggestions,\n \"trigger-on-focus\": true,\n debounce: 0,\n \"fit-input-width\": false,\n placement: \"bottom-start\",\n onFocus: $options.handleFocus,\n onBlur: $options.handleBlur,\n onSelect: $options.handleSelect\n }, null, 8, [\"modelValue\", \"popper-class\", \"placeholder\", \"fetch-suggestions\", \"onFocus\", \"onBlur\", \"onSelect\"]);\n}","import \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nimport \"core-js/modules/es.iterator.for-each.js\";\nimport \"core-js/modules/es.iterator.map.js\";\nimport axios from '@/utils/axios';\nexport default {\n name: 'DirectorySuggestionInput',\n props: {\n modelValue: {\n type: String,\n default: ''\n },\n placeholder: {\n type: String,\n default: '上传目录'\n }\n },\n emits: ['update:modelValue', 'focus', 'blur', 'select'],\n data() {\n return {\n directoryTreeRoot: null,\n directoryTreeLoaded: false,\n directoryTreeLoading: false,\n directoryChildrenMap: {},\n focusTime: null,\n showSuggestions: false,\n isFocused: false\n };\n },\n computed: {\n inputValue: {\n get() {\n return this.modelValue;\n },\n set(val) {\n this.$emit('update:modelValue', val);\n }\n }\n },\n methods: {\n handleFocus() {\n this.isFocused = true;\n this.focusTime = Date.now();\n this.showSuggestions = false;\n setTimeout(() => {\n if (this.isFocused) {\n this.showSuggestions = true;\n // 输入框 width 过渡动画可能尚未完全结束,\n // 延迟一帧让 popper 重新计算定位,避免错位\n this.$nextTick(() => {\n // 额外等 50ms 确保 CSS 过渡完成\n setTimeout(() => {\n this.updatePopperPosition();\n }, 50);\n });\n }\n }, 400);\n this.ensureDirectoryTreeLoaded();\n this.$emit('focus');\n },\n handleBlur() {\n this.isFocused = false;\n this.showSuggestions = false;\n this.$emit('blur');\n },\n handleSelect(item) {\n const path = item?.value || '';\n this.$emit('select', path);\n\n // 选中某级目录后,仅当存在下级子目录时才保持下拉框开启\n const normalizedPath = this.normalizeDirectoryPath(path);\n const children = this.directoryChildrenMap[normalizedPath];\n if (children && children.length > 0) {\n setTimeout(() => {\n const inputEl = this.$refs.autocompleteRef?.inputRef?.input;\n if (inputEl) {\n inputEl.focus();\n inputEl.dispatchEvent(new Event('input'));\n this.showSuggestions = true;\n }\n }, 50);\n }\n },\n normalizeDirectoryPath(path) {\n if (!path) {\n return '/';\n }\n let normalized = path;\n if (!normalized.startsWith('/')) {\n normalized = '/' + normalized;\n }\n if (normalized !== '/' && !normalized.endsWith('/')) {\n normalized += '/';\n }\n return normalized;\n },\n buildDirectoryChildrenMap(treeRoot) {\n const map = {};\n const walk = node => {\n const parentPath = this.normalizeDirectoryPath(node.path);\n const children = Array.isArray(node.children) ? node.children : [];\n map[parentPath] = children.map(child => ({\n name: child.name,\n path: this.normalizeDirectoryPath(child.path)\n }));\n children.forEach(walk);\n };\n walk(treeRoot);\n this.directoryChildrenMap = map;\n },\n async ensureDirectoryTreeLoaded() {\n if (this.directoryTreeLoaded || this.directoryTreeLoading) {\n return;\n }\n this.directoryTreeLoading = true;\n try {\n const response = await axios.get('/api/directoryTree', {\n withAuthCode: true\n });\n const tree = response?.data?.tree;\n if (tree) {\n this.directoryTreeRoot = tree;\n this.buildDirectoryChildrenMap(tree);\n this.directoryTreeLoaded = true;\n }\n } catch (error) {\n console.error('Failed to load directory tree for autocomplete:', error);\n } finally {\n this.directoryTreeLoading = false;\n }\n },\n parseDirectoryQuery(value) {\n const normalizedInput = value && value.startsWith('/') ? value : `/${value || ''}`;\n const raw = normalizedInput.slice(1);\n const parts = raw.split('/');\n const segmentInput = parts[parts.length - 1] || '';\n const parentSegments = parts.slice(0, -1).filter(Boolean);\n const parentPath = parentSegments.length > 0 ? `/${parentSegments.join('/')}/` : '/';\n return {\n segmentInput,\n parentPath\n };\n },\n getDirectorySuggestions(queryString) {\n const {\n segmentInput,\n parentPath\n } = this.parseDirectoryQuery(queryString);\n const parentChildren = this.directoryChildrenMap[parentPath] || [];\n if (!segmentInput) {\n return parentChildren.slice(0, 10).map(item => ({\n value: item.path\n }));\n }\n const keyword = segmentInput.toLowerCase();\n const matched = parentChildren.filter(item => item.name.toLowerCase().startsWith(keyword)).map(item => ({\n value: item.path\n }));\n return matched.slice(0, 10);\n },\n async querySuggestions(queryString, callback) {\n await this.ensureDirectoryTreeLoaded();\n let waitTime = 0;\n if (this.focusTime) {\n const elapsed = Date.now() - this.focusTime;\n if (elapsed < 400) {\n waitTime = 400 - elapsed;\n }\n }\n if (waitTime > 0) {\n setTimeout(() => {\n callback(this.getDirectorySuggestions(queryString));\n }, waitTime);\n } else {\n callback(this.getDirectorySuggestions(queryString));\n }\n },\n updatePopperPosition() {\n try {\n const popperRef = this.$refs.autocompleteRef?.popperRef;\n if (popperRef?.popperInstanceRef) {\n popperRef.popperInstanceRef.update();\n }\n } catch {\n // ignore\n }\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./DirectorySuggestionInput.vue?vue&type=template&id=cedd90b2&scoped=true\"\nimport script from \"./DirectorySuggestionInput.vue?vue&type=script&lang=js\"\nexport * from \"./DirectorySuggestionInput.vue?vue&type=script&lang=js\"\n\nimport \"./DirectorySuggestionInput.vue?vue&type=style&index=0&id=cedd90b2&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-cedd90b2\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, createElementBlock as _createElementBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"container\"\n};\nconst _hoisted_2 = {\n class: \"upload-home\"\n};\nconst _hoisted_3 = {\n href: \"https://cfbed.sanyue.de/qa/\",\n target: \"_blank\",\n class: \"info-container\"\n};\nconst _hoisted_4 = {\n class: \"toolbar-manage\"\n};\nconst _hoisted_5 = {\n class: \"toolbar\"\n};\nconst _hoisted_6 = {\n class: \"header\"\n};\nconst _hoisted_7 = {\n class: \"title\"\n};\nconst _hoisted_8 = {\n class: \"main-title\",\n href: \"https://github.com/MarSeventh/CloudFlare-ImgBed\",\n target: \"_blank\"\n};\nconst _hoisted_9 = {\n class: \"dialog-section\"\n};\nconst _hoisted_10 = {\n class: \"section-content\"\n};\nconst _hoisted_11 = {\n class: \"dialog-section\"\n};\nconst _hoisted_12 = {\n class: \"section-header\"\n};\nconst _hoisted_13 = {\n class: \"section-content\"\n};\nconst _hoisted_14 = {\n class: \"setting-item\"\n};\nconst _hoisted_15 = {\n key: 0,\n class: \"setting-item\"\n};\nconst _hoisted_16 = {\n class: \"dialog-action\"\n};\nconst _hoisted_17 = [\"innerHTML\"];\nconst _hoisted_18 = {\n class: \"dialog-footer\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_ToggleDark = _resolveComponent(\"ToggleDark\");\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n const _component_DirectorySuggestionInput = _resolveComponent(\"DirectorySuggestionInput\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_DirectoryTreePicker = _resolveComponent(\"DirectoryTreePicker\");\n const _component_el_dropdown_item = _resolveComponent(\"el-dropdown-item\");\n const _component_el_dropdown_menu = _resolveComponent(\"el-dropdown-menu\");\n const _component_el_dropdown = _resolveComponent(\"el-dropdown\");\n const _component_Logo = _resolveComponent(\"Logo\");\n const _component_UploadForm = _resolveComponent(\"UploadForm\");\n const _component_el_radio = _resolveComponent(\"el-radio\");\n const _component_el_radio_group = _resolveComponent(\"el-radio-group\");\n const _component_el_switch = _resolveComponent(\"el-switch\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n const _component_UploadSettingsDialog = _resolveComponent(\"UploadSettingsDialog\");\n const _component_Footer = _resolveComponent(\"Footer\");\n const _component_UploadHistory = _resolveComponent(\"UploadHistory\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createElementVNode(\"div\", _hoisted_2, [_createVNode(_component_ToggleDark, {\n class: \"toggle-dark-button desktop-only\"\n }), _createVNode(_component_el_tooltip, {\n content: \"查看文档\",\n placement: \"bottom\",\n disabled: $options.disableTooltip\n }, {\n default: _withCtx(() => [_createElementVNode(\"a\", _hoisted_3, [_createVNode(_component_font_awesome_icon, {\n icon: \"book\",\n class: \"info-icon\",\n size: \"lg\"\n })])]),\n _: 1\n }, 8, [\"disabled\"]), _createElementVNode(\"div\", {\n class: _normalizeClass([\"upload-folder-container\", {\n 'no-announcement': !$options.announcementAvailable\n }])\n }, [_createElementVNode(\"div\", {\n class: _normalizeClass([\"upload-folder\", {\n 'active': $data.isFolderInputActive\n }])\n }, [$options.showDirectorySuggestions ? (_openBlock(), _createBlock(_component_DirectorySuggestionInput, {\n key: 0,\n modelValue: $data.uploadFolder,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.uploadFolder = $event),\n class: \"inner-folder-input\",\n placeholder: \"上传目录\",\n onFocus: $options.handleFolderInputFocus,\n onBlur: $options.handleFolderInputBlur,\n onSelect: $options.handleDirectorySelect\n }, null, 8, [\"modelValue\", \"onFocus\", \"onBlur\", \"onSelect\"])) : (_openBlock(), _createBlock(_component_el_input, {\n key: 1,\n class: \"inner-folder-input\",\n modelValue: $data.uploadFolder,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $data.uploadFolder = $event),\n placeholder: \"上传目录\",\n onFocus: $options.handleFolderInputFocus,\n onBlur: $options.handleFolderInputBlur\n }, null, 8, [\"modelValue\", \"onFocus\", \"onBlur\"]))], 2), $options.showDirectorySuggestions ? (_openBlock(), _createBlock(_component_DirectoryTreePicker, {\n key: 0,\n \"current-directory\": $data.uploadFolder,\n source: \"upload\",\n onSelect: $options.handleDirectorySelect\n }, {\n trigger: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"directory-tree-trigger\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"folder-tree\"\n })]),\n _: 1\n })]),\n _: 1\n }, 8, [\"current-directory\", \"onSelect\"])) : _createCommentVNode(\"\", true)], 2), _createVNode(_component_el_tooltip, {\n content: \"切换上传方式\",\n placement: \"bottom\",\n disabled: $options.disableTooltip\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"upload-method-button desktop-only\",\n onClick: $options.handleChangeUploadMethod\n }, {\n default: _withCtx(() => [$data.uploadMethod === 'default' ? (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 0,\n icon: \"folder-open\",\n class: \"upload-method-icon\",\n size: \"lg\"\n })) : $data.uploadMethod === 'paste' ? (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 1,\n icon: \"paste\",\n class: \"upload-method-icon\",\n size: \"lg\"\n })) : _createCommentVNode(\"\", true)]),\n _: 1\n }, 8, [\"onClick\"])]),\n _: 1\n }, 8, [\"disabled\"]), _createVNode(_component_el_tooltip, {\n content: \"上传记录\",\n placement: \"bottom\",\n disabled: $options.disableTooltip\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"history-button desktop-only\",\n onClick: _cache[2] || (_cache[2] = $event => $data.showHistory = true)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"history\",\n class: \"history-icon\",\n size: \"lg\"\n })]),\n _: 1\n })]),\n _: 1\n }, 8, [\"disabled\"]), $options.announcementAvailable ? (_openBlock(), _createBlock(_component_el_tooltip, {\n key: 0,\n content: \"查看公告\",\n placement: \"bottom\",\n disabled: $options.disableTooltip\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"announcement-button desktop-only\",\n onClick: $options.handleShowAnnouncement\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"bullhorn\",\n class: \"announcement-icon\",\n size: \"lg\"\n })]),\n _: 1\n }, 8, [\"onClick\"])]),\n _: 1\n }, 8, [\"disabled\"])) : _createCommentVNode(\"\", true), _createVNode(_component_el_dropdown, {\n class: \"mobile-more-dropdown mobile-only\",\n trigger: \"click\",\n onCommand: $options.handleMobileMenuCommand\n }, {\n dropdown: _withCtx(() => [_createVNode(_component_el_dropdown_menu, null, {\n default: _withCtx(() => [_createVNode(_component_el_dropdown_item, {\n command: \"toggleTheme\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: $options.getThemeIcon(),\n style: {\n \"margin-right\": \"8px\"\n }\n }, null, 8, [\"icon\"]), _createTextVNode(\" \" + _toDisplayString($options.getThemeText()), 1)]),\n _: 1\n }), _createVNode(_component_el_dropdown_item, {\n command: \"toggleUploadMethod\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: $data.uploadMethod === 'default' ? 'paste' : 'folder-open',\n style: {\n \"margin-right\": \"8px\"\n }\n }, null, 8, [\"icon\"]), _createTextVNode(\" \" + _toDisplayString($data.uploadMethod === 'default' ? '粘贴上传' : '文件上传'), 1)]),\n _: 1\n }), _createVNode(_component_el_dropdown_item, {\n command: \"showHistory\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"history\",\n style: {\n \"margin-right\": \"8px\"\n }\n }), _cache[22] || (_cache[22] = _createTextVNode(\" 上传记录 \", -1))]),\n _: 1\n }), _createVNode(_component_el_dropdown_item, {\n command: \"showAnnouncement\",\n disabled: !$options.announcementAvailable\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"bullhorn\",\n style: {\n \"margin-right\": \"8px\"\n }\n }), _cache[23] || (_cache[23] = _createTextVNode(\" 查看公告 \", -1))]),\n _: 1\n }, 8, [\"disabled\"])]),\n _: 1\n })]),\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"mobile-more-button\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"ellipsis-v\",\n size: \"lg\"\n })]),\n _: 1\n })]),\n _: 1\n }, 8, [\"onCommand\"]), _createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_button, {\n class: _normalizeClass([\"toolbar-manage-button\", {\n 'active': $data.isToolBarOpen\n }]),\n size: \"large\",\n onClick: $options.handleOpenToolbar,\n circle: \"\"\n }, {\n default: _withCtx(() => [!$data.isToolBarOpen ? (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 0,\n icon: \"bars\",\n class: \"manage-icon\",\n size: \"lg\"\n })) : (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 1,\n icon: \"times\",\n class: \"manage-icon\",\n size: \"lg\"\n }))]),\n _: 1\n }, 8, [\"class\", \"onClick\"])]), _createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: \"上传设置\",\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: _normalizeClass([\"toolbar-button compress-button\", {\n 'active': $data.isToolBarOpen\n }]),\n size: \"large\",\n onClick: $options.openCompressDialog,\n circle: \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"cloud-upload\",\n class: \"compress-icon\",\n size: \"lg\"\n })]),\n _: 1\n }, 8, [\"class\", \"onClick\"])]),\n _: 1\n }, 8, [\"disabled\"]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: \"链接格式\",\n placement: \"left\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: _normalizeClass([\"toolbar-button link-button\", {\n 'active': $data.isToolBarOpen\n }]),\n size: \"large\",\n onClick: $options.openUrlDialog,\n circle: \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"link\",\n class: \"link-icon\",\n size: \"lg\"\n })]),\n _: 1\n }, 8, [\"class\", \"onClick\"])]),\n _: 1\n }, 8, [\"disabled\"]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: \"系统管理\",\n placement: \"left\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: _normalizeClass([\"toolbar-button config-button\", {\n 'active': $data.isToolBarOpen\n }]),\n size: \"large\",\n onClick: $options.handleManage,\n circle: \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"cog\",\n class: \"config-icon\",\n size: \"lg\"\n })]),\n _: 1\n }, 8, [\"class\", \"onClick\"])]),\n _: 1\n }, 8, [\"disabled\"]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: \"退出登录\",\n placement: \"left\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: _normalizeClass([\"toolbar-button sign-out-button\", {\n 'active': $data.isToolBarOpen\n }]),\n size: \"large\",\n onClick: $options.handleLogout,\n circle: \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"sign-out-alt\",\n class: \"sign-out-icon\",\n size: \"lg\"\n })]),\n _: 1\n }, 8, [\"class\", \"onClick\"])]),\n _: 1\n }, 8, [\"disabled\"])]), _createVNode(_component_Logo, {\n useConfigLink: true\n }), _createElementVNode(\"div\", _hoisted_6, [_createElementVNode(\"h1\", _hoisted_7, [_createElementVNode(\"a\", _hoisted_8, _toDisplayString($options.ownerName), 1), _cache[24] || (_cache[24] = _createTextVNode(\" ImgHub\", -1))])]), _createVNode(_component_UploadForm, {\n selectedUrlForm: $data.selectedUrlForm,\n customerCompress: $data.customerCompress,\n compressQuality: $data.compressQuality,\n compressBar: $data.compressBar,\n serverCompress: $data.serverCompress,\n uploadChannel: $data.uploadChannel,\n channelName: $data.channelName,\n uploadNameType: $data.uploadNameType,\n useCustomUrl: $data.useCustomUrl,\n customUrlPrefix: $data.customUrlPrefix,\n autoRetry: $data.autoRetry,\n urlPrefix: $options.urlPrefix,\n uploadMethod: $data.uploadMethod,\n uploadFolder: $data.uploadFolder,\n convertToWebp: $data.convertToWebp,\n class: \"upload\"\n }, null, 8, [\"selectedUrlForm\", \"customerCompress\", \"compressQuality\", \"compressBar\", \"serverCompress\", \"uploadChannel\", \"channelName\", \"uploadNameType\", \"useCustomUrl\", \"customUrlPrefix\", \"autoRetry\", \"urlPrefix\", \"uploadMethod\", \"uploadFolder\", \"convertToWebp\"]), _createVNode(_component_el_dialog, {\n title: \"链接格式设置\",\n modelValue: $data.showUrlDialog,\n \"onUpdate:modelValue\": _cache[7] || (_cache[7] = $event => $data.showUrlDialog = $event),\n width: $options.dialogWidth,\n \"show-close\": false,\n class: \"settings-dialog\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_9, [_cache[29] || (_cache[29] = _createElementVNode(\"div\", {\n class: \"section-header\"\n }, [_createElementVNode(\"span\", {\n class: \"section-title\"\n }, \"默认复制链接\")], -1)), _createElementVNode(\"div\", _hoisted_10, [_createVNode(_component_el_radio_group, {\n modelValue: $data.selectedUrlForm,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $data.selectedUrlForm = $event),\n onChange: $options.changeUrlForm,\n class: \"radio-card-group grid-2x2\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_radio, {\n value: \"url\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"link\",\n class: \"radio-icon\"\n }), _cache[25] || (_cache[25] = _createElementVNode(\"span\", null, \"原始链接\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n value: \"md\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"code\",\n class: \"radio-icon\"\n }), _cache[26] || (_cache[26] = _createElementVNode(\"span\", null, \"MarkDown\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n value: \"html\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"code-branch\",\n class: \"radio-icon\"\n }), _cache[27] || (_cache[27] = _createElementVNode(\"span\", null, \"HTML\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n value: \"ubb\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"quote-right\",\n class: \"radio-icon\"\n }), _cache[28] || (_cache[28] = _createElementVNode(\"span\", null, \"BBCode\", -1))]),\n _: 1\n })]),\n _: 1\n }, 8, [\"modelValue\", \"onChange\"])])]), _createElementVNode(\"div\", _hoisted_11, [_createElementVNode(\"div\", _hoisted_12, [_cache[30] || (_cache[30] = _createElementVNode(\"span\", {\n class: \"section-title\"\n }, \"自定义链接\", -1)), _createVNode(_component_el_tooltip, {\n content: \"默认链接为https://your.domain/file/xxx.jpg
如果启用自定义链接格式,只保留xxx.jpg部分,其他部分请自行输入\",\n placement: \"top\",\n \"raw-content\": \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"section-help-icon\"\n })]),\n _: 1\n })]), _createElementVNode(\"div\", _hoisted_13, [_createElementVNode(\"div\", _hoisted_14, [_cache[31] || (_cache[31] = _createElementVNode(\"span\", {\n class: \"setting-label\"\n }, \"启用自定义\", -1)), _createVNode(_component_el_switch, {\n modelValue: $data.useCustomUrl,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = $event => $data.useCustomUrl = $event),\n \"active-value\": \"true\",\n \"inactive-value\": \"false\"\n }, null, 8, [\"modelValue\"])]), $data.useCustomUrl === 'true' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_15, [_cache[32] || (_cache[32] = _createElementVNode(\"span\", {\n class: \"setting-label\"\n }, \"自定义前缀\", -1)), _createVNode(_component_el_input, {\n modelValue: $data.customUrlPrefix,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $data.customUrlPrefix = $event),\n placeholder: \"请输入自定义链接前缀\",\n class: \"setting-input\"\n }, null, 8, [\"modelValue\"])])) : _createCommentVNode(\"\", true)])]), _createElementVNode(\"div\", _hoisted_16, [_createVNode(_component_el_button, {\n type: \"primary\",\n onClick: _cache[6] || (_cache[6] = $event => $data.showUrlDialog = false),\n class: \"confirm-btn\"\n }, {\n default: _withCtx(() => [...(_cache[33] || (_cache[33] = [_createTextVNode(\"确定\", -1)]))]),\n _: 1\n })])]),\n _: 1\n }, 8, [\"modelValue\", \"width\"]), _createVNode(_component_UploadSettingsDialog, {\n modelValue: $data.showCompressDialog,\n \"onUpdate:modelValue\": _cache[8] || (_cache[8] = $event => $data.showCompressDialog = $event),\n uploadChannel: $data.uploadChannel,\n \"onUpdate:uploadChannel\": _cache[9] || (_cache[9] = $event => $data.uploadChannel = $event),\n channelName: $data.channelName,\n \"onUpdate:channelName\": _cache[10] || (_cache[10] = $event => $data.channelName = $event),\n currentChannelList: $options.currentChannelList,\n uploadFolder: $data.uploadFolder,\n \"onUpdate:uploadFolder\": _cache[11] || (_cache[11] = $event => $data.uploadFolder = $event),\n autoRetry: $data.autoRetry,\n \"onUpdate:autoRetry\": _cache[12] || (_cache[12] = $event => $data.autoRetry = $event),\n uploadNameType: $data.uploadNameType,\n \"onUpdate:uploadNameType\": _cache[13] || (_cache[13] = $event => $data.uploadNameType = $event),\n convertToWebp: $data.convertToWebp,\n \"onUpdate:convertToWebp\": _cache[14] || (_cache[14] = $event => $data.convertToWebp = $event),\n customerCompress: $data.customerCompress,\n \"onUpdate:customerCompress\": _cache[15] || (_cache[15] = $event => $data.customerCompress = $event),\n compressBar: $data.compressBar,\n \"onUpdate:compressBar\": _cache[16] || (_cache[16] = $event => $data.compressBar = $event),\n compressQuality: $data.compressQuality,\n \"onUpdate:compressQuality\": _cache[17] || (_cache[17] = $event => $data.compressQuality = $event),\n serverCompress: $data.serverCompress,\n \"onUpdate:serverCompress\": _cache[18] || (_cache[18] = $event => $data.serverCompress = $event)\n }, null, 8, [\"modelValue\", \"uploadChannel\", \"channelName\", \"currentChannelList\", \"uploadFolder\", \"autoRetry\", \"uploadNameType\", \"convertToWebp\", \"customerCompress\", \"compressBar\", \"compressQuality\", \"serverCompress\"])]), _createVNode(_component_Footer, {\n class: \"footer\"\n }), _createVNode(_component_el_dialog, {\n title: \"公告\",\n modelValue: $data.showAnnouncementDialog,\n \"onUpdate:modelValue\": _cache[20] || (_cache[20] = $event => $data.showAnnouncementDialog = $event),\n width: $options.dialogWidth,\n \"show-close\": false,\n \"close-on-click-modal\": false,\n \"close-on-press-escape\": false,\n center: \"\"\n }, {\n footer: _withCtx(() => [_createElementVNode(\"span\", _hoisted_18, [_createVNode(_component_el_button, {\n type: \"primary\",\n onClick: _cache[19] || (_cache[19] = $event => $data.showAnnouncementDialog = false)\n }, {\n default: _withCtx(() => [...(_cache[34] || (_cache[34] = [_createTextVNode(\"我已知晓!\", -1)]))]),\n _: 1\n })])]),\n default: _withCtx(() => [_createElementVNode(\"div\", {\n innerHTML: $data.announcementContent\n }, null, 8, _hoisted_17)]),\n _: 1\n }, 8, [\"modelValue\", \"width\"]), _createVNode(_component_UploadHistory, {\n show: $data.showHistory,\n onClose: _cache[21] || (_cache[21] = $event => $data.showHistory = false)\n }, null, 8, [\"show\"])]);\n}","import \"core-js/modules/es.array.push.js\";\nimport \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.for-each.js\";\nimport \"core-js/modules/es.iterator.some.js\";\nimport UploadForm from '@/components/upload/UploadForm.vue';\nimport Footer from '@/components/Footer.vue';\nimport ToggleDark from '@/components/ToggleDark.vue';\nimport Logo from '@/components/Logo.vue';\nimport UploadHistory from '@/components/upload/UploadHistory.vue';\nimport UploadSettingsDialog from '@/components/upload/UploadSettingsDialog.vue';\nimport DirectoryTreePicker from '@/components/DirectoryTreePicker.vue';\nimport DirectorySuggestionInput from '@/components/DirectorySuggestionInput.vue';\nimport backgroundManager from '@/mixins/backgroundManager';\nimport axios from '@/utils/axios';\nimport { ref } from 'vue';\nimport cookies from 'vue-cookies';\nimport { mapGetters } from 'vuex';\nimport { validateFolderPath } from '@/utils/pathValidator';\nexport default {\n name: 'UploadHome',\n mixins: [backgroundManager],\n data() {\n return {\n selectedUrlForm: ref(''),\n showUrlDialog: false,\n showCompressDialog: false,\n customerCompress: true,\n //上传前压缩\n compressQuality: 4,\n //压缩后大小\n compressBar: 5,\n //压缩阈值\n convertToWebp: false,\n //转换为WebP格式\n serverCompress: true,\n //服务器端压缩\n uploadChannel: '',\n //上传渠道\n channelName: '',\n //指定的渠道名称\n availableChannels: {},\n //可用渠道列表\n uploadNameType: '',\n //上传文件命名方式\n customUrlPrefix: '',\n //自定义链接前缀\n useCustomUrl: 'false',\n //是否启用自定义链接格式\n autoRetry: true,\n //失败自动切换\n useDefaultWallPaper: false,\n isToolBarOpen: false,\n //是否打开工具栏\n uploadMethod: 'default',\n //上传方式\n uploadFolder: '',\n // 上传文件夹\n isFolderInputActive: false,\n showAnnouncementDialog: false,\n // 控制公告弹窗的显示\n announcementContent: '',\n // 公告内容\n showHistory: false,\n themeMode: 'auto' // 主题模式:light, dark, auto\n };\n },\n watch: {\n customerCompress(val) {\n this.updateCompressConfig('customerCompress', val);\n },\n compressQuality(val) {\n this.updateCompressConfig('compressQuality', val);\n },\n compressBar(val) {\n // 确保值在有效范围内\n if (val === null || val === undefined || val < 1) {\n this.compressBar = 1;\n return;\n }\n // 确保期望大小不超过压缩阈值\n if (this.compressQuality > val) {\n this.compressQuality = val;\n }\n this.updateCompressConfig('compressBar', val);\n },\n serverCompress(val) {\n this.updateCompressConfig('serverCompress', val);\n },\n convertToWebp(val) {\n this.updateCompressConfig('convertToWebp', val);\n },\n uploadChannel(val) {\n this.updateStoreUploadChannel(val);\n // 切换渠道类型时,检查持久化的渠道名是否在新渠道列表中\n const newChannelList = this.availableChannels[val] || [];\n const savedChannelName = this.storeChannelName;\n if (savedChannelName && newChannelList.some(ch => ch.name === savedChannelName)) {\n // 持久化的渠道名在新渠道列表中,恢复它\n this.channelName = savedChannelName;\n } else {\n // 否则清空\n this.channelName = '';\n }\n },\n channelName(val) {\n // 确保清空时保存空字符串而不是null\n this.$store.commit('setStoreChannelName', val || '');\n },\n uploadNameType(val) {\n this.updateStoreUploadNameType(val);\n },\n customUrlPrefix(val) {\n this.$store.commit('setCustomUrlSettings', {\n key: 'customUrlPrefix',\n value: val\n });\n },\n useCustomUrl(val) {\n this.$store.commit('setCustomUrlSettings', {\n key: 'useCustomUrl',\n value: val\n });\n },\n autoRetry(val) {\n this.$store.commit('setStoreAutoRetry', val);\n },\n uploadFolder(val) {\n // 实时输入时用非 strict 模式,不检查末尾的单独 . 以允许继续输入如 .123\n if (this.validateUploadFolder(val, false)) {\n // 非 strict 通过后,再用 strict 模式静默检查,只有完全合法才更新 store\n const strictResult = validateFolderPath(val, {\n strict: true\n });\n if (strictResult.valid) {\n this.$store.commit('setStoreUploadFolder', val);\n }\n // strict 不通过时不更新 store,等失焦时提示并回滚\n } else {\n this.$nextTick(() => {\n this.uploadFolder = this.storeUploadFolder;\n });\n }\n }\n },\n computed: {\n ...mapGetters(['userConfig', 'uploadCopyUrlForm', 'compressConfig', 'storeUploadChannel', 'storeChannelName', 'storeUploadNameType', 'customUrlSettings', 'storeAutoRetry', 'storeUploadMethod', 'storeUploadFolder']),\n ownerName() {\n return this.userConfig?.ownerName || 'Sanyue';\n },\n dialogWidth() {\n return window.innerWidth > 768 ? '50%' : '90%';\n },\n disableTooltip() {\n return window.innerWidth < 768;\n },\n urlPrefix() {\n // 全局自定义链接前缀\n return this.userConfig?.urlPrefix || `${window.location.protocol}//${window.location.host}/file/`;\n },\n announcementAvailable() {\n return !!this.userConfig?.announcement;\n },\n // 是否显示目录候选项(从 userConfig 获取)\n showDirectorySuggestions() {\n return this.userConfig?.showDirectorySuggestions ?? false;\n },\n // 当前渠道类型对应的渠道列表\n currentChannelList() {\n return this.availableChannels[this.uploadChannel] || [];\n }\n },\n mounted() {\n // 初始化背景图,启用自动创建元素\n this.initializeBackground('uploadBkImg', '.container', false, true);\n\n // 读取用户选择的链接格式\n this.selectedUrlForm = this.uploadCopyUrlForm || 'url';\n // 读取用户选择的压缩设置(优先用户设置,其次系统默认配置)\n this.customerCompress = this.compressConfig.customerCompress ?? this.parseBoolean(this.userConfig?.defaultCustomerCompress, true);\n this.compressQuality = this.compressConfig.compressQuality ?? this.parseNumber(this.userConfig?.defaultCompressQuality, 4);\n this.compressBar = this.compressConfig.compressBar ?? this.parseNumber(this.userConfig?.defaultCompressBar, 5);\n this.serverCompress = this.compressConfig.serverCompress ?? true;\n this.convertToWebp = this.compressConfig.convertToWebp ?? this.parseBoolean(this.userConfig?.defaultConvertToWebp, false);\n // 读取用户选择的上传渠道\n this.uploadChannel = this.storeUploadChannel || this.userConfig?.defaultUploadChannel || 'telegram';\n // 用户定义的失败自动切换\n this.autoRetry = this.storeAutoRetry;\n // 读取用户选择的上传文件命名方式\n this.uploadNameType = this.storeUploadNameType || this.userConfig?.defaultUploadNameType || 'default';\n // 读取用户自定义链接格式\n this.customUrlPrefix = this.customUrlSettings.customUrlPrefix;\n this.useCustomUrl = this.customUrlSettings.useCustomUrl;\n // 读取用户偏好的上传方式\n this.uploadMethod = this.storeUploadMethod;\n // 获取可用渠道列表\n this.fetchAvailableChannels();\n // 读取用户设置的上传文件夹\n this.uploadFolder = this.storeUploadFolder || this.userConfig?.defaultUploadFolder || '';\n\n // 从 Vuex store 读取主题模式状态\n const cusDarkMode = this.$store.getters.cusDarkMode;\n const useDarkMode = this.$store.getters.useDarkMode;\n if (!cusDarkMode) {\n this.themeMode = 'auto';\n } else if (useDarkMode) {\n this.themeMode = 'dark';\n } else {\n this.themeMode = 'light';\n }\n\n // 首次访问公告\n const visited = localStorage.getItem('visitedUploadHome');\n const announcement = this.userConfig?.announcement;\n if (!visited && announcement) {\n this.announcementContent = announcement;\n this.showAnnouncementDialog = true;\n localStorage.setItem('visitedUploadHome', 'true');\n }\n },\n components: {\n UploadForm,\n Footer,\n ToggleDark,\n Logo,\n UploadHistory,\n UploadSettingsDialog,\n DirectoryTreePicker,\n DirectorySuggestionInput\n },\n methods: {\n // 获取可用渠道列表\n async fetchAvailableChannels() {\n try {\n const response = await axios.get('/api/channels', {\n withAuthCode: true\n });\n if (response.data) {\n this.availableChannels = response.data;\n // 恢复渠道名称:优先持久化的值,其次系统默认配置\n const savedChannelName = this.storeChannelName;\n const defaultChannelName = this.userConfig?.defaultChannelName;\n const currentChannelList = this.availableChannels[this.uploadChannel] || [];\n\n // 如果用户主动清空过(savedChannelName === ''),则保持为空\n // 如果从未选择过(savedChannelName === null/undefined),则使用默认值\n if (savedChannelName && currentChannelList.some(ch => ch.name === savedChannelName)) {\n this.channelName = savedChannelName;\n } else if (savedChannelName === '' || savedChannelName === null || savedChannelName === undefined) {\n // 用户主动清空或从未选择,检查是否使用默认值\n if (savedChannelName !== '' && defaultChannelName && currentChannelList.some(ch => ch.name === defaultChannelName)) {\n this.channelName = defaultChannelName;\n }\n // 如果 savedChannelName === '',说明用户主动清空,保持为空\n }\n }\n } catch (error) {\n console.error('Failed to fetch available channels:', error);\n }\n },\n // 验证上传文件夹路径的合法性\n validateUploadFolder(path, strict = true) {\n // 自动补全前导 /\n if (path && !path.startsWith('/')) {\n path = '/' + path;\n this.uploadFolder = path;\n }\n const result = validateFolderPath(path, {\n strict\n });\n if (!result.valid) {\n // 将错误消息中的\"目标目录\"替换为\"上传目录\"以保持原有的提示风格\n const errorMessage = result.error.replace('目标目录', '上传目录');\n this.$message.error(errorMessage);\n return false;\n }\n return true;\n },\n handleFolderInputFocus() {\n this.isFolderInputActive = true;\n },\n handleFolderInputBlur() {\n this.isFolderInputActive = false;\n // 失焦时自动补全前导 /\n if (this.uploadFolder && !this.uploadFolder.startsWith('/')) {\n this.uploadFolder = '/' + this.uploadFolder;\n }\n // 失焦时做完整校验(包括末尾单独的 .)\n if (!this.validateUploadFolder(this.uploadFolder, true)) {\n this.$nextTick(() => {\n this.uploadFolder = this.storeUploadFolder;\n });\n }\n },\n handleManage() {\n this.$router.push('/dashboard');\n },\n // 解析布尔值\n parseBoolean(value, defaultValue) {\n if (value === undefined || value === null) return defaultValue;\n if (typeof value === 'boolean') return value;\n if (typeof value === 'string') return value === 'true';\n return defaultValue;\n },\n // 解析数字\n parseNumber(value, defaultValue) {\n if (value === undefined || value === null) return defaultValue;\n const num = parseFloat(value);\n return isNaN(num) ? defaultValue : num;\n },\n openUrlDialog() {\n this.showUrlDialog = true;\n },\n handleLogout() {\n cookies.remove('authCode');\n this.$router.push('/login');\n this.$message.success('已退出登录');\n },\n changeUrlForm() {\n this.$store.commit('setUploadCopyUrlForm', this.selectedUrlForm);\n },\n openCompressDialog() {\n this.showCompressDialog = true;\n },\n updateCompressConfig(key, value) {\n this.$store.commit('setCompressConfig', {\n key,\n value\n });\n },\n updateStoreUploadChannel(value) {\n this.$store.commit('setStoreUploadChannel', value);\n },\n updateStoreUploadNameType(value) {\n this.$store.commit('setStoreUploadNameType', value);\n },\n handleOpenToolbar() {\n this.isToolBarOpen = !this.isToolBarOpen;\n // 等过渡动画结束,向active类添加pointer-events属性,使其可以点击\n setTimeout(() => {\n const buttons = document.querySelectorAll('.toolbar-button');\n buttons.forEach(button => {\n button.style.pointerEvents = this.isToolBarOpen ? 'auto' : 'none';\n });\n }, 300);\n },\n handleChangeUploadMethod() {\n this.uploadMethod = this.uploadMethod === 'default' ? 'paste' : 'default';\n this.$store.commit('setUploadMethod', this.uploadMethod);\n },\n handleMobileMenuCommand(command) {\n if (command === 'toggleTheme') {\n // 循环切换:auto -> light -> dark -> auto\n if (this.themeMode === 'auto') {\n // 切换到亮色\n this.themeMode = 'light';\n this.$store.commit('setCusDarkMode', true);\n this.$store.commit('setUseDarkMode', false);\n } else if (this.themeMode === 'light') {\n // 切换到暗色\n this.themeMode = 'dark';\n this.$store.commit('setCusDarkMode', true);\n this.$store.commit('setUseDarkMode', true);\n } else {\n // 切换到自动\n this.themeMode = 'auto';\n this.$store.commit('setCusDarkMode', false);\n }\n } else if (command === 'toggleUploadMethod') {\n this.handleChangeUploadMethod();\n } else if (command === 'showHistory') {\n this.showHistory = true;\n } else if (command === 'showAnnouncement') {\n this.handleShowAnnouncement();\n }\n },\n getThemeIcon() {\n // 显示下一个模式的图标\n if (this.themeMode === 'auto') return 'sun'; // auto -> light\n if (this.themeMode === 'light') return 'moon'; // light -> dark\n return 'adjust'; // dark -> auto\n },\n getThemeText() {\n // 显示下一个模式的文字\n if (this.themeMode === 'auto') return '浅色模式';\n if (this.themeMode === 'light') return '深色模式';\n return '自动模式';\n },\n handleShowAnnouncement() {\n const announcement = this.userConfig?.announcement;\n if (announcement) {\n this.announcementContent = announcement;\n this.showAnnouncementDialog = true;\n } else {\n this.$message.info('暂无公告');\n }\n },\n // 处理目录选择\n handleDirectorySelect(path) {\n // 填入选择的目录路径\n this.uploadFolder = path;\n // 触发路径验证逻辑\n if (this.validateUploadFolder(path, true)) {\n this.$store.commit('setStoreUploadFolder', path);\n }\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./UploadHome.vue?vue&type=template&id=1db22ef8&scoped=true\"\nimport script from \"./UploadHome.vue?vue&type=script&lang=js\"\nexport * from \"./UploadHome.vue?vue&type=script&lang=js\"\n\nimport \"./UploadHome.vue?vue&type=style&index=0&id=1db22ef8&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-1db22ef8\"]])\n\nexport default __exports__","module.exports = require(\"./build/conversion.js\");\n"],"names":["async","fetchWithAuth","url","options","credentials","store","getters","btoa","headers","response","fetch","status","ElMessage","error","router","push","t","e","module","exports","this","n","r","o","i","l","call","m","c","d","Object","defineProperty","enumerable","get","Symbol","toStringTag","value","__esModule","create","bind","default","prototype","hasOwnProperty","p","s","some","a","f","g","w","b","PNG","JPEG","GIF","Promise","u","next","throw","done","then","apply","toDataURL","toBlob","split","match","atob","length","Uint8Array","charCodeAt","Blob","type","Image","onload","onerror","Error","src","document","createElement","href","window","URL","createObjectURL","download","Date","now","toString","body","appendChild","createEvent","initEvent","dispatchEvent","removeChild","FileReader","onloadend","target","result","readAsDataURL","h","assign","getContext","Number","scale","width","height","orientation","rotate","Math","PI","drawImage","translate","blob","y","quality","isNaN","size","accuracy","filter","sort","abs","pow","v","_hoisted_1","class","_hoisted_2","_hoisted_3","key","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","render","_ctx","_cache","$props","$setup","$data","$options","_component_font_awesome_icon","_component_el_button","_component_el_tree","_component_el_popover","_component_el_drawer","_directive_loading","isDesktop","visible","popoverVisible","$event","placement","trigger","transition","reference","onClick","$slots","undefined","icon","fetchDirectoryTree","_","ref","data","treeData","props","treeProps","currentDirectory","onNodeClick","handleNodeClick","node","path","expanded","name","loading","args","openDrawer","modelValue","drawerVisible","direction","title","String","source","validator","includes","children","label","windowWidth","innerWidth","computed","watch","newVal","setTimeout","$refs","treeRef","nodesMap","treeRefMobile","$nextTick","setCurrentKey","mounted","addEventListener","handleResize","beforeUnmount","removeEventListener","methods","method","ok","json","axios","withAuthCode","tree","err","console","startsWith","$emit","__exports__","validateFolderPath","strict","trim","valid","test","dotPattern","invalidChars","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_22","_hoisted_23","_hoisted_24","_hoisted_25","_hoisted_26","_hoisted_27","_hoisted_28","_hoisted_29","_hoisted_30","_hoisted_31","_hoisted_32","_component_el_tooltip","show","totalCount","content","circle","toggleViewMode","viewMode","clearHistory","historyList","onScroll","handleScroll","groupedHistory","group","date","items","item","time","isImage","onError","handleImageError","isVideo","muted","copyLink","openLink","deleteItem","formatTime","hasMore","loadingMore","spin","Boolean","allHistory","pageSize","currentPage","val","resetAndLoad","groups","forEach","dateStr","getFullYear","getMonth","padStart","getDate","keys","map","savedMode","localStorage","getItem","loadAllHistory","loadMore","history","JSON","parse","start","end","newItems","slice","container","scrollTop","scrollHeight","clientHeight","setItem","$confirm","confirmButtonText","cancelButtonText","removeItem","$message","success","catch","stringify","fileName","imageExtensions","extension","pop","toLowerCase","videoExtensions","timestamp","year","month","day","hours","getHours","minutes","getMinutes","seconds","getSeconds","navigator","clipboard","writeText","open","_component_el_radio","_component_el_radio_group","_component_el_option","_component_el_select","_component_el_input","_component_el_switch","_component_el_slider","_component_el_input_number","_component_el_dialog","dialogWidth","uploadChannel","currentChannelList","channelName","placeholder","clearable","ch","uploadFolder","handleUploadFolderInput","autoRetry","uploadNameType","convertToWebp","customerCompress","compressBar","min","max","step","compressQuality","precision","serverCompress","Array","emits","set","style","autoplay","playsinline","loop","_component_el_text","_component_el_progress","_component_Link","_component_el_icon","_component_Delete","file","truncated","truncateFilename","finalURL","readonly","selectAllText","urlSize","prepend","mdURL","htmlURL","ubbURL","percentage","progreess","IMAGE_EXTENSIONS","VIDEO_EXTENSIONS","components","Link","Delete","required","ext","filename","maxLength","lastDotIndex","lastIndexOf","substring","keepEnd","keepStart","event","message","_component_CameraFilled","_component_el_upload","_component_el_radio_button","_component_el_card","_component_List","_component_Checked","_component_Failed","_component_el_dropdown_item","_component_el_dropdown_menu","_component_el_dropdown","_component_UploadFileItem","_component_el_scrollbar","onMousemove","handleUploadCardMouseMove","onMouseleave","handleUploadCardMouseLeave","uploadMethod","uploading","fileList","drag","multiple","uploadFile","onSuccess","handleSuccess","handleError","beforeUpload","handleProgress","pastedUrls","rows","pasteCardMethodButtonSize","handleUploadPasteUrls","pasteUploadMethod","listScrolled","uploadingCount","waitingCount","uploadSuccessCount","uploadErrorCount","disabled","disableTooltip","copyAll","dropdown","autoReUpload","onChange","handleAutoRetryChange","retryError","clearFileList","clearSuccessList","reverse","onCopy","handleCopy","onRemove","handleRemove","onPreviewError","buildFileUrls","srcID","rootUrl","getUrlByFormat","format","md","html","ubb","updateFileListUrls","urls","K","Uint32Array","rotr","x","processBlock","block","H","W","s0","s1","S1","temp1","S0","maj","temp2","createSha256","buffer","bufferLength","totalLength","update","offset","needed","toCopy","subarray","digest","bitLength","fill","view","DataView","setUint32","floor","hex","computeSha256","sha256","CHUNK_SIZE","chunk","arrayBuffer","log","round","UploadFileItem","selectedUrlForm","useCustomUrl","customUrlPrefix","urlPrefix","maxUploading","exceptionList","fileListLength","uploadCount","maxRetryCount","retryTimer","retryDelay","uploadQueue","activeUploads","maxConcurrentUploads","abortControllers","Map","handler","scrollContainer","setScrollTop","deep","immediate","$store","commit","location","protocol","host","handlePaste","storeAutoReUpload","find","uid","waitingItem","uploadingItem","fileItem","uploadSingleFile","HF_DIRECT_THRESHOLD","uploadToHuggingFaceDirect","DISCORD_CHUNK_THRESHOLD","uploadFileInChunks","CHUNK_THRESHOLD","processUploadQueue","nextFile","shift","onUploadComplete","needServerCompress","abortController","AbortController","formData","FormData","append","encodeURIComponent","signal","onUploadProgress","progressEvent","percentCompleted","loaded","total","onProgress","percent","res","code","finally","delete","fileSize","totalChunks","ceil","precomputedSha256","initFormData","initResponse","uploadId","maxConcurrency","chunkProgress","nextChunkIndex","hasError","errorMsg","isCancelled","uploadChunk","chunkIndex","retryCount","maxRetries","totalPercent","reduce","warn","resolve","pool","currentIndex","all","duration","mergeFormData","closeAll","cleanupUploadResources","cleanupError","has","abort","timeout","replace","saveToHistory","newRecord","scheduleAutoRetry","reject","processedFile","canConvertToWebp","convertedFile","convertImageToWebp","toFixed","needCustomCompress","isLtLim","pushFileToQueue","fileUrl","newFile","File","myUploadCount","join","controller","clear","tagName","clipboardData","uploadFromUrl","validUrls","kind","getAsString","callback","mdUrl","htmlUrl","ubbUrl","evt","getAsFile","checkResult","text","urlPattern","post","responseType","disposition","filenameRegex","filenameStarRegex","matches","exec","decodeURIComponent","pathname","retryFailedFiles","files","clearTimeout","filesToRetry","aborted","sampleBytes","fileSample","fromCharCode","uploadInfoRes","fileType","uploadInfo","alreadyExists","needsLfs","uploadAction","header","chunk_size","uploadToHuggingFaceMultipart","uploadRes","commitRes","fullId","filePath","formattedResponse","completionUrl","chunkSize","parseInt","parts","completeParts","totalParts","part","DOMException","index","etag","partNumber","progress","completeResponse","oid","img","canvas","ctx","originalName","newName","webpFile","revokeObjectURL","glow","uploadCardGlow","rect","currentTarget","getBoundingClientRect","clientX","left","clientY","top","opacity","beforeDestroy","_component_el_autocomplete","inputValue","showSuggestions","querySuggestions","debounce","onFocus","handleFocus","onBlur","handleBlur","onSelect","handleSelect","directoryTreeRoot","directoryTreeLoaded","directoryTreeLoading","directoryChildrenMap","focusTime","isFocused","updatePopperPosition","ensureDirectoryTreeLoaded","normalizedPath","normalizeDirectoryPath","inputEl","autocompleteRef","inputRef","input","focus","Event","normalized","endsWith","buildDirectoryChildrenMap","treeRoot","walk","parentPath","isArray","child","parseDirectoryQuery","normalizedInput","raw","segmentInput","parentSegments","getDirectorySuggestions","queryString","parentChildren","keyword","matched","waitTime","elapsed","popperRef","popperInstanceRef","_component_ToggleDark","_component_DirectorySuggestionInput","_component_DirectoryTreePicker","_component_Logo","_component_UploadForm","_component_UploadSettingsDialog","_component_Footer","_component_UploadHistory","announcementAvailable","isFolderInputActive","showDirectorySuggestions","handleFolderInputFocus","handleFolderInputBlur","handleDirectorySelect","handleChangeUploadMethod","showHistory","handleShowAnnouncement","onCommand","handleMobileMenuCommand","command","getThemeIcon","getThemeText","isToolBarOpen","handleOpenToolbar","openCompressDialog","openUrlDialog","handleManage","handleLogout","useConfigLink","ownerName","showUrlDialog","changeUrlForm","showCompressDialog","showAnnouncementDialog","center","footer","innerHTML","announcementContent","onClose","mixins","backgroundManager","availableChannels","useDefaultWallPaper","themeMode","updateCompressConfig","updateStoreUploadChannel","newChannelList","savedChannelName","storeChannelName","updateStoreUploadNameType","validateUploadFolder","strictResult","storeUploadFolder","userConfig","announcement","initializeBackground","uploadCopyUrlForm","compressConfig","parseBoolean","defaultCustomerCompress","parseNumber","defaultCompressQuality","defaultCompressBar","defaultConvertToWebp","storeUploadChannel","defaultUploadChannel","storeAutoRetry","storeUploadNameType","defaultUploadNameType","customUrlSettings","storeUploadMethod","fetchAvailableChannels","defaultUploadFolder","cusDarkMode","useDarkMode","visited","UploadForm","Footer","ToggleDark","Logo","UploadHistory","UploadSettingsDialog","DirectoryTreePicker","DirectorySuggestionInput","defaultChannelName","errorMessage","$router","defaultValue","num","parseFloat","buttons","querySelectorAll","button","pointerEvents","info"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file diff --git a/js/489.0082a34f.js.map.gz b/js/489.0082a34f.js.map.gz deleted file mode 100644 index 89dbb2fe40902ceb11b35f07c24bcd9cbd65c36d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 68435 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[(0,i.bF)(H,{circle:"",onClick:V.toggleViewMode},{default:(0,i.k6)(()=>[(0,i.bF)(B,{icon:"grid"===z.viewMode?"list":"th-large"},null,8,["icon"])]),_:1},8,["onClick"])]),_:1}),(0,i.bF)(X,{content:"清空记录",placement:"bottom"},{default:(0,i.k6)(()=>[(0,i.bF)(H,{circle:"",type:"danger",onClick:V.clearHistory},{default:(0,i.k6)(()=>[(0,i.bF)(B,{icon:"trash-alt"})]),_:1},8,["onClick"])]),_:1}),(0,i.bF)(H,{circle:"",onClick:t[0]||(t[0]=t=>e.$emit("close"))},{default:(0,i.k6)(()=>[(0,i.bF)(B,{icon:"times"})]),_:1})])]),z.historyList.length>0?((0,i.uX)(),(0,i.CE)("div",{key:0,class:"history-content",ref:"historyContent",onScroll:t[3]||(t[3]=(...e)=>V.handleScroll&&V.handleScroll(...e))},[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(V.groupedHistory,e=>((0,i.uX)(),(0,i.CE)("div",{key:e.date,class:"history-group"},[(0,i.Lk)("div",u,[t[5]||(t[5]=(0,i.Lk)("div",{class:"timeline-dot"},null,-1)),(0,i.Lk)("span",p,(0,a.v_)(e.date),1)]),"grid"===z.viewMode?((0,i.uX)(),(0,i.CE)("div",h,[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(e.items,e=>((0,i.uX)(),(0,i.CE)("div",{key:e.time,class:"grid-item"},[(0,i.Lk)("div",m,[V.isImage(e.name)?((0,i.uX)(),(0,i.CE)("img",{key:0,src:e.url,loading:"lazy",onError:t[1]||(t[1]=(...e)=>V.handleImageError&&V.handleImageError(...e))},null,40,f)):V.isVideo(e.name)?((0,i.uX)(),(0,i.CE)("video",{key:1,src:e.url,muted:""},null,8,g)):((0,i.uX)(),(0,i.CE)("div",y,[(0,i.bF)(B,{icon:"file",class:"file-icon"})])),(0,i.Lk)("div",b,[(0,i.Lk)("div",C,[(0,i.bF)(H,{circle:"",size:"default",type:"primary",onClick:t=>V.copyLink(e.url)},{default:(0,i.k6)(()=>[(0,i.bF)(B,{icon:"copy"})]),_:1},8,["onClick"]),(0,i.bF)(H,{circle:"",size:"default",class:"action-btn-view",onClick:t=>V.openLink(e.url)},{default:(0,i.k6)(()=>[(0,i.bF)(B,{icon:"external-link-alt"})]),_:1},8,["onClick"]),(0,i.bF)(H,{circle:"",size:"default",type:"danger",onClick:t=>V.deleteItem(e)},{default:(0,i.k6)(()=>[(0,i.bF)(B,{icon:"trash-alt"})]),_:1},8,["onClick"])])])]),(0,i.Lk)("div",k,[(0,i.Lk)("div",{class:"file-name",title:e.name},(0,a.v_)(e.name),9,v),(0,i.Lk)("div",w,(0,a.v_)(V.formatTime(e.time)),1)])]))),128))])):((0,i.uX)(),(0,i.CE)("div",F,[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(e.items,e=>((0,i.uX)(),(0,i.CE)("div",{key:e.time,class:"list-item"},[(0,i.Lk)("div",L,[V.isImage(e.name)?((0,i.uX)(),(0,i.CE)("img",{key:0,src:e.url,loading:"lazy",onError:t[2]||(t[2]=(...e)=>V.handleImageError&&V.handleImageError(...e))},null,40,U)):V.isVideo(e.name)?((0,i.uX)(),(0,i.CE)("video",{key:1,src:e.url,muted:""},null,8,T)):((0,i.uX)(),(0,i.CE)("div",S,[(0,i.bF)(B,{icon:"file"})]))]),(0,i.Lk)("div",$,[(0,i.Lk)("div",{class:"file-name",title:e.name},(0,a.v_)(e.name),9,M),(0,i.Lk)("div",{class:"file-url",title:e.url},(0,a.v_)(e.url),9,_)]),(0,i.Lk)("div",x,[(0,i.Lk)("div",R,(0,a.v_)(V.formatTime(e.time)),1)]),(0,i.Lk)("div",E,[(0,i.bF)(H,{circle:"",size:"small",type:"primary",onClick:t=>V.copyLink(e.url)},{default:(0,i.k6)(()=>[(0,i.bF)(B,{icon:"copy"})]),_:1},8,["onClick"]),(0,i.bF)(H,{circle:"",size:"small",class:"action-btn-view",onClick:t=>V.openLink(e.url)},{default:(0,i.k6)(()=>[(0,i.bF)(B,{icon:"external-link-alt"})]),_:1},8,["onClick"]),(0,i.bF)(H,{circle:"",size:"small",type:"danger",onClick:t=>V.deleteItem(e)},{default:(0,i.k6)(()=>[(0,i.bF)(B,{icon:"trash-alt"})]),_:1},8,["onClick"])])]))),128))]))]))),128)),V.hasMore?((0,i.uX)(),(0,i.CE)("div",A,[z.loadingMore?((0,i.uX)(),(0,i.CE)("div",D,[(0,i.bF)(B,{icon:"spinner",spin:""}),t[6]||(t[6]=(0,i.Lk)("span",null,"加载中...",-1))])):((0,i.uX)(),(0,i.CE)("div",I,"下拉加载更多"))])):z.historyList.length>0?((0,i.uX)(),(0,i.CE)("div",N,"没有更多记录了")):(0,i.Q3)("",!0)],544)):((0,i.uX)(),(0,i.CE)("div",P,[(0,i.bF)(B,{icon:"history",class:"empty-icon"}),t[7]||(t[7]=(0,i.Lk)("p",null,"暂无上传记录",-1))]))],2)}o(4114),o(8111),o(2489),o(7588),o(1701),o(3110),o(8335);var z={name:"UploadHistory",props:{show:{type:Boolean,default:!1}},data(){return{historyList:[],allHistory:[],viewMode:"grid",pageSize:30,currentPage:0,loadingMore:!1,totalCount:0}},watch:{show(e){e&&this.resetAndLoad()}},computed:{hasMore(){return this.historyList.length{const o=new Date(t.time),s=`${o.getFullYear()}-${String(o.getMonth()+1).padStart(2,"0")}-${String(o.getDate()).padStart(2,"0")}`;e[s]||(e[s]=[]),e[s].push(t)}),Object.keys(e).sort((e,t)=>new Date(t)-new Date(e)).map(t=>({date:t,items:e[t]}))}},mounted(){const e=localStorage.getItem("historyViewMode");e&&(this.viewMode=e)},methods:{resetAndLoad(){this.historyList=[],this.currentPage=0,this.loadAllHistory(),this.loadMore()},loadAllHistory(){try{const e=JSON.parse(localStorage.getItem("uploadHistory")||"[]");this.allHistory=e.sort((e,t)=>t.time-e.time),this.totalCount=this.allHistory.length}catch(e){console.error("Failed to load history",e),this.allHistory=[],this.totalCount=0}},loadMore(){!this.loadingMore&&this.hasMore&&(this.loadingMore=!0,setTimeout(()=>{const e=this.currentPage*this.pageSize,t=e+this.pageSize,o=this.allHistory.slice(e,t);this.historyList=[...this.historyList,...o],this.currentPage++,this.loadingMore=!1},50))},handleScroll(e){const t=e.target,o=t.scrollTop,s=t.scrollHeight,l=t.clientHeight;s-o-l<100&&this.loadMore()},toggleViewMode(){this.viewMode="grid"===this.viewMode?"list":"grid",localStorage.setItem("historyViewMode",this.viewMode)},clearHistory(){this.$confirm("确定要清空所有上传记录吗?","提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then(()=>{this.historyList=[],this.allHistory=[],this.totalCount=0,this.currentPage=0,localStorage.removeItem("uploadHistory"),this.$message.success("记录已清空")}).catch(()=>{})},deleteItem(e){this.$confirm("确定要删除这条记录吗?","提示",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"}).then(()=>{this.historyList=this.historyList.filter(t=>t.time!==e.time),this.allHistory=this.allHistory.filter(t=>t.time!==e.time),this.totalCount=this.allHistory.length;try{localStorage.setItem("uploadHistory",JSON.stringify(this.allHistory)),this.$message.success("记录已删除")}catch(t){console.error("Failed to update history",t)}}).catch(()=>{})},isImage(e){const t=["jpg","jpeg","png","gif","bmp","webp","svg","tiff","ico","avif","heic","jfif","pjpeg","pjp"],o=e?e.split(".").pop().toLowerCase():"";return t.includes(o)},isVideo(e){const t=["mp4","webm","ogg","mkv"],o=e?e.split(".").pop().toLowerCase():"";return t.includes(o)},formatTime(e){const t=new Date(e),o=t.getFullYear(),s=String(t.getMonth()+1).padStart(2,"0"),l=String(t.getDate()).padStart(2,"0"),i=String(t.getHours()).padStart(2,"0"),a=String(t.getMinutes()).padStart(2,"0"),n=String(t.getSeconds()).padStart(2,"0");return`${o}-${s}-${l} ${i}:${a}:${n}`},copyLink(e){navigator.clipboard.writeText(e).then(()=>{this.$message.success("链接已复制")}).catch(()=>{this.$message.error("复制失败")})},openLink(e){window.open(e,"_blank")},handleImageError(e){e.target.src=o(6682)}}},V=o(1241);const B=(0,V.A)(z,[["render",W],["__scopeId","data-v-05a2ac54"]]);var H=B,X=o(6975),Q=o(9267),j=(o(5616),o(1418)),O=(o(333),o(4757)),q=o(5558),G=(o(8075),o(9623)),K=(o(6711),o(6018)),J=(o(6808),o(200),o(6810));o(4396),o(4885);const Y={class:"dialog-section"},Z={class:"section-content"},ee={class:"setting-item"},te={key:0,class:"setting-item"},oe={class:"setting-label"},se={class:"setting-item"},le={class:"setting-item"},ie={class:"setting-label"},ae={class:"dialog-section"},ne={class:"section-content"},re={class:"dialog-section"},de={class:"section-header"},ce={class:"section-content"},ue={class:"setting-item"},pe={class:"setting-label"},he={class:"setting-item"},me={key:0,class:"setting-item slider-item"},fe={class:"setting-label"},ge={class:"slider-wrapper"},ye={class:"slider-input-wrapper"},be={key:1,class:"setting-item slider-item"},Ce={class:"setting-label"},ke={class:"slider-wrapper"},ve={class:"slider-input-wrapper"},we={key:0,class:"dialog-section"},Fe={class:"section-header"},Le={class:"section-content"},Ue={class:"setting-item"},Te={class:"dialog-action"};function Se(e,t,o,a,n,r){const d=(0,i.g2)("font-awesome-icon"),c=J.ll,u=J.MQ,p=s.R7,h=K.P9,m=K.AV,f=G.WK,g=q.qi,y=O.B8,b=j.lq,C=l.S2,k=Q.kZ;return(0,i.uX)(),(0,i.Wv)(k,{title:"上传设置",modelValue:r.visible,"onUpdate:modelValue":t[12]||(t[12]=e=>r.visible=e),width:r.dialogWidth,"show-close":!1,class:"settings-dialog"},{default:(0,i.k6)(()=>[(0,i.Lk)("div",Y,[t[22]||(t[22]=(0,i.Lk)("div",{class:"section-header"},[(0,i.Lk)("span",{class:"section-title"},"上传渠道")],-1)),(0,i.Lk)("div",Z,[(0,i.Lk)("div",ee,[t[18]||(t[18]=(0,i.Lk)("span",{class:"setting-label"},"渠道类型",-1)),(0,i.bF)(u,{"model-value":o.uploadChannel,"onUpdate:modelValue":t[0]||(t[0]=t=>e.$emit("update:uploadChannel",t)),class:"radio-card-group compact"},{default:(0,i.k6)(()=>[(0,i.bF)(c,{label:"telegram",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(d,{icon:"paper-plane",class:"channel-icon"}),t[13]||(t[13]=(0,i.Lk)("span",null,"TG",-1))]),_:1}),(0,i.bF)(c,{label:"cfr2",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(d,{icon:"cloud",class:"channel-icon"}),t[14]||(t[14]=(0,i.Lk)("span",null,"R2",-1))]),_:1}),(0,i.bF)(c,{label:"s3",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(d,{icon:"database",class:"channel-icon"}),t[15]||(t[15]=(0,i.Lk)("span",null,"S3",-1))]),_:1}),(0,i.bF)(c,{label:"discord",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(d,{icon:"comments",class:"channel-icon"}),t[16]||(t[16]=(0,i.Lk)("span",null,"DC",-1))]),_:1}),(0,i.bF)(c,{label:"huggingface",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(d,{icon:"robot",class:"channel-icon"}),t[17]||(t[17]=(0,i.Lk)("span",null,"HF",-1))]),_:1})]),_:1},8,["model-value"])]),o.currentChannelList.length>1?((0,i.uX)(),(0,i.CE)("div",te,[(0,i.Lk)("span",oe,[t[19]||(t[19]=(0,i.eW)(" 渠道名称 ",-1)),(0,i.bF)(p,{content:"选择具体的渠道名称,不选择则使用负载均衡或默认渠道",placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(d,{icon:"question-circle",class:"inline-help-icon"})]),_:1})]),(0,i.bF)(m,{"model-value":o.channelName,"onUpdate:modelValue":t[1]||(t[1]=t=>e.$emit("update:channelName",t)),placeholder:"自动选择",clearable:"",class:"setting-input"},{default:(0,i.k6)(()=>[((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(o.currentChannelList,e=>((0,i.uX)(),(0,i.Wv)(h,{key:e.name,label:e.name,value:e.name},null,8,["label","value"]))),128))]),_:1},8,["model-value"])])):(0,i.Q3)("",!0),(0,i.Lk)("div",se,[t[20]||(t[20]=(0,i.Lk)("span",{class:"setting-label"},"上传目录",-1)),(0,i.bF)(f,{"model-value":o.uploadFolder,"onUpdate:modelValue":r.handleUploadFolderInput,placeholder:"请输入上传目录路径",class:"setting-input"},null,8,["model-value","onUpdate:modelValue"])]),(0,i.Lk)("div",le,[(0,i.Lk)("span",ie,[t[21]||(t[21]=(0,i.eW)(" 自动切换 ",-1)),(0,i.bF)(p,{content:"对于非分块上传文件,上传失败自动切换到其他渠道上传",placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(d,{icon:"question-circle",class:"inline-help-icon"})]),_:1})]),(0,i.bF)(g,{"model-value":o.autoRetry,"onUpdate:modelValue":t[2]||(t[2]=t=>e.$emit("update:autoRetry",t))},null,8,["model-value"])])])]),(0,i.Lk)("div",ae,[t[27]||(t[27]=(0,i.Lk)("div",{class:"section-header"},[(0,i.Lk)("span",{class:"section-title"},"文件命名方式")],-1)),(0,i.Lk)("div",ne,[(0,i.bF)(u,{"model-value":o.uploadNameType,"onUpdate:modelValue":t[3]||(t[3]=t=>e.$emit("update:uploadNameType",t)),class:"radio-card-group grid-2x2"},{default:(0,i.k6)(()=>[(0,i.bF)(c,{label:"default",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(d,{icon:"cog",class:"radio-icon"}),t[23]||(t[23]=(0,i.Lk)("span",null,"默认",-1))]),_:1}),(0,i.bF)(c,{label:"index",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(d,{icon:"hashtag",class:"radio-icon"}),t[24]||(t[24]=(0,i.Lk)("span",null,"仅前缀",-1))]),_:1}),(0,i.bF)(c,{label:"origin",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(d,{icon:"file-signature",class:"radio-icon"}),t[25]||(t[25]=(0,i.Lk)("span",null,"仅原名",-1))]),_:1}),(0,i.bF)(c,{label:"short",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(d,{icon:"compress-alt",class:"radio-icon"}),t[26]||(t[26]=(0,i.Lk)("span",null,"短链接",-1))]),_:1})]),_:1},8,["model-value"])])]),(0,i.Lk)("div",re,[(0,i.Lk)("div",de,[t[28]||(t[28]=(0,i.Lk)("span",{class:"section-title"},"文件预处理",-1)),(0,i.bF)(p,{content:"上传前在本地进行格式转换和压缩,仅对图片文件生效",placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(d,{icon:"question-circle",class:"section-help-icon"})]),_:1})]),(0,i.Lk)("div",ce,[(0,i.Lk)("div",ue,[(0,i.Lk)("span",pe,[t[29]||(t[29]=(0,i.eW)(" 转换为WebP ",-1)),(0,i.bF)(p,{content:"上传前将图片转换为WebP格式,可有效减小文件体积。转换失败时保持原格式上传",placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(d,{icon:"question-circle",class:"inline-help-icon"})]),_:1})]),(0,i.bF)(g,{"model-value":o.convertToWebp,"onUpdate:modelValue":t[4]||(t[4]=t=>e.$emit("update:convertToWebp",t))},null,8,["model-value"])]),(0,i.Lk)("div",he,[t[30]||(t[30]=(0,i.Lk)("span",{class:"setting-label"},"文件压缩",-1)),(0,i.bF)(g,{"model-value":o.customerCompress,"onUpdate:modelValue":t[5]||(t[5]=t=>e.$emit("update:customerCompress",t))},null,8,["model-value"])]),o.customerCompress?((0,i.uX)(),(0,i.CE)("div",me,[(0,i.Lk)("span",fe,[t[31]||(t[31]=(0,i.eW)(" 压缩阈值 ",-1)),(0,i.bF)(p,{content:"设置图片大小阈值,超过此值将自动压缩,单位MB",placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(d,{icon:"question-circle",class:"inline-help-icon"})]),_:1})]),(0,i.Lk)("div",ge,[(0,i.bF)(y,{"model-value":o.compressBar,"onUpdate:modelValue":t[6]||(t[6]=t=>e.$emit("update:compressBar",t)),min:1,max:20,"format-tooltip":e=>`${e} MB`},null,8,["model-value","format-tooltip"]),(0,i.Lk)("div",ye,[(0,i.bF)(b,{"model-value":o.compressBar,"onUpdate:modelValue":t[7]||(t[7]=t=>e.$emit("update:compressBar",t)),min:1,max:20,step:1,"value-on-clear":1,class:"slider-input","controls-position":"right"},null,8,["model-value"]),t[32]||(t[32]=(0,i.Lk)("span",{class:"slider-unit"},"MB",-1))])])])):(0,i.Q3)("",!0),o.customerCompress?((0,i.uX)(),(0,i.CE)("div",be,[(0,i.Lk)("span",Ce,[t[33]||(t[33]=(0,i.eW)(" 期望大小 ",-1)),(0,i.bF)(p,{content:"设置压缩后图片大小期望值,单位MB",placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(d,{icon:"question-circle",class:"inline-help-icon"})]),_:1})]),(0,i.Lk)("div",ke,[(0,i.bF)(y,{"model-value":o.compressQuality,"onUpdate:modelValue":t[8]||(t[8]=t=>e.$emit("update:compressQuality",t)),min:.5,max:o.compressBar,step:.1,"format-tooltip":e=>`${e} MB`},null,8,["model-value","max","format-tooltip"]),(0,i.Lk)("div",ve,[(0,i.bF)(b,{"model-value":o.compressQuality,"onUpdate:modelValue":t[9]||(t[9]=t=>e.$emit("update:compressQuality",t)),min:.5,max:o.compressBar,step:.1,precision:1,"value-on-clear":.5,class:"slider-input","controls-position":"right"},null,8,["model-value","max"]),t[34]||(t[34]=(0,i.Lk)("span",{class:"slider-unit"},"MB",-1))])])])):(0,i.Q3)("",!0)])]),"telegram"===o.uploadChannel?((0,i.uX)(),(0,i.CE)("div",we,[(0,i.Lk)("div",Fe,[t[35]||(t[35]=(0,i.Lk)("span",{class:"section-title"},"服务端压缩",-1)),(0,i.bF)(p,{content:"1. 在 Telegram 端进行压缩,仅对上传渠道为 Telegram 的图片文件生效
2. 若图片大小(本地压缩后大小)大于10MB,本设置自动失效
3. 若上传分辨率过大、透明背景等图片,建议关闭服务端压缩,否则可能出现未知问题",placement:"top","raw-content":""},{default:(0,i.k6)(()=>[(0,i.bF)(d,{icon:"question-circle",class:"section-help-icon"})]),_:1})]),(0,i.Lk)("div",Le,[(0,i.Lk)("div",Ue,[t[36]||(t[36]=(0,i.Lk)("span",{class:"setting-label"},"开启压缩",-1)),(0,i.bF)(g,{"model-value":o.serverCompress,"onUpdate:modelValue":t[10]||(t[10]=t=>e.$emit("update:serverCompress",t))},null,8,["model-value"])])])])):(0,i.Q3)("",!0),(0,i.Lk)("div",Te,[(0,i.bF)(C,{type:"primary",onClick:t[11]||(t[11]=e=>r.visible=!1),class:"confirm-btn"},{default:(0,i.k6)(()=>[...t[37]||(t[37]=[(0,i.eW)("确定",-1)])]),_:1})])]),_:1},8,["modelValue","width"])}var $e={name:"UploadSettingsDialog",methods:{handleUploadFolderInput(e){e&&!e.startsWith("/")&&(e="/"+e),this.$emit("update:uploadFolder",e)}},props:{modelValue:{type:Boolean,default:!1},uploadChannel:{type:String,default:"telegram"},channelName:{type:String,default:""},currentChannelList:{type:Array,default:()=>[]},uploadFolder:{type:String,default:""},autoRetry:{type:Boolean,default:!0},uploadNameType:{type:String,default:"default"},convertToWebp:{type:Boolean,default:!1},customerCompress:{type:Boolean,default:!0},compressBar:{type:Number,default:5},compressQuality:{type:Number,default:4},serverCompress:{type:Boolean,default:!0}},emits:["update:modelValue","update:uploadChannel","update:channelName","update:uploadFolder","update:autoRetry","update:uploadNameType","update:convertToWebp","update:customerCompress","update:compressBar","update:compressQuality","update:serverCompress"],computed:{visible:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}},dialogWidth(){return window.innerWidth>768?"50%":"90%"}}};const Me=(0,V.A)($e,[["render",Se]]);var _e=Me,xe=o(8559),Re=(o(5970),o(813)),Ee=(o(4896),o(9655)),Ae=(o(2893),o(4253));o(9899);const De={class:"upload-list-item"},Ie=["href"],Ne={key:0,style:{width:"10vw","border-radius":"12px"},autoplay:"",muted:"",playsinline:"",loop:""},Pe=["src"],We=["src"],ze={key:2,style:{width:"10vw","border-radius":"12px"}},Ve={class:"upload-list-item-content"},Be={class:"upload-list-item-name-wrapper"},He={key:0,class:"upload-list-item-url"},Xe={class:"upload-list-item-url-row"},Qe={class:"upload-list-item-url-row"},je={key:1,class:"upload-list-item-progress"},Oe={class:"upload-list-item-action"};function qe(e,t,o,s,l,n){const r=(0,i.g2)("font-awesome-icon"),d=Ae.$g,c=G.WK,u=Ee.ve,p=(0,i.g2)("Link"),h=Re.tk,m=(0,i.g2)("Delete");return(0,i.uX)(),(0,i.CE)("div",De,[(0,i.Lk)("a",{href:o.file.url,target:"_blank",class:"upload-list-item-preview"},[n.isVideo(o.file.name)?((0,i.uX)(),(0,i.CE)("video",Ne,[(0,i.Lk)("source",{src:o.file.url,type:"video/mp4"},null,8,Pe),t[7]||(t[7]=(0,i.eW)(" Your browser does not support the video tag. ",-1))])):n.isImage(o.file.name)?((0,i.uX)(),(0,i.CE)("img",{key:1,style:{width:"10vw","border-radius":"12px"},src:o.file.url,onError:t[0]||(t[0]=t=>e.$emit("preview-error",o.file))},null,40,We)):((0,i.uX)(),(0,i.CE)("div",ze,[(0,i.bF)(r,{icon:"file",class:"file-icon"})]))],8,Ie),(0,i.Lk)("div",Ve,[(0,i.Lk)("div",Be,[(0,i.bF)(d,{class:"upload-list-item-name",truncated:""},{default:(0,i.k6)(()=>[(0,i.eW)((0,a.v_)(n.truncateFilename(o.file.name)),1)]),_:1})]),"done"===o.file.status?((0,i.uX)(),(0,i.CE)("div",He,[(0,i.Lk)("div",Xe,[(0,i.bF)(c,{modelValue:o.file.finalURL,"onUpdate:modelValue":t[1]||(t[1]=e=>o.file.finalURL=e),readonly:"",onClick:n.selectAllText,size:n.urlSize},{prepend:(0,i.k6)(()=>[...t[8]||(t[8]=[(0,i.eW)("URL",-1)])]),_:1},8,["modelValue","onClick","size"]),(0,i.bF)(c,{modelValue:o.file.mdURL,"onUpdate:modelValue":t[2]||(t[2]=e=>o.file.mdURL=e),readonly:"",onClick:n.selectAllText,size:n.urlSize},{prepend:(0,i.k6)(()=>[...t[9]||(t[9]=[(0,i.eW)("MarkDown",-1)])]),_:1},8,["modelValue","onClick","size"])]),(0,i.Lk)("div",Qe,[(0,i.bF)(c,{modelValue:o.file.htmlURL,"onUpdate:modelValue":t[3]||(t[3]=e=>o.file.htmlURL=e),readonly:"",onClick:n.selectAllText,size:n.urlSize},{prepend:(0,i.k6)(()=>[...t[10]||(t[10]=[(0,i.eW)("HTML",-1)])]),_:1},8,["modelValue","onClick","size"]),(0,i.bF)(c,{modelValue:o.file.ubbURL,"onUpdate:modelValue":t[4]||(t[4]=e=>o.file.ubbURL=e),readonly:"",onClick:n.selectAllText,size:n.urlSize},{prepend:(0,i.k6)(()=>[...t[11]||(t[11]=[(0,i.eW)("BBCode",-1)])]),_:1},8,["modelValue","onClick","size"])])])):((0,i.uX)(),(0,i.CE)("div",je,[(0,i.bF)(u,{percentage:o.file.progreess,status:o.file.status,"show-text":!1},null,8,["percentage","status"])]))]),(0,i.Lk)("div",Oe,[(0,i.Lk)("button",{class:"modern-file-action-btn modern-file-action-btn-primary",onClick:t[5]||(t[5]=t=>e.$emit("copy",o.file))},[(0,i.bF)(h,null,{default:(0,i.k6)(()=>[(0,i.bF)(p)]),_:1})]),(0,i.Lk)("button",{class:"modern-file-action-btn modern-file-action-btn-danger",onClick:t[6]||(t[6]=t=>e.$emit("remove",o.file))},[(0,i.bF)(h,null,{default:(0,i.k6)(()=>[(0,i.bF)(m)]),_:1})])])])}var Ge=o(7477);const Ke=["jpg","jpeg","png","gif","bmp","webp","svg","tiff","ico","avif","heic","jfif","pjpeg","pjp","raw","cr2","nef","dng","eps","ai","emf","wmf"],Je=["mp4","webm","ogg","mkv"];var Ye={name:"UploadFileItem",components:{Link:Ge.Link,Delete:Ge.Delete},props:{file:{type:Object,required:!0}},emits:["copy","remove","preview-error"],computed:{urlSize(){return window.innerWidth<768?"small":"default"}},methods:{isImage(e){const t=e.split(".").pop().toLowerCase();return Ke.includes(t)},isVideo(e){const t=e.split(".").pop().toLowerCase();return Je.includes(t)},truncateFilename(e,t=20){if(!e||e.length<=t)return e;const o=e.lastIndexOf(".");let s,l;o>0?(s=e.substring(0,o),l=e.substring(o)):(s=e,l="");const i=l.length+4,a=t-i-3;return a<=0?e.substring(0,t-3)+"...":s.substring(0,a)+"..."+s.slice(-4)+l},selectAllText(e){navigator.clipboard.writeText(e.target.value).then(()=>{this.$message({type:"success",message:"复制成功"})}).catch(()=>{this.$message({type:"error",message:"复制失败"})})}}};const Ze=(0,V.A)(Ye,[["render",qe],["__scopeId","data-v-85bdebae"]]);var et=Ze,tt=o(2086),ot=(o(670),o(8830),o(3597),o(683)),st=(o(5385),o(7358));const lt={class:"upload-form"},it={class:"upload-card-glow",ref:"uploadCardGlow"},at={key:0,class:"upload-card"},nt={class:"paste-card-actions"},rt={class:"upload-list-dashboard-action"},dt={class:"modern-action-group"},ct={class:"modern-dropdown-item-content"},ut={class:"modern-action-btn modern-action-btn-danger"};function pt(e,t,n,r,d,c){const u=(0,i.g2)("CameraFilled"),p=Re.tk,h=st.j5,m=G.WK,f=l.S2,g=J.Zh,y=J.MQ,b=ot.Ik,C=(0,i.g2)("List"),k=(0,i.g2)("Checked"),v=(0,i.g2)("Failed"),w=Ae.$g,F=(0,i.g2)("font-awesome-icon"),L=s.R7,U=q.qi,T=tt.c6,S=tt.Iy,$=tt.dW,M=et,_=xe.kA;return(0,i.uX)(),(0,i.CE)("div",lt,[(0,i.Lk)("div",{class:"upload-card-wrapper",onMousemove:t[0]||(t[0]=(...e)=>c.handleUploadCardMouseMove&&c.handleUploadCardMouseMove(...e)),onMouseleave:t[1]||(t[1]=(...e)=>c.handleUploadCardMouseLeave&&c.handleUploadCardMouseLeave(...e))},[(0,i.Lk)("div",it,null,512),"default"===n.uploadMethod?((0,i.uX)(),(0,i.Wv)(h,{key:0,class:(0,a.C4)(["upload-card",{"is-uploading":d.uploading,"upload-card-busy":d.fileList.length}]),drag:"",multiple:"","http-request":c.uploadFile,onSuccess:c.handleSuccess,"on-error":c.handleError,"before-upload":c.beforeUpload,"on-progress":c.handleProgress,"file-list":d.fileList,"show-file-list":!1},{default:(0,i.k6)(()=>[(0,i.bF)(p,{class:(0,a.C4)(["el-icon--upload",{"upload-list-busy":d.fileList.length}])},{default:(0,i.k6)(()=>[(0,i.bF)(u)]),_:1},8,["class"]),(0,i.Lk)("div",{class:(0,a.C4)(["el-upload__text",{"upload-list-busy":d.fileList.length}])},[...t[8]||(t[8]=[(0,i.Lk)("em",null,"拖拽",-1),(0,i.eW)(),(0,i.Lk)("em",null,"点击",-1),(0,i.eW)(" 或 ",-1),(0,i.Lk)("em",null,"Ctrl + V",-1),(0,i.eW)(" 粘贴上传",-1)])],2)]),_:1},8,["class","http-request","onSuccess","on-error","before-upload","on-progress","file-list"])):(0,i.Q3)("",!0)],32),"paste"===n.uploadMethod?((0,i.uX)(),(0,i.CE)("div",at,[(0,i.bF)(b,{class:(0,a.C4)(["paste-card",{"is-uploading":d.uploading,"upload-card-busy":d.fileList.length}])},{default:(0,i.k6)(()=>[(0,i.bF)(m,{modelValue:d.pastedUrls,"onUpdate:modelValue":t[2]||(t[2]=e=>d.pastedUrls=e),class:"upload-card-textarea",placeholder:"粘贴外链上传,多个外链用换行分隔",type:"textarea",rows:d.fileList.length?4:14},null,8,["modelValue","rows"]),(0,i.Lk)("div",nt,[(0,i.bF)(f,{class:"paste-card-upload-button",type:"primary",size:c.pasteCardMethodButtonSize,onClick:c.handleUploadPasteUrls},{default:(0,i.k6)(()=>[...t[9]||(t[9]=[(0,i.eW)(" 上 传 ",-1)])]),_:1},8,["size","onClick"]),(0,i.bF)(y,{modelValue:d.pasteUploadMethod,"onUpdate:modelValue":t[3]||(t[3]=e=>d.pasteUploadMethod=e),class:"paste-card-method-group",size:c.pasteCardMethodButtonSize},{default:(0,i.k6)(()=>[(0,i.bF)(g,{label:"save"},{default:(0,i.k6)(()=>[...t[10]||(t[10]=[(0,i.eW)("转存",-1)])]),_:1}),(0,i.bF)(g,{label:"external"},{default:(0,i.k6)(()=>[...t[11]||(t[11]=[(0,i.eW)("外链",-1)])]),_:1})]),_:1},8,["modelValue","size"])])]),_:1},8,["class"])])):(0,i.Q3)("",!0),(0,i.bF)(b,{class:(0,a.C4)(["upload-list-card",{"upload-list-busy":d.fileList.length,"is-uploading":d.uploading}])},{default:(0,i.k6)(()=>[(0,i.Lk)("div",{class:(0,a.C4)(["upload-list-container",{"upload-list-busy":d.fileList.length}])},[(0,i.bF)(_,{onScroll:c.handleScroll,ref:"scrollContainer"},{default:(0,i.k6)(()=>[(0,i.Lk)("div",{class:(0,a.C4)(["upload-list-dashboard",{"list-scrolled":d.listScrolled}])},[(0,i.bF)(w,{class:"upload-list-dashboard-title"},{default:(0,i.k6)(()=>[(0,i.bF)(p,null,{default:(0,i.k6)(()=>[(0,i.bF)(C)]),_:1}),(0,i.eW)((0,a.v_)(c.uploadingCount+c.waitingCount)+" ",1),(0,i.bF)(p,null,{default:(0,i.k6)(()=>[(0,i.bF)(k)]),_:1}),(0,i.eW)((0,a.v_)(c.uploadSuccessCount)+" ",1),(0,i.bF)(p,null,{default:(0,i.k6)(()=>[(0,i.bF)(v)]),_:1}),(0,i.eW)((0,a.v_)(c.uploadErrorCount),1)]),_:1}),(0,i.Lk)("div",rt,[(0,i.Lk)("div",dt,[(0,i.bF)(L,{disabled:c.disableTooltip,content:"整体复制",placement:"top"},{default:(0,i.k6)(()=>[(0,i.Lk)("button",{class:"modern-action-btn",onClick:t[4]||(t[4]=(...e)=>c.copyAll&&c.copyAll(...e))},[(0,i.bF)(F,{icon:"copy"})])]),_:1},8,["disabled"]),(0,i.bF)(L,{disabled:c.disableTooltip,content:"失败重试",placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)($,null,{dropdown:(0,i.k6)(()=>[(0,i.bF)(S,{class:"modern-dropdown-menu"},{default:(0,i.k6)(()=>[(0,i.bF)(T,null,{default:(0,i.k6)(()=>[(0,i.Lk)("div",ct,[t[12]||(t[12]=(0,i.Lk)("span",null,"自动重试",-1)),(0,i.bF)(U,{modelValue:d.autoReUpload,"onUpdate:modelValue":t[6]||(t[6]=e=>d.autoReUpload=e),onChange:c.handleAutoRetryChange,size:"small"},null,8,["modelValue","onChange"])])]),_:1})]),_:1})]),default:(0,i.k6)(()=>[(0,i.Lk)("button",{class:"modern-action-btn",onClick:t[5]||(t[5]=(...e)=>c.retryError&&c.retryError(...e))},[(0,i.bF)(F,{icon:"redo"})])]),_:1})]),_:1},8,["disabled"]),(0,i.bF)(L,{disabled:c.disableTooltip,content:"清空列表",placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)($,null,{dropdown:(0,i.k6)(()=>[(0,i.bF)(S,{class:"modern-dropdown-menu"},{default:(0,i.k6)(()=>[(0,i.bF)(T,{onClick:c.clearFileList},{default:(0,i.k6)(()=>[...t[13]||(t[13]=[(0,i.eW)("清空全部",-1)])]),_:1},8,["onClick"]),(0,i.bF)(T,{onClick:c.clearSuccessList},{default:(0,i.k6)(()=>[...t[14]||(t[14]=[(0,i.eW)("清空已上传",-1)])]),_:1},8,["onClick"])]),_:1})]),default:(0,i.k6)(()=>[(0,i.Lk)("button",ut,[(0,i.bF)(F,{icon:"trash-alt"})])]),_:1})]),_:1},8,["disabled"])])])],2),((0,i.uX)(!0),(0,i.CE)(i.FK,null,(0,i.pI)(d.fileList.slice().reverse(),e=>((0,i.uX)(),(0,i.Wv)(M,{key:e.name,file:e,onCopy:c.handleCopy,onRemove:c.handleRemove,onPreviewError:t[7]||(t[7]=e=>e.url=o(6682))},null,8,["file","onCopy","onRemove"]))),128))]),_:1},8,["onScroll"])],2)]),_:1},8,["class"])])}o(6573),o(8100),o(7936),o(116),o(8237),o(9577),o(1549),o(9797),o(9631),o(5623),o(4979),o(4603),o(7566),o(8721);var ht=o(457),mt=o(6334),ft=o(8401);function gt(e,t,o){const s=o+e;return{finalURL:s,mdURL:`![${t}](${s})`,htmlURL:`${t}`,ubbURL:`[img]${s}[/img]`}}function yt(e,t){const o={url:e.finalURL,md:e.mdURL,html:e.htmlURL,ubb:e.ubbURL};return o[t]||e.finalURL}function bt(e,t){e.forEach(e=>{if("external"===e.uploadChannel)return;const o=gt(e.srcID,e.name,t);Object.assign(e,o)})}const Ct=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),kt=(e,t)=>e>>>t|e<<32-t;function vt(e,t){const o=new Uint32Array(64);for(let u=0;u<16;u++)o[u]=e[4*u]<<24|e[4*u+1]<<16|e[4*u+2]<<8|e[4*u+3];for(let u=16;u<64;u++){const e=kt(o[u-15],7)^kt(o[u-15],18)^o[u-15]>>>3,t=kt(o[u-2],17)^kt(o[u-2],19)^o[u-2]>>>10;o[u]=o[u-16]+e+o[u-7]+t>>>0}let[s,l,i,a,n,r,d,c]=t;for(let u=0;u<64;u++){const e=kt(n,6)^kt(n,11)^kt(n,25),t=n&r^~n&d,p=c+e+t+Ct[u]+o[u]>>>0,h=kt(s,2)^kt(s,13)^kt(s,22),m=s&l^s&i^l&i,f=h+m>>>0;c=d,d=r,r=n,n=a+p>>>0,a=i,i=l,l=s,s=p+f>>>0}t[0]=t[0]+s>>>0,t[1]=t[1]+l>>>0,t[2]=t[2]+i>>>0,t[3]=t[3]+a>>>0,t[4]=t[4]+n>>>0,t[5]=t[5]+r>>>0,t[6]=t[6]+d>>>0,t[7]=t[7]+c>>>0}function wt(){let e=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),t=new Uint8Array(64),o=0,s=0;return{update(l){s+=l.length;let i=0;if(o>0){const s=64-o,a=Math.min(s,l.length);t.set(l.subarray(0,a),o),o+=a,i=a,64===o&&(vt(t,e),o=0)}while(i+64<=l.length)vt(l.subarray(i,i+64),e),i+=64;i56&&(t.fill(0,o,64),vt(t,e),o=0),t.fill(0,o,56);const i=new DataView(t.buffer);i.setUint32(56,Math.floor(l/4294967296),!1),i.setUint32(60,l>>>0,!1),vt(t,e);let a="";for(let t=0;t<8;t++)a+=e[t].toString(16).padStart(8,"0");return a}}}async function Ft(e){const t=wt(),o=4194304;let s=0;while(sthis.fileListLength&&this.$nextTick(()=>{setTimeout(()=>{this.$refs.scrollContainer&&this.$refs.scrollContainer.setScrollTop(0)},100)}),this.fileListLength=this.fileList.length},deep:!0},useCustomUrl:{handler(){bt(this.fileList,this.rootUrl)},immediate:!0},customUrlPrefix:{handler(){"true"===this.useCustomUrl&&bt(this.fileList,this.rootUrl)},immediate:!0},autoReUpload(e){this.$store.commit("setStoreAutoReUpload",e)}},computed:{...(0,ft.L8)(["storeAutoReUpload"]),uploadSuccessCount(){return this.fileList.filter(e=>"done"===e.status||"success"===e.status).length},uploadErrorCount(){return this.fileList.filter(e=>"exception"===e.status).length},uploadingCount(){return this.fileList.filter(e=>"uploading"===e.status).length},waitingCount(){return this.uploadQueue.length},urlSize(){return window.innerWidth<768?"small":"default"},disableTooltip(){return window.innerWidth<768},rootUrl(){return"true"===this.useCustomUrl?this.customUrlPrefix:this.urlPrefix||`${window.location.protocol}//${window.location.host}/file/`},pasteCardMethodButtonSize(){return this.fileList.length||window.innerWidth<768?"small":"medium"}},mounted(){document.addEventListener("paste",this.handlePaste),this.autoReUpload=this.storeAutoReUpload},beforeUnmount(){document.removeEventListener("paste",this.handlePaste),this.uploadQueue=[],this.fileList=[],this.activeUploads=0},methods:{truncateFilename(e,t=20){if(!e||e.length<=t)return e;const o=e.lastIndexOf(".");let s,l;o>0?(s=e.substring(0,o),l=e.substring(o)):(s=e,l="");const i=l.length+4,a=t-i-3;return a<=0?e.substring(0,t-3)+"...":s.substring(0,a)+"..."+s.slice(-4)+l},uploadFile(e){if(!this.fileList.find(t=>t.uid===e.file.uid))return;if(this.activeUploads>=this.maxConcurrentUploads){this.uploadQueue.push(e);const t=this.fileList.find(t=>t.uid===e.file.uid);return void(t&&(t.status="waiting"))}this.activeUploads++;const t=this.fileList.find(t=>t.uid===e.file.uid);t&&(t.status="uploading");const o=this.fileList.find(t=>t.uid===e.file.uid),s=o?.uploadChannel||this.uploadChannel;if("external"===s)return void this.uploadSingleFile(e);if("huggingface"===s){const t=20971520;return void(e.file.size>=t?this.uploadToHuggingFaceDirect(e):this.uploadSingleFile(e))}if("discord"===s){const t=9437184;return void(e.file.size>t?this.uploadFileInChunks(e):this.uploadSingleFile(e))}const l=20971520;e.file.size>l?this.uploadFileInChunks(e):this.uploadSingleFile(e)},processUploadQueue(){if(0===this.uploadQueue.length||this.activeUploads>=this.maxConcurrentUploads)return;const e=this.uploadQueue.shift();e&&this.fileList.find(t=>t.uid===e.file.uid)?this.uploadFile(e):this.processUploadQueue()},onUploadComplete(){this.activeUploads=Math.max(0,this.activeUploads-1),this.processUploadQueue(),0===this.activeUploads&&0===this.uploadQueue.length&&(this.uploading=!1)},async uploadSingleFile(e){const t=this.fileList.find(t=>t.uid===e.file.uid);if(!t)return;const o=t.serverCompress,s=t.uploadChannel||this.uploadChannel,l=this.autoRetry&&"external"!==s,i="external"===s?"default":this.uploadNameType,a=new AbortController;this.abortControllers.set(e.file.uid,a);const n=new FormData;if(n.append("file",e.file),"external"===s&&n.append("url",e.file.url),"huggingface"===s)try{console.log("Computing SHA256 for HuggingFace upload...");const t=await Ft(e.file);n.append("sha256",t),console.log("SHA256 computed:",t)}catch(r){console.error("Failed to compute SHA256:",r)}(0,ht.A)({url:"/upload?serverCompress="+o+"&uploadChannel="+s+(this.channelName?"&channelName="+encodeURIComponent(this.channelName):"")+"&uploadNameType="+i+"&autoRetry="+l+"&uploadFolder="+encodeURIComponent(this.uploadFolder),method:"post",data:n,withAuthCode:!0,signal:a.signal,onUploadProgress:t=>{const o=Math.round(t.loaded/t.total*100);e.onProgress({percent:o,file:e.file})}}).then(t=>{e.onSuccess(t,e.file)}).catch(t=>{"CanceledError"!==t.name&&"ERR_CANCELED"!==t.code?t.response&&401!==t.response.status?(this.exceptionList.push(e),e.onError(t,e.file)):t.response||(this.exceptionList.push(e),e.onError(t,e.file)):console.log("上传已取消:",e.file.name)}).finally(()=>{this.abortControllers.delete(e.file.uid),this.onUploadComplete()})},async uploadFileInChunks(e){const t=this.fileList.find(t=>t.uid===e.file.uid);if(!t)return;const o=t.uploadChannel||this.uploadChannel,s=new AbortController;this.abortControllers.set(e.file.uid,s);const l="discord"===o?9437184:16777216,i=e.file.size,a=Math.ceil(i/l),n=t.serverCompress,r=this.autoRetry&&"external"!==o,d="external"===o?"default":this.uploadNameType;let c=null;if("huggingface"===o)try{console.log("Computing SHA256 for HuggingFace chunked upload..."),c=await Ft(e.file),console.log("SHA256 computed:",c)}catch(u){console.error("Failed to compute SHA256:",u)}try{const t=new FormData;t.append("originalFileName",e.file.name),t.append("originalFileType",e.file.type),t.append("totalChunks",a.toString());const p=await(0,ht.A)({url:"/upload?serverCompress="+n+"&uploadChannel="+o+(this.channelName?"&channelName="+encodeURIComponent(this.channelName):"")+"&uploadNameType="+d+"&autoRetry="+r+"&uploadFolder="+encodeURIComponent(this.uploadFolder)+"&initChunked=true",method:"post",data:t,withAuthCode:!0});if(!p.data.success)throw new Error("初始化分块上传失败: "+p.data.message);const h=p.data.uploadId;console.log("分块上传初始化成功,uploadId:",h);const m=this.fileList.find(t=>t.uid===e.file.uid);m&&(m.totalChunks=a,m.uploadId=h);const f=3,g=new Array(a).fill(0);let y=0,b=!1,C="",k=!1;const v=async t=>{if(b||k)return;const c=t*l,p=Math.min(c+l,i),m=e.file.slice(c,p),f=new FormData;f.append("file",m,`${e.file.name}.part${t.toString().padStart(3,"0")}`),f.append("chunkIndex",t.toString()),f.append("totalChunks",a.toString()),f.append("uploadId",h),f.append("originalFileName",e.file.name),f.append("originalFileType",e.file.type);let y=0;const v=3;while(y{if(b||k)return;const s=Math.round(o.loaded/o.total*100);g[t]=s;const l=Math.round(g.reduce((e,t)=>e+t,0)/a);e.onProgress({percent:l,file:e.file})}})}catch(u){if("CanceledError"===u.name||"ERR_CANCELED"===u.code)return k=!0,void console.log("分块上传已取消:",e.file.name);if(y++,console.warn(`分块 ${t+1}/${a} 上传失败 (重试 ${y}/${v}):`,u),y>=v)throw b=!0,C=`分块 ${t+1}/${a} 上传失败: ${u.message}`,new Error(C);await new Promise(e=>setTimeout(e,2e3*y))}}},w=[];for(let e=0;e{while(yt.uid===e.file.uid);t&&t.uploadId&&this.cleanupUploadResources(t.uploadId,t.totalChunks).then(()=>{console.log(`已清理分块上传失败的资源: ${t.uploadId}`)}).catch(e=>{console.warn("清理分块上传失败资源时出错:",e)}),u.response&&401!==u.response.status?(this.exceptionList.push(e),e.onError(u,e.file)):u.response||(this.exceptionList.push(e),e.onError(u,e.file))}finally{this.abortControllers.delete(e.file.uid),this.onUploadComplete()}},handleRemove(e){this.abortControllers.has(e.uid)&&(this.abortControllers.get(e.uid).abort(),this.abortControllers.delete(e.uid)),this.uploadQueue=this.uploadQueue.filter(t=>t.file.uid!==e.uid),this.fileList=this.fileList.filter(t=>t.uid!==e.uid),this.$message({type:"info",message:this.truncateFilename(e.name)+"已删除"})},async cleanupUploadResources(e,t=0){try{await(0,ht.A)({url:`/upload?cleanup=true&uploadId=${e}&totalChunks=${t}`,method:"get",withAuthCode:!0,timeout:5e3}),console.log(`清理上传资源成功: ${e}`)}catch(o){console.warn("清理上传资源失败:",o)}},handleSuccess(e,t){const o=this.fileList.find(e=>e.uid===t.uid);if(o)try{const s=o.uploadChannel||this.uploadChannel;if("external"!==s){const s=e.data[0].src.replace("/file/","");o.url=`${window.location.protocol}//${window.location.host}/file/`+s;const l=gt(s,t.name,this.rootUrl);Object.assign(o,l),o.srcID=s}o.progreess=100,o.status="success",this.saveToHistory(o),this.$message({type:"success",message:this.truncateFilename(t.name)+"上传成功"}),setTimeout(()=>{const e=this.fileList.find(e=>e.uid===t.uid);e&&(e.status="done")},1e3)}catch(s){this.$message.error(this.truncateFilename(t.name)+"上传失败"),o.status="exception"}},saveToHistory(e){try{const t=JSON.parse(localStorage.getItem("uploadHistory")||"[]"),o={name:e.name,url:e.finalURL,time:Date.now(),type:e.name.split(".").pop().toLowerCase()};t.push(o),localStorage.setItem("uploadHistory",JSON.stringify(t))}catch(t){console.error("Failed to save history",t)}},handleError(e,t){const o=this.fileList.find(e=>e.uid===t.uid);o&&(this.$message.error(this.truncateFilename(t.name)+"上传失败"),o.status="exception",this.autoReUpload&&this.scheduleAutoRetry())},handleCopy(e){const t=this.fileList.find(t=>t.uid===e.uid).status;"done"===t||"success"===t?(navigator.clipboard.writeText(yt(e,this.selectedUrlForm)),this.$message({type:"success",message:"复制成功"})):this.$message({type:"warning",message:"文件未上传成功,无法复制链接"})},beforeUpload(e){return new Promise(async(t,o)=>{let s=e;const l=this.convertToWebp&&e.type.includes("image")&&!e.type.includes("webp")&&!e.type.includes("gif")&&!e.type.includes("svg");if(l)try{const t=await this.convertImageToWebp(e);t&&(s=t,console.log(`WebP转换成功: ${e.name} -> ${t.name}, 大小: ${(e.size/1024).toFixed(1)}KB -> ${(t.size/1024).toFixed(1)}KB`))}catch(r){console.warn("WebP转换失败,使用原文件:",r)}const i=s.type.includes("image")&&this.customerCompress&&s.size/1024/1024>this.compressBar,a=s.size/1024/1024<=1024||"telegram"!==this.uploadChannel,n=(e,o)=>{const s=URL.createObjectURL(e);this.fileList.push({uid:e.uid,name:e.name,url:s,finalURL:"",mdURL:"",htmlURL:"",ubbURL:"",srcID:"",status:"uploading",progreess:0,serverCompress:o,retryCount:0}),t(e)};if(i)mt.compressAccurately(s,1024*this.compressQuality).then(t=>{t.size/1024/1024>1024&&"telegram"===this.uploadChannel&&(this.$message.error(s.name+"压缩后文件过大,无法上传!"),o("文件过大")),this.uploading=!0;const l=new File([t],s.name,{type:t.type});l.uid=e.uid;const i=this.uploadCount++,a=this.serverCompress&&l.size/1024/1024<10&&"telegram"===this.uploadChannel;0===i?n(l,a):setTimeout(()=>{n(l,a),this.uploadCount--},300*i)}).catch(e=>{this.$message.error(s.name+"压缩失败,无法上传!"),o(e)});else if(a){this.uploading=!0;const e=this.uploadCount++,t="telegram"===this.uploadChannel&&this.serverCompress&&(!s.type.includes("image")||s.size/1024/1024<10);0===e?n(s,t):setTimeout(()=>{n(s,t),this.uploadCount--},300*e)}else this.$message.error(s.name+"文件过大,无法上传!"),o("文件过大")})},handleProgress(e){const t=this.fileList.find(t=>t.uid===e.file.uid);t&&(t.progreess=e.percent)},copyAll(){const e=this.fileList.filter(e=>"done"===e.status||"success"===e.status).map(e=>yt(e,this.selectedUrlForm)).join("\n");navigator.clipboard.writeText(e),this.$message({type:"success",message:"整体复制成功"})},clearFileList(){this.fileList.length>0?(this.abortControllers.forEach((e,t)=>{e.abort()}),this.abortControllers.clear(),this.uploadQueue=[],this.fileList=[],this.$message({type:"success",message:"文件列表已清空"})):this.$message({type:"info",message:"文件列表为空"})},clearSuccessList(){this.uploadSuccessCount>0?(this.fileList=this.fileList.filter(e=>"done"!==e.status&&"success"!==e.status),this.$message({type:"success",message:"成功上传文件已清空"})):this.$message({type:"info",message:"成功上传文件为空"})},handlePaste(e){if("INPUT"===e.target.tagName||"TEXTAREA"===e.target.tagName)return;const t=e.clipboardData.items;t.length>0&&this.uploadFromUrl(t)},handleUploadPasteUrls(){const e=this.pastedUrls.split("\n"),t=e.map(e=>e.trim()).filter(e=>""!==e).filter(e=>/^(https?:\/\/[^\s$.?#].[^\s]*)$/.test(e));if("save"===this.pasteUploadMethod)this.uploadFromUrl(t.map(e=>({kind:"string",getAsString:t=>{t(e)}})));else if("external"===this.pasteUploadMethod)for(let o=0;o`,a=`[img]${e}[/img]`,n=new File([],e.split("/").pop(),{type:"text/plain"});n.uid=Date.now()+o,n.url=e,this.fileList.push({uid:n.uid,name:n.name,url:e,finalURL:e,mdURL:l,htmlURL:i,ubbURL:a,srcID:e,status:"uploading",progreess:0,serverCompress:!1,uploadChannel:"external",retryCount:0}),this.uploadFile({file:n,onProgress:e=>this.handleProgress(e),onSuccess:(e,t)=>this.handleSuccess(e,t),onError:(e,t)=>this.handleError(e,t)})}},uploadFromUrl(e){for(let t=0;t{e instanceof File&&this.uploadFile({file:e,onProgress:e=>this.handleProgress(e),onSuccess:(e,t)=>this.handleSuccess(e,t),onError:(e,t)=>this.handleError(e,t)})}).catch(e=>{console.log(e)})}else"string"===e[t].kind&&e[t].getAsString(e=>{const o=/^(https?:\/\/[^\s$.?#].[^\s]*)$/;let s="";o.test(e)&&ht.A.post("/api/fetchRes",{url:e},{responseType:"blob",withAuthCode:!0}).then(o=>{o.headers["content-type"];if(200!=o.status)throw new Error("URL地址请求失败");{const i=o.headers["content-disposition"];if(i){const e=/filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/,t=/filename\*\s*=\s*UTF-8''([^;\n]*)/;let o=e.exec(i);if(null!=o&&o[1]){s=o[1].replace(/['"]/g,"");try{s=decodeURIComponent(s)}catch(l){s=""}}""===s&&(o=t.exec(i),null!=o&&o[1]&&(s=decodeURIComponent(o[1])))}if(""===s){const t=new URL(e);s=t.pathname.split("/").pop()}if(""===s){const o=new URL(e);let l=o.pathname.split(".").pop();(!l||""===l||l.length>10)&&(l="bin"),s="PastedFile"+Date.now()+t+"."+l}const a=o.data,n=new File([a],s,{type:a.type});n.uid=Date.now()+t;const r=this.beforeUpload(n);r instanceof Promise&&r.then(e=>{e instanceof File&&this.uploadFile({file:e,onProgress:e=>this.handleProgress(e),onSuccess:(e,t)=>this.handleSuccess(e,t),onError:(e,t)=>this.handleError(e,t)})}).catch(e=>{console.log(e)})}}).catch(e=>{this.$message({type:"warning",message:"粘贴板中的URL地址请求失败"})})})},handleScroll(e){this.listScrolled=e.scrollTop>0&&this.fileList.length>0},retryError(){this.exceptionList.length>0?(this.retryFailedFiles(this.exceptionList),this.exceptionList=[]):this.$message({type:"info",message:"无上传失败文件"})},handleAutoRetryChange(e){this.$message({type:e?"success":"info",message:e?"自动重试已开启":"自动重试已关闭"}),e&&this.exceptionList.length>0&&this.scheduleAutoRetry()},retryFailedFiles(e){e.forEach(e=>{const t=e.retryCount||0;tthis.handleProgress(e),onSuccess:(e,t)=>this.handleSuccess(e,t),onError:(e,t)=>this.handleError(e,t)})):this.$message({type:"warning",message:`${e.name} 已达到最大重试次数(${this.maxRetryCount}),停止重试`})})},scheduleAutoRetry(){this.retryTimer&&clearTimeout(this.retryTimer),this.retryTimer=setTimeout(()=>{if(this.autoReUpload&&this.exceptionList.length>0){const e=[...this.exceptionList];this.exceptionList=[],this.retryFailedFiles(e)}},this.retryDelay)},async uploadToHuggingFaceDirect(e){const t=this.fileList.find(t=>t.uid===e.file.uid);if(!t)return;const o=new AbortController;this.abortControllers.set(e.file.uid,o);try{console.log("=== HuggingFace Direct Upload ==="),console.log("File:",e.file.name,"Size:",e.file.size),e.onProgress({percent:5,file:e.file}),console.log("Computing SHA256...");const t=await Ft(e.file);if(console.log("SHA256:",t),o.signal.aborted)return void console.log("HuggingFace 上传已取消:",e.file.name);const s=new Uint8Array(await e.file.slice(0,512).arrayBuffer()),l=btoa(String.fromCharCode(...s));e.onProgress({percent:10,file:e.file}),console.log("Getting LFS upload URL...");const i=await(0,ht.A)({url:"/upload/huggingface/getUploadUrl",method:"post",data:{fileSize:e.file.size,fileName:e.file.name,fileType:e.file.type,sha256:t,fileSample:l,channelName:this.channelName,uploadNameType:this.uploadNameType,uploadFolder:this.uploadFolder},withAuthCode:!0,signal:o.signal});if(!i.data.success)throw new Error(i.data.error||"Failed to get upload URL");const a=i.data;if(console.log("Upload info:",a),a.alreadyExists)console.log("File already exists in LFS, skipping upload"),e.onProgress({percent:90,file:e.file});else if(a.needsLfs&&a.uploadAction){const{href:t,header:s}=a.uploadAction;if(s?.chunk_size)await this.uploadToHuggingFaceMultipart(e,a,o);else{console.log("Uploading to S3 (basic)...");const l=await fetch(t,{method:"PUT",headers:s||{},body:e.file,signal:o.signal});if(!l.ok){const e=await l.text();throw new Error(`S3 upload failed: ${l.status} - ${e}`)}console.log("S3 upload complete")}}if(o.signal.aborted)return void console.log("HuggingFace 上传已取消:",e.file.name);e.onProgress({percent:95,file:e.file}),console.log("Committing file...");const n=await(0,ht.A)({url:"/upload/huggingface/commitUpload",method:"post",data:{fullId:a.fullId,filePath:a.filePath,sha256:t,fileSize:e.file.size,fileName:e.file.name,fileType:e.file.type,channelName:a.channelName},withAuthCode:!0,signal:o.signal});if(!n.data.success)throw new Error(n.data.error||"Failed to commit file");console.log("Upload complete:",n.data);const r={data:[{src:n.data.src}]};e.onSuccess(r,e.file)}catch(s){if("CanceledError"===s.name||"ERR_CANCELED"===s.code||"AbortError"===s.name)return void console.log("HuggingFace 上传已取消:",e.file.name);console.error("HuggingFace direct upload error:",s),this.exceptionList.push(e),e.onError(s,e.file)}finally{this.abortControllers.delete(e.file.uid),this.onUploadComplete()}},async uploadToHuggingFaceMultipart(e,t,o){const{uploadAction:s}=t,{href:l,header:i}=s,a=parseInt(i.chunk_size),n=Object.keys(i).filter(e=>/^[0-9]+$/.test(e));console.log(`Multipart upload: ${n.length} parts, chunk size: ${a}`);const r=[],d=n.length;for(const u of n){if(o&&o.signal.aborted)throw console.log("HuggingFace 分片上传已取消"),new DOMException("Upload cancelled","AbortError");const t=parseInt(u)-1,s=t*a,l=Math.min(s+a,e.file.size),n=e.file.slice(s,l);console.log(`Uploading part ${u}/${d}`);const c=await fetch(i[u],{method:"PUT",body:n,signal:o?o.signal:void 0});if(!c.ok)throw new Error(`Failed to upload part ${u}: ${c.status}`);const p=c.headers.get("ETag");if(!p)throw new Error(`No ETag for part ${u}`);r.push({partNumber:parseInt(u),etag:p});const h=10+Math.round(parseInt(u)/d*80);e.onProgress({percent:h,file:e.file})}if(o&&o.signal.aborted)throw console.log("HuggingFace 分片上传已取消"),new DOMException("Upload cancelled","AbortError");console.log("Completing multipart upload...");const c=await fetch(l,{method:"POST",headers:{Accept:"application/vnd.git-lfs+json","Content-Type":"application/vnd.git-lfs+json"},body:JSON.stringify({oid:t.oid,parts:r}),signal:o?o.signal:void 0});if(!c.ok){const e=await c.text();throw new Error(`Multipart complete failed: ${c.status} - ${e}`)}console.log("Multipart upload complete")},async convertImageToWebp(e){return new Promise((t,o)=>{if(e.type.includes("gif")||e.type.includes("svg")||e.type.includes("webp"))return void t(null);const s=new Image,l=document.createElement("canvas"),i=l.getContext("2d");s.onload=()=>{l.width=s.width,l.height=s.height,i.drawImage(s,0,0),l.toBlob(l=>{if(l){const o=e.name,s=o.lastIndexOf("."),i=s>0?o.substring(0,s)+".webp":o+".webp",a=new File([l],i,{type:"image/webp"});a.uid=e.uid,t(a)}else o(new Error("WebP 转换失败"));URL.revokeObjectURL(s.src)},"image/webp",.92)},s.onerror=()=>{URL.revokeObjectURL(s.src),o(new Error("图片加载失败"))},s.src=URL.createObjectURL(e)})},handleUploadCardMouseMove(e){const t=this.$refs.uploadCardGlow;if(!t)return;const o=e.currentTarget.getBoundingClientRect(),s=e.clientX-o.left,l=e.clientY-o.top;t.style.opacity="1",t.style.left=s+"px",t.style.top=l+"px"},handleUploadCardMouseLeave(){const e=this.$refs.uploadCardGlow;e&&(e.style.opacity="0")}},beforeDestroy(){this.retryTimer&&clearTimeout(this.retryTimer)}};const Ut=(0,V.A)(Lt,[["render",pt],["__scopeId","data-v-a12d47f4"]]);var Tt=Ut,St=o(732),$t=o(2224),Mt=o(2359);o(9104);function _t(e,t,o,s,l,a){const n=Mt.s9;return(0,i.uX)(),(0,i.Wv)(n,{ref:"autocompleteRef",modelValue:a.inputValue,"onUpdate:modelValue":t[0]||(t[0]=e=>a.inputValue=e),class:"directory-suggestion-input","popper-class":l.showSuggestions?"directory-suggestion-popper":"directory-suggestion-popper-hidden","hide-loading":!0,placeholder:o.placeholder,"value-key":"value","fetch-suggestions":a.querySuggestions,"trigger-on-focus":!0,debounce:0,"fit-input-width":!1,placement:"bottom-start",onFocus:a.handleFocus,onBlur:a.handleBlur,onSelect:a.handleSelect},null,8,["modelValue","popper-class","placeholder","fetch-suggestions","onFocus","onBlur","onSelect"])}var xt={name:"DirectorySuggestionInput",props:{modelValue:{type:String,default:""},placeholder:{type:String,default:"上传目录"}},emits:["update:modelValue","focus","blur","select"],data(){return{directoryTreeRoot:null,directoryTreeLoaded:!1,directoryTreeLoading:!1,directoryChildrenMap:{},focusTime:null,showSuggestions:!1,isFocused:!1}},computed:{inputValue:{get(){return this.modelValue},set(e){this.$emit("update:modelValue",e)}}},methods:{handleFocus(){this.isFocused=!0,this.focusTime=Date.now(),this.showSuggestions=!1,setTimeout(()=>{this.isFocused&&(this.showSuggestions=!0,this.$nextTick(()=>{window.dispatchEvent(new Event("resize"))}))},500),this.ensureDirectoryTreeLoaded(),this.$emit("focus")},handleBlur(){this.isFocused=!1,this.showSuggestions=!1,this.$emit("blur")},handleSelect(e){const t=e?.value||"";this.$emit("select",t);const o=this.normalizeDirectoryPath(t),s=this.directoryChildrenMap[o];s&&s.length>0&&setTimeout(()=>{const e=this.$refs.autocompleteRef?.inputRef?.input;e&&(e.focus(),e.dispatchEvent(new Event("input")),this.showSuggestions=!0)},50)},normalizeDirectoryPath(e){if(!e)return"/";let t=e;return t.startsWith("/")||(t="/"+t),"/"===t||t.endsWith("/")||(t+="/"),t},buildDirectoryChildrenMap(e){const t={},o=e=>{const s=this.normalizeDirectoryPath(e.path),l=Array.isArray(e.children)?e.children:[];t[s]=l.map(e=>({name:e.name,path:this.normalizeDirectoryPath(e.path)})),l.forEach(o)};o(e),this.directoryChildrenMap=t},async ensureDirectoryTreeLoaded(){if(!this.directoryTreeLoaded&&!this.directoryTreeLoading){this.directoryTreeLoading=!0;try{const e=await ht.A.get("/api/directoryTree",{withAuthCode:!0}),t=e?.data?.tree;t&&(this.directoryTreeRoot=t,this.buildDirectoryChildrenMap(t),this.directoryTreeLoaded=!0)}catch(e){console.error("Failed to load directory tree for autocomplete:",e)}finally{this.directoryTreeLoading=!1}}},parseDirectoryQuery(e){const t=e&&e.startsWith("/")?e:`/${e||""}`,o=t.slice(1),s=o.split("/"),l=s[s.length-1]||"",i=s.slice(0,-1).filter(Boolean),a=i.length>0?`/${i.join("/")}/`:"/";return{segmentInput:l,parentPath:a}},getDirectorySuggestions(e){const{segmentInput:t,parentPath:o}=this.parseDirectoryQuery(e),s=this.directoryChildrenMap[o]||[];if(!t)return s.slice(0,10).map(e=>({value:e.path}));const l=t.toLowerCase(),i=s.filter(e=>e.name.toLowerCase().startsWith(l)).map(e=>({value:e.path}));return i.slice(0,10)},async querySuggestions(e,t){await this.ensureDirectoryTreeLoaded();let o=0;if(this.focusTime){const e=Date.now()-this.focusTime;e<500&&(o=500-e)}o>0?setTimeout(()=>{t(this.getDirectorySuggestions(e))},o):t(this.getDirectorySuggestions(e))},updatePopperPosition(){}}};const Rt=(0,V.A)(xt,[["render",_t],["__scopeId","data-v-47722a72"]]);var Et=Rt,At=o(4453);const Dt={class:"container"},It={class:"upload-home"},Nt={href:"https://cfbed.sanyue.de/qa/",target:"_blank",class:"info-container"},Pt={class:"toolbar-manage"},Wt={class:"toolbar"},zt={class:"header"},Vt={class:"title"},Bt={class:"main-title",href:"https://github.com/MarSeventh/CloudFlare-ImgBed",target:"_blank"},Ht={class:"dialog-section"},Xt={class:"section-content"},Qt={class:"dialog-section"},jt={class:"section-header"},Ot={class:"section-content"},qt={class:"setting-item"},Gt={key:0,class:"setting-item"},Kt={class:"dialog-action"},Jt=["innerHTML"],Yt={class:"dialog-footer"};function Zt(e,t,o,n,r,d){const c=At.A,u=(0,i.g2)("font-awesome-icon"),p=s.R7,h=Et,m=G.WK,f=l.S2,g=$t.A,y=tt.c6,b=tt.Iy,C=tt.dW,k=St.A,v=Tt,w=J.ll,F=J.MQ,L=q.qi,U=Q.kZ,T=_e,S=X.A,$=H;return(0,i.uX)(),(0,i.CE)("div",Dt,[(0,i.Lk)("div",It,[(0,i.bF)(c,{class:"toggle-dark-button desktop-only"}),(0,i.bF)(p,{content:"查看文档",placement:"bottom",disabled:d.disableTooltip},{default:(0,i.k6)(()=>[(0,i.Lk)("a",Nt,[(0,i.bF)(u,{icon:"book",class:"info-icon",size:"lg"})])]),_:1},8,["disabled"]),(0,i.Lk)("div",{class:(0,a.C4)(["upload-folder-container",{"no-announcement":!d.announcementAvailable}])},[(0,i.Lk)("div",{class:(0,a.C4)(["upload-folder",{active:r.isFolderInputActive}])},[d.showDirectorySuggestions?((0,i.uX)(),(0,i.Wv)(h,{key:0,modelValue:r.uploadFolder,"onUpdate:modelValue":t[0]||(t[0]=e=>r.uploadFolder=e),class:"inner-folder-input",placeholder:"上传目录",onFocus:d.handleFolderInputFocus,onBlur:d.handleFolderInputBlur,onSelect:d.handleDirectorySelect},null,8,["modelValue","onFocus","onBlur","onSelect"])):((0,i.uX)(),(0,i.Wv)(m,{key:1,class:"inner-folder-input",modelValue:r.uploadFolder,"onUpdate:modelValue":t[1]||(t[1]=e=>r.uploadFolder=e),placeholder:"上传目录",onFocus:d.handleFolderInputFocus,onBlur:d.handleFolderInputBlur},null,8,["modelValue","onFocus","onBlur"]))],2),d.showDirectorySuggestions?((0,i.uX)(),(0,i.Wv)(g,{key:0,"current-directory":r.uploadFolder,source:"upload",onSelect:d.handleDirectorySelect},{trigger:(0,i.k6)(()=>[(0,i.bF)(f,{class:"directory-tree-trigger"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"folder-tree"})]),_:1})]),_:1},8,["current-directory","onSelect"])):(0,i.Q3)("",!0)],2),(0,i.bF)(p,{content:"切换上传方式",placement:"bottom",disabled:d.disableTooltip},{default:(0,i.k6)(()=>[(0,i.bF)(f,{class:"upload-method-button desktop-only",onClick:d.handleChangeUploadMethod},{default:(0,i.k6)(()=>["default"===r.uploadMethod?((0,i.uX)(),(0,i.Wv)(u,{key:0,icon:"folder-open",class:"upload-method-icon",size:"lg"})):"paste"===r.uploadMethod?((0,i.uX)(),(0,i.Wv)(u,{key:1,icon:"paste",class:"upload-method-icon",size:"lg"})):(0,i.Q3)("",!0)]),_:1},8,["onClick"])]),_:1},8,["disabled"]),(0,i.bF)(p,{content:"上传记录",placement:"bottom",disabled:d.disableTooltip},{default:(0,i.k6)(()=>[(0,i.bF)(f,{class:"history-button desktop-only",onClick:t[2]||(t[2]=e=>r.showHistory=!0)},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"history",class:"history-icon",size:"lg"})]),_:1})]),_:1},8,["disabled"]),d.announcementAvailable?((0,i.uX)(),(0,i.Wv)(p,{key:0,content:"查看公告",placement:"bottom",disabled:d.disableTooltip},{default:(0,i.k6)(()=>[(0,i.bF)(f,{class:"announcement-button desktop-only",onClick:d.handleShowAnnouncement},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"bullhorn",class:"announcement-icon",size:"lg"})]),_:1},8,["onClick"])]),_:1},8,["disabled"])):(0,i.Q3)("",!0),(0,i.bF)(C,{class:"mobile-more-dropdown mobile-only",trigger:"click",onCommand:d.handleMobileMenuCommand},{dropdown:(0,i.k6)(()=>[(0,i.bF)(b,null,{default:(0,i.k6)(()=>[(0,i.bF)(y,{command:"toggleTheme"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:d.getThemeIcon(),style:{"margin-right":"8px"}},null,8,["icon"]),(0,i.eW)(" "+(0,a.v_)(d.getThemeText()),1)]),_:1}),(0,i.bF)(y,{command:"toggleUploadMethod"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"default"===r.uploadMethod?"paste":"folder-open",style:{"margin-right":"8px"}},null,8,["icon"]),(0,i.eW)(" "+(0,a.v_)("default"===r.uploadMethod?"粘贴上传":"文件上传"),1)]),_:1}),(0,i.bF)(y,{command:"showHistory"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"history",style:{"margin-right":"8px"}}),t[22]||(t[22]=(0,i.eW)(" 上传记录 ",-1))]),_:1}),(0,i.bF)(y,{command:"showAnnouncement",disabled:!d.announcementAvailable},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"bullhorn",style:{"margin-right":"8px"}}),t[23]||(t[23]=(0,i.eW)(" 查看公告 ",-1))]),_:1},8,["disabled"])]),_:1})]),default:(0,i.k6)(()=>[(0,i.bF)(f,{class:"mobile-more-button"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"ellipsis-v",size:"lg"})]),_:1})]),_:1},8,["onCommand"]),(0,i.Lk)("div",Pt,[(0,i.bF)(f,{class:(0,a.C4)(["toolbar-manage-button",{active:r.isToolBarOpen}]),size:"large",onClick:d.handleOpenToolbar,circle:""},{default:(0,i.k6)(()=>[r.isToolBarOpen?((0,i.uX)(),(0,i.Wv)(u,{key:1,icon:"times",class:"manage-icon",size:"lg"})):((0,i.uX)(),(0,i.Wv)(u,{key:0,icon:"bars",class:"manage-icon",size:"lg"}))]),_:1},8,["class","onClick"])]),(0,i.Lk)("div",Wt,[(0,i.bF)(p,{disabled:d.disableTooltip,content:"上传设置",placement:"top"},{default:(0,i.k6)(()=>[(0,i.bF)(f,{class:(0,a.C4)(["toolbar-button compress-button",{active:r.isToolBarOpen}]),size:"large",onClick:d.openCompressDialog,circle:""},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"cloud-upload",class:"compress-icon",size:"lg"})]),_:1},8,["class","onClick"])]),_:1},8,["disabled"]),(0,i.bF)(p,{disabled:d.disableTooltip,content:"链接格式",placement:"left"},{default:(0,i.k6)(()=>[(0,i.bF)(f,{class:(0,a.C4)(["toolbar-button link-button",{active:r.isToolBarOpen}]),size:"large",onClick:d.openUrlDialog,circle:""},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"link",class:"link-icon",size:"lg"})]),_:1},8,["class","onClick"])]),_:1},8,["disabled"]),(0,i.bF)(p,{disabled:d.disableTooltip,content:"系统管理",placement:"left"},{default:(0,i.k6)(()=>[(0,i.bF)(f,{class:(0,a.C4)(["toolbar-button config-button",{active:r.isToolBarOpen}]),size:"large",onClick:d.handleManage,circle:""},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"cog",class:"config-icon",size:"lg"})]),_:1},8,["class","onClick"])]),_:1},8,["disabled"]),(0,i.bF)(p,{disabled:d.disableTooltip,content:"退出登录",placement:"left"},{default:(0,i.k6)(()=>[(0,i.bF)(f,{class:(0,a.C4)(["toolbar-button sign-out-button",{active:r.isToolBarOpen}]),size:"large",onClick:d.handleLogout,circle:""},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"sign-out-alt",class:"sign-out-icon",size:"lg"})]),_:1},8,["class","onClick"])]),_:1},8,["disabled"])]),(0,i.bF)(k,{useConfigLink:!0}),(0,i.Lk)("div",zt,[(0,i.Lk)("h1",Vt,[(0,i.Lk)("a",Bt,(0,a.v_)(d.ownerName),1),t[24]||(t[24]=(0,i.eW)(" ImgHub",-1))])]),(0,i.bF)(v,{selectedUrlForm:r.selectedUrlForm,customerCompress:r.customerCompress,compressQuality:r.compressQuality,compressBar:r.compressBar,serverCompress:r.serverCompress,uploadChannel:r.uploadChannel,channelName:r.channelName,uploadNameType:r.uploadNameType,useCustomUrl:r.useCustomUrl,customUrlPrefix:r.customUrlPrefix,autoRetry:r.autoRetry,urlPrefix:d.urlPrefix,uploadMethod:r.uploadMethod,uploadFolder:r.uploadFolder,convertToWebp:r.convertToWebp,class:"upload"},null,8,["selectedUrlForm","customerCompress","compressQuality","compressBar","serverCompress","uploadChannel","channelName","uploadNameType","useCustomUrl","customUrlPrefix","autoRetry","urlPrefix","uploadMethod","uploadFolder","convertToWebp"]),(0,i.bF)(U,{title:"链接格式设置",modelValue:r.showUrlDialog,"onUpdate:modelValue":t[7]||(t[7]=e=>r.showUrlDialog=e),width:d.dialogWidth,"show-close":!1,class:"settings-dialog"},{default:(0,i.k6)(()=>[(0,i.Lk)("div",Ht,[t[29]||(t[29]=(0,i.Lk)("div",{class:"section-header"},[(0,i.Lk)("span",{class:"section-title"},"默认复制链接")],-1)),(0,i.Lk)("div",Xt,[(0,i.bF)(F,{modelValue:r.selectedUrlForm,"onUpdate:modelValue":t[3]||(t[3]=e=>r.selectedUrlForm=e),onChange:d.changeUrlForm,class:"radio-card-group grid-2x2"},{default:(0,i.k6)(()=>[(0,i.bF)(w,{value:"url",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"link",class:"radio-icon"}),t[25]||(t[25]=(0,i.Lk)("span",null,"原始链接",-1))]),_:1}),(0,i.bF)(w,{value:"md",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"code",class:"radio-icon"}),t[26]||(t[26]=(0,i.Lk)("span",null,"MarkDown",-1))]),_:1}),(0,i.bF)(w,{value:"html",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"code-branch",class:"radio-icon"}),t[27]||(t[27]=(0,i.Lk)("span",null,"HTML",-1))]),_:1}),(0,i.bF)(w,{value:"ubb",class:"radio-card"},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"quote-right",class:"radio-icon"}),t[28]||(t[28]=(0,i.Lk)("span",null,"BBCode",-1))]),_:1})]),_:1},8,["modelValue","onChange"])])]),(0,i.Lk)("div",Qt,[(0,i.Lk)("div",jt,[t[30]||(t[30]=(0,i.Lk)("span",{class:"section-title"},"自定义链接",-1)),(0,i.bF)(p,{content:"默认链接为https://your.domain/file/xxx.jpg
如果启用自定义链接格式,只保留xxx.jpg部分,其他部分请自行输入",placement:"top","raw-content":""},{default:(0,i.k6)(()=>[(0,i.bF)(u,{icon:"question-circle",class:"section-help-icon"})]),_:1})]),(0,i.Lk)("div",Ot,[(0,i.Lk)("div",qt,[t[31]||(t[31]=(0,i.Lk)("span",{class:"setting-label"},"启用自定义",-1)),(0,i.bF)(L,{modelValue:r.useCustomUrl,"onUpdate:modelValue":t[4]||(t[4]=e=>r.useCustomUrl=e),"active-value":"true","inactive-value":"false"},null,8,["modelValue"])]),"true"===r.useCustomUrl?((0,i.uX)(),(0,i.CE)("div",Gt,[t[32]||(t[32]=(0,i.Lk)("span",{class:"setting-label"},"自定义前缀",-1)),(0,i.bF)(m,{modelValue:r.customUrlPrefix,"onUpdate:modelValue":t[5]||(t[5]=e=>r.customUrlPrefix=e),placeholder:"请输入自定义链接前缀",class:"setting-input"},null,8,["modelValue"])])):(0,i.Q3)("",!0)])]),(0,i.Lk)("div",Kt,[(0,i.bF)(f,{type:"primary",onClick:t[6]||(t[6]=e=>r.showUrlDialog=!1),class:"confirm-btn"},{default:(0,i.k6)(()=>[...t[33]||(t[33]=[(0,i.eW)("确定",-1)])]),_:1})])]),_:1},8,["modelValue","width"]),(0,i.bF)(T,{modelValue:r.showCompressDialog,"onUpdate:modelValue":t[8]||(t[8]=e=>r.showCompressDialog=e),uploadChannel:r.uploadChannel,"onUpdate:uploadChannel":t[9]||(t[9]=e=>r.uploadChannel=e),channelName:r.channelName,"onUpdate:channelName":t[10]||(t[10]=e=>r.channelName=e),currentChannelList:d.currentChannelList,uploadFolder:r.uploadFolder,"onUpdate:uploadFolder":t[11]||(t[11]=e=>r.uploadFolder=e),autoRetry:r.autoRetry,"onUpdate:autoRetry":t[12]||(t[12]=e=>r.autoRetry=e),uploadNameType:r.uploadNameType,"onUpdate:uploadNameType":t[13]||(t[13]=e=>r.uploadNameType=e),convertToWebp:r.convertToWebp,"onUpdate:convertToWebp":t[14]||(t[14]=e=>r.convertToWebp=e),customerCompress:r.customerCompress,"onUpdate:customerCompress":t[15]||(t[15]=e=>r.customerCompress=e),compressBar:r.compressBar,"onUpdate:compressBar":t[16]||(t[16]=e=>r.compressBar=e),compressQuality:r.compressQuality,"onUpdate:compressQuality":t[17]||(t[17]=e=>r.compressQuality=e),serverCompress:r.serverCompress,"onUpdate:serverCompress":t[18]||(t[18]=e=>r.serverCompress=e)},null,8,["modelValue","uploadChannel","channelName","currentChannelList","uploadFolder","autoRetry","uploadNameType","convertToWebp","customerCompress","compressBar","compressQuality","serverCompress"])]),(0,i.bF)(S,{class:"footer"}),(0,i.bF)(U,{title:"公告",modelValue:r.showAnnouncementDialog,"onUpdate:modelValue":t[20]||(t[20]=e=>r.showAnnouncementDialog=e),width:d.dialogWidth,"show-close":!1,"close-on-click-modal":!1,"close-on-press-escape":!1,center:""},{footer:(0,i.k6)(()=>[(0,i.Lk)("span",Yt,[(0,i.bF)(f,{type:"primary",onClick:t[19]||(t[19]=e=>r.showAnnouncementDialog=!1)},{default:(0,i.k6)(()=>[...t[34]||(t[34]=[(0,i.eW)("我已知晓!",-1)])]),_:1})])]),default:(0,i.k6)(()=>[(0,i.Lk)("div",{innerHTML:r.announcementContent},null,8,Jt)]),_:1},8,["modelValue","width"]),(0,i.bF)($,{show:r.showHistory,onClose:t[21]||(t[21]=e=>r.showHistory=!1)},null,8,["show"])])}o(3579);var eo=o(8903),to=o(144),oo=o(4570),so=o.n(oo),lo=o(2388),io={name:"UploadHome",mixins:[eo.A],data(){return{selectedUrlForm:(0,to.KR)(""),showUrlDialog:!1,showCompressDialog:!1,customerCompress:!0,compressQuality:4,compressBar:5,convertToWebp:!1,serverCompress:!0,uploadChannel:"",channelName:"",availableChannels:{},uploadNameType:"",customUrlPrefix:"",useCustomUrl:"false",autoRetry:!0,useDefaultWallPaper:!1,isToolBarOpen:!1,uploadMethod:"default",uploadFolder:"",isFolderInputActive:!1,showAnnouncementDialog:!1,announcementContent:"",showHistory:!1,themeMode:"auto"}},watch:{customerCompress(e){this.updateCompressConfig("customerCompress",e)},compressQuality(e){this.updateCompressConfig("compressQuality",e)},compressBar(e){null===e||void 0===e||e<1?this.compressBar=1:(this.compressQuality>e&&(this.compressQuality=e),this.updateCompressConfig("compressBar",e))},serverCompress(e){this.updateCompressConfig("serverCompress",e)},convertToWebp(e){this.updateCompressConfig("convertToWebp",e)},uploadChannel(e){this.updateStoreUploadChannel(e);const t=this.availableChannels[e]||[],o=this.storeChannelName;o&&t.some(e=>e.name===o)?this.channelName=o:this.channelName=""},channelName(e){this.$store.commit("setStoreChannelName",e||"")},uploadNameType(e){this.updateStoreUploadNameType(e)},customUrlPrefix(e){this.$store.commit("setCustomUrlSettings",{key:"customUrlPrefix",value:e})},useCustomUrl(e){this.$store.commit("setCustomUrlSettings",{key:"useCustomUrl",value:e})},autoRetry(e){this.$store.commit("setStoreAutoRetry",e)},uploadFolder(e){if(this.validateUploadFolder(e,!1)){const t=(0,lo.G)(e,{strict:!0});t.valid&&this.$store.commit("setStoreUploadFolder",e)}else this.$nextTick(()=>{this.uploadFolder=this.storeUploadFolder})}},computed:{...(0,ft.L8)(["userConfig","uploadCopyUrlForm","compressConfig","storeUploadChannel","storeChannelName","storeUploadNameType","customUrlSettings","storeAutoRetry","storeUploadMethod","storeUploadFolder"]),ownerName(){return this.userConfig?.ownerName||"Sanyue"},dialogWidth(){return window.innerWidth>768?"50%":"90%"},disableTooltip(){return window.innerWidth<768},urlPrefix(){return this.userConfig?.urlPrefix||`${window.location.protocol}//${window.location.host}/file/`},announcementAvailable(){return!!this.userConfig?.announcement},showDirectorySuggestions(){return this.userConfig?.showDirectorySuggestions??!1},currentChannelList(){return this.availableChannels[this.uploadChannel]||[]}},mounted(){this.initializeBackground("uploadBkImg",".container",!1,!0),this.selectedUrlForm=this.uploadCopyUrlForm||"url",this.customerCompress=this.compressConfig.customerCompress??this.parseBoolean(this.userConfig?.defaultCustomerCompress,!0),this.compressQuality=this.compressConfig.compressQuality??this.parseNumber(this.userConfig?.defaultCompressQuality,4),this.compressBar=this.compressConfig.compressBar??this.parseNumber(this.userConfig?.defaultCompressBar,5),this.serverCompress=this.compressConfig.serverCompress??!0,this.convertToWebp=this.compressConfig.convertToWebp??this.parseBoolean(this.userConfig?.defaultConvertToWebp,!1),this.uploadChannel=this.storeUploadChannel||this.userConfig?.defaultUploadChannel||"telegram",this.autoRetry=this.storeAutoRetry,this.uploadNameType=this.storeUploadNameType||this.userConfig?.defaultUploadNameType||"default",this.customUrlPrefix=this.customUrlSettings.customUrlPrefix,this.useCustomUrl=this.customUrlSettings.useCustomUrl,this.uploadMethod=this.storeUploadMethod,this.fetchAvailableChannels(),this.uploadFolder=this.storeUploadFolder||this.userConfig?.defaultUploadFolder||"";const e=this.$store.getters.cusDarkMode,t=this.$store.getters.useDarkMode;this.themeMode=e?t?"dark":"light":"auto";const o=localStorage.getItem("visitedUploadHome"),s=this.userConfig?.announcement;!o&&s&&(this.announcementContent=s,this.showAnnouncementDialog=!0,localStorage.setItem("visitedUploadHome","true"))},components:{UploadForm:Tt,Footer:X.A,ToggleDark:At.A,Logo:St.A,UploadHistory:H,UploadSettingsDialog:_e,DirectoryTreePicker:$t.A,DirectorySuggestionInput:Et},methods:{async fetchAvailableChannels(){try{const e=await ht.A.get("/api/channels",{withAuthCode:!0});if(e.data){this.availableChannels=e.data;const t=this.storeChannelName,o=this.userConfig?.defaultChannelName,s=this.availableChannels[this.uploadChannel]||[];t&&s.some(e=>e.name===t)?this.channelName=t:""!==t&&null!==t&&void 0!==t||""!==t&&o&&s.some(e=>e.name===o)&&(this.channelName=o)}}catch(e){console.error("Failed to fetch available channels:",e)}},validateUploadFolder(e,t=!0){e&&!e.startsWith("/")&&(e="/"+e,this.uploadFolder=e);const o=(0,lo.G)(e,{strict:t});if(!o.valid){const e=o.error.replace("目标目录","上传目录");return this.$message.error(e),!1}return!0},handleFolderInputFocus(){this.isFolderInputActive=!0},handleFolderInputBlur(){this.isFolderInputActive=!1,this.uploadFolder&&!this.uploadFolder.startsWith("/")&&(this.uploadFolder="/"+this.uploadFolder),this.validateUploadFolder(this.uploadFolder,!0)||this.$nextTick(()=>{this.uploadFolder=this.storeUploadFolder})},handleManage(){this.$router.push("/dashboard")},parseBoolean(e,t){return void 0===e||null===e?t:"boolean"===typeof e?e:"string"===typeof e?"true"===e:t},parseNumber(e,t){if(void 0===e||null===e)return t;const o=parseFloat(e);return isNaN(o)?t:o},openUrlDialog(){this.showUrlDialog=!0},handleLogout(){so().remove("authCode"),this.$router.push("/login"),this.$message.success("已退出登录")},changeUrlForm(){this.$store.commit("setUploadCopyUrlForm",this.selectedUrlForm)},openCompressDialog(){this.showCompressDialog=!0},updateCompressConfig(e,t){this.$store.commit("setCompressConfig",{key:e,value:t})},updateStoreUploadChannel(e){this.$store.commit("setStoreUploadChannel",e)},updateStoreUploadNameType(e){this.$store.commit("setStoreUploadNameType",e)},handleOpenToolbar(){this.isToolBarOpen=!this.isToolBarOpen,setTimeout(()=>{const e=document.querySelectorAll(".toolbar-button");e.forEach(e=>{e.style.pointerEvents=this.isToolBarOpen?"auto":"none"})},300)},handleChangeUploadMethod(){this.uploadMethod="default"===this.uploadMethod?"paste":"default",this.$store.commit("setUploadMethod",this.uploadMethod)},handleMobileMenuCommand(e){"toggleTheme"===e?"auto"===this.themeMode?(this.themeMode="light",this.$store.commit("setCusDarkMode",!0),this.$store.commit("setUseDarkMode",!1)):"light"===this.themeMode?(this.themeMode="dark",this.$store.commit("setCusDarkMode",!0),this.$store.commit("setUseDarkMode",!0)):(this.themeMode="auto",this.$store.commit("setCusDarkMode",!1)):"toggleUploadMethod"===e?this.handleChangeUploadMethod():"showHistory"===e?this.showHistory=!0:"showAnnouncement"===e&&this.handleShowAnnouncement()},getThemeIcon(){return"auto"===this.themeMode?"sun":"light"===this.themeMode?"moon":"adjust"},getThemeText(){return"auto"===this.themeMode?"浅色模式":"light"===this.themeMode?"深色模式":"自动模式"},handleShowAnnouncement(){const e=this.userConfig?.announcement;e?(this.announcementContent=e,this.showAnnouncementDialog=!0):this.$message.info("暂无公告")},handleDirectorySelect(e){this.uploadFolder=e,this.validateUploadFolder(e,!0)&&this.$store.commit("setStoreUploadFolder",e)}}};const ao=(0,V.A)(io,[["render",Zt],["__scopeId","data-v-1db22ef8"]]);var no=ao},1393:function(e,t,o){o(6573),o(8100),o(7936),o(9577),o(1549),o(9797),o(9631),o(5623),o(4979),o(4603),o(7566),o(8721),function(t,o){e.exports=o()}(0,function(){return function(e){var t={};function o(s){if(t[s])return t[s].exports;var l=t[s]={i:s,l:!1,exports:{}};return e[s].call(l.exports,l,l.exports,o),l.l=!0,l.exports}return o.m=e,o.c=t,o.d=function(e,t,s){o.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:s})},o.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.t=function(e,t){if(1&t&&(e=o(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var s=Object.create(null);if(o.r(s),Object.defineProperty(s,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var l in e)o.d(s,l,function(t){return e[t]}.bind(null,l));return s},o.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return o.d(t,"a",t),t},o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},o.p="",o(o.s=0)}([function(e,t,o){"use strict";var s;function l(e){return["image/png","image/jpeg","image/gif"].some(t=>t===e)}o.r(t),o.d(t,"canvastoDataURL",function(){return a}),o.d(t,"canvastoFile",function(){return n}),o.d(t,"dataURLtoFile",function(){return d}),o.d(t,"dataURLtoImage",function(){return c}),o.d(t,"downloadFile",function(){return u}),o.d(t,"filetoDataURL",function(){return p}),o.d(t,"imagetoCanvas",function(){return m}),o.d(t,"urltoBlob",function(){return f}),o.d(t,"urltoImage",function(){return g}),o.d(t,"compress",function(){return b}),o.d(t,"compressAccurately",function(){return C}),o.d(t,"EImageType",function(){return s}),function(e){e.PNG="image/png",e.JPEG="image/jpeg",e.GIF="image/gif"}(s||(s={}));var i=function(e,t,o,s){return new(o||(o=Promise))(function(l,i){function a(e){try{r(s.next(e))}catch(e){i(e)}}function n(e){try{r(s.throw(e))}catch(e){i(e)}}function r(e){var t;e.done?l(e.value):(t=e.value,t instanceof o?t:new o(function(e){e(t)})).then(a,n)}r((s=s.apply(e,t||[])).next())})};function a(e,t=.92,o=s.JPEG){return i(this,void 0,void 0,function*(){return l(o)||(o=s.JPEG),e.toDataURL(o,t)})}function n(e,t=.92,o=s.JPEG){return new Promise(s=>e.toBlob(e=>s(e),o,t))}var r=function(e,t,o,s){return new(o||(o=Promise))(function(l,i){function a(e){try{r(s.next(e))}catch(e){i(e)}}function n(e){try{r(s.throw(e))}catch(e){i(e)}}function r(e){var t;e.done?l(e.value):(t=e.value,t instanceof o?t:new o(function(e){e(t)})).then(a,n)}r((s=s.apply(e,t||[])).next())})};function d(e,t){return r(this,void 0,void 0,function*(){const o=e.split(",");let s=o[0].match(/:(.*?);/)[1];const i=atob(o[1]);let a=i.length;const n=new Uint8Array(a);for(;a--;)n[a]=i.charCodeAt(a);return l(t)&&(s=t),new Blob([n],{type:s})})}function c(e){return new Promise((t,o)=>{const s=new Image;s.onload=()=>t(s),s.onerror=()=>o(new Error("dataURLtoImage(): dataURL is illegal")),s.src=e})}function u(e,t){const o=document.createElement("a");o.href=window.URL.createObjectURL(e),o.download=t||Date.now().toString(36),document.body.appendChild(o);const s=document.createEvent("MouseEvents");s.initEvent("click",!1,!1),o.dispatchEvent(s),document.body.removeChild(o)}function p(e){return new Promise(t=>{const o=new FileReader;o.onloadend=e=>t(e.target.result),o.readAsDataURL(e)})}var h=function(e,t,o,s){return new(o||(o=Promise))(function(l,i){function a(e){try{r(s.next(e))}catch(e){i(e)}}function n(e){try{r(s.throw(e))}catch(e){i(e)}}function r(e){var t;e.done?l(e.value):(t=e.value,t instanceof o?t:new o(function(e){e(t)})).then(a,n)}r((s=s.apply(e,t||[])).next())})};function m(e,t={}){return h(this,void 0,void 0,function*(){const o=Object.assign({},t),s=document.createElement("canvas"),l=s.getContext("2d");let i,a;for(const e in o)Object.prototype.hasOwnProperty.call(o,e)&&(o[e]=Number(o[e]));if(o.scale){const t=o.scale>0&&o.scale<10?o.scale:1;a=e.width*t,i=e.height*t}else a=o.width||o.height*e.width/e.height||e.width,i=o.height||o.width*e.height/e.width||e.height;switch([5,6,7,8].some(e=>e===o.orientation)?(s.height=a,s.width=i):(s.height=i,s.width=a),o.orientation){case 3:l.rotate(180*Math.PI/180),l.drawImage(e,-s.width,-s.height,s.width,s.height);break;case 6:l.rotate(90*Math.PI/180),l.drawImage(e,0,-s.width,s.height,s.width);break;case 8:l.rotate(270*Math.PI/180),l.drawImage(e,-s.height,0,s.height,s.width);break;case 2:l.translate(s.width,0),l.scale(-1,1),l.drawImage(e,0,0,s.width,s.height);break;case 4:l.translate(s.width,0),l.scale(-1,1),l.rotate(180*Math.PI/180),l.drawImage(e,-s.width,-s.height,s.width,s.height);break;case 5:l.translate(s.width,0),l.scale(-1,1),l.rotate(90*Math.PI/180),l.drawImage(e,0,-s.width,s.height,s.width);break;case 7:l.translate(s.width,0),l.scale(-1,1),l.rotate(270*Math.PI/180),l.drawImage(e,-s.height,0,s.height,s.width);break;default:l.drawImage(e,0,0,s.width,s.height)}return s})}function f(e){return fetch(e).then(e=>e.blob())}function g(e){return new Promise((t,o)=>{const s=new Image;s.onload=()=>t(s),s.onerror=()=>o(new Error("urltoImage(): Image failed to load, please check the image URL")),s.src=e})}var y=function(e,t,o,s){return new(o||(o=Promise))(function(l,i){function a(e){try{r(s.next(e))}catch(e){i(e)}}function n(e){try{r(s.throw(e))}catch(e){i(e)}}function r(e){var t;e.done?l(e.value):(t=e.value,t instanceof o?t:new o(function(e){e(t)})).then(a,n)}r((s=s.apply(e,t||[])).next())})};function b(e,t={}){return y(this,void 0,void 0,function*(){if(!(e instanceof Blob))throw new Error("compress(): First arg must be a Blob object or a File object.");if("object"!=typeof t&&(t=Object.assign({quality:t})),t.quality=Number(t.quality),Number.isNaN(t.quality))return e;const o=yield p(e);let i=o.split(",")[0].match(/:(.*?);/)[1],n=s.JPEG;l(t.type)&&(n=t.type,i=t.type);const r=yield c(o),u=yield m(r,Object.assign({},t)),h=yield a(u,t.quality,n),f=yield d(h,i);return f.size>e.size?e:f})}function C(e,t={}){return y(this,void 0,void 0,function*(){if(!(e instanceof Blob))throw new Error("compressAccurately(): First arg must be a Blob object or a File object.");if("object"!=typeof t&&(t=Object.assign({size:t})),t.size=Number(t.size),Number.isNaN(t.size))return e;if(1024*t.size>e.size)return e;t.accuracy=Number(t.accuracy),(!t.accuracy||t.accuracy<.8||t.accuracy>.99)&&(t.accuracy=.95);const o=t.size*(2-t.accuracy)*1024,i=1024*t.size,n=t.size*t.accuracy*1024,r=yield p(e);let u=r.split(",")[0].match(/:(.*?);/)[1],h=s.JPEG;l(t.type)&&(h=t.type,u=t.type);const f=yield c(r),g=yield m(f,Object.assign({},t));let y,b=.5;const C=[null,null];for(let e=1;e<=7;e++){y=yield a(g,b,h);const t=.75*y.length;if(7===e){(ot)&&(y=[y,...C].filter(e=>e).sort((e,t)=>Math.abs(.75*e.length-i)-Math.abs(.75*t.length-i))[0]);break}if(ot))break;C[0]=y,b+=Math.pow(.5,e+1)}}const k=yield d(y,u);return k.size>e.size?e:k})}}])})},2224:function(e,t,o){"use strict";o.d(t,{A:function(){return T}});var s=o(9114),l=(o(5331),o(694),o(9385)),i=(o(7952),o(650)),a=(o(9104),o(1802)),n=(o(3378),o(47)),r=(o(9648),o(6768)),d=o(5130),c=o(4232);const u={class:"directory-tree-picker"},p={class:"tree-container"},h={key:0,class:"error-state"},m={class:"error-text"},f={class:"node-label"},g={class:"tree-container"},y={key:0,class:"error-state"},b={class:"error-text"},C={class:"node-label"};function k(e,t,o,k,v,w){const F=(0,r.g2)("font-awesome-icon"),L=n.S2,U=a.qk,T=i.Vc,S=l.pw,$=s.A;return(0,r.uX)(),(0,r.CE)("div",u,[w.isDesktop?((0,r.uX)(),(0,r.Wv)(T,{key:0,visible:v.popoverVisible,"onUpdate:visible":t[1]||(t[1]=e=>v.popoverVisible=e),placement:"bottom-start",width:320,trigger:"click","popper-class":"directory-tree-popover","show-arrow":!0,"hide-after":0,"show-after":50,transition:"el-zoom-in-top"},{reference:(0,r.k6)(()=>[(0,r.Lk)("span",{class:"popover-trigger-wrapper",onClick:t[0]||(t[0]=(0,d.D$)(()=>{},["stop"]))},[(0,r.RG)(e.$slots,"trigger",{},void 0,!0)])]),default:(0,r.k6)(()=>[(0,r.bo)(((0,r.uX)(),(0,r.CE)("div",p,[v.error?((0,r.uX)(),(0,r.CE)("div",h,[(0,r.bF)(F,{icon:"exclamation-circle",class:"error-icon"}),(0,r.Lk)("span",m,(0,c.v_)(v.error),1),(0,r.bF)(L,{type:"primary",size:"small",onClick:w.fetchDirectoryTree},{default:(0,r.k6)(()=>[...t[4]||(t[4]=[(0,r.eW)(" 重试 ",-1)])]),_:1},8,["onClick"])])):((0,r.uX)(),(0,r.Wv)(U,{key:1,ref:"treeRef",data:v.treeData,props:v.treeProps,"node-key":"path","default-expand-all":!1,"expand-on-click-node":!1,"highlight-current":!0,"current-node-key":o.currentDirectory,class:"directory-tree",onNodeClick:w.handleNodeClick},{default:(0,r.k6)(({node:e,data:t})=>[(0,r.Lk)("span",{class:(0,c.C4)(["tree-node",{"is-current":t.path===o.currentDirectory}])},[(0,r.bF)(F,{icon:e.expanded?"folder-open":"folder",class:"folder-icon"},null,8,["icon"]),(0,r.Lk)("span",f,(0,c.v_)(t.name),1)],2)]),_:1},8,["data","props","current-node-key","onNodeClick"]))])),[[$,v.loading]])]),_:3},8,["visible"])):((0,r.uX)(),(0,r.CE)(r.FK,{key:1},[(0,r.Lk)("span",{class:"drawer-trigger-wrapper",onClick:t[2]||(t[2]=(...e)=>w.openDrawer&&w.openDrawer(...e))},[(0,r.RG)(e.$slots,"trigger",{},void 0,!0)]),(0,r.bF)(S,{modelValue:v.drawerVisible,"onUpdate:modelValue":t[3]||(t[3]=e=>v.drawerVisible=e),direction:"btt",size:"60%","show-close":!0,"with-header":!0,"z-index":3e3,title:"选择目录",class:"directory-tree-drawer"},{default:(0,r.k6)(()=>[(0,r.bo)(((0,r.uX)(),(0,r.CE)("div",g,[v.error?((0,r.uX)(),(0,r.CE)("div",y,[(0,r.bF)(F,{icon:"exclamation-circle",class:"error-icon"}),(0,r.Lk)("span",b,(0,c.v_)(v.error),1),(0,r.bF)(L,{type:"primary",size:"small",onClick:w.fetchDirectoryTree},{default:(0,r.k6)(()=>[...t[5]||(t[5]=[(0,r.eW)(" 重试 ",-1)])]),_:1},8,["onClick"])])):((0,r.uX)(),(0,r.Wv)(U,{key:1,ref:"treeRefMobile",data:v.treeData,props:v.treeProps,"node-key":"path","default-expand-all":!1,"expand-on-click-node":!1,"highlight-current":!0,"current-node-key":o.currentDirectory,class:"directory-tree mobile-tree",onNodeClick:w.handleNodeClick},{default:(0,r.k6)(({node:e,data:t})=>[(0,r.Lk)("span",{class:(0,c.C4)(["tree-node",{"is-current":t.path===o.currentDirectory}])},[(0,r.bF)(F,{icon:e.expanded?"folder-open":"folder",class:"folder-icon"},null,8,["icon"]),(0,r.Lk)("span",C,(0,c.v_)(t.name),1)],2)]),_:1},8,["data","props","current-node-key","onNodeClick"]))])),[[$,v.loading]])]),_:1},8,["modelValue"])],64))])}var v=o(457),w=o(797),F={name:"DirectoryTreePicker",props:{currentDirectory:{type:String,default:""},source:{type:String,default:"upload",validator:e=>["upload","admin"].includes(e)}},data(){return{popoverVisible:!1,drawerVisible:!1,treeData:[],loading:!1,error:"",treeProps:{children:"children",label:"name"},windowWidth:window.innerWidth}},computed:{isDesktop(){return this.windowWidth>=769}},watch:{popoverVisible(e){e?this.fetchDirectoryTree():setTimeout(()=>{if(!this.popoverVisible&&this.$refs.treeRef){const e=this.$refs.treeRef.store;for(const t in e.nodesMap)e.nodesMap[t].expanded=!1}},200)},drawerVisible(e){e?this.fetchDirectoryTree():setTimeout(()=>{if(!this.drawerVisible&&this.$refs.treeRefMobile){const e=this.$refs.treeRefMobile.store;for(const t in e.nodesMap)e.nodesMap[t].expanded=!1}},300)},currentDirectory(e){this.$nextTick(()=>{this.$refs.treeRef&&e&&this.$refs.treeRef.setCurrentKey(e),this.$refs.treeRefMobile&&e&&this.$refs.treeRefMobile.setCurrentKey(e)})}},mounted(){window.addEventListener("resize",this.handleResize)},beforeUnmount(){window.removeEventListener("resize",this.handleResize)},methods:{handleResize(){this.windowWidth=window.innerWidth},openDrawer(){this.drawerVisible=!0},async fetchDirectoryTree(){this.loading=!0,this.error="";try{let e;if("admin"===this.source){const t=await(0,w.A)("/api/directoryTree",{method:"GET"});if(!t.ok)return void(401===t.status?this.error="认证失败,请重新登录":this.error="服务器错误,请稍后重试");e=await t.json()}else{const t=await v.A.get("/api/directoryTree",{withAuthCode:!0});e=t.data}e.tree?this.treeData=[e.tree]:this.treeData=[]}catch(e){console.error("Failed to fetch directory tree:",e),401===e.response?.status?this.error="认证失败,请重新登录":this.error="加载目录树失败,请检查网络连接"}finally{this.loading=!1}},handleNodeClick(e){let t=e.path;t&&!t.startsWith("/")?t="/"+t:t||(t="/"),this.$emit("select",t),this.popoverVisible=!1,this.drawerVisible=!1}}},L=o(1241);const U=(0,L.A)(F,[["render",k],["__scopeId","data-v-296c1702"]]);var T=U},2388:function(e,t,o){"use strict";function s(e,{strict:t=!0}={}){if(!e||""===e.trim())return{valid:!0};if("/"===e)return{valid:!0};if(!e.startsWith("/"))return{valid:!1,error:'目标目录必须以 "/" 开头'};if(/(?:^|\/)\.\.(\/|$)/.test(e)||e.includes(".."))return{valid:!1,error:'目标目录不能包含路径穿越字符 ".."'};const o=t?/\/\.(\/|$)/:/\/\.\//;if(o.test(e))return{valid:!1,error:'目标目录不能包含单独的 "." 路径段'};if(e.includes("//"))return{valid:!1,error:"目标目录不能包含连续的斜杠"};const s=/[\\:\*\?"'<>\| \(\)\[\]\{\}#%\^`~;@&=\+\$,]/;return s.test(e)?{valid:!1,error:"目标目录包含非法字符,请使用合法的路径格式"}:{valid:!0}}o.d(t,{G:function(){return s}})},2893:function(e,t,o){"use strict";o(5331)},3378:function(e,t,o){"use strict";o(5331),o(8736),o(9899)},3597:function(e,t,o){"use strict";o(5331)},4396:function(e,t,o){"use strict";o(5331),o(4885)},4885:function(e,t,o){"use strict";o(5331)},5385:function(e,t,o){"use strict";o(5331)},5616:function(e,t,o){"use strict";o(5331),o(7197)},5970:function(e,t,o){"use strict";o(5331)},6334:function(e,t,o){e.exports=o(1393)},6682:function(e,t,o){"use strict";e.exports=o.p+"img/404.8ed11fb3.png"},6808:function(e,t,o){"use strict";o(5331),o(8785),o(200),o(5970),o(9104)},7952:function(e,t,o){"use strict";o(5331),o(7197)},8075:function(e,t,o){"use strict";o(5331)},8736:function(e,t,o){"use strict";o(5331)},8785:function(e,t,o){"use strict";o(5331)},8830:function(e,t,o){"use strict";o(5331)},9104:function(e,t,o){"use strict";o(5331)},9899:function(e,t,o){"use strict";o(5331)}}]); +//# sourceMappingURL=559.09c9efe1.js.map \ No newline at end of file diff --git a/js/559.09c9efe1.js.gz b/js/559.09c9efe1.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..1006a20e3b2fc43077e51c0556aa0eaa10817ae3 GIT binary patch literal 25893 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 M0a%JrvZ-VN0JOA$&Hw-a literal 0 HcmV?d00001 diff --git a/js/559.09c9efe1.js.map b/js/559.09c9efe1.js.map new file mode 100644 index 00000000..21ebba5b --- /dev/null +++ b/js/559.09c9efe1.js.map @@ -0,0 +1 @@ +{"version":3,"file":"js/559.09c9efe1.js","mappings":"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","sources":["webpack://sanyue_imghub/./src/utils/fetchWithAuth.js","webpack://sanyue_imghub/./src/components/upload/UploadHistory.vue?f0ab","webpack://sanyue_imghub/./src/components/upload/UploadHistory.vue","webpack://sanyue_imghub/./src/components/upload/UploadHistory.vue?d5f5","webpack://sanyue_imghub/./src/components/upload/UploadSettingsDialog.vue?9e07","webpack://sanyue_imghub/./src/components/upload/UploadSettingsDialog.vue","webpack://sanyue_imghub/./src/components/upload/UploadSettingsDialog.vue?adb2","webpack://sanyue_imghub/./src/components/upload/UploadFileItem.vue?32aa","webpack://sanyue_imghub/./src/components/upload/UploadFileItem.vue","webpack://sanyue_imghub/./src/components/upload/UploadFileItem.vue?420c","webpack://sanyue_imghub/./src/components/upload/UploadForm.vue?12e4","webpack://sanyue_imghub/./src/utils/upload/urlBuilder.js","webpack://sanyue_imghub/./src/utils/upload/sha256.js","webpack://sanyue_imghub/./src/components/upload/UploadForm.vue","webpack://sanyue_imghub/./src/components/upload/UploadForm.vue?bdbd","webpack://sanyue_imghub/./src/components/DirectorySuggestionInput.vue?613a","webpack://sanyue_imghub/./src/components/DirectorySuggestionInput.vue","webpack://sanyue_imghub/./src/components/DirectorySuggestionInput.vue?69c3","webpack://sanyue_imghub/./src/views/UploadHome.vue?1d08","webpack://sanyue_imghub/./src/views/UploadHome.vue","webpack://sanyue_imghub/./src/views/UploadHome.vue?af00","webpack://sanyue_imghub/./node_modules/image-conversion/build/conversion.js","webpack://sanyue_imghub/./src/components/DirectoryTreePicker.vue?0bf9","webpack://sanyue_imghub/./src/components/DirectoryTreePicker.vue","webpack://sanyue_imghub/./src/components/DirectoryTreePicker.vue?6984","webpack://sanyue_imghub/./src/utils/pathValidator.js","webpack://sanyue_imghub/./node_modules/image-conversion/index.js"],"sourcesContent":["import store from '@/store'\r\nimport { ElMessage } from 'element-plus'\r\nimport router from '@/router'\r\n\r\nexport default async function fetchWithAuth(url, options = {}) {\r\n // 开发环境下添加 /api 前缀\r\n url = process.env.NODE_ENV === 'production' ? url : `/api${url}`;\r\n\r\n const credentials = store.getters.credentials || btoa('unset:unset');\r\n\r\n // 设置 Authorization 头\r\n options.headers = {\r\n ...options.headers,\r\n 'Authorization': `Basic ${credentials}`\r\n };\r\n // 确保包含凭据,如 cookies\r\n options.credentials = 'include'; \r\n\r\n const response = await fetch(url, options);\r\n\r\n if (response.status === 401) {\r\n // Redirect to the login page if a 401 Unauthorized is returned\r\n ElMessage.error('认证状态错误,请重新登录');\r\n router.push('/adminLogin'); \r\n }\r\n\r\n return response;\r\n}\r\n","import { createElementVNode as _createElementVNode, toDisplayString as _toDisplayString, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass } from \"vue\";\nconst _hoisted_1 = {\n class: \"history-header\"\n};\nconst _hoisted_2 = {\n class: \"header-left\"\n};\nconst _hoisted_3 = {\n class: \"record-count\"\n};\nconst _hoisted_4 = {\n class: \"header-right\"\n};\nconst _hoisted_5 = {\n class: \"timeline-header\"\n};\nconst _hoisted_6 = {\n class: \"date-label\"\n};\nconst _hoisted_7 = {\n key: 0,\n class: \"grid-view\"\n};\nconst _hoisted_8 = {\n class: \"grid-preview\"\n};\nconst _hoisted_9 = [\"src\"];\nconst _hoisted_10 = [\"src\"];\nconst _hoisted_11 = {\n key: 2,\n class: \"file-icon-wrapper\"\n};\nconst _hoisted_12 = {\n class: \"grid-overlay\"\n};\nconst _hoisted_13 = {\n class: \"grid-actions\"\n};\nconst _hoisted_14 = {\n class: \"grid-info\"\n};\nconst _hoisted_15 = [\"title\"];\nconst _hoisted_16 = {\n class: \"upload-time\"\n};\nconst _hoisted_17 = {\n key: 1,\n class: \"list-view\"\n};\nconst _hoisted_18 = {\n class: \"list-preview\"\n};\nconst _hoisted_19 = [\"src\"];\nconst _hoisted_20 = [\"src\"];\nconst _hoisted_21 = {\n key: 2,\n class: \"file-icon-wrapper-small\"\n};\nconst _hoisted_22 = {\n class: \"list-info\"\n};\nconst _hoisted_23 = [\"title\"];\nconst _hoisted_24 = [\"title\"];\nconst _hoisted_25 = {\n class: \"list-meta\"\n};\nconst _hoisted_26 = {\n class: \"upload-time\"\n};\nconst _hoisted_27 = {\n class: \"list-actions\"\n};\nconst _hoisted_28 = {\n key: 0,\n class: \"load-more-container\"\n};\nconst _hoisted_29 = {\n key: 0,\n class: \"loading-indicator\"\n};\nconst _hoisted_30 = {\n key: 1,\n class: \"load-more-hint\"\n};\nconst _hoisted_31 = {\n key: 1,\n class: \"no-more-hint\"\n};\nconst _hoisted_32 = {\n key: 1,\n class: \"empty-state\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n return _openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\"history-container\", {\n 'active': $props.show\n }])\n }, [_createElementVNode(\"div\", _hoisted_1, [_createElementVNode(\"div\", _hoisted_2, [_cache[4] || (_cache[4] = _createElementVNode(\"h2\", null, \"历史记录\", -1)), _createElementVNode(\"span\", _hoisted_3, \"共 \" + _toDisplayString($data.totalCount) + \" 条\", 1)]), _createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_tooltip, {\n content: \"切换视图\",\n placement: \"bottom\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n circle: \"\",\n onClick: $options.toggleViewMode\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: $data.viewMode === 'grid' ? 'list' : 'th-large'\n }, null, 8, [\"icon\"])]),\n _: 1\n }, 8, [\"onClick\"])]),\n _: 1\n }), _createVNode(_component_el_tooltip, {\n content: \"清空记录\",\n placement: \"bottom\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n circle: \"\",\n type: \"danger\",\n onClick: $options.clearHistory\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\"\n })]),\n _: 1\n }, 8, [\"onClick\"])]),\n _: 1\n }), _createVNode(_component_el_button, {\n circle: \"\",\n onClick: _cache[0] || (_cache[0] = $event => _ctx.$emit('close'))\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"times\"\n })]),\n _: 1\n })])]), $data.historyList.length > 0 ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: \"history-content\",\n ref: \"historyContent\",\n onScroll: _cache[3] || (_cache[3] = (...args) => $options.handleScroll && $options.handleScroll(...args))\n }, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($options.groupedHistory, group => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: group.date,\n class: \"history-group\"\n }, [_createElementVNode(\"div\", _hoisted_5, [_cache[5] || (_cache[5] = _createElementVNode(\"div\", {\n class: \"timeline-dot\"\n }, null, -1)), _createElementVNode(\"span\", _hoisted_6, _toDisplayString(group.date), 1)]), $data.viewMode === 'grid' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList(group.items, item => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: item.time,\n class: \"grid-item\"\n }, [_createElementVNode(\"div\", _hoisted_8, [$options.isImage(item.name) ? (_openBlock(), _createElementBlock(\"img\", {\n key: 0,\n src: item.url,\n loading: \"lazy\",\n onError: _cache[1] || (_cache[1] = (...args) => $options.handleImageError && $options.handleImageError(...args))\n }, null, 40, _hoisted_9)) : $options.isVideo(item.name) ? (_openBlock(), _createElementBlock(\"video\", {\n key: 1,\n src: item.url,\n muted: \"\"\n }, null, 8, _hoisted_10)) : (_openBlock(), _createElementBlock(\"div\", _hoisted_11, [_createVNode(_component_font_awesome_icon, {\n icon: \"file\",\n class: \"file-icon\"\n })])), _createElementVNode(\"div\", _hoisted_12, [_createElementVNode(\"div\", _hoisted_13, [_createVNode(_component_el_button, {\n circle: \"\",\n size: \"default\",\n type: \"primary\",\n onClick: $event => $options.copyLink(item.url)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"copy\"\n })]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n circle: \"\",\n size: \"default\",\n class: \"action-btn-view\",\n onClick: $event => $options.openLink(item.url)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"external-link-alt\"\n })]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n circle: \"\",\n size: \"default\",\n type: \"danger\",\n onClick: $event => $options.deleteItem(item)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\"\n })]),\n _: 1\n }, 8, [\"onClick\"])])])]), _createElementVNode(\"div\", _hoisted_14, [_createElementVNode(\"div\", {\n class: \"file-name\",\n title: item.name\n }, _toDisplayString(item.name), 9, _hoisted_15), _createElementVNode(\"div\", _hoisted_16, _toDisplayString($options.formatTime(item.time)), 1)])]);\n }), 128))])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_17, [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList(group.items, item => {\n return _openBlock(), _createElementBlock(\"div\", {\n key: item.time,\n class: \"list-item\"\n }, [_createElementVNode(\"div\", _hoisted_18, [$options.isImage(item.name) ? (_openBlock(), _createElementBlock(\"img\", {\n key: 0,\n src: item.url,\n loading: \"lazy\",\n onError: _cache[2] || (_cache[2] = (...args) => $options.handleImageError && $options.handleImageError(...args))\n }, null, 40, _hoisted_19)) : $options.isVideo(item.name) ? (_openBlock(), _createElementBlock(\"video\", {\n key: 1,\n src: item.url,\n muted: \"\"\n }, null, 8, _hoisted_20)) : (_openBlock(), _createElementBlock(\"div\", _hoisted_21, [_createVNode(_component_font_awesome_icon, {\n icon: \"file\"\n })]))]), _createElementVNode(\"div\", _hoisted_22, [_createElementVNode(\"div\", {\n class: \"file-name\",\n title: item.name\n }, _toDisplayString(item.name), 9, _hoisted_23), _createElementVNode(\"div\", {\n class: \"file-url\",\n title: item.url\n }, _toDisplayString(item.url), 9, _hoisted_24)]), _createElementVNode(\"div\", _hoisted_25, [_createElementVNode(\"div\", _hoisted_26, _toDisplayString($options.formatTime(item.time)), 1)]), _createElementVNode(\"div\", _hoisted_27, [_createVNode(_component_el_button, {\n circle: \"\",\n size: \"small\",\n type: \"primary\",\n onClick: $event => $options.copyLink(item.url)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"copy\"\n })]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n circle: \"\",\n size: \"small\",\n class: \"action-btn-view\",\n onClick: $event => $options.openLink(item.url)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"external-link-alt\"\n })]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_button, {\n circle: \"\",\n size: \"small\",\n type: \"danger\",\n onClick: $event => $options.deleteItem(item)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\"\n })]),\n _: 1\n }, 8, [\"onClick\"])])]);\n }), 128))]))]);\n }), 128)), $options.hasMore ? (_openBlock(), _createElementBlock(\"div\", _hoisted_28, [$data.loadingMore ? (_openBlock(), _createElementBlock(\"div\", _hoisted_29, [_createVNode(_component_font_awesome_icon, {\n icon: \"spinner\",\n spin: \"\"\n }), _cache[6] || (_cache[6] = _createElementVNode(\"span\", null, \"加载中...\", -1))])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_30, \"下拉加载更多\"))])) : $data.historyList.length > 0 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_31, \"没有更多记录了\")) : _createCommentVNode(\"\", true)], 544)) : (_openBlock(), _createElementBlock(\"div\", _hoisted_32, [_createVNode(_component_font_awesome_icon, {\n icon: \"history\",\n class: \"empty-icon\"\n }), _cache[7] || (_cache[7] = _createElementVNode(\"p\", null, \"暂无上传记录\", -1))]))], 2);\n}","import \"core-js/modules/es.array.push.js\";\nimport \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nimport \"core-js/modules/es.iterator.for-each.js\";\nimport \"core-js/modules/es.iterator.map.js\";\nimport \"core-js/modules/es.json.stringify.js\";\nimport \"core-js/modules/esnext.json.parse.js\";\nexport default {\n name: 'UploadHistory',\n props: {\n show: {\n type: Boolean,\n default: false\n }\n },\n data() {\n return {\n historyList: [],\n allHistory: [],\n // 完整历史记录\n viewMode: 'grid',\n // 'grid' or 'list'\n pageSize: 30,\n // 每次加载数量\n currentPage: 0,\n loadingMore: false,\n totalCount: 0\n };\n },\n watch: {\n show(val) {\n if (val) {\n this.resetAndLoad();\n }\n }\n },\n computed: {\n hasMore() {\n return this.historyList.length < this.totalCount;\n },\n groupedHistory() {\n const groups = {};\n this.historyList.forEach(item => {\n const date = new Date(item.time);\n const dateStr = `${date.getFullYear()}-${String(date.getMonth() + 1).padStart(2, '0')}-${String(date.getDate()).padStart(2, '0')}`;\n if (!groups[dateStr]) {\n groups[dateStr] = [];\n }\n groups[dateStr].push(item);\n });\n\n // Sort dates descending\n return Object.keys(groups).sort((a, b) => new Date(b) - new Date(a)).map(date => ({\n date,\n items: groups[date]\n }));\n }\n },\n mounted() {\n // Load view mode preference\n const savedMode = localStorage.getItem('historyViewMode');\n if (savedMode) {\n this.viewMode = savedMode;\n }\n },\n methods: {\n resetAndLoad() {\n this.historyList = [];\n this.currentPage = 0;\n this.loadAllHistory();\n this.loadMore();\n },\n loadAllHistory() {\n try {\n const history = JSON.parse(localStorage.getItem('uploadHistory') || '[]');\n // Sort by time desc\n this.allHistory = history.sort((a, b) => b.time - a.time);\n this.totalCount = this.allHistory.length;\n } catch (e) {\n console.error('Failed to load history', e);\n this.allHistory = [];\n this.totalCount = 0;\n }\n },\n loadMore() {\n if (this.loadingMore || !this.hasMore) return;\n this.loadingMore = true;\n\n // 模拟异步加载,避免阻塞UI\n setTimeout(() => {\n const start = this.currentPage * this.pageSize;\n const end = start + this.pageSize;\n const newItems = this.allHistory.slice(start, end);\n this.historyList = [...this.historyList, ...newItems];\n this.currentPage++;\n this.loadingMore = false;\n }, 50);\n },\n handleScroll(e) {\n const container = e.target;\n const scrollTop = container.scrollTop;\n const scrollHeight = container.scrollHeight;\n const clientHeight = container.clientHeight;\n\n // 距离底部 100px 时加载更多\n if (scrollHeight - scrollTop - clientHeight < 100) {\n this.loadMore();\n }\n },\n toggleViewMode() {\n this.viewMode = this.viewMode === 'grid' ? 'list' : 'grid';\n localStorage.setItem('historyViewMode', this.viewMode);\n },\n clearHistory() {\n this.$confirm('确定要清空所有上传记录吗?', '提示', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning'\n }).then(() => {\n this.historyList = [];\n this.allHistory = [];\n this.totalCount = 0;\n this.currentPage = 0;\n localStorage.removeItem('uploadHistory');\n this.$message.success('记录已清空');\n }).catch(() => {});\n },\n deleteItem(item) {\n this.$confirm('确定要删除这条记录吗?', '提示', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning'\n }).then(() => {\n // Remove from lists\n this.historyList = this.historyList.filter(i => i.time !== item.time);\n this.allHistory = this.allHistory.filter(i => i.time !== item.time);\n this.totalCount = this.allHistory.length;\n\n // Update localStorage\n try {\n localStorage.setItem('uploadHistory', JSON.stringify(this.allHistory));\n this.$message.success('记录已删除');\n } catch (e) {\n console.error('Failed to update history', e);\n }\n }).catch(() => {});\n },\n isImage(fileName) {\n const imageExtensions = ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp', 'svg', 'tiff', 'ico', 'avif', 'heic', 'jfif', 'pjpeg', 'pjp'];\n const extension = fileName ? fileName.split('.').pop().toLowerCase() : '';\n return imageExtensions.includes(extension);\n },\n isVideo(fileName) {\n const videoExtensions = ['mp4', 'webm', 'ogg', 'mkv'];\n const extension = fileName ? fileName.split('.').pop().toLowerCase() : '';\n return videoExtensions.includes(extension);\n },\n formatTime(timestamp) {\n const date = new Date(timestamp);\n const year = date.getFullYear();\n const month = String(date.getMonth() + 1).padStart(2, '0');\n const day = String(date.getDate()).padStart(2, '0');\n const hours = String(date.getHours()).padStart(2, '0');\n const minutes = String(date.getMinutes()).padStart(2, '0');\n const seconds = String(date.getSeconds()).padStart(2, '0');\n return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;\n },\n copyLink(url) {\n navigator.clipboard.writeText(url).then(() => {\n this.$message.success('链接已复制');\n }).catch(() => {\n this.$message.error('复制失败');\n });\n },\n openLink(url) {\n window.open(url, '_blank');\n },\n handleImageError(e) {\n e.target.src = require('@/assets/404.png');\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./UploadHistory.vue?vue&type=template&id=05a2ac54&scoped=true\"\nimport script from \"./UploadHistory.vue?vue&type=script&lang=js\"\nexport * from \"./UploadHistory.vue?vue&type=script&lang=js\"\n\nimport \"./UploadHistory.vue?vue&type=style&index=0&id=05a2ac54&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-05a2ac54\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, withCtx as _withCtx, createTextVNode as _createTextVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode } from \"vue\";\nconst _hoisted_1 = {\n class: \"dialog-section\"\n};\nconst _hoisted_2 = {\n class: \"section-content\"\n};\nconst _hoisted_3 = {\n class: \"setting-item\"\n};\nconst _hoisted_4 = {\n key: 0,\n class: \"setting-item\"\n};\nconst _hoisted_5 = {\n class: \"setting-label\"\n};\nconst _hoisted_6 = {\n class: \"setting-item\"\n};\nconst _hoisted_7 = {\n class: \"setting-item\"\n};\nconst _hoisted_8 = {\n class: \"setting-label\"\n};\nconst _hoisted_9 = {\n class: \"dialog-section\"\n};\nconst _hoisted_10 = {\n class: \"section-content\"\n};\nconst _hoisted_11 = {\n class: \"dialog-section\"\n};\nconst _hoisted_12 = {\n class: \"section-header\"\n};\nconst _hoisted_13 = {\n class: \"section-content\"\n};\nconst _hoisted_14 = {\n class: \"setting-item\"\n};\nconst _hoisted_15 = {\n class: \"setting-label\"\n};\nconst _hoisted_16 = {\n class: \"setting-item\"\n};\nconst _hoisted_17 = {\n key: 0,\n class: \"setting-item slider-item\"\n};\nconst _hoisted_18 = {\n class: \"setting-label\"\n};\nconst _hoisted_19 = {\n class: \"slider-wrapper\"\n};\nconst _hoisted_20 = {\n class: \"slider-input-wrapper\"\n};\nconst _hoisted_21 = {\n key: 1,\n class: \"setting-item slider-item\"\n};\nconst _hoisted_22 = {\n class: \"setting-label\"\n};\nconst _hoisted_23 = {\n class: \"slider-wrapper\"\n};\nconst _hoisted_24 = {\n class: \"slider-input-wrapper\"\n};\nconst _hoisted_25 = {\n key: 0,\n class: \"dialog-section\"\n};\nconst _hoisted_26 = {\n class: \"section-header\"\n};\nconst _hoisted_27 = {\n class: \"section-content\"\n};\nconst _hoisted_28 = {\n class: \"setting-item\"\n};\nconst _hoisted_29 = {\n class: \"dialog-action\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_radio = _resolveComponent(\"el-radio\");\n const _component_el_radio_group = _resolveComponent(\"el-radio-group\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n const _component_el_option = _resolveComponent(\"el-option\");\n const _component_el_select = _resolveComponent(\"el-select\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_switch = _resolveComponent(\"el-switch\");\n const _component_el_slider = _resolveComponent(\"el-slider\");\n const _component_el_input_number = _resolveComponent(\"el-input-number\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n return _openBlock(), _createBlock(_component_el_dialog, {\n title: \"上传设置\",\n modelValue: $options.visible,\n \"onUpdate:modelValue\": _cache[12] || (_cache[12] = $event => $options.visible = $event),\n width: $options.dialogWidth,\n \"show-close\": false,\n class: \"settings-dialog\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_1, [_cache[22] || (_cache[22] = _createElementVNode(\"div\", {\n class: \"section-header\"\n }, [_createElementVNode(\"span\", {\n class: \"section-title\"\n }, \"上传渠道\")], -1)), _createElementVNode(\"div\", _hoisted_2, [_createElementVNode(\"div\", _hoisted_3, [_cache[18] || (_cache[18] = _createElementVNode(\"span\", {\n class: \"setting-label\"\n }, \"渠道类型\", -1)), _createVNode(_component_el_radio_group, {\n \"model-value\": $props.uploadChannel,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => _ctx.$emit('update:uploadChannel', $event)),\n class: \"radio-card-group compact\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_radio, {\n label: \"telegram\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"paper-plane\",\n class: \"channel-icon\"\n }), _cache[13] || (_cache[13] = _createElementVNode(\"span\", null, \"TG\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"cfr2\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"cloud\",\n class: \"channel-icon\"\n }), _cache[14] || (_cache[14] = _createElementVNode(\"span\", null, \"R2\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"s3\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"database\",\n class: \"channel-icon\"\n }), _cache[15] || (_cache[15] = _createElementVNode(\"span\", null, \"S3\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"discord\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"comments\",\n class: \"channel-icon\"\n }), _cache[16] || (_cache[16] = _createElementVNode(\"span\", null, \"DC\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"huggingface\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"robot\",\n class: \"channel-icon\"\n }), _cache[17] || (_cache[17] = _createElementVNode(\"span\", null, \"HF\", -1))]),\n _: 1\n })]),\n _: 1\n }, 8, [\"model-value\"])]), $props.currentChannelList.length > 1 ? (_openBlock(), _createElementBlock(\"div\", _hoisted_4, [_createElementVNode(\"span\", _hoisted_5, [_cache[19] || (_cache[19] = _createTextVNode(\" 渠道名称 \", -1)), _createVNode(_component_el_tooltip, {\n content: \"选择具体的渠道名称,不选择则使用负载均衡或默认渠道\",\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"inline-help-icon\"\n })]),\n _: 1\n })]), _createVNode(_component_el_select, {\n \"model-value\": $props.channelName,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => _ctx.$emit('update:channelName', $event)),\n placeholder: \"自动选择\",\n clearable: \"\",\n class: \"setting-input\"\n }, {\n default: _withCtx(() => [(_openBlock(true), _createElementBlock(_Fragment, null, _renderList($props.currentChannelList, ch => {\n return _openBlock(), _createBlock(_component_el_option, {\n key: ch.name,\n label: ch.name,\n value: ch.name\n }, null, 8, [\"label\", \"value\"]);\n }), 128))]),\n _: 1\n }, 8, [\"model-value\"])])) : _createCommentVNode(\"\", true), _createElementVNode(\"div\", _hoisted_6, [_cache[20] || (_cache[20] = _createElementVNode(\"span\", {\n class: \"setting-label\"\n }, \"上传目录\", -1)), _createVNode(_component_el_input, {\n \"model-value\": $props.uploadFolder,\n \"onUpdate:modelValue\": $options.handleUploadFolderInput,\n placeholder: \"请输入上传目录路径\",\n class: \"setting-input\"\n }, null, 8, [\"model-value\", \"onUpdate:modelValue\"])]), _createElementVNode(\"div\", _hoisted_7, [_createElementVNode(\"span\", _hoisted_8, [_cache[21] || (_cache[21] = _createTextVNode(\" 自动切换 \", -1)), _createVNode(_component_el_tooltip, {\n content: \"对于非分块上传文件,上传失败自动切换到其他渠道上传\",\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"inline-help-icon\"\n })]),\n _: 1\n })]), _createVNode(_component_el_switch, {\n \"model-value\": $props.autoRetry,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => _ctx.$emit('update:autoRetry', $event))\n }, null, 8, [\"model-value\"])])])]), _createElementVNode(\"div\", _hoisted_9, [_cache[27] || (_cache[27] = _createElementVNode(\"div\", {\n class: \"section-header\"\n }, [_createElementVNode(\"span\", {\n class: \"section-title\"\n }, \"文件命名方式\")], -1)), _createElementVNode(\"div\", _hoisted_10, [_createVNode(_component_el_radio_group, {\n \"model-value\": $props.uploadNameType,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => _ctx.$emit('update:uploadNameType', $event)),\n class: \"radio-card-group grid-2x2\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_radio, {\n label: \"default\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"cog\",\n class: \"radio-icon\"\n }), _cache[23] || (_cache[23] = _createElementVNode(\"span\", null, \"默认\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"index\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"hashtag\",\n class: \"radio-icon\"\n }), _cache[24] || (_cache[24] = _createElementVNode(\"span\", null, \"仅前缀\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"origin\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"file-signature\",\n class: \"radio-icon\"\n }), _cache[25] || (_cache[25] = _createElementVNode(\"span\", null, \"仅原名\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n label: \"short\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"compress-alt\",\n class: \"radio-icon\"\n }), _cache[26] || (_cache[26] = _createElementVNode(\"span\", null, \"短链接\", -1))]),\n _: 1\n })]),\n _: 1\n }, 8, [\"model-value\"])])]), _createElementVNode(\"div\", _hoisted_11, [_createElementVNode(\"div\", _hoisted_12, [_cache[28] || (_cache[28] = _createElementVNode(\"span\", {\n class: \"section-title\"\n }, \"文件预处理\", -1)), _createVNode(_component_el_tooltip, {\n content: \"上传前在本地进行格式转换和压缩,仅对图片文件生效\",\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"section-help-icon\"\n })]),\n _: 1\n })]), _createElementVNode(\"div\", _hoisted_13, [_createElementVNode(\"div\", _hoisted_14, [_createElementVNode(\"span\", _hoisted_15, [_cache[29] || (_cache[29] = _createTextVNode(\" 转换为WebP \", -1)), _createVNode(_component_el_tooltip, {\n content: \"上传前将图片转换为WebP格式,可有效减小文件体积。转换失败时保持原格式上传\",\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"inline-help-icon\"\n })]),\n _: 1\n })]), _createVNode(_component_el_switch, {\n \"model-value\": $props.convertToWebp,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = $event => _ctx.$emit('update:convertToWebp', $event))\n }, null, 8, [\"model-value\"])]), _createElementVNode(\"div\", _hoisted_16, [_cache[30] || (_cache[30] = _createElementVNode(\"span\", {\n class: \"setting-label\"\n }, \"文件压缩\", -1)), _createVNode(_component_el_switch, {\n \"model-value\": $props.customerCompress,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => _ctx.$emit('update:customerCompress', $event))\n }, null, 8, [\"model-value\"])]), $props.customerCompress ? (_openBlock(), _createElementBlock(\"div\", _hoisted_17, [_createElementVNode(\"span\", _hoisted_18, [_cache[31] || (_cache[31] = _createTextVNode(\" 压缩阈值 \", -1)), _createVNode(_component_el_tooltip, {\n content: \"设置图片大小阈值,超过此值将自动压缩,单位MB\",\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"inline-help-icon\"\n })]),\n _: 1\n })]), _createElementVNode(\"div\", _hoisted_19, [_createVNode(_component_el_slider, {\n \"model-value\": $props.compressBar,\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = $event => _ctx.$emit('update:compressBar', $event)),\n min: 1,\n max: 20,\n \"format-tooltip\": value => `${value} MB`\n }, null, 8, [\"model-value\", \"format-tooltip\"]), _createElementVNode(\"div\", _hoisted_20, [_createVNode(_component_el_input_number, {\n \"model-value\": $props.compressBar,\n \"onUpdate:modelValue\": _cache[7] || (_cache[7] = $event => _ctx.$emit('update:compressBar', $event)),\n min: 1,\n max: 20,\n step: 1,\n \"value-on-clear\": 1,\n class: \"slider-input\",\n \"controls-position\": \"right\"\n }, null, 8, [\"model-value\"]), _cache[32] || (_cache[32] = _createElementVNode(\"span\", {\n class: \"slider-unit\"\n }, \"MB\", -1))])])])) : _createCommentVNode(\"\", true), $props.customerCompress ? (_openBlock(), _createElementBlock(\"div\", _hoisted_21, [_createElementVNode(\"span\", _hoisted_22, [_cache[33] || (_cache[33] = _createTextVNode(\" 期望大小 \", -1)), _createVNode(_component_el_tooltip, {\n content: \"设置压缩后图片大小期望值,单位MB\",\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"inline-help-icon\"\n })]),\n _: 1\n })]), _createElementVNode(\"div\", _hoisted_23, [_createVNode(_component_el_slider, {\n \"model-value\": $props.compressQuality,\n \"onUpdate:modelValue\": _cache[8] || (_cache[8] = $event => _ctx.$emit('update:compressQuality', $event)),\n min: 0.5,\n max: $props.compressBar,\n step: 0.1,\n \"format-tooltip\": value => `${value} MB`\n }, null, 8, [\"model-value\", \"max\", \"format-tooltip\"]), _createElementVNode(\"div\", _hoisted_24, [_createVNode(_component_el_input_number, {\n \"model-value\": $props.compressQuality,\n \"onUpdate:modelValue\": _cache[9] || (_cache[9] = $event => _ctx.$emit('update:compressQuality', $event)),\n min: 0.5,\n max: $props.compressBar,\n step: 0.1,\n precision: 1,\n \"value-on-clear\": 0.5,\n class: \"slider-input\",\n \"controls-position\": \"right\"\n }, null, 8, [\"model-value\", \"max\"]), _cache[34] || (_cache[34] = _createElementVNode(\"span\", {\n class: \"slider-unit\"\n }, \"MB\", -1))])])])) : _createCommentVNode(\"\", true)])]), $props.uploadChannel === 'telegram' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_25, [_createElementVNode(\"div\", _hoisted_26, [_cache[35] || (_cache[35] = _createElementVNode(\"span\", {\n class: \"section-title\"\n }, \"服务端压缩\", -1)), _createVNode(_component_el_tooltip, {\n content: \"1. 在 Telegram 端进行压缩,仅对上传渠道为 Telegram 的图片文件生效
2. 若图片大小(本地压缩后大小)大于10MB,本设置自动失效
3. 若上传分辨率过大、透明背景等图片,建议关闭服务端压缩,否则可能出现未知问题\",\n placement: \"top\",\n \"raw-content\": \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"section-help-icon\"\n })]),\n _: 1\n })]), _createElementVNode(\"div\", _hoisted_27, [_createElementVNode(\"div\", _hoisted_28, [_cache[36] || (_cache[36] = _createElementVNode(\"span\", {\n class: \"setting-label\"\n }, \"开启压缩\", -1)), _createVNode(_component_el_switch, {\n \"model-value\": $props.serverCompress,\n \"onUpdate:modelValue\": _cache[10] || (_cache[10] = $event => _ctx.$emit('update:serverCompress', $event))\n }, null, 8, [\"model-value\"])])])])) : _createCommentVNode(\"\", true), _createElementVNode(\"div\", _hoisted_29, [_createVNode(_component_el_button, {\n type: \"primary\",\n onClick: _cache[11] || (_cache[11] = $event => $options.visible = false),\n class: \"confirm-btn\"\n }, {\n default: _withCtx(() => [...(_cache[37] || (_cache[37] = [_createTextVNode(\"确定\", -1)]))]),\n _: 1\n })])]),\n _: 1\n }, 8, [\"modelValue\", \"width\"]);\n}","export default {\n name: 'UploadSettingsDialog',\n methods: {\n handleUploadFolderInput(val) {\n // 自动补全前导 /\n if (val && !val.startsWith('/')) {\n val = '/' + val;\n }\n this.$emit('update:uploadFolder', val);\n }\n },\n props: {\n modelValue: {\n type: Boolean,\n default: false\n },\n uploadChannel: {\n type: String,\n default: 'telegram'\n },\n channelName: {\n type: String,\n default: ''\n },\n currentChannelList: {\n type: Array,\n default: () => []\n },\n uploadFolder: {\n type: String,\n default: ''\n },\n autoRetry: {\n type: Boolean,\n default: true\n },\n uploadNameType: {\n type: String,\n default: 'default'\n },\n convertToWebp: {\n type: Boolean,\n default: false\n },\n customerCompress: {\n type: Boolean,\n default: true\n },\n compressBar: {\n type: Number,\n default: 5\n },\n compressQuality: {\n type: Number,\n default: 4\n },\n serverCompress: {\n type: Boolean,\n default: true\n }\n },\n emits: ['update:modelValue', 'update:uploadChannel', 'update:channelName', 'update:uploadFolder', 'update:autoRetry', 'update:uploadNameType', 'update:convertToWebp', 'update:customerCompress', 'update:compressBar', 'update:compressQuality', 'update:serverCompress'],\n computed: {\n visible: {\n get() {\n return this.modelValue;\n },\n set(val) {\n this.$emit('update:modelValue', val);\n }\n },\n dialogWidth() {\n return window.innerWidth > 768 ? '50%' : '90%';\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./UploadSettingsDialog.vue?vue&type=template&id=73f86595\"\nimport script from \"./UploadSettingsDialog.vue?vue&type=script&lang=js\"\nexport * from \"./UploadSettingsDialog.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, withCtx as _withCtx } from \"vue\";\nconst _hoisted_1 = {\n class: \"upload-list-item\"\n};\nconst _hoisted_2 = [\"href\"];\nconst _hoisted_3 = {\n key: 0,\n style: {\n \"width\": \"10vw\",\n \"border-radius\": \"12px\"\n },\n autoplay: \"\",\n muted: \"\",\n playsinline: \"\",\n loop: \"\"\n};\nconst _hoisted_4 = [\"src\"];\nconst _hoisted_5 = [\"src\"];\nconst _hoisted_6 = {\n key: 2,\n style: {\n \"width\": \"10vw\",\n \"border-radius\": \"12px\"\n }\n};\nconst _hoisted_7 = {\n class: \"upload-list-item-content\"\n};\nconst _hoisted_8 = {\n class: \"upload-list-item-name-wrapper\"\n};\nconst _hoisted_9 = {\n key: 0,\n class: \"upload-list-item-url\"\n};\nconst _hoisted_10 = {\n class: \"upload-list-item-url-row\"\n};\nconst _hoisted_11 = {\n class: \"upload-list-item-url-row\"\n};\nconst _hoisted_12 = {\n key: 1,\n class: \"upload-list-item-progress\"\n};\nconst _hoisted_13 = {\n class: \"upload-list-item-action\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_text = _resolveComponent(\"el-text\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_progress = _resolveComponent(\"el-progress\");\n const _component_Link = _resolveComponent(\"Link\");\n const _component_el_icon = _resolveComponent(\"el-icon\");\n const _component_Delete = _resolveComponent(\"Delete\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createElementVNode(\"a\", {\n href: $props.file.url,\n target: \"_blank\",\n class: \"upload-list-item-preview\"\n }, [$options.isVideo($props.file.name) ? (_openBlock(), _createElementBlock(\"video\", _hoisted_3, [_createElementVNode(\"source\", {\n src: $props.file.url,\n type: \"video/mp4\"\n }, null, 8, _hoisted_4), _cache[7] || (_cache[7] = _createTextVNode(\" Your browser does not support the video tag. \", -1))])) : $options.isImage($props.file.name) ? (_openBlock(), _createElementBlock(\"img\", {\n key: 1,\n style: {\n \"width\": \"10vw\",\n \"border-radius\": \"12px\"\n },\n src: $props.file.url,\n onError: _cache[0] || (_cache[0] = $event => _ctx.$emit('preview-error', $props.file))\n }, null, 40, _hoisted_5)) : (_openBlock(), _createElementBlock(\"div\", _hoisted_6, [_createVNode(_component_font_awesome_icon, {\n icon: \"file\",\n class: \"file-icon\"\n })]))], 8, _hoisted_2), _createElementVNode(\"div\", _hoisted_7, [_createElementVNode(\"div\", _hoisted_8, [_createVNode(_component_el_text, {\n class: \"upload-list-item-name\",\n truncated: \"\"\n }, {\n default: _withCtx(() => [_createTextVNode(_toDisplayString($options.truncateFilename($props.file.name)), 1)]),\n _: 1\n })]), $props.file.status === 'done' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_9, [_createElementVNode(\"div\", _hoisted_10, [_createVNode(_component_el_input, {\n modelValue: $props.file.finalURL,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $props.file.finalURL = $event),\n readonly: \"\",\n onClick: $options.selectAllText,\n size: $options.urlSize\n }, {\n prepend: _withCtx(() => [...(_cache[8] || (_cache[8] = [_createTextVNode(\"URL\", -1)]))]),\n _: 1\n }, 8, [\"modelValue\", \"onClick\", \"size\"]), _createVNode(_component_el_input, {\n modelValue: $props.file.mdURL,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $props.file.mdURL = $event),\n readonly: \"\",\n onClick: $options.selectAllText,\n size: $options.urlSize\n }, {\n prepend: _withCtx(() => [...(_cache[9] || (_cache[9] = [_createTextVNode(\"MarkDown\", -1)]))]),\n _: 1\n }, 8, [\"modelValue\", \"onClick\", \"size\"])]), _createElementVNode(\"div\", _hoisted_11, [_createVNode(_component_el_input, {\n modelValue: $props.file.htmlURL,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $props.file.htmlURL = $event),\n readonly: \"\",\n onClick: $options.selectAllText,\n size: $options.urlSize\n }, {\n prepend: _withCtx(() => [...(_cache[10] || (_cache[10] = [_createTextVNode(\"HTML\", -1)]))]),\n _: 1\n }, 8, [\"modelValue\", \"onClick\", \"size\"]), _createVNode(_component_el_input, {\n modelValue: $props.file.ubbURL,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = $event => $props.file.ubbURL = $event),\n readonly: \"\",\n onClick: $options.selectAllText,\n size: $options.urlSize\n }, {\n prepend: _withCtx(() => [...(_cache[11] || (_cache[11] = [_createTextVNode(\"BBCode\", -1)]))]),\n _: 1\n }, 8, [\"modelValue\", \"onClick\", \"size\"])])])) : (_openBlock(), _createElementBlock(\"div\", _hoisted_12, [_createVNode(_component_el_progress, {\n percentage: $props.file.progreess,\n status: $props.file.status,\n \"show-text\": false\n }, null, 8, [\"percentage\", \"status\"])]))]), _createElementVNode(\"div\", _hoisted_13, [_createElementVNode(\"button\", {\n class: \"modern-file-action-btn modern-file-action-btn-primary\",\n onClick: _cache[5] || (_cache[5] = $event => _ctx.$emit('copy', $props.file))\n }, [_createVNode(_component_el_icon, null, {\n default: _withCtx(() => [_createVNode(_component_Link)]),\n _: 1\n })]), _createElementVNode(\"button\", {\n class: \"modern-file-action-btn modern-file-action-btn-danger\",\n onClick: _cache[6] || (_cache[6] = $event => _ctx.$emit('remove', $props.file))\n }, [_createVNode(_component_el_icon, null, {\n default: _withCtx(() => [_createVNode(_component_Delete)]),\n _: 1\n })])])]);\n}","import { Link, Delete } from '@element-plus/icons-vue';\nconst IMAGE_EXTENSIONS = ['jpg', 'jpeg', 'png', 'gif', 'bmp', 'webp', 'svg', 'tiff', 'ico', 'avif', 'heic', 'jfif', 'pjpeg', 'pjp', 'raw', 'cr2', 'nef', 'dng', 'eps', 'ai', 'emf', 'wmf'];\nconst VIDEO_EXTENSIONS = ['mp4', 'webm', 'ogg', 'mkv'];\nexport default {\n name: 'UploadFileItem',\n components: {\n Link,\n Delete\n },\n props: {\n file: {\n type: Object,\n required: true\n }\n },\n emits: ['copy', 'remove', 'preview-error'],\n computed: {\n urlSize() {\n return window.innerWidth < 768 ? 'small' : 'default';\n }\n },\n methods: {\n isImage(fileName) {\n const ext = fileName.split('.').pop().toLowerCase();\n return IMAGE_EXTENSIONS.includes(ext);\n },\n isVideo(fileName) {\n const ext = fileName.split('.').pop().toLowerCase();\n return VIDEO_EXTENSIONS.includes(ext);\n },\n truncateFilename(filename, maxLength = 20) {\n if (!filename || filename.length <= maxLength) return filename;\n const lastDotIndex = filename.lastIndexOf('.');\n let name, ext;\n if (lastDotIndex > 0) {\n name = filename.substring(0, lastDotIndex);\n ext = filename.substring(lastDotIndex);\n } else {\n name = filename;\n ext = '';\n }\n const keepEnd = ext.length + 4;\n const keepStart = maxLength - keepEnd - 3;\n if (keepStart <= 0) return filename.substring(0, maxLength - 3) + '...';\n return name.substring(0, keepStart) + '...' + name.slice(-4) + ext;\n },\n selectAllText(event) {\n navigator.clipboard.writeText(event.target.value).then(() => {\n this.$message({\n type: 'success',\n message: '复制成功'\n });\n }).catch(() => {\n this.$message({\n type: 'error',\n message: '复制失败'\n });\n });\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./UploadFileItem.vue?vue&type=template&id=85bdebae&scoped=true\"\nimport script from \"./UploadFileItem.vue?vue&type=script&lang=js\"\nexport * from \"./UploadFileItem.vue?vue&type=script&lang=js\"\n\nimport \"./UploadFileItem.vue?vue&type=style&index=0&id=85bdebae&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-85bdebae\"]])\n\nexport default __exports__","import { createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, normalizeClass as _normalizeClass, withCtx as _withCtx, createTextVNode as _createTextVNode, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, renderList as _renderList, Fragment as _Fragment } from \"vue\";\nconst _hoisted_1 = {\n class: \"upload-form\"\n};\nconst _hoisted_2 = {\n class: \"upload-card-glow\",\n ref: \"uploadCardGlow\"\n};\nconst _hoisted_3 = {\n key: 0,\n class: \"upload-card\"\n};\nconst _hoisted_4 = {\n class: \"paste-card-actions\"\n};\nconst _hoisted_5 = {\n class: \"upload-list-dashboard-action\"\n};\nconst _hoisted_6 = {\n class: \"modern-action-group\"\n};\nconst _hoisted_7 = {\n class: \"modern-dropdown-item-content\"\n};\nconst _hoisted_8 = {\n class: \"modern-action-btn modern-action-btn-danger\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_CameraFilled = _resolveComponent(\"CameraFilled\");\n const _component_el_icon = _resolveComponent(\"el-icon\");\n const _component_el_upload = _resolveComponent(\"el-upload\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_radio_button = _resolveComponent(\"el-radio-button\");\n const _component_el_radio_group = _resolveComponent(\"el-radio-group\");\n const _component_el_card = _resolveComponent(\"el-card\");\n const _component_List = _resolveComponent(\"List\");\n const _component_Checked = _resolveComponent(\"Checked\");\n const _component_Failed = _resolveComponent(\"Failed\");\n const _component_el_text = _resolveComponent(\"el-text\");\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n const _component_el_switch = _resolveComponent(\"el-switch\");\n const _component_el_dropdown_item = _resolveComponent(\"el-dropdown-item\");\n const _component_el_dropdown_menu = _resolveComponent(\"el-dropdown-menu\");\n const _component_el_dropdown = _resolveComponent(\"el-dropdown\");\n const _component_UploadFileItem = _resolveComponent(\"UploadFileItem\");\n const _component_el_scrollbar = _resolveComponent(\"el-scrollbar\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createElementVNode(\"div\", {\n class: \"upload-card-wrapper\",\n onMousemove: _cache[0] || (_cache[0] = (...args) => $options.handleUploadCardMouseMove && $options.handleUploadCardMouseMove(...args)),\n onMouseleave: _cache[1] || (_cache[1] = (...args) => $options.handleUploadCardMouseLeave && $options.handleUploadCardMouseLeave(...args))\n }, [_createElementVNode(\"div\", _hoisted_2, null, 512), $props.uploadMethod === 'default' ? (_openBlock(), _createBlock(_component_el_upload, {\n key: 0,\n class: _normalizeClass([\"upload-card\", {\n 'is-uploading': $data.uploading,\n 'upload-card-busy': $data.fileList.length\n }]),\n drag: \"\",\n multiple: \"\",\n \"http-request\": $options.uploadFile,\n onSuccess: $options.handleSuccess,\n \"on-error\": $options.handleError,\n \"before-upload\": $options.beforeUpload,\n \"on-progress\": $options.handleProgress,\n \"file-list\": $data.fileList,\n \"show-file-list\": false\n }, {\n default: _withCtx(() => [_createVNode(_component_el_icon, {\n class: _normalizeClass([\"el-icon--upload\", {\n 'upload-list-busy': $data.fileList.length\n }])\n }, {\n default: _withCtx(() => [_createVNode(_component_CameraFilled)]),\n _: 1\n }, 8, [\"class\"]), _createElementVNode(\"div\", {\n class: _normalizeClass([\"el-upload__text\", {\n 'upload-list-busy': $data.fileList.length\n }])\n }, [...(_cache[8] || (_cache[8] = [_createElementVNode(\"em\", null, \"拖拽\", -1), _createTextVNode(), _createElementVNode(\"em\", null, \"点击\", -1), _createTextVNode(\" 或 \", -1), _createElementVNode(\"em\", null, \"Ctrl + V\", -1), _createTextVNode(\" 粘贴上传\", -1)]))], 2)]),\n _: 1\n }, 8, [\"class\", \"http-request\", \"onSuccess\", \"on-error\", \"before-upload\", \"on-progress\", \"file-list\"])) : _createCommentVNode(\"\", true)], 32), $props.uploadMethod === 'paste' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [_createVNode(_component_el_card, {\n class: _normalizeClass([\"paste-card\", {\n 'is-uploading': $data.uploading,\n 'upload-card-busy': $data.fileList.length\n }])\n }, {\n default: _withCtx(() => [_createVNode(_component_el_input, {\n modelValue: $data.pastedUrls,\n \"onUpdate:modelValue\": _cache[2] || (_cache[2] = $event => $data.pastedUrls = $event),\n class: \"upload-card-textarea\",\n placeholder: \"粘贴外链上传,多个外链用换行分隔\",\n type: \"textarea\",\n rows: $data.fileList.length ? 4 : 14\n }, null, 8, [\"modelValue\", \"rows\"]), _createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_button, {\n class: \"paste-card-upload-button\",\n type: \"primary\",\n size: $options.pasteCardMethodButtonSize,\n onClick: $options.handleUploadPasteUrls\n }, {\n default: _withCtx(() => [...(_cache[9] || (_cache[9] = [_createTextVNode(\" 上 传 \", -1)]))]),\n _: 1\n }, 8, [\"size\", \"onClick\"]), _createVNode(_component_el_radio_group, {\n modelValue: $data.pasteUploadMethod,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $data.pasteUploadMethod = $event),\n class: \"paste-card-method-group\",\n size: $options.pasteCardMethodButtonSize\n }, {\n default: _withCtx(() => [_createVNode(_component_el_radio_button, {\n label: \"save\"\n }, {\n default: _withCtx(() => [...(_cache[10] || (_cache[10] = [_createTextVNode(\"转存\", -1)]))]),\n _: 1\n }), _createVNode(_component_el_radio_button, {\n label: \"external\"\n }, {\n default: _withCtx(() => [...(_cache[11] || (_cache[11] = [_createTextVNode(\"外链\", -1)]))]),\n _: 1\n })]),\n _: 1\n }, 8, [\"modelValue\", \"size\"])])]),\n _: 1\n }, 8, [\"class\"])])) : _createCommentVNode(\"\", true), _createVNode(_component_el_card, {\n class: _normalizeClass([\"upload-list-card\", {\n 'upload-list-busy': $data.fileList.length,\n 'is-uploading': $data.uploading\n }])\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", {\n class: _normalizeClass([\"upload-list-container\", {\n 'upload-list-busy': $data.fileList.length\n }])\n }, [_createVNode(_component_el_scrollbar, {\n onScroll: $options.handleScroll,\n ref: \"scrollContainer\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", {\n class: _normalizeClass([\"upload-list-dashboard\", {\n 'list-scrolled': $data.listScrolled\n }])\n }, [_createVNode(_component_el_text, {\n class: \"upload-list-dashboard-title\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_icon, null, {\n default: _withCtx(() => [_createVNode(_component_List)]),\n _: 1\n }), _createTextVNode(_toDisplayString($options.uploadingCount + $options.waitingCount) + \" \", 1), _createVNode(_component_el_icon, null, {\n default: _withCtx(() => [_createVNode(_component_Checked)]),\n _: 1\n }), _createTextVNode(_toDisplayString($options.uploadSuccessCount) + \" \", 1), _createVNode(_component_el_icon, null, {\n default: _withCtx(() => [_createVNode(_component_Failed)]),\n _: 1\n }), _createTextVNode(_toDisplayString($options.uploadErrorCount), 1)]),\n _: 1\n }), _createElementVNode(\"div\", _hoisted_5, [_createElementVNode(\"div\", _hoisted_6, [_createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: \"整体复制\",\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"modern-action-btn\",\n onClick: _cache[4] || (_cache[4] = (...args) => $options.copyAll && $options.copyAll(...args))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"copy\"\n })])]),\n _: 1\n }, 8, [\"disabled\"]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: \"失败重试\",\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_dropdown, null, {\n dropdown: _withCtx(() => [_createVNode(_component_el_dropdown_menu, {\n class: \"modern-dropdown-menu\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_dropdown_item, null, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_7, [_cache[12] || (_cache[12] = _createElementVNode(\"span\", null, \"自动重试\", -1)), _createVNode(_component_el_switch, {\n modelValue: $data.autoReUpload,\n \"onUpdate:modelValue\": _cache[6] || (_cache[6] = $event => $data.autoReUpload = $event),\n onChange: $options.handleAutoRetryChange,\n size: \"small\"\n }, null, 8, [\"modelValue\", \"onChange\"])])]),\n _: 1\n })]),\n _: 1\n })]),\n default: _withCtx(() => [_createElementVNode(\"button\", {\n class: \"modern-action-btn\",\n onClick: _cache[5] || (_cache[5] = (...args) => $options.retryError && $options.retryError(...args))\n }, [_createVNode(_component_font_awesome_icon, {\n icon: \"redo\"\n })])]),\n _: 1\n })]),\n _: 1\n }, 8, [\"disabled\"]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: \"清空列表\",\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_dropdown, null, {\n dropdown: _withCtx(() => [_createVNode(_component_el_dropdown_menu, {\n class: \"modern-dropdown-menu\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_dropdown_item, {\n onClick: $options.clearFileList\n }, {\n default: _withCtx(() => [...(_cache[13] || (_cache[13] = [_createTextVNode(\"清空全部\", -1)]))]),\n _: 1\n }, 8, [\"onClick\"]), _createVNode(_component_el_dropdown_item, {\n onClick: $options.clearSuccessList\n }, {\n default: _withCtx(() => [...(_cache[14] || (_cache[14] = [_createTextVNode(\"清空已上传\", -1)]))]),\n _: 1\n }, 8, [\"onClick\"])]),\n _: 1\n })]),\n default: _withCtx(() => [_createElementVNode(\"button\", _hoisted_8, [_createVNode(_component_font_awesome_icon, {\n icon: \"trash-alt\"\n })])]),\n _: 1\n })]),\n _: 1\n }, 8, [\"disabled\"])])])], 2), (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($data.fileList.slice().reverse(), file => {\n return _openBlock(), _createBlock(_component_UploadFileItem, {\n key: file.name,\n file: file,\n onCopy: $options.handleCopy,\n onRemove: $options.handleRemove,\n onPreviewError: _cache[7] || (_cache[7] = f => f.url = require('@/assets/404.png'))\n }, null, 8, [\"file\", \"onCopy\", \"onRemove\"]);\n }), 128))]),\n _: 1\n }, 8, [\"onScroll\"])], 2)]),\n _: 1\n }, 8, [\"class\"])]);\n}","/**\r\n * URL 构建工具函数\r\n * 用于生成各种格式的文件链接(原始链接、Markdown、HTML、BBCode)\r\n */\r\n\r\n/**\r\n * 根据 srcID 和文件名生成所有格式的 URL\r\n * @param {string} srcID - 文件资源 ID\r\n * @param {string} name - 文件名\r\n * @param {string} rootUrl - 链接前缀\r\n * @returns {{ finalURL: string, mdURL: string, htmlURL: string, ubbURL: string }}\r\n */\r\nexport function buildFileUrls(srcID, name, rootUrl) {\r\n const url = rootUrl + srcID\r\n return {\r\n finalURL: url,\r\n mdURL: `![${name}](${url})`,\r\n htmlURL: `\"${name}\"`,\r\n ubbURL: `[img]${url}[/img]`\r\n }\r\n}\r\n\r\n/**\r\n * 根据 selectedUrlForm 获取对应格式的 URL 值\r\n * @param {object} file - 文件对象,包含 finalURL/mdURL/htmlURL/ubbURL\r\n * @param {string} format - 格式类型:'url' | 'md' | 'html' | 'ubb'\r\n * @returns {string}\r\n */\r\nexport function getUrlByFormat(file, format) {\r\n const map = {\r\n url: file.finalURL,\r\n md: file.mdURL,\r\n html: file.htmlURL,\r\n ubb: file.ubbURL\r\n }\r\n return map[format] || file.finalURL\r\n}\r\n\r\n/**\r\n * 批量更新文件列表中的 URL(当自定义链接前缀变化时)\r\n * @param {Array} fileList - 文件列表\r\n * @param {string} rootUrl - 新的链接前缀\r\n */\r\nexport function updateFileListUrls(fileList, rootUrl) {\r\n fileList.forEach(item => {\r\n if (item.uploadChannel === 'external') {\r\n return\r\n }\r\n const urls = buildFileUrls(item.srcID, item.name, rootUrl)\r\n Object.assign(item, urls)\r\n })\r\n}\r\n","/**\r\n * SHA256 计算工具\r\n * 纯 JavaScript 实现的增量 SHA256 哈希算法,支持任意大小文件\r\n */\r\n\r\n// SHA256 常量\r\nconst K = new Uint32Array([\r\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\r\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\r\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\r\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\r\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\r\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\r\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\r\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\r\n])\r\n\r\nconst rotr = (x, n) => (x >>> n) | (x << (32 - n))\r\n\r\nfunction processBlock(block, H) {\r\n const W = new Uint32Array(64)\r\n\r\n for (let i = 0; i < 16; i++) {\r\n W[i] = (block[i * 4] << 24) | (block[i * 4 + 1] << 16) | (block[i * 4 + 2] << 8) | block[i * 4 + 3]\r\n }\r\n\r\n for (let i = 16; i < 64; i++) {\r\n const s0 = rotr(W[i - 15], 7) ^ rotr(W[i - 15], 18) ^ (W[i - 15] >>> 3)\r\n const s1 = rotr(W[i - 2], 17) ^ rotr(W[i - 2], 19) ^ (W[i - 2] >>> 10)\r\n W[i] = (W[i - 16] + s0 + W[i - 7] + s1) >>> 0\r\n }\r\n\r\n let [a, b, c, d, e, f, g, h] = H\r\n\r\n for (let i = 0; i < 64; i++) {\r\n const S1 = rotr(e, 6) ^ rotr(e, 11) ^ rotr(e, 25)\r\n const ch = (e & f) ^ (~e & g)\r\n const temp1 = (h + S1 + ch + K[i] + W[i]) >>> 0\r\n const S0 = rotr(a, 2) ^ rotr(a, 13) ^ rotr(a, 22)\r\n const maj = (a & b) ^ (a & c) ^ (b & c)\r\n const temp2 = (S0 + maj) >>> 0\r\n\r\n h = g; g = f; f = e\r\n e = (d + temp1) >>> 0\r\n d = c; c = b; b = a\r\n a = (temp1 + temp2) >>> 0\r\n }\r\n\r\n H[0] = (H[0] + a) >>> 0\r\n H[1] = (H[1] + b) >>> 0\r\n H[2] = (H[2] + c) >>> 0\r\n H[3] = (H[3] + d) >>> 0\r\n H[4] = (H[4] + e) >>> 0\r\n H[5] = (H[5] + f) >>> 0\r\n H[6] = (H[6] + g) >>> 0\r\n H[7] = (H[7] + h) >>> 0\r\n}\r\n\r\n/**\r\n * 创建增量 SHA256 哈希器\r\n * @returns {{ update: (data: Uint8Array) => void, digest: () => string }}\r\n */\r\nexport function createSha256() {\r\n let H = new Uint32Array([\r\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\r\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\r\n ])\r\n\r\n let buffer = new Uint8Array(64)\r\n let bufferLength = 0\r\n let totalLength = 0\r\n\r\n return {\r\n update(data) {\r\n totalLength += data.length\r\n let offset = 0\r\n\r\n if (bufferLength > 0) {\r\n const needed = 64 - bufferLength\r\n const toCopy = Math.min(needed, data.length)\r\n buffer.set(data.subarray(0, toCopy), bufferLength)\r\n bufferLength += toCopy\r\n offset = toCopy\r\n\r\n if (bufferLength === 64) {\r\n processBlock(buffer, H)\r\n bufferLength = 0\r\n }\r\n }\r\n\r\n while (offset + 64 <= data.length) {\r\n processBlock(data.subarray(offset, offset + 64), H)\r\n offset += 64\r\n }\r\n\r\n if (offset < data.length) {\r\n buffer.set(data.subarray(offset), 0)\r\n bufferLength = data.length - offset\r\n }\r\n },\r\n digest() {\r\n const bitLength = totalLength * 8\r\n\r\n // Padding\r\n buffer[bufferLength++] = 0x80\r\n\r\n if (bufferLength > 56) {\r\n buffer.fill(0, bufferLength, 64)\r\n processBlock(buffer, H)\r\n bufferLength = 0\r\n }\r\n\r\n buffer.fill(0, bufferLength, 56)\r\n\r\n // Length in bits (big-endian, 64-bit)\r\n const view = new DataView(buffer.buffer)\r\n view.setUint32(56, Math.floor(bitLength / 0x100000000), false)\r\n view.setUint32(60, bitLength >>> 0, false)\r\n\r\n processBlock(buffer, H)\r\n\r\n // Convert to hex\r\n let hex = ''\r\n for (let i = 0; i < 8; i++) {\r\n hex += H[i].toString(16).padStart(8, '0')\r\n }\r\n return hex\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * 计算文件的 SHA256 哈希\r\n * 使用增量哈希算法,支持任意大小文件\r\n * @param {File} file - 要计算哈希的文件\r\n * @returns {Promise} SHA256 哈希值(十六进制字符串)\r\n */\r\nexport async function computeSha256(file) {\r\n const sha256 = createSha256()\r\n\r\n const CHUNK_SIZE = 4 * 1024 * 1024 // 4MB chunks\r\n let offset = 0\r\n\r\n while (offset < file.size) {\r\n const chunk = file.slice(offset, Math.min(offset + CHUNK_SIZE, file.size))\r\n const buffer = await chunk.arrayBuffer()\r\n sha256.update(new Uint8Array(buffer))\r\n offset += CHUNK_SIZE\r\n\r\n // 每处理 20MB 打印一次进度\r\n if (offset % (20 * 1024 * 1024) < CHUNK_SIZE) {\r\n console.log(`SHA256 progress: ${Math.min(100, Math.round(offset / file.size * 100))}%`)\r\n }\r\n }\r\n\r\n return sha256.digest()\r\n}\r\n","import \"core-js/modules/es.array.push.js\";\nimport \"core-js/modules/es.array-buffer.detached.js\";\nimport \"core-js/modules/es.array-buffer.transfer.js\";\nimport \"core-js/modules/es.array-buffer.transfer-to-fixed-length.js\";\nimport \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nimport \"core-js/modules/es.iterator.find.js\";\nimport \"core-js/modules/es.iterator.for-each.js\";\nimport \"core-js/modules/es.iterator.map.js\";\nimport \"core-js/modules/es.iterator.reduce.js\";\nimport \"core-js/modules/es.json.stringify.js\";\nimport \"core-js/modules/es.typed-array.with.js\";\nimport \"core-js/modules/esnext.json.parse.js\";\nimport \"core-js/modules/esnext.uint8-array.set-from-base64.js\";\nimport \"core-js/modules/esnext.uint8-array.set-from-hex.js\";\nimport \"core-js/modules/esnext.uint8-array.to-base64.js\";\nimport \"core-js/modules/esnext.uint8-array.to-hex.js\";\nimport \"core-js/modules/web.dom-exception.stack.js\";\nimport \"core-js/modules/web.url-search-params.delete.js\";\nimport \"core-js/modules/web.url-search-params.has.js\";\nimport \"core-js/modules/web.url-search-params.size.js\";\nimport axios from '@/utils/axios';\nimport * as imageConversion from 'image-conversion';\nimport { mapGetters } from 'vuex';\nimport { buildFileUrls, updateFileListUrls, getUrlByFormat } from '@/utils/upload/urlBuilder';\nimport { computeSha256 } from '@/utils/upload/sha256';\nimport UploadFileItem from '@/components/upload/UploadFileItem.vue';\nexport default {\n name: 'UploadForm',\n components: {\n UploadFileItem\n },\n props: {\n selectedUrlForm: {\n type: String,\n default: 'url',\n required: false\n },\n customerCompress: {\n type: Boolean,\n default: true,\n required: false\n },\n compressQuality: {\n type: Number,\n default: 4,\n required: false\n },\n compressBar: {\n type: Number,\n default: 5,\n required: false\n },\n serverCompress: {\n type: Boolean,\n default: true,\n required: false\n },\n uploadChannel: {\n type: String,\n default: 'telegram',\n required: false\n },\n channelName: {\n type: String,\n default: '',\n required: false\n },\n uploadNameType: {\n type: String,\n default: 'default',\n required: false\n },\n useCustomUrl: {\n type: String,\n default: 'false',\n required: false\n },\n customUrlPrefix: {\n type: String,\n default: '',\n required: false\n },\n autoRetry: {\n type: Boolean,\n default: true,\n required: false\n },\n urlPrefix: {\n type: String,\n default: '',\n required: false\n },\n uploadMethod: {\n type: String,\n default: 'default',\n required: false\n },\n uploadFolder: {\n type: String,\n default: '',\n required: false\n },\n convertToWebp: {\n type: Boolean,\n default: false,\n required: false\n }\n },\n data() {\n return {\n fileList: [],\n uploading: false,\n maxUploading: 6,\n exceptionList: [],\n listScrolled: false,\n fileListLength: 0,\n uploadCount: 0,\n pastedUrls: '',\n pasteUploadMethod: 'save',\n // 失败文件自动重试相关\n autoReUpload: true,\n maxRetryCount: 10,\n // 最大重试次数\n retryTimer: null,\n // 自动重试定时器\n retryDelay: 12000,\n // 重试延迟时间(毫秒)\n // 批量上传并发控制\n uploadQueue: [],\n // 等待上传的文件队列\n activeUploads: 0,\n // 当前正在上传的文件数\n maxConcurrentUploads: 6,\n // 最大并发上传数\n // 取消上传控制\n abortControllers: new Map() // 存储每个文件的 AbortController\n };\n },\n watch: {\n fileList: {\n handler() {\n if (this.fileList.length > this.fileListLength) {\n this.$nextTick(() => {\n setTimeout(() => {\n if (this.$refs.scrollContainer) {\n // this.$refs.scrollContainer.setScrollTop(this.$refs.scrollContainer.wrapRef.scrollHeight) // 滚动到底部\n this.$refs.scrollContainer.setScrollTop(0); // 滚动到顶部\n }\n }, 100);\n });\n }\n this.fileListLength = this.fileList.length;\n },\n deep: true\n },\n useCustomUrl: {\n handler() {\n updateFileListUrls(this.fileList, this.rootUrl);\n },\n immediate: true\n },\n customUrlPrefix: {\n handler() {\n if (this.useCustomUrl === 'true') {\n updateFileListUrls(this.fileList, this.rootUrl);\n }\n },\n immediate: true\n },\n autoReUpload(val) {\n this.$store.commit('setStoreAutoReUpload', val);\n }\n },\n computed: {\n ...mapGetters(['storeAutoReUpload']),\n uploadSuccessCount() {\n return this.fileList.filter(item => item.status === 'done' || item.status === 'success').length;\n },\n uploadErrorCount() {\n return this.fileList.filter(item => item.status === 'exception').length;\n },\n uploadingCount() {\n return this.fileList.filter(item => item.status === 'uploading').length;\n },\n waitingCount() {\n return this.uploadQueue.length;\n },\n urlSize() {\n // 移动端为small\n return window.innerWidth < 768 ? 'small' : 'default';\n },\n disableTooltip() {\n return window.innerWidth < 768;\n },\n rootUrl() {\n // 链接前缀,优先级:用户自定义 > urlPrefix > 默认\n return this.useCustomUrl === 'true' ? this.customUrlPrefix : this.urlPrefix || `${window.location.protocol}//${window.location.host}/file/`;\n },\n pasteCardMethodButtonSize() {\n if (this.fileList.length) {\n return 'small';\n } else {\n return window.innerWidth < 768 ? 'small' : 'medium';\n }\n }\n },\n mounted() {\n document.addEventListener('paste', this.handlePaste);\n this.autoReUpload = this.storeAutoReUpload;\n },\n beforeUnmount() {\n document.removeEventListener('paste', this.handlePaste);\n // 清理状态\n this.uploadQueue = [];\n this.fileList = [];\n this.activeUploads = 0;\n },\n methods: {\n // 文件名中间截断,保留前缀和扩展名\n truncateFilename(filename, maxLength = 20) {\n if (!filename || filename.length <= maxLength) {\n return filename;\n }\n const lastDotIndex = filename.lastIndexOf('.');\n let name, ext;\n if (lastDotIndex > 0) {\n name = filename.substring(0, lastDotIndex);\n ext = filename.substring(lastDotIndex);\n } else {\n name = filename;\n ext = '';\n }\n // 保留扩展名和部分前后缀\n const keepEnd = ext.length + 4; // 扩展名 + 4个字符\n const keepStart = maxLength - keepEnd - 3; // 3个字符留给...\n if (keepStart <= 0) {\n return filename.substring(0, maxLength - 3) + '...';\n }\n return name.substring(0, keepStart) + '...' + name.slice(-4) + ext;\n },\n uploadFile(file) {\n // 如果fileList中不存在该文件,说明已被删除,直接返回\n if (!this.fileList.find(item => item.uid === file.file.uid)) {\n return;\n }\n\n // 并发控制:如果当前上传数已达上限,加入队列等待\n if (this.activeUploads >= this.maxConcurrentUploads) {\n this.uploadQueue.push(file);\n const waitingItem = this.fileList.find(item => item.uid === file.file.uid);\n if (waitingItem) waitingItem.status = 'waiting';\n return;\n }\n\n // 开始上传,增加计数\n this.activeUploads++;\n const uploadingItem = this.fileList.find(item => item.uid === file.file.uid);\n if (uploadingItem) uploadingItem.status = 'uploading';\n const fileItem = this.fileList.find(item => item.uid === file.file.uid);\n const uploadChannel = fileItem?.uploadChannel || this.uploadChannel;\n\n // 如果上传渠道为外链,直接使用外链上传\n if (uploadChannel === 'external') {\n this.uploadSingleFile(file);\n return;\n }\n\n // HuggingFace 渠道:根据文件大小选择上传方式\n // 小文件(<20MB):通过 CF Workers 代理上传\n // 大文件(>=20MB):前端直传到 HuggingFace S3,绕过 CF Workers 限制\n if (uploadChannel === 'huggingface') {\n const HF_DIRECT_THRESHOLD = 20 * 1024 * 1024; // 20MB\n if (file.file.size >= HF_DIRECT_THRESHOLD) {\n this.uploadToHuggingFaceDirect(file);\n } else {\n this.uploadSingleFile(file);\n }\n return;\n }\n\n // Discord 渠道:限制 10MB,超过 9MB 就用分块上传(留安全余量)\n if (uploadChannel === 'discord') {\n const DISCORD_CHUNK_THRESHOLD = 9 * 1024 * 1024; // 9MB\n if (file.file.size > DISCORD_CHUNK_THRESHOLD) {\n this.uploadFileInChunks(file);\n } else {\n this.uploadSingleFile(file);\n }\n return;\n }\n\n // 其他渠道,检查文件大小,决定是否使用分块上传\n const CHUNK_THRESHOLD = 20 * 1024 * 1024; // 20MB\n if (file.file.size > CHUNK_THRESHOLD) {\n this.uploadFileInChunks(file);\n } else {\n this.uploadSingleFile(file);\n }\n },\n // 处理上传队列中的下一个文件\n processUploadQueue() {\n // 如果队列为空或已达并发上限,不处理\n if (this.uploadQueue.length === 0 || this.activeUploads >= this.maxConcurrentUploads) {\n return;\n }\n\n // 从队列中取出下一个文件并上传\n const nextFile = this.uploadQueue.shift();\n if (nextFile && this.fileList.find(item => item.uid === nextFile.file.uid)) {\n this.uploadFile(nextFile);\n } else {\n // 如果文件已被删除,继续处理下一个\n this.processUploadQueue();\n }\n },\n // 上传完成后的清理工作(成功或失败都调用)\n onUploadComplete() {\n this.activeUploads = Math.max(0, this.activeUploads - 1);\n\n // 处理队列中的下一个文件\n this.processUploadQueue();\n\n // 更新上传状态\n if (this.activeUploads === 0 && this.uploadQueue.length === 0) {\n this.uploading = false;\n }\n },\n // 单文件上传\n async uploadSingleFile(file) {\n const fileItem = this.fileList.find(item => item.uid === file.file.uid);\n if (!fileItem) return; // 文件已被删除\n\n const needServerCompress = fileItem.serverCompress;\n const uploadChannel = fileItem.uploadChannel || this.uploadChannel;\n const autoRetry = this.autoRetry && uploadChannel !== 'external';\n const uploadNameType = uploadChannel === 'external' ? 'default' : this.uploadNameType;\n\n // 创建 AbortController 用于取消上传\n const abortController = new AbortController();\n this.abortControllers.set(file.file.uid, abortController);\n const formData = new FormData();\n formData.append('file', file.file);\n if (uploadChannel === 'external') {\n formData.append('url', file.file.url);\n }\n\n // HuggingFace 渠道:在前端预计算 SHA256,避免后端 CPU 超时\n if (uploadChannel === 'huggingface') {\n try {\n console.log('Computing SHA256 for HuggingFace upload...');\n const sha256 = await computeSha256(file.file);\n formData.append('sha256', sha256);\n console.log('SHA256 computed:', sha256);\n } catch (err) {\n console.error('Failed to compute SHA256:', err);\n // 继续上传,让后端计算(可能会超时)\n }\n }\n axios({\n url: '/upload' + '?serverCompress=' + needServerCompress + '&uploadChannel=' + uploadChannel + (this.channelName ? '&channelName=' + encodeURIComponent(this.channelName) : '') + '&uploadNameType=' + uploadNameType + '&autoRetry=' + autoRetry + '&uploadFolder=' + encodeURIComponent(this.uploadFolder),\n method: 'post',\n data: formData,\n withAuthCode: true,\n signal: abortController.signal,\n // 添加取消信号\n onUploadProgress: progressEvent => {\n const percentCompleted = Math.round(progressEvent.loaded / progressEvent.total * 100);\n file.onProgress({\n percent: percentCompleted,\n file: file.file\n });\n }\n }).then(res => {\n file.onSuccess(res, file.file);\n }).catch(err => {\n // 如果是取消操作,不加入异常列表\n if (err.name === 'CanceledError' || err.code === 'ERR_CANCELED') {\n console.log('上传已取消:', file.file.name);\n return;\n }\n if (err.response && err.response.status !== 401) {\n this.exceptionList.push(file);\n file.onError(err, file.file);\n } else if (!err.response) {\n // 网络错误(如 ERR_HTTP2_PROTOCOL_ERROR),也加入异常列表\n this.exceptionList.push(file);\n file.onError(err, file.file);\n }\n }).finally(() => {\n // 清理 AbortController\n this.abortControllers.delete(file.file.uid);\n // 调用并发控制的完成回调\n this.onUploadComplete();\n });\n },\n // 分块上传\n async uploadFileInChunks(file) {\n const fileItem = this.fileList.find(item => item.uid === file.file.uid);\n if (!fileItem) return; // 文件已被删除\n\n const uploadChannel = fileItem.uploadChannel || this.uploadChannel;\n\n // 创建 AbortController 用于取消上传\n const abortController = new AbortController();\n this.abortControllers.set(file.file.uid, abortController);\n\n // Discord 使用 9MB 分块(留安全余量,Discord 限制 10MB)\n // Telegram 使用 16MB 分块(TG Bot getFile 下载限制 20MB,留 4MB 安全余量)\n // 其他渠道使用 16MB 分块\n const CHUNK_SIZE = uploadChannel === 'discord' ? 9 * 1024 * 1024 // 9MB for Discord\n : 16 * 1024 * 1024; // 16MB for Telegram and others (TG getFile limit: 20MB)\n\n const fileSize = file.file.size;\n const totalChunks = Math.ceil(fileSize / CHUNK_SIZE);\n const needServerCompress = fileItem.serverCompress;\n const autoRetry = this.autoRetry && uploadChannel !== 'external';\n const uploadNameType = uploadChannel === 'external' ? 'default' : this.uploadNameType;\n\n // HuggingFace 渠道:在前端预计算 SHA256\n let precomputedSha256 = null;\n if (uploadChannel === 'huggingface') {\n try {\n console.log('Computing SHA256 for HuggingFace chunked upload...');\n precomputedSha256 = await computeSha256(file.file);\n console.log('SHA256 computed:', precomputedSha256);\n } catch (err) {\n console.error('Failed to compute SHA256:', err);\n }\n }\n try {\n // 第一步:初始化分块上传,获取uploadId\n const initFormData = new FormData();\n initFormData.append('originalFileName', file.file.name);\n initFormData.append('originalFileType', file.file.type);\n initFormData.append('totalChunks', totalChunks.toString());\n const initResponse = await axios({\n url: '/upload' + '?serverCompress=' + needServerCompress + '&uploadChannel=' + uploadChannel + (this.channelName ? '&channelName=' + encodeURIComponent(this.channelName) : '') + '&uploadNameType=' + uploadNameType + '&autoRetry=' + autoRetry + '&uploadFolder=' + encodeURIComponent(this.uploadFolder) + '&initChunked=true',\n method: 'post',\n data: initFormData,\n withAuthCode: true\n });\n if (!initResponse.data.success) {\n throw new Error('初始化分块上传失败: ' + initResponse.data.message);\n }\n const uploadId = initResponse.data.uploadId;\n console.log('分块上传初始化成功,uploadId:', uploadId);\n\n // 记录 totalChunks 和 uploadId 到文件项,用于后续清理\n const fileItem = this.fileList.find(item => item.uid === file.file.uid);\n if (fileItem) {\n fileItem.totalChunks = totalChunks;\n fileItem.uploadId = uploadId;\n }\n\n // 第二步:并发上传所有分块\n const maxConcurrency = 3; // 最大并发数\n const chunkProgress = new Array(totalChunks).fill(0);\n let nextChunkIndex = 0;\n let hasError = false;\n let errorMsg = '';\n let isCancelled = false; // 标记是否被取消\n\n const uploadChunk = async chunkIndex => {\n if (hasError || isCancelled) return;\n const start = chunkIndex * CHUNK_SIZE;\n const end = Math.min(start + CHUNK_SIZE, fileSize);\n const chunk = file.file.slice(start, end);\n const formData = new FormData();\n formData.append('file', chunk, `${file.file.name}.part${chunkIndex.toString().padStart(3, '0')}`);\n formData.append('chunkIndex', chunkIndex.toString());\n formData.append('totalChunks', totalChunks.toString());\n formData.append('uploadId', uploadId);\n formData.append('originalFileName', file.file.name);\n formData.append('originalFileType', file.file.type);\n let retryCount = 0;\n const maxRetries = 3;\n while (retryCount < maxRetries) {\n if (hasError || isCancelled) return;\n try {\n await axios({\n url: '/upload' + '?serverCompress=' + needServerCompress + '&uploadChannel=' + uploadChannel + (this.channelName ? '&channelName=' + encodeURIComponent(this.channelName) : '') + '&uploadNameType=' + uploadNameType + '&autoRetry=' + autoRetry + '&uploadFolder=' + encodeURIComponent(this.uploadFolder) + '&chunked=true',\n method: 'post',\n data: formData,\n withAuthCode: true,\n signal: abortController.signal,\n // 添加取消信号\n onUploadProgress: progressEvent => {\n if (hasError || isCancelled) return;\n const percent = Math.round(progressEvent.loaded / progressEvent.total * 100);\n chunkProgress[chunkIndex] = percent;\n const totalPercent = Math.round(chunkProgress.reduce((a, b) => a + b, 0) / totalChunks);\n file.onProgress({\n percent: totalPercent,\n file: file.file\n });\n }\n });\n return; // Success\n } catch (err) {\n // 如果是取消操作,直接返回\n if (err.name === 'CanceledError' || err.code === 'ERR_CANCELED') {\n isCancelled = true;\n console.log('分块上传已取消:', file.file.name);\n return;\n }\n retryCount++;\n console.warn(`分块 ${chunkIndex + 1}/${totalChunks} 上传失败 (重试 ${retryCount}/${maxRetries}):`, err);\n if (retryCount >= maxRetries) {\n hasError = true;\n errorMsg = `分块 ${chunkIndex + 1}/${totalChunks} 上传失败: ${err.message}`;\n throw new Error(errorMsg);\n }\n // 等待后重试\n await new Promise(resolve => setTimeout(resolve, 2000 * retryCount));\n }\n }\n };\n\n // 创建并发池\n const pool = [];\n for (let i = 0; i < maxConcurrency; i++) {\n pool.push((async () => {\n while (nextChunkIndex < totalChunks && !hasError && !isCancelled) {\n const currentIndex = nextChunkIndex++;\n try {\n await uploadChunk(currentIndex);\n } catch (e) {\n if (!isCancelled) {\n hasError = true;\n errorMsg = e.message;\n }\n break;\n }\n }\n })());\n }\n await Promise.all(pool);\n\n // 如果被取消,直接返回\n if (isCancelled) {\n console.log('分块上传已取消,跳过合并步骤');\n return;\n }\n if (hasError) {\n throw new Error(errorMsg || '上传过程中发生错误');\n }\n\n // 第三步:所有分块上传完成,发送合并请求\n this.$message({\n type: 'info',\n message: '分块上传完成,正在合并文件,请耐心等待...',\n duration: 0 // 不自动关闭\n });\n const mergeFormData = new FormData();\n mergeFormData.append('uploadId', uploadId);\n mergeFormData.append('totalChunks', totalChunks.toString());\n mergeFormData.append('originalFileName', file.file.name);\n mergeFormData.append('originalFileType', file.file.type);\n // HuggingFace 渠道:传递预计算的 SHA256\n if (precomputedSha256) {\n mergeFormData.append('sha256', precomputedSha256);\n }\n const response = await axios({\n url: '/upload' + '?serverCompress=' + needServerCompress + '&uploadChannel=' + uploadChannel + (this.channelName ? '&channelName=' + encodeURIComponent(this.channelName) : '') + '&uploadNameType=' + uploadNameType + '&autoRetry=' + autoRetry + '&uploadFolder=' + encodeURIComponent(this.uploadFolder) + '&chunked=true&merge=true',\n method: 'post',\n data: mergeFormData,\n withAuthCode: true\n });\n\n // 关闭提示\n this.$message.closeAll();\n\n // 同步处理完成\n file.onSuccess(response, file.file);\n } catch (err) {\n // 如果是取消操作,不加入异常列表\n if (err.name === 'CanceledError' || err.code === 'ERR_CANCELED') {\n console.log('分块上传已取消:', file.file.name);\n return;\n }\n console.error('分块上传失败:', err);\n\n // 如果有uploadId,清理相关资源\n const fileItem = this.fileList.find(item => item.uid === file.file.uid);\n if (fileItem && fileItem.uploadId) {\n this.cleanupUploadResources(fileItem.uploadId, fileItem.totalChunks).then(() => {\n console.log(`已清理分块上传失败的资源: ${fileItem.uploadId}`);\n }).catch(cleanupError => {\n console.warn('清理分块上传失败资源时出错:', cleanupError);\n });\n }\n if (err.response && err.response.status !== 401) {\n this.exceptionList.push(file);\n file.onError(err, file.file);\n } else if (!err.response) {\n // 网络错误,也加入异常列表\n this.exceptionList.push(file);\n file.onError(err, file.file);\n }\n } finally {\n // 清理 AbortController\n this.abortControllers.delete(file.file.uid);\n // 调用并发控制的完成回调\n this.onUploadComplete();\n }\n },\n handleRemove(file) {\n // 如果文件正在上传,取消上传\n if (this.abortControllers.has(file.uid)) {\n this.abortControllers.get(file.uid).abort();\n this.abortControllers.delete(file.uid);\n }\n // 从上传队列中移除(如果在等待中)\n this.uploadQueue = this.uploadQueue.filter(item => item.file.uid !== file.uid);\n // 从文件列表中移除\n this.fileList = this.fileList.filter(item => item.uid !== file.uid);\n this.$message({\n type: 'info',\n message: this.truncateFilename(file.name) + '已删除'\n });\n },\n // 清理上传资源\n async cleanupUploadResources(uploadId, totalChunks = 0) {\n try {\n await axios({\n url: `/upload?cleanup=true&uploadId=${uploadId}&totalChunks=${totalChunks}`,\n method: 'get',\n withAuthCode: true,\n timeout: 5000\n });\n console.log(`清理上传资源成功: ${uploadId}`);\n } catch (error) {\n console.warn('清理上传资源失败:', error);\n }\n },\n handleSuccess(response, file) {\n const fileItem = this.fileList.find(item => item.uid === file.uid);\n if (!fileItem) return; // 文件已被删除\n\n try {\n // 对上传渠道为外链的,不修改链接\n const uploadChannel = fileItem.uploadChannel || this.uploadChannel;\n if (uploadChannel !== 'external') {\n // 从response.data[0].src中去除/file/前缀\n const srcID = response.data[0].src.replace('/file/', '');\n fileItem.url = `${window.location.protocol}//${window.location.host}/file/` + srcID;\n const urls = buildFileUrls(srcID, file.name, this.rootUrl);\n Object.assign(fileItem, urls);\n fileItem.srcID = srcID;\n }\n fileItem.progreess = 100;\n fileItem.status = 'success';\n\n // Save to history\n this.saveToHistory(fileItem);\n this.$message({\n type: 'success',\n message: this.truncateFilename(file.name) + '上传成功'\n });\n setTimeout(() => {\n const item = this.fileList.find(item => item.uid === file.uid);\n if (item) item.status = 'done';\n }, 1000);\n } catch (error) {\n this.$message.error(this.truncateFilename(file.name) + '上传失败');\n fileItem.status = 'exception';\n }\n // 注意:并发控制的 onUploadComplete 已在各上传方法的 finally 中调用\n },\n saveToHistory(fileItem) {\n try {\n const history = JSON.parse(localStorage.getItem('uploadHistory') || '[]');\n const newRecord = {\n name: fileItem.name,\n url: fileItem.finalURL,\n time: Date.now(),\n type: fileItem.name.split('.').pop().toLowerCase()\n };\n history.push(newRecord);\n localStorage.setItem('uploadHistory', JSON.stringify(history));\n } catch (e) {\n console.error('Failed to save history', e);\n }\n },\n handleError(err, file) {\n const fileItem = this.fileList.find(item => item.uid === file.uid);\n if (!fileItem) return; // 文件已被删除\n\n this.$message.error(this.truncateFilename(file.name) + '上传失败');\n fileItem.status = 'exception';\n\n // 如果开启了自动重试,安排自动重试\n if (this.autoReUpload) {\n this.scheduleAutoRetry();\n }\n // 注意:并发控制的 onUploadComplete 已在各上传方法的 finally 中调用\n },\n handleCopy(file) {\n const status = this.fileList.find(item => item.uid === file.uid).status;\n if (status !== 'done' && status !== 'success') {\n this.$message({\n type: 'warning',\n message: '文件未上传成功,无法复制链接'\n });\n return;\n }\n navigator.clipboard.writeText(getUrlByFormat(file, this.selectedUrlForm));\n this.$message({\n type: 'success',\n message: '复制成功'\n });\n },\n beforeUpload(file) {\n return new Promise(async (resolve, reject) => {\n let processedFile = file;\n\n // WebP 转换:在压缩之前进行\n // 条件:1.开启WebP转换 2.文件类型为图片 3.不是WebP/GIF/SVG格式\n const canConvertToWebp = this.convertToWebp && file.type.includes('image') && !file.type.includes('webp') && !file.type.includes('gif') && !file.type.includes('svg');\n if (canConvertToWebp) {\n try {\n const convertedFile = await this.convertImageToWebp(file);\n if (convertedFile) {\n processedFile = convertedFile;\n console.log(`WebP转换成功: ${file.name} -> ${convertedFile.name}, 大小: ${(file.size / 1024).toFixed(1)}KB -> ${(convertedFile.size / 1024).toFixed(1)}KB`);\n }\n } catch (err) {\n console.warn('WebP转换失败,使用原文件:', err);\n // 转换失败,继续使用原文件\n }\n }\n\n // 客户端压缩条件:1.文件类型为图片 2.开启客户端压缩,且文件大小大于压缩阈值\n const needCustomCompress = processedFile.type.includes('image') && this.customerCompress && processedFile.size / 1024 / 1024 > this.compressBar;\n const isLtLim = processedFile.size / 1024 / 1024 <= 1024 || this.uploadChannel !== 'telegram';\n const pushFileToQueue = (file, serverCompress) => {\n const fileUrl = URL.createObjectURL(file);\n this.fileList.push({\n uid: file.uid,\n name: file.name,\n url: fileUrl,\n finalURL: '',\n mdURL: '',\n htmlURL: '',\n ubbURL: '',\n srcID: '',\n status: 'uploading',\n progreess: 0,\n serverCompress: serverCompress,\n retryCount: 0\n });\n resolve(file);\n };\n if (needCustomCompress) {\n //尝试压缩图片\n imageConversion.compressAccurately(processedFile, 1024 * this.compressQuality).then(res => {\n //如果压缩后大于1024MB,且上传渠道为telegram,则不上传\n if (res.size / 1024 / 1024 > 1024 && this.uploadChannel === 'telegram') {\n this.$message.error(processedFile.name + '压缩后文件过大,无法上传!');\n reject('文件过大');\n }\n this.uploading = true;\n //将res包装成新的file\n const newFile = new File([res], processedFile.name, {\n type: res.type\n });\n newFile.uid = file.uid;\n const myUploadCount = this.uploadCount++;\n\n //开启服务端压缩条件:1.开启服务端压缩 2.文件大小小于10MB 3.上传渠道为Telegram\n const needServerCompress = this.serverCompress && newFile.size / 1024 / 1024 < 10 && this.uploadChannel === 'telegram';\n if (myUploadCount === 0) {\n pushFileToQueue(newFile, needServerCompress);\n } else {\n setTimeout(() => {\n pushFileToQueue(newFile, needServerCompress);\n this.uploadCount--;\n }, 300 * myUploadCount);\n }\n }).catch(err => {\n this.$message.error(processedFile.name + '压缩失败,无法上传!');\n reject(err);\n });\n } else if (isLtLim) {\n this.uploading = true;\n const myUploadCount = this.uploadCount++;\n\n // 开启服务端压缩条件:1.上传渠道为Telegram 2.开启服务端压缩 3.如果为图片,则文件大小小于10MB,否则不限制大小\n const needServerCompress = this.uploadChannel === 'telegram' && this.serverCompress && (processedFile.type.includes('image') ? processedFile.size / 1024 / 1024 < 10 : true);\n if (myUploadCount === 0) {\n pushFileToQueue(processedFile, needServerCompress);\n } else {\n setTimeout(() => {\n pushFileToQueue(processedFile, needServerCompress);\n this.uploadCount--;\n }, 300 * myUploadCount);\n }\n } else {\n this.$message.error(processedFile.name + '文件过大,无法上传!');\n reject('文件过大');\n }\n });\n },\n handleProgress(event) {\n const fileItem = this.fileList.find(item => item.uid === event.file.uid);\n if (fileItem) {\n fileItem.progreess = event.percent;\n }\n },\n copyAll() {\n const urls = this.fileList.filter(item => item.status === 'done' || item.status === 'success').map(item => getUrlByFormat(item, this.selectedUrlForm)).join('\\n');\n navigator.clipboard.writeText(urls);\n this.$message({\n type: 'success',\n message: '整体复制成功'\n });\n },\n clearFileList() {\n if (this.fileList.length > 0) {\n // 取消所有正在上传的文件\n this.abortControllers.forEach((controller, uid) => {\n controller.abort();\n });\n this.abortControllers.clear();\n // 清空上传队列\n this.uploadQueue = [];\n // 清空文件列表\n this.fileList = [];\n this.$message({\n type: 'success',\n message: '文件列表已清空'\n });\n } else {\n this.$message({\n type: 'info',\n message: '文件列表为空'\n });\n }\n },\n clearSuccessList() {\n if (this.uploadSuccessCount > 0) {\n this.fileList = this.fileList.filter(item => item.status !== 'done' && item.status !== 'success');\n this.$message({\n type: 'success',\n message: '成功上传文件已清空'\n });\n } else {\n this.$message({\n type: 'info',\n message: '成功上传文件为空'\n });\n }\n },\n handlePaste(event) {\n // 当粘贴位置是文本框时,不执行该操作\n if (event.target.tagName === 'INPUT' || event.target.tagName === 'TEXTAREA') {\n return;\n }\n const items = event.clipboardData.items;\n if (items.length > 0) {\n this.uploadFromUrl(items);\n }\n },\n handleUploadPasteUrls() {\n // 用于上传在上传文本框中粘贴的外链\n const urls = this.pastedUrls.split('\\n');\n // 处理空行和首尾空字符,链接须符合URL规范\n const validUrls = urls.map(url => url.trim()).filter(url => url !== '').filter(url => /^(https?:\\/\\/[^\\s$.?#].[^\\s]*)$/.test(url));\n\n // 根据粘贴上传方式进行上传\n if (this.pasteUploadMethod === 'save') {\n // 正常上传\n this.uploadFromUrl(validUrls.map(url => {\n return {\n kind: 'string',\n getAsString: callback => {\n callback(url);\n }\n };\n }));\n } else if (this.pasteUploadMethod === 'external') {\n // 仅保存外链,使用 external 渠道上传\n for (let i = 0; i < validUrls.length; i++) {\n const url = validUrls[i];\n const fileName = url.split('/').pop();\n const mdUrl = `![${fileName}](${url})`;\n const htmlUrl = `\"${fileName}\"`;\n const ubbUrl = `[img]${url}[/img]`;\n // 将 url 作为文件内容,文件名为 URL 的最后一部分\n const file = new File([], url.split('/').pop(), {\n type: 'text/plain'\n });\n file.uid = Date.now() + i;\n file.url = url;\n this.fileList.push({\n uid: file.uid,\n name: file.name,\n url: url,\n finalURL: url,\n mdURL: mdUrl,\n htmlURL: htmlUrl,\n ubbURL: ubbUrl,\n srcID: url,\n status: 'uploading',\n progreess: 0,\n serverCompress: false,\n uploadChannel: 'external',\n retryCount: 0\n });\n // 上传\n this.uploadFile({\n file: file,\n onProgress: evt => this.handleProgress(evt),\n onSuccess: (response, file) => this.handleSuccess(response, file),\n onError: (error, file) => this.handleError(error, file)\n });\n }\n }\n },\n uploadFromUrl(items) {\n for (let i = 0; i < items.length; i++) {\n if (items[i].kind === 'file') {\n const file = items[i].getAsFile();\n // 允许上传任意类型的文件\n file.uid = Date.now() + i;\n //接收beforeUpload的Promise对象\n const checkResult = this.beforeUpload(file);\n if (checkResult instanceof Promise) {\n checkResult.then(newFile => {\n if (newFile instanceof File) {\n this.uploadFile({\n file: newFile,\n onProgress: evt => this.handleProgress(evt),\n onSuccess: (response, file) => this.handleSuccess(response, file),\n onError: (error, file) => this.handleError(error, file)\n });\n }\n }).catch(err => {\n console.log(err);\n });\n }\n } else if (items[i].kind === 'string') {\n items[i].getAsString(text => {\n const urlPattern = /^(https?:\\/\\/[^\\s$.?#].[^\\s]*)$/;\n let fileName = '';\n if (urlPattern.test(text)) {\n axios.post('/api/fetchRes', {\n url: text\n }, {\n responseType: 'blob',\n withAuthCode: true\n }).then(response => {\n const contentType = response.headers['content-type'];\n if (response.status == 200) {\n // 提取文件名\n const disposition = response.headers['content-disposition'];\n if (disposition) {\n const filenameRegex = /filename[^;=\\n]*=((['\"]).*?\\2|[^;\\n]*)/;\n const filenameStarRegex = /filename\\*\\s*=\\s*UTF-8''([^;\\n]*)/; // 处理 filename*\n\n let matches = filenameRegex.exec(disposition);\n if (matches != null && matches[1]) {\n fileName = matches[1].replace(/['\"]/g, '');\n // 尝试解码\n try {\n fileName = decodeURIComponent(fileName);\n } catch (e) {\n fileName = '';\n }\n }\n if (fileName === '') {\n matches = filenameStarRegex.exec(disposition); // 尝试匹配 filename*\n if (matches != null && matches[1]) {\n fileName = decodeURIComponent(matches[1]);\n }\n }\n }\n // 尝试从URL中提取文件名\n if (fileName === '') {\n const url = new URL(text);\n fileName = url.pathname.split('/').pop();\n }\n // 未提取到文件名,使用默认文件名\n if (fileName === '') {\n // 获取文件后缀\n const url = new URL(text);\n let extension = url.pathname.split('.').pop();\n // 未能从URL提取有效后缀,使用bin作为默认后缀\n if (!extension || extension === '' || extension.length > 10) {\n extension = 'bin';\n }\n fileName = 'PastedFile' + Date.now() + i + '.' + extension;\n }\n\n // 读取文件内容\n const blob = response.data;\n const file = new File([blob], fileName, {\n type: blob.type\n });\n file.uid = Date.now() + i;\n // 接收beforeUpload的Promise对象\n const checkResult = this.beforeUpload(file);\n if (checkResult instanceof Promise) {\n checkResult.then(newFile => {\n if (newFile instanceof File) {\n this.uploadFile({\n file: newFile,\n onProgress: evt => this.handleProgress(evt),\n onSuccess: (response, file) => this.handleSuccess(response, file),\n onError: (error, file) => this.handleError(error, file)\n });\n }\n }).catch(err => {\n console.log(err);\n });\n }\n } else {\n throw new Error('URL地址请求失败');\n }\n }).catch(error => {\n this.$message({\n type: 'warning',\n message: '粘贴板中的URL地址请求失败'\n });\n });\n }\n });\n }\n }\n },\n handleScroll(event) {\n this.listScrolled = event.scrollTop > 0 && this.fileList.length > 0;\n },\n retryError() {\n if (this.exceptionList.length > 0) {\n this.retryFailedFiles(this.exceptionList);\n this.exceptionList = [];\n } else {\n this.$message({\n type: 'info',\n message: '无上传失败文件'\n });\n }\n },\n handleAutoRetryChange(val) {\n this.$message({\n type: val ? 'success' : 'info',\n message: val ? '自动重试已开启' : '自动重试已关闭'\n });\n\n // 如果开启自动重试且有失败文件,立即开始重试\n if (val && this.exceptionList.length > 0) {\n this.scheduleAutoRetry();\n }\n },\n retryFailedFiles(files) {\n files.forEach(file => {\n const retryCount = file.retryCount || 0;\n if (retryCount < this.maxRetryCount) {\n file.retryCount = retryCount + 1;\n this.uploadFile({\n file: file.file,\n onProgress: evt => this.handleProgress(evt),\n onSuccess: (response, file) => this.handleSuccess(response, file),\n onError: (error, file) => this.handleError(error, file)\n });\n } else {\n this.$message({\n type: 'warning',\n message: `${file.name} 已达到最大重试次数(${this.maxRetryCount}),停止重试`\n });\n }\n });\n },\n scheduleAutoRetry() {\n if (this.retryTimer) {\n clearTimeout(this.retryTimer);\n }\n this.retryTimer = setTimeout(() => {\n if (this.autoReUpload && this.exceptionList.length > 0) {\n const filesToRetry = [...this.exceptionList];\n this.exceptionList = [];\n this.retryFailedFiles(filesToRetry);\n }\n }, this.retryDelay);\n },\n // HuggingFace 大文件直传(绕过 CF Workers 限制)\n // 流程:前端计算 SHA256 → 获取 S3 上传 URL → 直传到 S3 → 提交文件引用\n async uploadToHuggingFaceDirect(file) {\n const fileItem = this.fileList.find(item => item.uid === file.file.uid);\n if (!fileItem) return;\n\n // 创建 AbortController 用于取消上传\n const abortController = new AbortController();\n this.abortControllers.set(file.file.uid, abortController);\n try {\n console.log('=== HuggingFace Direct Upload ===');\n console.log('File:', file.file.name, 'Size:', file.file.size);\n\n // 1. 计算 SHA256\n file.onProgress({\n percent: 5,\n file: file.file\n });\n console.log('Computing SHA256...');\n const sha256 = await computeSha256(file.file);\n console.log('SHA256:', sha256);\n\n // 检查是否已取消\n if (abortController.signal.aborted) {\n console.log('HuggingFace 上传已取消:', file.file.name);\n return;\n }\n\n // 2. 获取文件样本(前512字节的base64)\n const sampleBytes = new Uint8Array(await file.file.slice(0, 512).arrayBuffer());\n const fileSample = btoa(String.fromCharCode(...sampleBytes));\n\n // 3. 获取 LFS 上传 URL\n file.onProgress({\n percent: 10,\n file: file.file\n });\n console.log('Getting LFS upload URL...');\n const uploadInfoRes = await axios({\n url: '/upload/huggingface/getUploadUrl',\n method: 'post',\n data: {\n fileSize: file.file.size,\n fileName: file.file.name,\n fileType: file.file.type,\n sha256,\n fileSample,\n channelName: this.channelName,\n // 传递指定的渠道名称\n uploadNameType: this.uploadNameType,\n uploadFolder: this.uploadFolder\n },\n withAuthCode: true,\n signal: abortController.signal\n });\n if (!uploadInfoRes.data.success) {\n throw new Error(uploadInfoRes.data.error || 'Failed to get upload URL');\n }\n const uploadInfo = uploadInfoRes.data;\n console.log('Upload info:', uploadInfo);\n\n // 检查文件是否已存在\n if (uploadInfo.alreadyExists) {\n console.log('File already exists in LFS, skipping upload');\n file.onProgress({\n percent: 90,\n file: file.file\n });\n } else if (uploadInfo.needsLfs && uploadInfo.uploadAction) {\n // 4. 直接上传到 S3\n const {\n href,\n header\n } = uploadInfo.uploadAction;\n if (header?.chunk_size) {\n // 分片上传\n await this.uploadToHuggingFaceMultipart(file, uploadInfo, abortController);\n } else {\n // 基本上传\n console.log('Uploading to S3 (basic)...');\n const uploadRes = await fetch(href, {\n method: 'PUT',\n headers: header || {},\n body: file.file,\n signal: abortController.signal\n });\n if (!uploadRes.ok) {\n const error = await uploadRes.text();\n throw new Error(`S3 upload failed: ${uploadRes.status} - ${error}`);\n }\n console.log('S3 upload complete');\n }\n }\n\n // 检查是否已取消\n if (abortController.signal.aborted) {\n console.log('HuggingFace 上传已取消:', file.file.name);\n return;\n }\n\n // 5. 提交文件引用\n file.onProgress({\n percent: 95,\n file: file.file\n });\n console.log('Committing file...');\n const commitRes = await axios({\n url: '/upload/huggingface/commitUpload',\n method: 'post',\n data: {\n fullId: uploadInfo.fullId,\n filePath: uploadInfo.filePath,\n sha256,\n fileSize: file.file.size,\n fileName: file.file.name,\n fileType: file.file.type,\n channelName: uploadInfo.channelName\n },\n withAuthCode: true,\n signal: abortController.signal\n });\n if (!commitRes.data.success) {\n throw new Error(commitRes.data.error || 'Failed to commit file');\n }\n console.log('Upload complete:', commitRes.data);\n // 转换响应格式以匹配 handleSuccess 期望的格式\n const formattedResponse = {\n data: [{\n src: commitRes.data.src\n }]\n };\n file.onSuccess(formattedResponse, file.file);\n } catch (err) {\n // 如果是取消操作,不加入异常列表\n if (err.name === 'CanceledError' || err.code === 'ERR_CANCELED' || err.name === 'AbortError') {\n console.log('HuggingFace 上传已取消:', file.file.name);\n return;\n }\n console.error('HuggingFace direct upload error:', err);\n this.exceptionList.push(file);\n file.onError(err, file.file);\n } finally {\n // 清理 AbortController\n this.abortControllers.delete(file.file.uid);\n // 调用并发控制的完成回调\n this.onUploadComplete();\n }\n },\n // HuggingFace 分片上传到 S3\n async uploadToHuggingFaceMultipart(file, uploadInfo, abortController) {\n const {\n uploadAction\n } = uploadInfo;\n const {\n href: completionUrl,\n header\n } = uploadAction;\n const chunkSize = parseInt(header.chunk_size);\n\n // 获取所有分片的上传 URL\n const parts = Object.keys(header).filter(key => /^[0-9]+$/.test(key));\n console.log(`Multipart upload: ${parts.length} parts, chunk size: ${chunkSize}`);\n const completeParts = [];\n const totalParts = parts.length;\n for (const part of parts) {\n // 检查是否已取消\n if (abortController && abortController.signal.aborted) {\n console.log('HuggingFace 分片上传已取消');\n throw new DOMException('Upload cancelled', 'AbortError');\n }\n const index = parseInt(part) - 1;\n const start = index * chunkSize;\n const end = Math.min(start + chunkSize, file.file.size);\n const chunk = file.file.slice(start, end);\n console.log(`Uploading part ${part}/${totalParts}`);\n const response = await fetch(header[part], {\n method: 'PUT',\n body: chunk,\n signal: abortController ? abortController.signal : undefined\n });\n if (!response.ok) {\n throw new Error(`Failed to upload part ${part}: ${response.status}`);\n }\n const etag = response.headers.get('ETag');\n if (!etag) {\n throw new Error(`No ETag for part ${part}`);\n }\n completeParts.push({\n partNumber: parseInt(part),\n etag\n });\n\n // 更新进度(10% - 90%)\n const progress = 10 + Math.round(parseInt(part) / totalParts * 80);\n file.onProgress({\n percent: progress,\n file: file.file\n });\n }\n\n // 检查是否已取消\n if (abortController && abortController.signal.aborted) {\n console.log('HuggingFace 分片上传已取消');\n throw new DOMException('Upload cancelled', 'AbortError');\n }\n\n // 完成分片上传\n console.log('Completing multipart upload...');\n const completeResponse = await fetch(completionUrl, {\n method: 'POST',\n headers: {\n 'Accept': 'application/vnd.git-lfs+json',\n 'Content-Type': 'application/vnd.git-lfs+json'\n },\n body: JSON.stringify({\n oid: uploadInfo.oid,\n parts: completeParts\n }),\n signal: abortController ? abortController.signal : undefined\n });\n if (!completeResponse.ok) {\n const error = await completeResponse.text();\n throw new Error(`Multipart complete failed: ${completeResponse.status} - ${error}`);\n }\n console.log('Multipart upload complete');\n },\n // 将图片转换为 WebP 格式\n async convertImageToWebp(file) {\n return new Promise((resolve, reject) => {\n // 不支持转换的格式直接返回 null\n if (file.type.includes('gif') || file.type.includes('svg') || file.type.includes('webp')) {\n resolve(null);\n return;\n }\n const img = new Image();\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('2d');\n img.onload = () => {\n canvas.width = img.width;\n canvas.height = img.height;\n ctx.drawImage(img, 0, 0);\n canvas.toBlob(blob => {\n if (blob) {\n // 修改文件名:将原扩展名替换为 .webp\n const originalName = file.name;\n const lastDotIndex = originalName.lastIndexOf('.');\n const newName = lastDotIndex > 0 ? originalName.substring(0, lastDotIndex) + '.webp' : originalName + '.webp';\n const webpFile = new File([blob], newName, {\n type: 'image/webp'\n });\n webpFile.uid = file.uid;\n resolve(webpFile);\n } else {\n reject(new Error('WebP 转换失败'));\n }\n\n // 清理\n URL.revokeObjectURL(img.src);\n }, 'image/webp', 0.92); // 0.92 质量参数,平衡质量和大小\n };\n img.onerror = () => {\n URL.revokeObjectURL(img.src);\n reject(new Error('图片加载失败'));\n };\n img.src = URL.createObjectURL(file);\n });\n },\n // 拖拽上传卡片鼠标移动事件 - 悬浮光斑效果\n handleUploadCardMouseMove(e) {\n const glow = this.$refs.uploadCardGlow;\n if (!glow) return;\n const rect = e.currentTarget.getBoundingClientRect();\n const x = e.clientX - rect.left;\n const y = e.clientY - rect.top;\n glow.style.opacity = '1';\n glow.style.left = x + 'px';\n glow.style.top = y + 'px';\n },\n // 拖拽上传卡片鼠标离开事件\n handleUploadCardMouseLeave() {\n const glow = this.$refs.uploadCardGlow;\n if (!glow) return;\n glow.style.opacity = '0';\n }\n },\n beforeDestroy() {\n // 清理定时器\n if (this.retryTimer) {\n clearTimeout(this.retryTimer);\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./UploadForm.vue?vue&type=template&id=a12d47f4&scoped=true\"\nimport script from \"./UploadForm.vue?vue&type=script&lang=js\"\nexport * from \"./UploadForm.vue?vue&type=script&lang=js\"\n\nimport \"./UploadForm.vue?vue&type=style&index=0&id=a12d47f4&scoped=true&lang=css\"\n\nimport exportComponent from \"../../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-a12d47f4\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock } from \"vue\";\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_el_autocomplete = _resolveComponent(\"el-autocomplete\");\n return _openBlock(), _createBlock(_component_el_autocomplete, {\n ref: \"autocompleteRef\",\n modelValue: $options.inputValue,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $options.inputValue = $event),\n class: \"directory-suggestion-input\",\n \"popper-class\": $data.showSuggestions ? 'directory-suggestion-popper' : 'directory-suggestion-popper-hidden',\n \"hide-loading\": true,\n placeholder: $props.placeholder,\n \"value-key\": \"value\",\n \"fetch-suggestions\": $options.querySuggestions,\n \"trigger-on-focus\": true,\n debounce: 0,\n \"fit-input-width\": false,\n placement: \"bottom-start\",\n onFocus: $options.handleFocus,\n onBlur: $options.handleBlur,\n onSelect: $options.handleSelect\n }, null, 8, [\"modelValue\", \"popper-class\", \"placeholder\", \"fetch-suggestions\", \"onFocus\", \"onBlur\", \"onSelect\"]);\n}","import \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.filter.js\";\nimport \"core-js/modules/es.iterator.for-each.js\";\nimport \"core-js/modules/es.iterator.map.js\";\nimport axios from '@/utils/axios';\nexport default {\n name: 'DirectorySuggestionInput',\n props: {\n modelValue: {\n type: String,\n default: ''\n },\n placeholder: {\n type: String,\n default: '上传目录'\n }\n },\n emits: ['update:modelValue', 'focus', 'blur', 'select'],\n data() {\n return {\n directoryTreeRoot: null,\n directoryTreeLoaded: false,\n directoryTreeLoading: false,\n directoryChildrenMap: {},\n focusTime: null,\n showSuggestions: false,\n isFocused: false\n };\n },\n computed: {\n inputValue: {\n get() {\n return this.modelValue;\n },\n set(val) {\n this.$emit('update:modelValue', val);\n }\n }\n },\n methods: {\n handleFocus() {\n this.isFocused = true;\n this.focusTime = Date.now();\n this.showSuggestions = false;\n // 延迟需要超过输入框 width 过渡动画(0.4s),\n // 确保 popper 在输入框完全展开后再显示,避免定位错位\n setTimeout(() => {\n if (this.isFocused) {\n this.showSuggestions = true;\n // 触发 resize 事件让 popper 重新计算位置\n this.$nextTick(() => {\n window.dispatchEvent(new Event('resize'));\n });\n }\n }, 500);\n this.ensureDirectoryTreeLoaded();\n this.$emit('focus');\n },\n handleBlur() {\n this.isFocused = false;\n this.showSuggestions = false;\n this.$emit('blur');\n },\n handleSelect(item) {\n const path = item?.value || '';\n this.$emit('select', path);\n\n // 选中某级目录后,仅当存在下级子目录时才保持下拉框开启\n const normalizedPath = this.normalizeDirectoryPath(path);\n const children = this.directoryChildrenMap[normalizedPath];\n if (children && children.length > 0) {\n setTimeout(() => {\n const inputEl = this.$refs.autocompleteRef?.inputRef?.input;\n if (inputEl) {\n inputEl.focus();\n inputEl.dispatchEvent(new Event('input'));\n this.showSuggestions = true;\n }\n }, 50);\n }\n },\n normalizeDirectoryPath(path) {\n if (!path) {\n return '/';\n }\n let normalized = path;\n if (!normalized.startsWith('/')) {\n normalized = '/' + normalized;\n }\n if (normalized !== '/' && !normalized.endsWith('/')) {\n normalized += '/';\n }\n return normalized;\n },\n buildDirectoryChildrenMap(treeRoot) {\n const map = {};\n const walk = node => {\n const parentPath = this.normalizeDirectoryPath(node.path);\n const children = Array.isArray(node.children) ? node.children : [];\n map[parentPath] = children.map(child => ({\n name: child.name,\n path: this.normalizeDirectoryPath(child.path)\n }));\n children.forEach(walk);\n };\n walk(treeRoot);\n this.directoryChildrenMap = map;\n },\n async ensureDirectoryTreeLoaded() {\n if (this.directoryTreeLoaded || this.directoryTreeLoading) {\n return;\n }\n this.directoryTreeLoading = true;\n try {\n const response = await axios.get('/api/directoryTree', {\n withAuthCode: true\n });\n const tree = response?.data?.tree;\n if (tree) {\n this.directoryTreeRoot = tree;\n this.buildDirectoryChildrenMap(tree);\n this.directoryTreeLoaded = true;\n }\n } catch (error) {\n console.error('Failed to load directory tree for autocomplete:', error);\n } finally {\n this.directoryTreeLoading = false;\n }\n },\n parseDirectoryQuery(value) {\n const normalizedInput = value && value.startsWith('/') ? value : `/${value || ''}`;\n const raw = normalizedInput.slice(1);\n const parts = raw.split('/');\n const segmentInput = parts[parts.length - 1] || '';\n const parentSegments = parts.slice(0, -1).filter(Boolean);\n const parentPath = parentSegments.length > 0 ? `/${parentSegments.join('/')}/` : '/';\n return {\n segmentInput,\n parentPath\n };\n },\n getDirectorySuggestions(queryString) {\n const {\n segmentInput,\n parentPath\n } = this.parseDirectoryQuery(queryString);\n const parentChildren = this.directoryChildrenMap[parentPath] || [];\n if (!segmentInput) {\n return parentChildren.slice(0, 10).map(item => ({\n value: item.path\n }));\n }\n const keyword = segmentInput.toLowerCase();\n const matched = parentChildren.filter(item => item.name.toLowerCase().startsWith(keyword)).map(item => ({\n value: item.path\n }));\n return matched.slice(0, 10);\n },\n async querySuggestions(queryString, callback) {\n await this.ensureDirectoryTreeLoaded();\n let waitTime = 0;\n if (this.focusTime) {\n const elapsed = Date.now() - this.focusTime;\n if (elapsed < 500) {\n waitTime = 500 - elapsed;\n }\n }\n if (waitTime > 0) {\n setTimeout(() => {\n callback(this.getDirectorySuggestions(queryString));\n }, waitTime);\n } else {\n callback(this.getDirectorySuggestions(queryString));\n }\n },\n updatePopperPosition() {\n // 保留为空方法以防其他地方引用\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./DirectorySuggestionInput.vue?vue&type=template&id=47722a72&scoped=true\"\nimport script from \"./DirectorySuggestionInput.vue?vue&type=script&lang=js\"\nexport * from \"./DirectorySuggestionInput.vue?vue&type=script&lang=js\"\n\nimport \"./DirectorySuggestionInput.vue?vue&type=style&index=0&id=47722a72&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-47722a72\"]])\n\nexport default __exports__","import { resolveComponent as _resolveComponent, createVNode as _createVNode, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, createElementBlock as _createElementBlock } from \"vue\";\nconst _hoisted_1 = {\n class: \"container\"\n};\nconst _hoisted_2 = {\n class: \"upload-home\"\n};\nconst _hoisted_3 = {\n href: \"https://cfbed.sanyue.de/qa/\",\n target: \"_blank\",\n class: \"info-container\"\n};\nconst _hoisted_4 = {\n class: \"toolbar-manage\"\n};\nconst _hoisted_5 = {\n class: \"toolbar\"\n};\nconst _hoisted_6 = {\n class: \"header\"\n};\nconst _hoisted_7 = {\n class: \"title\"\n};\nconst _hoisted_8 = {\n class: \"main-title\",\n href: \"https://github.com/MarSeventh/CloudFlare-ImgBed\",\n target: \"_blank\"\n};\nconst _hoisted_9 = {\n class: \"dialog-section\"\n};\nconst _hoisted_10 = {\n class: \"section-content\"\n};\nconst _hoisted_11 = {\n class: \"dialog-section\"\n};\nconst _hoisted_12 = {\n class: \"section-header\"\n};\nconst _hoisted_13 = {\n class: \"section-content\"\n};\nconst _hoisted_14 = {\n class: \"setting-item\"\n};\nconst _hoisted_15 = {\n key: 0,\n class: \"setting-item\"\n};\nconst _hoisted_16 = {\n class: \"dialog-action\"\n};\nconst _hoisted_17 = [\"innerHTML\"];\nconst _hoisted_18 = {\n class: \"dialog-footer\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_ToggleDark = _resolveComponent(\"ToggleDark\");\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_tooltip = _resolveComponent(\"el-tooltip\");\n const _component_DirectorySuggestionInput = _resolveComponent(\"DirectorySuggestionInput\");\n const _component_el_input = _resolveComponent(\"el-input\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_DirectoryTreePicker = _resolveComponent(\"DirectoryTreePicker\");\n const _component_el_dropdown_item = _resolveComponent(\"el-dropdown-item\");\n const _component_el_dropdown_menu = _resolveComponent(\"el-dropdown-menu\");\n const _component_el_dropdown = _resolveComponent(\"el-dropdown\");\n const _component_Logo = _resolveComponent(\"Logo\");\n const _component_UploadForm = _resolveComponent(\"UploadForm\");\n const _component_el_radio = _resolveComponent(\"el-radio\");\n const _component_el_radio_group = _resolveComponent(\"el-radio-group\");\n const _component_el_switch = _resolveComponent(\"el-switch\");\n const _component_el_dialog = _resolveComponent(\"el-dialog\");\n const _component_UploadSettingsDialog = _resolveComponent(\"UploadSettingsDialog\");\n const _component_Footer = _resolveComponent(\"Footer\");\n const _component_UploadHistory = _resolveComponent(\"UploadHistory\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [_createElementVNode(\"div\", _hoisted_2, [_createVNode(_component_ToggleDark, {\n class: \"toggle-dark-button desktop-only\"\n }), _createVNode(_component_el_tooltip, {\n content: \"查看文档\",\n placement: \"bottom\",\n disabled: $options.disableTooltip\n }, {\n default: _withCtx(() => [_createElementVNode(\"a\", _hoisted_3, [_createVNode(_component_font_awesome_icon, {\n icon: \"book\",\n class: \"info-icon\",\n size: \"lg\"\n })])]),\n _: 1\n }, 8, [\"disabled\"]), _createElementVNode(\"div\", {\n class: _normalizeClass([\"upload-folder-container\", {\n 'no-announcement': !$options.announcementAvailable\n }])\n }, [_createElementVNode(\"div\", {\n class: _normalizeClass([\"upload-folder\", {\n 'active': $data.isFolderInputActive\n }])\n }, [$options.showDirectorySuggestions ? (_openBlock(), _createBlock(_component_DirectorySuggestionInput, {\n key: 0,\n modelValue: $data.uploadFolder,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => $data.uploadFolder = $event),\n class: \"inner-folder-input\",\n placeholder: \"上传目录\",\n onFocus: $options.handleFolderInputFocus,\n onBlur: $options.handleFolderInputBlur,\n onSelect: $options.handleDirectorySelect\n }, null, 8, [\"modelValue\", \"onFocus\", \"onBlur\", \"onSelect\"])) : (_openBlock(), _createBlock(_component_el_input, {\n key: 1,\n class: \"inner-folder-input\",\n modelValue: $data.uploadFolder,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = $event => $data.uploadFolder = $event),\n placeholder: \"上传目录\",\n onFocus: $options.handleFolderInputFocus,\n onBlur: $options.handleFolderInputBlur\n }, null, 8, [\"modelValue\", \"onFocus\", \"onBlur\"]))], 2), $options.showDirectorySuggestions ? (_openBlock(), _createBlock(_component_DirectoryTreePicker, {\n key: 0,\n \"current-directory\": $data.uploadFolder,\n source: \"upload\",\n onSelect: $options.handleDirectorySelect\n }, {\n trigger: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"directory-tree-trigger\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"folder-tree\"\n })]),\n _: 1\n })]),\n _: 1\n }, 8, [\"current-directory\", \"onSelect\"])) : _createCommentVNode(\"\", true)], 2), _createVNode(_component_el_tooltip, {\n content: \"切换上传方式\",\n placement: \"bottom\",\n disabled: $options.disableTooltip\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"upload-method-button desktop-only\",\n onClick: $options.handleChangeUploadMethod\n }, {\n default: _withCtx(() => [$data.uploadMethod === 'default' ? (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 0,\n icon: \"folder-open\",\n class: \"upload-method-icon\",\n size: \"lg\"\n })) : $data.uploadMethod === 'paste' ? (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 1,\n icon: \"paste\",\n class: \"upload-method-icon\",\n size: \"lg\"\n })) : _createCommentVNode(\"\", true)]),\n _: 1\n }, 8, [\"onClick\"])]),\n _: 1\n }, 8, [\"disabled\"]), _createVNode(_component_el_tooltip, {\n content: \"上传记录\",\n placement: \"bottom\",\n disabled: $options.disableTooltip\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"history-button desktop-only\",\n onClick: _cache[2] || (_cache[2] = $event => $data.showHistory = true)\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"history\",\n class: \"history-icon\",\n size: \"lg\"\n })]),\n _: 1\n })]),\n _: 1\n }, 8, [\"disabled\"]), $options.announcementAvailable ? (_openBlock(), _createBlock(_component_el_tooltip, {\n key: 0,\n content: \"查看公告\",\n placement: \"bottom\",\n disabled: $options.disableTooltip\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"announcement-button desktop-only\",\n onClick: $options.handleShowAnnouncement\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"bullhorn\",\n class: \"announcement-icon\",\n size: \"lg\"\n })]),\n _: 1\n }, 8, [\"onClick\"])]),\n _: 1\n }, 8, [\"disabled\"])) : _createCommentVNode(\"\", true), _createVNode(_component_el_dropdown, {\n class: \"mobile-more-dropdown mobile-only\",\n trigger: \"click\",\n onCommand: $options.handleMobileMenuCommand\n }, {\n dropdown: _withCtx(() => [_createVNode(_component_el_dropdown_menu, null, {\n default: _withCtx(() => [_createVNode(_component_el_dropdown_item, {\n command: \"toggleTheme\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: $options.getThemeIcon(),\n style: {\n \"margin-right\": \"8px\"\n }\n }, null, 8, [\"icon\"]), _createTextVNode(\" \" + _toDisplayString($options.getThemeText()), 1)]),\n _: 1\n }), _createVNode(_component_el_dropdown_item, {\n command: \"toggleUploadMethod\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: $data.uploadMethod === 'default' ? 'paste' : 'folder-open',\n style: {\n \"margin-right\": \"8px\"\n }\n }, null, 8, [\"icon\"]), _createTextVNode(\" \" + _toDisplayString($data.uploadMethod === 'default' ? '粘贴上传' : '文件上传'), 1)]),\n _: 1\n }), _createVNode(_component_el_dropdown_item, {\n command: \"showHistory\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"history\",\n style: {\n \"margin-right\": \"8px\"\n }\n }), _cache[22] || (_cache[22] = _createTextVNode(\" 上传记录 \", -1))]),\n _: 1\n }), _createVNode(_component_el_dropdown_item, {\n command: \"showAnnouncement\",\n disabled: !$options.announcementAvailable\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"bullhorn\",\n style: {\n \"margin-right\": \"8px\"\n }\n }), _cache[23] || (_cache[23] = _createTextVNode(\" 查看公告 \", -1))]),\n _: 1\n }, 8, [\"disabled\"])]),\n _: 1\n })]),\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: \"mobile-more-button\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"ellipsis-v\",\n size: \"lg\"\n })]),\n _: 1\n })]),\n _: 1\n }, 8, [\"onCommand\"]), _createElementVNode(\"div\", _hoisted_4, [_createVNode(_component_el_button, {\n class: _normalizeClass([\"toolbar-manage-button\", {\n 'active': $data.isToolBarOpen\n }]),\n size: \"large\",\n onClick: $options.handleOpenToolbar,\n circle: \"\"\n }, {\n default: _withCtx(() => [!$data.isToolBarOpen ? (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 0,\n icon: \"bars\",\n class: \"manage-icon\",\n size: \"lg\"\n })) : (_openBlock(), _createBlock(_component_font_awesome_icon, {\n key: 1,\n icon: \"times\",\n class: \"manage-icon\",\n size: \"lg\"\n }))]),\n _: 1\n }, 8, [\"class\", \"onClick\"])]), _createElementVNode(\"div\", _hoisted_5, [_createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: \"上传设置\",\n placement: \"top\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: _normalizeClass([\"toolbar-button compress-button\", {\n 'active': $data.isToolBarOpen\n }]),\n size: \"large\",\n onClick: $options.openCompressDialog,\n circle: \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"cloud-upload\",\n class: \"compress-icon\",\n size: \"lg\"\n })]),\n _: 1\n }, 8, [\"class\", \"onClick\"])]),\n _: 1\n }, 8, [\"disabled\"]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: \"链接格式\",\n placement: \"left\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: _normalizeClass([\"toolbar-button link-button\", {\n 'active': $data.isToolBarOpen\n }]),\n size: \"large\",\n onClick: $options.openUrlDialog,\n circle: \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"link\",\n class: \"link-icon\",\n size: \"lg\"\n })]),\n _: 1\n }, 8, [\"class\", \"onClick\"])]),\n _: 1\n }, 8, [\"disabled\"]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: \"系统管理\",\n placement: \"left\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: _normalizeClass([\"toolbar-button config-button\", {\n 'active': $data.isToolBarOpen\n }]),\n size: \"large\",\n onClick: $options.handleManage,\n circle: \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"cog\",\n class: \"config-icon\",\n size: \"lg\"\n })]),\n _: 1\n }, 8, [\"class\", \"onClick\"])]),\n _: 1\n }, 8, [\"disabled\"]), _createVNode(_component_el_tooltip, {\n disabled: $options.disableTooltip,\n content: \"退出登录\",\n placement: \"left\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_button, {\n class: _normalizeClass([\"toolbar-button sign-out-button\", {\n 'active': $data.isToolBarOpen\n }]),\n size: \"large\",\n onClick: $options.handleLogout,\n circle: \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"sign-out-alt\",\n class: \"sign-out-icon\",\n size: \"lg\"\n })]),\n _: 1\n }, 8, [\"class\", \"onClick\"])]),\n _: 1\n }, 8, [\"disabled\"])]), _createVNode(_component_Logo, {\n useConfigLink: true\n }), _createElementVNode(\"div\", _hoisted_6, [_createElementVNode(\"h1\", _hoisted_7, [_createElementVNode(\"a\", _hoisted_8, _toDisplayString($options.ownerName), 1), _cache[24] || (_cache[24] = _createTextVNode(\" ImgHub\", -1))])]), _createVNode(_component_UploadForm, {\n selectedUrlForm: $data.selectedUrlForm,\n customerCompress: $data.customerCompress,\n compressQuality: $data.compressQuality,\n compressBar: $data.compressBar,\n serverCompress: $data.serverCompress,\n uploadChannel: $data.uploadChannel,\n channelName: $data.channelName,\n uploadNameType: $data.uploadNameType,\n useCustomUrl: $data.useCustomUrl,\n customUrlPrefix: $data.customUrlPrefix,\n autoRetry: $data.autoRetry,\n urlPrefix: $options.urlPrefix,\n uploadMethod: $data.uploadMethod,\n uploadFolder: $data.uploadFolder,\n convertToWebp: $data.convertToWebp,\n class: \"upload\"\n }, null, 8, [\"selectedUrlForm\", \"customerCompress\", \"compressQuality\", \"compressBar\", \"serverCompress\", \"uploadChannel\", \"channelName\", \"uploadNameType\", \"useCustomUrl\", \"customUrlPrefix\", \"autoRetry\", \"urlPrefix\", \"uploadMethod\", \"uploadFolder\", \"convertToWebp\"]), _createVNode(_component_el_dialog, {\n title: \"链接格式设置\",\n modelValue: $data.showUrlDialog,\n \"onUpdate:modelValue\": _cache[7] || (_cache[7] = $event => $data.showUrlDialog = $event),\n width: $options.dialogWidth,\n \"show-close\": false,\n class: \"settings-dialog\"\n }, {\n default: _withCtx(() => [_createElementVNode(\"div\", _hoisted_9, [_cache[29] || (_cache[29] = _createElementVNode(\"div\", {\n class: \"section-header\"\n }, [_createElementVNode(\"span\", {\n class: \"section-title\"\n }, \"默认复制链接\")], -1)), _createElementVNode(\"div\", _hoisted_10, [_createVNode(_component_el_radio_group, {\n modelValue: $data.selectedUrlForm,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $data.selectedUrlForm = $event),\n onChange: $options.changeUrlForm,\n class: \"radio-card-group grid-2x2\"\n }, {\n default: _withCtx(() => [_createVNode(_component_el_radio, {\n value: \"url\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"link\",\n class: \"radio-icon\"\n }), _cache[25] || (_cache[25] = _createElementVNode(\"span\", null, \"原始链接\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n value: \"md\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"code\",\n class: \"radio-icon\"\n }), _cache[26] || (_cache[26] = _createElementVNode(\"span\", null, \"MarkDown\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n value: \"html\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"code-branch\",\n class: \"radio-icon\"\n }), _cache[27] || (_cache[27] = _createElementVNode(\"span\", null, \"HTML\", -1))]),\n _: 1\n }), _createVNode(_component_el_radio, {\n value: \"ubb\",\n class: \"radio-card\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"quote-right\",\n class: \"radio-icon\"\n }), _cache[28] || (_cache[28] = _createElementVNode(\"span\", null, \"BBCode\", -1))]),\n _: 1\n })]),\n _: 1\n }, 8, [\"modelValue\", \"onChange\"])])]), _createElementVNode(\"div\", _hoisted_11, [_createElementVNode(\"div\", _hoisted_12, [_cache[30] || (_cache[30] = _createElementVNode(\"span\", {\n class: \"section-title\"\n }, \"自定义链接\", -1)), _createVNode(_component_el_tooltip, {\n content: \"默认链接为https://your.domain/file/xxx.jpg
如果启用自定义链接格式,只保留xxx.jpg部分,其他部分请自行输入\",\n placement: \"top\",\n \"raw-content\": \"\"\n }, {\n default: _withCtx(() => [_createVNode(_component_font_awesome_icon, {\n icon: \"question-circle\",\n class: \"section-help-icon\"\n })]),\n _: 1\n })]), _createElementVNode(\"div\", _hoisted_13, [_createElementVNode(\"div\", _hoisted_14, [_cache[31] || (_cache[31] = _createElementVNode(\"span\", {\n class: \"setting-label\"\n }, \"启用自定义\", -1)), _createVNode(_component_el_switch, {\n modelValue: $data.useCustomUrl,\n \"onUpdate:modelValue\": _cache[4] || (_cache[4] = $event => $data.useCustomUrl = $event),\n \"active-value\": \"true\",\n \"inactive-value\": \"false\"\n }, null, 8, [\"modelValue\"])]), $data.useCustomUrl === 'true' ? (_openBlock(), _createElementBlock(\"div\", _hoisted_15, [_cache[32] || (_cache[32] = _createElementVNode(\"span\", {\n class: \"setting-label\"\n }, \"自定义前缀\", -1)), _createVNode(_component_el_input, {\n modelValue: $data.customUrlPrefix,\n \"onUpdate:modelValue\": _cache[5] || (_cache[5] = $event => $data.customUrlPrefix = $event),\n placeholder: \"请输入自定义链接前缀\",\n class: \"setting-input\"\n }, null, 8, [\"modelValue\"])])) : _createCommentVNode(\"\", true)])]), _createElementVNode(\"div\", _hoisted_16, [_createVNode(_component_el_button, {\n type: \"primary\",\n onClick: _cache[6] || (_cache[6] = $event => $data.showUrlDialog = false),\n class: \"confirm-btn\"\n }, {\n default: _withCtx(() => [...(_cache[33] || (_cache[33] = [_createTextVNode(\"确定\", -1)]))]),\n _: 1\n })])]),\n _: 1\n }, 8, [\"modelValue\", \"width\"]), _createVNode(_component_UploadSettingsDialog, {\n modelValue: $data.showCompressDialog,\n \"onUpdate:modelValue\": _cache[8] || (_cache[8] = $event => $data.showCompressDialog = $event),\n uploadChannel: $data.uploadChannel,\n \"onUpdate:uploadChannel\": _cache[9] || (_cache[9] = $event => $data.uploadChannel = $event),\n channelName: $data.channelName,\n \"onUpdate:channelName\": _cache[10] || (_cache[10] = $event => $data.channelName = $event),\n currentChannelList: $options.currentChannelList,\n uploadFolder: $data.uploadFolder,\n \"onUpdate:uploadFolder\": _cache[11] || (_cache[11] = $event => $data.uploadFolder = $event),\n autoRetry: $data.autoRetry,\n \"onUpdate:autoRetry\": _cache[12] || (_cache[12] = $event => $data.autoRetry = $event),\n uploadNameType: $data.uploadNameType,\n \"onUpdate:uploadNameType\": _cache[13] || (_cache[13] = $event => $data.uploadNameType = $event),\n convertToWebp: $data.convertToWebp,\n \"onUpdate:convertToWebp\": _cache[14] || (_cache[14] = $event => $data.convertToWebp = $event),\n customerCompress: $data.customerCompress,\n \"onUpdate:customerCompress\": _cache[15] || (_cache[15] = $event => $data.customerCompress = $event),\n compressBar: $data.compressBar,\n \"onUpdate:compressBar\": _cache[16] || (_cache[16] = $event => $data.compressBar = $event),\n compressQuality: $data.compressQuality,\n \"onUpdate:compressQuality\": _cache[17] || (_cache[17] = $event => $data.compressQuality = $event),\n serverCompress: $data.serverCompress,\n \"onUpdate:serverCompress\": _cache[18] || (_cache[18] = $event => $data.serverCompress = $event)\n }, null, 8, [\"modelValue\", \"uploadChannel\", \"channelName\", \"currentChannelList\", \"uploadFolder\", \"autoRetry\", \"uploadNameType\", \"convertToWebp\", \"customerCompress\", \"compressBar\", \"compressQuality\", \"serverCompress\"])]), _createVNode(_component_Footer, {\n class: \"footer\"\n }), _createVNode(_component_el_dialog, {\n title: \"公告\",\n modelValue: $data.showAnnouncementDialog,\n \"onUpdate:modelValue\": _cache[20] || (_cache[20] = $event => $data.showAnnouncementDialog = $event),\n width: $options.dialogWidth,\n \"show-close\": false,\n \"close-on-click-modal\": false,\n \"close-on-press-escape\": false,\n center: \"\"\n }, {\n footer: _withCtx(() => [_createElementVNode(\"span\", _hoisted_18, [_createVNode(_component_el_button, {\n type: \"primary\",\n onClick: _cache[19] || (_cache[19] = $event => $data.showAnnouncementDialog = false)\n }, {\n default: _withCtx(() => [...(_cache[34] || (_cache[34] = [_createTextVNode(\"我已知晓!\", -1)]))]),\n _: 1\n })])]),\n default: _withCtx(() => [_createElementVNode(\"div\", {\n innerHTML: $data.announcementContent\n }, null, 8, _hoisted_17)]),\n _: 1\n }, 8, [\"modelValue\", \"width\"]), _createVNode(_component_UploadHistory, {\n show: $data.showHistory,\n onClose: _cache[21] || (_cache[21] = $event => $data.showHistory = false)\n }, null, 8, [\"show\"])]);\n}","import \"core-js/modules/es.array.push.js\";\nimport \"core-js/modules/es.iterator.constructor.js\";\nimport \"core-js/modules/es.iterator.for-each.js\";\nimport \"core-js/modules/es.iterator.some.js\";\nimport UploadForm from '@/components/upload/UploadForm.vue';\nimport Footer from '@/components/Footer.vue';\nimport ToggleDark from '@/components/ToggleDark.vue';\nimport Logo from '@/components/Logo.vue';\nimport UploadHistory from '@/components/upload/UploadHistory.vue';\nimport UploadSettingsDialog from '@/components/upload/UploadSettingsDialog.vue';\nimport DirectoryTreePicker from '@/components/DirectoryTreePicker.vue';\nimport DirectorySuggestionInput from '@/components/DirectorySuggestionInput.vue';\nimport backgroundManager from '@/mixins/backgroundManager';\nimport axios from '@/utils/axios';\nimport { ref } from 'vue';\nimport cookies from 'vue-cookies';\nimport { mapGetters } from 'vuex';\nimport { validateFolderPath } from '@/utils/pathValidator';\nexport default {\n name: 'UploadHome',\n mixins: [backgroundManager],\n data() {\n return {\n selectedUrlForm: ref(''),\n showUrlDialog: false,\n showCompressDialog: false,\n customerCompress: true,\n //上传前压缩\n compressQuality: 4,\n //压缩后大小\n compressBar: 5,\n //压缩阈值\n convertToWebp: false,\n //转换为WebP格式\n serverCompress: true,\n //服务器端压缩\n uploadChannel: '',\n //上传渠道\n channelName: '',\n //指定的渠道名称\n availableChannels: {},\n //可用渠道列表\n uploadNameType: '',\n //上传文件命名方式\n customUrlPrefix: '',\n //自定义链接前缀\n useCustomUrl: 'false',\n //是否启用自定义链接格式\n autoRetry: true,\n //失败自动切换\n useDefaultWallPaper: false,\n isToolBarOpen: false,\n //是否打开工具栏\n uploadMethod: 'default',\n //上传方式\n uploadFolder: '',\n // 上传文件夹\n isFolderInputActive: false,\n showAnnouncementDialog: false,\n // 控制公告弹窗的显示\n announcementContent: '',\n // 公告内容\n showHistory: false,\n themeMode: 'auto' // 主题模式:light, dark, auto\n };\n },\n watch: {\n customerCompress(val) {\n this.updateCompressConfig('customerCompress', val);\n },\n compressQuality(val) {\n this.updateCompressConfig('compressQuality', val);\n },\n compressBar(val) {\n // 确保值在有效范围内\n if (val === null || val === undefined || val < 1) {\n this.compressBar = 1;\n return;\n }\n // 确保期望大小不超过压缩阈值\n if (this.compressQuality > val) {\n this.compressQuality = val;\n }\n this.updateCompressConfig('compressBar', val);\n },\n serverCompress(val) {\n this.updateCompressConfig('serverCompress', val);\n },\n convertToWebp(val) {\n this.updateCompressConfig('convertToWebp', val);\n },\n uploadChannel(val) {\n this.updateStoreUploadChannel(val);\n // 切换渠道类型时,检查持久化的渠道名是否在新渠道列表中\n const newChannelList = this.availableChannels[val] || [];\n const savedChannelName = this.storeChannelName;\n if (savedChannelName && newChannelList.some(ch => ch.name === savedChannelName)) {\n // 持久化的渠道名在新渠道列表中,恢复它\n this.channelName = savedChannelName;\n } else {\n // 否则清空\n this.channelName = '';\n }\n },\n channelName(val) {\n // 确保清空时保存空字符串而不是null\n this.$store.commit('setStoreChannelName', val || '');\n },\n uploadNameType(val) {\n this.updateStoreUploadNameType(val);\n },\n customUrlPrefix(val) {\n this.$store.commit('setCustomUrlSettings', {\n key: 'customUrlPrefix',\n value: val\n });\n },\n useCustomUrl(val) {\n this.$store.commit('setCustomUrlSettings', {\n key: 'useCustomUrl',\n value: val\n });\n },\n autoRetry(val) {\n this.$store.commit('setStoreAutoRetry', val);\n },\n uploadFolder(val) {\n // 实时输入时用非 strict 模式,不检查末尾的单独 . 以允许继续输入如 .123\n if (this.validateUploadFolder(val, false)) {\n // 非 strict 通过后,再用 strict 模式静默检查,只有完全合法才更新 store\n const strictResult = validateFolderPath(val, {\n strict: true\n });\n if (strictResult.valid) {\n this.$store.commit('setStoreUploadFolder', val);\n }\n // strict 不通过时不更新 store,等失焦时提示并回滚\n } else {\n this.$nextTick(() => {\n this.uploadFolder = this.storeUploadFolder;\n });\n }\n }\n },\n computed: {\n ...mapGetters(['userConfig', 'uploadCopyUrlForm', 'compressConfig', 'storeUploadChannel', 'storeChannelName', 'storeUploadNameType', 'customUrlSettings', 'storeAutoRetry', 'storeUploadMethod', 'storeUploadFolder']),\n ownerName() {\n return this.userConfig?.ownerName || 'Sanyue';\n },\n dialogWidth() {\n return window.innerWidth > 768 ? '50%' : '90%';\n },\n disableTooltip() {\n return window.innerWidth < 768;\n },\n urlPrefix() {\n // 全局自定义链接前缀\n return this.userConfig?.urlPrefix || `${window.location.protocol}//${window.location.host}/file/`;\n },\n announcementAvailable() {\n return !!this.userConfig?.announcement;\n },\n // 是否显示目录候选项(从 userConfig 获取)\n showDirectorySuggestions() {\n return this.userConfig?.showDirectorySuggestions ?? false;\n },\n // 当前渠道类型对应的渠道列表\n currentChannelList() {\n return this.availableChannels[this.uploadChannel] || [];\n }\n },\n mounted() {\n // 初始化背景图,启用自动创建元素\n this.initializeBackground('uploadBkImg', '.container', false, true);\n\n // 读取用户选择的链接格式\n this.selectedUrlForm = this.uploadCopyUrlForm || 'url';\n // 读取用户选择的压缩设置(优先用户设置,其次系统默认配置)\n this.customerCompress = this.compressConfig.customerCompress ?? this.parseBoolean(this.userConfig?.defaultCustomerCompress, true);\n this.compressQuality = this.compressConfig.compressQuality ?? this.parseNumber(this.userConfig?.defaultCompressQuality, 4);\n this.compressBar = this.compressConfig.compressBar ?? this.parseNumber(this.userConfig?.defaultCompressBar, 5);\n this.serverCompress = this.compressConfig.serverCompress ?? true;\n this.convertToWebp = this.compressConfig.convertToWebp ?? this.parseBoolean(this.userConfig?.defaultConvertToWebp, false);\n // 读取用户选择的上传渠道\n this.uploadChannel = this.storeUploadChannel || this.userConfig?.defaultUploadChannel || 'telegram';\n // 用户定义的失败自动切换\n this.autoRetry = this.storeAutoRetry;\n // 读取用户选择的上传文件命名方式\n this.uploadNameType = this.storeUploadNameType || this.userConfig?.defaultUploadNameType || 'default';\n // 读取用户自定义链接格式\n this.customUrlPrefix = this.customUrlSettings.customUrlPrefix;\n this.useCustomUrl = this.customUrlSettings.useCustomUrl;\n // 读取用户偏好的上传方式\n this.uploadMethod = this.storeUploadMethod;\n // 获取可用渠道列表\n this.fetchAvailableChannels();\n // 读取用户设置的上传文件夹\n this.uploadFolder = this.storeUploadFolder || this.userConfig?.defaultUploadFolder || '';\n\n // 从 Vuex store 读取主题模式状态\n const cusDarkMode = this.$store.getters.cusDarkMode;\n const useDarkMode = this.$store.getters.useDarkMode;\n if (!cusDarkMode) {\n this.themeMode = 'auto';\n } else if (useDarkMode) {\n this.themeMode = 'dark';\n } else {\n this.themeMode = 'light';\n }\n\n // 首次访问公告\n const visited = localStorage.getItem('visitedUploadHome');\n const announcement = this.userConfig?.announcement;\n if (!visited && announcement) {\n this.announcementContent = announcement;\n this.showAnnouncementDialog = true;\n localStorage.setItem('visitedUploadHome', 'true');\n }\n },\n components: {\n UploadForm,\n Footer,\n ToggleDark,\n Logo,\n UploadHistory,\n UploadSettingsDialog,\n DirectoryTreePicker,\n DirectorySuggestionInput\n },\n methods: {\n // 获取可用渠道列表\n async fetchAvailableChannels() {\n try {\n const response = await axios.get('/api/channels', {\n withAuthCode: true\n });\n if (response.data) {\n this.availableChannels = response.data;\n // 恢复渠道名称:优先持久化的值,其次系统默认配置\n const savedChannelName = this.storeChannelName;\n const defaultChannelName = this.userConfig?.defaultChannelName;\n const currentChannelList = this.availableChannels[this.uploadChannel] || [];\n\n // 如果用户主动清空过(savedChannelName === ''),则保持为空\n // 如果从未选择过(savedChannelName === null/undefined),则使用默认值\n if (savedChannelName && currentChannelList.some(ch => ch.name === savedChannelName)) {\n this.channelName = savedChannelName;\n } else if (savedChannelName === '' || savedChannelName === null || savedChannelName === undefined) {\n // 用户主动清空或从未选择,检查是否使用默认值\n if (savedChannelName !== '' && defaultChannelName && currentChannelList.some(ch => ch.name === defaultChannelName)) {\n this.channelName = defaultChannelName;\n }\n // 如果 savedChannelName === '',说明用户主动清空,保持为空\n }\n }\n } catch (error) {\n console.error('Failed to fetch available channels:', error);\n }\n },\n // 验证上传文件夹路径的合法性\n validateUploadFolder(path, strict = true) {\n // 自动补全前导 /\n if (path && !path.startsWith('/')) {\n path = '/' + path;\n this.uploadFolder = path;\n }\n const result = validateFolderPath(path, {\n strict\n });\n if (!result.valid) {\n // 将错误消息中的\"目标目录\"替换为\"上传目录\"以保持原有的提示风格\n const errorMessage = result.error.replace('目标目录', '上传目录');\n this.$message.error(errorMessage);\n return false;\n }\n return true;\n },\n handleFolderInputFocus() {\n this.isFolderInputActive = true;\n },\n handleFolderInputBlur() {\n this.isFolderInputActive = false;\n // 失焦时自动补全前导 /\n if (this.uploadFolder && !this.uploadFolder.startsWith('/')) {\n this.uploadFolder = '/' + this.uploadFolder;\n }\n // 失焦时做完整校验(包括末尾单独的 .)\n if (!this.validateUploadFolder(this.uploadFolder, true)) {\n this.$nextTick(() => {\n this.uploadFolder = this.storeUploadFolder;\n });\n }\n },\n handleManage() {\n this.$router.push('/dashboard');\n },\n // 解析布尔值\n parseBoolean(value, defaultValue) {\n if (value === undefined || value === null) return defaultValue;\n if (typeof value === 'boolean') return value;\n if (typeof value === 'string') return value === 'true';\n return defaultValue;\n },\n // 解析数字\n parseNumber(value, defaultValue) {\n if (value === undefined || value === null) return defaultValue;\n const num = parseFloat(value);\n return isNaN(num) ? defaultValue : num;\n },\n openUrlDialog() {\n this.showUrlDialog = true;\n },\n handleLogout() {\n cookies.remove('authCode');\n this.$router.push('/login');\n this.$message.success('已退出登录');\n },\n changeUrlForm() {\n this.$store.commit('setUploadCopyUrlForm', this.selectedUrlForm);\n },\n openCompressDialog() {\n this.showCompressDialog = true;\n },\n updateCompressConfig(key, value) {\n this.$store.commit('setCompressConfig', {\n key,\n value\n });\n },\n updateStoreUploadChannel(value) {\n this.$store.commit('setStoreUploadChannel', value);\n },\n updateStoreUploadNameType(value) {\n this.$store.commit('setStoreUploadNameType', value);\n },\n handleOpenToolbar() {\n this.isToolBarOpen = !this.isToolBarOpen;\n // 等过渡动画结束,向active类添加pointer-events属性,使其可以点击\n setTimeout(() => {\n const buttons = document.querySelectorAll('.toolbar-button');\n buttons.forEach(button => {\n button.style.pointerEvents = this.isToolBarOpen ? 'auto' : 'none';\n });\n }, 300);\n },\n handleChangeUploadMethod() {\n this.uploadMethod = this.uploadMethod === 'default' ? 'paste' : 'default';\n this.$store.commit('setUploadMethod', this.uploadMethod);\n },\n handleMobileMenuCommand(command) {\n if (command === 'toggleTheme') {\n // 循环切换:auto -> light -> dark -> auto\n if (this.themeMode === 'auto') {\n // 切换到亮色\n this.themeMode = 'light';\n this.$store.commit('setCusDarkMode', true);\n this.$store.commit('setUseDarkMode', false);\n } else if (this.themeMode === 'light') {\n // 切换到暗色\n this.themeMode = 'dark';\n this.$store.commit('setCusDarkMode', true);\n this.$store.commit('setUseDarkMode', true);\n } else {\n // 切换到自动\n this.themeMode = 'auto';\n this.$store.commit('setCusDarkMode', false);\n }\n } else if (command === 'toggleUploadMethod') {\n this.handleChangeUploadMethod();\n } else if (command === 'showHistory') {\n this.showHistory = true;\n } else if (command === 'showAnnouncement') {\n this.handleShowAnnouncement();\n }\n },\n getThemeIcon() {\n // 显示下一个模式的图标\n if (this.themeMode === 'auto') return 'sun'; // auto -> light\n if (this.themeMode === 'light') return 'moon'; // light -> dark\n return 'adjust'; // dark -> auto\n },\n getThemeText() {\n // 显示下一个模式的文字\n if (this.themeMode === 'auto') return '浅色模式';\n if (this.themeMode === 'light') return '深色模式';\n return '自动模式';\n },\n handleShowAnnouncement() {\n const announcement = this.userConfig?.announcement;\n if (announcement) {\n this.announcementContent = announcement;\n this.showAnnouncementDialog = true;\n } else {\n this.$message.info('暂无公告');\n }\n },\n // 处理目录选择\n handleDirectorySelect(path) {\n // 填入选择的目录路径\n this.uploadFolder = path;\n // 触发路径验证逻辑\n if (this.validateUploadFolder(path, true)) {\n this.$store.commit('setStoreUploadFolder', path);\n }\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./UploadHome.vue?vue&type=template&id=1db22ef8&scoped=true\"\nimport script from \"./UploadHome.vue?vue&type=script&lang=js\"\nexport * from \"./UploadHome.vue?vue&type=script&lang=js\"\n\nimport \"./UploadHome.vue?vue&type=style&index=0&id=1db22ef8&scoped=true&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-1db22ef8\"]])\n\nexport default __exports__","!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define([],e):\"object\"==typeof exports?exports.imageConversion=e():t.imageConversion=e()}(this,(function(){return function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,\"a\",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p=\"\",n(n.s=0)}([function(t,e,n){\"use strict\";var r;function o(t){return[\"image/png\",\"image/jpeg\",\"image/gif\"].some(e=>e===t)}n.r(e),n.d(e,\"canvastoDataURL\",(function(){return a})),n.d(e,\"canvastoFile\",(function(){return c})),n.d(e,\"dataURLtoFile\",(function(){return s})),n.d(e,\"dataURLtoImage\",(function(){return l})),n.d(e,\"downloadFile\",(function(){return d})),n.d(e,\"filetoDataURL\",(function(){return f})),n.d(e,\"imagetoCanvas\",(function(){return g})),n.d(e,\"urltoBlob\",(function(){return w})),n.d(e,\"urltoImage\",(function(){return m})),n.d(e,\"compress\",(function(){return p})),n.d(e,\"compressAccurately\",(function(){return b})),n.d(e,\"EImageType\",(function(){return r})),function(t){t.PNG=\"image/png\",t.JPEG=\"image/jpeg\",t.GIF=\"image/gif\"}(r||(r={}));var i=function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{u(r.next(t))}catch(t){i(t)}}function c(t){try{u(r.throw(t))}catch(t){i(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,c)}u((r=r.apply(t,e||[])).next())}))};function a(t,e=.92,n=r.JPEG){return i(this,void 0,void 0,(function*(){return o(n)||(n=r.JPEG),t.toDataURL(n,e)}))}function c(t,e=.92,n=r.JPEG){return new Promise(r=>t.toBlob(t=>r(t),n,e))}var u=function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{u(r.next(t))}catch(t){i(t)}}function c(t){try{u(r.throw(t))}catch(t){i(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,c)}u((r=r.apply(t,e||[])).next())}))};function s(t,e){return u(this,void 0,void 0,(function*(){const n=t.split(\",\");let r=n[0].match(/:(.*?);/)[1];const i=atob(n[1]);let a=i.length;const c=new Uint8Array(a);for(;a--;)c[a]=i.charCodeAt(a);return o(e)&&(r=e),new Blob([c],{type:r})}))}function l(t){return new Promise((e,n)=>{const r=new Image;r.onload=()=>e(r),r.onerror=()=>n(new Error(\"dataURLtoImage(): dataURL is illegal\")),r.src=t})}function d(t,e){const n=document.createElement(\"a\");n.href=window.URL.createObjectURL(t),n.download=e||Date.now().toString(36),document.body.appendChild(n);const r=document.createEvent(\"MouseEvents\");r.initEvent(\"click\",!1,!1),n.dispatchEvent(r),document.body.removeChild(n)}function f(t){return new Promise(e=>{const n=new FileReader;n.onloadend=t=>e(t.target.result),n.readAsDataURL(t)})}var h=function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{u(r.next(t))}catch(t){i(t)}}function c(t){try{u(r.throw(t))}catch(t){i(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,c)}u((r=r.apply(t,e||[])).next())}))};function g(t,e={}){return h(this,void 0,void 0,(function*(){const n=Object.assign({},e),r=document.createElement(\"canvas\"),o=r.getContext(\"2d\");let i,a;for(const t in n)Object.prototype.hasOwnProperty.call(n,t)&&(n[t]=Number(n[t]));if(n.scale){const e=n.scale>0&&n.scale<10?n.scale:1;a=t.width*e,i=t.height*e}else a=n.width||n.height*t.width/t.height||t.width,i=n.height||n.width*t.height/t.width||t.height;switch([5,6,7,8].some(t=>t===n.orientation)?(r.height=a,r.width=i):(r.height=i,r.width=a),n.orientation){case 3:o.rotate(180*Math.PI/180),o.drawImage(t,-r.width,-r.height,r.width,r.height);break;case 6:o.rotate(90*Math.PI/180),o.drawImage(t,0,-r.width,r.height,r.width);break;case 8:o.rotate(270*Math.PI/180),o.drawImage(t,-r.height,0,r.height,r.width);break;case 2:o.translate(r.width,0),o.scale(-1,1),o.drawImage(t,0,0,r.width,r.height);break;case 4:o.translate(r.width,0),o.scale(-1,1),o.rotate(180*Math.PI/180),o.drawImage(t,-r.width,-r.height,r.width,r.height);break;case 5:o.translate(r.width,0),o.scale(-1,1),o.rotate(90*Math.PI/180),o.drawImage(t,0,-r.width,r.height,r.width);break;case 7:o.translate(r.width,0),o.scale(-1,1),o.rotate(270*Math.PI/180),o.drawImage(t,-r.height,0,r.height,r.width);break;default:o.drawImage(t,0,0,r.width,r.height)}return r}))}function w(t){return fetch(t).then(t=>t.blob())}function m(t){return new Promise((e,n)=>{const r=new Image;r.onload=()=>e(r),r.onerror=()=>n(new Error(\"urltoImage(): Image failed to load, please check the image URL\")),r.src=t})}var y=function(t,e,n,r){return new(n||(n=Promise))((function(o,i){function a(t){try{u(r.next(t))}catch(t){i(t)}}function c(t){try{u(r.throw(t))}catch(t){i(t)}}function u(t){var e;t.done?o(t.value):(e=t.value,e instanceof n?e:new n((function(t){t(e)}))).then(a,c)}u((r=r.apply(t,e||[])).next())}))};function p(t,e={}){return y(this,void 0,void 0,(function*(){if(!(t instanceof Blob))throw new Error(\"compress(): First arg must be a Blob object or a File object.\");if(\"object\"!=typeof e&&(e=Object.assign({quality:e})),e.quality=Number(e.quality),Number.isNaN(e.quality))return t;const n=yield f(t);let i=n.split(\",\")[0].match(/:(.*?);/)[1],c=r.JPEG;o(e.type)&&(c=e.type,i=e.type);const u=yield l(n),d=yield g(u,Object.assign({},e)),h=yield a(d,e.quality,c),w=yield s(h,i);return w.size>t.size?t:w}))}function b(t,e={}){return y(this,void 0,void 0,(function*(){if(!(t instanceof Blob))throw new Error(\"compressAccurately(): First arg must be a Blob object or a File object.\");if(\"object\"!=typeof e&&(e=Object.assign({size:e})),e.size=Number(e.size),Number.isNaN(e.size))return t;if(1024*e.size>t.size)return t;e.accuracy=Number(e.accuracy),(!e.accuracy||e.accuracy<.8||e.accuracy>.99)&&(e.accuracy=.95);const n=e.size*(2-e.accuracy)*1024,i=1024*e.size,c=e.size*e.accuracy*1024,u=yield f(t);let d=u.split(\",\")[0].match(/:(.*?);/)[1],h=r.JPEG;o(e.type)&&(h=e.type,d=e.type);const w=yield l(u),m=yield g(w,Object.assign({},e));let y,p=.5;const b=[null,null];for(let t=1;t<=7;t++){y=yield a(m,p,h);const e=.75*y.length;if(7===t){(ne)&&(y=[y,...b].filter(t=>t).sort((t,e)=>Math.abs(.75*t.length-i)-Math.abs(.75*e.length-i))[0]);break}if(ne))break;b[0]=y,p+=Math.pow(.5,t+1)}}const v=yield s(y,d);return v.size>t.size?t:v}))}}])}));","import { renderSlot as _renderSlot, withModifiers as _withModifiers, createElementVNode as _createElementVNode, resolveComponent as _resolveComponent, createVNode as _createVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, withCtx as _withCtx, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, createBlock as _createBlock, resolveDirective as _resolveDirective, withDirectives as _withDirectives, Fragment as _Fragment } from \"vue\";\nconst _hoisted_1 = {\n class: \"directory-tree-picker\"\n};\nconst _hoisted_2 = {\n class: \"tree-container\"\n};\nconst _hoisted_3 = {\n key: 0,\n class: \"error-state\"\n};\nconst _hoisted_4 = {\n class: \"error-text\"\n};\nconst _hoisted_5 = {\n class: \"node-label\"\n};\nconst _hoisted_6 = {\n class: \"tree-container\"\n};\nconst _hoisted_7 = {\n key: 0,\n class: \"error-state\"\n};\nconst _hoisted_8 = {\n class: \"error-text\"\n};\nconst _hoisted_9 = {\n class: \"node-label\"\n};\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_font_awesome_icon = _resolveComponent(\"font-awesome-icon\");\n const _component_el_button = _resolveComponent(\"el-button\");\n const _component_el_tree = _resolveComponent(\"el-tree\");\n const _component_el_popover = _resolveComponent(\"el-popover\");\n const _component_el_drawer = _resolveComponent(\"el-drawer\");\n const _directive_loading = _resolveDirective(\"loading\");\n return _openBlock(), _createElementBlock(\"div\", _hoisted_1, [$options.isDesktop ? (_openBlock(), _createBlock(_component_el_popover, {\n key: 0,\n visible: $data.popoverVisible,\n \"onUpdate:visible\": _cache[1] || (_cache[1] = $event => $data.popoverVisible = $event),\n placement: \"bottom-start\",\n width: 320,\n trigger: \"click\",\n \"popper-class\": \"directory-tree-popover\",\n \"show-arrow\": true,\n \"hide-after\": 0,\n \"show-after\": 50,\n transition: \"el-zoom-in-top\"\n }, {\n reference: _withCtx(() => [_createElementVNode(\"span\", {\n class: \"popover-trigger-wrapper\",\n onClick: _cache[0] || (_cache[0] = _withModifiers(() => {}, [\"stop\"]))\n }, [_renderSlot(_ctx.$slots, \"trigger\", {}, undefined, true)])]),\n default: _withCtx(() => [_withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_2, [$data.error ? (_openBlock(), _createElementBlock(\"div\", _hoisted_3, [_createVNode(_component_font_awesome_icon, {\n icon: \"exclamation-circle\",\n class: \"error-icon\"\n }), _createElementVNode(\"span\", _hoisted_4, _toDisplayString($data.error), 1), _createVNode(_component_el_button, {\n type: \"primary\",\n size: \"small\",\n onClick: $options.fetchDirectoryTree\n }, {\n default: _withCtx(() => [...(_cache[4] || (_cache[4] = [_createTextVNode(\" 重试 \", -1)]))]),\n _: 1\n }, 8, [\"onClick\"])])) : (_openBlock(), _createBlock(_component_el_tree, {\n key: 1,\n ref: \"treeRef\",\n data: $data.treeData,\n props: $data.treeProps,\n \"node-key\": \"path\",\n \"default-expand-all\": false,\n \"expand-on-click-node\": false,\n \"highlight-current\": true,\n \"current-node-key\": $props.currentDirectory,\n class: \"directory-tree\",\n onNodeClick: $options.handleNodeClick\n }, {\n default: _withCtx(({\n node,\n data\n }) => [_createElementVNode(\"span\", {\n class: _normalizeClass([\"tree-node\", {\n 'is-current': data.path === $props.currentDirectory\n }])\n }, [_createVNode(_component_font_awesome_icon, {\n icon: node.expanded ? 'folder-open' : 'folder',\n class: \"folder-icon\"\n }, null, 8, [\"icon\"]), _createElementVNode(\"span\", _hoisted_5, _toDisplayString(data.name), 1)], 2)]),\n _: 1\n }, 8, [\"data\", \"props\", \"current-node-key\", \"onNodeClick\"]))])), [[_directive_loading, $data.loading]])]),\n _: 3\n }, 8, [\"visible\"])) : (_openBlock(), _createElementBlock(_Fragment, {\n key: 1\n }, [_createElementVNode(\"span\", {\n class: \"drawer-trigger-wrapper\",\n onClick: _cache[2] || (_cache[2] = (...args) => $options.openDrawer && $options.openDrawer(...args))\n }, [_renderSlot(_ctx.$slots, \"trigger\", {}, undefined, true)]), _createVNode(_component_el_drawer, {\n modelValue: $data.drawerVisible,\n \"onUpdate:modelValue\": _cache[3] || (_cache[3] = $event => $data.drawerVisible = $event),\n direction: \"btt\",\n size: \"60%\",\n \"show-close\": true,\n \"with-header\": true,\n \"z-index\": 3000,\n title: \"选择目录\",\n class: \"directory-tree-drawer\"\n }, {\n default: _withCtx(() => [_withDirectives((_openBlock(), _createElementBlock(\"div\", _hoisted_6, [$data.error ? (_openBlock(), _createElementBlock(\"div\", _hoisted_7, [_createVNode(_component_font_awesome_icon, {\n icon: \"exclamation-circle\",\n class: \"error-icon\"\n }), _createElementVNode(\"span\", _hoisted_8, _toDisplayString($data.error), 1), _createVNode(_component_el_button, {\n type: \"primary\",\n size: \"small\",\n onClick: $options.fetchDirectoryTree\n }, {\n default: _withCtx(() => [...(_cache[5] || (_cache[5] = [_createTextVNode(\" 重试 \", -1)]))]),\n _: 1\n }, 8, [\"onClick\"])])) : (_openBlock(), _createBlock(_component_el_tree, {\n key: 1,\n ref: \"treeRefMobile\",\n data: $data.treeData,\n props: $data.treeProps,\n \"node-key\": \"path\",\n \"default-expand-all\": false,\n \"expand-on-click-node\": false,\n \"highlight-current\": true,\n \"current-node-key\": $props.currentDirectory,\n class: \"directory-tree mobile-tree\",\n onNodeClick: $options.handleNodeClick\n }, {\n default: _withCtx(({\n node,\n data\n }) => [_createElementVNode(\"span\", {\n class: _normalizeClass([\"tree-node\", {\n 'is-current': data.path === $props.currentDirectory\n }])\n }, [_createVNode(_component_font_awesome_icon, {\n icon: node.expanded ? 'folder-open' : 'folder',\n class: \"folder-icon\"\n }, null, 8, [\"icon\"]), _createElementVNode(\"span\", _hoisted_9, _toDisplayString(data.name), 1)], 2)]),\n _: 1\n }, 8, [\"data\", \"props\", \"current-node-key\", \"onNodeClick\"]))])), [[_directive_loading, $data.loading]])]),\n _: 1\n }, 8, [\"modelValue\"])], 64))]);\n}","import axios from '@/utils/axios';\nimport fetchWithAuth from '@/utils/fetchWithAuth';\nexport default {\n name: 'DirectoryTreePicker',\n props: {\n currentDirectory: {\n type: String,\n default: ''\n },\n source: {\n type: String,\n default: 'upload',\n validator: value => ['upload', 'admin'].includes(value)\n }\n },\n data() {\n return {\n popoverVisible: false,\n drawerVisible: false,\n treeData: [],\n loading: false,\n error: '',\n treeProps: {\n children: 'children',\n label: 'name'\n },\n windowWidth: window.innerWidth\n };\n },\n computed: {\n isDesktop() {\n return this.windowWidth >= 769;\n }\n },\n watch: {\n popoverVisible(newVal) {\n if (newVal) {\n this.fetchDirectoryTree();\n } else {\n // 弹窗关闭后延迟折叠所有节点,避免下次打开时出现折叠动画\n setTimeout(() => {\n if (!this.popoverVisible && this.$refs.treeRef) {\n const store = this.$refs.treeRef.store;\n for (const key in store.nodesMap) {\n store.nodesMap[key].expanded = false;\n }\n }\n }, 200);\n }\n },\n drawerVisible(newVal) {\n if (newVal) {\n this.fetchDirectoryTree();\n } else {\n // 抽屉关闭后延迟折叠所有节点\n setTimeout(() => {\n if (!this.drawerVisible && this.$refs.treeRefMobile) {\n const store = this.$refs.treeRefMobile.store;\n for (const key in store.nodesMap) {\n store.nodesMap[key].expanded = false;\n }\n }\n }, 300);\n }\n },\n currentDirectory(newVal) {\n this.$nextTick(() => {\n if (this.$refs.treeRef && newVal) {\n this.$refs.treeRef.setCurrentKey(newVal);\n }\n if (this.$refs.treeRefMobile && newVal) {\n this.$refs.treeRefMobile.setCurrentKey(newVal);\n }\n });\n }\n },\n mounted() {\n window.addEventListener('resize', this.handleResize);\n },\n beforeUnmount() {\n window.removeEventListener('resize', this.handleResize);\n },\n methods: {\n handleResize() {\n this.windowWidth = window.innerWidth;\n },\n openDrawer() {\n this.drawerVisible = true;\n },\n async fetchDirectoryTree() {\n this.loading = true;\n this.error = '';\n try {\n let data;\n if (this.source === 'admin') {\n const response = await fetchWithAuth('/api/directoryTree', {\n method: 'GET'\n });\n if (!response.ok) {\n if (response.status === 401) {\n this.error = '认证失败,请重新登录';\n } else {\n this.error = '服务器错误,请稍后重试';\n }\n return;\n }\n data = await response.json();\n } else {\n const response = await axios.get('/api/directoryTree', {\n withAuthCode: true\n });\n data = response.data;\n }\n if (data.tree) {\n this.treeData = [data.tree];\n } else {\n this.treeData = [];\n }\n } catch (err) {\n console.error('Failed to fetch directory tree:', err);\n if (err.response?.status === 401) {\n this.error = '认证失败,请重新登录';\n } else {\n this.error = '加载目录树失败,请检查网络连接';\n }\n } finally {\n this.loading = false;\n }\n },\n handleNodeClick(data) {\n let path = data.path;\n if (path && !path.startsWith('/')) {\n path = '/' + path;\n } else if (!path) {\n path = '/';\n }\n this.$emit('select', path);\n this.popoverVisible = false;\n this.drawerVisible = false;\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./DirectoryTreePicker.vue?vue&type=template&id=296c1702&scoped=true\"\nimport script from \"./DirectoryTreePicker.vue?vue&type=script&lang=js\"\nexport * from \"./DirectoryTreePicker.vue?vue&type=script&lang=js\"\n\nimport \"./DirectoryTreePicker.vue?vue&type=style&index=0&id=296c1702&scoped=true&lang=css\"\nimport \"./DirectoryTreePicker.vue?vue&type=style&index=1&id=296c1702&lang=css\"\n\nimport exportComponent from \"../../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-296c1702\"]])\n\nexport default __exports__","/**\r\n * 路径验证器模块\r\n * 提供共享的文件夹路径验证功能,供 AdminDashBoard 和 UploadHome 共同使用\r\n */\r\n\r\n/**\r\n * 验证文件夹路径的合法性\r\n * @param {string} path - 要验证的路径\r\n * @param {{ strict?: boolean }} options - 选项,strict 为 true 时检查末尾单独的 \".\"(默认 true)\r\n * @returns {{ valid: boolean, error?: string }} 验证结果\r\n */\r\nexport function validateFolderPath(path, { strict = true } = {}) {\r\n // 如果路径为空或仅为空白字符,返回有效(表示根目录)\r\n if (!path || path.trim() === '') {\r\n return { valid: true };\r\n }\r\n \r\n // 如果路径仅为 \"/\",返回有效(表示根目录)\r\n if (path === '/') {\r\n return { valid: true };\r\n }\r\n \r\n // 检查路径是否以 \"/\" 开头\r\n if (!path.startsWith('/')) {\r\n return { \r\n valid: false, \r\n error: '目标目录必须以 \"/\" 开头' \r\n };\r\n }\r\n\r\n // 检查路径穿越:包含 .. 的路径段\r\n if (/(?:^|\\/)\\.\\.(\\/|$)/.test(path) || path.includes('..')) {\r\n return {\r\n valid: false,\r\n error: '目标目录不能包含路径穿越字符 \"..\"'\r\n };\r\n }\r\n\r\n // 检查路径中单独的 . 段\r\n // strict 模式检查 /./ 和末尾 /.,非 strict 模式仅检查 /./ 以允许用户继续输入如 /.123\r\n const dotPattern = strict ? /\\/\\.(\\/|$)/ : /\\/\\.\\//;\r\n if (dotPattern.test(path)) {\r\n return {\r\n valid: false,\r\n error: '目标目录不能包含单独的 \".\" 路径段'\r\n };\r\n }\r\n\r\n // 检查路径是否包含连续的斜杠\r\n if (path.includes('//')) {\r\n return { \r\n valid: false, \r\n error: '目标目录不能包含连续的斜杠' \r\n };\r\n }\r\n \r\n // 检查路径是否包含非法字符\r\n // 非法字符包括: \\ : * ? \" ' < > | 空格 ( ) [ ] { } # % ^ ` ~ ; @ & = + $ ,\r\n const invalidChars = /[\\\\:\\*\\?\"'<>\\| \\(\\)\\[\\]\\{\\}#%\\^`~;@&=\\+\\$,]/;\r\n if (invalidChars.test(path)) {\r\n return { \r\n valid: false, \r\n error: '目标目录包含非法字符,请使用合法的路径格式' \r\n };\r\n }\r\n \r\n return { valid: true };\r\n}\r\n","module.exports = require(\"./build/conversion.js\");\n"],"names":["async","fetchWithAuth","url","options","credentials","store","getters","btoa","headers","response","fetch","status","ElMessage","error","router","push","_hoisted_1","class","_hoisted_2","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","key","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_22","_hoisted_23","_hoisted_24","_hoisted_25","_hoisted_26","_hoisted_27","_hoisted_28","_hoisted_29","_hoisted_30","_hoisted_31","_hoisted_32","render","_ctx","_cache","$props","$setup","$data","$options","_component_font_awesome_icon","_component_el_button","_component_el_tooltip","show","totalCount","content","placement","default","circle","onClick","toggleViewMode","icon","viewMode","_","type","clearHistory","$event","$emit","historyList","length","ref","onScroll","args","handleScroll","groupedHistory","group","date","items","item","time","isImage","name","src","loading","onError","handleImageError","isVideo","muted","size","copyLink","openLink","deleteItem","title","formatTime","hasMore","loadingMore","spin","props","Boolean","data","allHistory","pageSize","currentPage","watch","val","this","resetAndLoad","computed","groups","forEach","Date","dateStr","getFullYear","String","getMonth","padStart","getDate","Object","keys","sort","a","b","map","mounted","savedMode","localStorage","getItem","methods","loadAllHistory","loadMore","history","JSON","parse","e","console","setTimeout","start","end","newItems","slice","container","target","scrollTop","scrollHeight","clientHeight","setItem","$confirm","confirmButtonText","cancelButtonText","then","removeItem","$message","success","catch","filter","i","stringify","fileName","imageExtensions","extension","split","pop","toLowerCase","includes","videoExtensions","timestamp","year","month","day","hours","getHours","minutes","getMinutes","seconds","getSeconds","navigator","clipboard","writeText","window","open","__exports__","_component_el_radio","_component_el_radio_group","_component_el_option","_component_el_select","_component_el_input","_component_el_switch","_component_el_slider","_component_el_input_number","_component_el_dialog","modelValue","visible","width","dialogWidth","uploadChannel","label","currentChannelList","channelName","placeholder","clearable","ch","value","uploadFolder","handleUploadFolderInput","autoRetry","uploadNameType","convertToWebp","customerCompress","compressBar","min","max","step","compressQuality","precision","serverCompress","startsWith","Array","Number","emits","get","set","innerWidth","style","autoplay","playsinline","loop","_component_el_text","_component_el_progress","_component_Link","_component_el_icon","_component_Delete","href","file","truncated","truncateFilename","finalURL","readonly","selectAllText","urlSize","prepend","mdURL","htmlURL","ubbURL","percentage","progreess","IMAGE_EXTENSIONS","VIDEO_EXTENSIONS","components","Link","Delete","required","ext","filename","maxLength","lastDotIndex","lastIndexOf","substring","keepEnd","keepStart","event","message","_component_CameraFilled","_component_el_upload","_component_el_radio_button","_component_el_card","_component_List","_component_Checked","_component_Failed","_component_el_dropdown_item","_component_el_dropdown_menu","_component_el_dropdown","_component_UploadFileItem","_component_el_scrollbar","onMousemove","handleUploadCardMouseMove","onMouseleave","handleUploadCardMouseLeave","uploadMethod","uploading","fileList","drag","multiple","uploadFile","onSuccess","handleSuccess","handleError","beforeUpload","handleProgress","pastedUrls","rows","pasteCardMethodButtonSize","handleUploadPasteUrls","pasteUploadMethod","listScrolled","uploadingCount","waitingCount","uploadSuccessCount","uploadErrorCount","disabled","disableTooltip","copyAll","dropdown","autoReUpload","onChange","handleAutoRetryChange","retryError","clearFileList","clearSuccessList","reverse","onCopy","handleCopy","onRemove","handleRemove","onPreviewError","f","buildFileUrls","srcID","rootUrl","getUrlByFormat","format","md","html","ubb","updateFileListUrls","urls","assign","K","Uint32Array","rotr","x","n","processBlock","block","H","W","s0","s1","c","d","g","h","S1","temp1","S0","maj","temp2","createSha256","buffer","Uint8Array","bufferLength","totalLength","update","offset","needed","toCopy","Math","subarray","digest","bitLength","fill","view","DataView","setUint32","floor","hex","toString","computeSha256","sha256","CHUNK_SIZE","chunk","arrayBuffer","log","round","UploadFileItem","selectedUrlForm","useCustomUrl","customUrlPrefix","urlPrefix","maxUploading","exceptionList","fileListLength","uploadCount","maxRetryCount","retryTimer","retryDelay","uploadQueue","activeUploads","maxConcurrentUploads","abortControllers","Map","handler","$nextTick","$refs","scrollContainer","setScrollTop","deep","immediate","$store","commit","location","protocol","host","document","addEventListener","handlePaste","storeAutoReUpload","beforeUnmount","removeEventListener","find","uid","waitingItem","uploadingItem","fileItem","uploadSingleFile","HF_DIRECT_THRESHOLD","uploadToHuggingFaceDirect","DISCORD_CHUNK_THRESHOLD","uploadFileInChunks","CHUNK_THRESHOLD","processUploadQueue","nextFile","shift","onUploadComplete","needServerCompress","abortController","AbortController","formData","FormData","append","err","axios","encodeURIComponent","method","withAuthCode","signal","onUploadProgress","progressEvent","percentCompleted","loaded","total","onProgress","percent","res","code","finally","delete","fileSize","totalChunks","ceil","precomputedSha256","initFormData","initResponse","Error","uploadId","maxConcurrency","chunkProgress","nextChunkIndex","hasError","errorMsg","isCancelled","uploadChunk","chunkIndex","retryCount","maxRetries","totalPercent","reduce","warn","Promise","resolve","pool","currentIndex","all","duration","mergeFormData","closeAll","cleanupUploadResources","cleanupError","has","abort","timeout","replace","saveToHistory","newRecord","now","scheduleAutoRetry","reject","processedFile","canConvertToWebp","convertedFile","convertImageToWebp","toFixed","needCustomCompress","isLtLim","pushFileToQueue","fileUrl","URL","createObjectURL","newFile","File","myUploadCount","join","controller","clear","tagName","clipboardData","uploadFromUrl","validUrls","trim","test","kind","getAsString","callback","mdUrl","htmlUrl","ubbUrl","evt","getAsFile","checkResult","text","urlPattern","post","responseType","disposition","filenameRegex","filenameStarRegex","matches","exec","decodeURIComponent","pathname","blob","retryFailedFiles","files","clearTimeout","filesToRetry","aborted","sampleBytes","fileSample","fromCharCode","uploadInfoRes","fileType","uploadInfo","alreadyExists","needsLfs","uploadAction","header","chunk_size","uploadToHuggingFaceMultipart","uploadRes","body","ok","commitRes","fullId","filePath","formattedResponse","completionUrl","chunkSize","parseInt","parts","completeParts","totalParts","part","DOMException","index","undefined","etag","partNumber","progress","completeResponse","oid","img","Image","canvas","createElement","ctx","getContext","onload","height","drawImage","toBlob","originalName","newName","webpFile","revokeObjectURL","onerror","glow","uploadCardGlow","rect","currentTarget","getBoundingClientRect","clientX","left","y","clientY","top","opacity","beforeDestroy","_component_el_autocomplete","inputValue","showSuggestions","querySuggestions","debounce","onFocus","handleFocus","onBlur","handleBlur","onSelect","handleSelect","directoryTreeRoot","directoryTreeLoaded","directoryTreeLoading","directoryChildrenMap","focusTime","isFocused","dispatchEvent","Event","ensureDirectoryTreeLoaded","path","normalizedPath","normalizeDirectoryPath","children","inputEl","autocompleteRef","inputRef","input","focus","normalized","endsWith","buildDirectoryChildrenMap","treeRoot","walk","node","parentPath","isArray","child","tree","parseDirectoryQuery","normalizedInput","raw","segmentInput","parentSegments","getDirectorySuggestions","queryString","parentChildren","keyword","matched","waitTime","elapsed","updatePopperPosition","_component_ToggleDark","_component_DirectorySuggestionInput","_component_DirectoryTreePicker","_component_Logo","_component_UploadForm","_component_UploadSettingsDialog","_component_Footer","_component_UploadHistory","announcementAvailable","isFolderInputActive","showDirectorySuggestions","handleFolderInputFocus","handleFolderInputBlur","handleDirectorySelect","source","trigger","handleChangeUploadMethod","showHistory","handleShowAnnouncement","onCommand","handleMobileMenuCommand","command","getThemeIcon","getThemeText","isToolBarOpen","handleOpenToolbar","openCompressDialog","openUrlDialog","handleManage","handleLogout","useConfigLink","ownerName","showUrlDialog","changeUrlForm","showCompressDialog","showAnnouncementDialog","center","footer","innerHTML","announcementContent","onClose","mixins","backgroundManager","availableChannels","useDefaultWallPaper","themeMode","updateCompressConfig","updateStoreUploadChannel","newChannelList","savedChannelName","storeChannelName","some","updateStoreUploadNameType","validateUploadFolder","strictResult","strict","valid","storeUploadFolder","userConfig","announcement","initializeBackground","uploadCopyUrlForm","compressConfig","parseBoolean","defaultCustomerCompress","parseNumber","defaultCompressQuality","defaultCompressBar","defaultConvertToWebp","storeUploadChannel","defaultUploadChannel","storeAutoRetry","storeUploadNameType","defaultUploadNameType","customUrlSettings","storeUploadMethod","fetchAvailableChannels","defaultUploadFolder","cusDarkMode","useDarkMode","visited","UploadForm","Footer","ToggleDark","Logo","UploadHistory","UploadSettingsDialog","DirectoryTreePicker","DirectorySuggestionInput","defaultChannelName","result","errorMessage","$router","defaultValue","num","parseFloat","isNaN","buttons","querySelectorAll","button","pointerEvents","info","t","module","exports","r","o","l","call","m","defineProperty","enumerable","Symbol","toStringTag","__esModule","create","bind","prototype","hasOwnProperty","p","s","w","PNG","JPEG","GIF","u","next","throw","done","apply","toDataURL","match","atob","charCodeAt","Blob","download","appendChild","createEvent","initEvent","removeChild","FileReader","onloadend","readAsDataURL","scale","orientation","rotate","PI","translate","quality","accuracy","abs","pow","v","_component_el_tree","_component_el_popover","_component_el_drawer","_directive_loading","isDesktop","popoverVisible","transition","reference","$slots","fetchDirectoryTree","treeData","treeProps","currentDirectory","onNodeClick","handleNodeClick","expanded","openDrawer","drawerVisible","direction","validator","windowWidth","newVal","treeRef","nodesMap","treeRefMobile","setCurrentKey","handleResize","json","validateFolderPath","dotPattern","invalidChars"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file diff --git a/js/559.09c9efe1.js.map.gz b/js/559.09c9efe1.js.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..5c6b0476b1e8f5d67336d95aaf1abbb741fbdb13 GIT binary patch literal 68502 zcmV(uKS#Q*!(sx_N;$D_agH+A~gdw0wo|1 z%@gT#_J7W@&1~zvmHeOH{IAo$hK&F%5`U2XWsopj7s)qy#!sGAQiG|^>xQS(k~ z%DcCH^OdUOv(vU#rlXxsR}4DZ*2=%XIW^QHbGp1XNv-&k3YBWmiyqppoc6Wy3dVV! z!}FH%3ZC;gkH>8)?mN#5&hx-|evRitdR}y%m+-u)yh1tFn}B-mDO0*diH7nDRj0(A z(@@PmS2SPd4a*n)eh+_}fxh0Uc}i70J4IfcsvFMpSLb=tdHxplu;sK|+iJO^qp9p_ z=f%U`!S>xE1MRdu)Q85mXS{Dam7h}`bGP<|j+$NSLqpgzq>c08nOkGh8SA(ZTWGyoi2Kyu8sB!Imh$qvqq|1-m}ePAb?4s- z?P8O(OvP8~MAKI9YwEV?<+#*RpB9x_Ve5YIkE}keP-~CWm8w!>nKq+L)+7yHR+VaN zEX-IdHKo5zieJ{pXum?tV!-1zPCaRU`@H?w!&9oUkMD_rRKQFy6DV9He#8G%m8yZu z;7vuTYENn}ODDS;y(yQ$_xQuId@W6HwtCc9+Nm+hEb2ZQswi`BPU}iNp4OFlpm#aL ztAY0cRT@@tLx0Y>hGee7U8Ci= z$eQ$H&cm;rJ}X+HqEz5xg&vi8HTdl-lXu=UmAO^;T~sE=?L9ezH-B{SvTikHZc5HP zv^DiZ=Hc!K^T6khcjp~Fw3n!3GqbZQZ#!h?D^;9oKIj%q$i*cNO`6hGjywGDqYghu z{jDnFzw-)?H4*2t!4fj9@7a6_Z<5=`T+Ho-Jnw2{O1v!fq~1FiDi@qHXQ{2YNbQ4W zU$u!T$CS8)YW`cb&fw88M(a3%TKlXR^Dqlp=G68yCkuc5bF1JGY|D%_tY`y1Y}tbG(8B z)k5SDzF2VB&y}2Nb!BeW&fj2?Jj?Z-Y)^3ACp*}(G8@Bu=qmRkM)Y`)aW<&a+uSmD zpu1Vm;X~crZihe7;g{d;@Q400J+>2E+dsi)bX=;(S0bGSIy%#T>P#AHrH0xek(Jp? zIaFUdFS7l!GPixu^P6mp3SFm|c@^Xdm!yW)yrJUM?aTahH6-lX1qS&pT!!bVrpzXw z$Isi_W0FHBkKlCe9Zr`B{tTzXl>`^9>5o|5=pVxBQhc#&>+z3x-Ru{6-6nS&uN&^; zbuDGwxzFf>RGRYa1@32L+Swsf=8E1*emrj12G$|f4fFO{INl|n-)(((sC%|U*I5n(7`-Q~l3k<<-ubuQvvb!Lz!bU#t8 zLj}W5Jw}~Ml^-K=8X9{KHrJ!vS5h%goP4Jq`EIb?Y6*?&BjZLrWk&f^b9#|8saw)e8gFdEwKO;Fh}V?T z^1>){jSln;lhsCUwt@1Ac9c3}Rf-pVn&A1N6Vbf34Gv9Tc`plGzD_I3dsxcfzVaRn zihIhu-h#yG&y9TPDX&A*X;e2CwZSb9=#Ht1!yGkbctCk*R*8VTd#XJz4H;$bXu;Gg zdP{m59#?T@oaMxP6h}Fl?zQ1|Y3*rB?I_Do!PG$No_g#MAw8&qTiquPumr7y0pBj? z!&M6UXs2U!-DPEFx-B|ypQLfT85_Fyu?CuYJj2sD&kf5QzAT4an(4rI3VvXd=bSPX zWmW~=&K17_B749yI3s49#7HwTeER1{ z%ma%lo}|Ys;sxFW)Z~Xk#4RnDnqh%+<GH$w*Hz+5#TYCeoOcrG`>rg;qW^5zTEx zGdYkth|XgLzN|7XWaj)Px~jD_r3?cR^^l5cpIjuN$yNr za;AEQxv0{|gytf|`4u*A+oS&8qBorYr~Ic@>P(*$=+)Y!-EPsNfiAi&@con7Rvyz( zRZ5-n6qIou6(4BGZC&RdPc&m${TRKW3HC=?2$u--K3ZtnPSH|e5w7Wg>ljgF=Gak~>(L*3A7b0D7)^tp4?TI+2;Um`F%z1{=re`UlsZ7atJI_->!!2R_L|F?~ z1vf639G)Wk&NJ^quNqlKo|!|`J(`sTw9YN=V%?|1bR&;gz^wX)N7}>NtkHFEDv}e zcrAhvE6%z)JXJ=j5v^lsx4-=(FkA(Q$UA)vh zs80=AqrJS=8Ps-#Udz^eB=#)UJeJ#esCA`Omd~I^K2`3|b!@~EH|rJ-|T<55l3OD6c6h>P^aG{eG# zz0Xvff1+nwe?|Y;8}XvxY}`kl#F~%JL|ooLdZccwAbIc(ZtJ30pou`uPREx{$17iS zyh1mP(yw&GLpO4}-5}B)a5o-5xEtWYn_UrR$!tx`+m&SAiY-lLUY20Ti`+57OHr9l zZVDC2D))^PL)rr~NA>Gi;j27vj@4G_wE5uD^<=Dc+owrsZgSflfeOB!j+O4CbZV>g zLIhJ95%x!w=ca};8Gn1M4C1-ui;NtOlRQmwEt_XbAD4Ke80X(biTCH(b;tx4CjA|c zDk^i^$+?Ak*LYJ?-dab^kI{Sr%`Z!ibhl=bD&h>q7qq9<8Gq8%ZC?0y6&_-$lFEhG z#wst7J`GOmCS641eHJOt`CMs3rU5~V30u`R0gIG)K+DKR>gL2`jtxh_OV#Fw}%ja-2c(z1C_M*Kkgn^dUw_? zepKIqzJB~un)z2xF`O0XU8Vnfz6!%Y)Ir5iY`owfX*~!c*M+r4!I)P=>_@DM!^JN7 zM@DaA)tx!NGFx5}4HYS@7P+1u9$dG5pRf5D{7ML^7%{qi&ZlIzmZW(L$`GLSNOFgmLpZ#62?QE`XSI|(*DWq}1{$A(2 zDytlet81RN%J`bj?}c55+4T>M|4U5-M<;>F=GVD!&we}GjSFVs@Rr%+nvt%16FQ@P zU&%gAWz$ie@s0h6*|WYd71rc>u&_AZ5_6}s6Vr?+`gc29{daY?_y;=s`0wg${XeO* z&3_gdl$BRfhxGJnsKH1p^J_7|CJJBp+W1>+No)_ome%@UC%Zb%=NgsBm8w$}bsX^t z>q}Mn-j{0M#4*#gGe?e!_qbHB>Jy)R7NX;51!F@JjBm;3MacNpKVf`RO?5KkOXtS{ zwAvN+F5~f#_9s(v+3|j|IKqvKc^_>?XI#Z_nnE>)T5WGkuJR)eC+qV(~I>i&%c#1IZDGCcY~Uom`W} zEu4r>@dp#}p~+{Cxk4fohc16v9QqUIVEKS0@lPLv)j!bJ`Y-lX)MF-jWM6B4ps!v1 zZ|dxynAp}I>+50hV(Oj(yE`uS@c5%(Qj8x3Y~KwT>6zo6KFJ9uJ^#a;^kW|<{eFyl zPKs{_-qo-y?K>$Z_N4eUfA2}rF2?SQz2Yz27fEffb5iX11V(cb}1Us zAm@y1M=NQ0jY>5K&h9#Y5O9uj2kiMGw)q}(TGe?>6GUlJ`+w?Z&y{|?dOz%lDk zQ76xH4((5+UyKRgqvEd$-zPz&&69vNpG>l_xZSg318eI^2~NtYebOEr6%UW&RrG8$ zjDSDM{(FWIMzEM0YeQrU=cXKT^II!`*H}>B8Xin@$7zrzVZ1;q3>SD7H#95SlL}M9 zn*Po7+`AKc9{&^RdCn1@5hbjCLJ4rZU`putmJVh2=|8nYA9Mk4A+gUXRY=G%?1b*fz- z)2G$#k42z<5bcn%gh01w^56a@Vd!{)FB|;Y8U9g>UE4OrudE3Nu5EjdaJ>9RyWwo0 z_o#=7pt0@u{C1p?L;NMpz?+pEdfYGi(++ysTW{E_t`2q9gS?gHs|RIy7D8+6%V^Bt ziJ6Mmm(8`Lb-6N*OC3pd>ViE8KJzo#}>lt>FzbA&nWYfJXq=Q8oQHZ`E+n-7~^aB zqEWH8%-+f#mG?Bgjz*h3SlRsAvQRp_bmCw^){Dxtbl4T4{CUldc8X|}N}XR@FE69a z`{ZD`OLq*5>qG9v-J)INNTZ0`g2+ii7j`XVTS^fK;kG1B8~V=-ZWDgw6g4~ z=t2+S0epI=dD^aTaDt#R%nnsBDL6jImR8YG(CPrRO5~|N^HII;{O`GV!UUpRVV?;K zgfSCO+%*EnU&7z@mw>bAY5laDH#g!P5qTDjZo>0D@;KnlZ{GI1KU|g_7wfW(`mu{z zRUY}RSw{4*4lJ`Xx1T}e^eqBvKqL2K_zwqunx5|59NUYU^52~gCpTMO0bAY{<~v`H zkNqb4i{l>e)_1x8!}C9C^2eb!)o>i&#H{x?{y+I0xs3Y!T~+=y6L=5XZ~6V$zOS=S z-Cl%)ZC!T&XJj)0{g*e~rOH`}cSD9lt_He)9R|?dje@u_SQ%gm*l4e{acfvz?+^Rh z?uXsU*@6g;X15#dH zNpIhTuxdG+kWu;g31Mg0YL+J?;r$I0V$Hpa?;bmx{g@tN7;cNJEeG(?(v*}nX8f4cU(I(X5y$8xVAC*DUc zik$rkm<;tXc6KeiXtV`6Hf)r|#-xh}H5upPK0Pb$=qhY)2WDn9fWO#Xswvjp^{;mK zQo6g6?$(rddumQwW)eWupR;TD@K1#^Y<;%%Ph*VmD7v<#vE)HSM^;+i`Rz#0POzjcgrMHE3()w#W-cCUFHSTPKu zE0}op$L?T^6ZM12W}pRvSy<0B}I4ji3<3htc$tI0YNar50cgUC}{isUU>1iek{ zLvx$6+9Hp^2Ftu@>MTMAixQmIJW^F%A}j{~28gcpIIy>(RA54;g>T&s6+-+XQbL$i zF3mkCo)n`p9=<2$-b1j&8HkEMYZsXPd02pkQi=`=)ts|_;boHF3H9h>u@~%qSGho4 zlUx}1G0VjRKUkl%%18RdaXC}~J*50Yp&+r(s?KM1x>*Nilsi)S5bO=rsGknKFjOPD zcqb#6zCG9Up^MZ-F7`R6%q+JL>~Bvk^8C=f_bci=)@I&okhGr>_?=R@T{&ajUQ+HrgNnFA@sJ-FRJ0{o7-iT1@TGcScsY~ zt7g=t?p5sXOa7fKvuP?gFSE$AIJ(9mYdF-E9#!n`EB>A4-H4Ek-Mg@bZoJ~F#99kT z-I9o%9)`}Hjx`|_%x>Miv5h`yRls2YGpKf65yw6#PBFCdlCQe80o}K~nHkw8*e&JiTNzqojt>6wj{MuCc~_D&h2u zqR{%Gy-xrUvp0v`=ZcX^VVz6e>`abCU6&BUYfCIClyIowbga@wN2SAKsK z{0$cuh@{M4?+z{aT7P{ZjbVY7ZOkThCbabKd+*%s?eAF0XOWd`NhS-cy3XDnxWe$H zLF3OAuox(}879%Td!2}&QUd05b=nO*cQ;&or>%N*v`N+M?!K_rn90xf#WB>-4qUHI zh`cbDm)nGENH$N=Zrpx#t$=0<->63RhA|4fb>yF5ZZE`pnGVm_MGyr!bRn+yZnyd` zf)P)zfEbkb+%)TlCwAaCmS_Eq33c1%cAkp_kq_-&le@Rgs#TnnS3Nu`t)iJAskJMNX*a|WW9eioLw^!cQ zEYLhbTd=7dB%rIZ<5)!29qaN5TW>P>Q?}mF$MnN#F=cFv&wswf^4Heo2AvS<0A4M8 zHn#2Ujn8tl)hGEqTRpPVCJ(aJ3SX3%6X5DjoS>-)Z;d7(bMsw*AiEwUcF~{3B54>N z<4c|%DJjY#CDE~EHc%)mLipJRor49O`Lyq^xreWRq=VqX(!uF1N2#tOi0a13i{^S{ ztdjoZC|~yCmgXay`$F^4zQKu_EIX9y==XsqHoc`K>*^Wr)Y|-3@C^bhmVsk=TP?4G zFIw(O%c(D0Uc$j>zTMVnyRA{-i?;gGR{G1fK5iY@kbwsoE84t2u(7z%)rI*j6V?WE zcScibMtX9)gJ}J|H=UzCn-Ps!oAWp7vptgYId|$Yb!&f->@?v>#Z}(1MY*Vq=FuAV z4r5)5;OtDmD)$E`pfSA(??YJkfp?yhSBX$h}j!`%bfh9 zqL(8N|G0bAW#F9n#lSr>uL!;>Ix&0IBTh{IMzzuvDBLfZ4c4<*g_B#p#Eta&Cd4i* z9nwFW6lDR}K3C|^n}0o}w)vXb>{RV9MiHrq6Z_GWdiX&6|0B_|I;?l&2!Y)yjX-3; z&F!zr8ONBEApTvJqn@O5v7Yo9)G8E5f3Yi89GxBNii5j<6s5*FxZ{eM@grBvBgiQ{ zLKx8HtI*PSS3F7cxmNvTrRQVXV+W-|q>6z52IT2fE(=}6lGmH;>=aYFgvCs;F8Gpl z@6`#m&6GiFdg4;Fz{6z~GLFb&>HSRQvg)8#CGH*AnJUQ^+dLz(47Au4n(Pi^@35rF ziZ^xOI&bbz&FS#kbSjvn3-%jBQlbj<9pww=Z!2i&2Y@y0^M7@y(IdI6&||e?y~D_X z57XNSlRv?V*xDk`+Fw1FeNOZYjQqwtFL;ODVra>!u5L+#!$4Y9baBX()LKBnyku=V zuye{V4Kf3`OF*!^tOy`+jrzl8g)D77-h$xap2Tk);P=p%ft)YN71t>m(78R%= zcmQ*#M-!T*;uS1eSv$I7xK4xIn(d60Hnc>z`<3TJ&t94wUNc6C-NTpbM<7~n!;5K= z!QFrA+t17-@4Tt+`DDA`R_XfJ1rK(j&IP|~^~f3@_tp4YedK={${*xe8(mS`7?%~` zN?C|UUn~opBg{)!6fB>iG(+t>QXt_Ytk^A9EKpw3k=$X}VS4f5n#^lVzRG5zhiusK zMyv%dcT3iWq^^4mLdzSgvh~~(gK*S*_hSkDa?E{ zcSTvawYfm|*k88Txrw^hzKK1e?(IA>Ytx3&qf?0*2gGXd$;HZ;?SSXmBmj_&t`>Rc zlDg5$Xm-{Ka?W&$=#C#eV0M+I4u z{}#wx9`5W0q7a|S5Q%rnOx!Z#{bd5D$o1Y5MW;k*Z;5r;DFUV3PMMK*${;<#P8qkF z{k^TA1ek{*cu8WRY{z(E`hShM=1q9cP4vF=!fc;54dqXaVd@F;iCso3GFeupiSza@!xeU);9y-HZ zzQF+j*7N~q9t_&Z7?}-QAtW+0=LRZ}jDihPHFT>H03^#THTEByAv%C?Jv|Di$V*yC zPkC(Kqoj&~GK#^hRYM>U-}qCFU(|D`9X;5c{csw~8F&0EJxBN?EOE9=7=sEwDgr{a zmmA_1PG`#lUPslD58GGcytc7~W?(SCNvA8S#*5(1;A&Eo_4Abpq5~K?2;ZonKM;U% z){ggS9X(O|vf%v=jL~OYR%nVJKqvu;?qANGPtehaKld}BhQ|oR6tV-Z{T$NNGwcvj z^l%gQS!@XXOUv*i39+8nu!Os%uaUaL2dDKWCbiRJ9~l(`Ae@(BRt=Ay-p$U@gFgeh z7Im3RR}$Fy13obP{!QqR5!kD%XbA}loJ88sTcjEF$Y+M`1*0cUxjKDf5qZI$QShcJ zFR@)1gWS8HOEQBhTVSb)j&?R(*fX@%=ahLRuyo8#SG_!C{Hb$cDCS2 zU{l`FECYOn>LZV{+>kFfEp!K-Pbs0Kj=&8D%m9ED%hbXrW1Z{sZ)~^OpBp&1S)Jrt zaP?B`p9qERXt!6qG=1Q&!mLq-4{3bFoY8TS$JV9pEU~2?XyyiViRcB0nw#8(u?R7z zxT^v!2~n!o(UZH#7jAmz##Jru_XU0Ny{v5M(0fUlBSO2pt&bMw`v9)(Z<6M_(6H?< ztkw04@UQJp*17M3_a3*tnB~3;<>*`ydTo$6hzSZ7kscwC7Rd8o`eSb{H zvgW(M!0qWeDMVjvj%wpvM0G9OT}~X+BohTM0(SrN|v6 z2ibz6!NsJWU*se3&t+bg*aKvBn0O?Uw|Pp;OJKES6^h2GM_;$|wpQ<5 zq@JSkUcx{97h{9qyjSUg$7Ll5(Nq2+0)EH&gWD*boLOhbw@X{Dt0%08DrfHC$yanu z`jWI{$Xvo?^+*ccVIqslymqQ#K7~>i-0kE}j%PCSy>@Exhe&fNy3;_85&yPVvrVz- zZM5B;vVzLSsCnIb0D5;5hq!n&yfWU%gU%;;U9smoI2gPbV2)0ctYXPRdP(MTP+(0bjQ6ru5SB*5c8~Kp>MqZRNqU%(bDg9P;G_ifBx-6>uxZ_(!`ktYsbmSBLSwymz zBV4w_?p}FO{hLDU8}>4eYH#~tDw#_mpUI6Sp9YDo*(&x05*qY%0>9gL5s3W?y2HyG z(L*)huj4%P$eE%Spk0bYRtZ1sVz4P~ZKA63?=StWvE~_YkrFmlS?3j|!x^Be<()Ji zg=W-}*sbTJGB#_I!p|u?G`41-i;J2V(;`1*By_sw`ic%ZNGhkTw*du7xdfN>(~1gULg?IEGT^gg z14=o&v!^5ZOXQMwE{P5!)i!IC^GZ%r+L zWX_RV=92^&f5Cfc&Sx`}XCCFw$SEl`z879Hqa&-b)>54I=|ICW(=~7g;+|jF)aEr+ zPLr!=DOk9j>#%L6Iw4LC_hg75t8tI?wJIi{c(bWPXpsD{~(^AtZlSPwwBGvDJ^CAwJQs9p^ob(}z3O z%1#j`W0=FdZSJ<_jZ;?1yj>Q>N!3#8dD2)+vos(4E1akPO*2Ra-tTk*r-7S zFc)cKnOk&l!7@nxqvDq3bjxL@%?z2zgID25OSYGA;y*8)i>Y<4_~t=3Cl1hl< z=oK13Vuf9E(GVwcco)wq2I zsE1o0cYUU(yLlKQYVI=ps=Q==c2kM&!|3Hl>v;etlwpoVp%dhU zmWK-A^9f{S9N*FXw$4-i3WaO>f!=&#EUy0id!JGmB@OSC`a%(Lp?e;or&-h9g|{e+oU zew)J;g~K5w@rlSIxKmuQ<%qo!yx@WjC69}nZTY~=^paU}GmYL|;y+|?%km9&WRO5@ z`$%~BL(G1K46NhZ&}-Rj33-XzgDiEPQ|9H0@AzjFbG*$^GiHnGz&5YEZN53t-|$Vk z+jH<`V6(nX#oj~pu2=-yP%=jk9+wpfD5bRX$=9d*^j*ny5heT2v67_FgUR)I zKrGn6g|s~9IB|3ed1M{Vp3wg!)=r`mIlLxndpP_FQ_oFLvL&$@0>%%_Z3iH%)0`w} zvO&VZMGb#Pov>xQw7b0t0%5y6$B%ipK>v|L`%L0KPF?I#+|RQ~53`K0)Zbzoi5&Yi z_-C5`(dtzWQkj;}5&EPAkCBgh~~RA4Rx_{Cb%cCtSizwi3-FMX@2 z#z;i1=*NuUXstPVBYiuJok5#{(vaPiA!fvmIbx}=I_3Ww?00NtdIb-}vm4ijwc(Ge zkf)xnguNip*c#?Urpj+;#!cvMEiTEKncflNQn}DO)8A|zE+lea@UDC80QNCvrK~EG z%rEcV8cAI&ca;w5Zp_A9#+uyOi>a*wB+!3KcyUU*Zw|7CtikE|ML}=|hN^CEI1ukJgkA=Oai0;Fp;?&+BD9bZM#F2(|)e8TVBXR4nH)uaO%?@_yTm z;=Bg>OYse1V9xI0k07}f9?8_kdC;5K3#|PlawRRH7iJgjc+q9O^~S1c22QAQThF50 zik7(dz*pHh)nf|z?U|bK$h?yR9hC1xx_OMu08j6gdfV3&a9k*#u)(7W$1FY^-yR~p z-4+@2HCa$;Tg~$j|7~#V-jp|Y@V~EwGe}-RzrnA( zg#mHiAHk#iiJ9hN_W*KZSkfx^;&BTgfZrAaBP-G;c~_W~PUFJcf0Fc6iJT)4)**e? zaHndBVGRe(du(8GTMnhkCYi3%5Riw=18x@&G1iM?kbd|HoiP7d`h~LcQo`)2%2T4$ z{-M@@BCl@2^+F?YmJNZ8PM!&Fr(TXW2@v{AH4+k~tuZXM!BNn#h4}X30SjmL^i@y0 zB~W9>Rg^c^F(vY<;@G~0=p;=ye;(2v2As6Iaj}hxRdk;reJ=%D+O@TO&8bt;5lfJH z8)U&TCzNWma zndd?;D7Xl0aA`f)zd{g;T&gY^3&h{00{2o3+wAZop<6!5n%?hg{1++ZIN5}PMaG)hS$`N?g95xnohAt z6S>mShVM2&dq6);gHTQ|htns{E;2%v3&;WZToq5eUHrlpp9FwTOM=Otu~+x&?2$VP z*ORLFe7#{;Ax=5T^5iNP%`;mQZ%s^s0P_C{Z80*jN6dmi`9BChLp{UypH4OM82o)+ zv0+7%SBg{aFR%Es^50}@OgWqNtvK(TKan=izmNPkvWy`q3Ss+RK6oz44-QUZW{;p_WtJ-@cIh<+u z?Xf-XDe??IhZ!&V#-wr%c#STry?aJ$qS#AftDtlbz+Evzb<}n@* z?yiH!o#R#{@YOZ*#pR22Ng?jLypB1yv+KU<^oWnZ`?_YUKS~j1q8|$miPFp%>N1=G<=E*DZx?3lVKe_fusk0jhvYmM2xDH z*3fU35nl5n(PY8p%PH;XKsugl3KPM+1=xcUyBIre(wQKPz$in1R!QCb3D@;G!VS}` z>#epC=h*@Jf(Yf18&qFk6|AP(q_1c79jRk@jfgJWvv1`K?=_O2uUNNT-jw%*S71kp zt5~QnSl!{YBOU@Jv>{8S z8xq&ceI$QpHNOc%55z0e?x`hwC++>EOab&~@c9sT+9b62iGsjo(DBr69)nylC}4KrXXO?HKkJe3hQ)UVvwQRRLLC@a9TRgwkI6j z&9O`Uwhqy|ZV(a0HohnDnn{}uwctToYV5Z37Fls%Np`I`?4+RTvsV^o=J^Pb0awZn z9Q#ig$Ecooz$St#BC^Z|(_;J{YLXhYLOdI>^{O#o^=?wnVMwe4b_WSH8hxNIPRtZu zu)y7E^N#Q7%Ssesd{zy$Il=0EZ~KV(%9@^UQ?q+_(2j`DQQ1arJTX6CBS1i3Vq0Y@ zp%%hCUHN}b;N%)h?b|)@M10?(BM zR=6r0I%nc`6vad)bw*H7&k^Mgj97_|C4Yf+-WmnXYZ@ZQhy+*D1dGmvDmMzd@&(*q zjo|&n?lEoeDKaOwoA|q-Iv&NWdICu_hlj=*9Mo33466-3+d8zXzsF3;p9T@S@Jt*V zi`fJnP2IYC6dBP2XlA}7w0`mt@~JGEk_wmsnhso$+E3vNKVz)U0!dg`d{TMvta|J} ziC$&E##Gl3x`x*xq+#Y|uc6ri0S*;-b3|r6JcYfLc zUI6A-Y6NAm@Ip^G<*+j2cm8k5y`AXIW9%I4FiWX*p4{`O$g8u}%yrm`_kAny%Y-(0 z@>Nrm?vQ;r6omaZg=`c&8TDiy@)YI7$l+4`O!C+p#A~)?B+L#26Wpi(@nliNPX7rA zCqj&DWicH+4R+6J;u9xq?W#<$d<^qO(4HLT&Z@&=kMQlh*Kbei|8mryanwNh2Iv=M zaHTE7$-xW5T&s$eu}Kk}Vhc>;jGfP)lDJA-@VvK>zOy_lz#_#^P-frd&#=NJ)UN|D zu)Hq22J^*zDEVi@SgeLMLN{#D7Fjk2cg~k>LBElQ-(7Pa!)p#-AugC7&GovBeRnW9 z&<6&Kp>n3Y3#?!I+IjIzs9d}QE9SuHW;SB#oOzRX?_49V41%TjHu)|$Eyi7~p7Zqp zzC!RUX&|>kabCggmwm$dn}*1GQ=YGhhVp_6KH6Z-2EfL?77E3A<>?z&gz7} zp=LUs(%OpU(1D0Gc6vuvt$I}KDwx~pHPrl#=%F{!i#z+1rgVK9 zD!2eu6bL}XR2;fzduiPwY)L|}_FLqVpLQueyF>9DN+%D)UEP3g_HP@MV|jiBpk^TgBYhfozj|T;!$O6!rpR-3gNirdgg@D`sP^Uj7jC@d;mArg4)!D2Ir$8H%q!g`3aM# z9hxowsM)#)rkyQ>_&#n^KP+>2zHc9-7Y`Cxf)Knpa<$3n%FvU{}~m;7uU2$cCve2 z#R=|&_L$Jyaf|*;&}eLJ<=K5?P&e2)AAJj8<85+bUcKwJ_!w7|x&FKt)C^nPFzO}% z9I8Osxn5%eK3{E)v3sPExreM=VC-<#9hA0M##Kmu?GjS4b;NOfTnPc32j;UJd0i#= z@U5M61p1GWXxKR!*h}eq=a@VzA6nurZ^F74U8K-%qQeTu<|US{o?%?Vth4w7@%Nar zKKTUBLiE`)`}h+=TMq6)!8Wfznw)$X@*hn91gBYE{~iyRhl?v+)PJ z8^72H3+y}7K^2cyQlzS&|$<;@sgL``!?(WRf=_IVx}a{XnmXEVr&0rnSs zbBhd9{3m^L37Eo=wVZHc_VF*cjEXYITrc?vr_=QE!22k}Alm@FvwGfRIo5*_4N~!o zgr7Z=4Ezj>`>Q~2v5y!#=2sWb0C@^v)1X~_&Nh!?s>Pa9Z(7({gsBF2M|s^6Hau?u zydsKPftV@^D4a@EyuvdY*nkcn|gnn-$wXDvC81}lW27O-in znv5C{D#oht;|!3F)uZ05VV63?f4Ac5(>NRhIBY;(u5XK!CT-$KoreMfXQr?nXrlUr zV?>jYLsBFDCSy|>;isGw6@)HTV6^E3(TO!?3N16rx4G$h5%cLsbNLMMp6<=a3)|~S z-pwvD>qbnd=SMDppZbD-)v{e14OmxRMs6>XUU1NJHI-*KRy3!8Won9dm?=apbmVV< zWL@|Ocz_hM5U&lKnU~1i{(K*k`PSHf)D zbK+4L&djdNgN(1k0?LhguF&J{6M8OK=!uXM<^@0}z@=}ccl;QmBnfb0^yKy~ zxXxR?gankf-^=i;H(mlq8M_+sCiUSQH1#9xFRLRT(31_W-)BXL5Oul`LHPt&W<>wO zXbzP7GDHHBL9b!Ag6i}WURN9TCm!i@Xm2^oNsUJsRDc6s5VUxr1Q@r%ye$jZeJcpm z=;fe=3KJ=i3?UiBp>A!Z9vn01L|<}MEeWum)I$)twZXIcq8{Rn2U2WQk3+^O80PC! zDOy#g<2%qef?MJ$orjU%)W%G#Ii1YHQ_)_hi@WY;6MfF#Ras&;5A1!^@gw!NM7Yt8 z9qDs8EH3kMO$Oros)ZEPxbBom+rMmyuu~Oa%NO{*?fH}eB!(}$Ek094(}FF>`66Dn z9VP?z1mzvT7>Q>F+8%fx$rcz!;%)2msQ7aI7T0K1TrvOcg|`K(0gbP2lq{z<+chONCPAo zf@`rYF?`~A$%hGAR{}*vp@u4TAGu&b+}b+_Bh5r!QU`jq(g2RMFppk2+4@pp_((?M zQ{N<$PWS5!J!hqkepswoBxr-*3t)qfj=W% zMs3U|Fh%PEU1HtUUnQ&)Q2<}5#;Akn)iA~DB@4!}^ub*%KAp_|+lCc=YcJ;F(0SoI z*BZ?3gTN8UWcDl&>#ral#xkL zKxLe@&n`7%1{#;Tq&z;ywAeIUX?c9faj0gX_vYWjq0GJ-=r5Y(UOg+b@K22)Uoe6@ z&sYXVv8p%iDAz;jG9Q7TXAAovqyyzWT?P@7_hK*5Gq6D9G{(ue9g$ydYdT05llzop4oA*m-n)}2K^+tzB=yuA4owC(c!s^I+ zc-}!ANe9*9FgcSeOcF}9@_8Y&jiq(Rk5$K^<$NdcXE7w1jyTPG3fXfD~m2c32R$-ORO%Yf#$rlWXZ`@}u z_S!?&8DCs7-xXX_tP^^S*g~9TTL`{nu5rVs(cw;@v-=S|WZALonFIiRGd_hgn8as5XmPMfY2aL`m(H*h>K`9ldxussW1g?f>j;(K( zEjSY~$^#l)zT0f+`2B&;XF$+hhYwLm!ga$Sro=$h0~Th1Q(@h>>N2Eio!^9rR1Zk_ zU0IKCN_TO^$3z&iUlTR=#1=Gvmnflg4Q+{ian{y?I$MDgzkRWMkHGr9gcFCH9B4NX z+3M>0Il>ra(jIwM*JhM>EJQ=cWEysmHWKt_6d&Faur}6%*T^rZJbcA9b;Nm%YM7jm z>8i?Gm`E;A$j`%I1mo8zNmpC<-Yp2fN$WmTL~TfznYYl6G0<1A-u9sAQjxmL<|QRz z%$(V4?*Qcn4O=_Xqxmf)d}J4vl$nZ6r;3z8Jsld3fnOrkwNgQtZJ1@$UOqaU&&c3o z6veDscS<5~7~Maxi>%vWEYjHP(usl*kxd++?*BBCh(93vbHIgbAS6C==u& zzq{;vbozY=QX)D@T;W55P}r@F$kZ#q#J#VO&o&1DT0o`0o&zElq_0q?fk_sxfA9A5 zXzoP0)i>Gu;2U|D(qTDrs*$uHbS=Ztb`GOUQ>^_c333 zK-s&c^3j#HZ;rmwE`fygA)uQJ=o(M7SQW_v+Cy$JTV#qakQjGiI&Xrt&YA>JG<)fq zm6po82BFQ_Cjp#bt()2T@yS0n`tnKqU5dCQqHz|JRx ztt)SU`zz8$d+fLyyU)k6*6&SaA5VuZsnLV1-Ar`nX6tMNoC^gO#@|VjUQ_0&znxK? z+nh?PS2xjmP3!do$E80!6XW3522U?KUyM;w9I9aS#fr1Oz0E7WxZb!cE-Hx=r_Uy(FPhP@wK+KN zwD-J2Tdy%ee{eTQ<~9;Rb;kB7`t-yc{MOl_15b7+ohWyb3%;zp(*CsXqETvDbv`&i zfb-ru@HL(yhBGMmRyp+t7*6A6-+s%z2; zw0Kg&RUK8LX_^#(je%9YFqpHZ!_}CqEnBN916|-suZ>gv#ewP*`F+(_4^>~IMR8`I zV43tmHfnCwmkicju2t?&o)7z%izGL@TyID0^v|K#Vc3&_n^*oy8jJakj$k6@a^g`Asz`D6}vX#W!@m8JdO52xzUnX0iqFjq&@*gi(V z=WXMpERq#j_wtjfGn`Awv&C5>;b@x_?t4De48A#%jr|Bc>YlN6Y*rlWXtwqyHwR~8 zcoXH&>3Q838+vW-xSh$*CJ`E}%ONpJ^WJGj7x{2Pyxz{CV@D!NF8qmXTD7ZTnC_4C zJ9&{mICzH_zkzh&7(v?D5zyKGD?_*x-uP;nSA(CiZlX!fO{?5559-69Zpl3sR$d8v zM^@*;;^wFk{^}YrPl&7~;V5bZ_YQ+{MF89^i;^Y5MkYt0T>rRLpcv`<5oZd_6*tc5k;O*F zWMp&Si2+TAA=lOYr-^D>828?_ucFGqiYkXVyKJ$qCfbo6HvWA3Xk%mi@#0eg(gz+m;cUW`Y+XkG8%F}C9AVFZzHkB{0QNdY}?|bknrW_s( zXll_jgw~fo>`>B-81^Uu#242jRrbhXlAfY)?Snia&4i-OsODKE5_`==rx=a6nY?y1 zL=>7tqsR(&iHu@Ww$=%Avn^+f?~XVl%P)3J68{9bJ-Ck`GfG+3p7B3;jDN+eimyne zX#b^Z@F^#oh`H_it}^e#vVYO$rAGRQOFq7$^&E1_3@?##&s z31@CoKVstWk?QLSyGD-km&oRj1D-K4yoOV`}#?8Mm47XQZ1J|o$*NgUhR${*-#^WQbI<-f7B z_WGI$JNvcXPNH%S?#I|e`f8xR?Fii&iwi<*}RdPGBH3f3|JL=XdWa|TG5z@0@<+4E|(uLhdl*Mc0Z&Y){6%O)!8%{ie8~yN_ z$DYyUeKM!0#4^V;6tlig@@K(5F<4v(6US7@->By#SD5wAgT2DJ82fP(_@+kwMs+FF zn4CBA7kg!DS+CwPHD1Yjr2|mFWpLmgBWYU)$5e`s)KKDk()p`k-)%>zV028C{Ecd6 zEfriJxK@cBdv#2m_(=8jfKl6$`SJDM`HJn`8&%D6Y2nXxyV;?51{d=%Q~!9%ipZppjDmCw{C zE5@+a-`sJ;BTqnq5Wfo#-t*R$nj((i7r*-m4!+C!)&iqlfXFxxq;P z8pE#vbjZwN4FBf4D;*!Y(-90CvJmBy5uC?jo*m>y*%|30PLMVRcm_)FlHvqY3eC~a zp{9z=BJE))ijZ(8ARC4w2UMc3w<39l z7TJKNEOGX_BM!XWN>TY>jpjUu_c2&~pu-aGUx z^ylkUxCJGifDpG@p{(F_C}oPYMQI0h4iiMqxv63pHT3k+ibWz#bkvX3vvt(*-b9T; zRlO~nu}{u)w2i#A4y+T4PhPYOjVNyNpuN!6HX*@E*}fB{1$eg)AMU^_CZTu4A6>#% zktziX$|AJJB9pZUrH(&rYeq_<5cRDOFb zl%|5djZEPt%KE{R67;CYl9>XGJk7}W8-dGnA2ZPVP6zq$1hJ(|1k8WM-D_oeSg$)@ zfkDf#vc}0z#@{s;{N2mWcc2XUF5`T6mPcN*yz?DNd|-~)4W7X7$Ug4!WA?1>YoYcO z0L>&(Om`qhLuVkNEdvA`CUp*2oCu7@6pq*j7V!c83ZYLQ%+kGd&ekAVFULel{zz{< zc5%>Ykrl6ThO_)VU{K?l0DV-%u1bmN;9)EHBH-j)eO#5T12xttdWwftpYX8m_SJ}; zyr@Z1tFSM9WKA4MjeeNxWIV7GHiNHm(YmjD0-Qd_b2fMm*(2E#@QRdK4kQa#pu8Jk zP|$`n?<-l|edFcc`3Vj)^UO~8U-r(zjgdet;A0;H<|KXsamtHY2?ZGdtRaQKU(U$ou%$&S`h;^FR?ZCy2Cy&z z#y7?)yy%lnA@+^Wd4$51zqk&WU8Qpu>&~Wbzfk_F{C%pwXO=7@w9pd-#PHd@>c)pk zjwvRsBlro`%Q;=%D&5IhM^G5^fD1%lWt-7gsr(k_N%q|YKQ;(6hj>0pGqU33HJ*^v z`5?xDAsY%4@UywpAj}Vf+9a>o#lT)zNkP`jrKQ~5m+Qs?ly*75fx5CGV)FcIfP*nR zh!5JL$guocNZ3x=(<2qHb?`2&$@BJ5rfwLowQ6|--P8)bp>~h2RlLr{JMWa$*EQDc z7NCCm19^KXY0EP4Dm(8^JZw5AZ>N%6cor|ben%a%uP3T*uO5`qq%ayfsf$$G=EWp$ z-!T`PZ1w+{KmVY;=WX&cc{}v^mOMh!b9ONE7Hl&Kfeh(FCCHFNEn$qSt=e015h2kj zonOn_6H7yqFM)(sq1gw%GG>juxvKISWVg$u7&|RxK#6koGR zAA&Ig{>R$lE01G90iPh$fI#tj!!X|7yG2sn=|J0nSqXR@EWQYMjRG(_Zon%7&4Wb4 z$qidZU{yKBV8^;QbD+%$OT`}RdnLTJM2k!{g=)AfbOKG`!ekJ^In_t-a$f~AZ}|?P zarTZjm+#-mji%%6lN$|d`)5F-ZnIOvjL{@iKeu3C+L@knFyGoZCC~MTq{@(v65gk|=2six4L)&2C`O(HzMd6OC(CWgLWl;sFiXPM@FaU6>`a3& z;f&3ThZikm!cE&c->|DHHlZV}K~Aln_T)0VT<{)#MWnrvq+t~&@SY(7IFq;Wk|In{ zD0>v+opDnmvDoXSb_?>|L1N))DwyX-u(iYv8sRL?a#{BcP={QMTR&~TjfCULKt~0{ z^FAk~ej>bv0(k}kW=dpB(j3vm(mb;r1qx^;7`{t@UK&{-5L^Iz0{gN#U|{KoB%{Q2 znU6gv7~DX!G>vp_JfuPX7s%;2z^+BvDX$&>Z4&&Qtdj@vmh)+==MI3TY!7+>K0DZh zHUi3|8-rYQIFy;mK4wvm;Fz6AAT;lW3a*$2+Q;a^JA%}ll&L%ESp}#OY$Tat0d#q$ zHGWp+J$-1d>ogVJST2E3c}Qx;C|i#piFEphZ#T1=BYx6|`D>PfFBq1?+ekmU(bdC< zlx^dSpM^P0aoPGPA>2}cMD|_zBoPH;vnYlJv~lq)wqFr!gZk9j7G`^IO*lpwCN$Jc zFgC{U9pD(uEf4iW>^x;xUBd|U9{`wH%dnSNudZG>51Is1M=|$typlegf$J-V#jbrk zSVbP4LrDWzv$U+|)d(^JbdDJS3YD+g;zu(YyUht@a=yPbu(6!!Vl9A|5RL+=4N2=3 zT7)+|v>^Zlf#S)V__Rnu+gkKdsJ&stg5|RVS#ZOr<_nF$oAMQR#0ZI2_VOZHZvn#*jpf=39nOYwxek5ZKtuy?>AOdepuiK^%4vm>;*3;jB$Ez zXXd2KmK)QCmh7b%drKIe4Y411%+6of4ipw3)W(k}X$7&4Ak4wHlvSAZViN((v3Jbb z)+AlQIBz&wC#sXBgm|Tkok}a;R$7jqo~cOLU552~k6_(E77bGI|45)_X=ETB5zaW5 zVkGukBsxBw*Lh?e$uL~PMDIu@tQ?o8j@l^?d~C7<82fe)Up>2F;nA?6$%Fk#O><{pI2G{!6drd8>r-{ee6RX901_=*c|rlZZpxPd!Ts2v7SC$> z6{1$BfD>FoSA#?zQu1ObpEJ70*2A3Dv8jOLQN7IeSJaMZ<~$MXJ%$KD{AwWr28~)_ z!P7%Gz|Zl711YO$NI6dy==KL+I6M>8o|8hA5N3`3TA8hY(zaN z;4Q2}9JN(dLYX8}PR9G1txJh#>sr|nfto31lHc9=ZNgFN?bWUr*oKI%q@z5g*EYe zukO^MK3m$(L?-o$1_~)7eZWkZTHGPG{O-DD)&YtV}tY z0J~&iaoJ@b4i#O;r;#X+XFx40#z5JqQr`g>S{J|u)&(kvg7#p%v zDfZfM1ztlI8uV}Wl*ctBEPhdr%HQrO9w9}b{P{>nA1q$?d?8BN@QbUV^Tnp|eU~ns zF5Ml`rD-WDkDK2&A6z*N-0vyR=J05S+!3$#jX3f{pz>|Ed}`l#9|7|v<Hw15S7Oa;Ww>SpMdhYL}{3dO!cA|Ig6-g?6Ng8Gv!C6E9YDCdbbN=d?`k%we}v z@m+D4zKZip(zFTUTt+%_6ZL$|Sbn|?9iM)n(Ugv}X%?x+(fQypzw9+vOQcI|)AONe>* zxae~_Ccgj%jvikWMUbUu*o4C9XJvaT)=`dv%xgq$JyC=mFR%YEudj{3BhFuTwL}pm0FB8@RlZ~Tf>z(Yar9sG zyaTbr@=e)4Q34!QpM!lteKsoD3^!J2pEhOk&%{zNb$z&F>yr&g#miR;`oDSxRrJ;5>xJ{Sieyn%Hsa+h#X3QiAJd6&Uj0LDZS^G5 zNJdRd;oq2mQlzM}ZT+O>PaMEW6B`5;O^Qs7qYLD%yLT$WfBc`%{crT*A3-~Rp#Ogd z+5J7!{xgcDN$*F4`vr=Vsx4b| z9VExux<;}%EJPyGTC(UcRTi&?dP|=o8@CKhxAr)@#NKuC&ACWg3>Th?X82Ci-|K*Mx zV@D=pJF}-;Y93-NJ5?Li(j%N5*D&3M(Bt*#UOd0cYZDaZP?ubrw>;x4MN<~+U+A0vHE*Jj8$Hh+%UlP<@&$!D&X61w7~ z@wKURVg)4z2FZN)rlLt8U|8AJnVD%Nq$QBK`AR`ubHbRx!0s@I#jzG_SY@jhB z4!n*_(bF9Mu2X6s^n8T0+vnUr^OD4sumXNszF3jCVqQUI6@sC3^XkUYUR($Z3o9YJ zIe_)cKnI$m_fPPm6SuWxZEN(Yn+DplGPtZQCjD^GQmFj?wL(~2W;1- zA|4?M{Syg3rxIq6>_r_VH{^+lNGi2*5YICRaVvk~gW{Qlw>JgO-Ym@G(}ff}kX}H# z8#u%_MVAKJvITZ$G(CT?f8{G7e2zp8hmj_7{7o$>OfUip8Kdxq{6v3|`@-2^MVkZA z%Nmdnw^j6H}SpAQX>5#egp6B?-)+mBK)>* zqmA41XK)s@ut@!nIPmN2;~1WfuLz4`CBU!URg|URDYeiMWVOS+Lo^!{r3|$}1f@C1 zN7MHuJmp??nRM7?_e*wJ-(r{jAG6DcAr z-`X-KV5N-nCc&QF#sU@~3ILsS#m8#=Q@$!?CJd)GNj@!k``H`o=rSq%1; zqa0=D!hIwdrWR_A*l(n^kU$#4aa~N&3K&K%0@qwe5Lu?9pCfh!JbaG8UoV8bD10m9 zS%6M+JO9*SzSw&}v=Hctd0014sH(hsiSTHQRzqeD5$(u9?CxSO2PEGKN_J z5M~^n`)-HmgmvFbSa-An#A9*@hRw|PEMpaM;*8pp*e=q2#msPka(2&K`qW4Tf$|Yi z2P~YF(CreQWZjAbZC6i1XV+&8H?whKre};O>_s70uAmmE#k==n$h0`gviq`_pUvqa1m z5yaa@1c~}Piz9--$XSuPyNqXtGK|E@IEkGx;8^qUE$fgvc zjM!tG5}QK`UGX~z(2{qhm|^tvH+ulGRaz9#0gTyv{@$-;1;TP4dAA%@zs_&ZaxXeq z3!g1(Oft90nGV&8MWl@vQFe}Lz3`o7o55R_kHRPeU*WQ&_td!5s*Ke3A2=);30BY5 zaO&3>osAki;m41Ix^2*BU0GPY9p85C(qDlsa69+*UEjK4-#*c|*6EdD$-82$V~vs9 zpQpn;`P3BMMGJ8jg%Z+cG^bY$GxF4liK3jDXOPag_}A%Q^YL=lY|a1r-~Z>YkJjs? z(d_?kA~A1_K9{Zk(;c=u%h$yJB<8bbV!7xJ=85;#qS<-uE;?$t==@J_{@3X@pEbwB z$#~QnE#`^kWH4^LCF=ZNp*vrUXP^JGTDJc0_p`?9pQz}MbmlGnp8n;EYOTehJ8I8! z-Nstk*?#CX^OQM{d9{nD4e)?DNL?Ci@g zN8`8F{~3go_E+nFNv$l0b$8G7~PD$pQfrzRSC=w*41h;eC#zs*sbsMIJ#!%ff%Gk29Sf9JA=&l?~mpQQ5>5tlO%h!N>@{veVeM zv1w)bvUlG_CEHMviH2@rdxZRNA|(LK<UxNvU%;8tNc$j)G; zf=z-8w+Q}|&1M5N(tL43fSVXWhqf!0T1K0WawAga&z*B8olAdl zPTy&szx#aYob%0lsB9RARcr-EDB>ld>Se7_!HH26MxlwVx}jSbjUnZTqS|!vg+&(; zrB+eWZIrca#co(+{rd8Sl!%aA4(-DgvI~)IAbSQQ&6rkoR0jf9t4M)H=%B7J%-{-A zEo5T5Vd}WTgYxJ;i%ruolZn;4H&^c+U-{rc^VspVk3LHNv0WsymFD z3_bkkG|~;TrfBMa;vJe|S)^Lv6XSUkJ+low(K9-sQxcw_CLhUMwjWe23!dgU=LAS|aJU@c+X`%JBsa7%|aYQs83iU@?)J@!?(J&fA z;}boWS)S;blq_hzO?g2WaZwy`Rn>4tEgO2~h^f@;k(eqJTf=fRgx8vi=@}rED6ryc7ew4?s%5uY?Lv6DNt4#gU1+o3 z#Ww3*>}%c^7Pnf0$ZE~s%hwxNcDbL_E+Eh14!ms1zdBrb-Rlj)a7@3@vX3!8Q!d zR_oCqSOpgb6RdoZBAH6d#E0ZWPeq-b=t)y_cz6%U1<7&$pyvqFYlTn(sD2hFMi}C= z){Jq4Nqmzj_+ufB#w9|VKLVeJ#jaT-HDSTW`zGNIlJtL#AvuhhB7o2vnwI{*fQU!)64KZQ%Hp{<+ilyiY|2DOCX&59!>P1tszM>Nk}eh8@8hD0GTC)wnEM3 z=QjXKAvGDTNmxp^#?%NZcypk&*p!8eZnXuU2s&Ka=A)A<-#+$8_gApA_Iw>vF<74_ z{2_YH%NkZprsDsZR(ztzHWh0oqi8lo3F-C4EnNU-5{!9hVO%RO@UT4auuXUtu8m{c z5FBsWO}M7o$wXN*ESyNC*152)u;$@RtzpZ>*MbZQ1T$Y9WrG~!0Y#N&8p}JQA%t&I$D@PTCv?AmLiY4TWN^qmz3e9X_soETr7ixz!=j z2}S$&{|zDyI#$)jH7kwaAC4No%Ra?*J&HqI5rxaAb_oUgsobygBCwY zy3>^!PQ^v6TAP-QJI{^RGRtftplbEMv%3+w;3)q&&mB|1Cw77M(_<3_fo2Qs*aVpk zfgoWOexb-N1S;;!bGRB#r4V;!s@B_T1sh#pYZltc@KuO`uUf;#6?$&Tq##a}M26ed zz9pk2-HzBNLSZg63`?00(LNWf;r8nJ~92Fr+A!MolNo6T|s0(GToK-i~nqmei z*cG)r$-x)8jQac@RX?0`SDB|jZb%y}e)($z1Mn9iAbs)jms|qtMBM5UwI0z>El#Fn z>r6=(6URXOzbKCJoQ+Lg(K4E<9~On(Un9aJ?+mTcT)`T)iE#-*^v{iC$xWhT4=S zI#Nsmo21$-detfvhf=_{yFO$7M+je3gWjd^RrvdozKVkMRs5NyufpG#_*Gno_*L8} z@k@}e;xo5m@z=%NioNZI9yy+dsYMP4%G!+vB!<9X`Z~d6e|+V6*K9fVUw-4i)!FG{ z(5kDt&Mi3n_D_5I#6ZNK0YMlVh*qDv%1-Zz^MmWFPoFM7x|7Xj-6zg^?-~{K+)x z@9SH~w2SLnW`+%KnFIC>zIKXR@j+q52cuWK&M$ZK>U+(PuP;CPV0r1f_^u6`DvgS; zuNHg*OE`&4oO#E}xt7(~$||O*%o9V->^l}Q1Z-7XwXsR;w~6V3*(g(6?)dGhs%GO3 zn;2#WE9K6{S5xY7>c3+dde$NWky@RP(L%>_Hf>c`Obfd$0yf};BtY66K?%XfDM5&W z*iDSMgah^yBRh zF9_K)s+Bddh3!}M${s_hB;DhSAzxSnU=s8O$3U>dE13$Z3OEU4pbUg z^EXTH;If@PjOQ(?SF%!B%P{R^Qc0r{5z;)2mr^L>|58#Z;Acs?F56I&m-qOmTtqIP z)(Ag^Nq@|q?B&yJ4Tua^d`imY5D+@q=BNfwp>-2iv5ECE=3N~uWfoWHQz_DnvZC#` z4HJ9{rm;-QiTHMVDriqApCEgAsHk-oU-q?BVc zXbk1WLSQ$qdOVWb{9Y;D-+^5kY{m`9oDXj|Hb69n{(1kKZ_slkDaUC;I7?C>G$h6+ z6a2n(sj)PVV9OGE3~)4`?V~Zb_aG^j$c9H5q=a^UfJLFPAXLW9{M~}ezx83 zqr=qTwiqLVsK_Fkw{JAhe(5Z|*SzyJJ@K9|om)Hp%sF{}?UN_YjV}(q?$)+2(Z(1J zn_b>QBx3<5bP>;!@D}>XJ#a((8tWC}+y%|IwyCS*BS3YQWPvSBE#o8slLnZf6$)&+ zY&IMGoCY5+w~Npca&y|cHCQO3nur0T+_kemAKZ|F0S^wHnx3628bdg1gB74XDps*b z+XDvJ<$Be#-dAbu*D!dZNE*fz zKYk$G)Hu2p29@Dvlo9)W89;@_pb)nUZ79*WGueW*2Y$;9GRc=wU-IMlp%rz;q(#s{ zI^azaL*v_2HuS1$){=>p8+V<%S69C|PVFw6XO1pWx-LEICTtnJ)xa zIH)9RzsAnu^|eoLu0H#;`T31s`RWoMP{1p7-GiNCwOsqK=ud9nNfiLA^n`zDYz#>S z{4lKqPl1l1#SJE9GD7BAh)w?PJ1@LXy+PhB14kWkrQbDYW8Gpd=;MiZ>eE2%@6<8*x2}_arqwF^ zQ>xYBAMn(Nf2~j&!9 z;GU1hP$$>_(cqZo!vLc60fDwNMuS8Z2(*3;KF4TYQ}qVi=ELKs1u;NaxNPVZ35fl) zpd|>l*oQV91$={Agy0kYs3`LbXwy+L!G)1cN7+!}Pu8WU8u8>F_XQN5=KPh{m05L~ zYI8NUUNRK3l09OoHii?6)NLhZgn8oHhd(thd<{JD=6PrFL5p)c3KV0Ew7qll`_&)5 zP6V_r{Jgw(M{!<9RJ~#xA+M4&_CjK+q$&F0g#2E>*^BV|-@OTBEwhZqkct1Jp_(|E z_-#(HENol3zI=`xm&niB`NgZp+(O>M~qI!w}8r_uO$ zf-YeqP5+%tk0++4$OK*oB{>8PP%^U_cWx6sli(~FdO6_w?lLmQ3k!NdYXENuw(`FH zvXL=@bvg~3(M3#*3JK?yu`scmh#eDy)%RVSV#dX=XcRfmDzH^t44JcdjQ0JJowka0 zG0@FW2fJxB)YbTgyIZ+JzRRU6bV(|OXj*9*prp{-?LhmwS%gA&R8r`QObUZ>Ng7$2 z3L#)x0qc%_3Sk0beYFmUQp`uSQz05&yVflOE_68aVzH~47kj&$dEdHb-rs7?<8j@A z?zU2Ku*nPBZ{g+;Rj*R8UMskARf7gh2Li3kamV?Hs1`My=Ee4rLOw z){70eLU&s<1X>;^+zN9jkwEt}$jn9@tm^1<0z^slOvT{6U3**68kloNm{l#cq`8m$ zU{6VPq9cCoi5}mLRrI7N6vfa2L8xA#YsPs*t=KbM?{xgXhp*lUzubk9oah1TyjEW9 z^5{2lYWDi5DGZ6EFx1|VR5qi4h~UkL&SmBMC(ajVL-BNEw$mI#=X#pxA#|LXbqSe8 z6{1S}9W#oqW8X=p9r?$Ot3fsHBSJ5Uw7VHn;phnTq$w+Ag&sG=+)F9*(FwW_YT{x? zcxfUiC#Kg}!_%fxlN;^(0~6eaeh!=Px&ndW>YAd9jyc@u$`rK$r)tV$`+Hv?wkxUy0akx~)J?T<)_PDbdQTKOaG%(@;{~F8rZGLO>eE%FjDK}# zH;s~EuLtL%|3YCfKF(j;9RugB19u7X0}D|_We8@h!j5;*Kc&#Ee@b6lxlk4osW2>} zXqZEhr#??Y%s?VmIhW3_+`5lq$yLF?aYE?0wPRD3!Inu}M~o_w-;_ogehdaEGBp0kbmh6q9NypR8* zL98#Zy;b3IMlxpMnNAKn_oz-47e_al~+`&(7_6CNJzA(Eu2Q6!4MviJH3?C%WZ%e z5=CQqhB%1}oRG0_SNP6$?=Z6lEtg+Uy1#P|m#{mmgnP`}_-M z@s#uV$4pOh<@EBC2jqZ)pVShB@7P(q@0@(F{NxHfnrOBE-3Js=-Nx7{O2anxVcVRK zeLP8mv$Q;(ydJp2sXgs?8YXF&qg_${EDrukm4KA2oj*KvE}d^)`O#Ur*tsgOkWaVQ zBXy`{13}`zd_BIvB8jOQL(S%P)0v))#GowB6@LarTgxzUzv#7iI_h>tN7dqPRutE& z*nxJ93jZ(gPE2gRes$QMQLGtTSqH{N6+&%I|ja#w5Gvr_R(z$g0MXEVx4D;8>Uuty|TNVxP(kD2n=Z6;BlIqzJ%-MsdlbM5}> zv(Hvpz}zE}UIi`W7VcCnueIKRTcNv~uP&9n8u{Up6l<{v8S1 zzG&B#wB11<;O--PhOTA>PI*`qm50Sh)wAKdyf$nxx_U;ez5%P^X9qZ&V?^&^MBmk;@{n94pjSq z@q1jV$ClP533FPj7x`W~zQc7AE7m3OUQz4RyTMu~cJCrAE!L)pzaS0EHfq@1!A{WF zYa&UJ(0WY*9d)rR5kv0w9i-5Ko~ghontDY=Q*WfAiLTe$CyUOpr48U^)Ygh}G3Vwj z=l(?s8giXJIJx@lbo0(l=h%{S{}fX+xhJ4={_^tE^Lw}duVGQ`Htuk14Foj-jK$3; z1#VZ&*!xBj8?Oy7^ZJmf9cmDQ&yUSpQ|3lcG0%;LI#2rcp(9l154|1Qbd>zPfc9=b z6i>Gsgw{cT)i!D$-m3Bipa+XHO>?pnQ0_f`JtzDtFGtoZB04$I)%m z(5y_|uvBWPORhC;w%GPO)Vt~QiVD%*VppdX9cV*WZQ-mUe1=_uVn6e2Fl#Rs; z)p;m3M`8U$a+Q3xU*sz-xE|#*`E22ZG5wk{w{Gs=_d>XTr|TtNLx+DQ>s2>#S%ts{ z?T!n+n-_mzcuUWp9O6~1x9=A|IfRRWU<*y7GP#z=U1ve-Fi5?3kcii#-u?|%s$Dzp zd~jpsFZVjQ61F^m3R&b_yNwPobfJ~M+@o5xfEtbW0$6_Zm}_wLL|Da!UM`v2P%(>E z&wkCHY0sAyspif<@!0n>&dpoPk1rJRd$&JdI@i4R9X%P@h34k>9?)I_l&N0yu=yOW!z) zpE?)st-k-%IsJI$!u{s8Kd*fG_1edG*S`9s<)O=MJ5xF0``PiyF#dOF6N`iKHw=HN z7Vky90~@PAah8rbm+rj?1&W2u*)G&41yNyCXz%GEcGQ(+!UkGg6^A>_ml2)(BA8mX z5U?gJwDkZZ9$b>Acoymm@PfmqX! zyXd7^Maz;vn%3`CdnTF4B~n7vFsL_%61fE03V#QKFS-$QB<2=$c!@MLlZ5^igOKyC zhuwrCXQhG+5rRYmA%y|?az-F-k#FZ3A65`X$bd8i>QxAVABM!Jc~UmR-OMDg%RzY- zQt^>Z0{cit;u_V&9}D{{h$mj@zb+aGY9ZD$NA3m?0`msF?u4N9%R#V9NNg~DA{g=f z=xR>>-hAB?Qs4#i5D0$OgzP+BZm$4R)+@qhx^+`3u^^1e$cSap!_{V_!(bc=qVW{sA<4%s$sDj#rm8Z3IYBXm@~|t^T6S9KvF49Q|2wI1?IkL zhEaF##t|{V#wU6#vn-ugf9v7_VcNwFop#JPV8I1!6M1K-Jpd5&+r%6iZWVGU1dwEZ zj2kpe);ePvN8(2h>l8wyLr-+8nm8_%@}tOKPlGA@sc|7Z~Y z3PnJHIH(cLp{V8P%dH~lw8Y#_5^p`CF)fS}Ij5beNu*9p;WSym$349gm=km9b!jM9 zAY2*>Hk_SJvL`T2g2|K&aTL4WDl0Ih1$M-hf%>BxCPgd8@o_!y(``OnvV%=ma%S=gtq*;(2D-sH$CA;B&WU@ zf0JHGxd)iQ3%1`Mn>B&KLWgXKcas}hH7src`b|AUBt)tgfH!0$|C|XvX$K#)W4lT~ znv)1|x+Mc8GB3qlOrb9X2Cmpq^4p8WUPaNTxuo(zo#zU0;eKIQ)H=HXBN97jEZu;GyLthso}`QXb0A5@{!#A(vbnR>BR*DS?aMAt9SNWndMqRkVA z`b!mDQgBC!&E#O?8!5zXFG+0{(KMLbOg63mDY?zux&69xo9W<%qpAOicYwf6%EeFX zNq^SHE@QnJ$~v;|h-GlmX}-4Ztues+DRzQ1)`o@w(+v0NhP?2(r8^X}@;fc^3A{JP zbG{pGr&S&`uT5RCY)pql?_XBz6l(nYLq)M>$e9y(GH;tvja>lQ-H+wGiD^*5+Ez@X zUNMg7-5FJg1K{qYlI!S;Hv`zA)Uc`SRy8O^Jiiu)>W-@;=?cX!ZcC_QN67{P6^IvF%evQJrjmp&0b>-AgoD%!+{Ny&??> zWC7GE7|{$TFB*shgzDsYK zySIAkt6#MDbJ`_uwednIr`Lp)T_=}t}2Lx1B?5z|H` zFmyO>{E(f^vsapDpR%{ubl6@n5(6TbmG^#hPCtnT1F>Qjub^OsmN0kNriQknw_8G8 z`RgaEKm6du9&}%n)2P_uS(zajI8#CMb?oW5$r^A~&9o)caaf`+a-jGJUEm=Fc zuy$=B)+RU%FyY{-E+J$8()=^A{0-n%fs_-1od)TfOsaCw)U1t(p&x`AveJlmYPflI`O%;0$CZz6H_v|skt!BXtzG?ygX9_$OF97? z;D~iVub@6Of(m`nZuOj91_0_L4o+W(Uh^{D4MU*!{@&ihK49oVU=bmW?6vI#5IjAG zUGk;!-CNKembp8Z`j{4LX!+3xXnE;6YUfk$t_?Md5v*k}g~23`78L zwRt!)ps%{F{-NWw-oRW0VY1}|hAXqU<9OiRSi!A6{m!}biIiA64}RWqN_fu3rmkq~ znpRw!G0Np)O)ExZagKHIR%C7Dg-&CKtmC-l#lrBR8&_yd$2_LHJaoI3iG|r2x~-@> z(Hd-=WZWvGjjJu;x-<0sFXY{Vg4p4YymKzn26u6>=RHCMS|gMo<#eRD z;vo;d?q?sl=VBLkZLuf#WkmXB_-`XZ(5`hSLXexObqNe;NaQ0TClOd=9QP1!KkYCY zx{bE_#B@YaZTCA^I!yGCc?V7Bb8^oz}mD&k+j#E4RdPD}9VX>p9U z5qjf?&>Lv82SXw3kY}{PaWMAj0ISVySwG-i^YRbNPd}taBtn?9sDP@SZsB&;vH>O% zdWa09F$tQ*O3dcv`dctYd{xr~Wi9(AYG&JW!T8x&>hofbmB|)lrjo*Dpk@Epo*cC+b7!&~5;tid?3GtN|LXFomLGsomon`leLcrmY z3eTc$qEL*VxQC^dbqS!0xPY8(TIk+LV;2c}Z~i~)3KbvjL2_>t_{R)bHiQJdSKatZ zv|Q4Z-Y6$}h^etiFEKPEZpVSEM%0lNy2;2Zg{o`}JMMrX$8z(Kvt$#{O^#WCEBl{i zjCp;mnM;+9D@I_`hu0-2M*KRtck|K7m2V$AiyyDvxcv|A{erl6h|z_0gCsunZgx2h zY~@ZEKd&AU6=#LsDD?=Vfs?n_-oG88B#C4*F73uu7j}smc2n3uNSwcns^qQ7I~$Fvh}2s z7cFvRIpw`54+5H~$5hofDeyLdQJ)Wq8SpVsZy&Rd3Dl&Y19jh`4pd^i5=q#XDqx}t zuDoc>_18)!ew$M)3)@z%FW;912f4tFhnHVitPm=>kc$lcn+~g+#P_a_jZjCd_gT(k zFt=sPggK$3EeM>Sn_rx8o;-FQe(jum=$wAqynLS(u6%TR`SAsay1sbHxpZRX)_Izn zZsqC;mVl9@r+mJ&2pK|eouxnj``B@a3jjRrzmFXUH}d~JcAPpXKVLdSLFeEf_^&^b z=Jg+&=kG#fnb&tB=a1)DcCt(7Y5&bL#~_!U+dmAPHT-Q|fmrcJsejA@gOEWK!0LaU zXg*qnXw8Wpq-Zwz zNgz!0AQFyftdP(D2IaPifLzoZ8dq!6lN7>u4*ovmRwLM2h$biE@~loxs=a_`60?{C0!@wt=ErN4OC$`Rz`*wk}$6&^M2OZHv=-DdjbY8V&+jJv5!b^s z>pVmzHKk50+j;Dp8e`Lbm>Pi^SSbsQ5+DFp=tbBNmz9-rXmZz*Bg>jnAE(2eblo7m zp+qhFnIG3qUu=H%L-WdgwqQh(Uw(9lEi`berys%<{qEJ}AJ6dH*}3?MbM8v>;|Cs} z@|KPS!=|J_?590)p!bA!Orv?_{>s%8Vb&pCHX3@@6@AH0_l(jc+uS?GtA@EtDbFOS zG4M8VF~Kn$8#`(Jyt*gt?)@7`Fs`!PMi+_UTPJ@n7Ytg@ea#5s4rSh)ae;C%JP z+UbjKL+8Uq=h3;9yB|0Ib{SHGd~~mQ?)dVPC(RQVS)wem%E3b`=e2+IXzlbx_(l=& zFK7(u_y{_v>UM9D5KVI2okV`FuQ;R>tHVQSl%E?c^bYp*4Hw|=QhzyLEtRYAHy$qa zS4v7h{M|d;KTt0Am*DUI;cB5!sFM1_#op>rQR#!fl~SSHk1PFYznjWXeo#?pH-+L* zZ+|IIniczc3q$=SOu+T$%Y&72FBwX)g!?Ol1l&-*f=h)esWV)vl=B11ApBh}440~f z!9K1V+&5er7%mggxLU$}gF^%GcfMLK3|Gnnw99;1DU{3P?+P9+mIufz`;@`Hp*}?+ zLn)W?%5a6$862n%4-HimuAAYZUff^kFOta)^%lwl0~La_e7?6hSSGV9Rr`krt7SUU z0i4g5s$^!Ber0gD&_}-K2g=GoZ$BAsp|3bx93B|tx+xBp2J^}g!Fv%GO2tAi0o_+A zmIo?TGP?fW-l2S@KtK=l=as?U{ysYD0VS`L$T|%b%Ej_G%FYTN<*c=Jo$TYpxj?j=nM+OMLYz_CG&HYf#Ko&K#_D=?aSldemdMj zen3(3gL$r-!m!d;E)>Wb6mak0KsirlQylCY8XW8+v+3fifnuFX8I2(pzQgH&_@PsurP_$&|b2=>9Sd8!Y#eb7`cL3tw^$ zZQHgDe!L5Rzx*;v_7+hF=_#+J$5-p70as>vS1D0%z}G?t;qN6|c%aXNMmVlvq9pjq zt7r`6N0EwNMumYi+KT9hLGrthB2DvBi~usml{6})Q8|q& zX#}EB8i7C#kY8)JzO9hA-|4Ec8}QUY~fWBx4U->ra(Kyi^37ooTuD(+>) zy--{U75A~?J}Aba;(k`#55?6`@c=6(8)G_DJjja4KAGW)B@(o=_!(#eBw~{D>21k{ zmnDioNzf^c5Vko)xF+GxvxZtpql!9>EiZRWoQp11EA5|Aiv0sgZqvc8e65v`MbD)H zB|nS@2FQ6*Dh&)On4Xlqam>ru~IH?k^5jsQ{Gk9~c@Ur)8l! z)LR)=s4P~(`EsQ&?6#at1zAn0QLSQ=8|aX5l8Dv3Ffe((%reLl^grqaS7T0rqJMqA2iddTvt$f|{~ z23N0vz6iw8D1p4ZLYjiW5>-8lmIUp4@Z*APxJPC{Kmtzbwl0YboR2t>mlZ1c|lwpIG4%gQS3uhPMiAl*A=>{mN zw$~NEd$*t=84hwe^p;W~=BI%YI_zvl9PC5M({>K{l&ppW&U>VSF+B}?jb2J017(P1W;l4_^qD+O-|jMMK_Y~^hgA7RtV z(tkqjpasw$J;9Rw18K_Us+wV#Nq^;Yn}LrX~RddoCws)b*svedSPfTRYA-4~tn$DNaRR-b(aA+7Fwyz<>Q%a8slKEW`t zOR?tlGADe|Ac9Q#A|Wq>w`7Zyf%q*5YCP4@iaTCA_{P6X?SK9M*@ebXAKHQn`J(qv zE{FQ|Zb#*rhJM)MWgoc!BA!bxQ-v@X5=n1m1S$&-$DTOdQ^=DkyyM6pW|{*lx!QPw zodQ;3qfpz4>w{S8VM^Wq|;(92w35yz3C;jCs%Cl4_)b6qq?(59mv zG7I@UL#=5v^orYO&POQeGM`E<{N_+9dMgH`T!usUyyO+ZUbwL`xRJhN<=ntu*rIEa ztv9S066tG{3r-eQJHxnk1>5lWTj{u=Z7RA|WwFJ&X_&E%OjVu3l?)Xu;s8=@Y|^lO zK%i!$41aghuBvJ_?zD+s>8ycaX0TH3Y(h1q-cfxMR~ls;r^!2(p=T-YRIBrGT7Vy9 zB}0h{Y))dd(IK)V>8Y-m7LMDZ0UUz$WMMl4fyFW<#li!9>jE)@=elWc8|&!YHez*q z1edZEqn5#QWlYRAAhvh;aIAKa@yo)BS)R#|6V=LANKD=?8_y_Kmo0(81)3^zs$sct zm~#zV)vO%(mhkIrfk1L9gwCb1l?5j-Z9=|g%HC(L)lqmH{T;S#Y+7EZ=h+6H6Y2;L za%suKVmk0f>_?4eqouEfxrV822Uyq?;0uC6R9niwxpsk&K5ipFW~SRR96~Y?D}J+K zM#pXrgbIoX+#E0)h@V9mUhpNMoi{umaLhisP4e3r_>R&L#{<2dyu$H%SZ_}5m?-Kh zS9d2f=sweR%w8rxh+R7}qyK*^1ea@K4Bjd6#oc;^%6z1z)u7ndLX*;it{DmG&KY1H3PMqhXZQ)a5$(t%U2I%W;AShIX8q&Cazl9KvaR0%(*U? zL(whZ=0x}Q0i)gmau(t=?!#5~{WYvk&)8%Inoq7eAKZ2p?>mn#gC|L-|G1s!Q=2i83j@Az-sqZ^T8-TnEYWg`0H<6lJe#+`f-gAOMKf>ZI< z6X%25D}TAS{OB=t&E0^cL2kTJ!TU0PMxp>1wv7S<=WVN>FP&Rn`ouZ8xbpbc^QEg0 z%x&?ZXYq};`9eF|hSr{ZvU>NX6ovB5k6xk00iJ?JSS#a+@Zji#ZG!>)1@P7>$f?ve>Qg$z@yQd%#Vdd<*d?PO@PEWA&Q2 zZ@gj9%vv3e1dioLCs!_=TKV8X^Vo52c-#&IPs&Mt=$;=zus{$w$wO&$#x3aDbz53~ zbZ713ADWAQZeF+S&wglL_Qq+Gl}0u;W6rI! ze(2b*zHmOczIvC}jD!)kb!#BGoG0jQ%xqz<0?3ru12L*%Q=VXgb3ZDJC%cI-^^?6+)ESAKMsF7h*WO@^K?Exrtf z9?zG~JYTxHcI@ivv(sqDZuEP@JPZ$j%TNBaa_N*fVWJeg<+a~7<^uq^;4k-9KKlW* zW{dZQvF`5$WInkZ=wa>COPuB@0+}-uPE{!fuE>-YUfVsj^YwkZb{v>G@Y=pz`(Jx= z&rTv`i1sMte1Wlwo7kr^Vo0)WOa@M-SEA!QU~rS%shYTKht@NEYR9F7g_uOKQ?<&5 zS@8*iq7@a$(wtj;a1ziyymvct?tc%2ym-p_{9~8REP_aP_l$G$_VUwD*G^yLRG|?I zQlb6H7Gvk@`**y#Z|4*>{oxm6Sh60&?Uo}7Ui6BPCs=(4G5z`lmclvtVEM@vcOlL- z|8%VR<=6bq1h#(aZ=kpS{iUTZ+e4_=|_VFz(`DZb1}?2=_SQ zF%>EmP$%l;M`xEG9rKjRZbo}zMS9Rb#rL1C-hY4PquU<)gLrrJL9JE?%b#RWD;m61Q;S7qj(CKG zD`Ze16%akhgxhX{)(GI=d`Nr(_H4xI4I)KtO6D$QMD2s9#RqSzG5R{$YQLYqOee!r zGqnts^NwIv?TwQiJ!J!xV%h%W6doK^`iS+NjrI%HBb?Zo741r53ac??RUVXQbKoMw z|FC&;pre-rK~y>>*T@5np;kgHsN}rNRU`Z;T>t^PCcb{bH$fKnhktksOfFEL`aT4p zaGRbYAn;mA{BMNyPX_@9FB1?81UxKQhr8KNt|zxf7BZ*lm1F{7C(=Hh$!<$AE(9UC z#LkN+U*S=z{Y}8RcAHA!YhRt97XQqG|M}9nwd2p6lSIGsmwRZ(TL;nVgOkmVyB5BI z=EU&8oI!VD2YK}Y4#7;j!B2x9GVKafDdJONzz=|#!-qTvvOxh&f=p&1m}bzz{dl8g zWAvV?q-_=uNe+&Z*bF}Vy1+;dqGW<4rL+wfB0~beg~q}_;B|x?f8Mo!_3pQHmFNnB z%f-cetM5NuUb;$`jFZs$w?6LyA51~{B;_RHPJ)>~g6b;qipa3Wh(0UK;kKg0W`QP1 zMUhIjvXg}~NdtbdnfpyzVZCfr@WFkr`*{(A?I3MKB9Y>{b@>a|ug9~XmdE}`1)mxE z5U3GS%MtJu`S5u)*DR)PST>*9ow_8u^u`r{1^25Bdj^7%1q@*zH0`vmXd^*xl%?O( zq9ew`C!jZ@tn%3n=i)=omxIYAZ+XrVuG_>eH{R~i@Q$iuvy64y6=o`~yh42{1PED@ z+q{BuBH%1>7i7K`qrvEUS%`Z_YbOIH5v=Qx&=>;Y8T}xAWOuhWFjz=s?HQ~mO>6~b z%|^stj-i5-SudorWKYAE4nXh))=%!yb!dKgo=A@5CP9>%&eD6%qem=OlW>p4rkSO> zdElWt6upc!OdpTQ<1>^4G1Br~`}R%kc=e4PyY}qbnMk$Zs!XVT_*Xij5#g+W{={_& zTtI|dtUF2*TXjRX$o+u-?P~Qvis;K1WEXD1eod}?^;Uw03dW`>T?g;RKqNGN7=eC) zSw8*4%9CqrAAP!d?;fzmZ{9pZ6^=>&YQNT)>M0hOgI%JLs&Mjw?I6R zgVru^OChH(-Bs?{UB;@G^xEfmf6LJgyS@H>Tsb?t4e@XNbrZXC|9ZZk=_`T@jx#&e0gG z6m73pf)5j_uG+iXUi6Vr&$~$)raBGhIBaI1zm{@WTL?hC0tE0}XbXYc|6n)d|MH_4 zq{8ps0BWBr;<dKKe&{OfSL3*s{b%YW!0m>iv>A~#Z#X9H7c#n;ah^;g#dPdi#|TbxG3)#LV}=+(v%;j z&wu4AgA70|wRrau&N@X1lHuwDT)~z^r{JcPVzG3191-g~JV&>dYqXaSRG3jLnvo{> z`ap}x5wzEu7VY0?nQGC?xJEP}v^AN}_0y|&@6$I~xG@l+okyQ|XP_ZK=&h&B4K<*8 zffe@#3pVF|@2T+Z+*5usOF0hk7EZR4w7`0W4{1gLgrkpum?+b>3L#CnxF!Tn8lcNs zRb!l{(W-OOXBsS-#glXaq8iwnj{1}5&Nn|sPcMzpvv8IdJJf^z5TeW%j)GATCZ=|-}>wrIF$9>)gG5A=w zEe1xwza<-;0G9>7NkSOk5>a6)5TzDk8KNA|4&`HP^D+>6A>c=qme+0ZN+6Y!BitCJ zwK)ADdpZdCK1Sbv+q@abEVf_Fg8_pn$T_gpM&%(<<@7!Y34 z3~iR=@Zwyj+1E4zk9)L*Tj*499KtBL9}B^&919ptZy4WS4@%;7!_as)r>Izv;{C-7 z49P3h3`3(2K1nLjOC7qeygeZ70_>7<9R7?@$;8Uxc62NfR7#Y_xk8E{M#ou2 z(~_|8Aq@g$;NBH5l68~BH<9>h&sjlX`S5S6&rUm+7M&j-H1B-9_UD_4&fafb?6*<& zcnk3EyNEp@uRc4ya{DYXJ^jPVM_fGsypEI1-zXl*fwAM!`iXqbWW@H z9yY&!FYwg3iBW(k3eeas301EeK}8y=J%SR_?r5M4hC<(E>f!3KOU|?RDR%=Ex~PF` zn8Yo11m&rv=y@7a#5wu5wU6&asN2{j2%FP5jv860822V9Z`A1xR1T%1D`k5SZEuxP zZ!%!@ee93kgNz>lS0wH5GlWRv@)3F#U#(v;f~#u&LqYyxuald}a&@C87uLBmMY+h< z$=+^WytH!jaRf)omNmn|uWDK{-1-t|O{uvyUs!G9f;;pW;Imumv+r|$725EaeF`E%*+L9`2L;AI90 z&vp9o+DD(l+VXJYMG*QQVy5J?dGsG%kc1kxRo?SiVzC zaFR0$-K7z}PoetLt_>E{r^SLa*dCPv78gW6v7oQqttZ55YLR*0U%TzboV&xBO-W*f zgq(b25rf>(kR25s8XZwE1u7Yl&@&f_q|;(g98KIrnkRDp|pYsvEvlRRHx9a6E%?PhG#QIDr@=6W0x zl}m@@vez^Yh+b{<^fuM{jG+E}KHuWHUZNuzUH^5XiYzpPv`%xOKVCCuwDlINQyW9NeM;f>)>iv3Mu4pooxR;`xoLr`1 z^2Q+J`AJCP3mS+Ez&vPhDwe}I{31?rua6-ah^&e0no`Ee1ci}E!~G}1T!JJmUr+Qb zH`BS~fmE8Um?bLq7*BM}zF@jychD?lv3x=$soH zc5b~}o==dS5(DzFK!p5~k+_=qSX@xNx6N-Jv35AXdAam?95Qx@e3r(HQ#Y{cpZOQ)DDz zD{Bz463{h`Z2;tI<5&lY6j6_kPbR`zKOG<0hlv&Zm`EoyKY)ikvcW?~w^!_^yAK?u zBaq+=XLaL9GL;T*2?2iAs%sE~Gn+_d>qb49%G$;r;|Ml)C>Bnp#0M2mO;6`YZxr5a z1iLF9LzWyvX^K)Wze$pTP046hdTNJ^gJF%`(ZQMB=DZHvd45#~^~P?=b{jHu>w(Zw zm+mb;KE;Q}hKtYLGtCQsUNRK3l09OoHa>vo?4+2mg&>&8DuJXWsra`u$x+U| z=a8ucPU+AEj0M-Ek%Xr)k2nTM*u+Eqhgi?OaK0f z^Tk<^+CTeg<;-c+n_Yf%zWE8Mn)}`ByL0>B{$2C>5*M+{dni`)9enBom(YcL2(E6D zyvJl!y{t7V*hb#V2C`jMt7w5WclwT(q9nZ1nwn13On*xd+a@GEi@bnw3o-| zztUSgJ-fVgL!o{^L?jQqhO0JYXMy(u*$|LkIWm$>#-yX?!6_08n zp9V;@p;kt`lR97%=*!<>*_)HT51Lvi)BqL5g^VcdgsRBD&)Bty7L8I#UO;Z;vhPHS z7~$h(rbF3t>0O;q58~cj#S~WJ?{p|dt(SWxANk$_^~ix44tp2i>f!wnQuR3ZKZhhM zWRuYiDqM%fjC3B!zgjMXRR-4PlLCFGU8h@NgRsP7k>MZMNT^^;M{?-`-TeTLxE(J) z`Y51Bb2kM@&5NIcCQW!Q;LQXr`7S2^h~cyZpHXkyNsc7h1w!2Fr*qThE@O0A>JQ3N_WVtf~gAdMz^+hFqkBf}ThEr$!#IxZJP-j(NR_-ctMvtiABC{wUHwBg(v$3w^(o1jqA*$ zM9S3V`wq%3eM5OZjZHyogr^q0=UVL?Z+nF|W-^v=`AQ6-54JIVtP3lk+CkxPK~oq7h*&Sj+{6gE;wxVkhbx8ooY(m0}#-6spO?iuJ6jeW2kyEF)^WYi_==0 zCO+A%OHbCk{KN9o594Xez&OBk6Nbe};1fz?;$;S;Hr~=igzfBFs)o5sDbFN9fx$ke z;Tk8sGrI15VWXLa_7*f`zR7_35f}x0`xyg`JJ0B|Xw*H1L6WN6B+XZ_O z`dJq%G=L74jLS6@IyGqi(Ure`viidh%TLd*JiXieE^ZXnm107z@uPb(mZo( z^~O0!QbTN%`30wp-&V|N4F62O;aMfW{>EDe4^V65$T|mh{p*2O_w9N$(I$*~@R8m> zay(v4+yY3MaD73cm>E8jk*Ih7y=FnKvzyYXb@yKkIJ ziwF1ZS-o{)_1ybnud|A#l8zv(2=oUBC$XI&IqtHysn(LIl)Ewg61wXW!IIp+CueNC zZoM)xF_D{?$c_K|#Duje`^rB}X33wETT+{HSsPpA;7kRhnv?7%j4HW|CiDR&!lW~l z-I&P&kl;9Y;K3pH=uuGFBcTQlFFZnyhOOU&Qtn|@C)t(B!+B8EH;wIAE$YWJg35}f zm6Y;fsi^E0CL2M^q2MJ`I7LH@s2!5zW?aOG>*VsY&ml*Zn;wTn<8xae_kt#(Qs$TG z_eY=h)nBMI3pwL-_#VKTYtXv5SN zQimi>hzgiCdReVagMN2xqK7t^=s}8Rlb;^2i5_$W5*v;c^7-GO+%_3ZP##l|<7#bs zk^&pg!QY31aiX33rwBHdpTfPCojs>cI(H$K5tp;?F(}^=$ZOY*IhQUhKRQO!yUEce zDB>p5Qv8MVaO{|}@tmEjYl^BTT4lRP;n&gYg@h!MzInl@07LHrFU zEC|2|5-r*fll07K-y5b%kKEfW*gmNEFBg9mnJ zh7yS+2iL#VdSJE$pJ92juffL07MBy5^q9qSxGdlzV#MUNgu!@;27(6768kh>n2bas z;d^kH{oT?qkJE>hSK3479lZFbTSZZ@z}LkZ-X=_^BpJsvgBd7TS_hf~a4K z*bGrh#LETA*`A;Y+G&4L#1%natM{Jx%T4qx(Wf_vFhNhn7GW4e3K(cVnfB(Ej=~;Q zz(8$@9aM`jh;c7rJUMlA8(Z(KY#q0=u5M}F-qt$0wZ*@^ZPYF9#op#N{8rb7W?P+w z?QVN9Z+&e>An85II87FVEpc$)9_QM9=ksGUDw@Oxvqhj%e}+cX99ujo#&JLjzcSJX zm*(fsXl7dZ_~TvA+gQZK(11cSN7gAszd;D7S&R4YVp*V>-0}NF{?-IUBNCxah z12JE~%E&b%4OR@>g#>Cqbc_~Os8TQJ&UQ2}%UcJ$WNG8sY&HyJa~)Iq{` zCSQXz*K#M;lzB;TBR)i@bMqGSulwu=5;SXZ<;msMXQ$DQ-RSp*c^Hz~QR`?g%oJP> z{_FV4?X%z>OERqqY1YvHcj}Mqu8j8gvL`|EHVp-|8)xx8l);DQ#Y@YN-Fy1dWzYYc zPcC`D;D)?YHNk%N7s)aC_nGiq5;DUJ_XsH9>49Pwu^llsHkODA@RR_O3!0$$pH{&esxl4b~qj8GNI$`?$#*KJmENwz&PxwvSE^rvIZ zFTbWqh`fNCBCC>T#h^sdItn$vv>Oo9Qy6$LE2zYp*B>^oeFqWh&YbTr6rDRCuYT~} z%GDDk#li!9LiTcoSOr2uY@fHWn=I;}s@p>}V-!VpFgH;?jrt44R91mH+Z)v??3D15 zk+eqyI)rAj4JAom;IdWIsO^|hOn6dCX0ust2&vG*^t$sydv@>V_*kcOTF9@LP=AMQ zLZ&bd$`Og9t(06@Xf?fR>?3%M7uz_;CAQ3gl|1=+(9}AN+$$042sa4u0!a?=H+*}Y zD5IS!3qd^+h(H~*eIffy(w34$I{3KnMNwvfrnoQZkjFcXWZgV>+PQlbtR0Byn{(;> z%B}k{>l!!avNV~g)EhS*J|!vzAG#x_UK zi8x6H^{U~gz2o3VZ5?)y!5x#!A*ff4C_YSina7RqeBxZYEsKE%FtUnfVx=;_YfiOn zs}&z63Px5NVNxBbI&A1PvJR{DI&5ziW?UNhH7c2o$7P1|>6RC&I39r9%)kZ9+Ecas zbid>?{qxnbK&Q!>c0!`one@4C=5r32K zr9!nl>=+^yBtgF7W+#Z1o8W&?LV}^ zz!8_ZsD>{3rHJCU4>KTdb9toU@PH^~5P0`>-DV;Hj_Q;MyeIlXfAL|Dbb zqLV464QDY6m3S>$wNi5y|Jyv*l`4TNysV#DP$`h50PR?7D^DtLMLlSW3B)(bf=b}RTvNY=6 zqJ?Tk!4_XcRfv4B ztxQWS>q!=u#I6HMIGE{6(4^fc-!Kp~COelOVDw-(CLwWZgvM_)Y9&wsij*#_4-BnU z=CkH!KQyo0Uw!tO^Z1+RON)j4Z%_se=YJzn!@CKnNrC{hRY+MaZnYfG!M32GyhI3S zbAxj`>-ZkGAbN+l;(zPse(T_U>*jpoM47xIQB{Rrvfv=sr%^3%u8CJ%@ub=(=Om(7 zz$3#sg>D%p zyj_5BniaPB(Y@xm<8%bx9huJtO#DH@IRfRuv)_FeMaIsKDx^`lQ^6P$G*&Bg-q{t< zMi8}tKClvmB_%?PqR%RD0#uB0qefz?kRZOhGz`Cz30gs>E3-i+qs4HRlFd73Clf{S zAw#WAXAPYi707aJGYBMd0!VJPY5Mo5q|yvlr)O+di~bO+*>l;7sT`rRRcq5}lux64 zN(Rd|wrfTyNe%czHny<1P$W?_1GSKxOPuS;RiNMtUpCKt>wJINxpcny*)vARSy)uL zuG&qo%bXg#i~gv*x~5q6PQ%L_&bQ7&87X+PN?b-FKr4O!*0QgN0If!e@=thq z=PQ#e7GzRjh$&3LD~RYF%63OMK(LWX{U2P*R#?;=>7cF2G4eWV9ShdqUT*!kAxT*< zKhETvOCR8xdrKY%LT^A+4I+MqH+~b(8i%=H+CcJ_Sq?lHqy@aBQ9e6dq@Hi^7h3({ z_S)%-&c*kdm+ymJ-;aM=y>Wwm{NuS`*vo~`wsp@L$-a#}#xSNRuXjGUzWVg33{}B# zSY|m^gmGy;zq41GXP+{`?fi|EGpE;fSS=nneEW8);QHE{MrZwY;Yk#)M#8od!rD9forx{1YgC1(9 zf;`;4=aqrU;cU5Kn&7!igJ(@+dpk(ysy@9#Q?YLE1H1-BygAyERQOkvA;7X4uG)cm z^IW}ubL-hg-Kz!z%v$z5NcVN6tlH2bQAo%t005dmWxsqhhUS0=)aRsCYy(nQ%!@VR zEYvqooTX!Qp<1lT9<0pb$h5WdmGR<>q zL)bWGu(a<9ePOgG-ILpb8hTx8Osjfkwt+Kc*Y(r_A9JMycj_%UwN^Jw8y!U^*5NgG z0fA{0n&`>q4lf2TAK~))aku>>UdL;5htc(!tYdKdvVa~0LHbF}emSgT_*OUFw|b83nfSyNNsA;0CHrl#IH zxNq0g)RtVJ!z7(@8jX)9=&~i!^xw(!cw%abOyG5Ra_oWEm&|O&o!dmuUxip$8E9DuSMw{xUQMb})lZEX@J&iWO1k-4fL2lQsdXyp5qxdPTO@V>8 zcefb}Pa`?egS8A_YodqlD|UnMCk6qr__-vbd-4PrqGq4y;mh{n>O>D?cr~MfwYL?m z0lH;2nXIbU8#ejKYEAUO+eAgN@rd7GqGyDmXFNX%SBa$mYYc57u267VOTc>NDKDa@ z0{#&bJ@j43Fy}K?V|p4}&@w|BdPAP*sT=h=HZ!CVjA9dg>zgr-?Dra3;J71&Mq3m2 zofhSp8MRWuo@QX8XGX2i4W;VS&?)!gOCl}IFta&IDOv8D2VxfHo;i%?p*{P_O^fJ0 zxRKDgx!C)U1~%up`FYK3Q=Oj1X2#GnRioUn0)wmIlF`u1*bmV)(Nk4ziqs6b;y?>N zJ{K8#ji}2edP;_E8?_A4CVPW5^xe=EH#~Y6lCNH!?OMYORe_IQjr}C(ai|XcOb;}2 z+fAdPG#a1i;i)ejq6G5A$2^&tApsH=e7-c%Q#MSTdB@7R zJQiCJ?9-(2m|^dm4In4NUPrmppjA8ie$-hL!^~i%JkwF5noI#;3;DftcuCA>{9=;duVyd+3pi6t#%<)L5)1$Xg@IWWw%> z3xmau{_L*v^l~C3AmN${y0!5{BgoW1D@t||{87>xCj3i7b0;QATi`XmOcjj0>2Z_; zCdT^=!ycjZD=psx$8#kZ8!uFagy@W@vtvfpDkj$VD)kZG9FEN407>#G^dDf7LAa_# zc7-=6hPhE6bG)w$JyHw{TNUFOi|VcWkk`2)muz@O9gMuSC5N>>c(hn~v) zAyb{PPm>(0N(TK#Jp=^vOi*tg7pp=L1F=r<7#gFP6yoJV)cr5lt{q$b=J@J^ldI28 zum1F*bMouvjZ-voCt7`Wy7}ma^TF+vkDfeVTFhtrtmjK-o-du_L;T*jyZr2PL|Gtm zuHE*4ICsxECvSrW2wY7sIH%4xKly3p=3|J&d;FPm^1O5R>hja`Yae~O{PaAB`1amv z9(rUsI>Iv#W$J*3_gmjM7ykev9=zDo`_$^)Z{2yUojwomM#L?L27?a!CF*$2KA@Hl z%ac2>JlYU~2kdipft*2a{p7C%?K!9vS%~sx>*tdrQ-c)UYM6Lucqa!*fsribC-PJZ zaPG7uLXmi4Q5fGhVPW#F=`qK$L>~ z_|KP@RvzD?+}OEv0Suv@oOGUkNR8WTZd#80Th=^I;3816R8A1QEeP0j%Q-Pm(KL;#PU&Bn)(+~jgOL&0 zS=M#Up;CVXFFoYwih`KvzK`VS=vOlDH}#TG8S`@DVhJZ?@iueaV1=YEaoDB5qU9Xl zF`DVz)Ncay+q+w0WpbOzS5mTvLzJUvGSQDi(e7h^(d#nGyTKE7xPZ~2w6AErd9W&XU|Hx5uYNZ%Cw$o;^|O{6Ea&TM6Kj);S`@EiV%vp31J zv|l98l_UWI&J|akedtWQuMEX87ab@{lZ6uJ030M^$t(8#mu5=Z(zMA*@Y|I%FJ;e9 zbu!`ZxskgQ8cF462piyDr0zuATi5dkIN0`^bzN+UZ3F1~Bk}S}(0&w95=n5Xi0k1o zl%n=`7%*7;5$EN`K3-wm_*LbBbBcJg@~gN7#9BgTr+t9?*Hz=#Fbdstb6QisH`#^KV? zmAWCu)v4;Fn=wv)RCsS~qFFlE zYzyi3UAxA{tX*S6T1bccz%cgG&Gw{OPlxOzZc9xY^d@YnKR-jN7})(Wq>@eX@kilM z7uiekS-j+qc=0-Fv58{#WOx?e^WU4Z(u$XGTQ=pZYOxuKXOmzC!fJYvX@uTEJ7_x= zX9QR$Rwh0Pi8SNilVve%#9`Np6NY9^B@3PnL4#+i;##9LenN3E2q5qd50ae{4*IID^UgEtdi(s z&U3>VYl#J3i_O>#jJBTE71S&7dL^ir*&}mifEk2#JKK+jSIF!mORmW1F{^q%80|j& zF-JJFWVfH~gkdJOm{X$ngGUI*lH+#c3`Y3tJGiK3Ke(E{*KT@C?hGB#vcMD7_yQWD zzZP>lL-YsLhUsr`SDC#W_2#{d=I|=BUF7SR(K@QoZv?*8w7qQb@%6y=GxNUJX%Fb7 zgq8aB6)f4HHq7jX-uImkny{DgBQ+>tj;6G9Cc3nHgw;6=l!)epM%`P*Z(9P$WmO)j@qbPzg8V{rD~civ%5v(`l+9W1mqN z&bc;A43H2if@I967Qt1cDBcs7+C;C}9&fLk;HeTAWP4&J`!j&Ej zxFz1X+x^El(>>?1L$DlD4u_bc2O@4(fsySdi7` zWSH)yXYd{^EFaYKzwlE?G8>zJzMGQwYr0@3C&F_l9lLQRL9Ucwg+$t8*wF^4M_o45 zn1Yh=2KnI^aDRH!mT(FI!Y7omW}+x2uB8cVXmd1lj-U>$4f){i?ZB!j1H;eU;~@=N zKB=o#EKyEBuoO2a&u(xb(h^+1@tL}V{cM-u0-XYfU3`3-AJaDdv9wJe_QdEIiWBss zvGoOUv`r&FG2$T!Z^L_mPDA}qC&Mqp6q?hRO5!xzz4%G@rDuQs1gPR=lUu;a1#fA; z(#?-XXR{s0S@8S})~$`~2T|LmdDswKvoD(y>d2%N%sHGagJBwhIYhPhnW5qG?psC7~{gf%?7;%#S8L{>albSOOIy+c@0&lj36j zXF8KZjE53vlAMIYqVPbx;Qmj#BAWcjvz;!Q+_UK`no>ZENoXjdrOl!$ts1Z?l&Z!1 zk9}>oR#6d&B17qQf3#^!-RbYgylvCxZClp7sY2cm^OhzY43cc`t(>O{48lJAqX}xv zaqMt_Qmj4)N9fVCn=nDl(!0$(u z)lwyI=;0IrAkHDS-*B)8Zj>8*Y}k?l*1geB#MCZwF2!*i`Cm_?Ykyl^TYYEk z#&w9K`7@=_hUd=N^FKP3a^(~5u|F|W1?RAIUW%Cc-_J=eTy)OOEAH}O}77La#l zdYLU$wTipU;XD9$n|(B<-jd6F2ndaOvq+J!T~{P*&r&2DY0W>daCzEyj{9uR zKC7cr7K;nTozOc0F>ysTSs*^D^dl&%6YE4(>ZU2KwQ3?obEabwPftLZ38EQO3gez^ z;*gQzxD_KeVi9qw;-xzE=!FL??vtmJ1eIx%&)X?!7?nC=MtPYsc`9UblBiHl32&vp z?Pw;7sN}E`M^eMyz-^kG+au2|xH1+$#l+6wNrypD=Ef!aK^}vQV9a|P--|{z~Z4pE{1~oVMe;z#e4o#C-SYym*hoi~IT^_r0aY zcg75Gg0|)M?@3-O&>cUNCqzwuu8y{p|zUl0}4bKsN)8^f@hUv;#+SD8X%4RSM!K_ih$S5_L9-=uph#=LJgOJirp?uj%e z@TLi2Jmds&ige*C0_sOMb0v=139v{YOgDn;(AUe3?DZnZoHm1cuKWBu-4CA=#QVdn zS$$C6YX0mn4hdH`kMW&4#&-^n@ne>M<{;i!yKmTD2wTq265pj+-*VxK*=EtMZ-ryK zhDSSH&b@Ca@668r>@fbDju$dvQ{61ack3A6Jv_z_9GIjfHVEha&#=im2DI1E8FhFw zOm+BMch#{-7TKoX+SxWb7y%m*A=aPy7$Wz6by;V@8`2l)njn-(sJA<}z7|0Ymc5Q& zZh8>xpaPj~Dre80E&sYbZ#*>X@8!9zyD#2cd-R$Ri zyufHV^tgWW%k^hIUcY{Y0v9V}mo!HyB8qPJ>yG`B0Hsb3}9R^1$FQfvgrnuSA}LYgsh7>YFM3UOaSHRWhNSW4BEGuu-y zO)34Rh^X}(DHuzOqH9RA&|w-K+HSHE1x=3-lXd@zcu^WG;LZh~%DzM}=)Uj{Wzuy= zrEO#PcGBf^cQ0REyM1A(N!M@HrOkP|l4bC;>vHXmv}uoZoig*W3vlYi~5IfC{Y2_)GLOs{^?Uv>DyPBX&vO9;-F5r?VCJ}|!7Qa=R4L9bi zR4$h#J;%Bcbv_tG z_`1}!J8M$(z7w=Rv`SV1C#JNM5a}wJJ=xb*dDGs$(I|`(I)UHw2cw`vFpDZzyCW>HLU=ls7NCS^bMq%dKpPJ%%G{E z6!QseL~7m$8hyQ2w`Jo)v`$Xxu$pm|x^&fV1dlFhR8vI_t#Jy4ZOCY&0+mp}M{wy| zVYSa*7`0Eq)DSiw4NHoeKY~TyGO9b%aU`2&f-#hxDg_*Aiikkc6$8~>{XpW)6JTw? z*rfm!w|qn}=}f$u&c(IX5lBN^wjaj4l4NLEwvf0rCB-fiTQh@AM$$TzYD0=6uD>aj z!uTZbRYeih27B9Q7;s`Y|I)W{)dPP+Tltv2V~vewZRW`@++#xyIv)mb-K>N+%StV; zX*qprksBfl8df`L6=H5k0(IODL^Cq18Au#blwf)HP1LRGLQHkfhNgm~-c5?N`nIxd zdzM(+yYy1`%fGI@^M3F3KYV}t$&JXjo3p<~;g3WJLn&7%NSNfxnZ(gYiG+ARByE1{ zDDs|I@Rr7t7p4`jdoN(o($j^lvFhM^*U==$E#?c}67i@ZG6-6j;-uXPHkQwC)AWpxyfd)cqIl-S!!mk@d#%&~5hygDPuTJ~An z4JwHW`5|*pD&ec=L>T3~{_%$Aov~REy({q&t$oXCKg`0A`GMNaS*^~Z<=C(xlYE1@ zF;-%LLC%54shZ~xNRG+r!)r0RLrS<9H>MKU7$%)$!U4=@bA^1qsO58%+Lm}W$KK8{Id7%3p!4P+nu~foq|{unYxBY!=#~2#Cu<|`V)w>ZDhPaUi+?wS$N|SNe^wqQGEakDz58FU z^**|eX1{9=n2$}PiD5>eQZj$+5+rDmmwMy;CzkpZ6MIl@4pD==hYR_5OFa$jO1ko3 z1KsNl`}cmp@?$;A^sLNp)gy7B&f4@6C65Z@xh+`p&JZl!rEr70ZM*ah1qkBQ;TP zQggCsIT`8T`Xm2<<)69f&jOH$UpV@|n81+`08>ESnlz zQZzs!!&PF}np(7+cwQ@>;mlfO0&=cZryQX$E~Q+{h?HnFG7^IX&maW|Nxj!-EMQJ4 zTqyCDdhSf%mTBlnMFe2*$^QZu%^Od}iCP;^{F{A}6v1r0_(Av5>%ChS*Z%x<-){5y zto%euy(~^c{r6t|0=UknudV(0>+Ywou6^>som+ohzi{QwEua8kGI|DIoD^8HJd0>;wzo;8#mIJrbPf^gt%irf=R+diyQGb8?%G#%wyYGFz_VfpkkNbre*WUZO`_&iSH{R~8 zUd!fogY&aGKH`3JfbX;vf zxRs;b7hPXN{(Ta2J>_EyUoi`$bh%`^O>e1;`d+MK>@{}n+zo-Ic8vZ4<4f%s{YA1* z^#w9^|-nRw|X` z%LOk8SI8ssS8CWo& zM%0(F{`{BS7hd`P_T@+co|+SJ2-3-py1h@!+pB=u{pJtd%U4yYw0rZb?$<9za+jjc zNE#cnph}9K3J>9Bx+JPFhnClILp94aO3!a~KYXrx<(2iPuJm5N*?r?%*a)Qh0yGeB zbXULbUVLip@9%Q+AAHev?a;_(JH8{WD({((Qe6ouV0VAK{Bv@zrGovJ?*j?Epxml&rRIpOSi)XDTiv2#~8{CgY9}5}SPv zoT*^MYH3hB+G)))KO2acvw^Wa6#zPg_xm{1*vyB);lkLVeKg?=koMhJCHQodC!9CX z-BZ$`SLfSlA!ml?oYTO-waD+d?rs zyf{2~f}?tYl|$PX`cauk_ltIq0Ti&HL0wg?2s?D=4s;gY4+Q0nM663>*nrtB~jK6B2 z$cQ);-yIpzx`-nr#W-NpjFe8rR+HuBqHHFHKGYz4s3yPQP@G6T%8?OT9_Ey&7*xQ0 zyXZklYeoeaY(#CTJAI_OWYep(Br&l!@g$Iul!;6v0(u}Hp&ayCj6|6(e>s^P-e*DE za|0kyN=lE0bD*w5zGAiQ3fC6Kv`z-5XWril7bek)Ge8?5zETDYb($g~A(tC9Lu)jl zHi4rI>Q+^o==Zm;k^HIZXuB6~_Ypz0n~9s#H%Co{kdkbiCd%~fDtVsCR-N}dzr=7x zm+fdLxpQl^`|L-g=UxBqneT63N)8>a59PnVeHk!#>2**GUwM*p)~9xSXZ88sn;(-v z(x*$%8&{-7D(e25??4ksfej*qQ9qr25>1=a>u*#sAKNW55C^l6iGa+P5-|w~r8KEd zUGLH>D%vBn4W9J-;4}lPTL|=#ku-AN5XzJ7lSofR`+yaq=^r)vGcqao%KFW}_g;HG zi9XOXXOQ(uio$cnXn@7pC@|mm{9>G&dJZe&n?nAuWjm~CgdXwb$WcRBUxM+xX;3#= zb{dcjKEASk^U0X7xBlhL?zc|^b0Zz|g%7EIs-hd*jZC4W<=I^{{TCfZ)~~-0im=O9 zyEkte6;+209l*?Qfgj}{wEQr5!VVV-`AS}&QLI@r@|C>tAU;gQbh$CnRI9S0+x`4L zI&m73@?jcX!ob1h7(Yt~4utdB@9)0+`ufeAy)Q2Hp1gVI)~9RNp04NC-nh|w_ZgAe zuJ^`wJ0*~@Yd)6_+1<21#-fzIB_2f1HNhoySLbfPV} zC{}{nk;Y2E-`|^4n&oE+guHCKI7FiW;{wLoD3`S-Vk8lEIxGwNV z!43EI=(Lcj`vE)bcveU~7vrO`gGa4L3vQ=XH1=uT8RO7JY=Bxk;shPVuLo!H916jy zw&xzcWuLXYMOFY!03Kx&CYwg8jyG?+i8_J}2c1R(e2DVhFaN3rMorMQ7Ne>#*yw&b z#m<Vz&wjM_^6J{^A9`=S zgSM%cDAdH-=c~OhSG&)?+xBd@QB}h0DM9!1w|f^p1i|>5@46Si=)Q3C&g%PXzx%5D z%xdHn9iFmV3|3TPBOzWuSEb+(-}D+CQ1g_3(_tb}t>^D|oI<{=hw0VC8{Pq2Fgav3 z779F)Z+z3D;xZ<8Df4k0!eNNrE1s)@yPJ+ff^t{kwfbIW8rw!k)2Aqz#k7!gR7z@z zhs_%m)1?pK2-3=*_(nSLiF|DZp6(~MDezLhDMgvl@(BU@+mF|tze%Qy?{8lND z2C6#Y2WUv)Z{)wLiDim@v?kQCu~VY-Q0!j%?9SIW)-V4xA+=;{SqC{*2`z74w*>ab ze54%C$Ba-h#X#B+3A{dI>|J|x;22fC^Zg%UyjjvyM;`$RG ztF4x#V4S_OCkFMeIJu{EoJ_4cREMg5JQLh_F3m!wEUxDj)K3583v%byb9ZiCxO3}c zZo;|tboY&Kd+$DzI7X$fS1#G*gN~b@fL=8=FsKu;B1A7O&*R-_TqGt&=B?(hJ3&Yl zlUyb~bjngV)X;mcJR?Qvp@-i4?~Ch~|4M!2CpJ3d-j|=Jv=(n^J?U?Cww@#fEkfJo zj6ei_hUsVH#-9zDf3lnbg`jP_b6z3eyY{=@tM8J0s@RK6 zGANy(ektZ7cKt8ii|Ex>iV}Y4d=2-YOk!L z{ZNjaII?u_$GW>Rku!6ZtwzUfI~~Z0M;9T55ltqCFt%2dJC!aBmEUo!=gO7HHU~F6 z_bqnV2%LaxA#1fAD`X>fvsP`+j*YRo-6KK6YqMsJqM^xaltII{+u`6YsoscVx$`x+ zPAsodZrw~<Hv0N#aE3VgMGvcl^;2l2C z{7Taf!V0x~ggI?Sx3lXmE$W#WdKJvf7&W7^^`B;Dj-NhpXl7<>CHA!fjn_1$rt&mr zd6WK5n^XCj8HD~wGjG;&U~DTbmc+p7x#{U53?p_;Rrz+#%x#(LxEQCf5SpxbuAcK| zf6W?UJy)x7{Rgi-GLrI+2ELE}lzGh>D-_4;Inl9FowO7qBlNdywVM0rXJKmEWY8$< z>-+fMvfZ-g8MzY$w&&uv!nD#AT##l#j<0x5XjA2gi{}6M+@ zmeHteg*SD}ty*Zhr9p=ZuWd-*V_tN{mz1{K!bwH7{IRMo<R4EH7BWV@s|;87&QH0DZJ; z80F9{xaFWWT3jhiX*BO5od!%8jB+$p(W>=etn^_>stoL)(snV!6My=3o2ifU_FO$T zO(sxQ+skUTT3B3xIc7yujIv?5i&hYN2d&ULeF9=Zr?3-irI>7S*hV5wsoqelH>u-( z^@G&@?4IHh3x8$NAk=cJ!tqxA@1BN@N)<;~1-XxAXz5cvfzvDZhcfj#x)9WrJ z>h>9DOT&8nJFV*eMx*0fA#;|~8_lYX4j~{su2o89A1bTsE-W8^^x>LLiedR* zjvtB&IYox$hmRbtX>_?#@Xwzw__cE@#UfI=t#1J?Yyx6MvZaE1{(Ql$9rwMK4cDRy z5rCd)7thI6Vj*Py^0`jIFM~-5IOhsl#^H@!2#YH#vUWqQ9WMCZQs3$w$!;dXa?^9! zKCghr+YT#^7g&w|Hko0&L1?)RV0`XAHtw<|!&P90uNGKwrC2P&@yjh(W}~>$DHQyg zU$)w92RFF$=clHNMH)pBDl2=q1r=)LJ!7U@^AYJ1T{ejYi=N#yM#Ufb?XA&_dIh(L zXyqN4VOg$>f@>mt8m_Xw2*cx3Q}Anhp&M8Mg|N2QFN8%C`YNsf;yVAB<&Dg8plvsu zffLJ(UA3?rv>iJv;BHWya9C*gHFs)sy4=D+SH=tFt^0}-mEu%&dV*TnH7oRH3+_~P znp#*jyX-J`K3w268Z{Wa~P%!q&Ah*oM@}lXsZC*WNj}WrjOtt*P8Il9&Q4)Lb0}& zfe-^F=yQNYZUO2ZLQjPF9#bfe8@$A@1H*P4HV*;diqJ{mH)`RE0$Y=&L||H)5VUAw zlzXi>;g%PCHdo`n#ZhwF|QNQLjX|uc)>@!Y)}F`b4%6SQblO&pbb<)75w<8 z$tWp49U*2eW73$MFc&8b_URLterUqwv&P(JErfXs%OT_~49nzz0?_!(YVHpNR|<fTmn+O@E}z(D!Am93zL&#Jlf_WXHQyyEpMqVDu`6};n=Q0pz?l3`*%4u?v+E|asyEE6$BL6A5uc0 zR5hzfct`t>eEYDy-XFy8*x={y&Ft*j;8*X#6p9F*Lrl+#a#o4>@RG7Kp~q_>Nsx zkg0;EH%#qe+XwTOKX0@;;CR9e3)>l_vNJs2 zuuvZ21!dSD?YTmv)065m&;zpgUi=##l#s#EoR#^b*cW9%(WH_xxwl2-ky=n}_RBVN znkdTAJ`Fpla+1h6L6{AGBAoCFtPBvt9^I(XZ`0;Kgq+&ppK%Iq(QNXE`9jA`5jBeD z0fU`&Oo+Eqcw$77nJNP?abtnuRUV)A{q!?}y5})yKW%J$ry4l+Ma~ zb`&Mi(YLo2#!5=(TLCQ7t|`!&4N*0!N7XuU!fn<%LlN#m8sRPo!fnO~cS#a%r)ah$ z;Vz{TF2b>Fwrk}by!mWx3f0;0ziE_zp-Nb*PJ|EDc1?s2K3F`rEUCR^w#^0cWmYTi z+Oc(6oX73C!Y)+jo-4QyvGeB}dlB&E+SIaHE|+Jg%X799g8y}GZ&)k`o*x$Q+*;d< zo3S+;6rjV9cUZEECG7=^UI6a+R=ff-_Cu^VJ5`;oEt~C94I8z+r9yd!89rDoPJrM{ zO9o&n(hfd5HH!5gOw?al;rB@8T3$AraxE{$*772(<&|k*=Mzz^X<_L->3E@G1;$MD zXyQ%4V_wsqvmrJvywyrfBN+u8YbA?KxE0|!i!3se(#P~d(PO+T-bX9}J64F5i5_GC zbfp(rMkAXH&&n}PhG$JfrqRM;`4k&wR3lj|s;c>!l&Wg6X}F%>!Z;z5kaz&A=|!Tq z_!s%7IP%EJ0q#;L7?p)IRQVXqVpL=rhka|lCFVpvNZbD+81W~hZCZwBH)`aqAQLAv zg}+59^cgF)@p>#+wO5j@#}civjf{(u(QKP&hSAYRO|1u%8A}1k&Kb?OC%#H;;EEgOyhxo zg^*Pmo(WA`fkkJ!!xKnb!9$>bz z+r!&_t=nGPTSPaZj1G8(etp1UtzQ@PKGs81Ea@3I1_6VtB^g4Yp5t#tYrbD>DvO|L zOv%h4c5sjdXF{)?nUj#7Q?Vs44Jfp4V1xuPlJmR@yzb*vnoO3$tE&lf^z0mI$r|)d z6ZuiJB%`xl7<#P|UMQ1EL3jq0ZDRuJ(6{I3DUpfL4+~J+Uc1fw5-vB&1sUg=f;RNz zE0*s=t_Uq6c0IRXH(AM=3n?AgXsn4S-x0xOxq%Inh0MVz{nqnZCEG1w?o>VFiqGbl z&)f#vXwsErW=KAy5=TpE$p;0z-zTYxp5BJi<7$$JxSg;0*>fWl9lakW-Z( z2plgAOk~9f2Ew{xMt7ss6pDkgpXeKCVN)46At5kPAhPMrCi2{7ZZ2D`$W_bEHXN&E zrKhWn?IdcJ+Lg>ilZo^@+s%ZSR!~M>G>vNiEK3{6&w~d#SOP7}aneXkvMW?(Y2iFJ zmxm`Mk8D~N9^>vaSJ!X;(HN9|Mg07t1mhi9q4NR&Y!N3EKX^YNUJNKUXh1w}9; zg44oVFdIb~Pho#o-yX*eKgzm_g2NfMOk558QMEL<9Frw>wr#o15>8G$c03RxzLnXe zT+H^JthZp#FQBV+iH9wSu|^}xQ&v&|BQZtfWR#Piq<5VwYjgzj8K)(3H-m=G<@E53Yex#>Li9i^3}jo= zrZF~PA>(XfiYi2PRc_ckx&jfL=hZ&lY*T{3e6v<^^~;Rv_x4_DC);Xv`t1H z0d=8FO7^9_xqH5;uAK&}+RHB$kv`{XWEq^}1r6AWF4C5e)$s;3a#j;sZ0{#P} zg8pd$@q>M`_ELpR!8J9@Uo35Ln(V4|n-E<&+0Z^e8%7eV*d%w3{vs}D$}E4Hpb1Q? zw19pGiFdy(q1QZ=ZyOzzvZly{$nRG0z#3+pICSY(9BXu0^#00WJMWDgw(I9Fhwc7f zEr+EfcK;tFhtd7re@J6PNMl9|arF<$?EhoQY|sBp$t*jC=`;Ymb9*t740M@}ujEx1YCvfcc2*>)RFr^x~y-6IiDw10L*T|pRUf0_uE$cDxl_qZ`NZAKAL zku>6UaSztAuSv!}uJI9Y9`zxGU0(cD*B$EaAqWQKorsp3_(k5dPmszokzXO1h%J#e zLuz@m0`V(fF!t7rT|4(ABe?46-E;(lx6k8RW*N9Wn)*Z8d-k>N3-9(WU+BGgdHvbnt^Mw+?{8nZ`{Z}si&yX5dan1$bxI5f zalW4UdhPkos6GW?QNq>r37?`y`--WYM@B?MA~qM4xj>KzsVEZ5Kyc<-N&^b#6^p1i z=lKSA6g|V1!Bv#569ab(j#=%Lz>Ru^sWWVOI%56taBV4Z8`bcNrZE;pTS?sC)|Srw zp7!3e-*i8}JaF1KKAHL%EOjnPxZCiIQnR1uyl(3=ukrmMIg5jW*2(+w8a{Zow>Uu< zsfz&uj35~Q$|L~ksgBY=M#$g5C&g?H`{9-15P3*AhqjtcyifpPS((fHLf&U^!V>X; zNXk8dWkrR1&$2m)72smOiC*b4!lpWohq6}dC88#&J3=kF>7+z9;|iR3M{#vWN-#4e zWOj@_#QKU%q*{Cmd`F4^Ez@2s#5TG~>A|Zd8Ie@OgNdL75~H1r_}rSL#$$9h)iJ~a zb&F{jH}Vf3I+fQJs~!zVgiEEU+uoT3d(c98gOfogzyWL@t!Bmcl}K8@@!tB)Cn*62 zM&$kS?lV_=uYATM%ujOGu=k9g!8M2MjsUa(ZGw4CReP zP?nfNftN>5j>nm2KE%?c@$c(Tp_`@7%#q8!y3fA5{>?X}%j~`TlG-T+=U)5frM1;J z*S~wa_x$_$bR5muuH`t(35h1+N2$?#^{_zlFj|O(-3PwJqcuxy!Nk1|`m6-F+7b(? zqc+P(=KBESfovcoPa35(nhHT$JuP}Rjv2`4dHggV1^5~Q`x$;?$=#otDy#y>b{Oa!rpq7 zzw5p5;+=2b=wAH%&ewmTxMphnc;4pOch;Z!2BLj_`-ZU}#E^qluy6o^F&o|gd&P(X zAsO9^pLbupLMa943l;bS{~~y(*M6busop=gE#GPx=O~8B3h{%IvHro6)Wh1fr+IuW zz5Y2KyJO$D!DBBQD=P+9;~FJHBs07s(~^FT+ol1DN0oH4QKap9u3XQ3fBO<;Nx;ew zdz*ijB!mDyjA|tLSsuK9-?%|T05CY{tAFUd{icGUxNBr~NP9g_zp(;-mn*KuV=H>_R^nDk2Ahil@t1 zeV+g`y08Y{*yWd^Bdwn$yP+n^r8(zlH*8cq6 z`WMfBfBRbZ%Ej)Be=*8sLoTk~jsI51SSjoq|Bv(adZk#em+SR%pyCMfN9P0A!TW|ON_D3RVrMg;7Ng~FLdfgZ|wi^44dd|oj4;g!n^9F1I z@7^{FM$wourj2vPit$gzFO2^%er5cpF=70(F=Et=2aN{|QztjuMNCXCSUyC{u1wYI z_4;_dzO`Q8SI^}i+FP%mH|q65yr|R|Tdi`9zzVc7MsMr7FSN}Qj&m*;Z{lR+u z0dra>L$%+*gm^D_Wde(I*dkGdB#(&YVfx9Tr>)Pvf^~CdP7hm%2k_r?Y#$7g<;rZw zcAAxjj46l$C7fe&(`F8gFF|g6Du?Q*oSD;fJ2?|>G3U%2mu_-quHmyLb0KdqJfW&K zXXbb=#GIL%4LvJo=EwyH3dC7h^o_0HP@FS!ha8?NCTEhv2-L@92RSnb=?-#cE^^_A zuY;{tEgVxHwy6)>)rTGG!%p>KSI*3xVasaKZuMc02EwTJRMnm|P^ua%RSlS`22E81 zr@Bjf(m<(du#9Q2jA^ipX|RlGu#9Q2jA^ipX|RlGu#9Q2jA^iJ(_q=A!Ln@(i2zO> zP}~U5;vevR$(cFw4S*kb9|wNGaRmNGG}q4uKz}V=e-gzZ+-6GqIo^1G@0}Bz{1fe>`To$E}ySvSrQU6!~Bd|gQ zEo7~L{{@)r7M2DWlpsf305IbN2jKc0{O%#XDCv7xT@=~D<93sIz%WT;) z=^gGk&c8DYp2!z~ijR3NPG8$1#nU|X7ex-JdGiz9;xv*(uS1$&eh0Y>0BbT(vez}XKI z4@is-uGcmWE%c6hOU$3N5Q{<#}*q%qK_FDV-_S{HZiU{iAUUh38w}X zv51T&;UDWg!Jo7|rm%j%O(kL{O4>;%j50lny<-7YDuU%(^eMr55CSzsyX38EnDiqY zGcp^yY$Q_n&>D#{(Ib42Rvg0VQ+Nu_&*0|)A~$5CE$b}OK5Hu#eo5grkjt`$Eohzj zi&}q?>LF+5Fg9S$%sncQ4?7trN?O;rB!ul0n=d0WU|8S{M;KcUY}c_}VsBoOs6wLL z*j-HDo993&FZfmyBawuVa1gg5z&vfQu=rtx`W?4n5z`gFAz%mJ9MK$d`ovLWI9Ahh zon;&*(Dr`E;R~$eJAC_T`>ah&v(=<#3t@|Q(3zd3A8qD0AcogGwSYmPZWtM<0e@i_OH$5J_inm<%zl zK|D>H^dLqblMqcQ{ynngC3%GJwIMF!3>S?u-nN+A$$YE7;0xJy#EukWWVjp7;)?WK z4A}^~SBwu#T7DDX9iw-=ro*i4sz>=tH3gG=q!|PX;P`6#7P7_;NX3rAmTWHPo|L;M z7dB(hLJs7f8)7c$*5FKm<5I@`ge%ZNlG^qsZQV z&5OoJWdSn#f;F~dCysq?4mYeQ#H}oqOc76q@`(lr$ef#_jm>4ONjrtdX8>Z}5W}>1 zmrZ+~;pENQq3mkTM&f}9p)-Z`IQ@j2SBM^{VQq6P(c*Y5WkQ6Y|cJQQ!IbCth1*T zPQ%VN7)pbjeg)@IP)g|}X~ngyv$Q_=GcFG}g!tm&AR~!^+WoS_P?VxHg7o2l`kC}x zE~-Vv)-0Mv-4Iy?%GSs5m_=&^J|cbm;5T^7$&<^Za=?M4HpB+bd8>0n~WD_O8>kg83;c)bmqA`=I5+1>i3QxujugOlII3jKD@<5JQ2dj9^w)e7Y@aMn*1=&*-ps2Q9Gapq}V_bY)Z)$rPZd84Pln~eoJ~Vf&T`x z9exbp$`HwGAeyv-4R|~e>2}5LLbH0L8C#5vWx@-L#xaO9 zw4__ipJxhM@LDPf2(XR2oi@$$2}a(QLG&V0u1UJ&iULx-@QmzS2XxAdbUH3uI>8zq zio!0Q=Yz%q0~^48<;dtWu4v**hza4YVY!p>(<41cRp^s0m=!;iq8;}oM++wAlh&(5Y};5Xf>$^JjVH4`k^0eF%&HY z{@@I90>hi*7sTO^TSt+;xL`+1h@a{qD!WIaZ`jE<=8Y z5uVXH6NPif9Y&n&gvwUNXU1V1Aae42dmi=~z6@Qq#D6WZ**0GkK3nw8Xp5dlPlj(g z$j3VJO#3hua4~|j;Zs7vJkP=dAj!h%4i(BLcs+dhH?*OkSg>gkh+V+ zr-LjAeQ!B&R)=F zPA8J}_=D%36iQQm`WBCxxAqCoOOzcIB0{2+IGQY;l_OC$-_85iaPoYT@avjGM zrb)n#B$f9m?z1sXoj32L>dNT2nJ7QWLO7@d2ZbJARp)tL81J7uib^R-%>lcA(Xt(` zj0f_TYWDqjg5(Q2V+O>Em5t&{S-#NLaxAGUn)*NlB*_DUxI|i%q#l}E0?){@oB9^nDXx!$tPTp{<#$$`Stz9XMGD3)s}iZCDn zq#MvJVBTM0DPD4!&vy(Mx7t&KkR$aH@ILYR^rXIcqH#lhsN*DqMu|sG9XlGMkxA(U z09Jkvch8o6)DhFakUW=u5tQe8fvix$>Xd{&3D?N(p;$yKkQ7Y#cTKQSg zMy_~3qEXQSwU?vGZN%|{Y*sP)6LKe$)-J3lg(6WeVd09sAlsNM)K5i0+HCN;@nS_g zLvnJEigB&AYR(hdHNo}t9wbvhAFBN+gr{{ZXQdJ4uII!VJ%J^Z1bK}QOV+Aw2b_7w zd29x!PTvdq>?2|VGy?Vo0g^I68kioCK4QF?5X#(6OAx|g$Fqo^J!(CQf&kbUqWu(E zvggxDT^gI(o(S_G7mQ5EG8kwg^~)R4PHU(TBmi*?^F9{0Q!(JWCDEtXSkCZvY-wkvZVN7n9aylI2n({iYcF z;3gLoC!(n!rSW(Z@b`uL*TQ^+PedU+tM`D8R3pPClp6^iuZx!lVC1JT|K_)=yB0R9r1zUCrX7NfsB=(c3!{JK-74T0LXQ zrs)Z=3M6a02v7j3ds}23ba2=Q`)Eh_E?+G>!Vx-H{v6rslYYUGKowbh^vte&X;vkG zd?7QD$gIY*T*fw45|cH`jc6FF)7YZXJ=YDv*4qP{S0y9ELqYQ>Jj(4u@nED`{*aV=}l7VlB88cs=Dty#MLz2wk9p zjItn=R_Iu)tkNdX;upCvHpq>@f<0fSGc1CK)Gn@bySPz_AZw4)GLA_w7ZxL44k0qK z%_bJXLhwXrGv19%m?ec4HrKKt3M$z1ue4gGMg&@XEn?0+X@+DV!P@pFqYfgG@CdLI2E$&9`2B2m zdL2SDcpA0|&0(|qmjg1YC^uqHn@XxFueQlB+@g6fZxf8P%B|4n_o;Y5WaM|ljpjcm zm{9llvwMOKDS+JsSnIYzLYKg9f6yaz#nuV89Fw(QzEeVq*m=vU-Q!!Io zyqAtjMdO4B&E``hL6VwSNeM6D@5V%muVs*HM2zuG+k&y}h;y&O>g45vV{Z|#48z3Wt7c+wA zgxnw<5%zs8%u`DWdnJN6 z=VfCN07gF$hSysYBRwgtw^nS2QQlq zy5;gQ7mZiT`Iq?=74(+D8NAzC^@QtRXBqxcmdd-a78yg%s3x?rgYeZV6X#at@#6e= zbji(K3H}iosbHq`3l71LJr|W6q_Q=+(<0-(eE}4wFdq5rUth^(iu*0^RBgvfu#1 zxlC>#{9*aALH)5oPKptDP?DOJJLb?#*m&`NmpPHZE`;=1(E}#*y$cz0VXe?6*riy6 z-r|#Cfj%|g&CaJL*6CE>%DxYs*yY~#aV46~Ct?-8#&$10(c68%QydTq#BO%D(6frz zW+Q?Xf6Nq5HX96be^2S)EW2?RjQil4xQA)=z~RAXhUf=;wL+vIL78Qg9)2>-0B#yU zqv3BVxptX>%P>Ap3?A-|XciQXw~yQ~!hS2<-7tL0UfvJ=1)~>sLNbEuiaYThe@O7! zsVG|Sbm8;&X)5PG<5~6^8oxg*A>X;8OQ78z0mfZ`k9!n zN?<{ah3ww*wct{U40v+T^8F`#SzcTm^g6fdr^4z-m!|Ai!?bsgD*?;BoG(?D2<=34 zBE8qyt*|zgbK{hHQ$Zs%s=dU!un)WT?j;Y`~UlMpN0sHe}WfsFG_tSmVC5LC)Ou)$8*; zTdSt+TVOf$W@mQQyqYDJlj^3pC0c{+O{>}7{@mI?MSRZ;v7qZa@fcZp&$C=as&L%w z%^BMXQ*Q0;k!@Dgj;*#NcY9!^dkbpt`t*HMJwc)xszf?8+9#wsoOU4C)}Z$&ZlNWy z>jSesP3zG3ccf~WN6nTh&`zSmNi_>T)|K~+{jK*fX6c?wnUgLB_m~4cc*GUTx^pmF z6qLuMcX0D4Ehf1b`C0{}Qgx5Koa0_c!Cc3zI zczAGr4sL_aM3C#OAY|leRK-`GWmr}S;M!RZUzl%(OV*g8 zGB7%36&XUk#`XnARDMKZP?}8gOc<#4t+ITcN)wH7i$W%c$prE?C{UcL=MVeCTE5nU zlCQ2x_AX)bm3`wX``p)meTgG0)4K9*m$MRUP4={w>DD45R1qLAV2sIT6FJ{{?W)@@ zo0fbjc31kTRUD&S8et>%7eS+-zR^oA`CMGY3lZNTx-KjJ(HaW!N~gapQ{KW{y)Sl?%8w_48_vt`|$*o9UP4cN&Sr%Ly~LS&Tg7ZqyQU9PS0e#Wlr zeSqKm_V<7DcOIp$`YXH!B}8@AK&`8QdPxIt(YU5=D9uP_PV_)(TF&+rd<8mODN`xY z57TwEIPxk-m10C)G2(kD2G}xtY|#=mMPWBVgi2Nc{zxrlTLnc;-?tc(hXa!6XbfAEkbq#5^fe##dT5a@$5j5JYuH@&?nic`7u56 z?C)$9?XY`Hxa0bAJ5tk3#dqm)EA{SupNtbJ>>r}*0<4DaVUb#qrN*i)>wBPMq=Rnn z$b8!E%RL^odNAT5N>csf3hOGLW@-Gn8##rx+v^-T1i)%&BlvyeqDSy!vc)WweW`Mp zoWcr>9bg@JW+!y%OBDPC!RrNxs~;l=d3{YVx`1*ebTLho6uzRdEDCDby4dwW6_#WT zr>kamEGMpf?g|3W7}Hf-O$XwemD1L@bC|oCY+b^lby19}ZuMABf*9UCvFwsNZGR%%~)%ceI~2r+1VMv&%!3(Y|L}UNwZmYDelCh!76x5 z0&y?&Bi`jHRdctYg12Ka!E&5UNI|Y-U{+Zg3!I&w(~v|sWzRy&KZ72-VVn?9b?TCS zKQDIkoQ89zF&S<5A#XOZWjQITj{(?d&-o}mKPMnN z^T3gN9y^^*iUO1R4yZt~x@dsgGSO^`;KK)D-nb<0s%iI}BQe5KV&XbV>=N!LQ=OQHER zg9aK@bt14`=%gJIp0RZSF^rwq+Iqm-H;5Stv`F$;;JUrmY+^Q+6DJ9^1szYw3Cj5i zlIUx5fzHGk3eed)Y_%ek^m$vfE-w*nhusK?zKA)GV?^8S%LvW-oxbP{IilTOCqnVG z(+OK)8`17y7@<~c(B_@)4AEZLj!-fa3GebDqL+ZVlk|s|aW{n5FhZi$pI(Yi2hl;d z7ol)E9r9kUkLchsjL?t|#2}n?5gms82n{-&csd(gB0B8$BP0er9(TkP6=N|uL&4Vu z9m~5+WqM=G%Tr><=1}fde>&**2mMm++AGL?+3OBOf7&hO?#0u~cCQ*Pg6;s6>(#6=&(xG> z?-r@4BJmC~g4<;k4;HD}Y#_;fSz$!AAw+Pkp$YG659V z*6MVcTUe@NL>QBs&EW{#ThKq*7xsHLUpsL zw~g8p0a;+>KCGw=*1|hoF(Yin$WR?v9_)&Vf_q5E!S`&qy?d2TXf-yT!~m; zy@e9GmHcoVfP`kv=F@G-6zU*{?xgpEAj+jb#1gm$m#%sHxSXo2+4R4GRkv2Ba{i9b zpFa7H=hC$=79xL!qk_<<7Ngx!kE&(<>ytz7R}4Oj+=oJVIVDD=n9Ak%Dm`U}=To~+ z^v{j&j2ruy39}GzD>tsc$&eM_*b4}@rDI?dIA37S6-GYm+Y(leS+m`9vuD-_9w9<1 zhnzr0wv959sbx2$5fW(q8`O$%Li7P_P?bh%jQQn1ivUZG34!eXSyVsd56 zd|)glByu;{v6wWQ%KfbkGKjYRQeD5Rz(}ju1v3kuF+%yUJj7rEwFNm2JgJ~|q=-zvzlh0WgvE}HGxQaZzxB+VxFXsMF{ zzGw#;UNk~AAr)KACf>$W>7vsWTBgRNa*iSofGWOhHsv;$R!@+ijM88!jNx;^wqdji zq4pqzavwqsgixA35kXTQA~{XBA<|Gi4kzxYhU^m?no;D4oTD@A(pRd2w|l$0b*&co z;n+@!k-s*dFaXG4nS{zj$|RH}GA76E3C)=^0~5e!llT7zA%tMY6MGcvuUv;qkI=;^0PC-nHlF3>h}{W9%9TV{_nUo!H^Vk zu&`Z~1IGk{ixJsujLJ;X>2@!FN0U#_*lfm=k=!PFww6@Em;By9Ssm;_C4j*7q-qTX zZ_A{gj(e@{gdP_m6o!93AYl1!x+DdBzWOH@7e8nimFrl%;j2|D=kI^|n(@^tXwBM5 VIOR$3wShj`{{ea$Y^IPh001gwvo3%Nt)2e#+t7ADnP+jdxPA-5ltt$x2W)}CmMH>_4^Kgg-M zp4IQ$ZYRhs$Ug*Ki&x(~PdZ9#d<>P**i=Ro&6d z&6^3tR<+u=uCA(f%{VnS5UDNR!xR+R8v5@BkkJ^gaH>@`?L-H#2RaPBUm@P?0Cl%C z%>o>ZzM&fGk!~ylriO_`Ht6R%=j56JeeSBOn(@4$db*}P(A8DVJkIVFT#|JsK4(Fx4YnGuD>zkE%MQYvyf)4PdD2`VFjHQ6K1< zv03GR05YBqd^cwWHXLmYNMhVVhSy;lo6uF$*2Fwb6NL^S9q8+vWqtk&tw;n9bOb)81AjFeHQ1OpVqI-^b))*|-6}YpbMaq_RfT+i-EPRg?)VUPaYwR?$KT2?ASUJSPD%dDE&^qKUQ`=3iBJG-F@CgD|&| zU(k{kKs1se@Y&REOPKADy#*yXz*Pq5ZfGX1bB2bH?=qw;Cy=_Ond5p>s^IHsU8|Le zfq~uz4jvP+motcciVdF@{%ToA_V!4fef_k8K*w-3*{Z;t@0vhI3uaV1HV_?K*HFIu zDDZb}To}5<6I>KK`YZvOt8jCno|v#cRuFYFk~IxiT5a_?bsMekI#Li;{(Tbx9GGNH zwlu?`!8^J;RCQ?JG+2MAW*RLJtn|P+Fud($jsq6-beKkk3m6vN)y(!R7(fG7Qs}%2 zda}_#YBYg@cVSk>F$rd~nq56>p!;K)!__@qGpCK4qk!MN6!zUqL0ek2TR9{;%#fj* zphaa9bz9%hs#~KvH>>W3TGOiY`lK#Nd54?Bo=(Dp9?dGS&<843wVqDAYD=9C$i_H2 zOkrNHBFkJoQ|mQrWkkc2Siph@7MMun^aGZASOAY*14(oXTBN zga+1_ss*kNS#;*;yl^yLmR6hB`G}q#k2puNRX0JvyOnWte6@l8S?12P+I*#qeQNU+ z)a@BFUQ9M-QKoBmrS;``Eb&(2B8#v8+nV84=yw{pH|pL5jy z3YOXEeyw}tt*UkP$Ta3xx+urYOs{uns897%Blb#J?3GRcMPSk8Ya+U1;9hb+bXzl8 zhI)V!3T<57;2jLC3D88N*>rRR{X`qNW$f!Fnk@@`qDB?h(vA-EF}ivU+00-`GxzmX z{L8};`ntglKi~mCJ34m@5JT=oSHaS9B&#x#;5mwlEv)E}@vLd48^bmL+VZGo-1eE8 z*_y7zM5)ByWJhw39dvQ-wt+2m5;!2SF{umkjvG?l7?98?b81h@RcI}YX^?)JPPro0 zPQkR$gj40L+;s*^u@;A%mn-M^kQ>DO0{jpqoRDn{X zZjE(pDGhiXqMz@Lu3C2fik3JR%t zXm-g2EK3kgqAYP!9*UFvK+M23Wx~NoX5Tnn1_KE@G~@O)6dMhf?`9trZiA6>v?J!j zCeZ*HMUR4r$om}VK6M&HPw^0>Ba#d57Z`ktIE5Pl>c>LrHerySOd7GwXibeAchQT9 zULF0Ax=k6RG}A^bOd8X8xPW)_A}k;1$JB3z{8^B;SkBOO#aM;tDbMc|Nw@*#2e+eI z6^xJBTgLs4K5oWBsWB3Yjovcu7sOulK?E+)C;0?W1Sa)qQxaS4fj&TOj&`xVsHdmT zQqMW;d8*Hwl1OVk{Rn$bik?B#bD)>0=Mf-hOoPzJ;;scWd5-K+l5E}OOD4Z>@X3>E zXa`)}`1JS50o_PYbDsh=g9=H@VI@|dl(bCfiP<}sVbT?t%n0`~lriZNCUr^tT*AX7 z>06GM^MvdjEK6Pb%W-stdx-19;_59Y2q7&(a1_!Ti4=pgNg zg5|76m}slG4V}~vsVuPqa*rMCU%qSuu7BLWWs#w=sq+IzO~%awC(9tq!RV3(H7+v z$81Zh9&`EG;Hy^$i8`;xq<2=HKzfji&RQfFx4E^zzfIvVM=sZfI{PGL;9PIy!ik z0K|k)>8iOwicGw?o#KU2ChYoU+d#=ceRP>=g=4fP#VzyZhRy&5&L;`VnhAFCCQWl;z4 zKSgKoD4(u(N9xUf`{e3=#S}IW4^KAks2kdfW)cDz zfZfJe(<&`06>LohNt#pwCbQZ%YrF^|W&mDWAwW3K+Ole@JI1MgOej@JeXE+$zD3PY z^=dH*=&Wj6tRq#;2yua}A~Gwg0b$h$6vKtvMc~vQ(W#Q1!6E8kIUqz?BlS0YgX|xj zIc~vxtK@ZJByIIZs(c^!^V-f@vfP}6QEvb;)f%U+i6=LiSga!!Xz(c-dI#-dKr#9b z9#?8s{|54Mf{wGOp@&C}TJ^55W?Fsr206XZ_NXQi(%i?I)t)p7JlgE85*oA)tq?J4 zn(6D62=&|2y3j=28DLeVEqHa6cn3xj!~XRq!n#SYaNC89A;#YU3usQFpxz9sq!116 zj+wX?84!Dm&SAmw`ue77Xg3TJ6D`8*kO!zEzNc7=6o;wa;?oudRV+pRZ6gj*i;UKW zUzKZ7Kh_e`Xlh3~Ag(fFTGtvx_#-_Q;XVbK$iaF*;XPkRl_J#%AdCW@CWgvk-nc)| zHYg}dzI{}O>p0*C=a(De*usO53ov^*Iz}>)D%BM_nnq{;7NU7mJJsbrgyu0}Hip=q z8ZmKw3Nk-HfAh{P?>a}rA)W71le!Q)UPnRS`eY3;FzMhRSjElnbW|6uz(=d%_!9j% zU<~H zvmnoA*+iNrQ7}(eQ9348dAPO;?Bo>3?PpChZgA{yw zaZc>;-LN)BQOGuG-HFcC4g#CFw2&-KqOXdFdbO#WbfVGJ&;S@+X`6Kmq~R9Xbp(57 z9u4{f0e2k^Y{=#r+9pKzRc2_%`qYZ7O(ZB5stX-{VRv^8|MAxN*&OKBF&(KqFnD7+ za0H-XH8z)4l=0Bwbim|`W4&A9vR#SC?V?#(wJ9VqPJZ(Qts)h^5`m`9He!@i;q=cuXG zm1e%xH&UzoAz8J7A>0s6+w%FbI8K6UOrAUeyX->>B?ZfJ1qIQ#vvMqLA|}@Oc_AwO zDnEDVgNI^P;V2AJ3E)Hnck^_(Gkr60>TrU)-mZkvv|VylSB2BvQy z?2T!3BDbd~gg8r)3osu0#>p}dSyy2{6)}ICPRD4(+9_~!WkbfoaP)&^9%+W~S)2df zL8k;1n<7YVrHKlT0l_^_OSPykJU~}NM7C=<+ARuc z)M<~q4U5zb;r&4B#VQ?)X*)J%5Nr|2(Bgz7mx4YImJ^_$Bas0b)ZxS|Nx@)b`&j^J zxD|}^YR%c387HtFVCfoo^y6W=j>?QfLvy*n42E2lJE&fFJj8ZP*LXsN1<4)d^^8^A zGkKG{+^m?hE3_8uXy$CiSD?+QCY@bx;aa#gZ^}yP%Pt@VndL!Ze?)Idu3=D?AR3 z!1>WDFkqlxBjVDL6lEseMZ!?}C5C#d)07UgMihfc#2t!Q&MZ?A<2ls1tve{%JN$QS47N#%oLh9xw1x?Nw5c$`-QLh{Yec_nGM`i_>4utg z32P)o^$r?_71HGAa7>$G@sx^Di43k;HfA?7G;t0+$bRe?8nrD+6lft?r&gG6#aF)_ zlI!wjYW3TKT#n(@FE9zHZ>E;NE=8pWbo^1FR(SYf9O_48bZN~m)5M6g*Yrf$mS*gu zxnUTJ<+YO-S3A+CP+P3YHS_}}=&uI(ULad|D(^4HTFW)W*-A~WE;jjF!!snSZ~zB& z$r;WXd~&=2p2r!-*^{$yTL8;`$H+t)g*!s}up;Ehs8uDlVI;_yC2x-Q6&vyD6Nmb% zm^q6!2fJ_dsZ$))AJV>l*TGt@_d8u{)mK#Vnj*Y^~CdbncBv& ziH0a{2_&XeoGQ{0O3gc}rByagDpE^4I>b{6IEqmXZPJ`DaD`l*BvG2Gkf8G;_lRlp zNv5^pC7!a9kZ0yN0iiiQ(96q-?R$sYkx4>&qC)2glPCZ?4xUJbRlZ-UY1*Mqh7vty z)Kp`6ydo3q+O24XhID((r9R+^G*FM35GQ(Hm&W3|wo|=|$2^4bTqW9H)(-30+NN!L zT%uFJKs38%tOb~uYn-l(ZDitF#ccDcRt;(FE@kdt(-R7MYRbEM6F2nz%J>F(n$T|o zk0zdEwnegX2hZjy7SwajEk#kLNr6N}0|xC+cJ_Xv?&3j_?@BYuZNZ zwLD&@gMP_pXwVtX`czeN5E_Rx@Fosn-=>}SjhJuMu+Afe1_j0pZLltHZcVYTMV>Y> zpiw4~Mfsfv^{d`M-$6tRD5kod&?sSmJrt2yS$<8P!&UW{$@n7)2GSmCN}t6TK^eHX zS|jVejUlYH=O`+-L+5O?-`3}F+Rgb}QJJfgxNeuDvTBW{TEirLA_whG=jZ@43Xak4 z=NbybG2LzH=yyd>9^-3#Ufac%0S-Nh(G zmB$Tesj4G*vRZ&3df7ONLs`<`4OIiQHdDGr$0bBIzrrWFCdJgbP3K~DEHZJCd|iE% zqQT*!#5zc7Hj}2PPRE{U`()zz48~&;QXqX-j0d2vaZ^Xy2}}P9?Kxx^Fnh16nmIKWcmu!5g51Kr+!1T^t>(c(xg1#T z$$;(Iy-s(~D3{8C-z*P8+X>3nvF!zPgY5F=TEAa99I&rhjfv^2HoiL0@yRCx?OC>a z6-sz7HVWHAuZEN6!3Onw5e)tqHTC8omOzHbxpZVbl01KHPJOu>i1_PfdIESa`23YS~ zhgQ(^?S4qz6}ZFbT0QoZaC)|DUvCD%=YZmP4a<3o4qYqQIC3`y*@CX;hh58k8ukId z6`KB2^y*m$Oo7=2eXGe7ud&aXPt(6YXgGFr(+ay!BWXc^;%U2`r|7jGcy3>bh5Kr~ zgV6HBK|gmtGFOJ@hRhAYYS}%IZv_pL()PWclE>fq#a(~b<+V-EJFuCkKOC^@yd=?z zRGT;YdP36^?Osq!XPpIs)nUpRZ_XUnV{Ul8?+k)Gw1xkd%gXt~pPqm8XT<3I-JgB( zpWlY^rsoEsV!J_TxlN`l5%#5~&#aIYUVtWw(y#)yeQRw2G_lEopv2t6(#?&Exo6&d zPFY%7Qu2M@YYm#A?YVj7Yf8SHR~D3f+3MSQ6=0kd7bQ#{zxTn#@BjAV+rPee_}lZJ zyo2-M7?f-`WPX$NL(dONK6@}=L0B3DtU#y~nx5OXJ4I#bs|v?XQDAbv{@aV6{lllP zyz%HS?|$;(?=Iec_3^v!fAZ&V9@$}68-!iMYq7t6{QCLBpIm(K(fPODws_h3!}q() zYB68HvfE;elH9i#kESR@Gyy_c5=6y(Fl#;Uflmau!H|0 zfjSdEqaQvC2foVz@s?*QCm8d6&ri~ex8L-=o*l4~&p=IiL(v`nNigmF`){28`OPaa zE$Dl0z+|q8vP?Wg4s>)5VTfA-m# zN9%613=6JdeNN3qro?A~=NvM_>-9aCxuIeO%3iuqRlGiPb;oNSV14wLs*ur$tK`4A zaoWut4%lvPF+!?6aM5ZgK66{lFYGnLV^!H}TFov~l`q56AE?Tg0~QYYs`BNQ6r?0-(Mt)N!vVP~0O*?j73fNLd=5LSZ*YEv`e0-CS`Ipm4gz6Dkzd#2gCQBS7yn znT$QFUnNH+GRcPnwA-=O-Z*5wW1ZBSzUMd%OKR#-O%T=O7l$~Avj$QWI0Yi?Ul79N z1vSp*1;rgWjv5)Fp4DN`+3bk<8;yYZhs>uIT+9}^3L;&5{XxiD3j%DZREj58xR)OU z%r{VP@~Q%VRV@Et9Zgp;2GjEfZpd0OuDBNc@FxT zaO$$K>$QT2M>zjyw{g-WH3#5wlp0>^q*#=}^I68?s4NY$JOyA;?oNU&6`k$63GC1R{N|%K-#LHyz5<<< z^LKyt=sWM9zw*xc?_bK4q|bztnw(RtoeRkd0L^-ALCJf;b^Lj~W%&nrHQDIU4(x{Q z*x|{70_(k(ZUAK~b_)Q}Sfd(Lm}8wRC^KVYsRk|I>dK;Fct=B1Jzh}qUAxs{ZW_Cj81DpJiHkCq!GL=XD>+`LkRLV(Akwzw*r%+e1cN4c zpzVRAw(-}wKVBpKTMbR>z? zDz!jot%n}{xWptkySCF>vx9KR*ad?|=rfiya%ah9b=N&x%&EEZv&z8jJA;nxUZ;&Y zclQFNWd~LR?8dWY$z2AIHTG;vQBd%3z@7>0bYG(IywX|-l1cXN>+ z$iqvc`%{Bw9Lw!2?FZ14dxFnCRi|h`>K!}y0!XRsdM&os^I8Lk1!b5#2K@YT%MQXa zbz5OhpZO&M$$joUstWe@lqIG7?BDF|ZEoK(_x7GGr-mvJR;qIEUY-b-SLxsT;42Qf zxDsU9w-S~XI-dxLP?HsAwW2m(KOC?@z{;@2&M%_sz4!6?E5DN3N+3*%pKLmV zU{pkfw@g%&Sx}B8rre{gU^xg+9E?#tWyk9c?>N;tF-^yA_?CYX&#~?Kp>@OpugA)5 z&lSI~2Zx>OP0wekxKY~*M)dU=yB>Is-NLRmaGDeC;~$*A@~ey2Ub^^)*A#34ChX$v zR}+AjJvY<{R;}r|*@J+DNl4}wQ}Y83Q@2RK^P|FJB_1A=8(<_os>i?5BzzY3s1mOM z+2FZ>==Jpki;xP}Q&=RqNZwwvYdHsH@cDpk*AKx-PBXtmd<}SDwWfQ2XjA^|Vtf$!IabOK@XYFcP$yte0KEG`I@dk5@9RU#nw6|b#qV05{}+|ajK zP{?3qQ3}r_kw}6oVu(^=!NuEux_IMVMcUCSkKX#m`AZ*D@bKc{4 z6}mxg`q+vneU=kdG$NfEh=w|?~awSP;FjHAbcEsYv04tfd4DLLTd5B}-Xx4!%6 z-#>cv(Ld1$7Y~1U@uNR}`lCOL9O}q+Ti#Kr2it^o*0QZazR>qsoB6@@rssJ6^`J>x zH{fY8U!a3r7NQXJ8-NN`Y9MxhJV@q4dd{OFG` z#+!dqV8ua!VAn%$(Cp$8q@4f#>q^fG4)Cv}Ah2UQ2yM56tIEiYvgSC2ykolu_k89o z?dA|p?!Kx>W$97V^)Uju`w~kN2$b5MZ(7Z60nuLiD$Yj;L$R1x82F0R^xQSuJ&;kS z)td_y;VlgqD-BZmvvh{3Jbhn*YRPAgvZUnEJ6M#K@E9S{Bu&$}xr~Bn9Z@*HcxB@i zA=UL+J44)27(v?M%*MlbU#ahQ@(G)q#QpO?N=)ms0?INoPdCpmWQt$J>{1hx*&0b5 zIHe^BTDdI)A_WC8*I4vMw@u9JDjnoG6jMfzmf4ma^ufC*6w5vG09Gw6C>+wDgTBQ~P?k)1{o04Q`7l(Vm#0w+* zI#szGl7uD2O%px~m}uEog%#qvKZZjJ-i?nsXh5u?!3t6M6UMc|)G9CZUNkB}@Pv{X zQr=J6E0&PRZ~%vWjlvKihJC!mDwSLb(@lqH{ghNrxQS_3p2#kfnP?0l>c4!Sd-osy zS!r8fKfve46YcoG=t|TzV)#hiFGbDz)(J$OGU$pr@an}Izc_#R{_qCiuOGjD2_~1R z#uvqf&m{3fF8f(h6JXa0X%q;hh(9UVLBFLvZ?Qy&l=;80`hC8no)t@YEJCLuLq2Zi zsR$;10h&CWWZ)xXh|H=pT7M4^Y6X!=r`~G_2bu}!Q-F5^XQj<{^XQgtKYi)7i*Nt)Uq605pQmDqY<%+JM-X`X@RdjZ{O81I+9339vCuyerw+rI0w%Xl z`YeGeac|jkT9AApGY+}4?K^cAg2x{ucsB@`AsQ?wc{IU!HO<>?-`Vt8+dfV}j>%}X zdbaytJOt8(2#_KTaN~pD4@HI~lbO;4X(?KuRYy&xiE-09LKRU>!SY3>nOBX}&s2|O zb++oJx=3|dA|bRojha+>nVx5MlUj_l0%7eF@tT$cYZ7D}c34;oS+9_n zTjh(mP09~zXhPqHbtH0MGPQ7+u0!o5k_j`ACXQ5@(_LDFe*$+_+lv63MliE3$8 zPi!FIp3u@RPcqF-Ee1vXttPJ(dxh2QiRjF)~JxYU$ub{FMz~wlWc=q_Qkp zN!36t>Cel?kgQH}AgN;HXi}SKNU3ZD?Gi>y4ElnC=Q)R#GhoVD76lXC;4lettFe9d zIQ1bDmzp3IW(+lK9OK#1-OGX@+pc|;w&dw zI)aC3JA8FErh8tMlacXGOf)JTHOHudm|j$nJ(iX-_*b4-dZoC+yrckyWDYaq62oVC zOG@TxTZ&6*_@m+;!^enAa@!|LAuU#7ls5h~(robcZ;7{y8zq**Aagm4fImr62rq$= zyi{c|PpYOH8_}QX?0qqw)l9E%R&e4rl~gpa@Pa}Iaw(yq6kb1_&nGS^01`)*&G*Q3 zDFv?Ll%;&_WcVR@>=);BM^`x@*<9{2oNwu8r*o!a26CiB&6s;?9sYvn536(e$a0*% z#q$@3U_`aB)F!5n|Hg?f^oI@!T_+1SUJ;?4TW^{|wS3CTS9n)~L4$ga> zlIL>09HM&ujJXL!CA0NN>gNuLoEk*Xv-}~mHw_k=p+5dj!{G0!gJkm{~)(AbTkRP}K z3m5Re`Dj&5o86w}LMCLh%bEvyRTf}==W!t^)Onz&=i8^a3(PMldEE-^rUJHahz7}} zL{Z@Wo*@TkFz+{tuG8_F&w`X;0aE%b5ZC*FY7=8)DQye8zITKc$IQCm_i{{vgy|hh zt&#A{CpUj_ClH@PQ9?Y5w`OM-^^4#|VA{V5&e)Rr2FgExE5m?9>GQTSU?M{8Gq$Kv-eGKHZ}>QOCX&cHv5T9Ixg>cOm~c z5j4e|&;_2gNy|n7))Kh?5|qiaU-5bjvyzK(AQ>+Uns60*At~$0Wp)T9E>0=DQl(Eu z3^kc>dcuG$E9f>n%Wn-0no;xQfpObgv4XA+Jujn5a=m;4mhn*)?M70lj;ek#zDA~+7}`)2p$fMT- zUEzrm8+IK0A%k5vdeR_FlEd6i z*j-d?<*UjVc>JQ~o~>M0#_!*oxUYOQ0=KBx*RL0)Huoi1yayjG+2&sMWJKfWi2|-H zfF@YZfz!4f2WeMx+mL^Df{pNAlbFjGVE>hjDP6l3kp^u5M zZgm~7lc10(Y{e2gWd2DZlDGo~VimpLlGO*#QzDVOw|~F52+_G1+ubmlPSAJkCM)b; zzpg6d#YNE~zQZkg$h5-5l*PEtZpU-~N@Bvrv}i=q8I43g_&;{L(2n~?!$eF8kblBMG_5ad@stT zyT7QMDGN_(zld+*$jd{FZ>vB!!4aReAP_twl5;3jD3Oo9YRDUlfdeF-pb|Iu*;H!D zREpLd1ZzVXCz-IA2kZnqilKUxtt|LnA#STGs9unxo82@TAKFO*%JrBgE1n`uv<9Lv zchF-#T&?GMVnCJ!30FD^Ju9Y!6KR=+P+K@?=$_dDzPAVg%+RvkK=EAXgce>G4v|pl zOOY>^cnvTq)mE#8_*f3L8o?SSvxb`#PL$NUUEoeU$=0=tC7-nhO%@xwK6U5x7Ua(C zoG^N@YEjQ(V%3U@Y57u>d-sb)Nmz-7f)bYFct?;Wj29;vJe@;_cbCy*Fq$Uive31G z?;xGU^OylXI@nS?R}qgWNJQMt?FZ%E9K?eOo^lPIF~E`+c5~xnW4pP9-CS$dnqXry zGrKu;H#adpg@tUEH7%>zq{4|AENstC&a%mQ3k#>FC$X^En4BCR8=s)Uxp^!c8=IT3 zCa2n1I1QCBP@A=^DQg}JXZYxot=ajR=F~VZ9H-I8W*akXauN&YrlzrQywRAqrl)7A zaE4mWTXSq~ygh}5^W(EvI5#=jY_#WSM)Olt$mXW4<|J$E=FWtta-RqSZ#8_e%!JoW zjUZV5ui$AjxC&FpW*c*}vvacvrX~wHQ)i~9=GbgwD#6t0W@Bbzda9XV>RhYYoSz?` zOE7g}zBSWq&o>hMvnCtOd1evJnF$(wma(acIg4asc8c({=BHYX#?(xL(=&~!X*S0u z6PzBKwB{x)E+`SFrzhsE);OcWX&R`}nx31VZOjgHx*15U&SD&#l@{bxPHYk3VusgN z=q&=25WJ;9yNP^JFf*=4OTk|elMD&G-h$p8J5rX#IC-fuU*x_>e4;6>L=hr%Q9Bz6 zsuP~}82}tHT~8KJud$EzuP-g`-1hc;FZ5vKQu5JU+V9037nL) zE3|e93rdYvmXzIG;t|;eWKg+`3rw9q{UVf6+`O>FqcDed^fRN!VJ|egf_eh}jKbB-QUa4WPb4bf*(Gq~$Z61YnC0KLd(0bzg^>O&N_%WTbQy1wr)Ckw z9uVQ|N{O<-*6`C3{( z=`}ou&c7qd;*CqHDTQ7=^li6u+v-HB@PwV)a8F|o)tn(5m zFoXnVq)*ewMYg<~g9efdAt;Yd#BMH{Iau&0ScgG1ey#^+_pNSZT4;sn(!sg-3@sM{yxEOE{JeJZy|0#_h*&eT*!{YvT*mV zWYYx*wBd=6uiQMTxO96x%X&V^ZkCdR#>yC%4BJe6hx-s86^ZT%L#w>BFmb9!0j+dI z4$#K2ctSeD!za8Wz>A6a7_*!edSM{l6wOTfZ+ed4#TO%iSWJz~vk@s#V>h?P;|NB* z&Lay$n;WH#_ijtOyKVt1WBj3dfqF!ULRm3(k9I@m`;_4Vf?)t)7!(oU;vrf!DYs)c zXVmL^#>)21)xEV1t+KbQ)z-{Psxg2N z(c($-;!sTT3SyNM-GmbH2PI?%xaTN@$PNwq>69T*a;)_{Lcx~*Kgu<3CrL8Hbb0HpZX-N_KoG6Tl7&$i~ zGC{J9Vou15D^e9PxdK@um{+80)c&&)HYVLu&?bX4LP&9Qd)b1T42R0e-|`t^#`;P# z<0^bvY$_Tld9dYN(zUN#QzVlPhb{?aOKVtB`gTQPQA&FhS#AXRkLgJgA&YdzTP};^ z+|c7G&HSi4T1^6?H-60l4u^~&z!e}6$LP}&Qwz!%aVFb`YzvZQ`aMy=I5sEE#27pz zHy*{|#-rfdcocCPkHT!@QEY8I3aE`oQMBtUJrQpPo`I#zt zZHco(zQG&`BwEoa{Zu#rc%dOycNA0CQ@TAr{sZ4s44Yls?Ia4L4~S6-eNw2#n~ack z$Sx75F+%3c<#>;Xw;jQ;a=noEA?=DPqJhf-FGv$9mz8@d^;3lvx*zrBBdf|-q6h#a z74NCFZvQI!hQ9TU`o_)8^tqJhOCKkTO$bwiu6T{&g@S_0HJRpq=ITs~! ziT_bL2DMtc>Kd5M;F0WF8j|t*QUvG9G{Ou8Y!%1l;`zeo(30Yro+dGK z1!M7;&B}XTdqvfcmjIJy2*8zBB zW6{pa4wb_g!n!U+&En|A)32al^+#!5=AJ3p)tG%&9rvH2y*szGN`;$tj#4 zef=`0=J*#Zb7~Iqm|!IFAxflV#s?Q+mLon82W*f(D+x$N-+Kg#Lv9odN*{K_tRu&U z!9|Q2Ab7147(*TqKR^S`qmK&`!|*$S(og(kAb^X$5D2r4zXu59;U5RfsX3ti2}uOJ zG?7ztjt7E~{?;5|EZ%KP(ln>$5-;Tg{D@Kf(_S!u_=FeCi$2#zaW=U#R~sJ$VE=gr9L{7Q*#FlU~h=emh(@`prj6cT!yng@uV;e z8h@-oVp&`gKQoV-;Q2x$kOl*}R(hieH4$>(fXvY+OvE3EqKlOk0tDX$$*DQcBuqV84VsvI2AnYBw`M`!cwrzlNWO{;B$U5hkd_1ug^jOHKpW~K z9%qku7gI0s7CTNqerg@(0{|h)&hg?{NC$4DZhfv~;EEERLb71d>*10-L%WkcPLE!v zP6~uD5P&WRE4>#C%9?oFg{sAi4?tAuwY}(1=_NcawekCPBq)hze4(FMjHLGb{a&d= zw|uls^2@xW-SIQLLNF7r*oi{vu{lu`y^5CXC|-e!=0vY>Mc7O4osnoo55vh#C^HN- zKKVu(w`k(2t>oAdHHV(sL<1JT6h_R4x5ARMiGj*bV$t7vnxDxhJ$R=S9vN>Y@}6nl zV*U%&)w9?zNV8@5@jx`E2|i^$`^OQ;;KtCyc~qti^C0;YT?8>%P|x5(Tl@%O`e!`C z25fGM)gtvi8Zl3l53wbFhzl)6UoHYVqM%u5gLtGA7cKyc>ozP;F2{lA8vv4i6Ez<9 zWMC8M)uc%4ldmQT!HurwgE8>{W#5A-gCmh6?+q+P=vmz9N(z)us}M(l`93$sGFW(^ zL^x82m=$&-X9J%Jh;Y0moGpIKI;x1TS)(z>i`I$ctK{9??7XaqJT2JF$NBrTfTb)a=M5xU8Td-Fur65{N(p9fx%z_a8nB1q&EBH z0H7ZWHw=N-c)1RS1d!1}L4HXP%?X8+@Z{H)Kw?Bel=6lig}CnogF`_)4V)R=_94<^ zU>?{EMBpdefC2nJ%EbpShHp90ncAnmefozo+kwrA+;;R_L~<$ji4%FaKp}KqTt-f& z-A5sf(i@}FfM_z5@c<2|D#|+`n*@2u0IJCiid36Uwj_7rkk~=XtCU%b4v6^0Gg(pS zMZQkt-iT#C&OoI#8C4PE#5pxbS&gWiQC=f}lNNJvK1*Wba4&=Mf6zC@3>TC=+E*kK zk;L|h8(xt-g^O>CyvaDfh+77pQ3N9<(h(%bN+j0cWICLi9Pm(*2rhnB643B5a4c|u zoK%{Miwu=iXmb_PPO=|u0_9LJpL(6FXte#y3N1wJ%nCZ80f}N`0F{DVz-SNu!9CM( y)Bz>IX(#MXyvMk&=IoB^`S_YgZsFd205|ZP?3U++xrJQr?EeA&q%`Q+!T{if(e.withAuthCode){const t=a().get("authCode");t&&(e.headers["authCode"]=t)}return e},e=>Promise.reject(e)),l.interceptors.response.use(e=>e,e=>(e.config?.withAuthCode&&401===e.response?.status&&(i.nk.error("认证失败,请重新登录!"),s.A.push("/login")),Promise.reject(e))),t.A=l},4674:function(e,t,o){o(8111),o(7588);var n=o(5130),r=o(3888),a=o(8196),s=(o(5412),o(372),o(8950)),i=o(2353),l=o(292),u=o(6768);function c(e,t,o,n,r,a){const s=(0,u.g2)("router-view");return(0,u.uX)(),(0,u.Wv)(s)}var d=o(8401),m=o(3785),p={data(){return{osInstance:null,imageViewerObserver:null}},computed:{...(0,d.L8)(["userConfig","useDarkMode"])},mounted(){this.$nextTick(()=>{this.initOverlayScrollbars(),this.setupImageViewerObserver()})},beforeUnmount(){this.imageViewerObserver&&this.imageViewerObserver.disconnect()},watch:{},methods:{initOverlayScrollbars(){try{if(m.ae.valid(document.body))return void(this.osInstance=(0,m.ae)(document.body));this.osInstance=(0,m.ae)(document.body,{scrollbars:{theme:"os-theme-dark",visibility:"auto",autoHide:"scroll",autoHideDelay:600,dragScroll:!0,clickScroll:!0},overflow:{x:"hidden",y:"scroll"}}),console.log("OverlayScrollbars initialized successfully")}catch(e){console.error("Failed to initialize OverlayScrollbars:",e)}},setupImageViewerObserver(){this.imageViewerObserver=new MutationObserver(e=>{const t=document.querySelector(".el-image-viewer__wrapper");t?this.osInstance&&this.osInstance.options({overflow:{x:"hidden",y:"hidden"}}):this.osInstance&&this.osInstance.options({overflow:{x:"hidden",y:"scroll"}})}),this.imageViewerObserver.observe(document.body,{childList:!0,subtree:!0})}}},f=o(1241);const h=(0,f.A)(p,[["render",c]]);var g=h,b=o(6915),v=o(5507),y=o(7477);o(1862),o(635);s.Yv.add(i.X7I);const C=(0,n.Ef)(g),k=(0,r.Zf)();C.component("font-awesome-icon",l.gc);for(const[M,O]of Object.entries(y))C.component(M,O);const w=()=>{const e=document.documentElement;let t;if(v.A.state.cusDarkMode&&null!==v.A.state.useDarkMode)t=v.A.state.useDarkMode;else{if(t=window.matchMedia("(prefers-color-scheme: dark)").matches,!t){const e=new Date,o=e.getHours();t=o>=22||o<6}v.A.commit("setUseDarkMode",t)}t?e.classList.add("dark"):e.classList.remove("dark")},A=e=>{const t=document.documentElement;e?t.classList.add("dark"):t.classList.remove("dark")},U=e=>{document.title=e?.siteTitle||"Sanyue ImgHub"},S=(e,t)=>{const o=document.querySelectorAll('link[rel="icon"], link[rel="apple-touch-icon"], link[rel="mask-icon"]');o.forEach(e=>e.remove());const n=document.createElement("link"),r=document.createElement("link"),a=document.createElement("link");n.rel="icon",r.rel="apple-touch-icon",a.rel="mask-icon",e?(n.href=t?.siteIcon||"/logo-dark.png",r.href=t?.siteIcon||"/logo-dark.png",a.href=t?.siteIcon||"/logo-dark.png"):(n.href=t?.siteIcon||"/logo.png",r.href=t?.siteIcon||"/logo.png",a.href=t?.siteIcon||"/logo.png"),document.head.appendChild(n),document.head.appendChild(r),document.head.appendChild(a)};v.A.dispatch("fetchUserConfig").then(()=>{w(),U(v.A.getters.userConfig),S(v.A.state.useDarkMode,v.A.getters.userConfig),v.A.subscribe((e,t)=>{"setUseDarkMode"===e.type&&v.A.state.cusDarkMode&&(A(t.useDarkMode),S(t.useDarkMode,v.A.getters.userConfig)),"setCusDarkMode"!==e.type||e.payload||(w(),S(v.A.state.useDarkMode,v.A.getters.userConfig))}),C.use(v.A).use(b.A).use(a.A).mount("#app")}).catch(e=>{console.error("Failed to load user configuration:",e),C.use(v.A).use(b.A).use(a.A).use(k).mount("#app")})},5507:function(e,t,o){o(8111),o(1701);var n=o(8401),r=o(457),a=o(5131);t.A=(0,n.y$)({state:{userConfig:null,bingWallPapers:[],credentials:null,uploadMethod:"default",uploadCopyUrlForm:"",compressConfig:{customerCompress:void 0,compressQuality:void 0,compressBar:void 0,serverCompress:void 0,convertToWebp:void 0},storeUploadChannel:"",storeChannelName:null,storeAutoRetry:!0,storeUploadNameType:"",uploadFolder:"",customUrlSettings:{useCustomUrl:"false",customUrlPrefix:""},adminUrlSettings:{useCustomUrl:"false",customUrlPrefix:""},autoReUpload:!0,useDarkMode:null,cusDarkMode:!1},getters:{userConfig:e=>e.userConfig,bingWallPapers:e=>e.bingWallPapers,credentials:e=>e.credentials,storeUploadMethod:e=>e.uploadMethod,uploadCopyUrlForm:e=>e.uploadCopyUrlForm,compressConfig:e=>e.compressConfig,storeUploadChannel:e=>e.storeUploadChannel,storeChannelName:e=>e.storeChannelName,storeUploadNameType:e=>e.storeUploadNameType,customUrlSettings:e=>e.customUrlSettings,storeAutoRetry:e=>e.storeAutoRetry,adminUrlSettings:e=>e.adminUrlSettings,storeUploadFolder:e=>e.uploadFolder||localStorage.getItem("uploadFolder")||"",useDarkMode:e=>e.useDarkMode,cusDarkMode:e=>e.cusDarkMode,storeAutoReUpload:e=>e.autoReUpload},mutations:{setUserConfig(e,t){e.userConfig=t},setBingWallPapers(e,t){e.bingWallPapers=t},setCredentials(e,t){e.credentials=t},setUploadMethod(e,t){e.uploadMethod=t},setUploadCopyUrlForm(e,t){e.uploadCopyUrlForm=t},setCompressConfig(e,{key:t,value:o}){e.compressConfig[t]=o},setStoreUploadChannel(e,t){e.storeUploadChannel=t},setStoreChannelName(e,t){e.storeChannelName=t},setStoreUploadNameType(e,t){e.storeUploadNameType=t},setCustomUrlSettings(e,{key:t,value:o}){e.customUrlSettings[t]=o},setStoreAutoRetry(e,t){e.storeAutoRetry=t},setAdminUrlSettings(e,{key:t,value:o}){e.adminUrlSettings[t]=o},setUseDarkMode(e,t){e.useDarkMode=t},setCusDarkMode(e,t){e.cusDarkMode=t},setStoreUploadFolder(e,t){e.uploadFolder=t,localStorage.setItem("uploadFolder",t)},setStoreAutoReUpload(e,t){e.autoReUpload=t}},actions:{async fetchUserConfig({commit:e}){try{const t=await r.A.get("/api/userConfig");e("setUserConfig",t.data)}catch(t){console.log(t)}},async fetchBingWallPapers({commit:e}){try{const t=await r.A.get("/api/bing/wallpaper"),o=t.data.data,n=o.map(e=>({url:"https://www.bing.com"+e.url}));await Promise.all(n.map(e=>new Promise((t,o)=>{const n=new Image;n.onload=t,n.onerror=o,n.src=e.url}))),e("setBingWallPapers",n)}catch(t){console.log(t)}}},modules:{},plugins:[(0,a.A)()]})},6915:function(e,t,o){o(4979);var n=o(8512),r=o(1219),a=o(4570),s=o.n(a),i=o(5507),l=o(457);const u=(e,t,o)=>{const n=i.A.getters.credentials;if(null===n&&"adminLogin"!==e.name){const e=btoa("unset:unset");l.A.get("/api/manage/check",{headers:{Authorization:"Basic "+e},withCredentials:!0}).then(t=>{if(200!==t.status)throw new Error("认证失败!");i.A.commit("setCredentials",e),o()}).catch(e=>{r.nk.error("请先认证!"),o({name:"adminLogin"})})}else o()},c=(e,t,o)=>{let n=s().get("authCode");null===n&&"login"!==e.name?l.A.post("/api/login",{authCode:"unset"}).then(e=>{if(200!==e.status)throw new Error("认证失败!");s().set("authCode","unset","14d"),n="unset",o()}).catch(e=>{r.nk.error("请先认证!"),o({name:"login"})}):o()},d=[{path:"/",name:"home",component:()=>Promise.all([o.e(740),o.e(600),o.e(624),o.e(489)]).then(o.bind(o,2753)),beforeEnter:c},{path:"/login",name:"login",component:()=>Promise.all([o.e(600),o.e(100)]).then(o.bind(o,2560))},{path:"/dashboard",name:"dashboard",component:()=>Promise.all([o.e(740),o.e(947),o.e(624),o.e(861)]).then(o.bind(o,7481)),beforeEnter:u},{path:"/customerConfig",name:"customerConfig",component:()=>Promise.all([o.e(740),o.e(947),o.e(954),o.e(601)]).then(o.bind(o,9601)),beforeEnter:u},{path:"/systemConfig",name:"systemConfig",component:()=>Promise.all([o.e(740),o.e(947),o.e(954),o.e(512)]).then(o.bind(o,5512)),beforeEnter:u},{path:"/adminLogin",name:"adminLogin",component:()=>Promise.all([o.e(600),o.e(214)]).then(o.bind(o,3950))},{path:"/blockimg",name:"blockimg",component:()=>o.e(917).then(o.bind(o,4917))},{path:"/whiteliston",name:"whiteliston",component:()=>o.e(845).then(o.bind(o,7226))},{path:"/browse/:dir*",name:"publicBrowse",component:()=>o.e(453).then(o.bind(o,2453))},{path:"/:pathMatch(.*)*",name:"notFound",component:()=>o.e(226).then(o.bind(o,8226))}],m=(0,n.aE)({history:(0,n.LA)("/"),routes:d});t.A=m}},t={};function o(n){var r=t[n];if(void 0!==r)return r.exports;var a=t[n]={exports:{}};return e[n].call(a.exports,a,a.exports,o),a.exports}o.m=e,function(){var e=[];o.O=function(t,n,r,a){if(!n){var s=1/0;for(c=0;c=a)&&Object.keys(o.O).every(function(e){return o.O[e](n[l])})?n.splice(l--,1):(i=!1,a0&&e[c-1][2]>a;c--)e[c]=e[c-1];e[c]=[n,r,a]}}(),function(){o.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return o.d(t,{a:t}),t}}(),function(){o.d=function(e,t){for(var n in t)o.o(t,n)&&!o.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}}(),function(){o.f={},o.e=function(e){return Promise.all(Object.keys(o.f).reduce(function(t,n){return o.f[n](e,t),t},[]))}}(),function(){o.u=function(e){return"js/"+e+"."+{100:"d7a2e066",214:"e7ecaacc",226:"f737e39a",453:"cb331012",489:"0082a34f",512:"dfeda4a9",600:"3d796c41",601:"e07b6e33",845:"1bb9a557",861:"9a8e81f4",917:"833cbf86",947:"e85ac3eb"}[e]+".js"}}(),function(){o.miniCssF=function(e){return"css/"+e+"."+{100:"07b87787",214:"07b87787",226:"6548e7b4",453:"5cb6254c",489:"8dcc9918",512:"29d6cf9b",601:"a3bc9ea4",624:"7ee428af",740:"a94dbb46",845:"6b45e8e3",861:"03a83a41",917:"8529ad1e",954:"bd5897b7"}[e]+".css"}}(),function(){o.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"===typeof window)return window}}()}(),function(){o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)}}(),function(){var e={},t="sanyue_imghub:";o.l=function(n,r,a,s){if(e[n])e[n].push(r);else{var i,l;if(void 0!==a)for(var u=document.getElementsByTagName("script"),c=0;c{if(e.withAuthCode){const t=a().get("authCode");t&&(e.headers["authCode"]=t)}return e},e=>Promise.reject(e)),l.interceptors.response.use(e=>e,e=>(e.config?.withAuthCode&&401===e.response?.status&&(i.nk.error("认证失败,请重新登录!"),s.A.push("/login")),Promise.reject(e))),t.A=l},4674:function(e,t,o){o(8111),o(7588);var n=o(5130),r=o(3888),a=o(8196),s=(o(5412),o(372),o(8950)),i=o(2353),l=o(292),u=o(6768);function c(e,t,o,n,r,a){const s=(0,u.g2)("router-view");return(0,u.uX)(),(0,u.Wv)(s)}var d=o(8401),m=o(3785),p={data(){return{osInstance:null,imageViewerObserver:null}},computed:{...(0,d.L8)(["userConfig","useDarkMode"])},mounted(){this.$nextTick(()=>{this.initOverlayScrollbars(),this.setupImageViewerObserver()})},beforeUnmount(){this.imageViewerObserver&&this.imageViewerObserver.disconnect()},watch:{},methods:{initOverlayScrollbars(){try{if(m.ae.valid(document.body))return void(this.osInstance=(0,m.ae)(document.body));this.osInstance=(0,m.ae)(document.body,{scrollbars:{theme:"os-theme-dark",visibility:"auto",autoHide:"scroll",autoHideDelay:600,dragScroll:!0,clickScroll:!0},overflow:{x:"hidden",y:"scroll"}}),console.log("OverlayScrollbars initialized successfully")}catch(e){console.error("Failed to initialize OverlayScrollbars:",e)}},setupImageViewerObserver(){this.imageViewerObserver=new MutationObserver(e=>{const t=document.querySelector(".el-image-viewer__wrapper");t?this.osInstance&&this.osInstance.options({overflow:{x:"hidden",y:"hidden"}}):this.osInstance&&this.osInstance.options({overflow:{x:"hidden",y:"scroll"}})}),this.imageViewerObserver.observe(document.body,{childList:!0,subtree:!0})}}},f=o(1241);const h=(0,f.A)(p,[["render",c]]);var g=h,b=o(6915),v=o(5507),y=o(7477);o(1862),o(635);s.Yv.add(i.X7I);const C=(0,n.Ef)(g),k=(0,r.Zf)();C.component("font-awesome-icon",l.gc);for(const[M,O]of Object.entries(y))C.component(M,O);const w=()=>{const e=document.documentElement;let t;if(v.A.state.cusDarkMode&&null!==v.A.state.useDarkMode)t=v.A.state.useDarkMode;else{if(t=window.matchMedia("(prefers-color-scheme: dark)").matches,!t){const e=new Date,o=e.getHours();t=o>=22||o<6}v.A.commit("setUseDarkMode",t)}t?e.classList.add("dark"):e.classList.remove("dark")},A=e=>{const t=document.documentElement;e?t.classList.add("dark"):t.classList.remove("dark")},U=e=>{document.title=e?.siteTitle||"Sanyue ImgHub"},S=(e,t)=>{const o=document.querySelectorAll('link[rel="icon"], link[rel="apple-touch-icon"], link[rel="mask-icon"]');o.forEach(e=>e.remove());const n=document.createElement("link"),r=document.createElement("link"),a=document.createElement("link");n.rel="icon",r.rel="apple-touch-icon",a.rel="mask-icon",e?(n.href=t?.siteIcon||"/logo-dark.png",r.href=t?.siteIcon||"/logo-dark.png",a.href=t?.siteIcon||"/logo-dark.png"):(n.href=t?.siteIcon||"/logo.png",r.href=t?.siteIcon||"/logo.png",a.href=t?.siteIcon||"/logo.png"),document.head.appendChild(n),document.head.appendChild(r),document.head.appendChild(a)};v.A.dispatch("fetchUserConfig").then(()=>{w(),U(v.A.getters.userConfig),S(v.A.state.useDarkMode,v.A.getters.userConfig),v.A.subscribe((e,t)=>{"setUseDarkMode"===e.type&&v.A.state.cusDarkMode&&(A(t.useDarkMode),S(t.useDarkMode,v.A.getters.userConfig)),"setCusDarkMode"!==e.type||e.payload||(w(),S(v.A.state.useDarkMode,v.A.getters.userConfig))}),C.use(v.A).use(b.A).use(a.A).mount("#app")}).catch(e=>{console.error("Failed to load user configuration:",e),C.use(v.A).use(b.A).use(a.A).use(k).mount("#app")})},5507:function(e,t,o){o(8111),o(1701);var n=o(8401),r=o(457),a=o(5131);t.A=(0,n.y$)({state:{userConfig:null,bingWallPapers:[],credentials:null,uploadMethod:"default",uploadCopyUrlForm:"",compressConfig:{customerCompress:void 0,compressQuality:void 0,compressBar:void 0,serverCompress:void 0,convertToWebp:void 0},storeUploadChannel:"",storeChannelName:null,storeAutoRetry:!0,storeUploadNameType:"",uploadFolder:"",customUrlSettings:{useCustomUrl:"false",customUrlPrefix:""},adminUrlSettings:{useCustomUrl:"false",customUrlPrefix:""},autoReUpload:!0,useDarkMode:null,cusDarkMode:!1},getters:{userConfig:e=>e.userConfig,bingWallPapers:e=>e.bingWallPapers,credentials:e=>e.credentials,storeUploadMethod:e=>e.uploadMethod,uploadCopyUrlForm:e=>e.uploadCopyUrlForm,compressConfig:e=>e.compressConfig,storeUploadChannel:e=>e.storeUploadChannel,storeChannelName:e=>e.storeChannelName,storeUploadNameType:e=>e.storeUploadNameType,customUrlSettings:e=>e.customUrlSettings,storeAutoRetry:e=>e.storeAutoRetry,adminUrlSettings:e=>e.adminUrlSettings,storeUploadFolder:e=>e.uploadFolder||localStorage.getItem("uploadFolder")||"",useDarkMode:e=>e.useDarkMode,cusDarkMode:e=>e.cusDarkMode,storeAutoReUpload:e=>e.autoReUpload},mutations:{setUserConfig(e,t){e.userConfig=t},setBingWallPapers(e,t){e.bingWallPapers=t},setCredentials(e,t){e.credentials=t},setUploadMethod(e,t){e.uploadMethod=t},setUploadCopyUrlForm(e,t){e.uploadCopyUrlForm=t},setCompressConfig(e,{key:t,value:o}){e.compressConfig[t]=o},setStoreUploadChannel(e,t){e.storeUploadChannel=t},setStoreChannelName(e,t){e.storeChannelName=t},setStoreUploadNameType(e,t){e.storeUploadNameType=t},setCustomUrlSettings(e,{key:t,value:o}){e.customUrlSettings[t]=o},setStoreAutoRetry(e,t){e.storeAutoRetry=t},setAdminUrlSettings(e,{key:t,value:o}){e.adminUrlSettings[t]=o},setUseDarkMode(e,t){e.useDarkMode=t},setCusDarkMode(e,t){e.cusDarkMode=t},setStoreUploadFolder(e,t){e.uploadFolder=t,localStorage.setItem("uploadFolder",t)},setStoreAutoReUpload(e,t){e.autoReUpload=t}},actions:{async fetchUserConfig({commit:e}){try{const t=await r.A.get("/api/userConfig");e("setUserConfig",t.data)}catch(t){console.log(t)}},async fetchBingWallPapers({commit:e}){try{const t=await r.A.get("/api/bing/wallpaper"),o=t.data.data,n=o.map(e=>({url:"https://www.bing.com"+e.url}));await Promise.all(n.map(e=>new Promise((t,o)=>{const n=new Image;n.onload=t,n.onerror=o,n.src=e.url}))),e("setBingWallPapers",n)}catch(t){console.log(t)}}},modules:{},plugins:[(0,a.A)()]})},6915:function(e,t,o){o(4979);var n=o(8512),r=o(1219),a=o(4570),s=o.n(a),i=o(5507),l=o(457);const u=(e,t,o)=>{const n=i.A.getters.credentials;if(null===n&&"adminLogin"!==e.name){const e=btoa("unset:unset");l.A.get("/api/manage/check",{headers:{Authorization:"Basic "+e},withCredentials:!0}).then(t=>{if(200!==t.status)throw new Error("认证失败!");i.A.commit("setCredentials",e),o()}).catch(e=>{r.nk.error("请先认证!"),o({name:"adminLogin"})})}else o()},c=(e,t,o)=>{let n=s().get("authCode");null===n&&"login"!==e.name?l.A.post("/api/login",{authCode:"unset"}).then(e=>{if(200!==e.status)throw new Error("认证失败!");s().set("authCode","unset","14d"),n="unset",o()}).catch(e=>{r.nk.error("请先认证!"),o({name:"login"})}):o()},d=[{path:"/",name:"home",component:()=>Promise.all([o.e(740),o.e(600),o.e(624),o.e(559)]).then(o.bind(o,1059)),beforeEnter:c},{path:"/login",name:"login",component:()=>Promise.all([o.e(600),o.e(100)]).then(o.bind(o,2560))},{path:"/dashboard",name:"dashboard",component:()=>Promise.all([o.e(740),o.e(947),o.e(624),o.e(861)]).then(o.bind(o,7481)),beforeEnter:u},{path:"/customerConfig",name:"customerConfig",component:()=>Promise.all([o.e(740),o.e(947),o.e(954),o.e(601)]).then(o.bind(o,9601)),beforeEnter:u},{path:"/systemConfig",name:"systemConfig",component:()=>Promise.all([o.e(740),o.e(947),o.e(954),o.e(512)]).then(o.bind(o,5512)),beforeEnter:u},{path:"/adminLogin",name:"adminLogin",component:()=>Promise.all([o.e(600),o.e(214)]).then(o.bind(o,3950))},{path:"/blockimg",name:"blockimg",component:()=>o.e(917).then(o.bind(o,4917))},{path:"/whiteliston",name:"whiteliston",component:()=>o.e(845).then(o.bind(o,7226))},{path:"/browse/:dir*",name:"publicBrowse",component:()=>o.e(453).then(o.bind(o,2453))},{path:"/:pathMatch(.*)*",name:"notFound",component:()=>o.e(226).then(o.bind(o,8226))}],m=(0,n.aE)({history:(0,n.LA)("/"),routes:d});t.A=m}},t={};function o(n){var r=t[n];if(void 0!==r)return r.exports;var a=t[n]={exports:{}};return e[n].call(a.exports,a,a.exports,o),a.exports}o.m=e,function(){var e=[];o.O=function(t,n,r,a){if(!n){var s=1/0;for(c=0;c=a)&&Object.keys(o.O).every(function(e){return o.O[e](n[l])})?n.splice(l--,1):(i=!1,a0&&e[c-1][2]>a;c--)e[c]=e[c-1];e[c]=[n,r,a]}}(),function(){o.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return o.d(t,{a:t}),t}}(),function(){o.d=function(e,t){for(var n in t)o.o(t,n)&&!o.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})}}(),function(){o.f={},o.e=function(e){return Promise.all(Object.keys(o.f).reduce(function(t,n){return o.f[n](e,t),t},[]))}}(),function(){o.u=function(e){return"js/"+e+"."+{100:"d7a2e066",214:"e7ecaacc",226:"f737e39a",453:"cb331012",512:"dfeda4a9",559:"09c9efe1",600:"3d796c41",601:"e07b6e33",845:"1bb9a557",861:"9a8e81f4",917:"833cbf86",947:"e85ac3eb"}[e]+".js"}}(),function(){o.miniCssF=function(e){return"css/"+e+"."+{100:"07b87787",214:"07b87787",226:"6548e7b4",453:"5cb6254c",512:"29d6cf9b",559:"6a658982",601:"a3bc9ea4",624:"7ee428af",740:"a94dbb46",845:"6b45e8e3",861:"03a83a41",917:"8529ad1e",954:"bd5897b7"}[e]+".css"}}(),function(){o.g=function(){if("object"===typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"===typeof window)return window}}()}(),function(){o.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)}}(),function(){var e={},t="sanyue_imghub:";o.l=function(n,r,a,s){if(e[n])e[n].push(r);else{var i,l;if(void 0!==a)for(var u=document.getElementsByTagName("script"),c=0;czUCmnS(l{ZC&<=mHgF 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 UJ7Ms(fj-**0c7GMmXI<405Z|_u>b%7 literal 0 HcmV?d00001 diff --git a/js/app.0f2d1bad.js.map b/js/app.2625aa41.js.map similarity index 99% rename from js/app.0f2d1bad.js.map rename to js/app.2625aa41.js.map index a043bd45..4ec95336 100644 --- a/js/app.0f2d1bad.js.map +++ b/js/app.2625aa41.js.map @@ -1 +1 @@ -{"version":3,"file":"js/app.0f2d1bad.js","mappings":"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","sources":["webpack://sanyue_imghub/./src/utils/axios.js","webpack://sanyue_imghub/./src/App.vue?ab25","webpack://sanyue_imghub/./src/App.vue","webpack://sanyue_imghub/./src/App.vue?a135","webpack://sanyue_imghub/./src/main.js","webpack://sanyue_imghub/./src/store/index.js","webpack://sanyue_imghub/./src/router/index.js","webpack://sanyue_imghub/webpack/bootstrap","webpack://sanyue_imghub/webpack/runtime/chunk loaded","webpack://sanyue_imghub/webpack/runtime/compat get default export","webpack://sanyue_imghub/webpack/runtime/define property getters","webpack://sanyue_imghub/webpack/runtime/ensure chunk","webpack://sanyue_imghub/webpack/runtime/get javascript chunk filename","webpack://sanyue_imghub/webpack/runtime/get mini-css chunk filename","webpack://sanyue_imghub/webpack/runtime/global","webpack://sanyue_imghub/webpack/runtime/hasOwnProperty shorthand","webpack://sanyue_imghub/webpack/runtime/load script","webpack://sanyue_imghub/webpack/runtime/make namespace object","webpack://sanyue_imghub/webpack/runtime/publicPath","webpack://sanyue_imghub/webpack/runtime/css loading","webpack://sanyue_imghub/webpack/runtime/jsonp chunk loading","webpack://sanyue_imghub/webpack/startup"],"sourcesContent":["import axios from 'axios';\r\nimport cookies from 'vue-cookies';\r\nimport router from '@/router/index';\r\nimport { ElMessage } from 'element-plus'\r\n\r\n// 创建axios实例\r\nconst instance = axios.create({\r\n baseURL: process.env.NODE_ENV === 'production' ? '/' : '/api',\r\n});\r\n\r\n// 请求拦截器\r\ninstance.interceptors.request.use(\r\n (config) => {\r\n // 如果配置中标记了withAuthCode,则添加authCode到header\r\n if (config.withAuthCode) {\r\n const authCode = cookies.get('authCode');\r\n if (authCode) {\r\n config.headers['authCode'] = authCode;\r\n }\r\n }\r\n return config;\r\n },\r\n (error) => {\r\n return Promise.reject(error);\r\n }\r\n);\r\n\r\n// 响应拦截器\r\ninstance.interceptors.response.use(\r\n (response) => {\r\n return response;\r\n },\r\n (error) => {\r\n // 如果请求配置了withAuthCode且返回401,则跳转到登录页\r\n if (error.config?.withAuthCode && error.response?.status === 401) {\r\n ElMessage.error('认证失败,请重新登录!');\r\n router.push('/login');\r\n }\r\n return Promise.reject(error);\r\n }\r\n);\r\n\r\nexport default instance;\r\n","import { resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock } from \"vue\";\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_router_view = _resolveComponent(\"router-view\");\n return _openBlock(), _createBlock(_component_router_view);\n}","import { mapGetters } from 'vuex';\nimport { OverlayScrollbars } from 'overlayscrollbars';\nexport default {\n data() {\n return {\n osInstance: null,\n imageViewerObserver: null\n };\n },\n computed: {\n ...mapGetters(['userConfig', 'useDarkMode'])\n },\n mounted() {\n // 初始化 OverlayScrollbars 悬浮滚动条\n this.$nextTick(() => {\n this.initOverlayScrollbars();\n this.setupImageViewerObserver();\n });\n },\n beforeUnmount() {\n // 清理 MutationObserver\n if (this.imageViewerObserver) {\n this.imageViewerObserver.disconnect();\n }\n },\n watch: {},\n methods: {\n initOverlayScrollbars() {\n try {\n // 检查是否已经初始化\n if (OverlayScrollbars.valid(document.body)) {\n this.osInstance = OverlayScrollbars(document.body);\n return;\n }\n\n // 应用到 body 实现全局悬浮滚动条\n this.osInstance = OverlayScrollbars(document.body, {\n scrollbars: {\n theme: 'os-theme-dark',\n visibility: 'auto',\n autoHide: 'scroll',\n autoHideDelay: 600,\n dragScroll: true,\n clickScroll: true\n },\n overflow: {\n x: 'hidden',\n y: 'scroll'\n }\n });\n console.log('OverlayScrollbars initialized successfully');\n } catch (error) {\n console.error('Failed to initialize OverlayScrollbars:', error);\n }\n },\n setupImageViewerObserver() {\n // 监听图片预览器的打开/关闭,动态控制 OverlayScrollbars\n this.imageViewerObserver = new MutationObserver(mutations => {\n const imageViewer = document.querySelector('.el-image-viewer__wrapper');\n if (imageViewer) {\n // 图片预览器打开,禁用滚动\n if (this.osInstance) {\n this.osInstance.options({\n overflow: {\n x: 'hidden',\n y: 'hidden'\n }\n });\n }\n } else {\n // 图片预览器关闭,恢复滚动\n if (this.osInstance) {\n this.osInstance.options({\n overflow: {\n x: 'hidden',\n y: 'scroll'\n }\n });\n }\n }\n });\n this.imageViewerObserver.observe(document.body, {\n childList: true,\n subtree: true\n });\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./App.vue?vue&type=template&id=1693ad63\"\nimport script from \"./App.vue?vue&type=script&lang=js\"\nexport * from \"./App.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { createApp } from 'vue'\r\nimport { createHead } from '@vueuse/head'; // 导入 createHead\r\nimport ElementPlus from 'element-plus'\r\nimport 'element-plus/es/components/message/style/css'\r\nimport 'element-plus/es/components/message-box/style/css'\r\n\r\nimport { library } from '@fortawesome/fontawesome-svg-core';\r\nimport { fas } from '@fortawesome/free-solid-svg-icons'; // 引入所有 solid 图标\r\nimport { FontAwesomeIcon } from '@fortawesome/vue-fontawesome';\r\n\r\nimport App from './App.vue'\r\nimport router from './router'\r\nimport store from './store'\r\n\r\nimport * as ElementPlusIconsVue from '@element-plus/icons-vue'\r\nimport 'element-plus/theme-chalk/dark/css-vars.css'\r\nimport './styles/global.css'\r\n\r\n// OverlayScrollbars 悬浮滚动条\r\nimport 'overlayscrollbars/overlayscrollbars.css'\r\n\r\n\r\nlibrary.add(fas);\r\n\r\nconst app = createApp(App);\r\nconst head = createHead(); // 创建 head 对象\r\n\r\napp.component('font-awesome-icon', FontAwesomeIcon);\r\nfor (const [key, component] of Object.entries(ElementPlusIconsVue)) {\r\n app.component(key, component)\r\n}\r\n\r\n// 根据 useDarkMode 的值添加或移除 dark 类\r\nconst initDarkModeClass = () => {\r\n const htmlElement = document.documentElement;\r\n let isDarkMode;\r\n\r\n // 判断用户是否是自定义模式\r\n if (store.state.cusDarkMode && store.state.useDarkMode !== null) {\r\n // 用户手动设置了暗色模式\r\n isDarkMode = store.state.useDarkMode;\r\n } else {\r\n // 跟随系统模式或时间\r\n isDarkMode = window.matchMedia('(prefers-color-scheme: dark)').matches;\r\n if (!isDarkMode) {\r\n const now = new Date();\r\n const hour = now.getHours();\r\n isDarkMode = hour >= 22 || hour < 6;\r\n }\r\n // 更新 useDarkMode 的值\r\n store.commit('setUseDarkMode', isDarkMode);\r\n }\r\n\r\n if (isDarkMode) {\r\n htmlElement.classList.add('dark');\r\n } else {\r\n htmlElement.classList.remove('dark');\r\n }\r\n};\r\n\r\nconst applyDarkModeClass = (isDarkMode) => {\r\n const htmlElement = document.documentElement;\r\n if (isDarkMode) {\r\n htmlElement.classList.add('dark');\r\n } else {\r\n htmlElement.classList.remove('dark');\r\n }\r\n};\r\n\r\n// 预设网站标题的函数\r\nconst presetSiteTitle = (userConfig) => {\r\n document.title = userConfig?.siteTitle || 'Sanyue ImgHub';\r\n};\r\n\r\n// 预设和更新网站图标的函数\r\nconst presetSiteIcon = (isDarkMode, userConfig) => {\r\n // 同时更改 icon apple-touch-icon 和 mask-icon\r\n const existingIcons = document.querySelectorAll('link[rel=\"icon\"], link[rel=\"apple-touch-icon\"], link[rel=\"mask-icon\"]');\r\n existingIcons.forEach(icon => icon.remove());\r\n\r\n const iconLink = document.createElement('link');\r\n const appleIconLink = document.createElement('link');\r\n const maskIconLink = document.createElement('link');\r\n iconLink.rel = 'icon';\r\n appleIconLink.rel = 'apple-touch-icon';\r\n maskIconLink.rel = 'mask-icon';\r\n\r\n if (isDarkMode) {\r\n iconLink.href = userConfig?.siteIcon || '/logo-dark.png';\r\n appleIconLink.href = userConfig?.siteIcon || '/logo-dark.png';\r\n maskIconLink.href = userConfig?.siteIcon || '/logo-dark.png';\r\n } else {\r\n iconLink.href = userConfig?.siteIcon || '/logo.png';\r\n appleIconLink.href = userConfig?.siteIcon || '/logo.png';\r\n maskIconLink.href = userConfig?.siteIcon || '/logo.png';\r\n }\r\n\r\n document.head.appendChild(iconLink);\r\n document.head.appendChild(appleIconLink);\r\n document.head.appendChild(maskIconLink);\r\n};\r\n\r\nstore.dispatch('fetchUserConfig').then(() => {\r\n // 初始化时应用 dark 模式\r\n initDarkModeClass();\r\n\r\n // 预设网站标题和图标\r\n presetSiteTitle(store.getters.userConfig);\r\n presetSiteIcon(store.state.useDarkMode, store.getters.userConfig);\r\n\r\n // 监听 useDarkMode 和 cusDarkMode 的变化\r\n store.subscribe((mutation, state) => {\r\n if (mutation.type === 'setUseDarkMode' && store.state.cusDarkMode) {\r\n applyDarkModeClass(state.useDarkMode);\r\n // 同时更新网站图标\r\n presetSiteIcon(state.useDarkMode, store.getters.userConfig);\r\n }\r\n\r\n // 监听 cusDarkMode 变化,当设置为 false 时重新初始化\r\n if (mutation.type === 'setCusDarkMode' && !mutation.payload) {\r\n // 切换到跟随系统模式,重新初始化\r\n initDarkModeClass();\r\n // 同时更新网站图标\r\n presetSiteIcon(store.state.useDarkMode, store.getters.userConfig);\r\n }\r\n });\r\n\r\n app.use(store).use(router).use(ElementPlus).mount('#app');\r\n}).catch(error => {\r\n console.error('Failed to load user configuration:', error);\r\n app.use(store).use(router).use(ElementPlus).use(head).mount('#app');\r\n})\r\n","import { createStore } from 'vuex'\r\nimport axios from '@/utils/axios';\r\nimport createPersistedState from 'vuex-persistedstate';\r\n\r\nexport default createStore({\r\n state: {\r\n userConfig: null,\r\n bingWallPapers: [],\r\n credentials: null,\r\n uploadMethod: 'default',\r\n uploadCopyUrlForm: '',\r\n compressConfig: {\r\n customerCompress: undefined,\r\n compressQuality: undefined,\r\n compressBar: undefined,\r\n serverCompress: undefined,\r\n convertToWebp: undefined,\r\n },\r\n storeUploadChannel: '',\r\n storeChannelName: null, // 指定的渠道名称,null表示从未选择,''表示用户主动清空\r\n storeAutoRetry: true,\r\n storeUploadNameType: '',\r\n uploadFolder: '',\r\n customUrlSettings: {\r\n useCustomUrl: 'false',\r\n customUrlPrefix: '',\r\n },\r\n adminUrlSettings: {\r\n useCustomUrl: 'false',\r\n customUrlPrefix: '',\r\n },\r\n autoReUpload: true,\r\n // 深色模式\r\n useDarkMode: null,\r\n cusDarkMode: false,\r\n },\r\n getters: {\r\n userConfig: state => state.userConfig,\r\n bingWallPapers: state => state.bingWallPapers,\r\n credentials: state => state.credentials,\r\n storeUploadMethod: state => state.uploadMethod,\r\n uploadCopyUrlForm: state => state.uploadCopyUrlForm,\r\n compressConfig: state => state.compressConfig,\r\n storeUploadChannel: state => state.storeUploadChannel,\r\n storeChannelName: state => state.storeChannelName,\r\n storeUploadNameType: state => state.storeUploadNameType,\r\n customUrlSettings: state => state.customUrlSettings,\r\n storeAutoRetry: state => state.storeAutoRetry,\r\n adminUrlSettings: state => state.adminUrlSettings,\r\n storeUploadFolder: (state) => {\r\n return state.uploadFolder || localStorage.getItem('uploadFolder') || ''\r\n },\r\n useDarkMode: state => state.useDarkMode,\r\n cusDarkMode: state => state.cusDarkMode,\r\n storeAutoReUpload: state => state.autoReUpload,\r\n },\r\n mutations: {\r\n setUserConfig(state, userConfig) {\r\n state.userConfig = userConfig;\r\n },\r\n setBingWallPapers(state, bingWallPapers) {\r\n state.bingWallPapers = bingWallPapers;\r\n },\r\n setCredentials(state, credentials) {\r\n state.credentials = credentials;\r\n },\r\n setUploadMethod(state, uploadMethod) {\r\n state.uploadMethod = uploadMethod;\r\n },\r\n setUploadCopyUrlForm(state, uploadCopyUrlForm) {\r\n state.uploadCopyUrlForm = uploadCopyUrlForm;\r\n },\r\n setCompressConfig(state, { key, value }) {\r\n state.compressConfig[key] = value;\r\n },\r\n setStoreUploadChannel(state, uploadChannel) {\r\n state.storeUploadChannel = uploadChannel;\r\n },\r\n setStoreChannelName(state, channelName) {\r\n state.storeChannelName = channelName;\r\n },\r\n setStoreUploadNameType(state, storeUploadNameType) {\r\n state.storeUploadNameType = storeUploadNameType;\r\n },\r\n setCustomUrlSettings(state, { key, value }) {\r\n state.customUrlSettings[key] = value;\r\n },\r\n setStoreAutoRetry(state, storeAutoRetry) {\r\n state.storeAutoRetry = storeAutoRetry;\r\n },\r\n setAdminUrlSettings(state, { key, value }) {\r\n state.adminUrlSettings[key] = value;\r\n },\r\n setUseDarkMode(state, useDarkMode) {\r\n state.useDarkMode = useDarkMode;\r\n },\r\n setCusDarkMode(state, cusDarkMode) {\r\n state.cusDarkMode = cusDarkMode;\r\n },\r\n setStoreUploadFolder(state, folder) {\r\n state.uploadFolder = folder\r\n localStorage.setItem('uploadFolder', folder)\r\n },\r\n setStoreAutoReUpload(state, autoReUpload) {\r\n state.autoReUpload = autoReUpload;\r\n }\r\n },\r\n actions: {\r\n async fetchUserConfig({ commit }) {\r\n try {\r\n const response = await axios.get('/api/userConfig');\r\n commit('setUserConfig', response.data);\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n },\r\n async fetchBingWallPapers({ commit }) {\r\n try {\r\n const response = await axios.get('/api/bing/wallpaper');\r\n const wallpapers = response.data.data;\r\n const bingWallPapers = wallpapers.map(wallpaper => {\r\n return {\r\n url: 'https://www.bing.com' + wallpaper.url,\r\n };\r\n }\r\n );\r\n\r\n //预加载图片,阻塞直到图片加载完成\r\n await Promise.all(bingWallPapers.map(wallpaper => {\r\n return new Promise((resolve, reject) => {\r\n const img = new Image();\r\n img.onload = resolve;\r\n img.onerror = reject;\r\n img.src = wallpaper.url;\r\n });\r\n }));\r\n commit('setBingWallPapers', bingWallPapers);\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n },\r\n modules: {\r\n },\r\n plugins: [createPersistedState()]\r\n})\r\n","import { createRouter, createWebHistory } from 'vue-router'\r\nimport { ElMessage } from 'element-plus'\r\nimport cookies from 'vue-cookies'\r\nimport store from '../store'\r\nimport axios from '@/utils/axios'\r\n\r\n// 通用的管理员认证守卫\r\nconst adminAuthGuard = (to, from, next) => {\r\n // 从store中获取凭据\r\n const credentials = store.getters.credentials\r\n if (credentials === null && to.name !== 'adminLogin') {\r\n // 尝试未设置密码的情况\r\n const credentials = btoa('unset:unset')\r\n axios.get('/api/manage/check', {\r\n headers: {\r\n 'Authorization': 'Basic ' + credentials\r\n },\r\n withCredentials: true\r\n }).then(res => {\r\n if (res.status !== 200) {\r\n throw new Error('认证失败!')\r\n }\r\n store.commit('setCredentials', credentials)\r\n next()\r\n }).catch(err => {\r\n ElMessage.error('请先认证!')\r\n next({ name: 'adminLogin' })\r\n })\r\n } else {\r\n next()\r\n }\r\n}\r\n\r\n// 通用的用户认证守卫\r\nconst userAuthGuard = (to, from, next) => {\r\n let authCode = cookies.get('authCode');\r\n if (authCode === null && to.name !== 'login') {\r\n // 尝试未设置密码的情况\r\n axios.post('/api/login', {\r\n authCode: 'unset'\r\n }).then(res => {\r\n if (res.status !== 200) {\r\n throw new Error('认证失败!')\r\n }\r\n cookies.set('authCode', 'unset', '14d')\r\n authCode = 'unset'\r\n next()\r\n }).catch(err => {\r\n ElMessage.error('请先认证!')\r\n next({ name: 'login' })\r\n })\r\n } else {\r\n next()\r\n }\r\n}\r\n\r\nconst routes = [\r\n {\r\n path: '/',\r\n name: 'home',\r\n component: () => import('../views/UploadHome.vue'),\r\n beforeEnter: userAuthGuard\r\n },\r\n {\r\n path: '/login',\r\n name: 'login',\r\n component: () => import('../views/Login.vue')\r\n },\r\n {\r\n path: '/dashboard',\r\n name: 'dashboard',\r\n component: () => import('../views/AdminDashBoard.vue'),\r\n beforeEnter: adminAuthGuard\r\n },\r\n {\r\n path: '/customerConfig',\r\n name: 'customerConfig',\r\n component: () => import('../views/CustomerConfig.vue'),\r\n beforeEnter: adminAuthGuard\r\n },\r\n {\r\n path: '/systemConfig',\r\n name: 'systemConfig',\r\n component: () => import('../views/SystemConfig.vue'),\r\n beforeEnter: adminAuthGuard\r\n },\r\n {\r\n path: '/adminLogin',\r\n name: 'adminLogin',\r\n component: () => import('../views/AdminLogin.vue'),\r\n },\r\n {\r\n path: '/blockimg',\r\n name: 'blockimg',\r\n component: () => import('../views/BlockImage.vue'),\r\n },\r\n {\r\n path: '/whiteliston',\r\n name: 'whiteliston',\r\n component: () => import('../views/WhiteListOn.vue'),\r\n },\r\n {\r\n path: '/browse/:dir*',\r\n name: 'publicBrowse',\r\n component: () => import('../views/PublicBrowse.vue'),\r\n },\r\n {\r\n path: '/:pathMatch(.*)*',\r\n name: 'notFound',\r\n component: () => import('../views/NotFound.vue'),\r\n },\r\n]\r\n\r\nconst router = createRouter({\r\n history: createWebHistory(process.env.BASE_URL),\r\n routes\r\n})\r\n\r\nexport default router\r\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"js/\" + chunkId + \".\" + {\"100\":\"d7a2e066\",\"214\":\"e7ecaacc\",\"226\":\"f737e39a\",\"453\":\"cb331012\",\"489\":\"0082a34f\",\"512\":\"dfeda4a9\",\"600\":\"3d796c41\",\"601\":\"e07b6e33\",\"845\":\"1bb9a557\",\"861\":\"9a8e81f4\",\"917\":\"833cbf86\",\"947\":\"e85ac3eb\"}[chunkId] + \".js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"css/\" + chunkId + \".\" + {\"100\":\"07b87787\",\"214\":\"07b87787\",\"226\":\"6548e7b4\",\"453\":\"5cb6254c\",\"489\":\"8dcc9918\",\"512\":\"29d6cf9b\",\"601\":\"a3bc9ea4\",\"624\":\"7ee428af\",\"740\":\"a94dbb46\",\"845\":\"6b45e8e3\",\"861\":\"03a83a41\",\"917\":\"8529ad1e\",\"954\":\"bd5897b7\"}[chunkId] + \".css\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","var inProgress = {};\nvar dataWebpackPrefix = \"sanyue_imghub:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"/\";","if (typeof document === \"undefined\") return;\nvar createStylesheet = function(chunkId, fullhref, oldTag, resolve, reject) {\n\tvar linkTag = document.createElement(\"link\");\n\n\tlinkTag.rel = \"stylesheet\";\n\tlinkTag.type = \"text/css\";\n\tif (__webpack_require__.nc) {\n\t\tlinkTag.nonce = __webpack_require__.nc;\n\t}\n\tvar onLinkComplete = function(event) {\n\t\t// avoid mem leaks.\n\t\tlinkTag.onerror = linkTag.onload = null;\n\t\tif (event.type === 'load') {\n\t\t\tresolve();\n\t\t} else {\n\t\t\tvar errorType = event && event.type;\n\t\t\tvar realHref = event && event.target && event.target.href || fullhref;\n\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + errorType + \": \" + realHref + \")\");\n\t\t\terr.name = \"ChunkLoadError\";\n\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n\t\t\terr.type = errorType;\n\t\t\terr.request = realHref;\n\t\t\tif (linkTag.parentNode) linkTag.parentNode.removeChild(linkTag)\n\t\t\treject(err);\n\t\t}\n\t}\n\tlinkTag.onerror = linkTag.onload = onLinkComplete;\n\tlinkTag.href = fullhref;\n\n\n\tif (oldTag) {\n\t\toldTag.parentNode.insertBefore(linkTag, oldTag.nextSibling);\n\t} else {\n\t\tdocument.head.appendChild(linkTag);\n\t}\n\treturn linkTag;\n};\nvar findStylesheet = function(href, fullhref) {\n\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n\tfor(var i = 0; i < existingLinkTags.length; i++) {\n\t\tvar tag = existingLinkTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return tag;\n\t}\n\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n\tfor(var i = 0; i < existingStyleTags.length; i++) {\n\t\tvar tag = existingStyleTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\");\n\t\tif(dataHref === href || dataHref === fullhref) return tag;\n\t}\n};\nvar loadStylesheet = function(chunkId) {\n\treturn new Promise(function(resolve, reject) {\n\t\tvar href = __webpack_require__.miniCssF(chunkId);\n\t\tvar fullhref = __webpack_require__.p + href;\n\t\tif(findStylesheet(href, fullhref)) return resolve();\n\t\tcreateStylesheet(chunkId, fullhref, null, resolve, reject);\n\t});\n}\n// object to store loaded CSS chunks\nvar installedCssChunks = {\n\t524: 0\n};\n\n__webpack_require__.f.miniCss = function(chunkId, promises) {\n\tvar cssChunks = {\"100\":1,\"214\":1,\"226\":1,\"453\":1,\"489\":1,\"512\":1,\"601\":1,\"624\":1,\"740\":1,\"845\":1,\"861\":1,\"917\":1,\"954\":1};\n\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n\t\tpromises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(function() {\n\t\t\tinstalledCssChunks[chunkId] = 0;\n\t\t}, function(e) {\n\t\t\tdelete installedCssChunks[chunkId];\n\t\t\tthrow e;\n\t\t}));\n\t}\n};\n\n// no hmr\n\n// no prefetching\n\n// no preloaded","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t524: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(!/^(624|740|954)$/.test(chunkId)) {\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunksanyue_imghub\"] = self[\"webpackChunksanyue_imghub\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [504], function() { return __webpack_require__(4674); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["instance","axios","create","baseURL","interceptors","request","use","config","withAuthCode","authCode","cookies","headers","error","Promise","reject","response","status","ElMessage","router","push","render","_ctx","_cache","$props","$setup","$data","$options","_component_router_view","data","osInstance","imageViewerObserver","computed","mounted","this","$nextTick","initOverlayScrollbars","setupImageViewerObserver","beforeUnmount","disconnect","watch","methods","valid","document","body","scrollbars","theme","visibility","autoHide","autoHideDelay","dragScroll","clickScroll","overflow","x","y","console","log","MutationObserver","mutations","imageViewer","querySelector","options","observe","childList","subtree","__exports__","library","add","fas","app","createApp","App","head","createHead","component","FontAwesomeIcon","key","Object","entries","ElementPlusIconsVue","initDarkModeClass","htmlElement","documentElement","isDarkMode","store","state","cusDarkMode","useDarkMode","window","matchMedia","matches","now","Date","hour","getHours","commit","classList","remove","applyDarkModeClass","presetSiteTitle","userConfig","title","siteTitle","presetSiteIcon","existingIcons","querySelectorAll","forEach","icon","iconLink","createElement","appleIconLink","maskIconLink","rel","href","siteIcon","appendChild","dispatch","then","getters","subscribe","mutation","type","payload","ElementPlus","mount","catch","createStore","bingWallPapers","credentials","uploadMethod","uploadCopyUrlForm","compressConfig","customerCompress","undefined","compressQuality","compressBar","serverCompress","convertToWebp","storeUploadChannel","storeChannelName","storeAutoRetry","storeUploadNameType","uploadFolder","customUrlSettings","useCustomUrl","customUrlPrefix","adminUrlSettings","autoReUpload","storeUploadMethod","storeUploadFolder","localStorage","getItem","storeAutoReUpload","setUserConfig","setBingWallPapers","setCredentials","setUploadMethod","setUploadCopyUrlForm","setCompressConfig","value","setStoreUploadChannel","uploadChannel","setStoreChannelName","channelName","setStoreUploadNameType","setCustomUrlSettings","setStoreAutoRetry","setAdminUrlSettings","setUseDarkMode","setCusDarkMode","setStoreUploadFolder","folder","setItem","setStoreAutoReUpload","actions","fetchUserConfig","get","fetchBingWallPapers","wallpapers","map","wallpaper","url","all","resolve","img","Image","onload","onerror","src","modules","plugins","createPersistedState","adminAuthGuard","to","from","next","name","btoa","withCredentials","res","Error","err","userAuthGuard","post","routes","path","beforeEnter","createRouter","history","createWebHistory","process","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","__webpack_modules__","call","m","deferred","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","keys","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","f","e","chunkId","reduce","promises","u","miniCssF","g","globalThis","Function","obj","prop","prototype","hasOwnProperty","inProgress","dataWebpackPrefix","l","done","script","needAttach","scripts","getElementsByTagName","s","getAttribute","charset","nc","setAttribute","onScriptComplete","prev","event","clearTimeout","timeout","doneFns","parentNode","removeChild","setTimeout","bind","target","Symbol","toStringTag","p","createStylesheet","fullhref","oldTag","linkTag","nonce","onLinkComplete","errorType","realHref","code","insertBefore","nextSibling","findStylesheet","existingLinkTags","tag","dataHref","existingStyleTags","loadStylesheet","installedCssChunks","miniCss","cssChunks","installedChunks","installedChunkData","test","promise","loadingEnded","realSrc","message","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","id","chunkLoadingGlobal","self","__webpack_exports__"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"js/app.2625aa41.js","mappings":"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","sources":["webpack://sanyue_imghub/./src/utils/axios.js","webpack://sanyue_imghub/./src/App.vue?ab25","webpack://sanyue_imghub/./src/App.vue","webpack://sanyue_imghub/./src/App.vue?a135","webpack://sanyue_imghub/./src/main.js","webpack://sanyue_imghub/./src/store/index.js","webpack://sanyue_imghub/./src/router/index.js","webpack://sanyue_imghub/webpack/bootstrap","webpack://sanyue_imghub/webpack/runtime/chunk loaded","webpack://sanyue_imghub/webpack/runtime/compat get default export","webpack://sanyue_imghub/webpack/runtime/define property getters","webpack://sanyue_imghub/webpack/runtime/ensure chunk","webpack://sanyue_imghub/webpack/runtime/get javascript chunk filename","webpack://sanyue_imghub/webpack/runtime/get mini-css chunk filename","webpack://sanyue_imghub/webpack/runtime/global","webpack://sanyue_imghub/webpack/runtime/hasOwnProperty shorthand","webpack://sanyue_imghub/webpack/runtime/load script","webpack://sanyue_imghub/webpack/runtime/make namespace object","webpack://sanyue_imghub/webpack/runtime/publicPath","webpack://sanyue_imghub/webpack/runtime/css loading","webpack://sanyue_imghub/webpack/runtime/jsonp chunk loading","webpack://sanyue_imghub/webpack/startup"],"sourcesContent":["import axios from 'axios';\r\nimport cookies from 'vue-cookies';\r\nimport router from '@/router/index';\r\nimport { ElMessage } from 'element-plus'\r\n\r\n// 创建axios实例\r\nconst instance = axios.create({\r\n baseURL: process.env.NODE_ENV === 'production' ? '/' : '/api',\r\n});\r\n\r\n// 请求拦截器\r\ninstance.interceptors.request.use(\r\n (config) => {\r\n // 如果配置中标记了withAuthCode,则添加authCode到header\r\n if (config.withAuthCode) {\r\n const authCode = cookies.get('authCode');\r\n if (authCode) {\r\n config.headers['authCode'] = authCode;\r\n }\r\n }\r\n return config;\r\n },\r\n (error) => {\r\n return Promise.reject(error);\r\n }\r\n);\r\n\r\n// 响应拦截器\r\ninstance.interceptors.response.use(\r\n (response) => {\r\n return response;\r\n },\r\n (error) => {\r\n // 如果请求配置了withAuthCode且返回401,则跳转到登录页\r\n if (error.config?.withAuthCode && error.response?.status === 401) {\r\n ElMessage.error('认证失败,请重新登录!');\r\n router.push('/login');\r\n }\r\n return Promise.reject(error);\r\n }\r\n);\r\n\r\nexport default instance;\r\n","import { resolveComponent as _resolveComponent, openBlock as _openBlock, createBlock as _createBlock } from \"vue\";\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_router_view = _resolveComponent(\"router-view\");\n return _openBlock(), _createBlock(_component_router_view);\n}","import { mapGetters } from 'vuex';\nimport { OverlayScrollbars } from 'overlayscrollbars';\nexport default {\n data() {\n return {\n osInstance: null,\n imageViewerObserver: null\n };\n },\n computed: {\n ...mapGetters(['userConfig', 'useDarkMode'])\n },\n mounted() {\n // 初始化 OverlayScrollbars 悬浮滚动条\n this.$nextTick(() => {\n this.initOverlayScrollbars();\n this.setupImageViewerObserver();\n });\n },\n beforeUnmount() {\n // 清理 MutationObserver\n if (this.imageViewerObserver) {\n this.imageViewerObserver.disconnect();\n }\n },\n watch: {},\n methods: {\n initOverlayScrollbars() {\n try {\n // 检查是否已经初始化\n if (OverlayScrollbars.valid(document.body)) {\n this.osInstance = OverlayScrollbars(document.body);\n return;\n }\n\n // 应用到 body 实现全局悬浮滚动条\n this.osInstance = OverlayScrollbars(document.body, {\n scrollbars: {\n theme: 'os-theme-dark',\n visibility: 'auto',\n autoHide: 'scroll',\n autoHideDelay: 600,\n dragScroll: true,\n clickScroll: true\n },\n overflow: {\n x: 'hidden',\n y: 'scroll'\n }\n });\n console.log('OverlayScrollbars initialized successfully');\n } catch (error) {\n console.error('Failed to initialize OverlayScrollbars:', error);\n }\n },\n setupImageViewerObserver() {\n // 监听图片预览器的打开/关闭,动态控制 OverlayScrollbars\n this.imageViewerObserver = new MutationObserver(mutations => {\n const imageViewer = document.querySelector('.el-image-viewer__wrapper');\n if (imageViewer) {\n // 图片预览器打开,禁用滚动\n if (this.osInstance) {\n this.osInstance.options({\n overflow: {\n x: 'hidden',\n y: 'hidden'\n }\n });\n }\n } else {\n // 图片预览器关闭,恢复滚动\n if (this.osInstance) {\n this.osInstance.options({\n overflow: {\n x: 'hidden',\n y: 'scroll'\n }\n });\n }\n }\n });\n this.imageViewerObserver.observe(document.body, {\n childList: true,\n subtree: true\n });\n }\n }\n};","/* unplugin-vue-components disabled */import { render } from \"./App.vue?vue&type=template&id=1693ad63\"\nimport script from \"./App.vue?vue&type=script&lang=js\"\nexport * from \"./App.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"../node_modules/vue-loader/dist/exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { createApp } from 'vue'\r\nimport { createHead } from '@vueuse/head'; // 导入 createHead\r\nimport ElementPlus from 'element-plus'\r\nimport 'element-plus/es/components/message/style/css'\r\nimport 'element-plus/es/components/message-box/style/css'\r\n\r\nimport { library } from '@fortawesome/fontawesome-svg-core';\r\nimport { fas } from '@fortawesome/free-solid-svg-icons'; // 引入所有 solid 图标\r\nimport { FontAwesomeIcon } from '@fortawesome/vue-fontawesome';\r\n\r\nimport App from './App.vue'\r\nimport router from './router'\r\nimport store from './store'\r\n\r\nimport * as ElementPlusIconsVue from '@element-plus/icons-vue'\r\nimport 'element-plus/theme-chalk/dark/css-vars.css'\r\nimport './styles/global.css'\r\n\r\n// OverlayScrollbars 悬浮滚动条\r\nimport 'overlayscrollbars/overlayscrollbars.css'\r\n\r\n\r\nlibrary.add(fas);\r\n\r\nconst app = createApp(App);\r\nconst head = createHead(); // 创建 head 对象\r\n\r\napp.component('font-awesome-icon', FontAwesomeIcon);\r\nfor (const [key, component] of Object.entries(ElementPlusIconsVue)) {\r\n app.component(key, component)\r\n}\r\n\r\n// 根据 useDarkMode 的值添加或移除 dark 类\r\nconst initDarkModeClass = () => {\r\n const htmlElement = document.documentElement;\r\n let isDarkMode;\r\n\r\n // 判断用户是否是自定义模式\r\n if (store.state.cusDarkMode && store.state.useDarkMode !== null) {\r\n // 用户手动设置了暗色模式\r\n isDarkMode = store.state.useDarkMode;\r\n } else {\r\n // 跟随系统模式或时间\r\n isDarkMode = window.matchMedia('(prefers-color-scheme: dark)').matches;\r\n if (!isDarkMode) {\r\n const now = new Date();\r\n const hour = now.getHours();\r\n isDarkMode = hour >= 22 || hour < 6;\r\n }\r\n // 更新 useDarkMode 的值\r\n store.commit('setUseDarkMode', isDarkMode);\r\n }\r\n\r\n if (isDarkMode) {\r\n htmlElement.classList.add('dark');\r\n } else {\r\n htmlElement.classList.remove('dark');\r\n }\r\n};\r\n\r\nconst applyDarkModeClass = (isDarkMode) => {\r\n const htmlElement = document.documentElement;\r\n if (isDarkMode) {\r\n htmlElement.classList.add('dark');\r\n } else {\r\n htmlElement.classList.remove('dark');\r\n }\r\n};\r\n\r\n// 预设网站标题的函数\r\nconst presetSiteTitle = (userConfig) => {\r\n document.title = userConfig?.siteTitle || 'Sanyue ImgHub';\r\n};\r\n\r\n// 预设和更新网站图标的函数\r\nconst presetSiteIcon = (isDarkMode, userConfig) => {\r\n // 同时更改 icon apple-touch-icon 和 mask-icon\r\n const existingIcons = document.querySelectorAll('link[rel=\"icon\"], link[rel=\"apple-touch-icon\"], link[rel=\"mask-icon\"]');\r\n existingIcons.forEach(icon => icon.remove());\r\n\r\n const iconLink = document.createElement('link');\r\n const appleIconLink = document.createElement('link');\r\n const maskIconLink = document.createElement('link');\r\n iconLink.rel = 'icon';\r\n appleIconLink.rel = 'apple-touch-icon';\r\n maskIconLink.rel = 'mask-icon';\r\n\r\n if (isDarkMode) {\r\n iconLink.href = userConfig?.siteIcon || '/logo-dark.png';\r\n appleIconLink.href = userConfig?.siteIcon || '/logo-dark.png';\r\n maskIconLink.href = userConfig?.siteIcon || '/logo-dark.png';\r\n } else {\r\n iconLink.href = userConfig?.siteIcon || '/logo.png';\r\n appleIconLink.href = userConfig?.siteIcon || '/logo.png';\r\n maskIconLink.href = userConfig?.siteIcon || '/logo.png';\r\n }\r\n\r\n document.head.appendChild(iconLink);\r\n document.head.appendChild(appleIconLink);\r\n document.head.appendChild(maskIconLink);\r\n};\r\n\r\nstore.dispatch('fetchUserConfig').then(() => {\r\n // 初始化时应用 dark 模式\r\n initDarkModeClass();\r\n\r\n // 预设网站标题和图标\r\n presetSiteTitle(store.getters.userConfig);\r\n presetSiteIcon(store.state.useDarkMode, store.getters.userConfig);\r\n\r\n // 监听 useDarkMode 和 cusDarkMode 的变化\r\n store.subscribe((mutation, state) => {\r\n if (mutation.type === 'setUseDarkMode' && store.state.cusDarkMode) {\r\n applyDarkModeClass(state.useDarkMode);\r\n // 同时更新网站图标\r\n presetSiteIcon(state.useDarkMode, store.getters.userConfig);\r\n }\r\n\r\n // 监听 cusDarkMode 变化,当设置为 false 时重新初始化\r\n if (mutation.type === 'setCusDarkMode' && !mutation.payload) {\r\n // 切换到跟随系统模式,重新初始化\r\n initDarkModeClass();\r\n // 同时更新网站图标\r\n presetSiteIcon(store.state.useDarkMode, store.getters.userConfig);\r\n }\r\n });\r\n\r\n app.use(store).use(router).use(ElementPlus).mount('#app');\r\n}).catch(error => {\r\n console.error('Failed to load user configuration:', error);\r\n app.use(store).use(router).use(ElementPlus).use(head).mount('#app');\r\n})\r\n","import { createStore } from 'vuex'\r\nimport axios from '@/utils/axios';\r\nimport createPersistedState from 'vuex-persistedstate';\r\n\r\nexport default createStore({\r\n state: {\r\n userConfig: null,\r\n bingWallPapers: [],\r\n credentials: null,\r\n uploadMethod: 'default',\r\n uploadCopyUrlForm: '',\r\n compressConfig: {\r\n customerCompress: undefined,\r\n compressQuality: undefined,\r\n compressBar: undefined,\r\n serverCompress: undefined,\r\n convertToWebp: undefined,\r\n },\r\n storeUploadChannel: '',\r\n storeChannelName: null, // 指定的渠道名称,null表示从未选择,''表示用户主动清空\r\n storeAutoRetry: true,\r\n storeUploadNameType: '',\r\n uploadFolder: '',\r\n customUrlSettings: {\r\n useCustomUrl: 'false',\r\n customUrlPrefix: '',\r\n },\r\n adminUrlSettings: {\r\n useCustomUrl: 'false',\r\n customUrlPrefix: '',\r\n },\r\n autoReUpload: true,\r\n // 深色模式\r\n useDarkMode: null,\r\n cusDarkMode: false,\r\n },\r\n getters: {\r\n userConfig: state => state.userConfig,\r\n bingWallPapers: state => state.bingWallPapers,\r\n credentials: state => state.credentials,\r\n storeUploadMethod: state => state.uploadMethod,\r\n uploadCopyUrlForm: state => state.uploadCopyUrlForm,\r\n compressConfig: state => state.compressConfig,\r\n storeUploadChannel: state => state.storeUploadChannel,\r\n storeChannelName: state => state.storeChannelName,\r\n storeUploadNameType: state => state.storeUploadNameType,\r\n customUrlSettings: state => state.customUrlSettings,\r\n storeAutoRetry: state => state.storeAutoRetry,\r\n adminUrlSettings: state => state.adminUrlSettings,\r\n storeUploadFolder: (state) => {\r\n return state.uploadFolder || localStorage.getItem('uploadFolder') || ''\r\n },\r\n useDarkMode: state => state.useDarkMode,\r\n cusDarkMode: state => state.cusDarkMode,\r\n storeAutoReUpload: state => state.autoReUpload,\r\n },\r\n mutations: {\r\n setUserConfig(state, userConfig) {\r\n state.userConfig = userConfig;\r\n },\r\n setBingWallPapers(state, bingWallPapers) {\r\n state.bingWallPapers = bingWallPapers;\r\n },\r\n setCredentials(state, credentials) {\r\n state.credentials = credentials;\r\n },\r\n setUploadMethod(state, uploadMethod) {\r\n state.uploadMethod = uploadMethod;\r\n },\r\n setUploadCopyUrlForm(state, uploadCopyUrlForm) {\r\n state.uploadCopyUrlForm = uploadCopyUrlForm;\r\n },\r\n setCompressConfig(state, { key, value }) {\r\n state.compressConfig[key] = value;\r\n },\r\n setStoreUploadChannel(state, uploadChannel) {\r\n state.storeUploadChannel = uploadChannel;\r\n },\r\n setStoreChannelName(state, channelName) {\r\n state.storeChannelName = channelName;\r\n },\r\n setStoreUploadNameType(state, storeUploadNameType) {\r\n state.storeUploadNameType = storeUploadNameType;\r\n },\r\n setCustomUrlSettings(state, { key, value }) {\r\n state.customUrlSettings[key] = value;\r\n },\r\n setStoreAutoRetry(state, storeAutoRetry) {\r\n state.storeAutoRetry = storeAutoRetry;\r\n },\r\n setAdminUrlSettings(state, { key, value }) {\r\n state.adminUrlSettings[key] = value;\r\n },\r\n setUseDarkMode(state, useDarkMode) {\r\n state.useDarkMode = useDarkMode;\r\n },\r\n setCusDarkMode(state, cusDarkMode) {\r\n state.cusDarkMode = cusDarkMode;\r\n },\r\n setStoreUploadFolder(state, folder) {\r\n state.uploadFolder = folder\r\n localStorage.setItem('uploadFolder', folder)\r\n },\r\n setStoreAutoReUpload(state, autoReUpload) {\r\n state.autoReUpload = autoReUpload;\r\n }\r\n },\r\n actions: {\r\n async fetchUserConfig({ commit }) {\r\n try {\r\n const response = await axios.get('/api/userConfig');\r\n commit('setUserConfig', response.data);\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n },\r\n async fetchBingWallPapers({ commit }) {\r\n try {\r\n const response = await axios.get('/api/bing/wallpaper');\r\n const wallpapers = response.data.data;\r\n const bingWallPapers = wallpapers.map(wallpaper => {\r\n return {\r\n url: 'https://www.bing.com' + wallpaper.url,\r\n };\r\n }\r\n );\r\n\r\n //预加载图片,阻塞直到图片加载完成\r\n await Promise.all(bingWallPapers.map(wallpaper => {\r\n return new Promise((resolve, reject) => {\r\n const img = new Image();\r\n img.onload = resolve;\r\n img.onerror = reject;\r\n img.src = wallpaper.url;\r\n });\r\n }));\r\n commit('setBingWallPapers', bingWallPapers);\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n },\r\n modules: {\r\n },\r\n plugins: [createPersistedState()]\r\n})\r\n","import { createRouter, createWebHistory } from 'vue-router'\r\nimport { ElMessage } from 'element-plus'\r\nimport cookies from 'vue-cookies'\r\nimport store from '../store'\r\nimport axios from '@/utils/axios'\r\n\r\n// 通用的管理员认证守卫\r\nconst adminAuthGuard = (to, from, next) => {\r\n // 从store中获取凭据\r\n const credentials = store.getters.credentials\r\n if (credentials === null && to.name !== 'adminLogin') {\r\n // 尝试未设置密码的情况\r\n const credentials = btoa('unset:unset')\r\n axios.get('/api/manage/check', {\r\n headers: {\r\n 'Authorization': 'Basic ' + credentials\r\n },\r\n withCredentials: true\r\n }).then(res => {\r\n if (res.status !== 200) {\r\n throw new Error('认证失败!')\r\n }\r\n store.commit('setCredentials', credentials)\r\n next()\r\n }).catch(err => {\r\n ElMessage.error('请先认证!')\r\n next({ name: 'adminLogin' })\r\n })\r\n } else {\r\n next()\r\n }\r\n}\r\n\r\n// 通用的用户认证守卫\r\nconst userAuthGuard = (to, from, next) => {\r\n let authCode = cookies.get('authCode');\r\n if (authCode === null && to.name !== 'login') {\r\n // 尝试未设置密码的情况\r\n axios.post('/api/login', {\r\n authCode: 'unset'\r\n }).then(res => {\r\n if (res.status !== 200) {\r\n throw new Error('认证失败!')\r\n }\r\n cookies.set('authCode', 'unset', '14d')\r\n authCode = 'unset'\r\n next()\r\n }).catch(err => {\r\n ElMessage.error('请先认证!')\r\n next({ name: 'login' })\r\n })\r\n } else {\r\n next()\r\n }\r\n}\r\n\r\nconst routes = [\r\n {\r\n path: '/',\r\n name: 'home',\r\n component: () => import('../views/UploadHome.vue'),\r\n beforeEnter: userAuthGuard\r\n },\r\n {\r\n path: '/login',\r\n name: 'login',\r\n component: () => import('../views/Login.vue')\r\n },\r\n {\r\n path: '/dashboard',\r\n name: 'dashboard',\r\n component: () => import('../views/AdminDashBoard.vue'),\r\n beforeEnter: adminAuthGuard\r\n },\r\n {\r\n path: '/customerConfig',\r\n name: 'customerConfig',\r\n component: () => import('../views/CustomerConfig.vue'),\r\n beforeEnter: adminAuthGuard\r\n },\r\n {\r\n path: '/systemConfig',\r\n name: 'systemConfig',\r\n component: () => import('../views/SystemConfig.vue'),\r\n beforeEnter: adminAuthGuard\r\n },\r\n {\r\n path: '/adminLogin',\r\n name: 'adminLogin',\r\n component: () => import('../views/AdminLogin.vue'),\r\n },\r\n {\r\n path: '/blockimg',\r\n name: 'blockimg',\r\n component: () => import('../views/BlockImage.vue'),\r\n },\r\n {\r\n path: '/whiteliston',\r\n name: 'whiteliston',\r\n component: () => import('../views/WhiteListOn.vue'),\r\n },\r\n {\r\n path: '/browse/:dir*',\r\n name: 'publicBrowse',\r\n component: () => import('../views/PublicBrowse.vue'),\r\n },\r\n {\r\n path: '/:pathMatch(.*)*',\r\n name: 'notFound',\r\n component: () => import('../views/NotFound.vue'),\r\n },\r\n]\r\n\r\nconst router = createRouter({\r\n history: createWebHistory(process.env.BASE_URL),\r\n routes\r\n})\r\n\r\nexport default router\r\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"js/\" + chunkId + \".\" + {\"100\":\"d7a2e066\",\"214\":\"e7ecaacc\",\"226\":\"f737e39a\",\"453\":\"cb331012\",\"512\":\"dfeda4a9\",\"559\":\"09c9efe1\",\"600\":\"3d796c41\",\"601\":\"e07b6e33\",\"845\":\"1bb9a557\",\"861\":\"9a8e81f4\",\"917\":\"833cbf86\",\"947\":\"e85ac3eb\"}[chunkId] + \".js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"css/\" + chunkId + \".\" + {\"100\":\"07b87787\",\"214\":\"07b87787\",\"226\":\"6548e7b4\",\"453\":\"5cb6254c\",\"512\":\"29d6cf9b\",\"559\":\"6a658982\",\"601\":\"a3bc9ea4\",\"624\":\"7ee428af\",\"740\":\"a94dbb46\",\"845\":\"6b45e8e3\",\"861\":\"03a83a41\",\"917\":\"8529ad1e\",\"954\":\"bd5897b7\"}[chunkId] + \".css\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","var inProgress = {};\nvar dataWebpackPrefix = \"sanyue_imghub:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"/\";","if (typeof document === \"undefined\") return;\nvar createStylesheet = function(chunkId, fullhref, oldTag, resolve, reject) {\n\tvar linkTag = document.createElement(\"link\");\n\n\tlinkTag.rel = \"stylesheet\";\n\tlinkTag.type = \"text/css\";\n\tif (__webpack_require__.nc) {\n\t\tlinkTag.nonce = __webpack_require__.nc;\n\t}\n\tvar onLinkComplete = function(event) {\n\t\t// avoid mem leaks.\n\t\tlinkTag.onerror = linkTag.onload = null;\n\t\tif (event.type === 'load') {\n\t\t\tresolve();\n\t\t} else {\n\t\t\tvar errorType = event && event.type;\n\t\t\tvar realHref = event && event.target && event.target.href || fullhref;\n\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + errorType + \": \" + realHref + \")\");\n\t\t\terr.name = \"ChunkLoadError\";\n\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n\t\t\terr.type = errorType;\n\t\t\terr.request = realHref;\n\t\t\tif (linkTag.parentNode) linkTag.parentNode.removeChild(linkTag)\n\t\t\treject(err);\n\t\t}\n\t}\n\tlinkTag.onerror = linkTag.onload = onLinkComplete;\n\tlinkTag.href = fullhref;\n\n\n\tif (oldTag) {\n\t\toldTag.parentNode.insertBefore(linkTag, oldTag.nextSibling);\n\t} else {\n\t\tdocument.head.appendChild(linkTag);\n\t}\n\treturn linkTag;\n};\nvar findStylesheet = function(href, fullhref) {\n\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n\tfor(var i = 0; i < existingLinkTags.length; i++) {\n\t\tvar tag = existingLinkTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return tag;\n\t}\n\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n\tfor(var i = 0; i < existingStyleTags.length; i++) {\n\t\tvar tag = existingStyleTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\");\n\t\tif(dataHref === href || dataHref === fullhref) return tag;\n\t}\n};\nvar loadStylesheet = function(chunkId) {\n\treturn new Promise(function(resolve, reject) {\n\t\tvar href = __webpack_require__.miniCssF(chunkId);\n\t\tvar fullhref = __webpack_require__.p + href;\n\t\tif(findStylesheet(href, fullhref)) return resolve();\n\t\tcreateStylesheet(chunkId, fullhref, null, resolve, reject);\n\t});\n}\n// object to store loaded CSS chunks\nvar installedCssChunks = {\n\t524: 0\n};\n\n__webpack_require__.f.miniCss = function(chunkId, promises) {\n\tvar cssChunks = {\"100\":1,\"214\":1,\"226\":1,\"453\":1,\"512\":1,\"559\":1,\"601\":1,\"624\":1,\"740\":1,\"845\":1,\"861\":1,\"917\":1,\"954\":1};\n\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n\t\tpromises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(function() {\n\t\t\tinstalledCssChunks[chunkId] = 0;\n\t\t}, function(e) {\n\t\t\tdelete installedCssChunks[chunkId];\n\t\t\tthrow e;\n\t\t}));\n\t}\n};\n\n// no hmr\n\n// no prefetching\n\n// no preloaded","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t524: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(!/^(624|740|954)$/.test(chunkId)) {\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunksanyue_imghub\"] = self[\"webpackChunksanyue_imghub\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [504], function() { return __webpack_require__(4674); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["instance","axios","create","baseURL","interceptors","request","use","config","withAuthCode","authCode","cookies","headers","error","Promise","reject","response","status","ElMessage","router","push","render","_ctx","_cache","$props","$setup","$data","$options","_component_router_view","data","osInstance","imageViewerObserver","computed","mounted","this","$nextTick","initOverlayScrollbars","setupImageViewerObserver","beforeUnmount","disconnect","watch","methods","valid","document","body","scrollbars","theme","visibility","autoHide","autoHideDelay","dragScroll","clickScroll","overflow","x","y","console","log","MutationObserver","mutations","imageViewer","querySelector","options","observe","childList","subtree","__exports__","library","add","fas","app","createApp","App","head","createHead","component","FontAwesomeIcon","key","Object","entries","ElementPlusIconsVue","initDarkModeClass","htmlElement","documentElement","isDarkMode","store","state","cusDarkMode","useDarkMode","window","matchMedia","matches","now","Date","hour","getHours","commit","classList","remove","applyDarkModeClass","presetSiteTitle","userConfig","title","siteTitle","presetSiteIcon","existingIcons","querySelectorAll","forEach","icon","iconLink","createElement","appleIconLink","maskIconLink","rel","href","siteIcon","appendChild","dispatch","then","getters","subscribe","mutation","type","payload","ElementPlus","mount","catch","createStore","bingWallPapers","credentials","uploadMethod","uploadCopyUrlForm","compressConfig","customerCompress","undefined","compressQuality","compressBar","serverCompress","convertToWebp","storeUploadChannel","storeChannelName","storeAutoRetry","storeUploadNameType","uploadFolder","customUrlSettings","useCustomUrl","customUrlPrefix","adminUrlSettings","autoReUpload","storeUploadMethod","storeUploadFolder","localStorage","getItem","storeAutoReUpload","setUserConfig","setBingWallPapers","setCredentials","setUploadMethod","setUploadCopyUrlForm","setCompressConfig","value","setStoreUploadChannel","uploadChannel","setStoreChannelName","channelName","setStoreUploadNameType","setCustomUrlSettings","setStoreAutoRetry","setAdminUrlSettings","setUseDarkMode","setCusDarkMode","setStoreUploadFolder","folder","setItem","setStoreAutoReUpload","actions","fetchUserConfig","get","fetchBingWallPapers","wallpapers","map","wallpaper","url","all","resolve","img","Image","onload","onerror","src","modules","plugins","createPersistedState","adminAuthGuard","to","from","next","name","btoa","withCredentials","res","Error","err","userAuthGuard","post","routes","path","beforeEnter","createRouter","history","createWebHistory","process","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","__webpack_modules__","call","m","deferred","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","length","fulfilled","j","keys","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","f","e","chunkId","reduce","promises","u","miniCssF","g","globalThis","Function","obj","prop","prototype","hasOwnProperty","inProgress","dataWebpackPrefix","l","done","script","needAttach","scripts","getElementsByTagName","s","getAttribute","charset","nc","setAttribute","onScriptComplete","prev","event","clearTimeout","timeout","doneFns","parentNode","removeChild","setTimeout","bind","target","Symbol","toStringTag","p","createStylesheet","fullhref","oldTag","linkTag","nonce","onLinkComplete","errorType","realHref","code","insertBefore","nextSibling","findStylesheet","existingLinkTags","tag","dataHref","existingStyleTags","loadStylesheet","installedCssChunks","miniCss","cssChunks","installedChunks","installedChunkData","test","promise","loadingEnded","realSrc","message","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","id","chunkLoadingGlobal","self","__webpack_exports__"],"ignoreList":[],"sourceRoot":""} \ No newline at end of file diff --git a/js/app.2625aa41.js.map.gz b/js/app.2625aa41.js.map.gz new file mode 100644 index 0000000000000000000000000000000000000000..a8c4d3dc1ff0cd2e4591a26961438e56a0259609 GIT binary patch literal 15743 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 literal 0 HcmV?d00001