From 150a66184debed5385a19c561ee5f1bf948f459c Mon Sep 17 00:00:00 2001 From: crisy Date: Wed, 8 Jul 2026 16:21:39 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E5=BC=80=E5=8F=91:=20news-now=E6=96=B0?= =?UTF-8?q?=E9=97=BB=E8=B5=84=E8=AE=AF=E8=AE=A2=E9=98=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- plugins/newsnow/assets/main-C31b_SxH.css | 1 + plugins/newsnow/assets/main-CVdvgvJU.js | 153 +++++++++++++++++++++++ plugins/newsnow/index.html | 14 +++ plugins/newsnow/logo.png | Bin 0 -> 41254 bytes plugins/newsnow/package.json | 4 + plugins/newsnow/plugin.json | 37 ++++++ plugins/newsnow/preload.js | 91 ++++++++++++++ plugins/newsnow/viewer.html | 43 +++++++ 8 files changed, 343 insertions(+) create mode 100644 plugins/newsnow/assets/main-C31b_SxH.css create mode 100644 plugins/newsnow/assets/main-CVdvgvJU.js create mode 100644 plugins/newsnow/index.html create mode 100644 plugins/newsnow/logo.png create mode 100644 plugins/newsnow/package.json create mode 100644 plugins/newsnow/plugin.json create mode 100644 plugins/newsnow/preload.js create mode 100644 plugins/newsnow/viewer.html diff --git a/plugins/newsnow/assets/main-C31b_SxH.css b/plugins/newsnow/assets/main-C31b_SxH.css new file mode 100644 index 00000000..819df952 --- /dev/null +++ b/plugins/newsnow/assets/main-C31b_SxH.css @@ -0,0 +1 @@ +:root{--color-base: #27272a;--color-text: #d4d4d8;--color-accent: #71717a;--color-accent-hover: #a1a1aa;--color-highlight: #3b82f6;--radius-card: 12px;--card-height: 248px;--font-brand: "SF Mono", ui-monospace, Menlo, Monaco, Consolas, monospace}html.dark{color-scheme:dark;--color-base: #27272a;--color-text: #d4d4d8;--bg-page: #3f3f46}html.light{color-scheme:light;--color-base: #e4e4e7;--color-text: #27272a;--bg-page: #e4e4e7}*{box-sizing:border-box;margin:0;padding:0}html,body{width:100%;height:100%;overflow:hidden}body{font-family:system-ui,-apple-system,PingFang SC,Microsoft YaHei,sans-serif;font-size:13px;background:var(--bg-page);color:var(--color-text);-webkit-user-select:none;user-select:none}button,a{cursor:default;border:none;background:none;color:inherit;font:inherit;text-decoration:none}#app{width:100%;height:100%;display:flex;flex-direction:column;overflow:hidden;background:var(--bg-page)}#overlay-root{position:fixed;top:0;right:0;bottom:0;left:0;z-index:300;pointer-events:none}#overlay-root:not(:empty){pointer-events:auto}.btn-icon{opacity:.55;transition:opacity .2s;font-size:1.1rem;line-height:1;padding:2px}.btn-icon:hover{opacity:.9;cursor:pointer}.btn-icon.active{opacity:1;color:#fbbf24}.btn-icon.is-spinning{opacity:1;animation:nn-spin .8s linear infinite;pointer-events:none}@keyframes nn-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.nn-header{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;padding:8px 12px 6px;flex-shrink:0;gap:8px}.nn-logo-wrap{display:flex;align-items:center;gap:6px;justify-self:start;min-width:0}.nn-logo-img{width:32px;height:32px;border-radius:8px;object-fit:cover;flex-shrink:0}.nn-logo{width:32px;height:32px;border-radius:8px;background:linear-gradient(135deg,#71717a,#a1a1aa);display:flex;align-items:center;justify-content:center;font-size:9px;font-weight:700;color:#fff;flex-shrink:0}.nn-brand{font-family:var(--font-brand);font-size:1rem;line-height:1.05}.nn-brand .accent{color:var(--color-highlight)}.nn-version{font-size:.65rem;font-family:monospace;opacity:.55;margin-left:2px;align-self:flex-start;margin-top:2px}.nn-navbar{display:flex;flex-wrap:wrap;justify-content:center;padding:6px 8px;border-radius:var(--radius-card);background:#71717a1f;box-shadow:0 1px 4px #0000001f;font-size:.75rem;gap:2px}.nn-navbar button{padding:3px 6px;border-radius:5px;opacity:.8;cursor:pointer;transition:background .15s;white-space:nowrap}.nn-navbar button:hover{background:#71717a2e}.nn-navbar button.active{color:var(--color-highlight);font-weight:600;opacity:1}.nn-header-actions{justify-self:end;display:flex;gap:6px;align-items:center;color:var(--color-accent);font-size:1.05rem}.nn-main{flex:1;overflow-x:hidden;overflow-y:auto;padding:0 12px 12px;display:flex;flex-direction:column;min-height:0}.nn-cards-wrap{position:relative;flex:1;min-height:0;min-width:0}.nn-cards{display:flex;flex-wrap:wrap;gap:10px;align-content:start}.nn-card{height:var(--card-height);flex:1 1 calc(33.333% - 7px);min-width:220px;max-width:100%;border-radius:var(--radius-card);padding:10px;display:flex;flex-direction:column;position:relative;background:#64748b59}.nn-cards.has-custom-width .nn-card{flex:0 0 var(--card-width);width:var(--card-width);min-width:0;max-width:none}.nn-card-resize-e{position:absolute;right:0;top:28px;bottom:6px;width:6px;cursor:ew-resize;opacity:0;border-radius:3px;z-index:2}.nn-card-resize-s{position:absolute;left:6px;right:6px;bottom:0;height:6px;cursor:ns-resize;opacity:0;border-radius:3px;z-index:2}.nn-card:hover .nn-card-resize-e,.nn-card:hover .nn-card-resize-s,.nn-card-resize-e:hover,.nn-card-resize-s:hover{opacity:.45;background:#3b82f659}.nn-item-star-inline{margin-left:6px;font-size:.7rem;vertical-align:middle;cursor:pointer}.nn-card[data-color=green]{background:#22c55e59}.nn-card[data-color=red]{background:#ef444459}.nn-card[data-color=blue]{background:#3b82f659}.nn-card[data-color=indigo]{background:#6366f159}.nn-card[data-color=slate]{background:#64748b59}.nn-card[data-color=orange]{background:#f9731659}.nn-card[data-color=gray]{background:#6b728059}.nn-card[data-color=emerald]{background:#10b98159}.nn-card[data-color=teal]{background:#14b8a659}.nn-card[data-color=yellow]{background:#eab30859}.nn-card[data-color=purple]{background:#a855f759}.nn-card[data-color=pink]{background:#ec489959}.nn-card[data-color=cyan]{background:#06b6d459}.nn-card.is-highlight{outline:2px solid var(--color-highlight)}.nn-card-head{display:flex;justify-content:space-between;align-items:flex-start;margin:0 4px 6px;gap:4px}.nn-card-source{display:flex;gap:6px;align-items:center;min-width:0}.nn-card-icon-img{width:28px;height:28px;border-radius:50%;object-fit:cover;background:var(--color-base);flex-shrink:0}.nn-card-title{font-size:.95rem;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.nn-card-badge{font-size:.65rem;padding:1px 4px;border-radius:4px;background:#ffffff26;margin-left:4px}.nn-card-updated{font-size:.65rem;opacity:.65}.nn-card-actions{display:flex;gap:4px;flex-shrink:0}.nn-drag-handle{cursor:grab;touch-action:none}.nn-drag-handle:active{cursor:grabbing}.nn-card-body{flex:1;overflow-y:auto;border-radius:var(--radius-card);background:#27272ab3;padding:6px;margin-top:2px;min-height:0}html.light .nn-card-body{background:#ffffffbf}.nn-list-hot{list-style:none;display:flex;flex-direction:column;gap:4px}.nn-list-hot li a{display:flex;gap:6px;align-items:flex-start;padding:2px 3px;border-radius:5px;cursor:pointer;font-size:.8rem;line-height:1.35}.nn-list-hot li a:hover{background:#a3a3a326}.nn-rank{min-width:20px;height:20px;display:flex;align-items:center;justify-content:center;background:#a3a3a326;border-radius:5px;font-size:.75rem;flex-shrink:0}.nn-list-timeline{list-style:none;border-left:1px solid rgba(163,163,163,.5);margin-left:3px}.nn-list-timeline li{padding-left:6px;margin-bottom:6px}.nn-list-timeline .meta{font-size:.65rem;opacity:.5;display:flex;gap:4px;align-items:center}.nn-list-timeline .meta:before{content:"-";margin-left:-8px;margin-right:2px}.nn-list-timeline a{display:block;padding:2px 3px;margin-left:3px;border-radius:5px;cursor:pointer;line-height:1.35;font-size:.8rem}.nn-list-timeline a:hover{background:#a3a3a326}.nn-item-star{opacity:.35;font-size:.7rem;margin-left:auto;flex-shrink:0;cursor:pointer}.nn-item-star.active{opacity:1;color:#fbbf24}.nn-menu-wrap{position:relative}.nn-dropdown{position:absolute;right:0;top:calc(100% + 4px);z-index:150;min-width:168px;max-height:min(320px,50vh);overflow-y:auto}.nn-dropdown-inner{background:#27272af5;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:8px;padding:4px;box-shadow:0 6px 20px #00000059;border:1px solid rgba(163,163,163,.15)}html.light .nn-dropdown-inner{background:#fffffffa}.nn-dropdown li{list-style:none;padding:5px 8px;border-radius:6px;display:flex;gap:6px;align-items:center;cursor:pointer;font-size:.75rem;color:var(--color-text)}.nn-dropdown li:hover{background:#a3a3a326}.nn-dropdown li.disabled{opacity:.45;cursor:not-allowed}.nn-card.dragging{opacity:.35;transform:scale(.96);transition:transform .12s ease,opacity .12s ease;pointer-events:none}.nn-card-ghost{position:fixed;z-index:400;pointer-events:none;flex:none;transform:scale(1.05) rotate(-2deg);box-shadow:0 16px 36px #00000073;opacity:.95;transition:none;overflow:hidden}.nn-card-ghost .nn-card-body{display:none}.nn-card.drag-over{outline:2px dashed var(--color-highlight)}.nn-webview{position:fixed;top:0;right:0;bottom:0;left:0;z-index:350;display:flex;flex-direction:column;background:var(--bg-page)}.nn-webview-toolbar{display:flex;align-items:center;gap:8px;padding:8px 10px;border-bottom:1px solid rgba(163,163,163,.2);flex-shrink:0}.nn-webview-toolbar button{padding:4px 10px;border-radius:6px;background:#71717a33;cursor:pointer;font-size:.75rem;flex-shrink:0}.nn-webview-title{flex:1;font-size:.7rem;opacity:.65;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nn-webview-frame{flex:1;width:100%;border:none;background:#fff}.nn-empty{grid-column:1 / -1;width:100%;padding:32px 16px;text-align:center;opacity:.6;font-size:.85rem}.nn-overlay{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;padding:16px;z-index:300}.nn-backdrop{position:absolute;top:0;right:0;bottom:0;left:0;background:#00000073;cursor:pointer}.nn-modal{position:relative;width:min(480px,100%);max-height:min(480px,calc(100vh - 32px));overflow:auto;background:var(--bg-page);border-radius:10px;padding:14px;box-shadow:0 12px 40px #00000059;z-index:1}.nn-modal h2{font-size:.9rem;margin-bottom:10px;font-weight:600}.nn-modal input[type=search],.nn-modal input[type=text]{width:100%;padding:7px 9px;border-radius:7px;border:1px solid rgba(163,163,163,.35);background:var(--color-base);color:var(--color-text);margin-bottom:10px;font-size:.85rem}.nn-modal-list{list-style:none;display:flex;flex-direction:column;gap:2px;max-height:320px;overflow-y:auto}.nn-modal-list li{padding:7px 8px;border-radius:7px;cursor:pointer;display:flex;justify-content:space-between;gap:8px;font-size:.8rem;align-items:center}.nn-modal-list li:hover{background:#a3a3a326}.nn-modal-list li.is-selected{background:#3b82f62e;color:var(--color-highlight)}.nn-modal-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:10px}.nn-modal-actions button{padding:5px 10px;border-radius:7px;background:#71717a33;cursor:pointer;font-size:.8rem}.nn-modal-actions button:hover{background:#71717a52}.nn-row-link{cursor:pointer;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nn-card.is-loading .nn-card-body{opacity:.45}.nn-card-error{padding:8px;font-size:.75rem;color:#f87171;word-break:break-word}.nn-settings-tabs{display:flex;gap:4px;margin-bottom:10px}.nn-settings-tab{padding:4px 10px;border-radius:6px;font-size:.75rem;cursor:pointer;background:#71717a26}.nn-settings-tab.active{background:#3b82f638;color:var(--color-highlight);font-weight:600}.nn-settings-list{list-style:none;display:flex;flex-direction:column;gap:4px;max-height:320px;overflow-y:auto}.nn-settings-list li{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:7px;background:#71717a14}.nn-settings-list li.dragging{opacity:.45;pointer-events:none}.nn-settings-list li.drag-over{outline:1px dashed var(--color-highlight)}.nn-settings-drag{cursor:grab;opacity:.45;flex-shrink:0}.nn-settings-icon{width:22px;height:22px;border-radius:50%;object-fit:cover;background:var(--color-base);flex-shrink:0}.nn-settings-name{flex:1;min-width:0;font-size:.8rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nn-settings-toggle{display:none}.nn-switch{position:relative;display:inline-flex;align-items:center;width:34px;height:18px;flex-shrink:0;cursor:pointer}.nn-switch input{opacity:0;width:0;height:0;position:absolute}.nn-switch-slider{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:999px;background:#71717a73;transition:background .2s}.nn-switch-slider:before{content:"";position:absolute;width:14px;height:14px;left:2px;top:2px;border-radius:50%;background:#fff;transition:transform .2s}.nn-switch input:checked+.nn-switch-slider{background:#22c55ebf}.nn-switch input:checked+.nn-switch-slider:before{transform:translate(16px)}.nn-settings-ghost{position:fixed;z-index:500;pointer-events:none;list-style:none;opacity:.92;box-shadow:0 12px 28px #00000059;transform:scale(1.02);background:var(--bg-page);border-radius:7px;display:flex;align-items:center;gap:8px;padding:6px 8px;box-sizing:border-box}.nn-settings-hint{font-size:11px;opacity:.55;margin-top:8px}.nn-fav-header{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:8px}.nn-fav-header h2{margin:0;font-size:.9rem;font-weight:600;flex-shrink:0}.nn-fav-header input[type=text],.nn-fav-header input[type=search]{flex:1;max-width:200px;margin:0;padding:5px 8px;border-radius:6px;border:1px solid rgba(163,163,163,.35);background:var(--color-base);color:var(--color-text);font-size:.8rem}.nn-fav-modal-wrap{width:min(520px,calc(100vw - 32px))!important;height:min(480px,calc(100vh - 32px))!important;min-height:min(480px,calc(100vh - 32px))!important;max-height:min(480px,calc(100vh - 32px))!important;display:flex;flex-direction:column;overflow:hidden!important}.nn-fav-modal-wrap .nn-modal-list{max-height:none;flex:1;min-height:0}.nn-fav-body{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column}.nn-fav-body #fav-empty{flex:1;display:flex;align-items:center;justify-content:center;min-height:120px;margin:0}.nn-fav-list li{flex-direction:column;align-items:stretch;gap:6px}.nn-fav-row{display:flex;align-items:center;gap:6px;width:100%}.nn-tag-editor{width:100%;padding:6px 8px;border-radius:6px;background:#71717a1a}.nn-tag-input{width:100%;margin:0 0 6px;padding:5px 8px;border-radius:6px;border:1px solid rgba(163,163,163,.35);background:var(--color-base);color:var(--color-text);font-size:.75rem}.nn-tag-picks{display:flex;flex-wrap:wrap;gap:4px}.nn-tag-pick{cursor:pointer;border:none;font:inherit}.nn-tag-pick:hover{filter:brightness(1.1)}.nn-tag-empty{font-size:.7rem;opacity:.5}.nn-fav-tag{font-size:.65rem;padding:2px 7px;border-radius:999px;background:#3b82f633;color:var(--color-highlight);flex-shrink:0;line-height:1.4}.nn-fav-toolbar{display:flex;gap:6px;margin-bottom:8px;flex-wrap:wrap}.nn-fav-toolbar select{flex:1;min-width:90px;padding:4px 6px;border-radius:6px;border:1px solid rgba(163,163,163,.35);background:var(--color-base);color:var(--color-text);font-size:.75rem}.nn-fav-manage-btn{padding:4px 8px;border-radius:6px;font-size:.72rem;cursor:pointer;background:#71717a33;white-space:nowrap}.nn-fav-meta-panel{margin-bottom:8px;padding:8px;border-radius:7px;background:#71717a1a}.nn-fav-meta-row{display:flex;gap:6px;margin-bottom:6px}.nn-fav-meta-row:last-child{margin-bottom:0}.nn-fav-meta-row input{flex:1;margin:0;padding:5px 8px;border-radius:6px;border:1px solid rgba(163,163,163,.35);background:var(--color-base);color:var(--color-text);font-size:.75rem}.nn-fav-meta-row button{padding:4px 8px;border-radius:6px;font-size:.72rem;cursor:pointer;background:#71717a33;white-space:nowrap}.nn-settings-modal-wrap{width:min(480px,calc(100vw - 32px))!important}.nn-search-modal-wrap{width:min(680px,calc(100vw - 32px))!important;height:min(480px,calc(100vh - 32px))!important;max-height:min(480px,calc(100vh - 32px))!important;display:flex!important;flex-direction:column;overflow:hidden!important;padding:12px!important}.nn-search-modal-wrap>input[type=search]{flex-shrink:0;margin-bottom:10px;padding:10px 14px;border-radius:999px;border:none;background:#71717a38;font-size:.85rem}html.light .nn-search-modal-wrap>input[type=search]{background:#0000000f}.nn-search-body{flex:1;min-height:0;display:grid;grid-template-columns:minmax(0,38%) minmax(0,1fr);gap:10px}.nn-search-sidebar{overflow-y:auto;min-height:0;padding-right:4px}.nn-search-group{margin-bottom:10px}.nn-search-group-title{font-size:.7rem;font-weight:600;opacity:.45;margin-bottom:4px;padding:0 6px}.nn-search-list{list-style:none;display:flex;flex-direction:column;gap:2px}.nn-search-item{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:10px;cursor:pointer;transition:background .12s}.nn-search-item:hover{background:#a3a3a31f}.nn-search-item.is-selected{background:#a3a3a333}.nn-search-icon{width:24px;height:24px;border-radius:50%;object-fit:cover;background:var(--color-base);flex-shrink:0}.nn-search-item-text{flex:1;min-width:0;display:flex;align-items:baseline;gap:6px}.nn-search-name{font-size:.82rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.nn-search-tag{font-size:.68rem;opacity:.45;white-space:nowrap;flex-shrink:0}.nn-search-star{flex-shrink:0;font-size:.95rem}.nn-search-empty,.nn-search-preview-empty{display:flex;align-items:center;justify-content:center;height:100%;opacity:.5;font-size:.8rem;text-align:center;padding:16px}.nn-search-preview{min-height:0;overflow:hidden;display:flex;flex-direction:column}.nn-search-preview-inner{flex:1;min-height:0;display:flex;flex-direction:column}.nn-search-preview .nn-card.is-preview{flex:1;min-height:0;height:auto;max-width:none;width:100%}.nn-fav-date{font-size:.68rem;opacity:.4;flex-shrink:0;font-family:ui-monospace,monospace}.nn-fav-group{display:none}.nn-fav-edit{padding:2px 5px;border-radius:4px;font-size:.7rem;cursor:pointer;background:#71717a26;flex-shrink:0}.nn-fav-list button[data-remove]{padding:2px 6px;border-radius:4px;font-size:.7rem;cursor:pointer;background:#ef444426;color:#f87171;flex-shrink:0} diff --git a/plugins/newsnow/assets/main-CVdvgvJU.js b/plugins/newsnow/assets/main-CVdvgvJU.js new file mode 100644 index 00000000..1f10a582 --- /dev/null +++ b/plugins/newsnow/assets/main-CVdvgvJU.js @@ -0,0 +1,153 @@ +(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const a of document.querySelectorAll('link[rel="modulepreload"]'))o(a);new MutationObserver(a=>{for(const r of a)if(r.type==="childList")for(const s of r.addedNodes)s.tagName==="LINK"&&s.rel==="modulepreload"&&o(s)}).observe(document,{childList:!0,subtree:!0});function n(a){const r={};return a.integrity&&(r.integrity=a.integrity),a.referrerPolicy&&(r.referrerPolicy=a.referrerPolicy),a.crossOrigin==="use-credentials"?r.credentials="include":a.crossOrigin==="anonymous"?r.credentials="omit":r.credentials="same-origin",r}function o(a){if(a.ep)return;a.ep=!0;const r=n(a);fetch(a.href,r)}})();function N(e){const t=String(e||"").trim();return t?t.replace(/\/+$/,""):""}function te(e,t,n={}){const o=N(e);if(!o)throw new Error("API 基址不能为空");if(!t)throw new Error("sourceId 不能为空");const a=new URL("/api/s",`${o}/`);return a.searchParams.set("id",t),n.latest&&a.searchParams.set("latest","true"),a.toString()}function Te(e,t,n={}){if(!n.isDev)return e;try{const o=new URL(e),a=N(t),r=N("https://newsnow.busiyi.world");if(a===r&&o.pathname.startsWith("/api/"))return`${o.pathname}${o.search}`}catch{}return e}function de(e){try{const t=new URL(e);return t.protocol==="http:"||t.protocol==="https:"}catch{return!1}}const xe=["focus","hottest","realtime","updated"],Ae=[{id:"focus",label:"关注",kind:"column"},{id:"hottest",label:"热搜",kind:"column"},{id:"realtime",label:"新闻",kind:"column"},{id:"search",label:"搜索",kind:"action"}],Me={focus:"关注",hottest:"热搜",realtime:"新闻",updated:"更新"},Oe={tech:"科技",china:"国内",world:"国际",finance:"财经",sports:"体育",other:"其他"},Pe=["tech","china","world","finance","sports","other"],Fe={"newsnow-news":"realtime","newsnow-hot":"hottest","newsnow-browse":"focus"},De=["internal","ubrowser","external"];function Ue(e){return Fe[e]??"realtime"}function he(e){return e==="updated"?"realtime":xe.includes(e)?e:"realtime"}const Ne={redirect:"v2ex-share",name:"V2EX",column:"tech",home:"https://v2ex.com/",color:"slate",interval:6e5,title:"最新分享"},je={name:"知乎",type:"hottest",column:"china",home:"https://www.zhihu.com",color:"blue",interval:6e5},He={title:"实时热搜",name:"微博",type:"hottest",column:"china",home:"https://weibo.com",color:"red",interval:12e4},Ie={name:"联合早报",type:"realtime",desc:"来自第三方网站: 早晨报",column:"world",home:"https://www.zaobao.com",color:"red",interval:18e5},Re={title:"今日最热",name:"酷安",type:"hottest",column:"tech",home:"https://coolapk.com",color:"green",interval:6e5},Be={redirect:"mktnews-flash",name:"MKTNews",column:"finance",home:"https://mktnews.net",color:"indigo",interval:12e4,title:"快讯"},Ke={redirect:"wallstreetcn-quick",name:"华尔街见闻",type:"realtime",column:"finance",home:"https://wallstreetcn.com/",color:"blue",interval:3e5,title:"快讯"},_e={name:"抖音",type:"hottest",column:"china",home:"https://www.douyin.com",color:"gray",interval:6e5},ze={title:"主干道热帖",name:"虎扑",type:"hottest",column:"sports",home:"https://hupu.com",color:"red",interval:6e5},Xe={title:"头条",name:"懂球帝",type:"realtime",column:"sports",home:"https://www.dongqiudi.com",color:"green",interval:6e5},Ge={name:"AIHOT",type:"realtime",column:"tech",home:"https://aihot.virxact.com/all",color:"blue",interval:3e5},Ye={title:"热议",name:"百度贴吧",type:"hottest",column:"china",home:"https://tieba.baidu.com",color:"blue",interval:6e5},We={name:"今日头条",type:"hottest",column:"china",home:"https://www.toutiao.com",color:"red",interval:6e5},Ve={name:"IT之家",type:"realtime",column:"tech",home:"https://www.ithome.com",color:"red",interval:6e5},Je={title:"热榜",name:"澎湃新闻",type:"hottest",column:"china",home:"https://www.thepaper.cn",color:"gray",interval:18e5},Qe={name:"卫星通讯社",column:"world",home:"https://sputniknews.cn",color:"orange",interval:6e5},Ze={name:"参考消息",column:"world",home:"https://china.cankaoxiaoxi.com",color:"red",interval:18e5},et={redirect:"pcbeta-windows11",name:"远景论坛",type:"realtime",column:"tech",home:"https://bbs.pcbeta.com",color:"blue",interval:3e5,title:"Win11"},tt={redirect:"cls-telegraph",name:"财联社",type:"realtime",column:"finance",home:"https://www.cls.cn",color:"red",interval:3e5,title:"电报"},nt={redirect:"xueqiu-hotstock",name:"雪球",type:"hottest",column:"finance",home:"https://xueqiu.com",color:"blue",interval:12e4,title:"热门股票"},ot={title:"事件",name:"格隆汇",type:"realtime",column:"finance",home:"https://www.gelonghui.com",color:"blue",interval:12e4},rt={redirect:"fastbull-express",name:"法布财经",type:"realtime",column:"finance",home:"https://www.fastbull.cn",color:"emerald",interval:12e4,title:"快讯"},at={name:"Solidot",column:"tech",home:"https://solidot.org",color:"teal",interval:36e5},st={name:"Hacker News",type:"hottest",column:"tech",home:"https://news.ycombinator.com/",color:"orange",interval:6e5},it={name:"Product Hunt",type:"hottest",column:"tech",home:"https://www.producthunt.com/",color:"red",interval:6e5},ct={redirect:"github-trending-today",name:"Github",type:"hottest",column:"tech",home:"https://github.com/",color:"gray",interval:6e5,title:"Today"},lt={redirect:"bilibili-hot-search",name:"哔哩哔哩",type:"hottest",column:"china",home:"https://www.bilibili.com",color:"blue",interval:6e5,title:"热搜"},ut={name:"快手",type:"hottest",disable:"cf",column:"china",home:"https://www.kuaishou.com",color:"orange",interval:6e5},dt={name:"靠谱新闻",desc:"不一定靠谱,多看多思考",column:"world",home:"https://kaopu.news/",color:"gray",interval:18e5},ht={name:"金十数据",type:"realtime",column:"finance",home:"https://www.jin10.com",color:"blue",interval:6e5},ft={name:"百度热搜",type:"hottest",column:"china",home:"https://www.baidu.com",color:"blue",interval:6e5},pt={name:"牛客",type:"hottest",column:"china",home:"https://www.nowcoder.com",color:"blue",interval:6e5},mt={name:"少数派",type:"hottest",column:"tech",home:"https://sspai.com",color:"red",interval:6e5},gt={name:"稀土掘金",type:"hottest",column:"tech",home:"https://juejin.cn",color:"blue",interval:6e5},vt={title:"热点资讯",name:"凤凰网",type:"hottest",column:"china",home:"https://www.ifeng.com",color:"red",interval:6e5},yt={redirect:"chongbuluo-latest",name:"虫部落",column:"china",home:"https://www.chongbuluo.com/forum.php?mod=guide&view=newthread",color:"green",interval:18e5,title:"最新"},bt={title:"热门电影",name:"豆瓣",type:"hottest",column:"china",home:"https://www.douban.com",color:"green",interval:6e5},wt={title:"在线人数",name:"Steam",type:"hottest",column:"world",home:"https://store.steampowered.com",color:"blue",interval:6e5},St={redirect:"tencent-hot",name:"腾讯新闻",type:"hottest",column:"china",home:"https://news.qq.com/tag/aEWqxLtdgmQ=",color:"blue",interval:18e5,title:"综合早报"},Lt={title:"网络安全",name:"Freebuf",type:"hottest",column:"china",home:"https://www.freebuf.com/",color:"green",interval:6e5},$t={redirect:"qqvideo-tv-hotsearch",name:"腾讯视频",type:"hottest",column:"china",home:"https://v.qq.com/channel/tv",color:"blue",interval:18e5,title:"热搜榜"},Et={redirect:"iqiyi-hot-ranklist",name:"爱奇艺",type:"hottest",column:"china",home:"https://www.iqiyi.com",color:"green",interval:18e5,title:"热播榜"},x={v2ex:Ne,"v2ex-share":{name:"V2EX",column:"tech",home:"https://v2ex.com/",color:"slate",interval:6e5,title:"最新分享"},zhihu:je,weibo:He,zaobao:Ie,coolapk:Re,mktnews:Be,"mktnews-flash":{name:"MKTNews",column:"finance",home:"https://mktnews.net",color:"indigo",interval:12e4,title:"快讯"},wallstreetcn:Ke,"wallstreetcn-quick":{name:"华尔街见闻",type:"realtime",column:"finance",home:"https://wallstreetcn.com/",color:"blue",interval:3e5,title:"快讯"},"wallstreetcn-news":{name:"华尔街见闻",column:"finance",home:"https://wallstreetcn.com/",color:"blue",interval:18e5,title:"最新"},"wallstreetcn-hot":{name:"华尔街见闻",type:"hottest",column:"finance",home:"https://wallstreetcn.com/",color:"blue",interval:18e5,title:"最热"},"36kr":{redirect:"36kr-quick",name:"36氪",type:"realtime",disable:"cf",column:"tech",home:"https://36kr.com",color:"blue",interval:6e5,title:"快讯"},"36kr-quick":{name:"36氪",type:"realtime",disable:"cf",column:"tech",home:"https://36kr.com",color:"blue",interval:6e5,title:"快讯"},"36kr-renqi":{name:"36氪",type:"hottest",disable:"cf",column:"tech",home:"https://36kr.com",color:"blue",interval:6e5,title:"人气榜"},douyin:_e,hupu:ze,dongqiudi:Xe,aihot:Ge,tieba:Ye,toutiao:We,ithome:Ve,thepaper:Je,sputniknewscn:Qe,cankaoxiaoxi:Ze,pcbeta:et,"pcbeta-windows11":{name:"远景论坛",type:"realtime",column:"tech",home:"https://bbs.pcbeta.com",color:"blue",interval:3e5,title:"Win11"},cls:tt,"cls-telegraph":{name:"财联社",type:"realtime",column:"finance",home:"https://www.cls.cn",color:"red",interval:3e5,title:"电报"},"cls-depth":{name:"财联社",column:"finance",home:"https://www.cls.cn",color:"red",interval:6e5,title:"深度"},"cls-hot":{name:"财联社",type:"hottest",column:"finance",home:"https://www.cls.cn",color:"red",interval:6e5,title:"热门"},xueqiu:nt,"xueqiu-hotstock":{name:"雪球",type:"hottest",column:"finance",home:"https://xueqiu.com",color:"blue",interval:12e4,title:"热门股票"},gelonghui:ot,fastbull:rt,"fastbull-express":{name:"法布财经",type:"realtime",column:"finance",home:"https://www.fastbull.cn",color:"emerald",interval:12e4,title:"快讯"},"fastbull-news":{name:"法布财经",column:"finance",home:"https://www.fastbull.cn",color:"emerald",interval:18e5,title:"头条"},solidot:at,hackernews:st,producthunt:it,github:ct,"github-trending-today":{name:"Github",type:"hottest",column:"tech",home:"https://github.com/",color:"gray",interval:6e5,title:"Today"},bilibili:lt,"bilibili-hot-search":{name:"哔哩哔哩",type:"hottest",column:"china",home:"https://www.bilibili.com",color:"blue",interval:6e5,title:"热搜"},"bilibili-hot-video":{name:"哔哩哔哩",type:"hottest",disable:"cf",column:"china",home:"https://www.bilibili.com",color:"blue",interval:6e5,title:"热门视频"},"bilibili-ranking":{name:"哔哩哔哩",type:"hottest",disable:"cf",column:"china",home:"https://www.bilibili.com",color:"blue",interval:18e5,title:"排行榜"},kuaishou:ut,kaopu:dt,jin10:ht,baidu:ft,nowcoder:pt,sspai:mt,juejin:gt,ifeng:vt,chongbuluo:yt,"chongbuluo-latest":{name:"虫部落",column:"china",home:"https://www.chongbuluo.com/forum.php?mod=guide&view=newthread",color:"green",interval:18e5,title:"最新"},"chongbuluo-hot":{name:"虫部落",type:"hottest",column:"china",home:"https://www.chongbuluo.com/forum.php?mod=guide&view=hot",color:"green",interval:18e5,title:"最热"},douban:bt,steam:wt,tencent:St,"tencent-hot":{name:"腾讯新闻",type:"hottest",column:"china",home:"https://news.qq.com/tag/aEWqxLtdgmQ=",color:"blue",interval:18e5,title:"综合早报"},freebuf:Lt,qqvideo:$t,"qqvideo-tv-hotsearch":{name:"腾讯视频",type:"hottest",column:"china",home:"https://v.qq.com/channel/tv",color:"blue",interval:18e5,title:"热搜榜"},iqiyi:Et,"iqiyi-hot-ranklist":{name:"爱奇艺",type:"hottest",column:"china",home:"https://www.iqiyi.com",color:"green",interval:18e5,title:"热播榜"}},qt=["dongqiudi","producthunt","aihot","36kr-quick","36kr-renqi","cankaoxiaoxi","cls-telegraph","cls-depth","cls-hot","fastbull-express","fastbull-news","freebuf","jin10","kaopu","mktnews-flash","solidot","weibo","bilibili-hot-search","bilibili-hot-video","bilibili-ranking","kuaishou","toutiao"];function j(e){return!(!e||e.redirect||e.disable===!0||e.disable==="cf")}function ne(e,t){return Object.entries(t).filter(([,n])=>n.type===e&&j(n)).map(([n])=>n).sort((n,o)=>n.localeCompare(o))}function U(e,t){return Object.entries(t).filter(([,n])=>n.column===e&&j(n)).map(([n])=>n)}function kt(e=x){return{focus:[],hottest:ne("hottest",e),realtime:ne("realtime",e),updated:qt.filter(t=>j(e[t])),china:U("china",e),world:U("world",e),tech:U("tech",e),finance:U("finance",e),sports:U("sports",e)}}function H(e,t){return e.includes(t)?e.filter(n=>n!==t):[...e,t]}function Ct(e=x){return Object.entries(e).filter(([,t])=>j(t)).map(([t,n])=>({id:t,name:n.name,title:n.title,column:n.column,color:n.color,type:n.type}))}function Tt(e,t=Oe){const n=new Map;for(const o of e){const a=o.column||"other";n.has(a)||n.set(a,[]),n.get(a).push(o)}return Pe.filter(o=>n.has(o)).map(o=>({key:o,label:t[o]??o,items:n.get(o)}))}const xt=["focus","hottest","realtime"];function At(e){return Me[e]??e}function fe(e,t,n){return e==="focus"?[...t]:[...n[e]??[]]}function Mt(e,t){if(!(t!=null&&t.length))return e;const n=new Set(t);return e.filter(o=>!n.has(o))}function V(e,t){if(!(t!=null&&t.length))return e;const n=new Map(t.map((o,a)=>[o,a]));return[...e].sort((o,a)=>{const r=n.has(o)?n.get(o):Number.MAX_SAFE_INTEGER,s=n.has(a)?n.get(a):Number.MAX_SAFE_INTEGER;return r!==s?r-s:o.localeCompare(a)})}function oe(e,t,n){const o=[...e[t]??[]],a=o.indexOf(n);return a===-1?o.push(n):o.splice(a,1),{...e,[t]:o}}function pe(e,t,n){const o=e.filter(r=>r!==t),a=o.indexOf(n);return a===-1?(o.push(t),o):(o.splice(a,0,t),o)}function re(e,t,n,o){const a=fe(e,t,n),r=new Set(a),s=Object.entries(o).filter(([,c])=>j(c)?e==="focus"?!0:c.type===e:!1).map(([c])=>c).filter(c=>!r.has(c));return[...a,...s]}function Ot(e,t,n,o,a){const r=fe(e,t,n),s=Mt(r,o[e]??[]),c=a[e];return c!=null&&c.length?V(s,c):s}function Pt(e,t,n){const o={focus:[],hottest:[],realtime:[]};if(!Array.isArray(e))return o;const a=new Set(e);for(const r of n)a.has(r)||o.focus.push(r);for(const r of t.hottest??[])a.has(r)||o.hottest.push(r);for(const r of t.realtime??[])a.has(r)||o.realtime.push(r);return o}function Ft(e,t=Date.now()){return{id:String(e.id),sourceId:e.sourceId,title:e.title,url:e.url,savedAt:e.savedAt??t,tags:Array.isArray(e.tags)?[...e.tags]:[]}}function me(e){if(!e)return"";const t=typeof e=="number"?e:Date.parse(String(e));if(Number.isNaN(t))return"";const n=new Date(t),o=n.getFullYear(),a=String(n.getMonth()+1).padStart(2,"0"),r=String(n.getDate()).padStart(2,"0");return`${o}-${a}-${r}`}function Dt(e,t={}){var a,r;const n=((a=t.query)==null?void 0:a.trim().toLowerCase())??"",o=((r=t.tag)==null?void 0:r.trim())??"";return e.filter(s=>o&&!(s.tags??[]).includes(o)?!1:n?[s.title,s.url,s.sourceId,...s.tags??[],me(s.savedAt)].join(" ").toLowerCase().includes(n):!0)}function Ut(e){const t=new Set;for(const n of e)for(const o of n.tags??[])t.add(o);return[...t].sort((n,o)=>n.localeCompare(o))}function Nt(e,t){const n=t.trim();return!n||e.includes(n)?e:[...e,n].sort((o,a)=>o.localeCompare(a))}function jt(e,t,n){const o=n.trim();return o?e.map(a=>{if($(a)!==t)return a;const r=a.tags??[];return r.includes(o)?a:{...a,tags:[...r,o]}}):e}function X(e,t){return e.some(n=>$(n)===t)}function $(e){return`${e.sourceId}:${e.id}`}function ge(e,t){const n=$(t);return e.some(o=>$(o)===n)?e:[Ft(t),...e]}function ve(e,t){return e.filter(n=>$(n)!==t)}function Ht(e,t){const n=$(t);return X(e,n)?ve(e,n):ge(e,t)}const ae={baseUrl:"https://newsnow.busiyi.world",theme:"dark",openMode:"external",focusSources:[],enabledSources:null,disabledSources:{focus:[],hottest:[],realtime:[]},sourceOrder:{},cardLayout:{},cardSizes:{},favoriteTags:[],favorites:[],lastColumn:"updated"};function It(e){if(!e||typeof e!="object")return{...ae,disabledSources:{focus:[],hottest:[],realtime:[]},sourceOrder:{},cardLayout:{},cardSizes:{},favoriteTags:[],favorites:[]};const t=e.disabledSources&&typeof e.disabledSources=="object"?{focus:Array.isArray(e.disabledSources.focus)?[...e.disabledSources.focus]:[],hottest:Array.isArray(e.disabledSources.hottest)?[...e.disabledSources.hottest]:[],realtime:Array.isArray(e.disabledSources.realtime)?[...e.disabledSources.realtime]:[]}:{focus:[],hottest:[],realtime:[]};return{...ae,...e,focusSources:Array.isArray(e.focusSources)?[...e.focusSources]:[],enabledSources:Array.isArray(e.enabledSources)?[...e.enabledSources]:e.enabledSources,disabledSources:t,sourceOrder:e.sourceOrder&&typeof e.sourceOrder=="object"?{...e.sourceOrder}:{},cardLayout:Rt(e),cardSizes:Bt(e),favoriteTags:Array.isArray(e.favoriteTags)?[...e.favoriteTags]:[],favorites:Array.isArray(e.favorites)?e.favorites.map(n=>({...n,tags:Array.isArray(n.tags)?[...n.tags]:[]})):[]}}function Rt(e){return e!=null&&e.cardLayout&&typeof e.cardLayout=="object"?{...e.cardLayout}:{}}function Bt(e){if(!(e!=null&&e.cardSizes)||typeof e.cardSizes!="object")return{};const t={};for(const[n,o]of Object.entries(e.cardSizes)){if(!o||typeof o!="object")continue;const a={};typeof o.width=="number"&&o.width>0&&(a.width=o.width),typeof o.height=="number"&&o.height>0&&(a.height=o.height),(a.width||a.height)&&(t[n]=a)}return t}function M(){return typeof ztools<"u"?ztools:null}function Kt(e){try{const t=M();if(t!=null&&t.dbStorage)return t.dbStorage.getItem(e);const n=localStorage.getItem(e);return n?JSON.parse(n):null}catch{return null}}function _t(e,t){const n=M();n!=null&&n.dbStorage?n.dbStorage.setItem(e,t):localStorage.setItem(e,JSON.stringify(t))}function G(e){const t=M();if(t!=null&&t.showNotification){t.showNotification(e);return}}function zt(e){const t=M();if(t!=null&&t.shellOpenExternal){t.shellOpenExternal(e);return}window.open(e,"_blank")}function Xt(e){const t=M();if(!(t!=null&&t.createBrowserWindow)||!de(e))return!1;const n=`./viewer.html?url=${encodeURIComponent(e)}`;try{return!!t.createBrowserWindow(n,{width:1024,height:720,center:!0,minWidth:480,minHeight:360})}catch{return!1}}function Gt(e,t,n){if(!e||e==="#")return;const o=M();if(!o){window.open(e,"_blank");return}if(t==="external"){o.shellOpenExternal(e);return}if(t==="ubrowser"){if(Xt(e))return;if(o.shellOpenExternal){o.shellOpenExternal(e),G("独立窗口打开失败,已改用系统浏览器");return}window.open(e,"_blank");return}n(e)}function Yt(e){const t=M();t!=null&&t.onPluginEnter&&t.onPluginEnter(e)}const ye="newsnow-settings",Wt="1.0.0",_=kt(),se=Ct(),v=document.getElementById("app"),q=document.getElementById("overlay-root");let i=Vt(),L=he(i.lastColumn),O=null;const g=new Map;let A=null;function Vt(){return It(Kt(ye))}function w(){i.lastColumn=L,_t(ye,i)}function be(){const e=i.disabledSources,t=!e.focus.length&&!e.hottest.length&&!e.realtime.length;Array.isArray(i.enabledSources)&&t&&(i.disabledSources=Pt(i.enabledSources,_,i.focusSources),i.enabledSources=null,w())}function we(){const e=v.querySelector("#nn-main"),t={mainTop:(e==null?void 0:e.scrollTop)??0,mainLeft:(e==null?void 0:e.scrollLeft)??0,bodies:new Map};return v.querySelectorAll(".nn-card").forEach(n=>{const o=n.querySelector(".nn-card-body");o&&n.dataset.sourceId&&t.bodies.set(n.dataset.sourceId,o.scrollTop)}),t}function Se(e){requestAnimationFrame(()=>{const t=v.querySelector("#nn-main");t&&(t.scrollTop=e.mainTop,t.scrollLeft=e.mainLeft),e.bodies.forEach((n,o)=>{const a=v.querySelector(`.nn-card[data-source-id="${o}"] .nn-card-body`);a&&(a.scrollTop=n)})})}function Jt(){if(i.cardLayout.width||i.cardLayout.height)return;const e=Object.values(i.cardSizes).find(t=>(t==null?void 0:t.width)||(t==null?void 0:t.height));e&&(i.cardLayout={width:e.width,height:e.height},i.cardSizes={},w())}function z(){const{width:e,height:t}=i.cardLayout,n=document.documentElement,o=v.querySelector("#nn-cards");t?n.style.setProperty("--card-height",`${t}px`):n.style.removeProperty("--card-height"),e?(n.style.setProperty("--card-width",`${e}px`),o==null||o.classList.add("has-custom-width")):(n.style.removeProperty("--card-width"),o==null||o.classList.remove("has-custom-width"))}function Le(){const e=document.documentElement;e.classList.toggle("dark",i.theme==="dark"),e.classList.toggle("light",i.theme==="light")}function ie(e){if(!e)return"";const t=typeof e=="number"?e:Date.parse(String(e));if(Number.isNaN(t))return"";const n=Date.now()-t,o=Math.floor(n/6e4);if(o<1)return"刚刚";if(o<60)return`${o}分钟前`;const a=Math.floor(o/60);return a<24?`${a}小时前`:`${Math.floor(a/24)}天前`}function $e(e){return!e.favId||!e.favSource?null:{id:e.favId,sourceId:e.favSource,title:decodeURIComponent(e.favTitle||""),url:decodeURIComponent(e.favUrl||"")}}function Qt(e){const t=$e(e);if(t)return i.favorites=Ht(i.favorites,t),w(),$(t)}function Zt(e){const t=$e(e);if(!t)return;const n=$(t);return X(i.favorites,n)||(i.favorites=ge(i.favorites,t),w()),n}function ce(e){if(!e.dataset.favId)return;const t=X(i.favorites,$({sourceId:e.dataset.favSource,id:e.dataset.favId}));e.classList.contains("nn-item-star")&&(e.classList.toggle("active",t),e.textContent=t?"★":"☆")}function J(e){e.querySelectorAll("[data-fav-id]").forEach(t=>{t.addEventListener("click",n=>{n.preventDefault(),n.stopPropagation(),Qt(t.dataset),ce(t)})}),e.querySelectorAll(".nn-fav-link").forEach(t=>{t.addEventListener("auxclick",n=>{if(n.button!==1)return;n.preventDefault(),n.stopPropagation(),Zt(t.dataset);const o=t.querySelector(".nn-item-star");o?ce(o):G("已收藏")})})}function Q(){return be(),Ot(L,i.focusSources,_,i.disabledSources,i.sourceOrder)}function Z(e){const t=N(i.baseUrl),n=e.split("-")[0];return`${t}/icons/${n}.png`}function en(e){T(),q.innerHTML=` +
+
+ + ${e} + +
+ +
+ `,A=t=>{const n=t.target;n.dataset.action==="webview-close"&&T(),n.dataset.action==="webview-external"&&zt(e)},q.addEventListener("click",A)}function Y(e){Gt(e,i.openMode,en)}async function I(e,t={}){te(i.baseUrl,e,t);const n=async o=>{var u;const a=te(i.baseUrl,e,{latest:o});if((u=window.newsnowServices)!=null&&u.fetchSource)return window.newsnowServices.fetchSource(a);const r=Te(a,i.baseUrl,{isDev:!1}),s=await fetch(r);if(!s.ok)throw new Error(`HTTP ${s.status}`);const c=await s.json();if(c!=null&&c.error)throw new Error(c.message||"请求失败");return c};try{return await n(!!t.latest)}catch(o){if(t.latest)return n(!1);throw o}}async function C({refresh:e=!1,preserveScroll:t=!1}={}){var o,a;const n=Q();if(!n.length){g.clear(),k({preserveScroll:t});return}for(const r of n)!e&&((o=g.get(r))!=null&&o.data)||g.set(r,{loading:!0,data:((a=g.get(r))==null?void 0:a.data)??null,error:null});k({preserveScroll:t}),await Promise.all(n.map(async r=>{var s,c,u;if(!(!e&&((s=g.get(r))!=null&&s.data)&&!((c=g.get(r))!=null&&c.loading))){try{const d=await I(r,{latest:e});g.set(r,{loading:!1,data:d,error:null})}catch(d){g.set(r,{loading:!1,data:((u=g.get(r))==null?void 0:u.data)??null,error:d instanceof Error?d.message:"获取失败"})}k({preserveScroll:t})}})),tn()}function tn(){O&&requestAnimationFrame(()=>{const e=v.querySelector(`.nn-card[data-source-id="${O}"]`);e?(e.scrollIntoView({behavior:"smooth",block:"nearest"}),setTimeout(()=>{O=null,e.classList.remove("is-highlight")},2e3)):O=null})}function T(){A&&(q.removeEventListener("click",A),A=null),q.innerHTML=""}function R(e,t,n){T(),q.innerHTML=` +
+
+ +
+ `,A=a=>{a.target.dataset.action==="close"&&T()},q.addEventListener("click",A);const o=q.querySelector(".nn-modal");o&&n(o)}function le(e){const t=x[e];t&&(t.type==="hottest"?L="hottest":t.type==="realtime"?L="realtime":L="focus",i.focusSources.includes(e)||(i.focusSources=H(i.focusSources,e)),O=e,w(),T(),C())}function nn(e){const t=e.trim().toLowerCase();return t?se.filter(n=>n.name.toLowerCase().includes(t)||n.id.toLowerCase().includes(t)||n.title&&n.title.toLowerCase().includes(t)):se}function on(e,t){return e.length?e.map(n=>` +
+

${n.label}

+ +
`).join(""):'
无匹配数据源
'}function P(e){return e?`
${ee(e,{preview:!0})}
`:'
选择左侧数据源预览内容
'}async function rn(e){var t;if(!(!e||(t=g.get(e))!=null&&t.data)){g.set(e,{loading:!0,data:null,error:null});try{const n=await I(e);g.set(e,{loading:!1,data:n,error:null})}catch(n){g.set(e,{loading:!1,data:null,error:n instanceof Error?n.message:"获取失败"})}}}function Ee(){const e={query:"",selectedId:null,composing:!1};R("","",t=>{t.classList.add("nn-search-modal-wrap"),t.innerHTML=` + +
+ +
+
`;const n=t.querySelector("#search-input"),o=t.querySelector("#search-sidebar"),a=t.querySelector("#search-preview"),r=()=>{const l=nn(e.query);return{filtered:l,groups:Tt(l)}},s=l=>{var f;(!e.selectedId||!l.some(m=>m.id===e.selectedId))&&(e.selectedId=((f=l[0])==null?void 0:f.id)??null)},c=l=>{const f=o.querySelector(`[data-search-focus="${l}"]`);if(!f)return;const m=i.focusSources.includes(l);f.classList.toggle("active",m),f.textContent=m?"★":"☆"},u=()=>({onFocusChange:c}),d=(l=!1)=>{var f;o.querySelectorAll(".nn-search-item").forEach(m=>{m.classList.toggle("is-selected",m.dataset.source===e.selectedId)}),l&&((f=o.querySelector(".nn-search-item.is-selected"))==null||f.scrollIntoView({block:"nearest"}))},h=()=>{const{filtered:l,groups:f}=r();s(l);const m=o.scrollTop;o.innerHTML=on(f,e.selectedId),o.scrollTop=m},p=async l=>{var f;a&&(a.innerHTML=P(l),F(a,l,u()),l&&!((f=g.get(l))!=null&&f.data)&&(await rn(l),e.selectedId===l&&(a.innerHTML=P(l),F(a,l,u()))))},b=(l,f={})=>{e.selectedId!==l&&(e.selectedId=l,d(f.scrollIntoView??!1),p(l))};n.addEventListener("compositionstart",()=>{e.composing=!0}),n.addEventListener("compositionend",()=>{e.composing=!1,e.query=n.value,h(),p(e.selectedId)}),n.addEventListener("input",()=>{e.composing||(e.query=n.value,h(),p(e.selectedId))}),n.addEventListener("keydown",l=>{if(l.key==="Enter"&&e.selectedId&&(l.preventDefault(),le(e.selectedId)),l.key==="ArrowDown"||l.key==="ArrowUp"){l.preventDefault();const{filtered:f}=r(),m=f.map(E=>E.id),y=m.indexOf(e.selectedId??"");if(y===-1)return;const S=l.key==="ArrowDown"?m[Math.min(y+1,m.length-1)]:m[Math.max(y-1,0)];S&&b(S,{scrollIntoView:!0})}}),o.addEventListener("click",l=>{const f=l.target.closest("[data-search-focus]");if(f){l.stopPropagation();const y=f.dataset.searchFocus;i.focusSources=H(i.focusSources,y),w();const S=i.focusSources.includes(y);f.classList.toggle("active",S),f.textContent=S?"★":"☆",e.selectedId===y&&(a.innerHTML=P(y),F(a,y,u()));return}const m=l.target.closest("[data-source]");if(m){if(l.detail===2){le(m.dataset.source);return}b(m.dataset.source)}}),h(),p(e.selectedId),n.focus()})}function F(e,t,n={}){var a,r;if(!e||!t)return;const{onFocusChange:o}=n;(a=e.querySelector("[data-refresh]"))==null||a.addEventListener("click",async s=>{var u,d;s.stopPropagation();const c=e.querySelector("[data-refresh]");if(c){c.classList.add("is-spinning"),g.set(t,{loading:!0,data:((u=g.get(t))==null?void 0:u.data)??null,error:null}),e.innerHTML=P(t),F(e,t,n);try{const h=await I(t,{latest:!0});g.set(t,{loading:!1,data:h,error:null})}catch(h){g.set(t,{loading:!1,data:((d=g.get(t))==null?void 0:d.data)??null,error:h instanceof Error?h.message:"获取失败"})}e.innerHTML=P(t),F(e,t,n)}}),(r=e.querySelector("[data-focus]"))==null||r.addEventListener("click",s=>{s.stopPropagation(),i.focusSources=H(i.focusSources,t),w(),e.innerHTML=P(t),F(e,t,n),o==null||o(t)}),e.querySelectorAll("[data-url]").forEach(s=>{s.addEventListener("click",c=>{c.preventDefault(),c.stopPropagation(),Y(decodeURIComponent(s.dataset.url))})}),J(e)}function an(){const e={query:"",tag:"",editingKey:null,composing:!1},t=()=>[...new Set([...i.favoriteTags,...Ut(i.favorites)])].sort((r,s)=>r.localeCompare(s)),n=r=>{const s=r.querySelector("#fav-list"),c=r.querySelector("#fav-empty");if(!s||!c)return;const u=Dt(i.favorites,{query:e.query,tag:e.tag});if(!u.length){s.innerHTML="",s.hidden=!0,c.hidden=!1,c.textContent=i.favorites.length?"无匹配收藏":"暂无收藏资讯";return}if(s.hidden=!1,c.hidden=!0,s.innerHTML=u.map(d=>{const h=$(d),p=(d.tags??[]).map(f=>`${f}`).join(""),b=e.editingKey===h,l=t().map(f=>``).join("");return`
  • +
    + ${d.title} + ${p} + ${me(d.savedAt)} + + +
    +
    + +
    ${l||'暂无已有标签'}
    +
    +
  • `}).join(""),e.editingKey){const d=s.querySelector(`.nn-tag-input[data-key="${e.editingKey}"]`);d==null||d.focus()}},o=r=>{const s=r.querySelector("#fav-tag-filter");if(!s)return;const c=t();s.innerHTML=`${c.map(u=>``).join("")}`,s.value=e.tag},a=(r,s,c)=>{const u=c.trim();u&&(i.favorites=jt(i.favorites,s,u),i.favoriteTags=Nt(i.favoriteTags,u),w(),e.editingKey=s,o(r),n(r))};R("","",r=>{r.classList.add("nn-fav-modal-wrap"),r.innerHTML=` +
    +

    我的收藏

    + +
    +
    + +
    +
    + + +
    `;const s=r.querySelector("#fav-search"),c=r.querySelector("#fav-tag-filter");s.addEventListener("compositionstart",()=>{e.composing=!0}),s.addEventListener("compositionend",()=>{e.composing=!1,e.query=s.value,n(r)}),s.addEventListener("input",()=>{e.composing||(e.query=s.value,n(r))}),c.addEventListener("change",()=>{e.tag=c.value,n(r)}),r.addEventListener("click",u=>{const d=u.target.closest("[data-url]");if(d){Y(decodeURIComponent(d.dataset.url));return}const h=u.target.closest("[data-pick]");if(h){a(r,h.dataset.key,h.dataset.pick);return}const p=u.target.closest("[data-edit]");if(p){e.editingKey=e.editingKey===p.dataset.edit?null:p.dataset.edit,n(r);return}const b=u.target.closest("[data-remove]");b&&(i.favorites=ve(i.favorites,b.dataset.remove),e.editingKey===b.dataset.remove&&(e.editingKey=null),w(),o(r),n(r),k({preserveScroll:!0}))}),r.addEventListener("keydown",u=>{const d=u.target.closest(".nn-tag-input");!d||u.key!=="Enter"||(u.preventDefault(),a(r,d.dataset.key,d.value),d.value="")}),o(r),n(r),s.focus()})}function sn(){let e=L==="focus"||L==="hottest"||L==="realtime"?L:"realtime";R("","",t=>{t.classList.add("nn-settings-modal-wrap");const n=a=>{const r=t.querySelector("#source-settings");r&&(r.querySelectorAll("[data-toggle]").forEach(s=>{s.addEventListener("change",c=>{c.stopPropagation();const u=s.dataset.toggle,d=s.checked;a==="focus"?d?(i.focusSources.includes(u)||(i.focusSources=[...i.focusSources,u]),i.disabledSources={...i.disabledSources,focus:(i.disabledSources.focus??[]).filter(h=>h!==u)}):i.disabledSources=oe(i.disabledSources,a,u):d?i.disabledSources={...i.disabledSources,[a]:(i.disabledSources[a]??[]).filter(h=>h!==u)}:i.disabledSources=oe(i.disabledSources,a,u),w(),C({preserveScroll:!0})})}),r.querySelectorAll("li[data-id]").forEach(s=>{const c=s.querySelector(".nn-settings-drag");c==null||c.addEventListener("mousedown",u=>{u.preventDefault(),u.stopPropagation();const d=s.dataset.id,h=s.getBoundingClientRect(),p=s.cloneNode(!0);p.classList.add("nn-settings-ghost"),p.style.width=`${h.width}px`,p.style.height=`${h.height}px`,document.body.appendChild(p),s.classList.add("dragging");const b=(m,y)=>{p.style.left=`${m-h.width/2}px`,p.style.top=`${y-h.height/2}px`};b(u.clientX,u.clientY);const l=m=>{var S;b(m.clientX,m.clientY);const y=(S=document.elementFromPoint(m.clientX,m.clientY))==null?void 0:S.closest("li[data-id]");r.querySelectorAll("li").forEach(E=>E.classList.remove("drag-over")),y&&y!==s&&y.classList.add("drag-over")},f=m=>{var S,E;document.removeEventListener("mousemove",l),document.removeEventListener("mouseup",f),p.remove(),s.classList.remove("dragging");const y=(S=document.elementFromPoint(m.clientX,m.clientY))==null?void 0:S.closest("li[data-id]");if(r.querySelectorAll("li").forEach(B=>B.classList.remove("drag-over")),d&&y&&y.dataset.id&&y!==s){const B=re(a,i.focusSources,_,x),Ce=(E=i.sourceOrder[a])!=null&&E.length?V(B,i.sourceOrder[a]):B;if(i.sourceOrder[a]=pe(Ce,d,y.dataset.id),a==="focus"){const W=i.sourceOrder[a].filter(K=>i.focusSources.includes(K));for(const K of i.sourceOrder[a])W.includes(K)||W.push(K);i.focusSources=W}w(),o(),C({preserveScroll:!0})}};document.addEventListener("mousemove",l),document.addEventListener("mouseup",f)})}))},o=()=>{var u;const a=e,r=re(a,i.focusSources,_,x),s=new Set(i.disabledSources[a]??[]),c=(u=i.sourceOrder[a])!=null&&u.length?V(r,i.sourceOrder[a]):r;t.innerHTML=` +

    数据源设置

    +
    + ${xt.map(d=>``).join("")} +
    + +

    拖拽调整顺序;开关切换启用状态。各栏目与首页 Tab 一致。

    `,t.querySelectorAll("[data-settings-tab]").forEach(d=>{d.addEventListener("click",()=>{e=d.dataset.settingsTab,o()})}),n(a)};o()})}function cn(){R("API 基址",` +
    + + +
    `,e=>{var n,o;const t=e.querySelector("#api-input");(n=e.querySelector("[data-action='cancel']"))==null||n.addEventListener("click",a=>{a.stopPropagation(),T()}),(o=e.querySelector("[data-action='save']"))==null||o.addEventListener("click",a=>{a.stopPropagation();const r=N(t.value);if(!de(r)){G("请输入有效的 http(s) 地址");return}i.baseUrl=r,g.clear(),w(),T(),C({refresh:!0})}),t.focus()})}function ln(){const e={internal:"插件内 Web",ubrowser:"独立窗口",external:"系统浏览器"};R("打开方式",``,t=>{var n;(n=t.querySelector("#open-mode-list"))==null||n.addEventListener("click",o=>{const a=o.target.closest("li[data-mode]");a&&(o.stopPropagation(),i.openMode=a.dataset.mode,w(),t.querySelectorAll("#open-mode-list li").forEach(r=>{r.classList.toggle("is-selected",r.dataset.mode===i.openMode);const s=r.querySelector("span:last-child");s&&(s.textContent=r.dataset.mode===i.openMode?"✓":"")}),G(`已切换为:${e[i.openMode]}`))})})}function un(){return Ae.map(e=>e.kind==="action"?``:``).join("")}function dn(){const e=i.theme==="dark"?"浅色模式":"深色模式";return` + `}function ee(e,t={}){var p,b;const{preview:n=!1}=t,o=x[e];if(!o)return"";const a=g.get(e)??{},r=i.focusSources.includes(e),s=O===e,c=a.error?a.error:a.loading?"加载中...":(p=a.data)!=null&&p.updatedTime?`${ie(a.data.updatedTime)}更新`:"",u=((b=a.data)==null?void 0:b.items)??[],d=u.length>0?o.type==="hottest"?`
      ${u.map((l,f)=>{const m=$({sourceId:e,id:l.id}),y=X(i.favorites,m),S=l.url||"#";return`
    1. + + ${f+1} + ${l.title} + ${y?"★":"☆"} + +
    2. `}).join("")}
    `:`
      ${u.map(l=>{var S,E;const f=l.url||"#",m=l.id||`${l.title}-${l.pubDate||""}`;return`
    1. +
      ${ie(l.pubDate||((S=l.extra)==null?void 0:S.date))}${((E=l.extra)==null?void 0:E.info)||""}
      + ${l.title} +
    2. `}).join("")}
    `:a.error?`
    ${a.error}
    `:'
    暂无数据
    ',h=o.color||"slate";return` +
    +
    +
    + +
    +
    + ${o.name} + ${o.title?`${o.title}`:""} +
    +
    ${c}
    +
    +
    +
    + + + ${n?"":`⋮⋮`} +
    +
    +
    ${d}
    + ${n?"":`
    +
    `} +
    `}function k(e={}){const n=e.preserveScroll??!1?we():null,o=Q();v.innerHTML=` +
    +
    + NewsNow +
    +
    News
    +
    Now
    +
    + v${Wt} +
    + +
    + + + + + ${dn()} + +
    +
    +
    +
    +
    + ${o.length?o.map(a=>ee(a)).join(""):`
    ${L==="focus"?"点击卡片 ☆ 或「搜索」添加关注频道":"当前栏目无可用数据源"}
    `} +
    +
    +
    + `,mn(),z(),n&&Se(n)}function hn(){const e=v.querySelector("#nn-cards");e&&e.querySelectorAll(".nn-drag-handle").forEach(t=>{qe(t,e)})}function fn(e,t){const n=document.createElement("article");n.className=`${e.className} nn-card-ghost`.replace(/\bdragging\b/g,"").trim(),e.dataset.color&&(n.dataset.color=e.dataset.color),e.dataset.sourceId&&(n.dataset.sourceId=e.dataset.sourceId);const o=e.querySelector(".nn-card-head");return o&&n.appendChild(o.cloneNode(!0)),n.style.width=`${t.width}px`,n.style.height=`${t.height}px`,n}function qe(e,t){e.addEventListener("mousedown",n=>{n.preventDefault(),n.stopPropagation();const o=e.closest(".nn-card");if(!o)return;const a=o.dataset.sourceId,r=o.getBoundingClientRect(),s=fn(o,r);document.body.appendChild(s),o.classList.add("dragging");const c=(h,p)=>{s.style.left=`${h-r.width/2}px`,s.style.top=`${p-r.height/2}px`};c(n.clientX,n.clientY);const u=h=>{var b;c(h.clientX,h.clientY);const p=(b=document.elementFromPoint(h.clientX,h.clientY))==null?void 0:b.closest(".nn-card");t.querySelectorAll(".nn-card").forEach(l=>l.classList.remove("drag-over")),p&&p!==o&&p.classList.add("drag-over")},d=h=>{var b;document.removeEventListener("mousemove",u),document.removeEventListener("mouseup",d),s.remove(),o.classList.remove("dragging");const p=(b=document.elementFromPoint(h.clientX,h.clientY))==null?void 0:b.closest(".nn-card");if(t.querySelectorAll(".nn-card").forEach(l=>l.classList.remove("drag-over")),a&&p&&p!==o){const l=Q(),f=pe(l,a,p.dataset.sourceId);i.sourceOrder[L]=f,L==="focus"&&(i.focusSources=f),w(),k({preserveScroll:!0})}};document.addEventListener("mousemove",u),document.addEventListener("mouseup",d)})}function ke(e){if(e.classList.contains("is-preview"))return;const t=e.querySelector("[data-resize-w]"),n=e.querySelector("[data-resize-h]");t==null||t.addEventListener("mousedown",o=>{o.preventDefault(),o.stopPropagation();const a=o.clientX,r=v.querySelector(".nn-card:not(.is-preview)"),s=(r==null?void 0:r.getBoundingClientRect().width)??i.cardLayout.width??280,c=d=>{const h=Math.max(180,Math.round(s+d.clientX-a));i.cardLayout={...i.cardLayout,width:h},z()},u=()=>{document.removeEventListener("mousemove",c),document.removeEventListener("mouseup",u),w()};document.addEventListener("mousemove",c),document.addEventListener("mouseup",u)}),n==null||n.addEventListener("mousedown",o=>{o.preventDefault(),o.stopPropagation();const a=o.clientY,r=v.querySelector(".nn-card:not(.is-preview)"),s=(r==null?void 0:r.getBoundingClientRect().height)??i.cardLayout.height??248,c=d=>{const h=Math.max(160,Math.round(s+d.clientY-a));i.cardLayout={...i.cardLayout,height:h},z()},u=()=>{document.removeEventListener("mousemove",c),document.removeEventListener("mouseup",u),w()};document.addEventListener("mousemove",c),document.addEventListener("mouseup",u)})}function pn(e=v){e.querySelectorAll(".nn-card:not(.is-preview)").forEach(ke)}let ue=!1;function mn(){var n,o,a;v.querySelectorAll("[data-column]").forEach(r=>{r.addEventListener("click",()=>{L=r.dataset.column,w(),C()})}),(n=v.querySelector("[data-action='search']"))==null||n.addEventListener("click",()=>{Ee()}),(o=v.querySelector("[data-action='refresh-all']"))==null||o.addEventListener("click",r=>{const s=r.currentTarget;s.classList.add("is-spinning"),C({refresh:!0,preserveScroll:!0}).finally(()=>{s.classList.remove("is-spinning")})}),(a=v.querySelector("[data-action='go-top']"))==null||a.addEventListener("click",()=>{var r;(r=v.querySelector("#nn-main"))==null||r.scrollTo({top:0,behavior:"smooth"})});const e=v.querySelector("[data-action='menu']"),t=v.querySelector(".nn-dropdown");e==null||e.addEventListener("click",r=>{r.stopPropagation(),t&&(t.hidden=!t.hidden)}),ue||(ue=!0,document.addEventListener("click",()=>{const r=v.querySelector(".nn-dropdown:not([hidden])");r&&(r.hidden=!0)})),t==null||t.addEventListener("click",r=>{r.stopPropagation();const s=r.target.closest("li[data-menu]");if(!s||s.classList.contains("disabled"))return;const c=s.dataset.menu;t.hidden=!0,c==="theme"?(i.theme=i.theme==="dark"?"light":"dark",Le(),w(),k({preserveScroll:!0})):c==="favorites"?an():c==="sources"?sn():c==="api"?cn():c==="open-mode"&&ln()}),v.querySelectorAll("[data-refresh]").forEach(r=>{r.addEventListener("click",async s=>{var u,d;s.stopPropagation();const c=r.dataset.refresh;r.classList.add("is-spinning"),g.set(c,{loading:!0,data:((u=g.get(c))==null?void 0:u.data)??null,error:null}),D(c);try{const h=await I(c,{latest:!0});g.set(c,{loading:!1,data:h,error:null})}catch(h){g.set(c,{loading:!1,data:((d=g.get(c))==null?void 0:d.data)??null,error:h instanceof Error?h.message:"获取失败"})}D(c)})}),v.querySelectorAll("[data-focus]").forEach(r=>{r.addEventListener("click",s=>{s.stopPropagation();const c=r.dataset.focus;i.focusSources=H(i.focusSources,c),w(),D(c)})}),v.querySelectorAll("[data-url]").forEach(r=>{r.addEventListener("click",s=>{s.preventDefault(),s.stopPropagation(),Y(decodeURIComponent(r.dataset.url))})}),J(v),pn(),hn()}function D(e){const t=v.querySelector("#nn-cards"),n=v.querySelector(`.nn-card[data-source-id="${e}"]`);if(!t||!n){k({preserveScroll:!0});return}const o=we(),a=document.createElement("div");a.innerHTML=ee(e);const r=a.firstElementChild;r&&(n.replaceWith(r),gn(r),Se(o))}function gn(e){var o,a;(o=e.querySelector("[data-refresh]"))==null||o.addEventListener("click",async r=>{var u,d;r.stopPropagation();const s=e.querySelector("[data-refresh]"),c=s==null?void 0:s.dataset.refresh;if(!(!c||!s)){s.classList.add("is-spinning"),g.set(c,{loading:!0,data:((u=g.get(c))==null?void 0:u.data)??null,error:null}),D(c);try{const h=await I(c,{latest:!0});g.set(c,{loading:!1,data:h,error:null})}catch(h){g.set(c,{loading:!1,data:((d=g.get(c))==null?void 0:d.data)??null,error:h instanceof Error?h.message:"获取失败"})}D(c)}}),(a=e.querySelector("[data-focus]"))==null||a.addEventListener("click",r=>{r.stopPropagation();const s=e.querySelector("[data-focus]"),c=s==null?void 0:s.dataset.focus;c&&(i.focusSources=H(i.focusSources,c),w(),D(c))}),e.querySelectorAll("[data-url]").forEach(r=>{r.addEventListener("click",s=>{s.preventDefault(),s.stopPropagation(),Y(decodeURIComponent(r.dataset.url))})}),J(e);const t=e.querySelector(".nn-drag-handle"),n=v.querySelector("#nn-cards");t&&n&&qe(t,n),ke(e)}function vn({code:e}){L=he(Ue(e)),w(),C()}function yn(){document.addEventListener("keydown",e=>{e.target.matches("input, textarea, [contenteditable]")||((e.metaKey||e.ctrlKey)&&e.key.toLowerCase()==="k"&&(e.preventDefault(),Ee()),e.key==="Escape"&&q.innerHTML&&T())})}function bn(){Yt(vn)}Le();be();Jt();z();yn();bn();k();C(); diff --git a/plugins/newsnow/index.html b/plugins/newsnow/index.html new file mode 100644 index 00000000..e7c91808 --- /dev/null +++ b/plugins/newsnow/index.html @@ -0,0 +1,14 @@ + + + + + + NewsNow + + + + +
    +
    + + diff --git a/plugins/newsnow/logo.png b/plugins/newsnow/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..4878a79eeac5a67000f3aa3415a5f1f6ed45ed4d GIT binary patch literal 41254 zcmV)8K*qm`P)PR@L6;oSV9Dhv~^VX*8n%!UjYVK}Z@&ARPYB{`0p@5*SRf@#EQGBN2p1 zhUdRAIT;)KJ%0=W0m=a+Fi{|B@{A_u>3s7Ed)NQFYM*oacK7X`?t8oYcF&yM`?o8t zTD5A`T2-}c-+McxGj-K<8uWUpx3rkLiwhaO#U|b(eKK?x=F@SQC+|#PJ>F+K?@Y+O z4v!V`99_awh0~94s&!74Ze@NhIZl=Sl;}1yHqWP*&G623vFnAC0h`Tq$A)X_xGyX% zWnW47OgckX&?YVf(O`L5^N&5EC*JdJJ@6lXRQG+~ztX+`?{C*V|LWUx&%gW@-3#vi z?r+vAzU!^JdllbE-0@9>;5)xXcYo(UKePA__?;r|$!#O+cWw~hK|RNY>eKh{LRN4W zdRPy4lkf1dyP-Q4chT-$-}zSE^&P-Na5wQ0az5!3g?Cf`bZ`&yI8L?BJ>T^$8ez50 zccHT(++ObX_^HU@bVKAm)7QJc^P6ADBqqK+LLEZ>XJA&us_z}I`mH8c= zzI)Yf->PHd_fY>n+PELw``zC}Id=WswD+CgfE-`Xn0%w|!4E#|I{W^At$Tj@oqFQ^ zf1vrtAJJfCS#?!y!V{$pIdXqxMF;M^M-TqWFY5m9{cb(}Z@)(?zwyhO{KQ{q_VGux z^Vw&#Ywt7Kx$jx+eC}D|&t>HJzP;L&LEip-+O>bLb{_!y_G!1rNASF3aM8hiI-77g zE;>LPC%{qijpSS#9wV>wI~|PL-g9ujMsW{4eJnixgm68L`rz?X#OcVoSy~^*%ww(o zu#1bZiRaa`*MW97*tPdLdFaUcpuY3C=z!}GjM5&C@;vnP2*dOqLPxGYDm%q+H+6R) z%l5s`YR5je?Y-LRa{4&HV-L1*G4V_GKd0G89@NBN{h1E_^3UmkfBW5f=m)+>5B=KD z>A?N>sE<=`#G_Bkk*j`R2k!W^9{dmQ)YCuu@0C9C2Wmb3fVR&c(Dwd{+P$vIeoyTI zs0QlPwI)-_m?E4)!pXYQDwu_)>ZA-gZC{hAcS20mU7bDj;5`7<2{D;m#*JfwzORRd zuea+mG<{sFhg0jb>#ag}8<($<>}QBcY;1EldEbwfb8WiA z*tTfDm85nJ2qy?9JRG9z_O#7{Je;nQwhsonq^cDjd`SHdyjPFB<87?eKc@Y6d`eZX zr_;H@DG?*!!qZRb(O>xmJ@rFx(*!H;&ZT*U`GeX$+0uj?xFI~uTA;)^OPsjCQ3D+e zIJF^kBpsoRsZtZt2`?X_P_2`psaH|=lyKT~1#)Z(^zCHwpQ!9?_v?J;pY?+7$|2Sp z120=I|43e~h|Qf00sA`{vVCH!M|f5`<+#f(Qwx+yDr-lgeyxHs=TqV%Ht1_2B(-P~E)^F$hEO*_Fbhe({ zUbbHT+Pp>s{#+l%YIq_9Y?NCYg^yZ9wIdWMDGm{^8?i_Q3cLMftgBK%Jf?x#gB%y3bpd zC6P=zAp&xq4Bj_pBKnZlfiWn%DtOlz0?3HI?q0>jwMB$H=*%>u)b9` z8Y>up!0?ZZnDx|CLo_`xQf53eoZ2Wj0@x|nhmL}EZ>L_jU`^(!(5xXpCOWF^;l^Mt ze|9R9PB%oFz+`4dUE-&E=UR+~P6N5lu%R43U761$z3Xn1@UEkHdgQUwgHvmh?VF)R zZsDkjxbsZ#ObUn(M{>9SyqddbR!)*30%8Y2TmyiJtv0zoKpPbDDN4mO7)6G4W>*=Qr={5?N)_9x(XhlasTt<%NP{d9S z9eep$kZ07~3W#l1aci8i`<@9NJF3Uuu@>#U2>K* z38v-_Y3>hxTTg%NBRbJ%ssM|l@04_iPfO4JkKfYF(xO^8ZZxTkK?NslWhM6hqIszf zz=$WU=4o`9Nv8shuaO4O*eH71p~;4IJUm6XQRRA0@6|`4$HzGL8bJT}UyT#jR;yyg zWO3#c+%z$_sHgwu|Iq$BKP5qPtZcaA(OHXp2Ycj~e?gOb_o~C5ehLTfE-lENIlv&# zFF39M_tBNtI_}XWCr*v(oS5R2N>D+j^Kc{Z%3jaIt%S?45i~Mypr$*sBRe!U0wW*S za}An(;ohfc<34(>gv9nX;mC>59n?Q*P1Vx2g9r8CuX39G>@!Yw6r64~!{3Xade?7j z=IJNZT3J$?)3n3~>X~*+HCt;vo-jDe3e&uj#Z0eJp~;ho)Z<))%F!G@ljsk@;D z&$CLSaotL>&Z-Pv3g=xnA};$#a<;!^YfZJ?hSjD|?i8 z<|M;`eJAYS(E}&i9TwRBU;eoc-g8f;89i{nCh9*L_SEnEPjwdOR2VPY97iux$=fQ+ zLT084>WUTtQ|G&E|PK zr^5rkIzpa=dvVZZIB+6tAgi#C0q0a~uUmztIQ)9_|My$!FE6iF#WkDwJm0Ja58SIs zav~>X)u6A=L`QwTb@>sw{7BtN%^%7Qder4$Jyza!yLW4RosI_58sfF_HQD3ng{A>_ zX2+?@jT5C2sKe_qPK+bsW$ssgE+y5tU{cLD<|zouCmzw z;`>!#UtVxr)+bDS>q;@ILa>mePz(0TSB-P~3a#wG6z1IV<5V>;(%2|G)p}#P3q%9> zjQdu`u_CW6^SE$Q!xeGpm~jyLZ-xntQ-;@->0Dg*PWA(LXVH}0@eUdsFd(j zM%?4abd_BEC@JA<315@KFitEr5MCWwSO@;D%!;~v*Bu&kyO~pVGUUo2qsi3xdVUR{txPlub7K5>acckvb_FE-st!RFY5Z1Z zru;7jMg9exuEm*^|DuWZKd0sAnom)_TW_s?wnHLt|kk(Zx% zNP&u`ii*vQP{Yt2H$${SdgR1S%5Y>bBBWf@*7(|#23)rrLDT34Y8rJM!!d67jGyOP z14e^>$m|QLFOV#|=T(+@?^ErYvY_XPEE$>u@ywyYl38!h`vK)`2 zbEt6S&Rh9JdL67OYi35;qy0R=4cqowl1r+5LD7^zCkLtAx)WwV>tUw$5)!VgAt)Vk zBR|(25)$M-!!rS~)e_|my-~-Y@NsE!o7$cR6xD!Xp+-|KYK%Y;nTZ?+I)*oPq6_;< z(om;#j=qtUP8d4PT6&%1%f}#NRq@D={V{rt%p`O9a0Ff6vWV*SdWvkdRn=lkooQKX zrC0?r`0$h>T`_s4d%UC3OQ63EluKb5hJYYtRz`ECjb2U7<_TvwI#=K7*RXU{a%ZY} ze?XXFxzhk~c zWEpyJc-|2xd0wE*Ve*RpaXOnKjV5Y3wCStiLTj0m!8b?p!}8N960sV1m_bnvM|n7w zJJ<1`3z^m>hnP4yL`V~Ndi18%X31;flzXo|t)>P+Q$)Vk^K_PBs1H$^R-x6)S@=qi zCK(E$cc)TwQCGt{9v(r`sMQ>UF0Im0K{f3Ug300WBM@bdBwr<0 zVKw;<@)5mups)lVc__iFK`!%h%4*7ti7o>43{{eE^~Ib>D>9Mx88w$gQU!>#Lz$-odvez~F0MAn0;EQrVbY1r3Z^M!DaKxNmVPP78&BkJ`56 zrM28BGKM_KAQovQ5IR2%FH8pqO1Yv}b_|OMvg{_ggH<^+;uPdNAq7Y|kspa1k9a-N zlHe^N5AZfJJRc%&5|+dgfF@@oI1netV~M_{?9j{#2ZHMvG$7^C?}5o#6UGN7EJ;bo-E>p&keG~_oVpj-g6 z7bO`6op~J$f{fv9ga##`Z$4R=JD1huJE$`9xy09<$Pd9QOJS5q~&4Zky zwRxW7B^jfFoH)miYzv!f)BRy{9L`W}H{o71b%C#heuC%b=&Pv1<8IWoxmo+jfK}yt z=}-_xC!rW$@%kaEJ4BCj0MDx_bLxNrHxTcv%1+^&y$vbh9LYbeE7m!M>6_%Ho=lN8 zVr|d}7zBa(27RqEuaK2QjpT570U2<$Oea?F;GmO5Wh&uS(oR8LQ(v-yY9@g?z`I!C4gLr0X)~+j*4|u!7^OJ&t;47HrmLbzJOQv{y7AHmoc#F7j>n=S7>yiQ@+ka zLPI8y2wXn|@-U}KtcK8#Jb&)Z=pB3Zjs$;bn8@)n^*C*wxEI^kl;77}(+(GARsAG9 z?)iWbGVu>%m4^~f$}xPN44~l*jzH+}xGC|^4R{q8wCA~Tj~u6V9>6CMhu0EUv(gfw zrTjz&_%RuQpKQPbtol_IHBYegZdbm;8SxF8!%`G zuZXHK@)%nNy zlTR2mUYiQ3qK;9iRY!DSyw`ge)Iuj!FHy6gf5QEOV2eDSXM} zJ`PDTLl1S5>&Jie(Oh>r|F2{Hlp)MQ(=$Rk#`EmnC=TtNunm(bR#IDKqj1u=o4Pel z)+*$GsiZ7R?L+2P^JYK)u=};my z&S6UCs*OnI;Rr@rlu03m>{qpFLYIr{}6(lm+=%lDU^qabfT~HNWLQ>^ZdP$Q;w5J=zXY| za0|xXlF28qs@qp9mTDC(dLFWE6`>GnQFij|%!Yn3zLW4iYemn~r&Db=IAQX~7Q<4K zVXcGiiV~sR_;5IXZyq3JDuTL{VYk`v`>Z-$P_qK{tyY|9OBlN0?5&9jWn+hDVHi29 zW!>!wvOJ)Jex*Jub{F(ntxB9Q#8RCIkG@#pqhwKrL3rEUx}R6MI8kbG&}GGrik%7d z&7>BS0+Yc)f0^&PrU7!-hM}Y=1EDT*D9k89-)!G&_5hW7gPsBtOsmyaj4ch4DYoG& zCKn~CU8;*=E-=Z|!Ej8BEe6#=T0y3jG*H)SEun`M*7WFnFxZ-Y`{ZWmtb&g(#I6s) z*GL$0IYd|^m&-hWe{DK{FZv|Mi6pe7fbP9Gp);o~EaJp1MHT8VG5!N7qP)82y+(=X zBe63QGugQT8C z6}~b_Y@Z9oqEOK)KP(|5-e@i{~lmnGgF{OdE zRTmvCuyq}Twif%Q$~s!=(nf1qhv4IfWhIUtTP-cKN~bpESo}Q8@iN=sZY@ZnKGR;r+-foTPU>(U25m>b}PEB@z*2_yYX zu|VDk4Yb6&$h6XFYl$+)3KQ5|uhKHc+J$FAUuJ=orfDx0QAsAzctEC*q5`3zry7}S zigbZr?uf>CSN#F{7Y-c6?5L%Kb2{+sK0R>fy_(;DNQ0GLE*r2zi`WiIk&lh5XG>Io zo%+PH(YB3>^pvMFA~+}a3EFZ)>S~}g(b7D#;0>n$~PV z2W*vV8FVWQMsI3bb2#HN4mjvctB>PW822*U=DwMhS$X?bs>kMiC3Vyd(^{z7tY#C6 zGkbKfAGJUm%dHtz<*ep=g{sar$_ot!LCZ^h9JbY@J2UE)Q>t528dys;PE%WOACWtY zCBsP?xRSkZ6{lB*Q;Mr*Cs6fk#xAN?7wUyct-!BaPG|u>%d9MYCI@w+i9}hvdA3R6j4=@?bgTwS~8Tr%14ux_i%Um(p6!5FjXC>NW^`?1blVa_#92Zv_ zg5ZL^{p`Y!zK9V^2|{@~hy(9?daoAt9#V%zVc(O_>9GeM*3#hxb;`ClXhBy471$6} zFW8&jHnOJ^I9OA9_MdJ@6|2SqBe6I+sb_G)Z7+L;CSLk7&Aj5X^$^bSB*r~Y*#N_> zG2E1JGK_iq_1A0iB{!>m+ijWzPvf|U;njt{X7#EV*e;mIx#y;4v~PNw9%l>t?DkoG zh5`Ic2zq)udEk+$DLuy4{7Kq*YH~u)z@uBVS-`jHFss)Au=Y~{@&l$t$*)p)OqDA^$?DGXktps z80jEH`A($Y>mi|Q7-1}B*+NpzBPk(Y1ELr39T-P<=7We79?Hm3t9hmH>nx0Y*uc&!HtL5uom7le0?4y=g729RW%DyBP zN-c(pw|w7OS&)2nMkzH>53Rs#7JFTuotFuin1R|mW|@rOwyje9w<8bZL(0P;;?4t%{NOoTrch3Azidf znwcTINZY>P3-x8+{4F|!BhRy%EwVyZ6O-ysZIdus&F+MDyEMC9*WCUF^`Kj+5-Vk) zWivg8lil)-UnkxA5^4LCGXGt((w^PYPU`KUzT;xTOLj@yrljc^UH|gW<{*oAX`HIK z`fB*op38L+^*-wrdgU8lr-O8^k8@VR*lq_7yf_X1@7K*Y zN;9R*Y-^(La)2`3mGjHm`T_#neMDQcrb)0+CSFVT*ht`}x1VW1UL%TL_d_!40NUW4IOoTXRMHl5 zO?>X>>k!V?N6r-v)0R0*TPY^k5lCHlcU7oQy{<)^ylCWMz%IQ3Cl2(pH7yyuc_(Mq zk(C`)yb>HnjKgJ1ul?3rJX)zM9$pMgmVA+&WDGPfuiV2xIk%@pL1O12uHfW^azQ-YN>nIC z%&7iOD_5)=C22*B9fc>HLY*ny^krYFL#;wxjJhhKl9wyeHp$St000mGNkl0-SX=Y?5v$CjOCWp3oLu#_*xk8hJwqis;;JGQ^k# z8l@qV=O^f#*5gj#rf-b5$*=_D{g+o8PNgR}@8}Z>d#bUoYFN+EM`2Oj_~M;a$hhP$1{+vmWzmtAcxQbn}0h!!6KVTDqez_xt zWHKiJ264qU*(g77;DE}arLO}y`5FaNr4&?4`=_2i7^`TW#1lZsL-F0K^jGitJ>CC-4{JO8OXxyX%eRt( zR~n*;+px(*2)t1TsV%t?K`52slCPQ`M#kJMC=hyD7G&s|`FXhFR`NNhP*gjh8^R8| zoPE#j&2(-%W+pR3pSb}A?8VIFFD$AIg`7{6$(Rso^y(`4ri zU;Q<-GbyoB*T%c_1lwZAO}A?I^*3v-k_JUf7xURnKAT_u z`on(5p0loJ7zE{sIEh@n`*1}L~J#gn;qGE=*Wkr+o z-*d$kTJiyBYrTw2n%PEvA+

    R$EG?6iOY0kJt?)R@uJS=lvN`)m%a9_B26XW|$n> zbzdEJ0jl~E+j$LE;DJLk(O{{%@k_r*pZ|4VtAF%U@6;_{{>9pl$1b)^%k;O$>QOLB znVBjkA%~$0id@{>T%t_$Z3IiEt-VZvzPl6&S$%SInG6}*Ond=FMR(jp%w8ZQ4qQeIc>A9z$VR((Xwo*}+%(s1+Ip2^&!Pj}4k!K;(E*_rKp}hw*zweNi4lk;= z*j2q!DKJ5Jdo8HiRw&Y@)glZkEvk`ENM$l@?G?7R`L(SZvuu# zKR>VM@^-Qo3yxAKG{Gu(@k?LIc@^5N>5A8pUmg#~P}1=-WVI^@;)Y zGpmXfUcSZMxm)s2Si5#g{#l3b!`Hp)v-A7(MC>Rc+XQrjM;?)I6yYFQ7~Xv=+`Z&5 zs*em;Tz`XvkqF~UqOcPe>72T@HVRU^RdC@h4>~%bLK6 zCwfadbnjhS{O|{*#d%>}U|9$v6+vp1(l$=K`AoL!_OH~Ne&QXv=Jj8pgVPgQW%pJ771PoKH#K0SQ@Lwfw7$Mn>rPd3hYa4y?Wq+dNIMemRE3n3^5I40ER zAq6!%0AqX-tMT0aLpu1}LG6EXubzD92|aS}gL?3;`}Ht*%wM-2ctpzw=CsIxXw7%% zg2}`Ys6TROgEwrq=|N|@qR4w zKKCoXQi+pZcbe>6?&Z*nx(Q_)2snAb3CoD#yTdq58c4p{IjygF7`$roym1dbA7{Ag z$}3c|N+jN;+Zb2LyJ%4(7w?};`%OR0R9t$g4wF}RCS-f|$YraLAr^)FmpH^$S!mm? zyi9&bS1}=I1m^+|W*U|3J|;p?%}$_$GtbmL-T9vPsQ1TzEbVraVmoR zy}XYj);?i$FswE}rb~Ihzs%o{i?-Zwgi#8k@=r=nKlq^9tP~SWQbu1|OftJTeZKEq zf1p49_dle$_cECsL{=PKd^!=Ui3~peF5Y50Ke0{IU-)Xh;%nZd=h(^AOn4Q#K_jZr zr8~3`-2Vtdo6Hg<`c{LK4N_ZkF)ZHj$QA>#_#xfG!Na@@2Nl?c;lKq$Rtnz18~V%N`YrvKXL;)=)PQNQ0ORSVvaGJeX z7RUw3~YM=jr-azETU`*P^9_5ZJylBshwdEM=fj@@e0Iw(j!7PIoRh zP(utqusVG3kbF1PLKmH)RH%`bJ{e(Tz%dPm5xH^nK<5mIqpPK57>ztaT^vJll{rT6B1_qEzc=6r4*W=%Vx3AX;(D5I8# zwYzhctY$p0URI`PNwbvhz58Ab9(qXfU!bQGDVVPCALk^L*MUxcF$)LynEBf)e4rJI z7vFDF6G!k}v7;Cp1Zr$mnA@HO^VFeO$)TS6JbDIJ%ebg!jGg`Jf(o?;q)Zecumh zg>T`)(ZvcPf6ZVOhK-hFGPe55$WgJ9C?hB#v#-pKwCLeZMlcSsck<000mGNkl(^P2$LRe)vP;n+GfcZB|**OLGMBHgU`-{IoY6XlmP#?Ethf%Jqs73#TaatJ_XJ#~g?KQgW zTfSc5jbE;>_{ks9bzgJ4KKmd413f*{(vuU?u9x4S8@~8+CG{nP52x`kl)v9U`S2r( zOa`4$u!Z(PN6W4k2XbaZ71V}9qkptRYOC(1^~3~;c&c$!ca+Zbl(y~Mp^`5MOXz5T ztYW-(>MTnRDtj< z9AujBh7Ww~Pq5vAgmb%NBthh)k5nAaRnK2>Tpl$xq0=KK=O14}U}j zC#Ml(Zt-bpfr;QUR&TZ8>7T>4ZPPVxc%ydx-Otn4zWoRFbwB#Udd)xm$HGgcNhT(L zfyBr)JOq1^ZGDMD6v$lDUn7n>`v@*$#tY!yDq*+ z7hQg-3_aA*n5vT8k&U>5$xMKU*1KR#?{pj*S}zq?oj<1oWmW8ncC}%)kiqJc(2WS$|MHHu=C^`^uT?0i=`bf0f?&x0Vmlu ziz7^f8EHG;kn{KC?b0O|NwYJmaiR)M84hf{Wwm)%e)e8Y&>wqLzVd|@JlrXf9p)0J z?Cvf8Bc8K3=FUM<$0rz8a=E<06hKLb>!o=ir1Z!mnqvRfLiQF8SNB#htXfY#`MB6V zK+}>+cJsQQUEpt!4}-!dJIvK_hQ3=g?`+b2k5-UaoT(vzwRYBX_E2i;XuAJ`;NLTiEtdO&f{`sueNx1AH@-{}9FEqU2!9sfGFcqlX2ba;9*a?a_3RM(Zj9XUe`DSu)W$EPs`Fh7 z)ULHyTXt+*T#3H;DwtPf;%r>iYPYn^__)*7>^OEZx$e3A5=AD@F1wgeMzwhL>HE0J zd&OfzH!U-1Bp~!A^y90pwW6kGr{%i>Pj~qYiXs(h*Fun)G3>nFSwxQ;YWTQH$#af@ z>vxp3Ha^M=9x+?5$V<)*%uFswWShA&mO8`83WVeQ0QV#d&M{4!ym+{ z_CdFwZ^nlRmzWIpJtZBcJ$Fjywa@t-mhOK*&)#<*@0xx271@p(EB`br=iJ|ZTKXd< z6JMQO&gb~Xy&oRbKlI-B>yG!nPdhpB-p!6-;qE)s{iBaa_uYl8w0VHG9n|Z7>`(QV zzx^&v(zghV380N(bZBQ66UN7W_UAPCD3iwiVLkuOot+l>4&%Ho^V3gCpZugA{pDZM z9q;;W?c&>b;lTJOafShW+z=~PDM#)5YmC)!7>@?Lnj-Jw29cNy1QPmALmoH>u_o0# z*;Xk}h_sy;Zyy_9fD@}M70JymB%jNiu8$M9S&;+V+Z1a#wqLYE+js9!(JJ6>9FEqq zSTM@8M}Nr7PGz}IM$!?;a~RDupdjBa*$5#Tc?n*$1^Y{{zCznC-X(ueuB@URQ$nyl zyBpszkR$V5odWf|F2QDRLz)rR@N(`s+lVoV^OTuCm0Mp!y0y`)LspkrobIjW>P=^z z{M{e;e*M7@H|h8P&=2bm{_XecW* z^j>(p??--6fA9nURv-VtAJju1`LMRJ`tCsH8MfoItiJcY|GoO?&;G1FOn>hF&EL>( zf8W2+hu`rdx(gl`W5WJpnFVJAkyW83Q-R#uFqq50o$vlVz4vYZUhhWEJO9gX@U8p5 z=o7#6i~8iR{hIFnum4r=dD{=@uYT#5bokCYw3C&}byc!+@dHGoexU!Dhuruw7-~-& zVKxp=5Z~OrmdPld=t;_KeYJ}*;>)!H`Ya2a57}xESlwz?)x@^Hv_gTGwpyr z4cN}6AXPZjs852Yj6la;WRitn^CX@KxQX#xbHjVUBpNyA*s*J; zF1zvywb@EnjK_e9CecU+3Ue08+soCRlOre2$iw-ckP%MoWr;EM(1GY4oDWE{h&UMX zg!OTrMP1ISdu@M3mn|&lB0lA8Ptp`KZysb;*PW!du}!{`chal-i(3BVU+I$hL%I^@ z*@lyKaP$c}J%vNJaK>#>YO~e6nC;P3tdiIAN$5tl@YjQ@*>YdSihRwXy?W`&qHda> z(@SXcs->eIS~ci1bJmb9ByXM!#Hlxq2|Bp`o5-3~LGEiGuf zD$TGRzXr#?YHm(O-N5QQ$*V%^jyvS>Ybo;yXSUVWB>fG&fl92pjlK*W92sF#GEze% zqMr8mNury&8$Q0G!p8Y4ApyYP47l^U)5=U0&O1P^fHNmgHCqw2U@#voyc<&d!G{IYh5%4UtFD2;`I| z$(R&+ypl~$O=*(zhqBd@%WO?hu@@ELe{Al#NROO3oQuXzwT;AV*g;_>Tf(Vo zMKi2oQw#IjffH{%*eqxpyrtYbTgI zG_Ps;Hz_G1LxC|COlbZ?D5Xgg#0w^Z9XRzY?OehZd3Iq=yO=0;gPp{u4jz#2P9`af zOcbHpQ;DOr(NTb(JF*R}FrmMM{u1qF7zXSZrU^EDry*a0Y}Sa+c2=HjK-;y;!x+0G z(=vrY117Y>ow$99EA>$>@uJ=daLjg??*fj_pEE?|l|O zuH-tyqqT8RlQFJkicBtt4$sM*cZo6ewDM&TIRq6*TD{0!ji1YiS<^Bmb}pMeaa;I? zIu=#3oti?p7LL%t9Hv`^7-vB?cZa^eF~*fPuEo+L2KeAHpfWbCag%*b2W)f*5UJE{A#h%2A3U&t}^)=BcWC&Q6 zQGs&9Iq@$gtH`fZGwF1opI|l*IH{iq7Z&6zM;)a;lgWUI!&u3Ucjkbz%~+xKO0Dh1 zgxaA^7b`{TBpfh=h@qG&47kAPBW)&jCcgD9nY3o;M~ipqcIq)f3^Y4g;<$Y#m88ie zW&JVnRUG;y&Iw`&GBbMT+5^NJhbHR`-I*UvtQYs-?ajzUMQVDmt>hWSsUdGSN;q(@ujLB!mAOWVi4`s37($6fjOZ$<@A=3-z|n(ugt7=)jKpMUsmw1?@ImXb zQ%Z&L9_3b1)5ltd0T@mzR@%Z13Vs1cE3l@(ds(D@g>hAs4aoN`XAQ3v9Ld8jlZK$J zs2|~INEM+C48CwY^(wV6n+VMS=dD?>4Kd0#)T|`!GK!dLCY%mNQsZbnb_6A#iOigv z!J<-Vw^RqCzkLP54&^0nwY^OyvXVUK6EL{ML{wr((RIQ^5pfuw%-T$5t+J3Ad}t36 zIA|3@kI5g-Gv^Z7#O=J&arK)VhDR1cZlyy1k=K-jo`Zs>JJUM2cfTI}%)`76M2T@I zi&Bw3Pfky(N55+Lc9{TO_bu`foevfVRnW&Cc2c8nZ$tDa8Kpyb;5{~49>LS%Y9u2U zqC~x5LH_r>LWq1^Sb{eiXIu+x&nFT=V?gj~pmTni*}83pb#u2M(-m2xKx=j6e*(ua zjoiBlRNf2CT~` zj-7|u)g#AZo0kd_ZGYX4Jv)eaH8CHc7a(Z$5f zw07*-EmW<9?43@Bnx;PI0L(x$zZOLba#T$8oykciynzzENop<+&C}|{hX4Q&07*na zRHMnrHDX6#KtErcYqAX zHXDx3*vfQbm}(SRGvGaD?JkZtU^aH)%T`OiO8U&(V`lbQGV2lL*VIcWI+iW8AoKC%v# z5-j|O9U^`8K6rlzv@5PQuN4aLH{?P`eO8Kg#|^kvg}i~hngbu^7|Cdtc&%E3CtYS= zKs_W#$OwT%yn(n9sYJNB8|mP)hKJFnW0+f^Z$r)^7OEMiPT5wUgT}{Li4C2K@`zrl zDDAp*kNkUap9#+O;Qi<_@dd`Y#W>SNJ@?FWOk7d^2Lu8(zVcvRyTo9qagobMrCzRI1 z5Cem1(PUBbA7@M$Zy{5g49mtVxsi55QWu&PR-&3v)al~vC4(NJAFx^m_Y!v4aS#+Z z361cmq3ajYau{eOR_Ytzy|@mR4L>MiKLx8sQbEjkXDi4P^=lBVl)7K+ySCG9pLGMAc`DZlO}(g}M%XRiO_L9M4Pxb{~|^L8l@Rb`va0@GWU8&{D;OnIxq=mWeT_nN(dzriwhzH`m=rNa{xTC**KG z9-rsyLcz=!L*N|5M-qnX+};jNu2XX6v&>9pw#wM7iHFsk^B~e<5GrQsz#ymCVv8Md zutNJ;nJc#0snt;(A_F;S6dR0fYErK#wZbgD+$snQEipL7#1!^qs(9~iwc4^!$R~+F z{ltLvWa`u266pg>5X%!2I*5}jPIk1yR&Awd>u|4zKRj{XzJdz)R9KS50^6~?`s0dH zyR9WjH9VFusxGws6jX4KWhxZtOOJjTZN=Eg@3Vf5(G1++*xnm`sgY@*pvcy~TL-N$ zSq!XDO?v~3sSgcVg3NE_6KPyHSwfy#zVcVZYsQx9q>;(vARC*Si=_L0=HWS(W9HFK z!9*+Q-khI@$ZTf$y|ZMD4BeEWP-0A078do?<4>sKjG$)aYx^z)Ynm6!+z zLLlO3T}K=wQ*(JjSrV%o*ApwI(|1SyDF!&0Ex5XlbtO z$p2@CrPhSzvF3gq8IDq22HF4nRY6;!q(O{YVW<|Yr3Kmw8u8o+pf`*;V%*A z4=Kqo_GFc6UXtmu68+1eM2ScfS#z7mlRtzb0656g4v%Z&R|r8qImHl^=wxD|D$unh zr1Xi5KKq~4iKP8t%h*o0Vj-{B!%?^UO1yi!jIRWJb`~L;0s_}ecF`lmjXc*u7FSY% zP1Lm2A}j*D=tG|^xbv&2QfF>FVqC>TmdFeepMco4)kzKddkQ z_V3X3uX~+te8cPY)I?iPQTLfx;PjaE~{)bnu|P`5y40!1r8i9;0_OQ9YPyAWG?3V!8FZ_)ItK1cq) zFYZGZ2Qd19#l|ynVuM-0Rc+{nZd(b%a)?l)D~%$`xklPY+o9o=yu{Y#3=2*(a6^kB z(3g~9X6&4j5R-jLRLe>YmV0{O?)%h2pW+(uS`t_(eI=f~XqPC!!FsCbql=Y11QDGE zc=s50xXXY3+9#|Y&gkbR&S$_XThmx;vMnnNefHU+Z`WnlUa6T~+f~J+*^8SMzYfS% zNF|4jhRxL|W`OfL&&&t?`VL^3Pk2V#-lm4SmJ61l)ob(GTV=JONZ3%Vvrx$uIM4Un z11Q&Ca)Una$KRnV|HZc|-2MiIulRD^_$}Y8*Zla8Y2uZy)L~AXmvQKo5VeRwv~IXT z@eOZK3rDsu`%+#0O<%8Dzv_1F$4I)&)?K!5ODjDsF|jUEZ~xSU9${Agf`9qly8NI0 zQ@!H5zDxR?&y`;OInqU!Nw?jqZEyTa6>s=5z2?V$Sl7JeO?qzocFlFB**?!;DpARe zl!@mlWd1w<^4oRMH~te{@h`qfm;Upw*XO?D2lT{bp~ZHg6<(K%5+UdNZiecZ~Fjeg?w8*i?f`f&R5Zsg?O9J^Aos zDrnH#ey=}pt0zHae33uM)GflK&}PR%q?nrN8@@H|sElDdZ~3HiuP7l@%CT zONYCI9QJUtKAKJ#eIMgkV0$?i7>8NzIxPF$y{gD zSB?cKnQRqeYflMjcig-UPl>z)HTh~Tisd{#bTqjedxj9`=Rn?og(yGoD2tZ-bo$`l z1A6L_#}#R$#n{!n?ilnJU3Rf{UV0I)EdwR`UU_~(cI+`BZw)Ml>`bDpMV(05jvceI zGNO~D#r}%=p;C|6i^M_WuFEdcW!GG(_EbkbCfZsRlYz-BsVGCv>s3AZsrU`I-lQFu z?$&?_z;O75l_d>C4XZWD=dTG~pDLV~%BUB?;Gwk_S#qq+J4bOdTWu+<#UXC+OsEbnuoY);fIJ64rYr4c%Sgg9s z@Ef4`6?iVgf37IC{gzww(r@^BX%kpiLaxCdBs; z-S*aht_N8e4#X(uH>gYn@4tFtuN2{>w$$E6ywuD!*Qi3aWejnF_rt2}Xc5{uP;K9( zLk5qcP_I>}>nG-%oVzjIc}yVTh>rO4_Y+J!pP zQ`(7aH9B_Pq<) zJG7*-Eiu#I^u=GSLpWZyn9$O|7)+zAlw9NF=MV#mY@@q4UTk%6`lx;Ie94>NB;gcl zccjjwM0s}H0|%5Id_a%B|9z_Oe@I&FiBmVpt=v~=cxj@eulbkXqm}lQmaJ4Dufkxl z7xYg#0N3vA7MKFE?E=L_-`D&vVOe zpMi@is$->U41#@`WG-IG$#0S>iDgQfC?p1M_sd_dIh#;b&TyzaJh- z4e2u&;L?f^Kx#{x!SUJRUUc0p>KBu2>nnwJq`WU-5Hf_sDCAZhN?m>Hty(NvIvh(q z*XrnVzvJ8Vg+KWYUGtsatS|Yox9f9$^ld6`yG4hf>9?jdU`MgMIu5mJ-u2|~ff$po zre2ibotUIlOO+WxP*Fz}=nmVZ=_3vfDQOehQ|+`F%5l&00+ZzRLe9|Ut{Bv3#S9h| znSfUgE$W$vpHLh50;&;~R?*P5OLl5v_l$b%Eb5|W+gz!LF6TfBq!Gxsv+mF#1bKgh zB2JamM+u=U=tE+T8;E&bWhaUTB|7A`HKO9F$Jaz72 zXeD5v{!P(bfy~NTgNPEDg+uhgLP`{@>5guD&6mhO`K&;(H#VXUjfS@YUcXuCAMVZn{=JG&^RE5_pYD&S*D1_UDEC9 z(4F__Z~pN865C>qospuVZYf`tZ~T%k)*>rU;(fm2z4nhk@B!%Hg^|_tLB5lq?H+B; zQ}Y0Qd-d0Rjdb%%#56BW&q)5iQScuA5>Cg{ww*e#)MJ&8n!OeoW2ph3P-5;A#{J}z zDhOh23K(JZ35q_$Rs=^mqURkC1|7n*3O9K*S5mH@t(3Snarvqhi&6y7MtM+c`g&VfCxo4p%shg@9DZ!{qJF(>=LkmArQJSJ)Nt&AAiX$Y?liA(_b? ztc%`ZErTaYk-P&KQBCNpxAT$(dE1g<7Ez0A@jFcHzIBfws>Zo%Y^@ds5+vpx`ECI< ziySzqxty5;J}E=1WeJM4Ah{(s;%`a2>o)4Xi|SPx4$CdnnS=weDpfd`c&G6^ccysN z<=S(@wd$8eGgy5bDZUD{vm?Lq?_H&|2@z2Nns421&y^*OlozW0-+Vn_R*cvcU5`fkndJt#3rhKK`VD5yk< zQ0S}ax>4U1fMUp#jP`5t3MKS*X#Zh7`}niE^Kb89gEh#!BK1q`CvpH*VJSkNxh`o92XAw@)gJWJ!2m;dSsf;i2@G!oa=(Ct=Y4*~Kv~AB08BW|q*EJp+=pzdAZYZFSn!d$QqDLt* zVLkESqgpyRuQp@*?2}LDUmU6GB*U3yCdl*Z?YzuL)3z}_d6k8~|A0uvq2b{Jb2`98 z5HK!7=Z6j)mhmrIP{l;NjI6H5MEwi(#wyPb(S1<-^TCSM>N6-}V3kU#EubJDbFH@KDaF2oRdbtyr>Q>~ zqGE5LIJ7iuQ7kg5@#s1vRiVyEq_u??YE#84OT~mZH8UkEqrya?sa@MNy=z7Tm(yzW z7PG#c&czM%&rhc5P+mO~tMOBhKB3gD7>gj5Z*@3h=x5%w#BHu9!sHAL8Z*c$*O+Q1 zMZ=&9G`MhZP6waeCmRU;MYYSe+UQ!8k0yYU$+*p{k|}f3g?OQXGcNYV88R5I%Gw7h zmXa0XbVEYH6XZR0H(T9>6-5SKIH%ezz50!B)Ux3rPG58&HOU87L_w$1k^lJJXYRXS zym$&WDhv4H7;X@W!S(}`0Zwd+YO$IahFAs@KBT^Ht8v!g{26?#1;#_t=qs*CE^ean0XqU=pi5*dLwEIUw<^EG zvtrS(ayM3%^xz$z)}$p4wQ7v9Rxp?dF*4vp(nUz5x9q0zpr95`5>VXi&RJc3{WZGs zx~sH(_pCxI$S0bb$uXFqG_jm!Rf$QIg_g9bVAXu?$!FAET*>1Gl`I6c81IRR2}q;F zjDb27%ot8n3MO~qM5=~Si`|gn%m<#^ufzT`*?jhjl(}x&?9%qI>oMvKkj3)?eEio$ zJ$|7goG*e~5=JUEQI-ctIFB%P)x7h94u=~TvEn}d@xPG#KP~fR2?N-}r<{dUQ87a9 zAx?_Z^kEoq9CySHhA=@~47VWbFXM0wp4>Tc+*nR1#g=Nev`aWw5u$v{<%cmhzT{?M zfl_V{-pJ|Sn;*UR0kz=KB0a&RaPP-H4h`L|7f)KM!0V*-sbWUpCS4Z?_?lbI@aObh5U>dA*6)#Bkf zCFo+oyR?!fwomhE>2kFu+Hg*aI4je9=4BE?lhlV!@NivJtmN~o#D|{SrVQa!5$wC(vv|88ylJ zGFH3x;abFp6tcX!O$R{SeQ(}cJ z-KjAWd_b46HDAUsDl1gs)TwN#&x%rWB7F$Q>bYZKXbR}aS4tmzX8R}ZxnGkwzQ1R8 zsPBI&XvANB!Aq8O!^>~e3jCDYjPm!#KYz~$=ua(iYN~=EXhrqgrLJa`mpi;n;+|`>R5W2AC?xY%w-jYj%HRLlBPgK%UcV>vzT;$x38-fBiUC=H zA+HS`&p!njI(?c`?k*?G-jjmy>0$%ZJGaZf?}{<47+VKkPM;-1?;aPI$=H^QdAiX2 zp*bDEi9-_V4XSt#ZgZw``PG+^0Wmu7!OI=FhDXhcod6{l>>V1(>2VX;x+fx(vBV$| z0mZ8z)Cwch6;@AvkCWtD#WLw9pOu(tg+V7~)+?^N61obyzEmVJatb(afdM%iU*G~O zx}JKPG91W_%SU;#rAuzOPCYaAEvl=aC5+1ts18zbai*>9pZ6+hsx7QW$(P@n_Mdo4 zQ@qEun0PuEP{B(1@B{b38yPS_VI1-{TBgHkMX!9#tHsM6<;b_ZqTN<%{xc85GbtH) zQ&F$}$}iOl)g{_eOFoBbrLVn@J|_R)H)=9!-oO2QSW0q7NXRP?IT#ASlD77u-^Q4j z87iPN=$M$IOT~Bu@(q0@Fo4eAWefBjIPu?yPP=mp^xWiheRfY%?!;GIB5N1CVGWe% zUbM;ME?wRGT_13K{RelhQ%rj+IAOt*FUHJ2;JT0O>ZK%p_wj zQf5v%pD+J1U}l&;S{#NhZ}7)?fh5(eo-Sz1S0V;p%$)L76@(brS|&}hJ^l2DKBD|n zR}1rs3`mddDxgWgI>UBNOjZy6jTD`Ym6r{d^{R zwmqRkGuyS7ljOa;lfClx+i~JaDPoH7wW=?%Dz7~Dn5Nulc`tUi>zGus;%MJKX>mze z4$&d_-{3!T*(o6?8X)UOe)rwl|L`Ny%Cg*`T$bHeU7@RQx<$emRlwC~69b=OVi?e7 zC`=VH`vF(N>>!i~o4CisWnk-WZ{3h-B!Lmhj*Tuno=6WE*V+v*)0vou^I_ByC&`7c z($J(Jm29IgyY@;A=yRVPiA9q;al#g=A!_(0R`Q}YroTc5p4q2Gw$#jdii{cTG{K?U zW!GGxKA#n98guxBpy8E}qnQwGm~&wU;k*&sm^~R}9{}H;F(FHC)P8C$9D%KLWZ))Q z{q}z94$1#hG<09*t#U^SEf(Th;$1g`!Ht1>4D>{ZnqV9I?*H_&@}J~##}PfRSQRug zqsiBNk* zMPQp-DJ?ImgCp;K@IeU~g@dbT2`|;F{?4nF{G{8h%0GFrGnnFa;K}>$m7E`rtpYir z-+k3Js@Ym67p|6kGJ5a3|3GfQUABT85vUG<0;3gEjYHH%iw<&#QMQ$L7DNo?5g?AI z31o~zZ6;rh0~3_L2S549@{+<2Xqm~eyZI0okPf!v9+^F~u5 zkD+C*FBCY3Sm5*0{NDXaoL7Y0My>X?NnLvF70U0!ydpIYoEU!Gm$64$#DW(QmrFRc zF3`)Z0@3LS&#k=8Ol7N3jYC*M5;uIdmcqc*W&4Q{q^iezX_EhK=m-73UtvWKPLFXX zwpKBg5}%xe)4E+J*u)~Lre44(b}@MK|NGCRxp@hPjC_Ks1AU*}rmJ83W!m+c*XUK> z@QwPyZ}=ufKcMnc@D?jF#-YR1IW({RfBZ4+fVod7#v~G%So}}+x+6b%=baLAC`O4D zTV+Q@dlCaQ@+%S11Ap>y&G7!a_kK>%T~>A&asx)T8l$bfDo!g_9e3ny7`)gGw98UK zcI2Py$3Y)!6y`?i{Uy0&cW&RB<~?w%rjWI!pGGf=Q1F?m($m9l!+l;iI*dgMQj2fy zS6z3F{6H%3UOYe-6|fLgd424pR#v6_Rm^u?bFAk16BC{tC>MO%@VWHLE7-*dBn{AK zJru|T7J8V#h_Q6J8~D@nE*xMsSy;O4;nsH`q0nC4Q?g2rKk_g_A(Ly|x5Dj~#9)?e zFYE52W}w@9&s~C0;`5AfC^ILfS}dStsNI>Y*8K9EV%s!PO1p6Szy9ra>Ci_xVcvg8 zI&_%T4i&hw_-{gO<9qbB8RZ|L#0lj)fn_EUcVs4$m5=|a?s(VlX%~*z>aM6Aq{M-Y z*!r~y58jJ&-v1e7TES5JVsVjDRIsQV=QMT~@olWk6AO#dqmN3?8w-xeFsPOlZJ?NX z;@g&<{gaPrk^`d&g-7VZ4gD!&3fV7?-8xc~(%;7<3zl@t?Tru)=P~ao+Qve@=O&Tv(9y@0AYn zj@qS;I|=Wf!XPF&DA8a=t*Wa@oc?k;e9wE{t3{kroPvuJPT?f}Lr@zdZTA#V4rvif`OVh#R{}V**+v~%J z6>&Z-%t=egzqBMBIwZ}{>#u(Q_p}YUE@DZz>wWK&m`rrwpv3N?!@IB@rVocnA3CU= zOkz`fDx1a0eH$NGRj@gF(A-AgCa!FRC~jn-E4k`C=X zphNo(F%C(vQV+YBo}JbeSF;kcQ<5tP2Zj~R2V~0H(vfQAzL}-wXYJFud<>O)M>H3I}PkYIkthE0=ou$oKqz)O+uHrAHo; z=5T;denP^T9{a!tHH}epn4u?FK_^%R{r_L;FiGsjq3-%$zoQR*@4r#^BYz});%}(S zWU=pQX&D{|2p0}Xci*Gs_q<Z2dh;dlS8bSLsV&pSU!Kkn9JzxA8iy>wVJ)SvFpYx&;0^w6*TvbrDqfb_{v zNsm1)`TPGp_v+FA{y%i*AO4|s@D3fBfD+E{>s(%C7`2L~J?*CHP+s!4ZZsJ>9Sb%N zO&%U)AaQv2?4wUA;l#EwP-z7^EL2QQXy+A|Dsd=SGcmdoyJwamqHA~3BwtZI-|*PP z?#O?1a}GyNyjz#;wkjsll9l*!4#@IPyP*$;Mt)^Su03Wv&=wN{kt~~(kgNuYEC;~_ zcw-Xhht#N7;_zpJ_n;lT6W;mm-_xJ|;?L`U|I#n&&wlwAb;tYPrx{h8TvtkcR#(Pk zH%@&OQ}kWG_q+PjpZO_$>XDADf%+QA=%3P_v(J={{otizx{3c^I!WFee6H|N6p>wDeXc==UK42ltn>H zL$jl;>?Gu%2G1PEFhpe3R>1X(FlOd4fJh<(peEs0dhY3G)MfXR(0i*a)I%4OoGM?! zN-W-oyNo;Jkk%?#i3jvwaB7t;UR4I7KoNpN`wnU^yb`NKm@rVs8n} z)(S;HfF!CbAX6g=S$>o4K_jW)=on_|#Mg+&iNX`tJpB@HV^qtBa}@V*JxRT{Onw-s zQ*0s3OiaKE3`2?I>|nciIjhkn^9#C^ReA@5-oc;~+v_4g%Ssz@nkk%O*I-$fb(eG% zTi7eul3&96>oiW{TXA1BeV_*+sLsYwv8C&)O}&}kqV^1ybSX}HJzMds*=D!yyhm5= zJD{659J_ewptda^U>C5gHlHs7TfG*mi2u-vAF>3NAXm6+&q9qsBz2fvwzGQf=9S=* zr3GEiF5)s))Qgd68}j-gS;-O+G3FTz(ErQTZA){y7z4b#yQn?$hjk?eJ(+aYfkYCMa5g&cpSv8hO{jwk=tDthU>s zbTeJc=JhI4i9NdevkG%l;lz8(1+3^YZ&!$eTBiWIfvXc3sFtBM7dg4qLlM&!UWxvjxg?gQFdQ#3@l|YpmpPe^F{)zRM5o$p zgWZXnlj%zCym*uRN<2_4c|@EQ83q!k(sO)q@SmSgI6bxUcjBwAzeax8S1SqC@@zO! z1qS|1YeJ&y-rmr<1?N1|{or(^3FlnOlQb9@f=IbLgoh(|`uWh%nj*&Rw2|?1$MXXf zj|b9@9LL$bEXOfEuM;I!4$CNsmsnCkoq~9Tr^D+zZx7wD)+*c6&hJDhoCo|)TJAIs z=rTQV7B40UtwAE5aA=1JN3a|xB~kBOBcU%pQLYot1l(b>V;PbZQSHeItuR^n3OmJ@ zfh(@LTESP(5H#SG%Ij+Nq7wW>Ka#kNX`Zae>GsY&7ip2*4PTX2PIPqHRadZ@*En!e zu0kDc2=4qeqV=yV$8klTdjuXkj^rF=gmcu+^EZPQ+!@?SjyR1l+EYVQcVy&ZD2dC_ z#4&}O=b?AnCk>AusV8;F-#Kwu<@Mw|GQ@R6X6NVVG7(HpPwSSKy-Zib=jt1-Qy=~n3iHFi zMBUARMo)S_pK4B8`79Trg0tMhDYExrTT5zoY|h%! zP)#(V&0IB;pw|yLu|tfZZ-4!a!dR6(EGODZ1*AI(&bnW6e$a@t+~S1G<#~Tnhmvg zYUD$zM$P_ot9P65_pc^oz>VQ{wjSmhPPrB}xg)H}ho0KF7xkf7ErHjFx0i1O-c1K= zPk67k2StvrY1h+aZ~5($QJ^D^itTcKXAUNRf9>OZm1-GIEUeDI6)&%>$erJRny=L= zk>40HBUJVYSGhxek?q^{L|yTYJ>ZPPc{y+ATQdpgN>2OYLhh}rB}caUF>;2Dh6<*} zVR1ADJ;&)3DY>B^4bR2pu#%=d(jJF0*Yo(Xpe!2-?Z~y3LmI+xl>tBUPFVj~e#fP$ zpYuE%BFjIF(^Mm?s`#@1|Dc%W+tOvC<|SU*toad7z3WB*S@nkrAml7z{8qkOU_jIItQIm?$7Ud$$`9 z+!5g@xkhP9JZauU-GV*mpBso$qDbMy8h)w|KL6v-a zy&M@nR@2Dh@;E&2`7ojzg=^{M^22{M&(kBU%^$|yl8${HIIT3^;?B1bAOg+fSU6@t z2L)T{7>pISk~<$+>J578bl6&3QgFwn+`o_aSefY-tFd!wdTTBVuQ{volXjDLvc@tZLLfmQ^yb!X`p|RqoIpk1_B*+(&%xMaoX@&gssayXVd~)VTMd;n~pU zG(;&+6hfoqdz@9d@HUBi8xE&EUBFsR9fA$s4UY|0-ek4&%8^|WBLoI#6yJDg47k83 zTpM4Tr+l#hDDiOA!;paSP2>~QkY%_L9S#4{LFecg*`mjv4^Df8M#y>uO<9xnxVY>X zkjx8^ye1-Pi!YaNB*NPGDDPyUi{DI2=o&&#JCC&>+k1Kh5V`+5vdv&OPO~w1OY7J4 zl9OTmTIVkJym4e7h%*Oe<8JubFz%tl%SNHcM;PUKI0WWm67>xbO5}hw#?!Pxp1AmI zC9s;e9^E>5UdM4;UtxK!bE3L-P&q&DfH;?m5LSGfnoInPvwIF%S-IO*@ zWqmYpcM_e-#YlUNQz1POjrVzk6VWKkCN6KSfvw3)tVmmhnzkLuDI&AI_RNB{tZEix9y~g zFazaRV3n8ic4YpESFHwQt=<%^#?N)+{BdMg8iwez@>*1AWQ4W(ry5TAJxxs%Ds-qb2vWH+%%RDdBF(#`a<*RYeC+&0_h4V^ogCl*4Nevvu zk8;tL(>WU5CwU0zIlmDlw|QPTa^6lNkt?zybPN#B;qehXeKO>kltDO_rh?a69ABP> zGciUEZ4EMgVjxE#??}C*0qywT&R&a=oEr~m4@0Sd^B?tRHO#U=bD|I#UG@_pq1%(e z4OF7>4IojcHlK(bCLc>jTHB`64AIaJ={zsdF0=y4Aw$D!FwCpTue}`wRUQHl9kq^( z-zc8E-Vmd_6NQQTuIn06JnkS%HIgLq`~Y->gd9iURC21kQa7n{`wX;xW?Hl)87cy< z{$_@t_jI^<(orI=5CU?QubNmDqWYmwH)Bl$KOF4FJCSje$Nza7hEi#|D!tu+i!B-dKm&q91Dwsb-;Hp^?^be{GwgEH5P z=Q%vS3g_$P9**GYb&%^i4P`k_coZKm+X&#}{FbSkZ4mu0gQbk7-^(|&fKEV?cm&1QpNR%6tYkk0}5_wwhg3x_ty`r^w+20z*&Tehd z>Bf`lz&c_B`EU66@1crW(-BfYev@KU0?s*AbeF!au%BB>1;#q1`Eo*Y?MWRbJXmye zFm`mPMY=tu1LS$!agaO@S5Zzv=QLB=-y)>k!&AY5qi82{{dMb=Q&r09;s5{;07*na zR5}3f{cGqCc-|VUE!&@I8+lGGKB)uV&-OIov>=3YQR{vU6 z{^!nXWYu^gW-kA6(quK+34d@8=)Rvh)l|4;b zB_q1QyJ^&)&cM|C^SE=bm1wzF4K(0gxL+q#%x()sq5kX+9iG{yCy38qyhp8Jx*T3O*-TbCE>xSFkm~rDU^t8uESew4-_S&bo-eOil#=62nPZf`s#{jaavrapX5 zHhw25yTRLj)0=c7xCxufc+(rRTy9s_A@{Y&c*SeKQWKx`S=u){t0&n#9qvqNkx8iA z>g506pzBVCEyohu_TTQRDn-(med7!~Z3y8d8J?k$@94;t^WA@rWO;0u?NLAqXJ)B{ za2*~{oaSwaQVbCYm1iCQlmAu3fr0-{VogcKOm>)U^!|w{-A8)%i@!i$@IBwD&-wm; zqZ_{Uo3-ulzeUCCU#s$UuT|&v*J<+2w`<}}Z_w0N-Jap;5hlEhd=IDI{CZ8j>2((< zTz2~RrWZ3@2U|0K)7Xx~ZD{hVUXRTIx4AdJK{Ic9y=LD0I!*tBH*4k}yir&Fi*MAc z-u8X^-0%I@+Wq-osHan#ReDN2c80Mtt!{UqYLHa4TS~#?|A9imPSjYy9GJYC3&*pB zpD5!~^JXGt&0$4M@u|N{>QjNwLD85Zh;^lVUsN zW31|Vq}Ov5&dy4+v(oIWG&?KJ&Yt7(@b=aMTi8Z=c2;TIcJ(GEG{8m^X>QDfa-qGBsY~V(TaYK2scw49SLvnS{8s7OYo%G7wKFAg z&>-`UBNqGw5_Mz+cblY75?)Toq>)foL+^P7jX3;==hsJ436Jv?^ojm>pI)rM02sq# z#?D&Oxd66NC)!T5=MbUVl81GR6|=2Ym{MUAnB0WKj#4{VaCU)fuhjKl_qDo~9i+b| z&QUhtu+d*3VW6T_@@bGaVKeN{a|A!&DQw(hwfr)FYzRRcuX|jBft=BAs}SWj+}IE| zs;@#zbZ~KMMla=EW5<_$sWdgMnu8m)Co>H_rcR{OfqGG{EDHr`(|~sm1@hd{f#*9! ze1xQ!`J5d}!1A?$|0>3S6Pc_9N^lV~uUOjrF^IrAitM z5@$WwTG>_=qXv^W_9Yi<#~a?DTY1;s8-nJ^uZt3U3eXP}$P-th6<>jy-Kt25HpOLN zgSQz=fX>vFR9U42LaI5rPRu$kT*N6$bwgXrQ`>aOXMc|Ne8p=e;+mLI@Rb-bszI%R z|Ho@dG8{JWDW;~!gNlw423F<7>YRvYczg&Ng@}4yHznHL2)w@6^Kh$R$R1v#Ffn6q zE!12o)qD?jREShzUbSjYo6Am1{i?5Mj8UC5=nWKOTQ!S~uvtxXwC%NDp)0=d)tcwk zv1G-KDwIEFmE4@tT+mBeZB#WwRfh18kpd^Qp@97M-)j5=lk8;$2 z3Y)x*`eO)vo)>UOI9CXado;`sgdj6Q85Tz9anSAc)M~Y`&02=zmYnre7;EHHX`h8h z+h*m?eAVr5P?zgo`{&&XeAY54r`JXijo$duws=$gT0{e3_ zV4>6iDJ!Hk6w*kAaIsJiXFLqSt6uj8X?mN)$zGj%VrroPp8@;zKs5p+IwgyAkeLj* z5@7O^!{f)nXamIyc-;-dXb)a#3n64U8IJ2ax_Kexi7`A1#@L=C)abIt{#bu`(yrT~ zFBsYD&@!)ft)gJ1PV!Gnp@^#7C@o-{lq;$S4^2)>yLald-tamdPIv*^>l!-TLa|m} z;GE?E3wI=w{3P4|+AC2#-(_YpvrLv)i6!EsgU;jyL(#E5TN8I`5B=B3yCG`w;)_+h z>^5ndLoGUHF-m4xF=nPR7WA5)(?KF~P^u#k@dn~LlAp+TP=h|XVon74ta~CLgSHsH zt2r6uqxAwtVqCWha@)c7a{I(Ro#FP9?E>Mv9NT8!$)W?L(_w58u!c!^DE=;%ZB4!W z6|(6WbzxF7LG`PFGax146$Q5j*_L6a4P8{kq1`MtRQ=dWMrUH)D+KkKe)@&w?Zbf8 zxzES(%U^P{G|4HT(Qp}MMNl%PC_>@>lixHK?m}@J?CfiZ13ONSYW*w6f!0?oeIQjArx&#ad z%71kg?~R=Cv{GRBu&uHq@#=W}%RftVl-XoQgFw%)O<}dZGDrM{EK=kPz?WcSH%9Ng zHdgt#S|(#g3JA!8tJ=K^Bvxa0)*oYPr+a*i+3| zkdntePvp5fdpxO@g(N{Q^0S@tz8u&}GZRSo!mb-`Qq`Hz3WHh4AimDZuSl7HrZwzd zavs1#FWd;wUD!yy_39Y11o^)x{5QL$A*g>gTBIRev|I8I>TIc9IZ2fwtG0I}`46J< zUMyTFWdynvBoVS&r*)tZg(e$Nhlr$FVn8+oubYwJvsEyuevu-N;a2HA(Kr^{`mb*xnZ+jILB_A65L zFckT@OwEIYz{!QAb&7kQC)G(g74H zsK8(&Fl?p9CaZwuGG2AdRIvgJyO)1{;&rlOp(=a_DT&dQ44q;h+GD7IyJrMagN<*3qqc`)77Gma6}?aH>DgxpF>Z2oX~GN?Sa!6 z!meYRMJt%ZL2kdUR1~fJ!z1K~3i5aCx=EW7|)KP{%J(aZa>x??`>5Ac7;?u1&rXOoytbyY-u%(W? zRvfbfoNdt$S;tA9Czczp@Frlve|GK zOE`Aq7svRId-+1v04M8XM}8p>@VIZMuYn7(#&|`(5Jzn+^LecSoN84*;%39`?=aKs z==3oAlmoLP^;fsq;}!Xo^*1IQYvBCV0M0$$TA#neGnQ5+A9}drO=N`e+p6|cz zxHix8*M}KC$_cfX`ZwedLjD6DJp6Z?eLa?v^KyzY#u^xF;0$Qs7>6=a_O)~S$WcjhCg*8M?k@BxGHtf>)_n%x5 zV~jO$+8Rhr4Ys%P|HQi{Z9`{E$NsJ{W!WV?^lDD$YpJLGCpy6DuR98#^nCnOBRIWO z(*~#1N;UkQg!b|egg}??hAc`!(-&%2 z#&VA}@B+{P+vJV(V(7@@6?r4dJ41EGY{nYcv<8NbJYJDEt;sQiu?EhB26*4y2%DiJ zZ=~wD&R7Fu4V*6;$e*9g##`(2WkAMqTzDEd>UR~~mmJ=WVR%%z=bsFx@Q!SDyuaoZ z`Lr53nGoZ$u?CLTz>70=3eI?@6_XwLOfwzx8*AXjqye+zSIBeGf3qX)HjX?#>pB;D zAGh&B*1#I4TCbaCN1SfG@{Q)1!IvFCG4smv5!tp)Uz*qwpum-Xtn;pGO zpR4{fzs+&3S{t`B*1$Q^fVo@YQ)|zj%o9oeZ}s<-$bu>h<;5O%2!Eug$@eFTTu$i8 zj7*qg`Qa_fmwiXhIopqs0K;&tYylx4-rr}t=`sJY2F|Jm{P&ODu6=7fbY}M}%RjAw zr4!~~NkoVwCj_i!JaZ0SPI&z7!>l#IajUVHQK8{Qg!CD9WH^rR zu?AkG8t~N@ujOuBY^@q{+1iXV7H`@bJMtM*=$O%11IKIN>^bn!ZH*oIXnl-RV-0Lt z17^*3*BO}|iF^8NVeH6fOS5CXFFFmF;k1s;_B_8|pB|I3BcHOq#)M-HoLmEW8@&N1 zJUQ1>D;+!Xsp)AYal!HDO0aQxPetYJMyL*UPqR3)>s2CHVv3HTWd4IbKLpt z$mh7tadTr0j5TnEH86JMGpx`HligVA^GX97c+Va?@_99aV`0V`I9&}i+xW2~pRV4< z^kWU2R~i`qWY>8$9Aja|8rX~m#w+q>v^TDM0chaGA>vVv+$_>Bj*gFeIo80L*TBew zn)lZA`FojTR643NN^dM|9GUN4XNKLzgc#QvYv97y03MY6lh8ZkzclP&hUYn)U<3+Q ze?M_e9@(dLJ6kF=j!fi)zYOVRV~jO0*1#!fVCYpRq#QY{hfef-^iFeXIO52sMn9$+ zYhbK_^F{+l1PLel^CCw`#<8&m#u_-^H85V0&-W1;%Qx1*DQIBq$fuyBG09j1=eq{R zj(on4&{)2)22Mc(*^ysRzs7h9ogR~nHSj{yKz8Ia)v57>aHcdl=5rxxAlv^2esk%# zzS`*X)Nv&z%osZI=~p}<$2A4HV{6jm=vV_|4V)bf3?2E*e3&*nI}^g$>H3)KSOYH{ z4GbOmh0~!IbWg^edvR!B1KablBfmIIW8BMgpaC;>q>gjY*0D{D9r;*|jMHNcoCOV- z;pAt5?}+8lkumkd%4C-G7@aYAmWCqiy9QV}HBAA2;fO=XFE4X! z*bBT_7~yI>X<(QpvGF@qwc16YH0Z;mRvj#(N|h9vrYI22spjc@8g&E`aK2-V zHLw{CRI22QOXE~nA~zWgOE*@z4G-aExThC-)S*O~qbB7B9dOZBaIQ|KSO;J-cqQr* zz#ba&c57%7IJMi%loDR#?NEi51xw}2@^j-47i>^hvKSChswxDep%~(jDT0zVf(#MK z7#5F%u?DtS18$K=L?Go(0o=B0Y}e5^x>MnVnu0!1)!xh^&Z7?1C<1~#REU~Z{F!ggh*8V9bd)_}#P6009^5sEZkDGwoQLeCG_ zwjJ8Ofx02z=H9}RC)}RQ5B2MgEZsEAz z@l}xa4mC5JsAa1~xqm+4oGvuJ#v0hT2Ab6}z`$J$j7-unM28!u7kik2$qw^VPGk9O zljX0H>_&y{he54`GuY~`)Y*H6PYm$&Bpz;T$&L6%?=03vD<4}gZzGtZ5>pwk%MvqN z&8jO_U73sN9YA=ZkZ3?SKmu}fMy@l)=!{4+W^y5E0B4fh4<_o1E2hcel(7&QyGBCF zacwz#0U`-mk}pIR6>CzpJMah<=S0|ifUx%6DBEkuBWiYhVjCfO)RAjsyB)n?a^K zu-O`0U8S|`ga&=~QS4s9r~yH@tCD!ltE4+FgkIW|VfjS3jqC;_HhhN-*F2^oqA1cC zt5P$Ac?USJ3zpP2i1+X3QHz5+2`4rMItB8U!U?qb>kP5kydYx^7o-MkXh8TNOD!uC zz3{m2D2e**NyBmt8xARA^G8r5U$Puf25@jci&!noeo&K9Wdm*v zFU+6YaAcA1>{#zgIMtRLsmR2P)#t%s zmRE5kR_U4@sRHHwz8?77ztL1R&?HtJYCro<;zN!EkAQ*uBIaQYf6pgNr*b7`6EiA7 zY}SOdNa_sSE<`AzjFW3KW*8i^U@!n7aAygtXp8%+5 zW-@D_V=l8M-|YC1N;>bMvwWeK^Iiw%v5bZ{II?}>%x<;8Ig_`z1M+n3x~J>P-7 zvwz0nllamk|E#K&F1G%J7O?krud6nGkn_c50B5n}5#j`Xc;;=9+VG9&8?JkFMFi?I z>kJUuXAE~x!ny|ScFzvsQu;u0(Kq6UHGxE<6LVQH%BzG_zPwa9$dwBqTL z!P`8qv8FF)CCa3DUibe3kS}4swSy(LMqYf5p=zEjR^*9xM>VgC!md?D_3ECMvE3f_ z93pgmoERH_r2>jC<`Utdk0llkwvJCCL^xp z!_vxv>c9Skp8U(d(l%enK$PGWvJ?ACY-%js9l5qdX(C6IYr|LAaLr>Xx@f_~s#>wS z)~Z7QQ3+*;Z);_5MN{+h`sBOcEj{$0bZEaKoi0+JiOm$Cr+V%XTGDzLm9H1dFJ{p7 z>YeMnaeHaq@jJiuf&sDcWEnZIO~6248y(m)=dUr?XyV%S5 z#EZQ%bm0ax#M+!4w7~OPY`bT1=d$!c_Fqnv_CVG8Lr{*ev-}x%66K4wn7;cDc15*W4nizwDPBa zrN8*~-_-U42Q|wlr_ftw&Eed~oPpFTTdd+H|7k`)2^UW6eo^2g9uCPG;!}LCU6oy& zT+LF$s(F$%jCgP?w3g_S!i&cpQpozslLDuI5+dN@5j z_|9+%8*;nz(9;~y%CYRWh+TG<6!@H4dV23(>=gQY@7F!Q{A>Eu@BE(JrnhrSZA%O4 zu%L;>%Y8z4NR7kdB}DU6`NHRnvK+^;jY-}?wi5o+R!=)u=G6Vv zU+Gi-@n`hlfBL_*@WBr#eex61BW$}Le^h$(Vd;s-q$j~+#GiazdWyJ*YvD9cP?qza zfPM@;d3JR0!sR=(AGf0n?9XlO8S02Of|<@kuSb|3muBfBJcS;^%)! zy-$By7qQ4}=g_vpYTU*R5{Fy?uZXb_K8!~s1=ZMp%1$U!Nzvb|RpA%D5(cPnTj9@8 znreIrYSqxz@Jbq9yu$iC5t302kWE`g^;HtGn%i@nu1N_t%2!h@M|n7vR?8AGhts%F zLIeY%1#z)>BU0ksqE_UXej0&x`@6HR#2kR#^Ly{opZ@x<>f`_6C-spZdxt*sV?U}7 z|M-vULqG9Oz5ge{PyDFf_v7!>`$#+9Pke-&5B>X2f)VXT!;|s$vW@Z`*L$ZU=D`3}7oeBdX3Tz`aZ{@E}7qCWG7?@|B0do??ENV_<( zo~c&U#-1a)QeRcG&AS7EgzY=rL%q!XKsn#N#N=fpGgU6jj_qEQxyZ{Bc}{0$;?A_q zB1)7y0C`5uOT33poMFx+sfM#7LFKd#it?=Dp{J8vm{H1eM)6VTd6Jpo$R^)zGih;T zU#TRoUM6muVGt!4e@Ii=5;+^S#B8O zI?~tj%6IwVf-a(bM{hy1^@?UfPaRufZSBfb$uBdLSp!d>3KB#$b&@Ij)~bu+f5P_~ z52H||f@z?d)@aYaU6Yp`ne|?YQ@CW#j$Ce!Inx|^8Xg`edgLa9>?7$lv7}+iC`c0R zE7cX9mRcbw5D&alx7k9>6on>uAKBJj*7n|tX2Evi+i>n3{T1!vRC_z++ete-fBVX! zW<3vh_1Yv!gjYQw#&0DFgpl$EH7(E zcLlrbX&bgU35q_>%a|J{)W$)W+qao%qgSG0!fyia*1mEJ2PTW0#oIK0GPK~k85GEQGDPp!7&?~jAdmn6 z5CBO;K~!6MC^7J}1>R&8Smh!+(};t3x*%R=J42OFkI1$L<(j+`0Og)!xcfYxd<+>ukr8AwBZ!g*3ti&S&NFGrlLadLk) zDKBWq4VIpAm_LR%I_|X^!o;>Z$Y(BhW=BMz$N&i^shQ;x@cf zK)4FNEeGml5Z7R!lfmn61`*|+3iR+d*IKjA{iTsFdv>5vq@|SpvqrlF6p}|^Z?pfHYSZFXx`6A?thGCzD*FiR;>l?pE zwGAmoToUm_!a+cad4s1Z41Gj=pEgO@W>k6Em8uMJ&B!tc)qwg2M2Gw~`IR$>c<4Ds zQ3Eowa~n!AFZK*Lc{B~f3Pn^X#LV({X0KT@^VQ6HUOAyeuNGN}9p?3zbrXox38Y6@ zO?&#UNu2|S)<$oWW?3|BF-gIX6|EX#Hmqqe{7vo)|%6$IpFS7A6<`IM2J za_C^x=1#!xQRs2OTt{8Dni{EN6e1Q(-KqUVoCakEwcj9j0OceAC1ptgdLwNtdn0HV z_t4?52b+bm;=Es{2XD7Vo-xjz23*Hy56#He*ldzzD-fabm3THVoY-x4ph`U!pg!-; zRUuVTscX^ZC@zPhy+>vFbZMVK$E1gO8LsTD! z&7H}04d*lkqz@2_i)`2t89qI>7PKeF+B~l#+VOcJ5lTjFM;2L)&`?p4r;ff7G6)dr z2sDgS;DyRO1V867hSFFEr>%n;+pMv550luTW;?}miDP6EX(dm)?E>f%dagmz<}cVt z@Dws6c`C{6T*Q-uEQ>*X&WgHKQrvNorf+$f{Bo%@x#tq~cI{TbESOp7z|d)36HZ{h zF?VN(a!}%V1V`Nlt!Ff$5gj6TR`NQlplCG? zXb4kl~0wM^df_FbCTb1`MgQ;lL#Xy#R)t7Z3gFu+M_ z;1re&!9AudC+)0;xg9bLm@%8GTW}Y{Jfi$Y|h?~iAh6Gh= z;C6o$yv`<&Jpr56YMUBf0hvq@-}KdgkyG_vyPbVDwp#KF3IZzcdG!}*X=+MKNY>?D zlJ z=Yf83@p+#w8}6Qi zhS#<$uU6}pTh%pFRYWBS-1}iqRk5vb2PHHizLa?n>l#E3PkMfa$Q))E86(K!Sv)U< znUet{&vRCR9INp)5vu1DRn)-M+`xI9259jJwLAs$k(?U|GY{u8#@1+nU8HRU!Vb(w z52s`@H!R$+t_HQRc5tFQQ9BI_N8vDeIzhJggwqNbJR2ZJ6UR2&tis(vUn@~6ZoXMF zS6-#j6-JSw-PRSizeP5?U6n84Y*k^412^5M;Rr7|;5@2EqsmDWbp9Y*dmo);(1IlD z5lT&(r^m$mh=fSSMB*Vxyp!ZSj{|YokUY$2=vLE|dHF_Q)IAf}NZaE&j5+$>GCjE6 zv1--Wyq`$BC?u6|E{8@}vc_(mfVhTsn{p^F0~@$$r>T{2A_pnwPm~yWMhm81x2smC ztwqkVuKw!3uaZ?cm-9e_Jcsw}jW1FA^S?wZR%n2uBpUDz)lg;Goz9sjBj)e`H)1Pp zK8tbUP0lfQu7Dr{OGy{jO@hlXX*Hff*~va)W`YiFEB-5gVxBeZmFPQCAXDN(k&o!_ecN@9!Hq zKFT*p9iud1!xKL1#Epr=d=hb}rt)Udv~!e9w0kP)rf-{TKW(B9OnJl($i=c@e&$0BXlgIZPuCHzX+u9F6XuGA{D5Wp4J>T-NEmZdXUMOcjuBU8IC z(&hi;pXuQ2tQI2DO--tYlLp?K{rFq7Z^@J@x&q8#fq?$8ddOlmpmx@24!xqoGJ{Oh zl74)!box#CxM*=I6XOf}sqV$0p*Nkev~s_59pWn6I~<)PWu{%X-l{!c_s_I{c3KD6 zWLG$AUDXsyW~M+oq@c*2JJeBqE7harnlcTq+!dtF;W2s0mu<#FgJxJv9tp3oQBd7^ zZWybAoPNYbKK)up*T_6J+K0@F%C69jAS(?fu*lJkgx-P8;QyiK?0=jn!Z`k&-M%1i z2X`lOy|#DPZm)o7qQMvR7h+TrqC)(E2u31Eh%uN*B7qo)AqvMG5snw}e>6s}-M(FW z*Y*2MyS;7ME4y2Qq1>l4J2TJQ%skzf-Vw!SpNt$ZhA=;pc|q~h+mn^;tKcv<+AttE z%m+v2!y~6Zve?#UpZwolEk2KGn!NudYs|*RdJ~CcjAvn%uOv}w)bVd?9rn&~%$&P` z@%;zDB*fs0qJvFx$3S1Xqu3_NuUELxU6hGY_S;c)0H**!&Q#o+|@rb=`W(f0!dKCK= zTU1xxVd*fb!7E?8QG-e*u+mtCvvU_}JOl4Kc^Z@N9)?n`1O+@lhNs?FHDWQ$9{miH zU!8-!oyp95<|aRFnsly-7S`oYK1{mF>v%x%p9yr_r1M4xj(2F-VK0W@IEry9jv%Zn zp-qV($XJ2WlmH@^;7gGqKaN8`{n1^Fn!SAIFscb%_XK8CTc&mwj77))MfZ|2~pi7WylnEL1wq%K}UHCIGAoX? zjI)$AFbtC$SW(QSvzehcht#DVzOT)De24cpGH|>o`Yrn&$y`K1EAvi7)R?#mGTWhv zYVUc;=?Qpw-#SYt?;ZF#3ZbodvJ<+YNiS0d1}|+DZ%-9Ze&Ca6hbTU5ZpRX+t2nC3 zZD{N}i1fvuF?Hl)$cYt0UPBXEVh>j139K?fR~4{k@=a@T z*y4yt5B5MO8Cw+GJ}LcS$Z#a+D8OGQ9ia6feH^BBNEseCJ}ILhes(^^gZSz{#^D*j z;nU7YP*!{x1&8zJL|HqLq3kHOpO0+#b>EPXRW}%g!I|_RSEWo=Mfyo|{=--2Pv)$WERznV@#zmC2(ULJ4TvlqE<&SUD* zHLQJb1f_{r@r0is6<&hZd0k)UVyqel&(s}SQdb6~6q-C^OWD#TgV5zhe~aT=(k3$h z3kof5SIQ_b7JihqxL{F`XAELre$PD$Ev}J9`#}H0mae>>1IF^wm5jL;!;7ysWxlzG zo2133&}&`RIgdT`{x+E-CRWWD>dc)gFPF>l7*>)AJein4`YuJJpsn$)}0O%u9J z+J$brJEqRIh8f3Ztn!j$vp$g(-F3>>Mk0pVfM4F@D&rEoZQgpFA8b*n(eF|GubTT_k zb!JwBNhnvXLX-6x?~NOh2XPY>=F30)zPPf7xs#hi?Dz>}uib$4<0b4q@Hz}8c`xw- zRA?^1sDUA|L;_H5_ zX{@BCJ4~_k!gd*77C9eE)K#WlKg3=|`a~|BL0Ool%>hcZF^rDwEXvdV*y$O@_B55u zEGn59RMaA=B{kJ`6eWEi2HpklZrAKxSw!pSBebaS0_MwuUg~*HDD(hhpdBLWv zhQ5>;Pf#Rw87uZHl#4``YtY5cWEoEumF}^WZkx?EKg52S^VGNg+`r{bkUc5LzA169 zm1KW$PnWusS(aa$MtN@<($<)>u)^3%ISche?_vDA?=gM#2HyDn59Cjs#n@~fu|#qp z+kzcNO5~nue#)4u+_}dbSx9?%!;xdY)pt+C2(gVydK0tBlp@&DT zcbH##g#6+W z0Aoo+K~zul*&@9-p5_0oWmp2oSzYqC?!m=vv)JZGfp!aA+rG75lD+HCJol(eaq%JM zyZfuiy { + let url; + try { + url = new URL(urlString); + } catch (error) { + reject(error); + return; + } + + const origin = `${url.protocol}//${url.host}`; + const lib = url.protocol === "https:" ? https : http; + const options = { + hostname: url.hostname, + port: url.port || (url.protocol === "https:" ? 443 : 80), + path: `${url.pathname}${url.search}`, + method: "GET", + headers: buildHeaders(origin), + }; + + const req = lib.request(options, (res) => { + if (res.statusCode && res.statusCode >= 300 && res.statusCode < 400 && res.headers.location) { + requestJson(new URL(res.headers.location, urlString).toString()).then(resolve).catch(reject); + return; + } + let body = ""; + res.setEncoding("utf8"); + res.on("data", (chunk) => { + body += chunk; + }); + res.on("end", () => { + if (res.statusCode && res.statusCode >= 400) { + reject(new Error(parseErrorMessage(body, res.statusCode))); + return; + } + try { + const json = JSON.parse(body); + if (json.error) { + reject(new Error(json.message || json.statusMessage || "请求失败")); + return; + } + resolve(json); + } catch (error) { + reject(new Error("响应不是有效 JSON")); + } + }); + }); + + req.on("error", reject); + req.on("timeout", () => { + req.destroy(); + reject(new Error("请求超时")); + }); + req.setTimeout(20000); + req.end(); + }); +} + +window.newsnowServices = { + fetchSource(apiUrl) { + return requestJson(apiUrl); + }, +}; diff --git a/plugins/newsnow/viewer.html b/plugins/newsnow/viewer.html new file mode 100644 index 00000000..beab7f0c --- /dev/null +++ b/plugins/newsnow/viewer.html @@ -0,0 +1,43 @@ + + + + + + 加载中… + + + + + + From 84a74c9fe402238277b19f306ed6cfb9cd7bc7fc Mon Sep 17 00:00:00 2001 From: crisy Date: Wed, 8 Jul 2026 17:12:43 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E5=BC=80=E5=8F=91:=20news-now=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E9=A3=8E=E6=A0=BC=E6=A0=B7=E5=BC=8F=E5=88=87=E6=8D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- plugins/newsnow/CHANGELOG.md | 33 +++ .../{main-C31b_SxH.css => main-BZwbOKIC.css} | 2 +- plugins/newsnow/assets/main-CVdvgvJU.js | 153 ----------- plugins/newsnow/assets/main-D8qa8V4m.js | 251 ++++++++++++++++++ plugins/newsnow/index.html | 4 +- plugins/newsnow/plugin.json | 2 +- 6 files changed, 288 insertions(+), 157 deletions(-) create mode 100644 plugins/newsnow/CHANGELOG.md rename plugins/newsnow/assets/{main-C31b_SxH.css => main-BZwbOKIC.css} (74%) delete mode 100644 plugins/newsnow/assets/main-CVdvgvJU.js create mode 100644 plugins/newsnow/assets/main-D8qa8V4m.js diff --git a/plugins/newsnow/CHANGELOG.md b/plugins/newsnow/CHANGELOG.md new file mode 100644 index 00000000..e0dff078 --- /dev/null +++ b/plugins/newsnow/CHANGELOG.md @@ -0,0 +1,33 @@ +# Changelog + +## 2.0.0 + +### Added + +- 风格样式切换:支持风格1(侧栏)、风格2(卡片)、风格3(占位,即将推出) +- **风格1** 侧栏布局:左侧频道 Tab + 右侧资讯列表 +- 风格1 搜索:支持模糊搜索频道名称与当前频道内资讯 +- 风格1 关注:频道标题关注按钮、左侧「关注」分组展开已关注频道 +- 风格1 交互:右下角刷新 / 回到顶部悬浮按钮,资讯悬停蓝色高亮动效 +- 风格1 收藏:热搜与实时新闻列表均支持收藏 +- 设置项 `uiStyle`、`lastStyle1Source` 持久化 + +### Changed + +- 默认风格由风格2(卡片)调整为 **风格1(侧栏)** +- 共享逻辑集中于 `lib/newsnow/`(设置、元数据、收藏、栏目配置等) + +### Fixed + +- 风格1 搜索框输入时失焦(改为局部 DOM 更新) +- 侧栏无法滚动、设置入口被遮挡(底部固定悬浮设置栏) +- GitHub、百度、Freebuf 等频道热度/标题显示异常(修正 `extra` 字段解析与 HTML 转义) +- 模块初始化时 `style1SelectedSource` 暂时性死区导致页面空白 + +## 1.0.0 + +### Added + +- NewsNow 插件首版:多平台热搜与实时新闻订阅 +- 风格2 卡片网格布局,支持关注、收藏、搜索、数据源配置 +- ZTools preload 代理请求与本地调试(Vite HMR) diff --git a/plugins/newsnow/assets/main-C31b_SxH.css b/plugins/newsnow/assets/main-BZwbOKIC.css similarity index 74% rename from plugins/newsnow/assets/main-C31b_SxH.css rename to plugins/newsnow/assets/main-BZwbOKIC.css index 819df952..728b96e4 100644 --- a/plugins/newsnow/assets/main-C31b_SxH.css +++ b/plugins/newsnow/assets/main-BZwbOKIC.css @@ -1 +1 @@ -:root{--color-base: #27272a;--color-text: #d4d4d8;--color-accent: #71717a;--color-accent-hover: #a1a1aa;--color-highlight: #3b82f6;--radius-card: 12px;--card-height: 248px;--font-brand: "SF Mono", ui-monospace, Menlo, Monaco, Consolas, monospace}html.dark{color-scheme:dark;--color-base: #27272a;--color-text: #d4d4d8;--bg-page: #3f3f46}html.light{color-scheme:light;--color-base: #e4e4e7;--color-text: #27272a;--bg-page: #e4e4e7}*{box-sizing:border-box;margin:0;padding:0}html,body{width:100%;height:100%;overflow:hidden}body{font-family:system-ui,-apple-system,PingFang SC,Microsoft YaHei,sans-serif;font-size:13px;background:var(--bg-page);color:var(--color-text);-webkit-user-select:none;user-select:none}button,a{cursor:default;border:none;background:none;color:inherit;font:inherit;text-decoration:none}#app{width:100%;height:100%;display:flex;flex-direction:column;overflow:hidden;background:var(--bg-page)}#overlay-root{position:fixed;top:0;right:0;bottom:0;left:0;z-index:300;pointer-events:none}#overlay-root:not(:empty){pointer-events:auto}.btn-icon{opacity:.55;transition:opacity .2s;font-size:1.1rem;line-height:1;padding:2px}.btn-icon:hover{opacity:.9;cursor:pointer}.btn-icon.active{opacity:1;color:#fbbf24}.btn-icon.is-spinning{opacity:1;animation:nn-spin .8s linear infinite;pointer-events:none}@keyframes nn-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.nn-header{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;padding:8px 12px 6px;flex-shrink:0;gap:8px}.nn-logo-wrap{display:flex;align-items:center;gap:6px;justify-self:start;min-width:0}.nn-logo-img{width:32px;height:32px;border-radius:8px;object-fit:cover;flex-shrink:0}.nn-logo{width:32px;height:32px;border-radius:8px;background:linear-gradient(135deg,#71717a,#a1a1aa);display:flex;align-items:center;justify-content:center;font-size:9px;font-weight:700;color:#fff;flex-shrink:0}.nn-brand{font-family:var(--font-brand);font-size:1rem;line-height:1.05}.nn-brand .accent{color:var(--color-highlight)}.nn-version{font-size:.65rem;font-family:monospace;opacity:.55;margin-left:2px;align-self:flex-start;margin-top:2px}.nn-navbar{display:flex;flex-wrap:wrap;justify-content:center;padding:6px 8px;border-radius:var(--radius-card);background:#71717a1f;box-shadow:0 1px 4px #0000001f;font-size:.75rem;gap:2px}.nn-navbar button{padding:3px 6px;border-radius:5px;opacity:.8;cursor:pointer;transition:background .15s;white-space:nowrap}.nn-navbar button:hover{background:#71717a2e}.nn-navbar button.active{color:var(--color-highlight);font-weight:600;opacity:1}.nn-header-actions{justify-self:end;display:flex;gap:6px;align-items:center;color:var(--color-accent);font-size:1.05rem}.nn-main{flex:1;overflow-x:hidden;overflow-y:auto;padding:0 12px 12px;display:flex;flex-direction:column;min-height:0}.nn-cards-wrap{position:relative;flex:1;min-height:0;min-width:0}.nn-cards{display:flex;flex-wrap:wrap;gap:10px;align-content:start}.nn-card{height:var(--card-height);flex:1 1 calc(33.333% - 7px);min-width:220px;max-width:100%;border-radius:var(--radius-card);padding:10px;display:flex;flex-direction:column;position:relative;background:#64748b59}.nn-cards.has-custom-width .nn-card{flex:0 0 var(--card-width);width:var(--card-width);min-width:0;max-width:none}.nn-card-resize-e{position:absolute;right:0;top:28px;bottom:6px;width:6px;cursor:ew-resize;opacity:0;border-radius:3px;z-index:2}.nn-card-resize-s{position:absolute;left:6px;right:6px;bottom:0;height:6px;cursor:ns-resize;opacity:0;border-radius:3px;z-index:2}.nn-card:hover .nn-card-resize-e,.nn-card:hover .nn-card-resize-s,.nn-card-resize-e:hover,.nn-card-resize-s:hover{opacity:.45;background:#3b82f659}.nn-item-star-inline{margin-left:6px;font-size:.7rem;vertical-align:middle;cursor:pointer}.nn-card[data-color=green]{background:#22c55e59}.nn-card[data-color=red]{background:#ef444459}.nn-card[data-color=blue]{background:#3b82f659}.nn-card[data-color=indigo]{background:#6366f159}.nn-card[data-color=slate]{background:#64748b59}.nn-card[data-color=orange]{background:#f9731659}.nn-card[data-color=gray]{background:#6b728059}.nn-card[data-color=emerald]{background:#10b98159}.nn-card[data-color=teal]{background:#14b8a659}.nn-card[data-color=yellow]{background:#eab30859}.nn-card[data-color=purple]{background:#a855f759}.nn-card[data-color=pink]{background:#ec489959}.nn-card[data-color=cyan]{background:#06b6d459}.nn-card.is-highlight{outline:2px solid var(--color-highlight)}.nn-card-head{display:flex;justify-content:space-between;align-items:flex-start;margin:0 4px 6px;gap:4px}.nn-card-source{display:flex;gap:6px;align-items:center;min-width:0}.nn-card-icon-img{width:28px;height:28px;border-radius:50%;object-fit:cover;background:var(--color-base);flex-shrink:0}.nn-card-title{font-size:.95rem;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.nn-card-badge{font-size:.65rem;padding:1px 4px;border-radius:4px;background:#ffffff26;margin-left:4px}.nn-card-updated{font-size:.65rem;opacity:.65}.nn-card-actions{display:flex;gap:4px;flex-shrink:0}.nn-drag-handle{cursor:grab;touch-action:none}.nn-drag-handle:active{cursor:grabbing}.nn-card-body{flex:1;overflow-y:auto;border-radius:var(--radius-card);background:#27272ab3;padding:6px;margin-top:2px;min-height:0}html.light .nn-card-body{background:#ffffffbf}.nn-list-hot{list-style:none;display:flex;flex-direction:column;gap:4px}.nn-list-hot li a{display:flex;gap:6px;align-items:flex-start;padding:2px 3px;border-radius:5px;cursor:pointer;font-size:.8rem;line-height:1.35}.nn-list-hot li a:hover{background:#a3a3a326}.nn-rank{min-width:20px;height:20px;display:flex;align-items:center;justify-content:center;background:#a3a3a326;border-radius:5px;font-size:.75rem;flex-shrink:0}.nn-list-timeline{list-style:none;border-left:1px solid rgba(163,163,163,.5);margin-left:3px}.nn-list-timeline li{padding-left:6px;margin-bottom:6px}.nn-list-timeline .meta{font-size:.65rem;opacity:.5;display:flex;gap:4px;align-items:center}.nn-list-timeline .meta:before{content:"-";margin-left:-8px;margin-right:2px}.nn-list-timeline a{display:block;padding:2px 3px;margin-left:3px;border-radius:5px;cursor:pointer;line-height:1.35;font-size:.8rem}.nn-list-timeline a:hover{background:#a3a3a326}.nn-item-star{opacity:.35;font-size:.7rem;margin-left:auto;flex-shrink:0;cursor:pointer}.nn-item-star.active{opacity:1;color:#fbbf24}.nn-menu-wrap{position:relative}.nn-dropdown{position:absolute;right:0;top:calc(100% + 4px);z-index:150;min-width:168px;max-height:min(320px,50vh);overflow-y:auto}.nn-dropdown-inner{background:#27272af5;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:8px;padding:4px;box-shadow:0 6px 20px #00000059;border:1px solid rgba(163,163,163,.15)}html.light .nn-dropdown-inner{background:#fffffffa}.nn-dropdown li{list-style:none;padding:5px 8px;border-radius:6px;display:flex;gap:6px;align-items:center;cursor:pointer;font-size:.75rem;color:var(--color-text)}.nn-dropdown li:hover{background:#a3a3a326}.nn-dropdown li.disabled{opacity:.45;cursor:not-allowed}.nn-card.dragging{opacity:.35;transform:scale(.96);transition:transform .12s ease,opacity .12s ease;pointer-events:none}.nn-card-ghost{position:fixed;z-index:400;pointer-events:none;flex:none;transform:scale(1.05) rotate(-2deg);box-shadow:0 16px 36px #00000073;opacity:.95;transition:none;overflow:hidden}.nn-card-ghost .nn-card-body{display:none}.nn-card.drag-over{outline:2px dashed var(--color-highlight)}.nn-webview{position:fixed;top:0;right:0;bottom:0;left:0;z-index:350;display:flex;flex-direction:column;background:var(--bg-page)}.nn-webview-toolbar{display:flex;align-items:center;gap:8px;padding:8px 10px;border-bottom:1px solid rgba(163,163,163,.2);flex-shrink:0}.nn-webview-toolbar button{padding:4px 10px;border-radius:6px;background:#71717a33;cursor:pointer;font-size:.75rem;flex-shrink:0}.nn-webview-title{flex:1;font-size:.7rem;opacity:.65;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nn-webview-frame{flex:1;width:100%;border:none;background:#fff}.nn-empty{grid-column:1 / -1;width:100%;padding:32px 16px;text-align:center;opacity:.6;font-size:.85rem}.nn-overlay{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;padding:16px;z-index:300}.nn-backdrop{position:absolute;top:0;right:0;bottom:0;left:0;background:#00000073;cursor:pointer}.nn-modal{position:relative;width:min(480px,100%);max-height:min(480px,calc(100vh - 32px));overflow:auto;background:var(--bg-page);border-radius:10px;padding:14px;box-shadow:0 12px 40px #00000059;z-index:1}.nn-modal h2{font-size:.9rem;margin-bottom:10px;font-weight:600}.nn-modal input[type=search],.nn-modal input[type=text]{width:100%;padding:7px 9px;border-radius:7px;border:1px solid rgba(163,163,163,.35);background:var(--color-base);color:var(--color-text);margin-bottom:10px;font-size:.85rem}.nn-modal-list{list-style:none;display:flex;flex-direction:column;gap:2px;max-height:320px;overflow-y:auto}.nn-modal-list li{padding:7px 8px;border-radius:7px;cursor:pointer;display:flex;justify-content:space-between;gap:8px;font-size:.8rem;align-items:center}.nn-modal-list li:hover{background:#a3a3a326}.nn-modal-list li.is-selected{background:#3b82f62e;color:var(--color-highlight)}.nn-modal-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:10px}.nn-modal-actions button{padding:5px 10px;border-radius:7px;background:#71717a33;cursor:pointer;font-size:.8rem}.nn-modal-actions button:hover{background:#71717a52}.nn-row-link{cursor:pointer;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nn-card.is-loading .nn-card-body{opacity:.45}.nn-card-error{padding:8px;font-size:.75rem;color:#f87171;word-break:break-word}.nn-settings-tabs{display:flex;gap:4px;margin-bottom:10px}.nn-settings-tab{padding:4px 10px;border-radius:6px;font-size:.75rem;cursor:pointer;background:#71717a26}.nn-settings-tab.active{background:#3b82f638;color:var(--color-highlight);font-weight:600}.nn-settings-list{list-style:none;display:flex;flex-direction:column;gap:4px;max-height:320px;overflow-y:auto}.nn-settings-list li{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:7px;background:#71717a14}.nn-settings-list li.dragging{opacity:.45;pointer-events:none}.nn-settings-list li.drag-over{outline:1px dashed var(--color-highlight)}.nn-settings-drag{cursor:grab;opacity:.45;flex-shrink:0}.nn-settings-icon{width:22px;height:22px;border-radius:50%;object-fit:cover;background:var(--color-base);flex-shrink:0}.nn-settings-name{flex:1;min-width:0;font-size:.8rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nn-settings-toggle{display:none}.nn-switch{position:relative;display:inline-flex;align-items:center;width:34px;height:18px;flex-shrink:0;cursor:pointer}.nn-switch input{opacity:0;width:0;height:0;position:absolute}.nn-switch-slider{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:999px;background:#71717a73;transition:background .2s}.nn-switch-slider:before{content:"";position:absolute;width:14px;height:14px;left:2px;top:2px;border-radius:50%;background:#fff;transition:transform .2s}.nn-switch input:checked+.nn-switch-slider{background:#22c55ebf}.nn-switch input:checked+.nn-switch-slider:before{transform:translate(16px)}.nn-settings-ghost{position:fixed;z-index:500;pointer-events:none;list-style:none;opacity:.92;box-shadow:0 12px 28px #00000059;transform:scale(1.02);background:var(--bg-page);border-radius:7px;display:flex;align-items:center;gap:8px;padding:6px 8px;box-sizing:border-box}.nn-settings-hint{font-size:11px;opacity:.55;margin-top:8px}.nn-fav-header{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:8px}.nn-fav-header h2{margin:0;font-size:.9rem;font-weight:600;flex-shrink:0}.nn-fav-header input[type=text],.nn-fav-header input[type=search]{flex:1;max-width:200px;margin:0;padding:5px 8px;border-radius:6px;border:1px solid rgba(163,163,163,.35);background:var(--color-base);color:var(--color-text);font-size:.8rem}.nn-fav-modal-wrap{width:min(520px,calc(100vw - 32px))!important;height:min(480px,calc(100vh - 32px))!important;min-height:min(480px,calc(100vh - 32px))!important;max-height:min(480px,calc(100vh - 32px))!important;display:flex;flex-direction:column;overflow:hidden!important}.nn-fav-modal-wrap .nn-modal-list{max-height:none;flex:1;min-height:0}.nn-fav-body{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column}.nn-fav-body #fav-empty{flex:1;display:flex;align-items:center;justify-content:center;min-height:120px;margin:0}.nn-fav-list li{flex-direction:column;align-items:stretch;gap:6px}.nn-fav-row{display:flex;align-items:center;gap:6px;width:100%}.nn-tag-editor{width:100%;padding:6px 8px;border-radius:6px;background:#71717a1a}.nn-tag-input{width:100%;margin:0 0 6px;padding:5px 8px;border-radius:6px;border:1px solid rgba(163,163,163,.35);background:var(--color-base);color:var(--color-text);font-size:.75rem}.nn-tag-picks{display:flex;flex-wrap:wrap;gap:4px}.nn-tag-pick{cursor:pointer;border:none;font:inherit}.nn-tag-pick:hover{filter:brightness(1.1)}.nn-tag-empty{font-size:.7rem;opacity:.5}.nn-fav-tag{font-size:.65rem;padding:2px 7px;border-radius:999px;background:#3b82f633;color:var(--color-highlight);flex-shrink:0;line-height:1.4}.nn-fav-toolbar{display:flex;gap:6px;margin-bottom:8px;flex-wrap:wrap}.nn-fav-toolbar select{flex:1;min-width:90px;padding:4px 6px;border-radius:6px;border:1px solid rgba(163,163,163,.35);background:var(--color-base);color:var(--color-text);font-size:.75rem}.nn-fav-manage-btn{padding:4px 8px;border-radius:6px;font-size:.72rem;cursor:pointer;background:#71717a33;white-space:nowrap}.nn-fav-meta-panel{margin-bottom:8px;padding:8px;border-radius:7px;background:#71717a1a}.nn-fav-meta-row{display:flex;gap:6px;margin-bottom:6px}.nn-fav-meta-row:last-child{margin-bottom:0}.nn-fav-meta-row input{flex:1;margin:0;padding:5px 8px;border-radius:6px;border:1px solid rgba(163,163,163,.35);background:var(--color-base);color:var(--color-text);font-size:.75rem}.nn-fav-meta-row button{padding:4px 8px;border-radius:6px;font-size:.72rem;cursor:pointer;background:#71717a33;white-space:nowrap}.nn-settings-modal-wrap{width:min(480px,calc(100vw - 32px))!important}.nn-search-modal-wrap{width:min(680px,calc(100vw - 32px))!important;height:min(480px,calc(100vh - 32px))!important;max-height:min(480px,calc(100vh - 32px))!important;display:flex!important;flex-direction:column;overflow:hidden!important;padding:12px!important}.nn-search-modal-wrap>input[type=search]{flex-shrink:0;margin-bottom:10px;padding:10px 14px;border-radius:999px;border:none;background:#71717a38;font-size:.85rem}html.light .nn-search-modal-wrap>input[type=search]{background:#0000000f}.nn-search-body{flex:1;min-height:0;display:grid;grid-template-columns:minmax(0,38%) minmax(0,1fr);gap:10px}.nn-search-sidebar{overflow-y:auto;min-height:0;padding-right:4px}.nn-search-group{margin-bottom:10px}.nn-search-group-title{font-size:.7rem;font-weight:600;opacity:.45;margin-bottom:4px;padding:0 6px}.nn-search-list{list-style:none;display:flex;flex-direction:column;gap:2px}.nn-search-item{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:10px;cursor:pointer;transition:background .12s}.nn-search-item:hover{background:#a3a3a31f}.nn-search-item.is-selected{background:#a3a3a333}.nn-search-icon{width:24px;height:24px;border-radius:50%;object-fit:cover;background:var(--color-base);flex-shrink:0}.nn-search-item-text{flex:1;min-width:0;display:flex;align-items:baseline;gap:6px}.nn-search-name{font-size:.82rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.nn-search-tag{font-size:.68rem;opacity:.45;white-space:nowrap;flex-shrink:0}.nn-search-star{flex-shrink:0;font-size:.95rem}.nn-search-empty,.nn-search-preview-empty{display:flex;align-items:center;justify-content:center;height:100%;opacity:.5;font-size:.8rem;text-align:center;padding:16px}.nn-search-preview{min-height:0;overflow:hidden;display:flex;flex-direction:column}.nn-search-preview-inner{flex:1;min-height:0;display:flex;flex-direction:column}.nn-search-preview .nn-card.is-preview{flex:1;min-height:0;height:auto;max-width:none;width:100%}.nn-fav-date{font-size:.68rem;opacity:.4;flex-shrink:0;font-family:ui-monospace,monospace}.nn-fav-group{display:none}.nn-fav-edit{padding:2px 5px;border-radius:4px;font-size:.7rem;cursor:pointer;background:#71717a26;flex-shrink:0}.nn-fav-list button[data-remove]{padding:2px 6px;border-radius:4px;font-size:.7rem;cursor:pointer;background:#ef444426;color:#f87171;flex-shrink:0} +:root{--color-base: #27272a;--color-text: #d4d4d8;--color-accent: #71717a;--color-accent-hover: #a1a1aa;--color-highlight: #3b82f6;--radius-card: 12px;--card-height: 248px;--font-brand: "SF Mono", ui-monospace, Menlo, Monaco, Consolas, monospace}html.dark{color-scheme:dark;--color-base: #27272a;--color-text: #d4d4d8;--bg-page: #3f3f46}html.light{color-scheme:light;--color-base: #e4e4e7;--color-text: #27272a;--bg-page: #e4e4e7}*{box-sizing:border-box;margin:0;padding:0}html,body{width:100%;height:100%;overflow:hidden}body{font-family:system-ui,-apple-system,PingFang SC,Microsoft YaHei,sans-serif;font-size:13px;background:var(--bg-page);color:var(--color-text);-webkit-user-select:none;user-select:none}button,a{cursor:default;border:none;background:none;color:inherit;font:inherit;text-decoration:none}#app{width:100%;height:100%;display:flex;flex-direction:column;overflow:hidden;background:var(--bg-page)}#overlay-root{position:fixed;top:0;right:0;bottom:0;left:0;z-index:300;pointer-events:none}#overlay-root:not(:empty){pointer-events:auto}.btn-icon{opacity:.55;transition:opacity .2s;font-size:1.1rem;line-height:1;padding:2px}.btn-icon:hover{opacity:.9;cursor:pointer}.btn-icon.active{opacity:1;color:#fbbf24}.btn-icon.is-spinning{opacity:1;animation:nn-spin .8s linear infinite;pointer-events:none}@keyframes nn-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.nn-header{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;padding:8px 12px 6px;flex-shrink:0;gap:8px}.nn-logo-wrap{display:flex;align-items:center;gap:6px;justify-self:start;min-width:0}.nn-logo-img{width:32px;height:32px;border-radius:8px;object-fit:cover;flex-shrink:0}.nn-logo{width:32px;height:32px;border-radius:8px;background:linear-gradient(135deg,#71717a,#a1a1aa);display:flex;align-items:center;justify-content:center;font-size:9px;font-weight:700;color:#fff;flex-shrink:0}.nn-brand{font-family:var(--font-brand);font-size:1rem;line-height:1.05}.nn-brand .accent{color:var(--color-highlight)}.nn-version{font-size:.65rem;font-family:monospace;opacity:.55;margin-left:2px;align-self:flex-start;margin-top:2px}.nn-navbar{display:flex;flex-wrap:wrap;justify-content:center;padding:6px 8px;border-radius:var(--radius-card);background:#71717a1f;box-shadow:0 1px 4px #0000001f;font-size:.75rem;gap:2px}.nn-navbar button{padding:3px 6px;border-radius:5px;opacity:.8;cursor:pointer;transition:background .15s;white-space:nowrap}.nn-navbar button:hover{background:#71717a2e}.nn-navbar button.active{color:var(--color-highlight);font-weight:600;opacity:1}.nn-header-actions{justify-self:end;display:flex;gap:6px;align-items:center;color:var(--color-accent);font-size:1.05rem}.nn-main{flex:1;overflow-x:hidden;overflow-y:auto;padding:0 12px 12px;display:flex;flex-direction:column;min-height:0}.nn-cards-wrap{position:relative;flex:1;min-height:0;min-width:0}.nn-cards{display:flex;flex-wrap:wrap;gap:10px;align-content:start}.nn-card{height:var(--card-height);flex:1 1 calc(33.333% - 7px);min-width:220px;max-width:100%;border-radius:var(--radius-card);padding:10px;display:flex;flex-direction:column;position:relative;background:#64748b59}.nn-cards.has-custom-width .nn-card{flex:0 0 var(--card-width);width:var(--card-width);min-width:0;max-width:none}.nn-card-resize-e{position:absolute;right:0;top:28px;bottom:6px;width:6px;cursor:ew-resize;opacity:0;border-radius:3px;z-index:2}.nn-card-resize-s{position:absolute;left:6px;right:6px;bottom:0;height:6px;cursor:ns-resize;opacity:0;border-radius:3px;z-index:2}.nn-card:hover .nn-card-resize-e,.nn-card:hover .nn-card-resize-s,.nn-card-resize-e:hover,.nn-card-resize-s:hover{opacity:.45;background:#3b82f659}.nn-item-star-inline{margin-left:6px;font-size:.7rem;vertical-align:middle;cursor:pointer}.nn-card[data-color=green]{background:#22c55e59}.nn-card[data-color=red]{background:#ef444459}.nn-card[data-color=blue]{background:#3b82f659}.nn-card[data-color=indigo]{background:#6366f159}.nn-card[data-color=slate]{background:#64748b59}.nn-card[data-color=orange]{background:#f9731659}.nn-card[data-color=gray]{background:#6b728059}.nn-card[data-color=emerald]{background:#10b98159}.nn-card[data-color=teal]{background:#14b8a659}.nn-card[data-color=yellow]{background:#eab30859}.nn-card[data-color=purple]{background:#a855f759}.nn-card[data-color=pink]{background:#ec489959}.nn-card[data-color=cyan]{background:#06b6d459}.nn-card.is-highlight{outline:2px solid var(--color-highlight)}.nn-card-head{display:flex;justify-content:space-between;align-items:flex-start;margin:0 4px 6px;gap:4px}.nn-card-source{display:flex;gap:6px;align-items:center;min-width:0}.nn-card-icon-img{width:28px;height:28px;border-radius:50%;object-fit:cover;background:var(--color-base);flex-shrink:0}.nn-card-title{font-size:.95rem;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.nn-card-badge{font-size:.65rem;padding:1px 4px;border-radius:4px;background:#ffffff26;margin-left:4px}.nn-card-updated{font-size:.65rem;opacity:.65}.nn-card-actions{display:flex;gap:4px;flex-shrink:0}.nn-drag-handle{cursor:grab;touch-action:none}.nn-drag-handle:active{cursor:grabbing}.nn-card-body{flex:1;overflow-y:auto;border-radius:var(--radius-card);background:#27272ab3;padding:6px;margin-top:2px;min-height:0}html.light .nn-card-body{background:#ffffffbf}.nn-list-hot{list-style:none;display:flex;flex-direction:column;gap:4px}.nn-list-hot li a{display:flex;gap:6px;align-items:flex-start;padding:2px 3px;border-radius:5px;cursor:pointer;font-size:.8rem;line-height:1.35}.nn-list-hot li a:hover{background:#a3a3a326}.nn-rank{min-width:20px;height:20px;display:flex;align-items:center;justify-content:center;background:#a3a3a326;border-radius:5px;font-size:.75rem;flex-shrink:0}.nn-list-timeline{list-style:none;border-left:1px solid rgba(163,163,163,.5);margin-left:3px}.nn-list-timeline li{padding-left:6px;margin-bottom:6px}.nn-list-timeline .meta{font-size:.65rem;opacity:.5;display:flex;gap:4px;align-items:center}.nn-list-timeline .meta:before{content:"-";margin-left:-8px;margin-right:2px}.nn-list-timeline a{display:block;padding:2px 3px;margin-left:3px;border-radius:5px;cursor:pointer;line-height:1.35;font-size:.8rem}.nn-list-timeline a:hover{background:#a3a3a326}.nn-item-star{opacity:.35;font-size:.7rem;margin-left:auto;flex-shrink:0;cursor:pointer}.nn-item-star.active{opacity:1;color:#fbbf24}.nn-menu-wrap{position:relative}.nn-dropdown{position:absolute;right:0;top:calc(100% + 4px);z-index:150;min-width:168px;max-height:min(320px,50vh);overflow-y:auto}.nn-dropdown-inner{background:#27272af5;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:8px;padding:4px;box-shadow:0 6px 20px #00000059;border:1px solid rgba(163,163,163,.15)}html.light .nn-dropdown-inner{background:#fffffffa}.nn-dropdown li{list-style:none;padding:5px 8px;border-radius:6px;display:flex;gap:6px;align-items:center;cursor:pointer;font-size:.75rem;color:var(--color-text)}.nn-dropdown li:hover{background:#a3a3a326}.nn-dropdown li.disabled{opacity:.45;cursor:not-allowed}.nn-card.dragging{opacity:.35;transform:scale(.96);transition:transform .12s ease,opacity .12s ease;pointer-events:none}.nn-card-ghost{position:fixed;z-index:400;pointer-events:none;flex:none;transform:scale(1.05) rotate(-2deg);box-shadow:0 16px 36px #00000073;opacity:.95;transition:none;overflow:hidden}.nn-card-ghost .nn-card-body{display:none}.nn-card.drag-over{outline:2px dashed var(--color-highlight)}.nn-webview{position:fixed;top:0;right:0;bottom:0;left:0;z-index:350;display:flex;flex-direction:column;background:var(--bg-page)}.nn-webview-toolbar{display:flex;align-items:center;gap:8px;padding:8px 10px;border-bottom:1px solid rgba(163,163,163,.2);flex-shrink:0}.nn-webview-toolbar button{padding:4px 10px;border-radius:6px;background:#71717a33;cursor:pointer;font-size:.75rem;flex-shrink:0}.nn-webview-title{flex:1;font-size:.7rem;opacity:.65;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nn-webview-frame{flex:1;width:100%;border:none;background:#fff}.nn-empty{grid-column:1 / -1;width:100%;padding:32px 16px;text-align:center;opacity:.6;font-size:.85rem}.nn-overlay{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;padding:16px;z-index:300}.nn-backdrop{position:absolute;top:0;right:0;bottom:0;left:0;background:#00000073;cursor:pointer}.nn-modal{position:relative;width:min(480px,100%);max-height:min(480px,calc(100vh - 32px));overflow:auto;background:var(--bg-page);border-radius:10px;padding:14px;box-shadow:0 12px 40px #00000059;z-index:1}.nn-modal h2{font-size:.9rem;margin-bottom:10px;font-weight:600}.nn-modal input[type=search],.nn-modal input[type=text]{width:100%;padding:7px 9px;border-radius:7px;border:1px solid rgba(163,163,163,.35);background:var(--color-base);color:var(--color-text);margin-bottom:10px;font-size:.85rem}.nn-modal-list{list-style:none;display:flex;flex-direction:column;gap:2px;max-height:320px;overflow-y:auto}.nn-modal-list li{padding:7px 8px;border-radius:7px;cursor:pointer;display:flex;justify-content:space-between;gap:8px;font-size:.8rem;align-items:center}.nn-modal-list li:hover{background:#a3a3a326}.nn-modal-list li.is-selected{background:#3b82f62e;color:var(--color-highlight)}.nn-modal-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:10px}.nn-modal-actions button{padding:5px 10px;border-radius:7px;background:#71717a33;cursor:pointer;font-size:.8rem}.nn-modal-actions button:hover{background:#71717a52}.nn-row-link{cursor:pointer;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nn-card.is-loading .nn-card-body{opacity:.45}.nn-card-error{padding:8px;font-size:.75rem;color:#f87171;word-break:break-word}.nn-settings-tabs{display:flex;gap:4px;margin-bottom:10px}.nn-settings-tab{padding:4px 10px;border-radius:6px;font-size:.75rem;cursor:pointer;background:#71717a26}.nn-settings-tab.active{background:#3b82f638;color:var(--color-highlight);font-weight:600}.nn-settings-list{list-style:none;display:flex;flex-direction:column;gap:4px;max-height:320px;overflow-y:auto}.nn-settings-list li{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:7px;background:#71717a14}.nn-settings-list li.dragging{opacity:.45;pointer-events:none}.nn-settings-list li.drag-over{outline:1px dashed var(--color-highlight)}.nn-settings-drag{cursor:grab;opacity:.45;flex-shrink:0}.nn-settings-icon{width:22px;height:22px;border-radius:50%;object-fit:cover;background:var(--color-base);flex-shrink:0}.nn-settings-name{flex:1;min-width:0;font-size:.8rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nn-settings-toggle{display:none}.nn-switch{position:relative;display:inline-flex;align-items:center;width:34px;height:18px;flex-shrink:0;cursor:pointer}.nn-switch input{opacity:0;width:0;height:0;position:absolute}.nn-switch-slider{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:999px;background:#71717a73;transition:background .2s}.nn-switch-slider:before{content:"";position:absolute;width:14px;height:14px;left:2px;top:2px;border-radius:50%;background:#fff;transition:transform .2s}.nn-switch input:checked+.nn-switch-slider{background:#22c55ebf}.nn-switch input:checked+.nn-switch-slider:before{transform:translate(16px)}.nn-settings-ghost{position:fixed;z-index:500;pointer-events:none;list-style:none;opacity:.92;box-shadow:0 12px 28px #00000059;transform:scale(1.02);background:var(--bg-page);border-radius:7px;display:flex;align-items:center;gap:8px;padding:6px 8px;box-sizing:border-box}.nn-settings-hint{font-size:11px;opacity:.55;margin-top:8px}.nn-fav-header{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:8px}.nn-fav-header h2{margin:0;font-size:.9rem;font-weight:600;flex-shrink:0}.nn-fav-header input[type=text],.nn-fav-header input[type=search]{flex:1;max-width:200px;margin:0;padding:5px 8px;border-radius:6px;border:1px solid rgba(163,163,163,.35);background:var(--color-base);color:var(--color-text);font-size:.8rem}.nn-fav-modal-wrap{width:min(520px,calc(100vw - 32px))!important;height:min(480px,calc(100vh - 32px))!important;min-height:min(480px,calc(100vh - 32px))!important;max-height:min(480px,calc(100vh - 32px))!important;display:flex;flex-direction:column;overflow:hidden!important}.nn-fav-modal-wrap .nn-modal-list{max-height:none;flex:1;min-height:0}.nn-fav-body{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column}.nn-fav-body #fav-empty{flex:1;display:flex;align-items:center;justify-content:center;min-height:120px;margin:0}.nn-fav-list li{flex-direction:column;align-items:stretch;gap:6px}.nn-fav-row{display:flex;align-items:center;gap:6px;width:100%}.nn-tag-editor{width:100%;padding:6px 8px;border-radius:6px;background:#71717a1a}.nn-tag-input{width:100%;margin:0 0 6px;padding:5px 8px;border-radius:6px;border:1px solid rgba(163,163,163,.35);background:var(--color-base);color:var(--color-text);font-size:.75rem}.nn-tag-picks{display:flex;flex-wrap:wrap;gap:4px}.nn-tag-pick{cursor:pointer;border:none;font:inherit}.nn-tag-pick:hover{filter:brightness(1.1)}.nn-tag-empty{font-size:.7rem;opacity:.5}.nn-fav-tag{font-size:.65rem;padding:2px 7px;border-radius:999px;background:#3b82f633;color:var(--color-highlight);flex-shrink:0;line-height:1.4}.nn-fav-toolbar{display:flex;gap:6px;margin-bottom:8px;flex-wrap:wrap}.nn-fav-toolbar select{flex:1;min-width:90px;padding:4px 6px;border-radius:6px;border:1px solid rgba(163,163,163,.35);background:var(--color-base);color:var(--color-text);font-size:.75rem}.nn-fav-manage-btn{padding:4px 8px;border-radius:6px;font-size:.72rem;cursor:pointer;background:#71717a33;white-space:nowrap}.nn-fav-meta-panel{margin-bottom:8px;padding:8px;border-radius:7px;background:#71717a1a}.nn-fav-meta-row{display:flex;gap:6px;margin-bottom:6px}.nn-fav-meta-row:last-child{margin-bottom:0}.nn-fav-meta-row input{flex:1;margin:0;padding:5px 8px;border-radius:6px;border:1px solid rgba(163,163,163,.35);background:var(--color-base);color:var(--color-text);font-size:.75rem}.nn-fav-meta-row button{padding:4px 8px;border-radius:6px;font-size:.72rem;cursor:pointer;background:#71717a33;white-space:nowrap}.nn-settings-modal-wrap{width:min(480px,calc(100vw - 32px))!important}.nn-search-modal-wrap{width:min(680px,calc(100vw - 32px))!important;height:min(480px,calc(100vh - 32px))!important;max-height:min(480px,calc(100vh - 32px))!important;display:flex!important;flex-direction:column;overflow:hidden!important;padding:12px!important}.nn-search-modal-wrap>input[type=search]{flex-shrink:0;margin-bottom:10px;padding:10px 14px;border-radius:999px;border:none;background:#71717a38;font-size:.85rem}html.light .nn-search-modal-wrap>input[type=search]{background:#0000000f}.nn-search-body{flex:1;min-height:0;display:grid;grid-template-columns:minmax(0,38%) minmax(0,1fr);gap:10px}.nn-search-sidebar{overflow-y:auto;min-height:0;padding-right:4px}.nn-search-group{margin-bottom:10px}.nn-search-group-title{font-size:.7rem;font-weight:600;opacity:.45;margin-bottom:4px;padding:0 6px}.nn-search-list{list-style:none;display:flex;flex-direction:column;gap:2px}.nn-search-item{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:10px;cursor:pointer;transition:background .12s}.nn-search-item:hover{background:#a3a3a31f}.nn-search-item.is-selected{background:#a3a3a333}.nn-search-icon{width:24px;height:24px;border-radius:50%;object-fit:cover;background:var(--color-base);flex-shrink:0}.nn-search-item-text{flex:1;min-width:0;display:flex;align-items:baseline;gap:6px}.nn-search-name{font-size:.82rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.nn-search-tag{font-size:.68rem;opacity:.45;white-space:nowrap;flex-shrink:0}.nn-search-star{flex-shrink:0;font-size:.95rem}.nn-search-empty,.nn-search-preview-empty{display:flex;align-items:center;justify-content:center;height:100%;opacity:.5;font-size:.8rem;text-align:center;padding:16px}.nn-search-preview{min-height:0;overflow:hidden;display:flex;flex-direction:column}.nn-search-preview-inner{flex:1;min-height:0;display:flex;flex-direction:column}.nn-search-preview .nn-card.is-preview{flex:1;min-height:0;height:auto;max-width:none;width:100%}.nn-fav-date{font-size:.68rem;opacity:.4;flex-shrink:0;font-family:ui-monospace,monospace}.nn-fav-group{display:none}.nn-fav-edit{padding:2px 5px;border-radius:4px;font-size:.7rem;cursor:pointer;background:#71717a26;flex-shrink:0}.nn-fav-list button[data-remove]{padding:2px 6px;border-radius:4px;font-size:.7rem;cursor:pointer;background:#ef444426;color:#f87171;flex-shrink:0}.nn-s1{display:flex;width:100%;height:100%;min-height:0;overflow:hidden;background:#fff}html.dark .nn-s1{background:#1f1f23}.nn-s1-sidebar{width:168px;flex-shrink:0;display:flex;flex-direction:column;background:#f5f5f5;border-right:1px solid rgba(0,0,0,.06);position:relative;min-height:0;overflow:hidden}html.dark .nn-s1-sidebar{background:#2a2a2e;border-right-color:#ffffff14}.nn-s1-search-wrap{padding:10px 10px 6px;flex-shrink:0}.nn-s1-search{width:100%;padding:6px 10px;border-radius:8px;border:1px solid rgba(0,0,0,.08);background:#fff;color:#333;font-size:.78rem;outline:none}html.dark .nn-s1-search{background:#1f1f23;border-color:#ffffff1a;color:var(--color-text)}.nn-s1-search:focus{border-color:#1677ff;box-shadow:0 0 0 2px #1677ff1f}.nn-s1-focus-block{flex-shrink:0}.nn-s1-focus-toggle,.nn-s1-group-title{width:100%;display:flex;align-items:center;gap:6px;padding:7px 12px;font-size:.78rem;color:#666;cursor:pointer;text-align:left}html.dark .nn-s1-focus-toggle,html.dark .nn-s1-group-title{color:#a1a1aa}.nn-s1-focus-toggle:hover,.nn-s1-group-title:hover{background:#0000000a}html.dark .nn-s1-focus-toggle:hover,html.dark .nn-s1-group-title:hover{background:#ffffff0d}.nn-s1-focus-icon{color:#f59e0b;font-size:.85rem}.nn-s1-focus-count{font-size:.65rem;padding:0 5px;border-radius:999px;background:#1677ff1f;color:#1677ff;line-height:1.5}.nn-s1-chevron{margin-left:auto;font-size:.65rem;opacity:.55}.nn-s1-focus-list,.nn-s1-group-items{display:flex;flex-direction:column;gap:1px;padding:0 6px 4px}.nn-s1-sidebar-scroll{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;padding-bottom:8px}.nn-s1-groups{padding-bottom:4px}.nn-s1-group{margin-top:2px}.nn-s1-nav-item{width:100%;display:flex;align-items:center;gap:8px;padding:7px 10px;border-radius:8px;font-size:.8rem;color:#333;cursor:pointer;text-align:left;transition:background .15s,color .15s}html.dark .nn-s1-nav-item{color:var(--color-text)}.nn-s1-nav-item:hover{background:#1677ff0f}.nn-s1-nav-item.active{background:#e6f4ff;color:#1677ff;font-weight:600}html.dark .nn-s1-nav-item.active{background:#1677ff2e;color:#60a5fa}.nn-s1-nav-icon{width:20px;height:20px;border-radius:50%;object-fit:cover;flex-shrink:0;background:#fff}.nn-s1-nav-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nn-s1-settings{width:100%;display:flex;align-items:center;gap:6px;padding:10px 14px;font-size:.8rem;color:#666;cursor:pointer;background:#f5f5f5}.nn-s1-footer{flex-shrink:0;position:relative;z-index:2;border-top:1px solid rgba(0,0,0,.06);background:#f5f5f5;box-shadow:0 -4px 12px #0000000a}html.dark .nn-s1-footer{background:#2a2a2e;border-top-color:#ffffff14;box-shadow:0 -4px 12px #0003}html.dark .nn-s1-settings{background:#2a2a2e;color:#a1a1aa}.nn-s1-settings:hover{color:#1677ff;background:#1677ff0d}.nn-s1-settings-icon{font-size:.95rem}.nn-s1-menu-wrap{position:absolute;left:10px;bottom:calc(100% + 4px)}.nn-s1-dropdown{left:0;right:auto;bottom:calc(100% + 4px);top:auto}.nn-s1-main{flex:1;min-width:0;display:flex;flex-direction:column;position:relative;background:#fff}html.dark .nn-s1-main{background:#1f1f23}.nn-s1-content-head{flex-shrink:0;padding:14px 18px 8px;border-bottom:1px solid rgba(0,0,0,.05);display:flex;align-items:center;justify-content:space-between;gap:10px}.nn-s1-focus-btn{flex-shrink:0;font-size:1.1rem}html.dark .nn-s1-content-head{border-bottom-color:#ffffff0f}.nn-s1-source{display:flex;align-items:center;gap:10px}.nn-s1-source-icon{width:32px;height:32px;border-radius:50%;object-fit:cover}.nn-s1-source-name{font-size:1rem;font-weight:700;color:#222}html.dark .nn-s1-source-name{color:var(--color-text)}.nn-s1-source-tag{margin-left:6px;font-size:.68rem;font-weight:400;opacity:.55}.nn-s1-source-updated{font-size:.68rem;opacity:.5;margin-top:2px}.nn-s1-content-body{flex:1;overflow-y:auto;padding:8px 18px 64px;min-height:0}.nn-s1-content-body.is-loading{opacity:.55}.nn-s1-list{list-style:none;display:flex;flex-direction:column;gap:2px}.nn-s1-item{display:flex;align-items:flex-start;gap:10px;padding:9px 10px;border-radius:8px;cursor:pointer;line-height:1.45;font-size:.88rem;color:#222;transition:color .2s ease,background .2s ease,transform .15s ease}html.dark .nn-s1-item{color:var(--color-text)}.nn-s1-item:hover{color:#1677ff;background:#1677ff14;transform:translate(3px)}html.dark .nn-s1-item:hover{color:#60a5fa;background:#60a5fa1f}.nn-s1-rank{min-width:24px;font-size:.82rem;color:#999;flex-shrink:0}.nn-s1-item:hover .nn-s1-rank{color:#1677ff}.nn-s1-title{flex:1;min-width:0}.nn-s1-heat{flex-shrink:0;font-size:.75rem;color:#f97316;white-space:nowrap}.nn-s1-list-timeline .nn-s1-item{align-items:flex-start}.nn-s1-item-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}.nn-s1-list-timeline .nn-s1-meta{font-size:.68rem;opacity:.5}.nn-s1-empty,.nn-s1-empty-side{padding:24px 12px;text-align:center;opacity:.5;font-size:.8rem}.nn-s1-error{padding:16px;color:#f87171;font-size:.8rem}.nn-s1-fabs{position:absolute;right:18px;bottom:18px;display:flex;flex-direction:column;gap:10px;z-index:5}.nn-s1-fab{width:40px;height:40px;border-radius:50%;background:#fff;box-shadow:0 2px 12px #0000001f;display:flex;align-items:center;justify-content:center;font-size:1.1rem;color:#666;cursor:pointer;transition:box-shadow .2s,color .2s,transform .15s}html.dark .nn-s1-fab{background:#2a2a2e;color:#a1a1aa;box-shadow:0 2px 12px #00000059}.nn-s1-fab:hover{color:#1677ff;box-shadow:0 4px 16px #1677ff33;transform:translateY(-1px)}.nn-s1-fab.is-spinning{animation:nn-spin .8s linear infinite;pointer-events:none}.nn-s1-fab-top[hidden]{display:none!important} diff --git a/plugins/newsnow/assets/main-CVdvgvJU.js b/plugins/newsnow/assets/main-CVdvgvJU.js deleted file mode 100644 index 1f10a582..00000000 --- a/plugins/newsnow/assets/main-CVdvgvJU.js +++ /dev/null @@ -1,153 +0,0 @@ -(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const a of document.querySelectorAll('link[rel="modulepreload"]'))o(a);new MutationObserver(a=>{for(const r of a)if(r.type==="childList")for(const s of r.addedNodes)s.tagName==="LINK"&&s.rel==="modulepreload"&&o(s)}).observe(document,{childList:!0,subtree:!0});function n(a){const r={};return a.integrity&&(r.integrity=a.integrity),a.referrerPolicy&&(r.referrerPolicy=a.referrerPolicy),a.crossOrigin==="use-credentials"?r.credentials="include":a.crossOrigin==="anonymous"?r.credentials="omit":r.credentials="same-origin",r}function o(a){if(a.ep)return;a.ep=!0;const r=n(a);fetch(a.href,r)}})();function N(e){const t=String(e||"").trim();return t?t.replace(/\/+$/,""):""}function te(e,t,n={}){const o=N(e);if(!o)throw new Error("API 基址不能为空");if(!t)throw new Error("sourceId 不能为空");const a=new URL("/api/s",`${o}/`);return a.searchParams.set("id",t),n.latest&&a.searchParams.set("latest","true"),a.toString()}function Te(e,t,n={}){if(!n.isDev)return e;try{const o=new URL(e),a=N(t),r=N("https://newsnow.busiyi.world");if(a===r&&o.pathname.startsWith("/api/"))return`${o.pathname}${o.search}`}catch{}return e}function de(e){try{const t=new URL(e);return t.protocol==="http:"||t.protocol==="https:"}catch{return!1}}const xe=["focus","hottest","realtime","updated"],Ae=[{id:"focus",label:"关注",kind:"column"},{id:"hottest",label:"热搜",kind:"column"},{id:"realtime",label:"新闻",kind:"column"},{id:"search",label:"搜索",kind:"action"}],Me={focus:"关注",hottest:"热搜",realtime:"新闻",updated:"更新"},Oe={tech:"科技",china:"国内",world:"国际",finance:"财经",sports:"体育",other:"其他"},Pe=["tech","china","world","finance","sports","other"],Fe={"newsnow-news":"realtime","newsnow-hot":"hottest","newsnow-browse":"focus"},De=["internal","ubrowser","external"];function Ue(e){return Fe[e]??"realtime"}function he(e){return e==="updated"?"realtime":xe.includes(e)?e:"realtime"}const Ne={redirect:"v2ex-share",name:"V2EX",column:"tech",home:"https://v2ex.com/",color:"slate",interval:6e5,title:"最新分享"},je={name:"知乎",type:"hottest",column:"china",home:"https://www.zhihu.com",color:"blue",interval:6e5},He={title:"实时热搜",name:"微博",type:"hottest",column:"china",home:"https://weibo.com",color:"red",interval:12e4},Ie={name:"联合早报",type:"realtime",desc:"来自第三方网站: 早晨报",column:"world",home:"https://www.zaobao.com",color:"red",interval:18e5},Re={title:"今日最热",name:"酷安",type:"hottest",column:"tech",home:"https://coolapk.com",color:"green",interval:6e5},Be={redirect:"mktnews-flash",name:"MKTNews",column:"finance",home:"https://mktnews.net",color:"indigo",interval:12e4,title:"快讯"},Ke={redirect:"wallstreetcn-quick",name:"华尔街见闻",type:"realtime",column:"finance",home:"https://wallstreetcn.com/",color:"blue",interval:3e5,title:"快讯"},_e={name:"抖音",type:"hottest",column:"china",home:"https://www.douyin.com",color:"gray",interval:6e5},ze={title:"主干道热帖",name:"虎扑",type:"hottest",column:"sports",home:"https://hupu.com",color:"red",interval:6e5},Xe={title:"头条",name:"懂球帝",type:"realtime",column:"sports",home:"https://www.dongqiudi.com",color:"green",interval:6e5},Ge={name:"AIHOT",type:"realtime",column:"tech",home:"https://aihot.virxact.com/all",color:"blue",interval:3e5},Ye={title:"热议",name:"百度贴吧",type:"hottest",column:"china",home:"https://tieba.baidu.com",color:"blue",interval:6e5},We={name:"今日头条",type:"hottest",column:"china",home:"https://www.toutiao.com",color:"red",interval:6e5},Ve={name:"IT之家",type:"realtime",column:"tech",home:"https://www.ithome.com",color:"red",interval:6e5},Je={title:"热榜",name:"澎湃新闻",type:"hottest",column:"china",home:"https://www.thepaper.cn",color:"gray",interval:18e5},Qe={name:"卫星通讯社",column:"world",home:"https://sputniknews.cn",color:"orange",interval:6e5},Ze={name:"参考消息",column:"world",home:"https://china.cankaoxiaoxi.com",color:"red",interval:18e5},et={redirect:"pcbeta-windows11",name:"远景论坛",type:"realtime",column:"tech",home:"https://bbs.pcbeta.com",color:"blue",interval:3e5,title:"Win11"},tt={redirect:"cls-telegraph",name:"财联社",type:"realtime",column:"finance",home:"https://www.cls.cn",color:"red",interval:3e5,title:"电报"},nt={redirect:"xueqiu-hotstock",name:"雪球",type:"hottest",column:"finance",home:"https://xueqiu.com",color:"blue",interval:12e4,title:"热门股票"},ot={title:"事件",name:"格隆汇",type:"realtime",column:"finance",home:"https://www.gelonghui.com",color:"blue",interval:12e4},rt={redirect:"fastbull-express",name:"法布财经",type:"realtime",column:"finance",home:"https://www.fastbull.cn",color:"emerald",interval:12e4,title:"快讯"},at={name:"Solidot",column:"tech",home:"https://solidot.org",color:"teal",interval:36e5},st={name:"Hacker News",type:"hottest",column:"tech",home:"https://news.ycombinator.com/",color:"orange",interval:6e5},it={name:"Product Hunt",type:"hottest",column:"tech",home:"https://www.producthunt.com/",color:"red",interval:6e5},ct={redirect:"github-trending-today",name:"Github",type:"hottest",column:"tech",home:"https://github.com/",color:"gray",interval:6e5,title:"Today"},lt={redirect:"bilibili-hot-search",name:"哔哩哔哩",type:"hottest",column:"china",home:"https://www.bilibili.com",color:"blue",interval:6e5,title:"热搜"},ut={name:"快手",type:"hottest",disable:"cf",column:"china",home:"https://www.kuaishou.com",color:"orange",interval:6e5},dt={name:"靠谱新闻",desc:"不一定靠谱,多看多思考",column:"world",home:"https://kaopu.news/",color:"gray",interval:18e5},ht={name:"金十数据",type:"realtime",column:"finance",home:"https://www.jin10.com",color:"blue",interval:6e5},ft={name:"百度热搜",type:"hottest",column:"china",home:"https://www.baidu.com",color:"blue",interval:6e5},pt={name:"牛客",type:"hottest",column:"china",home:"https://www.nowcoder.com",color:"blue",interval:6e5},mt={name:"少数派",type:"hottest",column:"tech",home:"https://sspai.com",color:"red",interval:6e5},gt={name:"稀土掘金",type:"hottest",column:"tech",home:"https://juejin.cn",color:"blue",interval:6e5},vt={title:"热点资讯",name:"凤凰网",type:"hottest",column:"china",home:"https://www.ifeng.com",color:"red",interval:6e5},yt={redirect:"chongbuluo-latest",name:"虫部落",column:"china",home:"https://www.chongbuluo.com/forum.php?mod=guide&view=newthread",color:"green",interval:18e5,title:"最新"},bt={title:"热门电影",name:"豆瓣",type:"hottest",column:"china",home:"https://www.douban.com",color:"green",interval:6e5},wt={title:"在线人数",name:"Steam",type:"hottest",column:"world",home:"https://store.steampowered.com",color:"blue",interval:6e5},St={redirect:"tencent-hot",name:"腾讯新闻",type:"hottest",column:"china",home:"https://news.qq.com/tag/aEWqxLtdgmQ=",color:"blue",interval:18e5,title:"综合早报"},Lt={title:"网络安全",name:"Freebuf",type:"hottest",column:"china",home:"https://www.freebuf.com/",color:"green",interval:6e5},$t={redirect:"qqvideo-tv-hotsearch",name:"腾讯视频",type:"hottest",column:"china",home:"https://v.qq.com/channel/tv",color:"blue",interval:18e5,title:"热搜榜"},Et={redirect:"iqiyi-hot-ranklist",name:"爱奇艺",type:"hottest",column:"china",home:"https://www.iqiyi.com",color:"green",interval:18e5,title:"热播榜"},x={v2ex:Ne,"v2ex-share":{name:"V2EX",column:"tech",home:"https://v2ex.com/",color:"slate",interval:6e5,title:"最新分享"},zhihu:je,weibo:He,zaobao:Ie,coolapk:Re,mktnews:Be,"mktnews-flash":{name:"MKTNews",column:"finance",home:"https://mktnews.net",color:"indigo",interval:12e4,title:"快讯"},wallstreetcn:Ke,"wallstreetcn-quick":{name:"华尔街见闻",type:"realtime",column:"finance",home:"https://wallstreetcn.com/",color:"blue",interval:3e5,title:"快讯"},"wallstreetcn-news":{name:"华尔街见闻",column:"finance",home:"https://wallstreetcn.com/",color:"blue",interval:18e5,title:"最新"},"wallstreetcn-hot":{name:"华尔街见闻",type:"hottest",column:"finance",home:"https://wallstreetcn.com/",color:"blue",interval:18e5,title:"最热"},"36kr":{redirect:"36kr-quick",name:"36氪",type:"realtime",disable:"cf",column:"tech",home:"https://36kr.com",color:"blue",interval:6e5,title:"快讯"},"36kr-quick":{name:"36氪",type:"realtime",disable:"cf",column:"tech",home:"https://36kr.com",color:"blue",interval:6e5,title:"快讯"},"36kr-renqi":{name:"36氪",type:"hottest",disable:"cf",column:"tech",home:"https://36kr.com",color:"blue",interval:6e5,title:"人气榜"},douyin:_e,hupu:ze,dongqiudi:Xe,aihot:Ge,tieba:Ye,toutiao:We,ithome:Ve,thepaper:Je,sputniknewscn:Qe,cankaoxiaoxi:Ze,pcbeta:et,"pcbeta-windows11":{name:"远景论坛",type:"realtime",column:"tech",home:"https://bbs.pcbeta.com",color:"blue",interval:3e5,title:"Win11"},cls:tt,"cls-telegraph":{name:"财联社",type:"realtime",column:"finance",home:"https://www.cls.cn",color:"red",interval:3e5,title:"电报"},"cls-depth":{name:"财联社",column:"finance",home:"https://www.cls.cn",color:"red",interval:6e5,title:"深度"},"cls-hot":{name:"财联社",type:"hottest",column:"finance",home:"https://www.cls.cn",color:"red",interval:6e5,title:"热门"},xueqiu:nt,"xueqiu-hotstock":{name:"雪球",type:"hottest",column:"finance",home:"https://xueqiu.com",color:"blue",interval:12e4,title:"热门股票"},gelonghui:ot,fastbull:rt,"fastbull-express":{name:"法布财经",type:"realtime",column:"finance",home:"https://www.fastbull.cn",color:"emerald",interval:12e4,title:"快讯"},"fastbull-news":{name:"法布财经",column:"finance",home:"https://www.fastbull.cn",color:"emerald",interval:18e5,title:"头条"},solidot:at,hackernews:st,producthunt:it,github:ct,"github-trending-today":{name:"Github",type:"hottest",column:"tech",home:"https://github.com/",color:"gray",interval:6e5,title:"Today"},bilibili:lt,"bilibili-hot-search":{name:"哔哩哔哩",type:"hottest",column:"china",home:"https://www.bilibili.com",color:"blue",interval:6e5,title:"热搜"},"bilibili-hot-video":{name:"哔哩哔哩",type:"hottest",disable:"cf",column:"china",home:"https://www.bilibili.com",color:"blue",interval:6e5,title:"热门视频"},"bilibili-ranking":{name:"哔哩哔哩",type:"hottest",disable:"cf",column:"china",home:"https://www.bilibili.com",color:"blue",interval:18e5,title:"排行榜"},kuaishou:ut,kaopu:dt,jin10:ht,baidu:ft,nowcoder:pt,sspai:mt,juejin:gt,ifeng:vt,chongbuluo:yt,"chongbuluo-latest":{name:"虫部落",column:"china",home:"https://www.chongbuluo.com/forum.php?mod=guide&view=newthread",color:"green",interval:18e5,title:"最新"},"chongbuluo-hot":{name:"虫部落",type:"hottest",column:"china",home:"https://www.chongbuluo.com/forum.php?mod=guide&view=hot",color:"green",interval:18e5,title:"最热"},douban:bt,steam:wt,tencent:St,"tencent-hot":{name:"腾讯新闻",type:"hottest",column:"china",home:"https://news.qq.com/tag/aEWqxLtdgmQ=",color:"blue",interval:18e5,title:"综合早报"},freebuf:Lt,qqvideo:$t,"qqvideo-tv-hotsearch":{name:"腾讯视频",type:"hottest",column:"china",home:"https://v.qq.com/channel/tv",color:"blue",interval:18e5,title:"热搜榜"},iqiyi:Et,"iqiyi-hot-ranklist":{name:"爱奇艺",type:"hottest",column:"china",home:"https://www.iqiyi.com",color:"green",interval:18e5,title:"热播榜"}},qt=["dongqiudi","producthunt","aihot","36kr-quick","36kr-renqi","cankaoxiaoxi","cls-telegraph","cls-depth","cls-hot","fastbull-express","fastbull-news","freebuf","jin10","kaopu","mktnews-flash","solidot","weibo","bilibili-hot-search","bilibili-hot-video","bilibili-ranking","kuaishou","toutiao"];function j(e){return!(!e||e.redirect||e.disable===!0||e.disable==="cf")}function ne(e,t){return Object.entries(t).filter(([,n])=>n.type===e&&j(n)).map(([n])=>n).sort((n,o)=>n.localeCompare(o))}function U(e,t){return Object.entries(t).filter(([,n])=>n.column===e&&j(n)).map(([n])=>n)}function kt(e=x){return{focus:[],hottest:ne("hottest",e),realtime:ne("realtime",e),updated:qt.filter(t=>j(e[t])),china:U("china",e),world:U("world",e),tech:U("tech",e),finance:U("finance",e),sports:U("sports",e)}}function H(e,t){return e.includes(t)?e.filter(n=>n!==t):[...e,t]}function Ct(e=x){return Object.entries(e).filter(([,t])=>j(t)).map(([t,n])=>({id:t,name:n.name,title:n.title,column:n.column,color:n.color,type:n.type}))}function Tt(e,t=Oe){const n=new Map;for(const o of e){const a=o.column||"other";n.has(a)||n.set(a,[]),n.get(a).push(o)}return Pe.filter(o=>n.has(o)).map(o=>({key:o,label:t[o]??o,items:n.get(o)}))}const xt=["focus","hottest","realtime"];function At(e){return Me[e]??e}function fe(e,t,n){return e==="focus"?[...t]:[...n[e]??[]]}function Mt(e,t){if(!(t!=null&&t.length))return e;const n=new Set(t);return e.filter(o=>!n.has(o))}function V(e,t){if(!(t!=null&&t.length))return e;const n=new Map(t.map((o,a)=>[o,a]));return[...e].sort((o,a)=>{const r=n.has(o)?n.get(o):Number.MAX_SAFE_INTEGER,s=n.has(a)?n.get(a):Number.MAX_SAFE_INTEGER;return r!==s?r-s:o.localeCompare(a)})}function oe(e,t,n){const o=[...e[t]??[]],a=o.indexOf(n);return a===-1?o.push(n):o.splice(a,1),{...e,[t]:o}}function pe(e,t,n){const o=e.filter(r=>r!==t),a=o.indexOf(n);return a===-1?(o.push(t),o):(o.splice(a,0,t),o)}function re(e,t,n,o){const a=fe(e,t,n),r=new Set(a),s=Object.entries(o).filter(([,c])=>j(c)?e==="focus"?!0:c.type===e:!1).map(([c])=>c).filter(c=>!r.has(c));return[...a,...s]}function Ot(e,t,n,o,a){const r=fe(e,t,n),s=Mt(r,o[e]??[]),c=a[e];return c!=null&&c.length?V(s,c):s}function Pt(e,t,n){const o={focus:[],hottest:[],realtime:[]};if(!Array.isArray(e))return o;const a=new Set(e);for(const r of n)a.has(r)||o.focus.push(r);for(const r of t.hottest??[])a.has(r)||o.hottest.push(r);for(const r of t.realtime??[])a.has(r)||o.realtime.push(r);return o}function Ft(e,t=Date.now()){return{id:String(e.id),sourceId:e.sourceId,title:e.title,url:e.url,savedAt:e.savedAt??t,tags:Array.isArray(e.tags)?[...e.tags]:[]}}function me(e){if(!e)return"";const t=typeof e=="number"?e:Date.parse(String(e));if(Number.isNaN(t))return"";const n=new Date(t),o=n.getFullYear(),a=String(n.getMonth()+1).padStart(2,"0"),r=String(n.getDate()).padStart(2,"0");return`${o}-${a}-${r}`}function Dt(e,t={}){var a,r;const n=((a=t.query)==null?void 0:a.trim().toLowerCase())??"",o=((r=t.tag)==null?void 0:r.trim())??"";return e.filter(s=>o&&!(s.tags??[]).includes(o)?!1:n?[s.title,s.url,s.sourceId,...s.tags??[],me(s.savedAt)].join(" ").toLowerCase().includes(n):!0)}function Ut(e){const t=new Set;for(const n of e)for(const o of n.tags??[])t.add(o);return[...t].sort((n,o)=>n.localeCompare(o))}function Nt(e,t){const n=t.trim();return!n||e.includes(n)?e:[...e,n].sort((o,a)=>o.localeCompare(a))}function jt(e,t,n){const o=n.trim();return o?e.map(a=>{if($(a)!==t)return a;const r=a.tags??[];return r.includes(o)?a:{...a,tags:[...r,o]}}):e}function X(e,t){return e.some(n=>$(n)===t)}function $(e){return`${e.sourceId}:${e.id}`}function ge(e,t){const n=$(t);return e.some(o=>$(o)===n)?e:[Ft(t),...e]}function ve(e,t){return e.filter(n=>$(n)!==t)}function Ht(e,t){const n=$(t);return X(e,n)?ve(e,n):ge(e,t)}const ae={baseUrl:"https://newsnow.busiyi.world",theme:"dark",openMode:"external",focusSources:[],enabledSources:null,disabledSources:{focus:[],hottest:[],realtime:[]},sourceOrder:{},cardLayout:{},cardSizes:{},favoriteTags:[],favorites:[],lastColumn:"updated"};function It(e){if(!e||typeof e!="object")return{...ae,disabledSources:{focus:[],hottest:[],realtime:[]},sourceOrder:{},cardLayout:{},cardSizes:{},favoriteTags:[],favorites:[]};const t=e.disabledSources&&typeof e.disabledSources=="object"?{focus:Array.isArray(e.disabledSources.focus)?[...e.disabledSources.focus]:[],hottest:Array.isArray(e.disabledSources.hottest)?[...e.disabledSources.hottest]:[],realtime:Array.isArray(e.disabledSources.realtime)?[...e.disabledSources.realtime]:[]}:{focus:[],hottest:[],realtime:[]};return{...ae,...e,focusSources:Array.isArray(e.focusSources)?[...e.focusSources]:[],enabledSources:Array.isArray(e.enabledSources)?[...e.enabledSources]:e.enabledSources,disabledSources:t,sourceOrder:e.sourceOrder&&typeof e.sourceOrder=="object"?{...e.sourceOrder}:{},cardLayout:Rt(e),cardSizes:Bt(e),favoriteTags:Array.isArray(e.favoriteTags)?[...e.favoriteTags]:[],favorites:Array.isArray(e.favorites)?e.favorites.map(n=>({...n,tags:Array.isArray(n.tags)?[...n.tags]:[]})):[]}}function Rt(e){return e!=null&&e.cardLayout&&typeof e.cardLayout=="object"?{...e.cardLayout}:{}}function Bt(e){if(!(e!=null&&e.cardSizes)||typeof e.cardSizes!="object")return{};const t={};for(const[n,o]of Object.entries(e.cardSizes)){if(!o||typeof o!="object")continue;const a={};typeof o.width=="number"&&o.width>0&&(a.width=o.width),typeof o.height=="number"&&o.height>0&&(a.height=o.height),(a.width||a.height)&&(t[n]=a)}return t}function M(){return typeof ztools<"u"?ztools:null}function Kt(e){try{const t=M();if(t!=null&&t.dbStorage)return t.dbStorage.getItem(e);const n=localStorage.getItem(e);return n?JSON.parse(n):null}catch{return null}}function _t(e,t){const n=M();n!=null&&n.dbStorage?n.dbStorage.setItem(e,t):localStorage.setItem(e,JSON.stringify(t))}function G(e){const t=M();if(t!=null&&t.showNotification){t.showNotification(e);return}}function zt(e){const t=M();if(t!=null&&t.shellOpenExternal){t.shellOpenExternal(e);return}window.open(e,"_blank")}function Xt(e){const t=M();if(!(t!=null&&t.createBrowserWindow)||!de(e))return!1;const n=`./viewer.html?url=${encodeURIComponent(e)}`;try{return!!t.createBrowserWindow(n,{width:1024,height:720,center:!0,minWidth:480,minHeight:360})}catch{return!1}}function Gt(e,t,n){if(!e||e==="#")return;const o=M();if(!o){window.open(e,"_blank");return}if(t==="external"){o.shellOpenExternal(e);return}if(t==="ubrowser"){if(Xt(e))return;if(o.shellOpenExternal){o.shellOpenExternal(e),G("独立窗口打开失败,已改用系统浏览器");return}window.open(e,"_blank");return}n(e)}function Yt(e){const t=M();t!=null&&t.onPluginEnter&&t.onPluginEnter(e)}const ye="newsnow-settings",Wt="1.0.0",_=kt(),se=Ct(),v=document.getElementById("app"),q=document.getElementById("overlay-root");let i=Vt(),L=he(i.lastColumn),O=null;const g=new Map;let A=null;function Vt(){return It(Kt(ye))}function w(){i.lastColumn=L,_t(ye,i)}function be(){const e=i.disabledSources,t=!e.focus.length&&!e.hottest.length&&!e.realtime.length;Array.isArray(i.enabledSources)&&t&&(i.disabledSources=Pt(i.enabledSources,_,i.focusSources),i.enabledSources=null,w())}function we(){const e=v.querySelector("#nn-main"),t={mainTop:(e==null?void 0:e.scrollTop)??0,mainLeft:(e==null?void 0:e.scrollLeft)??0,bodies:new Map};return v.querySelectorAll(".nn-card").forEach(n=>{const o=n.querySelector(".nn-card-body");o&&n.dataset.sourceId&&t.bodies.set(n.dataset.sourceId,o.scrollTop)}),t}function Se(e){requestAnimationFrame(()=>{const t=v.querySelector("#nn-main");t&&(t.scrollTop=e.mainTop,t.scrollLeft=e.mainLeft),e.bodies.forEach((n,o)=>{const a=v.querySelector(`.nn-card[data-source-id="${o}"] .nn-card-body`);a&&(a.scrollTop=n)})})}function Jt(){if(i.cardLayout.width||i.cardLayout.height)return;const e=Object.values(i.cardSizes).find(t=>(t==null?void 0:t.width)||(t==null?void 0:t.height));e&&(i.cardLayout={width:e.width,height:e.height},i.cardSizes={},w())}function z(){const{width:e,height:t}=i.cardLayout,n=document.documentElement,o=v.querySelector("#nn-cards");t?n.style.setProperty("--card-height",`${t}px`):n.style.removeProperty("--card-height"),e?(n.style.setProperty("--card-width",`${e}px`),o==null||o.classList.add("has-custom-width")):(n.style.removeProperty("--card-width"),o==null||o.classList.remove("has-custom-width"))}function Le(){const e=document.documentElement;e.classList.toggle("dark",i.theme==="dark"),e.classList.toggle("light",i.theme==="light")}function ie(e){if(!e)return"";const t=typeof e=="number"?e:Date.parse(String(e));if(Number.isNaN(t))return"";const n=Date.now()-t,o=Math.floor(n/6e4);if(o<1)return"刚刚";if(o<60)return`${o}分钟前`;const a=Math.floor(o/60);return a<24?`${a}小时前`:`${Math.floor(a/24)}天前`}function $e(e){return!e.favId||!e.favSource?null:{id:e.favId,sourceId:e.favSource,title:decodeURIComponent(e.favTitle||""),url:decodeURIComponent(e.favUrl||"")}}function Qt(e){const t=$e(e);if(t)return i.favorites=Ht(i.favorites,t),w(),$(t)}function Zt(e){const t=$e(e);if(!t)return;const n=$(t);return X(i.favorites,n)||(i.favorites=ge(i.favorites,t),w()),n}function ce(e){if(!e.dataset.favId)return;const t=X(i.favorites,$({sourceId:e.dataset.favSource,id:e.dataset.favId}));e.classList.contains("nn-item-star")&&(e.classList.toggle("active",t),e.textContent=t?"★":"☆")}function J(e){e.querySelectorAll("[data-fav-id]").forEach(t=>{t.addEventListener("click",n=>{n.preventDefault(),n.stopPropagation(),Qt(t.dataset),ce(t)})}),e.querySelectorAll(".nn-fav-link").forEach(t=>{t.addEventListener("auxclick",n=>{if(n.button!==1)return;n.preventDefault(),n.stopPropagation(),Zt(t.dataset);const o=t.querySelector(".nn-item-star");o?ce(o):G("已收藏")})})}function Q(){return be(),Ot(L,i.focusSources,_,i.disabledSources,i.sourceOrder)}function Z(e){const t=N(i.baseUrl),n=e.split("-")[0];return`${t}/icons/${n}.png`}function en(e){T(),q.innerHTML=` -

    -
    - - ${e} - -
    - -
    - `,A=t=>{const n=t.target;n.dataset.action==="webview-close"&&T(),n.dataset.action==="webview-external"&&zt(e)},q.addEventListener("click",A)}function Y(e){Gt(e,i.openMode,en)}async function I(e,t={}){te(i.baseUrl,e,t);const n=async o=>{var u;const a=te(i.baseUrl,e,{latest:o});if((u=window.newsnowServices)!=null&&u.fetchSource)return window.newsnowServices.fetchSource(a);const r=Te(a,i.baseUrl,{isDev:!1}),s=await fetch(r);if(!s.ok)throw new Error(`HTTP ${s.status}`);const c=await s.json();if(c!=null&&c.error)throw new Error(c.message||"请求失败");return c};try{return await n(!!t.latest)}catch(o){if(t.latest)return n(!1);throw o}}async function C({refresh:e=!1,preserveScroll:t=!1}={}){var o,a;const n=Q();if(!n.length){g.clear(),k({preserveScroll:t});return}for(const r of n)!e&&((o=g.get(r))!=null&&o.data)||g.set(r,{loading:!0,data:((a=g.get(r))==null?void 0:a.data)??null,error:null});k({preserveScroll:t}),await Promise.all(n.map(async r=>{var s,c,u;if(!(!e&&((s=g.get(r))!=null&&s.data)&&!((c=g.get(r))!=null&&c.loading))){try{const d=await I(r,{latest:e});g.set(r,{loading:!1,data:d,error:null})}catch(d){g.set(r,{loading:!1,data:((u=g.get(r))==null?void 0:u.data)??null,error:d instanceof Error?d.message:"获取失败"})}k({preserveScroll:t})}})),tn()}function tn(){O&&requestAnimationFrame(()=>{const e=v.querySelector(`.nn-card[data-source-id="${O}"]`);e?(e.scrollIntoView({behavior:"smooth",block:"nearest"}),setTimeout(()=>{O=null,e.classList.remove("is-highlight")},2e3)):O=null})}function T(){A&&(q.removeEventListener("click",A),A=null),q.innerHTML=""}function R(e,t,n){T(),q.innerHTML=` -
    -
    - -
    - `,A=a=>{a.target.dataset.action==="close"&&T()},q.addEventListener("click",A);const o=q.querySelector(".nn-modal");o&&n(o)}function le(e){const t=x[e];t&&(t.type==="hottest"?L="hottest":t.type==="realtime"?L="realtime":L="focus",i.focusSources.includes(e)||(i.focusSources=H(i.focusSources,e)),O=e,w(),T(),C())}function nn(e){const t=e.trim().toLowerCase();return t?se.filter(n=>n.name.toLowerCase().includes(t)||n.id.toLowerCase().includes(t)||n.title&&n.title.toLowerCase().includes(t)):se}function on(e,t){return e.length?e.map(n=>` -
    -

    ${n.label}

    -
      - ${n.items.map(o=>{const a=i.focusSources.includes(o.id);return`
    • - -
      - ${o.name} - ${o.title?`${o.title}`:""} -
      - -
    • `}).join("")} -
    -
    `).join(""):'
    无匹配数据源
    '}function P(e){return e?`
    ${ee(e,{preview:!0})}
    `:'
    选择左侧数据源预览内容
    '}async function rn(e){var t;if(!(!e||(t=g.get(e))!=null&&t.data)){g.set(e,{loading:!0,data:null,error:null});try{const n=await I(e);g.set(e,{loading:!1,data:n,error:null})}catch(n){g.set(e,{loading:!1,data:null,error:n instanceof Error?n.message:"获取失败"})}}}function Ee(){const e={query:"",selectedId:null,composing:!1};R("","",t=>{t.classList.add("nn-search-modal-wrap"),t.innerHTML=` - -
    - -
    -
    `;const n=t.querySelector("#search-input"),o=t.querySelector("#search-sidebar"),a=t.querySelector("#search-preview"),r=()=>{const l=nn(e.query);return{filtered:l,groups:Tt(l)}},s=l=>{var f;(!e.selectedId||!l.some(m=>m.id===e.selectedId))&&(e.selectedId=((f=l[0])==null?void 0:f.id)??null)},c=l=>{const f=o.querySelector(`[data-search-focus="${l}"]`);if(!f)return;const m=i.focusSources.includes(l);f.classList.toggle("active",m),f.textContent=m?"★":"☆"},u=()=>({onFocusChange:c}),d=(l=!1)=>{var f;o.querySelectorAll(".nn-search-item").forEach(m=>{m.classList.toggle("is-selected",m.dataset.source===e.selectedId)}),l&&((f=o.querySelector(".nn-search-item.is-selected"))==null||f.scrollIntoView({block:"nearest"}))},h=()=>{const{filtered:l,groups:f}=r();s(l);const m=o.scrollTop;o.innerHTML=on(f,e.selectedId),o.scrollTop=m},p=async l=>{var f;a&&(a.innerHTML=P(l),F(a,l,u()),l&&!((f=g.get(l))!=null&&f.data)&&(await rn(l),e.selectedId===l&&(a.innerHTML=P(l),F(a,l,u()))))},b=(l,f={})=>{e.selectedId!==l&&(e.selectedId=l,d(f.scrollIntoView??!1),p(l))};n.addEventListener("compositionstart",()=>{e.composing=!0}),n.addEventListener("compositionend",()=>{e.composing=!1,e.query=n.value,h(),p(e.selectedId)}),n.addEventListener("input",()=>{e.composing||(e.query=n.value,h(),p(e.selectedId))}),n.addEventListener("keydown",l=>{if(l.key==="Enter"&&e.selectedId&&(l.preventDefault(),le(e.selectedId)),l.key==="ArrowDown"||l.key==="ArrowUp"){l.preventDefault();const{filtered:f}=r(),m=f.map(E=>E.id),y=m.indexOf(e.selectedId??"");if(y===-1)return;const S=l.key==="ArrowDown"?m[Math.min(y+1,m.length-1)]:m[Math.max(y-1,0)];S&&b(S,{scrollIntoView:!0})}}),o.addEventListener("click",l=>{const f=l.target.closest("[data-search-focus]");if(f){l.stopPropagation();const y=f.dataset.searchFocus;i.focusSources=H(i.focusSources,y),w();const S=i.focusSources.includes(y);f.classList.toggle("active",S),f.textContent=S?"★":"☆",e.selectedId===y&&(a.innerHTML=P(y),F(a,y,u()));return}const m=l.target.closest("[data-source]");if(m){if(l.detail===2){le(m.dataset.source);return}b(m.dataset.source)}}),h(),p(e.selectedId),n.focus()})}function F(e,t,n={}){var a,r;if(!e||!t)return;const{onFocusChange:o}=n;(a=e.querySelector("[data-refresh]"))==null||a.addEventListener("click",async s=>{var u,d;s.stopPropagation();const c=e.querySelector("[data-refresh]");if(c){c.classList.add("is-spinning"),g.set(t,{loading:!0,data:((u=g.get(t))==null?void 0:u.data)??null,error:null}),e.innerHTML=P(t),F(e,t,n);try{const h=await I(t,{latest:!0});g.set(t,{loading:!1,data:h,error:null})}catch(h){g.set(t,{loading:!1,data:((d=g.get(t))==null?void 0:d.data)??null,error:h instanceof Error?h.message:"获取失败"})}e.innerHTML=P(t),F(e,t,n)}}),(r=e.querySelector("[data-focus]"))==null||r.addEventListener("click",s=>{s.stopPropagation(),i.focusSources=H(i.focusSources,t),w(),e.innerHTML=P(t),F(e,t,n),o==null||o(t)}),e.querySelectorAll("[data-url]").forEach(s=>{s.addEventListener("click",c=>{c.preventDefault(),c.stopPropagation(),Y(decodeURIComponent(s.dataset.url))})}),J(e)}function an(){const e={query:"",tag:"",editingKey:null,composing:!1},t=()=>[...new Set([...i.favoriteTags,...Ut(i.favorites)])].sort((r,s)=>r.localeCompare(s)),n=r=>{const s=r.querySelector("#fav-list"),c=r.querySelector("#fav-empty");if(!s||!c)return;const u=Dt(i.favorites,{query:e.query,tag:e.tag});if(!u.length){s.innerHTML="",s.hidden=!0,c.hidden=!1,c.textContent=i.favorites.length?"无匹配收藏":"暂无收藏资讯";return}if(s.hidden=!1,c.hidden=!0,s.innerHTML=u.map(d=>{const h=$(d),p=(d.tags??[]).map(f=>`${f}`).join(""),b=e.editingKey===h,l=t().map(f=>``).join("");return`
  • -
    - ${d.title} - ${p} - ${me(d.savedAt)} - - -
    -
    - -
    ${l||'暂无已有标签'}
    -
    -
  • `}).join(""),e.editingKey){const d=s.querySelector(`.nn-tag-input[data-key="${e.editingKey}"]`);d==null||d.focus()}},o=r=>{const s=r.querySelector("#fav-tag-filter");if(!s)return;const c=t();s.innerHTML=`${c.map(u=>``).join("")}`,s.value=e.tag},a=(r,s,c)=>{const u=c.trim();u&&(i.favorites=jt(i.favorites,s,u),i.favoriteTags=Nt(i.favoriteTags,u),w(),e.editingKey=s,o(r),n(r))};R("","",r=>{r.classList.add("nn-fav-modal-wrap"),r.innerHTML=` -
    -

    我的收藏

    - -
    -
    - -
    -
    -
      - -
      `;const s=r.querySelector("#fav-search"),c=r.querySelector("#fav-tag-filter");s.addEventListener("compositionstart",()=>{e.composing=!0}),s.addEventListener("compositionend",()=>{e.composing=!1,e.query=s.value,n(r)}),s.addEventListener("input",()=>{e.composing||(e.query=s.value,n(r))}),c.addEventListener("change",()=>{e.tag=c.value,n(r)}),r.addEventListener("click",u=>{const d=u.target.closest("[data-url]");if(d){Y(decodeURIComponent(d.dataset.url));return}const h=u.target.closest("[data-pick]");if(h){a(r,h.dataset.key,h.dataset.pick);return}const p=u.target.closest("[data-edit]");if(p){e.editingKey=e.editingKey===p.dataset.edit?null:p.dataset.edit,n(r);return}const b=u.target.closest("[data-remove]");b&&(i.favorites=ve(i.favorites,b.dataset.remove),e.editingKey===b.dataset.remove&&(e.editingKey=null),w(),o(r),n(r),k({preserveScroll:!0}))}),r.addEventListener("keydown",u=>{const d=u.target.closest(".nn-tag-input");!d||u.key!=="Enter"||(u.preventDefault(),a(r,d.dataset.key,d.value),d.value="")}),o(r),n(r),s.focus()})}function sn(){let e=L==="focus"||L==="hottest"||L==="realtime"?L:"realtime";R("","",t=>{t.classList.add("nn-settings-modal-wrap");const n=a=>{const r=t.querySelector("#source-settings");r&&(r.querySelectorAll("[data-toggle]").forEach(s=>{s.addEventListener("change",c=>{c.stopPropagation();const u=s.dataset.toggle,d=s.checked;a==="focus"?d?(i.focusSources.includes(u)||(i.focusSources=[...i.focusSources,u]),i.disabledSources={...i.disabledSources,focus:(i.disabledSources.focus??[]).filter(h=>h!==u)}):i.disabledSources=oe(i.disabledSources,a,u):d?i.disabledSources={...i.disabledSources,[a]:(i.disabledSources[a]??[]).filter(h=>h!==u)}:i.disabledSources=oe(i.disabledSources,a,u),w(),C({preserveScroll:!0})})}),r.querySelectorAll("li[data-id]").forEach(s=>{const c=s.querySelector(".nn-settings-drag");c==null||c.addEventListener("mousedown",u=>{u.preventDefault(),u.stopPropagation();const d=s.dataset.id,h=s.getBoundingClientRect(),p=s.cloneNode(!0);p.classList.add("nn-settings-ghost"),p.style.width=`${h.width}px`,p.style.height=`${h.height}px`,document.body.appendChild(p),s.classList.add("dragging");const b=(m,y)=>{p.style.left=`${m-h.width/2}px`,p.style.top=`${y-h.height/2}px`};b(u.clientX,u.clientY);const l=m=>{var S;b(m.clientX,m.clientY);const y=(S=document.elementFromPoint(m.clientX,m.clientY))==null?void 0:S.closest("li[data-id]");r.querySelectorAll("li").forEach(E=>E.classList.remove("drag-over")),y&&y!==s&&y.classList.add("drag-over")},f=m=>{var S,E;document.removeEventListener("mousemove",l),document.removeEventListener("mouseup",f),p.remove(),s.classList.remove("dragging");const y=(S=document.elementFromPoint(m.clientX,m.clientY))==null?void 0:S.closest("li[data-id]");if(r.querySelectorAll("li").forEach(B=>B.classList.remove("drag-over")),d&&y&&y.dataset.id&&y!==s){const B=re(a,i.focusSources,_,x),Ce=(E=i.sourceOrder[a])!=null&&E.length?V(B,i.sourceOrder[a]):B;if(i.sourceOrder[a]=pe(Ce,d,y.dataset.id),a==="focus"){const W=i.sourceOrder[a].filter(K=>i.focusSources.includes(K));for(const K of i.sourceOrder[a])W.includes(K)||W.push(K);i.focusSources=W}w(),o(),C({preserveScroll:!0})}};document.addEventListener("mousemove",l),document.addEventListener("mouseup",f)})}))},o=()=>{var u;const a=e,r=re(a,i.focusSources,_,x),s=new Set(i.disabledSources[a]??[]),c=(u=i.sourceOrder[a])!=null&&u.length?V(r,i.sourceOrder[a]):r;t.innerHTML=` -

      数据源设置

      -
      - ${xt.map(d=>``).join("")} -
      -
        - ${c.map(d=>{const h=x[d];if(!h)return"";const p=a==="focus"?i.focusSources.includes(d)&&!s.has(d):!s.has(d);return`
      • - ⋮⋮ - - ${h.name} - -
      • `}).join("")} -
      -

      拖拽调整顺序;开关切换启用状态。各栏目与首页 Tab 一致。

      `,t.querySelectorAll("[data-settings-tab]").forEach(d=>{d.addEventListener("click",()=>{e=d.dataset.settingsTab,o()})}),n(a)};o()})}function cn(){R("API 基址",` -
      - - -
      `,e=>{var n,o;const t=e.querySelector("#api-input");(n=e.querySelector("[data-action='cancel']"))==null||n.addEventListener("click",a=>{a.stopPropagation(),T()}),(o=e.querySelector("[data-action='save']"))==null||o.addEventListener("click",a=>{a.stopPropagation();const r=N(t.value);if(!de(r)){G("请输入有效的 http(s) 地址");return}i.baseUrl=r,g.clear(),w(),T(),C({refresh:!0})}),t.focus()})}function ln(){const e={internal:"插件内 Web",ubrowser:"独立窗口",external:"系统浏览器"};R("打开方式",`
        ${De.map(t=>`
      • ${e[t]}${i.openMode===t?"✓":""}
      • `).join("")}
      `,t=>{var n;(n=t.querySelector("#open-mode-list"))==null||n.addEventListener("click",o=>{const a=o.target.closest("li[data-mode]");a&&(o.stopPropagation(),i.openMode=a.dataset.mode,w(),t.querySelectorAll("#open-mode-list li").forEach(r=>{r.classList.toggle("is-selected",r.dataset.mode===i.openMode);const s=r.querySelector("span:last-child");s&&(s.textContent=r.dataset.mode===i.openMode?"✓":"")}),G(`已切换为:${e[i.openMode]}`))})})}function un(){return Ae.map(e=>e.kind==="action"?``:``).join("")}function dn(){const e=i.theme==="dark"?"浅色模式":"深色模式";return` - `}function ee(e,t={}){var p,b;const{preview:n=!1}=t,o=x[e];if(!o)return"";const a=g.get(e)??{},r=i.focusSources.includes(e),s=O===e,c=a.error?a.error:a.loading?"加载中...":(p=a.data)!=null&&p.updatedTime?`${ie(a.data.updatedTime)}更新`:"",u=((b=a.data)==null?void 0:b.items)??[],d=u.length>0?o.type==="hottest"?`
        ${u.map((l,f)=>{const m=$({sourceId:e,id:l.id}),y=X(i.favorites,m),S=l.url||"#";return`
      1. - - ${f+1} - ${l.title} - ${y?"★":"☆"} - -
      2. `}).join("")}
      `:`
        ${u.map(l=>{var S,E;const f=l.url||"#",m=l.id||`${l.title}-${l.pubDate||""}`;return`
      1. -
        ${ie(l.pubDate||((S=l.extra)==null?void 0:S.date))}${((E=l.extra)==null?void 0:E.info)||""}
        - ${l.title} -
      2. `}).join("")}
      `:a.error?`
      ${a.error}
      `:'
      暂无数据
      ',h=o.color||"slate";return` -
      -
      -
      - -
      -
      - ${o.name} - ${o.title?`${o.title}`:""} -
      -
      ${c}
      -
      -
      -
      - - - ${n?"":`⋮⋮`} -
      -
      -
      ${d}
      - ${n?"":`
      -
      `} -
      `}function k(e={}){const n=e.preserveScroll??!1?we():null,o=Q();v.innerHTML=` -
      -
      - NewsNow -
      -
      News
      -
      Now
      -
      - v${Wt} -
      - -
      - - - - - ${dn()} - -
      -
      -
      -
      -
      - ${o.length?o.map(a=>ee(a)).join(""):`
      ${L==="focus"?"点击卡片 ☆ 或「搜索」添加关注频道":"当前栏目无可用数据源"}
      `} -
      -
      -
      - `,mn(),z(),n&&Se(n)}function hn(){const e=v.querySelector("#nn-cards");e&&e.querySelectorAll(".nn-drag-handle").forEach(t=>{qe(t,e)})}function fn(e,t){const n=document.createElement("article");n.className=`${e.className} nn-card-ghost`.replace(/\bdragging\b/g,"").trim(),e.dataset.color&&(n.dataset.color=e.dataset.color),e.dataset.sourceId&&(n.dataset.sourceId=e.dataset.sourceId);const o=e.querySelector(".nn-card-head");return o&&n.appendChild(o.cloneNode(!0)),n.style.width=`${t.width}px`,n.style.height=`${t.height}px`,n}function qe(e,t){e.addEventListener("mousedown",n=>{n.preventDefault(),n.stopPropagation();const o=e.closest(".nn-card");if(!o)return;const a=o.dataset.sourceId,r=o.getBoundingClientRect(),s=fn(o,r);document.body.appendChild(s),o.classList.add("dragging");const c=(h,p)=>{s.style.left=`${h-r.width/2}px`,s.style.top=`${p-r.height/2}px`};c(n.clientX,n.clientY);const u=h=>{var b;c(h.clientX,h.clientY);const p=(b=document.elementFromPoint(h.clientX,h.clientY))==null?void 0:b.closest(".nn-card");t.querySelectorAll(".nn-card").forEach(l=>l.classList.remove("drag-over")),p&&p!==o&&p.classList.add("drag-over")},d=h=>{var b;document.removeEventListener("mousemove",u),document.removeEventListener("mouseup",d),s.remove(),o.classList.remove("dragging");const p=(b=document.elementFromPoint(h.clientX,h.clientY))==null?void 0:b.closest(".nn-card");if(t.querySelectorAll(".nn-card").forEach(l=>l.classList.remove("drag-over")),a&&p&&p!==o){const l=Q(),f=pe(l,a,p.dataset.sourceId);i.sourceOrder[L]=f,L==="focus"&&(i.focusSources=f),w(),k({preserveScroll:!0})}};document.addEventListener("mousemove",u),document.addEventListener("mouseup",d)})}function ke(e){if(e.classList.contains("is-preview"))return;const t=e.querySelector("[data-resize-w]"),n=e.querySelector("[data-resize-h]");t==null||t.addEventListener("mousedown",o=>{o.preventDefault(),o.stopPropagation();const a=o.clientX,r=v.querySelector(".nn-card:not(.is-preview)"),s=(r==null?void 0:r.getBoundingClientRect().width)??i.cardLayout.width??280,c=d=>{const h=Math.max(180,Math.round(s+d.clientX-a));i.cardLayout={...i.cardLayout,width:h},z()},u=()=>{document.removeEventListener("mousemove",c),document.removeEventListener("mouseup",u),w()};document.addEventListener("mousemove",c),document.addEventListener("mouseup",u)}),n==null||n.addEventListener("mousedown",o=>{o.preventDefault(),o.stopPropagation();const a=o.clientY,r=v.querySelector(".nn-card:not(.is-preview)"),s=(r==null?void 0:r.getBoundingClientRect().height)??i.cardLayout.height??248,c=d=>{const h=Math.max(160,Math.round(s+d.clientY-a));i.cardLayout={...i.cardLayout,height:h},z()},u=()=>{document.removeEventListener("mousemove",c),document.removeEventListener("mouseup",u),w()};document.addEventListener("mousemove",c),document.addEventListener("mouseup",u)})}function pn(e=v){e.querySelectorAll(".nn-card:not(.is-preview)").forEach(ke)}let ue=!1;function mn(){var n,o,a;v.querySelectorAll("[data-column]").forEach(r=>{r.addEventListener("click",()=>{L=r.dataset.column,w(),C()})}),(n=v.querySelector("[data-action='search']"))==null||n.addEventListener("click",()=>{Ee()}),(o=v.querySelector("[data-action='refresh-all']"))==null||o.addEventListener("click",r=>{const s=r.currentTarget;s.classList.add("is-spinning"),C({refresh:!0,preserveScroll:!0}).finally(()=>{s.classList.remove("is-spinning")})}),(a=v.querySelector("[data-action='go-top']"))==null||a.addEventListener("click",()=>{var r;(r=v.querySelector("#nn-main"))==null||r.scrollTo({top:0,behavior:"smooth"})});const e=v.querySelector("[data-action='menu']"),t=v.querySelector(".nn-dropdown");e==null||e.addEventListener("click",r=>{r.stopPropagation(),t&&(t.hidden=!t.hidden)}),ue||(ue=!0,document.addEventListener("click",()=>{const r=v.querySelector(".nn-dropdown:not([hidden])");r&&(r.hidden=!0)})),t==null||t.addEventListener("click",r=>{r.stopPropagation();const s=r.target.closest("li[data-menu]");if(!s||s.classList.contains("disabled"))return;const c=s.dataset.menu;t.hidden=!0,c==="theme"?(i.theme=i.theme==="dark"?"light":"dark",Le(),w(),k({preserveScroll:!0})):c==="favorites"?an():c==="sources"?sn():c==="api"?cn():c==="open-mode"&&ln()}),v.querySelectorAll("[data-refresh]").forEach(r=>{r.addEventListener("click",async s=>{var u,d;s.stopPropagation();const c=r.dataset.refresh;r.classList.add("is-spinning"),g.set(c,{loading:!0,data:((u=g.get(c))==null?void 0:u.data)??null,error:null}),D(c);try{const h=await I(c,{latest:!0});g.set(c,{loading:!1,data:h,error:null})}catch(h){g.set(c,{loading:!1,data:((d=g.get(c))==null?void 0:d.data)??null,error:h instanceof Error?h.message:"获取失败"})}D(c)})}),v.querySelectorAll("[data-focus]").forEach(r=>{r.addEventListener("click",s=>{s.stopPropagation();const c=r.dataset.focus;i.focusSources=H(i.focusSources,c),w(),D(c)})}),v.querySelectorAll("[data-url]").forEach(r=>{r.addEventListener("click",s=>{s.preventDefault(),s.stopPropagation(),Y(decodeURIComponent(r.dataset.url))})}),J(v),pn(),hn()}function D(e){const t=v.querySelector("#nn-cards"),n=v.querySelector(`.nn-card[data-source-id="${e}"]`);if(!t||!n){k({preserveScroll:!0});return}const o=we(),a=document.createElement("div");a.innerHTML=ee(e);const r=a.firstElementChild;r&&(n.replaceWith(r),gn(r),Se(o))}function gn(e){var o,a;(o=e.querySelector("[data-refresh]"))==null||o.addEventListener("click",async r=>{var u,d;r.stopPropagation();const s=e.querySelector("[data-refresh]"),c=s==null?void 0:s.dataset.refresh;if(!(!c||!s)){s.classList.add("is-spinning"),g.set(c,{loading:!0,data:((u=g.get(c))==null?void 0:u.data)??null,error:null}),D(c);try{const h=await I(c,{latest:!0});g.set(c,{loading:!1,data:h,error:null})}catch(h){g.set(c,{loading:!1,data:((d=g.get(c))==null?void 0:d.data)??null,error:h instanceof Error?h.message:"获取失败"})}D(c)}}),(a=e.querySelector("[data-focus]"))==null||a.addEventListener("click",r=>{r.stopPropagation();const s=e.querySelector("[data-focus]"),c=s==null?void 0:s.dataset.focus;c&&(i.focusSources=H(i.focusSources,c),w(),D(c))}),e.querySelectorAll("[data-url]").forEach(r=>{r.addEventListener("click",s=>{s.preventDefault(),s.stopPropagation(),Y(decodeURIComponent(r.dataset.url))})}),J(e);const t=e.querySelector(".nn-drag-handle"),n=v.querySelector("#nn-cards");t&&n&&qe(t,n),ke(e)}function vn({code:e}){L=he(Ue(e)),w(),C()}function yn(){document.addEventListener("keydown",e=>{e.target.matches("input, textarea, [contenteditable]")||((e.metaKey||e.ctrlKey)&&e.key.toLowerCase()==="k"&&(e.preventDefault(),Ee()),e.key==="Escape"&&q.innerHTML&&T())})}function bn(){Yt(vn)}Le();be();Jt();z();yn();bn();k();C(); diff --git a/plugins/newsnow/assets/main-D8qa8V4m.js b/plugins/newsnow/assets/main-D8qa8V4m.js new file mode 100644 index 00000000..3c5150d6 --- /dev/null +++ b/plugins/newsnow/assets/main-D8qa8V4m.js @@ -0,0 +1,251 @@ +(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))o(r);new MutationObserver(r=>{for(const s of r)if(s.type==="childList")for(const i of s.addedNodes)i.tagName==="LINK"&&i.rel==="modulepreload"&&o(i)}).observe(document,{childList:!0,subtree:!0});function n(r){const s={};return r.integrity&&(s.integrity=r.integrity),r.referrerPolicy&&(s.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?s.credentials="include":r.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function o(r){if(r.ep)return;r.ep=!0;const s=n(r);fetch(r.href,s)}})();function Q(e){const t=String(e||"").trim();return t?t.replace(/\/+$/,""):""}function ye(e,t,n={}){const o=Q(e);if(!o)throw new Error("API 基址不能为空");if(!t)throw new Error("sourceId 不能为空");const r=new URL("/api/s",`${o}/`);return r.searchParams.set("id",t),n.latest&&r.searchParams.set("latest","true"),r.toString()}function tt(e,t,n={}){if(!n.isDev)return e;try{const o=new URL(e),r=Q(t),s=Q("https://newsnow.busiyi.world");if(r===s&&o.pathname.startsWith("/api/"))return`${o.pathname}${o.search}`}catch{}return e}function xe(e){try{const t=new URL(e);return t.protocol==="http:"||t.protocol==="https:"}catch{return!1}}const nt=["focus","hottest","realtime","updated"],ot=[{id:"focus",label:"关注",kind:"column"},{id:"hottest",label:"热搜",kind:"column"},{id:"realtime",label:"新闻",kind:"column"},{id:"search",label:"搜索",kind:"action"}],st={focus:"关注",hottest:"热搜",realtime:"新闻",updated:"更新"},rt={tech:"科技",china:"国内",world:"国际",finance:"财经",sports:"体育",other:"其他"},at=["tech","china","world","finance","sports","other"],it={"newsnow-news":"realtime","newsnow-hot":"hottest","newsnow-browse":"focus"},ct=["internal","ubrowser","external"],lt=["style1","style2","style3"],be={style1:"风格1(侧栏)",style2:"风格2(卡片)",style3:"风格3(即将支持)"};function ut(e){return it[e]??"realtime"}function Ae(e){return e==="updated"?"realtime":nt.includes(e)?e:"realtime"}const dt={redirect:"v2ex-share",name:"V2EX",column:"tech",home:"https://v2ex.com/",color:"slate",interval:6e5,title:"最新分享"},ft={name:"知乎",type:"hottest",column:"china",home:"https://www.zhihu.com",color:"blue",interval:6e5},pt={title:"实时热搜",name:"微博",type:"hottest",column:"china",home:"https://weibo.com",color:"red",interval:12e4},ht={name:"联合早报",type:"realtime",desc:"来自第三方网站: 早晨报",column:"world",home:"https://www.zaobao.com",color:"red",interval:18e5},mt={title:"今日最热",name:"酷安",type:"hottest",column:"tech",home:"https://coolapk.com",color:"green",interval:6e5},gt={redirect:"mktnews-flash",name:"MKTNews",column:"finance",home:"https://mktnews.net",color:"indigo",interval:12e4,title:"快讯"},vt={redirect:"wallstreetcn-quick",name:"华尔街见闻",type:"realtime",column:"finance",home:"https://wallstreetcn.com/",color:"blue",interval:3e5,title:"快讯"},yt={name:"抖音",type:"hottest",column:"china",home:"https://www.douyin.com",color:"gray",interval:6e5},bt={title:"主干道热帖",name:"虎扑",type:"hottest",column:"sports",home:"https://hupu.com",color:"red",interval:6e5},St={title:"头条",name:"懂球帝",type:"realtime",column:"sports",home:"https://www.dongqiudi.com",color:"green",interval:6e5},wt={name:"AIHOT",type:"realtime",column:"tech",home:"https://aihot.virxact.com/all",color:"blue",interval:3e5},$t={title:"热议",name:"百度贴吧",type:"hottest",column:"china",home:"https://tieba.baidu.com",color:"blue",interval:6e5},Lt={name:"今日头条",type:"hottest",column:"china",home:"https://www.toutiao.com",color:"red",interval:6e5},Et={name:"IT之家",type:"realtime",column:"tech",home:"https://www.ithome.com",color:"red",interval:6e5},qt={title:"热榜",name:"澎湃新闻",type:"hottest",column:"china",home:"https://www.thepaper.cn",color:"gray",interval:18e5},kt={name:"卫星通讯社",column:"world",home:"https://sputniknews.cn",color:"orange",interval:6e5},Ct={name:"参考消息",column:"world",home:"https://china.cankaoxiaoxi.com",color:"red",interval:18e5},Tt={redirect:"pcbeta-windows11",name:"远景论坛",type:"realtime",column:"tech",home:"https://bbs.pcbeta.com",color:"blue",interval:3e5,title:"Win11"},xt={redirect:"cls-telegraph",name:"财联社",type:"realtime",column:"finance",home:"https://www.cls.cn",color:"red",interval:3e5,title:"电报"},At={redirect:"xueqiu-hotstock",name:"雪球",type:"hottest",column:"finance",home:"https://xueqiu.com",color:"blue",interval:12e4,title:"热门股票"},Mt={title:"事件",name:"格隆汇",type:"realtime",column:"finance",home:"https://www.gelonghui.com",color:"blue",interval:12e4},Ot={redirect:"fastbull-express",name:"法布财经",type:"realtime",column:"finance",home:"https://www.fastbull.cn",color:"emerald",interval:12e4,title:"快讯"},Pt={name:"Solidot",column:"tech",home:"https://solidot.org",color:"teal",interval:36e5},Ut={name:"Hacker News",type:"hottest",column:"tech",home:"https://news.ycombinator.com/",color:"orange",interval:6e5},Ft={name:"Product Hunt",type:"hottest",column:"tech",home:"https://www.producthunt.com/",color:"red",interval:6e5},Dt={redirect:"github-trending-today",name:"Github",type:"hottest",column:"tech",home:"https://github.com/",color:"gray",interval:6e5,title:"Today"},Ht={redirect:"bilibili-hot-search",name:"哔哩哔哩",type:"hottest",column:"china",home:"https://www.bilibili.com",color:"blue",interval:6e5,title:"热搜"},Nt={name:"快手",type:"hottest",disable:"cf",column:"china",home:"https://www.kuaishou.com",color:"orange",interval:6e5},jt={name:"靠谱新闻",desc:"不一定靠谱,多看多思考",column:"world",home:"https://kaopu.news/",color:"gray",interval:18e5},Rt={name:"金十数据",type:"realtime",column:"finance",home:"https://www.jin10.com",color:"blue",interval:6e5},Bt={name:"百度热搜",type:"hottest",column:"china",home:"https://www.baidu.com",color:"blue",interval:6e5},_t={name:"牛客",type:"hottest",column:"china",home:"https://www.nowcoder.com",color:"blue",interval:6e5},Kt={name:"少数派",type:"hottest",column:"tech",home:"https://sspai.com",color:"red",interval:6e5},Gt={name:"稀土掘金",type:"hottest",column:"tech",home:"https://juejin.cn",color:"blue",interval:6e5},It={title:"热点资讯",name:"凤凰网",type:"hottest",column:"china",home:"https://www.ifeng.com",color:"red",interval:6e5},zt={redirect:"chongbuluo-latest",name:"虫部落",column:"china",home:"https://www.chongbuluo.com/forum.php?mod=guide&view=newthread",color:"green",interval:18e5,title:"最新"},Yt={title:"热门电影",name:"豆瓣",type:"hottest",column:"china",home:"https://www.douban.com",color:"green",interval:6e5},Xt={title:"在线人数",name:"Steam",type:"hottest",column:"world",home:"https://store.steampowered.com",color:"blue",interval:6e5},Wt={redirect:"tencent-hot",name:"腾讯新闻",type:"hottest",column:"china",home:"https://news.qq.com/tag/aEWqxLtdgmQ=",color:"blue",interval:18e5,title:"综合早报"},Vt={title:"网络安全",name:"Freebuf",type:"hottest",column:"china",home:"https://www.freebuf.com/",color:"green",interval:6e5},Qt={redirect:"qqvideo-tv-hotsearch",name:"腾讯视频",type:"hottest",column:"china",home:"https://v.qq.com/channel/tv",color:"blue",interval:18e5,title:"热搜榜"},Jt={redirect:"iqiyi-hot-ranklist",name:"爱奇艺",type:"hottest",column:"china",home:"https://www.iqiyi.com",color:"green",interval:18e5,title:"热播榜"},k={v2ex:dt,"v2ex-share":{name:"V2EX",column:"tech",home:"https://v2ex.com/",color:"slate",interval:6e5,title:"最新分享"},zhihu:ft,weibo:pt,zaobao:ht,coolapk:mt,mktnews:gt,"mktnews-flash":{name:"MKTNews",column:"finance",home:"https://mktnews.net",color:"indigo",interval:12e4,title:"快讯"},wallstreetcn:vt,"wallstreetcn-quick":{name:"华尔街见闻",type:"realtime",column:"finance",home:"https://wallstreetcn.com/",color:"blue",interval:3e5,title:"快讯"},"wallstreetcn-news":{name:"华尔街见闻",column:"finance",home:"https://wallstreetcn.com/",color:"blue",interval:18e5,title:"最新"},"wallstreetcn-hot":{name:"华尔街见闻",type:"hottest",column:"finance",home:"https://wallstreetcn.com/",color:"blue",interval:18e5,title:"最热"},"36kr":{redirect:"36kr-quick",name:"36氪",type:"realtime",disable:"cf",column:"tech",home:"https://36kr.com",color:"blue",interval:6e5,title:"快讯"},"36kr-quick":{name:"36氪",type:"realtime",disable:"cf",column:"tech",home:"https://36kr.com",color:"blue",interval:6e5,title:"快讯"},"36kr-renqi":{name:"36氪",type:"hottest",disable:"cf",column:"tech",home:"https://36kr.com",color:"blue",interval:6e5,title:"人气榜"},douyin:yt,hupu:bt,dongqiudi:St,aihot:wt,tieba:$t,toutiao:Lt,ithome:Et,thepaper:qt,sputniknewscn:kt,cankaoxiaoxi:Ct,pcbeta:Tt,"pcbeta-windows11":{name:"远景论坛",type:"realtime",column:"tech",home:"https://bbs.pcbeta.com",color:"blue",interval:3e5,title:"Win11"},cls:xt,"cls-telegraph":{name:"财联社",type:"realtime",column:"finance",home:"https://www.cls.cn",color:"red",interval:3e5,title:"电报"},"cls-depth":{name:"财联社",column:"finance",home:"https://www.cls.cn",color:"red",interval:6e5,title:"深度"},"cls-hot":{name:"财联社",type:"hottest",column:"finance",home:"https://www.cls.cn",color:"red",interval:6e5,title:"热门"},xueqiu:At,"xueqiu-hotstock":{name:"雪球",type:"hottest",column:"finance",home:"https://xueqiu.com",color:"blue",interval:12e4,title:"热门股票"},gelonghui:Mt,fastbull:Ot,"fastbull-express":{name:"法布财经",type:"realtime",column:"finance",home:"https://www.fastbull.cn",color:"emerald",interval:12e4,title:"快讯"},"fastbull-news":{name:"法布财经",column:"finance",home:"https://www.fastbull.cn",color:"emerald",interval:18e5,title:"头条"},solidot:Pt,hackernews:Ut,producthunt:Ft,github:Dt,"github-trending-today":{name:"Github",type:"hottest",column:"tech",home:"https://github.com/",color:"gray",interval:6e5,title:"Today"},bilibili:Ht,"bilibili-hot-search":{name:"哔哩哔哩",type:"hottest",column:"china",home:"https://www.bilibili.com",color:"blue",interval:6e5,title:"热搜"},"bilibili-hot-video":{name:"哔哩哔哩",type:"hottest",disable:"cf",column:"china",home:"https://www.bilibili.com",color:"blue",interval:6e5,title:"热门视频"},"bilibili-ranking":{name:"哔哩哔哩",type:"hottest",disable:"cf",column:"china",home:"https://www.bilibili.com",color:"blue",interval:18e5,title:"排行榜"},kuaishou:Nt,kaopu:jt,jin10:Rt,baidu:Bt,nowcoder:_t,sspai:Kt,juejin:Gt,ifeng:It,chongbuluo:zt,"chongbuluo-latest":{name:"虫部落",column:"china",home:"https://www.chongbuluo.com/forum.php?mod=guide&view=newthread",color:"green",interval:18e5,title:"最新"},"chongbuluo-hot":{name:"虫部落",type:"hottest",column:"china",home:"https://www.chongbuluo.com/forum.php?mod=guide&view=hot",color:"green",interval:18e5,title:"最热"},douban:Yt,steam:Xt,tencent:Wt,"tencent-hot":{name:"腾讯新闻",type:"hottest",column:"china",home:"https://news.qq.com/tag/aEWqxLtdgmQ=",color:"blue",interval:18e5,title:"综合早报"},freebuf:Vt,qqvideo:Qt,"qqvideo-tv-hotsearch":{name:"腾讯视频",type:"hottest",column:"china",home:"https://v.qq.com/channel/tv",color:"blue",interval:18e5,title:"热搜榜"},iqiyi:Jt,"iqiyi-hot-ranklist":{name:"爱奇艺",type:"hottest",column:"china",home:"https://www.iqiyi.com",color:"green",interval:18e5,title:"热播榜"}},Zt=["dongqiudi","producthunt","aihot","36kr-quick","36kr-renqi","cankaoxiaoxi","cls-telegraph","cls-depth","cls-hot","fastbull-express","fastbull-news","freebuf","jin10","kaopu","mktnews-flash","solidot","weibo","bilibili-hot-search","bilibili-hot-video","bilibili-ranking","kuaishou","toutiao"];function Z(e){return!(!e||e.redirect||e.disable===!0||e.disable==="cf")}function Se(e,t){return Object.entries(t).filter(([,n])=>n.type===e&&Z(n)).map(([n])=>n).sort((n,o)=>n.localeCompare(o))}function X(e,t){return Object.entries(t).filter(([,n])=>n.column===e&&Z(n)).map(([n])=>n)}function en(e=k){return{focus:[],hottest:Se("hottest",e),realtime:Se("realtime",e),updated:Zt.filter(t=>Z(e[t])),china:X("china",e),world:X("world",e),tech:X("tech",e),finance:X("finance",e),sports:X("sports",e)}}function H(e,t){return e.includes(t)?e.filter(n=>n!==t):[...e,t]}function tn(e=k){return Object.entries(e).filter(([,t])=>Z(t)).map(([t,n])=>({id:t,name:n.name,title:n.title,column:n.column,color:n.color,type:n.type}))}function Me(e,t=rt){const n=new Map;for(const o of e){const r=o.column||"other";n.has(r)||n.set(r,[]),n.get(r).push(o)}return at.filter(o=>n.has(o)).map(o=>({key:o,label:t[o]??o,items:n.get(o)}))}const nn=["focus","hottest","realtime"];function on(e){return st[e]??e}function Oe(e,t,n){return e==="focus"?[...t]:[...n[e]??[]]}function sn(e,t){if(!(t!=null&&t.length))return e;const n=new Set(t);return e.filter(o=>!n.has(o))}function pe(e,t){if(!(t!=null&&t.length))return e;const n=new Map(t.map((o,r)=>[o,r]));return[...e].sort((o,r)=>{const s=n.has(o)?n.get(o):Number.MAX_SAFE_INTEGER,i=n.has(r)?n.get(r):Number.MAX_SAFE_INTEGER;return s!==i?s-i:o.localeCompare(r)})}function we(e,t,n){const o=[...e[t]??[]],r=o.indexOf(n);return r===-1?o.push(n):o.splice(r,1),{...e,[t]:o}}function Pe(e,t,n){const o=e.filter(s=>s!==t),r=o.indexOf(n);return r===-1?(o.push(t),o):(o.splice(r,0,t),o)}function $e(e,t,n,o){const r=Oe(e,t,n),s=new Set(r),i=Object.entries(o).filter(([,c])=>Z(c)?e==="focus"?!0:c.type===e:!1).map(([c])=>c).filter(c=>!s.has(c));return[...r,...i]}function U(e,t,n,o,r){const s=Oe(e,t,n),i=sn(s,o[e]??[]),c=r[e];return c!=null&&c.length?pe(i,c):i}function rn(e,t,n){const o={focus:[],hottest:[],realtime:[]};if(!Array.isArray(e))return o;const r=new Set(e);for(const s of n)r.has(s)||o.focus.push(s);for(const s of t.hottest??[])r.has(s)||o.hottest.push(s);for(const s of t.realtime??[])r.has(s)||o.realtime.push(s);return o}function an(e,t=Date.now()){return{id:String(e.id),sourceId:e.sourceId,title:e.title,url:e.url,savedAt:e.savedAt??t,tags:Array.isArray(e.tags)?[...e.tags]:[]}}function Ue(e){if(!e)return"";const t=typeof e=="number"?e:Date.parse(String(e));if(Number.isNaN(t))return"";const n=new Date(t),o=n.getFullYear(),r=String(n.getMonth()+1).padStart(2,"0"),s=String(n.getDate()).padStart(2,"0");return`${o}-${r}-${s}`}function cn(e,t={}){var r,s;const n=((r=t.query)==null?void 0:r.trim().toLowerCase())??"",o=((s=t.tag)==null?void 0:s.trim())??"";return e.filter(i=>o&&!(i.tags??[]).includes(o)?!1:n?[i.title,i.url,i.sourceId,...i.tags??[],Ue(i.savedAt)].join(" ").toLowerCase().includes(n):!0)}function ln(e){const t=new Set;for(const n of e)for(const o of n.tags??[])t.add(o);return[...t].sort((n,o)=>n.localeCompare(o))}function un(e,t){const n=t.trim();return!n||e.includes(n)?e:[...e,n].sort((o,r)=>o.localeCompare(r))}function dn(e,t,n){const o=n.trim();return o?e.map(r=>{if(E(r)!==t)return r;const s=r.tags??[];return s.includes(o)?r:{...r,tags:[...s,o]}}):e}function K(e,t){return e.some(n=>E(n)===t)}function E(e){return`${e.sourceId}:${e.id}`}function Fe(e,t){const n=E(t);return e.some(o=>E(o)===n)?e:[an(t),...e]}function De(e,t){return e.filter(n=>E(n)!==t)}function fn(e,t){const n=E(t);return K(e,n)?De(e,n):Fe(e,t)}const Le={baseUrl:"https://newsnow.busiyi.world",theme:"dark",uiStyle:"style1",lastStyle1Source:null,openMode:"external",focusSources:[],enabledSources:null,disabledSources:{focus:[],hottest:[],realtime:[]},sourceOrder:{},cardLayout:{},cardSizes:{},favoriteTags:[],favorites:[],lastColumn:"updated"};function pn(e){if(!e||typeof e!="object")return{...Le,disabledSources:{focus:[],hottest:[],realtime:[]},sourceOrder:{},cardLayout:{},cardSizes:{},favoriteTags:[],favorites:[]};const t=e.disabledSources&&typeof e.disabledSources=="object"?{focus:Array.isArray(e.disabledSources.focus)?[...e.disabledSources.focus]:[],hottest:Array.isArray(e.disabledSources.hottest)?[...e.disabledSources.hottest]:[],realtime:Array.isArray(e.disabledSources.realtime)?[...e.disabledSources.realtime]:[]}:{focus:[],hottest:[],realtime:[]},n=e.uiStyle==="style2"||e.uiStyle==="style3"?e.uiStyle:"style1";return{...Le,...e,uiStyle:n,lastStyle1Source:typeof e.lastStyle1Source=="string"&&e.lastStyle1Source?e.lastStyle1Source:null,focusSources:Array.isArray(e.focusSources)?[...e.focusSources]:[],enabledSources:Array.isArray(e.enabledSources)?[...e.enabledSources]:e.enabledSources,disabledSources:t,sourceOrder:e.sourceOrder&&typeof e.sourceOrder=="object"?{...e.sourceOrder}:{},cardLayout:hn(e),cardSizes:mn(e),favoriteTags:Array.isArray(e.favoriteTags)?[...e.favoriteTags]:[],favorites:Array.isArray(e.favorites)?e.favorites.map(o=>({...o,tags:Array.isArray(o.tags)?[...o.tags]:[]})):[]}}function hn(e){return e!=null&&e.cardLayout&&typeof e.cardLayout=="object"?{...e.cardLayout}:{}}function mn(e){if(!(e!=null&&e.cardSizes)||typeof e.cardSizes!="object")return{};const t={};for(const[n,o]of Object.entries(e.cardSizes)){if(!o||typeof o!="object")continue;const r={};typeof o.width=="number"&&o.width>0&&(r.width=o.width),typeof o.height=="number"&&o.height>0&&(r.height=o.height),(r.width||r.height)&&(t[n]=r)}return t}function N(){return typeof ztools<"u"?ztools:null}function gn(e){try{const t=N();if(t!=null&&t.dbStorage)return t.dbStorage.getItem(e);const n=localStorage.getItem(e);return n?JSON.parse(n):null}catch{return null}}function vn(e,t){const n=N();n!=null&&n.dbStorage?n.dbStorage.setItem(e,t):localStorage.setItem(e,JSON.stringify(t))}function ee(e){const t=N();if(t!=null&&t.showNotification){t.showNotification(e);return}}function yn(e){const t=N();if(t!=null&&t.shellOpenExternal){t.shellOpenExternal(e);return}window.open(e,"_blank")}function bn(e){const t=N();if(!(t!=null&&t.createBrowserWindow)||!xe(e))return!1;const n=`./viewer.html?url=${encodeURIComponent(e)}`;try{return!!t.createBrowserWindow(n,{width:1024,height:720,center:!0,minWidth:480,minHeight:360})}catch{return!1}}function Sn(e,t,n){if(!e||e==="#")return;const o=N();if(!o){window.open(e,"_blank");return}if(t==="external"){o.shellOpenExternal(e);return}if(t==="ubrowser"){if(bn(e))return;if(o.shellOpenExternal){o.shellOpenExternal(e),ee("独立窗口打开失败,已改用系统浏览器");return}window.open(e,"_blank");return}n(e)}function wn(e){const t=N();t!=null&&t.onPluginEnter&&t.onPluginEnter(e)}const He="newsnow-settings",$n="2.0.0",C=en(),Ee=tn(),p=document.getElementById("app"),P=document.getElementById("overlay-root");let $=null,M="";const ae=new Set;let F=!0,ce=!1,a=Ln(),L=Ae(a.lastColumn),j=null;const m=new Map;let D=null;function Ln(){const e=pn(gn(He));return $=e.lastStyle1Source,e}function y(){a.lastColumn=L,a.uiStyle==="style1"&&$&&(a.lastStyle1Source=$),vn(He,a)}function te(){const e=a.disabledSources,t=!e.focus.length&&!e.hottest.length&&!e.realtime.length;Array.isArray(a.enabledSources)&&t&&(a.disabledSources=rn(a.enabledSources,C,a.focusSources),a.enabledSources=null,y())}function Ne(){const e=p.querySelector("#nn-main"),t={mainTop:(e==null?void 0:e.scrollTop)??0,mainLeft:(e==null?void 0:e.scrollLeft)??0,bodies:new Map};return p.querySelectorAll(".nn-card").forEach(n=>{const o=n.querySelector(".nn-card-body");o&&n.dataset.sourceId&&t.bodies.set(n.dataset.sourceId,o.scrollTop)}),t}function je(e){requestAnimationFrame(()=>{const t=p.querySelector("#nn-main");t&&(t.scrollTop=e.mainTop,t.scrollLeft=e.mainLeft),e.bodies.forEach((n,o)=>{const r=p.querySelector(`.nn-card[data-source-id="${o}"] .nn-card-body`);r&&(r.scrollTop=n)})})}function En(){if(a.cardLayout.width||a.cardLayout.height)return;const e=Object.values(a.cardSizes).find(t=>(t==null?void 0:t.width)||(t==null?void 0:t.height));e&&(a.cardLayout={width:e.width,height:e.height},a.cardSizes={},y())}function le(){const{width:e,height:t}=a.cardLayout,n=document.documentElement,o=p.querySelector("#nn-cards");t?n.style.setProperty("--card-height",`${t}px`):n.style.removeProperty("--card-height"),e?(n.style.setProperty("--card-width",`${e}px`),o==null||o.classList.add("has-custom-width")):(n.style.removeProperty("--card-width"),o==null||o.classList.remove("has-custom-width"))}function Re(){const e=document.documentElement;e.classList.toggle("dark",a.theme==="dark"),e.classList.toggle("light",a.theme==="light")}function ue(e){if(!e)return"";const t=typeof e=="number"?e:Date.parse(String(e));if(Number.isNaN(t))return"";const n=Date.now()-t,o=Math.floor(n/6e4);if(o<1)return"刚刚";if(o<60)return`${o}分钟前`;const r=Math.floor(o/60);return r<24?`${r}小时前`:`${Math.floor(r/24)}天前`}function Be(e){return!e.favId||!e.favSource?null:{id:e.favId,sourceId:e.favSource,title:decodeURIComponent(e.favTitle||""),url:decodeURIComponent(e.favUrl||"")}}function qn(e){const t=Be(e);if(t)return a.favorites=fn(a.favorites,t),y(),E(t)}function kn(e){const t=Be(e);if(!t)return;const n=E(t);return K(a.favorites,n)||(a.favorites=Fe(a.favorites,t),y()),n}function qe(e){if(!e.dataset.favId)return;const t=K(a.favorites,E({sourceId:e.dataset.favSource,id:e.dataset.favId}));e.classList.contains("nn-item-star")&&(e.classList.toggle("active",t),e.textContent=t?"★":"☆")}function de(e){e.querySelectorAll("[data-fav-id]").forEach(t=>{t.addEventListener("click",n=>{n.preventDefault(),n.stopPropagation(),qn(t.dataset),qe(t)})}),e.querySelectorAll(".nn-fav-link").forEach(t=>{t.addEventListener("auxclick",n=>{if(n.button!==1)return;n.preventDefault(),n.stopPropagation(),kn(t.dataset);const o=t.querySelector(".nn-item-star");o?qe(o):ee("已收藏")})})}function me(){return te(),U(L,a.focusSources,C,a.disabledSources,a.sourceOrder)}function ne(e){const t=Q(a.baseUrl),n=e.split("-")[0];return`${t}/icons/${n}.png`}function Cn(e){T(),P.innerHTML=` +
      +
      + + ${e} + +
      + +
      + `,D=t=>{const n=t.target;n.dataset.action==="webview-close"&&T(),n.dataset.action==="webview-external"&&yn(e)},P.addEventListener("click",D)}function oe(e){Sn(e,a.openMode,Cn)}async function G(e,t={}){ye(a.baseUrl,e,t);const n=async o=>{var l;const r=ye(a.baseUrl,e,{latest:o});if((l=window.newsnowServices)!=null&&l.fetchSource)return window.newsnowServices.fetchSource(r);const s=tt(r,a.baseUrl,{isDev:!1}),i=await fetch(s);if(!i.ok)throw new Error(`HTTP ${i.status}`);const c=await i.json();if(c!=null&&c.error)throw new Error(c.message||"请求失败");return c};try{return await n(!!t.latest)}catch(o){if(t.latest)return n(!1);throw o}}async function O({refresh:e=!1,preserveScroll:t=!1}={}){var o,r;if(a.uiStyle==="style1"){z(),await Y($,{refresh:e,preserveScroll:t});return}const n=me();if(!n.length){m.clear(),A({preserveScroll:t});return}for(const s of n)!e&&((o=m.get(s))!=null&&o.data)||m.set(s,{loading:!0,data:((r=m.get(s))==null?void 0:r.data)??null,error:null});A({preserveScroll:t}),await Promise.all(n.map(async s=>{var i,c,l;if(!(!e&&((i=m.get(s))!=null&&i.data)&&!((c=m.get(s))!=null&&c.loading))){try{const u=await G(s,{latest:e});m.set(s,{loading:!1,data:u,error:null})}catch(u){m.set(s,{loading:!1,data:((l=m.get(s))==null?void 0:l.data)??null,error:u instanceof Error?u.message:"获取失败"})}A({preserveScroll:t})}})),Tn()}function Tn(){j&&requestAnimationFrame(()=>{const e=p.querySelector(`.nn-card[data-source-id="${j}"]`);e?(e.scrollIntoView({behavior:"smooth",block:"nearest"}),setTimeout(()=>{j=null,e.classList.remove("is-highlight")},2e3)):j=null})}function T(){D&&(P.removeEventListener("click",D),D=null),P.innerHTML=""}function I(e,t,n){T(),P.innerHTML=` +
      +
      + +
      + `,D=r=>{r.target.dataset.action==="close"&&T()},P.addEventListener("click",D);const o=P.querySelector(".nn-modal");o&&n(o)}function ke(e){const t=k[e];if(t){if(a.uiStyle==="style1"){a.focusSources.includes(e)||(a.focusSources=H(a.focusSources,e)),$=e,F=!0,y(),T(),Y(e);return}t.type==="hottest"?L="hottest":t.type==="realtime"?L="realtime":L="focus",a.focusSources.includes(e)||(a.focusSources=H(a.focusSources,e)),j=e,y(),T(),O()}}function xn(e){const t=e.trim().toLowerCase();return t?Ee.filter(n=>n.name.toLowerCase().includes(t)||n.id.toLowerCase().includes(t)||n.title&&n.title.toLowerCase().includes(t)):Ee}function An(e,t){return e.length?e.map(n=>` +
      +

      ${n.label}

      +
        + ${n.items.map(o=>{const r=a.focusSources.includes(o.id);return`
      • + +
        + ${o.name} + ${o.title?`${o.title}`:""} +
        + +
      • `}).join("")} +
      +
      `).join(""):'
      无匹配数据源
      '}function R(e){return e?`
      ${ve(e,{preview:!0})}
      `:'
      选择左侧数据源预览内容
      '}async function Mn(e){var t;if(!(!e||(t=m.get(e))!=null&&t.data)){m.set(e,{loading:!0,data:null,error:null});try{const n=await G(e);m.set(e,{loading:!1,data:n,error:null})}catch(n){m.set(e,{loading:!1,data:null,error:n instanceof Error?n.message:"获取失败"})}}}function _e(){const e={query:"",selectedId:null,composing:!1};I("","",t=>{t.classList.add("nn-search-modal-wrap"),t.innerHTML=` + +
      + +
      +
      `;const n=t.querySelector("#search-input"),o=t.querySelector("#search-sidebar"),r=t.querySelector("#search-preview"),s=()=>{const f=xn(e.query);return{filtered:f,groups:Me(f)}},i=f=>{var h;(!e.selectedId||!f.some(v=>v.id===e.selectedId))&&(e.selectedId=((h=f[0])==null?void 0:h.id)??null)},c=f=>{const h=o.querySelector(`[data-search-focus="${f}"]`);if(!h)return;const v=a.focusSources.includes(f);h.classList.toggle("active",v),h.textContent=v?"★":"☆"},l=()=>({onFocusChange:c}),u=(f=!1)=>{var h;o.querySelectorAll(".nn-search-item").forEach(v=>{v.classList.toggle("is-selected",v.dataset.source===e.selectedId)}),f&&((h=o.querySelector(".nn-search-item.is-selected"))==null||h.scrollIntoView({block:"nearest"}))},d=()=>{const{filtered:f,groups:h}=s();i(f);const v=o.scrollTop;o.innerHTML=An(h,e.selectedId),o.scrollTop=v},g=async f=>{var h;r&&(r.innerHTML=R(f),B(r,f,l()),f&&!((h=m.get(f))!=null&&h.data)&&(await Mn(f),e.selectedId===f&&(r.innerHTML=R(f),B(r,f,l()))))},b=(f,h={})=>{e.selectedId!==f&&(e.selectedId=f,u(h.scrollIntoView??!1),g(f))};n.addEventListener("compositionstart",()=>{e.composing=!0}),n.addEventListener("compositionend",()=>{e.composing=!1,e.query=n.value,d(),g(e.selectedId)}),n.addEventListener("input",()=>{e.composing||(e.query=n.value,d(),g(e.selectedId))}),n.addEventListener("keydown",f=>{if(f.key==="Enter"&&e.selectedId&&(f.preventDefault(),ke(e.selectedId)),f.key==="ArrowDown"||f.key==="ArrowUp"){f.preventDefault();const{filtered:h}=s(),v=h.map(x=>x.id),S=v.indexOf(e.selectedId??"");if(S===-1)return;const w=f.key==="ArrowDown"?v[Math.min(S+1,v.length-1)]:v[Math.max(S-1,0)];w&&b(w,{scrollIntoView:!0})}}),o.addEventListener("click",f=>{const h=f.target.closest("[data-search-focus]");if(h){f.stopPropagation();const S=h.dataset.searchFocus;a.focusSources=H(a.focusSources,S),y();const w=a.focusSources.includes(S);h.classList.toggle("active",w),h.textContent=w?"★":"☆",e.selectedId===S&&(r.innerHTML=R(S),B(r,S,l()));return}const v=f.target.closest("[data-source]");if(v){if(f.detail===2){ke(v.dataset.source);return}b(v.dataset.source)}}),d(),g(e.selectedId),n.focus()})}function B(e,t,n={}){var r,s;if(!e||!t)return;const{onFocusChange:o}=n;(r=e.querySelector("[data-refresh]"))==null||r.addEventListener("click",async i=>{var l,u;i.stopPropagation();const c=e.querySelector("[data-refresh]");if(c){c.classList.add("is-spinning"),m.set(t,{loading:!0,data:((l=m.get(t))==null?void 0:l.data)??null,error:null}),e.innerHTML=R(t),B(e,t,n);try{const d=await G(t,{latest:!0});m.set(t,{loading:!1,data:d,error:null})}catch(d){m.set(t,{loading:!1,data:((u=m.get(t))==null?void 0:u.data)??null,error:d instanceof Error?d.message:"获取失败"})}e.innerHTML=R(t),B(e,t,n)}}),(s=e.querySelector("[data-focus]"))==null||s.addEventListener("click",i=>{i.stopPropagation(),a.focusSources=H(a.focusSources,t),y(),e.innerHTML=R(t),B(e,t,n),o==null||o(t)}),e.querySelectorAll("[data-url]").forEach(i=>{i.addEventListener("click",c=>{c.preventDefault(),c.stopPropagation(),oe(decodeURIComponent(i.dataset.url))})}),de(e)}function On(){const e={query:"",tag:"",editingKey:null,composing:!1},t=()=>[...new Set([...a.favoriteTags,...ln(a.favorites)])].sort((s,i)=>s.localeCompare(i)),n=s=>{const i=s.querySelector("#fav-list"),c=s.querySelector("#fav-empty");if(!i||!c)return;const l=cn(a.favorites,{query:e.query,tag:e.tag});if(!l.length){i.innerHTML="",i.hidden=!0,c.hidden=!1,c.textContent=a.favorites.length?"无匹配收藏":"暂无收藏资讯";return}if(i.hidden=!1,c.hidden=!0,i.innerHTML=l.map(u=>{const d=E(u),g=(u.tags??[]).map(h=>`${h}`).join(""),b=e.editingKey===d,f=t().map(h=>``).join("");return`
    • +
      + ${u.title} + ${g} + ${Ue(u.savedAt)} + + +
      +
      + +
      ${f||'暂无已有标签'}
      +
      +
    • `}).join(""),e.editingKey){const u=i.querySelector(`.nn-tag-input[data-key="${e.editingKey}"]`);u==null||u.focus()}},o=s=>{const i=s.querySelector("#fav-tag-filter");if(!i)return;const c=t();i.innerHTML=`${c.map(l=>``).join("")}`,i.value=e.tag},r=(s,i,c)=>{const l=c.trim();l&&(a.favorites=dn(a.favorites,i,l),a.favoriteTags=un(a.favoriteTags,l),y(),e.editingKey=i,o(s),n(s))};I("","",s=>{s.classList.add("nn-fav-modal-wrap"),s.innerHTML=` +
      +

      我的收藏

      + +
      +
      + +
      +
      +
        + +
        `;const i=s.querySelector("#fav-search"),c=s.querySelector("#fav-tag-filter");i.addEventListener("compositionstart",()=>{e.composing=!0}),i.addEventListener("compositionend",()=>{e.composing=!1,e.query=i.value,n(s)}),i.addEventListener("input",()=>{e.composing||(e.query=i.value,n(s))}),c.addEventListener("change",()=>{e.tag=c.value,n(s)}),s.addEventListener("click",l=>{const u=l.target.closest("[data-url]");if(u){oe(decodeURIComponent(u.dataset.url));return}const d=l.target.closest("[data-pick]");if(d){r(s,d.dataset.key,d.dataset.pick);return}const g=l.target.closest("[data-edit]");if(g){e.editingKey=e.editingKey===g.dataset.edit?null:g.dataset.edit,n(s);return}const b=l.target.closest("[data-remove]");b&&(a.favorites=De(a.favorites,b.dataset.remove),e.editingKey===b.dataset.remove&&(e.editingKey=null),y(),o(s),n(s),A({preserveScroll:!0}))}),s.addEventListener("keydown",l=>{const u=l.target.closest(".nn-tag-input");!u||l.key!=="Enter"||(l.preventDefault(),r(s,u.dataset.key,u.value),u.value="")}),o(s),n(s),i.focus()})}function Pn(){let e=L==="focus"||L==="hottest"||L==="realtime"?L:"realtime";I("","",t=>{t.classList.add("nn-settings-modal-wrap");const n=r=>{const s=t.querySelector("#source-settings");s&&(s.querySelectorAll("[data-toggle]").forEach(i=>{i.addEventListener("change",c=>{c.stopPropagation();const l=i.dataset.toggle,u=i.checked;r==="focus"?u?(a.focusSources.includes(l)||(a.focusSources=[...a.focusSources,l]),a.disabledSources={...a.disabledSources,focus:(a.disabledSources.focus??[]).filter(d=>d!==l)}):a.disabledSources=we(a.disabledSources,r,l):u?a.disabledSources={...a.disabledSources,[r]:(a.disabledSources[r]??[]).filter(d=>d!==l)}:a.disabledSources=we(a.disabledSources,r,l),y(),O({preserveScroll:!0})})}),s.querySelectorAll("li[data-id]").forEach(i=>{const c=i.querySelector(".nn-settings-drag");c==null||c.addEventListener("mousedown",l=>{l.preventDefault(),l.stopPropagation();const u=i.dataset.id,d=i.getBoundingClientRect(),g=i.cloneNode(!0);g.classList.add("nn-settings-ghost"),g.style.width=`${d.width}px`,g.style.height=`${d.height}px`,document.body.appendChild(g),i.classList.add("dragging");const b=(v,S)=>{g.style.left=`${v-d.width/2}px`,g.style.top=`${S-d.height/2}px`};b(l.clientX,l.clientY);const f=v=>{var w;b(v.clientX,v.clientY);const S=(w=document.elementFromPoint(v.clientX,v.clientY))==null?void 0:w.closest("li[data-id]");s.querySelectorAll("li").forEach(x=>x.classList.remove("drag-over")),S&&S!==i&&S.classList.add("drag-over")},h=v=>{var w,x;document.removeEventListener("mousemove",f),document.removeEventListener("mouseup",h),g.remove(),i.classList.remove("dragging");const S=(w=document.elementFromPoint(v.clientX,v.clientY))==null?void 0:w.closest("li[data-id]");if(s.querySelectorAll("li").forEach(se=>se.classList.remove("drag-over")),u&&S&&S.dataset.id&&S!==i){const se=$e(r,a.focusSources,C,k),et=(x=a.sourceOrder[r])!=null&&x.length?pe(se,a.sourceOrder[r]):se;if(a.sourceOrder[r]=Pe(et,u,S.dataset.id),r==="focus"){const fe=a.sourceOrder[r].filter(re=>a.focusSources.includes(re));for(const re of a.sourceOrder[r])fe.includes(re)||fe.push(re);a.focusSources=fe}y(),o(),O({preserveScroll:!0})}};document.addEventListener("mousemove",f),document.addEventListener("mouseup",h)})}))},o=()=>{var l;const r=e,s=$e(r,a.focusSources,C,k),i=new Set(a.disabledSources[r]??[]),c=(l=a.sourceOrder[r])!=null&&l.length?pe(s,a.sourceOrder[r]):s;t.innerHTML=` +

        数据源设置

        +
        + ${nn.map(u=>``).join("")} +
        +
          + ${c.map(u=>{const d=k[u];if(!d)return"";const g=r==="focus"?a.focusSources.includes(u)&&!i.has(u):!i.has(u);return`
        • + ⋮⋮ + + ${d.name} + +
        • `}).join("")} +
        +

        拖拽调整顺序;开关切换启用状态。各栏目与首页 Tab 一致。

        `,t.querySelectorAll("[data-settings-tab]").forEach(u=>{u.addEventListener("click",()=>{e=u.dataset.settingsTab,o()})}),n(r)};o()})}function Un(){I("API 基址",` +
        + + +
        `,e=>{var n,o;const t=e.querySelector("#api-input");(n=e.querySelector("[data-action='cancel']"))==null||n.addEventListener("click",r=>{r.stopPropagation(),T()}),(o=e.querySelector("[data-action='save']"))==null||o.addEventListener("click",r=>{r.stopPropagation();const s=Q(t.value);if(!xe(s)){ee("请输入有效的 http(s) 地址");return}a.baseUrl=s,m.clear(),y(),T(),O({refresh:!0})}),t.focus()})}function Fn(){const e={internal:"插件内 Web",ubrowser:"独立窗口",external:"系统浏览器"};I("打开方式",`
          ${ct.map(t=>`
        • ${e[t]}${a.openMode===t?"✓":""}
        • `).join("")}
        `,t=>{var n;(n=t.querySelector("#open-mode-list"))==null||n.addEventListener("click",o=>{const r=o.target.closest("li[data-mode]");r&&(o.stopPropagation(),a.openMode=r.dataset.mode,y(),t.querySelectorAll("#open-mode-list li").forEach(s=>{s.classList.toggle("is-selected",s.dataset.mode===a.openMode);const i=s.querySelector("span:last-child");i&&(i.textContent=s.dataset.mode===a.openMode?"✓":"")}),ee(`已切换为:${e[a.openMode]}`))})})}function Dn(){return te(),[...new Set([...U("focus",a.focusSources,C,a.disabledSources,a.sourceOrder),...U("hottest",a.focusSources,C,a.disabledSources,a.sourceOrder),...U("realtime",a.focusSources,C,a.disabledSources,a.sourceOrder)])]}function q(e){return String(e).replace(/&/g,"&").replace(//g,">").replace(/"/g,""")}function Ce(e,t){let n=String(e);return t!=null&&t.startsWith("github")&&(n=n.replace(/\s*\/\s*/," / ").replace(/\s+/g," ").trim()),n}function Hn(e,t){var r,s;const n=t.trim().toLowerCase();return n?(((s=(r=m.get(e))==null?void 0:r.data)==null?void 0:s.items)??[]).some(i=>Ke(i,n)):!1}function Ke(e,t){var o,r;return[e.title,(o=e.extra)==null?void 0:o.info,(r=e.extra)==null?void 0:r.hover].filter(Boolean).map(s=>String(s).toLowerCase()).some(s=>s.includes(t))}function ie(e,t){const n=t.trim().toLowerCase();return n?e.filter(o=>{const r=k[o];return r?r.name.toLowerCase().includes(n)||o.toLowerCase().includes(n)||r.title&&r.title.toLowerCase().includes(n)||Hn(o,n):!1}):e}function Nn(e,t){const n=t.trim().toLowerCase();return n?e.filter(o=>Ke(o,n)):e}function ge(e=""){return te(),ie(U("focus",a.focusSources,C,a.disabledSources,a.sourceOrder),e)}function Ge(e=""){te();const t=ge(e),n=new Set(t),o=ie(U("hottest",a.focusSources,C,a.disabledSources,a.sourceOrder).filter(u=>!n.has(u)),e),r=ie(U("realtime",a.focusSources,C,a.disabledSources,a.sourceOrder).filter(u=>!n.has(u)),e),s=[];o.length&&s.push({key:"hottest",label:"热搜",items:o}),r.length&&s.push({key:"realtime",label:"新闻",items:r});const i=new Set([...t,...o,...r]),c=ie(Dn().filter(u=>!i.has(u)),e),l=Me(c.map(u=>{const d=k[u];return{id:u,name:(d==null?void 0:d.name)??u,title:d==null?void 0:d.title,column:d==null?void 0:d.column,color:d==null?void 0:d.color,type:d==null?void 0:d.type}}));for(const u of l)s.push({key:u.key,label:u.label,items:u.items.map(d=>d.id)});return s}function z(){const e=ge(M),t=Ge(M),n=[...new Set([...e,...t.flatMap(o=>o.items)])];return $&&n.includes($)||($=n[0]??null),$}function jn(e){const t=e.extra??{};if(t.num!=null&&t.num!=="")return String(t.num);if(t.hot!=null&&t.hot!=="")return String(t.hot);if(t.info){const o=String(t.info),r=o.match(/[\d,.]+/);if(r)return r[0];if(o.length<=12)return o}const n=t.hover;return n!=null&&String(n).length<=8&&/^[\d,.]+/.test(String(n))?String(n):""}function Rn(e,t,n,o=M){const r=Nn(t,o);return r.length?n.type==="hottest"?`
          ${r.map((s,i)=>{const c=E({sourceId:e,id:s.id}),l=K(a.favorites,c),u=s.url||"#",d=jn(s),g=q(Ce(s.title,e));return`
        1. + + ${i+1} + ${g} + ${d?`🔥 ${q(d)}`:""} + ${l?"★":"☆"} + +
        2. `}).join("")}
        `:`
          ${r.map(s=>{var f,h;const i=s.url||"#",c=s.id||`${s.title}-${s.pubDate||""}`,l=ue(s.pubDate||((f=s.extra)==null?void 0:f.date)),u=E({sourceId:e,id:c}),d=K(a.favorites,u),g=q(Ce(s.title,e)),b=(h=s.extra)!=null&&h.info?q(String(s.extra.info)):"";return`
        1. + + + ${q(l)}${b?` · ${b}`:""} + ${g} + + ${d?"★":"☆"} + +
        2. `}).join("")}
        `:o.trim()?'
        无匹配资讯
        ':'
        暂无数据
        '}function Ie(e){var c,l;if(!e)return'
        请选择左侧信息源
        ';const t=k[e];if(!t)return'
        信息源不可用
        ';const n=m.get(e)??{},o=n.error?n.error:n.loading?"加载中...":(c=n.data)!=null&&c.updatedTime?`${ue(n.data.updatedTime)}更新`:"",r=((l=n.data)==null?void 0:l.items)??[],s=n.error?`
        ${q(n.error)}
        `:Rn(e,r,t),i=a.focusSources.includes(e);return` +
        +
        + +
        +
        ${q(t.name)}${t.title?`${q(t.title)}`:""}
        +
        ${q(o)}
        +
        +
        + +
        +
        + ${s} +
        `}function ze(){const e=Ge(M),t=ge(M),n=z(),o=c=>{const l=k[c];return l?``:""},r=a.focusSources.length,s=`
        + +
        + ${t.length?t.map(o).join(""):'
        暂无关注频道
        '} +
        +
        `,i=e.map(c=>{const l=ae.has(c.key);return`
        + +
        + ${c.items.map(o).join("")} +
        +
        `}).join("");return` + ${s} +
        ${i||'
        无匹配信息源
        '}
        `}function Bn(){return` +
        + +
        +
        + ${ze()} +
        + `}function _n(){const e=a.theme==="dark"?"浅色模式":"深色模式";return` + `}function W(e={}){const n=e.preserveScroll??!1?Ye():null,o=z();p.innerHTML=` +
        + +
        + ${Ie(o)} +
        + + +
        +
        +
        `;const r=p.querySelector("#nn-s1-search");r&&(r.value=M),Kn(),n&&Xe(n)}function J(){const e=p.querySelector("#nn-s1-sidebar-scroll");if(!e)return;const t=e.scrollTop;e.innerHTML=ze(),e.scrollTop=t,We()}function V(){const e=p.querySelector("#nn-s1-main");if(!e)return;const t=Ye(),n=e.querySelector(".nn-s1-fabs"),o=Ie($),r=document.createElement("div");r.innerHTML=o+"";const s=r.querySelector(".nn-s1-content-head"),i=r.querySelector(".nn-s1-content-body"),c=e.querySelector(".nn-s1-content-head"),l=e.querySelector(".nn-s1-content-body");c&&s&&c.replaceWith(s),l&&i&&l.replaceWith(i),Ve(),Xe(t)}function Te(){z(),J(),V()}function Ye(){const e=p.querySelector("#nn-s1-scroll");return{scrollTop:(e==null?void 0:e.scrollTop)??0}}function Xe(e){requestAnimationFrame(()=>{const t=p.querySelector("#nn-s1-scroll");t&&(t.scrollTop=e.scrollTop),he()})}function he(){const e=p.querySelector("#nn-s1-scroll"),t=p.querySelector(".nn-s1-fab-top");!e||!t||(t.hidden=e.scrollTop<=8)}async function Y(e,{refresh:t=!1,preserveScroll:n=!1}={}){var o,r,s,i;if(!e){W({preserveScroll:n});return}if(!t&&((o=m.get(e))!=null&&o.data)){if(p.querySelector(".nn-s1")){V();return}W({preserveScroll:n});return}p.querySelector(".nn-s1")?(m.set(e,{loading:!0,data:((r=m.get(e))==null?void 0:r.data)??null,error:null}),V()):(m.set(e,{loading:!0,data:((s=m.get(e))==null?void 0:s.data)??null,error:null}),W({preserveScroll:n}));try{const c=await G(e,{latest:t});m.set(e,{loading:!1,data:c,error:null})}catch(c){m.set(e,{loading:!1,data:((i=m.get(e))==null?void 0:i.data)??null,error:c instanceof Error?c.message:"获取失败"})}p.querySelector(".nn-s1")?(V(),M.trim()&&J()):W({preserveScroll:n})}function We(){var e;(e=p.querySelector("[data-s1-toggle-focus]"))==null||e.addEventListener("click",()=>{F=!F,J()}),p.querySelectorAll("[data-s1-toggle-group]").forEach(t=>{t.addEventListener("click",()=>{const n=t.dataset.s1ToggleGroup;n&&(ae.has(n)?ae.delete(n):ae.add(n),J())})}),p.querySelectorAll("[data-s1-source]").forEach(t=>{t.addEventListener("click",()=>{const n=t.dataset.s1Source;!n||n===$||($=n,y(),Y(n))})})}function Ve(){var e,t;(e=p.querySelector("[data-s1-focus]"))==null||e.addEventListener("click",n=>{n.stopPropagation();const o=n.currentTarget.dataset.s1Focus;if(!o)return;const r=a.focusSources.includes(o);a.focusSources=H(a.focusSources,o),r||(F=!0),y(),J(),V()}),(t=p.querySelector("#nn-s1-scroll"))==null||t.addEventListener("scroll",he),p.querySelectorAll("#nn-s1-main [data-url]").forEach(n=>{n.addEventListener("click",o=>{o.preventDefault(),o.stopPropagation(),oe(decodeURIComponent(n.dataset.url))})}),de(p.querySelector("#nn-s1-main")??p),he()}function Kn(){var n,o,r;const e=p.querySelector("#nn-s1-search");let t=!1;e==null||e.addEventListener("compositionstart",()=>{t=!0}),e==null||e.addEventListener("compositionend",()=>{t=!1,e&&(M=e.value,Te())}),e==null||e.addEventListener("input",()=>{t||!e||(M=e.value,Te())}),(n=p.querySelector("[data-action='menu']"))==null||n.addEventListener("click",s=>{s.stopPropagation();const i=p.querySelector(".nn-s1-dropdown");i&&(i.hidden=!i.hidden)}),ce||(ce=!0,document.addEventListener("click",()=>{const s=p.querySelector(".nn-dropdown:not([hidden]), .nn-s1-dropdown:not([hidden])");s&&(s.hidden=!0)})),Qe(p.querySelector(".nn-s1-dropdown")),(o=p.querySelector("[data-action='go-top']"))==null||o.addEventListener("click",()=>{var s;(s=p.querySelector("#nn-s1-scroll"))==null||s.scrollTo({top:0,behavior:"smooth"})}),(r=p.querySelector("[data-action='refresh-s1']"))==null||r.addEventListener("click",async s=>{const i=s.currentTarget;$&&(i.classList.add("is-spinning"),await Y($,{refresh:!0,preserveScroll:!0}),i.classList.remove("is-spinning"))}),We(),Ve()}function Qe(e){e&&e.addEventListener("click",t=>{t.stopPropagation();const n=t.target.closest("li[data-menu]");if(!n||n.classList.contains("disabled"))return;const o=n.dataset.menu;e.hidden=!0,o==="theme"?(a.theme=a.theme==="dark"?"light":"dark",Re(),y(),A({preserveScroll:!0})):o==="style"?Gn():o==="favorites"?On():o==="sources"?Pn():o==="api"?Un():o==="open-mode"&&Fn()})}function Gn(){I("风格样式",`
          ${lt.map(e=>`
        • + ${be[e]} + ${a.uiStyle===e?"✓":""} +
        • `).join("")}
        +

        风格1 为默认侧栏布局;风格3 即将推出。

        `,e=>{var t;(t=e.querySelector("#style-list"))==null||t.addEventListener("click",n=>{const o=n.target.closest("li[data-style]");if(!o||o.classList.contains("disabled"))return;n.stopPropagation();const r=o.dataset.style;!r||r===a.uiStyle||(a.uiStyle=r,m.clear(),y(),T(),A(),a.uiStyle==="style1"?(z(),Y($)):O(),ee(`已切换为:${be[r]}`))})})}function In(){return ot.map(e=>e.kind==="action"?``:``).join("")}function zn(){const e=a.theme==="dark"?"浅色模式":"深色模式";return` + `}function ve(e,t={}){var g,b;const{preview:n=!1}=t,o=k[e];if(!o)return"";const r=m.get(e)??{},s=a.focusSources.includes(e),i=j===e,c=r.error?r.error:r.loading?"加载中...":(g=r.data)!=null&&g.updatedTime?`${ue(r.data.updatedTime)}更新`:"",l=((b=r.data)==null?void 0:b.items)??[],u=l.length>0?o.type==="hottest"?`
          ${l.map((f,h)=>{const v=E({sourceId:e,id:f.id}),S=K(a.favorites,v),w=f.url||"#";return`
        1. + + ${h+1} + ${f.title} + ${S?"★":"☆"} + +
        2. `}).join("")}
        `:`
          ${l.map(f=>{var w,x;const h=f.url||"#",v=f.id||`${f.title}-${f.pubDate||""}`;return`
        1. +
          ${ue(f.pubDate||((w=f.extra)==null?void 0:w.date))}${((x=f.extra)==null?void 0:x.info)||""}
          + ${f.title} +
        2. `}).join("")}
        `:r.error?`
        ${r.error}
        `:'
        暂无数据
        ',d=o.color||"slate";return` +
        +
        +
        + +
        +
        + ${o.name} + ${o.title?`${o.title}`:""} +
        +
        ${c}
        +
        +
        +
        + + + ${n?"":`⋮⋮`} +
        +
        +
        ${u}
        + ${n?"":`
        +
        `} +
        `}function Yn(e={}){const n=e.preserveScroll??!1?Ne():null,o=me();p.innerHTML=` +
        +
        + NewsNow +
        +
        News
        +
        Now
        +
        + v${$n} +
        + +
        + + + + + ${zn()} + +
        +
        +
        +
        +
        + ${o.length?o.map(r=>ve(r)).join(""):`
        ${L==="focus"?"点击卡片 ☆ 或「搜索」添加关注频道":"当前栏目无可用数据源"}
        `} +
        +
        +
        + `,Xn(),le(),n&&je(n)}function A(e={}){if(a.uiStyle==="style1"){W(e);return}Yn(e)}function Xn(){var n,o,r;p.querySelectorAll("[data-column]").forEach(s=>{s.addEventListener("click",()=>{L=s.dataset.column,y(),O()})}),(n=p.querySelector("[data-action='search']"))==null||n.addEventListener("click",()=>{_e()}),(o=p.querySelector("[data-action='refresh-all']"))==null||o.addEventListener("click",s=>{const i=s.currentTarget;i.classList.add("is-spinning"),O({refresh:!0,preserveScroll:!0}).finally(()=>{i.classList.remove("is-spinning")})}),(r=p.querySelector("[data-action='go-top']"))==null||r.addEventListener("click",()=>{var s;(s=p.querySelector("#nn-main"))==null||s.scrollTo({top:0,behavior:"smooth"})});const e=p.querySelector("[data-action='menu']"),t=p.querySelector(".nn-dropdown");e==null||e.addEventListener("click",s=>{s.stopPropagation(),t&&(t.hidden=!t.hidden)}),ce||(ce=!0,document.addEventListener("click",()=>{const s=p.querySelector(".nn-dropdown:not([hidden]), .nn-s1-dropdown:not([hidden])");s&&(s.hidden=!0)})),Qe(t),p.querySelectorAll("[data-refresh]").forEach(s=>{s.addEventListener("click",async i=>{var l,u;i.stopPropagation();const c=s.dataset.refresh;s.classList.add("is-spinning"),m.set(c,{loading:!0,data:((l=m.get(c))==null?void 0:l.data)??null,error:null}),_(c);try{const d=await G(c,{latest:!0});m.set(c,{loading:!1,data:d,error:null})}catch(d){m.set(c,{loading:!1,data:((u=m.get(c))==null?void 0:u.data)??null,error:d instanceof Error?d.message:"获取失败"})}_(c)})}),p.querySelectorAll("[data-focus]").forEach(s=>{s.addEventListener("click",i=>{i.stopPropagation();const c=s.dataset.focus;a.focusSources=H(a.focusSources,c),y(),_(c)})}),p.querySelectorAll("[data-url]").forEach(s=>{s.addEventListener("click",i=>{i.preventDefault(),i.stopPropagation(),oe(decodeURIComponent(s.dataset.url))})}),de(p),Qn(),Wn()}function Wn(){const e=p.querySelector("#nn-cards");e&&e.querySelectorAll(".nn-drag-handle").forEach(t=>{Je(t,e)})}function Vn(e,t){const n=document.createElement("article");n.className=`${e.className} nn-card-ghost`.replace(/\bdragging\b/g,"").trim(),e.dataset.color&&(n.dataset.color=e.dataset.color),e.dataset.sourceId&&(n.dataset.sourceId=e.dataset.sourceId);const o=e.querySelector(".nn-card-head");return o&&n.appendChild(o.cloneNode(!0)),n.style.width=`${t.width}px`,n.style.height=`${t.height}px`,n}function Je(e,t){e.addEventListener("mousedown",n=>{n.preventDefault(),n.stopPropagation();const o=e.closest(".nn-card");if(!o)return;const r=o.dataset.sourceId,s=o.getBoundingClientRect(),i=Vn(o,s);document.body.appendChild(i),o.classList.add("dragging");const c=(d,g)=>{i.style.left=`${d-s.width/2}px`,i.style.top=`${g-s.height/2}px`};c(n.clientX,n.clientY);const l=d=>{var b;c(d.clientX,d.clientY);const g=(b=document.elementFromPoint(d.clientX,d.clientY))==null?void 0:b.closest(".nn-card");t.querySelectorAll(".nn-card").forEach(f=>f.classList.remove("drag-over")),g&&g!==o&&g.classList.add("drag-over")},u=d=>{var b;document.removeEventListener("mousemove",l),document.removeEventListener("mouseup",u),i.remove(),o.classList.remove("dragging");const g=(b=document.elementFromPoint(d.clientX,d.clientY))==null?void 0:b.closest(".nn-card");if(t.querySelectorAll(".nn-card").forEach(f=>f.classList.remove("drag-over")),r&&g&&g!==o){const f=me(),h=Pe(f,r,g.dataset.sourceId);a.sourceOrder[L]=h,L==="focus"&&(a.focusSources=h),y(),A({preserveScroll:!0})}};document.addEventListener("mousemove",l),document.addEventListener("mouseup",u)})}function Ze(e){if(e.classList.contains("is-preview"))return;const t=e.querySelector("[data-resize-w]"),n=e.querySelector("[data-resize-h]");t==null||t.addEventListener("mousedown",o=>{o.preventDefault(),o.stopPropagation();const r=o.clientX,s=p.querySelector(".nn-card:not(.is-preview)"),i=(s==null?void 0:s.getBoundingClientRect().width)??a.cardLayout.width??280,c=u=>{const d=Math.max(180,Math.round(i+u.clientX-r));a.cardLayout={...a.cardLayout,width:d},le()},l=()=>{document.removeEventListener("mousemove",c),document.removeEventListener("mouseup",l),y()};document.addEventListener("mousemove",c),document.addEventListener("mouseup",l)}),n==null||n.addEventListener("mousedown",o=>{o.preventDefault(),o.stopPropagation();const r=o.clientY,s=p.querySelector(".nn-card:not(.is-preview)"),i=(s==null?void 0:s.getBoundingClientRect().height)??a.cardLayout.height??248,c=u=>{const d=Math.max(160,Math.round(i+u.clientY-r));a.cardLayout={...a.cardLayout,height:d},le()},l=()=>{document.removeEventListener("mousemove",c),document.removeEventListener("mouseup",l),y()};document.addEventListener("mousemove",c),document.addEventListener("mouseup",l)})}function Qn(e=p){e.querySelectorAll(".nn-card:not(.is-preview)").forEach(Ze)}function _(e){const t=p.querySelector("#nn-cards"),n=p.querySelector(`.nn-card[data-source-id="${e}"]`);if(!t||!n){A({preserveScroll:!0});return}const o=Ne(),r=document.createElement("div");r.innerHTML=ve(e);const s=r.firstElementChild;s&&(n.replaceWith(s),Jn(s),je(o))}function Jn(e){var o,r;(o=e.querySelector("[data-refresh]"))==null||o.addEventListener("click",async s=>{var l,u;s.stopPropagation();const i=e.querySelector("[data-refresh]"),c=i==null?void 0:i.dataset.refresh;if(!(!c||!i)){i.classList.add("is-spinning"),m.set(c,{loading:!0,data:((l=m.get(c))==null?void 0:l.data)??null,error:null}),_(c);try{const d=await G(c,{latest:!0});m.set(c,{loading:!1,data:d,error:null})}catch(d){m.set(c,{loading:!1,data:((u=m.get(c))==null?void 0:u.data)??null,error:d instanceof Error?d.message:"获取失败"})}_(c)}}),(r=e.querySelector("[data-focus]"))==null||r.addEventListener("click",s=>{s.stopPropagation();const i=e.querySelector("[data-focus]"),c=i==null?void 0:i.dataset.focus;c&&(a.focusSources=H(a.focusSources,c),y(),_(c))}),e.querySelectorAll("[data-url]").forEach(s=>{s.addEventListener("click",i=>{i.preventDefault(),i.stopPropagation(),oe(decodeURIComponent(s.dataset.url))})}),de(e);const t=e.querySelector(".nn-drag-handle"),n=p.querySelector("#nn-cards");t&&n&&Je(t,n),Ze(e)}function Zn({code:e}){if(L=Ae(ut(e)),y(),a.uiStyle==="style1"){z(),Y($);return}O()}function eo(){document.addEventListener("keydown",e=>{e.target.matches("input, textarea, [contenteditable]")||((e.metaKey||e.ctrlKey)&&e.key.toLowerCase()==="k"&&(e.preventDefault(),_e()),e.key==="Escape"&&P.innerHTML&&T())})}function to(){wn(Zn)}Re();te();En();le();eo();to();A();O(); diff --git a/plugins/newsnow/index.html b/plugins/newsnow/index.html index e7c91808..066b9ea0 100644 --- a/plugins/newsnow/index.html +++ b/plugins/newsnow/index.html @@ -4,8 +4,8 @@ NewsNow - - + +
        diff --git a/plugins/newsnow/plugin.json b/plugins/newsnow/plugin.json index 058f4b5a..52c68af9 100644 --- a/plugins/newsnow/plugin.json +++ b/plugins/newsnow/plugin.json @@ -2,7 +2,7 @@ "name": "newsnow", "title": "NewsNow", "description": "实时新闻快讯与多平台热搜订阅", - "version": "1.0.0", + "version": "2.0.0", "author": "crisy", "logo": "logo.png", "main": "index.html",