您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Greasy Fork is available in English.
一款专为 V2EX 用户设计的浏览器插件,提供了丰富的扩展功能,让原生页面焕然一新!
当前为
// ==UserScript== // @name V2EX Polish - 体验更现代化的 V2EX // @namespace LeoKu(https://leoku.top) // @version 1.2.4 // @description 一款专为 V2EX 用户设计的浏览器插件,提供了丰富的扩展功能,让原生页面焕然一新! // @author LeoKu // @match https://*.v2ex.com/* // @icon https://www.google.com/s2/favicons?sz=64&domain=v2ex.com // @grant none // @license MIT // ==/UserScript== "use strict";var y=(o,t)=>()=>(o&&(t=o(o=0)),t);var Jo,Qo,To,Yo,Qe,_o,io,q=y(()=>{"use strict";Jo="V2EX_Polish",Qo=[{title:"\u5C0F\u9EC4\u8138",list:["\u{1F600}","\u{1F601}","\u{1F602}","\u{1F923}","\u{1F605}","\u{1F60A}","\u{1F60B}","\u{1F618}","\u{1F970}","\u{1F617}","\u{1F929}","\u{1F914}","\u{1F928}","\u{1F610}","\u{1F611}","\u{1F644}","\u{1F60F}","\u{1F62A}","\u{1F62B}","\u{1F971}","\u{1F61C}","\u{1F612}","\u{1F614}","\u{1F628}","\u{1F630}","\u{1F631}","\u{1F975}","\u{1F621}","\u{1F973}","\u{1F97A}","\u{1F92D}","\u{1F9D0}","\u{1F913}","\u{1F62D}","\u{1F911}","\u{1F92E}"]},{title:"\u624B\u52BF",list:["\u{1F64B}","\u{1F64E}","\u{1F645}","\u{1F647}","\u{1F937}","\u{1F90F}","\u{1F449}","\u270C\uFE0F","\u{1F918}","\u{1F919}","\u{1F44C}","\u{1F90C}","\u{1F44D}","\u{1F44E}","\u{1F44B}","\u{1F91D}","\u{1F64F}","\u{1F44F}"]},{title:"\u5E86\u795D",list:["\u2728","\u{1F389}","\u{1F38A}"]},{title:"\u5176\u4ED6",list:["\u{1F47B}","\u{1F921}","\u{1F414}","\u{1F440}","\u{1F4A9}","\u{1F434}","\u{1F984}","\u{1F427}","\u{1F436}","\u{1F412}","\u{1F648}","\u{1F649}","\u{1F64A}","\u{1F435}"]}],To=250,Yo=550,Qe=60*60*1e3,_o=["3107b9ef8b316f3","442b04f26eefc8a","59cfebe717c09e4","60605aad4a62882","6c65ab1d3f5452a","83e123737849aa9","9311f6be1c10160","c4a4a563f698595","81be04b9e4a08ce"],io={openInNewTab:!1,autoCheckIn:{enabled:!0},nestedReply:{display:"align"}}});var Zo,Y,Ko,ao,ot,tt,et,nt,rt,co,it,at,ct,lt,st,pt,I=y(()=>{"use strict";Zo=` <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" style="width:18px; height:18px;" > <path stroke-linecap="round" stroke-linejoin="round" d="M15.182 15.182a4.5 4.5 0 01-6.364 0M21 12a9 9 0 11-18 0 9 9 0 0118 0zM9.75 9.75c0 .414-.168.75-.375.75S9 10.164 9 9.75 9.168 9 9.375 9s.375.336.375.75zm-.375 0h.008v.015h-.008V9.75zm5.625 0c0 .414-.168.75-.375.75s-.375-.336-.375-.75.168-.75.375-.75.375.336.375.75zm-.375 0h.008v.015h-.008V9.75z" /> </svg> `,Y=` <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" > <path stroke-linecap="round" stroke-linejoin="round" d="M21 8.25c0-2.485-2.099-4.5-4.688-4.5-1.935 0-3.597 1.126-4.312 2.733-.715-1.607-2.377-2.733-4.313-2.733C5.1 3.75 3 5.765 3 8.25c0 7.22 9 12 9 12s9-4.78 9-12z" /> </svg> `,Ko=` <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" > <path stroke-linecap="round" stroke-linejoin="round" d="M3.98 8.223A10.477 10.477 0 001.934 12C3.226 16.338 7.244 19.5 12 19.5c.993 0 1.953-.138 2.863-.395M6.228 6.228A10.45 10.45 0 0112 4.5c4.756 0 8.773 3.162 10.065 7.498a10.523 10.523 0 01-4.293 5.774M6.228 6.228L3 3m3.228 3.228l3.65 3.65m7.894 7.894L21 21m-3.228-3.228l-3.65-3.65m0 0a3 3 0 10-4.243-4.243m4.242 4.242L9.88 9.88" /> </svg> `,ao=` <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" > <path stroke-linecap="round" stroke-linejoin="round" d="M7.5 8.25h9m-9 3H12m-9.75 1.51c0 1.6 1.123 2.994 2.707 3.227 1.129.166 2.27.293 3.423.379.35.026.67.21.865.501L12 21l2.755-4.133a1.14 1.14 0 01.865-.501 48.172 48.172 0 003.423-.379c1.584-.233 2.707-1.626 2.707-3.228V6.741c0-1.602-1.123-2.995-2.707-3.228A48.394 48.394 0 0012 3c-2.392 0-4.744.175-7.043.513C3.373 3.746 2.25 5.14 2.25 6.741v6.018z" /> </svg> `,ot=` <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" > <polygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2" ></polygon> </svg> `,tt=` <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" > <path d="M22 4s-.7 2.1-2 3.4c1.6 10-9.4 17.3-18 11.6 2.2.1 4.4-.6 6-2C3 15.5.5 9.6 3 5c2.2 2.6 5.6 4.1 9 4-.9-4.2 4-6.6 7-3.8 1.1 0 3-1.2 3-1.2z" ></path> </svg> `,et=` <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" > <circle cx="12" cy="12" r="10"></circle> <path d="M8 15h8"></path> <path d="M8 9h2"></path> <path d="M14 9h2"></path> </svg> `,nt=` <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" > <path d="M20.42 4.58a5.4 5.4 0 0 0-7.65 0l-.77.78-.77-.78a5.4 5.4 0 0 0-7.65 0C1.46 6.7 1.33 10.28 4 13l8 8 8-8c2.67-2.72 2.54-6.3.42-8.42z" ></path> </svg> `,rt=` <svg version="1.1" id="L4" xmlns="http://www.w3.org/2000/svg" x="0px" y="0px" viewBox="0 0 100 100" enable-background="new 0 0 0 0" xml:space="preserve"> <circle fill="currentcolor" stroke="none" cx="6" cy="50" r="6"> <animate attributeName="opacity" dur="1s" values="0;1;0" repeatCount="indefinite" begin="0.1"/> </circle> <circle fill="currentcolor" stroke="none" cx="26" cy="50" r="6"> <animate attributeName="opacity" dur="1s" values="0;1;0" repeatCount="indefinite" begin="0.2"/> </circle> <circle fill="currentcolor" stroke="none" cx="46" cy="50" r="6"> <animate attributeName="opacity" dur="1s" values="0;1;0" repeatCount="indefinite" begin="0.3"/> </circle> </svg> `,co=` <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 88 88"><g style="mix-blend-mode:passthrough"><path d="M87.92 86.098v-.052a.592.592 0 0 0 0-.07L44.978.72l-.059-.105c-.16-.3-.415-.511-.705-.586a.961.961 0 0 0-.841.19 1.315 1.315 0 0 0-.336.378l-.058.115a2571.004 2571.004 0 0 1-8.695 17.172c-.59 1.024-.59 2.382 0 3.406 3.856 7.57 7.7 15.142 11.532 22.718.641 1.108.641 2.58 0 3.688C39.5 60.23 32.826 73.406 26.45 85.993c-.291.661-.086 1.482.46 1.84.16.104.341.158.525.158h18.52c.415.003.797-.272.992-.713l.635-1.285 8.585-17.023c.142-.317.383-.552.67-.653a.949.949 0 0 1 .855.116c.156.1.289.245.386.423l8.506 16.723.787 1.558c.199.433.575.702.985.704h.518c.087.009.175.009.263 0h17.74c.617 0 1.119-.601 1.123-1.347a1.615 1.615 0 0 0-.08-.396Z" fill="currentColor" style="mix-blend-mode:passthrough"/><path d="m38.551 48.541.62-1.232a3.095 3.095 0 0 0 0-3.02l-3.807-7.446-4.377-8.511c-.155-.308-.406-.527-.697-.61a.957.957 0 0 0-.85.17 1.252 1.252 0 0 0-.4.502L.132 86.002c-.29.658-.085 1.477.46 1.83.161.113.345.17.532.168h16.981c.41 0 .788-.27.985-.705l.65-1.302c.029-.048.055-.098.08-.15l.729-1.408c6.047-12.103 11.839-23.66 17.9-35.7.038-.062.072-.127.102-.194Z" fill="currentColor" style="mix-blend-mode:passthrough"/></g></svg> `,it=` <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 152.01 132"><defs><linearGradient id="a" gradientUnits="userSpaceOnUse" x1="39.16" y1="775.015" x2="152.84" y2="775.015" gradientTransform="translate(0 -650)"><stop offset="0" style="stop-color:#d93025"/><stop offset="1" style="stop-color:#ea4335"/></linearGradient><linearGradient id="b" gradientUnits="userSpaceOnUse" x1="-1169.827" y1="59.741" x2="-1056.123" y2="59.741" gradientTransform="rotate(-120 -489.637 -232.003)"><stop offset="0" style="stop-color:#1e8e3e"/><stop offset="1" style="stop-color:#34a853"/></linearGradient><linearGradient id="c" gradientUnits="userSpaceOnUse" x1="56.707" y1="-664.775" x2="170.407" y2="-664.775" gradientTransform="rotate(120 -125.508 -249.005)"><stop offset="0" style="stop-color:#fbbc04"/><stop offset="1" style="stop-color:#fcc934"/></linearGradient><linearGradient xlink:href="#a" id="d" gradientUnits="userSpaceOnUse" gradientTransform="translate(-20 -678)" x1="39.16" y1="775.015" x2="152.84" y2="775.015"/><linearGradient xlink:href="#b" id="e" gradientUnits="userSpaceOnUse" gradientTransform="rotate(-120 -507.72 -240.23)" x1="-1169.827" y1="59.741" x2="-1056.123" y2="59.741"/><linearGradient xlink:href="#c" id="f" gradientUnits="userSpaceOnUse" gradientTransform="rotate(120 -127.425 -268.779)" x1="56.707" y1="-664.775" x2="170.407" y2="-664.775"/></defs><path d="M0 0v121.63C0 127.35 4.64 132 10.37 132h131.27c5.72 0 10.37-4.64 10.37-10.37L152 0Zm58.73 14.52h34.54c3.82 0 6.91 3.09 6.91 6.91 0 3.81-3.09 6.91-6.91 6.91H58.73c-3.82 0-6.91-3.09-6.91-6.91 0-3.82 3.09-6.91 6.91-6.91z" fill="#f1f3f4"/><path d="M0 0v121.63C0 127.35 4.64 132 10.37 132h131.27c5.72 0 10.37-4.64 10.37-10.37L152 0Zm58.73 14.52h34.54c3.82 0 6.91 3.09 6.91 6.91 0 3.81-3.09 6.91-6.91 6.91H58.73c-3.82 0-6.91-3.09-6.91-6.91 0-3.82 3.09-6.91 6.91-6.91z" fill="#f1f3f4"/><path d="M0 0v66.35h152V0Zm58.73 14.52h34.54c3.82 0 6.91 3.09 6.91 6.91 0 3.81-3.09 6.91-6.91 6.91H58.73c-3.82 0-6.91-3.09-6.91-6.91 0-3.82 3.09-6.91 6.91-6.91z" fill="#e8eaed"/><path style="fill:url(#d)" d="M76 55.99c-24.29 0-45.49 13.19-56.84 32.81l9.05 27.61L42.18 132h8.894L76 88.81l56.84-.01C121.49 69.18 100.29 55.99 76 55.99Z"/><path style="fill:url(#e)" d="M19.16 88.8C11.694 101.767 8.8 117.054 11.186 132h32.908z"/><path style="fill:url(#f)" d="M76 88.81 100.934 132h39.88c2.387-14.943-.508-30.225-7.974-43.19z"/><path style="fill:#f1f3f4" d="M76 88.81c-18.12 0-32.81 14.695-32.81 32.82 0 3.626.598 7.11 1.683 10.37h62.254a32.771 32.771 0 0 0 1.684-10.37c0-18.125-14.69-32.82-32.811-32.82Z"/><path d="M76 94.96a26.66 26.67 0 0 0-26.66 26.67A26.66 26.67 0 0 0 51.486 132h49.028a26.66 26.67 0 0 0 2.146-10.37A26.66 26.67 0 0 0 76 94.96Z" fill="#1a73e8"/><path opacity=".1" fill="#bdc1c6" d="M0 66.35h152v.86H0zM0 65.48h152v.86H0z"/></svg> `,at=` <svg viewBox="0 0 24 24" aria-hidden="true"> <path fill="currentColor" clip-rule="evenodd" d="M12 2C6.477 2 2 6.463 2 11.97c0 4.404 2.865 8.14 6.839 9.458.5.092.682-.216.682-.48 0-.236-.008-.864-.013-1.695-2.782.602-3.369-1.337-3.369-1.337-.454-1.151-1.11-1.458-1.11-1.458-.908-.618.069-.606.069-.606 1.003.07 1.531 1.027 1.531 1.027.892 1.524 2.341 1.084 2.91.828.092-.643.35-1.083.636-1.332-2.22-.251-4.555-1.107-4.555-4.927 0-1.088.39-1.979 1.029-2.675-.103-.252-.446-1.266.098-2.638 0 0 .84-.268 2.75 1.022A9.607 9.607 0 0 1 12 6.82c.85.004 1.705.114 2.504.336 1.909-1.29 2.747-1.022 2.747-1.022.546 1.372.202 2.386.1 2.638.64.696 1.028 1.587 1.028 2.675 0 3.83-2.339 4.673-4.566 4.92.359.307.678.915.678 1.846 0 1.332-.012 2.407-.012 2.734 0 .267.18.577.688.48 3.97-1.32 6.833-5.054 6.833-9.458C22 6.463 17.522 2 12 2Z"></path> </svg> `,ct=` <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor"> <path stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l7.5-7.5 7.5 7.5m-15 6l7.5-7.5 7.5 7.5" /> </svg> `,lt=` <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor"> <path stroke-linecap="round" stroke-linejoin="round" d="M13.5 16.875h3.375m0 0h3.375m-3.375 0V13.5m0 3.375v3.375M6 10.5h2.25a2.25 2.25 0 002.25-2.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v2.25A2.25 2.25 0 006 10.5zm0 9.75h2.25A2.25 2.25 0 0010.5 18v-2.25a2.25 2.25 0 00-2.25-2.25H6a2.25 2.25 0 00-2.25 2.25V18A2.25 2.25 0 006 20.25zm9.75-9.75H18a2.25 2.25 0 002.25-2.25V6A2.25 2.25 0 0018 3.75h-2.25A2.25 2.25 0 0013.5 6v2.25a2.25 2.25 0 002.25 2.25z" /> </svg> `,st=` <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor"> <path stroke-linecap="round" stroke-linejoin="round" d="M12 3v2.25m6.364.386l-1.591 1.591M21 12h-2.25m-.386 6.364l-1.591-1.591M12 18.75V21m-4.773-4.227l-1.591 1.591M5.25 12H3m4.227-4.773L5.636 5.636M15.75 12a3.75 3.75 0 11-7.5 0 3.75 3.75 0 017.5 0z" /> </svg> `,pt=` <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor"> <path stroke-linecap="round" stroke-linejoin="round" d="M21.752 15.002A9.718 9.718 0 0118 15.75c-5.385 0-9.75-4.365-9.75-9.75 0-1.33.266-2.597.748-3.752A9.753 9.753 0 003 11.25C3 16.635 7.365 21 12.75 21a9.753 9.753 0 009.002-5.998z" /> </svg> `});var se={};var dt=y(()=>{"use strict";q();I();$("#Top .site-nav .tools > .top").addClass("v2p-hover-btn");{let o=$("#Rightbar .light-toggle").addClass("v2p-color-mode-toggle"),t=o.find("> img");t.prop("alt")==="Light"&&(o.prop("title","\u4F7F\u7528\u6DF1\u8272\u4E3B\u9898"),t.replaceWith(pt)),t.prop("alt")==="Dark"&&(o.prop("title","\u4F7F\u7528\u6D45\u8272\u4E3B\u9898"),t.replaceWith(st))}{let o=$(` <div class="v2p-footer"> <div class="v2p-footer-text">\u6269\u5C55\u81EA V2EX Polish </div> <div class="v2p-footer-links"> <a class="v2p-footer-link v2p-hover-btn" href="${"https://v2p.app"}" target="_blank">\u63D2\u4EF6\u4E3B\u9875</a> <a class="v2p-footer-link v2p-hover-btn" href="${"https://github.com/coolpace/V2EX_Polish/discussions/1"}" target="_blank">\u95EE\u9898\u53CD\u9988</a> </div> <div class="v2p-footer-brand"> <span> <a href="https://chrome.google.com/webstore/detail/v2ex-polish/onnepejgdiojhiflfoemillegpgpabdm" target="_blank" title="Chrome \u5E94\u7528\u5546\u5E97" > ${it} </a> </span> <span> <a href="https://github.com/coolpace/V2EX_Polish" target="_blank" title="GitHub \u4ED3\u5E93" > ${at} </a> </span> </div> </div> `);$(`<div class="v2p-footer-logo">${co}</div>`).prependTo(o),$("#Bottom .content").append(o)}});function vt(o){return typeof o=="object"&&o!==null}function Ao(o,t){let n={};for(let e in o)vt(o[e])&&vt(t[e])?n[e]=Ao(o[e],t[e]):Reflect.has(t,e)?n[e]=t[e]:n[e]=o[e];for(let e in t)Reflect.has(o,e)||(n[e]=t[e]);return n}var ft=y(()=>{"use strict"});function mt(){let o=window.navigator.userAgent.toLowerCase(),t=/(macintosh|macintel|macppc|mac68k|macos)/i,n=/(win32|win64|windows|wince)/i,e=/(iphone|ipad|ipod)/i,r=null;return t.test(o)?r="macos":e.test(o)?r="ios":n.test(o)?r="windows":o.includes("android")?r="android":o.includes("linux")&&(r="linux"),r}function lo(o,{format:t="YMD"}={}){let n=new Date(o.toString().length===10?o*1e3:o),e=n.getFullYear().toString(),r=(n.getMonth()+1).toString().padStart(2,"0"),i=n.getDate().toString().padStart(2,"0"),c=`${e}-${r}-${i}`;if(t==="YMDHMS"){let a=n.getHours().toString().padStart(2,"0"),l=n.getMinutes().toString().padStart(2,"0"),s=n.getSeconds().toString().padStart(2,"0");return`${c} ${a}:${l}:${s}`}return c}function so(){return new Promise(o=>{if(typeof chrome>"u"||typeof chrome.storage>"u")return o(void 0);chrome.storage.sync.get("api",t=>{o(t["api"]?.pat)})})}function _(){return new Promise(o=>{if(typeof chrome>"u"||typeof chrome.storage>"u")return o(io);chrome.storage.sync.get("options",t=>{let n=t["options"];o(n?Ao(io,n):io)})})}function po(o){return o.replace(/[<>&"'']/g,t=>{switch(t){case"<":return"<";case">":return">";case"&":return"&";case'"':return""";case"'":return"'";default:return t}})}var B=y(()=>{"use strict";q();ft()});function E(o){let{children:t,className:n="",type:e="button",tag:r="button"}=o,i=$(`<${r} class="normal button ${n}">${t}</${r}>`);return r==="button"&&i.prop("type",e),i}var vo=y(()=>{"use strict"});function fo(o){let{root:t,title:n,onOpen:e,onClose:r,onMount:i}=o,c=$('<div class="v2p-model-mask">'),a=$('<div class="v2p-model-content">'),l=E({children:"\u5173\u95ED<kbd>Esc</kbd>",className:"v2p-model-close-btn"}),s=$(`<div class="v2p-model-title">${n??""}</div>`),v=$('<div class="v2p-model-actions">').append(l),p=$('<div class="v2p-model-header">').append(s,v),d=$('<div class="v2p-model-main">').append(p,a).on("click",w=>w.stopPropagation()),m=c.append(d).hide(),f={$mask:c,$main:d,$container:m,$title:s,$actions:v,$content:a},b=!1,u=()=>{h()},g=w=>{w.key==="Escape"&&h()},h=()=>{c.off("click",u),$(document).off("keydown",g),b=!1,m.fadeOut("fast"),document.body.classList.remove("v2p-modal-open"),r?.(f)},x=()=>{setTimeout(()=>{b||(c.on("click",u),$(document).on("keydown",g),b=!0)}),m.fadeIn("fast"),document.body.classList.add("v2p-modal-open"),e?.(f)};return l.on("click",h),i?.(f),t&&t.append(m),{...f,open:x,close:h}}var Ro=y(()=>{"use strict";vo()});async function ve(o,t){return(await fetch(o,t)).json()}function bt(o,t){return ve(`${de}/members/show.json?username=${o}`,t)}async function ht(o,t){let n=await so(),e=await fetch(o,{...t,headers:{Authorization:n?`Bearer ${n}`:"",...t?.headers}}),r=e.headers.get("X-Rate-Limit-Limit"),i=e.headers.get("X-Rate-Limit-Reset"),c=e.headers.get("X-Rate-Limit-Remaining");chrome.storage.sync.get("api",l=>{let s={pat:l["api"]?.pat,limit:r?Number(r):void 0,reset:i?Number(i):void 0,remaining:c?Number(c):void 0};chrome.storage.sync.set({["api"]:s})});let a=await e.json();if(typeof a.success=="boolean"&&!a.success)throw new Error(a.message,{cause:a});return a}function xt(o,t){return ht(`${gt}/topics/${o}`,{method:"GET",...t})}function yt(o,t){return ht(`${gt}/topics/${o}/replies`,{method:"GET",...t})}async function wt(o){let t=new FormData;t.append("image",o);let n=Math.floor(Math.random()*_o.length),e=_o[n],r=await fetch("https://api.imgur.com/3/upload",{method:"POST",headers:{Authorization:`Client-ID ${e}`},body:t});if(r.ok){let i=await r.json();if(i.success)return i.data.link}throw new Error("\u4E0A\u4F20\u5931\u8D25")}var ut,de,gt,fn,mo=y(()=>{"use strict";q();B();ut=window.location.origin.includes("v2ex.com")?window.location.origin:"https://www.v2ex.com",de=`${ut}/api`,gt=`${ut}/api/v2`;fn=`${Jo}`});var kt,$t,Ct,zo,H,P,Z,T,un,C,O,L=y(()=>{"use strict";kt=$('#Top .tools > a[href^="/member"]').text(),$t=$('#Main > .box > .header > small > a[href^="/member"]').text(),Ct=$("#Main #Tabs ~ .cell.item, #Main #TopicsNode > .cell, #Main .cell.item:has(.item_title > .topic-link)"),zo=$("#Main .box:has(.topic_content)"),H=$('#Main .box:has(.cell[id^="r_"])'),P=H.find('.cell[id^="r_"]'),Z=P.find("> table > tbody > tr"),T=$("#reply-box"),un=$("#Wrapper").hasClass("Night")?"dark":"light",C=document.querySelector("#reply_content"),O=Z.map((o,t)=>{let n=P[o].id,e=$(t),r=e.find("> td:nth-child(3)"),i=e.find("> td:last-of-type > .fr").find("> .thank_area").hasClass("thanked"),c=r.find("> strong > a"),a=c.text(),l=c.prop("href"),s=e.find(".avatar").prop("src"),v=r.find("> .reply_content").text(),p=Number(r.find("span.small").text()),d=r.find("span.no").text(),m=Array.from(v.matchAll(/@([a-zA-Z0-9]+)/g)),f=m.length>0?m.map(([,g])=>g):void 0,b=Array.from(v.matchAll(/#(\d+)/g)),u=b.length>0?b.map(([,g])=>g):void 0;return{id:n,memberName:a,memberLink:l,memberAvatar:s,content:v,likes:p,floor:d,index:o,refMemberNames:f,refFloors:u,thanked:i}}).get()});function Mt(o){if("cause"in o){let t=o.cause;if("success"in t&&"message"in t)return typeof t.success=="boolean"&&!t.success&&typeof t.message=="string"}return!1}function j(){C instanceof HTMLTextAreaElement&&C.focus()}function K(o){if(C instanceof HTMLTextAreaElement){let t=C.selectionStart,n=C.selectionEnd,e=C.value.substring(0,t),r=C.value.substring(n,C.value.length);C.value=`${e}${o}${r}`,j(),C.selectionStart=C.selectionEnd=t+o.length}}var uo=y(()=>{"use strict";L()});async function Tt(){let o=await _(),t=await so(),n=null,e=E({children:"\u8FDB\u5165\u4E3B\u9898",className:"special",tag:"a"});o.openInNewTab&&e.prop("target","_blank");let r=fo({root:$(document.body),onMount:({$actions:c})=>{c.prepend(e)},onClose:({$title:c,$content:a})=>{c.empty(),a.empty(),n?.abort()}}),i=new Map;Ct.each((c,a)=>{let l=$(a),s=l.find(".item_title");$('<button class="v2p-topic-preview-btn">\u9884\u89C8</button>').on("click",()=>{let v=l.find(".topic-link").attr("href"),d=v?.match(/\/(\d+)#/)?.at(1);if(d){r.open(),e.prop("href",v);let m=s.find(".topic-link").text(),f=$(`<a class="v2p-topic-preview-title-link" title="${m}">${m}</a>`);r.$title.empty().append(f),t?(async()=>{let b=i.get(d);if(!b||Date.now()-b.cacheTime>1e3*60*10)try{n=new AbortController,r.$content.empty().append(` <div class="v2p-model-loading"> <div class="v2p-icon-loading">${rt}</div> </div> `);let u=[xt(d,{signal:n.signal}),yt(d)],[{result:g},{result:h}]=await Promise.all(u);f.prop("href",g.url),o.openInNewTab&&f.prop("target","_blank");let x={topic:g,topicReplies:h,cacheTime:Date.now()};i.set(d,x),b=x}catch(u){if(Mt(u)){let g=u.cause.message;(g==="Token expired"||g==="Invalid token")&&r.$content.empty().append(`<div>${u.cause.message}</div>`)}}if(b){let{topic:u,topicReplies:g}=b,h=$('<div class="v2p-topic-preview">'),x=$(` <div class="v2p-tp-info"> <a class="v2p-tp-member" href="${u.member.url}"> <img class="v2p-tp-avatar" src="${u.member.avatar}"> <span>${u.member.username}</span> </a> <span> ${lo(u.created,{format:"YMDHMS"})} </span> <span>${u.replies} \u6761\u56DE\u590D</span> </div> `);if(h.append(x),u.content_rendered?h.append(`<div class="v2p-topic-preview-content">${u.content_rendered}</div>`):h.append(` <div class="v2p-empty-content"> <div class="v2p-text-emoji">\xAF\\_(\u30C4)_/\xAF</div> <p>\u8BE5\u4E3B\u9898\u6CA1\u6709\u6B63\u6587\u5185\u5BB9</p> </div> `),g.length>0){let w=$("<div>"),k=u.member.username;g.forEach(A=>{w.append(` <div class="v2p-topic-reply"> <div class="v2p-topic-reply-member"> <a href="${A.member.url}"> <img class="v2p-topic-reply-avatar" src="${A.member.avatar}"> <span>${A.member.username}</span> <span style="display: ${k===A.member.username?"unset":"none"};"> <span class="badge op mini">OP</span> </span> </a>\uFF1A </div> <div class="v2p-topic-reply-content">${po(A.content)}</div> </div> `)}),$('<div class="v2p-topic-reply-box">').append(w.html()).append('<div class="v2p-more-reply-tip">\u5728\u4E3B\u9898\u5185\u67E5\u770B\u5B8C\u6574\u8BC4\u8BBA...</div>').appendTo(h)}r.$content.empty().append(h)}})():r.$content.empty().append(` <div class="v2p-no-pat"> <div class="v2p-no-pat-title">\u60A8\u9700\u8981\u5148\u8BBE\u7F6E PAT \u624D\u80FD\u83B7\u53D6\u9884\u89C8\u5185\u5BB9\u3002</div> <div class="v2p-no-pat-desc">\u8BF7\u524D\u5F80 <span class="v2p-no-pat-block"><span class="v2p-icon-logo">${co}</span> <span style="margin: 0 5px;">></span> \u8BBE\u7F6E</span> \u8FDB\u884C\u8BBE\u7F6E\u3002</div> </div> `)}}).appendTo(s)})}var _t=y(()=>{"use strict";vo();Ro();q();I();mo();B();L();uo()});var fe={};var At=y(()=>{"use strict";B();_t();(async()=>($("#Main .tab").addClass("v2p-hover-btn"),(await _()).openInNewTab&&$('#Main .topic-link, .item_hot_topic_title > a, .item_node, a[href="/write"]').prop("target","_blank"),await Tt()))()});function ho(o){return o.split("-")[1]}function Et(o){return o==="y"?"height":"width"}function F(o){return o.split("-")[0]}function xo(o){return["top","bottom"].includes(F(o))?"x":"y"}function Rt(o,t,n){let{reference:e,floating:r}=o,i=e.x+e.width/2-r.width/2,c=e.y+e.height/2-r.height/2,a=xo(t),l=Et(a),s=e[l]/2-r[l]/2,v=F(t),p=a==="x",d;switch(v){case"top":d={x:i,y:e.y-r.height};break;case"bottom":d={x:i,y:e.y+e.height};break;case"right":d={x:e.x+e.width,y:c};break;case"left":d={x:e.x-r.width,y:c};break;default:d={x:e.x,y:e.y}}switch(ho(t)){case"start":d[a]-=s*(n&&p?-1:1);break;case"end":d[a]+=s*(n&&p?-1:1);break}return d}function me(o){return{top:0,right:0,bottom:0,left:0,...o}}function ue(o){return typeof o!="number"?me(o):{top:o,right:o,bottom:o,left:o}}function go(o){return{...o,top:o.y,left:o.x,right:o.x+o.width,bottom:o.y+o.height}}async function Po(o,t){var n;t===void 0&&(t={});let{x:e,y:r,platform:i,rects:c,elements:a,strategy:l}=o,{boundary:s="clippingAncestors",rootBoundary:v="viewport",elementContext:p="floating",altBoundary:d=!1,padding:m=0}=t,f=ue(m),u=a[d?p==="floating"?"reference":"floating":p],g=go(await i.getClippingRect({element:(n=await(i.isElement==null?void 0:i.isElement(u)))==null||n?u:u.contextElement||await(i.getDocumentElement==null?void 0:i.getDocumentElement(a.floating)),boundary:s,rootBoundary:v,strategy:l})),h=p==="floating"?{...c.floating,x:e,y:r}:c.reference,x=await(i.getOffsetParent==null?void 0:i.getOffsetParent(a.floating)),w=await(i.isElement==null?void 0:i.isElement(x))?await(i.getScale==null?void 0:i.getScale(x))||{x:1,y:1}:{x:1,y:1},k=go(i.convertOffsetParentRelativeRectToViewportRelativeRect?await i.convertOffsetParentRelativeRectToViewportRelativeRect({rect:h,offsetParent:x,strategy:l}):h);return{top:(g.top-k.top+f.top)/w.y,bottom:(k.bottom-g.bottom+f.bottom)/w.y,left:(g.left-k.left+f.left)/w.x,right:(k.right-g.right+f.right)/w.x}}function zt(o,t,n){return be(o,ge(t,n))}function bo(o){return o.replace(/left|right|bottom|top/g,t=>he[t])}function xe(o,t,n){n===void 0&&(n=!1);let e=ho(o),r=xo(o),i=Et(r),c=r==="x"?e===(n?"end":"start")?"right":"left":e==="start"?"bottom":"top";return t.reference[i]>t.floating[i]&&(c=bo(c)),{main:c,cross:bo(c)}}function Eo(o){return o.replace(/start|end/g,t=>ye[t])}function we(o){let t=bo(o);return[Eo(o),t,Eo(t)]}function ke(o,t,n){let e=["left","right"],r=["right","left"],i=["top","bottom"],c=["bottom","top"];switch(o){case"top":case"bottom":return n?t?r:e:t?e:r;case"left":case"right":return t?i:c;default:return[]}}function $e(o,t,n,e){let r=ho(o),i=ke(F(o),n==="start",e);return r&&(i=i.map(c=>c+"-"+r),t&&(i=i.concat(i.map(Eo)))),i}async function Ce(o,t){let{placement:n,platform:e,elements:r}=o,i=await(e.isRTL==null?void 0:e.isRTL(r.floating)),c=F(n),a=ho(n),l=xo(n)==="x",s=["left","top"].includes(c)?-1:1,v=i&&l?-1:1,p=typeof t=="function"?t(o):t,{mainAxis:d,crossAxis:m,alignmentAxis:f}=typeof p=="number"?{mainAxis:p,crossAxis:0,alignmentAxis:null}:{mainAxis:0,crossAxis:0,alignmentAxis:null,...p};return a&&typeof f=="number"&&(m=a==="end"?f*-1:f),l?{x:m*v,y:d*s}:{x:d*s,y:m*v}}function Me(o){return o==="x"?"y":"x"}var Pt,ge,be,he,ye,Oo,Lo,So,No=y(()=>{Pt=async(o,t,n)=>{let{placement:e="bottom",strategy:r="absolute",middleware:i=[],platform:c}=n,a=i.filter(Boolean),l=await(c.isRTL==null?void 0:c.isRTL(t)),s=await c.getElementRects({reference:o,floating:t,strategy:r}),{x:v,y:p}=Rt(s,e,l),d=e,m={},f=0;for(let b=0;b<a.length;b++){let{name:u,fn:g}=a[b],{x:h,y:x,data:w,reset:k}=await g({x:v,y:p,initialPlacement:e,placement:d,strategy:r,middlewareData:m,rects:s,platform:c,elements:{reference:o,floating:t}});if(v=h??v,p=x??p,m={...m,[u]:{...m[u],...w}},k&&f<=50){f++,typeof k=="object"&&(k.placement&&(d=k.placement),k.rects&&(s=k.rects===!0?await c.getElementRects({reference:o,floating:t,strategy:r}):k.rects),{x:v,y:p}=Rt(s,d,l)),b=-1;continue}}return{x:v,y:p,placement:d,strategy:r,middlewareData:m}};ge=Math.min,be=Math.max;he={left:"right",right:"left",bottom:"top",top:"bottom"};ye={start:"end",end:"start"};Oo=function(o){return o===void 0&&(o={}),{name:"flip",options:o,async fn(t){var n;let{placement:e,middlewareData:r,rects:i,initialPlacement:c,platform:a,elements:l}=t,{mainAxis:s=!0,crossAxis:v=!0,fallbackPlacements:p,fallbackStrategy:d="bestFit",fallbackAxisSideDirection:m="none",flipAlignment:f=!0,...b}=o,u=F(e),g=F(c)===c,h=await(a.isRTL==null?void 0:a.isRTL(l.floating)),x=p||(g||!f?[bo(c)]:we(c));!p&&m!=="none"&&x.push(...$e(c,f,m,h));let w=[c,...x],k=await Po(t,b),A=[],G=((n=r.flip)==null?void 0:n.overflows)||[];if(s&&A.push(k[u]),v){let{main:V,cross:ro}=xe(e,i,h);A.push(k[V],k[ro])}if(G=[...G,{placement:e,overflows:A}],!A.every(V=>V<=0)){var Vo,Wo;let V=(((Vo=r.flip)==null?void 0:Vo.index)||0)+1,ro=w[V];if(ro)return{data:{index:V,overflows:G},reset:{placement:ro}};let J=(Wo=G.filter(W=>W.overflows[0]<=0).sort((W,U)=>W.overflows[1]-U.overflows[1])[0])==null?void 0:Wo.placement;if(!J)switch(d){case"bestFit":{var Uo;let W=(Uo=G.map(U=>[U.placement,U.overflows.filter(Q=>Q>0).reduce((Q,ie)=>Q+ie,0)]).sort((U,Q)=>U[1]-Q[1])[0])==null?void 0:Uo[0];W&&(J=W);break}case"initialPlacement":J=c;break}if(e!==J)return{reset:{placement:J}}}return{}}}};Lo=function(o){return o===void 0&&(o=0),{name:"offset",options:o,async fn(t){let{x:n,y:e}=t,r=await Ce(t,o);return{x:n+r.x,y:e+r.y,data:r}}}};So=function(o){return o===void 0&&(o={}),{name:"shift",options:o,async fn(t){let{x:n,y:e,placement:r}=t,{mainAxis:i=!0,crossAxis:c=!1,limiter:a={fn:u=>{let{x:g,y:h}=u;return{x:g,y:h}}},...l}=o,s={x:n,y:e},v=await Po(t,l),p=xo(F(r)),d=Me(p),m=s[p],f=s[d];if(i){let u=p==="y"?"top":"left",g=p==="y"?"bottom":"right",h=m+v[u],x=m-v[g];m=zt(h,m,x)}if(c){let u=d==="y"?"top":"left",g=d==="y"?"bottom":"right",h=f+v[u],x=f-v[g];f=zt(h,f,x)}let b=a.fn({...t,[p]:m,[d]:f});return{...b,data:{x:b.x-n,y:b.y-e}}}}}});function M(o){var t;return((t=o.ownerDocument)==null?void 0:t.defaultView)||window}function R(o){return M(o).getComputedStyle(o)}function It(o){let t=R(o),n=parseFloat(t.width),e=parseFloat(t.height),r=o.offsetWidth,i=o.offsetHeight,c=wo(n)!==r||wo(e)!==i;return c&&(n=r,e=i),{width:n,height:e,fallback:c}}function S(o){return Ht(o)?(o.nodeName||"").toLowerCase():""}function Bt(){if(yo)return yo;let o=navigator.userAgentData;return o&&Array.isArray(o.brands)?(yo=o.brands.map(t=>t.brand+"/"+t.version).join(" "),yo):navigator.userAgent}function z(o){return o instanceof M(o).HTMLElement}function N(o){return o instanceof M(o).Element}function Ht(o){return o instanceof M(o).Node}function Lt(o){if(typeof ShadowRoot>"u")return!1;let t=M(o).ShadowRoot;return o instanceof t||o instanceof ShadowRoot}function ko(o){let{overflow:t,overflowX:n,overflowY:e,display:r}=R(o);return/auto|scroll|overlay|hidden|clip/.test(t+e+n)&&!["inline","contents"].includes(r)}function Te(o){return["table","td","th"].includes(S(o))}function Do(o){let t=/firefox/i.test(Bt()),n=R(o),e=n.backdropFilter||n.WebkitBackdropFilter;return n.transform!=="none"||n.perspective!=="none"||(e?e!=="none":!1)||t&&n.willChange==="filter"||t&&(n.filter?n.filter!=="none":!1)||["transform","perspective"].some(r=>n.willChange.includes(r))||["paint","layout","strict","content"].some(r=>{let i=n.contain;return i!=null?i.includes(r):!1})}function Io(){return/^((?!chrome|android).)*safari/i.test(Bt())}function Bo(o){return["html","body","#document"].includes(S(o))}function jt(o){return N(o)?o:o.contextElement}function X(o){let t=jt(o);if(!z(t))return Ft;let n=t.getBoundingClientRect(),{width:e,height:r,fallback:i}=It(t),c=(i?wo(n.width):n.width)/e,a=(i?wo(n.height):n.height)/r;return(!c||!Number.isFinite(c))&&(c=1),(!a||!Number.isFinite(a))&&(a=1),{x:c,y:a}}function to(o,t,n,e){var r,i;t===void 0&&(t=!1),n===void 0&&(n=!1);let c=o.getBoundingClientRect(),a=jt(o),l=Ft;t&&(e?N(e)&&(l=X(e)):l=X(o));let s=a?M(a):window,v=Io()&&n,p=(c.left+(v&&((r=s.visualViewport)==null?void 0:r.offsetLeft)||0))/l.x,d=(c.top+(v&&((i=s.visualViewport)==null?void 0:i.offsetTop)||0))/l.y,m=c.width/l.x,f=c.height/l.y;if(a){let b=M(a),u=e&&N(e)?M(e):e,g=b.frameElement;for(;g&&e&&u!==b;){let h=X(g),x=g.getBoundingClientRect(),w=getComputedStyle(g);x.x+=(g.clientLeft+parseFloat(w.paddingLeft))*h.x,x.y+=(g.clientTop+parseFloat(w.paddingTop))*h.y,p*=h.x,d*=h.y,m*=h.x,f*=h.y,p+=x.x,d+=x.y,g=M(g).frameElement}}return{width:m,height:f,top:d,right:p+m,bottom:d+f,left:p,x:p,y:d}}function D(o){return((Ht(o)?o.ownerDocument:o.document)||window.document).documentElement}function $o(o){return N(o)?{scrollLeft:o.scrollLeft,scrollTop:o.scrollTop}:{scrollLeft:o.pageXOffset,scrollTop:o.pageYOffset}}function _e(o){let{rect:t,offsetParent:n,strategy:e}=o,r=z(n),i=D(n);if(n===i)return t;let c={scrollLeft:0,scrollTop:0},a={x:1,y:1},l={x:0,y:0};if((r||!r&&e!=="fixed")&&((S(n)!=="body"||ko(i))&&(c=$o(n)),z(n))){let s=to(n);a=X(n),l.x=s.x+n.clientLeft,l.y=s.y+n.clientTop}return{width:t.width*a.x,height:t.height*a.y,x:t.x*a.x-c.scrollLeft*a.x+l.x,y:t.y*a.y-c.scrollTop*a.y+l.y}}function Vt(o){return to(D(o)).left+$o(o).scrollLeft}function Ae(o){let t=D(o),n=$o(o),e=o.ownerDocument.body,r=oo(t.scrollWidth,t.clientWidth,e.scrollWidth,e.clientWidth),i=oo(t.scrollHeight,t.clientHeight,e.scrollHeight,e.clientHeight),c=-n.scrollLeft+Vt(o),a=-n.scrollTop;return R(e).direction==="rtl"&&(c+=oo(t.clientWidth,e.clientWidth)-r),{width:r,height:i,x:c,y:a}}function eo(o){if(S(o)==="html")return o;let t=o.assignedSlot||o.parentNode||Lt(o)&&o.host||D(o);return Lt(t)?t.host:t}function Wt(o){let t=eo(o);return Bo(t)?t.ownerDocument.body:z(t)&&ko(t)?t:Wt(t)}function Ut(o,t){var n;t===void 0&&(t=[]);let e=Wt(o),r=e===((n=o.ownerDocument)==null?void 0:n.body),i=M(e);return r?t.concat(i,i.visualViewport||[],ko(e)?e:[]):t.concat(e,Ut(e))}function Re(o,t){let n=M(o),e=D(o),r=n.visualViewport,i=e.clientWidth,c=e.clientHeight,a=0,l=0;if(r){i=r.width,c=r.height;let s=Io();(!s||s&&t==="fixed")&&(a=r.offsetLeft,l=r.offsetTop)}return{width:i,height:c,x:a,y:l}}function ze(o,t){let n=to(o,!0,t==="fixed"),e=n.top+o.clientTop,r=n.left+o.clientLeft,i=z(o)?X(o):{x:1,y:1},c=o.clientWidth*i.x,a=o.clientHeight*i.y,l=r*i.x,s=e*i.y;return{width:c,height:a,x:l,y:s}}function St(o,t,n){let e;if(t==="viewport")e=Re(o,n);else if(t==="document")e=Ae(D(o));else if(N(t))e=ze(t,n);else{let c={...t};if(Io()){var r,i;let a=M(o);c.x-=((r=a.visualViewport)==null?void 0:r.offsetLeft)||0,c.y-=((i=a.visualViewport)==null?void 0:i.offsetTop)||0}e=c}return go(e)}function Ee(o,t){let n=t.get(o);if(n)return n;let e=Ut(o).filter(a=>N(a)&&S(a)!=="body"),r=null,i=R(o).position==="fixed",c=i?eo(o):o;for(;N(c)&&!Bo(c);){let a=R(c),l=Do(c);a.position==="fixed"?r=null:(i?!l&&!r:!l&&a.position==="static"&&!!r&&["absolute","fixed"].includes(r.position))?e=e.filter(p=>p!==c):r=a,c=eo(c)}return t.set(o,e),e}function Pe(o){let{element:t,boundary:n,rootBoundary:e,strategy:r}=o,c=[...n==="clippingAncestors"?Ee(t,this._c):[].concat(n),e],a=c[0],l=c.reduce((s,v)=>{let p=St(t,v,r);return s.top=oo(p.top,s.top),s.right=Ot(p.right,s.right),s.bottom=Ot(p.bottom,s.bottom),s.left=oo(p.left,s.left),s},St(t,a,r));return{width:l.right-l.left,height:l.bottom-l.top,x:l.left,y:l.top}}function Oe(o){return z(o)?It(o):o.getBoundingClientRect()}function Nt(o,t){return!z(o)||R(o).position==="fixed"?null:t?t(o):o.offsetParent}function Le(o){let t=eo(o);for(;z(t)&&!Bo(t);){if(Do(t))return t;t=eo(t)}return null}function Dt(o,t){let n=M(o),e=Nt(o,t);for(;e&&Te(e)&&R(e).position==="static";)e=Nt(e,t);return e&&(S(e)==="html"||S(e)==="body"&&R(e).position==="static"&&!Do(e))?n:e||Le(o)||n}function Se(o,t,n){let e=z(t),r=D(t),i=to(o,!0,n==="fixed",t),c={scrollLeft:0,scrollTop:0},a={x:0,y:0};if(e||!e&&n!=="fixed")if((S(t)!=="body"||ko(r))&&(c=$o(t)),z(t)){let l=to(t,!0);a.x=l.x+t.clientLeft,a.y=l.y+t.clientTop}else r&&(a.x=Vt(r));return{x:i.left+c.scrollLeft-a.x,y:i.top+c.scrollTop-a.y,width:i.width,height:i.height}}var Ot,oo,wo,yo,Ft,Ne,qt,Xt=y(()=>{No();No();Ot=Math.min,oo=Math.max,wo=Math.round;Ft={x:1,y:1};Ne={getClippingRect:Pe,convertOffsetParentRelativeRectToViewportRelativeRect:_e,isElement:N,getDimensions:Oe,getOffsetParent:Dt,getDocumentElement:D,getScale:X,async getElementRects(o){let{reference:t,floating:n,strategy:e}=o,r=this.getOffsetParent||Dt,i=this.getDimensions;return{reference:Se(t,await r(n),e),floating:{x:0,y:0,...await i(n)}}},getClientRects:o=>Array.from(o.getClientRects()),isRTL:o=>R(o).direction==="rtl"},qt=(o,t,n)=>{let e=new Map,r={platform:Ne,...n},i={...r.platform,_c:e};return Pt(o,t,{...r,platform:i})}});function Co(o){let{message:t,duration:n=3e3}=o;$(".v2p-toast").length>0&&$(".v2p-toast").remove();let e=$(`<div class="v2p-toast">${t}</div>`).hide();$(document.body).append(e),e.fadeIn("fast"),setTimeout(()=>{e.fadeOut("fast",()=>{e.remove()})},n)}var Ho=y(()=>{"use strict"});function no(o){let{root:t,trigger:n,content:e,options:r,onOpen:i,onClose:c}=o,a=$('<div class="v2p-popup-content">'),l=$('<div class="v2p-popup" tabindex="0">').css("visibility","hidden").append(a);t.append(l),e&&l.append(e);let s=l.get(0),v=f=>{$(f.target).closest(s).length===0&&p()},p=()=>{l.css("visibility","hidden"),$(document).off("click",v),c?.(),m.onClose?.()},d=f=>{if(!f)return;setTimeout(()=>{$(document).on("click",v)});let b=f.get(0);qt(b,s,{placement:"bottom-start",middleware:[Lo({mainAxis:10,crossAxis:-4}),Oo(),So({padding:8})],...r}).then(({x:u,y:g})=>{Object.assign(s.style,{left:`${u}px`,top:`${g}px`}),l.css("visibility","visible")}).catch(()=>{p(),Co({message:"Popup \u6E32\u67D3\u5931\u8D25"})}),i?.()},m={$content:a,open:f=>{d(f)},close:p};return n?.on("click",()=>{s.style.visibility!=="hidden"?p():d(n)}),m}var jo=y(()=>{"use strict";Xt();Ho()});function De(o,t,n){let e=null,r=$(o).find(".avatar");r.on("click",()=>{t.close(),t.open(r);let i=$(` <div class="v2p-member-card"> <div class="v2p-info"> <div class="v2p-info-left"> <div class="v2p-avatar-box"></div> </div> <div class="v2p-info-right"> <div class="v2p-username v2p-loading"></div> <div class="v2p-no v2p-loading"></div> <div class="v2p-created-date v2p-loading"></div> </div> </div> </div> `);t.$content.empty().append(i),(async()=>{let c=n.memberName;if(!Fo.has(c)){e=new AbortController,t.onClose=()=>{e?.abort()};try{let l=await bt(c,{signal:e.signal});Fo.set(c,l)}catch(l){return l&&typeof l=="object"&&"name"in l&&l.name!=="AbortError"&&i.html("<span>\u83B7\u53D6\u7528\u6237\u4FE1\u606F\u5931\u8D25</span>"),null}}let a=Fo.get(c);if(a){i.find(".v2p-avatar-box").removeClass("v2p-loading").append(`<img class="v2p-avatar" src="${a.avatar_large}">`);let l=await _(),s=$(`<a href="${a.url}">${a.username}</a>`);l.openInNewTab&&s.prop("target","_blank"),i.find(".v2p-username").removeClass("v2p-loading").append(s),i.find(".v2p-no").removeClass("v2p-loading").text(`V2EX \u7B2C ${a.id} \u53F7\u4F1A\u5458`),i.find(".v2p-created-date").removeClass("v2p-loading").text(`\u52A0\u5165\u4E8E ${lo(a.created)}`),a.bio&&a.bio.trim().length>0&&i.append(`<div class="v2p-bio">${a.bio}</div>`)}})()})}function Gt(o){let t=$(o);if(t.find(".v2p-reply-content").length>0)return;let n=t.find(".reply_content");if((n.height()??0)+To>=Yo){let i={maxHeight:`${To}px`,overflow:"hidden",paddingBottom:"0"},c=$('<div class="v2p-reply-content v2p-collapsed">').css(i),a=E({children:"\u5C55\u5F00\u56DE\u590D",className:"v2p-expand-btn"}),l=()=>{let s=c.hasClass("v2p-collapsed");c.toggleClass("v2p-collapsed").css(s?{maxHeight:"none",overflow:"auto",paddingBottom:"40px"}:i),a.html(s?"\u6536\u8D77\u56DE\u590D":"\u5C55\u5F00\u56DE\u590D")};a.on("click",()=>{l()}),c.append(n.clone()).replaceAll(n).append(a)}}function Ie(){let o=O.filter(({likes:e})=>e>0).sort((e,r)=>r.likes-e.likes),t=o.length;if(t<=0)return;let n=fo({root:H,title:`\u672C\u9875\u5171\u6709 ${o.length} \u6761\u70ED\u95E8\u56DE\u590D`,onMount:({$content:e})=>{let r=$("<div>");o.forEach(({index:i,refMemberNames:c})=>{let a=P.eq(i).clone();a.find(".v2p-controls > a:has(.v2p-control-reply)").remove(),a.find(".no").css("pointer-events","none");let l=c?.at(0);if(l){let s=O.findLast((v,p)=>p<i&&v.memberName===l);if(s){let v=$(` <div class="v2p-topic-reply-ref"> <div class="v2p-topic-reply"> <div class="v2p-topic-reply-member"> <a href="${s.memberAvatar}"> <img class="v2p-topic-reply-avatar" src="${s.memberAvatar}"> <span>${s.memberName}</span> </a>\uFF1A </div> <div class="v2p-topic-reply-content">${po(s.content)}</div> </div> </div> `);a.prepend(v)}}r.append(a)}),e.css({padding:"0 20px"}).append(r.html())},onOpen:({$container:e})=>{e.find('.cell[id^="r_"]').each((r,i)=>{Gt(i)})}});{let e=H.find(".cell:first-of-type > span.gray"),r=e.text(),c=`<span class="count-text">${r.substring(0,r.indexOf("\u56DE\u590D")+2)}</span><span class="v2p-dot">\xB7</span>${t} \u6761\u70ED\u95E8\u56DE\u590D`,a=$(`<span class="v2p-tool v2p-hover-btn"><span class="v2p-tool-icon">${Y}</span>\u70ED\u95E8\u56DE\u590D</span>`);a.on("click",()=>{n.open()}),$(".v2p-tools").prepend(a),e.empty().append(c)}}function Be(){Z.find("> td:last-of-type > .fr").each((t,n)=>{let e=$(n),r=$('<span class="v2p-controls">'),i=$(`<span class="v2p-control v2p-control-thank">${Y}</span>`),c=e.find("> .thank_area");if(c.hasClass("thanked"))i.addClass("v2p-thanked"),r.append($("<a>").append(i));else{let v=c.find("> .thank"),p=v.eq(0).removeClass("thank"),d=v.eq(1).removeClass("thank");p.html(`<span class="v2p-control v2p-hover-btn v2p-control-hide">${Ko}</span>`),i.addClass("v2p-hover-btn"),d.empty().append(i),d.on("click",()=>{let m=e.closest('.cell[id^="r_"]'),f=m.find("> table .v2p-likes-box"),b=Number(f.text()),u=f.find(".v2p-icon-heart").clone();b>0?f.addClass("v2p-thanked").empty().append(u,` ${b+1}`):$(` <span class="small v2p-likes-box v2p-thanked" style="position:relative;top:-1px;"> <span class="v2p-icon-heart">${Y}</span>1 </span> `).insertAfter(m.find("> table .ago")),i.addClass("v2p-thanked"),p.hide(),d.off("click"),Co({message:"\u2764\uFE0F \u5DF2\u611F\u8C22\u56DE\u590D"})}),r.append(p).append(d)}let l=e.find("a:last-of-type");l.find('> img[alt="Reply"]').replaceWith(`<span class="v2p-control v2p-hover-btn v2p-control-reply">${ao}</span>`),r.append(l),c.remove();let s=e.find(".no").clone();e.empty().append(r,s)})}function He(){let o=mt(),t=E({children:`\u56DE\u590D<kbd>${o==="macos"?"Cmd":"Ctrl"}+Enter</kbd>`,type:"submit"}).replaceAll(T.find('input[type="submit"]')),n=$('<div class="v2p-emoji-group">'),e=$('<div class="v2p-emoji-list">'),r=$('<span class="v2p-emoji">'),i=Qo.map(p=>{let d=n.clone();d.append(`<div class="v2p-emoji-title">${p.title}</div>`);let m=e.clone().append(p.list.map(f=>r.clone().text(f).on("click",()=>{K(f)})));return d.append(m),d}),c=$('<div class="v2p-emoticons-box">').append(i),a=E({children:Zo}).insertAfter(t),l=$('<div class="v2p-emoji-container">').append(c).appendTo(T).on("click",()=>{j()}),s=p=>{p.key==="Escape"&&(p.preventDefault(),v.close())};a.on("click",()=>{j()});let v=no({root:T,trigger:a,content:l,options:{placement:"right-end"},onOpen:()=>{$(document.body).on("keydown",s)},onClose:()=>{$(document.body).off("keydown",s)}});T.find("#undock-button, #undock-button + a").addClass("v2p-hover-btn").css("padding","5px 4px")}async function Jt(){{let o=no({root:H});P.each((t,n)=>{let e=O.at(t);if(e?.id!==n.id)return;De(n,o,e);let r=$(n),{memberName:i,thanked:c}=e;i===kt&&r.find(".badges").append(`<div class="badge ${i===$t?"mod":"you"}">YOU</div>`);let a=r.find(".small.fade").addClass("v2p-likes-box");a.find('img[alt="\u2764\uFE0F"]').replaceWith(`<span class="v2p-icon-heart">${Y}</span>`),c&&a.addClass("v2p-thanked")}),Be(),Ie()}{let t=(await _()).nestedReply.display;P.each((n,e)=>{let r=O.at(n);Gt(e);let i=r?.id===e.id?r:O.find(c=>c.id===e.id);if(i){let{refMemberNames:c,refFloors:a}=i;if(!c||c.length===0)return;for(let l of c)for(let s=n-1;s>=0;s--){let{memberName:v,floor:p}=O.at(s)||{};if(v===l){let d=a?.at(0);if(d&&d!==p){let m=O.slice(0,s).findIndex(f=>f.floor===d);if(m>=0){P.eq(m).append(e);return}}t==="indent"&&e.classList.add("v2p-indent"),P.eq(s).append(e);return}}}})}He()}var Fo,Qt=y(()=>{"use strict";vo();Ro();jo();Ho();q();I();mo();B();L();uo();Fo=new Map});async function Yt(){(await _()).openInNewTab&&zo.find(".topic_content a[href]").prop("target","_blank").prop("rel","noopener noreferrer");{let o=zo.find(".subtle > .topic_content"),t=o.text().length;t>=200&&o.each((n,e)=>{t>=400&&(e.style.fontSize="14px"),e.style.fontSize="14.5px"})}{let o=$(".topic_buttons .tb").addClass("v2p-tb v2p-hover-btn");o.eq(0).append(`<span class="v2p-tb-icon">${ot}</span>`),o.eq(1).append(`<span class="v2p-tb-icon">${tt}</span>`),o.eq(2).append(`<span class="v2p-tb-icon">${et}</span>`),o.eq(3).append(`<span class="v2p-tb-icon">${nt}</span>`)}}var Zt=y(()=>{"use strict";I();B();L()});function Kt(){let o=H.find('> .cell:not([id^="r_"])');if(o.length<=1)return;let n=o.slice(1).addClass("v2p-paging").find(".super.button");n.eq(0).addClass("v2p-prev-btn"),n.eq(1).addClass("v2p-next-btn")}var oe=y(()=>{"use strict";L()});function te(){let o=$(` <div class="v2p-reply-tools-box v2p-hover-btn"> <span class="v2p-reply-tools-icon">${lt}</span> \u5DE5\u5177\u7BB1 </div> `),t=$(` <div class="v2p-reply-tool-content"> <div class="v2p-reply-tool v2p-reply-tool-encode">\u6587\u5B57\u8F6C Base64</div> <div class="v2p-reply-tool v2p-reply-tool-img">\u4E0A\u4F20\u56FE\u7247</div> </div> `),n=no({root:T,trigger:o,content:t});t.find(".v2p-reply-tool-encode").on("click",()=>{j(),n.close(),setTimeout(()=>{let a=window.prompt("\u8F93\u5165\u8981\u52A0\u5BC6\u7684\u5B57\u7B26\u4E32\uFF0C\u5B8C\u6210\u540E\u5C06\u586B\u5199\u5230\u56DE\u590D\u6846\u4E2D\uFF1A");if(a){let l=window.btoa(a);K(l)}})});let e="\u9009\u62E9\u3001\u7C98\u8D34\u3001\u62D6\u653E\u4EE5\u4E0A\u4F20\u56FE\u7247\u3002",r=$(`<div class="v2p-reply-upload-bar">${e}</div>`),i=a=>{r.text("\u6B63\u5728\u4E0A\u4F20\u56FE\u7247..."),wt(a).then(l=>{K(l)}).catch(()=>{window.alert("\u4E0A\u4F20\u56FE\u7247\u5931\u8D25")}).finally(()=>{r.text(e)})},c=()=>{j(),n.close();let a=document.createElement("input");a.style.display="none",a.type="file",a.accept="image/*",a.addEventListener("change",()=>{let l=a.files?.[0];l&&i(l)}),a.click()};t.find(".v2p-reply-tool-img").on("click",()=>{c()}),T.find("> .flex-row-end").prepend(o),document.addEventListener("paste",a=>{if(!(a instanceof ClipboardEvent)||!C?.matches(":focus"))return;let l=a.clipboardData?.items;if(!l)return;let s=Array.from(l).find(v=>v.type.includes("image"));if(s){let v=s.getAsFile();v&&i(v)}}),C?.addEventListener("drop",a=>{if(a.preventDefault(),!(a instanceof DragEvent))return;let l=a.dataTransfer?.files[0];l&&i(l)}),$("#reply_content").wrap('<div class="v2p-reply-wrap">').attr("placeholder","\u7559\u4E0B\u5BF9\u4ED6\u4EBA\u6709\u5E2E\u52A9\u7684\u56DE\u590D"),$(".flex-one-row:last-of-type > .gray").text(""),r.on("click",()=>{c()}),$(".v2p-reply-wrap").append(r)}var ee=y(()=>{"use strict";jo();I();mo();L();uo()});var je={};var ne=y(()=>{"use strict";I();B();L();Qt();Zt();oe();ee();(async()=>{(await _()).openInNewTab&&Z.find("> td:nth-child(3) > strong > a").prop("target","_blank").prop("rel","noopener noreferrer");{let o=$(` <div class="cell v2p-tools"> <span class="v2p-tool v2p-hover-btn v2p-tool-reply"> <span class="v2p-tool-icon">${ao}</span>\u56DE\u590D\u4E3B\u9898 </span> <span class="v2p-tool v2p-hover-btn v2p-tool-scroll-top"> <span class="v2p-tool-icon">${ct}</span>\u56DE\u5230\u9876\u90E8 </span> </div> `);o.find(".v2p-tool-reply").on("click",()=>{T.find("#reply_content").trigger("focus")}),o.find(".v2p-tool-scroll-top").on("click",()=>{window.scrollTo({top:0,behavior:"smooth"})}),$('#Rightbar > .box:has("#member-activity")').addClass("v2p-tool-box").append(o)}if($(document).on("keydown",o=>{if(!o.isDefaultPrevented()&&o.key==="Escape"){let t=$("#reply_content");T.hasClass("reply-box-sticky")&&(T.removeClass("reply-box-sticky"),$("#undock-button").css("display","none")),t.trigger("blur")}}),await Yt(),document.referrer!==""&&document.referrer.includes(document.location.pathname)){let t=new URL(document.location.href).searchParams.get("p");t&&t!=="1"&&document.querySelector(".topic_buttons")?.scrollIntoView({behavior:"smooth"})}await Jt(),Kt(),te()})()});var qo=/^(https?|wss?|file|ftp|\*):\/\/(\*|\*\.[^*/]+|[^*/]+)\/.*$|^file:\/\/\/.*$|^resource:\/\/(\*|\*\.[^*/]+|[^*/]+)\/.*$|^about:/,Xo=typeof navigator=="object"&&navigator.userAgent.includes("Firefox/"),ae=Xo?/^(https?|wss?):[/][/][^/]+([/].*)?$/:/^https?:[/][/][^/]+([/].*)?$/,ce=/^(https?|file|ftp):[/]+/;function le(o){if(!qo.test(o))throw new Error(o+" is an invalid pattern, it must match "+String(qo));let[,t,n,e]=o.split(/(^[^:]+:[/][/])([^/]+)?/);return t=t.replace("*",Xo?"(https?|wss?)":"https?").replace(/[/]/g,"[/]"),n=(n??"").replace(/^[*][.]/,"([^/]+.)*").replace(/^[*]$/,"[^/]+").replace(/[.]/g,"[.]").replace(/[*]$/g,"[^.]+"),e=e.replace(/[/]/g,"[/]").replace(/[.]/g,"[.]").replace(/[*]/g,".*"),"^"+t+n+"("+e+")?$"}function Mo(...o){return o.length===0?/$./:o.includes("<all_urls>")?ce:o.includes("*://*/*")?ae:new RegExp(o.map(t=>le(t)).join("|"))}var Go=`:root{--zidx-serach: 100;--zidx-tabs: 10;--zidx-tools-card: 10;--zidx-reply-box: 99;--zidx-model-header: 50;--zidx-model-mask: 999;--zidx-toast: 999;--zidx-tip: 10;--zidx-popup: 99;--zidx-expand-mask: 10;--zidx-expand-btn: 20}:root body{--v2p-color-main-50: #f7f9fb;--v2p-color-main-100: #f1f5f9;--v2p-color-main-200: #e2e8f0;--v2p-color-main-300: #cbd5e1;--v2p-color-main-350: #94a3b8cc;--v2p-color-main-400: #94a3b8;--v2p-color-main-500: #64748b;--v2p-color-main-600: #475569;--v2p-color-main-700: #334155;--v2p-color-main-800: #1e293b;--v2p-color-accent-50: #ecfdf5;--v2p-color-accent-100: #d1fae5;--v2p-color-accent-200: #a7f3d0;--v2p-color-accent-300: #6ee7b7;--v2p-color-accent-400: #34d399;--v2p-color-accent-500: #10b981;--v2p-color-accent-600: #059669;--v2p-color-orange-50: #fff7ed;--v2p-color-orange-100: #ffedd5;--v2p-color-orange-400: #fb923c;--v2p-color-background: #f2f3f5;--v2p-color-foreground: var(--v2p-color-main-800);--v2p-color-font-secondary: var(--v2p-color-main-400);--v2p-color-bg-content: #fff;--v2p-color-bg-footer: var(--v2p-color-bg-content);--v2p-color-bg-hover-btn: var(--v2p-color-main-200);--v2p-color-bg-subtle: rgb(236 253 245 / 90%);--v2p-color-bg-input: var(--v2p-color-main-50);--v2p-color-bg-search: var(--v2p-color-main-100);--v2p-color-bg-search-active: var(--v2p-color-main-200);--v2p-color-bg-widget: rgb(255 255 255 / 70%);--v2p-color-heart: #ef4444;--v2p-color-heart-fill: #fee2e2;--v2p-color-mask: rgb(0 0 0 / 25%);--v2p-color-divider: var(--v2p-color-main-200);--v2p-box-shadow: 0 3px 5px 0 rgb(0 0 0 / 4%);--v2p-widget-shadow: 0 9px 24px -3px rgb(0 0 0 / 6%), 0 4px 8px -1px rgb(0 0 0 /12%);--v2p-toast-shadow: 0 6px 16px 0 rgb(0 0 0 / 8%), 0 3px 6px -4px rgb(0 0 0 / 12%), 0 9px 28px 8px rgb(0 0 0 / 5%);--color-fade: var(--v2p-color-font-secondary);--color-gray: var(--v2p-color-font-secondary);--link-color: var(--v2p-color-main-800);--link-darker-color: var(--v2p-color-main-600);--link-hover-color: var(--v2p-color-main-800);--link-caution-color: var(--v2p-color-orange-400);--box-border-color: var(--v2p-color-main-200);--box-foreground-color: var(--v2p-color-main-800);--box-background-color: var(--v2p-color-bg-content);--box-background-alt-color: var(--v2p-color-main-100);--box-background-hover-color: var(--v2p-color-main-200);--button-background-color: var(--v2p-color-main-100);--button-background-hover-color: var(--v2p-color-main-200);--button-hover-color: var(--button-background-hover-color);--button-foreground-color: var(--v2p-color-main-500);--button-foreground-hover-color: var(--v2p-color-main-600);--button-border-color: var(--v2p-color-main-300);--button-border-hover-color: var(--v2p-color-main-400);color:var(--v2p-color-foreground);font-family:system-ui,sans-serif;background-color:var(--v2p-color-background)}:root body ::selection{color:var(--v2p-color-main-100);background-color:var(--v2p-color-main-700)}:root body img::selection{background-color:var(--v2p-color-main-500)}:root body:has(#Wrapper.Night){--v2p-color-main-50: #11182799;--v2p-color-main-100: #111827;--v2p-color-main-200: #374151;--v2p-color-main-300: #374151;--v2p-color-main-350: #6b7280cc;--v2p-color-main-400: #6b7280;--v2p-color-main-500: #9ca3af;--v2p-color-main-600: #9ca3af;--v2p-color-main-700: #d1d5db;--v2p-color-main-800: #e5e7eb;--v2p-color-main-900: #111827;--v2p-color-main-950: #030712;--v2p-color-accent-50: #064e3b;--v2p-color-accent-100: #065f46;--v2p-color-accent-200: #047857;--v2p-color-accent-300: #059669;--v2p-color-accent-400: #10b981;--v2p-color-accent-500: #34d399;--v2p-color-accent-600: #6ee7b7;--v2p-color-orange-50: #7c2d12;--v2p-color-orange-100: #9a3412;--v2p-color-orange-400: #fb923c;--v2p-color-background: var(--v2p-color-main-100);--v2p-color-foreground: var(--v2p-color-main-800);--v2p-color-font-secondary: var(--v2p-color-main-600);--v2p-color-bg-content: #1f2937;--v2p-color-bg-subtle: rgb(6 78 59 / 30%);--v2p-color-bg-search: var(--v2p-color-main-200);--v2p-color-bg-search-active: var(--v2p-color-main-200);--v2p-color-bg-widget: var(--v2p-color-bg-content);--v2p-color-heart: #b91c1c;--v2p-color-heart-fill: #fca5a5;--v2p-color-mask: rgb(0 0 0 / 70%);--v2p-toast-shadow: none;--link-color: var(--v2p-color-main-700);--link-hover-color: var(--v2p-color-main-800);--box-border-color: var(--v2p-color-main-350);--box-foreground-color: var(--v2p-color-main-800);--box-background-color: var(--v2p-color-bg-content);--box-background-alt-color: var(--v2p-color-main-100);--box-background-hover-color: var(--v2p-color-main-300);--button-background-color: var(--v2p-color-main-900);--button-background-hover-color: var(--v2p-color-main-950);--button-hover-color: var(--button-background-hover-color);--button-foreground-color: var(--v2p-color-main-500);--button-foreground-hover-color: var(--v2p-color-main-600);--button-border-color: var(--v2p-color-main-300);--button-border-hover-color: var(--v2p-color-main-400)}:root body:has(#Wrapper.Night) ::selection{color:currentColor;background-color:var(--v2p-color-orange-50)}:root body:has(#Wrapper.Night) img::selection{background-color:var(--v2p-color-orange-50)} :root{color-scheme:light}:root:has(#Wrapper.Night){color-scheme:dark}:root html,:root body{min-height:100vh}body{overflow:overlay;scrollbar-gutter:stable}body a{text-decoration:none;cursor:default}body a[href]{cursor:pointer}body a:hover{text-decoration:underline 1px;text-underline-offset:.5ex}body #Top{height:55px;background-color:var(--v2p-color-bg-content);border:none}body #Bottom{color:var(--v2p-color-font-secondary);background-color:var(--v2p-color-bg-footer);border:none}body #Wrapper{background-color:inherit;background-image:none}body #Wrapper.Night{background-color:inherit;background-image:none}body #Wrapper .content{display:flex;gap:25px}body #Leftbar{order:1;float:none}body #Main{flex:1;order:2;max-width:85vw;margin:0}body #Rightbar{order:3;float:none}body #search-container{height:30px;margin:0 30px;background-color:var(--v2p-color-bg-search);border:none;border-radius:6px}body #search-container::before{top:0;left:4px;background-size:14px 14px;opacity:.6;filter:none}body #search-container.active{background-color:var(--v2p-color-bg-search-active)}body #search-container #search-result{top:42px;z-index:var(--zidx-serach);box-shadow:0 0 15px 5px var(--box-background-hover-color)}body #search-container #search-result .search-item{color:var(--color-gray)}body .box{background-color:var(--v2p-color-bg-content);border:none;border-radius:10px;box-shadow:var(--v2p-box-shadow)}body .box .header>h1{font-weight:bold;font-size:22px}body .box .header .gray{color:var(--color-gray)}body .button{--button-hover-shadow: 0 1.8px 0 var(--button-border-color), 0 1.8px 0 var(--button-background-color)}body .button.normal,body .button.super{position:relative;display:inline-flex;gap:5px;align-items:center;height:28px;padding:0 12px;color:var(--button-foreground-color);font-weight:500;font-size:14px;font-family:inherit;line-height:28px;white-space:nowrap;text-shadow:none;background:var(--button-background-color);border:none;border-radius:6px;outline:none;box-shadow:0 1.8px 0 var(--box-background-hover-color),0 1.8px 0 var(--button-background-color);cursor:pointer;transition:color .25s,background-color .25s,box-shadow .25s;user-select:none}body .button.normal:hover:enabled,body .button.super:hover:enabled{color:var(--button-foreground-color);font-weight:500;text-shadow:none;background:var(--button-hover-color);border:none;box-shadow:var(--button-hover-shadow)}body .button.normal.hover_now,body .button.normal.disable_now,body .button.super.hover_now,body .button.super.disable_now{color:var(--button-foreground-color) !important;text-shadow:none !important;background:var(--button-background-color) !important;border:none !important;box-shadow:0 1.8px 0 var(--box-background-hover-color) !important,0 1.8px 0 var(--button-background-color) !important}body .button.normal.disable_now,body .button.super.disable_now{cursor:default;opacity:.5;pointer-events:none}body .button.normal kbd,body .button.super kbd{position:relative;right:-4px;padding:0 3px;font-size:90%;font-family:inherit;line-height:initial;border:1px solid var(--button-border-color);border-radius:4px}body .button.special{--button-hover-shadow: 0 1.8px 0 var(--v2p-color-accent-200), 0 1.8px 0 var(--v2p-color-accent-100);color:var(--v2p-color-accent-500);background:var(--v2p-color-accent-100);box-shadow:var(--button-hover-shadow)}body .button.special:hover,body .button.special:hover:enabled{color:var(--v2p-color-accent-600);background:var(--v2p-color-accent-100);border:none;box-shadow:var(--button-hover-shadow)}body .button a{color:inherit;text-decoration:none}body .badge{padding:2px 5px;font-weight:bold;border:1px solid var(--v2p-color-accent-400);user-select:none}body .badge:first-child{border:1px solid var(--v2p-color-accent-400);border-top-left-radius:4px;border-bottom-left-radius:4px}body .badge:last-child{border:1px solid var(--v2p-color-accent-400);border-top-right-radius:4px;border-bottom-right-radius:4px}body .badge.op{color:var(--v2p-color-accent-500);background-color:var(--v2p-color-accent-50)}body .badge.mod{color:var(--v2p-color-bg-content);background-color:var(--v2p-color-accent-400)}body .badge.you{color:var(--v2p-color-orange-400);background-color:var(--v2p-color-orange-50);border:1px solid var(--v2p-color-orange-400)}body .badge.mini{height:1.2em;padding:0 3px;font-weight:normal;font-size:12px;line-height:1}body a.node:is(:active,:link,:visited){padding:5px 6px;color:var(--v2p-color-font-secondary);font-size:13px;background-color:var(--v2p-color-main-100);border-radius:4px}body a.node:is(:active,:link,:visited):hover{color:var(--v2p-color-main-500);background-color:var(--v2p-color-main-200)}body .outdated{font-size:12px;border-color:var(--v2p-color-main-200);border-bottom:none}body .page_normal,body .page_current{user-select:none}body .page_normal:link,body .page_normal:visited,body .page_current:link,body .page_current:visited{padding:6px 9px;font-size:14px;border:none}body .page_normal:link,body .page_normal:visited{font-weight:500;background-color:var(--v2p-color-bg-content);box-shadow:0 2px 2px var(--box-background-hover-color);transition:transform .25s}body .page_normal:link:hover,body .page_normal:visited:hover{transform:scale(1.1) translateY(-2px)}body .page_current:link,body .page_current:visited{font-weight:bold;background-color:var(--box-background-hover-color);box-shadow:none}body .page_input{display:none}body .dock_area{background:var(--v2p-color-main-200)}body .member-activity-bar{background-color:var(--v2p-color-main-200)}body .member-activity-bar .member-activity-start{background-color:var(--v2p-color-accent-200)}body .member-activity-bar .member-activity-fourth{background-color:var(--v2p-color-accent-400)}body .member-activity-bar .member-activity-half{background-color:var(--v2p-color-accent-500)}body .member-activity-bar .member-activity-almost{background-color:var(--v2p-color-accent-600)}body .member-activity-bar .member-activity-done{background-color:var(--v2p-color-orange-400)}body .online{user-select:none}body #topic_supplement{height:unset;min-height:550px !important;max-height:800px !important;overflow:hidden;font-size:15px;background-color:var(--v2p-color-bg-input);border:1px solid var(--button-border-color);border-radius:8px;transition:opacity .25s;resize:none;overflow-y:auto}body #topic_supplement::placeholder{color:var(--v2p-color-main-500);font-size:15px}body #topic_supplement:focus{background-color:rgba(0,0,0,0);border:2px solid var(--button-border-color);outline:none}body .item_hot_topic_title{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-height:1.4}body form textarea#topic_title{height:unset;min-height:75px !important;max-height:800px !important;overflow:hidden;font-size:15px;background-color:var(--v2p-color-bg-input);border:1px solid var(--button-border-color);border-radius:8px;transition:opacity .25s;resize:none}body form textarea#topic_title::placeholder{color:var(--v2p-color-main-500);font-size:15px}body form textarea#topic_title:focus{background-color:rgba(0,0,0,0);border:2px solid var(--button-border-color);outline:none}body form #topic_title{height:unset;min-height:30px !important;max-height:800px !important;overflow:hidden;font-size:15px;background-color:var(--v2p-color-bg-input);border:1px solid var(--button-border-color);border-radius:8px;transition:opacity .25s;resize:none}body form #topic_title::placeholder{color:var(--v2p-color-main-500);font-size:15px}body form #topic_title:focus{background-color:rgba(0,0,0,0);border:2px solid var(--button-border-color);outline:none}body form #topic_content{height:unset;min-height:120px !important;max-height:800px !important;overflow:hidden;font-size:15px;background-color:var(--v2p-color-bg-input);border:1px solid var(--button-border-color);border-radius:8px;transition:opacity .25s;resize:none}body form #topic_content::placeholder{color:var(--v2p-color-main-500);font-size:15px}body form #topic_content:focus{background-color:rgba(0,0,0,0);border:2px solid var(--button-border-color);outline:none}body #syntax-selector .radio-group{padding:3px;background-color:var(--v2p-color-background)}body #syntax-selector .radio-group>input[type=radio]+label{font-size:13px;cursor:pointer}body .snow{color:var(--v2p-color-main-400)}body .orange-dot{background:var(--v2p-color-orange-400)}body form[action="/notes/new"] .inner.alt{background-color:var(--v2p-color-bg-input);border:1px solid var(--button-border-color)}body form[action="/notes/new"] .cell{background-color:rgba(0,0,0,0) !important}body a.btn_hero{border-color:var(--v2p-color-main-800)}body a.btn_hero:hover{background-color:var(--v2p-color-main-800)}body .cell_ops{background-color:rgba(0,0,0,0)}body :is(.topic_content,.reply_content,.v2p-topic-preview-content) a[href^=http]{text-decoration:underline 2px;text-underline-offset:.4ex;color:currentColor;background-color:var(--v2p-color-main-100)}body :is(.topic_content,.reply_content,.v2p-topic-preview-content) a[href^=http]:hover{background-color:var(--v2p-color-main-200)}body :is(.topic_content,.reply_content,.v2p-topic-preview-content) a[href*="v2ex.com/t"],body :is(.topic_content,.reply_content,.v2p-topic-preview-content) a[href^="/t"]{text-decoration:underline 2px;text-underline-offset:.4ex;color:var(--v2p-color-accent-500);background-color:var(--v2p-color-accent-50)}body :is(.topic_content,.reply_content,.v2p-topic-preview-content) a[href*="v2ex.com/t"]:hover,body :is(.topic_content,.reply_content,.v2p-topic-preview-content) a[href^="/t"]:hover{color:var(--v2p-color-accent-500);background-color:var(--v2p-color-accent-50)}.box .tag:link,.box .tag:visited{color:var(--v2p-color-font-secondary);font-size:12px;background-color:var(--v2p-color-main-100);border-radius:5px}.box .tag::before{color:var(--v2p-color-main-500)}.box .tag>li{opacity:.6}#Top .content{height:100%}#Top .site-nav{height:100%;padding:0}#Top .tools{display:flex;gap:8px 14px;align-items:center;justify-content:flex-end;font-weight:400;font-size:14px}#Top .tools .top{height:26px;margin-left:0;padding:0 6px;color:var(--v2p-color-main-500);line-height:26px;white-space:nowrap;border-radius:4px}#Top .tools .top:hover{color:var(--v2p-color-main-800)}#Top .tools .top:not(.v2p-hover-btn):hover{background-color:var(--v2p-color-main-100)}#Main>.box{padding:0 12px}#Main>.box .cell{padding:20px 10px;background-image:none !important}#Main .topic_buttons{display:flex;flex-wrap:wrap;align-items:center;padding:8px 0;column-gap:5px;background:none}#Main .topic_buttons .topic_stats{flex:1;order:99;float:none;margin-left:10px;padding:0 !important;font-size:12px;text-shadow:none}#Main .topic_buttons .topic_thanked{font-size:12px}#Main .topic_buttons a.tb:link{display:flex;flex-direction:row-reverse;align-items:center;padding:5px;white-space:nowrap;text-shadow:none;column-gap:5px;background:none;border-radius:4px}#Main .topic_buttons a.tb:link:not(.v2p-hover-btn){color:var(--v2p-color-font-secondary)}#Main .topic_buttons a.tb:link:hover:not(.v2p-hover-btn){color:currentcolor;background:var(--v2p-color-main-100)}#Main .subtle{background-color:var(--v2p-color-bg-subtle);border-left:3px solid var(--v2p-color-accent-200)}#Main .subtle .topic_content{font-size:15px}#Main .vote:link{color:var(--v2p-color-main-500);border-color:var(--v2p-color-main-300);border-radius:5px}#Main .vote:link:hover{box-shadow:0 2px 2px var(--v2p-color-main-200)}#Main .cell_tab_current{border-color:var(--v2p-color-main-800)}#Main .cell .topic-link{color:var(--v2p-color-main-800);text-decoration:none}#Main .cell .topic-link:visited{color:var(--v2p-color-font-secondary)}#Main .cell .topic_info{position:relative;display:flex;align-items:center;user-select:none;pointer-events:none}#Main .cell .topic_info::after{position:absolute;top:0;right:0;bottom:-6px;left:0;z-index:1;background-color:var(--v2p-color-bg-content);content:""}#Main .cell .topic_info .votes,#Main .cell .topic_info .node,#Main .cell .topic_info strong:first-of-type,#Main .cell .topic_info span:first-of-type{position:relative;z-index:2;pointer-events:auto}#Main .cell .topic_info a[href^="/member"]{color:var(--v2p-color-main-500);font-weight:500}#Main .cell .count_livid{display:inline-block;padding:5px 10px;font-weight:400;font-size:12px;white-space:nowrap;border-radius:5px;user-select:none;color:var(--v2p-color-main-500);background-color:var(--v2p-color-main-200)}#Main .cell .count_orange{display:inline-block;padding:5px 10px;font-weight:400;font-size:12px;white-space:nowrap;border-radius:5px;user-select:none;color:var(--v2p-color-main-100);font-weight:bold;background-color:var(--v2p-color-orange-400)}#Main .cell .item_title .topic-link{font-weight:bold}#Main .cell.item tr>td:nth-child(2){width:30px}#Main .box>.cell[id^=r]:not(:has(.cell[id^=r])) .reply_content{padding-bottom:0}#Main .cell[id^=r]{--bg-reply: var(--v2p-color-bg-content);background-color:var(--bg-reply)}#Main .cell[id^=r]:hover>table td:last-of-type .fr a{opacity:1}#Main .cell[id^=r]:hover>table~.cell[id^=r]{--bg-reply: var(--v2p-color-main-100);border-color:var(--v2p-color-main-300)}#Main .cell[id^=r]:hover>table~.cell[id^=r] .cell[id^=r]{--bg-reply: var(--v2p-color-main-100)}#Main .cell[id^=r]:hover>table~.cell[id^=r] .cell[id^=r].v2p-indent{border-color:var(--v2p-color-main-350)}#Main .cell[id^=r] .reply_content{padding-bottom:10px}#Main .cell[id^=r]>table:first-of-type td:first-of-type{width:40px}#Main .cell[id^=r]>table:first-of-type td:first-of-type .avatar{width:40px !important;height:40px !important;border-radius:5px;aspect-ratio:1}#Main .cell[id^=r]>table~.cell[id^=r]{--bg-reply: var(--v2p-color-main-50);position:relative;z-index:var(--zidx-expand-btn);padding:15px 0 0 15px;border:none;box-shadow:-3px 0 var(--v2p-color-main-200)}#Main .cell[id^=r]>table~.cell[id^=r] .cell[id^=r]{padding:0;box-shadow:none}#Main .cell[id^=r]>table~.cell[id^=r] .cell[id^=r].v2p-indent{padding-left:15px;border-left:1px solid var(--v2p-color-main-300)}#Main .cell[id^=r]>table~.cell[id^=r] tr td:first-of-type{width:25px}#Main .cell[id^=r]>table~.cell[id^=r] tr td:first-of-type .avatar{width:25px !important;height:25px !important;border-radius:4px}#Main .cell[id^=r]>table~.cell[id^=r] tr td:nth-child(3) strong a{font-size:13px;opacity:.75}#Main .cell[id^=r]>table~.cell[id^=r] .reply_content{padding-right:5px;font-size:15px}#Main .cell[id^=r]>table td:nth-of-type(2){width:15px}#Main .cell[id^=r]>table td:last-of-type a.dark{color:var(--v2p-color-main-600);text-decoration:none}#Main .cell[id^=r]>table td:last-of-type a.dark:hover{text-decoration:none}#Main .cell[id^=r]>table td:last-of-type .fr{position:relative;top:-3px;user-select:none}#Main .cell[id^=r]>table td:last-of-type .fr a{opacity:0}#Main .cell[id^=r]>table td:last-of-type .fr+.sep3{height:0}#Main .cell[id^=r]:last-of-type{border:none}#Main .cell[id^=r] .no{position:relative;top:-4px;padding:5px 10px;color:var(--v2p-color-main-350);font-size:12px;background-color:rgba(0,0,0,0);border-radius:5px;user-select:none}#Main #Tabs{position:sticky;top:0;z-index:var(--zidx-tabs);display:flex;flex-wrap:wrap;gap:6px 8px;align-items:center;background-color:var(--v2p-color-bg-content);user-select:none}#Main #Tabs .tab{margin:0}#Main #SecondaryTabs{padding:10px;background-color:var(--v2p-color-main-100);border-radius:5px}#Main .topic_content,#Main .reply_content{font-size:15.4px}#Main .topic_content a[href^="/member"],#Main .reply_content a[href^="/member"]{position:relative;bottom:1px;color:var(--v2p-color-main-500);font-size:13px;text-decoration:underline;text-underline-offset:.4ex}#Main .thank_area{font-size:12px}#Main .tab{background-color:rgba(0,0,0,0);user-select:none}#Main .tab:not(.v2p-hover-btn):hover{background-color:var(--v2p-color-main-100)}#Main .tab_current{color:var(--box-background-color);background-color:var(--box-foreground-color);user-select:none}#Main #reply-box.reply-box-sticky{bottom:20px;z-index:var(--zidx-reply-box);margin:0 -10px;padding:0 22px;overflow:visible;border:none;border-radius:10px;outline:2px solid var(--v2p-color-main-200)}#Main #reply-box .v2p-reply-wrap #reply_content{background-color:rgba(0,0,0,0);border:none}#Main #reply-box .v2p-reply-wrap #reply_content:focus{background-color:var(--v2p-color-bg-content);outline:none}#Main #reply-box .v2p-reply-wrap #reply_content::placeholder{color:var(--v2p-color-main-500);font-size:14px}#Main #reply-box .flex-one-row:last-of-type{flex-direction:row-reverse;gap:10px;justify-content:flex-start}#Main #reply-box .flex-one-row:last-of-type .gray{margin-right:auto}#Main #reply-box>.cell{font-size:12px}#Main #reply-box>.cell.flex-one-row{min-height:45px;padding:0 10px;border:none}#Main #reply-box>.cell.flex-row-end{padding:12px 10px;border:none}#Main #reply-box>.cell:has(form){padding-top:0}#Main #no-comments-yet{color:var(--color-gray);border-color:var(--color-gray)}#Main #notifications .cell[id^=n]:hover .node{opacity:1}#Main #notifications .cell[id^=n] .node{opacity:0}#Main #notifications .cell[id^=n] .payload{color:var(--v2p-color-main-800);background-color:var(--v2p-color-main-100)}#Rightbar .balance_area{display:flex;align-items:center}#Rightbar a.dark:is(:link,:active,:visited,:hover){color:var(--v2p-color-main-500)}#Rightbar a.dark:is(:link,:active,:visited,:hover):hover{color:var(--v2p-color-main-600)}#Bottom{position:sticky;top:100%}#Bottom a.dark{font-weight:400;font-size:13px}#Bottom a.dark:is(:link,:active,:visited,:hover){color:var(--v2p-color-main-500)} \uFEFFbody{position:relative}body.v2p-modal-open{overflow:hidden}body .button.v2p-prev-btn,body .button.v2p-next-btn{padding:0 15px}.v2p-hover-btn{position:relative;z-index:1;margin:0;text-decoration:none;background:none;background-color:rgba(0,0,0,0);cursor:pointer;transition:color .2s;user-select:none}.v2p-hover-btn::before{position:absolute;top:0;right:-5px;bottom:0;left:-5px;z-index:-1;background-color:var(--v2p-color-bg-hover-btn);border-radius:5px;transform:scale(0.65);opacity:0;transition:background-color .2s,transform .2s,opacity .2s;content:""}.v2p-hover-btn:hover{text-decoration:none}.v2p-hover-btn:hover::before{transform:scale(1);opacity:1}.v2p-icon-heart{display:inline-flex;width:16px;height:16px;color:var(--v2p-color-heart)}.v2p-icon-heart svg{fill:var(--v2p-color-heart-fill)}#Main .cell:hover .v2p-topic-preview-btn{visibility:visible}.v2p-tool-box{position:sticky;top:20px;z-index:var(--zidx-tools-card)}.v2p-tool-box>.cell{font-size:13px}.v2p-tool-box .v2p-tools{display:grid;grid-auto-rows:auto;grid-template-columns:repeat(3, 1fr);gap:8px 15px;align-items:center;justify-content:center;color:var(--v2p-color-main-600);font-size:12px}.v2p-tool{display:inline-flex;gap:0 5px;align-items:center;padding:3px 0}.v2p-tool .v2p-tool-icon{width:16px;height:16px}.v2p-topic-preview-btn{position:relative;top:-1px;margin-left:10px;color:var(--button-foreground-color);font-size:14px;background-color:var(--button-hover-color);border:none;border-radius:3px;outline:none;visibility:hidden;cursor:pointer}.v2p-topic-preview{padding:25px;line-height:1.4}.v2p-tp-info{display:inline-flex;gap:20px;align-items:center;margin-bottom:10px;padding:5px 10px;overflow:hidden;font-size:13px;background-color:var(--v2p-color-main-200);border-radius:5px}.v2p-tp-member{display:inline-flex;gap:5px;align-items:center;font-weight:bold}.v2p-tp-avatar{width:20px;height:20px;border:5px}a.v2p-topic-preview-title-link:hover{text-decoration:underline 2px;text-underline-offset:.4ex}.v2p-dot{margin:0 8px;font-weight:800;font-size:20px;font-size:15px}.v2p-paging{background:none !important}.v2p-paging.cell{border-bottom:none}.v2p-model-mask{position:fixed;z-index:var(--zidx-model-mask);padding:60px;overflow:hidden;overflow-y:auto;background-color:var(--v2p-color-mask);inset:0}.v2p-popup{position:absolute;top:0;left:0;z-index:var(--zidx-popup);color:var(--v2p-color-main-600);font-size:14px;background:var(--v2p-color-bg-widget);border:1px solid var(--box-border-color);border-radius:8px;box-shadow:var(--v2p-widget-shadow);backdrop-filter:blur(16px)}.v2p-popup-content{width:max-content;overflow-y:auto}.v2p-toast{position:fixed;top:50px;left:50%;z-index:var(--zidx-toast);padding:10px 15px;color:var(--v2p-color-main-800);font-size:14px;background:var(--v2p-color-bg-widget);border:3px solid var(--box-border-color);border-radius:8px;box-shadow:var(--v2p-toast-shadow);transform:translateX(-50%);backdrop-filter:blur(16px)}.v2p-model-main{position:relative;box-sizing:border-box;width:800px;height:100%;margin:0 auto;overflow-x:hidden;overflow-y:auto;background-color:var(--v2p-color-bg-content);border-radius:10px}.v2p-model-header{position:sticky;top:0;right:0;left:0;z-index:var(--zidx-model-header);display:flex;gap:0 20px;align-items:center;padding:15px 20px 20px;background-color:var(--v2p-color-bg-content);border-bottom:1px solid var(--box-border-color)}.v2p-model-title{padding:2px 0;overflow:hidden;font-weight:bold;font-size:16px;white-space:nowrap;text-overflow:ellipsis}.v2p-model-actions{display:flex;gap:0 10px;align-items:center;margin-left:auto}.v2p-model-loading{display:flex;align-items:center;justify-content:center;padding:50px 0;color:currentcolor}.v2p-model-loading .v2p-icon-loading{position:relative;right:-13px;width:50px}.v2p-no-pat{padding:30px 10px;font-size:15px;text-align:center}.v2p-no-pat .v2p-no-pat-title{font-weight:bold;font-size:16px}.v2p-no-pat .v2p-no-pat-desc{display:flex;align-items:center;justify-content:center;margin-top:15px}.v2p-no-pat .v2p-no-pat-block{display:inline-flex;align-items:center;margin:0 5px;padding:2px 10px;background-color:var(--v2p-color-main-100);border-radius:2px}.v2p-no-pat .v2p-icon-logo{width:15px;height:15px}.v2p-likes-box{position:relative;top:3px;display:inline-flex;align-items:center;column-gap:5px;user-select:none}.v2p-likes-box.v2p-thanked{color:var(--v2p-color-heart);font-weight:bold;opacity:.8}.v2p-likes-box.v2p-thanked .v2p-icon-heart svg{fill:var(--v2p-color-heart)}@supports not selector(:has(*)){#Main .cell[id^=r]>table:hover .v2p-controls{opacity:1}}@supports selector(:has(*)){#Main .cell[id^=r]:not(:has(.cell:hover))>table:hover .v2p-controls{opacity:1}}.v2p-controls{display:inline-flex;align-items:center;margin-right:15px;font-size:12px;column-gap:15px;opacity:0}.v2p-controls>a{text-decoration:none}.v2p-control{position:relative;display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;padding:4px 0;color:var(--v2p-color-main-500)}.v2p-control:hover{color:var(--v2p-color-main-600)}.v2p-control.v2p-thanked{color:var(--v2p-color-heart);cursor:default}.v2p-control::after{z-index:var(--zidx-tip);width:max-content;min-width:30px;padding:2px 5px;overflow:hidden;color:var(--v2p-color-main-800);font-size:12px;white-space:nowrap;text-align:center;background-color:var(--v2p-color-bg-content);border-radius:4px;box-shadow:var(--v2p-widget-shadow);pointer-events:none;position:absolute;top:-8px;transform:translateY(-100%);opacity:0}.v2p-control:hover::after{opacity:1}.v2p-control.v2p-control-hide::after{content:"\u9690\u85CF\u56DE\u590D"}.v2p-control.v2p-control-thank::after{content:"\u611F\u8C22\u56DE\u590D"}.v2p-control.v2p-control-thank.v2p-thanked::after{content:"\u5DF2\u611F\u8C22"}.v2p-control.v2p-control-reply::after{content:"\u56DE\u590D"}.topic_buttons .v2p-tb.v2p-hover-btn{color:var(--v2p-color-main-400)}.topic_buttons .v2p-tb.v2p-hover-btn:hover{color:currentColor}.topic_buttons .v2p-tb.v2p-hover-btn::after{display:none}.v2p-tb-icon{width:15px;height:15px}.v2p-emoji-container{max-height:285px;padding:15px 18px;overflow-y:auto;color:var(--v2p-color-main-600)}.v2p-member-card{max-width:300px;max-height:285px;padding:12px;font-size:13px;text-align:left}.v2p-member-card .v2p-info{display:flex;gap:15px}.v2p-member-card .v2p-info-right{padding:2px 0}.v2p-member-card .v2p-avatar-box{width:73px;height:73px;overflow:hidden;background-color:var(--button-background-hover-color);border-radius:10px}.v2p-member-card .v2p-username{font-weight:bold;font-size:16px}.v2p-member-card .v2p-username.v2p-loading{width:65px;height:20px}.v2p-member-card .v2p-no{margin:5px 0}.v2p-member-card .v2p-no,.v2p-member-card .v2p-created-date{width:160px;height:16px}.v2p-member-card .v2p-loading{background-color:var(--button-background-hover-color);border-radius:6px}.v2p-member-card .v2p-bio{display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:3;line-height:1.4;margin-top:10px}.v2p-reply-list-box{margin-top:10px}.v2p-reply-list li{padding:3px 4px;word-break:break-all;background-color:var(--button-background-color);border-radius:6px}.v2p-reply-list li~li{margin-top:10px}.v2p-emoticons-box{font-size:15px}.v2p-emoji-group~.v2p-emoji-group{margin-top:10px}.v2p-emoji-title{margin:0 0 10px;font-size:14px;text-align:left}.v2p-emoji-list{display:grid;grid-template-columns:repeat(8, 1fr);gap:6px;font-size:20px}.v2p-emoji{padding:2px;border-radius:4px;cursor:pointer}.v2p-emoji:hover{background-color:var(--box-background-hover-color)}.v2p-decode{position:relative;padding:2px 4px;color:var(--v2p-color-orange-400);font-size:13px;text-decoration:none;background-color:var(--v2p-color-orange-50);cursor:copy}.v2p-decode:hover{color:var(--v2p-color-orange-400);background-color:var(--v2p-color-orange-50)}.v2p-decode:hover::after{opacity:1}.v2p-decode::after{z-index:var(--zidx-tip);width:max-content;min-width:30px;padding:2px 5px;overflow:hidden;color:var(--v2p-color-main-800);font-size:12px;white-space:nowrap;text-align:center;background-color:var(--v2p-color-bg-content);border-radius:4px;box-shadow:var(--v2p-widget-shadow);pointer-events:none;position:absolute;top:-8px;left:50%;transform:translate(-50%, -100%);opacity:0;content:attr(data-title)}.v2p-reply-content{position:relative}.v2p-reply-content .v2p-expand-btn.normal.button{position:absolute;bottom:5px;left:50%;z-index:var(--zidx-expand-btn);font-weight:400;font-size:12px;transform:translateX(-50%)}.v2p-reply-content.v2p-collapsed::before{position:absolute;right:0;bottom:0;left:0;z-index:var(--zidx-expand-mask);height:130px;background:linear-gradient(to top, var(--bg-reply) 10px, transparent);content:"";pointer-events:none}.v2p-reply-content.v2p-collapsed .v2p-expand-btn.normal.button{bottom:10px;transform:translateX(-50%)}.cell[id^=r] .cell[id^=r] .v2p-reply-content .v2p-expand-btn.normal.button{color:var(--button-foreground-color);background:var(--button-hover-color);box-shadow:var(--button-hover-shadow)}.v2p-empty-content{display:flex;flex-direction:column;align-items:center;padding-top:20px;color:var(--v2p-color-font-secondary);font-size:14px}.v2p-empty-content .v2p-text-emoji{font-size:20px}.v2p-topic-reply-ref{margin:0 -10px 15px;padding:5px 10px;color:var(--v2p-color-main-500);font-size:13px;background-color:var(--v2p-color-main-100);border-radius:5px}.v2p-topic-reply-box{margin-top:50px;padding:30px 0;color:var(--v2p-color-main-500);font-size:14px;line-height:1.55;border-top:1px solid var(--v2p-color-divider)}.v2p-topic-reply~.v2p-topic-reply{margin-top:15px}.v2p-topic-reply-member{display:inline;color:var(--v2p-color-main-700);font-weight:bold}.v2p-topic-reply-avatar{position:relative;top:2px;width:15px;height:15px;margin-right:5px;object-fit:cover;overflow:hidden;background-color:var(--v2p-color-main-200);border-radius:2px}.v2p-topic-reply-content{display:inline}.v2p-more-reply-tip{margin-top:20px;color:var(--v2p-color-main-400);font-size:13px;text-align:center}.v2p-reply-wrap{height:unset;min-height:140px !important;max-height:800px !important;overflow:hidden;font-size:15px;background-color:var(--v2p-color-bg-input);border:1px solid var(--button-border-color);border-radius:8px;transition:opacity .25s;resize:none}.v2p-reply-wrap::placeholder{color:var(--v2p-color-main-500);font-size:15px}.v2p-reply-wrap:focus{background-color:rgba(0,0,0,0);border:2px solid var(--button-border-color);outline:none}.v2p-reply-upload-bar{padding:6px 10px;color:var(--v2p-color-main-500);font-size:12px;border-top:1px dashed var(--v2p-color-main-300);cursor:pointer}.v2p-footer{position:relative;display:flex;align-items:center;justify-content:space-between;padding:35px 10px;color:var(--v2p-color-main-500);font-size:12px;border-top:1px solid var(--v2p-color-divider)}.v2p-footer a:hover{text-decoration:none}.v2p-footer-logo{--logo-size: 16px;position:absolute;top:calc(-1*(var(--logo-size) + 5px)/2);left:50%;display:inline-flex;box-sizing:border-box;padding:3px 25px;background-color:var(--v2p-color-bg-footer);transform:translateX(-50%)}.v2p-footer-logo svg{width:var(--logo-size)}.v2p-footer-text{display:inline-flex;align-items:center;justify-content:flex-start;width:240px;color:var(--v2p-color-font-secondary)}.v2p-footer-links{display:inline-flex;gap:0 8px;align-items:center}.v2p-footer-link{padding:4px 5px;color:currentColor}.v2p-footer-brand{display:inline-flex;gap:0 15px;align-items:center;justify-content:flex-end;width:240px}.v2p-footer-brand>span{width:20px}.v2p-color-mode-toggle{width:22px;height:22px;opacity:.8}.v2p-color-mode-toggle:hover{opacity:1}.v2p-reply-tools-box{position:relative;display:inline-flex;gap:0 5px;align-items:center;margin-right:auto;padding:2px 0;font-size:13px}.v2p-reply-tools-icon{display:inline-block;width:20px;height:20px}.v2p-reply-tool-content{padding:5px;border-radius:5px}.v2p-reply-tool{padding:5px 10px;white-space:nowrap;border-radius:4px;cursor:pointer}.v2p-reply-tool:hover{background-color:var(--v2p-color-main-100)} `;var Fe=Mo("https://v2ex.com/*","https://www.v2ex.com/*"),Ve=Mo("https://v2ex.com/t/*","https://www.v2ex.com/t/*"),re=window.location.href;(async()=>(Fe.test(re)&&($(`<style type='text/css'>${Go}</style>`).appendTo("head"),Promise.resolve().then(()=>dt()),Promise.resolve().then(()=>(At(),fe))),Ve.test(re)&&await Promise.resolve().then(()=>(ne(),je))))();