[
  {
    "path": ".github/ISSUE_TEMPLATE/01-bugReport.yml",
    "content": "name: 反馈问题 (Bug report)\ndescription: xxx 脚本的 xxx 功能失效了，或出现其他预期之外的问题...\ntitle: \"[脚本名称] xxx 功能失效（记得修改该标题示例，并移除该括号提示）\"\nlabels: 反馈问题\nbody:\n  - type: markdown\n    attributes:\n      value: |\n        发之前，请先搜下有没有类似的 [**Issues**](https://github.com/XIU2/UserScript/issues) 问题（包括[**关闭**](https://github.com/XIU2/UserScript/issues?q=is%3Aissue+is%3Aclosed)的），请勿重复发起！  \n        > [!NOTE]\n        > 注意！**不接受**与其他脚本/扩展 `功能冲突` 的相关问题反馈（原因见 [#146](https://github.com/XIU2/UserScript/issues/146)）！  \n        ****\n  - type: textarea\n    id: description\n    attributes:\n      label: 问题描述\n      description: 必填，最好写上 复现问题 的步骤，越详细越好，特别是一些复杂的问题\n      placeholder: 请输入...\n    validations:\n      required: true\n  - type: textarea\n    id: screenshots\n    attributes:\n      label: 附加截图\n      description: 可选，也可以是一些错误代码\n      placeholder: 可在此粘贴图片，或点击下方 [Attach files by dragging & dropping, selecting or pasting them.] 文字来选择图片..."
  },
  {
    "path": ".github/ISSUE_TEMPLATE/02-featureRequest.yml",
    "content": "name: 功能建议 (Feature request)\ndescription: xxx 脚本的 xxx 功能有什么建议，或希望添加一些新功能...\ntitle: \"[脚本名称] 希望添加 xxx 功能（记得修改该标题示例，并移除该括号提示）\"\nlabels: 功能建议\nbody:\n  - type: markdown\n    attributes:\n      value: |\n        > [!NOTE]\n        > ***注意：本项目已不再接受任何【新脚本请求】！***\n        ****\n        发之前，请先搜下有没有类似的 [**Issues**](https://github.com/XIU2/UserScript/issues) （包括[**关闭**](https://github.com/XIU2/UserScript/issues?q=is%3Aissue+is%3Aclosed)的），请勿重复发起！  \n\n        > [!NOTE]\n        > 注意！**不接受**与其他脚本/扩展 `功能冲突` 的相关问题反馈（原因见 [#146](https://github.com/XIU2/UserScript/issues/146)）！  \n\n        另外，无论添加修改什么功能，都需要消耗大量时间与精力，因此请确保该功能建议是大家都需要的，而不是只为了满足个人小众需求！  \n        ****\n  - type: textarea\n    id: description\n    attributes:\n      label: 功能需求\n      description: 必填，你要什么样的功能？\n      placeholder: 请输入...\n    validations:\n      required: true\n  - type: textarea\n    id: anticipation\n    attributes:\n      label: 预期目标\n      description: 必填，你希望该功能具体是什么样子的？如果能提供 示例/截图/代码 就更好了\n      placeholder: 请输入...\n    validations:\n      required: true"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/03-autoPageRequest.yml",
    "content": "name: 自动无缝翻页 - 申请添加支持 (Autopage request)\ndescription: 自动无缝翻页 脚本 申请添加支持 xxx 网站...\ntitle: \"[自动无缝翻页] 申请添加支持 xxx 网站（记得修改该标题示例，并移除该括号提示）\"\nlabels: 功能建议\nbody:\n  - type: markdown\n    attributes:\n      value: |\n        > [!NOTE]\n        > ***注意：因为精力有限，目前主要维护现有规则，想要让我花费时间和精力帮你写规则，就请务必看完以下 `申请必读` ！***\n        ****\n        发之前，请先搜下有没有类似的 [**Issues**](https://github.com/XIU2/UserScript/issues) （包括[**关闭**](https://github.com/XIU2/UserScript/issues?q=is%3Aissue+is%3Aclosed)的），请勿重复发起！  \n\n        > [!IMPORTANT]\n        > ### \\# 申请必读：\n        > 1. 请先确认 **`不是动态加载内容`** 的网站（**鼠标指向页码，左下角不显示链接即代表是动态加载**），这类网站无法制作规则。\n        > 2. 如 **`需要登录`** 才能看到内容（无论注册有多简单），请**告诉我账号**，否则我**无法凭空制作**翻页规则（网课类不会支持）。 \n        > 3. 请提供希望添加支持的 **`可翻页(含有页码)的具体网页地址`** 以供我编写规则（特别是**页面很多的网站**），尽量减少我的工作量，否则可能拒绝。  \n        > 4. 对于 **`正版小说/漫画`** 网站，因为**反爬防盗**的原因也会导致无法制作规则（该脚本本质上也是爬虫，虽然只爬取下一页，但也会被阻碍）。  \n        > 5. 对于 **`没有 HTTPS`** 的网站（这种网站目前全网占比极少，且大都是一些老旧网站），是不考虑添加支持的。  \n        > 6. 如果你要申请对 `某个博客/论坛系统` 添加支持（即通用规则，所有使用这个博客/论坛系统的网站都会支持），那么需要提供 `官方博客/论坛地址` 及 其他**几个使用该博客/论坛系统的网站地址**，用于对比、验证，才能写出通用规则。\n\n        > - 对于需要登录才能看的网页，哪怕注册再简单我也不会去主动注册，你可以用一些 **`阅后即焚`** 的网站来告诉我你的账号密码（毕竟 Github 没有私信功能，你可以提前把密码改成别的，我用完了你再改回去），也可以用各种 **`在线临时邮箱`** 网站随便申请个账号给我用，但不管如何你必须提供一个账号给我才能编写规则，这是基本原则。\n        ****\n  - type: input\n    id: websitename\n    attributes:\n      label: 申请添加支持的 网站名称\n      description: 必填，网站名字叫什么？方便我一眼识别网站类型\n      placeholder: 请输入...\n    validations:\n      required: true\n  - type: textarea\n    id: webaddress\n    attributes:\n      label: 申请添加支持的 网页地址\n      description: 必填，请提供要添加自动翻页支持的 **`具体网页地址 URL`**（各类希望添加支持的页面地址都要写上，如首页、分类页、搜索页、阅读页什么的），***请勿只提供一个网站首页地址***（除非你只需要对 首页 添加支持），否则可能会直接拒绝申请。\n      placeholder: https://xxx\n    validations:\n      required: true"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/config.yml",
    "content": "blank_issues_enabled: false"
  },
  {
    "path": "3dm-Beautification.user.js",
    "content": "// ==UserScript==\n// @name         3DM论坛美化\n// @version      1.0.2\n// @author       X.I.U\n// @description  精简多余内容、样式优化\n// @icon         data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAC0klEQVR4nJ1TS0hUYRT+/nuvd2Z0nMbRrpPpTJozoZliQmEFFkT0QlwIRWlUi4jIaFGLqE0ELlsEElGrGCKimhaVVmhW9CBSy5ohk/I1pvO66R3nOt7X30IxoyTog8OBc/i+83EOB1gEoRP8Yq3fQP5WvHxqW7kkKfkmXgx+D3PCmjLLuPYmNXyotevfAud9XhQEHZtLKpe3uAozS+12MyRJRTSc7O7tCp9uOPe0Y1GBGAUeXdiyc8vuIr8gmHgQgFACSgwQg0L8oWtP7w3s2Z/vvKse9v0pcLup3FpWV97v8S5xElBMz2hgGIKRgQRcRZmYljVEo4r45E5gVVmtMNH3UC3ifvOfZ693OC3OB50jUFRAkjTIsoqjB7xo7YhgaERChpU4isuXHUsNs+Km7Y5K8rl1L2/PHld8gSFUa6V+r6TXhWMzMNW4EArFQCMRGNMywLFgLOnIXZoD0/PIuHXfSnvUwHUuqTNdJJFvW5+WfSs3z7TVnJiB25WJyXQNjpwl0LJXQVM4ECLDYorDXWJDPM/qzPJmYaxbjHBQlFfFlc4jqZRyyr3aDgYABYXJXIFl6esAws7vm1IFRvIteOktDB0IDYg9zMfP4ZbhwamUp2SWDBBQvhhsxgYQwoEBAQOAAQVD0sBaN0JPc6O/XwoyRk4bE+tLGmJUluSkDk2nSKVUwLIGhC48EQFAQOYyNa99FUiMVQ1Vt8kkPhHnfCd3OYXCjKYCj+0gz0Oo2nEGhDHNEX7BAKAbFIFnzxsrdzb5AIDJsmWh8eK9cUvDjrOv28dqCEsGDarOTgLmwwCgaho+vHx5M3i1+ca8N0opBwDJxAzux9/hffMlW3WF7cqKQk+9RXCBsCx0g079+BpgRjv9Zvtqwb31eHtooQADALquYzQmom/yGnofqzb3txe1kw6PKEOYoBmsbKaKmVeT6SNJ9kvPp68xv98v//FZ/4OfGzYzfKjarqcAAAAASUVORK5CYII=\n// @match        *://bbs.3dmgame.com/*\n// @license      GPL-3.0 License\n// @run-at       document-start\n// @namespace    https://greasyfork.org/scripts/413593\n// @supportURL   https://github.com/XIU2/UserScript\n// @homepageURL  https://github.com/XIU2/UserScript\n// ==/UserScript==\n\n(function() {\n    'use strict';\n    let style_Add = document.createElement('style');\n    style_Add.innerHTML = `\n[url=home.php?mod=space&uid=945662]@media[/url] (min-width:1366px) {\n\tbody {\n\t\tbackground: none;\n\t}\n\t.wp {\n\t\twidth: 70%;\n\t}\n}\n@media (max-width:650px) {\n\t#postlist .favatar.pls .avatar img {\n\t\tmargin: 0 0 2px;\n\t}\n}\n#toptb, .dnch_eo_pt,.dnch_eo_pr, .dnch_eo_f, .bml, dl.pil.cl, td.plc.plm .sign, .dnch_eo_pb,.dnch_eo_pt, .pls .side-star, .pls .side-group, div#h_nv, .res-footer-note, a>img[border=\"0\"].zoom, .md_ctrl, .pls.favatar .xg1, .wp.a_h, .hd_table, .a_cn, .wp.a_f, .bm.lk, .a_pt {\n\tdisplay: none !important;\n}\n.pls .avatar img {\n\twidth: 100px;\n\theight: 100px;\n\tbackground: none;\n\tpadding: 0;\n\tborder: 4px solid #ffffff\n}\n.avtm img {\n\twidth: 60px;\n}\n.pls .avatar {\n\ttext-align: center;\n}\n.t_fsz {\n\tmin-height: 60px;\n}\n.pls .pi {\n\ttext-align: center;\n\tpadding: 10px 0 0 0;\n\tborder: none;\n\toverflow: visible;\n}\n.xw1 {\n\tfont-size: 15px;\n}\ntextarea#fastpostmessage {\n\tbackground: none !important;\n}\n.pcb img {\n\tmax-width: 60%;\n\tmargin: 4px;\n}\n.rate {\n\tmargin: 0;\n}\n.ratl td {\n\tpadding: 0px;\n}\n.xw1 {\n\tfont-size: 12px;\n\tfont-weight: 500;\n}\n.xi2,.xi2 a,.xi3 a {\n\tcolor: red;\n}\n.mtw {\n\tmargin-top: 0px !important;\n}\n#p_btn {\n\tpadding: 0px;\n\tmargin: 0 0 0 1px;\n\tdisplay: flex;\n\tjustify-content: space-evenly;\n}\n#scbar {\n\tborder-top: 0;\n\tborder-bottom: 0;\n}`;\n    if (document.head) {\n        document.head.appendChild(style_Add);\n    } else {\n        let timer = setInterval(function(){\n            if (document.head) {\n                document.head.appendChild(style_Add);\n                clearInterval(timer);\n            }\n        });\n    }\n})();"
  },
  {
    "path": "3dm-Enhanced.user.js",
    "content": "// ==UserScript==\n// @name         3DM论坛增强\n// @version      1.1.3\n// @author       X.I.U\n// @description  自动回复、自动无缝翻页、清理置顶帖子、自动滚动至隐藏内容\n// @match        *://bbs.3dmgame.com/*\n// @icon         data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAC0klEQVR4nJ1TS0hUYRT+/nuvd2Z0nMbRrpPpTJozoZliQmEFFkT0QlwIRWlUi4jIaFGLqE0ELlsEElGrGCKimhaVVmhW9CBSy5ohk/I1pvO66R3nOt7X30IxoyTog8OBc/i+83EOB1gEoRP8Yq3fQP5WvHxqW7kkKfkmXgx+D3PCmjLLuPYmNXyotevfAud9XhQEHZtLKpe3uAozS+12MyRJRTSc7O7tCp9uOPe0Y1GBGAUeXdiyc8vuIr8gmHgQgFACSgwQg0L8oWtP7w3s2Z/vvKse9v0pcLup3FpWV97v8S5xElBMz2hgGIKRgQRcRZmYljVEo4r45E5gVVmtMNH3UC3ifvOfZ693OC3OB50jUFRAkjTIsoqjB7xo7YhgaERChpU4isuXHUsNs+Km7Y5K8rl1L2/PHld8gSFUa6V+r6TXhWMzMNW4EArFQCMRGNMywLFgLOnIXZoD0/PIuHXfSnvUwHUuqTNdJJFvW5+WfSs3z7TVnJiB25WJyXQNjpwl0LJXQVM4ECLDYorDXWJDPM/qzPJmYaxbjHBQlFfFlc4jqZRyyr3aDgYABYXJXIFl6esAws7vm1IFRvIteOktDB0IDYg9zMfP4ZbhwamUp2SWDBBQvhhsxgYQwoEBAQOAAQVD0sBaN0JPc6O/XwoyRk4bE+tLGmJUluSkDk2nSKVUwLIGhC48EQFAQOYyNa99FUiMVQ1Vt8kkPhHnfCd3OYXCjKYCj+0gz0Oo2nEGhDHNEX7BAKAbFIFnzxsrdzb5AIDJsmWh8eK9cUvDjrOv28dqCEsGDarOTgLmwwCgaho+vHx5M3i1+ca8N0opBwDJxAzux9/hffMlW3WF7cqKQk+9RXCBsCx0g079+BpgRjv9Zvtqwb31eHtooQADALquYzQmom/yGnofqzb3txe1kw6PKEOYoBmsbKaKmVeT6SNJ9kvPp68xv98v//FZ/4OfGzYzfKjarqcAAAAASUVORK5CYII=\n// @grant        GM_xmlhttpRequest\n// @grant        GM_registerMenuCommand\n// @grant        GM_unregisterMenuCommand\n// @grant        GM_openInTab\n// @grant        GM_getValue\n// @grant        GM_setValue\n// @grant        GM_notification\n// @license      GPL-3.0 License\n// @run-at       document-end\n// @namespace    https://greasyfork.org/scripts/412890\n// @supportURL   https://github.com/XIU2/UserScript\n// @homepageURL  https://github.com/XIU2/UserScript\n// ==/UserScript==\n\n(function() {\n    'use strict';\n    var menu_ALL = [\n        ['menu_autoReply', '自动回复', '自动回复', true],\n        ['menu_cleanTopPost', '清理置顶帖子', '清理置顶帖子', true],\n        ['menu_thread_pageLoading', '帖子内自动翻页', '帖子内自动翻页', true],\n        ['menu_scrollToShowhide', '自动滚动至隐藏内容', '自动滚动至隐藏内容', true]\n    ], menu_ID = [];\n    for (let i=0;i<menu_ALL.length;i++){ // 如果读取到的值为 null 就写入默认值\n        if (GM_getValue(menu_ALL[i][0]) == null){GM_setValue(menu_ALL[i][0], menu_ALL[i][3])};\n    }\n    registerMenuCommand();\n\n    // 注册脚本菜单\n    function registerMenuCommand() {\n        if (menu_ID.length > menu_ALL.length){ // 如果菜单ID数组多于菜单数组，说明不是首次添加菜单，需要卸载所有脚本菜单\n            for (let i=0;i<menu_ID.length;i++){\n                GM_unregisterMenuCommand(menu_ID[i]);\n            }\n        }\n        for (let i=0;i<menu_ALL.length;i++){ // 循环注册脚本菜单\n            menu_ALL[i][3] = GM_getValue(menu_ALL[i][0]);\n            menu_ID[i] = GM_registerMenuCommand(`${menu_ALL[i][3]?'✅':'❌'} ${menu_ALL[i][1]}`, function(){menu_switch(`${menu_ALL[i][3]}`,`${menu_ALL[i][0]}`,`${menu_ALL[i][2]}`)});\n        }\n        menu_ID[menu_ID.length] = GM_registerMenuCommand('💬 反馈 & 建议', function () {window.GM_openInTab('https://github.com/XIU2/UserScript#xiu2userscript', {active: true,insert: true,setParent: true});window.GM_openInTab('https://greasyfork.org/zh-CN/scripts/412890/feedback', {active: true,insert: true,setParent: true});});\n    }\n\n    // 菜单开关\n    function menu_switch(menu_status, Name, Tips) {\n        if (menu_status == 'true'){\n            GM_setValue(`${Name}`, false);\n            GM_notification({text: `已关闭 [${Tips}] 功能\\n（点击刷新网页后生效）`, timeout: 3500, onclick: function(){location.reload();}});\n        }else{\n            GM_setValue(`${Name}`, true);\n            GM_notification({text: `已开启 [${Tips}] 功能\\n（点击刷新网页后生效）`, timeout: 3500, onclick: function(){location.reload();}});\n        }\n        registerMenuCommand(); // 重新注册脚本菜单\n    };\n\n    // 返回菜单值\n    function menu_value(menuName) {\n        for (let menu of menu_ALL) {\n            if (menu[0] == menuName) {\n                return menu[3]\n            }\n        }\n    }\n\n\n    // 随机回复帖子的内容\n    var replyList = [\n        \"感谢楼主分享的内容！\",\n        \"感谢分享！给你点赞！\",\n        \"感谢分享！论坛因你更精彩！\",\n        \"看看隐藏内容是什么！谢谢！\",\n        \"先下载看看好不好用！\",\n        \"楼主一生平安！好人一生平安！\",\n        \"你说的观点我也很支持！\",\n        \"楼主太棒了！我先下为敬！\",\n        \"给楼主点赞，希望继续分享！\",\n        \"感谢论坛，感谢LZ热心分享！\",\n        \"感谢楼主分享优质内容，希望继续努力！\",\n        \"下载试用一下，如果用着不错就给楼主顶贴！\",\n        \"这么好的东西！感谢楼主分享！感谢论坛！\",\n        \"希望楼主继续分享更多好用的东西！谢谢！\",\n        \"看到楼主这么努力分享，我只能顶个贴感谢一下了！\",\n        \"好东西，拿走了，临走顶个贴感谢一下楼主！\",\n        \"这就非常给力了！感谢分享！\",\n        \"厉害了！先收藏，再回复！谢谢！\"\n    ];\n\n    // 检查是否登陆\n    var loginStatus = false;\n    checkLogin();\n\n    // 默认 ID 为 0\n    var curSite = {SiteTypeID: 0};\n\n    // 自动翻页规则\n    let DBSite = {\n        forum: {\n            SiteTypeID: 1\n        },\n        thread: {\n            SiteTypeID: 2,\n            pager: {\n                nextLink: '//a[@class=\"nxt\"][@href]',\n                pageElement: 'css;div#postlist > div[id^=\"post_\"]',\n                HT_insert: ['css;div#postlist', 2],\n                replaceE: 'css;#ct > .pgs'\n            }\n        },\n        search: {\n            SiteTypeID: 3,\n            pager: {\n                nextLink: '//a[@class=\"nxt\"][@href]',\n                pageElement: 'css;div#threadlist > ul',\n                HT_insert: ['css;div#threadlist', 2],\n                replaceE: 'css;div.pg'\n            }\n        },\n        guide: {\n            SiteTypeID: 4,\n            pager: {\n                nextLink: '//a[@class=\"nxt\"][@href]',\n                pageElement: 'css;div#threadlist div.bm_c table > tbody',\n                HT_insert: ['css;div#threadlist div.bm_c table', 2],\n                replaceE: 'css;div.pg'\n            }\n        },\n        youspace: {\n            SiteTypeID: 5,\n            pager: {\n                nextLink: '//a[@class=\"nxt\"][@href]',\n                pageElement: 'css;tbody > tr:not(.th)',\n                HT_insert: ['css;tbody', 2],\n                replaceE: 'css;div.pg'\n            }\n        }\n    };\n\n    // 用于脚本内部判断当前 URL 类型\n    let SiteType = {\n        FORUM: DBSite.forum.SiteTypeID, //   各板块帖子列表\n        THREAD: DBSite.thread.SiteTypeID, // 帖子内\n        GUIDE: DBSite.guide.SiteTypeID //    导读帖子列表\n    };\n\n    // 下一页URL\n    curSite.pageUrl = \"\";\n\n    // URL 匹配正则表达式\n    let patt_thread = /\\/thread-\\d+-\\d+\\-\\d+.html/,\n        patt_forum = /\\/forum-\\d+-\\d+\\.html/\n\n    // URL 判断\n    if (patt_thread.test(location.pathname) || location.search.indexOf('mod=viewthread') > -1){\n        // 帖子内\n        hidePgbtn(); //                  隐藏帖子内的 [下一页] 按钮\n        if(menu_value('menu_thread_pageLoading'))curSite = DBSite.thread;\n        if(menu_value('menu_autoReply'))autoReply(); //       如果有隐藏内容，则自动回复\n        if(menu_value('menu_scrollToShowhide'))setTimeout(function(){window.scrollTo(0,document.querySelector('.showhide').offsetTop)}, 500); // 滚动至隐藏内容\n    } else if (patt_forum.test(location.pathname) || location.search.indexOf('mod=forumdisplay') > -1){\n        // 各板块帖子列表\n        curSite = DBSite.forum;\n        if(menu_value('menu_cleanTopPost'))cleanTopPost(); // 清理置顶帖子\n    } else if (location.search.indexOf('mod=guide') > -1){\n        // 导读帖子列表\n        curSite = DBSite.guide;\n    } else if (location.pathname === '/search.php') {\n        // 搜索结果列表\n        curSite = DBSite.search;\n    } else if(location.search.indexOf('mod=space') > -1 && location.search.indexOf('&view=me') > -1) {\n        // 别人的主题/回复\n        curSite = DBSite.youspace;\n    } else {\n        curSite = DBSite.forum;\n    }\n\n    pageLoading(); //                       自动翻页\n\n\n    // 判断是否登陆\n    function checkLogin(){\n        let checklogin = document.querySelectorAll('.wp.h_menu p a');\n        if (checklogin){\n            for (let value of checklogin) {\n                if (value.textContent == '退出'){\n                    loginStatus = true;\n                }\n            }\n        }\n    }\n\n\n    // 自动回复\n    function autoReply(){\n        if (loginStatus){\n            // 存在隐藏内容，则自动回复\n            let autoreply = document.querySelector('.locked a');\n            if (autoreply){\n                writeReply();\n                // 滚动至隐藏内容\n                if(menu_value('menu_scrollToShowhide')){\n                    let showhideTime=setInterval(function(){\n                        let showhide=document.querySelector('.showhide')\n                        if(showhide){\n                            clearInterval(showhideTime)\n                            window.scrollTo(0,showhide.offsetTop)\n                        }}, 100)\n                    }else{\n                        setTimeout(function(){window.scrollTo(0,0)}, 1000);\n                    }\n            }\n        }\n\n    }\n\n\n    // 写入自动回复内容\n    function writeReply(){\n        let textarea = document.getElementById('fastpostmessage');\n        if (textarea){\n            textarea.value = textarea.value + replyList[Math.floor((Math.random()*replyList.length))] + replyList[Math.floor((Math.random()*replyList.length))];\n            let fastpostsubmit = document.getElementById('fastpostsubmit');\n            if (fastpostsubmit){\n                fastpostsubmit.click();\n            }\n        }\n    }\n\n\n    // 清理置顶帖子\n    function cleanTopPost(){\n        let showhide = document.querySelectorAll('a.showhide.y');\n        if (showhide.length > 0){\n            showhide.forEach(el=>el.click());\n        }\n    }\n\n\n    // 隐藏帖子内的 [下一页] 按钮\n    function hidePgbtn() {\n        document.lastChild.appendChild(document.createElement('style')).textContent = '.pgbtn {display: none;}';\n    }\n\n\n    // 自动翻页\n    function pageLoading() {\n        if (curSite.SiteTypeID > 0){\n            windowScroll(function (direction, e) {\n                if (direction === 'down') { // 下滑才准备翻页\n                    let scrollTop = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop;\n                    let scrollDelta = 666;\n                    if (document.documentElement.scrollHeight <= document.documentElement.clientHeight + scrollTop + scrollDelta) {\n                        if (curSite.SiteTypeID === SiteType.FORUM) { // 如果是各版块帖子列表则直接点下一页就行了\n                            let autopbn = document.querySelector('#autopbn');\n                            if (autopbn && autopbn.textContent == '下一页 »'){ // 如果已经在加载中了，就忽略\n                                autopbn.click();\n                            }\n                        }else{\n                            ShowPager.loadMorePage();\n                        }\n                    }\n                }\n            });\n        }\n    }\n\n\n    // 滚动条事件\n    function windowScroll(fn1) {\n        var beforeScrollTop = document.documentElement.scrollTop,\n            fn = fn1 || function () {};\n        setTimeout(function () { // 延时执行，避免刚载入到页面就触发翻页事件\n            window.addEventListener('scroll', function (e) {\n                var afterScrollTop = document.documentElement.scrollTop,\n                    delta = afterScrollTop - beforeScrollTop;\n                if (delta == 0) return false;\n                fn(delta > 0 ? 'down' : 'up', e);\n                beforeScrollTop = afterScrollTop;\n            }, false);\n        }, 1000)\n    }\n\n\n    // 修改自 https://greasyfork.org/scripts/14178 , https://github.com/machsix/Super-preloader\n    var ShowPager = {\n        getFullHref: function (e) {\n            if (e != null && e.nodeType === 1 && e.href && e.href.slice(0,4) === 'http') return e.href;\n            return '';\n        },\n        createDocumentByString: function (e) {\n            if (e) {\n                if ('HTML' !== document.documentElement.nodeName) return (new DOMParser).parseFromString(e, 'application/xhtml+xml');\n                var t;\n                try { t = (new DOMParser).parseFromString(e, 'text/html');} catch (e) {}\n                if (t) return t;\n                if (document.implementation.createHTMLDocument) {\n                    t = document.implementation.createHTMLDocument('ADocument');\n                } else {\n                    try {((t = document.cloneNode(!1)).appendChild(t.importNode(document.documentElement, !1)), t.documentElement.appendChild(t.createElement('head')), t.documentElement.appendChild(t.createElement('body')));} catch (e) {}\n                }\n                if (t) {\n                    var r = document.createRange(),\n                        n = r.createContextualFragment(e);\n                    r.selectNodeContents(document.body);\n                    t.body.appendChild(n);\n                    for (var a, o = { TITLE: !0, META: !0, LINK: !0, STYLE: !0, BASE: !0}, i = t.body, s = i.childNodes, c = s.length - 1; c >= 0; c--) o[(a = s[c]).nodeName] && i.removeChild(a);\n                    return t;\n                }\n            } else console.error('没有找到要转成 DOM 的字符串');\n        },\n        loadMorePage: function () {\n            if (curSite.pager) {\n                let curPageEle = getElementByXpath(curSite.pager.nextLink);\n                var url = this.getFullHref(curPageEle);\n                //console.log(`${url} ${curPageEle} ${curSite.pageUrl}`);\n                if(url === '') return;\n                if(curSite.pageUrl === url) return;// 不会重复加载相同的页面\n                curSite.pageUrl = url;\n                // 读取下一页的数据\n                curSite.pager.startFilter && curSite.pager.startFilter();\n                GM_xmlhttpRequest({\n                    url: url,\n                    method: \"GET\",\n                    timeout: 5000,\n                    onload: function (response) {\n                        try {\n                            var newBody = ShowPager.createDocumentByString(response.responseText);\n                            let pageElems = getAllElements(curSite.pager.pageElement, newBody, newBody);\n                            let toElement = getAllElements(curSite.pager.HT_insert[0])[0];\n                            if (pageElems.length >= 0) {\n                                let addTo = \"beforeend\";\n                                if (curSite.pager.HT_insert[1] == 1) addTo = \"beforebegin\";\n                                // 插入新页面元素\n                                pageElems.forEach(function (one) {\n                                    toElement.insertAdjacentElement(addTo, one);\n                                });\n                                // 替换待替换元素\n                                try {\n                                    let oriE = getAllElements(curSite.pager.replaceE);\n                                    let repE = getAllElements(curSite.pager.replaceE, newBody, newBody);\n                                    if (oriE.length === repE.length) {\n                                        for (var i = 0; i < oriE.length; i++) {\n                                            oriE[i].outerHTML = repE[i].outerHTML;\n                                        }\n                                    }\n                                } catch (e) {\n                                    console.log(e);\n                                }\n                            }\n                        } catch (e) {\n                            console.log(e);\n                        }\n                    }\n                });\n            }\n        },\n    };\n    function getElementByCSS(css, contextNode = document) {\n        return contextNode.querySelector(css);\n    }\n    function getAllElementsByCSS(css, contextNode = document) {\n        return [].slice.call(contextNode.querySelectorAll(css));\n    }\n    function getElementByXpath(xpath, contextNode, doc = document) {\n        contextNode = contextNode || doc;\n        try {\n            const result = doc.evaluate(xpath, contextNode, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null);\n            // 应该总是返回一个元素节点\n            return result.singleNodeValue && result.singleNodeValue.nodeType === 1 && result.singleNodeValue;\n        } catch (err) {\n            throw new Error(`Invalid xpath: ${xpath}`);\n        }\n    }\n    function getAllElementsByXpath(xpath, contextNode, doc = document) {\n        contextNode = contextNode || doc;\n        const result = [];\n        try {\n            const query = doc.evaluate(xpath, contextNode, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);\n            for (let i = 0; i < query.snapshotLength; i++) {\n                const node = query.snapshotItem(i);\n                // 如果是 Element 节点\n                if (node.nodeType === 1) result.push(node);\n            }\n        } catch (err) {\n            throw new Error(`无效 Xpath: ${xpath}`);\n        }\n        return result;\n    }\n    function getAllElements(selector, contextNode = undefined, doc = document, win = window, _cplink = undefined) {\n        if (!selector) return [];\n        contextNode = contextNode || doc;\n        if (typeof selector === 'string') {\n            if (selector.search(/^css;/i) === 0) {\n                return getAllElementsByCSS(selector.slice(4), contextNode);\n            } else {\n                return getAllElementsByXpath(selector, contextNode, doc);\n            }\n        } else {\n            const query = selector(doc, win, _cplink);\n            if (!Array.isArray(query)) {\n                throw new Error('getAllElements 返回错误类型');\n            } else {\n                return query;\n            }\n        }\n    }\n})();"
  },
  {
    "path": "52pojie-Beautification.user.js",
    "content": "// ==UserScript==\n// @name         吾爱破解论坛美化\n// @version      1.0.9\n// @author       X.I.U\n// @description  精简多余内容、样式优化\n// @match        *://www.52pojie.cn/*\n// @icon         data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAALB0lEQVR4nHWXe4wVd/nGP9+ZOZfds7tnF/bKcmupLUhBkhZFe8NmaaSmaSBpLGKpJhKlARLrPzRRo260GDFaU6qJ1CxqKxcrCZWgCFQrthhoWhcCFFl2z2Xve7rn7J6z5zYzz++P2W4vye9NJpNJ3vc77/vO+7zPM0aSvPFxsnv2UL9zJyYUwrntNgpHjhD53OeoXr6MaWjAu3oVb3KS2JYtTDzxBNH77ye8bh3RDRvIbNvGvP37Kb32GuVz57Db2qhcusS8X/8a9+ZNikePUrdrFwDl06dx02nqtm/Hbm/HSNKAMViOg3PrrVSvXwfAikbxSyWMZSHfxzgO0QcfpHrpEv7MDLguKhRwPvEJ3L4+5PsICC1aRDWVIrJqFeVLlzAEJsCJx5GEPzUFwGLfx0w88YQKf/wjVl0dqlaR52Hq66FSgXIZHAdVq9gtLXSmUvQbgwVYsRiEQuB54Ps4y5djt7SA64IxYNsYx0EQJBEOQ7lM8cwZTDgMnseifB7HXrAAPA95HvaCBTjLlqFiERMKgeNQ6e3Frq0lumEDAG1HjuCXy0zt3Ys3MAChEP70NPP27yfymc/wcXOTyeAsY0AivWABVjSKNzVF5a23QJLSHR1K2LYm9+yRXy5LkrxsVr7vyy8UgufJSUlSZvt2edmsiqdPawCUamtTsr5e6YULlYzFNLRqldzBQWW++U31wdzVD4F/Y6OSjY0aAJUvXRLl3l4NgJKNjeoHTff0aPrgQd2cDZr61a/k5XK6GeSq/tn78Gc/q2Q0qvTixUrG40rW1SnhOBpcvlySVDp/XpXr1+X7vtyxMQ2tXKlkLKZkU5NSLS1KGKPCSy/JmTl6FLu9HWWzhO+4g9jWrfSHQlizLbQaG6n09s49+0CypgY8D6uuDj+bxdg2Xi7HolwOq6EhGLp8ntI77+AdPEjt5s3Eu7sZ37wZyxgkgWXhjYzgRO6/n6kf/Qjf91lw9izlN99k8dAQTkcHo11d4Pt4AwPUbtoEwK0SpTNnGNu4EXkeVkMD3uAgAlLxOHZbG52JBINdXViz0x9atQo/l8OKxbDa2lAmg3wfamvBzWTUD8rs2CF3bEySNPLAA8r+4Adyh4eVP3JE5d5eefm8xr/yFQ2vXStJGt+yRYlIRMn6euUPHZLvecHcuK4kya9W9f/ZAChhjKYPHJDJ/exnKvz+91jxOKE776Tp+edJGEN4xQo6Llygcu0a2W9/m+I//wmA095O59AQ4488QvnsWbBt7M7OORj7U1OoWMRuacGEw4TuuovKxYv4mQymthYTDuONjeGNjNDc04OjbBZNT1N+5x2wLCiVEBC5916q/f3Y8+fjplIsTCYpvvoqld5ejDEUT5zAiscxloWXTlMtFJj/u99Rs2EDknA6Oj4CRy+TYXjFCvypKUw0CkDsySfBHRycg0eqpUWSNPXCC3Nt9kolpTs7lbDtuRaOfuELQUxTk5LxuNJLl86hI3/4sEa7upReuFAJ29bALPwkafq3v1XCGCUbGpRqb1fhyBFZhMMY2w5WZC7H6IMP4ixZwsSXv8zM4cNYkQhEIrT+/e8A5Ht6aD15kvh3voM/PQ3VKtb8+XOVZp9+mpnTp/HSaZAA5ir2p6aChWRZ+GNjuIODOCoUgvVrDFYsRuX8eca/+EUAQmvWAFDzyCNg26SamvCyWWYOHya8ejX4PpF77qH8xhsYoHjyJJ3pNFO//CVeKoVVV4dzxx3EHn8cFYvkvv99TCwGlQrRhx4itGwZpvzWWxq+6y6sxkZMKISqVZCwmpuhXKb28cfJ79+PXyxi1ddjbBu/WAx8YjFUrc7tfD+bpfbRR6l97DHspUuhXMZNJCi++iozx45h1dWB4wTdyGaJbduGyezapfxvfoMVjQbEYQxy3aB9loVKJUxNTdDKWWa029rwRkcxlsWHTb6PiURQNotfqQBgt7aimRmiXV2UTp2CaDRAwsgISyRMNZnU4OLFQQeMQZVKUL1l4U9MzFVsxeN4Y2NBIraNqa/HGPPBy6WAGV0Xed4cwQGYmho0ewazMX42S9upUzjVq1examtBQq6LZmboHBggf/AgE1/9Kgao2biRaFcXzpIlWK2tFI8fZ3rfPng/aQnl81gNDTi3305o5UrspUuJ3ncfoVWrsNvaABi6/Xa84eGAHQGiUcg89ZQSjqNUc7P6QdX+fklS4cgRzZw4obHNm1X817/k5fMBG+7aJUl6b8+eIK6pSQnbVu4Xv5iDaeHPf5YkZbu7lYzFNL51q4qnTql/lvRSs8QnSUwfOKABUHrZMnnT0ypfuaLCsWOa2L5dlevX5eVyugGqvPuusj/5ifpA0y++qNIbb3ywC+rrlayvVyIUmlu1+Zde0sTXv66R9euDxJ96SkMrVyoBSjY0KL1woTI7doiJr30toON4XLl9+zQAugma3LNHkpSMRDR4221zB/eByhcvarqnJ1gq8bhSTU1671vfUsKyVPr3v1V8/XVVbtyY60g1lZKbTgdd+fGPlXAcpTs6lO3uFu7oqIbWrNHAbJWV69c/QhyTzzyjmRMnlNu3T6MbNwZE47pKzZ8fVD4rLt43N5NR+e23JUmDK1YoEYmof7Yov1pV9tlnlaypUcIYZbu75ditrVSvXQuGIhRiYtMm6nbvxr1xg9LJk7RfuMBYV1cAvZERxh99lJnjx7FqauY2nAGmnnuO8Nq1pO65h0Vnz5L/wx8oXb1KqL6e8C23EP7UpzCOw8yhQ2DbIGE3N+MUT53CRKOoVIJymdjWrUTWraNu2zYyN28izyNy332E77wThUI4zc1U3n4b3le3lgWRCLgubl8frc8+S/Tzn8cvFLjF90EKkFKt4g0PB/tFAmOIPvwwTs1DD0GpFGC5UiG8di24LtXeXlQoYCIRGp5+GvOhijuTSXLd3eS6u+do2GppwUuniT/zDNMvvEChpwd76VKcW27BbmujevUq+QMHsGpqAoUs4SxejClfuKDhtWuDg/v756qrXr5M4eWXWXDtGkPLl1N5913m7d2L3dHB8JNPEoK55QXgTU4GWmF4OOD+xkb8iQmqly5RvXGD2Cy5vfeNb2C3t+O99x7R9euhcOyYErMCtHTxorxSSdVUKqDPF1+UXyppfOtWZXbv1szf/iZ3dFSVGzdUOHxYCcsKYDiL6/Lly8rt26eRBx5Q8R//UGb3bt2cRZhfqSizc2egomYHt/jaa3LK585BOExk+XKsWIzsrl04q1bhDQzgpdPUbNpEdP16TG0t9vz5eOk0U3v3UjpzBlNXFwxvuUz0058mvHIlI2vW4Lku5qc/pfUvf2Hec88BkPvhD5l6/nlCixYFosQY3L4+HPd//8NEIlR6eyEcJnT33eA4WPE49pIleAMDjG/fjgFajh7FikTIHz2K3dDwgY4oFmk7f57p/fsJffKTdJ45g93cTPXKFfI9PdQ8/DDx730PbJvcd7+L1dKCL2HNm4fJHz2qiccew25qwp+c/IDaZn+teP8yBmWz6GPfXhJUq9Ru2ULxlVcwtbVEu7qYeeUV/Hx+jkHDq1cTWr2a0l//iioV3KkpFvznP8HPaaq2NnhBtRrogQ+ZIZDWHzdj20GM637Ex4RC+NUqBjDhMJqlZWZ93vdtPXSI2i99KUgAoPT660z//Oc0/+lPGNumdO4cfiaDNzSENW8ekXvvxc9msTs6KL/5JtX//hd/YoL6nTup9vWhyUnk+xSPH6f55ZeZ3r+f6pUr1O3YgT86SnjdOqxYDDedxh8ZIXz33QD8H7qI+MxLoesNAAAAAElFTkSuQmCC\n// @grant        GM_registerMenuCommand\n// @grant        GM_unregisterMenuCommand\n// @grant        GM_openInTab\n// @grant        GM_getValue\n// @grant        GM_setValue\n// @grant        GM_notification\n// @license      GPL-3.0 License\n// @run-at       document-start\n// @namespace    https://greasyfork.org/scripts/412681\n// @supportURL   https://github.com/XIU2/UserScript\n// @homepageURL  https://github.com/XIU2/UserScript\n// ==/UserScript==\n\n(function() {\n    'use strict';\n    GM_registerMenuCommand('💬 反馈 & 建议', function () {window.GM_openInTab('https://github.com/XIU2/UserScript#xiu2userscript', {active: true,insert: true,setParent: true});window.GM_openInTab('https://greasyfork.org/zh-CN/scripts/412681/feedback', {active: true,insert: true,setParent: true});});\n    addStyle();\n    function addStyle() {\n        let style = `.bml {display:none !important;}\n#postlist .plc .t_f img, #postlist .plc .tattl img {\n    max-height: 500px !important;\n    width: auto !important;\n}\na[href=\"connect.php?mod=config\"], #toptb, #navmenu, #nv_ph, #nv, #pt .y, #chart, #ft, #custominfo_pmenu, .bm.lk, .dnch_eo_pt, .dnch_eo_pr, .dnch_eo_f, dl.pil.cl, td.plc.plm .sign, .dnch_eo_pb, .dnch_eo_pt, .pls .side-star, .pls .side-group, .res-footer-note, .comiis_nav, .scbar_hot_td, .md_ctrl, .pls.favatar .xg1 {\n\tdisplay:none !important;\n}\n\n@media (max-width:650px) {\n\t#postlist .favatar.pls .avatar img {\n\t\tmargin:0 0 2px;\n\t}\n\t.pls .avatar img {\n\t\tbackground:none;\n\t\tpadding:0;\n\t\tborder:4px solid #ffffff\n\t}\n\t.avtm img {\n\t\twidth:60px;\n\t}\n}\n.t_fsz {\n\tmin-height:60px;\n}\n.pls .pi {\n\ttext-align:center;\n\tpadding:10px 0 0 0;\n\tborder:none;\n\toverflow:visible;\n}\n.xw1 {\n\tfont-size:15px;\n}\ntextarea#fastpostmessage {\n\tbackground:none !important;\n}\n.pcb img {\n\tmax-width:60%;\n\tmargin:4px;\n}\n.rate {\n\tmargin:0;\n}\n.ratl td {\n\tpadding:0px;\n}\n.xw1 {\n\tfont-size:12px;\n\tfont-weight:500;\n}\n.xi2,.xi2 a,.xi3 a {\n\tcolor:red;\n}\n.toptitle_7ree td {\n    border-top: 1px solid #CDCDCD;\n}\n.mtw {\n\tmargin-top:0px !important;\n}\n\n#p_btn {\n\tpadding:0px;\n\tmargin:0 0 0 1px;\n\tdisplay:flex;\n\tjustify-content:space-evenly;\n}\n#scbar {\n\tborder-top:0;\n\tborder-bottom:0;\n\tbackground:0;\n}\n\n.pls .o li {\n    margin: 0 !important;;\n    height: 20px !important;;\n    line-height: 20px !important;;\n}\n\n/* 左侧层主信息 */\n.pls .avatar img {width: auto !important;max-height: 100px !important;}\n.pls .avatar {text-align:center !important; margin: 0 !important;}\n.pls .tns {padding: 0 !important;}\n\n/* 链接点击后颜色变浅（灰白色） */\n.tl th a:visited, .tl td.fn a:visited {\n    color: #aaa;\n}`;\n        document.lastChild.appendChild(document.createElement('style')).textContent = style;\n    }\n})();"
  },
  {
    "path": "52pojie-Enhanced.user.js",
    "content": "// ==UserScript==\n// @name         吾爱破解论坛增强 - 自动签到、翻页\n// @version      1.3.7\n// @author       X.I.U\n// @description  自动签到、自动无缝翻页、屏蔽导读悬赏贴（最新发表页）\n// @match        *://www.52pojie.cn/*\n// @icon         data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAALB0lEQVR4nHWXe4wVd/nGP9+ZOZfds7tnF/bKcmupLUhBkhZFe8NmaaSmaSBpLGKpJhKlARLrPzRRo260GDFaU6qJ1CxqKxcrCZWgCFQrthhoWhcCFFl2z2Xve7rn7J6z5zYzz++P2W4vye9NJpNJ3vc77/vO+7zPM0aSvPFxsnv2UL9zJyYUwrntNgpHjhD53OeoXr6MaWjAu3oVb3KS2JYtTDzxBNH77ye8bh3RDRvIbNvGvP37Kb32GuVz57Db2qhcusS8X/8a9+ZNikePUrdrFwDl06dx02nqtm/Hbm/HSNKAMViOg3PrrVSvXwfAikbxSyWMZSHfxzgO0QcfpHrpEv7MDLguKhRwPvEJ3L4+5PsICC1aRDWVIrJqFeVLlzAEJsCJx5GEPzUFwGLfx0w88YQKf/wjVl0dqlaR52Hq66FSgXIZHAdVq9gtLXSmUvQbgwVYsRiEQuB54Ps4y5djt7SA64IxYNsYx0EQJBEOQ7lM8cwZTDgMnseifB7HXrAAPA95HvaCBTjLlqFiERMKgeNQ6e3Frq0lumEDAG1HjuCXy0zt3Ys3MAChEP70NPP27yfymc/wcXOTyeAsY0AivWABVjSKNzVF5a23QJLSHR1K2LYm9+yRXy5LkrxsVr7vyy8UgufJSUlSZvt2edmsiqdPawCUamtTsr5e6YULlYzFNLRqldzBQWW++U31wdzVD4F/Y6OSjY0aAJUvXRLl3l4NgJKNjeoHTff0aPrgQd2cDZr61a/k5XK6GeSq/tn78Gc/q2Q0qvTixUrG40rW1SnhOBpcvlySVDp/XpXr1+X7vtyxMQ2tXKlkLKZkU5NSLS1KGKPCSy/JmTl6FLu9HWWzhO+4g9jWrfSHQlizLbQaG6n09s49+0CypgY8D6uuDj+bxdg2Xi7HolwOq6EhGLp8ntI77+AdPEjt5s3Eu7sZ37wZyxgkgWXhjYzgRO6/n6kf/Qjf91lw9izlN99k8dAQTkcHo11d4Pt4AwPUbtoEwK0SpTNnGNu4EXkeVkMD3uAgAlLxOHZbG52JBINdXViz0x9atQo/l8OKxbDa2lAmg3wfamvBzWTUD8rs2CF3bEySNPLAA8r+4Adyh4eVP3JE5d5eefm8xr/yFQ2vXStJGt+yRYlIRMn6euUPHZLvecHcuK4kya9W9f/ZAChhjKYPHJDJ/exnKvz+91jxOKE776Tp+edJGEN4xQo6Llygcu0a2W9/m+I//wmA095O59AQ4488QvnsWbBt7M7OORj7U1OoWMRuacGEw4TuuovKxYv4mQymthYTDuONjeGNjNDc04OjbBZNT1N+5x2wLCiVEBC5916q/f3Y8+fjplIsTCYpvvoqld5ejDEUT5zAiscxloWXTlMtFJj/u99Rs2EDknA6Oj4CRy+TYXjFCvypKUw0CkDsySfBHRycg0eqpUWSNPXCC3Nt9kolpTs7lbDtuRaOfuELQUxTk5LxuNJLl86hI3/4sEa7upReuFAJ29bALPwkafq3v1XCGCUbGpRqb1fhyBFZhMMY2w5WZC7H6IMP4ixZwsSXv8zM4cNYkQhEIrT+/e8A5Ht6aD15kvh3voM/PQ3VKtb8+XOVZp9+mpnTp/HSaZAA5ir2p6aChWRZ+GNjuIODOCoUgvVrDFYsRuX8eca/+EUAQmvWAFDzyCNg26SamvCyWWYOHya8ejX4PpF77qH8xhsYoHjyJJ3pNFO//CVeKoVVV4dzxx3EHn8cFYvkvv99TCwGlQrRhx4itGwZpvzWWxq+6y6sxkZMKISqVZCwmpuhXKb28cfJ79+PXyxi1ddjbBu/WAx8YjFUrc7tfD+bpfbRR6l97DHspUuhXMZNJCi++iozx45h1dWB4wTdyGaJbduGyezapfxvfoMVjQbEYQxy3aB9loVKJUxNTdDKWWa029rwRkcxlsWHTb6PiURQNotfqQBgt7aimRmiXV2UTp2CaDRAwsgISyRMNZnU4OLFQQeMQZVKUL1l4U9MzFVsxeN4Y2NBIraNqa/HGPPBy6WAGV0Xed4cwQGYmho0ewazMX42S9upUzjVq1examtBQq6LZmboHBggf/AgE1/9Kgao2biRaFcXzpIlWK2tFI8fZ3rfPng/aQnl81gNDTi3305o5UrspUuJ3ncfoVWrsNvaABi6/Xa84eGAHQGiUcg89ZQSjqNUc7P6QdX+fklS4cgRzZw4obHNm1X817/k5fMBG+7aJUl6b8+eIK6pSQnbVu4Xv5iDaeHPf5YkZbu7lYzFNL51q4qnTql/lvRSs8QnSUwfOKABUHrZMnnT0ypfuaLCsWOa2L5dlevX5eVyugGqvPuusj/5ifpA0y++qNIbb3ywC+rrlayvVyIUmlu1+Zde0sTXv66R9euDxJ96SkMrVyoBSjY0KL1woTI7doiJr30toON4XLl9+zQAugma3LNHkpSMRDR4221zB/eByhcvarqnJ1gq8bhSTU1671vfUsKyVPr3v1V8/XVVbtyY60g1lZKbTgdd+fGPlXAcpTs6lO3uFu7oqIbWrNHAbJWV69c/QhyTzzyjmRMnlNu3T6MbNwZE47pKzZ8fVD4rLt43N5NR+e23JUmDK1YoEYmof7Yov1pV9tlnlaypUcIYZbu75ditrVSvXQuGIhRiYtMm6nbvxr1xg9LJk7RfuMBYV1cAvZERxh99lJnjx7FqauY2nAGmnnuO8Nq1pO65h0Vnz5L/wx8oXb1KqL6e8C23EP7UpzCOw8yhQ2DbIGE3N+MUT53CRKOoVIJymdjWrUTWraNu2zYyN28izyNy332E77wThUI4zc1U3n4b3le3lgWRCLgubl8frc8+S/Tzn8cvFLjF90EKkFKt4g0PB/tFAmOIPvwwTs1DD0GpFGC5UiG8di24LtXeXlQoYCIRGp5+GvOhijuTSXLd3eS6u+do2GppwUuniT/zDNMvvEChpwd76VKcW27BbmujevUq+QMHsGpqAoUs4SxejClfuKDhtWuDg/v756qrXr5M4eWXWXDtGkPLl1N5913m7d2L3dHB8JNPEoK55QXgTU4GWmF4OOD+xkb8iQmqly5RvXGD2Cy5vfeNb2C3t+O99x7R9euhcOyYErMCtHTxorxSSdVUKqDPF1+UXyppfOtWZXbv1szf/iZ3dFSVGzdUOHxYCcsKYDiL6/Lly8rt26eRBx5Q8R//UGb3bt2cRZhfqSizc2egomYHt/jaa3LK585BOExk+XKsWIzsrl04q1bhDQzgpdPUbNpEdP16TG0t9vz5eOk0U3v3UjpzBlNXFwxvuUz0058mvHIlI2vW4Lku5qc/pfUvf2Hec88BkPvhD5l6/nlCixYFosQY3L4+HPd//8NEIlR6eyEcJnT33eA4WPE49pIleAMDjG/fjgFajh7FikTIHz2K3dDwgY4oFmk7f57p/fsJffKTdJ45g93cTPXKFfI9PdQ8/DDx730PbJvcd7+L1dKCL2HNm4fJHz2qiccew25qwp+c/IDaZn+teP8yBmWz6GPfXhJUq9Ru2ULxlVcwtbVEu7qYeeUV/Hx+jkHDq1cTWr2a0l//iioV3KkpFvznP8HPaaq2NnhBtRrogQ+ZIZDWHzdj20GM637Ex4RC+NUqBjDhMJqlZWZ93vdtPXSI2i99KUgAoPT660z//Oc0/+lPGNumdO4cfiaDNzSENW8ekXvvxc9msTs6KL/5JtX//hd/YoL6nTup9vWhyUnk+xSPH6f55ZeZ3r+f6pUr1O3YgT86SnjdOqxYDDedxh8ZIXz33QD8H7qI+MxLoesNAAAAAElFTkSuQmCC\n// @grant        GM_xmlhttpRequest\n// @grant        GM_registerMenuCommand\n// @grant        GM_unregisterMenuCommand\n// @grant        GM_openInTab\n// @grant        GM_getValue\n// @grant        GM_setValue\n// @grant        GM_notification\n// @license      GPL-3.0 License\n// @run-at       document-end\n// @namespace    https://greasyfork.org/scripts/412680\n// @supportURL   https://github.com/XIU2/UserScript\n// @homepageURL  https://github.com/XIU2/UserScript\n// ==/UserScript==\n\n(function() {\n    'use strict';\n    var menu_ALL = [\n        ['menu_autoClockIn', '自动签到', '自动签到', true],\n        ['menu_pageLoading', '自动无缝翻页', '自动无缝翻页', true],\n        ['menu_thread_pageLoading', '帖子内自动无缝翻页', '帖子内自动无缝翻页', true],\n        ['menu_delateReward', '屏蔽导读悬赏贴（最新发表）', '屏蔽导读悬赏贴', true]\n    ], menu_ID = [];\n    for (let i=0;i<menu_ALL.length;i++) { // 如果读取到的值为 null 就写入默认值\n        if (GM_getValue(menu_ALL[i][0]) == null){GM_setValue(menu_ALL[i][0], menu_ALL[i][3])};\n    }\n    registerMenuCommand();\n\n    // 注册脚本菜单\n    function registerMenuCommand() {\n        if (menu_ID.length > menu_ALL.length) { // 如果菜单ID数组多于菜单数组，说明不是首次添加菜单，需要卸载所有脚本菜单\n            for (let i=0;i<menu_ID.length;i++) {\n                GM_unregisterMenuCommand(menu_ID[i]);\n            }\n        }\n        for (let i=0;i<menu_ALL.length;i++) { // 循环注册脚本菜单\n            menu_ALL[i][3] = GM_getValue(menu_ALL[i][0]);\n            menu_ID[i] = GM_registerMenuCommand(`${menu_ALL[i][3]?'✅':'❌'} ${menu_ALL[i][1]}`, function(){menu_switch(`${menu_ALL[i][3]}`,`${menu_ALL[i][0]}`,`${menu_ALL[i][2]}`)});\n        }\n        menu_ID[menu_ID.length] = GM_registerMenuCommand('💬 反馈 & 建议', function () {window.GM_openInTab('https://github.com/XIU2/UserScript#xiu2userscript', {active: true,insert: true,setParent: true});window.GM_openInTab('https://greasyfork.org/zh-CN/scripts/412680/feedback', {active: true,insert: true,setParent: true});});\n    }\n\n    // 菜单开关\n    function menu_switch(menu_status, Name, Tips) {\n        if (menu_status == 'true') {\n            GM_setValue(`${Name}`, false);\n            GM_notification({text: `已关闭 [${Tips}] 功能\\n（点击刷新网页后生效）`, title: '吾爱破解论坛增强', timeout: 3000, onclick: function(){location.reload();}});\n        } else {\n            GM_setValue(`${Name}`, true);\n            GM_notification({text: `已开启 [${Tips}] 功能\\n（点击刷新网页后生效）`, title: '吾爱破解论坛增强', timeout: 3000, onclick: function(){location.reload();}});\n        }\n        registerMenuCommand(); // 重新注册脚本菜单\n    };\n\n    // 返回菜单值\n    function menu_value(menuName) {\n        for (let menu of menu_ALL) {\n            if (menu[0] == menuName) {\n                return menu[3]\n            }\n        }\n    }\n\n    var ShowPager;\n    showPager();\n    // 默认 ID 为 0\n    var curSite = {SiteTypeID: 0};\n\n    // 自动翻页规则\n    // type：1 = 脚本实现自动无缝翻页，2 = 网站自带了自动无缝翻页功能，只需要点击下一页按钮即可，这时 nextText 为按钮文本，避免一瞬间加载太多次下一页\n    // HT_insert：1 = 插入元素前面；2 = 插入元素中的最后一个子元素后面\n    // scrollDelta：数值越大，滚动条触发点越靠上（越早开始翻页）\n    let DBSite = {\n        forum: {\n            SiteTypeID: 1,\n            pager: {\n                type: 2,\n                nextLink: '#autopbn',\n                nextText: '下一页 »',\n                scrollDelta: 766\n            }\n        },\n        thread: {\n            SiteTypeID: 2,\n            pager: {\n                type: 1,\n                nextLink: '//a[@class=\"nxt\"][@href]',\n                pageElement: 'css;div#postlist > div[id^=\"post_\"]',\n                HT_insert: ['css;div#postlist', 2],\n                replaceE: 'css;#ct > .pgs',\n                scrollDelta: 766\n            }\n        },\n        search: {\n            SiteTypeID: 3,\n            pager: {\n                type: 1,\n                nextLink: '//a[@class=\"nxt\"][@href]',\n                pageElement: 'css;div#threadlist > ul',\n                HT_insert: ['css;div#threadlist', 2],\n                replaceE: 'css;div.pg',\n                scrollDelta: 766\n            }\n        },\n        guide: {\n            SiteTypeID: 4,\n            pager: {\n                type: 1,\n                nextLink: '//a[@class=\"nxt\"][@href]',\n                pageElement: 'css;div#threadlist div.bm_c table > tbody',\n                HT_insert: ['css;div#threadlist div.bm_c table', 2],\n                replaceE: 'css;div.pg',\n                scrollDelta: 766\n            }\n        },\n        youspace: {\n            SiteTypeID: 5,\n            pager: {\n                type: 1,\n                nextLink: '//a[@class=\"nxt\"][@href]',\n                pageElement: 'css;tbody > tr:not(.th)',\n                HT_insert: ['css;tbody', 2],\n                replaceE: 'css;div.pg',\n                scrollDelta: 1000\n            }\n        },\n        collection: {\n            SiteTypeID: 6,\n            pager: {\n                type: 1,\n                nextLink: '//a[@class=\"nxt\"][@href]',\n                pageElement: 'css;div#ct div.bm_c table > tbody',\n                HT_insert: ['css;div#ct div.bm_c table', 2],\n                replaceE: 'css;div.pg',\n                scrollDelta: 899\n            }\n        },\n        favorite: {\n            SiteTypeID: 7,\n            pager: {\n                type: 1,\n                nextLink: '//a[@class=\"nxt\"][@href]',\n                pageElement: 'css;ul#favorite_ul > li',\n                HT_insert: ['css;ul#favorite_ul', 2],\n                replaceE: 'css;div.pg',\n                scrollDelta: 899\n            }\n        }\n    };\n\n    // URL 匹配正则表达式\n    let patt_thread = /\\/thread-\\d+-\\d+\\-\\d+.html/,\n        patt_forum = /\\/forum-\\d+-\\d+\\.html/\n\n    // URL 判断\n    if (patt_thread.test(location.pathname) || location.search.indexOf('mod=viewthread') > -1) {\n        if (menu_value('menu_thread_pageLoading')) {\n            curSite = DBSite.thread; //      帖子内\n            hidePgbtn(); //                  隐藏帖子内的 [下一页] 按钮\n        }\n    } else if (patt_forum.test(location.pathname) || location.search.indexOf('mod=forumdisplay') > -1) {\n        curSite = DBSite.forum; //           各板块帖子列表\n    } else if (location.search.indexOf('mod=guide') > -1) {\n        curSite = DBSite.guide; //           导读帖子列表\n        delateReward(); //                   屏蔽导读悬赏贴（最新发表）\n    } else if (location.search.indexOf('mod=collection') > -1) {\n        curSite = DBSite.collection; //      淘贴列表\n    } else if (location.search.indexOf('do=favorite') > -1) {\n        curSite = DBSite.favorite; //        收藏列表\n    } else if (location.pathname === '/search.php') {\n        curSite = DBSite.search; //          搜索结果列表\n    } else if(location.search.indexOf('mod=space') > -1 && location.search.indexOf('&view=me') > -1) { // 别人的主题/回复\n        curSite = DBSite.youspace;\n    }\n    curSite.pageUrl = ''; // 下一页URL\n\n    qianDao(); // 自动签到\n    pageLoading(); // 自动翻页\n\n\n    // 自动签到（后台）\n    function qianDao() {\n        if (!menu_value('menu_autoClockIn')) return\n        if (location.pathname === '/home.php' && location.search.indexOf('mod=task') > -1) {return;}\n        let qiandao = document.querySelector('#um a[href^=\"home.php?mod=task&do=apply&id=2\"]');\n        if (qiandao) {\n            let iframe = document.createElement('iframe'); // XHR 方式无法签到，改用 iframe 框架打开签到网页\n            document.lastElementChild.appendChild(iframe);\n            iframe.style = 'display: none;';\n            iframe.src = qiandao.href;\n            qiandao.querySelector('.qq_bind').src = 'https://www.52pojie.cn/static/image/common/wbs.png'; // 修改 [打卡签到] 图标为 [签到完毕] 图标\n            qiandao.href = 'javascript:void(0);'\n        }\n    }\n\n\n    //屏蔽悬赏贴（导读-最新发表）\n    function delateReward() {\n        if (!menu_value('menu_delateReward')) return\n        if (location.search.indexOf('mod=guide&view=newthread') > -1) {\n            let tbody = document.querySelectorAll('#threadlist tbody[id^=\"normalthread\"]');\n            Array.from(tbody).forEach(function (_this) {\n                if (_this.querySelector('img[alt=\"悬赏\"]')) {\n                    _this.remove();\n                }\n            })\n        }\n\n        if (document.body.scrollHeight < window.innerHeight) {\n            // 如果屏蔽悬赏贴后，剩余帖子列表太少会没有滚动条，无法滚动页面触发自动翻页事件，需要手动触发\n            ShowPager.loadMorePage();\n        }\n    }\n\n\n    // 隐藏帖子内的 [下一页] 按钮\n    function hidePgbtn() {\n        document.lastChild.appendChild(document.createElement('style')).textContent = '.pgbtn {display: none;}';\n    }\n\n\n    // 自动翻页\n    function pageLoading() {\n        if (!menu_value('menu_pageLoading')) return\n        if (curSite.SiteTypeID > 0) {\n            windowScroll(function (direction, e) {\n                if (direction === \"down\") { // 下滑才准备翻页\n                    let scrollTop = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop;\n                    let scrollDelta = curSite.pager.scrollDelta;\n                    if (document.documentElement.scrollHeight <= document.documentElement.clientHeight + scrollTop + scrollDelta) {\n                        if (curSite.pager.type === 1) {\n                            ShowPager.loadMorePage();\n                        } else {\n                            let autopbn = document.querySelector(curSite.pager.nextLink);\n                            if (autopbn && autopbn.textContent == curSite.pager.nextText) { // 如果正在加载，就不再点击\n                                autopbn.click();\n                            }\n                        }\n                    }\n                }\n            });\n        }\n    }\n\n\n    // 滚动条事件\n    function windowScroll(fn1) {\n        var beforeScrollTop = document.documentElement.scrollTop,\n            fn = fn1 || function () {};\n        setTimeout(function () { // 延时执行，避免刚载入到页面就触发翻页事件\n            window.addEventListener('scroll', function (e) {\n                var afterScrollTop = document.documentElement.scrollTop,\n                    delta = afterScrollTop - beforeScrollTop;\n                if (delta == 0) return false;\n                fn(delta > 0 ? 'down' : 'up', e);\n                beforeScrollTop = afterScrollTop;\n            }, false);\n        }, 1000)\n    }\n\n\n    // 修改自 https://greasyfork.org/scripts/14178 , https://github.com/machsix/Super-preloader\n    function showPager() {\n        ShowPager = {\n            getFullHref: function (e) {\n                if (e != null && e.nodeType === 1 && e.href && e.href.slice(0,4) === 'http') return e.href;\n                return '';\n            },\n            createDocumentByString: function (e) {\n                if (e) {\n                    if ('HTML' !== document.documentElement.nodeName) return (new DOMParser).parseFromString(e, 'application/xhtml+xml');\n                    var t;\n                    try { t = (new DOMParser).parseFromString(e, 'text/html');} catch (e) {}\n                    if (t) return t;\n                    if (document.implementation.createHTMLDocument) {\n                        t = document.implementation.createHTMLDocument('ADocument');\n                    } else {\n                        try {((t = document.cloneNode(!1)).appendChild(t.importNode(document.documentElement, !1)), t.documentElement.appendChild(t.createElement('head')), t.documentElement.appendChild(t.createElement('body')));} catch (e) {}\n                    }\n                    if (t) {\n                        var r = document.createRange(),\n                            n = r.createContextualFragment(e);\n                        r.selectNodeContents(document.body);\n                        t.body.appendChild(n);\n                        for (var a, o = { TITLE: !0, META: !0, LINK: !0, STYLE: !0, BASE: !0}, i = t.body, s = i.childNodes, c = s.length - 1; c >= 0; c--) o[(a = s[c]).nodeName] && i.removeChild(a);\n                        return t;\n                    }\n                } else console.error('没有找到要转成 DOM 的字符串');\n            },\n            loadMorePage: function () {\n                if (curSite.pager) {\n                    let curPageEle = getElementByXpath(curSite.pager.nextLink);\n                    var url = this.getFullHref(curPageEle);\n                    //console.log(`${url} ${curPageEle} ${curSite.pageUrl}`);\n                    if(url === '') return;\n                    if(curSite.pageUrl === url) return;// 不会重复加载相同的页面\n                    curSite.pageUrl = url;\n                    // 读取下一页的数据\n                    curSite.pager.startFilter && curSite.pager.startFilter();\n                    GM_xmlhttpRequest({\n                        url: url,\n                        method: \"GET\",\n                        overrideMimeType: 'text/html; charset=' + (document.characterSet||document.charset||document.inputEncoding),\n                        timeout: 5000,\n                        onload: function (response) {\n                            try {\n                                var newBody = ShowPager.createDocumentByString(response.responseText);\n                                let pageElems = getAllElements(curSite.pager.pageElement, newBody, newBody);\n                                let toElement = getAllElements(curSite.pager.HT_insert[0])[0];\n                                if (pageElems.length >= 0) {\n                                    let addTo = \"beforeend\";\n                                    if (curSite.pager.HT_insert[1] == 1) addTo = \"beforebegin\";\n                                    // 插入新页面元素\n                                    pageElems.forEach(function (one) {\n                                        toElement.insertAdjacentElement(addTo, one);\n                                    });\n                                    //删除悬赏贴\n                                    delateReward();\n                                    // 替换待替换元素\n                                    try {\n                                        let oriE = getAllElements(curSite.pager.replaceE);\n                                        let repE = getAllElements(curSite.pager.replaceE, newBody, newBody);\n                                        if (oriE.length === repE.length) {\n                                            for (var i = 0; i < oriE.length; i++) {\n                                                oriE[i].outerHTML = repE[i].outerHTML;\n                                            }\n                                        }\n                                    } catch (e) {\n                                        console.log(e);\n                                    }\n                                }\n                            } catch (e) {\n                                console.log(e);\n                            }\n                        }\n                    });\n                }\n            },\n        };\n    }\n    function getElementByCSS(css, contextNode = document) {\n        return contextNode.querySelector(css);\n    }\n    function getAllElementsByCSS(css, contextNode = document) {\n        return [].slice.call(contextNode.querySelectorAll(css));\n    }\n    function getElementByXpath(xpath, contextNode, doc = document) {\n        contextNode = contextNode || doc;\n        try {\n            const result = doc.evaluate(xpath, contextNode, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null);\n            // 应该总是返回一个元素节点\n            return result.singleNodeValue && result.singleNodeValue.nodeType === 1 && result.singleNodeValue;\n        } catch (err) {\n            throw new Error(`Invalid xpath: ${xpath}`);\n        }\n    }\n    function getAllElementsByXpath(xpath, contextNode, doc = document) {\n        contextNode = contextNode || doc;\n        const result = [];\n        try {\n            const query = doc.evaluate(xpath, contextNode, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);\n            for (let i = 0; i < query.snapshotLength; i++) {\n                const node = query.snapshotItem(i);\n                // 如果是 Element 节点\n                if (node.nodeType === 1) result.push(node);\n            }\n        } catch (err) {\n            throw new Error(`无效 Xpath: ${xpath}`);\n        }\n        return result;\n    }\n    function getAllElements(selector, contextNode = undefined, doc = document, win = window, _cplink = undefined) {\n        if (!selector) return [];\n        contextNode = contextNode || doc;\n        if (typeof selector === 'string') {\n            if (selector.search(/^css;/i) === 0) {\n                return getAllElementsByCSS(selector.slice(4), contextNode);\n            } else {\n                return getAllElementsByXpath(selector, contextNode, doc);\n            }\n        } else {\n            const query = selector(doc, win, _cplink);\n            if (!Array.isArray(query)) {\n                throw new Error('getAllElements 返回错误类型');\n            } else {\n                return query;\n            }\n        }\n    }\n})();"
  },
  {
    "path": "Autopage.user.js",
    "content": "// ==UserScript==\n// @name         AutoPager\n// @name:zh-CN   自动无缝翻页\n// @name:zh-TW   自動無縫翻頁\n// @name:ru      Автостраничник\n// @version      6.6.73\n// @author       X.I.U\n// @description  ⭐Append the next page content to the bottom seamlessly (like a waterfall, Unlimited scrolling, no need to manually click on the next page) ⭐, support various forums, social networking, games, comics, novels, academics, search engines (Google, Bing, Yahoo...) and other websites~\n// @description:zh-CN  ⭐无缝加载 下一页内容 至网页底部（类似瀑布流，无限滚动，无需手动点击下一页）⭐，目前支持：【所有「Discuz!、Flarum、phpBB、MyBB、Xiuno、XenForo、NexusPHP...」论坛】【百度、谷歌(Google)、必应(Bing)、搜狗、微信、360、Yahoo、Yandex 等搜索引擎...】、贴吧、豆瓣、知乎、NGA、V2EX、起点中文、千图网、千库网、Pixabay、Pixiv、3DM、游侠网、游民星空、NexusMods、Steam 创意工坊、CS.RIN.RU、RuTracker、BT之家、萌番组、动漫花园、樱花动漫、爱恋动漫、AGE 动漫、Nyaa、SrkBT、RARBG、SubHD、423Down、不死鸟、扩展迷、小众软件、【动漫狂、动漫屋、漫画猫、漫画屋、漫画 DB、HiComic、Mangabz、Xmanhua 等漫画网站...】、PubMed、Z-Library、GreasyFork、Github、StackOverflow（以上仅一小部分常见网站，更多的写不下了...\n// @description:zh-TW  ⭐無縫加載 下一頁內容 至網頁底部（類似瀑布流，无限滚动，無需手働點擊下一頁）⭐，支持各論壇、社交、遊戲、漫畫、小說、學術、搜索引擎(Google、Bing、Yahoo...) 等網站~\n// @description:ru  ⭐Плавно добавляет содержимое следующей страницы к нижней части (как водопад, неограниченная прокрутка, не нужно вручную нажимать на следующую страницу) ⭐, поддерживает различные форумы, соцсети, игры, комиксы, романы, научные статьи, поисковики (Google, Bing, Yahoo...) и другие сайты~\n// @match        *://*/*\n// @connect      userscript.xiu2.xyz\n// @connect      userscript.h233.eu.org\n// @connect      bitbucket.org\n// @connect      jsd.onmicrosoft.cn\n// @connect      wget.la\n// @connect      ghfast.top\n// @connect      ghproxy.cfd\n// @connect      raw.dgithub.xyz\n// @connect      ghproxy.net\n// @connect      cdn.jsdmirror.com\n// @connect      js.cdn.haah.net\n// @connect      raw.kkgithub.com\n// @connect      gcore.jsdelivr.net\n// @connect      fastly.jsdelivr.net\n// @connect      jsd.proxy.aks.moe\n// @connect      jsdelivr.pai233.top\n// @connect      gh-proxy.org\n// @connect      hk.gh-proxy.org\n// @connect      hub.glowp.xyz\n// @connect      g.blfrp.cn\n// @connect      gh.catmak.name\n// @connect      www.xuexiniu.com\n// @connect      bbs.xuexiniu.com\n// @connect      weili.ooopic.com\n// @connect      www.ykmh.com\n// @icon         data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAALfElEQVRYhX2Xe3Bd1XXGf3vvc859X+nq6nUlW5Yly7JlI2xsYzAwtnk4ATpAxkNTHm0mnaTT/gHTTvrIBDLTpp1JUoZppqHQls5AKTR2INOWJJQSXF4x2BhsJCRZ8kuWZckPSVf3/Trn7N3RVTFpQrNn1l97n7O/vda31reWMKMPcmUJA9U8vrwHGdqCHn4HPzePaIxhVSoYbYRXrn7BeMVbCUduF6kVUXHwvQP+6amDaqDnoIompmQytaBnTmB8H5lowrjgFss48SBeI/hUEEZeudLi1ywhJEIJdL6Q8rzal/1a5SGC4XZrYBvWwEZobMdLdH6RH+z/Io1taEeh52fe8tOZbysl/ouWFvANYP7fSz4DgAEBBIL4xiS8ubmnVcTZK68aRK29Dtm8dgnZJydRW+/E2nrnp19nz+7U77+60zt0qMz07J/KxuQTwrIw4rMBCDP6wC+FIIcO34eudDdXf/7jD52Opi772lugY3AZr++hp06gz48j+waRqTWYmVHcS+chEMFeuw1hBzBzY7g/fQE9fmqBYPzBQKrpVa/R4OkCAnXlSvXnX9sIllk220BE4Z8OdHoj54YCK6Od1i2/iUmuRyDRk6NUn3+M0pv/hnf0AE40jEjEqP3oe6Rf/CGOWUTNjFKby2MP7EBtugURFWFxfOhB4+o4yfhrGAdZsxHaqZt6dNce9KXYFSPfGWS68JFqTXSqO7+MCaTqETGTwxSeeoRCOoPT2YUIhFC2jbQF/uwUatU6rPbVUM5T+OfHUO3dWKv6kSsGUIOD6PEPr+fswnanpecFZYVQhFAyjPS9Tj4xw2rcU+pJApEutWsvRjaBW8NUShilkE1JIqlUPfi6VMLNFTBVr+7KYKqJ8uEjlM+dJrR5K0L7eB+9hTd2CFrWYt33h0jH3O5Nj37TBGtgZUBkUN/6q4dQ7UmsnlW450//gU5PPRq460uQXAu+j//i99A/+UdUMoXqbMNkz2OnUkixlF4u9spe/HMTULyEaA7jXkoT2fEbQIXi838DJ4cRDXHkEjc2b0MPHdptZubGpBUbM0UfKQpBRDmKWRSD3tTMk87gddA2WGe4+dkzMD0CyQ5qP/4XVDCAvfkaLMvHamzEClpQzGDF46iuJOH1CaKr2tDZRfzhQ0Ru24NYsYrCM4/jDb+FiHdi3XU/0s3vr7WsGKxcfyPSy+bxi0UqJ8f/IriiE2vrnuWsLefQk8NoO4AMBBB9/XjDI6hQCjdTxq9WCaQ6ULaDFrIeKr3oIlv70Olz2K1xlAVaSUQojD786nKi9e5A3LBHMHn0W+LUUaS1FI9q+iZZWLhHdq/FxFbWSSfsIDIQwVw4g/GK2OuuhloNMzaCaF+DNBJtQfX8LFYigElX0OkQtZKHVy3jqwDlqWncCzPI3nU4t+2FWrH+OLHzHpRl3109memTOhqDi9NfkefHEKvWLTO+VKD68Qf4G27CueFWhJ/Df+0lVFcXJOJYnobm1ZjsJUxuFjyDjK/GNK2gND4ESuDPXcCOSaI7thPqX0ft8OtUn/oTKOQgkET39KJU4RbpZXOtNRW717p+FyRSdYT+v36H4u/fQXbfc3iRDkT3FsTGjWAWEU0OZKfAU9CyEdXVD2lQPduplmo4jkBEbMzK1VgDu5EVTe3gm1RHx6Bcxpz6YLkEO0lMYeFGi6z7eVMqhkT/ZrCb0LNT+NMTRH/nt/BLRdy3X8Nv68Lu6cZEHURjE6K3hirYeLRhDWyA4jxzH40RXJwkeuM29MpN+JcziEsz+Avz6GgcW1pYbUlEQCyHwYpSyxS7rGo+v8man4ZMATrAHf+QSt7FTkWR4QbsjlbIX8IMH0VuuAqj4piGAbhmEPPzI/injnNxMUPuwOtseOIxKKTJ7/8BTBxDdXcjO9sJdTeg01VqH4wg3CDB9bshHMKORbGolVOmeRW09dVdUxkbp3ruNM7GXnS1hK5OYSoSbBDZBcxCBtF3DcUzk6hkhGA0RmtHKx1rOkE04lbzWC1tqMRt1CZHUafPIs8H6/JsNTcgN+9YFq1qgbBUFUvnK9qrVghXCvWN8MBmivueJDtylqaeBKWJaXR4JZEtNyBWrkGt6AJboCZO4J49Rc64xGIhcgtZgm6egKhgtUQQto17WeHOLqCNj5Vowbr7q4j+Lcs1JhhEphcXLTebd0jPwpkx6Lwa++bbCR95ALecp5a6BrvrJoLdHajmMOTnKb3+BrVMntjARpzeFbz8jcfpa22gGm+kMJlm95Zu9M9+iI5G0G3d6EgIUSnjzs/gv/Icgd6rqcvz0IeYWnXc8pEtYnEe8gtXNL7xz74LehHSE3DqNP7EIdx3p5DSh7JNJePiBE/gN3Uz8NWHae5sRJYXqKQvU+raQPg7L6L3/QNMHcfp6EREGjC5LDp9GaOs5VQ/NQI93YctOxFPlwniDh/C3n47JHvrQPTBl3DHjiIDQUQ4jGhOYcqaQFuE0Nl53OnLRHfsZV33KsTxd6GlHeaP477zMl5uAWv7dkyLg6kZREsb+vgCcvPOuoaYuWNQWERs3jAuQ6nooXK6TH566cXnrjQK7uwFaoseWA3oJf2WEhEJUjm/gMgXCfdvQlFFv/R3uCND6FIRv7MfMnOIiaPoI/8NEb2kWAhfoLbdjLr2jmUv/8f+pVbkHRGNnZHum2/udxxtCn4j/vgEIjNTD4O9upfIprUYoxBKo9Z14jumTq7YYD9WayvuR++hs1lkshmha4iuNeDYiIAFMoCevIi+cJHaa29gmvsRTUn0R29g9u1D7bxxv+jrRnpD56cCkdjfV9NzpA+8A5VlLojWAczlGVTAYKXimIU8MlsjtKEXgiF0aRGdm8cEYnXm+O+/gdAGuWsP3shhTHoOEYqCCEF2DsrF5f+e/xiikUldrT6l3z+GevSaTahaZdRY6uFqxRXR1sRyzU/21Gu6OTOMfzmPd6kI8TgiX8B4imouj1QCKmVUNITJ59AnR1F77kH4ZaRnQFroMyeRW3egdt6DwIX391Gshv+4LK2jtcuLqK9t7ALjZXzH1uVM/mb/7BTRnjZEex+idQ2EAnjjR/BdF1PIoV2Bae/F/fh9dL5IYE0XUmpMNo+ev4AINSJWb0UPHa63Z7SvRN3/CHJpFHj2G4iZzAuBbTu+GWpIEGxrQ/3RnlvxG5M4kYa3Lc2u4uyFblnIE+xfAbF2RMtqZGsn/uTYUgHH+dz9eFMnqYx8gO+CEwkjhcDPF/DLHurSaeTm3RiWMsDHeuDrSFvBv3+bi08+N1Vwuj/vZWtu+dwclZlFrESoeZmZysJXoTsCjnVk8dDQBuN+n8RDD9fbcdG7leBX1iOkQjhBOHmQfKGAHW3CS6fR+QClmYuYMyPY265DtPVgtfctiw4V/GcfYfGNQzj3/u4DqlormUoZEQwuc0I//eSnY4G0wPJjmdGhw+mh0fWxNZ0037cXccPd1MXgk+GjNE/tR3+Le+YEyg5TnT6LXlwgcu1u7C99HZlsv3K2+vjvkTs2RvDe3747tm7Dy1SKvzSYPP/MLwxFAkIKEzEye2zswOXX395lJyK0fOFzRHfuglQfqPin59Nn0RNDuJk09vprkd0brmx5H7xCbfgQbrZ83OkfvN1pj0+ZmkBYNhjzCwCeffr/AsBDJyU6kqBwbPzRuTcP/GXV82lYlaJpfQ+BjVdhXX0tNKTAjvzKqKXPTeC++1NKY0c9kVz1SGzb9X8tjIdfzSFCDfUw/noA0scPuxBrwcvmmH3rQIvMm3/y0XdJS4JfIpiIUG9g+wcg6KDnZpGZNDQ0Ii5cSAtlPRHYct13axWvJNwadiiAli4iEP8VAJ89HQtR129TLiG1nos0Nt8dSOi12qi9lRq3utVqT/lirql24hW3vLBQi3d3XUqu73+PZOonBNR/WnbYSMeGTO5/Xf6ZtwDwPwtFRezQVs+sAAAAAElFTkSuQmCC\n// @grant        GM_xmlhttpRequest\n// @grant        GM_registerMenuCommand\n// @grant        GM_unregisterMenuCommand\n// @grant        GM_openInTab\n// @grant        GM_getValue\n// @grant        GM_setValue\n// @grant        GM_notification\n// @grant        GM_info\n// @grant        GM.info\n// @grant        window.onurlchange\n// @grant        unsafeWindow\n// @sandbox      JavaScript\n// @license      GPL-3.0 License\n// @run-at       document-end\n// @namespace    https://github.com/XIU2/UserScript\n// @supportURL   https://github.com/XIU2/UserScript\n// @homepageURL  https://github.com/XIU2/UserScript\n// @exclude      https://*.taobao.com/*\n// @exclude      https://*.tmall.com/*\n// @exclude      https://*.1688.com/*\n// @exclude      https://*.jd.com/*\n// @exclude      https://*.vip.com/*\n// @exclude      https://*.suning.com/*\n// @exclude      https://*.aliexpress.com/*\n// @exclude      https://*.paypal.com/*\n// @exclude      https://*.iqiyi.com/*\n// @exclude      https://*.youku.com/*\n// @exclude      https://m.v.qq.com/*\n// @exclude      https://v.qq.com/*\n// @exclude      https://*.acfun.cn/*\n// @exclude      https://t.bilibili.com/*\n// @exclude      https://www.bilibili.com/*\n// @exclude      https://live.bilibili.com/*\n// @exclude      https://space.bilibili.com/*\n// @exclude      https://manga.bilibili.com/*\n// @exclude      https://member.bilibili.com/*\n// @exclude      https://message.bilibili.com/*\n// @exclude      https://*.youtube.com/*\n// @exclude      https://*.youtube-nocookie.com/*\n// @exclude      https://*.cnki.net/*\n// @exclude      https://mail.qq.com/*\n// @exclude      https://weread.qq.com/*\n// @exclude      https://*.weread.qq.com/*\n// @exclude      https://www.qidian.com/chapter/*\n// @exclude      https://bz.zzzmh.cn/*\n// @exclude      https://wallhaven.cc/*\n// @exclude      https://chrome.zzzmh.cn/*\n// @exclude      https://*.guazi.com/*\n// @exclude      https://*.liepin.com/*\n// @exclude      https://*.58.com/*\n// ==/UserScript==\n\n(function() {\n    'use strict';\n    let urlArr = [ // 外置翻页规则更新地址分流，以确保更新成功率（记得 connect）\n        'https://cdn.jsdmirror.com/gh/XIU2/UserScript/other/Autopage/rules.json',\n        //'https://js.cdn.haah.net/gh/XIU2/UserScript/other/Autopage/rules.json', // 证书过期\n        //'https://raw.kkgithub.com/XIU2/UserScript/master/other/Autopage/rules.json', // 超时\n        //'https://gcore.jsdelivr.net/gh/XIU2/UserScript/other/Autopage/rules.json',\n        'https://fastly.jsdelivr.net/gh/XIU2/UserScript/other/Autopage/rules.json',\n        //'https://jsd.proxy.aks.moe/gh/XIU2/UserScript/other/Autopage/rules.json',\n        //'https://jsdelivr.pai233.top/gh/XIU2/UserScript/other/Autopage/rules.json',\n        'https://hub.glowp.xyz/https://raw.githubusercontent.com/XIU2/UserScript/master/other/Autopage/rules.json',\n        'https://g.blfrp.cn/https://raw.githubusercontent.com/XIU2/UserScript/master/other/Autopage/rules.json',\n        'https://gh.catmak.name/https://raw.githubusercontent.com/XIU2/UserScript/master/other/Autopage/rules.json',\n        'https://gh-proxy.org/https://raw.githubusercontent.com/XIU2/UserScript/master/other/Autopage/rules.json',\n        'https://hk.gh-proxy.org/https://raw.githubusercontent.com/XIU2/UserScript/master/other/Autopage/rules.json',\n    ]\n    const urlArr2 = [\n        'https://userscript.h233.eu.org/other/Autopage/rules.json',\n        'https://userscript.xiu2.xyz/other/Autopage/rules.json',\n        'https://bitbucket.org/xiu2/userscript/raw/master/other/Autopage/rules.json',\n        'https://jsd.onmicrosoft.cn/gh/XIU2/UserScript/other/Autopage/rules.json',\n        'https://wget.la/https://raw.githubusercontent.com/XIU2/UserScript/master/other/Autopage/rules.json',\n        'https://ghfast.top/https://raw.githubusercontent.com/XIU2/UserScript/master/other/Autopage/rules.json',\n        //'https://ghproxy.cfd/https://raw.githubusercontent.com/XIU2/UserScript/master/other/Autopage/rules.json', // 超时\n        //'https://raw.dgithub.xyz/XIU2/UserScript/master/other/Autopage/rules.json', // 证书挂了\n        //'https://ghproxy.net/https://raw.githubusercontent.com/XIU2/UserScript/master/other/Autopage/rules.json', // 挂了\n    ],\n          loadMoreExclude1 = ['.smzdm.com','stackoverflow.com'],\n          loadMoreExclude2 = ['.steampowered.com','.zcool.com.cn'];\n\n    var menuAll = [\n        ['menu_disable', '✅ 已启用 (点击对当前网站禁用)', '❌ 已禁用 (点击对当前网站启用)', []],\n        ['menu_thread', '帖子内自动翻页 (社区类网站)', '帖子内自动翻页 (社区类网站)', true],\n        ['menu_page_number', '显示当前页码及点击暂停翻页', '显示当前页码及点击暂停翻页', true],\n        ['menu_pause_page', '左键双击网页空白处暂停翻页', '左键双击网页空白处暂停翻页', false],\n        ['menu_history', '添加历史记录+修改地址/标题', '添加历史记录+修改地址/标题', true],\n        ['menu_rules', '更新外置翻页规则 (定期自动)', '更新外置翻页规则 (定期自动)', {}],\n        ['menu_customRules', '自定义翻页规则', '自定义翻页规则', {}]\n    ], menuId = [], webType = 0, curSite = {SiteTypeID: 0}, DBSite, DBSite2, DBSiteNow, pausePage = true, pageNum = {now: 1, _now: 1}, urlC = false, nowLocation = '', lp = location.pathname, scriptHandler;\n    urlArr.push(...urlArr2); // 合并数组\n    window.autoPage = {lp: ()=>location.pathname, indexOF: indexOF, isMobile: isMobile, isUrlC: isUrlC, isPager: isPager, isTitle: isTitle, blank: forceTarget, getAll: getAll, getOne: getOne, getAllXpath: getAllXpath, getXpath: getXpath, getAllCSS: getAllCSS, getCSS: getCSS, getNextE: getNextE, getNextEP: getNextEP, getNextSP: getNextSP, getNextEPN: getNextEPN, getNextUPN: getNextUPN, getNextUP: getNextUP, getNextF: getNextF, getSearch: getSearch, getCookie: getCookie, insStyle: insStyle, insScript: insScript, cleanuEvent: cleanuEvent, src_bF: src_bF, xs_bF: xs_bF, pageNumIncrement: pageNumIncrement}\n    if (typeof GM_info != 'undefined') {scriptHandler = GM_info.scriptHandler;} else if (typeof GM != 'undefined' && typeof GM.info != 'undefined') {scriptHandler = GM.info.scriptHandler;} else {scriptHandler = '';}\n    for (let i=0;i<menuAll.length;i++){ // 如果读取到的值为 null 就写入默认值\n        if (GM_getValue(menuAll[i][0]) == null){GM_setValue(menuAll[i][0], menuAll[i][3])};\n    }\n    // 兼容不支持 GM_openInTab 的油猴脚本管理器\n    if (typeof GM_openInTab !== 'function') {GM_openInTab = openInTab}\n    // 如果浏览器不支持 structuredClone（Chromium 98 才完全支持），则使用 JSON 方法代替\n    if (typeof window.structuredClone !== 'function') {window.structuredClone = function(value) {return JSON.parse(JSON.stringify(value));}}\n\n    getRulesUrl();\n    registerMenuCommand();\n    if (menuId.length < 4) {return}\n    // 注册脚本菜单\n    function registerMenuCommand() {\n        if (menuId.length != []){\n            for (let i=0;i<menuId.length;i++){\n                GM_unregisterMenuCommand(menuId[i]);\n            }\n        }\n        for (let i=0;i<menuAll.length;i++) { // 循环注册脚本菜单\n            menuAll[i][3] = GM_getValue(menuAll[i][0]);\n\n            if (menuAll[i][0] === 'menu_disable') { // 启用/禁用\n\n                if (menu_disable('check')) { // 当前网站在禁用列表中\n                    menuId[i] = GM_registerMenuCommand(`${menuAll[i][2]}`, function(){menu_disable('del')});\n                    return\n                } else { // 不在禁用列表中\n                    webType = doesItSupport(); // 判断网站类型（即是否支持），顺便直接赋值\n                    if (webType === 0) {\n                        menuId[0] = GM_registerMenuCommand('❌ 当前网页暂不支持 [点击申请] (或无需翻页)', function(){GM_openInTab('https://github.com/XIU2/UserScript#xiu2userscript', {active: true,insert: true,setParent: true});GM_openInTab('https://greasyfork.org/zh-CN/scripts/419215/feedback', {active: true,insert: true,setParent: true});});\n                        menuId[1] = GM_registerMenuCommand('🔄 更新外置翻页规则 (定期自动)', function(){getRulesUrl(true)});\n                        menuId[2] = GM_registerMenuCommand('#️⃣ 自定义翻页规则', function(){customRules()});\n                        //console.info('[自动无缝翻页] - 暂不支持当前网页 [ ' + location.href + ' ]，申请支持: https://github.com/XIU2/UserScript / https://greasyfork.org/zh-CN/scripts/419215/feedback');\n                        return\n                    } else if (webType === -1) {\n                        return\n                    }\n                    menuId[i] = GM_registerMenuCommand(`${menuAll[i][1]}`, function(){menu_disable('add')});\n                }\n\n            } else if (menuAll[i][0] === 'menu_rules') {\n                menuId[i] = GM_registerMenuCommand(`🔄 ${menuAll[i][1]}`, function(){getRulesUrl(true)});\n\n            } else if (menuAll[i][0] === 'menu_customRules') {\n                menuId[i] = GM_registerMenuCommand(`#️⃣ ${menuAll[i][1]}`, function(){customRules()});\n\n            } else {\n                menuId[i] = GM_registerMenuCommand(`${menuAll[i][3]?'✅':'❌'} ${menuAll[i][1]}`, function(){menu_switch(menuAll[i][3], menuAll[i][0], menuAll[i][2])});\n            }\n        }\n        menuId[menuId.length] = GM_registerMenuCommand('💬 反馈失效 / 申请支持', function () {GM_openInTab('https://github.com/XIU2/UserScript#xiu2userscript', {active: true,insert: true,setParent: true});GM_openInTab('https://greasyfork.org/zh-CN/scripts/419215/feedback', {active: true,insert: true,setParent: true});});\n    }\n\n\n    // --------------------------------------------------------\n\n\n    // 判断是支持\n    function doesItSupport() {\n        setDBSite(); // 配置 DBSite 变量对象\n\n        // 遍历判断是否是某个已支持的网站，顺便直接赋值\n        let support = false;\n        end:\n        for (let now in DBSite) { // 遍历 对象\n            if (DBSite[now].ignore) continue; // 如果是特殊的内置规则（如通用规则）则跳过直接继续下一个循环\n\n            // 供其他函数在 域名/URL 判断阶段使用\n            if (typeof DBSite[now].url == 'function'){\n                DBSiteNow = DBSite[now] // 如果是脚本内置规则就没必要深度克隆了（用不上 rule 对象变量，毕竟是可以直接操作自身的）\n            } else {\n                DBSiteNow = structuredClone(DBSite[now]) //深度克隆是为了在后续 url 规则中通过操作 rule 对象变量来修改当前网页规则时，不会间接影响到 DBSite[now] 本身\n            }\n\n            // 如果是 数组\n            if (Array.isArray(DBSite[now].host)) {\n\n                for (let i of DBSite[now].host) { // 遍历 数组\n\n                    // 针对自定义翻页规则中的正则\n                    if (typeof i === 'string' && i.slice(0,1) === '/') i = new RegExp(i.slice(1,i.length-1))\n                    if ((i instanceof RegExp && i.test(location.hostname)) || (typeof i === 'string' && i === location.hostname)) {\n\n                        if (self != top) {if (!DBSite[now].iframe) continue end;} // 如果当前位于 iframe 框架下，就需要判断是否需要继续执行\n                        if (DBSite[now].url) {\n                            if (typeof DBSite[now].url == 'function') {\n                                DBSite[now].url();\n                            } else { // 自定义翻页规则时，因为同域名不同页面 url 分开写，所以如果没找到就需要跳出当前数组循环，继续规则循环\n                                try {\n                                    if (DBSite[now].url.slice(0,1) === '/') { // 如果是正则，则对 URL 路径进行匹配\n                                        if (new RegExp(DBSite[now].url.slice(1,DBSite[now].url.length-1), 'i').test(location.pathname + location.search) === true) {curSite = DBSite[now];} else {if (urlC === true) {support = true;}; break;}\n                                    } else { // 如果是函数，那就执行代码（url 规则中可通过操作 rule 这个对象变量来修改当前网页实际应用的规则）\n                                        if (new Function('fun','rule', DBSite[now].url)(window.autoPage,DBSiteNow)) {curSite = DBSiteNow;} else {if (urlC === true) {support = true;}; break;}\n                                    }\n                                } catch (e) {\n                                    console.error('[自动无缝翻页] - 当前网页规则 \"url\" 匹配出错，请检查：\\n', DBSite[now].url + '\\n\\n', e);\n                                }\n                            }\n                        } else {\n                            curSite = DBSite[now];\n                        }\n                        support = true; break end; // 如果找到了就退出所有循环\n                    }\n                }\n\n                // 如果是 正则/字符串\n            } else {\n                // 针对自定义翻页规则中的正则\n                if (typeof DBSite[now].host === 'string' && DBSite[now].host.slice(0,1) === '/') DBSite[now].host = new RegExp(DBSite[now].host.slice(1,DBSite[now].host.length-1))\n                if ((DBSite[now].host === undefined) || (DBSite[now].host instanceof RegExp && DBSite[now].host.test(location.hostname)) || (typeof DBSite[now].host === 'string' && DBSite[now].host === location.hostname)) {\n                    // 如果没有指定 host 规则，那么默认匹配所有域名（会对所有域名匹配 url 规则判断），可以当成一个简单的外置（自定义）通用规则方案\n\n                    if (self != top) {if (!DBSite[now].iframe) continue;} // 如果当前位于 iframe 框架下，就需要判断是否需要继续执行\n                    if (DBSite[now].url) {\n                        if (typeof DBSite[now].url == 'function') {\n                            DBSite[now].url();\n                        } else { // 自定义翻页规则时，因为同域名不同页面 url 分开写，所以如果没找到就需要继续规则循环\n                            try {\n                                if (DBSite[now].url.slice(0,1) === '/') { // 如果是正则，则对 URL 路径进行匹配\n                                    if (new RegExp(DBSite[now].url.slice(1,DBSite[now].url.length-1), 'i').test(location.pathname + location.search) === true) {curSite = DBSite[now];} else {if (urlC === true) {support = true;}; continue;}\n                                } else { // 如果是函数，那就执行代码（url 规则中可通过操作 rule 这个对象变量来修改当前网页实际应用的规则）\n                                    if (new Function('fun','rule', DBSite[now].url)(window.autoPage,DBSiteNow)) {curSite = DBSiteNow;} else {if (urlC === true) {support = true;}; continue;}\n\n                                }\n                            } catch (e) {\n                                console.error('[自动无缝翻页] - 当前网页规则 \"url\" 匹配出错，请检查：\\n', DBSite[now].url + '\\n\\n', e);\n                            }\n                        }\n                    } else {\n                        curSite = DBSite[now];\n                    }\n                    support = true; break; // 如果找到了就退出循环\n                }\n            }\n        }\n\n        DBSiteNow = undefined // 仅限判断阶段使用，判断完成就需要置空\n\n        if (support) {\n            console.info('[自动无缝翻页] - 独立规则 网站'); return 1;\n        } else if (self != top) {\n            return -1;\n        } else if (typeof discuz_uid != 'undefined' || getCSS('meta[name=\"author\" i][content*=\"Discuz!\" i], meta[name=\"generator\" i][content*=\"Discuz!\" i], body[id=\"nv_forum\" i][class^=\"pg_\" i][onkeydown*=\"27\"], body[id=\"nv_search\" i][onkeydown*=\"27\"]') || getXpath('id(\"ft\")[contains(string(),\"Discuz!\")]')) {\n            console.info(`[自动无缝翻页] - <Discuz!> 论坛`); return 2;\n\n        } else if (typeof flarum != 'undefined' || getCSS('#flarum-loading')) {\n            console.info(`[自动无缝翻页] - <Flarum> 论坛`); return 3;\n\n        } else if (typeof phpbb != 'undefined' || getCSS('body#phpbb')) {\n            console.info(`[自动无缝翻页] - <phpBB> 论坛`); return 4;\n\n        } else if (typeof xn != 'undefined' && getXpath('//footer//a[contains(string(), \"Xiuno\")] | //link[contains(@href, \"xiuno\")] | //script[contains(@src, \"xiuno\")]')) {\n            console.info(`[自动无缝翻页] - <Xiuno> 论坛`); return 5;\n\n        } else if (typeof XF != 'undefined') {\n            console.info(`[自动无缝翻页] - <XenForo> 论坛`); return 6;\n\n        } else if (typeof MyBB != 'undefined') {\n            console.info(`[自动无缝翻页] - <MyBB> 论坛`); return 14;\n\n        } else if (getCSS('head meta[name=\"generator\" i][content=\"nexusphp\" i]') || getXpath('id(\"footer\")[contains(string(), \"NexusPHP\")]')) {\n            console.info(`[自动无缝翻页] - <NexusPHP> 论坛`); return 7;\n\n        } else if (unsafeWindow.config && ((unsafeWindow.config.assetVersionEncoded && unsafeWindow.config.assetVersionEncoded.indexOf('gitea') !== -1) || (unsafeWindow.config.customEmojis && unsafeWindow.config.customEmojis.gitea))) {\n            console.info(`[自动无缝翻页] - <Forgejo/Gitea> git 托管系统`); return 15;\n\n        } else if (loadMoreExclude(loadMoreExclude1) && getAllCSS('.load-more, .load_more, .loadmore, #load-more, #load_more, #loadmore, [id^=\"loadmore\"], .show-more:not([data-gps-track]), .show_more, .ajax-more').length === 1) {\n            console.info(`[自动无缝翻页] - 部分自带 自动无缝翻页 的网站 1`); return 8;\n\n        } else if (loadMoreExclude(loadMoreExclude2) && getAllXpath('//*[self::a or self::span or self::button or self::div][text()=\"加载更多\"][not(@href) or @href=\"#\" or starts-with(@href, \"javascript\")]').length === 1) {\n            console.info(`[自动无缝翻页] - 部分自带 自动无缝翻页 的网站 2`); return 9;\n\n        } else if (getCSS('link[href*=\"/wp-content/\" i], script[src*=\"/wp-content/\" i], link[href*=\"/wp-includes/\" i], script[src*=\"/wp-includes/\" i], head>meta[name=generator][content*=\"WordPress\" i]')) {\n\n            //if (getAllCSS('article[class], div[id^=\"post-\"], ul[class*=\"post\"]>li.item, .post').length < 4 || getCSS('#nav-below, nav.navigation, nav.paging-navigation, .pagination, .wp-pagenavi, .pagenavi')) return 0;\n\n            if (getXpath('(//*[contains(@class, \"post-page-numbers\") and contains(@class, \"current\")])[last()]/following-sibling::a[1]')) {\n                DBSite.wp_article_post.pager.nextL = '(//*[contains(@class, \"post-page-numbers\") and contains(@class, \"current\")])[last()]/following-sibling::a[1]'; DBSite.wp_article_post.pager.replaceE = '//a[contains(@class,\"post-page-numbers\")]/..';\n            } else if (getXpath('(//div[contains(@class,\"fenye\")])[last()]//a[string()=\"下一页\"]')) {\n                DBSite.wp_article_post.pager.nextL = '(//div[contains(@class,\"fenye\")])[last()]//a[string()=\"下一页\"]'; DBSite.wp_article_post.pager.replaceE = '.fenye';\n            }\n            if (DBSite.wp_article_post.pager.nextL != undefined) {\n                if (getAllCSS('#entry-content>#content-innerText, .entry-content>#content-innerText').length == 1) {\n                    DBSite.wp_article_post.pager.pageE = '#entry-content>#content-innerText, .entry-content>#content-innerText'\n                } else if (getAllCSS('.entry-content .single-content img').length > 3) {\n                    DBSite.wp_article_post.pager.pageE = '.entry-content .single-content'\n                } else if (getAllCSS('.entry-content').length == 1) {\n                    DBSite.wp_article_post.pager.pageE = '.entry-content>*:not(.wbp-cbm):not(.page-links):not(.post-links):not(.article-paging):not(.entry-pagination):not(.pagination):not(.fenye):not(.open-message):not(#social):not(.article-social):not(.single-cat-tag):not(.single-meta):not(#fontsize):not(.clear):not(.tg-m):not(.tg-site):not(footer):not([class*=pagination])'\n                } else if (getAllCSS('.article-content').length == 1) {\n                    DBSite.wp_article_post.pager.pageE = '.article-content>*:not(.page-links):not(.post-links):not(.article-paging):not(.entry-pagination):not(.pagination):not(.fenye):not(.open-message):not(#social):not(.article-social):not(.single-cat-tag):not(.single-meta):not(#fontsize):not(.clear):not(.tg-m):not(.tg-site):not(footer):not([class*=pagination])'\n                } else if (getAllCSS('article').length == 1) {\n                    DBSite.wp_article_post.pager.pageE = 'article>*:not(.page-links):not(.post-links):not(.article-paging):not(.entry-pagination):not(.pagination):not(.fenye):not(.open-message):not(#social):not(.article-social):not(.single-cat-tag):not(.single-meta):not(#fontsize):not(.clear):not(.tg-m):not(.tg-site):not(footer):not([class*=pagination])'\n                }\n                if (DBSite.wp_article_post.pager.pageE != undefined) console.info(`[自动无缝翻页] - 部分使用 WordPress 的网站 - 文章内`); return 11;\n            }\n\n\n            if (getCSS('a.next, a.next-page')) {\n                DBSite.wp_article.pager.nextL = 'a.next, a.next-page'\n            } else if (getCSS('a[rel=\"next\" i], a[aria-label=\"next\" i], a[aria-label=\"下一个\"].page-link, a[aria-label=\"Next Page\" i], a[aria-label=\"下一页\"], a[rel=\"下一页\"], a[title=\"下一页\"], a[aria-label=\"下一頁\"], a[rel=\"下一頁\"], a[title=\"下一頁\"]')) {\n                DBSite.wp_article.pager.nextL = 'a[rel=\"next\" i], a[aria-label=\"next\" i], a[aria-label=\"下一个\"].page-link, a[aria-label=\"Next Page\" i], a[aria-label=\"下一页\"], a[rel=\"下一页\"], a[title=\"下一页\"], a[aria-label=\"下一頁\"], a[rel=\"下一頁\"], a[title=\"下一頁\"]'\n            } else if (getCSS('li.next-page > a, li.next > a, li.pagination-next>a')) {\n                DBSite.wp_article.pager.nextL = 'li.next-page > a, li.next > a, li.pagination-next>a'\n            } else if (getCSS('span.current+a')) {\n                DBSite.wp_article.pager.nextL = 'span.current+a'\n            } else if (getCSS('.nav-previous a, a.nav-previous')) {\n                DBSite.wp_article.pager.nextL = '.nav-previous a, a.nav-previous'\n            } else if (getCSS('.pagination>.page-item.active+li.page-item>a')) {\n                DBSite.wp_article.pager.nextL = '.pagination>.page-item.active+li.page-item>a'\n            } else {\n                const temp_page = getCSS('#nav-below, nav.navigation, nav.paging-navigation, #pagination:not([class*=\"entry\"]), .pagination:not([class*=\"entry\"]), .wp-pagenavi, .pagenavi, nav[role=\"navigation\"]')\n                if (temp_page && getXpath('//a[contains(text(), \"下一页\") or contains(text(), \"下一頁\") or contains(text(), \">\") or contains(text(), \"next\") or contains(text(), \"Next\") or contains(text(), \"NEXT\")]', temp_page)) {\n                    DBSite.wp_article.pager.nextL = '//*[self::ul or self::nav or self::div][@id=\"nav-below\" or @id=\"pagination\" or contains(@class, \"navigation\") or contains(@class, \"pagination\") or contains(@class, \"pagenavi\") or @role=\"navigation\"]//a[contains(text(), \"下一页\") or contains(text(), \"下一頁\") or contains(text(), \">\") or contains(text(), \"next\") or contains(text(), \"Next\") or contains(text(), \"NEXT\")]'\n                }\n            }\n\n            if (DBSite.wp_article.pager.nextL != undefined) {\n                if (DBSite.wp_article.pager.nextL.indexOf('//') !== 0) DBSite.wp_article.pager.replaceE += ',' + DBSite.wp_article.pager.nextL\n                if (getAllCSS('main').length == 1) {\n                    if (getAllCSS('main .posts-wrapper.row>div>article').length > 3) {\n                        DBSite.wp_article.pager.pageE = 'main .posts-wrapper.row>div'\n                    } else if (getAllXpath('//main//div[contains(@class,\"row\")]/div/article').length > 3) {\n                        DBSite.wp_article.pager.pageE = '//main//div[contains(@class,\"row\")]/div/article/parent::div'\n                    } else if (getAllCSS('main article[id^=\"post-\"]').length > 3) {\n                        DBSite.wp_article.pager.pageE = 'main article[id^=\"post-\"]'\n                    } else if (getAllCSS('main article[class]').length > 3) {\n                        DBSite.wp_article.pager.pageE = 'main article[class]'\n                    } else if (getAllCSS('main div[id^=\"post-\"]').length > 3) {\n                        DBSite.wp_article.pager.pageE = 'main div[id^=\"post-\"]'\n                    } else if (getAllCSS('main .post').length > 3) {\n                        DBSite.wp_article.pager.pageE = 'main .post'\n                    }\n                    if (DBSite.wp_article.pager.pageE != undefined) {console.info(`[自动无缝翻页] - 部分使用 WordPress 的网站`); return 10;}\n                }\n\n                if (getAllCSS('.posts-wrapper.row>div>article').length > 3) {\n                    DBSite.wp_article.pager.pageE = '.posts-wrapper.row>div'\n                } else if (getAllXpath('//div[contains(@class,\"row\")]/div/article').length > 3) {\n                    DBSite.wp_article.pager.pageE = '//div[contains(@class,\"row\")]/div/article'\n                } else if (getAllCSS('article[id^=\"post-\"]').length > 3) {\n                    DBSite.wp_article.pager.pageE = 'article[id^=\"post-\"]'\n                } else if (getAllCSS('article[class]').length > 3) {\n                    DBSite.wp_article.pager.pageE = 'article[class]'\n                } else if (getAllCSS('div[id^=\"post-\"]').length > 3) {\n                    DBSite.wp_article.pager.pageE = 'div[id^=\"post-\"]'\n                } else if (getAllCSS('ul[class*=\"post\"]>li.item').length > 3) {\n                    DBSite.wp_article.pager.pageE = 'ul[class*=\"post\"]>li.item'\n                } else if (getAllCSS('.post').length > 3) {\n                    DBSite.wp_article.pager.pageE = '.post'\n                } else if (getAllCSS('.posts-row>posts[class*=\"post\"]').length > 3) {\n                    DBSite.wp_article.pager.pageE = '.posts-row>posts[class*=\"post\"]'\n                } else if (getAllCSS('#posts, .posts').length == 1) {\n                    DBSite.wp_article.pager.pageE = '#posts, .posts'\n                } else if (getAllCSS('#content .container>.row').length == 1 && getAllCSS('#content .container>.row+.nav-pagination').length == 1) {\n                    DBSite.wp_article.pager.pageE = '#content .container>.row'\n                }\n                if (DBSite.wp_article.pager.pageE != undefined) {console.info(`[自动无缝翻页] - 部分使用 WordPress 的网站`); return 10;}\n            }\n        } else if (getCSS('meta[name=\"template\" i][content=\"handsome\" i]') && getCSS('.page-navigator')) {\n                console.info(`[自动无缝翻页] - 部分使用 Typecho 的网站 (handsome)`); return 12;\n        } else if (getCSS('meta[name=\"template\" i][content=\"Mirages\" i]') && getCSS('.page-navigator')) {\n                console.info(`[自动无缝翻页] - 部分使用 Typecho 的网站 (Mirages)`); return 13;\n\n        } else if (getCSS('.stui-page, .stui-page__item, #long-page, .myui-page, .myui-page__item')) {\n            console.info(`[自动无缝翻页] - 部分影视网站`); return 300;\n        } else if (getCSS('#page') && getCSS('.module-items,a.module-poster-item')) {\n            console.info(`[自动无缝翻页] - 部分影视网站 2`); return 301;\n\n        } else if (getCSS('.ArticleImageBox, .PictureList') && getCSS('.article_page') && getXpath('//div[contains(@class,\"article_page\")]//a[text()=\"下一页\"]')) {\n            console.info(`[自动无缝翻页] - 部分美图网站 - 手机版`); return 302;\n        } else if (getCSS('meta[content^=SearXNG i], link[href*=SearXNG i], script[src*=SearXNG i]')) {\n            console.info(`[自动无缝翻页] - <SearXNG> 元搜索引擎`); return 303;\n\n        } else if (getCSS('.content > #content') && getXpath('//div[contains(@class,\"page_chapter\")]//a[text()=\"下一章\"]')) {\n            console.info(`[自动无缝翻页] - <笔趣阁 1> 模板的小说网站`); return 200;\n        } else if (getCSS('#nr1, #chaptercontent, .Readarea, .ReadAjax_content') && getCSS('#pb_next, #linkNext')) {\n            console.info(`[自动无缝翻页] - <笔趣阁 1 - 手机版> 模板的小说网站`); return 201;\n        } else if (getCSS('#txt, .txt') && getCSS('#pb_next, .url_next') && getCSS('.chapter-control, .chapter-page-btn')) {\n            console.info(`[自动无缝翻页] - <笔趣阁 2> 模板的小说网站`); return 202;\n        } else if ((getCSS('meta[name=\"description\" i][content*=\"小说\"], meta[name=\"description\" i][content*=\"章节\"], meta[name=\"description\" i][content*=\"阅读\"], meta[name=\"description\" i][content*=\"小說\"], meta[name=\"description\" i][content*=\"章節\"], meta[name=\"description\" i][content*=\"閲讀\"], meta[name=\"keywords\" i][content*=\"笔趣\"]') || location.hostname.indexOf('biqu')!=-1 || document.title.match(/笔趣阁|小说|小說|章/)!=null) && getXpath('//a[contains(text(), \"下一章\") or contains(text(), \"下一页\") or contains(text(), \"下一节\")][not(starts-with(@href,\"javascript:\"))]')) {\n            let biquge3_pageE= ['[id=\"chapter_content\" i]','[class~=\"chapter_content\" i]','[id=\"chaptercontent\" i]','[class~=\"chaptercontent\" i]','[class~=\"read_chapterdetail\" i]','[id=\"booktext\" i]','[class~=\"booktext\" i]','[id=\"txtcontent\" i]','[class~=\"txtcontent\" i]','[id=\"textcontent\" i]','[class~=\"textcontent\" i]','[id=\"read-content\" i]','[class~=\"read-content\" i]','[id=\"txtnav\" i]','[class~=\"txtnav\" i]','[id=\"txt\" i][class~=\"txt\" i]','[id=\"contents\" i]','[class~=\"contents\" i]','[id=\"content\" i]','[class~=\"content\" i]','[id=\"acontent\" i]','[class~=\"acontent\" i]','[id=\"contentbox\" i]','.container>.con']\n            for(let biquge3_pageE_ of biquge3_pageE) {if (getAllCSS(biquge3_pageE_).length === 1) {DBSite.biquge3.pager.pageE = biquge3_pageE_;DBSite.biquge3.pager.insertP = [biquge3_pageE_,6];DBSite.biquge3.style = biquge3_pageE_+'>.readinline, ' + DBSite.biquge3.style;break;}}\n            if (DBSite.biquge3.pager.pageE != undefined) {console.info(`[自动无缝翻页] - <笔趣阁 3> 模板的小说网站`); return 203;}\n        }\n        return 0;\n    }\n    // 判断网站类型\n    function webTypeIf() {\n        if (webType != 1) {\n            switch (webType) {\n                case 2: //   < 所有 Discuz!论坛 >\n                    discuz_(); break;\n                case 3: //   < 所有 Flarum 论坛 >\n                    DBSite.flarum.url(); break;\n                case 4: //   < 所有 phpBB 论坛 >\n                    DBSite.phpbb.url(); break;\n                case 5: //   < 所有 Xiuno 论坛 >\n                    DBSite.xiuno.url(); break;\n                case 6: //   < 所有 XenForo 论坛 >\n                    DBSite.xenforo.url(); break;\n                case 14: //   < 所有 MyBB 论坛 >\n                    DBSite.mybb.url(); break;\n                case 7: //   < 所有 NexusPHP 论坛 >\n                    DBSite.nexusphp.url(); break;\n                case 15: //   < 所有 Forgejo/Gitea> git 托管系统 >\n                    DBSite.forgejoGitea.url(); break;\n                case 8: // < 部分自带 自动无缝翻页 的网站 1 >\n                    DBSite.loadmore.url('.load-more, .load_more, .loadmore, #load-more, #load_more, #loadmore, [id^=\"loadmore\"], .show-more, .show_more, .ajax-more'); break;\n                case 9: // < 部分自带 自动无缝翻页 的网站 2 >\n                    DBSite.loadmore.url('//*[self::a or self::span or self::button or self::div][text()=\"加载更多\"][not(@href) or @href=\"#\" or starts-with(@href, \"javascript\")]'); break;\n                case 10: // < 部分使用 WordPress 的网站 >\n                    DBSite.wp_article.url(); break;\n                case 11: // < 部分使用 WordPress 的网站 - 文章内 >\n                    curSite = DBSite.wp_article_post; break;\n                case 12: // < 部分使用 Typecho 的网站 (handsome) >\n                    DBSite.typecho_handsome.url(); break;\n                case 13: // < 部分使用 Typecho 的网站 (Mirages) >\n                    DBSite.typecho_mirages.url(); break;\n                case 200: // < 所有使用 笔趣阁 1 模板的小说网站 >\n                    DBSite.biquge1.url(); break;\n                case 201: // < 所有使用 笔趣阁 1 - 手机版 模板的小说网站 >\n                    curSite = DBSite.biquge1_m; break;\n                case 202: // < 所有使用 笔趣阁 2 模板的小说网站 >\n                    DBSite.biquge2.url(); break;\n                case 203: // < 所有使用 笔趣阁 3 模板的小说网站 >\n                    curSite = DBSite.biquge3; break;\n                case 300: // < 部分影视网站 >\n                    curSite = DBSite.yingshi; break;\n                case 301: // < 部分影视网站 2 >\n                    curSite = DBSite.yingshi2; break;\n                case 302: // < 部分美图网站 - 手机版 >\n                    curSite = DBSite.meinvtu_m; break;\n                case 303: // < SearXNG 元搜索引擎 >\n                    document.cookie='infinite_scroll=1; expires=Thu, 18 Dec 2031 12:00:00 GMT; path=/';\n                    document.cookie='results_on_new_tab=1; expires=Thu, 18 Dec 2031 12:00:00 GMT; path=/';\n                    break;\n            }\n        }\n    }\n    // 内置翻页规则\n    function setDBSite() {\n        /*\n    inherits:    继承标识，仅用于自定义规则，用于增删改某个外置规则的部分规则时，可使用该标识来省略不需要修改的规则，只写有变化的规则\n\n    url:         匹配到该域名后要执行的函数/正则（一般用于根据 URL 分配相应翻页规则，url 规则中可通过操作 rule 这个对象变量来修改当前网页实际应用的规则）\n    urlC:        对于使用 pjax 技术的网站，需要监听 URL 变化来重新判断翻页规则（需要放在 url: 中，自定义规则的话需要使用 fun.isUrlC()）\n\n    noReferer:   获取下一页内容时，不携带 Referer（部分网站携带与不携带可能不一样）\n    hiddenPN:    不显示脚本左下角的页码\n    history:     添加历史记录 并 修改当前 URL（默认开启，对于不支持的网站要设置为 false）\n    thread:      对于社区类网站，要在 帖子内 的规则中加入这个，用于脚本的 [帖子内自动翻页] 功能（即用户可以选择开启/关闭所有社区类网站帖子内的自动翻页）\n    style:       要插入网页的 CSS Style 样式，当只需要单纯屏蔽部分网页元素时，可以只写 CSS 选择器省略掉 {display: none !important;}\n    retry:       允许获取失败后重试\n    blank:       强制新标签页打开链接\n       1 = 网页 <head> 添加 <base target=\"_blank\"> 来让所有链接默认新标签页打开（对已单独指定 target 或已监听点击事件的元素无效）\n       2 = 对 <body> 委托点击事件\n       3 = 对 pageE 的父元素 委托点击事件（也会阻止冒泡，但因为距离 <a> 标签较远，因此只有在委托点击事件的元素是 pageE 的父元素的父元素时，才有意义）\n       4 = 对 pageE 的子元素 <a> 标签 添加 target=\"_blank\"\n       5 = 对 pageE 的子元素 <a> 标签 清理事件后 再添加 target=\"_blank\"\n       6 = 对 pageE 的子元素 <a> 标签 清理事件后 再添加 target=\"_blank\" 并阻止冒泡（避免父元素事件委托捕获该元素的点击事件）\n\npager: {\n    type:     翻页模式\n       1 = 由脚本实现自动无缝翻页，可省略（适用于：静态加载内容网站，常规模式）\n\n       2 = 只需要点击下一页按钮（适用于：网站自带了 自动无缝翻页 功能）\n           nextText:    按钮文本，当按钮文本 = 该文本时，才会点击按钮加载下一页（避免一瞬间加载太多次下一页，下同）\n           nextTextOf:  按钮文本的一部分，当按钮文本包含该文本时，才会点击按钮加载下一页\n           nextHTML:    按钮内元素，当按钮内元素 = 该元素内容时，才会点击按钮加载下一页\n           interval:    点击间隔时间，对于没有按钮文字变化的按钮，可以手动指定间隔时间（省略后默认 500ms，当指定上面三个时，会忽略 interval）\n           isHidden:    只有下一页按钮可见时（没有被隐藏），才会点击\n\n       3 = 依靠 [基准元素] 与 [浏览器可视区域底部] 之间的距离缩小来触发翻页（适用于：主体元素下方内容太多 且 高度不固定时）\n           scrollE:     作为基准线的元素（一般为底部页码元素），省略后默认等同 replaceE（如果这个也未指定则改用 nextL）\n           scrollD:     当 [基准元素] 与 [可视区域底部] 之间的距离 等于或小于该值时，将触发翻页，省略后默认 2000\n\n       4 = 动态加载类网站（适用于：简单的动态加载内容网站）\n           insertE:     用来插入元素的函数\n\n       5 = 插入 iframe 方式来加载下一页，无限套娃（适用于：部分动态加载内容的网站，需要允许 iframe 且支持通过 GET/POST 直接打开下一页）\n           style:       加载 iframe 前要插入的 CSS Style 样式（比如为了悬浮的样式与下一页的重叠，隐藏网页底部间距提高阅读连续性）\n           iframe:      这个必须加到 pager{} 外面（这样才会在该域名的 iframe 框架下运行脚本）\n\n       6 = 通过 iframe 获取下一页动态加载内容插入本页，只有一个娃（适用于：部分动态加载内容的网站，与上面不同的是，该模式适合简单的网页，没有复杂事件什么的）\n           loadTime:    预留的网页加载时间，确保网页内容加载完成（省略后默认为 300ms）\n\n    nextL:    下一页链接所在元素\n    pageE:    要从下一页获取的元素\n    insertP:  下一页元素插入本页的位置（数组第一个是基准元素，第二个是基准元素的前后具体位置）\n       1 = 插入基准元素自身的前面\n       2 = 插入基准元素内，第一个子元素前面\n       3 = 插入基准元素内，最后一个子元素后面\n       4 = 插入基准元素自身的后面\n       5 = 插入 pageE 列表最后一个元素的后面（该 insertP 可以直接省略不写，等同于 ['pageE', 5] ）\n       6 = 插入该元素自身内部末尾（针对小说网站等文本类的），附带参数 insertP6Br: true, 用来中间插入换行\n    // 小技巧：当基准元素是下一页主体元素的父元素时（或者说要将下一页元素插入到本页同元素最后一个后面时）是可以省略不写 insertP\n         例如：当 pageE: 'ul>li' 且 insertP: ['ul', 3] 时，实际等同于 ['ul>li', 5]\n               当 pageE: '.item' 且 insertP: ['.item', 4] 时，实际等同于 ['.item', 5]\n               当 pageE: '.item' 且 insertP: ['.page', 1] 时，实际等同于 ['.item', 5]\n         注意：如 pageE 中选择了多类元素，则不能省略 insertP（比如包含 `,` 与 `|` 符号），除非另外的选择器是 <script> <style> <link> 标签\n\n    replaceE: 要替换为下一页内容的元素（比如页码），省略后将会自动判断是替换 nextL 元素还是 nextL 的父元素（当 nextL 元素后面或前面有 <a> 的相邻兄弟元素时替换其父元素，反之替换其自身，仅限模式1/3/6，且 js 代码除外），值为空 \"\" 时则完全不替换\n    scrollD： 当 [滚动条] 与 [网页底部] 之间的距离 等于或小于该值时，将触发翻页，因此值越大就越早触发翻页，访问速度慢的网站需要调大，可省略(记得移除上一行末尾逗号)，省略后默认 2000\n\n    scriptT:  单独插入 <script> 标签\n       0 = 下一页的所有 <script> 标签\n       1 = 下一页的所有 <script> 标签（不包括 src 链接）\n       2 = 下一页主体元素 (pageE) 的同级 <script> 标签\n       3 = 下一页主体元素 (pageE) 的子元素 <script> 标签\n\n    interval:   翻页后间隔时间（省略后默认 500ms）\n    forceHTTPS: 下一页链接强制 HTTPS\n},\nfunction: {\n       bF = 插入前执行函数\n       bFp = 参数\n       aF = 插入后执行函数\n       aFp = 参数\n}\n    */ //<<< 规则简单说明 >>>\n        DBSite = {\n            loadmore: {\n                ignore: true,\n                url: function(nextL) {curSite = DBSite.loadmore; curSite.pager.nextL = nextL;},\n                pager: {\n                    type: 2,\n                    isHidden: true,\n                    interval: 1000\n                }\n            }, //           部分自带 自动无缝翻页 的网站\n            wp_article: {\n                ignore: true,\n                url: ()=> {\n                    if (!indexOF('/post/') && !getCSS('#comments, .comments-area, #disqus_thread')) {\n                        curSite = DBSite.wp_article;\n                        // 自适应瀑布流样式\n                        setTimeout(()=>{if (getOne(curSite.pager.pageE).style.cssText.indexOf('position: absolute') != -1){insStyle(curSite.pager.pageE + '{position: static !important; float: left !important; height: '+ parseInt(getCSS(curSite.pager.pageE).offsetHeight * 1.1) + 'px !important;}');}}, 1500);\n                    }\n                },\n                style: 'img[data-src], img[data-original] {opacity: 1 !important;}',\n                blank: 3,\n                pager: {\n                    replaceE: '#nav-below, nav.navigation, nav.paging-navigation, #pagination:not([class*=\"entry\"]), .pagination:not([class*=\"entry\"]), .wp-pagenavi, .pagenavi, nav[role=\"navigation\"], ul[class*=\"-pagination\"]',\n                    forceHTTPS: true,\n                    scrollD: 3000\n                },\n                function: {\n                    bF: src_bF\n                }\n            }, //         部分使用 WordPress 的网站\n            wp_article_post: {\n                ignore: true,\n                pager: {\n                    type: 3,\n                    scrollD: 3000\n                },\n                function: {\n                    bF: src_bF\n                }\n            }, //    部分使用 WordPress 的网站 - 文章内\n            typecho_handsome: {\n                ignore: true,\n                url: ()=> {if (getCSS('nav:not([id=comment-navigation]) .page-navigator')) {curSite = DBSite.typecho_handsome;}},\n                blank: 3,\n                pager: {\n                    nextL: '.page-navigator li.next>a',\n                    pageE: '.blog-post, .post-list',\n                    replaceE: '.page-navigator'\n                }\n            }, //   部分使用 Typecho 的网站 (handsome)\n            typecho_mirages: {\n                ignore: true,\n                url: ()=> {if (getAllCSS('#index>article, #archive>article').length > 3 && getCSS('li.next')) {curSite = DBSite.typecho_mirages;}},\n                blank: 3,\n                pager: {\n                    nextL: 'li.next>a',\n                    pageE: '#index>article, #archive>article',\n                    scriptT: 3,\n                    replaceE: '.page-navigator'\n                }\n            }, //    部分使用 Typecho 的网站 (Mirages)\n            biquge1: {\n                ignore: true,\n                url: ()=> {curSite = DBSite.biquge1;xs_bF(getAllCSS('.content > #content'),[/<br>.{0,10}秒记住.+$/, '']);},\n                style: 'img, .posterror, a[href*=\"posterror()\"], [style*=\"background\"][style*=\"url(\"]:not(html):not(body), #content > *:not(br):not(p), #content>.readinline {display: none !important;}',\n                history: true,\n                retry: 3000,\n                pager: {\n                    nextL: '//div[@class=\"page_chapter\"]//a[text()=\"下一章\"]',\n                    pageE: '.content > #content',\n                    insertP: ['.content > #content', 6],\n                    replaceE: '.page_chapter'\n                },\n                function: {\n                    bF: xs_bF,\n                    bFp: [/<br>.{0,10}秒记住.+$/, '']\n                }\n            }, //            笔趣阁 1 模板的小说网站\n            biquge1_m: {\n                ignore: true,\n                style: 'img, .posterror, .show-app2, a[href*=\"posterror()\"], [onclick*=\"location.href\"], [style*=\"background\"][style*=\"url(\"]:not(html):not(body), #nr1>*:not(br):not(p), #chaptercontent>*:not(br):not(p), .Readarea>*:not(br):not(p), .ReadAjax_content>*:not(br):not(p), #nr1>.readinline, #chaptercontent>.readinline, .Readarea>.readinline, .ReadAjax_content>.readinline {display: none !important;}',\n                history: true,\n                retry: 3000,\n                pager: {\n                    nextL: '#pb_next, #linkNext',\n                    pageE: '#nr1, #chaptercontent, .Readarea, .ReadAjax_content',\n                    insertP: ['#nr1, #chaptercontent, .Readarea, .ReadAjax_content', 6],\n                    replaceE: '//a[@id=\"pb_next\" or @id=\"linkNext\"]/parent::*'\n                }\n            }, //          笔趣阁 1 - 手机版 模板的小说网站\n            biquge2: {\n                ignore: true,\n                url: ()=> {if (isMobile() || getCSS('.chapter-page-btn') != null) {curSite = DBSite.biquge2_m;} else {curSite = DBSite.biquge2;}},\n                style: 'img, .posterror, a[href*=\"posterror()\"], [style*=\"background\"][style*=\"url(\"]:not(html):not(body), #txt > *:not(br):not(p), #txt>.readinline, .txt>.readinline {display: none !important;}',\n                history: true,\n                retry: 3000,\n                pager: {\n                    type: 6,\n                    nextL: '#pb_next, .url_next',\n                    pageE: '#txt, .txt',\n                    insertP: ['#txt, .txt', 6],\n                    replaceE: '.chapter-control, .chapter-page-btn',\n                    loadTime: 1500,\n                    scrollD: 3500\n                }\n            }, //            笔趣阁 2 模板的小说网站\n            biquge2_m: {\n                ignore: true,\n                style: 'img, .posterror, a[href*=\"posterror()\"], [style*=\"background\"][style*=\"url(\"]:not(html):not(body), #txt > *:not(br):not(p), #txt>.readinline, .txt>.readinline {display: none !important;}',\n                history: true,\n                retry: 3000,\n                pager: {\n                    nextL: '#pb_next, .url_next',\n                    pageE: '#txt, .txt',\n                    insertP: ['#txt, .txt', 6],\n                    replaceE: '.chapter-control, .chapter-page-btn'\n                }\n            }, //          笔趣阁 2 - 手机版 模板的小说网站\n            biquge3: {\n                ignore: true,\n                style: 'img, .posterror, a[href*=\"posterror()\"], [style*=\"background\"][style*=\"url(\"]:not(html):not(body), script+div[style=\"padding:15px;\"], p[style*=\"font-weight:\"] {display: none !important;}',\n                history: true,\n                retry: 3000,\n                pager: {\n                    nextL: 'js; const a=[fun.getNextE(\\'(//a[contains(text(), \"下一页\")])[last()]\\'),fun.getNextE(\\'(//a[contains(text(), \"下一章\")])[last()]\\'),fun.getNextE(\\'(//a[contains(text(), \"下一节\")])[last()]\\')];return a.find(i => i)',\n                    insertP6Br: false,\n                    replaceE: '//a[contains(text(), \"下一章\") or contains(text(), \"下一页\") or contains(text(), \"下一节\")]/parent::*'\n                },\n                function: {\n                    bF: xs_bF,\n                    bFp: [/<br>.{0,10}秒记住.+$/, '']\n                }\n            }, //            笔趣阁 3 模板的小说网站\n            yingshi: {\n                ignore: true,\n                style: 'div.stui-page__all, div.myui-page__all {display: none !important;}',\n                blank: 3,\n                pager: {\n                    nextL: '.stui-page li.active+li>a, .stui-page__item li.active+li>a, #long-page .active+li>a, .myui-page .visible-xs+li>a',\n                    pageE: '.stui-vodlist, .myui-vodlist>li, #content, #searchList',\n                    replaceE: '.stui-page, .stui-page__item, #long-page, .myui-page, .myui-page__item'\n                },\n                function: {\n                    bF: src_bF,\n                    bFp: [1, '[data-original]', 'data-original']\n                }\n            }, //            部分影视网站\n            yingshi2: {\n                ignore: true,\n                blank: 3,\n                style: '.module-poster-item, .module-items>* {display: inline-block !important;}',\n                pager: {\n                    nextL: '#page a[title=\"下一页\"], a.page-next',\n                    pageE: '.module-items>*, a.module-poster-item',\n                    replaceE: '#page'\n                },\n                function: {\n                    bF: src_bF\n                }\n            }, //           部分影视网站 2\n            meinvtu_m: {\n                ignore: true,\n                history: true,\n                blank: 3,\n                pager: {\n                    type: 3,\n                    nextL: '//div[contains(@class,\"article_page\")]//a[text()=\"下一页\"]',\n                    pageE: '.ArticleImageBox, .PictureList',\n                    replaceE: '.article_page',\n                    scrollD: 500\n                }\n            }, //          部分美图网站 - 手机版\n            discuz_forum: {\n                ignore: true,\n                pager: {\n                    type: 2,\n                    nextL: '#autopbn',\n                    interval: 800\n                }\n            }, //       Discuz! 论坛 - 帖子列表（自带无缝加载下一页按钮的）\n            discuz_guide: {\n                ignore: true,\n                pager: {\n                    nextL: 'a.nxt:not([href^=\"javascript\"]) ,a.next:not([href^=\"javascript\"])',\n                    pageE: 'tbody[id^=\"normalthread_\"],tbody[id^=\"stickthread_\"]',\n                    replaceE: '.pg, .pages',\n                    forceHTTPS: true\n                }\n            }, //       Discuz! 论坛 - 导读页 及 帖子列表（不带无缝加载下一页按钮的，或存在按钮但只是单纯跳转下一页链接的）\n            discuz_waterfall: {\n                ignore: true,\n                style: '.pgbtn',\n                pager: {\n                    nextL: 'a.nxt:not([href^=\"javascript\"]) ,a.next:not([href^=\"javascript\"])',\n                    pageE: '#waterfall > li, #waterfall > dl',\n                    replaceE: '.pg, .pages',\n                    forceHTTPS: true\n                }\n            }, //   Discuz! 论坛 - 图片模式的帖子列表（不带无缝加载下一页按钮的，或存在按钮但只是单纯跳转下一页链接的）\n            discuz_thread: {\n                ignore: true,\n                thread: true,\n                style: '.pgbtn, .viewthread:not(:first-of-type)>h1, .viewthread:not(:first-of-type)>ins, .viewthread:not(:first-of-type)>.headactions {display: none;}',\n                pager: {\n                    nextL: 'a.nxt:not([href^=\"javascript\"]) ,a.next:not([href^=\"javascript\"])',\n                    pageE: '#postlist > div[id^=\"post_\"], form>.viewthread',\n                    replaceE: '//div[contains(@class,\"pg\") or contains(@class,\"pages\")][./a[contains(@class,\"nxt\") or contains(@class,\"next\") or contains(@class,\"prev\")][not(contains(@href,\"javascript\") or contains(@href,\"commentmore\"))]]',\n                    forceHTTPS: true\n                },\n                function: {\n                    bF: src_bF,\n                    bFp: [0, 'img[file]', 'file']\n                }\n            }, //      Discuz! 论坛 - 帖子内\n            discuz_search: {\n                ignore: true,\n                pager: {\n                    nextL: 'a.nxt:not([href^=\"javascript\"]) ,a.next:not([href^=\"javascript\"])',\n                    pageE: '#threadlist > ul',\n                    replaceE: '.pg, .pages',\n                    forceHTTPS: true\n                }\n            }, //      Discuz! 论坛 - 搜索页\n            discuz_youspace: {\n                ignore: true,\n                pager: {\n                    nextL: 'a.nxt:not([href^=\"javascript\"]) ,a.next:not([href^=\"javascript\"])',\n                    pageE: 'form:not([action^=\"search.php?\"]) tbody > tr:not(.th)',\n                    replaceE: '.pg, .pages',\n                    forceHTTPS: true\n                }\n            }, //    Discuz! 论坛 - 回复页、主题页（别人的）\n            discuz_collection: {\n                ignore: true,\n                pager: {\n                    nextL: 'a.nxt:not([href^=\"javascript\"]) ,a.next:not([href^=\"javascript\"])',\n                    pageE: '#ct .bm_c table > tbody',\n                    replaceE: '.pg, .pages',\n                    forceHTTPS: true\n                }\n            }, //  Discuz! 论坛 - 淘帖页\n            discuz_archiver: {\n                ignore: true,\n                pager: {\n                    nextL: '//div[@id=\"content\"][last()]//div[@class=\"page\"]/strong/following-sibling::a[1]',\n                    pageE: '#content'\n                }\n            }, //  Discuz! 论坛 - 归档页\n            discuz_m: {\n                ignore: true,\n                thread: true,\n                pager: {\n                    nextL: '//a[@class=\"nxt\" or @class=\"next\"] | //div[@class=\"page\"]/a[text()=\"下一页\" or contains(text(), \">\")]',\n                    replaceE: '.pg, .page',\n                    forceHTTPS: true,\n                    scrollD: 1000\n                }\n            }, //           Discuz! 论坛 - 触屏手机版 - 帖子内\n            discuz_m_forum: {\n                ignore: true,\n                pager: {\n                    type: 2,\n                    nextL: 'a.loadmore',\n                    interval: 500,\n                    scrollD: 1000\n                }\n            }, //     Discuz! 论坛 - 触屏手机版 - 帖子列表（自带无缝加载下一页按钮的）\n            flarum: {\n                ignore: true,\n                url: ()=> {urlC = true;if (!indexOF('/d/')) {if(getCSS('.DiscussionList-loadMore')){curSite = DBSite.flarum;}else if(getCSS('a.Button--primary')){curSite = DBSite.flarum2;}}},\n                pager: {\n                    type: 2,\n                    nextL: '.DiscussionList-loadMore > button',\n                    isHidden: true\n                }\n            }, //             Flarum 论坛\n            flarum2: {\n                ignore: true,\n                blank: 4,\n                pager: {\n                    type: 6,\n                    nextL: 'a.Button--primary+a:not(.disabled)',\n                    pageE: '.DiscussionList-discussions>li',\n                    replaceE: '.Orion-DiscussionListPagination'\n                }\n            }, //             Flarum 论坛 - 带页码的\n            phpbb: {\n                ignore: true,\n                url: ()=> {if (indexOF('/viewforum.php')) {\n                    curSite = DBSite.phpbb;\n                } else if (indexOF('/viewtopic.php')) {\n                    curSite = DBSite.phpbb_post;\n                } else if (indexOF('/search.php')) {\n                    curSite = DBSite.phpbb_search;\n                }},\n                pager: {\n                    nextL: '.pagination li.next a[rel=\"next\"], .topic-actions .pagination strong~a',\n                    pageE: '.forumbg:not(.announcement) ul.topiclist.topics > li',\n                    replaceE: '.action-bar .pagination, .topic-actions .pagination'\n                }\n            }, //              phpBB 论坛 - 帖子列表\n            phpbb_post: {\n                ignore: true,\n                thread: true,\n                pager: {\n                    nextL: '.pagination li.next a[rel=\"next\"], .topic-actions .pagination strong~a',\n                    pageE: 'div.post[id], div.post[id]+hr',\n                    replaceE: '.action-bar .pagination, .topic-actions .pagination'\n                }\n            }, //         phpBB 论坛 - 帖子内\n            phpbb_search: {\n                ignore: true,\n                pager: {\n                    nextL: '.pagination li.next a[rel=\"next\"], .topic-actions .pagination strong~a',\n                    pageE: 'div.search.post',\n                    replaceE: '.action-bar .pagination, .pagination'\n                }\n            }, //       phpBB 论坛 - 搜索页\n            xenforo: {\n                ignore: true,\n                url: ()=> {if (indexOF(/\\/(forums|f)\\//) || (getCSS(DBSite.xenforo.pager.nextL) && getCSS(DBSite.xenforo.pager.pageE))) {\n                    curSite = DBSite.xenforo;\n                } else if (indexOF(/\\/(threads|t)\\//) || (getCSS(DBSite.xenforo.pager.nextL) && getCSS(DBSite.xenforo_post.pager.pageE))) {\n                    curSite = DBSite.xenforo_post;\n                } else if (indexOF('/search/') || (getCSS(DBSite.xenforo.pager.nextL) && getCSS(DBSite.xenforo_search.pager.pageE))) {\n                    curSite = DBSite.xenforo_search;\n                }},\n                blank: 3,\n                pager: {\n                    nextL: 'a.pageNav-jump--next',\n                    pageE: '.structItemContainer > div',\n                    replaceE: 'nav.pageNavWrapper',\n                    scrollD: 2500\n                }\n            }, //            XenForo 论坛 - 帖子列表\n            xenforo_post: {\n                ignore: true,\n                thread: true,\n                pager: {\n                    nextL: 'a.pageNav-jump--next',\n                    pageE: '.block-body.js-replyNewMessageContainer > article',\n                    replaceE: 'nav.pageNavWrapper',\n                    scrollD: 2500\n                }\n            }, //       XenForo 论坛 - 帖子内\n            xenforo_search: {\n                ignore: true,\n                blank: 3,\n                pager: {\n                    nextL: 'a.pageNav-jump--next',\n                    pageE: 'ol.block-body > li',\n                    replaceE: 'nav.pageNavWrapper',\n                    scrollD: 2500\n                }\n            }, //     XenForo 论坛 - 搜索页\n            mybb: {\n                ignore: true,\n                url: ()=> {if (location.pathname.toLowerCase().indexOf('/forum') == 0 || location.pathname.toLowerCase().indexOf('/search') == 0 || (getCSS(DBSite.mybb.pager.nextL)&&getCSS(DBSite.mybb.pager.pageE))) {\n                    curSite = DBSite.mybb;\n                } else if (location.pathname.toLowerCase().indexOf('thread') !== -1 || (getCSS(DBSite.mybb.pager.nextL)&&getCSS(DBSite.mybb_post.pager.pageE))) {\n                    curSite = DBSite.mybb_post; curSite.pager = Object.assign({}, DBSite.mybb.pager,DBSite.mybb_post.pager);\n                }},\n                blank: 3,\n                pager: {\n                    nextL: 'div:not([id=breadcrumb_multipage_popup])>a.pagination_next, div:not([id=breadcrumb_multipage_popup])>.pagination_current+a.pagination_page',\n                    pageE: 'tr.inline_row',\n                    replaceE: '.pagination',\n                    scrollD: 2500\n                }\n            }, //            MyBB 论坛 - 帖子列表\n            mybb_post: {\n                ignore: true,\n                thread: true,\n                pager: {\n                    pageE: '#posts>*',\n                    scrollD: 2500\n                }\n            }, //       MyBB 论坛 - 帖子内\n            xiuno: {\n                ignore: true,\n                url: ()=> {if (lp == '/' || indexOF(/\\/(index|forum)/)) {curSite = DBSite.xiuno;} else if (indexOF('/thread')) {curSite = DBSite.xiuno_post;}},\n                pager: {\n                    nextL: '//li[@class=\"page-item\"]/a[text()=\"▶\" or text()=\"»\" or contains(text(),\">\") or contains(text(),\"下一页\")]',\n                    pageE: 'ul.threadlist > li',\n                    replaceE: 'ul.pagination'\n                }\n            }, //              Xiuno 论坛 - 帖子列表\n            xiuno_post: {\n                ignore: true,\n                thread: true,\n                pager: {\n                    nextL: '//li[@class=\"page-item\"]/a[text()=\"▶\" or text()=\"»\" or contains(text(),\">\") or contains(text(),\"下一页\")]',\n                    pageE: 'li.post[data-pid]:not(.newpost)',\n                    replaceE: 'ul.pagination'\n                }\n            }, //         Xiuno 论坛 - 帖子内\n            forgejoGitea: {\n                ignore: true,\n                url: ()=> {if (indexOF(/^\\/explore\\/.+/) || indexOF(/\\/(issues|pulls|releases|tags)$/) || indexOF(/\\/commits\\/branch\\/.+/) || (getCSS('.pagination>.active+.item') && getCSS('.flex-list>.flex-item'))) {curSite = DBSite.forgejoGitea;}},\n                pager: {\n                    nextL: '.pagination>.active+.item',\n                    pageE: '.flex-list>.flex-item, #issue-list>div, #release-list>li, tbody.tag-list>tr, tbody.commit-list>tr',\n                    replaceE: '.pagination'\n                }\n            }, //              Forgejo/Gitea git 托管系统 - explore/issues/releases/tag/commit\n            nexusphp: {\n                ignore: true,\n                url: ()=> {\n                    if (lp == '/torrents.php' || getCSS('table.torrents')) {\n                        curSite = DBSite.nexusphp;\n                    } else if (lp == '/subtitles.php') {\n                        curSite = DBSite.nexusphp;\n                        curSite.pager.pageE = '#outer > table.main~table > tbody > tr:not(:first-of-type)'\n                    } else if (lp == '/forums.php' && indexOF('action=viewforum', 's')) {\n                        curSite = DBSite.nexusphp;\n                        curSite.pager.pageE = '#outer > table.main+table > tbody > tr:not(:first-of-type):not(:last-of-type)'\n                    } else if (lp == '/forums.php' && indexOF('action=viewtopic', 's')) {\n                        curSite = DBSite.nexusphp;\n                        curSite.thread = true;\n                        curSite.pager.pageE = 'td.text > div, td.text > div+table.main';\n                    }},\n                pager: {\n                    nextL: '//a[./b[contains(text(), \"下一页\") or contains(text(), \">>\")]]',\n                    pageE: 'table.torrents > tbody > tr:not(:first-of-type)',\n                    replaceE: '//p[@align][./font[@class=\"gray\"]]'\n                }\n            }, //           NexusPHP 论坛\n            \"必应搜索 + 手机版\": {\n                host: ['www.bing.com','cn.bing.com','www4.bing.com','global.bing.com'],\n                url: ()=> {urlC = true;if (lp == '/search') {curSite = DBSite[\"必应搜索 + 手机版\"];if (isMobile()){curSite.blank=3;curSite.pager.type=6;curSite.pager.loadTime=1500;curSite.pager.scrollD=3000;}}},\n                style: '#b_footer,.b_msg,#bnp_rich_div,.cn_related_search_upsell_container',\n                history: true,\n                pager: {\n                    nextL: 'a.sb_pagN,a.sb_halfnext,a.sb_fullnpl',\n                    pageE: '#b_results>li.b_algo',\n                    replaceE: '#b_results>.b_pag,#b_PagAboveFooter'\n                },\n                function: {\n                    bF: (pageE)=>{pageE.forEach(function (one) {getAllCSS('div.rms_iac[data-src]',one).forEach(function (one1) {one1.outerHTML = `<img src=\\\"${one1.dataset.src}\\\" height=\\\"32\\\" width=\\\"32\\\" role=\\\"presentation\\\" class=\\\"rms_img\\\">`; }) }); return pageE}\n                }\n            }, //           必应搜索 + 手机版 为了解决部分用户/浏览器下因为 CSP 无法使用的问题，暂时先移动到内置规则\n            nexusmods: {\n                host: 'www.nexusmods.com',\n                url: ()=> {urlC = true; if (indexOF(/\\/(mods|users)\\/\\d+/)) {if (indexOF('tab=posts','s')){curSite = DBSite.nexusmods_posts;} else if (indexOF('tab=user+files','s')){curSite = DBSite.nexusmods;}} else if (lp !== '/' && getCSS('.pagination a.page-selected')) {curSite = DBSite.nexusmods;}},\n                blank: 1,\n                history: false,\n                xRequestedWith: true,\n                pager: {\n                    nextL: nexusmods_nextL,\n                    pageE: 'ul.tiles>li',\n                    replaceE: '.pagination',\n                    scrollD: 3500\n                },\n                function: {\n                    bF: nexusmods_bF\n                }\n            }, //               NexusMods\n            nexusmods_posts: {\n                ignore: true,\n                history: false,\n                xRequestedWith: true,\n                pager: {\n                    nextL: nexusmods_nextL,\n                    pageE: '#comment-container>ol>li.comment:not(.comment-sticky)',\n                    replaceE: '.pagination',\n                    scrollD: 3500\n                }\n            }, //               NexusMods posts\n            mangabz: {\n                host: ['mangabz.com', 'www.mangabz.com'],\n                url: ()=> {if (indexOF(/\\/m\\d+/)) {\n                    setTimeout(mangabz_init, 1500);\n                    curSite = DBSite.mangabz;\n                } else if (indexOF(/\\/\\d+bz\\//)) {\n                    if (getCSS('.detail-list-form-more')) getCSS('.detail-list-form-more').click();\n                } else if (indexOF('/manga-list') || lp == '/search') {\n                    curSite = DBSite.mangabz_list;\n                }},\n                style: 'body > .container > div:not([id]) {display: none !important;} .top-bar {opacity: 0.3 !important;} #cp_img > img{display: block !important;margin: 0 auto !important; max-width: 99% !important; width: auto !important; height: auto !important;}',\n                pager: {\n                    type: 4,\n                    nextL: mangabz_nextL,\n                    insertP: ['#cp_img', 3],\n                    insertE: mangabz_insertE,\n                    replaceE: 'p.top-title, body > .container > div:not([id])',\n                    interval: 500\n                }\n            }, //           Mangabz 漫画\n            mangabz_list: {\n                ignore: true,\n                blank: 4,\n                pager: {\n                    nextL: '//div[contains(@class,\"page-pagination\")]//a[contains(text(), \">\")]',\n                    pageE: 'ul.mh-list > li',\n                    replaceE: '.page-pagination',\n                    scrollD: 800\n                }\n            }, //      Mangabz 漫画 - 分类/搜索页\n            dm5: {\n                host: 'www.dm5.com',\n                url: ()=> {if (indexOF(/\\/m\\d+/)) {\n                    setTimeout(mangabz_init, 1500);\n                    curSite = DBSite.dm5;\n                } else if (indexOF('/manga-list') || lp == '/search' || getCSS('.box-body > ul.mh-list > li')) {\n                    curSite = DBSite.mangabz_list;\n                } else if (getCSS('.detail-more')) {\n                    getCSS('.detail-more').click();\n                }},\n                style: '.view-paging > .container, .view-comment {display: none !important;} .rightToolBar {opacity: 0.3 !important;} #cp_img > img, #barChapter > img{display: block !important;margin: 0 auto !important; max-width: 99% !important; width: auto !important; height: auto !important;} body {overflow: auto !important;}',\n                pager: {\n                    type: 4,\n                    nextL: dm5_nextL,\n                    insertP: ['#barChapter,#cp_img', 3],\n                    insertE: dm5_insertE,\n                    replaceE: '.view-paging > .container, .rightToolBar',\n                    interval: 500\n                }\n            }, //               动漫屋\n            xmanhua: {\n                host: ['xmanhua.com', 'www.xmanhua.com','yymanhua.com','www.yymanhua.com'],\n                url: ()=> {if (indexOF(/\\/m\\d+/)) {\n                    setTimeout(mangabz_init, 1500);\n                    if (location.hostname.indexOf('xmanhua') != -1){unsafeWindow.MH_PREFIX23 = 'XMANHUA_'}else{unsafeWindow.MH_PREFIX23 = 'YYMANHUA_'}\n                    curSite = DBSite.xmanhua;\n                } else if (indexOF(/\\/\\d+xm\\//)) {\n                    if (getCSS('.detail-list-form-more')) getCSS('.detail-list-form-more').click();\n                } else if (indexOF('/manga-list') || lp == '/search') {\n                    curSite = DBSite.xmanhua_list;\n                }},\n                style: 'a.reader-bottom-page {display: none !important;} .header, .reader-bottom {opacity: 0.3 !important;} #cp_img > img{display: block !important;margin: 0 auto !important; max-width: 99% !important; width: auto !important; height: auto !important;}',\n                hiddenPN: true,\n                pager: {\n                    type: 4,\n                    nextL: xmanhua_nextL,\n                    insertP: ['#cp_img', 3],\n                    insertE: xmanhua_insertE,\n                    replaceE: '.reader-title, body > .container > div:not([id])',\n                    interval: 500,\n                    scrollD: 2500\n                }\n            }, //           Xmanhua 漫画\n            xmanhua_list: {\n                ignore: true,\n                blank: 4,\n                pager: {\n                    nextL: '//div[@class=\"page-pagination\"]//a[contains(text(), \">\")]',\n                    pageE: 'ul.mh-list > li',\n                    replaceE: '.page-pagination',\n                    scrollD: 1000\n                }\n            } //      Xmanhua 漫画 - 分类/搜索页\n        };\n        let _customRules = GM_getValue('menu_customRules', {}),\n            _rules = GM_getValue('menu_rules', {})\n        if (Object.prototype.toString.call(_customRules) !== '[object Object]') {_customRules={};}\n        if (Object.prototype.toString.call(_rules) !== '[object Object]') {_rules={};}\n        let _customRulesKeys = Object.keys(_customRules),\n            _rulesKeys = Object.keys(_rules)\n        // 合并 自定义规则、外置规则、内置规则（注：Object.assign 合并对象时，同名会后者覆盖前者）\n        if (_customRulesKeys.length === 0) { // 如果自定义规则为空，则直接合并 外置规则、内置规则\n            DBSite = Object.assign({}, _rules, DBSite);\n            DBSite2 = structuredClone(_rules); // DBSite2 是提供给 自定义翻页规则界面 - 所有规则 显示用的\n        } else { // 如果有自定义规则，为避免外置规则覆盖同名的自定义规则，要先判断并移除同名的外置规则\n            for (let i = 0; i < _customRulesKeys.length; i++) { // 循环 [自定义规则-对象名] 数组\n                if (_rulesKeys.indexOf(_customRulesKeys[i]) != -1) { // 在 [外置规则-对象名] 数组中，寻找是否有同名的 [自定义规则-对象名]\n                    if (_customRules[_customRulesKeys[i]].inherits === true){ // 如果该同名的自定义规则对象含有 inherits 继承标识，则将同名的两者合并（自定义 覆盖 外置）\n                        // 如果自定义规则中包含 \"pager\":{} 规则，则需要先合并 pager 后再去合并整体规则（否则 pager 会被自定义规则完整覆盖）\n                        if (_customRules[_customRulesKeys[i]].pager != undefined && _rules[_customRulesKeys[i]].pager != undefined) {_customRules[_customRulesKeys[i]].pager = Object.assign({}, _rules[_customRulesKeys[i]].pager, _customRules[_customRulesKeys[i]].pager)}\n                        _customRules[_customRulesKeys[i]] = Object.assign({}, _rules[_customRulesKeys[i]], _customRules[_customRulesKeys[i]]);\n                    }\n                    delete _rules[_customRulesKeys[i]] // 删除外置规则中的同名，这样后续合并时，外置规则才不会覆盖自定义规则的同名规则\n                };\n            }\n            DBSite = Object.assign({}, _customRules, _rules, DBSite);\n            DBSite2 = Object.assign({}, structuredClone(_customRules), structuredClone(_rules)); // 为了避免对象的后续变化影响 DBSite2 内容（如 SiteTypeID 等），需要对JSON对象变量进行深拷贝，使其完全独立\n        }\n\n        // 生成 SiteTypeID\n        setSiteTypeID();\n        //console.log(DBSite)\n    }\n    // 更新外置翻页规则\n    function getRulesUrl(update = false) {\n        // 如果是 旧版本的字符串时间格式（当前为数字格式）或 刚安装脚本（取不到值会返回字符串 '' 空），则需要立即更新\n        if (typeof(GM_getValue('menu_ruleUpdateTime', '')) == 'string') {update = true; if (scriptHandler != 'AdGuard') {alert('请点击【确定】开始首次获取【外置翻页规则】（大概几秒\\n\\n在此期间请不要 操作/跳转/关闭 当前网页~\\n\\n如果不小心没获取成功也没事，可以去脚本菜单中手动【更新外置翻页规则】即可（浏览器右上角 Tampermonkey 扩展图标内的脚本菜单\\n\\n\\n另外，想要【临时暂停翻页】请点击左下角悬浮的【页码】按钮\\n\\n如果每次打开网页都会看到该提示，说明你的 油猴脚本管理器与本脚本之间 存在兼容性问题，请更换其他试试！');} else {urlArr2 = urlArr}}\n\n        if (update) { // 手动更新（或安装后首次更新）\n            GM_notification({text: '🔄 更新外置翻页规则中，请勿操作网页...', timeout: 5000});\n            getRulesUrl_(true);\n        } else if (parseInt(+new Date()/1000) - GM_getValue('menu_ruleUpdateTime', 0) > 5184000) {\n            getRulesUrl_();\n        }\n\n        function getRulesUrl_(n = false, url) {\n            if (n) {url = urlArr2[Math.floor(Math.random()*urlArr2.length)];} else {url = urlArr[Math.floor(Math.random()*urlArr.length)];}\n            if (url === undefined) {GM_notification({text: '❌ 所有更新地址均以试过，已无可用地址，请联系作者解决...', timeout: 5000}); return}\n            //console.log(url); return\n            GM_xmlhttpRequest({\n                url: url,\n                method: 'GET',\n                responseType: 'json',\n                overrideMimeType: 'application/json; charset=utf-8',\n                timeout: 4000,\n                onload: function (response) {\n                    try {\n                        //console.log('最终 URL：' + response.finalUrl, '返回内容：',response.status,response.response,response.responseText, response.responseHeaders)\n                        if (response.status === 200 && response.response && Object.prototype.toString.call(response.response) === '[object Object]' && Object.keys(response.response).length > 100) {\n                            GM_setValue('menu_rules', response.response); // 写入最新规则\n                            GM_setValue('menu_ruleUpdateTime', parseInt(+new Date()/1000)); // 写入当前时间戳\n\n                            curSite = {SiteTypeID: 0}; pageNum.now = 1; // 重置规则+页码\n                            registerMenuCommand(); // 重新判断规则\n\n                            webTypeIf(); // 判断网站类型\n                            if (!GM_getValue('menu_thread')) {if (curSite.thread) {curSite = {SiteTypeID: 0}; pageNum.now = 1;}} // 帖子内自动翻页判断\n                            if (GM_getValue('menu_page_number')) {pageNumber('add');} else {pageNumber('set');} // 显示页码\n                            if (curSite.blank != undefined) setTimeout(forceTarget, 1000); // 强制新标签页打开链接\n                            if (curSite.style) {insStyle(curSite.style)} // 插入 Style CSS 样式\n                            pausePageEvent(); // 左键双击网页空白处暂停翻页\n                            pageLoading(); // 自动无缝翻页\n\n                            if (n) GM_notification({text: '✅ 已更新外置翻页规则！\\n如果依然无法翻页，说明还不支持当前网页，点击此处提交申请~', timeout: 5000, onclick: function(){GM_openInTab('https://github.com/XIU2/UserScript#xiu2userscript', {active: true,insert: true,setParent: true});GM_openInTab('https://greasyfork.org/zh-CN/scripts/419215/feedback', {active: true,insert: true,setParent: true});}});\n                        } else {\n                            console.log('URL：' + url, response);\n                            GM_notification({text: '❌ 为空！更新失败，请再试几次...\\n如果依然更新失败，请联系作者解决...', timeout: 5000});\n                            if (n) {urlArr2.splice(urlArr2.indexOf(url), 1)} else {urlArr.splice(urlArr.indexOf(url), 1)}\n                        }\n                    } catch (e) {\n                        console.log('URL：' + url, e);\n                        GM_notification({text: '❌ 报错！更新失败，请再试几次...\\n如果依然更新失败，请联系作者解决...', timeout: 5000});\n                        if (n) {urlArr2.splice(urlArr2.indexOf(url), 1)} else {urlArr.splice(urlArr.indexOf(url), 1)}\n                    }\n                },\n                onerror: function (response) {\n                    console.log('URL：' + url, response)\n                    GM_notification({text: '❌ 错误！更新失败，请再试几次...\\n如果依然更新失败，请联系作者解决...', timeout: 5000});\n                    if (n) {urlArr2.splice(urlArr2.indexOf(url), 1)} else {urlArr.splice(urlArr.indexOf(url), 1)}\n                },\n                ontimeout: function (response) {\n                    console.log('URL：' + url, response)\n                    GM_notification({text: '❌ 超时！更新失败，请再试几次...\\n如果依然更新失败，请联系作者解决...', timeout: 5000});\n                    if (n) {urlArr2.splice(urlArr2.indexOf(url), 1)} else {urlArr.splice(urlArr.indexOf(url), 1)}\n                }\n            })\n        }\n    }\n\n\n    // --------------------------------------------------------\n\n\n    // 判断网站类型\n    webTypeIf();\n\n    // 帖子内自动翻页判断\n    if (!GM_getValue('menu_thread')) {if (curSite.thread) {curSite = {SiteTypeID: 0}; pageNum.now = 1;}}\n\n    //console.log(curSite)\n    // 显示页码\n    if (GM_getValue('menu_page_number')) {pageNumber('add');} else {pageNumber('set');}\n    // 左键双击网页空白处暂停翻页\n    pausePageEvent();\n    // 强制新标签页打开链接\n    if (curSite.blank != undefined) setTimeout(forceTarget, 1000);\n    // 初始化事件\n    //if (curSite.initE != undefined) initEvent();\n\n    // 对于使用 pjax 技术的网站，需要监听 URL 变化来重新判断翻页规则\n    if (urlC) {\n        nowLocation = location.href\n        if (window.onurlchange === undefined) {addUrlChangeEvent();} // Tampermonkey v4.11 版本添加的 onurlchange 事件 grant，可以监控 pjax 等网页的 URL 变化\n        if (webType === 1) {\n            window.addEventListener('urlchange', function(){\n                lp = location.pathname;\n                //console.log(nowLocation, location.href)\n                if (curSite.history !== false && window.top.document.Autopage_nowUrl === location.href) {nowLocation = location.href; return}\n                if (nowLocation == location.href) return\n                if (curSite.pager && curSite.pager.type == 5) {\n                    if (self != top) {window.top.location.href = location.href;} else {if (getCSS('iframe#Autopage_iframe')) {getCSS('iframe#Autopage_iframe').remove();}}\n                    pausePage = true;\n                } // 对于翻页模式 5，如果是 iframe 框架内 URL 变动，则升级为顶级页面，如果是顶级页面的 URL 变动，则清理 iframe 框架\n                nowLocation = location.href; curSite = {SiteTypeID: 0}; pageNum.now = 1; // 重置规则+页码\n                registerMenuCommand(); // 重新判断规则\n\n                //console.log(curSite);\n                if (curSite.blank != undefined) setTimeout(forceTarget, 1000); // 强制新标签页打开链接\n                //if (curSite.initE != undefined) initEvent(); // 初始化事件\n                if (curSite.style) {insStyle(curSite.style)} // 插入 Style CSS 样式\n                if (!GM_getValue('menu_thread')) {if (curSite.thread) {curSite = {SiteTypeID: 0}; pageNum.now = 1;}} // 帖子内自动翻页判断\n                if (GM_getValue('menu_page_number')) {pageNumber('add');} else {pageNumber('set');} // 显示页码\n                pausePageEvent(); // 左键双击网页空白处暂停翻页\n\n                pageLoading();\n            })\n        } else if (webType === 2) {\n            window.addEventListener('urlchange', function(){\n                lp = location.pathname;\n                //console.log(nowLocation, location.href)\n                if (nowLocation == location.href) return\n                setTimeout(function(){\n                    nowLocation = location.href; curSite = {SiteTypeID: 0}; pageNum.now = 1; // 重置规则+页码\n                    discuz_(); // 重新判断规则\n\n                    if (!GM_getValue('menu_thread')) {if (curSite.thread) {curSite = {SiteTypeID: 0}; pageNum.now = 1;}} // 帖子内自动翻页判断\n                    if (curSite.style) {insStyle(curSite.style)} // 插入 Style CSS 样式\n                    if (GM_getValue('menu_page_number')) {pageNumber('add');} else {pageNumber('set');} // 显示页码\n                    pausePageEvent(); // 左键双击网页空白处暂停翻页\n\n                    pageLoading();\n                }, 500)\n            })\n        } else if (webType === 3) {\n            window.addEventListener('urlchange', function(){\n                lp = location.pathname;\n                if (nowLocation == location.href) return\n                nowLocation = location.href; curSite = {SiteTypeID: 0}; pageNum.now = 1; // 重置规则+页码\n                DBSite.flarum.url(); // 重新判断规则\n\n                if (curSite.style) {insStyle(curSite.style)} // 插入 Style CSS 样式\n                if (GM_getValue('menu_page_number')) {pageNumber('add');} else {pageNumber('set');} // 显示页码\n                pausePageEvent(); // 左键双击网页空白处暂停翻页\n\n                pageLoading();\n            })\n        }\n    }\n    // 插入 Style CSS 样式\n    if (curSite.style) insStyle(curSite.style)\n\n    // 自动无缝翻页\n    pageLoading();\n\n\n    // --------------------------------------------------------\n\n\n    // [Discuz! 论坛] 判断各版块帖子列表类型\n    function discuzForum(m) {\n        if (m == 'm') { // 手机版页面\n            if (getCSS('a.loadmore')) {\n                curSite = DBSite.discuz_m_forum;\n            } else if (getCSS('.threadlist')) {\n                curSite = DBSite.discuz_m; curSite.pager.pageE = '.threadlist > ul > li';\n            } else if (getCSS('[id^=\"normalthread_\"]')) {\n                curSite = DBSite.discuz_m; curSite.pager.pageE = '[id^=\"normalthread_\"]:not(.ZDlist)';\n            }\n            if (curSite.SiteTypeID !== 0 && location.hostname === 'keylol.com') {curSite.history = false; urlC = true;}\n        } else {\n            if (getCSS('#autopbn')) { //         判断是否有 [下一页] 按钮\n                curSite = DBSite.discuz_forum;\n            } else if (getCSS('#waterfall')) { //           判断是否为图片模式\n                if (!getCSS('#pgbtn.pgbtn>a[href^=javascript]')) { //       如果各版块帖子列表已存在这个元素，说明自带了无缝翻页\n                    curSite = DBSite.discuz_waterfall; waterfallStyle(); // 图片模式列表样式预处理\n                }\n            } else {\n                curSite = DBSite.discuz_guide;\n            }\n        }\n    }\n    // [Discuz! 论坛] 判断手机版帖子内\n    function discuzThreadM() {\n        if (getCSS('[id^=\"pid\"]')) {\n            curSite = DBSite.discuz_m; curSite.pager.pageE = '[id^=\"pid\"], [id^=\"pid\"]+div:not([id=\"post_new\"])'\n        } else if (getCSS('[id^=\"post_\"]')) {\n            curSite = DBSite.discuz_m; curSite.pager.pageE = '[id^=\"post_\"]';\n        }\n        if (curSite.SiteTypeID !== 0 && location.hostname === 'keylol.com') {curSite.history = false; urlC = true;}\n    }\n    function discuz_() {\n        if (getCSS('body[id=\"nv_forum\"][class^=\"pg_\"][onkeydown*=\"27\"]')) {\n            switch (getCSS('body[id=\"nv_forum\"][class^=\"pg_\"][onkeydown*=\"27\"]').className) {\n                case 'pg_forumdisplay': // < 各版块帖子列表 >\n                    discuzForum(); break;\n                case 'pg_viewthread': //   < 帖子内 >\n                    curSite = DBSite.discuz_thread; break;\n                case 'pg_guide': //        < 导读帖子列表等 >\n                    curSite = DBSite.discuz_guide; break;\n                case 'pg_collection': //   < 淘贴列表 >\n                    curSite = DBSite.discuz_collection; break;\n            }\n        }\n        // 如果上面没有匹配的则继续                  < 搜索结果 >\n        if (curSite.SiteTypeID === 0) {\n            if (indexOF('search') || getCSS('body[id=\"nv_search\"][onkeydown*=\"27\"]')) {\n                if (indexOF('mobile=2', 's')) { // 手机版页面\n                    curSite = DBSite.discuz_m; curSite.pager.pageE = '.threadlist > ul > li'; urlC = true;\n                } else {\n                    curSite = DBSite.discuz_search;\n                }\n            }\n        }\n        // 如果上面没有匹配的则继续\n        if (curSite.SiteTypeID === 0) {\n            if (indexOF('.html')) { //                   判断是不是静态网页（.html 结尾）\n                if (indexOF('/forum-')) { //             < 各版块帖子列表 >\n                    if (getXpath('//head/meta[@name=\"applicable-device\" and @content=\"mobile\"] | //head/title[contains(text(), \"手机版\")] | //head/link[contains(@href, \"/mobile/\")] | //head/script[contains(@src, \"/mobile/\")]')) { // 手机版页面\n                        discuzForum('m');\n                    } else {\n                        discuzForum();\n                    }\n                } else if (indexOF('/thread-')) { //     < 帖子内 >\n                    if (getXpath('//head/meta[@name=\"applicable-device\" and @content=\"mobile\"] | //head/title[contains(text(), \"手机版\")] | //head/link[contains(@href, \"/mobile/\")] | //head/script[contains(@src, \"/mobile/\")]')) { // 手机版页面\n                        discuzThreadM();\n                    } else {\n                        curSite = DBSite.discuz_thread;\n                    }\n                }\n            }\n            if (indexOF('/archiver/')) { //     < 归档页 >\n                curSite = DBSite.discuz_archiver;\n            }\n        }\n        // 如果上面没有匹配的则继续\n        if (curSite.SiteTypeID === 0) {\n            if (indexOF('mod=forumdisplay', 's') || indexOF('forumdisplay.php')) { //      < 各版块帖子列表 >\n                if (indexOF('mobile=2', 's') || indexOF('mobile=yes', 's') || getXpath('//head/meta[@name=\"applicable-device\" and @content=\"mobile\"] | //head/title[contains(text(), \"手机版\")] | //head/link[contains(@href, \"/mobile/\")] | //head/script[contains(@src, \"/mobile/\")]')) { // 手机版页面\n                    discuzForum('m');\n                } else {\n                    discuzForum();\n                }\n            } else if (indexOF('mod=viewthread', 's') || indexOF('viewthread.php')) { // < 帖子内 >\n                if (indexOF('mobile=2', 's') || getXpath('//head/meta[@name=\"applicable-device\" and @content=\"mobile\"] | //head/title[contains(text(), \"手机版\")] | //head/link[contains(@href, \"/mobile/\")] | //head/script[contains(@src, \"/mobile/\")]')) { // 手机版页面\n                    discuzThreadM();\n                } else {\n                    curSite = DBSite.discuz_thread;\n                }\n            } else if (indexOF('mod=guide', 's')) { //      < 导读帖子列表 >\n                curSite = DBSite.discuz_guide;\n            } else if(indexOF('mod=space', 's') && indexOF('do=thread', 's')) { // 别人的主题/回复\n                curSite = DBSite.discuz_youspace;\n            } else if (indexOF('mod=collection', 's')) { // < 淘贴列表 >\n                curSite = DBSite.discuz_collection;\n            } else if (getCSS('#threadlist, tbody[id^=\"normalthread_\"]')) { //          < 部分论坛的各板块 URL 是自定义的 >\n                discuzForum();\n            } else if (getCSS('#postlist, form>.viewthread')) { //            < 部分论坛的帖子内 URL 是自定义的 >\n                curSite = DBSite.discuz_thread;\n            } else if (isMobile()) { //                     手机版判断\n                discuzForum('m');\n                if (curSite.SiteTypeID === 0) discuzThreadM();\n            }\n        }\n    }\n    // [Discuz! 论坛] 图片模式列表样式预处理\n    function waterfallStyle() {\n        let waterfall_ = getCSS('#waterfall > li:first-child');\n        if (waterfall_ && waterfall_.style && waterfall_.style.width) {\n            insStyle(`#waterfall {height: auto !important; width: 100% !important;} #waterfall > li {width: ${waterfall_.style.width} !important; float: left !important; position: inherit !important; left: auto !important; top: auto !important;}`);\n        } else {\n            waterfall_ = getAllCSS('#waterfall > dl');\n            if (waterfall_ && waterfall_.length > 5) {\n                insStyle(`#waterfall > dl {display: unset !important;}`);\n            }\n        }\n    }\n\n\n    // [NexusMods] 获取下一页地址\n    function nexusmods_nextL() {\n        if (getCSS('.nexus-ui-blocker') || !getCSS('.pagination a.page-selected')) return\n        let modList;\n        if (indexOF('/news')) {modList = RH_NewsTabContent;} else if (indexOF('/users/') && indexOF('tab=user+files','s')) {modList = RH_UserModsTab;} else if (indexOF('/mods/') && indexOF('tab=posts','s')) {modList = RH_CommentContainer;} else {modList = RH_ModList;}\n        if (!modList) return\n        let out_items = JSON.stringify(modList.out_items).replace(/{|}|\"/g,''),\n            nextNum = getXpath('//div[contains(@class, \"pagination\")][1]//a[contains(@class, \"page-selected\")]/../following-sibling::li[1]/a');\n        var url = '';\n        if (nextNum && nextNum.innerText) {\n            nextNum = nextNum.innerText;\n            if (out_items.indexOf('page:') > -1) {out_items = out_items.replace(/page:\\d+/, `page:${nextNum}`);} else {out_items += `,page:${nextNum}`;}\n            if (!indexOF(/\\/(mods|users)\\/\\d+/)) { // MOD 页/用户页 不需要这些\n                let categories = modList.out_items.categories, tags_yes = modList.out_items.tags_yes, search = modList.out_items.search, out_items_sub = '';\n                if (categories && categories != []) { // 分类页\n                    if (modList.out_items.categories instanceof Array) {// 单独使用时为数组\n                        for (let i = 0; i < categories.length; i++) {out_items_sub += `categories[]:${categories[i]},`;}\n                    } else {\n                        for (let key in modList.out_items.categories) {out_items_sub += `categories[${key}]:${modList.out_items.categories[key]},`;}\n                    }\n                    if (out_items.indexOf('categories:') > -1) out_items = out_items.replace('categories:', out_items_sub)\n                }; out_items_sub='';\n                if (tags_yes && tags_yes != []) { // 标签页\n                    if (modList.out_items.tags_yes instanceof Array) {// 单独使用时为数组\n                        for (let i = 0; i < tags_yes.length; i++) {out_items_sub += `tags_yes[]:${tags_yes[i]},`;}\n                    } else {\n                        for (let key in modList.out_items.tags_yes) {out_items_sub += `tags_yes[${key}]:${modList.out_items.tags_yes[key]},`;}\n                    }\n                    if (out_items.indexOf('tags_yes:') > -1) out_items = out_items.replace('tags_yes:', out_items_sub)\n                }; out_items_sub='';\n                if (search && search.length != 0) { // 搜索页\n                    for (let key in modList.out_items.search) {out_items_sub += `search[${key}]:${modList.out_items.search[key]},`;}\n                    if (out_items.indexOf('search:') > -1) out_items = out_items.replace('search:',out_items_sub)\n                }; out_items_sub='';\n            }\n            //console.log(`https://www.nexusmods.com${modList.uri}?RH_${modList.id}=${out_items}`)\n            return `https://www.nexusmods.com${modList.uri}?RH_${modList.id}=${out_items}`\n        }\n        return ''\n    }\n    // [NexusMods] 的插入前函数（隐藏底部元素）\n    function nexusmods_bF(pageE) {\n        pageE.forEach(function (one) {\n            let now = one.querySelector('.mod-tile-left');\n            if (now) {\n                let downloadCount = now.querySelector('.downloadcount > span.flex-label');\n                if (downloadCount) {\n                    if (GlobalModStats[now.dataset.gameId] && GlobalModStats[now.dataset.gameId][now.dataset.modId]) {\n                        downloadCount.textContent = shortFormat(parseInt(GlobalModStats[now.dataset.gameId][now.dataset.modId].total));\n                    }\n                }\n            }\n        });\n        return pageE\n    }\n\n\n    // [Mangabz 漫画] 初始化（调整本话图片）\n    function mangabz_init() {\n        if (getCSS('#showimage')) getCSS('#showimage').removeAttribute('oncontextmenu');\n        if (getCSS('#cp_img')) getCSS('#cp_img').removeAttribute('oncontextmenu');\n        if (getCSS('#barChapter')) getCSS('#barChapter').removeAttribute('oncontextmenu');\n        if (getCSS('#cp_image')) {\n            getCSS('#cp_image').removeAttribute('oncontextmenu');\n            getCSS('#cp_image').removeAttribute('style');\n            getCSS('#cp_image').removeAttribute('id');\n        }\n    }\n    // [Mangabz 漫画] 获取下一页地址\n    function mangabz_nextL() {\n        var url = '';\n        if (MANGABZ_PAGE === MANGABZ_IMAGE_COUNT) { // 下一话\n            if (getNextE_('//a[./img[contains(@src, \"icon_xiayizhang\")]]')) getPageE_(curSite.pageUrl); // 访问下一话 URL 获取\n        } else { // 下一页\n            if (!mkey) var mkey = '';\n            url = location.origin + location.pathname + 'chapterimage.ashx' + `?cid=${MANGABZ_CID}&page=${MANGABZ_PAGE + 1}&key=${(mkey)}&_cid=${MANGABZ_CID}&_mid=${MANGABZ_MID}&_dt=${MANGABZ_VIEWSIGN_DT}&_sign=${MANGABZ_VIEWSIGN}`\n            if (url === curSite.pageUrl) return\n            curSite.pageUrl = url\n            //console.log(curSite.pageUrl)\n            getPageE_(curSite.pageUrl, 'text', 'GET', '', 'Next'); // 访问下一页 URL 获取\n        }\n    }\n    // [Mangabz 漫画] 插入数据\n    function mangabz_insertE(pageE, type) {\n        if (pageE) {\n            if (type === 'Next') { // 下一页\n                let imgArr = eval(pageE),\n                    _img = '';\n                for (let now of imgArr) {_img += `<img src=\"${now}\">`;}\n                if (_img) {\n                    getOne(curSite.pager.insertP[0]).insertAdjacentHTML(getAddTo(curSite.pager.insertP[1]), _img); // 将 img 标签插入到网页中\n                    MANGABZ_PAGE += imgArr.length;\n                    addHistory(pageE, document.title, location.origin + MANGABZ_CURL.substring(0, MANGABZ_CURL.length - 1) + '-p' + MANGABZ_PAGE + '/');\n                }\n            } else { // 下一话\n                // 插入 <script> 标签\n                insScript('html:not([dir]) > head > script:not([src])', pageE);\n                addHistory(pageE);\n                pageNumIncrement()\n                replaceElems(pageE)\n                MANGABZ_PAGE = 0;\n                mangabz_nextL();\n            }\n        }\n    }\n\n\n    // [动漫屋] 获取下一页地址\n    function dm5_nextL() {\n        var url = '';\n        if (DM5_PAGE === DM5_IMAGE_COUNT) { // 下一话\n            if (getNextE_('//div[@class=\"view-paging\"]//a[text()=\"下一章\"]')) getPageE_(curSite.pageUrl); // 访问下一话 URL 获取\n        } else { // 下一页\n            if (!mkey) var mkey = '';\n            url = location.origin + location.pathname + 'chapterfun.ashx' + `?cid=${DM5_CID}&page=${DM5_PAGE + 1}&key=${(mkey)}&language=1&gtk=6&_cid=${DM5_CID}&_mid=${DM5_MID}&_dt=${DM5_VIEWSIGN_DT}&_sign=${DM5_VIEWSIGN}`\n            if (url === curSite.pageUrl) return\n            curSite.pageUrl = url\n            //console.log(curSite.pageUrl)\n            getPageE_(curSite.pageUrl, 'text', 'GET', '', 'Next'); // 访问下一页 URL 获取\n        }\n    }\n    // [动漫屋] 插入数据\n    function dm5_insertE(pageE, type) {\n        if (pageE) {\n            if (type === 'Next') { // 下一页\n                let imgArr = eval(pageE),\n                    _img = '';\n                for (let now of imgArr) {_img += `<img src=\"${now}\">`;}\n                if (_img) {\n                    getOne(curSite.pager.insertP[0]).insertAdjacentHTML(getAddTo(curSite.pager.insertP[1]), _img); // 将 img 标签插入到网页中\n                    DM5_PAGE += imgArr.length;\n                    addHistory(pageE, document.title, location.origin + DM5_CURL.substring(0, DM5_CURL.length - 1) + '-p' + DM5_PAGE + '/');\n                }\n            } else { // 下一话\n                // 插入 <script> 标签\n                insScript('html:not([dir])>head>script:not([src])', pageE);\n                addHistory(pageE);\n                pageNumIncrement()\n                replaceElems(pageE)\n                DM5_PAGE = 0;\n                dm5_nextL();\n            }\n        }\n    }\n\n\n    // [Xmanhua 漫画] 获取下一页地址\n    function xmanhua_nextL() {\n        var url = '';\n        if (unsafeWindow[unsafeWindow.MH_PREFIX23+'PAGE'] === unsafeWindow[unsafeWindow.MH_PREFIX23+'IMAGE_COUNT']) { // 下一话\n            if (getNextE_('//a[./img[contains(@src, \"reader-bottom-right-2.png\")]]')) getPageE_(curSite.pageUrl); // 访问下一话 URL 获取\n        } else { // 下一页\n            if (!mkey) var mkey = '';\n            url = location.origin + location.pathname + 'chapterimage.ashx' + `?cid=${unsafeWindow[unsafeWindow.MH_PREFIX23+'CID']}&page=${unsafeWindow[unsafeWindow.MH_PREFIX23+'PAGE'] + 1}&key=${(mkey)}&_cid=${unsafeWindow[unsafeWindow.MH_PREFIX23+'_CID']}&_mid=${unsafeWindow[unsafeWindow.MH_PREFIX23+'MID']}&_dt=${unsafeWindow[unsafeWindow.MH_PREFIX23+'VIEWSIGN_DT']}&_sign=${unsafeWindow[unsafeWindow.MH_PREFIX23+'VIEWSIGN']}`\n            if (url === curSite.pageUrl) return\n            curSite.pageUrl = url\n            //console.log(curSite.pageUrl)\n            getPageE_(curSite.pageUrl, 'text', 'GET', '', 'Next'); // 访问下一页 URL 获取\n        }\n    }\n    // [Xmanhua 漫画] 插入数据\n    function xmanhua_insertE(pageE, type) {\n        if (pageE) {\n            if (type === 'Next') { // 下一页\n                let imgArr = eval(pageE),\n                    _img = '';\n                for (let now of imgArr) {_img += `<img src=\"${now}\">`;}\n                if (_img) {\n                    getOne(curSite.pager.insertP[0]).insertAdjacentHTML(getAddTo(curSite.pager.insertP[1]), _img); // 将 img 标签插入到网页中\n                    unsafeWindow[unsafeWindow.MH_PREFIX23+'PAGE'] += imgArr.length;\n                    addHistory(pageE, document.title, location.origin + unsafeWindow[unsafeWindow.MH_PREFIX23+'CURL'].substring(0, unsafeWindow[unsafeWindow.MH_PREFIX23+'CURL'].length - 1) + '-p' + unsafeWindow[unsafeWindow.MH_PREFIX23+'PAGE'] + '/');\n                }\n            } else { // 下一话\n                // 插入 <script> 标签\n                insScript('html:not([dir]) > head > script:not([src])', pageE);\n                addHistory(pageE);\n                pageNumIncrement()\n                replaceElems(pageE)\n                unsafeWindow[unsafeWindow.MH_PREFIX23+'PAGE'] = 0;\n                xmanhua_nextL();\n            }\n        }\n    }\n\n\n    // --------------------------------------------------------\n\n\n    // 自动无缝翻页\n    function pageLoading() {\n        if (curSite.SiteTypeID === 0 || !curSite.pager) return\n        if (curSite.pager.type === undefined) curSite.pager.type = 1; // 默认翻页模式 1\n        if (curSite.pager.scrollD === undefined) curSite.pager.scrollD = 2000; // 默认翻页触发线 2000\n        if (curSite.pager.interval === undefined) curSite.pager.interval = 500; // 默认间隔时间 500ms\n        /*if (curSite.pager.replaceE === undefined) { // 如果 replaceE 不存在，则默认替换 nextL\n            if ((curSite.pager.type === 1 || curSite.pager.type === 3 || curSite.pager.type === 6) && curSite.pager.nextL && typeof curSite.pager.nextL !== 'function' && curSite.pager.nextL.search(/^js;/i) !== 0) {\n                curSite.pager.replaceE = curSite.pager.nextL\n            }\n        }*/\n        //console.log(curSite)\n        curSite.pageUrl = ''; // 下一页URL\n        windowScroll(function (direction, e) {\n            // 下滑 且 未暂停翻页 且 SiteTypeID > 0 时，才准备翻页\n            if (direction != 'down' || !pausePage || curSite.SiteTypeID == 0) return\n\n            // 翻页模式 5 且为框架内时，要判断顶层是否通过页码暂停翻页了\n            if (curSite.pager.type == 5 && self != top && window.top.document.xiu_pausePage == false) return\n\n            let scrollTop = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop,\n                scrollHeight = window.innerHeight || document.documentElement.clientHeight,\n                scrollD = curSite.pager.scrollD;\n            // <<<<< 翻页类型 3（依靠 [基准元素] 与 [浏览器可视区域底部] 之间的距离缩小来触发翻页）>>>>>\n            if (curSite.pager.type === 3) {\n                if (!curSite.pager.scrollE) { // 当 scrollE 未指定时\n                    if(curSite.pager.replaceE) { // 如果指定了 replaceE，则默认 scrollE 为 replaceE\n                        curSite.pager.scrollE = curSite.pager.replaceE;\n                    } else { // 如果 replaceE 也未指定，则默认 scrollE 为 nextL\n                        curSite.pager.scrollE = curSite.pager.nextL;\n                    }\n                }\n                let scrollE = getOne(curSite.pager.scrollE);\n                //console.log(scrollE.offsetTop, scrollE.offsetTop - (scrollTop + scrollHeight), scrollD, scrollTop + scrollHeight, curSite.SiteTypeID)\n                if (scrollE.offsetTop - (scrollTop + scrollHeight) <= scrollD) {intervalPause(); checkURL(getPageE);}\n\n            } else if (document.documentElement.scrollHeight <= scrollHeight + scrollTop + scrollD) {\n                // <<<<< 翻页类型 1（由脚本实现自动无缝翻页）>>>>>\n                if (curSite.pager.type === 1) {\n                    intervalPause(); checkURL(getPageE);\n\n                    // <<<<< 翻页类型 2（网站自带了自动无缝翻页功能，只需要点击下一页按钮即可）>>>>>\n                } else if (curSite.pager.type === 2) {\n                    let autopbn = getOne(curSite.pager.nextL);\n                    if (!autopbn) return\n                    if (curSite.pager.isHidden && isHidden(autopbn)) return // 如果 isHidden = true，那么需要判断元素是否隐藏\n                    if (curSite.pager.nextText) {\n                        //console.log(curSite.pager.nextText, autopbn.innerText, autopbn)\n                        // 按钮文本，当按钮文本 = 该文本时，才会点击按钮加载下一页\n                        if (autopbn.innerText === curSite.pager.nextText) {autopbn.click(); pageNumIncrement();}\n                    } else if (curSite.pager.nextTextOf) {\n                        // 按钮文本的一部分，当按钮文本包含该文本时，才会点击按钮加载下一页\n                        if (autopbn.innerText.indexOf(curSite.pager.nextTextOf) > -1) {autopbn.click(); pageNumIncrement();}\n                    } else if (curSite.pager.nextHTML) {\n                        // 按钮内元素，当按钮内元素 = 该元素内容时，才会点击按钮加载下一页\n                        if (autopbn.innerHTML === curSite.pager.nextHTML) {autopbn.click(); pageNumIncrement();}\n                    } else {\n                        intervalPause();\n                        // 如果没有指定按钮文字就直接点击\n                        autopbn.click(); pageNumIncrement();\n                    }\n\n                    // <<<<< 翻页类型 4（部分简单的动态加载类网站）>>>>>\n                } else if (curSite.pager.type === 4) {\n                    intervalPause(); if (typeof curSite.pager.nextL == 'function') {curSite.pager.nextL();} else if (getNextE_(curSite.pager.nextL)) {getPageE_(curSite.pageUrl);}\n\n                    // <<<<< 翻页类型 5（插入 iframe 方式来加载下一页）>>>>>\n                } else if (curSite.pager.type === 5) {\n                    checkURL(insIframe);\n\n                    // <<<<< 翻页类型 6（通过 iframe 获取下一页动态加载内容）>>>>>\n                } else if (curSite.pager.type === 6) {checkURL(insIframe_);}\n            }\n        });\n\n        function intervalPause() {\n            if (curSite.pager.interval) {\n                pausePage = false\n                setTimeout(function(){pausePage = true;}, curSite.pager.interval)\n            }\n        }\n    }\n\n    // 翻页类型 1/3\n    function getPageE(url) {\n        // Chrome 浏览器可以依靠改用原生 XMLHttpRequest 尝试解决因缺失跨域 cookie 导致的问题（比如一些使用 Cloudflare CDN 人机验证的网站，会出现脚本后台获取到人机验证页面）\n        // Firefox 浏览器则需要使用 GM_xmlhttpRequest 的 cookiePartition 参数来解决（该参数要 Tampermonkey v5.2 及以上才有）\n        // 如果翻页规则有 curSite.gmxhr 或是 Firefox 浏览器，则依然使用 GM_xmlhttpRequest+cookiePartition，反之则使用原生 XMLHttpRequest\n        if (curSite.gmxhr || navigator.userAgent.includes('Firefox')) {\n            GM_xmlhttpRequest({\n                url: url,\n                method: 'GET',\n                //overrideMimeType: 'text/html; charset=' + (document.characterSet||document.charset||document.inputEncoding),\n                responseType: 'arraybuffer', // Firefox 浏览器下 Tampermonkey 访问 GBK 网站时会乱码，只能改为 TextDecoder 手动转换编码\n                headers: {\n                    'x-requested-with': (curSite.xRequestedWith === true) ? 'XMLHttpRequest':null,\n                    'Referer': (curSite.noReferer === true) ? null:location.href,\n                    'Accept': 'text/html,application/xhtml+xml,application/xml'\n                },\n                cookiePartition: { // https://github.com/Tampermonkey/tampermonkey/issues/2057\n                    topLevelSite: location.origin\n                },\n                timeout: 5000,\n                onload: function (response) {\n                    try {\n                        //console.log('URL：' + url, '最终 URL：' + response.finalUrl, '返回内容：' + response.responseText, response)\n                        processElems(createDocumentByString((new TextDecoder((document.characterSet||document.charset||document.inputEncoding))).decode(response.response)));\n                        //processElems(createDocumentByString(response.responseText));\n                    } catch (e) {\n                        console.error('[自动无缝翻页] - 处理获取到的下一页内容时出现问题，请检查！\\n', e, '\\nURL：' + url, '\\n最终 URL：' + response.finalUrl, '\\n返回状态：' + response.statusText, '\\n返回内容：' + response.responseText);\n                    }\n                },\n                onerror: function (response) {\n                    console.log('URL：' + url, response)\n                    GM_notification({text: '❌ 获取下一页失败...', timeout: 5000});\n                },\n                ontimeout: function (response) {\n                    setTimeout(function(){curSite.pageUrl = '';}, 3000)\n                    console.log('URL：' + url, response)\n                    GM_notification({text: '❌ 获取下一页超时，可 3 秒后再次滚动网页重试（或尝试刷新网页）...', timeout: 5000});\n                }\n            });\n        } else {\n            const xhr = new XMLHttpRequest();\n            xhr.open('GET', url, true);\n            xhr.overrideMimeType('text/html; charset=' + (document.characterSet||document.charset||document.inputEncoding));\n\n            if (curSite.xRequestedWith === true) {xhr.setRequestHeader('x-requested-with', 'XMLHttpRequest')}\n            //(curSite.noReferer === true) ? xhr.setRequestHeader('Referer', ''):xhr.setRequestHeader('Referer', location.href)\n            xhr.setRequestHeader('Accept', 'text/html,application/xhtml+xml,application/xml')\n\n            xhr.timeout = 5000;\n            xhr.onload = function() {\n                try {\n                    //console.log('URL：' + url, '最终 URL：' + xhr.responseURL, '返回内容：' + xhr.responseText)\n                    processElems(createDocumentByString(xhr.responseText));\n                } catch (e) {\n                    console.error('[自动无缝翻页] - 处理获取到的下一页内容时出现问题，请检查！\\n', e, '\\nURL：' + url, '\\n最终 URL：' + xhr.responseURL, '\\n返回状态：' + xhr.statusText, '\\n返回内容：' + xhr.responseText);\n                }\n            };\n            xhr.onerror = function() {\n                console.log('URL：' + url, xhr.statusText)\n                GM_notification({text: '❌ 获取下一页失败...', timeout: 5000});\n            };\n            xhr.ontimeout = function() {\n                setTimeout(function(){curSite.pageUrl = '';}, 3000)\n                console.log('URL：' + url, xhr.statusText)\n                GM_notification({text: '❌ 获取下一页超时，可 3 秒后再次滚动网页重试（或尝试刷新网页）...', timeout: 5000});\n            };\n            xhr.send();\n        }\n    }\n\n    // 翻页类型 4\n    function getPageE_(url, type = '', method = 'GET', data = '', type2) {\n        let mimeType,accept;\n        switch (type) {\n            case 'json':\n                accept = 'application/json'; mimeType = 'application/json; charset=' + (document.characterSet||document.charset||document.inputEncoding); break;\n            case 'text':\n                accept = 'text/plain'; mimeType = 'text/plain; charset=' + (document.characterSet||document.charset||document.inputEncoding); break;\n            default:\n                accept = 'text/html,application/xhtml+xml,application/xml'; mimeType = 'text/html; charset=' + (document.characterSet||document.charset||document.inputEncoding);\n        }\n\n        GM_xmlhttpRequest({\n            url: url,\n            method: method,\n            data: data,\n            responseType: type,\n            overrideMimeType: mimeType,\n            headers: {\n                'Referer': (curSite.noReferer === true) ? null:location.href,\n                'Content-Type': (method === 'POST') ? 'application/x-www-form-urlencoded':'',\n                'Accept': accept\n            },\n            timeout: 5000,\n            onload: function (response) {\n                try {\n                    //console.log('最终 URL：' + response.finalUrl, '返回内容：' + response.responseText)\n                    switch (type) {\n                        case 'json':\n                            curSite.pager.insertE(response.response, type2);\n                            break;\n                        case 'text':\n                            curSite.pager.insertE(response.responseText, type2)\n                            break;\n                        default:\n                            curSite.pager.insertE(createDocumentByString(response.responseText), type2)\n                    }\n                } catch (e) {\n                    console.log(e);\n                }\n            },\n            onerror: function (response) {\n                setTimeout(function(){curSite.pageUrl = '';}, 3000)\n                console.log('URL：' + url, response)\n                GM_notification({text: '❌ 获取下一页失败，可 3 秒后再次滚动网页重试（或尝试刷新网页）...', timeout: 5000});\n            },\n            ontimeout: function (response) {\n                setTimeout(function(){curSite.pageUrl = '';}, 3000)\n                console.log('URL：' + url, response)\n                GM_notification({text: '❌ 获取下一页超时，可 3 秒后再次滚动网页重试（或尝试刷新网页）...', timeout: 5000});\n            }\n        });\n    }\n    // 翻页类型 5（插入 iframe 方式加载下一页，无限套娃）\n    function insIframe(src) {\n        // 停用当前页面翻页\n        if (curSite.SiteTypeID == 0) return\n        curSite.SiteTypeID = 0;\n\n        // 创建 iframe\n        let iframe = document.createElement('iframe');\n        iframe.id = 'Autopage_iframe';\n        iframe.src = src.replace(/#.+$/,'');\n\n        document.documentElement.appendChild(document.createElement('style')).textContent = 'iframe#Autopage_iframe {position: absolute !important; width: 100% !important; height: 100% !important; border: none !important;}';\n\n        var beforeScrollTop = document.documentElement.scrollTop || document.body.scrollTop\n        // 当滚动条到底部时（即完全显示 iframe 框架），隐藏当前页面的滚动条\n        window.addEventListener('scroll', function () {\n            let scrollTop = document.documentElement.scrollTop || document.body.scrollTop,\n                clientHeight = document.documentElement.clientHeight || document.body.clientHeight,\n                scrollHeight = document.documentElement.scrollHeight || document.body.scrollHeight,\n                afterScrollTop = document.documentElement.scrollTop || document.body.scrollTop,\n                delta = afterScrollTop - beforeScrollTop;\n            if (delta == 0) return false;\n            beforeScrollTop = afterScrollTop;\n\n            //console.log(delta, (scrollTop + clientHeight + 10), scrollHeight, '1111')\n            if (delta > 0 && scrollTop + clientHeight + 10 >= scrollHeight && !getCSS('#Autopage_iframe-scroll')) {\n                let newStyle = document.createElement('style'); newStyle.id = 'Autopage_iframe-scroll';\n                newStyle.textContent = 'html::-webkit-scrollbar, body::-webkit-scrollbar {width: 0 !important;height: 0 !important;} html, body {scrollbar-width: none !important;}';\n                if (curSite.pager.style) newStyle.textContent += curSite.pager.style;\n                document.documentElement.appendChild(newStyle);\n\n                // 恢复 iframe 的滚动条\n                if (iframe.contentWindow.document.querySelectorAll('#Autopage_iframe-scroll-hidden')) iframe.contentWindow.document.querySelectorAll('#Autopage_iframe-scroll-hidden').forEach((o)=>{o.remove();});\n\n                // 给予 iframe 焦点\n                iframe.focus();\n                if (iframe.contentWindow.document.body) {iframe.contentWindow.document.body.focus(); iframe.contentWindow.document.body.click();}\n            } else if (delta < 0 && scrollTop + clientHeight + 10 <= scrollHeight && getCSS('#Autopage_iframe-scroll')) {\n                getCSS('#Autopage_iframe-scroll').remove();\n                // 再次禁用 iframe 的滚动条\n                if (!iframe.contentWindow.document.getElementById('Autopage_iframe-scroll-hidden')) {\n                    let newStyle = document.createElement('style'); newStyle.id = 'Autopage_iframe-scroll-hidden';\n                    newStyle.textContent = 'html, body {overflow: hidden !important;}';\n                    iframe.contentWindow.document.documentElement.appendChild(newStyle);\n                }\n            }\n        }, false);\n\n        // 加载完成后才继续\n        iframe.onload = function() {\n            // 暂时禁用 iframe 的滚动条\n            if (!getCSS('#Autopage_iframe-scroll') && !iframe.contentWindow.document.getElementById('Autopage_iframe-scroll-hidden')) {\n\n                let newStyle = document.createElement('style'); newStyle.id = 'Autopage_iframe-scroll-hidden';\n                newStyle.textContent = 'html, body {overflow: hidden !important;}';\n                iframe.contentWindow.document.documentElement.appendChild(newStyle);\n            }\n\n            // 添加历史记录\n            if (curSite.history === undefined) {\n                if (GM_getValue('menu_history', true)) addHistory(iframe.contentWindow.document, iframe.contentWindow.document.title);\n            } else {\n                if (curSite.history) addHistory(iframe.contentWindow.document, iframe.contentWindow.document.title);\n            }\n            // 当前页码 + 1\n            if (!curSite.hiddenPN) {\n                let autopageNumber = getCSS('#Autopage_number', window.top.document)\n                if (autopageNumber) pageNumIncrement()\n            }\n        }\n\n        // 插入 iframe\n        if (location.hostname == 'www.cocomanga.com') {\n            document.body.appendChild(iframe);\n        } else {\n            document.documentElement.appendChild(iframe);\n        }\n    }\n    // 翻页类型 6（通过 iframe 获取下一页动态加载内容，只有一个娃）\n    function insIframe_(src) {\n        // 暂停翻页\n        if (!pausePage) return\n        pausePage = false\n\n        //console.log('000',src)\n        // 如果不存在，则创建一个 iframe\n        let iframe = document.getElementById('Autopage_iframe');\n        if (!iframe) {\n            iframe = document.createElement('iframe');\n            //iframe.sandbox = 'allow-same-origin allow-scripts allow-popups allow-forms';\n            iframe.id = 'Autopage_iframe';\n            iframe.src = src.replace(/#.+$/,'');\n\n            document.documentElement.appendChild(document.createElement('style')).textContent = 'iframe#Autopage_iframe {position: absolute !important; top: -9999px !important; left: -9999px !important; width: 100% !important; height: 100% !important; border: none !important; z-index: -999 !important;}';\n        }\n\n        // 加载完成后才继续\n        iframe.onload = function() {\n            if (!curSite.pager.loadTime) curSite.pager.loadTime = 300; // 默认 300ms\n            let time1 = 0 ,time2 = setInterval(function(){\n                let scrollHeight = (iframe.contentWindow.document.documentElement.scrollHeight || iframe.contentWindow.document.body.scrollHeight)/10\n                iframe.contentWindow.scrollTo(0, 999999);\n                iframe.contentWindow.scrollTo(0, scrollHeight*time1);\n                if (++time1 == 12) {\n                    clearInterval(time2);\n                    processElems(iframe.contentWindow.document); // 插入/替换元素等\n                    pausePage = true; //      恢复翻页\n                }\n            }, curSite.pager.loadTime/10)\n            }\n\n        // 插入 iframe（如果已存在则直接改 src）\n        if (document.getElementById('Autopage_iframe')) {\n            iframe.src = src.replace(/#.+$/,'');\n        } else {\n            document.documentElement.appendChild(iframe);\n        }\n    }\n\n\n    // XHR 后处理结果，插入、替换元素等（适用于翻页类型 1/3/6）\n    function processElems(response) {\n        if (!curSite.pager.insertP) {curSite.pager.insertP = [curSite.pager.pageE, 5]}\n        let pageE = getAll(curSite.pager.pageE, response, response), toE;\n        if (curSite.pager.insertP[1] === 5) { // 插入 pageE 列表最后一个元素的后面\n            toE = toE5pop(getAll(curSite.pager.insertP[0]));\n        } else {\n            toE = getOne(curSite.pager.insertP[0]);\n        }\n        //console.log(curSite.pager.pageE, pageE, curSite.pager.insertP, toE)\n\n        if (pageE.length > 0 && toE) {\n            // 如果有插入前函数就执行函数\n            if (curSite.function && curSite.function.bF) {\n                if (curSite.function.bFp) { // 如果指定了参数\n                    if (typeof(curSite.function.bF) == 'string') { // 如果是字符串，说明是自定义规则\n                        pageE = new Function('pageE', 'bFp', 'fun', curSite.function.bF)(pageE, curSite.function.bFp, window.autoPage)\n                    } else {\n                        pageE = curSite.function.bF(pageE, curSite.function.bFp);\n                    }\n                } else {\n                    if (typeof(curSite.function.bF) == 'string') { // 如果是字符串，说明是自定义规则\n                        pageE = new Function('pageE', 'fun', curSite.function.bF)(pageE, window.autoPage)\n                    } else {\n                        pageE = curSite.function.bF(pageE);\n                    }\n                }\n            }\n\n            // 强制新标签页打开链接\n            if (curSite.blank === 4 || curSite.blank === 5 || curSite.blank === 6) {pageE = forceTarget(pageE);}\n\n            // 插入位置\n            let addTo = getAddTo(curSite.pager.insertP[1]);\n\n            // 插入新页面元素\n            if (curSite.pager.insertP[1] === 6) { // 插入到目标内部末尾（针对文本，比如小说网页）\n                let afterend = '';\n                if (curSite.pager.insertP6Br === false) { // 这个基本上只有脚本内置的通用规则会用上，因为该通用规则匹配到的网站正文 <br> 是未知的，所以需要判断一下数量\n                    if (unsafeWindow.insertP6Br === true) {\n                        afterend += '<br/><br/>'\n                    } else if (unsafeWindow.insertP6Br === undefined) {\n                        if (getAll('br', getOne(curSite.pager.pageE)).length > 10) {\n\n                            function checklastElementsBr(e) {\n                                const children = Array.from(e.childNodes).filter(node => {return node.nodeType === Node.ELEMENT_NODE || (node.nodeType === Node.TEXT_NODE && node.textContent.trim() !== '');}), lastElement = children[children.length - 1];\n                                if (lastElement.tagName === 'BR') { // 判断最后一个元素\n                                    return true; // 最后一个元素是 <br>\n                                } else if (lastElement.tagName === 'P' && lastElement.classList.contains('readinline')) { // 判断倒数第二个元素\n                                    return children[children.length - 2].tagName === 'BR'; // 倒数第二个元素是 <br>\n                                }\n                                return false; // 其他情况\n                            };\n                            // 如果正文末尾最后一个元素不是 <br> 且 倒数第二个元素也不是 <br> 时，才添加 <br/><br/>\n                            if (!checklastElementsBr(getOne(curSite.pager.pageE))) {\n                                unsafeWindow.insertP6Br = true;\n                                afterend += '<br/><br/>'\n                            } else {unsafeWindow.insertP6Br = false;}\n                        }\n                    }\n                } else if (curSite.pager.insertP6Br) { // 对于其他 insertP6Br: true 的规则，则依然直接添加 <br>\n                    afterend += '<br/><br/>'\n                }\n                pageE.forEach(function (one) {afterend += one.innerHTML;});\n                toE.insertAdjacentHTML(addTo, afterend);\n            } else {\n                if (curSite.pager.insertP[1] === 2 || curSite.pager.insertP[1] === 4 || curSite.pager.insertP[1] === 5) pageE.reverse(); // 插入到 [元素内头部]、[目标本身后面] 时，需要反转顺序\n                pageE.forEach(function (one) {toE.insertAdjacentElement(addTo, one);});\n            }\n\n            // 当前页码 + 1\n            pageNumIncrement()\n\n            // 添加历史记录\n            if (curSite.history === undefined) {\n                if (GM_getValue('menu_history', true)) addHistory(response);\n            } else {\n                if (curSite.history) addHistory(response);\n            }\n\n            // 替换待替换元素\n            if (curSite.pager.replaceE !== \"\") replaceElems(response);\n\n            // 插入 <script> 标签\n            if (curSite.pager.scriptT || curSite.pager.scriptT == 0) {\n                switch (curSite.pager.scriptT) {\n                    case 0: // 下一页的所有 <script> 标签\n                        insScript('script', response); break;\n                    case 1: // 下一页的所有 <script> 标签（不包括 src 链接）\n                        insScript('script:not([src])', response); break;\n                    case 2: // 下一页主体元素 (pageE) 的同级 <script> 标签\n                        if (curSite.pager.insertP[1] === 2 || curSite.pager.insertP[1] === 4 || curSite.pager.insertP[1] === 5) pageE.reverse(); // 为了避免 JS 执行顺序反了，还需要再给反转回去\n                        insScript(null, pageE); break;\n                    case 3: // 下一页主体元素 (pageE) 的子元素 <script> 标签\n                        if (curSite.pager.insertP[1] === 2 || curSite.pager.insertP[1] === 4 || curSite.pager.insertP[1] === 5) pageE.reverse(); // 为了避免 JS 执行顺序反了，还需要再给反转回去\n                        insScript('script:not([src])', pageE); break;\n                }\n            }\n\n            // 如果有插入后函数就执行函数\n            if (curSite.function && curSite.function.aF) {\n                if (curSite.function.aFp) { // 如果指定了参数\n                    if (typeof(curSite.function.aF) == 'string') { // 如果是字符串，说明是自定义规则\n                        new Function('aFp', 'fun', curSite.function.aF)(curSite.function.aFp, window.autoPage)\n                    } else {\n                        curSite.function.aF(curSite.function.aFp);\n                    }\n                } else {\n                    if (typeof(curSite.function.aF) == 'string') { // 如果是字符串，说明是自定义规则\n                        new Function('fun', curSite.function.aF)(window.autoPage);\n                    } else {\n                        curSite.function.aF();\n                    }\n                }\n            }\n        } else { // 获取主体元素失败后，尝试重新获取\n            console.log(curSite.pager.pageE, pageE, curSite.pager.insertP, toE, response)\n            if (curSite.retry) {\n                console.warn('[自动无缝翻页] 获取主体元素失败，' + curSite.retry + '毫秒 后可向下翻网页来触发脚本尝试重新获取...')\n                setTimeout(function(){curSite.pageUrl = '';}, curSite.retry)\n            } else {\n                console.error('[自动无缝翻页] 获取主体元素失败...')\n                // 尝试替换元素看能不能继续翻页下去\n                /*if (curSite.pager.replaceE !== \"\") {\n                    if (replaceElems(response)) { // 如果替换成功\n                        console.log('[自动无缝翻页] 获取主体元素失败，尝试替换元素成功！')\n                        // 当前页码 + 1\n                        pageNumIncrement();\n                        // 添加历史记录\n                        if (curSite.history === undefined) {\n                            if (GM_getValue('menu_history', true)) addHistory(response);\n                        } else {\n                            if (curSite.history) addHistory(response);\n                        }\n                    } else {console.error('[自动无缝翻页] 获取主体元素失败，尝试替换元素失败...')}\n                }*/\n            }\n        }\n    }\n    // 通用型插入前函数（加载图片）\n    function src_bF(pageE, css = [0, 'img[data-original], img[data-src]', 'data-original']) {\n        if (css[2] === undefined) css[2] = 'data-original'\n        pageE.forEach(function (one) {\n            if (css[0] == 0) { // src 图片\n                if (one.tagName === 'IMG') {\n                    if (one.getAttribute(css[2])){one.src = one.getAttribute(css[2]);}else if (one.dataset.src){one.src = one.dataset.src;}\n                } else {\n                    one.querySelectorAll(css[1]).forEach(function (now) {if (now.getAttribute(css[2])){now.src = now.getAttribute(css[2]);}else if (now.dataset.src){now.src = now.dataset.src;};});\n                }\n            } else if (css[0] == 1) { // 背景图片\n                if (one.tagName === 'IMG') {\n                    if (one.getAttribute(css[2])){one.style.backgroundImage = 'url(\"' + one.getAttribute(css[2]) + '\")';}else if (one.dataset.src){one.style.backgroundImage = 'url(\"' + one.dataset.src + '\")';}\n                } else {\n                    one.querySelectorAll(css[1]).forEach(function (now) {if (now.getAttribute(css[2])){now.style.backgroundImage = 'url(\"' + now.getAttribute(css[2]) + '\")';}else if (now.dataset.src){now.style.backgroundImage = 'url(\"' + now.dataset.src + '\")';};});\n                }\n            }\n        });\n        return pageE\n    }\n    // 文字型插入前函数（正则过滤）\n    function xs_bF(pageE, reg) {\n        pageE.forEach(function (one) {one.innerHTML = one.innerHTML.replace(reg[0], reg[1])});\n        return pageE\n    }\n\n    // 通用型获取下一页地址（从 元素 中获取页码）该函数仅供脚本内部调用\n    function getNextE_(css) {\n        if (!css) css = curSite.pager.nextL; // 如果没有指定 css 参数，那么就使用规则中的 nextL\n        let next = getOne(css); // 获取含有下一页地址的元素\n        if (next && next.nodeType === 1 && next.href && next.href.slice(0,4) === 'http' && next.getAttribute('href').slice(0,1) !== '#') { // 确定元素存在且 href 是正常链接\n            if (next.href != curSite.pageUrl) { // 如果取到的下一页 URL 和上一次取到的 URL（也就是当前 URL）不一样\n                if (curSite.pager.forceHTTPS && location.protocol === 'https:') { // 如果规则要求强制 HTTPS，且当前网页的协议也是 HTTPS，那么就需要修改 URL 为 HTTPS\n                    if (next.href.replace(/^http:/,'https:') === curSite.pageUrl) {return false;} // 如果修改为 HTTPS 后和上一次取到的 URL（也就是当前 URL）一样，就返回 false\n                    curSite.pageUrl = next.href.replace(/^http:/,'https:'); // 反之返回修改 HTTPS 后的 URL\n                } else {\n                    curSite.pageUrl = next.href;\n                }\n            } else { // 如果取到的下一页 URL 和上一次取到的 URL（也就是当前 URL）一样，那么代表没有下一页了，就返回 false\n                return false;\n            }\n            //console.log(curSite.pageUrl)\n            return true;\n        }\n        return false; // 如果元素不存在 或 href 非正常链接，就返回false\n    }\n    // 通用型获取下一页地址（从 元素 中获取页码）该函数用于规则中调用（fun.getNextE() 这样）\n    function getNextE(css) {\n        if (!css) { // 考虑到可能被非 nextL 规则内调用，所以还是需要做一个判断\n            if (typeof curSite.pager.nextL == 'string' && curSite.pager.nextL.match(/^js;/i) === null) {css = curSite.pager.nextL;} else {return '';}\n        }\n        let next = getOne(css); // 获取含有下一页地址的元素\n        if (next && next.nodeType === 1 && next.href && next.href.slice(0,4) === 'http' && next.getAttribute('href').slice(0,1) !== '#') { // 确定元素存在且 href 是正常链接\n            if (next.href != curSite.pageUrl) { // 如果取到的下一页 URL 和上一次取到的 URL（也就是当前 URL）不一样\n                if (curSite.pager.forceHTTPS && location.protocol === 'https:') { // 如果规则要求强制 HTTPS，且当前网页的协议也是 HTTPS，那么就需要修改 URL 为 HTTPS\n                    if (next.href.replace(/^http:/,'https:') === curSite.pageUrl) {return '';} // 如果修改为 HTTPS 后和上一次取到的 URL（也就是当前 URL）一样，就返回空\n                    return next.href.replace(/^http:/,'https:'); // 反之返回修改 HTTPS 后的 URL\n                } else {\n                    return next.href;\n                }\n            } else { // 如果取到的下一页 URL 和上一次取到的 URL（也就是当前 URL）一样，那么代表没有下一页了，就返回空\n                return '';\n            }\n        }\n        return ''; // 如果元素不存在 或 href 非正常链接，就返回空\n    }\n    // 通用型获取下一页地址（从 元素 中获取页码，URL 替换 page= 参数）\n    function getNextEP(css, pf, reg) {\n        let nextNum = getOne(css), url = '';\n        if (nextNum && nextNum.textContent) {\n            nextNum = nextNum.textContent.replaceAll(' ','');\n            if (location.search) {\n                if (indexOF(pf, 's')) {\n                    url = location.search.replace(reg, pf + nextNum);\n                } else {\n                    url = location.search + '&' + pf + nextNum;\n                }\n            } else {\n                url = '?' + pf + nextNum;\n            }\n            url = location.origin + location.pathname + url;\n        }\n        //console.log('111', url)\n        return url\n    }\n    // 通用型获取下一页地址（直接给定页码，URL 替换 page= 参数）\n    function getNextSP(page, pf, reg) {\n        let url = '';\n        if (!page) return url\n        if (typeof page === 'number') page = page.toString()\n        if (location.search) {\n            if (indexOF(pf, 's')) {\n                url = location.search.replace(reg, pf + page);\n            } else {\n                url = location.search + '&' + pf + page;\n            }\n        } else {\n            url = '?' + pf + page;\n        }\n        return (location.origin + location.pathname + url)\n    }\n    // 通用型获取下一页地址（从 元素 中获取页码，URL 替换 pathname 路径）\n    function getNextEPN(css, reg, a, b = '') {\n        let nextNum = getOne(css), url = '';\n        if (nextNum && nextNum.textContent) {\n            nextNum = nextNum.textContent.replaceAll(' ','');\n            if (location.pathname) {\n                if (indexOF(reg)) {\n                    url = location.pathname.replace(reg, a + nextNum + b);\n                } else {\n                    url = location.pathname + a + nextNum + b;\n                }\n            } else {\n                url = location.pathname + a + nextNum + b;\n            }\n            url = location.origin + url + location.search;\n        }\n        return url\n    }\n    // 通用型获取下一页地址（从 URL 中获取页码，并页码+1，URL 替换 pathname 路径，后三个参数可以省略）\n    function getNextUPN(urlReg, reg, a, b = '', initP = '2', endP) {\n        let nextNum = urlReg.exec(location.pathname);\n        if (nextNum) {\n            if (nextNum.length > 1){ // 如果正则捕获到分组（也就是正则表达式中用英文括号括起来的），那么就改为使用第一个分组（也就是正则常说的 $1）作为当前页码数字\n                nextNum = String(parseInt(nextNum[1])+1);\n            } else {\n                nextNum = String(parseInt(nextNum[0])+1);\n            }\n            if (endP && (parseInt(nextNum) > parseInt(endP))) return ''\n        } else {\n            nextNum = initP;\n            if (endP && (parseInt(nextNum) > parseInt(endP))) return ''\n        }\n        let url = '';\n        if (location.pathname) {\n            if (indexOF(reg)) {\n                url = location.pathname.replace(reg, a + nextNum + b);\n            } else {\n                url = location.pathname + a + nextNum + b;\n            }\n        } else {\n            url = location.pathname + a + nextNum + b;\n        }\n        url = location.origin + url + location.search;\n        return url\n    }\n    // 通用型获取下一页地址（从 URL 中获取页码，并页码+1，URL 替换 page= 参数，后三个参数可以省略）\n    function getNextUP(pf, reg, lp = location.pathname, initP = '2', endP) {\n        let nextNum = getSearch(pf.replace('=','')); // 获取参数中的 page= 值\n        if (nextNum) { // 如果参数中存在 page=\n            nextNum = String(parseInt(nextNum)+1); // 下一页页码就是当前页码参数值 +1\n            if (endP && (parseInt(nextNum) > parseInt(endP))) return '' // 如果 endP 为真且 下一页页码 大于 endP(页码最大值)则终止\n        } else { // 如果参数中不存在 page=\n            nextNum = initP; // 因为不存在，所以一般都代表当前是位于第 1 页，那么下一页页码就设置为初始页码（默认 2）\n            if (endP && (parseInt(nextNum) > parseInt(endP))) return '' // 如果 endP 为真且 下一页页码 大于 endP(页码最大值)则终止\n        }\n        let url = '';\n        if (location.search) {\n            if (indexOF(pf, 's')) {\n                url = location.search.replace(reg, pf + nextNum);\n            } else {\n                url = location.search + '&' + pf + nextNum;\n            }\n        } else {\n            url = '?' + pf + nextNum;\n        }\n        url = location.origin + lp + url;\n        return url\n    }\n    // 通用型获取下一页地址（从 form input 中获取，返回 GET URL）\n    function getNextF(css) {\n        let form = getOne(css), value = '';\n        if (form) {\n            form.querySelectorAll('input[name]').forEach(function(input) {value += input.name + '=' + input.value + '&';}) // 生成表单参数\n            value = encodeURI(value.replace(/&$/,'')); // 清理最后一个 & 符号\n            if (form.action && value) return (form.action + '?' + value)\n        }\n        return '';\n    }\n\n\n    // 检查 URL\n    function checkURL(func) {\n        if (!curSite.pager.nextL) return\n        if (typeof curSite.pager.nextL == 'function') {\n            let tempUrl = curSite.pager.nextL();\n            if (!tempUrl || tempUrl === curSite.pageUrl || tempUrl.slice(0,4) !== 'http') return\n            curSite.pageUrl = tempUrl;\n            func(curSite.pageUrl);\n        } else if (curSite.pager.nextL.search(/^js;/i) === 0) { // 自定义翻页规则中执行 JavaScript 代码的\n            try {\n                let tempUrl = new Function('fun', curSite.pager.nextL.slice(3))(window.autoPage);\n                if (!tempUrl || tempUrl === curSite.pageUrl || tempUrl.slice(0,4) !== 'http') return\n                curSite.pageUrl = tempUrl;\n                func(curSite.pageUrl);\n            } catch (e) {\n                console.error('[自动无缝翻页] - 当前网页规则 \"nextL\" 内 JS 代码有误，请检查：\\n', curSite.pager.nextL + '\\n\\n', e);\n            }\n        } else if (getNextE_()) {\n            func(curSite.pageUrl);\n        }\n        //console.log(curSite.pageUrl);\n    }\n    // 替换元素\n    function replaceElems(pageE, o = curSite.pager.replaceE, r = curSite.pager.replaceE) {\n        let oE,rE;\n\n        if (curSite.pager.replaceE === undefined && curSite.pager.nextL && curSite.pager.nextL.search(/^js;/i) !== 0) { // 如果 replaceE 不存在，且 nextL 存在，且不是 js 代码\n            let a = getOne(curSite.pager.nextL) // 获取 nextL 元素，并判断该元素后面或前面是否有同类型的相邻兄弟元素\n            if ((a.nextElementSibling && a.nextElementSibling.tagName === a.tagName) || (a.previousElementSibling && a.previousElementSibling.tagName === a.tagName)) {\n                // nextL 元素后面或前面有同类型的相邻兄弟元素，则可以替换 nextL 的父元素\n                // 当 nextL 选择器为 xpath 时，直接末尾追加 /.. 即可选择其父元素\n                if (curSite.pager.nextL.slice(0,1) === '/' || curSite.pager.nextL.slice(0,2) === './' || curSite.pager.nextL.slice(0,2) === '(/' || curSite.pager.nextL.slice(0,3) === 'id(') {\n                    o = r = curSite.pager.nextL + '/..'\n                } else { // 当 nextL 选择器为 css 时，则需要寻找所有 nextL 元素的父元素\n                    oE = getAllParentElement(curSite.pager.nextL)\n                    rE = getAllParentElement(curSite.pager.nextL, pageE, pageE)\n                }\n            } else { // 如果 nextL 元素后面或前面没有同类型的相邻兄弟元素，那么就只替换 nextL 元素\n                o = r = curSite.pager.nextL\n            }\n        }\n\n        if (!oE && !rE && o && r) {\n            oE = getAll(o)\n            rE = getAll(r, pageE, pageE)\n        }\n\n        if (oE && rE && oE.length != 0 && rE.length != 0 && oE.length === rE.length) {\n            for (let i = 0; i < oE.length; i++) {\n                oE[i].outerHTML = rE[i].outerHTML;\n            }\n            return true\n        } else if (curSite.pager.replaceE !== undefined) {console.log(pageE,oE,rE)}\n        return false\n    }\n    // 添加历史记录\n    function addHistory(pageE, title, url) {\n        if (!curSite.pageUrl) return\n        // 对于自带类似功能 或者 覆盖了 history 原生函数的网站，则跳过不再添加历史记录\n        if (window.top.history.toString() !== '[object History]') return\n        title = title || ((pageE.querySelector('title')) ? pageE.querySelector('title').textContent : window.top.document.title);\n        url = url || curSite.pageUrl;\n        window.top.document.Autopage_nowUrl = curSite.pageUrl;\n        // 对于下一页 URL 和当前网页 URL 的协议不同时，以当前网页 URL 协议为准\n        if (url.indexOf(window.top.location.protocol) === -1) url = url.replace(/^https?:/,window.top.location.protocol)\n        window.top.history.pushState('Autopage_history', title, url);\n        window.top.document.title = title;\n    }\n    // 插入 <Script>\n    function insScript(selector, contextNode = document, toE = document.body) {\n        let scriptElems = contextNode;\n        if (selector) {\n            if (contextNode instanceof Array) {\n                scriptElems = []; contextNode.forEach(function (one) {scriptElems = scriptElems.concat(getAll(selector, one, one));})\n            } else {\n                scriptElems = getAll(selector, contextNode, contextNode);\n            }\n        }\n\n        scriptElems.forEach(function (one) {\n            if (one.tagName === 'SCRIPT') {\n                if (one.src) {\n                    toE.appendChild(document.createElement('script')).src = one.src;\n                } else {\n                    toE.appendChild(document.createElement('script')).textContent = one.textContent;//.replaceAll('document.write', '');\n                }\n            }\n        });\n    }\n    // 插入 <Style>\n    function insStyle(style) {\n        if (style.indexOf('{') === -1){style += '{display: none !important;}'}\n        document.documentElement.appendChild(document.createElement('style')).textContent = style;\n    }\n\n\n    // 获取元素（CSS/Xpath）来自：https://github.com/machsix/Super-preloader\n    function getCSS(css, contextNode = document) {\n        return contextNode.querySelector(css);\n    }\n    function getAllCSS(css, contextNode = document) {\n        return [].slice.call(contextNode.querySelectorAll(css));\n    }\n    function getXpath(xpath, contextNode, doc = document) {\n        contextNode = contextNode || doc;\n        try {\n            const result = doc.evaluate(xpath, contextNode, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null);\n            // 应该总是返回一个元素节点\n            return result.singleNodeValue && result.singleNodeValue.nodeType === 1 && result.singleNodeValue;\n        } catch (err) {\n            throw new Error(`无效 Xpath: ${xpath}`);\n        }\n    }\n    function getAllXpath(xpath, contextNode, doc = document) {\n        contextNode = contextNode || doc;\n        const result = [];\n        try {\n            const query = doc.evaluate(xpath, contextNode, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);\n            for (let i = 0; i < query.snapshotLength; i++) {\n                const node = query.snapshotItem(i);\n                // 如果是 Element 节点\n                if (node.nodeType === 1) result.push(node);\n            }\n        } catch (err) {\n            throw new Error(`无效 Xpath: ${xpath}`);\n        }\n        return result;\n    }\n    function getOne(selector, contextNode = undefined, doc = document) {\n        if (!selector) return;\n        contextNode = contextNode || doc;\n        if (selector.slice(0,1) === '/' || selector.slice(0,2) === './' || selector.slice(0,2) === '(/' || selector.slice(0,3) === 'id(') {\n            return getXpath(selector, contextNode, doc);\n        } else {\n            return getCSS(selector, contextNode);\n        }\n    }\n    function getAll(selector, contextNode = undefined, doc = document) {\n        if (!selector) return [];\n        contextNode = contextNode || doc;\n        if (selector.slice(0,1) === '/' || selector.slice(0,2) === './' || selector.slice(0,2) === '(/' || selector.slice(0,3) === 'id(') {\n            return getAllXpath(selector, contextNode, doc);\n        } else {\n            return getAllCSS(selector, contextNode);\n        }\n    }\n    // 获取所有父元素\n    function getAllParentElement(selector, contextNode = undefined, doc = document) {\n        contextNode = contextNode || doc;\n        const parents = [];\n        getAll(selector, contextNode, doc).forEach((next) => {\n            const parent = next.parentElement;\n            if (!parents.includes(parent)) {\n                parents.push(parent);\n            }\n        });\n        return parents\n    }\n    function createDocumentByString(e) {\n        if (e) {\n            if ('HTML' !== document.documentElement.nodeName) return (new DOMParser).parseFromString(e, 'application/xhtml+xml');\n            var t;\n            try { t = (new DOMParser).parseFromString(e, 'text/html');} catch (e) {}\n            if (t) return t;\n            if (document.implementation.createHTMLDocument) {\n                t = document.implementation.createHTMLDocument('ADocument');\n            } else {\n                try {((t = document.cloneNode(!1)).appendChild(t.importNode(document.documentElement, !1)), t.documentElement.appendChild(t.createElement('head')), t.documentElement.appendChild(t.createElement('body')));} catch (e) {}\n            }\n            if (t) {\n                var r = document.createRange(),\n                    n = r.createContextualFragment(e);\n                r.selectNodeContents(document.body);\n                t.body.appendChild(n);\n                for (var a, o = { TITLE: !0, META: !0, LINK: !0, STYLE: !0, BASE: !0}, i = t.body, s = i.childNodes, c = s.length - 1; c >= 0; c--) o[(a = s[c]).nodeName] && i.removeChild(a);\n                return t;\n            }\n        } else console.error('没有找到要转成 DOM 的字符串', e);\n    }\n\n\n    // 兼容不支持 GM_openInTab 的油猴脚本管理器\n    function openInTab(url, options) {\n        window.open(url);\n    }\n\n    // 强制新标签页打开链接\n    function forceTarget(pageE) {\n        if (curSite.blank === 1) {\n            document.head.appendChild(document.createElement('base')).target = '_blank';\n\n        } else if (curSite.blank === 5 || curSite.blank === 6) { // 清理 <a> 元素的点击事件\n            if (!pageE) pageE = getAll(curSite.pager.pageE)\n            pageE.forEach(function (dd) {\n                getAllCSS('a[href]:not([target=\"_blank\"]):not([href^=\"#\"]):not([href^=\"javascript:\"])',dd).forEach(function (a) {\n                    if (a.href.slice(0,4) == 'http') {\n                        const clonedLink = a.cloneNode(true); // 克隆原 a 元素\n                        clonedLink.target = '_blank'; // 通过添加 target=\"_blank\" 属性来新标签页打开，可以解决大部分情况\n                        if (curSite.blank === 6) clonedLink.addEventListener('click', function(e) {e.stopPropagation();}); // 如果添加 target=\"_blank\" 属性无效（依然在当前网页跳转打开），那么说明其父元素的事件委托中阻止了默认打开链接事件，因此对该 <a> 元素添加点击事件并阻止冒泡（避免父元素事件委托捕获该元素的点击事件）\n                        a.insertAdjacentElement('afterend', clonedLink); // 把克隆的元素插入原 a 元素后面\n                        a.remove(); // 删除原 a 元素\n                    }\n                });\n            });\n            return pageE\n\n        } else if (curSite.blank === 4) {\n            if (!pageE) pageE = getAll(curSite.pager.pageE)\n            pageE.forEach(function (dd) {getAllCSS('a[href]:not([target=\"_blank\"]):not([onclick]):not([href^=\"#\"]):not([href^=\"javascript:\"])',dd).forEach(function (a) {if (a.href.slice(0,4) == 'http') {a.target = '_blank';}});});\n            return pageE\n\n        } else {\n            let d;\n            if (curSite.blank === 2) {\n                d = document.body\n            } else if (curSite.blank === 3) {\n                let dd = toE5pop(getAll(curSite.pager.pageE));\n                if (dd && dd.parentElement != null) d = dd.parentElement\n            }\n            if (!d) return\n\n            function forceTarget_(target, e){\n                if (target.href && target.target != '_blank' && !(target.getAttribute('onclick')) && target.href.slice(0,4) == 'http' && target.getAttribute('href').slice(0,1) != '#') {\n                    e.stopPropagation(); // 阻止冒泡（避免被父元素事件委托捕获）\n                    e.preventDefault(); // 阻止默认打开链接事件\n                    GM_openInTab(target.href, {active: true,insert: true,setParent: true});\n                }\n            }\n            d.addEventListener('click', function(e) {\n                //console.log(e.target.tagName, e.path)\n                if (e.target.tagName === 'A') {\n                    forceTarget_(e.target, e);\n                } else {\n                    let path = e.path || e.composedPath();\n                    for (let i = 1; i < path.length - 4; i++) {if (path[i].tagName === 'A') {forceTarget_(path[i], e); break;}}\n                }\n            });\n        }\n    }\n\n    // 清理元素上绑定的事件（不包括父元素上监听的事件委托）\n    // css 为元素选择器（也支持 Xpath）\n    // delay 为延迟时间，确保其放在 url 规则中执行时网页已经加载完成\n    // mode 为 0 时清理全部，为 1 时额外清理 onclick 属性，为 2 时添加空点击事件并阻止冒泡\n    function cleanuEvent(css, delay = 0, mode = -1) {\n        setTimeout(()=>{\n            getAll(css).forEach(function (a) {\n                const clonedLink = a.cloneNode(true); // 克隆原元素\n                if (mode == 0 || mode == 1) {if (clonedLink.getAttribute('onclick') != undefined) {clonedLink.removeAttribute('onclick')}} // 清理 onclick 属性\n                if (mode == 0 || mode == 2) clonedLink.addEventListener('click', function(e) {e.stopPropagation();}); // 添加空点击事件并阻止冒泡（避免父元素事件委托捕获该元素的点击事件）\n                a.insertAdjacentElement('afterend', clonedLink); // 把克隆的元素插入原元素后面\n                a.remove(); // 删除原元素\n            }, delay);\n        })\n    }\n    // 初始化事件\n    /*function initEvent() {\n        if (curSite.initE[1] == undefined) curSite.initE[1] = 500;\n        setTimeout(function(){getAllCSS(curSite.initE[0]).forEach(function (o) {o.innerHTML = o.innerHTML;});}, curSite.initE[1])\n    }*/\n    // 判断元素是否隐藏（隐藏返回 true）\n    function isHidden(el){\n        return (el.offsetParent === null);\n    }\n    // 判断是否为手机版（是则返回 true）\n    function isMobile(){\n        return (/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|MicroMessenger|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebOS|Symbian|Windows Phone)/i.test(navigator.userAgent) || (window.screen.width < 500 && window.screen.height < 800));\n    }\n    // 用以自定义规则中设置 urlC = true\n    function isUrlC(){\n        urlC = true;\n    }\n    // 判断 URL 是否存在指定文本\n    function indexOF(e, l = 'p', low = true){\n        switch (l) {\n            case 'h':\n                l = location.href; break;\n            case 'p':\n                l = location.pathname; break;\n            case 's':\n                l = location.search; break;\n        }\n        //console.log(l,e,l.indexOf(e))\n        if (e instanceof RegExp) {\n            if (e.test(l)) return true\n        } else {\n            if (low) {e = e.toLowerCase(); l = l.toLowerCase();} // 全部转为小写（即不区分大小写）\n            if (l.indexOf(e) != -1) return true\n        }\n        return false\n    }\n    // 判断网站标题是否包含指定文字\n    function isTitle(title) {\n        return document.title.indexOf(title) > -1;\n    }\n    // 判断规则中的 nextL、pageE、insertP、replaceE 元素是否存在于当前网页\n    function isPager(type) {\n        if (!type) { // 如果没有指定要判断的元素类型参数，那么需要设置默认值\n            if (!DBSiteNow.pager) return false; // 如果连 pager 都没有，那么直接返回 false\n            if (DBSiteNow.pager.type === undefined || DBSiteNow.pager.type === 1 || DBSiteNow.pager.type === 3 || DBSiteNow.pager.type === 6) { // 如果是翻页模式 1 3 6，那么默认值可能是 n、p、n,p 三种\n                // 判断 nextL 是不是选择器（字符串 + 非 js; 开头）\n                if (typeof DBSiteNow.pager.nextL == 'string' && DBSiteNow.pager.nextL.match(/^js;/i) === null) {type = 'n';}\n                // 判断 pageE 是否不是空\n                if (DBSiteNow.pager.pageE) {\n                    // 如果 type 是空的，说明上面 nextL 判断结果为否，那么就是 p，反之则就是 n,p\n                    if (!type) {type = 'p';}else{type = 'n,p';}\n                }\n            } else if (DBSiteNow.pager.type === 2 || DBSiteNow.pager.type === 5) { // 如果是翻页模式 2 6，那么默认值只能是 n 一种\n                // 判断 nextL 是不是选择器（字符串 + 非 js; 开头）\n                if (typeof DBSiteNow.pager.nextL == 'string' && DBSiteNow.pager.nextL.match(/^js;/i) === null) {type = 'n';}\n            } else if (DBSiteNow.pager.type === 4) { // 如果是翻页模式 4，那么是不能使用 isPager 的（因为基本上都是脚本内的函数）\n                return false;\n            }\n            if (!type) return false; // 如果上面的判断中 nextL 和 pageE 都为否，那么 type 就还是空的，则直接返回 false\n        }\n        const typeArr = type.split(',');\n        for (let i = 0; i < typeArr.length; i++) {\n            switch (typeArr[i]) {\n                case 'n': // nextL\n                    if (!getOne(DBSiteNow.pager.nextL)){return false;}; break;\n                case 'p': // pageE\n                    if (!getOne(DBSiteNow.pager.pageE)){return false;}; break;\n                case 'i': // insertP\n                    if (!getOne(DBSiteNow.pager.insertP[0])){return false;}; break;\n                case 'r': // replaceE\n                    if (!getOne(DBSiteNow.pager.replaceE)){return false;}; break;\n            }\n        }\n        return true;\n    }\n    // 获取 Search 指定参数\n    function getSearch(variable) {\n        let query = window.location.search.substring(1),\n            vars = query.split('&');\n        for (var i=0;i<vars.length;i++) {\n            var pair = vars[i].split('=');\n            if(pair[0] == variable){return pair[1];}\n        }\n        return '';\n    }\n    // 启用/禁用 (当前网站)\n    function menu_disable(type) {\n        switch(type) {\n            case 'check':\n                return check(); break;\n            case 'add':\n                add(); break;\n            case 'del':\n                del(); break;\n        }\n\n        function check() { // 存在返回真，不存在返回假\n            if (GM_getValue('menu_disable').indexOf(location.hostname) == -1) return false // 不存在返回假\n            return true\n        }\n\n        function add() {\n            if (check()) return\n            let list = GM_getValue('menu_disable'); // 读取网站列表\n            list.push(location.hostname); // 追加网站域名\n            GM_setValue('menu_disable', list); // 写入配置\n            location.reload(); // 刷新网页\n        }\n\n        function del() {\n            if (!check()) return\n            let list = GM_getValue('menu_disable'), // 读取网站列表\n            index = list.indexOf(location.hostname);\n            list.splice(index, 1); // 删除网站域名\n            GM_setValue('menu_disable', list); // 写入配置\n            location.reload(); // 刷新网页\n        }\n    }\n    // 左键双击网页空白处暂停翻页\n    function pausePageEvent() {\n        if (!GM_getValue('menu_pause_page')) return\n        if (curSite.SiteTypeID === 0) return\n        if (curSite.pager && curSite.pager.type == 5) window.top.document.xiu_pausePage = pausePage\n        document.body.addEventListener('dblclick', function () {\n            if (pausePage) {GM_notification({text: `❌ 已暂停本页 [自动无缝翻页]\\n    （再次双击可恢复）`, timeout: 2000});} else {GM_notification({text: `✅ 已恢复本页 [自动无缝翻页]\\n    （再次双击可暂停）`, timeout: 2000});}\n            if (document.querySelector('#Autopage_number')) { // 如果同时开启了左下角页码功能，则模拟点击（为了数字变成红色+斜体）\n                document.querySelector('#Autopage_number').shadowRoot.querySelector('#Autopage_number_button').click();\n            } else {\n                pausePage = !pausePage;\n                if (curSite.pager && curSite.pager.type == 5) window.top.document.xiu_pausePage = pausePage\n            }\n        });\n    }\n    // 自定义翻页规则\n    function customRules() {\n        if (getCSS('#Autopage_customRules')) return\n\n        let customRules = customStringify(GM_getValue('menu_customRules', {}))\n        if (customRules == '{}') customRules = '{\\n    \\n}'; // 引导用户插入规则的位置\n        let _html = `<style>* {font-family: system-ui !important;}</style><div style=\"left: 0; right: 0; top: 0; bottom: 0; width: 100%; height: 100%; margin: auto; padding: 25px 10px 10px 10px; position: fixed; opacity: 0.95; z-index: 9999999; background-color: #eee; color: #222; font-size: 14px; overflow: scroll; text-align: left;-webkit-touch-callout: text !important;-webkit-user-select: text !important;-khtml-user-select: text !important;-moz-user-select: text !important;-ms-user-select: text !important;user-select: text !important;\">\n<h3 style=\"font-size: 22px;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;\"><strong># 自定义翻页规则（优先级最高，会覆盖同名的外置翻页规则）-【将规则插入默认的 <code>{ }</code> 中间】</strong></h3>\n<details><summary style=\"cursor: pointer;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;\"><kbd><strong>「 点击展开 查看规则示例 」（为了避免需要的时候还要找，我干脆把常用规则都一股脑塞进去了）</strong></kbd></summary>\n<ul style=\"list-style: disc; margin-left: 35px;\">\n<li>翻页规则为 JSON 格式，因此大家需要多少<strong>了解一点 JSON 的基本格式</strong>（主要就是末尾逗号、转义、双引号等）。</li>\n<li>具体的翻页规则说明、示例，为了方便更新及补充，我都写到 <strong><a href=\"https://github.com/XIU2/UserScript/issues/176\" target=\"_blank\">Github Issues</a></strong> 里面了。</li>\n<li>脚本会自动格式化规则，因此<strong>无需手动缩进、换行</strong>，只需把规则<strong>插入默认的 { } 中间</strong>即可。</li>\n</ul>\n<pre class=\"notranslate\" style=\"white-space: pre-wrap;user-select: auto;\">\n// 下面示例是把所有规则都塞进去了，但实际上大部分都用不上，大多数网站只需要像第一个 \"aaa\" 这样的规则（下方 示例一 中 url、replaceE、scrollD 均可按需省略）：\n\n// \"aaa\"       是规则名，唯一，因为 自定义翻页规则 优先级最高，所以会覆盖同名的 外置翻页规则\n// \"host\"      是域名，支持正则表达式（如 示例四），也可以像这样 示例三 那样写多个域名或正则表达式（当然也可以混用），如果省略，则默认匹配所有域名（会对所有域名匹配 url 规则判断，可以当成一个简单的外置/自定义通用规则的方案）\n// \"url\"       是用来控制哪些网站中页面适用该规则，省略后代表该规则应用于全站（如果不知道写什么，那么就写 return fun.isPager() 这样脚本会默认自动匹配当前网站下存在 nextL 及 pageE 元素的网页，大部分网站是没问题的，如果改为匹配 replaceE 或者其他组合，那么请去上面的 Github Issues 里的 内置函数 中查看具体使用方法；另外，url 规则中可通过操作 rule 这个对象变量来修改当前网页实际应用的规则，如 rule.pager.pageE='#a' 具体示例也见 Github Issues 里）\n\n// \"nextL\"     是用来指定含有下一页地址的元素选择器（CSS 或 XPath 都行，一般都是 &lt;a&gt; 元素）\n// \"pageE\"     是指定要从下一页获取的元素选择器（也就是网页主体内容），并将其插入当前网页中同样元素的末尾\n// \"replaceE\"  用于将当前网页中的页码元素替换为下一页的页码元素选择器（这样才能无限翻页下去），省略后将会自动判断是替换 nextL 元素自身还是 nextL 元素的父元素（当 nextL 元素后面或前面有其自身 &lt;a&gt; 元素的相邻兄弟元素时脚本会替换其父元素，反之没有相邻兄弟元素则替换其自身，仅限模式1/3/6，且 \"js;\" 开头的 nextL 规则除外），值为空 \"\" 时则完全不替换\n// \"scrollD\"   是用来指定触发翻页的滚动条与底部之间的距离，当滚动条底部距离网页底部之间的距离等于或小于该值时，将触发翻页，因此值越大就越早触发翻页，访问速度慢的网站需要调大，可省略(记得移除上一行末尾逗号)，省略后默认 2000\n\n// \"inherits\"  是继承标识，当你只需要对某个外置规则中 增删改 部分规则内容时（比如只是修改域名），那么就可以像下面第二个 \"aaa\" 规则一样写一个同名规则，规则内只需要有要修改的 host 内容，以及 inherits 标识，这样脚本就会将这个自定义翻页规则中的 host 覆盖掉外置翻页规则中的 host，而该翻页规则内的其他规则内容则不变。即更灵活了，无需每次为了修改部分规则而去复制全部规则了，也不用担心我后续更新这个外置规则后，你还需要再次复制一遍来修改。。。\n\n{\n    \"aaa\": {\n        \"host\": \"aaaa\",\n        \"url\": \"return fun.isPager()\",\n        \"pager\": {\n            \"nextL\": \"xxxx\",\n            \"pageE\": \"xxxx\",\n            \"replaceE\": \"xxxx\",\n            \"scrollD\": 2000\n        }\n    },\n    \"aaa\": {\n        \"host\": \"cccc\",\n        \"inherits\": true\n    },\n    \"bbb\": {\n        \"host\": [\"bbb1.com\", \"bbb2.com\"],\n        \"url\": \"/^\\\\\\\\/s$/\",\n        \"style\": \".aaaa {xxx: xxx}（如果只是为了单纯屏蔽隐藏某些元素，那么这里只需要写 CSS 选择器即可，脚本会自动在末尾加上 {display: none !important;} 的）\",\n        \"blank\": 3,\n        \"hiddenPN\": true,\n        \"history\": false,\n        \"thread\": true,\n        \"iframe\": true,\n        \"pager\": {\n            \"type\": 1,\n            \"nextL\": \"id('page')//a[contains(text(),'下一页')] || id('page2')//a[text()='下一页']\",\n            \"pageE\": \"aaa\",\n            \"insertP\": [\".bbb\",3],\n            \"replaceE\": \".page\",\n            \"scriptT\": 1,\n            \"forceHTTPS\": true,\n            \"interval\": 500,\n            \"scrollD\": 2000\n        },\n        \"function\": {\n            \"bF\": \"return fun.src_bF(pageE, [0,'img[data-src]','data-src'])\",\n            \"bFp\": \"关于上面这个解决图片懒加载的 bF，如果你要选择的图片是 img[data-original] 或 img[data-src]，那么是可以直接省略为：return fun.src_bF(pageE)\",\n            \"aF\": \"document.body.appendChild(document.createElement('script')).textContent = 'xxx'\"\n        }\n    },\n    \"这里也可以用中文\": {\n        \"host\": \"/\\\\\\\\.ccc\\\\\\\\.com/\",\n        \"url\": \"fun.isUrlC(); return (fun.lp() == '/' || fun.indexOF('/s') || fun.isMobile())\",\n        \"pager\": {\n            \"type\": 2,\n            \"nextL\": \"#autopbn\",\n            \"nextText\": \"下一页\",\n            \"nextTextOf\": \"下一页\",\n            \"isHidden\": true,\n            \"interval\": 1000,\n            \"scrollD\": 2000\n        }\n    }\n}\n</pre></details>\n<details><summary style=\"cursor: pointer;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;\"><kbd><strong>「 点击展开 查看所有规则 」（可按 Ctrl+F 搜索规则，脚本内置的通用规则因格式限制无法列出）</strong></kbd></summary>\n<pre id=\"Autopage_customRules_all\" class=\"notranslate\" style=\"overflow-y: scroll; overflow-x: hidden; height: 500px; word-break: break-all; white-space: pre-wrap;user-select: auto;\"> </pre></details>\n\n<textarea id=\"Autopage_customRules_textarea\" style=\"min-width:95%; min-height:70%; display: block; margin: 10px 0 10px 0; white-space:pre; overflow:scroll; resize: revert; text-transform: initial;\" placeholder=\"留空等于默认的 {}，请把规则插入 {} 之间\"></textarea>\n<button id=\"Autopage_customRules_save\" style=\"margin-right: 20px;\">保存并刷新</button><button id=\"Autopage_customRules_cancel\">取消修改</button>\n</div>`\n        document.documentElement.insertAdjacentHTML('beforeend', `<div id=\"Autopage_customRules\" style=\"display: initial !important;position: fixed !important;z-index: 9999999 !important;\"></div>`);\n        let Autopage_customRules = getCSS('#Autopage_customRules'), shadowRoot = Autopage_customRules.attachShadow({ mode: 'open' }); // 创建一个 Shadow DOM 避免网页样式影响自定义翻页规则元素\n        shadowRoot.innerHTML = _html; // 插入元素\n        document.documentElement.style.overflow = document.body.style.overflow = 'hidden'; // 避免网页本身滚动\n        getCSS('#Autopage_customRules_textarea', shadowRoot).textContent = customRules; // 单独插入自定义规则，避免被 insertAdjacentHTML 语义化 HTML 标签\n        getCSS('#Autopage_customRules_all', shadowRoot).textContent = customStringify(DBSite2); // 单独插入全部规则列表，避免被 insertAdjacentHTML 语义化 HTML 标签\n        //let b=Object.entries(DBSite2)\n        //for (var i = 0; i < b.length; i++) {console.log(b[i][0], b[i][1].host);}\n        // 点击事件\n        getCSS('#Autopage_customRules_save', shadowRoot).onclick = function () {\n            let customRules_textarea = getCSS('#Autopage_customRules_textarea', shadowRoot)\n            customRules = customRules_textarea.value;\n            if (!customRules) customRules = '{}'\n            try {\n                customRules = JSON.parse(customRules)\n                GM_setValue('menu_customRules', customRules)\n                location.reload();\n            } catch (e) {\n                let match = e.message.match(/at position (\\d+)/),position;\n                if (match) {\n                    position = parseInt(match[1]);\n                } else {\n                    match = e.message.match(/line (\\d+) column (\\d+)/i);\n                    position = calculatePositionFromLineColumn(customRules,match[1],match[2])\n                }\n                console.error('自定义规则存在格式错误：\\n' + e.message + '\\n错误位置为该区域中间：\\n------\\n' + customRules.slice((position<30)?0:position-30,position+29) + '\\n------\\n\\n常见格式错误：\\n1. 逗号：每组 { } 中的最后一个值末尾不能加逗号\\n2. 转义：如果正则表达式中含有转义符 \\\\ 那就要对其再次转义为 \\\\\\\\\\n3. 引号：规则中冒号左右的内容都需要加上双引号，如果内容中含有双引号则需要对双引号转义（即 \\\\\" 这样），或改为单引号')\n                window.alert('自定义规则存在格式错误：\\n' + e.message + '\\n错误位置为该区域中间：\\n------\\n' + customRules.slice((position<30)?0:position-30,position+29) + '\\n------\\n点击【确定】后脚本会为你定位并选中编辑框中格式错误的文本（部分格式错误定位可能不太精确，但错误一定是在选中文本的附近，如果是选中了行首的空格，则说明格式错误来自上一行末尾逗号）\\n\\n常见格式错误：\\n1. 逗号：每组 { } 中的最后一个值末尾不能加逗号\\n2. 转义：如果正则表达式中含有转义符 \\\\ 那就要对其再次转义为 \\\\\\\\\\n3. 引号：规则中冒号左右的内容都需要加上双引号，如果内容中含有双引号则需要对双引号转义（即 \\\\\" 这样），或改为单引号');\n                customRules_textarea.selectionStart = position-1; // 选中开始位置\n                customRules_textarea.selectionEnd = position; // 选中结束位置\n                customRules_textarea.focus(); // 将焦点移动到 customRules_textarea\n            }\n        }\n        getCSS('#Autopage_customRules_cancel', shadowRoot).onclick = function () {document.documentElement.style.overflow = document.body.style.overflow = ''; getCSS('#Autopage_customRules').remove();}\n    }\n\n    /**\n * 根据行号和列号计算字符串中的 position 位置\n * @param {string} text - 完整的文本内容\n * @param {number} line - 行号（从1开始）\n * @param {number} column - 列号（从1开始）\n * @returns {number} position 位置（从0开始）\n */\n    function calculatePositionFromLineColumn(text, line, column) {\n        if (!text || line < 1 || column < 1) {\n            return -1;\n        }\n\n        const lines = text.split('\\n');\n\n        // 如果指定行超过文本行数，返回-1\n        if (line > lines.length) {\n            return -1;\n        }\n\n        let position = 0;\n\n        // 计算前 (line-1) 行的总长度（包括换行符）\n        for (let i = 0; i < line - 1; i++) {\n            position += lines[i].length + 1; // +1 表示换行符\n        }\n\n        // 计算当前行的列位置（列号从1开始，position从0开始）\n        // 注意：列号不能超过当前行的长度+1（+1表示可以指向行尾）\n        const currentLine = lines[line - 1];\n        const columnPosition = Math.min(column - 1, currentLine.length);\n\n        return position + columnPosition;\n    }\n\n    // 自定义的 stringify 函数，将 [ ] 内的元素从默认的 换行显示 格式化为 一行显示，用于显示自定义翻页规则等给用户看的场景\n    function customStringify(obj) {\n        return JSON.stringify(obj, null, 4)\n            .replace(/(: \\[)([\\s\\S]*?)(\\],?\\n)/g, (match, p1, p2, p3) => {\n            return p1 + p2.replace(/\\n/g, '').replace(/\\s{4}/g, '') + p3;\n        });\n    }\n\n    // 显示页码\n    function pageNumber(type) {\n        if (curSite.SiteTypeID === 0 || curSite.hiddenPN || (curSite.pager && curSite.pager.type == 5 && self != top)) {if (getCSS('#Autopage_number') && getCSS('#Autopage_number').shadowRoot) {getCSS('#Autopage_number_button', getCSS('#Autopage_number').shadowRoot).style.display = 'none';}; return}\n        let status\n        if (getCSS('#Autopage_number') && getCSS('#Autopage_number').shadowRoot) {status = getCSS('#Autopage_number_button', getCSS('#Autopage_number').shadowRoot);}\n        switch (type) {\n            case 'add':\n                add(); break;\n            case 'del':\n                del(); break;\n            case 'set':\n                set(); break;\n        }\n\n        function add(){\n            if (status) {\n                if (status.style.display === 'none') {status.style.display = 'flex';}\n                return\n            }\n            // 插入网页\n            let _style = `<style>#Autopage_number_button {top: calc(75vh);left: 0;width: 32px;height: 32px;padding: 6px;display: flex;position: fixed;opacity: 0.3;transition: .2s;z-index: 9999998;cursor: pointer;user-select: none;flex-direction: column;align-items: center;justify-content: center;box-sizing: content-box;border-radius: 0 50% 50% 0;transform-origin: center;transform: translateX(-8px);background-color: #eee;-webkit-tap-highlight-color: transparent;box-shadow: 1px 1px 3px 0px #aaa;color: #000;font-size: medium;font-family: system-ui;} @media (any-hover: none) {#Autopage_number_button:active {opacity: 0.8;transform: translateX(0);}}@media (any-hover: hover) {#Autopage_number_button:hover {opacity: 0.8;transform: translateX(0);}}</style>`,\n                _html = `<div id=\"Autopage_number_button\" title=\"1. 此为【当前页码】（仅指脚本翻了多少页，并非实际页码，该页码可在脚本菜单中关闭）&#10;&#10;2. 鼠标【左键】点击此处可【临时暂停翻页】（再次点击可恢复）&#10;&#10;3. 鼠标【右键】点击此处可【回到顶部】\">${pageNum._now}</div>`\n\n            document.documentElement.insertAdjacentHTML('beforeend', `<div id=\"Autopage_number\" style=\"display: flex !important;position: fixed !important;z-index: 9999998 !important;\"></div>`);\n            let Autopage_number = getCSS('#Autopage_number'), shadowRoot = Autopage_number.attachShadow({ mode: 'open' }); // 创建一个 Shadow DOM 避免网页样式影响页码元素\n            shadowRoot.innerHTML = _style + _html; // 插入元素\n\n            if (curSite.pager && curSite.pager.type == 5) window.top.document.xiu_pausePage = pausePage\n            status = getCSS('#Autopage_number_button', shadowRoot);\n            // 左键点击事件（临时暂停翻页）\n            status.onclick = function(e) {\n                if (pausePage) {this.style.color = '#FF5722'; this.style.fontStyle = 'italic';} else {this.style = '';}\n                pausePage = !pausePage;\n                if (curSite.pager && curSite.pager.type == 5) window.top.document.xiu_pausePage = pausePage\n                e.preventDefault();\n                e.stopPropagation();\n                return false\n            };\n            // 右键点击事件（回到顶部）\n            status.oncontextmenu = function(e) {\n                window.scrollTo(0,0);\n                e.preventDefault();\n                e.stopPropagation();\n                return false\n            };\n            set();\n        }\n        // 监听储存当前页码的对象值的变化\n        function set(){\n            Object.defineProperty(pageNum, 'now', {\n                set: function(value) {\n                    this._now = value;\n                    if (status) status.textContent = value;\n                }\n            });\n        }\n        function del(){\n            if (!status) return\n            status.style.display = 'none';\n        }\n    }\n\n    // 页码递增，省略参数默认 +1\n    function pageNumIncrement(num = 1) {\n        pageNum.now = pageNum._now + num\n    }\n\n    // 菜单开关\n    function menu_switch(menu_status, Name, Tips) {\n        if (menu_status === true){\n            GM_setValue(Name, false);\n        } else {\n            GM_setValue(Name, true);\n        }\n        if (Name === 'menu_page_number') {\n            if (menu_status === true){pageNumber('del');} else {pageNumber('add');}\n            registerMenuCommand(); // 重新注册脚本菜单\n            if (curSite.SiteTypeID !== 0 && curSite.pager) { // 解决开关页码后 翻页失效的问题\n                if (curSite.pager.type === undefined) curSite.pager.type = 1; // 默认翻页模式 1\n                if (curSite.pager.scrollD === undefined) curSite.pager.scrollD = 2000; // 默认翻页触发线 2000\n                if (curSite.pager.interval === undefined) curSite.pager.interval = 500; // 默认间隔时间 500ms\n            }\n        } else {\n            location.reload();}\n    };\n    // 生成 SiteTypeID\n    function setSiteTypeID() {\n        let num = 0\n        for (let val in DBSite) {\n            DBSite[val].SiteTypeID = ++num;\n        }\n    }\n    // 遍历 loadMoreExclude 数组，判断是否包含域名\n    function loadMoreExclude(l) {\n        for (let i=0; i<l.length; i++) {\n            if (location.hostname.indexOf(l[i]) != -1) return false\n        }\n        return true\n    }\n    // 获取 Cookie\n    function getCookie(name) {\n        if (!name) return ''\n        let arr = document.cookie.split(';');\n        name += '='\n        for (let i=0; i<arr.length; i++) {\n            let now = arr[i].trim();\n            if (now.indexOf(name) == 0) return now.substring(name.length, now.length);\n        }\n        return '';\n    }\n    // 插入位置\n    function getAddTo(num) {\n        switch (num) {\n            case 1:\n                return 'beforebegin'; break;\n            case 2:\n                return 'afterbegin'; break;\n            case 3:\n            case 6:\n                return 'beforeend'; break;\n            case 4:\n            case 5:\n                return 'afterend'; break;\n        }\n    }\n    // 插入位置 5 时，排除 <script> <style> <link> 标签\n    function toE5pop(a) {\n        if (a.length === 0) return\n        let b = a.pop();\n        if (b.tagName === 'SCRIPT' || b.tagName === 'STYLE' || b.tagName === 'LINK') {\n            return toE5pop(a);\n        }\n        return b\n    }\n    // 滚动条事件\n    function windowScroll(fn1) {\n        var beforeScrollTop = document.documentElement.scrollTop || document.body.scrollTop,\n            fn = fn1 || function () {};\n        setTimeout(function () { // 延时 1 秒执行，避免刚载入到页面就触发翻页事件\n\n            // 避免网页内容太少，高度撑不起来，不显示滚动条而无法触发翻页事件\n            let scrollTop = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop,\n                scrollHeight = window.innerHeight || document.documentElement.clientHeight\n            if (scrollTop === 0 && document.documentElement.scrollHeight === scrollHeight) {\n                insStyle(`html, body {min-height: ${document.documentElement.scrollHeight+10}px;}`)\n            }\n\n            window.addEventListener('scroll', function (e) {\n                var afterScrollTop = document.documentElement.scrollTop || document.body.scrollTop,\n                    delta = afterScrollTop - beforeScrollTop;\n                if (delta == 0) return false;\n                fn(delta > 0 ? 'down' : 'up', e);\n                beforeScrollTop = afterScrollTop;\n            }, false);\n        }, 1000)\n    }\n    // 自定义 urlchange 事件（用来监听 URL 变化）\n    function addUrlChangeEvent() {\n        history.pushState = ( f => function pushState(){\n            var ret = f.apply(this, arguments);\n            window.dispatchEvent(new Event('pushstate'));\n            window.dispatchEvent(new Event('urlchange'));\n            return ret;\n        })(history.pushState);\n\n        history.replaceState = ( f => function replaceState(){\n            var ret = f.apply(this, arguments);\n            window.dispatchEvent(new Event('replacestate'));\n            window.dispatchEvent(new Event('urlchange'));\n            return ret;\n        })(history.replaceState);\n\n        window.addEventListener('popstate',()=>{\n            window.dispatchEvent(new Event('urlchange'))\n        });\n    }\n})();\n"
  },
  {
    "path": "CNAME",
    "content": "userscript.xiu2.xyz"
  },
  {
    "path": "DarkMode.user.js",
    "content": "// ==UserScript==\n// @name         Dark Mode\n// @name:zh-CN   护眼模式\n// @name:zh-TW   護眼模式\n// @name:ru      Тёмный режим\n// @version      1.5.5\n// @author       X.I.U\n// @description  Simple and effective network-wide eye protection mode (night mode, dark mode, black mode)\n// @description:zh-CN  简单有效的全网通用护眼模式（夜间模式、暗黑模式、深色模式）\n// @description:zh-TW  簡單有效的全網通用護眼模式（夜間模式、暗黑模式、深色模式）\n// @description:ru  Простой и эффективный режим защиты глаз по всей сети (ночной режим, тёмный режим, чёрный режим)\n// @match        *://*/*\n// @icon         data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAALfElEQVRYhX2Xe3Bd1XXGf3vvc859X+nq6nUlW5Yly7JlI2xsYzAwtnk4ATpAxkNTHm0mnaTT/gHTTvrIBDLTpp1JUoZppqHQls5AKTR2INOWJJQSXF4x2BhsJCRZ8kuWZckPSVf3/Trn7N3RVTFpQrNn1l97n7O/vda31reWMKMPcmUJA9U8vrwHGdqCHn4HPzePaIxhVSoYbYRXrn7BeMVbCUduF6kVUXHwvQP+6amDaqDnoIompmQytaBnTmB8H5lowrjgFss48SBeI/hUEEZeudLi1ywhJEIJdL6Q8rzal/1a5SGC4XZrYBvWwEZobMdLdH6RH+z/Io1taEeh52fe8tOZbysl/ouWFvANYP7fSz4DgAEBBIL4xiS8ubmnVcTZK68aRK29Dtm8dgnZJydRW+/E2nrnp19nz+7U77+60zt0qMz07J/KxuQTwrIw4rMBCDP6wC+FIIcO34eudDdXf/7jD52Opi772lugY3AZr++hp06gz48j+waRqTWYmVHcS+chEMFeuw1hBzBzY7g/fQE9fmqBYPzBQKrpVa/R4OkCAnXlSvXnX9sIllk220BE4Z8OdHoj54YCK6Od1i2/iUmuRyDRk6NUn3+M0pv/hnf0AE40jEjEqP3oe6Rf/CGOWUTNjFKby2MP7EBtugURFWFxfOhB4+o4yfhrGAdZsxHaqZt6dNce9KXYFSPfGWS68JFqTXSqO7+MCaTqETGTwxSeeoRCOoPT2YUIhFC2jbQF/uwUatU6rPbVUM5T+OfHUO3dWKv6kSsGUIOD6PEPr+fswnanpecFZYVQhFAyjPS9Tj4xw2rcU+pJApEutWsvRjaBW8NUShilkE1JIqlUPfi6VMLNFTBVr+7KYKqJ8uEjlM+dJrR5K0L7eB+9hTd2CFrWYt33h0jH3O5Nj37TBGtgZUBkUN/6q4dQ7UmsnlW450//gU5PPRq460uQXAu+j//i99A/+UdUMoXqbMNkz2OnUkixlF4u9spe/HMTULyEaA7jXkoT2fEbQIXi838DJ4cRDXHkEjc2b0MPHdptZubGpBUbM0UfKQpBRDmKWRSD3tTMk87gddA2WGe4+dkzMD0CyQ5qP/4XVDCAvfkaLMvHamzEClpQzGDF46iuJOH1CaKr2tDZRfzhQ0Ru24NYsYrCM4/jDb+FiHdi3XU/0s3vr7WsGKxcfyPSy+bxi0UqJ8f/IriiE2vrnuWsLefQk8NoO4AMBBB9/XjDI6hQCjdTxq9WCaQ6ULaDFrIeKr3oIlv70Olz2K1xlAVaSUQojD786nKi9e5A3LBHMHn0W+LUUaS1FI9q+iZZWLhHdq/FxFbWSSfsIDIQwVw4g/GK2OuuhloNMzaCaF+DNBJtQfX8LFYigElX0OkQtZKHVy3jqwDlqWncCzPI3nU4t+2FWrH+OLHzHpRl3109memTOhqDi9NfkefHEKvWLTO+VKD68Qf4G27CueFWhJ/Df+0lVFcXJOJYnobm1ZjsJUxuFjyDjK/GNK2gND4ESuDPXcCOSaI7thPqX0ft8OtUn/oTKOQgkET39KJU4RbpZXOtNRW717p+FyRSdYT+v36H4u/fQXbfc3iRDkT3FsTGjWAWEU0OZKfAU9CyEdXVD2lQPduplmo4jkBEbMzK1VgDu5EVTe3gm1RHx6Bcxpz6YLkEO0lMYeFGi6z7eVMqhkT/ZrCb0LNT+NMTRH/nt/BLRdy3X8Nv68Lu6cZEHURjE6K3hirYeLRhDWyA4jxzH40RXJwkeuM29MpN+JcziEsz+Avz6GgcW1pYbUlEQCyHwYpSyxS7rGo+v8man4ZMATrAHf+QSt7FTkWR4QbsjlbIX8IMH0VuuAqj4piGAbhmEPPzI/injnNxMUPuwOtseOIxKKTJ7/8BTBxDdXcjO9sJdTeg01VqH4wg3CDB9bshHMKORbGolVOmeRW09dVdUxkbp3ruNM7GXnS1hK5OYSoSbBDZBcxCBtF3DcUzk6hkhGA0RmtHKx1rOkE04lbzWC1tqMRt1CZHUafPIs8H6/JsNTcgN+9YFq1qgbBUFUvnK9qrVghXCvWN8MBmivueJDtylqaeBKWJaXR4JZEtNyBWrkGt6AJboCZO4J49Rc64xGIhcgtZgm6egKhgtUQQto17WeHOLqCNj5Vowbr7q4j+Lcs1JhhEphcXLTebd0jPwpkx6Lwa++bbCR95ALecp5a6BrvrJoLdHajmMOTnKb3+BrVMntjARpzeFbz8jcfpa22gGm+kMJlm95Zu9M9+iI5G0G3d6EgIUSnjzs/gv/Icgd6rqcvz0IeYWnXc8pEtYnEe8gtXNL7xz74LehHSE3DqNP7EIdx3p5DSh7JNJePiBE/gN3Uz8NWHae5sRJYXqKQvU+raQPg7L6L3/QNMHcfp6EREGjC5LDp9GaOs5VQ/NQI93YctOxFPlwniDh/C3n47JHvrQPTBl3DHjiIDQUQ4jGhOYcqaQFuE0Nl53OnLRHfsZV33KsTxd6GlHeaP477zMl5uAWv7dkyLg6kZREsb+vgCcvPOuoaYuWNQWERs3jAuQ6nooXK6TH566cXnrjQK7uwFaoseWA3oJf2WEhEJUjm/gMgXCfdvQlFFv/R3uCND6FIRv7MfMnOIiaPoI/8NEb2kWAhfoLbdjLr2jmUv/8f+pVbkHRGNnZHum2/udxxtCn4j/vgEIjNTD4O9upfIprUYoxBKo9Z14jumTq7YYD9WayvuR++hs1lkshmha4iuNeDYiIAFMoCevIi+cJHaa29gmvsRTUn0R29g9u1D7bxxv+jrRnpD56cCkdjfV9NzpA+8A5VlLojWAczlGVTAYKXimIU8MlsjtKEXgiF0aRGdm8cEYnXm+O+/gdAGuWsP3shhTHoOEYqCCEF2DsrF5f+e/xiikUldrT6l3z+GevSaTahaZdRY6uFqxRXR1sRyzU/21Gu6OTOMfzmPd6kI8TgiX8B4imouj1QCKmVUNITJ59AnR1F77kH4ZaRnQFroMyeRW3egdt6DwIX391Gshv+4LK2jtcuLqK9t7ALjZXzH1uVM/mb/7BTRnjZEex+idQ2EAnjjR/BdF1PIoV2Bae/F/fh9dL5IYE0XUmpMNo+ev4AINSJWb0UPHa63Z7SvRN3/CHJpFHj2G4iZzAuBbTu+GWpIEGxrQ/3RnlvxG5M4kYa3Lc2u4uyFblnIE+xfAbF2RMtqZGsn/uTYUgHH+dz9eFMnqYx8gO+CEwkjhcDPF/DLHurSaeTm3RiWMsDHeuDrSFvBv3+bi08+N1Vwuj/vZWtu+dwclZlFrESoeZmZysJXoTsCjnVk8dDQBuN+n8RDD9fbcdG7leBX1iOkQjhBOHmQfKGAHW3CS6fR+QClmYuYMyPY265DtPVgtfctiw4V/GcfYfGNQzj3/u4DqlormUoZEQwuc0I//eSnY4G0wPJjmdGhw+mh0fWxNZ0037cXccPd1MXgk+GjNE/tR3+Le+YEyg5TnT6LXlwgcu1u7C99HZlsv3K2+vjvkTs2RvDe3747tm7Dy1SKvzSYPP/MLwxFAkIKEzEye2zswOXX395lJyK0fOFzRHfuglQfqPin59Nn0RNDuJk09vprkd0brmx5H7xCbfgQbrZ83OkfvN1pj0+ZmkBYNhjzCwCeffr/AsBDJyU6kqBwbPzRuTcP/GXV82lYlaJpfQ+BjVdhXX0tNKTAjvzKqKXPTeC++1NKY0c9kVz1SGzb9X8tjIdfzSFCDfUw/noA0scPuxBrwcvmmH3rQIvMm3/y0XdJS4JfIpiIUG9g+wcg6KDnZpGZNDQ0Ii5cSAtlPRHYct13axWvJNwadiiAli4iEP8VAJ89HQtR129TLiG1nos0Nt8dSOi12qi9lRq3utVqT/lirql24hW3vLBQi3d3XUqu73+PZOonBNR/WnbYSMeGTO5/Xf6ZtwDwPwtFRezQVs+sAAAAAElFTkSuQmCC\n// @grant        GM_registerMenuCommand\n// @grant        GM_unregisterMenuCommand\n// @grant        GM_openInTab\n// @grant        GM_getValue\n// @grant        GM_setValue\n// @grant        GM_notification\n// @sandbox      JavaScript\n// @noframes\n// @license      GPL-3.0 License\n// @run-at       document-start\n// @namespace    https://github.com/XIU2/UserScript\n// @supportURL   https://github.com/XIU2/UserScript\n// @homepageURL  https://github.com/XIU2/UserScript\n// ==/UserScript==\n\n(function() {\n    'use strict';\n    var menu_ALL = [\n        ['menu_disable', '✅ 已启用 (点击对当前网站禁用)', '❌ 已禁用 (点击对当前网站启用)', []],\n        ['menu_runDuringTheDay', '白天保持开启 (比晚上亮一点点)', '白天保持开启', true],\n        ['menu_darkModeAuto', '护眼模式跟随浏览器', '护眼模式跟随浏览器', false],\n        ['menu_autoRecognition', '智能排除自带暗黑模式的网页 (beta)', '智能排除自带暗黑模式的网页 (beta)', true],\n        ['menu_forcedToEnable', '✅ 已强制当前网站启用护眼模式 (👆)', '❌ 未强制当前网站启用护眼模式 (👆)', []],\n        ['menu_darkModeType', '点击切换模式', '点击切换模式', 2],\n        ['menu_customMode', '自定义当前模式', '自定义当前模式', true], ['menu_customMode1',,,'60|50'], ['menu_customMode2',,,'60|40|50|50'], ['menu_customMode3',,,'90'], ['menu_customMode3_exclude',,,'img, .img, video, [style*=\"background\"][style*=\"url\"], svg'],\n        ['menu_customTime', '自定义昼夜时间', '自定义昼夜时间', '6:00|18:00'],\n        ['menu_autoSwitch', '晚上自动切换模式', '晚上自动切换模式', ''],\n    ], menu_ID = [];\n    for (let i=0;i<menu_ALL.length;i++){ // 如果读取到的值为 null 就写入默认值\n        if (GM_getValue(menu_ALL[i][0]) == null){GM_setValue(menu_ALL[i][0], menu_ALL[i][3])};\n    }\n    registerMenuCommand();\n\n    // 自定义昼夜时间 过渡性调整（精确到分钟），过段时间移除\n    if (GM_getValue('menu_customTime', '').indexOf(':') === -1) GM_setValue('menu_customTime', GM_getValue('menu_customTime', '6|18').replace('|',':00|') + ':00')\n\n    if (menu_ID.length > 1) {addStyle();}\n\n\n    // 注册脚本菜单\n    function registerMenuCommand() {\n        if (menu_ID.length != []){\n            for (let i=0;i<menu_ID.length;i++){\n                GM_unregisterMenuCommand(menu_ID[i]);\n            }\n        }\n        for (let i=0;i<menu_ALL.length;i++){ // 循环注册脚本菜单\n            menu_ALL[i][3] = GM_getValue(menu_ALL[i][0]);\n            if (menu_ALL[i][0] === 'menu_disable')\n            { // 启用/禁用护眼模式 (当前网站)\n                if (menu_disable('check')) { // 当前网站是否已存在禁用列表中\n                    menu_ID[i] = GM_registerMenuCommand(`${menu_ALL[i][2]}`, function(){menu_disable('del')});\n                    return\n                } else {\n                    if (GM_getValue('menu_darkModeAuto') && !window.matchMedia('(prefers-color-scheme: dark)').matches) {\n                        menu_ID[i] = GM_registerMenuCommand(`❌ 当前浏览器为白天模式 (点击关闭 [护眼模式跟随浏览器])`, function(){GM_setValue('menu_darkModeAuto', false);location.reload();});\n                        return\n                    }\n                    menu_ID[i] = GM_registerMenuCommand(`${menu_ALL[i][1]}`, function(){menu_disable('add')});\n                }\n            }\n            else if (menu_ALL[i][0] === 'menu_darkModeType')\n            { // 点击切换模式\n                if (menu_ALL[i][3] > 3) { // 避免在减少 raw 数组后，用户储存的数据大于数组而报错\n                    menu_ALL[i][3] = 1;\n                    GM_setValue(menu_ALL[i][0], menu_ALL[i][3]);\n                }\n                let menu_newMode = getAutoSwitch();\n                menu_ID[i] = GM_registerMenuCommand(`${menu_num(menu_newMode)} ${menu_ALL[i][1]}`, function(){menu_toggle(`${menu_ALL[i][3]}`,`${menu_ALL[i][0]}`)});\n            }\n            else if (menu_ALL[i][0] === 'menu_customMode')\n            { // 自定义当前模式\n                GM_setValue(menu_ALL[i][0], menu_ALL[i][3]);\n                menu_ID[i] = GM_registerMenuCommand(`#️⃣ ${menu_ALL[i][1]}`, function(){menu_customMode()});\n            }\n            else if (menu_ALL[i][0] === 'menu_customTime')\n            { // 自定义昼夜时间\n                GM_setValue(menu_ALL[i][0], menu_ALL[i][3]);\n                menu_ID[i] = GM_registerMenuCommand(`#️⃣ ${menu_ALL[i][1]}`, function(){menu_customTime()});\n            }\n            else if (menu_ALL[i][0] === 'menu_customMode1' || menu_ALL[i][0] === 'menu_customMode2' || menu_ALL[i][0] === 'menu_customMode3' || menu_ALL[i][0] === 'menu_customMode3_exclude')\n            { // 当前模式值\n                GM_setValue(menu_ALL[i][0], menu_ALL[i][3]);\n            }\n            else if (menu_ALL[i][0] === 'menu_autoSwitch')\n            { // 晚上自动切换模式\n                menu_ID[i] = GM_registerMenuCommand(`#️⃣ ${menu_ALL[i][1]}`, function(){menu_customAutoSwitch()});\n            }\n            else if (menu_ALL[i][0] === 'menu_forcedToEnable')\n            { // 强制当前网站启用护眼模式\n                if (menu_value('menu_autoRecognition')) { // 自动排除自带暗黑模式的网页 (beta)\n                    if (menu_forcedToEnable('check')) { // 当前网站是否已存在列表中\n                        menu_ID[i] = GM_registerMenuCommand(`${menu_ALL[i][1]}`, function(){menu_forcedToEnable('del')});\n                    } else {\n                        menu_ID[i] = GM_registerMenuCommand(`${menu_ALL[i][2]}`, function(){menu_forcedToEnable('add')});\n                    }\n                }\n            }\n            else\n            {\n                menu_ID[i] = GM_registerMenuCommand(`${menu_ALL[i][3]?'✅':'❌'} ${menu_ALL[i][1]}`, function(){menu_switch(`${menu_ALL[i][3]}`,`${menu_ALL[i][0]}`,`${menu_ALL[i][2]}`)});\n            }\n        }\n        menu_ID[menu_ID.length] = GM_registerMenuCommand('💬 反馈 & 建议', function () {window.GM_openInTab('https://github.com/XIU2/UserScript#xiu2userscript', {active: true,insert: true,setParent: true});window.GM_openInTab('https://greasyfork.org/zh-CN/scripts/426377/feedback', {active: true,insert: true,setParent: true});});\n    }\n\n\n    // 菜单数字图标\n    function menu_num(num) {\n        return ['0️⃣','1️⃣','2️⃣','3️⃣','4️⃣','5️⃣','6️⃣','7️⃣','8️⃣','9️⃣','🔟'][num]\n    }\n\n\n    // 晚上自动切换模式\n    function menu_customAutoSwitch() {\n        let newAutoSwitch = prompt('白天、晚上使用不同模式，修改后立即生效~\\n格式：白天模式|晚上模式\\n例如：1|3（即白天模式 1 晚上模式 3）\\n默认：留空（即关闭该功能）', GM_getValue('menu_autoSwitch'));\n        if (newAutoSwitch === '') {\n            GM_setValue('menu_autoSwitch', '');\n        } else if (newAutoSwitch != null) {\n            if (newAutoSwitch.split('|').length == 2) {\n                GM_setValue('menu_autoSwitch', newAutoSwitch);\n            } else {\n                alert(`填入内容格式错误...`);\n            }\n        }\n        registerMenuCommand(); // 重新注册脚本菜单\n        if (document.getElementById('XIU2DarkMode')) {\n            document.getElementById('XIU2DarkMode').remove(); // 即时修改样式\n            addStyle();\n        }\n    }\n    // 获取当前模式\n    function getAutoSwitch() {\n        let darkModeType = GM_getValue('menu_darkModeType'), hours = new Date().getHours(), time = GM_getValue('menu_customTime').split('|').map(Number);\n        if (GM_getValue('menu_autoSwitch') != '') { // 晚上自动切换模式\n            if (isDaytime()) { // 白天\n                darkModeType = GM_getValue('menu_autoSwitch').split('|')[0];\n            } else { // 晚上\n                darkModeType = GM_getValue('menu_autoSwitch').split('|')[1];\n            }\n        }\n        return parseInt(darkModeType)\n    }\n\n\n    // 自定义当前模式\n    function menu_customMode() {\n        let newMods, tip, defaults, name;\n        switch(getAutoSwitch()) {\n            case 1:\n                tip = '自定义 [模式 1]，修改后立即生效 (部分网页可能需要刷新)~\\n格式：亮度 (白天)|亮度 (晚上)\\n默认：60|50（均为百分比 1~100，不需要 % 符号）';\n                defaults = '60|50';\n                name = 'menu_customMode1';\n                break;\n            case 2:\n                tip = '自定义 [模式 2]，修改后立即生效 (部分网页可能需要刷新)~\\n格式：亮度 (白天)|暖色 (白天)|亮度 (晚上)|暖色 (晚上)\\n默认：60|40|50|50（均为百分比 1~100，不需要 % 符号）';\n                defaults = '60|40|50|50';\n                name = 'menu_customMode2';\n                break;\n            case 3:\n                tip = '自定义 [模式 3]，修改后立即生效 (部分网页可能需要刷新)~\\n格式：反色\\n默认：90（均为百分比 50~100，不需要 % 符号）';\n                defaults = '90';\n                name = 'menu_customMode3';\n                break;\n        }\n        newMods = prompt(tip, GM_getValue(`${name}`));\n        if (newMods === '') {\n            GM_setValue(`${name}`, defaults);\n            registerMenuCommand(); // 重新注册脚本菜单\n        } else if (newMods != null) {\n            GM_setValue(`${name}`, newMods);\n            registerMenuCommand(); // 重新注册脚本菜单\n        }\n        if (getAutoSwitch() == 3) {\n            tip = '自定义 [模式 3] 排除目标，修改后立即生效 (部分网页可能需要刷新)~\\n格式：CSS 选择器 (如果不会写可以找我)\\n默认：img, .img, video, [style*=\"background\"][style*=\"url\"], svg\\n (使用英文逗号间隔，末尾不要有逗号)';\n            defaults = 'img, .img, video, [style*=\"background\"][style*=\"url\"], svg';\n            name = 'menu_customMode3_exclude';\n            newMods = prompt(tip, GM_getValue(`${name}`));\n            if (newMods === '') {\n                GM_setValue(`${name}`, defaults);\n                registerMenuCommand(); // 重新注册脚本菜单\n            } else if (newMods != null) {\n                GM_setValue(`${name}`, newMods);\n                registerMenuCommand(); // 重新注册脚本菜单\n            }\n        }\n        if (document.getElementById('XIU2DarkMode')) {\n            document.getElementById('XIU2DarkMode').remove(); // 即时修改样式\n            addStyle();\n        }\n    }\n\n\n    // 自定义昼夜时间\n    function menu_customTime() {\n        let newMods = prompt('自定义脚本内和白天/晚上相关的时间，修改后刷新网页生效~\\n格式：6:00|18:30 (即 6:00 ~ 18:30 之间是白天时间)\\n也支持反向设置：14:00|12:00 (即 12:00 ~ 14:00 之间是夜晚时间)', GM_getValue('menu_customTime'));\n        if (newMods === '') {\n            GM_setValue('menu_customTime', '6:00|18:00');\n            registerMenuCommand(); // 重新注册脚本菜单\n        } else if (newMods != null) {\n            GM_setValue('menu_customTime', newMods);\n            registerMenuCommand(); // 重新注册脚本菜单\n        }\n    }\n\n\n    // 强制当前网站启用护眼模式\n    function menu_forcedToEnable(type) {\n        switch(type) {\n            case 'check':\n                if(check()) return true\n                return false\n                break;\n            case 'add':\n                add();\n                break;\n            case 'del':\n                del();\n                break;\n        }\n\n        function check() { // 存在返回真，不存在返回假\n            let websiteList = menu_value('menu_forcedToEnable'); // 读取网站列表\n            if (websiteList.indexOf(location.host) === -1) return false // 不存在返回假\n            return true\n        }\n\n        function add() {\n            if (check()) return\n            let websiteList = menu_value('menu_forcedToEnable'); // 读取网站列表\n            websiteList.push(location.host); // 追加网站域名\n            GM_setValue('menu_forcedToEnable', websiteList); // 写入配置\n            location.reload(); // 刷新网页\n        }\n\n        function del() {\n            if (!check()) return\n            let websiteList = menu_value('menu_forcedToEnable'), // 读取网站列表\n            index = websiteList.indexOf(location.host);\n            websiteList.splice(index, 1); // 删除网站域名\n            GM_setValue('menu_forcedToEnable', websiteList); // 写入配置\n            location.reload(); // 刷新网页\n        }\n    }\n\n\n    // 启用/禁用护眼模式 (当前网站)\n    function menu_disable(type) {\n        switch(type) {\n            case 'check':\n                if(check()) return true\n                return false\n                break;\n            case 'add':\n                add();\n                break;\n            case 'del':\n                del();\n                break;\n        }\n\n        function check() { // 存在返回真，不存在返回假\n            let websiteList = menu_value('menu_disable'); // 读取网站列表\n            if (websiteList.indexOf(location.host) === -1) return false // 不存在返回假\n            return true\n        }\n\n        function add() {\n            if (check()) return\n            let websiteList = menu_value('menu_disable'); // 读取网站列表\n            websiteList.push(location.host); // 追加网站域名\n            GM_setValue('menu_disable', websiteList); // 写入配置\n            location.reload(); // 刷新网页\n        }\n\n        function del() {\n            if (!check()) return\n            let websiteList = menu_value('menu_disable'), // 读取网站列表\n            index = websiteList.indexOf(location.host);\n            websiteList.splice(index, 1); // 删除网站域名\n            GM_setValue('menu_disable', websiteList); // 写入配置\n            location.reload(); // 刷新网页\n        }\n    }\n\n\n    // 切换暗黑模式\n    function menu_toggle(menu_status, Name) {\n        menu_status = parseInt(menu_status)\n        if (menu_status >= 3){\n            menu_status = 1;\n        } else {\n            menu_status += 1;\n        }\n        GM_setValue(`${Name}`, menu_status);\n        registerMenuCommand(); // 重新注册脚本菜单\n        if (document.getElementById('XIU2DarkMode')) {\n            document.getElementById('XIU2DarkMode').remove(); // 即时修改样式\n            addStyle();\n        }\n        //location.reload(); // 刷新网页\n    };\n\n\n    // 菜单开关\n    function menu_switch(menu_status, Name, Tips) {\n        if (menu_status == 'true'){\n            GM_setValue(`${Name}`, false);\n            GM_notification({text: `已关闭 [${Tips}] 功能\\n（点击刷新网页后生效）`, timeout: 3500, onclick: function(){location.reload();}});\n        }else{\n            GM_setValue(`${Name}`, true);\n            GM_notification({text: `已开启 [${Tips}] 功能\\n（点击刷新网页后生效）`, timeout: 3500, onclick: function(){location.reload();}});\n        }\n        if (Name === 'menu_autoRecognition') {\n            location.reload(); // 刷新网页\n        }\n        registerMenuCommand(); // 重新注册脚本菜单\n    };\n\n\n    // 返回菜单值\n    function menu_value(menuName) {\n        for (let menu of menu_ALL) {\n            if (menu[0] == menuName) {\n                return menu[3]\n            }\n        }\n    }\n\n\n    // 添加样式\n    function addStyle() {\n        let remove = false, style_Add = document.createElement('style'),\n            hours = new Date().getHours(),\n            style_10 = menu_value('menu_customMode1').split('|'),\n            style_20 = menu_value('menu_customMode2').split('|'),\n            style_30 = menu_value('menu_customMode3').split('|'),\n            style = ``,\n            style_00 = `html, body {background-color: #ffffff !important;}`,\n            style_11 = `html {filter: brightness(${style_10[0]}%) !important;}`,\n            style_11_firefox = `html {filter: brightness(${style_10[0]}%) !important; background-image: url();}`,\n            style_12 = `html {filter: brightness(${style_10[1]}%) !important;}`,\n            style_12_firefox = `html {filter: brightness(${style_10[1]}%) !important; background-image: url();}`,\n            style_21 = `html {filter: brightness(${style_20[0]}%) sepia(${style_20[1]}%) !important;}`,\n            style_21_firefox = `html {filter: brightness(${style_20[0]}%) sepia(${style_20[1]}%) !important; background-image: url();}`,\n            style_22 = `html {filter: brightness(${style_20[2]}%) sepia(${style_20[3]}%) !important;}`,\n            style_22_firefox = `html {filter: brightness(${style_20[2]}%) sepia(${style_20[3]}%) !important; background-image: url();}`,\n            style_31 = `html {filter: invert(${style_30[0]}%) !important; text-shadow: 0 0 0 !important;}\n            ${menu_value('menu_customMode3_exclude')} {filter: invert(1) !important;}\n            img[alt=\"[公式]\"] {filter: none !important;}`,\n            style_31_firefox = `html {filter: invert(${style_30[0]}%) !important; background-image: url(); text-shadow: 0 0 0 !important;}\n            ${menu_value('menu_customMode3_exclude')} {filter: invert(1) !important;}\n            img[alt=\"[公式]\"] {filter: none !important;}`,\n            style_31_scrollbar = `::-webkit-scrollbar {height: 12px !important;}\n::-webkit-scrollbar-thumb {border-radius: 0;border-color: transparent;border-style: dashed;background-color: #3f4752 !important;background-clip: padding-box;transition: background-color .32s ease-in-out;}\n::-webkit-scrollbar-corner {background: #202020 !important;}\n::-webkit-scrollbar-track {background-color: #22272e !important;}\n::-webkit-scrollbar-thumb:hover {background: #3f4752 !important;}`;\n\n\n        // Firefox 浏览器需要特殊对待\n        if (navigator.userAgent.toLowerCase().indexOf('firefox') > -1) {\n            style_11 = style_11_firefox\n            style_12 = style_12_firefox\n            style_21 = style_21_firefox\n            style_22 = style_22_firefox\n            style_31 = style_31_firefox\n        }\n\n        // 白天\n        if (isDaytime()) {\n            if (menu_value('menu_runDuringTheDay')) {\n                style_12 = style_11\n                style_22 = style_21\n            } else {\n                style_12 = style_22 = ''\n            }\n        }\n\n\n        let darkModeType = getAutoSwitch();\n\n        switch(darkModeType) {\n            case 1:\n                style += style_12;\n                break;\n            case 2:\n                style += style_22;\n                break;\n            case 3:\n                style += style_31 + style_31_scrollbar;\n                if (location.hostname.indexOf('search.bilibili.com') > -1) {\n                    style += `ul.video-list img, ul.video-list .video-item .img .mask-video, ul.video-list .video-item .img .van-danmu, ul.video-list .video-item .img .van-framepreview {filter: none !important;}`\n                } else if (location.hostname.indexOf('.bilibili.com') > -1) {\n                    style += `\n.bpx-player-container[data-screen=\"full\"] .bpx-player-video-wrap {filter: invert(1) !important;}\n.bpx-player-container[data-screen=\"web\"] {filter: invert(1) !important;}\n.bpx-player-container[data-screen=\"web\"] video {filter: none !important;}\n* {font-weight: bold !important;}`\n                } else if (location.hostname.indexOf('.huya.com') > -1) {\n                    style += `#player-wrap[style=\"height: 100%;\"], .player-loading, .sidebar-show, #player-ctrl-wrap {filter: invert(1) !important;}`\n                }\n                break;\n        }\n        style_Add.id = 'XIU2DarkMode';\n        style_Add.type = 'text/css';\n        //console.log(document,document.lastElementChild,document.querySelector('html'))\n        if (document.lastElementChild) {\n            document.lastElementChild.appendChild(style_Add).textContent = style;\n        } else { // 发现个别网站速度太慢的话，就会出现脚本运行太早，连 html 标签都还没加载。。。\n            let timer1 = setInterval(function(){ // 每 5 毫秒检查一下 html 是否已存在\n                if (document.lastElementChild) {\n                    clearInterval(timer1); // 取消定时器\n                    document.lastElementChild.appendChild(style_Add).textContent = style;\n                }\n            });\n        }\n\n        let websiteList = [];\n        if (menu_value('menu_autoRecognition')) { // 智能排除自带暗黑模式的网页 (beta)\n            websiteList = menu_value('menu_forcedToEnable'); // 强制当前网站启用护眼模式\n        }\n\n        // 为了避免 body 还没加载导致无法检查是否设置背景颜色\n        let timer = setInterval(function(){ // 每 5 毫秒检查一下 body 是否已存在\n            if (document.body) {\n                clearInterval(timer); // 取消定时器（每 5 毫秒一次的）\n                setTimeout(function(){ // 为了避免太快 body 的 CSS 还没加载上，先延迟 150 毫秒（缺点就是可能会出现短暂一闪而过的暗黑滤镜）\n                    console.log('[护眼模式] html:', window.getComputedStyle(document.lastElementChild).backgroundColor, 'body:', window.getComputedStyle(document.body).backgroundColor)\n                    if (window.getComputedStyle(document.body).backgroundColor === 'rgba(0, 0, 0, 0)' && window.getComputedStyle(document.lastElementChild).backgroundColor === 'rgba(0, 0, 0, 0)' && !(document.querySelector('head>meta[name=\"color-scheme\"],head>link[href^=\"resource:\"]') && window.matchMedia('(prefers-color-scheme: dark)').matches)) {\n                        // 如果 body 没有 CSS 背景颜色（或是在资源页 且 浏览器为白天模式），那就需要添加一个背景颜色，否则影响滤镜效果\n                        let style_Add2 = document.createElement('style');\n                        style_Add2.id = 'XIU2DarkMode2';\n                        document.lastElementChild.appendChild(style_Add2).textContent = style_00;\n\n                    } else if ((document.querySelector('head>meta[name=\"color-scheme\"],head>link[href^=\"resource:\"]') && window.matchMedia('(prefers-color-scheme: dark)').matches) || (document.querySelector('html[class*=dark], html[data-dark-theme*=dark], html[data-theme*=dark], html[data-color-mode*=dark], body[class*=dark]')) || (window.getComputedStyle(document.body).backgroundColor === 'rgb(0, 0, 0)') || (getColorValue(document.body) > 0 && getColorValue(document.body) < 898989) || (getColorValue(document.lastElementChild) > 0 && getColorValue(document.lastElementChild) < 898989) || (window.getComputedStyle(document.body).backgroundColor === 'rgba(0, 0, 0, 0)' && window.getComputedStyle(document.lastElementChild).backgroundColor === 'rgb(0, 0, 0)')) {\n                        // 如果是在资源页 且 浏览器为暗黑模式，或 html/body 元素包含 dark 标识，或底色为黑色 (等于0,0,0) 或深色 (小于 89,89,89)，就停用本脚本滤镜\n                        if (menu_value('menu_autoRecognition')) { // 排除自带暗黑模式的网页 (beta)\n                            for (let i=0;i<websiteList.length;i++){ // 这些网站强制启用护眼模式滤镜\n                                if (websiteList[i] === location.host) return\n                            }\n                            console.log('[护眼模式] 检测到当前网页自带暗黑模式，停用本脚本滤镜...')\n                            document.getElementById('XIU2DarkMode').remove();\n                            remove = true;\n                        }\n                    }\n                }, 150);\n\n                // 用来解决一些 CSS 加载缓慢的网站，可能会出现没有正确排除的问题，在没有找到更好的办法之前，先这样凑活着用\n                setTimeout(function(){\n                    console.log('[护眼模式] html:', window.getComputedStyle(document.lastElementChild).backgroundColor, 'body:', window.getComputedStyle(document.body).backgroundColor)\n                    if ((document.querySelector('head>meta[name=\"color-scheme\"],head>link[href^=\"resource:\"]') && window.matchMedia('(prefers-color-scheme: dark)').matches) || (document.querySelector('html[class*=dark], html[data-dark-theme*=dark], html[data-theme*=dark], html[data-color-mode*=dark], body[class*=dark]')) || (window.getComputedStyle(document.body).backgroundColor === 'rgb(0, 0, 0)') || (getColorValue(document.body) > 0 && getColorValue(document.body) < 898989) || (getColorValue(document.lastElementChild) > 0 && getColorValue(document.lastElementChild) < 898989) || (window.getComputedStyle(document.body).backgroundColor === 'rgba(0, 0, 0, 0)' && window.getComputedStyle(document.lastElementChild).backgroundColor === 'rgb(0, 0, 0)')) {\n                        // 如果是在资源页 且 浏览器为暗黑模式，或 html/body 元素包含 dark 标识，或底色为黑色 (等于0,0,0) 或深色 (小于 89,89,89)，就停用本脚本滤镜\n                        if (menu_value('menu_autoRecognition')) { // 排除自带暗黑模式的网页 (beta)\n                            for (let i=0;i<websiteList.length;i++){ // 这些网站强制启用护眼模式滤镜\n                                if (websiteList[i] === location.host) return\n                            }\n                            if (remove) return\n                            console.log('[护眼模式] 检测到当前网页自带暗黑模式，停用本脚本滤镜....')\n                            if (document.getElementById('XIU2DarkMode')) document.getElementById('XIU2DarkMode').remove();\n                            if (document.getElementById('XIU2DarkMode2')) document.getElementById('XIU2DarkMode2').remove();\n                        }\n                    }\n                }, 1500);\n            }\n        });\n\n        // 解决远景论坛会清理掉前面插入的 CSS 样式的问题\n        if (location.hostname === 'bbs.pcbeta.com') {\n            let timer1 = setInterval(function(){\n                if (!document.getElementById('XIU2DarkMode')) {\n                    document.lastElementChild.appendChild(style_Add).textContent = style;\n                    clearInterval(timer1);\n                }\n            });\n        }\n    }\n\n    // 获取背景颜色值\n    function getColorValue(e) {\n        let rgbValueArry = window.getComputedStyle(e).backgroundColor.replace(/rgba|rgb|\\(|\\)| /g, '').split (',')\n        return parseInt(rgbValueArry[0] + rgbValueArry[1] + rgbValueArry[2])\n    }\n\n\n    // 判断当前是白天还是晚上\n    function isDaytime() {\n        let nowTime = new Date('2022/03/07 ' + new Date().getHours() + ':' + new Date().getMinutes() + ':00').getTime()/1000, time = GM_getValue('menu_customTime').split('|');\n        time[0] = new Date('2022/03/07 ' + time[0] + ':00').getTime()/1000;\n        time[1] = new Date('2022/03/07 ' + time[1] + ':00').getTime()/1000;\n        if (time[0] < time[1]){\n            if (nowTime > time[0] && nowTime < time[1]) return true\n            return false\n        } else {\n            if (nowTime > time[0] || nowTime < time[1]) return true\n            return false\n        }\n    }\n})();\n"
  },
  {
    "path": "DuckDuckGo-Enhanced.user.js",
    "content": "// ==UserScript==\n// @name         DuckDuckGo Enhancements\n// @name:zh-CN   DuckDuckGo 增强\n// @name:zh-TW   DuckDuckGo 增強\n// @name:ru      Улучшения DuckDuckGo\n// @version      1.0.5\n// @author       X.I.U\n// @description  Block the specified domain name, link without source, and quickly return to the top (the blank space on both sides of the right button)...\n// @description:zh-CN  屏蔽指定域名、链接不携来源、快捷回到顶部（右键两侧空白处）\n// @description:zh-TW  屏蔽指定域名、鏈接不攜來源、快捷回到頂部（右鍵兩側空白處）\n// @description:ru  Блокирует указанные доменные имена, ссылки без источника и быстро возвращает наверх страницы (ПКМ по пустому месту с обеих сторон)...\n// @match        https://duckduckgo.com/*\n// @icon         data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAHAElEQVR4nJ2XX2xT9xXHP7/r6z/YceKQuihhLHZh0Ugn1a3DhjSJhE2qFDSkVEklAhXwMCL2MEEbHqpJG0Sd1D6UFjZpMHgBNAqVyJo21UB9adKHtip489YQ1mzgmzESwIQYnNiOc31/e7j2tR07QHeero/v73y/5/zOvyt4Qol1dfhyroddNkS7lIRQCCDxASBIYKBJQVQiR22Z2qHg0EjiSeyKxwJv2xhA6vukIndbgE8gEk4p2AeC57/U/i8Csa4OHyseHpRS7C/oXOvDuDd0sKI1jOpvRHF7ATBSSbLaBAuTE6Quj5C5FikSEeKIktYHgkPRxBMTiG3bGJAsfgoEAGo2baW+Zw+qv+lRzliix6eYvXCSuc+GCypNYN9cLRoVBGLbN4SkYXwABFR/E6v638bR3GJ5+uDiOTLjEfT4NHp8CgDF48XR3IK7rQNPW7tFVI9PMf3G3sJ7mlCUl4LvXY4uS6DUc++mrazc9RqK24sen2L+lobT4cRIJZm/PEoqMoIxn6wagZr2rdR3mxEzUknixwZIXRmpGokyAje2hWNAwN3Wwar+twF4cPEcDz/9EN8rryIam3HUrcThcKDHp5g5807BcIUobi++nj7qOnsBuHd8gOTosEkik3u+kBMWgVjvC+9KKfar/iZWv3UWxe1ldvAEiQsnilZdHhzb9/PUpi04nU4A5kY/ZnbwhHUdS8XX00d9dx9GKsmt13egx6eQQhxZe+7KqxaBfOhjAGt+9xGqv4kHF89x/8xhy5BjcxcNL/8CV31DVaASDytk5c5+6jp7yU5OcOv17ZjA9mDw/JeaAmCweBDMbFf9TejxKRKDRc8dnTto/PmvlgU3QV5btkoSF8wIOZpbqNm0FQBDLu4HUGK7Qz4BuwHqe/YAMDt4sphg9U+zavsv+fqft/nks2+YSy1UAPx7coYvxmdY7OyrSsBIJYkfH6AUQyjsinWFfGouo3QpmE2m4P1cSShtP/wpqqri8Th5sbW6h+uaG1jX3ICRauDmoLdqdWTGIxipJKq/CVdrmMx4xJdz2bsUgWgHcG/oAGD+ymjZQfuadRbIXGqB2/HqpfeHM5/zxfg9XOvDVf8HePCXcwC420wsG0a7KgQhJDjzzaairFwe67H/t8PUrHAy0P8iNW5n2WufRzQAvu9vXJZAoUWvaDVJSiFCKvl26wiYBLKTE2WHFkvK68fhAEAFOMCfjprZPXthDADFBTXPwoo1EL8ERgb0+DQAqkVSBtTChLMGy5L705MPreed3W3FP3JJmPkYUuWEvd/5Bm8fqLV5r2+a4ECxdeexkPjUCleWym2NbDaLw+Eo14/vgGxl81HtYBgmcHIM5q4+2ryKIIHEZ6SSKG6vVQkFEdOTpNPpcgLpCQs8fRPufmh6qdaCkS16vFRKx7dpnIQCaAD63aX3k5fpGAsPZst1jkawmcZsLlDyKaE/XB4csKZqVitcm9BUJH8HQulrERyBFlzrw2TGI2UHU9evwncDRYXNCy1/hBsHcPinWLMHsvFycLUOsnfhzlBRVyj1hXyiCymjioEcgWL51W3prWBujH2FruvlSncL/OAjdE8fyauANEHVOpNIcszM/lLxtLVTigVyVLW5jCG5YHs3Mx7x6fGp0k5lHRTTGvPz89TV1VWQS45B4mKFukJK54xlO2MMKcFT0YSE02DOAAD/3oMoHm/xdOwqmcRMVcP2JQPoX402/tuglOkUj7dszgAIOBUciiYUAEXmjgDMjQ6T1SZQ/U3Ud5cPlvSNawDMLSb5+v7fmNfnAHC1vsCMVyHlFPz5R3Z+3+ngUqi8uuu7+6rMmdwAgAoQPB/VrveGjwrJvjvvHGD1W2ep7ezFmE8ymx/LxthXpDf+hEu3hjkdOwbAs3XPcTdzm/jLToycgVAEAsoiUN/dZ9pKJZl+Yy8AUnL0mfejGoD1puLMHQK0wqoF5jbTsLMfxeNFTGtkMuU19o+Zv3I7le8ZAnJ6DoD7NQLF46VhZz++HjOS8WMD1nK69v3Ifgu38BA8FU0IcpsBbW50mDuHD2CkktR29rL6zbPUrHmG9OwMa2u/h5TSjIphYNft2HU7gf8sEL6WoeZempX2p1j95lnL8/jx0qU0t7nUiceu5Y2/Pl5cs3WdjEzzyic/w2Ov5UDoNzz/9AYAa3es3dJrdbzs5AR3Dh8oWctzLwXfi0YfSQAgti0UkNiKHyYlazaYiVhj91Y7ahKNTzE7eLJ0sdEEuc3B8+a9P5ZAQa73ho8Iyb7Cb1drGHdbB87mFhyBlrLert+dJn0tQurKSFkPkZKjykLu0Lf6NCuVfDQOAbse926J1YQ0OK2I3JFqXn8rAhaRrpAv51K6FEQHQjwHsvzzHKEJKaI5cqO2jDG0nMdL5X/1IiQsOjJcBQAAAABJRU5ErkJggg==\n// @grant        GM_registerMenuCommand\n// @grant        GM_unregisterMenuCommand\n// @grant        GM_openInTab\n// @grant        GM_getValue\n// @grant        GM_setValue\n// @grant        GM_notification\n// @license      GPL-3.0 License\n// @run-at       document-idle\n// @namespace    https://github.com/XIU2/UserScript\n// @supportURL   https://github.com/XIU2/UserScript\n// @homepageURL  https://github.com/XIU2/UserScript\n// ==/UserScript==\n\n(function() {\n    'use strict';\n    var menu_ALL = [\n        ['menu_blockDomainBtn', '显示屏蔽按钮', '显示屏蔽按钮', true],\n        ['menu_blockDomain', '编辑屏蔽域名', '编辑屏蔽域名', []],\n        ['menu_backToTop', '快捷回到顶部', '快捷回到顶部', true]\n    ], menu_ID = [];\n    for (let i=0;i<menu_ALL.length;i++){if (GM_getValue(menu_ALL[i][0]) == null){GM_setValue(menu_ALL[i][0], menu_ALL[i][3])};}\n    registerMenuCommand();\n\n    // 注册脚本菜单\n    function registerMenuCommand() {\n        // 如果菜单ID数组多于菜单数组，说明不是首次添加菜单，需要卸载所有脚本菜单\n        if (menu_ID.length > menu_ALL.length){for (let i=0;i<menu_ID.length;i++){GM_unregisterMenuCommand(menu_ID[i]);}}\n        // 循环注册脚本菜单\n        for (let i=0;i<menu_ALL.length;i++){\n            if (menu_ALL[i][0] === 'menu_blockDomain') {\n                menu_ID[i] = GM_registerMenuCommand(`#️⃣ ${menu_ALL[i][1]}`, function(){customBlockDomain()});\n            } else {\n                menu_ID[i] = GM_registerMenuCommand(`${GM_getValue(menu_ALL[i][0])?'✅':'❌'} ${menu_ALL[i][1]}`, function(){menu_switch(GM_getValue(menu_ALL[i][0]), menu_ALL[i][0], menu_ALL[i][2])});\n            }\n        }\n        menu_ID[menu_ID.length] = GM_registerMenuCommand('💬 反馈 & 建议', function () {GM_openInTab('https://github.com/XIU2/UserScript#xiu2userscript', {active: true,insert: true,setParent: true}); GM_openInTab('https://greasyfork.org/zh-CN/scripts/436428/feedback', {active: true,insert: true,setParent: true});});\n    }\n\n    // 菜单开关\n    function menu_switch(Status, Name, Tips) {\n        if (Status == true) {GM_setValue(Name, false); GM_notification({text: `已关闭 [${Tips}] 功能\\n（点击刷新网页后生效）`, timeout: 3500, onclick: function(){location.reload();}});} else {GM_setValue(Name, true); GM_notification({text: `已开启 [${Tips}] 功能\\n（点击刷新网页后生效）`, timeout: 3500, onclick: function(){location.reload();}});}\n        registerMenuCommand();\n    };\n\n\n    document.documentElement.appendChild(document.createElement('style')).textContent = `\n.blockDomainBtn {padding: 0 6px !important; font-size: 12px !important; line-height: normal !important; margin-left: 6px !important; border-radius: 3px !important; vertical-align: top !important; opacity: 0.4 !important; top: 3px; cursor: cell;}\nli[data-layout=organic]>div[arial-label] {display: none;}\na[data-testid=\"result-title-a\"]{display: inline-block}`\n    mutationObserver(); // 屏蔽指定域名 链接不携来源\n    setTimeout(backToTop, 500); //        快捷回到顶部\n\n\n    // 自定义屏蔽指定域名\n    function customBlockDomain() {\n        let nowBlockDomain = '';\n        GM_getValue('menu_blockDomain').forEach(function(item){nowBlockDomain += '|' + item})\n        let newBlockDomain = prompt('编辑 [屏蔽指定域名]\\n（不同域名之间使用 \"|\" 分隔，例如：a.com|b.com|c.com ）', nowBlockDomain.replace('|',''));\n        if (newBlockDomain === '') {\n            GM_setValue('menu_blockDomain', []);\n            registerMenuCommand();\n        } else if (newBlockDomain != null) {\n            GM_setValue('menu_blockDomain', newBlockDomain.split('|'));\n            registerMenuCommand();\n        }\n    }\n\n\n    // 屏蔽指定域名 链接不携来源\n    function mutationObserver() {\n        const callback = (mutationsList, observer) => {\n            for (const mutation of mutationsList) {\n                for (const target of mutation.addedNodes) {\n                    if (target.nodeType != 1) break\n                    // 屏蔽指定域名\n                    if (target.tagName == 'LI' && target.dataset.layout == 'organic') {\n                        Process(target)\n                    } else if (target.tagName == 'OL' && target.className == 'react-results--main') {\n                        target.childNodes.forEach(li=>{Process(li);})\n                    }\n                }\n            }\n        };\n        const observer = new MutationObserver(callback);\n        observer.observe(document, { childList: true, subtree: true });\n\n        function Process(target) {\n            const a = target.querySelector('h2>a,a[data-testid=result-title-a]')\n            if (a) {\n                if (checkDomain(a.href.split('/')[2])) {\n                    target.hidden = true\n                } else {\n                    // 链接不携来源\n                    addRel(target);\n\n                    // 添加屏蔽按钮\n                    addBlockDomainBtn(target, a, a.href.split('/')[2]);\n                }\n            }\n        }\n    }\n\n\n    // 检查域名是否存在黑名单中\n    function checkDomain(domain) {\n        let blockDomain = GM_getValue('menu_blockDomain');\n        for (let i=0; i<blockDomain.length; i++) {\n            if (domain === blockDomain[i]) return true\n        }\n        return false\n    }\n\n\n    // 添加 rel 属性\n    function addRel(doc) {\n        doc.querySelectorAll('a').forEach(function(one){one.rel = 'noreferrer noopener nofollow'})\n    }\n\n\n    // 添加屏蔽按钮\n    function addBlockDomainBtn(doc, toElement, domain) {\n        if (!GM_getValue('menu_blockDomainBtn')) return\n        if (toElement && !doc.querySelector('button.blockDomainBtn')) {\n            toElement.insertAdjacentHTML('afterend', `<button class=\"btn blockDomainBtn\" data-domain=\"${domain}\" title=\"点击在搜索结果中屏蔽 [ ${domain} ] 域名\">屏蔽</button>`);\n            doc.querySelector('button.blockDomainBtn').addEventListener('click', function(e) {\n                e.stopPropagation();\n                // 追加屏蔽域名\n                let blockDomain = GM_getValue('menu_blockDomain');\n                blockDomain.push(e.target.dataset.domain)\n                GM_setValue('menu_blockDomain', blockDomain);\n                // 隐藏该域名的所有搜索结果\n                document.querySelectorAll(`button[data-domain=\"${e.target.dataset.domain}\"].blockDomainBtn`).forEach(function(one){one.parentElement.parentElement.parentElement.parentElement.remove();})\n            });\n        }\n    }\n\n\n    // 快捷回到顶部（右键两侧空白处）\n    function backToTop() {\n        if (!GM_getValue('menu_backToTop')) return\n        document.querySelectorAll('#react-layout>div, #react-layout>div>div, section[data-testid=sidebar]').forEach(ele => {\n            ele.oncontextmenu = function(e) {\n                if (e.target == this) {\n                    e.preventDefault();\n                    window.scrollTo(0,0);\n                }\n            }\n        })\n    }\n})();\n"
  },
  {
    "path": "GithubEnhanced-High-Speed-Download.user.js",
    "content": "// ==UserScript==\n// @name         Github Enhancement - High Speed Download\n// @name:zh-CN   Github 增强 - 高速下载\n// @name:zh-TW   Github 增強 - 高速下載\n// @name:ru      Улучшение GitHub – быстрое скачивание\n// @version      2.6.37\n// @author       X.I.U\n// @description  High-speed download of Git Clone/SSH, Release, Raw, Code(ZIP) and other files (Based on public welfare), project list file quick download (☁)\n// @description:zh-CN  高速下载 Git Clone/SSH、Release、Raw、Code(ZIP) 等文件 (公益加速)、项目列表单文件快捷下载 (☁)\n// @description:zh-TW  高速下載 Git Clone/SSH、Release、Raw、Code(ZIP) 等文件 (公益加速)、項目列表單文件快捷下載 (☁)\n// @description:ru  Высокоскоростная загрузка Git Clone/SSH, выпусков, изначальных файлов, кода (ZIP) и других файлов (на основе общественного благосостояния), быстрая загрузка файлов из списка проектов (☁)\n// @match        *://github.com/*\n// @match        *://hub.whtrys.space/*\n// @match        *://dgithub.xyz/*\n// @match        *://kkgithub.com/*\n// @match        *://github.site/*\n// @match        *://github.store/*\n// @match        *://bgithub.xyz/*\n// @icon         data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK7OHOkAAACEUExURUxpcRgWFhsYGBgWFhcWFh8WFhoYGBgWFiUlJRcVFRkWFhgVFRgWFhgVFRsWFhgWFigeHhkWFv////////////r6+h4eHv///xcVFfLx8SMhIUNCQpSTk/r6+jY0NCknJ97e3ru7u+fn51BOTsPCwqGgoISDg6empmpoaK2srNDQ0FhXV3eXcCcAAAAXdFJOUwCBIZXMGP70BuRH2Ze/LpIMUunHkpQR34sfygAAAVpJREFUOMt1U+magjAMDAVb5BDU3W25b9T1/d9vaYpQKDs/rF9nSNJkArDA9ezQZ8wPbc8FE6eAiQUsOO1o19JolFibKCdHGHC0IJezOMD5snx/yE+KOYYr42fPSufSZyazqDoseTPw4lGJNOu6LBXVUPBG3lqYAOv/5ZwnNUfUifzBt8gkgfgINmjxOpgqUA147QWNaocLniqq3QsSVbQHNp45N/BAwoYQz9oUJEiE4GMGfoBSMj5gjeWRIMMqleD/CAzUHFqTLyjOA5zjNnwa4UCEZ2YK3khEcBXHjVBtEFeIZ6+NxYbPqWp1DLKV42t6Ujn2ydyiPi9nX0TTNAkVVZ/gozsl6FbrktkwaVvL2TRK0C8Ca7Hck7f5OBT6FFbLATkL2ugV0tm0RLM9fedDvhWstl8Wp9AFDjFX7yOY/lJrv8AkYuz7fuP8dv9izCYH+x3/LBnj9fYPBTpJDNzX+7cAAAAASUVORK5CYII=\n// @grant        GM_registerMenuCommand\n// @grant        GM_unregisterMenuCommand\n// @grant        GM_openInTab\n// @grant        GM_getValue\n// @grant        GM_setValue\n// @grant        GM_notification\n// @grant        GM_setClipboard\n// @grant        window.onurlchange\n// @sandbox      JavaScript\n// @license      GPL-3.0 License\n// @run-at       document-end\n// @namespace    https://greasyfork.org/scripts/412245\n// @supportURL   https://github.com/XIU2/UserScript\n// @homepageURL  https://github.com/XIU2/UserScript\n// ==/UserScript==\n\n(function() {\n    'use strict';\n    var menu_rawFast = GM_getValue('xiu2_menu_raw_fast'), menu_rawFast_ID, menu_rawDownLink_ID, menu_gitClone_ID, menu_customUrl_ID, menu_feedBack_ID;\n    const download_url_us = [\n        ['https://gh.h233.eu.org/https://github.com', '美国', '[美国 Cloudflare CDN] - 该公益加速源由 [@X.I.U/XIU2] 提供'],\n        //['https://gh.api.99988866.xyz/https://github.com', '美国', '[美国 Cloudflare CDN] - 该公益加速源由 [github.com/hunshcn/gh-proxy] 提供'], // 官方演示站用的人太多了\n        //['https://ghproxy.1888866.xyz/https://github.com', '美国', '[美国 Cloudflare CDN] - 该公益加速源由 [WJQSERVER-STUDIO/ghproxy] 提供'],//挂了\n        ['https://rapidgit.jjda.de5.net/https://github.com', '美国', '[美国 Cloudflare CDN] - 该公益加速源由 [热心网友] 提供'],\n        ['https://gh.ddlc.top/https://github.com', '美国', '[美国 Cloudflare CDN] - 该公益加速源由 [@mtr-static-official] 提供'], // Error 1027\n        //['https://gh2.yanqishui.work/https://github.com', '美国', '[美国 Cloudflare CDN] - 该公益加速源由 [@HongjieCN] 提供'], // 错误\n        //['https://dl.ghpig.top/https://github.com', '美国', '[美国 Cloudflare CDN] - 该公益加速源由 [feizhuqwq.com] 提供'], // ERR_SSL_VERSION_OR_CIPHER_MISMATCH\n        //['https://gh.flyinbug.top/gh/https://github.com', '美国', '[美国 Cloudflare CDN] - 该公益加速源由 [Mintimate] 提供'], // 错误\n        //['https://gh.con.sh/https://github.com', '美国', '[美国 Cloudflare CDN] - 该公益加速源由 [gh.con.sh] 提供'], // Suspent due to abuse report.\n        //['https://ghps.cc/https://github.com', '美国', '[美国 Cloudflare CDN] - 该公益加速源由 [ghps.cc] 提供'], // 提示 blocked\n        ['https://gh-proxy.org/https://github.com', '美国', '[美国 Cloudflare CDN] - 该公益加速源由 [gh-proxy.com] 提供'],\n        //['https://hk.gh-proxy.org/https://github.com', '其他', '[中国香港] - 该公益加速源由 [gh-proxy.com] 提供'],\n        ['https://cdn.gh-proxy.org/https://github.com', '其他', '[Fastly CDN] - 该公益加速源由 [gh-proxy.com] 提供'],\n        ['https://edgeone.gh-proxy.org/https://github.com', '其他', '[edgeone] - 该公益加速源由 [gh-proxy.com] 提供'],\n        ['https://cors.isteed.cc/github.com', '美国', '[美国 Cloudflare CDN] - 该公益加速源由 [@Lufs\\'s] 提供'],\n        //['https://hub.gitmirror.com/https://github.com', '美国', '[美国 Cloudflare CDN] - 该公益加速源由 [GitMirror] 提供'], // 域名无解析\n        //['https://down.sciproxy.com/github.com', '美国', '[美国 Cloudflare CDN] - 该公益加速源由 [sciproxy.com] 提供'], // 522\n        ['https://ghproxy.it/https://github.com', '美国', '[美国 洛杉矶] - 该公益加速源由 [@yionchilau] 提供'],\n        //['https://github.site', '美国', '[美国 Cloudflare CDN] - 该公益加速源由 [@yionchilau] 提供'], // 挂了\n        //['https://github.store', '美国', '[美国 Cloudflare CDN] - 该公益加速源由 [@yionchilau] 提供'], // 挂了\n        //['https://gh.jiasu.in/https://github.com', '美国', '[美国 Cloudflare CDN] - 该公益加速源由 [@0-RTT] 提供'], // 404\n        ['https://github.boki.moe/https://github.com', '美国', '[美国 Cloudflare CDN] - 该公益加速源由 [blog.boki.moe] 提供'],\n        //['https://github.moeyy.xyz/https://github.com', '美国', '[美国 Cloudflare CDN] - 该公益加速源由 [moeyy.cn] 提供'], // 墙了\n        ['https://gh-proxy.net/https://github.com', '美国', '[美国 Cloudflare CDN] - 该公益加速源由 [gh-proxy.net] 提供'],\n        //['https://github.yongyong.online/https://github.com', '美国', '[美国 Cloudflare CDN] - 该公益加速源由 [github.yongyong.online] 提供'], // 空白\n        //['https://ghdd.862510.xyz/https://github.com', '美国', '[美国 Cloudflare CDN] - 该公益加速源由 [ghdd.862510.xyz] 提供'], // turnstile token missing\n        ['https://gh.jasonzeng.dev/https://github.com', '美国', '[美国 Cloudflare CDN] - 该公益加速源由 [gh.jasonzeng.dev] 提供'],\n        ['https://gh.monlor.com/https://github.com', '美国', '[美国 Cloudflare CDN] - 该公益加速源由 [gh.monlor.com] 提供'],\n        ['https://fastgit.cc/https://github.com', '美国', '[美国 Cloudflare CDN] - 该公益加速源由 [fastgit.cc] 提供'],\n        ['https://github.tbedu.top/https://github.com', '美国', '[美国 Cloudflare CDN] - 该公益加速源由 [github.tbedu.top] 提供'],\n        //['https://github.geekery.cn/https://github.com', '美国', '[美国 Cloudflare CDN] - 该公益加速源由 [github.geekery.cn] 提供'], // 下载认证信息 用户名：123123 密　码：123123\n        ['https://firewall.lxstd.org/https://github.com', '美国', '[美国 Cloudflare CDN] - 该公益加速源由 [firewall.lxstd.org] 提供'],\n        ['https://github.ednovas.xyz/https://github.com', '美国', '[美国 Cloudflare CDN] - 该公益加速源由 [github.ednovas.xyz] 提供'],\n        ['https://ghfile.geekertao.top/https://github.com', '美国', '[美国 Cloudflare CDN] - 该公益加速源由 [ghfile.geekertao.top] 提供'],\n        ['https://ghp.keleyaa.com/https://github.com', '美国', '[美国 Cloudflare CDN] - 该公益加速源由 [ghp.keleyaa.com] 提供'], // Error 1027\n        //['https://github.wuzhij.com/https://github.com', '美国', '[美国 Cloudflare CDN] - 该公益加速源由 [github.wuzhij.com] 提供'], // 404\n        ['https://gh.chjina.com/https://github.com', '美国', '[美国 Cloudflare CDN] - 该公益加速源由 [gh.chjina.com] 提供'],\n        ['https://ghpxy.hwinzniej.top/https://github.com', '美国', '[美国 Cloudflare CDN] - 该公益加速源由 [ghpxy.hwinzniej.top] 提供'],\n        ['https://cdn.crashmc.com/https://github.com', '美国', '[美国 Cloudflare CDN] - 该公益加速源由 [cdn.crashmc.com] 提供'],\n        ['https://git.yylx.win/https://github.com', '美国', '[美国 Cloudflare CDN] - 该公益加速源由 [git.yylx.win] 提供'],\n        ['https://gitproxy.mrhjx.cn/https://github.com', '美国', '[美国 Cloudflare CDN] - 该公益加速源由 [gitproxy.mrhjx.cn] 提供'],\n        ['https://ghproxy.cxkpro.top/https://github.com', '美国', '[美国 Cloudflare CDN] - 该公益加速源由 [ghproxy.cxkpro.top] 提供'],\n        ['https://gh.xxooo.cf/https://github.com', '美国', '[美国 Cloudflare CDN] - 该公益加速源由 [gh.xxooo.cf] 提供'],\n        ['https://github.limoruirui.com/https://github.com', '美国', '[美国 Cloudflare CDN] - 该公益加速源由 [github.limoruirui.com] 提供'],\n        ['https://gh.idayer.com/https://github.com', '美国', '[美国 Cloudflare CDN] - 该公益加速源由 [gh.idayer.com] 提供'], // Error 1027\n        //['https://gh.zwnes.xyz/https://github.com', '美国', '[美国 Cloudflare CDN] - 该公益加速源由 [gh.zwnes.xyz] 提供'], // 超时\n        ['https://gh.llkk.cc/https://github.com', '美国', '[美国 Cloudflare CDN] - 该公益加速源由 [gh.llkk.cc] 提供'],\n        ['https://down.npee.cn/?https://github.com', '美国', '[美国 Cloudflare CDN] - 该公益加速源由 [npee社区] 提供'],\n        ['https://raw.ihtw.moe/github.com', '美国', '[美国 Cloudflare CDN] - 该公益加速源由 [raw.ihtw.moe] 提供'],\n        ['https://xget.xi-xu.me/gh', '美国', '[美国 Cloudflare CDN] - 该公益加速源由 [github.com/xixu-me/Xget] 提供'],\n        //['https://dgithub.xyz', '美国', '[美国 西雅图] - 该公益加速源由 [dgithub.xyz] 提供'], // 证书挂了\n        //['https://gh-proxy.ygxz.in/https://github.com', '美国', '[美国 洛杉矶] - 该公益加速源由 [@一个小站 www.ygxz.in] 提供'], // 被蔷\n        ['https://gh.nxnow.top/https://github.com', '美国', '[美国 洛杉矶] - 该公益加速源由 [gh.nxnow.top] 提供'],\n        ['https://gh.zwy.one/https://github.com', '美国', '[美国 洛杉矶] - 该公益加速源由 [gh.zwy.one] 提供'],\n        ['https://ghproxy.monkeyray.net/https://github.com', '美国', '[美国 洛杉矶] - 该公益加速源由 [ghproxy.monkeyray.net] 提供'],\n        ['https://gh.xx9527.cn/https://github.com', '美国', '[美国 洛杉矶] - 该公益加速源由 [gh.xx9527.cn] 提供'],\n    //], download_url = [ // 为了缓解非美国公益节点压力（考虑到很多人无视前面随机的美国节点），干脆也将其加入随机\n        //['https://ghproxy.net/https://github.com', '英国', '[英国伦敦] - 该公益加速源由 [ghproxy.net] 提供&#10;&#10;提示：希望大家尽量多使用美国节点（每次随机 负载均衡），&#10;避免流量都集中到亚洲公益节点，减少成本压力，公益才能更持久~'], // 挂了\n        ['https://ghfast.top/https://github.com', '其他', '[日本、韩国、新加坡、美国、德国等]（CDN 不固定） - 该公益加速源由 [ghproxy.link] 提供&#10;&#10;提示：希望大家尽量多使用美国节点（每次随机 负载均衡），&#10;避免流量都集中到亚洲公益节点，减少成本压力，公益才能更持久~'],\n        ['https://wget.la/https://github.com', '其他', '[中国香港、中国台湾、日本、美国等]（CDN 不固定） - 该公益加速源由 [ucdn.me] 提供&#10;&#10;提示：希望大家尽量多使用美国节点（每次随机 负载均衡），&#10;避免流量都集中到亚洲公益节点，减少成本压力，公益才能更持久~'],\n        //['https://hub.glowp.xyz/https://github.com', '其他', '[中国香港] - 该公益加速源由 [hub.glowp.xyz] 提供&#10;&#10;提示：希望大家尽量多使用美国节点（每次随机 负载均衡），&#10;避免流量都集中到亚洲公益节点，减少成本压力，公益才能更持久~'],\n        //['https://kkgithub.com', '其他', '[中国香港、日本、韩国、新加坡等] - 该公益加速源由 [help.kkgithub.com] 提供&#10;&#10;提示：希望大家尽量多使用美国节点（每次随机 负载均衡），&#10;避免流量都集中到亚洲公益节点，减少成本压力，公益才能更持久~'], // 404\n    ], clone_url = [\n        ['https://gitclone.com', '国内', '[中国 国内] - 该公益加速源由 [GitClone] 提供&#10;&#10; - 缓存：有&#10; - 首次比较慢，缓存后较快'],\n        //['https://kkgithub.com', '香港', '[中国香港、日本、新加坡等] - 该公益加速源由 [help.kkgithub.com] 提供'], // 超时\n        //['https://gitdl.cn/https://github.com', '香港', '[中国香港] - 该公益加速源由 [gitdl] 提供'], // 输出文件错误\n        //['https://gitproxy.click/https://github.com', '香港', '[中国 香港] - 该公益加速源由 [gitproxy.click] 提供'],\n        //['https://cdn.moran233.xyz/https://github.com', '香港', '[中国 香港] - 该公益加速源由 [cdn.moran233.xyz] 提供'],\n        //['https://hub.glowp.xyz/https://github.com', '香港', '[中国香港] - 该公益加速源由 [hub.glowp.xyz] 提供'],\n        ['https://wget.la/https://github.com', '香港', '[中国香港、中国台湾、日本、美国等]（CDN 不固定） - 该公益加速源由 [ucdn.me] 提供'],\n        ['https://hk.gh-proxy.org/https://github.com', '香港', '[中国香港] - 该公益加速源由 [gh-proxy.com] 提供'],\n        ['https://ghfast.top/https://github.com', '韩国', '[日本、韩国、新加坡、美国、德国等]（CDN 不固定） - 该公益加速源由 [ghproxy] 提供'],\n        //['https://gh.catmak.name/https://raw.githubusercontent.com', '韩国', '[韩国 首尔] - 该公益加速源由 [gh.catmak.name] 提供'],\n        ['https://githubfast.com', '韩国', '[韩国] - 该公益加速源由 [Github Fast] 提供'],\n        //['https://ghproxy.net/https://github.com', '日本', '[日本 大阪] - 该公益加速源由 [ghproxy.net] 提供'], // 挂了\n        //['https://proxy.yaoyaoling.net/https://github.com', '日本', '[日本 东京] - 该公益加速源由 [proxy.yaoyaoling.net] 提供'],\n        //['https://g.blfrp.cn/https://github.com', '日本', '[日本 东京] - 该公益加速源由 [g.blfrp.cn] 提供'],\n        //['https://raw.bgithub.xyz', '荷兰', '[荷兰] - 该公益加速源由 [bgithub.xyz] 提供&#10;&#10; - 缓存：有'],\n        //['https://ghproxy.1888866.xyz/https://github.com', '美国', '[美国 Cloudflare CDN] - 该公益加速源由 [WJQSERVER-STUDIO/ghproxy] 提供'],\n        //['https://github.moeyy.xyz/https://github.com', '美国', '[美国 Cloudflare CDN] - 该公益加速源由 [moeyy.cn] 提供'], // 墙了\n        //['https://gh-proxy.net/https://github.com', '美国', '[美国 Cloudflare CDN] - 该公益加速源由 [gh-proxy.net] 提供'],\n        //['https://rapidgit.jjda.de5.net/https://github.com', '美国', '[美国 Cloudflare CDN] - 该公益加速源由 [热心网友] 提供'],\n        //['https://github.yongyong.online/https://github.com', '美国', '[美国 Cloudflare CDN] - 该公益加速源由 [github.yongyong.online] 提供'],\n        //['https://ghdd.862510.xyz/https://github.com', '美国', '[美国 Cloudflare CDN] - 该公益加速源由 [ghdd.862510.xyz] 提供'],\n        //['https://hub.gitmirror.com/https://github.com', '美国', '[美国 Cloudflare CDN] - 该公益加速源由 [GitMirror] 提供'], // 域名无解析\n        //['https://gh-proxy.org/https://github.com', '美国', '[美国 Cloudflare CDN] - 该公益加速源由 [gh-proxy.com] 提供'],\n        //['https://cdn.gh-proxy.org/https://github.com', '其他', '[Fastly CDN] - 该公益加速源由 [gh-proxy.com] 提供'],\n        //['https://edgeone.gh-proxy.org/https://github.com', '其他', '[edgeone] - 该公益加速源由 [gh-proxy.com] 提供'],\n        //['https://ghproxy.it/https://github.com', '美国', '[美国 洛杉矶] - 该公益加速源由 [@yionchilau] 提供'],\n        //['https://github.site', '美国', '[美国 Cloudflare CDN] - 该公益加速源由 [@yionchilau] 提供'], // 挂了\n        //['https://github.store', '美国', '[美国 Cloudflare CDN] - 该公益加速源由 [@yionchilau] 提供'], // 挂了\n        //['https://gh.jiasu.in/https://github.com', '美国', '[美国 Cloudflare CDN] - 该公益加速源由 [@0-RTT] 提供'], // 404\n        //['https://github.boki.moe/https://github.com', '美国', '[美国 Cloudflare CDN] - 该公益加速源由 [blog.boki.moe] 提供'],\n        //['https://raw.ihtw.moe/github.com', '美国', '[美国 Cloudflare CDN] - 该公益加速源由 [raw.ihtw.moe] 提供'],\n        //['https://xget.xi-xu.me/gh', '美国', '[美国 Cloudflare CDN] - 该公益加速源由 [github.com/xixu-me/Xget] 提供'],\n        //['https://dgithub.xyz', '美国', '[美国 西雅图] - 该公益加速源由 [dgithub.xyz] 提供'],\n        //['https://gh-proxy.ygxz.in/https://github.com', '美国', '[美国 洛杉矶] - 该公益加速源由 [@一个小站 www.ygxz.in] 提供'], // 被蔷\n        //['https://hub.scholar.rr.nu', '美国', '[美国 纽约] - 该公益加速源由 [FastGit 群组成员] 提供'], // 证书到期\n    ], clone_ssh_url = [\n        ['ssh://git@ssh.github.com:443/', 'Github 原生', '[日本、新加坡等] - Github 官方提供的 443 端口的 SSH（依然是 SSH 协议），适用于限制访问 22 端口的网络环境'],\n        //['git@ssh.fastgit.org:', '香港', '[中国 香港] - 该公益加速源由 [FastGit] 提供'], // 挂了\n        //['git@git.zhlh6.cn:', '美国', '[美国 洛杉矶]'] // 挂了\n    ], raw_url = [\n        ['https://raw.githubusercontent.com', 'Github 原生', '[日本 东京]&#10;&#10; - 缓存：无（或很短）'],\n        //['https://raw.kkgithub.com', '香港 1', '[中国香港、日本、新加坡等] - 该公益加速源由 [help.kkgithub.com] 提供&#10;&#10; - 缓存：有'], // 超时\n        //['https://jsd.proxy.aks.moe/gh', '香港 2', '[中国 香港] - 该公益加速源由 [cdn.akass.cn] 提供'], // 证书错误\n        ['https://wget.la/https://raw.githubusercontent.com', '香港 1', '[中国香港、中国台湾、日本、美国等]（CDN 不固定） - 该公益加速源由 [ucdn.me] 提供&#10;&#10; - 缓存：无（或很短）'],\n        ['https://hk.gh-proxy.org/https://raw.githubusercontent.com', '香港 2', '[中国香港] - 该公益加速源由 [gh-proxy.com] 提供&#10;&#10; - 缓存：有（官方注明 2 小时）'],\n        ['https://hub.glowp.xyz/https://raw.githubusercontent.com', '香港 3', '[中国香港] - 该公益加速源由 [hub.glowp.xyz] 提供&#10;&#10; - 缓存：有'],\n        //['https://gitproxy.click/https://raw.githubusercontent.com', '香港', '[中国 香港] - 该公益加速源由 [gitproxy.click] 提供'], // 输出错误\n        //['https://cdn.moran233.xyz/https://raw.githubusercontent.com', '香港', '[中国 香港] - 该公益加速源由 [cdn.moran233.xyz] 提供'], // 404\n        //['https://gitdl.cn/https://raw.githubusercontent.com', '香港 3', '[中国香港] - 该公益加速源由 [gitdl] 提供&#10;&#10; - 缓存：有'], // 输出文件错误\n        ['https://ghfast.top/https://raw.githubusercontent.com', '韩国', '[日本、韩国、新加坡、美国、德国等]（CDN 不固定） - 该公益加速源由 [ghproxy.link] 提供&#10;&#10; - 缓存：无（或很短）'],\n        ['https://gh.catmak.name/https://raw.githubusercontent.com', '韩国', '[韩国 首尔] - 该公益加速源由 [gh.catmak.name] 提供'],\n        //['https://ghproxy.net/https://raw.githubusercontent.com', '日本 1', '[日本 大阪] - 该公益加速源由 [ghproxy.net] 提供&#10;&#10; - 缓存：有（约 10 分钟）'], // 挂了\n        ['https://fastly.jsdelivr.net/gh', '日本 1', '[日本 东京] - 该公益加速源由 [JSDelivr CDN] 提供&#10;&#10; - 缓存：有&#10; - 不支持大小超过 50 MB 的文件&#10; - 不支持版本号格式的分支名（如 v1.2.3）'],\n        ['https://cdn.gh-proxy.org/https://raw.githubusercontent.com', '日本 2', '[Fastly CDN] - 该公益加速源由 [gh-proxy.com] 提供&#10;&#10; - 缓存：有'],\n        //['https://jsdelivr.pai233.top/gh', '日本 3', '[日本 东京]（Vercel Anycast） - 该公益加速源由 [blog.pai233.top] 提供&#10;&#10; - 缓存：有'], // This deployment is temporarily paused\n        //['https://proxy.yaoyaoling.net/https://raw.githubusercontent.com', '日本', '[日本 东京] - 该公益加速源由 [proxy.yaoyaoling.net] 提供'], // 空白\n        ['https://g.blfrp.cn/https://raw.githubusercontent.com', '日本 3', '[日本 东京] - 该公益加速源由 [g.blfrp.cn] 提供'],\n        //['https://raw.bgithub.xyz', '荷兰', '[荷兰] - 该公益加速源由 [bgithub.xyz] 提供&#10;&#10; - 缓存：有'],\n        //['https://gcore.jsdelivr.net/gh', '美国', '[美国 Cloudflare CDN] - 该公益加速源由 [JSDelivr CDN] 提供&#10;&#10; - 缓存：有&#10; - 不支持大小超过 50 MB 的文件&#10; - 不支持版本号格式的分支名（如 v1.2.3）'], // 变成 美国 Cloudflare CDN 了\n        //['https://jsdelivr.b-cdn.net/gh', '其他', '[中国香港、中国台湾、日本、新加坡等]（CDN 不固定） - 该公益加速源由 [@rttwyjz] 提供&#10;&#10; - 缓存：有'], // 疑似 SNI 阻断\n        //['https://xget.xi-xu.me/gh', '美国', '[美国 Cloudflare CDN] - 该公益加速源由 [github.com/xixu-me/Xget] 提供'],\n        //['https://ghproxy.1888866.xyz/https://raw.githubusercontent.com', '美国', '[美国 Cloudflare CDN] - 该公益加速源由 [WJQSERVER-STUDIO/ghproxy] 提供'],\n        //['https://github.moeyy.xyz/https://raw.githubusercontent.com', '美国', '[美国 Cloudflare CDN] - 该公益加速源由 [moeyy.cn] 提供&#10;&#10; - 缓存：有（约 10 分钟）'],  // 墙了\n        //['https://gh-proxy.net/https://raw.githubusercontent.com', '美国', '[美国 Cloudflare CDN] - 该公益加速源由 [gh-proxy.net] 提供'],\n        //['https://rapidgit.jjda.de5.net/https://github.com', '美国', '[美国 Cloudflare CDN] - 该公益加速源由 [热心网友] 提供'],\n        //['https://github.yongyong.online/https://raw.githubusercontent.com', '美国', '[美国 Cloudflare CDN] - 该公益加速源由 [github.yongyong.online] 提供'],\n        //['https://ghdd.862510.xyz/https://raw.githubusercontent.com', '美国', '[美国 Cloudflare CDN] - 该公益加速源由 [ghdd.862510.xyz] 提供'],\n        //['https://raw.cachefly.998111.xyz', '其他 4', '[新加坡、日本、印度等]（Anycast CDN 不固定） - 该公益加速源由 [@XxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxXxX0] 提供&#10;&#10; - 缓存：有（约 12 小时）'], // 证书到期\n        //['https://ghproxy.it/https://raw.githubusercontent.com', '美国', '[美国 洛杉矶] - 该公益加速源由 [@yionchilau] 提供&#10;&#10; - 缓存：无（或很短）'],\n        //['https://raw.github.site', '美国', '[美国 Cloudflare CDN] - 该公益加速源由 [@yionchilau] 提供&#10;&#10; - 缓存：无（或很短）'], // 挂了\n        //['https://raw.github.store', '美国', '[美国 Cloudflare CDN] - 该公益加速源由 [@yionchilau] 提供&#10;&#10; - 缓存：无（或很短）'], // 挂了\n        //['https://gh.jiasu.in/https://raw.githubusercontent.com', '美国', '[美国 Cloudflare CDN] - 该公益加速源由 [@0-RTT] 提供'], // 404\n        //['https://github.boki.moe/https://raw.githubusercontent.com', '美国', '[美国 Cloudflare CDN] - 该公益加速源由 [blog.boki.moe] 提供&#10;&#10; - 缓存：无（或很短）'],\n        //['https://gh-proxy.org/https://raw.githubusercontent.com', '美国', '[美国 Cloudflare CDN] - 该公益加速源由 [gh-proxy.com] 提供&#10;&#10; - 缓存：有'],\n        //['https://cdn.gh-proxy.org/https://raw.githubusercontent.com', '其他', '[Fastly CDN] - 该公益加速源由 [gh-proxy.com] 提供'],\n        //['https://edgeone.gh-proxy.org/https://raw.githubusercontent.com', '其他', '[edgeone] - 该公益加速源由 [gh-proxy.com] 提供'],\n        //['https://cdn.githubraw.com', '美国', '[美国 Cloudflare CDN] - 该公益加速源由 [githubraw.com] 提供&#10;&#10; - 缓存：有（几乎永久）'],\n        //['https://raw.dgithub.xyz', '美国', '[美国 西雅图] - 该公益加速源由 [dgithub.xyz] 提供&#10;&#10; - 缓存：无（或很短）'],\n        //['https://gh-proxy.ygxz.in//https://raw.githubusercontent.com', '美国', '[美国 洛杉矶] - 该公益加速源由 [@一个小站 www.ygxz.in] 提供&#10;&#10; - 缓存：无（或很短）'], // 被蔷\n        //['https://raw.nuaa.cf', '美国', '[美国 洛杉矶] - 该公益加速源由 [FastGit 群组成员] 提供'], // 证书到期\n        //['https://raw.yzuu.cf', '美国', '[美国 纽约] - 该公益加速源由 [FastGit 群组成员] 提供'], // 证书到期\n        //['https://hub.gitmirror.com/raw.githubusercontent.com', '美国', '[美国 Cloudflare CDN] - 该公益加速源由 [GitMirror] 提供&#10;&#10; - 缓存：无（或很短）'], // 域名无解析\n        //['https://jsdelivr-cdn.pencilnavrp.990989.xyz/gh', '美国', '[美国 Cloudflare CDN] - 该公益加速源由 [PencilNavigator] 提供&#10;&#10; - 缓存：有'],\n        //['https://git.yumenaka.net/https://raw.githubusercontent.com', '美国', '[美国 圣何塞]'], // 连接超时\n    ], svg = [\n        '<svg class=\"octicon octicon-cloud-download\" aria-hidden=\"true\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path d=\"M9 12h2l-3 3-3-3h2V7h2v5zm3-8c0-.44-.91-3-4.5-3C5.08 1 3 2.92 3 5 1.02 5 0 6.52 0 8c0 1.53 1 3 3 3h3V9.7H3C1.38 9.7 1.3 8.28 1.3 8c0-.17.05-1.7 1.7-1.7h1.3V5c0-1.39 1.56-2.7 3.2-2.7 2.55 0 3.13 1.55 3.2 1.8v1.2H12c.81 0 2.7.22 2.7 2.2 0 2.09-2.25 2.2-2.7 2.2h-2V11h2c2.08 0 4-1.16 4-3.5C16 5.06 14.08 4 12 4z\"></path></svg>'\n    ], style = ['padding:0 6px; margin-right: -1px; border-radius: 2px; background-color: var(--XIU2-background-color); border-color: var(--borderColor-default); font-size: 11px; color: var(--XIU2-font-color);'];\n\n    if (menu_rawFast == null){menu_rawFast = 1; GM_setValue('xiu2_menu_raw_fast', 1)};\n    if (GM_getValue('menu_rawDownLink') == null){GM_setValue('menu_rawDownLink', true)};\n    if (GM_getValue('menu_gitClone') == null){GM_setValue('menu_gitClone', true)};\n    // 如果自定义加速源不存在或为空则忽略，如果自定义加速源地址存在，则添加到 raw_url、clone_url 数组中\n    if (GM_getValue('custom_raw_url')) {raw_url.splice(1, 0, [GM_getValue('custom_raw_url'), '自定义', '[由你自定义的 Raw 加速源]&#10;&#10;提示：点击浏览器右上角 Tampermonkey 扩展图标 - [ #️⃣ 自定义加速源 ]&#10;即可轮流设置 Raw、Git Clone、Release/Code(ZIP) 的自定义加速源地址（留空代表不设置）。'])};\n    if (GM_getValue('custom_clone_url')) {clone_url.unshift([GM_getValue('custom_clone_url'), '自定义', '[由你自定义的 Git Clone 加速源]&#10;&#10;提示：点击浏览器右上角 Tampermonkey 扩展图标 - [ #️⃣ 自定义加速源 ]&#10;即可轮流设置 Raw、Git Clone、Release/Code(ZIP) 的自定义加速源地址（留空代表不设置）。'])};\n    registerMenuCommand();\n    // 注册脚本菜单\n    function registerMenuCommand() {\n        // 如果反馈菜单ID不是 null，则删除所有脚本菜单\n        if (menu_feedBack_ID) {GM_unregisterMenuCommand(menu_rawFast_ID); GM_unregisterMenuCommand(menu_rawDownLink_ID); GM_unregisterMenuCommand(menu_gitClone_ID); GM_unregisterMenuCommand(menu_customUrl_ID); GM_unregisterMenuCommand(menu_feedBack_ID); menu_rawFast = GM_getValue('xiu2_menu_raw_fast');}\n        // 避免在减少 raw 数组后，用户储存的数据大于数组而报错\n        if (menu_rawFast > raw_url.length - 1) menu_rawFast = 0\n        if (GM_getValue('menu_rawDownLink')) menu_rawFast_ID = GM_registerMenuCommand(`${['0️⃣','1️⃣','2️⃣','3️⃣','4️⃣','5️⃣','6️⃣','7️⃣','8️⃣','9️⃣','🔟'][menu_rawFast]} [ ${raw_url[menu_rawFast][1]} ] 加速源 (☁) - 点击切换`, menu_toggle_raw_fast);\n        menu_rawDownLink_ID = GM_registerMenuCommand(`${GM_getValue('menu_rawDownLink')?'✅':'❌'} 项目列表单文件快捷下载 (☁)`, function(){if (GM_getValue('menu_rawDownLink') == true) {GM_setValue('menu_rawDownLink', false); GM_notification({text: `已关闭 [项目列表单文件快捷下载 (☁)] 功能\\n（点击刷新网页后生效）`, timeout: 3500, onclick: function(){location.reload();}});} else {GM_setValue('menu_rawDownLink', true); GM_notification({text: `已开启 [项目列表单文件快捷下载 (☁)] 功能\\n（点击刷新网页后生效）`, timeout: 3500, onclick: function(){location.reload();}});}registerMenuCommand();});\n        menu_gitClone_ID = GM_registerMenuCommand(`${GM_getValue('menu_gitClone')?'✅':'❌'} 添加 git clone 命令`, function(){if (GM_getValue('menu_gitClone') == true) {GM_setValue('menu_gitClone', false); GM_notification({text: `已关闭 [添加 git clone 命令] 功能\\n（点击刷新网页后生效）`, timeout: 3500, onclick: function(){location.reload();}});} else {GM_setValue('menu_gitClone', true); GM_notification({text: `已开启 [添加 git clone 命令] 功能\\n（点击刷新网页后生效）`, timeout: 3500, onclick: function(){location.reload();}});}registerMenuCommand();});\n        menu_customUrl_ID = GM_registerMenuCommand(`#️⃣ 自定义加速源`, function () {\n            // 定义三种自定义加速源的键名和描述\n            const customKeys = [\n                { key: 'custom_raw_url', desc: 'Raw 加速源', placeholder: 'https://example.com/https://raw.githubusercontent.com' },\n                { key: 'custom_clone_url', desc: 'Git Clone 加速源', placeholder: 'https://example.com/https://github.com' },\n                { key: 'custom_download_url', desc: 'Release/Code(ZIP) 加速源', placeholder: 'https://example.com/https://github.com' }\n            ];\n            // 递归弹出输入框\n            function promptCustomUrl(index = 0) {\n                if (index >= customKeys.length) {GM_notification({ text: '自定义加速源设置已完成！\\n（点击刷新网页后生效）', timeout: 3500, onclick: function () { location.reload(); } });return;}\n                const { key, desc, placeholder } = customKeys[index];\n                let current = GM_getValue(key, '');\n                let input = prompt(`请输入自定义${desc}地址：\\n- 当前：\\n${current || '(未设置)'}\\n\\n- 示例：\\n${placeholder}\\n\\n- 留空为不设置\\n- 点击 [确定] 保存 并 继续设置下一个\\n- 点击 [取消] 不保存 并 终止后续设置`,current);\n                if (input !== null) {GM_setValue(key, input.trim());promptCustomUrl(index + 1);}// 如果用户点击 取消 按钮，则不再继续弹出\n            }\n            promptCustomUrl();\n        });\n        menu_feedBack_ID = GM_registerMenuCommand('💬 反馈 & 建议 [Github]', function () {window.GM_openInTab('https://github.com/XIU2/UserScript', {active: true,insert: true,setParent: true});window.GM_openInTab('https://greasyfork.org/zh-CN/scripts/412245/feedback', {active: true,insert: true,setParent: true});});\n    }\n\n    // 切换加速源\n    function menu_toggle_raw_fast() {\n        // 如果当前加速源位置大于等于加速源总数，则改为第一个加速源，反之递增下一个加速源\n        if (menu_rawFast >= raw_url.length - 1) {menu_rawFast = 0;} else {menu_rawFast += 1;}\n        GM_setValue('xiu2_menu_raw_fast', menu_rawFast);\n        delRawDownLink(); // 删除旧加速源\n        addRawDownLink(); // 添加新加速源\n        GM_notification({text: \"已切换加速源为：\" + raw_url[menu_rawFast][1], timeout: 3000}); // 提示消息\n        registerMenuCommand(); // 重新注册脚本菜单\n    };\n\n    colorMode(); // 适配白天/夜间主题模式\n    setTimeout(addRawFile, 1000); // Raw 加速\n    setTimeout(addRawDownLink, 2000); // Raw 单文件快捷下载（☁），延迟 2 秒执行，避免被 pjax 刷掉\n\n    // Tampermonkey v4.11 版本添加的 onurlchange 事件 grant，可以监控 pjax 等网页的 URL 变化\n    if (window.onurlchange === undefined) addUrlChangeEvent();\n    window.addEventListener('urlchange', function() {\n        colorMode(); // 适配白天/夜间主题模式\n        if (location.pathname.indexOf('/releases')) addRelease(); // Release 加速\n        setTimeout(addRawFile, 1000); // Raw 加速\n        setTimeout(addRawDownLink, 2000); // Raw 单文件快捷下载（☁），延迟 2 秒执行，避免被 pjax 刷掉\n        setTimeout(addRawDownLink_, 1000); // 在浏览器返回/前进时重新添加 Raw 下载链接（☁）鼠标事件\n    });\n\n\n    // Github Git Clone/SSH、Release、Download ZIP 改版为动态加载文件列表，因此需要监控网页元素变化\n    const callback = (mutationsList, observer) => {\n        if (location.pathname.indexOf('/releases') > -1) { // Release\n            for (const mutation of mutationsList) {\n                for (const target of mutation.addedNodes) {\n                    if (target.nodeType !== 1) return\n                    if (target.tagName === 'DIV' && target.dataset.viewComponent === 'true' && target.classList[0] === 'Box') addRelease();\n                }\n            }\n        } else if (document.querySelector('#repository-container-header:not([hidden])')) { // 项目首页\n            for (const mutation of mutationsList) {\n                for (const target of mutation.addedNodes) {\n                    if (target.nodeType !== 1) return\n                    if (target.tagName === 'DIV' && target.parentElement && target.parentElement.id === '__primerPortalRoot__') {\n                        addGitClone(target);\n                        addGitCloneSSH(target);\n                        addDownloadZIP(target);\n                        //setTimeout(()=>{addDownloadZIP(target)}, 300);\n                    } else if (target.tagName === 'DIV' && target.className.indexOf('LocalTab-module__') != -1) {\n                        if (target.querySelector('input[value^=\"https:\"]')) {\n                            addGitCloneClear('.XIU2-GCS'); addGitClone(target);\n                        } else if (target.querySelector('input[value^=\"git@\"]')) {\n                            addGitCloneClear('.XIU2-GC'); addGitCloneSSH(target);\n                        } else if (target.querySelector('input[value^=\"gh \"]')) {\n                            addGitCloneClear('.XIU2-GC, .XIU2-GCS');\n                        }\n                    }\n                }\n            }\n        }\n    };\n    const observer = new MutationObserver(callback);\n    observer.observe(document, { childList: true, subtree: true });\n\n\n    // download_url 随机几个美国加速源\n    function get_New_download_url() {\n        //return download_url_us // 全输出调试用\n        let minnum = 6; // 随机输出几个美国加速源\n        if (GM_getValue('custom_download_url')) {minnum = 5;} // 如果有自定义加速源，则只随机输出 5 个美国加速源\n        let shuffled = download_url_us.slice(0), i = download_url_us.length, min = i - minnum, temp, index;\n        while (i-- > min) {index = Math.floor((i + 1) * Math.random()); temp = shuffled[index]; shuffled[index] = shuffled[i]; shuffled[i] = temp;}\n        // 如果有自定义加速源，则将其添加到随机数组的开头\n        if (GM_getValue('custom_download_url')) {return [[GM_getValue('custom_download_url'), '自定义', '[由你自定义的 Release/Code(ZIP) 加速源地址]&#10;&#10;提示：点击浏览器右上角 Tampermonkey 扩展图标 - [ #️⃣ 自定义加速源 ]&#10;即可轮流设置 Raw、Git Clone、Release/Code(ZIP) 的自定义加速源地址（留空代表不设置）。']].concat(shuffled.slice(min));}\n        return shuffled.slice(min) // 随机洗牌 download_url_us 数组并取前几个，然后将其合并至 download_url 数组\n        // 为了缓解非美国公益节点压力（考虑到很多人无视前面随机的美国节点），干脆也将其加入随机\n    }\n\n    // Release\n    function addRelease() {\n        let html = document.querySelectorAll('.Box-footer'); if (html.length == 0 || location.pathname.indexOf('/releases') == -1) return\n        let divDisplay = 'margin-left: -90px;', new_download_url = get_New_download_url();\n        if (document.documentElement.clientWidth > 755) {divDisplay = 'margin-top: -3px;margin-left: 8px;display: inherit;';}; // 调整小屏幕时的样式\n        html[0].appendChild(document.createElement('style')).textContent = '@media (min-width: 768px) {.Box-footer li.Box-row>div>span.color-fg-muted {min-width: 27px !important;}}';\n        for (const current of html) {\n            if (current.querySelector('.XIU2-RS')) continue\n            current.querySelectorAll('li.Box-row a').forEach(function (_this) {\n                let href = _this.href.split(location.host),\n                    url = '', _html = `<div class=\"XIU2-RS\" style=\"${divDisplay}\">`;\n\n                for (let i=0;i<new_download_url.length;i++) {\n                    if (new_download_url[i][3] !== undefined && url.indexOf('/archive/') !== -1) {\n                        url = new_download_url[i][3] + href[1]\n                    } else {\n                        url = new_download_url[i][0] + href[1]\n                    }\n                    _html += `<a style=\"${style[0]}\" class=\"btn\" href=\"${url}\" target=\"_blank\" title=\"${new_download_url[i][2]}\\n\\n提示：如果不想要点击链接在前台打开空白新标签页（一闪而过影响体验），\\n可以 [鼠标中键] 或 [Ctrl+鼠标左键] 点击加速链接即可在后台打开新标签页！\" rel=\"noreferrer noopener nofollow\">${new_download_url[i][1]}</a>`\n                }\n                _this.parentElement.nextElementSibling.insertAdjacentHTML('beforeend', _html + '</div>');\n            });\n        }\n    }\n\n\n    // Download ZIP\n    function addDownloadZIP(target) {\n        const html = target.querySelector('ul[class^=prc-ActionList-ActionList-]>li:last-child');if (!html) return\n        let href = html.querySelector('a[href^=\"/\"][href$=\".zip\"]');if (!href || !href.getAttribute('href')) return\n        href = href.getAttribute('href');\n        //const href_script = document.querySelector('react-partial[partial-name=repos-overview]>script[data-target=\"react-partial.embeddedData\"]');if (!href_script) return\n        //const href = JSON.parse(href_script.textContent).props.initialPayload.overview.codeButton.local.platformInfo.zipballUrl\n        /*let href_slice = href_script.textContent.slice(href_script.textContent.indexOf('\"zipballUrl\":\"')+14),\n            href = href_slice.slice(0, href_slice.indexOf('\"')),*/\n        let url = '', _html = '', new_download_url = get_New_download_url();\n\n        // 克隆原 Download ZIP 元素，并定位 <a> <span> 标签\n        let html_clone = html.cloneNode(true),\n            html_clone_a = html_clone.querySelector('a[href$=\".zip\"]'),\n            html_clone_span = html_clone.querySelector('span[id]');\n\n        for (let i=0;i<new_download_url.length;i++) {\n            if (new_download_url[i][3] === '') continue\n\n            if (new_download_url[i][3] !== undefined) {\n                url = new_download_url[i][3] + href\n            } else {\n                url = new_download_url[i][0] + href\n            }\n            html_clone_a.href = url\n            html_clone_a.setAttribute('title', new_download_url[i][2].replaceAll('&#10;','\\n') + '\\n\\n提示：如果不想要点击链接在前台打开空白新标签页（一闪而过影响体验），\\n可以 [鼠标中键] 或 [Ctrl+鼠标左键] 点击加速链接即可在后台打开新标签页！');\n            html_clone_a.setAttribute('target', '_blank');\n            html_clone_a.setAttribute('rel', 'noreferrer noopener nofollow');\n            html_clone_span.textContent = 'Download ZIP ' + new_download_url[i][1]\n            _html += html_clone.outerHTML\n        }\n        html.insertAdjacentHTML('afterend', _html);\n    }\n\n    // Git Clone 切换清理\n    function addGitCloneClear(css) {\n        document.querySelectorAll(css).forEach((e)=>{e.remove()})\n    }\n\n    // Git Clone\n    function addGitClone(target) {\n        let html = target.querySelector('input[value^=\"https:\"]:not([title])');if (!html) return\n        let href_split = html.value.split(location.host)[1],\n            html_parent = '<div style=\"margin-top: 4px;\" class=\"XIU2-GC ' + html.parentElement.className + '\">',\n            url = '', _html = '', _gitClone = '';\n        if (html.nextElementSibling) html.nextElementSibling.hidden = true; // 隐藏右侧复制按钮（考虑到能直接点击复制，就不再重复实现复制按钮事件了）\n        if (html.parentElement.nextElementSibling.tagName === 'P'){\n            html.parentElement.nextElementSibling.textContent += ' (↑点击文字自动复制)'\n        }\n        if (GM_getValue('menu_gitClone')) {_gitClone='git clone '; html.value = _gitClone + html.value; html.setAttribute('value', html.value);}\n        // 克隆原 Git Clone 元素\n        let html_clone = html.cloneNode(true);\n        for (let i=0;i<clone_url.length;i++) {\n            if (clone_url[i][0] === 'https://gitclone.com') {\n                url = clone_url[i][0] + '/github.com' + href_split\n            } else {\n                url = clone_url[i][0] + href_split\n            }\n            html_clone.title = `${url}\\n\\n${clone_url[i][2].replaceAll('&#10;','\\n')}\\n\\n提示：点击文字可直接复制`\n            html_clone.setAttribute('value', _gitClone + url)\n            _html += html_parent + html_clone.outerHTML + '</div>'\n        }\n        html.parentElement.insertAdjacentHTML('afterend', _html);\n        if (html.parentElement.parentElement.className.indexOf('XIU2-GCP') === -1){\n            html.parentElement.parentElement.classList.add('XIU2-GCP')\n            html.parentElement.parentElement.addEventListener('click', (e)=>{if (e.target.tagName === 'INPUT') {GM_setClipboard(e.target.value);}})\n        }\n    }\n\n\n    // Git Clone SSH\n    function addGitCloneSSH(target) {\n        let html = target.querySelector('input[value^=\"git@\"]:not([title])');if (!html) return\n        let href_split = html.value.split(':')[1],\n            html_parent = '<div style=\"margin-top: 4px;\" class=\"XIU2-GCS ' + html.parentElement.className + '\">',\n            url = '', _html = '', _gitClone = '';\n        html.nextElementSibling.hidden = true; // 隐藏右侧复制按钮（考虑到能直接点击复制，就不再重复实现复制按钮事件了）\n        if (html.parentElement.nextElementSibling.tagName === 'P'){\n            html.parentElement.nextElementSibling.textContent += ' (↑点击自动复制)'\n        }\n        if (GM_getValue('menu_gitClone')) {_gitClone='git clone '; html.value = _gitClone + html.value; html.setAttribute('value', html.value);}\n        // 克隆原 Git Clone SSH 元素\n        let html_clone = html.cloneNode(true);\n        for (let i=0;i<clone_ssh_url.length;i++) {\n            url = clone_ssh_url[i][0] + href_split\n            html_clone.title = `${url}\\n\\n${clone_ssh_url[i][2].replaceAll('&#10;','\\n')}\\n\\n提示：点击文字可直接复制`\n            html_clone.setAttribute('value', _gitClone + url)\n            _html += html_parent + html_clone.outerHTML + '</div>'\n        }\n        html.parentElement.insertAdjacentHTML('afterend', _html);\n        if (html.parentElement.parentElement.className.indexOf('XIU2-GCP') === -1){\n            html.parentElement.parentElement.classList.add('XIU2-GCP')\n            html.parentElement.parentElement.addEventListener('click', (e)=>{if (e.target.tagName === 'INPUT') {GM_setClipboard(e.target.value);}})\n        }\n    }\n\n\n    // Raw\n    function addRawFile() {\n        let html = document.querySelector('a[data-testid=\"raw-button\"]');if (!html) return\n        let href = location.href.replace(`https://${location.host}`,''),\n            href2 = href.replace('/blob/','/'),\n            url = '', _html = '';\n\n        for (let i=1;i<raw_url.length;i++) {\n            if ((raw_url[i][0].indexOf('/gh') + 3 === raw_url[i][0].length) && raw_url[i][0].indexOf('cdn.staticaly.com') === -1) {\n                url = raw_url[i][0] + href.replace('/blob/','@');\n            } else {\n                url = raw_url[i][0] + href2;\n            }\n            _html += `<a href=\"${url}\" title=\"${raw_url[i][2]}\\n\\n提示：如果想要直接下载，可使用 [Alt + 左键] 点击加速按钮或 [右键 - 另存为...]\" target=\"_blank\" role=\"button\" rel=\"noreferrer noopener nofollow\" data-size=\"small\" data-variant=\"default\" class=\"${html.className} XIU2-RF\" style=\"border-radius: 0;margin-left: -1px;\">${raw_url[i][1].replace(/ \\d/,'')}</a>`\n        }\n        if (document.querySelector('.XIU2-RF')) document.querySelectorAll('.XIU2-RF').forEach((e)=>{e.remove()})\n        html.insertAdjacentHTML('afterend', _html);\n    }\n\n\n    // Raw 单文件快捷下载（☁）\n    function addRawDownLink() {\n        if (!GM_getValue('menu_rawDownLink')) return\n        // 如果不是项目文件页面，就返回，如果网页有 Raw 下载链接（☁）就返回\n        let files = document.querySelectorAll('div.Box-row svg.octicon.octicon-file, .react-directory-filename-column>svg.color-fg-muted');if(files.length === 0) return;if (location.pathname.indexOf('/tags') > -1) return\n        let files1 = document.querySelectorAll('a.fileDownLink');if(files1.length > 0) return;\n\n        // 鼠标指向则显示\n        var mouseOverHandler = function(evt) {\n            let elem = evt.currentTarget,\n                aElm_new = elem.querySelectorAll('.fileDownLink'),\n                aElm_now = elem.querySelectorAll('svg.octicon.octicon-file, svg.color-fg-muted');\n            aElm_new.forEach(el=>{el.style.cssText = 'display: inline'});\n            aElm_now.forEach(el=>{el.style.cssText = 'display: none'});\n        };\n\n        // 鼠标离开则隐藏\n        var mouseOutHandler = function(evt) {\n            let elem = evt.currentTarget,\n                aElm_new = elem.querySelectorAll('.fileDownLink'),\n                aElm_now = elem.querySelectorAll('svg.octicon.octicon-file, svg.color-fg-muted');\n            aElm_new.forEach(el=>{el.style.cssText = 'display: none'});\n            aElm_now.forEach(el=>{el.style.cssText = 'display: inline'});\n        };\n\n        // 循环添加\n        files.forEach(function(fileElm) {\n            let trElm = fileElm.parentNode.parentNode,\n                cntElm_a = trElm.querySelector('[role=\"rowheader\"] > .css-truncate.css-truncate-target.d-block.width-fit > a, .react-directory-truncate>a'),\n                Name = cntElm_a.innerText,\n                href = cntElm_a.getAttribute('href'),\n                href2 = href.replace('/blob/','/'), url = '';\n            if ((raw_url[menu_rawFast][0].indexOf('/gh') + 3 === raw_url[menu_rawFast][0].length) && raw_url[menu_rawFast][0].indexOf('cdn.staticaly.com') === -1) {\n                url = raw_url[menu_rawFast][0] + href.replace('/blob/','@');\n            } else {\n                url = raw_url[menu_rawFast][0] + href2;\n            }\n\n            fileElm.insertAdjacentHTML('afterend', `<a href=\"${url}\" download=\"${Name}\" target=\"_blank\" rel=\"noreferrer noopener nofollow\" class=\"fileDownLink\" style=\"display: none;\" title=\"「${raw_url[menu_rawFast][1]}」&#10;&#10;[Alt + 左键点击] 或 [右键 - 另存为...] 下载文件。&#10;注意：鼠标点击 [☁] 图标，而不是左侧的文件名！&#10;&#10;${raw_url[menu_rawFast][2]}&#10;&#10;提示：点击浏览器右上角 Tampermonkey 扩展图标 - [ ${raw_url[menu_rawFast][1]} ] 加速源 (☁) 即可切换。\">${svg[0]}</a>`);\n            // 绑定鼠标事件\n            trElm.onmouseover = mouseOverHandler;\n            trElm.onmouseout = mouseOutHandler;\n        });\n    }\n\n\n    // 移除 Raw 单文件快捷下载（☁）\n    function delRawDownLink() {\n        if (!GM_getValue('menu_rawDownLink')) return\n        let aElm = document.querySelectorAll('.fileDownLink');if(aElm.length === 0) return;\n        aElm.forEach(function(fileElm) {fileElm.remove();})\n    }\n\n\n    // 在浏览器返回/前进时重新添加 Raw 单文件快捷下载（☁）鼠标事件\n    function addRawDownLink_() {\n        if (!GM_getValue('menu_rawDownLink')) return\n        // 如果不是项目文件页面，就返回，如果网页没有 Raw 下载链接（☁）就返回\n        let files = document.querySelectorAll('div.Box-row svg.octicon.octicon-file, .react-directory-filename-column>svg.color-fg-muted');if(files.length === 0) return;\n        let files1 = document.querySelectorAll('a.fileDownLink');if(files1.length === 0) return;\n\n        // 鼠标指向则显示\n        var mouseOverHandler = function(evt) {\n            let elem = evt.currentTarget,\n                aElm_new = elem.querySelectorAll('.fileDownLink'),\n                aElm_now = elem.querySelectorAll('svg.octicon.octicon-file, svg.color-fg-muted');\n            aElm_new.forEach(el=>{el.style.cssText = 'display: inline'});\n            aElm_now.forEach(el=>{el.style.cssText = 'display: none'});\n        };\n\n        // 鼠标离开则隐藏\n        var mouseOutHandler = function(evt) {\n            let elem = evt.currentTarget,\n                aElm_new = elem.querySelectorAll('.fileDownLink'),\n                aElm_now = elem.querySelectorAll('svg.octicon.octicon-file, svg.color-fg-muted');\n            aElm_new.forEach(el=>{el.style.cssText = 'display: none'});\n            aElm_now.forEach(el=>{el.style.cssText = 'display: inline'});\n        };\n        // 循环添加\n        files.forEach(function(fileElm) {\n            let trElm = fileElm.parentNode.parentNode;\n            // 绑定鼠标事件\n            trElm.onmouseover = mouseOverHandler;\n            trElm.onmouseout = mouseOutHandler;\n        });\n    }\n\n\n    // 适配白天/夜间主题模式\n    function colorMode() {\n        let style_Add;\n        if (document.getElementById('XIU2-Github')) {style_Add = document.getElementById('XIU2-Github')} else {style_Add = document.createElement('style'); style_Add.id = 'XIU2-Github'; style_Add.type = 'text/css';}\n        let backColor = '#ffffff', fontColor = '#888888';\n\n        if (document.lastElementChild.dataset.colorMode === 'dark') { // 如果是夜间模式\n            if (document.lastElementChild.dataset.darkTheme === 'dark_dimmed') {\n                backColor = '#272e37'; fontColor = '#768390';\n            } else {\n                backColor = '#161a21'; fontColor = '#97a0aa';\n            }\n        } else if (document.lastElementChild.dataset.colorMode === 'auto') { // 如果是自动模式\n            if (window.matchMedia('(prefers-color-scheme: dark)').matches || document.lastElementChild.dataset.lightTheme.indexOf('dark') > -1) { // 如果浏览器是夜间模式 或 白天模式是 dark 的情况\n                if (document.lastElementChild.dataset.darkTheme === 'dark_dimmed') {\n                    backColor = '#272e37'; fontColor = '#768390';\n                } else if (document.lastElementChild.dataset.darkTheme.indexOf('light') == -1) { // 排除夜间模式是 light 的情况\n                    backColor = '#161a21'; fontColor = '#97a0aa';\n                }\n            }\n        }\n\n        document.lastElementChild.appendChild(style_Add).textContent = `.XIU2-RS a {--XIU2-background-color: ${backColor}; --XIU2-font-color: ${fontColor};}`;\n    }\n\n\n    // 自定义 urlchange 事件（用来监听 URL 变化），针对非 Tampermonkey 油猴管理器\n    function addUrlChangeEvent() {\n        history.pushState = ( f => function pushState(){\n            var ret = f.apply(this, arguments);\n            window.dispatchEvent(new Event('pushstate'));\n            window.dispatchEvent(new Event('urlchange'));\n            return ret;\n        })(history.pushState);\n\n        history.replaceState = ( f => function replaceState(){\n            var ret = f.apply(this, arguments);\n            window.dispatchEvent(new Event('replacestate'));\n            window.dispatchEvent(new Event('urlchange'));\n            return ret;\n        })(history.replaceState);\n\n        window.addEventListener('popstate',()=>{ // 点击浏览器的前进/后退按钮时触发 urlchange 事件\n            window.dispatchEvent(new Event('urlchange'))\n        });\n    }\n})();"
  },
  {
    "path": "GoogleTranslate-Beautification.user.js",
    "content": "// ==UserScript==\n// @name         Google 翻译美化\n// @version      1.0.1\n// @author       X.I.U\n// @description  精简多余内容、修复翻译结果溢出屏幕问题\n// @match        *://translate.google.cn/*\n// @match        *://translate.google.com/*\n// @icon         data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAFHklEQVR4nMWWW0ycRRTHfzPz7S4ssIWyFOiFy1ZKCyKJFG2tqZamtDHWahqNsTExadL6ZmITX3zhoS+NT1ofaqPx1fii9dKQWqtpoya92ZuUAgWhWCj3BXYpe5nxYdllv90FYiDxbCaZ2Znv/P/nNnPgfxYBcOzz8fLuSeuspWQNJrZh5gaAMfMfxOfahD45c6zgveUSkADd0/JHS8maZODkkQBPGjoUPdrS8ou1IgQsYdXCvHUmw8FUItKV7bopKxtXhIAx6eAJwExs5iTicB9dGQKkuztZMuUCgHSoQ0eOXHUsm0Aq2GLW2/ZElvXQm7dzOQSsjDgmw3QBMmXlhedv3GyncLUHy5KJg8YYTIrL4utwONw5ORlpqq+v6rcWUg7QUKHZW6upKNQA9I5Jzt6SXP173nH909kMjofIcs3g8biRUixlNE6ns6qgQJ0DatLKKM7lzcYIzbUaAwz4BRjweTXv7NB0DTkYD4o5q+DukBtvbhCnU+F2Zy1JAEAptQUWCEFDuaa5VjMyLTj5s0XvWAys0msIR2AiCRygYzSP7eUBAoEgSkmczqXzMh4OK1lRXJprowCc+lUlwDHQMyziU5v0B3LwBw1ZLk0wGMSYLFwu15IkEgRSpbIQxoOCrmGZAP/0UMh25t6g5OPz1hwZwd2RXLyeGYyB2dlZ/hkaIxgKUesrs1mckUDqlgGEsG8MT8WstyRsWG3wZBlbhdwbyaGhdAKEweGQ3OrqpvfRKFUb1toISCmwlErxQAqDnhHYVGyoKjZ0PhIYoOW7WFzr12veb44w4J/3DkDfVA6nvr2IZYWQyiBEbP/4l18jpYrdthi2bt7IyzsaUgikSOsdxabiCO++GOHkeUXPqMQYWFdgeHt7LD8udcoEuAEQiieqX6CueBynS2I5LAQxIt//dp3qivXUVG4gP8+9dAiu9UrO3la8VBel5UCEQT+AoHiVQQCtdyTtA+kJORJdC8KPUhYb15UgBPQ8HGJmdpbGzT7KStfYwpHmgeQ8+eqyomNQsK8uis8LCLg/JPmpTfJ7l0wDN8bQO5lLv2OKG13tHD7QRFG+hwvXb1NRUkRRfh7RaBQp7bd/xjJMeKJPcq0v6YMMV3SyNVEEIq+a/Jw+frh0nfK1XsYmpnl1/zMAhEIhHA4HSqn5pIwrW6wRSf7D3ikZ2xGAjjEPexrrGZmY5EpbB01b6/DmexLnIpEI0Wg0sU57DRdiktYdzYGnvp69/hy6B/2EI1EQ8GBoFK21jazWOkFC2rSkhCJjW5b0yqV5CYiguNA2y9PVPl7f9TydDx5y5uIVtLYr11rPE1gqBHHQhay2lSOQXVjHttpNlBV7ObhrG139g3xz8XKCRLI3Yh7Qob9sxiQBpsY5k9X2vAC/LiHwWBMOR6goWcPBpu3c7x/gdndvmk4LQM8E9mlH+JxSri2kSMYCsVVDEsG5aRhoH85mW24YgMrSIg7v381qTx7GGISY7xmW7h4WkQ+PX/zgjz8nT9jK2EB2tuHIW8VUlOWS7VJ2QCGQUiKEwOfzifQq+A8yPDX4mZASqeaGlCiH4tCBQtaVuFAyBrhYe7YsAqdPvOGvrFCDgvnfa825VPncOB0KKRbvDZdNAKC00P1RXOnOZ7NofCoPhyWRUiBEeh+Qul42gUfjj78wxvBktZPdz3mQMvbmywyak8EDgdm2FSFw+sQe/9Z6Og/uXYVUBinBGJ1wvdY6cfPF59PTM+2trbdeWS72isi//t1/7RwSS+MAAAAASUVORK5CYII=\n// @grant        GM_registerMenuCommand\n// @grant        GM_unregisterMenuCommand\n// @grant        GM_openInTab\n// @grant        GM_getValue\n// @grant        GM_setValue\n// @grant        GM_notification\n// @license      GPL-3.0 License\n// @run-at       document-start\n// @namespace    https://greasyfork.org/scripts/413721\n// @supportURL   https://github.com/XIU2/UserScript\n// @homepageURL  https://github.com/XIU2/UserScript\n// ==/UserScript==\n\n'use strict';\n(function() {\n    var menu_streamline = GM_getValue('xiu2_menu_streamline');\n    var menu_streamline_ID, menu_feedBack_ID;\n    if (menu_streamline == null){menu_streamline = true; GM_setValue('xiu2_menu_streamline', menu_streamline)};\n    registerMenuCommand();\n    addStyle();\n\n    // 注册脚本菜单\n    function registerMenuCommand() {\n        var menu_streamline_;\n        if (menu_feedBack_ID){ // 如果反馈菜单ID不是 null，则删除所有脚本菜单\n            GM_unregisterMenuCommand(menu_streamline_ID);\n            GM_unregisterMenuCommand(menu_feedBack_ID);\n            menu_streamline = GM_getValue('xiu2_menu_streamline');\n        }\n\n        if (menu_streamline){menu_streamline_ = \"√\";}else{menu_streamline_ = \"×\";}\n\n        menu_streamline_ID = GM_registerMenuCommand(`[ ${menu_streamline_} ] 精简美化`, function(){menu_switch(menu_streamline,'xiu2_menu_streamline','精简美化')});\n        menu_feedBack_ID = GM_registerMenuCommand('反馈 & 建议', function () {window.GM_openInTab('https://github.com/XIU2/UserScript#xiu2userscript', {active: true,insert: true,setParent: true});});\n    }\n\n    // 菜单开关\n    function menu_switch(menu_status, Name, Tips) {\n        if (menu_status){\n            GM_setValue(`${Name}`, false);\n            GM_notification(`已关闭 [${Tips}] 功能\\n（刷新网页后生效）`);\n        }else{\n            GM_setValue(`${Name}`, true);\n            GM_notification(`已开启 [${Tips}] 功能\\n（刷新网页后生效）`);\n        }\n        registerMenuCommand(); // 重新注册脚本菜单\n    };\n\n\n    // 添加样式\n    function addStyle() {\n        var style,\n            style_1 = `\n/* 翻译结果的选择列表宽度\n.alt-menu {\n    max-width: 35% !important;\n} */\n/* 翻译结果选择时显示翻译结果的翻译结果\n.goog-menu.round-trip-content {\n    white-space: normal !important;\n    word-break: break-all !important;\n} */`,\n            style_2 = `\n/* 清理多余内容\n.rQKk7.zJmlgc {\n\tdisplay: none !important;\n} */`,\n            style_Add = document.createElement('style');\n        if (menu_streamline) {\n            style = style_1 + style_2;\n        }else{\n            style = style_1;\n        }\n        style_Add.innerHTML = style;\n        document.head.appendChild(style_Add);\n    }\n})();"
  },
  {
    "path": "HTML5Volume.user.js",
    "content": "// ==UserScript==\n// @name         HTML5 Video Audio Default Volume\n// @name:zh-CN   HTML5 视频音频默认音量\n// @name:zh-TW   HTML5 視訊音訊預設音量\n// @name:ru      Громкость аудио-видео в формате HTML5 по умолчанию\n// @version      1.0.5\n// @author       X.I.U\n// @description  Avoid being startled by some video/audio with default 100% volume! And support each website to remember the volume separately...\n// @description:zh-CN  避免被一些默认 100% 音量的视频/音频吓一跳（或社死）！且支持各网站分别记住音量...\n// @description:zh-TW  避免被一些預設 100% 音量的視訊/音訊嚇一跳（或社死）！且支援各網站分別記住音量...\n// @description:ru  Больше не пугайтесь при просмотре видео или прослушивании аудио со стандартной громкостью 100%! Так ещё каждый веб-сайт запоминает громкость отдельно...\n// @match        *://*/*\n// @icon         data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAALfElEQVRYhX2Xe3Bd1XXGf3vvc859X+nq6nUlW5Yly7JlI2xsYzAwtnk4ATpAxkNTHm0mnaTT/gHTTvrIBDLTpp1JUoZppqHQls5AKTR2INOWJJQSXF4x2BhsJCRZ8kuWZckPSVf3/Trn7N3RVTFpQrNn1l97n7O/vda31reWMKMPcmUJA9U8vrwHGdqCHn4HPzePaIxhVSoYbYRXrn7BeMVbCUduF6kVUXHwvQP+6amDaqDnoIompmQytaBnTmB8H5lowrjgFss48SBeI/hUEEZeudLi1ywhJEIJdL6Q8rzal/1a5SGC4XZrYBvWwEZobMdLdH6RH+z/Io1taEeh52fe8tOZbysl/ouWFvANYP7fSz4DgAEBBIL4xiS8ubmnVcTZK68aRK29Dtm8dgnZJydRW+/E2nrnp19nz+7U77+60zt0qMz07J/KxuQTwrIw4rMBCDP6wC+FIIcO34eudDdXf/7jD52Opi772lugY3AZr++hp06gz48j+waRqTWYmVHcS+chEMFeuw1hBzBzY7g/fQE9fmqBYPzBQKrpVa/R4OkCAnXlSvXnX9sIllk220BE4Z8OdHoj54YCK6Od1i2/iUmuRyDRk6NUn3+M0pv/hnf0AE40jEjEqP3oe6Rf/CGOWUTNjFKby2MP7EBtugURFWFxfOhB4+o4yfhrGAdZsxHaqZt6dNce9KXYFSPfGWS68JFqTXSqO7+MCaTqETGTwxSeeoRCOoPT2YUIhFC2jbQF/uwUatU6rPbVUM5T+OfHUO3dWKv6kSsGUIOD6PEPr+fswnanpecFZYVQhFAyjPS9Tj4xw2rcU+pJApEutWsvRjaBW8NUShilkE1JIqlUPfi6VMLNFTBVr+7KYKqJ8uEjlM+dJrR5K0L7eB+9hTd2CFrWYt33h0jH3O5Nj37TBGtgZUBkUN/6q4dQ7UmsnlW450//gU5PPRq460uQXAu+j//i99A/+UdUMoXqbMNkz2OnUkixlF4u9spe/HMTULyEaA7jXkoT2fEbQIXi838DJ4cRDXHkEjc2b0MPHdptZubGpBUbM0UfKQpBRDmKWRSD3tTMk87gddA2WGe4+dkzMD0CyQ5qP/4XVDCAvfkaLMvHamzEClpQzGDF46iuJOH1CaKr2tDZRfzhQ0Ru24NYsYrCM4/jDb+FiHdi3XU/0s3vr7WsGKxcfyPSy+bxi0UqJ8f/IriiE2vrnuWsLefQk8NoO4AMBBB9/XjDI6hQCjdTxq9WCaQ6ULaDFrIeKr3oIlv70Olz2K1xlAVaSUQojD786nKi9e5A3LBHMHn0W+LUUaS1FI9q+iZZWLhHdq/FxFbWSSfsIDIQwVw4g/GK2OuuhloNMzaCaF+DNBJtQfX8LFYigElX0OkQtZKHVy3jqwDlqWncCzPI3nU4t+2FWrH+OLHzHpRl3109memTOhqDi9NfkefHEKvWLTO+VKD68Qf4G27CueFWhJ/Df+0lVFcXJOJYnobm1ZjsJUxuFjyDjK/GNK2gND4ESuDPXcCOSaI7thPqX0ft8OtUn/oTKOQgkET39KJU4RbpZXOtNRW717p+FyRSdYT+v36H4u/fQXbfc3iRDkT3FsTGjWAWEU0OZKfAU9CyEdXVD2lQPduplmo4jkBEbMzK1VgDu5EVTe3gm1RHx6Bcxpz6YLkEO0lMYeFGi6z7eVMqhkT/ZrCb0LNT+NMTRH/nt/BLRdy3X8Nv68Lu6cZEHURjE6K3hirYeLRhDWyA4jxzH40RXJwkeuM29MpN+JcziEsz+Avz6GgcW1pYbUlEQCyHwYpSyxS7rGo+v8man4ZMATrAHf+QSt7FTkWR4QbsjlbIX8IMH0VuuAqj4piGAbhmEPPzI/injnNxMUPuwOtseOIxKKTJ7/8BTBxDdXcjO9sJdTeg01VqH4wg3CDB9bshHMKORbGolVOmeRW09dVdUxkbp3ruNM7GXnS1hK5OYSoSbBDZBcxCBtF3DcUzk6hkhGA0RmtHKx1rOkE04lbzWC1tqMRt1CZHUafPIs8H6/JsNTcgN+9YFq1qgbBUFUvnK9qrVghXCvWN8MBmivueJDtylqaeBKWJaXR4JZEtNyBWrkGt6AJboCZO4J49Rc64xGIhcgtZgm6egKhgtUQQto17WeHOLqCNj5Vowbr7q4j+Lcs1JhhEphcXLTebd0jPwpkx6Lwa++bbCR95ALecp5a6BrvrJoLdHajmMOTnKb3+BrVMntjARpzeFbz8jcfpa22gGm+kMJlm95Zu9M9+iI5G0G3d6EgIUSnjzs/gv/Icgd6rqcvz0IeYWnXc8pEtYnEe8gtXNL7xz74LehHSE3DqNP7EIdx3p5DSh7JNJePiBE/gN3Uz8NWHae5sRJYXqKQvU+raQPg7L6L3/QNMHcfp6EREGjC5LDp9GaOs5VQ/NQI93YctOxFPlwniDh/C3n47JHvrQPTBl3DHjiIDQUQ4jGhOYcqaQFuE0Nl53OnLRHfsZV33KsTxd6GlHeaP477zMl5uAWv7dkyLg6kZREsb+vgCcvPOuoaYuWNQWERs3jAuQ6nooXK6TH566cXnrjQK7uwFaoseWA3oJf2WEhEJUjm/gMgXCfdvQlFFv/R3uCND6FIRv7MfMnOIiaPoI/8NEb2kWAhfoLbdjLr2jmUv/8f+pVbkHRGNnZHum2/udxxtCn4j/vgEIjNTD4O9upfIprUYoxBKo9Z14jumTq7YYD9WayvuR++hs1lkshmha4iuNeDYiIAFMoCevIi+cJHaa29gmvsRTUn0R29g9u1D7bxxv+jrRnpD56cCkdjfV9NzpA+8A5VlLojWAczlGVTAYKXimIU8MlsjtKEXgiF0aRGdm8cEYnXm+O+/gdAGuWsP3shhTHoOEYqCCEF2DsrF5f+e/xiikUldrT6l3z+GevSaTahaZdRY6uFqxRXR1sRyzU/21Gu6OTOMfzmPd6kI8TgiX8B4imouj1QCKmVUNITJ59AnR1F77kH4ZaRnQFroMyeRW3egdt6DwIX391Gshv+4LK2jtcuLqK9t7ALjZXzH1uVM/mb/7BTRnjZEex+idQ2EAnjjR/BdF1PIoV2Bae/F/fh9dL5IYE0XUmpMNo+ev4AINSJWb0UPHa63Z7SvRN3/CHJpFHj2G4iZzAuBbTu+GWpIEGxrQ/3RnlvxG5M4kYa3Lc2u4uyFblnIE+xfAbF2RMtqZGsn/uTYUgHH+dz9eFMnqYx8gO+CEwkjhcDPF/DLHurSaeTm3RiWMsDHeuDrSFvBv3+bi08+N1Vwuj/vZWtu+dwclZlFrESoeZmZysJXoTsCjnVk8dDQBuN+n8RDD9fbcdG7leBX1iOkQjhBOHmQfKGAHW3CS6fR+QClmYuYMyPY265DtPVgtfctiw4V/GcfYfGNQzj3/u4DqlormUoZEQwuc0I//eSnY4G0wPJjmdGhw+mh0fWxNZ0037cXccPd1MXgk+GjNE/tR3+Le+YEyg5TnT6LXlwgcu1u7C99HZlsv3K2+vjvkTs2RvDe3747tm7Dy1SKvzSYPP/MLwxFAkIKEzEye2zswOXX395lJyK0fOFzRHfuglQfqPin59Nn0RNDuJk09vprkd0brmx5H7xCbfgQbrZ83OkfvN1pj0+ZmkBYNhjzCwCeffr/AsBDJyU6kqBwbPzRuTcP/GXV82lYlaJpfQ+BjVdhXX0tNKTAjvzKqKXPTeC++1NKY0c9kVz1SGzb9X8tjIdfzSFCDfUw/noA0scPuxBrwcvmmH3rQIvMm3/y0XdJS4JfIpiIUG9g+wcg6KDnZpGZNDQ0Ii5cSAtlPRHYct13axWvJNwadiiAli4iEP8VAJ89HQtR129TLiG1nos0Nt8dSOi12qi9lRq3utVqT/lirql24hW3vLBQi3d3XUqu73+PZOonBNR/WnbYSMeGTO5/Xf6ZtwDwPwtFRezQVs+sAAAAAElFTkSuQmCC\n// @grant        GM_registerMenuCommand\n// @grant        GM_unregisterMenuCommand\n// @grant        GM_openInTab\n// @grant        GM_getValue\n// @grant        GM_setValue\n// @grant        GM_notification\n// @license      GPL-3.0 License\n// @run-at       document-start\n// @namespace    https://github.com/XIU2/UserScript\n// ==/UserScript==\n\n(function() {\n    'use strict';\n    var menu_ID = [];\n    registerMenuCommand(); // 注册脚本菜单\n    function registerMenuCommand() {\n        if (self != top) return\n        // 如果菜单ID数组多于菜单数组，说明不是首次添加菜单，需要卸载所有脚本菜单\n        if (menu_ID.length > 0){for (let i=0;i<menu_ID.length;i++){GM_unregisterMenuCommand(menu_ID[i]);}}\n        menu_ID[0] = GM_registerMenuCommand('#️⃣ 修改全局默认音量 [ ' + GM_getValue('menu_defaultVolume', 30) + '% ]', function(){customDefaultVolume()});\n        let nowVolume = ' (跟随全局)'\n        if (localStorage.getItem('html5_xiu_currentVolume')) nowVolume = ' [ ' + parseInt(localStorage.getItem('html5_xiu_currentVolume')) + '% ]'\n        menu_ID[1] = GM_registerMenuCommand('🔁 忘记当前网站音量' + nowVolume, function(){resetCurrentVolume()});\n        // 强制当前网站使用全局音量（针对部分不支持调节音量的网站）\n        if (menu_forcedToEnable('check')) { // 当前网站是否已存在强制列表中\n            menu_ID[2] = GM_registerMenuCommand('✅ 已强制当前网站使用全局音量 (针对不支持调节音量的)', function(){menu_forcedToEnable('del')});\n            menu_ID[4] = GM_registerMenuCommand('#️⃣ 修改当前网站默认音量 (针对不支持调节音量的)', function(){customCurrentDefaultVolume()});\n        } else {\n            menu_ID[2] = GM_registerMenuCommand('❌ 未强制当前网站使用全局音量 (针对不支持调节音量的)', function(){menu_forcedToEnable('add')});\n        }\n        menu_ID[3] = GM_registerMenuCommand('💬 反馈 & 建议', function () {GM_openInTab('https://github.com/XIU2/UserScript#xiu2userscript', {active: true,insert: true,setParent: true}); GM_openInTab('https://greasyfork.org/zh-CN/scripts/438400/feedback', {active: true,insert: true,setParent: true});});\n    }\n\n    insPage();\n    currentPage();\n\n    // 强制当前网站使用全局音量（针对部分不支持调节音量的网站）\n    function menu_forcedToEnable(type) {\n        switch(type) {\n            case 'check':\n                if(check()) return true\n                return false\n                break;\n            case 'add':\n                add();\n                break;\n            case 'del':\n                del();\n                break;\n        }\n\n        function check() { // 存在返回真，不存在返回假\n            let websiteList = GM_getValue('menu_forcedToEnable',[]); // 读取网站列表\n            if (websiteList.indexOf(location.host) === -1) return false // 不存在返回假\n            return true\n        }\n\n        function add() {\n            if (check()) return\n            let websiteList = GM_getValue('menu_forcedToEnable',[]); // 读取网站列表\n            websiteList.push(location.host); // 追加网站域名\n            GM_setValue('menu_forcedToEnable', websiteList); // 写入配置\n            location.reload(); // 刷新网页\n        }\n\n        function del() {\n            if (!check()) return\n            let websiteList = GM_getValue('menu_forcedToEnable',[]), // 读取网站列表\n            index = websiteList.indexOf(location.host);\n            websiteList.splice(index, 1); // 删除网站域名\n            GM_setValue('menu_forcedToEnable', websiteList); // 写入配置\n            location.reload(); // 刷新网页\n        }\n    }\n\n\n    // 网页本身的 Video Audio 标签\n    function currentPage() {\n        document.querySelectorAll('video, audio').forEach(function(_this){\n            //console.log('网页本身：', _this)\n            isFirstEvent(_this)\n        })\n    }\n\n\n    // 后续动态插入的 Video Audio 标签（插入事件）\n    function insPage() {\n        const callback = (mutationsList, observer) => {\n            for (const mutation of mutationsList) {\n                for (const target of mutation.addedNodes) {\n                    if (target.nodeType != 1) break\n                    //console.log('所有插入：', target)\n                    if (target.tagName === 'VIDEO' || target.tagName === 'AUDIO') {\n                        //console.log('后续插入1：', target)\n                        isFirstEvent(target)\n                    } else if (target.tagName === 'DIV') {\n                        target.querySelectorAll('video, audio').forEach(function(_this){\n                            //console.log('后续插入2：', _this)\n                            isFirstEvent(_this)\n                        })\n                    }\n                }\n            }\n        };\n        const observer = new MutationObserver(callback);\n        observer.observe(document, { childList: true, subtree: true });\n    }\n\n\n    // 音量变化事件（记住音量）\n    function volumeChangeEvent(event) {\n        if (event.target.muted) { // 判断是否静音\n            localStorage.setItem('html5_xiu_currentVolume', 0)\n            registerMenuCommand(); // 修改脚本菜单\n        } else if (localStorage.getItem('html5_xiu_currentVolume') || ((event.target.volume * 100) !== GM_getValue('menu_defaultVolume', 30))) {\n            localStorage.setItem('html5_xiu_currentVolume', event.target.volume * 100)\n            registerMenuCommand(); // 修改脚本菜单\n        }\n    }\n\n\n    // 判断该视频/音频元素是否已监听事件\n    function isFirstEvent(target) {\n        if (!menu_forcedToEnable('check')) { // 如果未强制当前网站使用全局音量（针对部分不支持调节音量的网站）\n            if (!target.controls) return; // 如果视频/音频已经有了自己的控件（即没有使用 HTML5 默认的控件），则退出\n        }\n        modifyVolume(target);\n        if (!menu_forcedToEnable('check')) { // 如果未强制当前网站使用全局音量（针对部分不支持调节音量的网站），毕竟不支持音量调节的网站监听音量变化是没有意义的，反而可能会被网站默认静音什么的搞乱\n            // 如果没有该属性，则代表是还未监听事件\n            if (target.dataset.html5VolumeXiu != 'true') {\n                target.dataset.html5VolumeXiu = 'true'\n                target.addEventListener('volumechange', volumeChangeEvent);\n            }\n        }\n    }\n\n\n    // 修改视频音量\n    function modifyVolume(_this) {\n        let nowVolume = parseFloat(localStorage.getItem('html5_xiu_currentVolume')); // 先看看 localStorage 有没有（即用户是否手动调整过音量）\n        if (!nowVolume && nowVolume !== 0) nowVolume = GM_getValue('menu_defaultVolume', 30); // 如果 localStorage 没有，那就从脚本配置中获取\n        if (!((typeof nowVolume === 'number') && nowVolume <= 100)) nowVolume = 30; // 如果获取到的音量数值不是数字，或大于 100，则重置为 30\n        //console.log(_this, _this.volume, nowVolume, nowVolume / 100)\n        _this.volume = nowVolume / 100; // 设置音量为 0.00~1.00 范围\n        //console.log(_this.volume)\n    }\n\n\n    // 修改全局默认音量\n    function customDefaultVolume() {\n        let newValue = parseFloat(prompt('修改全局默认音量，不影响各网站记住的音量，修改后当前网页立即生效~\\n范围：0~100 (即 0%~100%，不需要加 % 百分号)\\n默认：30', GM_getValue('menu_defaultVolume', 30)));\n        if (!Number.isNaN(newValue) && newValue >= 0 && newValue <= 100) {GM_setValue('menu_defaultVolume', newValue);}\n        currentPage(); // 重置当前网页的音量\n        registerMenuCommand(); // 重新注册菜单（刷新菜单上的音量值）\n    }\n\n\n    // 修改当前网站默认音量 (针对不支持调节音量的网站)\n    function customCurrentDefaultVolume() {\n        let newValue = parseFloat(prompt('修改当前网站默认音量 (针对不支持调节音量的网站)，修改后立即生效~\\n范围：0~100 (即 0%~100%，不需要加 % 百分号)\\n默认：全局默认音量', localStorage.getItem('html5_xiu_currentVolume') || GM_getValue('menu_defaultVolume', 30)));\n        if (!Number.isNaN(newValue) && newValue >= 0 && newValue <= 100) {localStorage.setItem('html5_xiu_currentVolume', newValue);}\n        currentPage(); // 重置当前网页的音量\n        registerMenuCommand(); // 重新注册菜单（刷新菜单上的音量值）\n    }\n\n\n    // 忘记当前网站音量\n    function resetCurrentVolume() {\n        if (localStorage.getItem('html5_xiu_currentVolume')) localStorage.removeItem('html5_xiu_currentVolume') // 清理 localStorage\n        currentPage(); // 重置当前网页的音量\n        registerMenuCommand(); // 重新注册菜单（刷新菜单上的音量值）\n    }\n})();\n"
  },
  {
    "path": "Hostloc-Enhanced.user.js",
    "content": "// ==UserScript==\n// @name         全球主机交流论坛增强\n// @version      1.5.2\n// @author       X.I.U\n// @description  自动签到（访问空间 +22 积分）、屏蔽用户（黑名单）、屏蔽关键词（帖子标题）、回帖小尾巴、自动无缝翻页、快捷回到顶部（右键网页两侧空白处）、收起预览帖子（左键网页两侧空白处）、屏蔽投票贴、快速添加链接、屏蔽阅读权限 255 帖子、预览帖子快速回复带签名、显示是否在线、显示帖子内隐藏回复\n// @match        *://hostloc.com/*\n// @match        *://91ai.net/*\n// @icon         data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAABYUlEQVR4nM2VMUrFQBCG/xUbUz20EGwkIAjewMYreAabtLlKcgLP4BVsPEHEB0J4TeAJPuy0i42TsJP8byfgY/fvNplM9v92Ztb1fd9jgZxzpjhr2qMlPz+EjvUDcSgOtOO6rk2J9XeMSHQCTtdAyHHbtot+kOc5AKAsSwBTEtEJDDUgzpnjqqpmExRF4a2zLPPWTdPs3UA6BJjE+dfmZfb96vLWWwsRTYIpHQKs7wfnPx97E70+PwIAbu4eAExrgyk6AToHrM61uu0OwEhCK7k5MCEwvNC1sH6aTbC6vvfWUgtaQiQ5AvQ2/P58956fnF3NJrDGMaVHICTd76E4EYtPjwCbiOLo4vwUwNgV+sx1nMwFpugEgnNAJmK3eQMwOtMSp9o5639RdAKLN9Btd8FzPegG/lt0Duhu0LejvgOkK6xnL4pOgHbBJPCPBLvtRFbnougEzHcBm5AszqroBH4BBkemS0VRyL4AAAAASUVORK5CYII=\n// @grant        GM_xmlhttpRequest\n// @grant        GM_registerMenuCommand\n// @grant        GM_unregisterMenuCommand\n// @grant        GM_openInTab\n// @grant        GM_getValue\n// @grant        GM_setValue\n// @grant        GM_notification\n// @grant        unsafeWindow\n// @license      GPL-3.0 License\n// @run-at       document-end\n// @namespace    https://greasyfork.org/scripts/414005\n// @supportURL   https://github.com/XIU2/UserScript\n// @homepageURL  https://github.com/XIU2/UserScript\n// ==/UserScript==\n(function () {\n    'use strict';\n    var menu_ALL = [\n        ['menu_autoSignIn', '自动签到（22 积分）', '自动签到', true],\n        ['menu_reAutoSignIn', '重新签到', '重新签到', ''],\n        ['menu_customBlockUsers', '屏蔽用户（黑名单）', '屏蔽用户', []],\n        ['menu_customBlockKeywords', '屏蔽关键词（帖子标题）', '屏蔽关键词', []],\n        ['menu_customLittleTail', '回帖小尾巴', '回帖小尾巴', ''],\n        ['menu_pageLoading', '自动无缝翻页（总开关）', '自动无缝翻页', true],\n        ['menu_thread_pageLoading', '帖子内自动翻页', '帖子内自动翻页', true],\n        ['menu_showhide', '显示帖内隐藏回复', '显示帖内隐藏回复', true],\n        ['menu_delate255', '屏蔽阅读权限 255 帖子', '屏蔽阅读权限 255 帖子', true],\n        ['menu_delatePolls', '屏蔽投票帖子', '屏蔽投票帖子', false]\n    ], menu_ID = [];\n    for (let i = 0; i < menu_ALL.length; i++) { // 如果读取到的值为 null 就写入默认值\n        if (GM_getValue(menu_ALL[i][0]) == null) { GM_setValue(menu_ALL[i][0], menu_ALL[i][3]) };\n    }\n    registerMenuCommand();\n    // 注册脚本菜单\n    function registerMenuCommand() {\n        if (menu_ID.length > menu_ALL.length) { // 如果菜单ID数组多于菜单数组，说明不是首次添加菜单，需要卸载所有脚本菜单\n            for (let i = 0; i < menu_ID.length; i++) {\n                GM_unregisterMenuCommand(menu_ID[i]);\n            }\n        }\n        for (let i = 0; i < menu_ALL.length; i++) { // 循环注册脚本菜单\n            menu_ALL[i][3] = GM_getValue(menu_ALL[i][0]);\n            if (menu_ALL[i][0] === 'menu_reAutoSignIn') {\n                menu_ID[i] = GM_registerMenuCommand(`#️⃣ ${menu_ALL[i][1]}`, function () { reAutoSignIn() });\n            } else if (menu_ALL[i][0] === 'menu_customBlockUsers') {\n                menu_ID[i] = GM_registerMenuCommand(`#️⃣ ${menu_ALL[i][1]}`, function () { customBlockUsers() });\n            } else if (menu_ALL[i][0] === 'menu_customBlockKeywords') {\n                menu_ID[i] = GM_registerMenuCommand(`#️⃣ ${menu_ALL[i][1]}`, function () { customBlockKeywords() });\n            } else if (menu_ALL[i][0] === 'menu_customLittleTail') {\n                if (menu_value(menu_ALL[i][0]).length === 0) { GM_setValue(menu_ALL[i][0], '') } // 修改旧版类型\n                menu_ID[i] = GM_registerMenuCommand(`#️⃣ ${menu_ALL[i][1]}`, function () { customLittleTail() });\n            } else {\n                menu_ID[i] = GM_registerMenuCommand(`${menu_ALL[i][3] ? '✅' : '❌'} ${menu_ALL[i][1]}`, function () { menu_switch(`${menu_ALL[i][3]}`, `${menu_ALL[i][0]}`, `${menu_ALL[i][2]}`) });\n            }\n        }\n        menu_ID[menu_ID.length] = GM_registerMenuCommand('💬 反馈 & 建议', function () { window.GM_openInTab('https://github.com/XIU2/UserScript#xiu2userscript', { active: true, insert: true, setParent: true }); window.GM_openInTab('https://greasyfork.org/zh-CN/scripts/414005/feedback', { active: true, insert: true, setParent: true }); });\n    }\n    // 菜单开关\n    function menu_switch(menu_status, Name, Tips) {\n        if (menu_status == 'true') {\n            GM_setValue(`${Name}`, false);\n            GM_notification({ text: `已关闭 [${Tips}] 功能\\n（点击刷新网页后生效）`, timeout: 3500, onclick: function () { location.reload(); } });\n        } else {\n            GM_setValue(`${Name}`, true);\n            GM_notification({ text: `已开启 [${Tips}] 功能\\n（点击刷新网页后生效）`, timeout: 3500, onclick: function () { location.reload(); } });\n        }\n        registerMenuCommand(); // 重新注册脚本菜单\n    };\n    // 返回菜单值\n    function menu_value(menuName) {\n        for (let menu of menu_ALL) {\n            if (menu[0] == menuName) {\n                return menu[3]\n            }\n        }\n    }\n    // 检查是否登陆\n    var loginStatus = false;\n    if (document.getElementById('um')) {\n        loginStatus = true;\n    } else {\n        if (typeof discuz_uid != 'undefined') loginStatus = (discuz_uid != '0' ? true : false);\n    }\n    // 默认 ID 为 0\n    var curSite = { SiteTypeID: 0 };\n    // 自动翻页规则\n    let DBSite = {\n        forum: {\n            SiteTypeID: 1\n        },\n        thread: {\n            SiteTypeID: 2,\n            pager: {\n                nextLink: 'a.nxt',\n                pageElement: 'div#postlist > div[id^=\"post_\"]',\n                HT_insert: ['div#postlist', 2],\n                replaceE: '#ct > .pgs',\n            }\n        },\n        search: {\n            SiteTypeID: 3,\n            pager: {\n                nextLink: 'a.nxt',\n                pageElement: 'div#threadlist > ul',\n                HT_insert: ['div#threadlist', 2],\n                replaceE: 'div.pg'\n            }\n        },\n        guide: {\n            SiteTypeID: 4,\n            pager: {\n                nextLink: 'a.nxt',\n                pageElement: 'div#threadlist div.bm_c table > tbody',\n                HT_insert: ['div#threadlist div.bm_c table', 2],\n                replaceE: 'div.pg',\n            }\n        },\n        youreply: {\n            SiteTypeID: 5,\n            pager: {\n                nextLink: 'a.nxt',\n                pageElement: 'tbody > tr:not(.th)',\n                HT_insert: ['tbody', 2],\n                replaceE: 'div.pg',\n            }\n        }\n    };\n    // 用于脚本内部判断当前 URL 类型\n    let SiteType = {\n        FORUM: DBSite.forum.SiteTypeID, // 各板块帖子列表\n        THREAD: DBSite.thread.SiteTypeID, // 帖子内\n        GUIDE: DBSite.guide.SiteTypeID, // 导读帖子列表\n        SEARCH: DBSite.search.SiteTypeID // 搜索结果列表\n    };\n    // URL 匹配正则表达式\n    let patt_thread = /\\/thread-\\d+-\\d+\\-\\d+.html/,\n        patt_forum = /\\/forum-\\d+-\\d+\\.html/\n    // URL 判断\n    if (patt_thread.test(location.pathname) || location.search.indexOf('mod=viewthread') > -1) { // 帖子内\n        if (menu_value('menu_thread_pageLoading')) {\n            curSite = DBSite.thread;\n            hidePgbtn(); //                                               隐藏帖子内的 [下一页] 按钮\n        }\n        showPosts(); //                                                   自动显示帖子内被隐藏的回复\n        blockUsers('thread'); //                                          屏蔽用户（黑名单）\n        onlineStatus(); //                                                显示是否在线\n        addBlockButton(); //                                              添加屏蔽按钮\n        replyCustom('thread'); //                                         回复自定义\n    } else if (patt_forum.test(location.pathname) || location.search.indexOf('mod=forumdisplay') > -1) { // 各板块帖子列表\n        curSite = DBSite.forum;\n        collapsedNowPost(); //                                            收起当前帖子预览（左键左右两侧空白处）\n        delate255(); //                                                   屏蔽 255 权限帖子\n        delatePolls(); //                                                 屏蔽投票贴子\n        blockUsers('forum'); //                                           屏蔽用户（黑名单）\n        blockKeywords(); //                                               屏蔽关键词（帖子标题）\n        vfastpostDOMNodeInserted(); //                                    监听插入事件（预览快速回复带签名）\n        replyCustom('forum'); //                                          回复自定义\n        if (patt_forum.test(location.pathname)) blockDOMNodeInserted(); //监听插入事件（有新的回复主题，点击查看）\n    } else if (location.search.indexOf('mod=guide') > -1) { //            导读帖子列表\n        curSite = DBSite.guide;\n    } else if (location.pathname === '/search.php') { //                   搜索结果列表\n        curSite = DBSite.search;\n        blockUsers('search'); //                                          屏蔽用户（黑名单）\n    } else if (location.pathname === '/home.php' && location.search.indexOf('mod=space&do=notice&view=mypost') > -1) { // 消息(帖子/点评/提到)\n        blockUsers('notice'); //                                          屏蔽用户（黑名单）\n    } else if (location.pathname === '/home.php' && location.search.indexOf('mod=space&do=pm') > -1) { // 消息(私人聊天)\n        blockUsers('pm'); //                                              屏蔽用户（黑名单）\n    } else if (location.search.indexOf('mod=space') > -1 && location.search.indexOf('&view=me') > -1) { // 别人的主题/回复\n        curSite = DBSite.youreply;\n    } else if (location.pathname === '/forum.php' && location.search.indexOf('mod=post&action=reply') > -1 || location.pathname === '/forum.php' && location.search.indexOf('mod=post&action=newthread') > -1) { // 回复：高级回复\n        replyCustom('reply'); //                                          回复自定义\n    }\n    curSite.pageUrl = \"\"; // 下一页URL\n    pageLoading(); // 自动翻页\n    backToTop(); //    回到顶部（右键点击左右两侧空白处）\n    if (menu_value('menu_autoSignIn')) autoSignIn(); //  自动签到（访问空间 10 次 = 20 积分）\n    //replyIntervalDOMNodeInserted(); //                 监听插入事件（回帖间隔）\n    // 自动签到（访问空间 10 次 = 20 积分 + 当天首次访问论坛 2 积分）\n    function autoSignIn() {\n        if (!loginStatus) return\n        let timeNow = new Date().getFullYear() + \"/\" + (new Date().getMonth() + 1) + \"/\" + new Date().getDate(),\n            timeOld = GM_getValue('menu_signInTime');\n        if (!timeOld || timeOld != timeNow) { // 是新的一天\n            GM_setValue('menu_signInTime', timeNow); //      写入签到时间以供后续比较\n            GM_notification({ text: '请不要关闭/刷新本页！耐心等待 60 秒~\\n在此期间可以在 \"其他标签页\" 浏览论坛！', timeout: 10000 });\n            let url_list = [],\n                url = 0;\n            // 随机生成 12 个空间地址（2 个冗余）\n            for (let i = 0; i < 12; i++) { url_list[i] = \"https://\" + location.host + \"/space-uid-\" + Math.floor(Math.random() * (50000 - 10000 + 1) + 10000) + \".html\"; }\n            // 每 5 秒访问一次（避免触发网站防御机制，而且还可以适当浏览论坛）\n            let signIn = setInterval(function () {\n                GM_xmlhttpRequest({\n                    url: url_list[url++],\n                    method: 'GET',\n                    timeout: 4000\n                });\n                console.log(`[全球主机交流论坛 增强] 积分 +2 (${url_list[url]})`);\n                if (url === 11) { // 次数够了就取消定时循环\n                    clearInterval(signIn);\n                    console.log('[全球主机交流论坛 增强] 签到完成！');\n                    GM_notification({ text: '签到完成！积分 +22 ~', timeout: 3500 });\n                }\n            }, 5000);\n        }\n    }\n    // 重新签到\n    function reAutoSignIn() {\n        GM_setValue('menu_signInTime', '1970/1/1'); // 设置为比当前日期更早\n        location.reload(); // 刷新网页\n    }\n    // 自定义屏蔽用户\n    function customBlockUsers() {\n        let nowBlockUsers = '';\n        GM_getValue('menu_customBlockUsers').forEach(function (item) { nowBlockUsers += '|' + item })\n        let newBlockUsers = prompt('编辑 [自定义屏蔽用户]，刷新网页后生效\\n（不同用户名之间使用 \"|\" 分隔，\\n（例如：用户A|用户B|用户C，如果只有一个就不需要 \"|\" 了。', nowBlockUsers.replace('|', ''));\n        if (newBlockUsers === '') {\n            GM_setValue('menu_customBlockUsers', []);\n            registerMenuCommand(); // 重新注册脚本菜单\n        } else if (newBlockUsers != null) {\n            GM_setValue('menu_customBlockUsers', newBlockUsers.split('|'));\n            registerMenuCommand(); // 重新注册脚本菜单\n        }\n    };\n    // 屏蔽用户\n    function blockUsers(type) {\n        if (!menu_value('menu_customBlockUsers') || menu_value('menu_customBlockUsers').length < 1) return\n        switch (type) {\n            case 'thread': // 帖子内\n                blockUsers_('[id^=\"post_\"]', 'a[href^=\"space-uid\"]');\n                blockUsers_('[id^=\"comment_\"] > div', 'a.xi2.xw1'); // 点评\n                blockUsers_('.quote', 'a[href*=\"&ptid=\"]:not([id])>font', 1); // 回复引用\n                break;\n            case 'forum': //  各版块帖子列表\n                blockUsers_('[id^=\"normalthread_\"]', 'a[href^=\"space-uid\"]');\n                blockUsers_vfastpost(); // 预览帖子中的回复\n                break;\n            case 'search': // 搜索结果\n                blockUsers_('.pbw', 'a[href^=\"space-uid\"]');\n                break;\n            case 'notice': // 消息\n                blockUsers_('dl.cl', '.ntc_body a[href^=\"space-uid\"]');\n                break;\n            case 'pm': //     私人聊天\n                blockUsers_('dl[id^=\"pmlist_\"]', '.ptm.pm_c a[href^=\"space-uid\"]');\n                break;\n        }\n        function blockUsers_(list1, list2, type) {\n            document.querySelectorAll(list1).forEach(function (item) { // 遍历所有帖子\n                menu_value('menu_customBlockUsers').forEach(function (item1) { // 遍历用户黑名单\n                    let itemName = item.querySelector(list2); // 寻找用户名\n                    if (itemName) {\n                        if (type && type === 1 && itemName.textContent.split(' ')[0] === item1) { // 回复引用\n                            console.log(`屏蔽用户：${item1}`);\n                            item.hidden = true; // 隐藏\n                        } else if (itemName.textContent === item1) {\n                            console.log(`屏蔽用户：${item1}`);\n                            item.hidden = true; // 隐藏\n                        }\n                    }\n                })\n            })\n        }\n        function blockUsers_vfastpost() {\n            let vfastpost = e => {\n                if (e.target.nodeType == 1 && e.target.outerHTML && e.target.outerHTML.indexOf('class=\"fastpreview\"') > -1) {\n                    e.target.querySelectorAll('.bm_c > [id^=\"post_\"]').forEach(function (item) { // 遍历所有回复\n                        menu_value('menu_customBlockUsers').forEach(function (item1) { // 遍历用户黑名单\n                            let itemName = item.querySelector('a.xi2'); // 寻找用户名\n                            if (itemName && itemName.textContent === item1) {\n                                console.log(`屏蔽用户：${item1}`);\n                                item.hidden = true; // 隐藏\n                            }\n                            itemName = item.querySelector('.quote>blockquote>font:first-child'); // 寻找用户名（回复引用）\n                            if (itemName && itemName.textContent.split(' ')[0] === item1) {\n                                console.log(`屏蔽用户：${item1}`);\n                                item.querySelector('.quote').hidden = true; // 隐藏\n                            }\n                        })\n                    })\n                }\n            }\n            document.addEventListener('DOMNodeInserted', vfastpost); // 监听插入事件\n        }\n    }\n    // 自定义屏蔽关键词（帖子标题）\n    function customBlockKeywords() {\n        let nowBlockKeywords = '';\n        GM_getValue('menu_customBlockKeywords').forEach(function (item) { nowBlockKeywords += '|' + item })\n        let newBlockKeywords = prompt('编辑 [自定义屏蔽关键词]，刷新网页后生效\\n（不同关键词之间使用 \"|\" 分隔，\\n（例如：助力|互助|互点，如果只有一个就不需要 \"|\" 了。', nowBlockKeywords.replace('|', ''));\n        if (newBlockKeywords === '') {\n            GM_setValue('menu_customBlockKeywords', []);\n            registerMenuCommand(); // 重新注册脚本菜单\n        } else if (newBlockKeywords != null) {\n            GM_setValue('menu_customBlockKeywords', newBlockKeywords.split('|'));\n            registerMenuCommand(); // 重新注册脚本菜单\n        }\n    };\n    // 屏蔽关键词（帖子标题）\n    function blockKeywords() {\n        if (!menu_value('menu_customBlockKeywords') || menu_value('menu_customBlockKeywords').length < 1) return\n        document.querySelectorAll('[id^=\"normalthread_\"]').forEach(function (item) { // 遍历所有帖子标题\n            menu_value('menu_customBlockKeywords').forEach(function (item1) { // 遍历关键词\n                let itemName = item.querySelector('a.s.xst'); // 寻找帖子标题\n                if (itemName && itemName.textContent.toLowerCase().indexOf(item1.toLowerCase()) > -1) {\n                    console.log(`屏蔽关键词：[${item1}]`, `，帖子标题：[${itemName.textContent}]`);\n                    item.hidden = true; // 删除帖子\n                }\n            })\n        })\n    }\n    // 监听插入事件（有新的回复主题，点击查看）\n    function blockDOMNodeInserted() {\n        let block = e => {\n            if (e.target.nodeType == 1 && e.target.textContent && e.target.textContent.indexOf('newthread') > -1) {\n                setTimeout(function () {\n                    blockUsers('forum'); //                           屏蔽用户（黑名单）\n                    blockKeywords(); //                               屏蔽关键词（帖子标题）\n                }, 100)\n            }\n        }\n        document.addEventListener('DOMNodeInserted', block); // 监听插入事件\n    }\n    // 监听插入事件（预览快速回复带签名）\n    function vfastpostDOMNodeInserted() {\n        let vfastpost = e => {\n            if (e.target.nodeType == 1 && e.target.innerHTML && e.target.innerHTML.indexOf('id=\"vfastpost\"') > -1) {\n                e.target.getElementsByTagName('form')[0].insertAdjacentHTML('afterbegin', `<input type=\"hidden\" name=\"usesig\" value=\"1\">`);\n            }\n        }\n        document.addEventListener('DOMNodeInserted', vfastpost); // 监听插入事件\n    }\n    // 自定义小尾巴内容\n    function customLittleTail() {\n        let newLittleTail = prompt('编辑 [自定义小尾巴内容]，刷新网页后生效（换行请使用 \\\\n\\n提示①：记得在小尾巴前面加上几个 \\\\n 换行，用来分隔开回帖内容~\\n提示②：建议使用 [align=right] 标签来使小尾巴居右~\\n提示③：支持论坛富文本标签（建议先找个回复编辑预览好~\\n示例：\\\\n\\\\n\\\\n\\\\n[align=right]第一行内容~\\\\n第二行内容~[/align]', GM_getValue('menu_customLittleTail'));\n        if (newLittleTail === '') {\n            GM_setValue('menu_customLittleTail', '');\n            registerMenuCommand(); // 重新注册脚本菜单\n        } else if (newLittleTail != null) {\n            GM_setValue('menu_customLittleTail', newLittleTail);\n            registerMenuCommand(); // 重新注册脚本菜单\n        }\n    };\n    // 回复自定义\n    function replyCustom(type) {\n        switch (type) {\n            case 'forum': // 各版块帖子列表的预览帖子\n                replyCustom_0(); // 预览帖子 快速回复（底部）\n                replyCustom_1(); // 预览帖子 回复（悬浮）\n                break;\n            case 'thread': // 帖子内\n                replyCustom_1(); // 快速回复（悬浮）\n                replyCustom_2(); // 回复框（底部）\n                break;\n            case 'reply': // 高级回复\n                replyCustom_3();\n                break;\n        }\n        function replyCustom_0() {\n            let vfastpost = e => {\n                if (e.target.nodeType == 1 && e.target.innerHTML && e.target.innerHTML.indexOf('id=\"vfastpost\"') > -1) {\n                    let message = e.target.querySelector('input[name=\"message\"]'), id = message.id.match(/\\d+/g)[0];\n                    message.parentNode.innerHTML = `<textarea type=\"text\" name=\"message\" id=\"vmessage_${id}\" style=\"width: 99.8%;height: 30px;border: none;outline: none;font-size: 14px;overflow-y: hidden;\"></textarea>`\n                    document.getElementById(`vreplysubmit_${id}`).onclick = function () {\n                        if (GM_getValue('menu_customLittleTail')) document.getElementById(`vmessage_${id}`).value += GM_getValue('menu_customLittleTail').replaceAll('\\\\n', '\\n');\n                    }\n                }\n            }\n            document.addEventListener('DOMNodeInserted', vfastpost); // 监听插入事件\n        }\n        function replyCustom_1() {\n            let floatlayout_reply = e => {\n                if (e.target.nodeType == 1 && e.target.innerHTML && e.target.innerHTML.indexOf('id=\"floatlayout_reply\"') > -1) {\n                    // 快速回复（悬浮）中添加 URL 按钮\n                    document.querySelector('#floatlayout_reply .fbld').insertAdjacentHTML('afterend', `<a href=\"javascript:;\" title=\"点击给选中文字添加 url 标签（可正常显示为 URL）\" class=\"flnk\" style=\"filter: hue-rotate(83deg);\" onclick=\"seditor_insertunit('post', '[url][i]', '[/i][/url]');doane(event);\">URL</a>`);\n                    document.getElementById('postsubmit').onclick = function () {\n                        if (GM_getValue('menu_customLittleTail')) document.getElementById('postmessage').value += GM_getValue('menu_customLittleTail').replaceAll('\\\\n', '\\n');\n                    }\n                }\n            }\n            document.addEventListener('DOMNodeInserted', floatlayout_reply); // 监听插入事件\n            // 快速发帖（各版块帖子列表底部）中添加 URL 按钮\n            document.querySelector('#fastposteditor .fbld').insertAdjacentHTML('afterend', `<a href=\"javascript:;\" title=\"点击给选中文字添加 url 标签（可正常显示为 URL）\" class=\"flnk\" style=\"filter: hue-rotate(83deg);\" onclick=\"seditor_insertunit('post', '[url][i]', '[/i][/url]');doane(event);\">URL</a>`);\n        }\n        function replyCustom_2() { // 帖子底部的回复框\n            document.getElementById('fastpostsubmit').onclick = function () {\n                if (GM_getValue('menu_customLittleTail')) document.getElementById('fastpostmessage').value += GM_getValue('menu_customLittleTail').replaceAll('\\\\n', '\\n');\n            }\n        }\n        function replyCustom_3() {\n            let postsubmit = document.getElementById('postsubmit');\n            if (postsubmit && postsubmit.textContent === '\\n参与/回复主题\\n' || postsubmit && postsubmit.textContent === '\\n发表帖子\\n') {\n                postsubmit.onclick = function () {\n                    if (GM_getValue('menu_customLittleTail')) document.getElementById('e_textarea').value += GM_getValue('menu_customLittleTail').replaceAll('\\\\n', '\\n');\n                }\n            }\n        }\n    }\n    // 监听插入事件（回帖间隔）\n    /*function replyIntervalDOMNodeInserted() {\n        let replyInterval = e => {\n            if (e.target.nodeType == 1 && e.target.innerHTML && e.target.textContent.indexOf('发表回复 金钱+1') > -1) {\n                setTimeout(function () {GM_notification({text: '过去 60 秒了，可以回帖了~', timeout: 3500});}, 60000)\n            }\n        }\n        document.addEventListener('DOMNodeInserted', replyInterval); // 监听插入事件\n    }*/\n    // 自动显示帖子内被隐藏的回复\n    function showPosts() {\n        if (menu_value('menu_showhide')) {\n            let showposts = document.querySelector('#hiddenpoststip a');\n            if (showposts) { // 如果存在\n                showposts.click();\n            }\n        }\n    }\n    // 隐藏帖子内的 [下一页] 按钮\n    function hidePgbtn() {\n        document.lastChild.appendChild(document.createElement('style')).textContent = '.pgbtn {display: none;}';\n    }\n    // 快捷回到顶部（右键左右两侧空白处）\n    function backToTop() {\n        document.body.oncontextmenu = function (event) {\n            if (event.target == this) {\n                event.preventDefault();\n                window.scrollTo(0, 0)\n            }\n        }\n    }\n    // 收起帖子预览（左键左右两侧空白处）\n    function collapsedNowPost() {\n        document.body.onclick = function (event) {\n            if (event.target == this) {\n                document.querySelectorAll('[id^=\"threadPreviewTR_\"] .closeprev').forEach(function (el) {\n                    if (!el.parentElement.querySelector('[name=\"message\"]') || el.parentElement.querySelector('[name=\"message\"]').value === '' && !document.getElementById('fwin_reply')) { // 避免快速回复过程中误点收起了\n                        let parentElement = el.parentElement.parentElement.parentElement.parentElement.parentElement,\n                            top = parentElement.offsetTop + parentElement.offsetParent.offsetTop + parentElement.offsetParent.offsetParent.offsetTop; // 元素距离顶部的高度\n                        if (top < document.documentElement.scrollTop) window.scrollTo(0, top) // 帖子标题在上面时才会滚动到该帖子处\n                        el.click()\n                    }\n                });\n            }\n        }\n    }\n    // 显示在线状态\n    function onlineStatus() {\n        document.querySelectorAll('[id^=\"favatar\"]').forEach(function (item) { // 遍历所有帖子\n            if (item.querySelector('[id^=\"userinfo\"] > .i.y em')) {\n                let icon = (item.querySelector('[id^=\"userinfo\"] > .i.y em').textContent === '当前在线') ? '🌝' : '🌚';\n                let divStatus = document.createElement('div');\n                divStatus.style = 'position: absolute;margin: -8px 0 0 8px;padding: 0px 1px;background-color: #ffffff;border-radius: 50%;z-index: 302;';\n                divStatus.textContent = icon;\n                let mochu = item.querySelector('.avatar');\n                mochu.parentNode.insertBefore(divStatus, mochu);\n            }\n        })\n    }\n    // 添加屏蔽按钮\n    function addBlockButton() {\n        document.querySelectorAll('[id^=\"favatar\"]').forEach(function (item) { // 遍历所有帖子\n            let usernameLink = item.querySelector('a[href^=\"space-uid\"]');\n            if (usernameLink) {\n                const username = usernameLink.textContent, avatar = item.querySelector('.avatar');\n                if (avatar && !avatar.parentNode.querySelector('.XIU-block-button')) {\n                    // 创建屏蔽按钮\n                    let blockButton = document.createElement('div');\n                    blockButton.className = 'XIU-block-button';\n                    blockButton.title = `屏蔽用户: ${username}`;\n                    blockButton.textContent = '🚫';\n                    blockButton.style.cssText = 'position: absolute;margin: -8px 0px 0px 8px;padding: 0px 0.5px;top: 0px;right: 10px;background-color: #F26C4F;border-radius: 50%;cursor: pointer;z-index: 302;box-shadow: 0 2px 4px rgba(0,0,0,0.2);transition: all 0.3s ease;';\n\n                    // 鼠标悬停效果\n                    if (!document.getElementById('XIU-block-style')) {\n                        let blockStyle = document.createElement('style');\n                        blockStyle.id = 'XIU-block-style';\n                        document.documentElement.appendChild(blockStyle).textContent = '.XIU-block-button:hover{transform: scale(1.2);background-color: #ff6666;}'\n                    }\n\n                    // 点击事件\n                    blockButton.addEventListener('click', function (e) {\n                        e.preventDefault();\n                        e.stopPropagation();\n\n                        if (confirm(`确定要将用户 \"${username}\" 添加到黑名单吗？\\n添加后该用户发布的任何内容都会被屏蔽`)) {\n                            let blockList = GM_getValue('menu_customBlockUsers') || [];\n                            if (!blockList.includes(username)) {\n                                blockList.push(username);\n                                GM_setValue('menu_customBlockUsers', blockList);\n                                GM_notification({ text: `已将用户 \"${username}\" 添加到黑名单！\\n刷新页面后生效。`, timeout: 3000 });\n\n                                // 立即隐藏当前用户的帖子\n                                let postElement = item.closest('[id^=\"post_\"]');\n                                if (postElement) {\n                                    postElement.style.opacity = '0.5';\n                                    postElement.style.transition = 'opacity 0.5s ease';\n                                    setTimeout(() => { postElement.hidden = true; }, 500);\n                                }\n                            } else {\n                                GM_notification({ text: `用户 \"${username}\" 已在黑名单中！`, timeout: 2000 });\n                            }\n                        }\n                    });\n\n                    // 将按钮添加到头像旁边\n                    avatar.parentNode.style.position = 'relative';\n                    avatar.parentNode.appendChild(blockButton);\n                }\n            }\n        });\n    }\n    // 屏蔽阅读权限 255 的帖子\n    function delate255() {\n        if (!menu_value('menu_delate255')) return\n        if (patt_forum.test(location.pathname) || location.search.indexOf('mod=forumdisplay') > -1) {\n            document.querySelectorAll('tbody[id^=\"normalthread_\"] .xw1').forEach(function (_this) {\n                if (_this.textContent === '255') {\n                    _this.parentNode.parentNode.parentNode.hidden = true;\n                }\n            })\n        }\n    }\n    // 屏蔽投票贴\n    function delatePolls() {\n        if (!menu_value('menu_delatePolls')) return\n        if (patt_forum.test(location.pathname) || location.search.indexOf('mod=forumdisplay') > -1) {\n            document.querySelectorAll('tbody[id^=\"normalthread_\"] .icn>a>img[alt=\"投票\"]').forEach(function (_this) {\n                _this.parentNode.parentNode.parentNode.parentNode.hidden = true;\n            })\n        }\n    }\n    // 自动翻页\n    function pageLoading() {\n        if (!menu_value('menu_pageLoading')) return\n        if (curSite.SiteTypeID > 0) {\n            windowScroll(function (direction, e) {\n                if (direction === 'down') { // 下滑才准备翻页\n                    let scrollTop = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop;\n                    if (document.documentElement.scrollHeight <= document.documentElement.clientHeight + scrollTop + 999) {\n                        if (curSite.SiteTypeID === SiteType.FORUM) { // 如果是各版块帖子列表则直接点下一页就行了\n                            let autopbn = document.querySelector('#autopbn');\n                            if (autopbn && autopbn.textContent === \"下一页 »\") { // 如果已经在加载中了，就忽略\n                                autopbn.click();\n                                let timer = setInterval(function () { // 在下一页加载完成后\n                                    if (document.querySelector('#autopbn').textContent === '下一页 »') {\n                                        delate255(); // 屏蔽 255 权限帖子\n                                        delatePolls(); // 屏蔽投票贴子\n                                        blockUsers('forum'); // 屏蔽用户（黑名单）\n                                        blockKeywords(); // 屏蔽关键词（帖子标题）\n                                        clearInterval(timer);\n                                    }\n                                }, 10);\n                            }\n                        } else {\n                            ShowPager.loadMorePage();\n                        }\n                    }\n                }\n            });\n        }\n    }\n    // 滚动条事件\n    function windowScroll(fn1) {\n        var beforeScrollTop = document.documentElement.scrollTop,\n            fn = fn1 || function () { };\n        setTimeout(function () { // 延时执行，避免刚载入到页面就触发翻页事件\n            window.addEventListener('scroll', function (e) {\n                var afterScrollTop = document.documentElement.scrollTop,\n                    delta = afterScrollTop - beforeScrollTop;\n                if (delta == 0) return false;\n                fn(delta > 0 ? 'down' : 'up', e);\n                beforeScrollTop = afterScrollTop;\n            }, false);\n        }, 1000)\n    }\n    // 修改自 https://greasyfork.org/scripts/14178 , https://github.com/machsix/Super-preloader\n    var ShowPager = {\n        getFullHref: function (e) {\n            if (e != null && e.nodeType === 1 && e.href && e.href.slice(0, 4) === 'http') return e.href;\n            return '';\n        },\n        createDocumentByString: function (e) {\n            if (e) {\n                if ('HTML' !== document.documentElement.nodeName) return (new DOMParser).parseFromString(e, 'application/xhtml+xml');\n                var t;\n                try { t = (new DOMParser).parseFromString(e, 'text/html'); } catch (e) { }\n                if (t) return t;\n                if (document.implementation.createHTMLDocument) {\n                    t = document.implementation.createHTMLDocument('ADocument');\n                } else {\n                    try { ((t = document.cloneNode(!1)).appendChild(t.importNode(document.documentElement, !1)), t.documentElement.appendChild(t.createElement('head')), t.documentElement.appendChild(t.createElement('body'))); } catch (e) { }\n                }\n                if (t) {\n                    var r = document.createRange(),\n                        n = r.createContextualFragment(e);\n                    r.selectNodeContents(document.body);\n                    t.body.appendChild(n);\n                    for (var a, o = { TITLE: !0, META: !0, LINK: !0, STYLE: !0, BASE: !0 }, i = t.body, s = i.childNodes, c = s.length - 1; c >= 0; c--) o[(a = s[c]).nodeName] && i.removeChild(a);\n                    return t;\n                }\n            } else console.error('没有找到要转成 DOM 的字符串');\n        },\n        loadMorePage: function () {\n            if (curSite.pager) {\n                let curPageEle = document.querySelector(curSite.pager.nextLink);\n                var url = this.getFullHref(curPageEle);\n                if (url === '') return;\n                if (curSite.pageUrl === url) return;// 不会重复加载相同的页面\n                curSite.pageUrl = url;\n                // 读取下一页的数据\n                curSite.pager.startFilter && curSite.pager.startFilter();\n                GM_xmlhttpRequest({\n                    url: url,\n                    method: 'GET',\n                    timeout: 5000,\n                    onload: function (response) {\n                        try {\n                            var newBody = ShowPager.createDocumentByString(response.responseText);\n                            let pageElems = getAllCSS(curSite.pager.pageElement, newBody),\n                                toElement = getAllCSS(curSite.pager.HT_insert[0])[0];\n                            if (pageElems.length >= 0) {\n                                let addTo = \"beforeend\";\n                                if (curSite.pager.HT_insert[1] == 1) addTo = 'beforebegin';\n                                // 插入新页面元素\n                                pageElems.forEach(function (one) { toElement.insertAdjacentElement(addTo, one); });\n                                // 屏蔽用户（黑名单）\n                                if (patt_thread.test(location.pathname) || location.search.indexOf('mod=viewthread') > -1) {\n                                    blockUsers('thread');\n                                    addBlockButton(); // 添加屏蔽按钮\n                                } else if (location.pathname === '/search.php') { blockUsers('search'); }\n                                delate255(); // 屏蔽 255 权限帖子\n                                delatePolls(); // 屏蔽投票贴子\n                                // 替换待替换元素\n                                try {\n                                    let oriE = getAllCSS(curSite.pager.replaceE),\n                                        repE = getAllCSS(curSite.pager.replaceE, newBody);\n                                    if (oriE.length === repE.length) {\n                                        for (var i = 0; i < oriE.length; i++) {\n                                            oriE[i].outerHTML = repE[i].outerHTML;\n                                        }\n                                    }\n                                } catch (e) {\n                                    console.log(e);\n                                }\n                            }\n                        } catch (e) {\n                            console.log(e);\n                        }\n                    }\n                });\n            }\n        },\n    };\n    function getAllCSS(css, contextNode = document) {\n        return [].slice.call(contextNode.querySelectorAll(css));\n    }\n})();"
  },
  {
    "path": "LICENSE",
    "content": "                    GNU GENERAL PUBLIC LICENSE\n                       Version 3, 29 June 2007\n\n Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>\n Everyone is permitted to copy and distribute verbatim copies\n of this license document, but changing it is not allowed.\n\n                            Preamble\n\n  The GNU General Public License is a free, copyleft license for\nsoftware and other kinds of works.\n\n  The licenses for most software and other practical works are designed\nto take away your freedom to share and change the works.  By contrast,\nthe GNU General Public License is intended to guarantee your freedom to\nshare and change all versions of a program--to make sure it remains free\nsoftware for all its users.  We, the Free Software Foundation, use the\nGNU General Public License for most of our software; it applies also to\nany other work released this way by its authors.  You can apply it to\nyour programs, too.\n\n  When we speak of free software, we are referring to freedom, not\nprice.  Our General Public Licenses are designed to make sure that you\nhave the freedom to distribute copies of free software (and charge for\nthem if you wish), that you receive source code or can get it if you\nwant it, that you can change the software or use pieces of it in new\nfree programs, and that you know you can do these things.\n\n  To protect your rights, we need to prevent others from denying you\nthese rights or asking you to surrender the rights.  Therefore, you have\ncertain responsibilities if you distribute copies of the software, or if\nyou modify it: responsibilities to respect the freedom of others.\n\n  For example, if you distribute copies of such a program, whether\ngratis or for a fee, you must pass on to the recipients the same\nfreedoms that you received.  You must make sure that they, too, receive\nor can get the source code.  And you must show them these terms so they\nknow their rights.\n\n  Developers that use the GNU GPL protect your rights with two steps:\n(1) assert copyright on the software, and (2) offer you this License\ngiving you legal permission to copy, distribute and/or modify it.\n\n  For the developers' and authors' protection, the GPL clearly explains\nthat there is no warranty for this free software.  For both users' and\nauthors' sake, the GPL requires that modified versions be marked as\nchanged, so that their problems will not be attributed erroneously to\nauthors of previous versions.\n\n  Some devices are designed to deny users access to install or run\nmodified versions of the software inside them, although the manufacturer\ncan do so.  This is fundamentally incompatible with the aim of\nprotecting users' freedom to change the software.  The systematic\npattern of such abuse occurs in the area of products for individuals to\nuse, which is precisely where it is most unacceptable.  Therefore, we\nhave designed this version of the GPL to prohibit the practice for those\nproducts.  If such problems arise substantially in other domains, we\nstand ready to extend this provision to those domains in future versions\nof the GPL, as needed to protect the freedom of users.\n\n  Finally, every program is threatened constantly by software patents.\nStates should not allow patents to restrict development and use of\nsoftware on general-purpose computers, but in those that do, we wish to\navoid the special danger that patents applied to a free program could\nmake it effectively proprietary.  To prevent this, the GPL assures that\npatents cannot be used to render the program non-free.\n\n  The precise terms and conditions for copying, distribution and\nmodification follow.\n\n                       TERMS AND CONDITIONS\n\n  0. Definitions.\n\n  \"This License\" refers to version 3 of the GNU General Public License.\n\n  \"Copyright\" also means copyright-like laws that apply to other kinds of\nworks, such as semiconductor masks.\n\n  \"The Program\" refers to any copyrightable work licensed under this\nLicense.  Each licensee is addressed as \"you\".  \"Licensees\" and\n\"recipients\" may be individuals or organizations.\n\n  To \"modify\" a work means to copy from or adapt all or part of the work\nin a fashion requiring copyright permission, other than the making of an\nexact copy.  The resulting work is called a \"modified version\" of the\nearlier work or a work \"based on\" the earlier work.\n\n  A \"covered work\" means either the unmodified Program or a work based\non the Program.\n\n  To \"propagate\" a work means to do anything with it that, without\npermission, would make you directly or secondarily liable for\ninfringement under applicable copyright law, except executing it on a\ncomputer or modifying a private copy.  Propagation includes copying,\ndistribution (with or without modification), making available to the\npublic, and in some countries other activities as well.\n\n  To \"convey\" a work means any kind of propagation that enables other\nparties to make or receive copies.  Mere interaction with a user through\na computer network, with no transfer of a copy, is not conveying.\n\n  An interactive user interface displays \"Appropriate Legal Notices\"\nto the extent that it includes a convenient and prominently visible\nfeature that (1) displays an appropriate copyright notice, and (2)\ntells the user that there is no warranty for the work (except to the\nextent that warranties are provided), that licensees may convey the\nwork under this License, and how to view a copy of this License.  If\nthe interface presents a list of user commands or options, such as a\nmenu, a prominent item in the list meets this criterion.\n\n  1. Source Code.\n\n  The \"source code\" for a work means the preferred form of the work\nfor making modifications to it.  \"Object code\" means any non-source\nform of a work.\n\n  A \"Standard Interface\" means an interface that either is an official\nstandard defined by a recognized standards body, or, in the case of\ninterfaces specified for a particular programming language, one that\nis widely used among developers working in that language.\n\n  The \"System Libraries\" of an executable work include anything, other\nthan the work as a whole, that (a) is included in the normal form of\npackaging a Major Component, but which is not part of that Major\nComponent, and (b) serves only to enable use of the work with that\nMajor Component, or to implement a Standard Interface for which an\nimplementation is available to the public in source code form.  A\n\"Major Component\", in this context, means a major essential component\n(kernel, window system, and so on) of the specific operating system\n(if any) on which the executable work runs, or a compiler used to\nproduce the work, or an object code interpreter used to run it.\n\n  The \"Corresponding Source\" for a work in object code form means all\nthe source code needed to generate, install, and (for an executable\nwork) run the object code and to modify the work, including scripts to\ncontrol those activities.  However, it does not include the work's\nSystem Libraries, or general-purpose tools or generally available free\nprograms which are used unmodified in performing those activities but\nwhich are not part of the work.  For example, Corresponding Source\nincludes interface definition files associated with source files for\nthe work, and the source code for shared libraries and dynamically\nlinked subprograms that the work is specifically designed to require,\nsuch as by intimate data communication or control flow between those\nsubprograms and other parts of the work.\n\n  The Corresponding Source need not include anything that users\ncan regenerate automatically from other parts of the Corresponding\nSource.\n\n  The Corresponding Source for a work in source code form is that\nsame work.\n\n  2. Basic Permissions.\n\n  All rights granted under this License are granted for the term of\ncopyright on the Program, and are irrevocable provided the stated\nconditions are met.  This License explicitly affirms your unlimited\npermission to run the unmodified Program.  The output from running a\ncovered work is covered by this License only if the output, given its\ncontent, constitutes a covered work.  This License acknowledges your\nrights of fair use or other equivalent, as provided by copyright law.\n\n  You may make, run and propagate covered works that you do not\nconvey, without conditions so long as your license otherwise remains\nin force.  You may convey covered works to others for the sole purpose\nof having them make modifications exclusively for you, or provide you\nwith facilities for running those works, provided that you comply with\nthe terms of this License in conveying all material for which you do\nnot control copyright.  Those thus making or running the covered works\nfor you must do so exclusively on your behalf, under your direction\nand control, on terms that prohibit them from making any copies of\nyour copyrighted material outside their relationship with you.\n\n  Conveying under any other circumstances is permitted solely under\nthe conditions stated below.  Sublicensing is not allowed; section 10\nmakes it unnecessary.\n\n  3. Protecting Users' Legal Rights From Anti-Circumvention Law.\n\n  No covered work shall be deemed part of an effective technological\nmeasure under any applicable law fulfilling obligations under article\n11 of the WIPO copyright treaty adopted on 20 December 1996, or\nsimilar laws prohibiting or restricting circumvention of such\nmeasures.\n\n  When you convey a covered work, you waive any legal power to forbid\ncircumvention of technological measures to the extent such circumvention\nis effected by exercising rights under this License with respect to\nthe covered work, and you disclaim any intention to limit operation or\nmodification of the work as a means of enforcing, against the work's\nusers, your or third parties' legal rights to forbid circumvention of\ntechnological measures.\n\n  4. Conveying Verbatim Copies.\n\n  You may convey verbatim copies of the Program's source code as you\nreceive it, in any medium, provided that you conspicuously and\nappropriately publish on each copy an appropriate copyright notice;\nkeep intact all notices stating that this License and any\nnon-permissive terms added in accord with section 7 apply to the code;\nkeep intact all notices of the absence of any warranty; and give all\nrecipients a copy of this License along with the Program.\n\n  You may charge any price or no price for each copy that you convey,\nand you may offer support or warranty protection for a fee.\n\n  5. Conveying Modified Source Versions.\n\n  You may convey a work based on the Program, or the modifications to\nproduce it from the Program, in the form of source code under the\nterms of section 4, provided that you also meet all of these conditions:\n\n    a) The work must carry prominent notices stating that you modified\n    it, and giving a relevant date.\n\n    b) The work must carry prominent notices stating that it is\n    released under this License and any conditions added under section\n    7.  This requirement modifies the requirement in section 4 to\n    \"keep intact all notices\".\n\n    c) You must license the entire work, as a whole, under this\n    License to anyone who comes into possession of a copy.  This\n    License will therefore apply, along with any applicable section 7\n    additional terms, to the whole of the work, and all its parts,\n    regardless of how they are packaged.  This License gives no\n    permission to license the work in any other way, but it does not\n    invalidate such permission if you have separately received it.\n\n    d) If the work has interactive user interfaces, each must display\n    Appropriate Legal Notices; however, if the Program has interactive\n    interfaces that do not display Appropriate Legal Notices, your\n    work need not make them do so.\n\n  A compilation of a covered work with other separate and independent\nworks, which are not by their nature extensions of the covered work,\nand which are not combined with it such as to form a larger program,\nin or on a volume of a storage or distribution medium, is called an\n\"aggregate\" if the compilation and its resulting copyright are not\nused to limit the access or legal rights of the compilation's users\nbeyond what the individual works permit.  Inclusion of a covered work\nin an aggregate does not cause this License to apply to the other\nparts of the aggregate.\n\n  6. Conveying Non-Source Forms.\n\n  You may convey a covered work in object code form under the terms\nof sections 4 and 5, provided that you also convey the\nmachine-readable Corresponding Source under the terms of this License,\nin one of these ways:\n\n    a) Convey the object code in, or embodied in, a physical product\n    (including a physical distribution medium), accompanied by the\n    Corresponding Source fixed on a durable physical medium\n    customarily used for software interchange.\n\n    b) Convey the object code in, or embodied in, a physical product\n    (including a physical distribution medium), accompanied by a\n    written offer, valid for at least three years and valid for as\n    long as you offer spare parts or customer support for that product\n    model, to give anyone who possesses the object code either (1) a\n    copy of the Corresponding Source for all the software in the\n    product that is covered by this License, on a durable physical\n    medium customarily used for software interchange, for a price no\n    more than your reasonable cost of physically performing this\n    conveying of source, or (2) access to copy the\n    Corresponding Source from a network server at no charge.\n\n    c) Convey individual copies of the object code with a copy of the\n    written offer to provide the Corresponding Source.  This\n    alternative is allowed only occasionally and noncommercially, and\n    only if you received the object code with such an offer, in accord\n    with subsection 6b.\n\n    d) Convey the object code by offering access from a designated\n    place (gratis or for a charge), and offer equivalent access to the\n    Corresponding Source in the same way through the same place at no\n    further charge.  You need not require recipients to copy the\n    Corresponding Source along with the object code.  If the place to\n    copy the object code is a network server, the Corresponding Source\n    may be on a different server (operated by you or a third party)\n    that supports equivalent copying facilities, provided you maintain\n    clear directions next to the object code saying where to find the\n    Corresponding Source.  Regardless of what server hosts the\n    Corresponding Source, you remain obligated to ensure that it is\n    available for as long as needed to satisfy these requirements.\n\n    e) Convey the object code using peer-to-peer transmission, provided\n    you inform other peers where the object code and Corresponding\n    Source of the work are being offered to the general public at no\n    charge under subsection 6d.\n\n  A separable portion of the object code, whose source code is excluded\nfrom the Corresponding Source as a System Library, need not be\nincluded in conveying the object code work.\n\n  A \"User Product\" is either (1) a \"consumer product\", which means any\ntangible personal property which is normally used for personal, family,\nor household purposes, or (2) anything designed or sold for incorporation\ninto a dwelling.  In determining whether a product is a consumer product,\ndoubtful cases shall be resolved in favor of coverage.  For a particular\nproduct received by a particular user, \"normally used\" refers to a\ntypical or common use of that class of product, regardless of the status\nof the particular user or of the way in which the particular user\nactually uses, or expects or is expected to use, the product.  A product\nis a consumer product regardless of whether the product has substantial\ncommercial, industrial or non-consumer uses, unless such uses represent\nthe only significant mode of use of the product.\n\n  \"Installation Information\" for a User Product means any methods,\nprocedures, authorization keys, or other information required to install\nand execute modified versions of a covered work in that User Product from\na modified version of its Corresponding Source.  The information must\nsuffice to ensure that the continued functioning of the modified object\ncode is in no case prevented or interfered with solely because\nmodification has been made.\n\n  If you convey an object code work under this section in, or with, or\nspecifically for use in, a User Product, and the conveying occurs as\npart of a transaction in which the right of possession and use of the\nUser Product is transferred to the recipient in perpetuity or for a\nfixed term (regardless of how the transaction is characterized), the\nCorresponding Source conveyed under this section must be accompanied\nby the Installation Information.  But this requirement does not apply\nif neither you nor any third party retains the ability to install\nmodified object code on the User Product (for example, the work has\nbeen installed in ROM).\n\n  The requirement to provide Installation Information does not include a\nrequirement to continue to provide support service, warranty, or updates\nfor a work that has been modified or installed by the recipient, or for\nthe User Product in which it has been modified or installed.  Access to a\nnetwork may be denied when the modification itself materially and\nadversely affects the operation of the network or violates the rules and\nprotocols for communication across the network.\n\n  Corresponding Source conveyed, and Installation Information provided,\nin accord with this section must be in a format that is publicly\ndocumented (and with an implementation available to the public in\nsource code form), and must require no special password or key for\nunpacking, reading or copying.\n\n  7. Additional Terms.\n\n  \"Additional permissions\" are terms that supplement the terms of this\nLicense by making exceptions from one or more of its conditions.\nAdditional permissions that are applicable to the entire Program shall\nbe treated as though they were included in this License, to the extent\nthat they are valid under applicable law.  If additional permissions\napply only to part of the Program, that part may be used separately\nunder those permissions, but the entire Program remains governed by\nthis License without regard to the additional permissions.\n\n  When you convey a copy of a covered work, you may at your option\nremove any additional permissions from that copy, or from any part of\nit.  (Additional permissions may be written to require their own\nremoval in certain cases when you modify the work.)  You may place\nadditional permissions on material, added by you to a covered work,\nfor which you have or can give appropriate copyright permission.\n\n  Notwithstanding any other provision of this License, for material you\nadd to a covered work, you may (if authorized by the copyright holders of\nthat material) supplement the terms of this License with terms:\n\n    a) Disclaiming warranty or limiting liability differently from the\n    terms of sections 15 and 16 of this License; or\n\n    b) Requiring preservation of specified reasonable legal notices or\n    author attributions in that material or in the Appropriate Legal\n    Notices displayed by works containing it; or\n\n    c) Prohibiting misrepresentation of the origin of that material, or\n    requiring that modified versions of such material be marked in\n    reasonable ways as different from the original version; or\n\n    d) Limiting the use for publicity purposes of names of licensors or\n    authors of the material; or\n\n    e) Declining to grant rights under trademark law for use of some\n    trade names, trademarks, or service marks; or\n\n    f) Requiring indemnification of licensors and authors of that\n    material by anyone who conveys the material (or modified versions of\n    it) with contractual assumptions of liability to the recipient, for\n    any liability that these contractual assumptions directly impose on\n    those licensors and authors.\n\n  All other non-permissive additional terms are considered \"further\nrestrictions\" within the meaning of section 10.  If the Program as you\nreceived it, or any part of it, contains a notice stating that it is\ngoverned by this License along with a term that is a further\nrestriction, you may remove that term.  If a license document contains\na further restriction but permits relicensing or conveying under this\nLicense, you may add to a covered work material governed by the terms\nof that license document, provided that the further restriction does\nnot survive such relicensing or conveying.\n\n  If you add terms to a covered work in accord with this section, you\nmust place, in the relevant source files, a statement of the\nadditional terms that apply to those files, or a notice indicating\nwhere to find the applicable terms.\n\n  Additional terms, permissive or non-permissive, may be stated in the\nform of a separately written license, or stated as exceptions;\nthe above requirements apply either way.\n\n  8. Termination.\n\n  You may not propagate or modify a covered work except as expressly\nprovided under this License.  Any attempt otherwise to propagate or\nmodify it is void, and will automatically terminate your rights under\nthis License (including any patent licenses granted under the third\nparagraph of section 11).\n\n  However, if you cease all violation of this License, then your\nlicense from a particular copyright holder is reinstated (a)\nprovisionally, unless and until the copyright holder explicitly and\nfinally terminates your license, and (b) permanently, if the copyright\nholder fails to notify you of the violation by some reasonable means\nprior to 60 days after the cessation.\n\n  Moreover, your license from a particular copyright holder is\nreinstated permanently if the copyright holder notifies you of the\nviolation by some reasonable means, this is the first time you have\nreceived notice of violation of this License (for any work) from that\ncopyright holder, and you cure the violation prior to 30 days after\nyour receipt of the notice.\n\n  Termination of your rights under this section does not terminate the\nlicenses of parties who have received copies or rights from you under\nthis License.  If your rights have been terminated and not permanently\nreinstated, you do not qualify to receive new licenses for the same\nmaterial under section 10.\n\n  9. Acceptance Not Required for Having Copies.\n\n  You are not required to accept this License in order to receive or\nrun a copy of the Program.  Ancillary propagation of a covered work\noccurring solely as a consequence of using peer-to-peer transmission\nto receive a copy likewise does not require acceptance.  However,\nnothing other than this License grants you permission to propagate or\nmodify any covered work.  These actions infringe copyright if you do\nnot accept this License.  Therefore, by modifying or propagating a\ncovered work, you indicate your acceptance of this License to do so.\n\n  10. Automatic Licensing of Downstream Recipients.\n\n  Each time you convey a covered work, the recipient automatically\nreceives a license from the original licensors, to run, modify and\npropagate that work, subject to this License.  You are not responsible\nfor enforcing compliance by third parties with this License.\n\n  An \"entity transaction\" is a transaction transferring control of an\norganization, or substantially all assets of one, or subdividing an\norganization, or merging organizations.  If propagation of a covered\nwork results from an entity transaction, each party to that\ntransaction who receives a copy of the work also receives whatever\nlicenses to the work the party's predecessor in interest had or could\ngive under the previous paragraph, plus a right to possession of the\nCorresponding Source of the work from the predecessor in interest, if\nthe predecessor has it or can get it with reasonable efforts.\n\n  You may not impose any further restrictions on the exercise of the\nrights granted or affirmed under this License.  For example, you may\nnot impose a license fee, royalty, or other charge for exercise of\nrights granted under this License, and you may not initiate litigation\n(including a cross-claim or counterclaim in a lawsuit) alleging that\nany patent claim is infringed by making, using, selling, offering for\nsale, or importing the Program or any portion of it.\n\n  11. Patents.\n\n  A \"contributor\" is a copyright holder who authorizes use under this\nLicense of the Program or a work on which the Program is based.  The\nwork thus licensed is called the contributor's \"contributor version\".\n\n  A contributor's \"essential patent claims\" are all patent claims\nowned or controlled by the contributor, whether already acquired or\nhereafter acquired, that would be infringed by some manner, permitted\nby this License, of making, using, or selling its contributor version,\nbut do not include claims that would be infringed only as a\nconsequence of further modification of the contributor version.  For\npurposes of this definition, \"control\" includes the right to grant\npatent sublicenses in a manner consistent with the requirements of\nthis License.\n\n  Each contributor grants you a non-exclusive, worldwide, royalty-free\npatent license under the contributor's essential patent claims, to\nmake, use, sell, offer for sale, import and otherwise run, modify and\npropagate the contents of its contributor version.\n\n  In the following three paragraphs, a \"patent license\" is any express\nagreement or commitment, however denominated, not to enforce a patent\n(such as an express permission to practice a patent or covenant not to\nsue for patent infringement).  To \"grant\" such a patent license to a\nparty means to make such an agreement or commitment not to enforce a\npatent against the party.\n\n  If you convey a covered work, knowingly relying on a patent license,\nand the Corresponding Source of the work is not available for anyone\nto copy, free of charge and under the terms of this License, through a\npublicly available network server or other readily accessible means,\nthen you must either (1) cause the Corresponding Source to be so\navailable, or (2) arrange to deprive yourself of the benefit of the\npatent license for this particular work, or (3) arrange, in a manner\nconsistent with the requirements of this License, to extend the patent\nlicense to downstream recipients.  \"Knowingly relying\" means you have\nactual knowledge that, but for the patent license, your conveying the\ncovered work in a country, or your recipient's use of the covered work\nin a country, would infringe one or more identifiable patents in that\ncountry that you have reason to believe are valid.\n\n  If, pursuant to or in connection with a single transaction or\narrangement, you convey, or propagate by procuring conveyance of, a\ncovered work, and grant a patent license to some of the parties\nreceiving the covered work authorizing them to use, propagate, modify\nor convey a specific copy of the covered work, then the patent license\nyou grant is automatically extended to all recipients of the covered\nwork and works based on it.\n\n  A patent license is \"discriminatory\" if it does not include within\nthe scope of its coverage, prohibits the exercise of, or is\nconditioned on the non-exercise of one or more of the rights that are\nspecifically granted under this License.  You may not convey a covered\nwork if you are a party to an arrangement with a third party that is\nin the business of distributing software, under which you make payment\nto the third party based on the extent of your activity of conveying\nthe work, and under which the third party grants, to any of the\nparties who would receive the covered work from you, a discriminatory\npatent license (a) in connection with copies of the covered work\nconveyed by you (or copies made from those copies), or (b) primarily\nfor and in connection with specific products or compilations that\ncontain the covered work, unless you entered into that arrangement,\nor that patent license was granted, prior to 28 March 2007.\n\n  Nothing in this License shall be construed as excluding or limiting\nany implied license or other defenses to infringement that may\notherwise be available to you under applicable patent law.\n\n  12. No Surrender of Others' Freedom.\n\n  If conditions are imposed on you (whether by court order, agreement or\notherwise) that contradict the conditions of this License, they do not\nexcuse you from the conditions of this License.  If you cannot convey a\ncovered work so as to satisfy simultaneously your obligations under this\nLicense and any other pertinent obligations, then as a consequence you may\nnot convey it at all.  For example, if you agree to terms that obligate you\nto collect a royalty for further conveying from those to whom you convey\nthe Program, the only way you could satisfy both those terms and this\nLicense would be to refrain entirely from conveying the Program.\n\n  13. Use with the GNU Affero General Public License.\n\n  Notwithstanding any other provision of this License, you have\npermission to link or combine any covered work with a work licensed\nunder version 3 of the GNU Affero General Public License into a single\ncombined work, and to convey the resulting work.  The terms of this\nLicense will continue to apply to the part which is the covered work,\nbut the special requirements of the GNU Affero General Public License,\nsection 13, concerning interaction through a network will apply to the\ncombination as such.\n\n  14. Revised Versions of this License.\n\n  The Free Software Foundation may publish revised and/or new versions of\nthe GNU General Public License from time to time.  Such new versions will\nbe similar in spirit to the present version, but may differ in detail to\naddress new problems or concerns.\n\n  Each version is given a distinguishing version number.  If the\nProgram specifies that a certain numbered version of the GNU General\nPublic License \"or any later version\" applies to it, you have the\noption of following the terms and conditions either of that numbered\nversion or of any later version published by the Free Software\nFoundation.  If the Program does not specify a version number of the\nGNU General Public License, you may choose any version ever published\nby the Free Software Foundation.\n\n  If the Program specifies that a proxy can decide which future\nversions of the GNU General Public License can be used, that proxy's\npublic statement of acceptance of a version permanently authorizes you\nto choose that version for the Program.\n\n  Later license versions may give you additional or different\npermissions.  However, no additional obligations are imposed on any\nauthor or copyright holder as a result of your choosing to follow a\nlater version.\n\n  15. Disclaimer of Warranty.\n\n  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY\nAPPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT\nHOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM \"AS IS\" WITHOUT WARRANTY\nOF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,\nTHE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\nPURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM\nIS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF\nALL NECESSARY SERVICING, REPAIR OR CORRECTION.\n\n  16. Limitation of Liability.\n\n  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING\nWILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS\nTHE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY\nGENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE\nUSE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF\nDATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD\nPARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),\nEVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF\nSUCH DAMAGES.\n\n  17. Interpretation of Sections 15 and 16.\n\n  If the disclaimer of warranty and limitation of liability provided\nabove cannot be given local legal effect according to their terms,\nreviewing courts shall apply local law that most closely approximates\nan absolute waiver of all civil liability in connection with the\nProgram, unless a warranty or assumption of liability accompanies a\ncopy of the Program in return for a fee.\n\n                     END OF TERMS AND CONDITIONS\n\n            How to Apply These Terms to Your New Programs\n\n  If you develop a new program, and you want it to be of the greatest\npossible use to the public, the best way to achieve this is to make it\nfree software which everyone can redistribute and change under these terms.\n\n  To do so, attach the following notices to the program.  It is safest\nto attach them to the start of each source file to most effectively\nstate the exclusion of warranty; and each file should have at least\nthe \"copyright\" line and a pointer to where the full notice is found.\n\n    <one line to give the program's name and a brief idea of what it does.>\n    Copyright (C) <year>  <name of author>\n\n    This program is free software: you can redistribute it and/or modify\n    it under the terms of the GNU General Public License as published by\n    the Free Software Foundation, either version 3 of the License, or\n    (at your option) any later version.\n\n    This program is distributed in the hope that it will be useful,\n    but WITHOUT ANY WARRANTY; without even the implied warranty of\n    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n    GNU General Public License for more details.\n\n    You should have received a copy of the GNU General Public License\n    along with this program.  If not, see <https://www.gnu.org/licenses/>.\n\nAlso add information on how to contact you by electronic and paper mail.\n\n  If the program does terminal interaction, make it output a short\nnotice like this when it starts in an interactive mode:\n\n    <program>  Copyright (C) <year>  <name of author>\n    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.\n    This is free software, and you are welcome to redistribute it\n    under certain conditions; type `show c' for details.\n\nThe hypothetical commands `show w' and `show c' should show the appropriate\nparts of the General Public License.  Of course, your program's commands\nmight be different; for a GUI interface, you would use an \"about box\".\n\n  You should also get your employer (if you work as a programmer) or school,\nif any, to sign a \"copyright disclaimer\" for the program, if necessary.\nFor more information on this, and how to apply and follow the GNU GPL, see\n<https://www.gnu.org/licenses/>.\n\n  The GNU General Public License does not permit incorporating your program\ninto proprietary programs.  If your program is a subroutine library, you\nmay consider it more useful to permit linking proprietary applications with\nthe library.  If this is what you want to do, use the GNU Lesser General\nPublic License instead of this License.  But first, please read\n<https://www.gnu.org/licenses/why-not-lgpl.html>.\n"
  },
  {
    "path": "Lanzou-Enhanced.user.js",
    "content": "// ==UserScript==\n// @name         蓝奏云网盘增强\n// @version      1.5.8\n// @author       X.I.U\n// @description  文件排序、刷新不回根目录、快捷返回上一级（右键网页空白处）、后退返回上一级、右键文件显示菜单、点击直接下载文件、点击空白进入目录、自动显示更多文件、一键复制所有分享链接、自定义分享链接域名、自动打开/复制分享链接、带密码的分享链接自动输密码、拖入文件自动显示上传框、输入密码后回车确认、优化编辑框初始大小\n// @match        *://lanzou.com/u\n// @match        *://www.lanzou.com/u\n// @match        *://www.lanzou.com/account.php*\n// @match        *://up.woozooo.com/u\n// @match        *://up.woozooo.com/mydisk.php*\n// @match        *://pc.woozooo.com/u\n// @match        *://pc.woozooo.com/mydisk.php*\n// @match        *://pan.lanzou.com/*\n// @match        *://*.lanzoub.com/*\n// @match        *://*.lanzoue.com/*\n// @match        *://*.lanzouf.com/*\n// @match        *://*.lanzouh.com/*\n// @match        *://*.lanzoui.com/*\n// @match        *://*.lanzouj.com/*\n// @match        *://*.lanzoul.com/*\n// @match        *://*.lanzoum.com/*\n// @match        *://*.lanzouo.com/*\n// @match        *://*.lanzoup.com/*\n// @match        *://*.lanzouq.com/*\n// @match        *://*.lanzout.com/*\n// @match        *://*.lanzouu.com/*\n// @match        *://*.lanzouv.com/*\n// @match        *://*.lanzouw.com/*\n// @match        *://*.lanzoux.com/*\n// @match        *://*.lanzouy.com/*\n// @match        *://*.lanzob.com/*\n// @match        *://*.lanzoe.com/*\n// @match        *://*.lanzof.com/*\n// @match        *://*.lanzoh.com/*\n// @match        *://*.lanzoi.com/*\n// @match        *://*.lanzoj.com/*\n// @match        *://*.lanzol.com/*\n// @match        *://*.lanzom.com/*\n// @match        *://*.lanzoo.com/*\n// @match        *://*.lanzop.com/*\n// @match        *://*.lanzoq.com/*\n// @match        *://*.lanzot.com/*\n// @match        *://*.lanzov.com/*\n// @match        *://*.lanzow.com/*\n// @match        *://*.lanzox.com/*\n// @match        *://*.lanzoy.com/*\n// @match        *://*.lanzb.com/*\n// @match        *://*.lanze.com/*\n// @match        *://*.lanzf.com/*\n// @match        *://*.lanzh.com/*\n// @match        *://*.lanzi.com/*\n// @match        *://*.lanzj.com/*\n// @match        *://*.lanzl.com/*\n// @match        *://*.lanzm.com/*\n// @match        *://*.lanzn.com/*\n// @match        *://*.lanzo.com/*\n// @match        *://*.lanzp.com/*\n// @match        *://*.lanzq.com/*\n// @match        *://*.lanzt.com/*\n// @match        *://*.lanzv.com/*\n// @match        *://*.lanzw.com/*\n// @match        *://*.lanzx.com/*\n// @match        *://*.lanzy.com/*\n// @icon         data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABZ0lEQVR4nJ2TvW4UQRCEv+q9H8wGwFlIOEQQIRmnCIcnEidkSAQYEpwQIPEoZPgliB04IiW15JRXAMkne3e6COaMZe7HiEqmpzVV01PTLR9g1kIAGNdYQgrIAmliPfkSRghFQEk46yGB8S0GN3IF9fKAWYHJJjzbx0/30P1H/yBggwKfF9h5gfa/wObDeV6LAkYQDWTWq5shml3A9hR9+AqjFrLMnVkigECzHhqgEf51Affuotef8ahF2UNc0QZ/s9UZnr/Cu+/Q8DZ8O8TDDbT1pDof1ylXu2iqSdP38OYQ2VhCj3dh9rM+LhY/rQooII3bMUw/1veVrhIU0E5WehxWQILPEjRC7QQDbga1XKk6vgIDuoRxi/bews5LvHGnFqU/DXDZjMuRnx44T49t2860nc756rSzL/P8cpAnRzUqnV36hQOlO7ezrBRQ2pYLEFigtfUuMRHAiptGcrWAfnyvk/afEr8Bt+re7W42OSoAAAAASUVORK5CYII=\n// @grant        GM_xmlhttpRequest\n// @grant        GM_registerMenuCommand\n// @grant        GM_unregisterMenuCommand\n// @grant        GM_openInTab\n// @grant        GM_getValue\n// @grant        GM_setValue\n// @grant        GM_notification\n// @grant        GM_setClipboard\n// @grant        unsafeWindow\n// @sandbox      JavaScript\n// @noframes\n// @license      GPL-3.0 License\n// @run-at       document-end\n// @namespace    https://github.com/XIU2/UserScript\n// @supportURL   https://github.com/XIU2/UserScript\n// @homepageURL  https://github.com/XIU2/UserScript\n// ==/UserScript==\n\n(function() {\n    'use strict';\n    var menu_ALL = [\n        ['menu_customFileSha', '自定义分享链接域名', '自定义分享链接域名', ''],\n        ['menu_open_fileSha', '自动打开分享链接', '自动打开分享链接', true],\n        ['menu_copy_fileSha', '自动复制分享链接', '自动复制分享链接', true],\n        ['menu_refreshCorrection', '刷新不返回根目录', '刷新不返回根目录', true],\n        ['menu_rightClickMenu', '右键文件显示菜单', '右键文件显示菜单', true],\n        ['menu_directDownload', '点击直接下载文件 (分享链接列表页)', '点击直接下载文件', true],\n        ['menu_folderDescdesMenu', '优化编辑框初始大小', '优化编辑框初始大小', true],\n        ['menu_fileSort', '文件排序', '文件排序', true]\n    ], menu_ID = [], lastFolderID;\n    for (let i=0;i<menu_ALL.length;i++){ // 如果读取到的值为 null 就写入默认值\n        if (GM_getValue(menu_ALL[i][0]) == null){GM_setValue(menu_ALL[i][0], menu_ALL[i][3])};\n    }\n    registerMenuCommand();\n\n    // 注册脚本菜单\n    function registerMenuCommand() {\n        if (menu_ID.length > menu_ALL.length){ // 如果菜单ID数组多于菜单数组，说明不是首次添加菜单，需要卸载所有脚本菜单\n            for (let i=0;i<menu_ID.length;i++){\n                GM_unregisterMenuCommand(menu_ID[i]);\n            }\n        }\n        for (let i=0;i<menu_ALL.length;i++){ // 循环注册脚本菜单\n            menu_ALL[i][3] = GM_getValue(menu_ALL[i][0]);\n            if (menu_ALL[i][0] == 'menu_refreshCorrection') {\n                menu_ID[i] = GM_registerMenuCommand(`${menu_ALL[i][3]?'✅':'❌'} ${menu_ALL[i][1]}`, function(){if(menu_value('menu_refreshCorrection')){UNrefreshCorrection();}else{refreshCorrection();};menu_switch(`${menu_ALL[i][3]}`,`${menu_ALL[i][0]}`,`${menu_ALL[i][2]}`)});\n            } else if (menu_ALL[i][0] === 'menu_customFileSha') {\n                menu_ID[i] = GM_registerMenuCommand(`#️⃣ ${menu_ALL[i][1]}`, function(){customFileSha()});\n            } else {\n                menu_ID[i] = GM_registerMenuCommand(`${menu_ALL[i][3]?'✅':'❌'} ${menu_ALL[i][1]}`, function(){menu_switch(`${menu_ALL[i][3]}`,`${menu_ALL[i][0]}`,`${menu_ALL[i][2]}`)});\n            }\n        }\n        menu_ID[menu_ID.length] = GM_registerMenuCommand('💬 反馈 & 建议', function () {window.GM_openInTab('https://github.com/XIU2/UserScript#xiu2userscript', {active: true,insert: true,setParent: true});window.GM_openInTab('https://greasyfork.org/zh-CN/scripts/419224/feedback', {active: true,insert: true,setParent: true});});\n    }\n\n    // 菜单开关\n    function menu_switch(menu_status, Name, Tips) {\n        if (menu_status == 'true') {\n            GM_setValue(`${Name}`, false);\n            if (Name == 'menu_refreshCorrection') {\n                GM_notification({text: `已关闭 [${Tips}] 功能`, timeout: 3500});\n            } else {\n                GM_notification({text: `已关闭 [${Tips}] 功能\\n（点击刷新网页后生效）`, timeout: 3500, onclick: function(){location.reload();}});\n            }\n        } else {\n            GM_setValue(`${Name}`, true);\n            if (Name == 'menu_refreshCorrection') {\n                GM_notification({text: `已开启 [${Tips}] 功能`, timeout: 3500});\n            } else {\n                GM_notification({text: `已开启 [${Tips}] 功能\\n（点击刷新网页后生效）`, timeout: 3500, onclick: function(){location.reload();}});\n            }\n        }\n        registerMenuCommand(); // 重新注册脚本菜单\n    };\n\n    // 返回菜单值\n    function menu_value(menuName) {\n        for (let menu of menu_ALL) {\n            if (menu[0] == menuName) {\n                return menu[3]\n            }\n        }\n    }\n\n\n    if (window.top.location.pathname === '/u' || window.top.location.pathname.indexOf('account.php') > -1 || window.top.location.pathname.indexOf('mydisk.php') > -1) { // 后台页\n        if (window.top.location.href != 'https://pc.woozooo.com/mydisk.php') window.top.location.href = 'https://pc.woozooo.com/mydisk.php';\n        RememberLoginStatus() // 通过延长 cookie 到期时间来一直记住登录状态\n        var mainframe;\n        iframe();\n    } else if (window.top.location.pathname.indexOf('%') > -1) { // > 带密码的分享链接页面\n        shareLinkWithPassword(); //                                 带密码的分享链接自动输密码\n    } else {\n        setTimeout(function() { //                                  延迟 300 毫秒（避免网页还没加载完）\n            if (document.querySelector('#pwdload,#passwddiv')) { // > 分享链接输入密码页\n                enterPassword(); //                                 自动输入密码（仅支持访问 带密码的分享链接 时）\n                enterToPass(); //                                   输入密码后回车确认（针对手动输入密码）\n            }\n            if (document.getElementById('infos')) { //              > 分享链接文件列表页\n                fileMoreS(); //                                     自动显示更多文件\n                directDownload(); //                                点击直接下载文件（分享链接列表页）\n            }\n        }, 300);\n        directDownload_(); //                                       点击直接下载文件（分享链接列表页）\n    }\n\n\n    // 获取 iframe 框架\n    function iframe() {\n        mainframe = document.getElementById('mainframe');\n        if (mainframe) { //                              只有找到 iframe 框架时才会继续运行脚本\n            mainframe = mainframe.contentWindow;\n            if (menu_value('menu_refreshCorrection')) refreshCorrection(); // 刷新不返回根目录（F5）\n            setTimeout(folderDescdes, 500); //           优化编辑框初始大小\n            setTimeout(hideSha, 500); //                 隐藏分享链接窗口（这样自动打开/复制分享链接时，不会一闪而过）\n            fobiddenBack(); //                           禁止浏览器返回（并绑定新的返回事件）\n            EventXMLHttpRequest(); //                    监听 XMLHttpRequest 事件并执行 [自动显示更多文件]\n            setTimeout(clickOpenDirectory, 500); //      点击空白进入目录\n            setTimeout(backToTop, 2000); //              快捷返回上级（右键点击 网页右侧/下方 空白处）\n\n            dragEnter(); //                              拖入文件自动显示上传框\n            setTimeout(viewTop,1000); //                 监听并修改右键菜单 [外链分享地址] 为 [复制并打开分享链接] / [复制分享链接] / [打开分享链接] 之一\n            setTimeout(copyAllfileSha, 500); //          一键复制所有分享链接\n\n            setTimeout(filesSort, 300); //               文件排序\n        }\n    }\n\n\n    // 带密码的分享链接自动输密码\n    function shareLinkWithPassword() {\n        if (location.pathname.indexOf('%E5%AF%86%E7%A0%81') > -1) {\n            let shareLink = location.pathname.split('%')\n            if (shareLink.length > 0) {\n                shareLink = location.origin + shareLink[0]\n                let password = location.pathname.replace('%E5%AF%86%E7%A0%81',':').replace(/%([A-Z]|[0-9]){2}/ig, '').split(':')\n                if (password.length > 0) {\n                    location.replace(shareLink + '?pwd=' + password[password.length - 1])\n                }\n            }\n        }\n    }\n\n\n    // 自动输入密码（仅支持访问 带密码的分享链接 时，比如上面 [带密码的分享链接自动输密码] 功能重定向后的链接）\n    function enterPassword() {\n        if (location.search.indexOf('?pwd=') > -1 || location.search.indexOf('?passwd=') > -1 || location.search.indexOf('?password=') > -1) {\n            let password = location.search.split('=')\n            if (password.length > 0) {\n                document.getElementById('pwd').value = password[password.length - 1]\n                if (document.getElementById('sub')) {\n                    document.getElementById('sub').click();\n                } else {\n                    document.querySelector('.passwddiv-btn[onclick]').click();\n                }\n            }\n        }\n    }\n\n\n    // 刷新不返回根目录（F5）\n    function refreshCorrection() {\n        document.onkeydown = mainframe.onkeydown = function (e) {\n            e = window.event || e;\n            if (e.key === 'F5') {\n                let folderID = /-?\\d+/.exec(mainframe.document.getElementById('filemore').children[0].onclick)\n                if(folderID.length > 0){\n                    mainframe.folder(folderID[0]);\n                    e.returnValue = false;\n                    e.cancelBubble = true;\n                    return false;\n                }\n            }\n        }\n    }\n\n\n    // 恢复刷新机制\n    function UNrefreshCorrection() {\n        document.onkeydown = mainframe.onkeydown = function (e) {\n            e = window.event || e;\n            if (e.key === 'F5') {\n                return true;\n            }\n        }\n    }\n\n\n    // 点击空白进入目录\n    function clickOpenDirectory() {\n        mainframe.document.getElementById('sub_folder_list').onclick = function(e){\n            //console.log(e.target);\n            if (e.target.className && e.target.className == 'f_tb') {\n                e.target.querySelector('span.follink').click()\n            }\n        }\n    }\n\n\n    // 右键文件显示菜单\n    function rightClickMenu() {\n        if (!menu_value('menu_rightClickMenu')) return\n        rightClickMenu_('sub_folder_list', 'fols', 'folse') // 文件夹\n        rightClickMenu_('filelist', 'fs', 'fse') //            文件\n    }\n\n\n    // 右键文件显示菜单，参数：文件/文件夹列表 ID、菜单 ID、菜单 ID前缀\n    function rightClickMenu_(list_id_name, menu_id_name_prefix, list_id_name_prefix) {\n        let list_ = mainframe.document.getElementById(list_id_name);\n        if (!list_) return //                                文件/文件夹列表\n        list_.oncontextmenu = function(e){\n            e.preventDefault(); //                           屏蔽浏览器自身右键菜单\n            let left = e.pageX - 30; //                      右键菜单弹出位置\n            let list_ID = e.target.id;\n            if (e.target.nodeName === 'FONT') {\n                list_ID = e.target.parentNode.parentNode.id\n            } else if(e.target.id === '') {\n                list_ID = e.target.parentNode.id\n            }\n            list_ID = /\\d+/.exec(list_ID)\n            if(list_ID.length > 0){\n                mainframe.document.getElementById(menu_id_name_prefix + list_ID[0]).style.cssText='position: absolute !important; left: ' + left + 'px;' // 修改右键菜单弹出位置（X）\n                mainframe.document.getElementById(list_id_name_prefix + list_ID[0]).focus();\n                mainframe.document.getElementById(list_id_name_prefix + list_ID[0]).click();\n            }\n        }\n    }\n\n\n    // 自动显示更多文件（后台页）\n    function fileMore() {\n        let filemore = mainframe.document.getElementById('filemore'); // 寻找 [显示更多文件] 按钮\n        if (filemore && filemore.style.display === 'block') { //         判断按钮是否存在且可见\n            if (filemore.children[0]) { //                               判断按钮元素下第一个元素是否存在\n                filemore.children[0].click(); //                         点击 [显示更多文件] 按钮\n            }\n        }\n    }\n\n\n    // 自动显示更多文件（分享链接列表页）\n    function fileMoreS() {\n        windowScroll(function (direction, e) {\n            if (direction === 'down') { // 下滑才准备加载更多\n                let scrollTop = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop;\n                let scrollDelta = 500;\n                if (document.documentElement.scrollHeight <= document.documentElement.clientHeight + scrollTop + scrollDelta) {\n                    let filemore = document.getElementById('filemore'); // 寻找 [显示更多文件] 按钮\n                    if (filemore && filemore.style.display != 'none') { // 如果正在加载，就不再点击\n                        if (filemore.textContent.indexOf('更多') > -1){ // 避免已经在加载了，重复点击\n                            filemore.click(); //                           点击 [显示更多文件] 按钮\n                        }\n                    }\n                }\n            }\n        });\n    }\n\n\n    // 点击直接下载文件（分享链接列表页）\n    function directDownload() {\n        if (!menu_value('menu_directDownload')) return\n        if (document.getElementById('infos')) {\n            document.getElementById('infos').addEventListener('click', function(e) {\n                if (e.target.tagName === 'A') { // 针对普通样式的分享链接列表页\n                    e.preventDefault(); // 阻止默认打开链接事件\n                    GM_openInTab(e.target.href + '#download', {active: false, insert: true, setParent: true}); // 后台打开\n                } else { // 针对会员专属样式的分享链接列表页\n                    const link = e.target.closest('a'); // 点击 <a> 元素的子元素时，寻找最近的 <a> 父元素\n                    if ((link && this.contains(link))) {\n                        e.preventDefault(); // 阻止默认打开链接事件\n                        GM_openInTab(link.href + '#download', {active: false, insert: true, setParent: true}); // 后台打开\n                    }\n                }\n            });\n        }\n    }\n    // 点击下载按钮\n    function directDownload_() {\n        if (!menu_value('menu_directDownload')) return\n        if (location.hash != '#download') return\n        let iframe = document.querySelector('iframe.ifr2, iframe.n_downlink');\n        if (iframe) { // 只有找到 iframe 框架时才会继续运行脚本\n            iframe = iframe.contentWindow;\n            let timer = setInterval(function(){\n                if (iframe.document.querySelector('.load [href]')) {\n                    //iframe.document.querySelector('.load a[href]').target = '_top'\n                    //iframe.document.querySelector('.load a[href]').click();\n                    GM_openInTab(iframe.document.querySelector('.load a[href]').href, {active: false, insert: true, setParent: false}); // 后台打开\n                    clearInterval(timer);\n                    // 关闭该后台标签页\n                    if (GM_info.scriptHandler === 'Violentmonkey') { // Violentmonkey 需要延迟一会儿\n                        setTimeout(function(){window.top.close();}, 500)\n                    } else {\n                        window.top.close();\n                    }\n                }\n            }, 10);\n        }\n    }\n\n\n    // 滚动条事件\n    function windowScroll(fn1) {\n        var beforeScrollTop = document.documentElement.scrollTop,\n            fn = fn1 || function () {};\n        setTimeout(function () { // 延时执行，避免刚载入到页面就触发翻页事件\n            window.addEventListener('scroll', function (e) {\n                var afterScrollTop = document.documentElement.scrollTop,\n                    delta = afterScrollTop - beforeScrollTop;\n                if (delta == 0) return false;\n                fn(delta > 0 ? 'down' : 'up', e);\n                beforeScrollTop = afterScrollTop;\n            }, false);\n        }, 1000)\n    }\n\n\n    // 优化编辑框初始大小\n    function folderDescdes() {\n        if (!menu_value('menu_folderDescdesMenu')) return\n        mainframe.document.lastChild.appendChild(mainframe.document.createElement('style')).textContent = `#folder_descdes, #fol_credes, #file_desc {margin: 15px 0px; width: 550px; height: 125px;} input#f_ename_new {min-width: 700px; font-size: 14px;} #f_ename {z-index: 999;left: 15px;}`\n    }\n\n\n    // 拖入文件自动显示上传框\n    function dragEnter() {\n        mainframe.addEventListener('dragenter', function (e) {\n            e.preventDefault();\n            e.stopPropagation();\n            let f_upb = mainframe.document.querySelector('.f_upb')\n            if(f_upb.style.top != '-36px') {\n                f_upb.style.top = '-36px';\n                mainframe.f_upc();\n            }\n        }, false);\n        mainframe.addEventListener('drop', function (e) {\n            e.preventDefault();\n            //e.stopPropagation();\n            //console.log(e.dataTransfer.files)\n        });\n    }\n\n\n    // 一键复制所有分享链接\n    function copyAllfileSha() {\n        var f_data = '', tmep_data = [];\n        let f_tp = mainframe.document.getElementById('f_tp');\n        //console.log(f_tp, mainframe.document.location.href)\n        f_tp.insertAdjacentHTML('afterend', `<a id=\"f_copyAll\" class=\"f_sela\" style=\"float: right; width: auto; font-size: 12px !important; font: inherit; padding: 2px 10px; margin-top: -25px;\" title=\"获取所有分享链接需要一些时间（取决于有多少文件）。&#10;因为分享链接没有显示在网页上，需要通过网页接口获取，因此为了避免太频繁被限制，所以设置了 300ms 间隔时间！\">一键复制所有分享链接</a>`);\n        mainframe.document.getElementById('f_copyAll').onclick = function() {\n            f_data = ''; tmep_data = [];\n            mainframe.document.querySelectorAll('.f_tb').forEach(function (_this) {\n                //console.log(_this, _this.id.indexOf('fol') > -1)\n                if (_this.id.indexOf('fol') > -1) {\n                    //console.log(`task=18&folder_id=${_this.id.replace('fol','')}`)\n                    tmep_data.push([`${_this.querySelector('span[id^=\"folname\"]').textContent}`, `task=18&folder_id=${_this.id.replace('fol','')}`])\n                } else {\n                    //console.log(`task=22&file_id=${_this.id.replace('f','')}`)\n                    tmep_data.push([`${_this.querySelector('span[id^=\"filename\"]').textContent}`, `task=22&file_id=${_this.id.replace('f','')}`])\n                }\n            })\n            //console.log(tmep_data)\n            if (tmep_data.length > 0) {\n                getUrl(0);\n                GM_notification({text: '获取所有分享链接需要一些时间（取决于有多少文件），在此期间请不要关闭网页！', timeout: 5000});\n            }\n        };\n\n\n        function getUrl(i) {\n            //console.log(i)\n            GM_xmlhttpRequest({\n                url: 'https://pc.woozooo.com/doupload.php',\n                method: 'POST',\n                data: tmep_data[i][1],\n                responseType: 'json',\n                overrideMimeType: 'application/json; charset=utf-8',\n                headers: {\n                    'Referer': mainframe.document.location.href,\n                    'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'\n                },\n                timeout: 5000,\n                onload: function (response) {\n                    try {\n                        //console.log('返回内容：',response.response)\n                        if (response.response && response.response.zt === 1) {\n                            //console.log(response.response)\n                            if (response.response.info.f_id) {\n                                //console.log('文件 1',f_data)\n                                f_data += `${tmep_data[i][0]} `\n                                if (menu_value('menu_customFileSha')) {\n                                    f_data += `https://${menu_value('menu_customFileSha')}/${response.response.info.f_id} `\n                                } else {\n                                    f_data += `${response.response.info.is_newd}/${response.response.info.f_id} `\n                                }\n                                if (response.response.info.onof == '1') f_data += `密码:${response.response.info.pwd}`\n                                f_data += `\\n`\n                                //console.log('文件 2',f_data)\n                            } else {\n                                //console.log('目录 1',f_data)\n                                f_data += `${response.response.info.name} `\n                                if (menu_value('menu_customFileSha')) {\n                                    f_data += `${response.response.info.new_url.replace(/\\/\\/.+\\//i, '//' + menu_value('menu_customFileSha') + '/')} `\n                                } else {\n                                    f_data += `${response.response.info.new_url} `\n                                }\n                                if (response.response.info.onof == '1') f_data += `密码:${response.response.info.pwd}`\n                                f_data += `\\n`\n                                //console.log('目录 2',f_data)\n                            }\n                            if (++i < tmep_data.length) {\n                                setTimeout(function(){getUrl(i);}, 300);\n                            } else {\n                                console.log(f_data)\n                                GM_setClipboard(f_data, 'text');\n                                GM_notification({text: '✅ 已复制所有文件/目录的分享链接到剪切板~', timeout: 2000});\n                            }\n                        } else {\n                            GM_notification({text: '❌ 更新失败，请联系作者解决...', timeout: 5000});\n                        }\n                    } catch (e) {\n                        console.log(e);\n                    }\n                }\n            })\n        }\n    }\n\n    // 分享链接相关（点击文件时）\n    function fileSha() {\n        var f_sha = mainframe.document.getElementById('f_sha'); //                      寻找分享链接（下载链接）信息框\n        if (f_sha && f_sha.style.display === 'block') { //                              判断信息框是否存在且可见\n            let f_sha1 = mainframe.document.getElementById('f_sha1'); //                获取分享链接（下载链接）\n            if (f_sha1 && f_sha1.textContent != '') { //                                确保分享链接（下载链接）不是空\n                // 自定义分享链接域名\n                if (menu_value('menu_customFileSha')) {f_sha1.innerText = f_sha1.innerText.replace(/\\/\\/.+\\//i, '//' + menu_value('menu_customFileSha') + '/');}\n                // 打开分享链接\n                if (menu_value('menu_open_fileSha')) {f_sha.style.display = 'none';GM_openInTab(f_sha1.textContent, {active: true,insert: true,setParent: true});}\n                // 复制分享链接（并已复制的提示信息）\n                if (menu_value('menu_copy_fileSha')) {f_sha.style.display = 'none';GM_setClipboard(f_sha1.textContent, 'text');GM_notification({text: '已复制分享链接~', timeout: 2000});}\n                // 直接下载文件\n                //if (menu_value('menu_directDownload')) {f_sha.style.display = 'none';GM_openInTab(f_sha1.textContent + '#download', {active: false,insert: true,setParent: true});}\n            }\n        }\n    }\n\n\n    // 自定义分享链接域名\n    function customFileSha() {\n        let newDomain = prompt('请输入 [自定义分享链接域名]，点击确定后立即生效\\n蓝奏云分享链接末尾的 ID 是唯一的，而前面的域名用谁的都一样\\n示例：pan.lanzoui.com 或 wwe.lanzoui.com 或 xiu.lanzoui.com', GM_getValue('menu_customFileSha'));\n        if (newDomain === '') {\n            GM_setValue('menu_customFileSha', '');\n            registerMenuCommand(); // 重新注册脚本菜单\n        } else if (newDomain != null) {\n            GM_setValue('menu_customFileSha', newDomain);\n            registerMenuCommand(); // 重新注册脚本菜单\n        }\n    }\n\n\n    // 隐藏分享链接窗口（这样自动打开/复制分享链接时，不会一闪而过）\n    function hideSha(){\n        if (menu_value('menu_open_fileSha') || menu_value('menu_copy_fileSha')) { // [自动复制分享链接] 或 [自动打开分享链接] 任意一个功能开启时才继续\n            mainframe.document.lastElementChild.appendChild(document.createElement('style')).textContent = '#f_sha {display: none !important;}';\n        }\n    }\n\n\n    // 禁止浏览器返回（并绑定新的返回事件）\n    function fobiddenBack() {\n        history.pushState(null, null, document.URL);\n        window.addEventListener('popstate',backEvent)\n    }\n\n\n    // 允许浏览器返回\n    function enableBack() {\n        history.go(-1);\n        window.removeEventListener('popstate',backEvent)\n    }\n\n\n    // 浏览器后退事件函数\n    function backEvent() {\n        if (lastFolderID) {\n            mainframe.folder(lastFolderID);\n        }\n        history.pushState(null, null, document.URL);\n    }\n\n\n    // 获取上个文件夹 ID（用于浏览器后退事件）\n    function getLastFolderID() {\n        lastFolderID = null\n        let f_tpspan = mainframe.document.querySelectorAll('span.f_tpspan');\n        if (f_tpspan.length > 1) {\n            lastFolderID = /-?\\d+/.exec(f_tpspan[f_tpspan.length - 2].getAttribute('onclick'))[0];\n        }\n    }\n\n\n    // 输入密码后回车确认\n    function enterToPass() {\n        document.getElementById('pwd').onkeydown = function(e){\n            if (e.key === 'Enter') {\n                document.getElementById('sub').click();\n            }\n        };\n    }\n\n\n    // 快捷返回上级（右键点击 网页右侧/下方 空白处）\n    function backToTop() {\n        mainframe.document.getElementById('container').oncontextmenu = mainframe.document.body.oncontextmenu = function(e){\n            if (e.target == this) {\n                e.preventDefault();\n                backEvent();\n            }\n        }\n    }\n\n\n    // 监听 XMLHttpRequest 事件并执行\n    function EventXMLHttpRequest() {\n        var _send = mainframe.XMLHttpRequest.prototype.send\n        function sendReplacement(data) {\n            setTimeout(fileMore, 200); // 自动显示更多文件\n            setTimeout(fileSha, 200); // 自动打开分享链接（点击文件时）\n            setTimeout(rightClickMenu, 500); // 右键文件显示菜单\n            setTimeout(getLastFolderID, 200); // 获取上个文件夹 ID（用于浏览器后退事件）\n            return _send.apply(this, arguments);\n        }\n        mainframe.XMLHttpRequest.prototype.send = sendReplacement;\n    }\n\n\n    // 监听并修改右键菜单 [外链分享地址] 为 [复制并打开分享链接] / [复制分享链接] / [打开分享链接] 之一\n    function viewTop() {\n        const callback = (mutationsList, observer) => {\n            for (const mutation of mutationsList) {\n                for (const target of mutation.addedNodes) {\n                    if (target.nodeType != 1) return\n                    if (target.className === 'f_view') {\n                        //console.log(target)\n                        let f_viewtop = target.querySelector('.f_viewtop');\n                        if (f_viewtop && f_viewtop.textContent === '外链分享地址') {\n                            if (menu_value('menu_open_fileSha') && menu_value('menu_copy_fileSha')) {\n                                f_viewtop.textContent = '复制并打开分享链接';\n                            } else if (menu_value('menu_open_fileSha')) {\n                                f_viewtop.textContent = '打开分享链接';\n                            } else if (menu_value('menu_copy_fileSha')) {\n                                f_viewtop.textContent = '复制分享链接';\n                            }\n                        }\n                    }\n                }\n            }\n        };\n        const observer = new MutationObserver(callback);\n        observer.observe(mainframe.document, { childList: true, subtree: true });\n    }\n\n    // 通过延长 cookie 到期时间来一直记住登录状态\n    function RememberLoginStatus() {\n        // 获取 Cookie\n        function getCookie(name) {\n            if (!name) return ''\n            let arr = document.cookie.split(';');\n            name += '=';\n            for (let i=0; i<arr.length; i++) {let now = arr[i].trim();if (now.indexOf(name) == 0) return now.substring(name.length, now.length);}\n            return '';\n        }\n\n        const ylogin = getCookie('ylogin'), phpdisk_info = getCookie('phpdisk_info')\n        if (ylogin !== '' && phpdisk_info !== '') { // 如果已登录(有相应 cookie)，那么就延长至浏览器支持的到期时间上限（不同浏览器对到期时间的限制不一样，一般是 1-5 年）\n            document.cookie='ylogin=' + ylogin + '; domain=.woozooo.com; expires=Thu, 18 Dec 2099 12:00:00 GMT; path=/'\n            document.cookie='phpdisk_info=' + phpdisk_info + '; domain=pc.woozooo.com; expires=Thu, 18 Dec 2099 12:00:00 GMT; path=/'\n        }\n    }\n\n    // 文件排序\n    function filesSort() {\n        const frame = mainframe;\n        const frameDoc = frame.document;\n\n        const currentStatus = {\n            by: 'name',\n            order: 'asc',\n        }\n\n        let allButtons = undefined;\n\n        // 文件名排序\n        function sortByName(name1, name2) {\n            function sort(a, b) {\n                const strA = a.toLocaleLowerCase().split('');\n                const strB = b.toLocaleLowerCase().split('');\n                for (let i = 0; i < strA.length; i++) {\n                    if (strA[i] === strB[i]) {\n                        continue;\n                    }\n                    if (strB[i] === undefined) return 1;\n                    if (notChinese(strA[i]) && notChinese(strB[i])) {\n                        return strA[i] < strB[i] ? -1 : 1;\n                    } else if (notChinese(strA[i])) {\n                        return -1;\n                    } else if (notChinese(strB[i])) {\n                        return 1;\n                    } else {\n                        return strA[i].localeCompare(strB[i]);\n                    }\n                }\n                if (strA.length === strB.length) {\n                    return 0;\n                } else if (strA.length < strB.length) {\n                    return -1;\n                }\n                return 1;\n            }\n            function notChinese(char) {\n                const charCode = char.charCodeAt(0)\n                return charCode >= 0 && charCode <= 128\n            }\n            return sort(name1, name2);\n        }\n\n        // 创建排序按鈕\n        function createAllButtons() {\n            const tabTitle = frameDoc.querySelector('#container > div.n1 > div.f_th');\n            const name = tabTitle.querySelector('div.f_name');\n            const size = tabTitle.querySelector('div.f_size');\n            const time = tabTitle.querySelector('div.f_time');\n            const down = tabTitle.querySelector('div.f_down'); // 下载量\n            return {\n                name: {\n                    el: createButton(name, 'name', '按 文件名称 排序'),\n                    order: 'asc',\n                },\n                size: {\n                    el: createButton(size, 'size', '按 文件大小 排序'),\n                    order: 'asc',\n                },\n                time: {\n                    el: createButton(time, 'time', '按 上传时间 排序'),\n                    order: 'asc',\n                },\n                down: {\n                    el: createButton(down, 'down', '按 下载次数 排序'),\n                    order: 'asc',\n                }\n            };\n        }\n        function createButton(element, by, title) {\n            // element.insertAdjacentHTML('beforeend', '<a class=\"col_sort_btn\" href=\"javascript: void;\" style=\"font-size: 16px; float: right;\">⇧</a>');\n            let button = frameDoc.createElement('a');\n            button.className = 'col_sort_btn';\n            button.href = 'javascript: void(0);';\n            button.style.fontSize = '16px';\n            button.style.float = 'right';\n            if (by == 'name') {button.style.float = 'left';}\n            button.title = title;\n            button.textContent = '⇧';\n            button.onclick = () => clickSortButton(by, button);\n            element.appendChild(button);\n            return button;\n        }\n\n\n        function getFiles() {\n            const list = frameDoc.querySelector('#filelist');\n            const files = list.childNodes;\n            const filesInfo = [];\n            const now = new Date();\n            for (const file of files) {\n                const name = file.querySelector('.f_name > span.aspanlink > .f_name_title').textContent;\n                const size = parseByteSize(file.querySelector('.f_size').textContent);\n                const time = file.querySelector('.f_time').textContent;\n                const down = parseInt(file.querySelector('.f_down').textContent);\n                filesInfo.push({\n                    info: {\n                        name: name,\n                        size: size,\n                        time: parseTime(now, time),\n                        down: down\n                    },\n                    node: file\n                })\n            }\n            return filesInfo;\n        }\n\n        function getFolders() {\n            const list = frameDoc.querySelector('#sub_folder_list');\n            const folders = list.childNodes;\n            const foldersInfo = [];\n            for (const folder of folders) {\n                const name = folder.querySelector('.f_tb > .f_name2 > span.follink > span').textContent;\n                foldersInfo.push({\n                    info: {\n                        name: name,\n                    },\n                    node: folder\n                })\n            }\n            return foldersInfo;\n        }\n        // 转换文件大小\n        function parseByteSize(text) {\n            const unit = ['B', 'K', 'M', 'G', 'T'];\n            let size = 0;\n            for (let i = 0; i < unit.length; i++) {\n                if (text.indexOf(unit[i]) > -1) {\n                    size = parseFloat(text.replace(unit[i], '')) * Math.pow(1024, i);\n                    break;\n                }\n            }\n            return size;\n        }\n        // 转换时间格式\n        function parseTime(now, text) {\n            function parseDay(time) {\n                const days = [\n                    {\n                        name: '前天',\n                        offset: -2,\n                    },\n                    {\n                        name: '昨天',\n                        offset: -1,\n                    }\n                ];\n                const date = new Date(now.getTime());\n                let index = -1;\n                for (let i = 0; i < days.length; i++) {\n                    if (time.indexOf(days[i].name) > -1) {\n                        index = i;\n                        break;\n                    }\n                }\n                if (index === -1) return new Date(now.getTime());\n                const hourAndMinute = text.replace(days[index].name, '').split(':');\n                const hour = parseInt(hourAndMinute[0]);\n                const minute = parseInt(hourAndMinute[1]);\n                date.setDate(date.getDate() + days[index].offset);\n                date.setHours(hour);\n                date.setMinutes(minute);\n                // 蓝奏云显示比较奇怪，超过24小时，未满48小时，都是昨天，并不以每天0点作为分界\n                if (hour * 60 + minute > now.getHours() * 60 + now.getMinutes()) {\n                    date.setDate(date.getDate() - 1);\n                }\n                return date;\n            }\n            if (text.indexOf('秒前') > -1) {\n                return now.getTime() - parseInt(text.replace('秒前', '')) * 1000;\n            } else if (text.indexOf('分钟前') > -1) {\n                return now.getTime() - parseInt(text.replace('分钟前', '')) * 60 * 1000;\n            } else if (text.indexOf('小时前') > -1) {\n                return now.getTime() - parseInt(text.replace('小时前', '')) * 60 * 60 * 1000;\n            } else if (text.indexOf('昨天') > -1 || text.indexOf('前天') > -1) {\n                return parseDay(text).getTime();\n            } else if (text.indexOf('天前') > -1) {\n                return now.getTime() - parseInt(text.replace('天前', '')) * 24 * 60 * 60 * 1000;\n            } else if (text.indexOf('月前') > -1) { // 我不知道有没有以下几种情况，暂时先写上\n                return now.getTime() - parseInt(text.replace('月前', '')) * 30 * 24 * 60 * 60 * 1000;\n            } else if (text.indexOf('年前') > -1) {\n                return now.getTime() - parseInt(text.replace('年前', '')) * 365 * 24 * 60 * 60 * 1000;\n            }\n            return Date.parse(text);\n        }\n\n        // 排序\n        function sortItems(files, by, order) {\n            let compareFunc;\n            if (by === 'name') {\n                compareFunc = (a, b) => {\n                    return (order === 'asc' ? 1 : -1) * sortByName(a.info.name, b.info.name);\n                }\n            } else {\n                compareFunc = (a, b) => {\n                    const result = a.info[by] > b.info[by] ? 1 : -1;\n                    return (order === 'asc' ? 1 : -1) * result;\n                }\n            }\n            files.sort(compareFunc);\n        }\n\n        function sortFileList() {\n            const files = getFiles();\n            if (files.length > 0) {\n                sortItems(files, currentStatus.by, currentStatus.order);\n                // console.log(files)\n                const fileList = frameDoc.querySelector('#filelist');\n                for (let i = 0; i < files.length; i++) {\n                    fileList.appendChild(files[i].node);\n                }\n            }\n        }\n\n        function sortFolderList() {\n            const folders = getFolders();\n            // console.log(folders);\n            if (folders.length > 0) {\n                // 文件夹只能按名称排序\n                if (currentStatus.by === 'name') {\n                    sortItems(folders, 'name', currentStatus.order);\n                } else {\n                    sortItems(folders, 'name', 'asc'); // 其他情况，皆按名称升序\n                }\n                const folderList = frameDoc.querySelector('#sub_folder_list');\n                for (let i = 0; i < folders.length; i++) {\n                    folderList.appendChild(folders[i].node);\n                }\n            }\n        }\n\n        function fileListCallback(records) {\n            if (!menu_value('menu_fileSort')) return;\n            for (const event of records) {\n                // 自己修改的时候不排序\n                if (event.removedNodes.length > 0) return;\n            }\n            sortFileList();\n        }\n\n        function folderListCallback(records) {\n            if (!menu_value('menu_fileSort')) return;\n            for (const event of records) {\n                // 自己修改的时候不排序\n                if (event.removedNodes.length > 0) return;\n            }\n            sortFolderList();\n        }\n\n        function clickSortButton(by, button) {\n            if (currentStatus.by === by) {\n                // 当前选项，点击时，反转排序\n                currentStatus.order = button.textContent === '⬆' ? 'desc' : 'asc';\n            } else {\n                // 非当前选项，点击时，以图标所示的顺序排序\n                currentStatus.order = button.textContent === '⇧' ? 'asc' : 'desc';\n                // 修改非当前选项按钮的图标\n                for (const key in allButtons) {\n                    if (key === by) continue;\n                    if (Object.hasOwnProperty.call(allButtons, key)) {\n                        const btnItem = allButtons[key];\n                        if (btnItem.el.textContent === '⬆') {\n                            btnItem.el.textContent = '⇧';\n                        } else if (btnItem.el.textContent === '⬇') {\n                            btnItem.el.textContent = '⇩';\n                        }\n                    }\n                }\n            }\n            button.textContent = currentStatus.order === 'asc' ? '⬆' : '⬇';\n            currentStatus.by = by;\n            sortFileList();\n            sortFolderList();\n\n        }\n\n        // create buttons\n        setTimeout(() => {\n            if (allButtons === undefined && menu_value('menu_fileSort')) {\n                allButtons = createAllButtons();\n                // console.log(allButtons);\n                allButtons[currentStatus.by].el.textContent = currentStatus.order === 'asc' ? '⬆' : '⬇';\n            }\n        }, 500);\n\n        // sort files\n        const fileList = frameDoc.querySelector('#filelist');\n        const fileObserver = new MutationObserver(fileListCallback);\n        fileObserver.observe(fileList, { childList: true, attributes: false });\n\n        // sort folders\n        const folderList = frameDoc.querySelector('#sub_folder_list');;\n        const folderObserver = new MutationObserver(folderListCallback);\n        folderObserver.observe(folderList, { childList: true, attributes: false });\n\n\n    }\n})();"
  },
  {
    "path": "Ping.Sx-Enhanced.user.js",
    "content": "// ==UserScript==\n// @name         Ping.Sx enhancement\n// @name:zh-CN   Ping.Sx 增强\n// @name:zh-TW   Ping.Sx 增強\n// @version      1.0.3\n// @author       X.I.U\n// @description  Copy all IPs with one click, clean IP links (click Copy instead of Jump), and quickly go back to the top (blank space on both sides of the right click).\n// @description:zh-CN  一键复制所有 IP、清理 IP 链接（点击复制而不是跳转）、快捷回到顶部（右键两侧空白处）\n// @description:zh-TW  一鍵複製所有 IP、清理 IP 鏈接（點擊複製而不是跳轉）、快捷回到頂部（右鍵兩側空白處）\n// @match        https://ping.sx/ping*\n// @match        https://ping.sx/dig*\n// @match        https://ping.sx/check-port*\n// @icon         data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAD7klEQVR4nO3WWYxfcxQH8M9//LWzdJuWaVMaI6WKKtKOfacVGuHFgy3E8iARDyKWBBEJ8SC2Jy9EeKCSqpoiBJF22k6JbdBqqqilqe4z05ol0xkP5/zz/6dPY3iQuN/kl3vv755z7lm+5/wuBQoUKFCgQIECBQoU+L+iNAb5OpRzHY5xGI8D2PMPfKlDK+qxNe2NyqHa+4k4EkdgWq6paM41GZNSrilXQ16/wE3YN8YAjsKKtH0NNo5GqVxzP6Ia9QHsQmM63IAJuSZmIBPS8UZMwfcYGKPzMA/z8Sl+G61SbQDzcbkoXxmnp7GVeX8+hrEM36bOqamzMeWm4rq0tRefYD36MRsXCJqMYAPeR3faOltQshO9KXsW9uMtQdMLU7+E7/BRbTBPpeEe/Jn33ViKP/J5BOsEzeCZ3HtEcPcVDGIH+kRPLEnZJ1J2qOb6XCarPoM5iGtxI7annTszsMcO0R9M3xC0WJ0vlmYWO/N5G+7Go5nJ3ThF0GetoM0loko9mdk2XIr7RR9VMnxr7j+QtjahBcfjd+zES5m4Llym2qdn1ujfJ2g+WJcvW3EifsFDeE2VJi/jedFg/Wl8D47DXEG5DZmR/YIqD4vp9HQGPCODPg1Xir4ZTCf6cn+6oODN6fQ9+DCTOF3QsqLfVPM9cEsKLhMlnSSoMoBFKXNDyqwQI+/2fH4dh+Xe9fhaUKE3ZZrxdn5wdcr/kLovpu1n87lX9M4w7sh3zVie+h2pvznl36vLaM9J4bWCY7NxAn4WzQLn1sgM47x8XpPGFuf9ItEbE3Bx6l2Bz3F1BtVVo9sk6HEQD+KF9OmqTGab6KMvU/82fJX6H5cFBxeKxl2fL9oy8g9EMzXjDEGhdYLXCzNjnWJCvSro0iHoNSLOhv5MSivuzeQsSdnPBP/niqq8gTm4S/TMSZn5IRyT+q0Z3G6sqRMTZSfaVQ+PyWm8PbM9TZwL7VmRlgysXZSzC4+nzOJ8/6RoyHWCIt1Zne25144tgt+bxKjcjW/wJn7MRHSKiu5L/R2pvxIbS2KEjUvHh7Js48Xo6s3KlEXjDefqFw03oNpIpdSbkjK7BC1KqoddT8rX57s+1V+RQdWDsCG/Wdkr5/cGD9UviTlbOUxmZ4bGZRa3pbMV1Gd1urAgHdibH+zI/Rli/M0SFW0SvyZb8I6g1r+GsuBfC37CTNFYU9OZNtHg9aIfmvCrKOVMUeZ5YhwuF9meg2MzkJPFaF4lqNdolD9po0UJF4msNIlG6UiHN4vZXemBVeK3oXK4VUZnhQaz8K74KWsRFDo6ZRekva25/nOoE9T6u7/nBQoUKFCgQIECBQoUKDBm/AXKhRvkgr+Z+wAAAABJRU5ErkJggg==\n// @grant        GM_setClipboard\n// @grant        GM_registerMenuCommand\n// @grant        GM_unregisterMenuCommand\n// @grant        GM_getValue\n// @grant        GM_setValue\n// @grant        window.onurlchange\n// @license      GPL-3.0 License\n// @run-at       document-end\n// @namespace    https://github.com/XIU2/UserScript\n// @supportURL   https://github.com/XIU2/UserScript\n// ==/UserScript==\n\n(function() {\n    'use strict';\n    // 注册脚本菜单\n    let menu_separator_ID;\n    if (GM_getValue('menu_separator') == null){GM_setValue('menu_separator', true)};\n    registerMenuCommand();\n    function registerMenuCommand() {\n        if (menu_separator_ID) GM_unregisterMenuCommand(menu_separator_ID);\n        menu_separator_ID = GM_registerMenuCommand(`🔁 当前复制 IP 分隔方式为：${GM_getValue('menu_separator')?'[一行一个]':'[逗号分隔]'}`, function(){GM_setValue('menu_separator', !GM_getValue('menu_separator'));registerMenuCommand();}, {title: '点击可切换：当前复制 IP 的分隔方式为 [一行一个](默认) 或 [逗号分隔]，切换后立即生效。'})\n    }\n    // 站长之家\n    // let ip = new Array(); document.querySelectorAll('[name=ip]>a').forEach(function(_this) {ip.push(_this.innerText);});console.log(Array.from(new Set(ip)).sort().toString().replaceAll(',','\\n'))\n\n    window.addEventListener('urlchange', function() {addCopyButton(); cleanLinks(); backToTop();});\n\n    setTimeout(addCopyButton, 2000); // 添加复制按钮\n    setTimeout(cleanLinks, 2000); //    清理链接（可以直接点击复制单个 IP）\n    setTimeout(backToTop, 2000); //     快捷回到顶部（右键左右两侧空白处）\n\n\n    // 添加复制按钮\n    function addCopyButton() {\n        if (document.querySelector('#copy_233, #copynocn_233')) return\n        // 复制全部\n        document.querySelector('header ul').insertAdjacentHTML('afterbegin', `<li><a title=\"复制当前页面下的所有 IP 地址到剪切板\" class=\"text-gray-600 hover:text-gray-900 px-3 lg:px-5 py-2 flex items-center transition duration-150 ease-in-out\" href=\"javascript:void(0);\" title=\"一键复制所有 IP\" id=\"copy_233\">Copy</a></li>`);\n        // 复制非 CN 的 IP\n        document.querySelector('header ul').insertAdjacentHTML('afterbegin', `<li><a title=\"复制当前页面下的所有 IP 地址（国内除外）到剪切板\" class=\"text-gray-600 hover:text-gray-900 px-3 lg:px-5 py-2 flex items-center transition duration-150 ease-in-out\" href=\"javascript:void(0);\" title=\"一键复制非 CN IP\" id=\"copynocn_233\">Copy<del><em>(Cn)</em></del></a></li>`);\n        document.getElementById('copy_233').addEventListener('click', addCopyButtonEvent1)\n        document.getElementById('copynocn_233').addEventListener('click', addCopyButtonEvent2)\n    }\n\n\n    // 复制按钮点击事件\n    function addCopyButtonEvent1() {\n        let ip = new Array();\n        document.querySelectorAll('span.select-all > a[href]').forEach(function(_this) {ip.push(_this.innerText);})\n        if (ip.length > 0) {\n            if (GM_getValue('menu_separator')) {\n                GM_setClipboard(unique(ip).toString().replaceAll(',','\\n'), 'text');\n            } else {\n                GM_setClipboard(unique(ip).toString(), 'text');\n            }\n        }\n    }\n    function addCopyButtonEvent2() {\n        let ip = new Array();\n        document.querySelectorAll('span.select-all > a[href]').forEach(function(_this) {\n            let img = findParentElement(_this, 'TR').querySelector('img.max-w-none');\n            if (img) {if (img.alt != 'CN Flag') ip.push(_this.innerText);}\n        })\n        if (ip.length > 0) {\n            if (GM_getValue('menu_separator')) {\n                GM_setClipboard(unique(ip).toString().replaceAll(',','\\n'), 'text');\n            } else {\n                GM_setClipboard(unique(ip).toString(), 'text');\n            }\n        }\n    }\n\n\n    // 清理链接（可以直接点击复制单个 IP）\n    function cleanLinks() {\n        const callback = (mutationsList, observer) => {\n            for (const mutation of mutationsList) {\n                for (const target of mutation.addedNodes) {\n                    if (target.nodeType != 1) return\n                    if (target.tagName === 'TD' && target.className.indexOf('w-4/12') > -1) {\n                        target.querySelectorAll('span.select-all > a[href]').forEach(function(_this) {\n                            _this.href = 'javascript:void(0);';\n                            _this.target = '_self';\n                        })\n                    }\n                }\n            }\n        };\n        const observer = new MutationObserver(callback);\n        observer.observe(document, { childList: true, subtree: true });\n    }\n\n\n    // 快捷回到顶部（右键左右两侧空白处）\n    function backToTop() {\n        document.querySelector('section.relative').oncontextmenu = function(e){\n            if (e.target == this) {\n                e.preventDefault();\n                window.scrollTo(0,0);\n            }\n        }\n    }\n\n\n    // 数组去重复\n    function unique(arr) {\n        return Array.from(new Set(arr)).sort();\n    }\n\n\n    // 寻找父元素\n    function findParentElement(item, tagName) {\n        if (item.parentElement) {\n            //console.log(item.parentElement)\n            if (item.parentElement.tagName === tagName) {\n                return item.parentElement;\n            } else {\n                let temp = findParentElement(item.parentElement, tagName)\n                if (temp) return temp\n            }\n        }\n        return\n    }\n\n\n    // 自动格式化输入框\n    /*document.getElementById('target').addEventListener('focusout', function(){\n        if (this.value) {\n            this.value = this.value.replace(/(http:\\/\\/|https:\\/\\/|\\:.+|\\/.*)/ig,\"\");\n            this.setAttribute('value',this.value);\n            this.dispatchEvent(new Event('input'));\n        }\n    }, true);*/\n})();"
  },
  {
    "path": "README.md",
    "content": "# XIU2/UserScript\r\n\r\n[![GitHub license](https://img.shields.io/github/license/XIU2/UserScript.svg?style=flat-square&color=4285dd&logo=github)](https://github.com/XIU2/UserScript/)\r\n[![GitHub Star](https://img.shields.io/github/stars/XIU2/UserScript.svg?style=flat-square&label=Star&color=4285dd&logo=github)](https://github.com/XIU2/UserScript/)\r\n[![GitHub Fork](https://img.shields.io/github/forks/XIU2/UserScript.svg?style=flat-square&label=Fork&color=4285dd&logo=github)](https://github.com/XIU2/UserScript/)\r\n[![](https://data.jsdelivr.com/v1/package/gh/XIU2/UserScript/badge)](https://www.jsdelivr.com/package/gh/XIU2/UserScript)\r\n[![](https://img.shields.io/static/v1?label=%20&message=GreasyFork&style=flat-square&labelColor=7B0000&color=960000&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3ggEBCQHM3fXsAAAAVdJREFUOMudkz2qwkAUhc/goBaGJBgUtBCZyj0ILkpwAW7Bws4yO3AHLiCtEFD8KVREkoiFxZzX5A2KGfN4F04zMN+ce+5c4LMUgDmANYBnrnV+plBSi+FwyHq9TgA2LQpvCiEiABwMBtzv95RSfoNEHy8DYBzHrNVqVEr9BWKcqNFoxF6vx3a7zc1mYyC73a4MogBg7vs+z+czO50OW60Wt9stK5UKp9Mpj8cjq9WqDTBHnjAdxzGQZrPJw+HA31oulzbAWgLoA0CWZVBKIY5jzGYzdLtdE9DlcrFNrY98zobqOA6TJKHW2jg4nU5sNBpFDp6mhVe5rsvVasUwDHm9Xqm15u12o+/7Hy0gD8KatOd5vN/v1FozTVN6nkchxFuI6hsAAIMg4OPxMJCXdtTbR7JJCMEgCJhlGUlyPB4XfumozInrupxMJpRSRtZlKoNYl+m/6/wDuWAjtPfsQuwAAAAASUVORK5CYII=)](https://greasyfork.org/zh-CN/users/457025-x-i-u)\r\n\r\n🔨 自用的一些乱七八糟油猴脚本，**有什么需求、建议、问题直接提 [Issues](https://github.com/XIU2/UserScript/issues/new/choose)**，觉得**好用请点个⭐鼓励一下叭~**   \r\n\r\n> 也可以前往 GreasyFork 脚本页向我反馈，如果这两个网站你都没有账号，可以找个临时邮箱注册下(用完扔~    \r\n\r\n> _分享我其他开源项目：[**TrackersList.com** - 全网热门 BT Tracker 列表！有效提高 BT 下载速度~](https://github.com/XIU2/TrackersListCollection) <img src=\"https://img.shields.io/github/stars/XIU2/TrackersListCollection.svg?style=flat-square&label=Star&color=4285dd&logo=github\" height=\"16px\" />_  \r\n> _[**CloudflareSpeedTest** - 🌩 测试 Cloudflare CDN 延迟和速度，获取最快 IP~](https://github.com/XIU2/CloudflareSpeedTest) <img src=\"https://img.shields.io/github/stars/XIU2/CloudflareSpeedTest.svg?style=flat-square&label=Star&color=4285dd&logo=github\" height=\"16px\" />_  \r\n\r\n## 脚本列表\r\n\r\n> _详细的**脚本介绍、使用说明、截图演示**等信息，请点击 **`[安装]`** 查看~（或去本项目 [Wiki](https://github.com/XIU2/UserScript/wiki) 查看_  \r\n\r\n|  | 脚本名称 | 脚本功能 | 安装 \\| 备用 |\r\n| :----: | :---- | :---- | :----: |\r\n| [<img src=\"https://avatars.githubusercontent.com/u/54703944?s=16&v=4\" height=\"16px\" />](https://github.com/XIU2) | **护眼模式** | 简单有效的全网通用护眼模式、夜间模式、暗黑模式~ | **[安装](https://greasyfork.org/zh-CN/scripts/426377)** \\| **[备用](https://bitbucket.org/xiu2/userscript/raw/master/DarkMode.user.js)** |\r\n| [<img src=\"https://static.zhihu.com/heifetz/favicon.ico\" height=\"16px\" />](https://www.zhihu.com/people/xiu2) | **知乎 美化** | 宽屏显示、**暗黑模式**、**屏蔽首页活动**、调整图片最大高度... | **[安装](https://greasyfork.org/zh-CN/scripts/412212)** \\| **[备用](https://bitbucket.org/xiu2/userscript/raw/master/Zhihu-Beautification.user.js)** |\r\n| [<img src=\"https://static.zhihu.com/heifetz/favicon.ico\" height=\"16px\" />](https://www.zhihu.com/people/xiu2) | **知乎 增强** | **移除登录弹窗**、**屏蔽首页视频**、屏蔽用户、屏蔽关键词... | **[安装](https://greasyfork.org/zh-CN/scripts/419081)** \\| **[备用](https://bitbucket.org/xiu2/userscript/raw/master/Zhihu-Enhanced.user.js)** |\r\n| [<img src=\"https://www.v2ex.com/static/favicon.ico\" height=\"16px\" />](https://www.v2ex.com/) | **V2EX 增强** | **自动签到**、链接转图片、自动无缝翻页、新标签页打开链... | **[安装](https://greasyfork.org/zh-CN/scripts/424246)** \\| **[备用](https://bitbucket.org/xiu2/userscript/raw/master/V2ex-Enhanced.user.js)** |\r\n| [<img src=\"https://i.loli.net/2021/03/30/ULV9XunaHesqGIR.png\" height=\"16px\" />](https://github.com/XIU2) |  **Github 增强** | **高速下载** Git Clone/SSH、Release、Raw、Code(ZIP) ... | **[安装](https://greasyfork.org/zh-CN/scripts/412245)** \\| **[备用](https://bitbucket.org/xiu2/userscript/raw/master/GithubEnhanced-High-Speed-Download.user.js)** |\r\n| [<img src=\"https://ping.sx/favicon.ico\" height=\"16px\" />](https://ping.sx/ping) |  **Ping.Sx 增强** | **一键复制所有 IP**、清理 IP 链接、快捷回到顶部 ... | **[安装](https://greasyfork.org/zh-CN/scripts/438704)** \\| **[备用](https://bitbucket.org/xiu2/userscript/raw/master/Ping.Sx-Enhanced.user.js)** |\r\n| [<img src=\"https://avatars.githubusercontent.com/u/54703944?s=16&v=4\" height=\"16px\" />](https://github.com/XIU2) |  **自动无缝翻页 \\*** | 无缝衔接下一页内容 **(瀑布流)** 支持各论坛/漫画/百度/谷歌等... | **[安装](https://greasyfork.org/zh-CN/scripts/419215)** \\| **[备用](https://bitbucket.org/xiu2/userscript/raw/master/Autopage.user.js)** |\r\n| [<img src=\"https://www.3dmgame.com/favicon.ico\" height=\"16px\" />](https://bbs.3dmgame.com) | **3DM论坛 美化** | 精简多余内容、样式优化 | **[安装](https://greasyfork.org/zh-CN/scripts/413593)** \\| **[备用](https://bitbucket.org/xiu2/userscript/raw/master/3dm-Beautification.user.js)** |\r\n| [<img src=\"https://www.3dmgame.com/favicon.ico\" height=\"16px\" />](https://bbs.3dmgame.com) | **3DM论坛 增强** | **自动回复**、自动无缝翻页、清理置顶帖子、自动滚至隐藏... | **[安装](https://greasyfork.org/zh-CN/scripts/412890)** \\| **[备用](https://bitbucket.org/xiu2/userscript/raw/master/3dm-Enhanced.user.js)** |\r\n| [<img src=\"https://www.lanzou.com/favicon.ico\" height=\"16px\" />](https://www.lanzou.com) |  **蓝奏云网盘 增强 \\*** | **文件排序、右键显示菜单**、直接下载文件、显示更多文件... | **[安装](https://greasyfork.org/zh-CN/scripts/419224)** \\| **[备用](https://bitbucket.org/xiu2/userscript/raw/master/Lanzou-Enhanced.user.js)** |\r\n| [<img src=\"https://duckduckgo.com/favicon.ico\" height=\"16px\" />](https://duckduckgo.com) | **DuckDuckGo 增强** | **屏蔽指定域名**、修复图标加载、链接不携来源、快捷回到... | **[安装](https://greasyfork.org/zh-CN/scripts/436428)** \\| **[备用](https://bitbucket.org/xiu2/userscript/raw/master/DuckDuckGo-Enhanced.user.js)** |\r\n| [<img src=\"https://www.52pojie.cn/favicon.ico\" height=\"16px\" />](https://www.52pojie.cn) | **吾爱破解论坛 美化** | 精简多余内容、样式优化 | **[安装](https://greasyfork.org/zh-CN/scripts/412681)** \\| **[备用](https://bitbucket.org/xiu2/userscript/raw/master/52pojie-Beautification.user.js)** |\r\n| [<img src=\"https://www.52pojie.cn/favicon.ico\" height=\"16px\" />](https://www.52pojie.cn) | **吾爱破解论坛 增强** | **自动签到**、自动无缝翻页、屏蔽导读悬赏贴 (最新发表页)... | **[安装](https://greasyfork.org/zh-CN/scripts/412680)** \\| **[备用](https://bitbucket.org/xiu2/userscript/raw/master/52pojie-Enhanced.user.js)** |\r\n| [<img src=\"https://i.loli.net/2021/03/30/tvOSNCmi4rIH3Ju.png\" height=\"16px\" />](https://hostloc.com) | **全球主机交流论坛 增强 \\*** | **自动访问空间(22积分)、屏蔽用户**、屏蔽关键词、自动翻... | **[安装](https://greasyfork.org/zh-CN/scripts/414005)** \\| **[备用](https://bitbucket.org/xiu2/userscript/raw/master/Hostloc-Enhanced.user.js)** |\r\n| [<img src=\"https://store.steampowered.com/favicon.ico\" height=\"16px\" />](https://store.steampowered.com) | **Steam 创意工坊大图 修复** | 修复 Steam 创意工坊预览大图无法显示的问题 | **[安装](https://github.com/XIU2/UserScript/wiki/Steam-%E5%88%9B%E6%84%8F%E5%B7%A5%E5%9D%8A%E5%A4%A7%E5%9B%BE-%E4%BF%AE%E5%A4%8D)** \\| **[备用](https://bitbucket.org/xiu2/userscript/raw/master/SteamWorkshopImageRepair.user.js)** |\r\n| [<img src=\"https://avatars.githubusercontent.com/u/54703944?s=16&v=4\" height=\"16px\" />](https://github.com/XIU2) | **HTML5 视频音频默认音量** | 避免被 100% 音量**吓一跳**！且支持各网站分别记住音量... | **[安装](https://greasyfork.org/zh-CN/scripts/438400)** \\| **[备用](https://bitbucket.org/xiu2/userscript/raw/master/HTML5Volume.user.js)** |\r\n| [<img src=\"https://avatars.githubusercontent.com/u/54703944?s=16&v=4\" height=\"16px\" />](https://github.com/XIU2) | **右键滚动条回到顶部** | 鼠标**右键**网页右侧的**滚动条**即可**回到顶部** | **[安装](https://greasyfork.org/zh-CN/scripts/506959)** \\| **[备用](https://bitbucket.org/xiu2/userscript/raw/master/RightClick_ScrollBar_BackToTop.user.js)** |\r\n| [<img src=\"https://avatars.githubusercontent.com/u/54703944?s=16&v=4\" height=\"16px\" />](https://github.com/XIU2) | **新标签页打开链接 \\*** | 将网页中所有链接改为**新标签页打开**（可能存在兼容问题 | **[安装](https://greasyfork.org/zh-CN/scripts/429714)** \\| **[备用](https://bitbucket.org/xiu2/userscript/raw/master/TargetBlank.user.js)** |\r\n| [<img src=\"https://translate.google.cn/favicon.ico\" height=\"16px\" />](https://translate.google.cn) |  ~~_**Google 翻译 美化**_~~ | ~~_精简多余内容、修复翻译结果溢出屏幕问题_~~ | ~~_**[安装](https://zhuanlan.zhihu.com/p/286815739)** \\| **[备用](https://zhuanlan.zhihu.com/p/286815739)**_~~ |\r\n| [<img src=\"http://bbs.zhiyoo.net/favicon.ico\" height=\"16px\" />](http://bbs.zhiyoo.net/forum.php?mod=forumdisplay&fid=42&filter=author&orderby=dateline) | ~~_**智友邦论坛 美化**_~~ | ~~_精简多余内容、样式优化、宽屏显示_~~ | ~~_**[安装](https://greasyfork.org/zh-CN/scripts/412361)** \\| **[备用](https://bitbucket.org/xiu2/userscript/raw/master/Zhiyoo-Beautification.user.js)**_~~ |\r\n| [<img src=\"http://bbs.zhiyoo.net/favicon.ico\" height=\"16px\" />](http://bbs.zhiyoo.net/forum.php?mod=forumdisplay&fid=42&filter=author&orderby=dateline) | ~~_**智友邦论坛 增强**_~~ | ~~_自动签到、**自动回复**、自动无缝翻页、快捷回到顶部、附..._~~ | ~~_**[安装](https://greasyfork.org/zh-CN/scripts/412362)** \\| **[备用](https://bitbucket.org/xiu2/userscript/raw/master/Zhiyoo-Enhanced.user.js)**_~~ |\r\n\r\n> [!TIP]\r\n> _脚本名称末尾 **`*`** 代表该脚本为**网友主动提出需求**而写的，不过现在已不再接受新脚本请求了。。。_  \r\n> _所有脚本均在 **Chrome、Firefox、Edge 浏览器 + Tampermonkey 扩展** 环境下测试通过！_\r\n\r\n****\r\n\r\n## 如何安装/使用脚本？\r\n\r\n要使用任何脚本，首先需要浏览器安装 **Tampermonkey  脚本管理器扩展（[Chrome](https://xiu.lanzoub.com/b073l8d1e)** / **[Firefox](https://addons.mozilla.org/firefox/addon/tampermonkey/)** / **[Edge](https://microsoftedge.microsoft.com/addons/detail/tampermonkey/iikmkjmpaadaobahmlepeloendndfphd?hl=zh-CN)）。**  \r\n\r\n- 点击表格 **`[安装]`** 进入脚本介绍页，点击 **`[安装此脚本]`** 后弹出扩展提示，再点击 **`[安装]`** 即可。  \r\n- 如果 GreasyFork 访问速度太慢，可以选择点击 **`[备用]`** 后弹出扩展提示，再去点击 **`[安装]`** 即可。\r\n\r\n> [!IMPORTANT]\r\n> - _其他基于 **Chromium** 内核的浏览器（如国内套皮浏览器）一般都可以使用 Chrome 扩展。_  \r\n> - _请确保使用 **Tampermonkey 正式版** 扩展，其他的用户脚本管理器可能导致**无法正常使用**脚本。_  \r\n> - _如果要重装脚本，请记得在 Tampermonkey 扩展的**回收站中彻底删除**脚本后再去重新安装脚本。_  \r\n\r\n> _**不会离线安装 .crx 扩展？[Chrome、Edge 重新开启隐藏的 [拖入安装 .crx 扩展] 功能！](https://zhuanlan.zhihu.com/p/276027099)**_  \r\n\r\n****\r\n\r\n## Tampermonkey `v5.0.0` 后脚本在 `部分网站` 无法正常运行？\r\n\r\nTampermonkey 为了顺应 Chrome 的 Manifest V3 要求，在 v5.0.0 版本中修改了 CSP 相关选项的默认值。\r\n\r\n你只需要去 Tampermonkey 设置中，先把最顶端的第一个选项 `配置模式:` 默认的 `新手` 改为 `高级`。  \r\n然后翻到下面的 `安全` 选项区域，找到 `修改内容安全策略（CSP）头信息:` 把默认的 `自动` 改为 **`全部移除`** 并点击下面一点的 `保存` 按钮即可解决。\r\n\r\n****\r\n\r\n## Tampermonkey `v5.2.0` 后脚本无法正常运行？\r\n\r\n因为其 v5.2.0 版本转为了 Manifest V3，所以需要在浏览器的**扩展管理**界面**启用 `开发者模式`** 才能正常运行脚本！\r\n\r\n****\r\n\r\n## 新版本 Chrome 系浏览器无法运行任何脚本？\r\n\r\n新版本需要在**扩展管理**界面 Tampermonkey(篡改猴) 详情中**启用 `允许运行用户脚本`** 才能正常运行脚本！\r\n\r\n****\r\n\r\n## 如果脚本帮到你的话就 \"打赏\" 一下吧~🎉✨\r\n\r\n![微信赞赏](https://github.com/XIU2/XIU2/blob/master/img/zs-01.png)![支付宝赞赏](https://github.com/XIU2/XIU2/blob/master/img/zs-02.png)\r\n\r\n****\r\n\r\n## Sponsor\r\n\r\n<a href=\"https://dartnode.com\" title=\"Powered by DartNode - Free VPS for Open Source\"><img src=\"https://dartnode.com/branding/DN-Open-Source-sm.png\" alt=\"Powered by DartNode\" width=\"40%\"></a>\r\n\r\n## License\r\n\r\nThe GPL-3.0 License."
  },
  {
    "path": "RightClick_ScrollBar_BackToTop.user.js",
    "content": "// ==UserScript==\n// @name         Right click scroll bar back to top\n// @name:zh-CN   右键滚动条回到顶部\n// @name:zh-TW   右鍵滾動條回到頂部\n// @name:ru      ПКМ по полоске прокрутки для перехода вверх\n// @version      1.0.0\n// @author       X.I.U\n// @description  Right-click the scroll bar on the right side of the webpage to return to the top\n// @description:zh-CN  鼠标右键网页右侧的滚动条即可回到顶部\n// @description:zh-TW  鼠標右鍵網頁右側的滾動條即可回到頂部\n// @description:ru  Щёлкните правой кнопкой по полосе прокрутки в правой части веб-страницы, чтобы вернуться наверх\n// @match        *://*/*\n// @icon         data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAALfElEQVRYhX2Xe3Bd1XXGf3vvc859X+nq6nUlW5Yly7JlI2xsYzAwtnk4ATpAxkNTHm0mnaTT/gHTTvrIBDLTpp1JUoZppqHQls5AKTR2INOWJJQSXF4x2BhsJCRZ8kuWZckPSVf3/Trn7N3RVTFpQrNn1l97n7O/vda31reWMKMPcmUJA9U8vrwHGdqCHn4HPzePaIxhVSoYbYRXrn7BeMVbCUduF6kVUXHwvQP+6amDaqDnoIompmQytaBnTmB8H5lowrjgFss48SBeI/hUEEZeudLi1ywhJEIJdL6Q8rzal/1a5SGC4XZrYBvWwEZobMdLdH6RH+z/Io1taEeh52fe8tOZbysl/ouWFvANYP7fSz4DgAEBBIL4xiS8ubmnVcTZK68aRK29Dtm8dgnZJydRW+/E2nrnp19nz+7U77+60zt0qMz07J/KxuQTwrIw4rMBCDP6wC+FIIcO34eudDdXf/7jD52Opi772lugY3AZr++hp06gz48j+waRqTWYmVHcS+chEMFeuw1hBzBzY7g/fQE9fmqBYPzBQKrpVa/R4OkCAnXlSvXnX9sIllk220BE4Z8OdHoj54YCK6Od1i2/iUmuRyDRk6NUn3+M0pv/hnf0AE40jEjEqP3oe6Rf/CGOWUTNjFKby2MP7EBtugURFWFxfOhB4+o4yfhrGAdZsxHaqZt6dNce9KXYFSPfGWS68JFqTXSqO7+MCaTqETGTwxSeeoRCOoPT2YUIhFC2jbQF/uwUatU6rPbVUM5T+OfHUO3dWKv6kSsGUIOD6PEPr+fswnanpecFZYVQhFAyjPS9Tj4xw2rcU+pJApEutWsvRjaBW8NUShilkE1JIqlUPfi6VMLNFTBVr+7KYKqJ8uEjlM+dJrR5K0L7eB+9hTd2CFrWYt33h0jH3O5Nj37TBGtgZUBkUN/6q4dQ7UmsnlW450//gU5PPRq460uQXAu+j//i99A/+UdUMoXqbMNkz2OnUkixlF4u9spe/HMTULyEaA7jXkoT2fEbQIXi838DJ4cRDXHkEjc2b0MPHdptZubGpBUbM0UfKQpBRDmKWRSD3tTMk87gddA2WGe4+dkzMD0CyQ5qP/4XVDCAvfkaLMvHamzEClpQzGDF46iuJOH1CaKr2tDZRfzhQ0Ru24NYsYrCM4/jDb+FiHdi3XU/0s3vr7WsGKxcfyPSy+bxi0UqJ8f/IriiE2vrnuWsLefQk8NoO4AMBBB9/XjDI6hQCjdTxq9WCaQ6ULaDFrIeKr3oIlv70Olz2K1xlAVaSUQojD786nKi9e5A3LBHMHn0W+LUUaS1FI9q+iZZWLhHdq/FxFbWSSfsIDIQwVw4g/GK2OuuhloNMzaCaF+DNBJtQfX8LFYigElX0OkQtZKHVy3jqwDlqWncCzPI3nU4t+2FWrH+OLHzHpRl3109memTOhqDi9NfkefHEKvWLTO+VKD68Qf4G27CueFWhJ/Df+0lVFcXJOJYnobm1ZjsJUxuFjyDjK/GNK2gND4ESuDPXcCOSaI7thPqX0ft8OtUn/oTKOQgkET39KJU4RbpZXOtNRW717p+FyRSdYT+v36H4u/fQXbfc3iRDkT3FsTGjWAWEU0OZKfAU9CyEdXVD2lQPduplmo4jkBEbMzK1VgDu5EVTe3gm1RHx6Bcxpz6YLkEO0lMYeFGi6z7eVMqhkT/ZrCb0LNT+NMTRH/nt/BLRdy3X8Nv68Lu6cZEHURjE6K3hirYeLRhDWyA4jxzH40RXJwkeuM29MpN+JcziEsz+Avz6GgcW1pYbUlEQCyHwYpSyxS7rGo+v8man4ZMATrAHf+QSt7FTkWR4QbsjlbIX8IMH0VuuAqj4piGAbhmEPPzI/injnNxMUPuwOtseOIxKKTJ7/8BTBxDdXcjO9sJdTeg01VqH4wg3CDB9bshHMKORbGolVOmeRW09dVdUxkbp3ruNM7GXnS1hK5OYSoSbBDZBcxCBtF3DcUzk6hkhGA0RmtHKx1rOkE04lbzWC1tqMRt1CZHUafPIs8H6/JsNTcgN+9YFq1qgbBUFUvnK9qrVghXCvWN8MBmivueJDtylqaeBKWJaXR4JZEtNyBWrkGt6AJboCZO4J49Rc64xGIhcgtZgm6egKhgtUQQto17WeHOLqCNj5Vowbr7q4j+Lcs1JhhEphcXLTebd0jPwpkx6Lwa++bbCR95ALecp5a6BrvrJoLdHajmMOTnKb3+BrVMntjARpzeFbz8jcfpa22gGm+kMJlm95Zu9M9+iI5G0G3d6EgIUSnjzs/gv/Icgd6rqcvz0IeYWnXc8pEtYnEe8gtXNL7xz74LehHSE3DqNP7EIdx3p5DSh7JNJePiBE/gN3Uz8NWHae5sRJYXqKQvU+raQPg7L6L3/QNMHcfp6EREGjC5LDp9GaOs5VQ/NQI93YctOxFPlwniDh/C3n47JHvrQPTBl3DHjiIDQUQ4jGhOYcqaQFuE0Nl53OnLRHfsZV33KsTxd6GlHeaP477zMl5uAWv7dkyLg6kZREsb+vgCcvPOuoaYuWNQWERs3jAuQ6nooXK6TH566cXnrjQK7uwFaoseWA3oJf2WEhEJUjm/gMgXCfdvQlFFv/R3uCND6FIRv7MfMnOIiaPoI/8NEb2kWAhfoLbdjLr2jmUv/8f+pVbkHRGNnZHum2/udxxtCn4j/vgEIjNTD4O9upfIprUYoxBKo9Z14jumTq7YYD9WayvuR++hs1lkshmha4iuNeDYiIAFMoCevIi+cJHaa29gmvsRTUn0R29g9u1D7bxxv+jrRnpD56cCkdjfV9NzpA+8A5VlLojWAczlGVTAYKXimIU8MlsjtKEXgiF0aRGdm8cEYnXm+O+/gdAGuWsP3shhTHoOEYqCCEF2DsrF5f+e/xiikUldrT6l3z+GevSaTahaZdRY6uFqxRXR1sRyzU/21Gu6OTOMfzmPd6kI8TgiX8B4imouj1QCKmVUNITJ59AnR1F77kH4ZaRnQFroMyeRW3egdt6DwIX391Gshv+4LK2jtcuLqK9t7ALjZXzH1uVM/mb/7BTRnjZEex+idQ2EAnjjR/BdF1PIoV2Bae/F/fh9dL5IYE0XUmpMNo+ev4AINSJWb0UPHa63Z7SvRN3/CHJpFHj2G4iZzAuBbTu+GWpIEGxrQ/3RnlvxG5M4kYa3Lc2u4uyFblnIE+xfAbF2RMtqZGsn/uTYUgHH+dz9eFMnqYx8gO+CEwkjhcDPF/DLHurSaeTm3RiWMsDHeuDrSFvBv3+bi08+N1Vwuj/vZWtu+dwclZlFrESoeZmZysJXoTsCjnVk8dDQBuN+n8RDD9fbcdG7leBX1iOkQjhBOHmQfKGAHW3CS6fR+QClmYuYMyPY265DtPVgtfctiw4V/GcfYfGNQzj3/u4DqlormUoZEQwuc0I//eSnY4G0wPJjmdGhw+mh0fWxNZ0037cXccPd1MXgk+GjNE/tR3+Le+YEyg5TnT6LXlwgcu1u7C99HZlsv3K2+vjvkTs2RvDe3747tm7Dy1SKvzSYPP/MLwxFAkIKEzEye2zswOXX395lJyK0fOFzRHfuglQfqPin59Nn0RNDuJk09vprkd0brmx5H7xCbfgQbrZ83OkfvN1pj0+ZmkBYNhjzCwCeffr/AsBDJyU6kqBwbPzRuTcP/GXV82lYlaJpfQ+BjVdhXX0tNKTAjvzKqKXPTeC++1NKY0c9kVz1SGzb9X8tjIdfzSFCDfUw/noA0scPuxBrwcvmmH3rQIvMm3/y0XdJS4JfIpiIUG9g+wcg6KDnZpGZNDQ0Ii5cSAtlPRHYct13axWvJNwadiiAli4iEP8VAJ89HQtR129TLiG1nos0Nt8dSOi12qi9lRq3utVqT/lirql24hW3vLBQi3d3XUqu73+PZOonBNR/WnbYSMeGTO5/Xf6ZtwDwPwtFRezQVs+sAAAAAElFTkSuQmCC\n// @grant        none\n// @license      GPL-3.0 License\n// @run-at       document-end\n// @namespace    https://github.com/XIU2/UserScript\n// ==/UserScript==\n\n(function() {\n    'use strict';\n    // 获取网页右侧滚动条宽度（如果获取不到就默认 15）\n    const scrollBarWidth = getScrollBarWidth() || 15\n    document.addEventListener('contextmenu', function(e) {\n        // 检查右键点击的位置是否在滚动条区域（鼠标右键点击位置的水平坐标值 大于 网页宽度 - 滚动条宽度 - 10的冗余）\n        const isScrollbar = e.clientX > window.innerWidth - scrollBarWidth - 10;\n        if (isScrollbar) {\n            // 如果右键点击到的元素是 HTML，说明确定是点到了滚动条上面（点击事件会被浏览器透过滚动条响应给网页最根部的 HTML）\n            if (e.target.tagName === 'HTML') {\n                window.scrollTo(0,0);\n            } else if (e.target.tagName !== 'BODY') { // 如果右键点击到的既不是 HTML，也不是 BODY（因为右键单击滚动条左侧区域基本上都是 BODY 这个背景元素），那么可能是点击到了网页内嵌套元素的滚动条，那么就只需要这个元素回到顶部即可\n                e.target.scrollTo(0,0);\n            }\n            e.preventDefault(); // 阻止默认事件（即弹出右键菜单）\n            e.stopPropagation(); // 停止继续向上冒泡（即向上传播触发其他的委托点击事件）\n        }\n    });\n\n    // 获取网页右侧滚动条宽度\n    function getScrollBarWidth() {\n        // 创建一个临时的 div 元素\n        const div = document.createElement('div');\n        div.style.overflow = 'scroll'; // 强制出现滚动条\n        div.style.visibility = 'hidden'; // 不要显示出来\n        //div.style.msOverflowStyle = 'scrollbar'; // needed for WinJS apps?\n        div.style.width = '100px'; // 设置宽度\n        div.style.height = '100px'; // 设置高度\n        document.body.appendChild(div); // 将 div 添加到文档\n\n        // 创建一个内嵌的 div\n        const innerDiv = document.createElement('div');\n        innerDiv.style.width = '100%'; // 设置宽度为 100%\n        innerDiv.style.height = '100%'; // 设置高度为 100%\n        div.appendChild(innerDiv); // 将内嵌 div 添加到外部 div\n\n        // 计算滚动条宽度\n        const scrollBarWidth = div.offsetWidth - innerDiv.offsetWidth;\n\n        // 移除临时 div\n        div.parentNode.removeChild(div);\n\n        return scrollBarWidth; // 返回滚动条宽度\n    }\n})();\n"
  },
  {
    "path": "SteamWorkshopImageRepair.user.js",
    "content": "// ==UserScript==\n// @name         Steam 创意工坊大图修复\n// @version      1.0.0\n// @author       X.I.U\n// @description  修复 Steam 创意工坊预览大图无法显示的问题（Steam 不改的话，长期可用）\n// @match        *://steamcommunity.com/sharedfiles/filedetails/*\n// @match        *://steamcommunity.com/workshop/filedetails/*\n// @icon         data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAL10lEQVR4nL2aeXSVxfnHPzPvXUhIAiELZIFYgkhYApEdwZRSKItYxXNaxWpdqNZSsTWt7a9q3Eu16lFxabHUghakLYJgWFMgGLYQEoGkCQHLEkJIyL3JvVnvve/7zu+PGyJZSeK133Pm3HPeeWae7/eZee8788wIeol+8WPxmQKbVKHASASTgYnACCAe6A/Ym809gAu4ABQDR1AcAooMJd2aMKm5cKxXPERPG4TFjwPQBFwPzAfmAclABKB1sxsDcAAngG3AVgUlgOG+8EWP+HRbQGhcCiCkEGo08ABwOzC4J310AoV/ZDYCq5RJAQKztiy/W42v6TwsbjwmCiBawEP4y+De8+0SpcBKBSuBSk0oXBe6FtKlgL6xE8AUAs2cJuAF4Ga6P016CwPYp+BpDHkAqVT9xdxOjTsVEBw7EcAC6i4BL/HNRb0zlCp4CsRaQG+4eKRDow4FBMVOQilsQqilwDNAv2+OZ5dwAc+hxDsIvI0Xc9oZtBNgj5kMYBGoR4HngZBAs1JKNRc/A4FAyk4nQx2QrhArBOhN5YdbVbZqZYuZQoiliXrdfi/wFgGOvGmaAISFhjAwagBhoSGYyqS62k1FlZOGhiakFAjRTowLWNbX4l1Tp9vxlh9qL8A6aCoChULcJFBrgSGBIq7wR/2GxCHcsXAW3/32JIYmxBEcHIQyFa7aOopKzpCxM5vN2/ZRXlmFJmXbbs4rxGKB2q8Q+C4dbCtgGsBAYB0wM2DklcJus3LPD+aRtvRuEq+L7yjCABiGQU7ef3jhtVVkZl2Z761s9wB3ARW+Swe+qrXFTEdarJi69ykUzwHt5PeKPGC3WfnNsntJ+9ligoLszURNqpw1OKvdSCmJjgqnf1hIi7BLlQ5+/cwK1m/KbPuSmsCz0mp90dR15S3PxnJFpanrY0H+BBEY8n4FivsXLyRt6WKC+vjJn/jPl/zlo83syT6Kw+lCSklcTBS3zp3Bj++cT1xMFIOiI3j5maWUVzrZm52HprVQksASUzc2gzgGIOwxqYCUYLwOPBYo7oZpMiYpkU9WL+e6ITEAZOw8QFr6W9TXNzJ75iTGJCXi9enk5BWStf8LkkcN463lv2R00lAAMrOOcPfDz1Ljqm077d4E7XEwTYt/FqnhIG8LFHkAKQR3LprdQj7/eAm/fOotoiPDWf1OOhPGjWiJrMfrY+uug/wqfQVp6W/z4XtPEx0Zzoyp4/jOzRP516e7rx4FgNtA/RlEkRRCIIScL4RMEEISiAKCyIhwvps6EQDdMHj3rxvx+Qze+P1jTB4/shUhu83K7Qtu5qUnHyY3v5gNm/e2PJ/7nclYrTaaeV4pCX7OAinQwkDM849EYIoyIT42moT4QQCUXbxM1v5jLJw7nfFjb+h01ObPnsbY0cPJ2HWIJo8XgFEjhtIvNASl2vmZK9DCJIgkgRwjkASqKCWICO9H3+A+AJRXOHG560kZM7zTv1CAsNBgxiQNpbTsMu7aBgAG9A8lpG8wtPeTDCLJIoSYrPybkYDBarOSelMKffrYoDleCIlS6pptlfIvLVrJFM1PWouPEDBFgpwokJZARd80YNaM8Sz50fwWTzGDIgjvF0be8dOYZuciXO56ThSdJWFwDGGhwQA4a2qpr/cghNbWlwZyghRSGyGkRiCKEpLB8QP53eN3EzHgq2VUXEwUM2ekkLErh5z84k4FbNlxkILicyz43lTsdv/oFRafo67Bg9Q69JkkDUW8EjIgAmw2G8seXsSUCSNbEdM0yU/vv5W+fYNJe/rPZB8uQNeNlvrGJg//+DSLZ//4EVMmjGLRLdMB8Hh87Nybh27QsU9Nixc/e2JF/eeHC4PPllZgGKZ/EdWLXa5hmNw2byrvvfJoy/C3xY49R/nN86uodtWROi2ZUTck4PPpHDl2isNHi7hxzDBee/4hkq73750y9+Vz37LXcLkb6OTdbxK6bnjOXai07dhzlE+3H+KLwjPU1Td2tqztEKapGJowiA/fTiN55Le6tC06Vcrq9Zns2X8CR7UbKQTxsZHcMnsSixd9m0HR4QCUlTt48PE32Z9TiGy/Mr0CJZRSTTTnb1zueg7lnWTTtkPsPXCCixVOlFJddQCAzWbllafu474fzuqmYBNnTR3VNXVomiRyQBihIcEtUS6vrOb/fr+GjVsPdhb5VgLcQOjVT3XdoOS/F9m6+yifZeZSVFJKo8eLlNI/Ks07KtP0/969KJXXn32A4CB7J366B103OHLsNH94ewP7DhUCdDkLFDQJpdQFIK4zoyqnm89ziti0/TD7c09S5XRj0TQS4iIZnhjL4NhIHv7RHBITBvWYcJPHR31DE67aBopPl7F9bz7b9uRz2eHyT+Frv4yXhFIqFxh/LUuP10fByVK2780nckAYc1PHMSA8FAHYbRasVkuPyBecLOXNVRkUnS7DVdtAlbOWxiYvUgpkN989IFcopdYDP+hui+Z9OB6vj39mHGbL7jxMU3HT+OEsmjuJIbFdf9Q9Xh+bduby6srPOH32kn9TL3pE+mp8JJRSv8Wf9+nxRsZd20he4Rk27TrK9uwTxET155Un7mRi8tAO7csqqnlz9Q7WbTlIfYOnq0xEd2AAaaK+wXOzkGJDkN0a2dueTNMk5/h/efzljwkOsrPm5Z8QG9X/qnrFvqMlLF/5GbknzgBdv5zdRCWoW8WD6X8LM0z1yU0pw2bNmTqS+IHhvY5MRtZxHnnxI9IfWciSRTMAcNU18sGm/by3fi+Vzlo0eWU5fO2FXecQgMpEqTssWw6ecjfV123LyC6ctfKTbOZMHcnC1GSSr48jyG7tUbdTxiYyJD6KwwXnePD26RSfrWD5X7ez40Ahum5isfWsvy6h2I4Ubotp+rAF2bcqxKNfllcnvLshm48z85k8+jq+n5pM6o3DiA4PvdYHBQC73ULfkGDqPD6avDqvr93N5uxCrJqGtAU0J3wepbYCWNA0MPSTWCybpBCPAdQ0etl2+CS7875keEI0t0wfxQMLJhPRr+M1zhWUV7kpc9YxbsQQfLrB+ctupNUKWuASHQAotRGffhKLhqzauRz6BJlolg/QtPNoGsJiQbNZ0YXgxNlK/rgui125JZim4viX5TjcDe369Ph0Vu84Sq1HZ+7UJM5VVHO20oW0WUHTAlnOY7F8QFAfs2rn8ua8kJTgrj1O/37vQ+vElgbopuJfnxcyb8oIis9f5rk1/2ZmSiIzUxIJDwnikrOWv2d+wfo9x7hnznimjErgD2v3UlXvQVp69oG7BkzgfRzOY4T3B65aOEcueglgIEJ0mFq0aJInfjiDny6YyD+zCvhTxhHcDR7sNgu1DR5sFo3FM5P5+W1TyC44xy/e3YqztrFb704PsBtT3YWgsuqTJ/28WqpsVjBVBZCOEH+nTXLXqxRvbM7BFIIlc25k9oRh5JZcpNxZS3hIECnDYoiLDCPjyCleWJuFo8GL7OHy4ho4j1LpaFSizJaHrXfJd72KGBSLqii/FyHapdeVUlg0yeQb4rhj6ghShg4kLNhOo1en+IKDLTmnyDx2hrpG79f9yraFC6WWyQFRa0xHJY51v+pYAEDEPW+AqSxo8lGE6PCAwzBNLFISFmwnyGbBoxu4Gzx4dQMpur8R6ibqUCodw1iBlLrjw1+0quzQU8T9K0BhQ0r/EZMQ7Q86lPLn/fkq1RToCY9S/iMm03wHIbyOD37ezqRTjxFL3gOlLGjaYoR4EfE/PuRTlKLUk5jGOoTQHe8/0qFZlyGLWLoKDEOgadOQ8gUQzcesX2cd0xUEgAFqH6b5NIZ5AE0qxzsPdt2iK0SkrQPDBxCNEA8h5EPf4GiUYporUWolqEosdhyv3tllg25P2ognPgalJEKMRsgHEOL2ZiFf/6qB4gJKbUSZq4ACwHS80jXxK+ix84gnN4BAQ3E9Us5HiK8ue4irTvHbzrKrPamrLnsotQ3T3IqgBIXheOmOHvHpdfQilmcgpw/B3H0mFIT/uo0QE0H4r9sI+gO2Zh8eFDVAGUoVg2q+bqOKGBbh5lwNjt8t6BWP/wcq9p13q9HuuQAAAABJRU5ErkJggg==\n// @license      GPL-3.0 License\n// @run-at       document-end\n// @namespace    https://github.com/XIU2/UserScript\n// @supportURL   https://github.com/XIU2/UserScript\n// @homepageURL  https://github.com/XIU2/UserScript\n// ==/UserScript==\n\nif(typeof onYouTubeIframeAPIReady == 'function') {\n    onYouTubeIframeAPIReady();\n}"
  },
  {
    "path": "TargetBlank.user.js",
    "content": "// ==UserScript==\n// @name         新标签页打开链接\n// @version      1.0.9\n// @author       X.I.U\n// @description  将网页中所有链接改为新标签页打开~\n// @match        *://*/*\n// @icon         data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAALfElEQVRYhX2Xe3Bd1XXGf3vvc859X+nq6nUlW5Yly7JlI2xsYzAwtnk4ATpAxkNTHm0mnaTT/gHTTvrIBDLTpp1JUoZppqHQls5AKTR2INOWJJQSXF4x2BhsJCRZ8kuWZckPSVf3/Trn7N3RVTFpQrNn1l97n7O/vda31reWMKMPcmUJA9U8vrwHGdqCHn4HPzePaIxhVSoYbYRXrn7BeMVbCUduF6kVUXHwvQP+6amDaqDnoIompmQytaBnTmB8H5lowrjgFss48SBeI/hUEEZeudLi1ywhJEIJdL6Q8rzal/1a5SGC4XZrYBvWwEZobMdLdH6RH+z/Io1taEeh52fe8tOZbysl/ouWFvANYP7fSz4DgAEBBIL4xiS8ubmnVcTZK68aRK29Dtm8dgnZJydRW+/E2nrnp19nz+7U77+60zt0qMz07J/KxuQTwrIw4rMBCDP6wC+FIIcO34eudDdXf/7jD52Opi772lugY3AZr++hp06gz48j+waRqTWYmVHcS+chEMFeuw1hBzBzY7g/fQE9fmqBYPzBQKrpVa/R4OkCAnXlSvXnX9sIllk220BE4Z8OdHoj54YCK6Od1i2/iUmuRyDRk6NUn3+M0pv/hnf0AE40jEjEqP3oe6Rf/CGOWUTNjFKby2MP7EBtugURFWFxfOhB4+o4yfhrGAdZsxHaqZt6dNce9KXYFSPfGWS68JFqTXSqO7+MCaTqETGTwxSeeoRCOoPT2YUIhFC2jbQF/uwUatU6rPbVUM5T+OfHUO3dWKv6kSsGUIOD6PEPr+fswnanpecFZYVQhFAyjPS9Tj4xw2rcU+pJApEutWsvRjaBW8NUShilkE1JIqlUPfi6VMLNFTBVr+7KYKqJ8uEjlM+dJrR5K0L7eB+9hTd2CFrWYt33h0jH3O5Nj37TBGtgZUBkUN/6q4dQ7UmsnlW450//gU5PPRq460uQXAu+j//i99A/+UdUMoXqbMNkz2OnUkixlF4u9spe/HMTULyEaA7jXkoT2fEbQIXi838DJ4cRDXHkEjc2b0MPHdptZubGpBUbM0UfKQpBRDmKWRSD3tTMk87gddA2WGe4+dkzMD0CyQ5qP/4XVDCAvfkaLMvHamzEClpQzGDF46iuJOH1CaKr2tDZRfzhQ0Ru24NYsYrCM4/jDb+FiHdi3XU/0s3vr7WsGKxcfyPSy+bxi0UqJ8f/IriiE2vrnuWsLefQk8NoO4AMBBB9/XjDI6hQCjdTxq9WCaQ6ULaDFrIeKr3oIlv70Olz2K1xlAVaSUQojD786nKi9e5A3LBHMHn0W+LUUaS1FI9q+iZZWLhHdq/FxFbWSSfsIDIQwVw4g/GK2OuuhloNMzaCaF+DNBJtQfX8LFYigElX0OkQtZKHVy3jqwDlqWncCzPI3nU4t+2FWrH+OLHzHpRl3109memTOhqDi9NfkefHEKvWLTO+VKD68Qf4G27CueFWhJ/Df+0lVFcXJOJYnobm1ZjsJUxuFjyDjK/GNK2gND4ESuDPXcCOSaI7thPqX0ft8OtUn/oTKOQgkET39KJU4RbpZXOtNRW717p+FyRSdYT+v36H4u/fQXbfc3iRDkT3FsTGjWAWEU0OZKfAU9CyEdXVD2lQPduplmo4jkBEbMzK1VgDu5EVTe3gm1RHx6Bcxpz6YLkEO0lMYeFGi6z7eVMqhkT/ZrCb0LNT+NMTRH/nt/BLRdy3X8Nv68Lu6cZEHURjE6K3hirYeLRhDWyA4jxzH40RXJwkeuM29MpN+JcziEsz+Avz6GgcW1pYbUlEQCyHwYpSyxS7rGo+v8man4ZMATrAHf+QSt7FTkWR4QbsjlbIX8IMH0VuuAqj4piGAbhmEPPzI/injnNxMUPuwOtseOIxKKTJ7/8BTBxDdXcjO9sJdTeg01VqH4wg3CDB9bshHMKORbGolVOmeRW09dVdUxkbp3ruNM7GXnS1hK5OYSoSbBDZBcxCBtF3DcUzk6hkhGA0RmtHKx1rOkE04lbzWC1tqMRt1CZHUafPIs8H6/JsNTcgN+9YFq1qgbBUFUvnK9qrVghXCvWN8MBmivueJDtylqaeBKWJaXR4JZEtNyBWrkGt6AJboCZO4J49Rc64xGIhcgtZgm6egKhgtUQQto17WeHOLqCNj5Vowbr7q4j+Lcs1JhhEphcXLTebd0jPwpkx6Lwa++bbCR95ALecp5a6BrvrJoLdHajmMOTnKb3+BrVMntjARpzeFbz8jcfpa22gGm+kMJlm95Zu9M9+iI5G0G3d6EgIUSnjzs/gv/Icgd6rqcvz0IeYWnXc8pEtYnEe8gtXNL7xz74LehHSE3DqNP7EIdx3p5DSh7JNJePiBE/gN3Uz8NWHae5sRJYXqKQvU+raQPg7L6L3/QNMHcfp6EREGjC5LDp9GaOs5VQ/NQI93YctOxFPlwniDh/C3n47JHvrQPTBl3DHjiIDQUQ4jGhOYcqaQFuE0Nl53OnLRHfsZV33KsTxd6GlHeaP477zMl5uAWv7dkyLg6kZREsb+vgCcvPOuoaYuWNQWERs3jAuQ6nooXK6TH566cXnrjQK7uwFaoseWA3oJf2WEhEJUjm/gMgXCfdvQlFFv/R3uCND6FIRv7MfMnOIiaPoI/8NEb2kWAhfoLbdjLr2jmUv/8f+pVbkHRGNnZHum2/udxxtCn4j/vgEIjNTD4O9upfIprUYoxBKo9Z14jumTq7YYD9WayvuR++hs1lkshmha4iuNeDYiIAFMoCevIi+cJHaa29gmvsRTUn0R29g9u1D7bxxv+jrRnpD56cCkdjfV9NzpA+8A5VlLojWAczlGVTAYKXimIU8MlsjtKEXgiF0aRGdm8cEYnXm+O+/gdAGuWsP3shhTHoOEYqCCEF2DsrF5f+e/xiikUldrT6l3z+GevSaTahaZdRY6uFqxRXR1sRyzU/21Gu6OTOMfzmPd6kI8TgiX8B4imouj1QCKmVUNITJ59AnR1F77kH4ZaRnQFroMyeRW3egdt6DwIX391Gshv+4LK2jtcuLqK9t7ALjZXzH1uVM/mb/7BTRnjZEex+idQ2EAnjjR/BdF1PIoV2Bae/F/fh9dL5IYE0XUmpMNo+ev4AINSJWb0UPHa63Z7SvRN3/CHJpFHj2G4iZzAuBbTu+GWpIEGxrQ/3RnlvxG5M4kYa3Lc2u4uyFblnIE+xfAbF2RMtqZGsn/uTYUgHH+dz9eFMnqYx8gO+CEwkjhcDPF/DLHurSaeTm3RiWMsDHeuDrSFvBv3+bi08+N1Vwuj/vZWtu+dwclZlFrESoeZmZysJXoTsCjnVk8dDQBuN+n8RDD9fbcdG7leBX1iOkQjhBOHmQfKGAHW3CS6fR+QClmYuYMyPY265DtPVgtfctiw4V/GcfYfGNQzj3/u4DqlormUoZEQwuc0I//eSnY4G0wPJjmdGhw+mh0fWxNZ0037cXccPd1MXgk+GjNE/tR3+Le+YEyg5TnT6LXlwgcu1u7C99HZlsv3K2+vjvkTs2RvDe3747tm7Dy1SKvzSYPP/MLwxFAkIKEzEye2zswOXX395lJyK0fOFzRHfuglQfqPin59Nn0RNDuJk09vprkd0brmx5H7xCbfgQbrZ83OkfvN1pj0+ZmkBYNhjzCwCeffr/AsBDJyU6kqBwbPzRuTcP/GXV82lYlaJpfQ+BjVdhXX0tNKTAjvzKqKXPTeC++1NKY0c9kVz1SGzb9X8tjIdfzSFCDfUw/noA0scPuxBrwcvmmH3rQIvMm3/y0XdJS4JfIpiIUG9g+wcg6KDnZpGZNDQ0Ii5cSAtlPRHYct13axWvJNwadiiAli4iEP8VAJ89HQtR129TLiG1nos0Nt8dSOi12qi9lRq3utVqT/lirql24hW3vLBQi3d3XUqu73+PZOonBNR/WnbYSMeGTO5/Xf6ZtwDwPwtFRezQVs+sAAAAAElFTkSuQmCC\n// @grant        none\n// @license      GPL-3.0 License\n// @run-at       document-end\n// @namespace    https://github.com/XIU2/UserScript\n// @supportURL   https://github.com/XIU2/UserScript\n// @homepageURL  https://github.com/XIU2/UserScript\n// @exclude      https://accounts.google.com/*\n// @exclude      https://accounts.google.com.hk/*\n// ==/UserScript==\n\n(function() {\n    'use strict';\n    targetBlank(); //  修改为新标签页打开\n    targetDiscuz(); // 针对 Discuz! 论坛的帖子\n    aObserver(); //    针对动态加载内容中的 a 标签\n\n\n    // 修改为新标签页打开\n    function targetBlank() {\n        document.head.appendChild(document.createElement('base')).target = '_blank'; // 让所有链接默认以新标签页打开\n        Array.from(document.links).forEach(function (_this) { // 排除特殊链接\n            if (_this.onclick || _this.href.slice(0,4) != 'http' || _this.getAttribute('href').slice(0,1) === '#') {\n                _this.target = '_self'\n            }\n        })\n        document.querySelectorAll('form').forEach(function (_this) { // 排除 form 标签\n            if (!_this.target) {_this.target = '_self'}\n        });\n    }\n\n\n    // 针对 Discuz! 论坛的帖子\n    function targetDiscuz() {\n        if (document.querySelector('meta[name=\"author\"][content*=\"Discuz!\"], meta[name=\"generator\"][content*=\"Discuz!\"]') || document.querySelector('body[id=\"nv_forum\"][class^=\"pg_\"][onkeydown*=\"27\"]') || document.querySelector('body[id=\"nv_search\"][onkeydown*=\"27\"]') || (document.querySelector('a[href*=\"www.discuz.net\"]') && document.querySelector('a[href*=\"www.discuz.net\"]').textContent.indexOf('Discuz!') > -1) || (document.getElementById('ft') && document.getElementById('ft').textContent.indexOf('Discuz!') > -1)) {\n            let atarget = document.getElementById('atarget');\n            if (atarget && atarget.className.indexOf('atarget_1') === -1) { // 强制勾选 [新窗]\n                atarget.click();\n            }\n        }\n    }\n\n\n    // 针对动态加载内容中的 a 标签\n    function aObserver() {\n        const callback = (mutationsList, observer) => {\n            for (const mutation of mutationsList) {\n                for (const target of mutation.addedNodes) {\n                    if (target.nodeType != 1) return\n                    if (target.tagName === 'A') {\n                        if (target.onclick || target.href.slice(0,4) != 'http' || target.getAttribute('href').slice(0,1) === '#') {\n                            target.target = '_self'\n                        }\n                    } else {\n                        document.querySelectorAll('a').forEach(function (_this) {\n                            if (_this.onclick || _this.href.slice(0,4) != 'http' || _this.getAttribute('href').slice(0,1) === '#') {\n                                _this.target = '_self'\n                            }\n                        });\n                    }\n                }\n            }\n        };\n        const observer = new MutationObserver(callback);\n        observer.observe(document, { childList: true, subtree: true });\n    }\n})();"
  },
  {
    "path": "V2ex-Enhanced.user.js",
    "content": "// ==UserScript==\n// @name         V2EX 增强\n// @version      1.2.2\n// @author       X.I.U\n// @description  自动签到、链接转图片、自动无缝翻页、使用 SOV2EX 搜索、回到顶部（右键点击两侧空白处）、快速回复（左键双击两侧空白处）、新标签页打开链接、标签页伪装为 Github（摸鱼）\n// @match        *://v2ex.com/*\n// @match        *://*.v2ex.com/*\n// @match        *://www.sov2ex.com/*\n// @icon         data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAOGVYSWZNTQAqAAAACAABh2kABAAAAAEAAAAaAAAAAAACoAIABAAAAAEAAAAgoAMABAAAAAEAAAAgAAAAAI9OQMkAAARKSURBVHicrVe7SzNLFP/t7CObbEg0WliJooUxcAsfYKFW2lh8NhdLwUIsbMTCBG3EIoid4J/xNd9t7ZSAIiJcNaSIYBcbNVlMsq/M3MK762YziVE8EGbYOTnnd55zRsD/xBiT7+/vf+u6vlir1VTLskApFfADRAhhiqIgEokYsVjsNJVK/S0Igg0AAgAUCoW/np+fr15fX5WfUPgZ9fT0WP39/dNjY2P/SowxOZfLXZXLZUVRFIyPjyORSCAUCkEQmh3AGIMgCGCMAYC3D/IFiVIKy7Lw8vKCfD6PcrmsALhijEWFu7u7P4+Pj78URcHMzAyi0WjXCoPnQeLxV6tVXFxcwLIsDA0N/UN0XV8EgGQyCU3TQClFo9FAo9EAY8xb/Xv33OWllIJSCsaYt/L4GWPQNA3JZBIAoOv6olSr1VQASCQS3h/9FgWtC54FPcDbB2UkEgkAQK1WUyXLsgAAiqK0MFNKIQgCKKVcl3ajMChPFEXIsgwAsCwLkltq/jh1K/C7RAhxAQmSX3DQwo2NDZydnbWcu4D9vKFQCNvb21hdXfUU8ZIwaIQHwD3w50Aul/PQflZyjuPg6OgIoVAIKysrbRUGc6wFgH8lhLRV2K4Es9ksotEolpaWuuobTSEAPhIPACSpCV/XtL+/D03TMD8/3ySP5xHiB+BnYIxBFEUQQkAI8faiKHJ/fh7GGPb29nB9fd0kryOAIBAXgCRJkCQJhBBv5QGSJKmJ33EcpNNp5PP5JpnBkHXMgcvLy65cXiqVsLm5iaenp6bvpmkinU7j+PgYw8PD3BJuCgEAr+kEAXXqCQMDAzg5OUFfX19LaN7e3pDJZGDbNtcLXA+4ICzL6nj5uHu3WtwwBIn3rQVAJws/6/WlUgmZTAa6rnvKXHDxeByHh4cghHgXFRcAT8Hy8nLXVy/P0nA4jGw2i8HBQTiO09kDfgD+PvDdWUCWZRwcHGB0dBTuhcczkhsCfyfslvwACSHY3d1FKpXy8oinvAlAEATw7tLPEjB4DgBbW1uYnJyEYRhfb8V+hJ0AtPPA+vo6ZmdnYZpmizy3urruhFNTU17n83dDf9dz6z0cDmNtbQ0LCwswDKNpNON1QK4Hgi7a2dnh/qkdMcZgmmbbCYo7DxBCGKVU4CWh/ybjCQwqNwyD2zWDSdhoNAC8P1gkWZZhmiYsy4KiKCCEeAz1ev1LpfdZqYqiCMaY1xNkWQZRVdUAgHK5/PHxY2bzVv/eb43fa/7RPMhPCPGGUVeXqqqGFI1GTyuVyq9isQhN0xCJRBAKhbqy8KvE2PvDpFgsAgA0TTsVGGPy+fn5m67riizLGBkZQTweh6Io31YUJEopbNtGpVLBw8MDbNtGLBaz5ubmopIgCPbt7e00gCtd15VCofAjSjtRLBazent7pwVBsD0TGWPyzc3N72q1uliv11XHcX70eS7LMlRVNSKRyOnExIT3PP8P91unlxYYZf4AAAAASUVORK5CYII=\n// @grant        GM_xmlhttpRequest\n// @grant        GM_registerMenuCommand\n// @grant        GM_unregisterMenuCommand\n// @grant        GM_openInTab\n// @grant        GM_getValue\n// @grant        GM_setValue\n// @grant        GM_notification\n// @license      GPL-3.0 License\n// @run-at       document-end\n// @namespace    https://github.com/XIU2/UserScript\n// @supportURL   https://github.com/XIU2/UserScript\n// @homepageURL  https://github.com/XIU2/UserScript\n// ==/UserScript==\n\n(function() {\n    'use strict';\n    var menu_ALL = [\n        ['menu_autoClockIn', '自动签到', '自动签到', true],\n        ['menu_linksToImgs', '链接转图片', '链接转图片', true],\n        ['menu_pageLoading', '自动无缝翻页', '自动无缝翻页', true],\n        ['menu_pageLoading_reply', '帖子内自动翻页', '帖子内自动翻页', false],\n        ['menu_backToTop', '回到顶部（右键点击两侧空白处）', '回到顶部', true],\n        ['menu_quickReply', '快速回复（左键双击两侧空白处）', '快速回复', true],\n        ['menu_linksBlank', '新标签页打开链接', '新标签页打开链接', true],\n        ['menu_sov2ex', '使用 SOV2EX 搜索', '使用 SOV2EX 搜索', false],\n        ['menu_fish', '标签页伪装为 Github（摸鱼）', '标签页伪装为 Github', false]\n    ], menu_ID = [], pausePage = true;\n    for (let i=0;i<menu_ALL.length;i++){ // 如果读取到的值为 null 就写入默认值\n        if (GM_getValue(menu_ALL[i][0]) == null){GM_setValue(menu_ALL[i][0], menu_ALL[i][3])};\n    }\n\n    registerMenuCommand();\n\n    // 注册脚本菜单\n    function registerMenuCommand() {\n        if (menu_ID.length > menu_ALL.length){ // 如果菜单ID数组多于菜单数组，说明不是首次添加菜单，需要卸载所有脚本菜单\n            for (let i=0;i<menu_ID.length;i++){\n                GM_unregisterMenuCommand(menu_ID[i]);\n            }\n        }\n        for (let i=0;i<menu_ALL.length;i++){ // 循环注册脚本菜单\n            menu_ALL[i][3] = GM_getValue(menu_ALL[i][0]);\n            menu_ID[i] = GM_registerMenuCommand(`${menu_ALL[i][3]?'✅':'❌'} ${menu_ALL[i][1]}`, function(){menu_switch(`${menu_ALL[i][3]}`,`${menu_ALL[i][0]}`,`${menu_ALL[i][2]}`)});\n        }\n        menu_ID[menu_ID.length] = GM_registerMenuCommand('💬 反馈 & 建议', function () {window.GM_openInTab('https://github.com/XIU2/UserScript#xiu2userscript', {active: true,insert: true,setParent: true});window.GM_openInTab('https://greasyfork.org/zh-CN/scripts/424246/feedback', {active: true,insert: true,setParent: true});});\n    }\n\n    // 菜单开关\n    function menu_switch(menu_status, Name, Tips) {\n        if (menu_status == 'true'){\n            GM_setValue(`${Name}`, false);\n            GM_notification({text: `已关闭 [${Tips}] 功能\\n（点击刷新网页后生效）`, timeout: 3500, onclick: function(){location.reload();}});\n        }else{\n            GM_setValue(`${Name}`, true);\n            GM_notification({text: `已开启 [${Tips}] 功能\\n（点击刷新网页后生效）`, timeout: 3500, onclick: function(){location.reload();}});\n        }\n        registerMenuCommand(); // 重新注册脚本菜单\n    };\n\n    // 返回菜单值\n    function menu_value(menuName) {\n        for (let menu of menu_ALL) {\n            if (menu[0] == menuName) {\n                return menu[3]\n            }\n        }\n    }\n\n\n    // 默认 ID 为 0\n    var curSite = {SiteTypeID: 0};\n\n    // 自动翻页规则\n    let DBSite = {\n        recent: { // 最近主题页\n            SiteTypeID: 1,\n            pager: {\n                type: 1,\n                nextLink: 'css;.page_current+a',\n                pageElement: 'css;.cell.item',\n                HT_insert: ['css;.cell.ps_container:last-of-type', 1],\n                replaceE: '//a[@class=\"page_current\"]/../..',\n                scrollDelta: 1500\n            }\n        },\n        notifications: { // 提醒消息页\n            SiteTypeID: 2,\n            pager: {\n                type: 1,\n                nextLink: 'css;.page_current+a',\n                pageElement: 'css;#notifications > div',\n                HT_insert: ['css;#notifications', 3],\n                replaceE: '//a[@class=\"page_current\"]/../..',\n                scrollDelta: 1500\n            }\n        },\n        replies: { // 用户回复页\n            SiteTypeID: 3,\n            pager: {\n                type: 1,\n                nextLink: 'css;.page_current+a',\n                pageElement: 'css;#Main>.box>.dock_area,#Main>.box>.dock_area+.inner,#Main>.box>.dock_area+.cell:not([style])',\n                HT_insert: ['css;.cell.ps_container:last-of-type', 1],\n                replaceE: '//a[@class=\"page_current\"]/../..',\n                scrollDelta: 1500\n            }\n        },\n        go: { // 分类主题页\n            SiteTypeID: 4,\n            pager: {\n                type: 1,\n                nextLink: 'css;.page_current+a',\n                pageElement: 'css;#TopicsNode > div',\n                HT_insert: ['css;#TopicsNode', 3],\n                replaceE: '//a[@class=\"page_current\"]/../..',\n                scrollDelta: 1500\n            }\n        },\n        reply: { // 帖子内容页（从前往后）\n            SiteTypeID: 5,\n            pager: {\n                type: 1,\n                nextLink: 'css;.page_current+a',\n                pageElement: 'css;.cell[id^=\"r_\"]',\n                HT_insert: ['css;.cell.ps_container:last-of-type', 1],\n                replaceE: '//a[@class=\"page_current\"]/../..',\n                scrollDelta: 1500\n            }\n        },\n        reply_positive: { // 帖子内容页（从后往前）\n            SiteTypeID: 6,\n            pager: {\n                type: 1,\n                nextLink: 'css;.page_current+a',\n                pageElement: 'css;.cell[id^=\"r_\"]',\n                HT_insert: ['css;.cell[id^=\"r_\"]', 1],\n                replaceE: '//a[@class=\"page_current\"]/../..',\n                scrollDelta: 1500\n            }\n        },\n        balance: { // 账户余额页\n            SiteTypeID: 7,\n            pager: {\n                type: 1,\n                nextLink: 'css;.page_current+a',\n                pageElement: 'css;table.data>tbody>tr:not(:first-child)',\n                HT_insert: ['css;table.data>tbody', 3],\n                replaceE: '//a[@class=\"page_current\"]/../..',\n                scrollDelta: 1000\n            }\n        },\n        sov2ex: { // sov2ex\n            SiteTypeID: 8,\n            pager: {\n                nextLink: '.paging>a',\n                scrollDelta: 1000\n            }\n        }\n    };\n\n    if (location.hostname === 'www.sov2ex.com') {\n        curSite = DBSite.sov2ex;\n        pageLoading();\n    } else {\n    switch (location.pathname) {\n        case '/': //              首页\n            addChangesLink();\n            break;\n        case '/recent': //        最近主题页\n            curSite = DBSite.recent;\n            break;\n        case '/notifications': // 提醒消息页\n            curSite = DBSite.notifications;\n            break;\n        case '/balance': //       账户余额页\n            curSite = DBSite.balance;\n            break;\n        default:\n            if (location.pathname.indexOf('/go/') > -1) { // 分类主题页\n                curSite = DBSite.go;\n            } else if (location.pathname.indexOf('/t/') > -1) { // 帖子内容页\n                if(menu_value('menu_pageLoading_reply'))curSite = DBSite.reply; // 帖子内自动无缝翻页\n                if(menu_value('menu_quickReply'))quickReply(); // 快速回复（双击左右两侧空白处）\n            } else if (location.pathname.indexOf('/replies') > -1) { // 用户回复页\n                curSite = DBSite.replies;\n            }\n    }\n\n    curSite.pageUrl = ''; // 下一页URL\n    if(menu_value('menu_linksBlank')) linksBlank(); //               新标签页打开链接\n    if(menu_value('menu_fish')) fish(); //                           标签页伪装为 Github（摸鱼）\n    if(menu_value('menu_autoClockIn')) setTimeout(qianDao, 1000); // 自动签到（后台），延迟 1 秒执行是为了兼容 [V2ex Plus] 扩展\n    if(menu_value('menu_pageLoading')) pageLoading(); //             自动翻页（无缝）\n    if(menu_value('menu_backToTop')) backToTop(); //                 回到顶部（右键点击左右两侧空白处）\n    if(menu_value('menu_linksToImgs')) linksToImgs(); //             链接转图片\n    if(menu_value('menu_sov2ex')) setTimeout(soV2ex, 1000); //       替换为 sov2ex 搜索\n    }\n\n    // 自动签到（后台）\n    function qianDao() {\n        let timeNow = new Date().getUTCFullYear() + '/' + (new Date().getUTCMonth() + 1) + '/' + new Date().getUTCDate() // 当前 UTC-0 时间（V2EX 按这个时间的）\n        if (location.pathname == '/') { //                               在首页\n            let qiandao = document.querySelector('.box .inner a[href=\"/mission/daily\"]');\n            if (qiandao) { //                                            如果找到了签到提示\n                qianDao_(qiandao, timeNow); //                           后台签到\n            } else if (document.getElementById('gift_v2excellent')) { // 兼容 [V2ex Plus] 扩展\n                document.getElementById('gift_v2excellent').click();\n                GM_setValue('menu_clockInTime', timeNow); //             写入签到时间以供后续比较\n                console.info('[V2EX 增强] 自动签到完成！')\n            } else { //                                                  都没有找到，说明已经签过到了\n                console.info('[V2EX 增强] 已经签过到了。')\n            }\n        } else { //                                                      不在首页\n            let timeOld = GM_getValue('menu_clockInTime')\n            if (!timeOld || timeOld != timeNow) {\n                qianDaoStatus_(timeNow) //                               后台获取签到状态（并判断是否需要签到）\n            }/* else { //                                                新旧签到时间一致\n                console.info('[V2EX 增强] 已经签过到了。')\n            }*/\n        }\n    }\n\n\n    // 后台签到\n    function qianDao_(qiandao, timeNow) {\n        let url = (location.origin + \"/mission/daily/redeem?\" + RegExp(\"once\\\\=(\\\\d+)\").exec(document.querySelector('div#Top .tools, #menu-body').innerHTML)[0]);\n        GM_xmlhttpRequest({\n            url: url,\n            method: 'GET',\n            timeout: 5000,\n            onload: function (response) {\n                let html = ShowPager.createDocumentByString(response.responseText);\n                //console.log(html)\n                if (html.querySelector('li.fa.fa-ok-sign')) {\n                    html = html.getElementById('Main').textContent.match(/已连续登录 (\\d+?) 天/)[0];\n                    GM_setValue('menu_clockInTime', timeNow); // 写入签到时间以供后续比较\n                    console.info('[V2EX 增强] 自动签到完成！')\n                    if (qiandao) {\n                        qiandao.textContent = `自动签到完成！${html}`;\n                        qiandao.href = 'javascript:void(0);';\n                    }\n                } else {\n                    GM_notification({text: '自动签到失败！请访问 V2EX 首页试试。\\n如果连续几天都签到失败，请联系作者解决！', timeout: 4000, onclick() {window.GM_openInTab('https://github.com/XIU2/UserScript#xiu2userscript', {active: true,insert: true,setParent: true});window.GM_openInTab('https://greasyfork.org/zh-CN/scripts/424246/feedback', {active: true,insert: true,setParent: true});}});\n                    console.warn('[V2EX 增强] 自动签到失败！请访问 V2EX 首页试试。如果连续几天都签到失败，请联系作者解决！')\n                    if (qiandao) qiandao.textContent = '自动签到失败！请尝试手动签到！';\n                }\n            }\n        });\n    }\n\n\n    // 后台获取签到状态（并判断是否需要签到）\n    function qianDaoStatus_(timeNow) {\n        GM_xmlhttpRequest({\n            url: location.origin + '/mission/daily',\n            method: 'GET',\n            timeout: 5000,\n            onload: function (response) {\n                let html = ShowPager.createDocumentByString(response.responseText);\n                if (html.querySelector('input[value^=\"领取\"]')) { //     还没有签到...\n                    qianDao_(null, timeNow); //                          后台签到\n                } else { //                                              已经签到了...\n                    console.info('[V2EX 增强] 已经签过到了。')\n                    GM_setValue('menu_clockInTime', timeNow); //         写入签到时间以供后续比较\n                }\n            }\n        });\n    }\n\n\n    // 替换为 sov2ex 搜索，代码来自 v2ex-plus 扩展：https://github.com/sciooga/v2ex-plus （懒得重复造轮子了~\n    function soV2ex() {\n        document.body.appendChild(document.createElement('script')).textContent = `\n                var $search = $('#search')\n        var searchEvents = $._data($search[0], \"events\" )\n        var oKeydownEvent = searchEvents['keydown'][0]['handler']\n        var oInputEvent = searchEvents['input'][0]['handler']\n        $search.attr(\"placeholder\",\"sov2ex\")\n        $search.unbind('keydown', oKeydownEvent)\n        $search.unbind('input', oInputEvent)\n        $search.on('input', function(e) {\n            oInputEvent(e)\n            $('.search-item:last').attr('href', 'https://www.sov2ex.com/?q=' + $search.val()).text('sov2ex ' +$search.val());\n        })\n        $search.keydown(function(e) {\n            if (e.code == 'Enter' || e.code == 'NumpadEnter' || e.keyCode === 13) {\n                if ($('.search-item:last').is('.active')) {\n                    $(this).val($(this).val().replace(/[#%&]/g,\"\"));//用户输入不能包含特殊字符#%&\n                    window.open(\"https://www.sov2ex.com/?q=\" + $(this).val());\n                    return 0\n                }\n            }\n            oKeydownEvent(e)\n        })\n        `;\n    }\n\n\n    // 回到顶部（右键左右两侧空白处）\n    function backToTop() {\n        document.getElementById('Wrapper').oncontextmenu = document.querySelector('#Wrapper > .content').oncontextmenu = function(event){\n            if (event.target == this) {\n                event.preventDefault();\n                window.scrollTo(0,0)\n            }\n        }\n    }\n\n\n    // 标签页伪装为 Github（摸鱼）\n    function fish() {\n        window.document.title = 'GitHub'\n        if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) {\n            document.querySelector(\"link[rel*='shortcut icon']\").href = 'https://github.githubassets.com/favicons/favicon-dark.png'\n        } else {\n            document.querySelector(\"link[rel*='shortcut icon']\").href = 'https://github.githubassets.com/favicons/favicon.png'\n        }\n    }\n\n\n    // 链接转图片\n    function linksToImgs() {\n        let links = document.links;\n        Array.from(links).forEach(function (_this) {\n            if (/^https.*\\.(?:jpg|jpeg|jpe|bmp|png|gif)/i.test(_this.href) && !(/<img\\s/i.test(_this.innerHTML))) {\n                _this.innerHTML = `<img src=\"${_this.href}\" style=\"max-width: 100%!important;\" />`;\n            } else if (/^https:\\/\\/imgur\\.com\\/[a-z]+$/i.test(_this.href)) { // 针对没有文件后缀的 imgur 图床链接\n                _this.innerHTML = `<img src=\"${_this.href}.png\" style=\"max-width: 100%!important;\" />`;\n            }\n        });\n    }\n\n\n    // 快速回复（双击左右两侧空白处）\n    function quickReply() {\n        document.getElementById('Wrapper').ondblclick = document.querySelector('#Wrapper > .content').ondblclick = function(event){\n            if (event.target==this) {\n                if (document.querySelector('.box.reply-box-sticky')) {\n                    document.getElementById('undock-button').click();\n                } else {\n                    let _top = document.body.scrollTop + document.documentElement.scrollTop;\n                    document.getElementById('reply_content').focus();\n                    window.scrollTo(0,_top);console.log(_top);\n                }\n            }\n        }\n    }\n\n\n    // 新标签页打开链接\n    function linksBlank() {\n        if (location.pathname.indexOf('/settings') > -1) return\n        document.head.appendChild(document.createElement('base')).target = '_blank'; // 让所有链接默认以新标签页打开\n        Array.from(document.links).forEach(function (_this) {\n            if (_this.onclick || _this.href.slice(0,4) != 'http' || _this.href.indexOf('#;') > -1 || _this.href.indexOf('night/toggle') > -1 || _this.href.indexOf('/favorite') > -1 || _this.href.indexOf('/?tab=') > -1) {\n                _this.target = '_self'\n            }\n        })\n        document.querySelectorAll('form').forEach(function (_this) {\n            if (!_this.target) {_this.target = '_self'}\n        });\n\n        const callback = (mutationsList, observer) => {\n            for (const mutation of mutationsList) {\n                for (const target of mutation.addedNodes) {\n                    if (target.nodeType != 1) return\n                    if (target.tagName === 'A') {\n                        if (target.onclick || target.href.slice(0,4) != 'http' || target.href.indexOf('#;') > -1 || target.href.indexOf('night/toggle') > -1 || target.href.indexOf('/favorite') > -1) {\n                            target.target = '_self'\n                        }\n                    } else {\n                        document.querySelectorAll('a').forEach(function (_this) {\n                            if (_this.onclick || _this.href.slice(0,4) != 'http' || _this.href.indexOf('#;') > -1 || _this.href.indexOf('night/toggle') > -1 || _this.href.indexOf('/favorite') > -1) {\n                                _this.target = '_self'\n                            }\n                        });\n                    }\n                }\n            }\n        };\n        const observer = new MutationObserver(callback);\n        observer.observe(document, { childList: true, subtree: true });\n    }\n\n\n    // 添加全站最近更新主题链接\n    function addChangesLink() {\n        let links = document.querySelector('#Main .box .inner:last-child');if (!links) return\n        links.innerHTML = `<div style=\"float: left;\"><span class=\"chevron\">»</span> &nbsp;<a href=\"/recent\" target=\"_blank\">更多新主题</a></div><div style=\"text-align: right;\"><a href=\"/changes\" target=\"_blank\" style=\"text-align: right;\">全站最近更新主题</a> &nbsp;<span class=\"chevron\">«</span></div>`\n    }\n\n\n    // 自动无缝翻页\n    function pageLoading() {\n        if (curSite.SiteTypeID > 0){\n            windowScroll(function (direction, e) {\n                // 下滑 且 未暂停翻页 且 SiteTypeID > 0 时，才准备翻页\n                if (direction != 'down' || !pausePage) return\n                let scrollTop = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop,\n                    scrollHeight = window.innerHeight || document.documentElement.clientHeight,\n                    scrollDelta = curSite.pager.scrollDelta;\n                if (document.documentElement.scrollHeight <= scrollHeight + scrollTop + scrollDelta) {\n                    if (curSite.pager.type === 1) {\n                        ShowPager.loadMorePage();\n                    }else{\n                        let autopbn = document.querySelector(curSite.pager.nextLink);\n                        if (autopbn){\n                            autopbn.click();\n                            pausePage = false\n                            setTimeout(function(){pausePage = true;}, 500)\n                        }\n                    }\n                }\n            });\n        }\n    }\n\n\n    // 滚动条事件\n    function windowScroll(fn1) {\n        var beforeScrollTop = document.documentElement.scrollTop || document.body.scrollTop,\n            fn = fn1 || function () {};\n        setTimeout(function () { // 延时执行，避免刚载入到页面就触发翻页事件\n            window.addEventListener('scroll', function (e) {\n                var afterScrollTop = document.documentElement.scrollTop || document.body.scrollTop,\n                    delta = afterScrollTop - beforeScrollTop;\n                if (delta == 0) return false;\n                fn(delta > 0 ? 'down' : 'up', e);\n                beforeScrollTop = afterScrollTop;\n            }, false);\n        }, 1000)\n    }\n\n\n    // 修改自 https://greasyfork.org/scripts/14178 , https://github.com/machsix/Super-preloader\n    var ShowPager = {\n        getFullHref: function (e) {\n            if (e != null && e.nodeType === 1 && e.href && e.href.slice(0,4) === 'http') return e.href;\n            return '';\n        },\n        createDocumentByString: function (e) {\n            if (e) {\n                if ('HTML' !== document.documentElement.nodeName) return (new DOMParser).parseFromString(e, 'application/xhtml+xml');\n                var t;\n                try { t = (new DOMParser).parseFromString(e, 'text/html');} catch (e) {}\n                if (t) return t;\n                if (document.implementation.createHTMLDocument) {\n                    t = document.implementation.createHTMLDocument('ADocument');\n                } else {\n                    try {((t = document.cloneNode(!1)).appendChild(t.importNode(document.documentElement, !1)), t.documentElement.appendChild(t.createElement('head')), t.documentElement.appendChild(t.createElement('body')));} catch (e) {}\n                }\n                if (t) {\n                    var r = document.createRange(),\n                        n = r.createContextualFragment(e);\n                    r.selectNodeContents(document.body);\n                    t.body.appendChild(n);\n                    for (var a, o = { TITLE: !0, META: !0, LINK: !0, STYLE: !0, BASE: !0}, i = t.body, s = i.childNodes, c = s.length - 1; c >= 0; c--) o[(a = s[c]).nodeName] && i.removeChild(a);\n                    return t;\n                }\n            } else console.error('没有找到要转成 DOM 的字符串');\n        },\n        loadMorePage: function () {\n            if (curSite.pager) {\n                let curPageEle = getOneElements(curSite.pager.nextLink);\n                var url = this.getFullHref(curPageEle);\n                console.log(`${url} ${curPageEle} ${curSite.pageUrl}`);\n                if(url === '') return;\n                if(curSite.pageUrl === url) return;// 不会重复加载相同的页面\n                curSite.pageUrl = url;\n                // 读取下一页的数据\n                curSite.pager.startFilter && curSite.pager.startFilter();\n                GM_xmlhttpRequest({\n                    url: url,\n                    method: \"GET\",\n                    timeout: 5000,\n                    onload: function (response) {\n                        try {\n                            var newBody = ShowPager.createDocumentByString(response.responseText);\n                            let pageElems = getAllElements(curSite.pager.pageElement, newBody, newBody);\n                            let toElement = getAllElements(curSite.pager.HT_insert[0])[0];\n                            if (pageElems.length >= 0) {\n                                // 如果有插入前函数就执行函数\n                                if (curSite.function && curSite.function.before) {\n                                    if (curSite.function.parameter) { // 如果指定了参数\n                                        pageElems = curSite.function.before(curSite.function.parameter);\n                                    }else{\n                                        pageElems = curSite.function.before(pageElems);\n                                    }\n                                }\n                                // 插入位置\n                                let addTo;\n                                switch (curSite.pager.HT_insert[1]) {\n                                    case 1:\n                                        addTo = \"beforebegin\"\n                                        break;\n                                    case 2:\n                                        addTo = \"afterbegin\"\n                                        break;\n                                    case 3:\n                                        addTo = \"beforeend\"\n                                        break;\n                                    case 4:\n                                        addTo = \"afterend\"\n                                        break;\n                                }\n                                // 插入新页面元素\n                                pageElems.forEach(function (one) {\n                                    toElement.insertAdjacentElement(addTo, one);\n                                });\n                                // 替换待替换元素\n                                try {\n                                    let oriE = getAllElements(curSite.pager.replaceE);\n                                    let repE = getAllElements(curSite.pager.replaceE, newBody, newBody);\n                                    if (oriE.length === repE.length) {\n                                        for (var i = 0; i < oriE.length; i++) {\n                                            oriE[i].outerHTML = repE[i].outerHTML;\n                                        }\n                                    }\n                                } catch (e) {\n                                    console.log(e);\n                                }\n                                // 如果有插入后函数就执行函数\n                                if (curSite.function && curSite.function.after) {\n                                    if (curSite.function.parameter) { // 如果指定了参数\n                                        curSite.function.after(curSite.function.parameter);\n                                    }else{\n                                        curSite.function.after();\n                                    }\n                                }\n                            }\n                        } catch (e) {\n                            console.log(e);\n                        }\n                    }\n                });\n            }\n        },\n    };\n    function getElementByCSS(css, contextNode = document) {\n        return contextNode.querySelector(css);\n    }\n    function getAllElementsByCSS(css, contextNode = document) {\n        return [].slice.call(contextNode.querySelectorAll(css));\n    }\n    function getElementByXpath(xpath, contextNode, doc = document) {\n        contextNode = contextNode || doc;\n        try {\n            const result = doc.evaluate(xpath, contextNode, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null);\n            // 应该总是返回一个元素节点\n            return result.singleNodeValue && result.singleNodeValue.nodeType === 1 && result.singleNodeValue;\n        } catch (err) {\n            throw new Error(`Invalid xpath: ${xpath}`);\n        }\n    }\n    function getAllElementsByXpath(xpath, contextNode, doc = document) {\n        contextNode = contextNode || doc;\n        const result = [];\n        try {\n            const query = doc.evaluate(xpath, contextNode, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);\n            for (let i = 0; i < query.snapshotLength; i++) {\n                const node = query.snapshotItem(i);\n                // 如果是 Element 节点\n                if (node.nodeType === 1) result.push(node);\n            }\n        } catch (err) {\n            throw new Error(`无效 Xpath: ${xpath}`);\n        }\n        return result;\n    }\n    function getOneElements(selector, contextNode = undefined, doc = document) {\n        if (!selector) return;\n        contextNode = contextNode || doc;\n        if (selector.search(/^css;/i) === 0) {\n            return getElementByCSS(selector.slice(4), contextNode);\n        } else {\n            return getElementByXpath(selector, contextNode, doc);\n        }\n    }\n    function getAllElements(selector, contextNode = undefined, doc = document, win = window, _cplink = undefined) {\n        if (!selector) return [];\n        contextNode = contextNode || doc;\n        if (typeof selector === 'string') {\n            if (selector.search(/^css;/i) === 0) {\n                return getAllElementsByCSS(selector.slice(4), contextNode);\n            } else {\n                return getAllElementsByXpath(selector, contextNode, doc);\n            }\n        } else {\n            const query = selector(doc, win, _cplink);\n            if (!Array.isArray(query)) {\n                throw new Error('getAllElements 返回错误类型');\n            } else {\n                return query;\n            }\n        }\n    }\n})();"
  },
  {
    "path": "Zhihu-Beautification.user.js",
    "content": "// ==UserScript==\n// @name         知乎美化\n// @version      1.5.20\n// @author       X.I.U\n// @description  宽屏显示、暗黑模式（4种）、暗黑模式跟随浏览器、屏蔽首页活动广告、隐藏文章开头大图、调整图片最大高度、向下翻时自动隐藏顶栏\n// @match        *://www.zhihu.com/*\n// @match        *://zhuanlan.zhihu.com/*\n// @exclude      https://www.zhihu.com/signin*\n// @icon         data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAFo0lEQVR4nJWXT4hlVxHGf9/tJyYuzJtxIziQN8RBFDEtIWB0MW+Mi4CIk4UuAtqvAxPcqAkJRNxMshDUTc8s3TjdO3c9QbIKod+o4CIuZtRFDEi3EIgEM/02jpPIPZ+LqnPv6TeB4IHLPfeeP1X11VdV54i2vewtOhaITcQDdEgdthAdINAGNkgd0IEVbwR17rAmx1TniSVil6e0V0UKgJc8pWdfG5yvwqRhs1FQIyQ3trvcpxsVGd4xf/gelO24yV0usK1VB6APOMDMKSADBShIBWNwj1WwjClAzLEL0CMc86jj9cl/LgRs8ZjCJvexH5r/xAuJa260TatG6DosIee4lHO0ZnWDXH5bgYQ8uql122Iis2Xnj4JtRH675AIHMAQKuAsdrLV3dYXTwQ7Bir1jrzJ+Wyw698yVkLmgxgVg+PGjcPw8zD6JKcgFUcD94AoNa0eXkO600lVqXOPqPrPZNT6tjylYBRZfgp0n4GgFR7dDkEieeNys6ZPCBq4MCicXdFLWdIKBHtMFfC4JY8Hf/nxEyY0jmD+IM7Cgy77gxtto+jF4+NMj8+tY84YOLd8JnZJPpiDxI7shUigimJ2Gwxf5yLb9aryvffOj5+pXKbzJDxOVoIw7REkLhedno7+6CzffgdkpmE3z+5/Nrq7JJMfejc3bNj+TnT4tTyRtmLiAlARKliK09Uis2fsTPPcqvvwNdPlxuP4mbO+P4aQObz0cG958F77+mxMJh9kDcPh0IpCcUIerqycYuc8FGX7zczB/CI6O4cofAA9GjuRjUFhN2I0hmISlNFCUzCGMSkxqfFJw3XD6cXjuOt57A1YfpM/KSSEqY9zLo4w0psLsVnknyhkVYgNPMlRQh+qE63+GSsaBoK2VJcdTKTcKDLmhA/o1BDKFKzKl3aOJcoNBu3SHAAe4ahwwKgBkFRhdMMIc6Chzf+VphruT6urwZBh1aEQXjL/2fZidHoVP74/3xS8GP1IBLQ/hxuGonCLFxpZKjtTpDpRrSjYwYa2p4GcvoPm59ZFU5L54apvP4MZhY2XJMh1u+DB0Qk7ybaIR2EGHl34LV1/HGU5CsP8MbH4Gnvw1vPJX7G48pGw/OiLgyoEKf4PAYH0f6VtdIOAmlwCwugOrO0mDOHRodjrG/vGv9HvyQEprRwQjPB3rWg5oXBNR0A+Vf2wtJwDZaP5ZPL0fVv+B4zto5yJjKK6R0CUPMI7K6jUEsgpKGYqTwXpneGiExKnR4iuZ6d6Ggx/C7FNwdBuu/C6ROBmiUU/6PDuWhh9tEssQHxFQVlmP3wKfPY23Hotfe3+Eq8tYf/kJmE2jdK8pIPWJTDmJAFmq1We57iNnDQol9HWFDbr8rfg8eg+Wb8KV19DyrQjLa08hNal4/hD4l3D+LNr/HvhncPhC49+Ev5475DHfeUjjGrPt4jHY+upgvZOAPL0XRJ2fgwdPNS7IdvADuPgF7m15UDEDOhaXXKQT6RyAzTNw8DxMPxHWn/1p6ObMjc8+DjvfhVMvwOr9EcLjnwc6V38PL78Gq7vYG8PBxAqTzUbInJwoGtlbfA3tfCeEL/8G23sZEaAMIV99HW2egdW/m9Is/Mpf0O4bsPw7tY4os+OAbuUXHZKe8W3gVDLeEjr/uTgRHb0Hy7fyf0PUQd2YH4eZesrRmMBqDhF5gRFiIxSRQoGJxS0Kc8XNRSasHlqStOZ3Nf1aKVQzIKkMzeHTGZaRoEzWmyxIyw6zW6FRQ6c2NapC5pCjuAl5+Od7Tru41vxagEpTOeN0LAq7oe0lH0DeC6uVH0Lito03kbVUnmSrp+yE/967Y8dNfqEvdwD+L09a3BrgbqA/IZS4H4osLE3mHlDzYB30iUJ7XwwklrzPhXWk4ZIXdGxROM//g0ZbQrKXVza0EQcQiWNvcIuOXXbG6/n/AAwhLDO9HaqBAAAAAElFTkSuQmCC\n// @grant        GM_registerMenuCommand\n// @grant        GM_unregisterMenuCommand\n// @grant        GM_openInTab\n// @grant        GM_getValue\n// @grant        GM_setValue\n// @grant        GM_notification\n// @sandbox      JavaScript\n// @license      GPL-3.0 License\n// @run-at       document-start\n// @namespace    https://greasyfork.org/scripts/412212\n// @supportURL   https://github.com/XIU2/UserScript\n// @homepageURL  https://github.com/XIU2/UserScript\n// ==/UserScript==\n\n(function() {\n    'use strict';\n    var menu_ALL = [\n        ['menu_widescreenDisplay', '宽屏显示', '勾选 = 该页面开启宽屏显示（刷新后查看效果）', ''],\n        ['menu_widescreenDisplayIndex', '首页', '宽屏显示', true],\n        ['menu_widescreenDisplayQuestion', '问题页', '宽屏显示', true],\n        ['menu_widescreenDisplaySearch', '搜索页、话题页、圈子', '宽屏显示', true],\n        ['menu_widescreenDisplayCollection', '收藏页', '宽屏显示', true],\n        ['menu_widescreenDisplayPost', '文章页', '宽屏显示', false],\n        ['menu_widescreenDisplayPeople', '用户主页', '用户主页', false],\n        ['menu_widescreenDisplayWidth', '宽屏宽度', '宽屏宽度 (默认 1000)', '1000'],\n        ['menu_darkMode', '暗黑模式', '暗黑模式', true],\n        ['menu_darkModeType', '暗黑模式切换（1~4）', '暗黑模式切换', 1],\n        ['menu_darkModeAuto', '暗黑模式跟随浏览器', '暗黑模式跟随浏览器', false],\n        ['menu_picHeight', '调整图片最大高度', '调整图片最大高度', true],\n        ['menu_postimg', '隐藏文章开头大图', '隐藏文章开头大图', true],\n        ['menu_hideTitle', '向下翻时自动隐藏顶栏', '向下翻时自动隐藏顶栏', true]\n    ], menu_ID = [];\n    for (let i=0;i<menu_ALL.length;i++){ // 如果读取到的值为 null 就写入默认值\n        if (GM_getValue(menu_ALL[i][0]) == null){GM_setValue(menu_ALL[i][0], menu_ALL[i][3])};\n    }\n    registerMenuCommand();\n    addStyle();\n    // 向下翻时自动隐藏顶栏\n    if (menu_value('menu_hideTitle')) setTimeout(hideTitle, 2000);\n\n    // 注册脚本菜单\n    function registerMenuCommand() {\n        if (menu_ID.length > menu_ALL.length){ // 如果菜单ID数组多于菜单数组，说明不是首次添加菜单，需要卸载所有脚本菜单\n            for (let i=0;i<menu_ID.length;i++){\n                GM_unregisterMenuCommand(menu_ID[i]);\n            }\n        }\n        for (let i=0;i<menu_ALL.length;i++){ // 循环注册脚本菜单\n            menu_ALL[i][3] = GM_getValue(menu_ALL[i][0]);\n            if (menu_ALL[i][0] === 'menu_darkModeType') {\n                if (menu_ALL[i][3] > 4){ // 避免在减少 raw 数组后，用户储存的数据大于数组而报错\n                    menu_ALL[i][3] = 1;\n                    GM_setValue('menu_darkModeType', menu_ALL[i][3]);\n                }\n                menu_ID[i] = GM_registerMenuCommand(`${menu_num(menu_ALL[i][3])} ${menu_ALL[i][1]}`, function(){menu_toggle(`${menu_ALL[i][3]}`,`${menu_ALL[i][0]}`)});\n            } else if (menu_ALL[i][0] === 'menu_widescreenDisplay'){\n                    GM_registerMenuCommand(`#️⃣ ${menu_ALL[i][1]}`, function(){menu_setting('checkbox', menu_ALL[i][1], menu_ALL[i][2], true, [menu_ALL[i+1], menu_ALL[i+2], menu_ALL[i+3], menu_ALL[i+4], menu_ALL[i+5], menu_ALL[i+6], menu_ALL[i+7]])});\n            } else if (menu_ALL[i][0].indexOf('menu_widescreenDisplay') === -1) {\n                menu_ID[i] = GM_registerMenuCommand(`${menu_ALL[i][3]?'✅':'❌'} ${menu_ALL[i][1]}`, function(){menu_switch(`${menu_ALL[i][3]}`,`${menu_ALL[i][0]}`,`${menu_ALL[i][2]}`)});\n            }\n        }\n        menu_ID[menu_ID.length] = GM_registerMenuCommand('💬 反馈 & 建议', function () {window.GM_openInTab('https://github.com/XIU2/UserScript#xiu2userscript', {active: true,insert: true,setParent: true});window.GM_openInTab('https://greasyfork.org/zh-CN/scripts/412212/feedback', {active: true,insert: true,setParent: true});});\n    }\n\n    // 切换暗黑模式\n    function menu_toggle(menu_status, Name) {\n        menu_status = parseInt(menu_status)\n        if (menu_status >= 4){\n            menu_status = 1;\n        } else {\n            menu_status += 1;\n        }\n        GM_setValue(`${Name}`, menu_status);\n        if (menu_status === 1) { // 设置 Cookie\n            if (getTheme() === 'light') setTheme('dark');\n        } else {\n            if (getTheme() === 'dark') {\n                setTheme('light');\n            } else {\n                if (menu_value('menu_darkMode')) {location.reload();} else {registerMenuCommand();}\n            }\n        }\n    };\n\n    // 菜单数字图标\n    function menu_num(num) {\n        return ['0️⃣','1️⃣','2️⃣','3️⃣','4️⃣','5️⃣','6️⃣','7️⃣','8️⃣','9️⃣','🔟'][num]\n    }\n\n    // 菜单开关\n    function menu_switch(menu_status, Name, Tips) {\n        if (menu_status == 'true'){\n            GM_setValue(`${Name}`, false);\n\n            if (Name === 'menu_darkMode') { // 暗黑模式\n                if (getTheme() === 'dark') {setTheme('light');} else {location.reload();}\n            } else {\n                GM_notification({text: `已关闭 [${Tips}] 功能\\n（点击刷新网页后生效）`, timeout: 3500, onclick: function(){location.reload();}});\n            }\n        } else {\n            GM_setValue(`${Name}`, true);\n\n            if (Name === 'menu_darkMode') {\n                if (menu_value('menu_darkModeType') === 1) {\n                    if (getTheme() === 'light') setTheme('dark');\n                } else {\n                    if (getTheme() === 'dark') {setTheme('light');} else {location.reload();}\n                }\n            } else {\n                GM_notification({text: `已开启 [${Tips}] 功能\\n（点击刷新网页后生效）`, timeout: 3500, onclick: function(){location.reload();}});\n            }\n        }\n        registerMenuCommand(); // 重新注册脚本菜单\n    };\n\n    // 返回菜单值\n    function menu_value(menuName) {\n        for (let menu of menu_ALL) {\n            if (menu[0] == menuName) {\n                return menu[3]\n            }\n        }\n    }\n\n\n    // 脚本设置\n    function menu_setting(type, title, tips, line, menu) {\n        let _br = '', _html = `<style class=\"zhihuE_SettingStyle\">.zhihuE_SettingRoot {position: absolute;top: 50%;left: 50%;-webkit-transform: translate(-50%, -50%);-moz-transform: translate(-50%, -50%);-ms-transform: translate(-50%, -50%);-o-transform: translate(-50%, -50%);transform: translate(-50%, -50%);width: auto;min-width: 400px;max-width: 600px;height: auto;min-height: 150px;max-height: 400px;color: #535353;background-color: #fff;border-radius: 3px;}\n.zhihuE_SettingBackdrop_1 {position: fixed;top: 0;right: 0;bottom: 0;left: 0;z-index: 203;display: -webkit-box;display: -ms-flexbox;display: flex;-webkit-box-orient: vertical;-webkit-box-direction: normal;-ms-flex-direction: column;flex-direction: column;-webkit-box-pack: center;-ms-flex-pack: center;justify-content: center;overflow-x: hidden;overflow-y: auto;-webkit-transition: opacity .3s ease-out;transition: opacity .3s ease-out;}\n.zhihuE_SettingBackdrop_2 {position: absolute;top: 0;right: 0;bottom: 0;left: 0;z-index: 0;background-color: rgba(18,18,18,.65);-webkit-transition: background-color .3s ease-out;transition: background-color .3s ease-out;}\n.zhihuE_SettingRoot .zhihuE_SettingHeader {padding: 10px 20px;color: #fff;font-weight: bold;background-color: #3994ff;border-radius: 3px 3px 0 0;}\n.zhihuE_SettingRoot .zhihuE_SettingMain {padding: 10px 20px;border-radius: 0 0 3px 3px;}\n.zhihuE_SettingHeader span {float: right;cursor: pointer;}\n.zhihuE_SettingMain input {margin: 10px 6px 10px 0;vertical-align:middle;}\n.zhihuE_SettingMain input[type=text] {margin: 5px 6px 5px 0;padding-block: 0;}\n.zhihuE_SettingMain input[name=zhihuE_Setting_Checkbox] {cursor: pointer;}\n.zhihuE_SettingMain label {margin-right: 20px;user-select: none;cursor: pointer;vertical-align:middle;}\n.zhihuE_SettingMain hr {border: 0.5px solid #f4f4f4;}\n[data-theme=\"dark\"] .zhihuE_SettingRoot {color: #adbac7;background-color: #343A44;}\n[data-theme=\"dark\"] .zhihuE_SettingHeader {color: #d0d0d0;background-color: #2D333B;}\n[data-theme=\"dark\"] .zhihuE_SettingMain hr {border: 0.5px solid #2d333b;}</style>\n        <div class=\"zhihuE_SettingBackdrop_1\"><div class=\"zhihuE_SettingBackdrop_2\"></div><div class=\"zhihuE_SettingRoot\">\n            <div class=\"zhihuE_SettingHeader\">${title}<span class=\"zhihuE_SettingClose\" title=\"点击关闭\"><svg class=\"Zi Zi--Close Modal-closeIcon\" fill=\"currentColor\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\"><path d=\"M13.486 12l5.208-5.207a1.048 1.048 0 0 0-.006-1.483 1.046 1.046 0 0 0-1.482-.005L12 10.514 6.793 5.305a1.048 1.048 0 0 0-1.483.005 1.046 1.046 0 0 0-.005 1.483L10.514 12l-5.208 5.207a1.048 1.048 0 0 0 .006 1.483 1.046 1.046 0 0 0 1.482.005L12 13.486l5.207 5.208a1.048 1.048 0 0 0 1.483-.006 1.046 1.046 0 0 0 .005-1.482L13.486 12z\" fill-rule=\"evenodd\"></path></svg></span></div>\n            <div class=\"zhihuE_SettingMain\"><p>${tips}</p><hr>`\n        if (line) _br = '<br>'\n        for (let i=0; i<menu.length; i++) {\n            if (menu[i][0] === 'menu_widescreenDisplayWidth') {\n                _html += `<label>${menu[i][2]}：<input name=\"${menu[i][0]}\" type=\"text\" oninput=\"value=value.replace(/[^\\\\d]/g,'')\" value=\"${GM_getValue(menu[i][0])}\" style=\"width: 50px;\"></label>${_br}`\n            } else if (GM_getValue(menu[i][0])) {\n                _html += `<label><input name=\"zhihuE_Setting_Checkbox\" type=\"checkbox\" value=\"${menu[i][0]}\" checked=\"checked\">${menu[i][1]}</label>${_br}`\n            } else {\n                _html += `<label><input name=\"zhihuE_Setting_Checkbox\" type=\"checkbox\" value=\"${menu[i][0]}\">${menu[i][1]}</label>${_br}`\n            }\n        }\n        _html += `</div></div></div>`\n        document.body.insertAdjacentHTML('beforeend', _html); // 插入网页末尾\n        setTimeout(function() { // 延迟 100 毫秒，避免太快\n            const doc = document.querySelector('.zhihuE_SettingBackdrop_1');\n            if (!doc) return\n            // 关闭按钮 点击事件\n            doc.querySelector('.zhihuE_SettingClose').onclick = function(){this.parentElement.parentElement.parentElement.remove();document.querySelector('.zhihuE_SettingStyle').remove();}\n            // 点击周围空白处 = 点击关闭按钮\n            doc.querySelector('.zhihuE_SettingBackdrop_2').onclick = function(event){if (event.target == this) {document.querySelector('.zhihuE_SettingClose').click();};}\n            // 复选框 点击事件\n            doc.querySelectorAll('input[name=zhihuE_Setting_Checkbox]').forEach(function (checkBox) {\n                checkBox.addEventListener('click', function(){if (this.checked) {GM_setValue(this.value, true);} else {GM_setValue(this.value, false);}});\n            })\n            // 输入框 变化事件\n            doc.querySelectorAll('input[type=text]').forEach(function (checkBox) {\n                checkBox.onchange = function(){GM_setValue(this.name, this.value);};\n            })\n        }, 100)\n    }\n\n\n    // 添加样式\n    function addStyle() {\n        let style = `/* 屏蔽登录提示（问题页中间的元素） */\n.Question-mainColumnLogin {display: none !important;}\n/* 屏蔽回答页/首页广告 */\n.Pc-card.Card, .Pc-Business-Card-PcTopFeedBanner {display: none !important;}\n/* 屏蔽文章页推荐文章 */\n.Recommendations-Main {display: none !important;}\n/* 解除盐选内容选中复制限制 */\ndiv[class*=\"ManuscriptIntro-root-\"] {user-select: auto !important;}\n`,\n            style_index = `/* 屏蔽首页广告 */\n.TopstoryItem--advertCard {display: none !important;}\n/* 屏蔽首页活动广告 */\nmain.App-main > .Topstory > div:not(.Topstory-container) {display: none !important;}\nhtml[data-theme=\"light\"] header.AppHeader {background-color: #ffffff !important; -webkit-box-shadow: 0 1px 3px rgba(18,18,18,.1) !important; box-shadow: 0 1px 3px rgba(18,18,18,.1) !important;}\nhtml[data-theme=\"light\"] header.AppHeader a[aria-label=\"知乎\"] svg {filter: invert(57%) sepia(71%) saturate(949%) hue-rotate(190deg) brightness(86%) contrast(188%) !important;}\nhtml[data-theme=\"light\"] .AppHeader-TabsLink {color: #8590a6 !important; font-weight: normal !important;}\nhtml[data-theme=\"light\"] .AppHeader-userInfo Button svg, .SearchBar-searchButton svg {color: inherit !important;}\nhtml[data-theme=\"light\"] .AppHeader-userInfo button>div {color: #8590a6 !important;}\nhtml[data-theme=\"light\"] .Input-wrapper.Input-wrapper--grey {background: #f6f6f6 !important;}\nhtml[data-theme=\"light\"] .SearchBar input {color: #121212 !important;}\nhtml[data-theme=\"light\"] .SearchBar input::placeholder, html[data-theme=\"light\"] .SearchBar input::-webkit-input-placeholder, html[data-theme=\"light\"] {color: #919baf !important;}\nhtml[data-theme=\"light\"] .Button--primary.Button--blue {color: #fff !important;background-color: #06f !important;}\n/* 右上角 通知/私信 红点颜色 */\nhtml[data-theme=light] .AppHeader-notifications:not([aria-label=通知])>div:first-of-type, html[data-theme=light] .AppHeader-messages:not([aria-label=私信])>div:first-of-type {color: #ffffff !important;border: 2px solid #ffffff !important;}\n\n            `,\n            style_widescreenDisplayIndex = `/* 宽屏显示 - 首页 */\n.Topstory-mainColumn, .QuestionWaiting-mainColumn {width: inherit !important;}\n.Topstory-mainColumn~div,[data-za-detail-view-path-module=\"RightSideBar\"] {display: none !important;}\n.Topstory-container {width: ${GM_getValue('menu_widescreenDisplayWidth')}px;}\n@media only screen and (max-width: ${Number(GM_getValue('menu_widescreenDisplayWidth'))+50}px) {.Topstory-container {width: 97% !important;}}\n`,\n            style_widescreenDisplayQuestion = `/* 宽屏显示 - 问题页 */\n.Question-mainColumn, .ListShortcut, .QuestionWaiting-mainColumn {width: inherit !important;}\n.Question-mainColumn+div,[data-za-detail-view-path-module=\"RightSideBar\"], .Question-sideColumn, .GlobalSideBar {display: none !important;}\n.QuestionWaiting-mainColumn {margin-right: 0 !important;}\n.Question-main {width: ${GM_getValue('menu_widescreenDisplayWidth')}px;}\n@media only screen and (max-width: ${Number(GM_getValue('menu_widescreenDisplayWidth'))+50}px) {.Question-main {width: auto !important;}}\n@media only screen and (max-width: ${GM_getValue('menu_widescreenDisplayWidth')-100}px) {.Question-main {width: 98.5% !important;}}\n.AuthorInfo {max-width: 100% !important;}\n`,\n            style_widescreenDisplaySearch = `/* 宽屏显示 - 搜索页 */\n.SearchMain, .ContentLayout-mainColumn, .Club-mainColumn, .Post-mainColumn, [data-za-detail-view-path-module=TopicItem]>div:first-child {width: inherit !important;}\n.SearchMain+div, .ContentLayout-sideColumn, .Card.QuestionHeaderTopicMeta, .ClubSideBar, [data-za-detail-view-path-module=TopicItem]>div:not(:first-child) {display: none !important;}\n.Search-container, .ContentLayout, .Club-container, .Post-container, [data-za-detail-view-path-module=TopicItem] {width: ${GM_getValue('menu_widescreenDisplayWidth')}px;}\n@media only screen and (max-width: ${Number(GM_getValue('menu_widescreenDisplayWidth'))+50}px) {.Search-container, .ContentLayout, .Club-container, .Post-container, [data-za-detail-view-path-module=TopicItem] {width: 97.5% !important;}}\n`,\n            style_widescreenDisplayCollection = `/* 宽屏显示 - 收藏页 */\n.CollectionsDetailPage-mainColumn {width: inherit !important;}\n.CollectionsDetailPage-mainColumn+div {display: none !important;}\n.CollectionsDetailPage {width: ${GM_getValue('menu_widescreenDisplayWidth')}px;}\n@media only screen and (max-width: ${Number(GM_getValue('menu_widescreenDisplayWidth'))+50}px) {.CollectionsDetailPage {width: 98.5% !important;}}\n`,\n            style_widescreenDisplayPost = `/* 宽屏显示 - 文章页 */\n.Post-content {min-width: auto !important;}\n.Post-SideActions {left: calc(10vw) !important;}\n.Post-Row-Content-right {display: none !important;}\n.Post-Row-Content, .Post-Row-Content-left, .RichContent-actions {width: ${GM_getValue('menu_widescreenDisplayWidth')}px !important;}\n@media only screen and (max-width: ${Number(GM_getValue('menu_widescreenDisplayWidth'))+50}px) {.Post-Row-Content, .Post-Row-Content-left, .RichContent-actions {width: auto !important;}}\n@media only screen and (max-width: ${GM_getValue('menu_widescreenDisplayWidth')-100}px) {.Post-Row-Content, .Post-Row-Content-left, .RichContent-actions {width: 98% !important;}}\n`,\n            style_widescreenDisplayPeople = `/* 宽屏显示 - 用户主页 */\n.Profile-mainColumn {width: inherit !important;}\n.Profile-mainColumn+div,[data-za-module=\"RightSideBar\"],.Profile-sideColumn {display: none !important;}\n.Profile-main, #ProfileHeader {width: ${GM_getValue('menu_widescreenDisplayWidth')}px !important;}\n@media only screen and (max-width: ${Number(GM_getValue('menu_widescreenDisplayWidth'))+50}px) {.Profile-main, #ProfileHeader {width: auto !important;}}\n@media only screen and (max-width: ${GM_getValue('menu_widescreenDisplayWidth')-100}px) {.Profile-main, #ProfileHeader {width: 98.5% !important;}}\n`,\n            style_2 = `/* 隐藏在各列表中查看文章时开头显示的大图，不影响文章、专栏页面 */\n.RichContent img.ArticleItem-image {display: none !important;}\n`,\n//            style_3 = `/* 向下翻时自动隐藏顶栏*/\n//header.is-hidden {display: none;}\n//`,\n            style_4 = `/* 调整图片最大高度 */\n.ztext .content_image, .ztext .origin_image, .GifPlayer img {max-height: 500px !important;width: auto !important;}\n`,\n            style_darkMode_1 = `/* 暗黑模式（方案 1） */\n/* 右上角 通知/私信 红点颜色 */\nhtml[data-theme=dark] .AppHeader-notifications:not([aria-label=通知])>div:first-of-type, html[data-theme=dark] .AppHeader-messages:not([aria-label=私信])>div:first-of-type {color: #ffffff !important;border: 2px solid #2d333b !important;}\n/* 文字颜色 */\nhtml[data-theme=dark] body, html[data-theme=dark] .ContentItem-title, html[data-theme=dark] .QuestionHeader-title, html[data-theme=dark] .Tabs-link, html[data-theme=dark] .CreatorEntrance-title, html[data-theme=dark] .Search-container, html[data-theme=dark] .HotItem-excerpt, html[data-theme=dark] .PushNotifications-item, html[data-theme=dark] .Notifications-Main>header h1, html[data-theme=dark] .Notifications-Section-header h2, html[data-theme=dark] .NotificationList-Item-content, html[data-theme=dark] .Reward, html[data-theme=dark] .ChatSideBar-Search-Input input, html[data-theme=dark] input.Input, html[data-theme=dark] .LinkCard-title, html[data-theme=dark] .MCNLinkCard-title, html[data-theme=dark] .ZVideoLinkCard-title, html[data-theme=dark] .TipjarDialog-customButton, html[data-theme=dark] .Question-mainColumn .Card:not(.AnswersNavWrapper) a[data-za-detail-view-id] > div:last-child, html[data-theme=dark] .TextArea {color: #adbac7 !important;}\nhtml[data-theme=dark] .LinkCard-meta, html[data-theme=dark] .MCNLinkCard-source {color: #5a6f83 !important;}\n/* 热榜标题 */\nhtml[data-theme=dark] .HotItem-title {color: #c4cfda !important;}\n/* 首页信息流标题 */\nhtml[data-theme=dark] .ContentItem-title a:hover, html[data-theme=dark] .RichContent.is-collapsed .RichContent-inner:hover, html[data-theme=dark] .ContentItem-more:hover, html[data-theme=dark] .QuestionRichText--expandable.QuestionRichText--collapsed:hover {color: #b3c3d6 !important;}\n/* 搜索高亮红字 */\nhtml[data-theme=dark] .Highlight em {color: #c33c39 !important;}\n\n/* 背景颜色 - 网页 */\nhtml[data-theme=dark] body, html[data-theme=dark] .Select-option:focus {background: #22272E !important;}\n/* 背景颜色 - 问题 */\nhtml[data-theme=dark] .AppHeader, html[data-theme=dark] .QuestionHeader, html[data-theme=dark] .QuestionHeader-footer, html[data-theme=dark] .EmoticonsFooter-item--selected, html[data-theme=dark] .Card, html[data-theme=dark] .Question-mainColumn .Card .Sticky.is-bottom, html[data-theme=dark] .ContentItem-actions, html[data-theme=dark] .MoreAnswers .List-headerText, html[data-theme=dark] .CommentsV2-withPagination, html[data-theme=dark] .Topbar, html[data-theme=dark] .CommentsV2-footer, html[data-theme=dark] .CommentEditorV2-inputWrap--active, html[data-theme=dark] .InputLike, html[data-theme=dark] .InputLike + div div, html[data-theme=dark] .Popover-content, html[data-theme=dark] .Notifications-footer, html[data-theme=dark] .Messages-footer, html[data-theme=dark] .Modal-inner, html[data-theme=dark] .Emoticons, html[data-theme=dark] .EmoticonsFooter, html[data-theme=dark] .SearchTabs, html[data-theme=dark] .Popover-arrow:after, html[data-theme=dark] .CommentEditorV2-inputWrap, html[data-theme=dark] .ProfileHeader-wrapper, html[data-theme=dark] .UserCover, html[data-theme=dark] .AnswerForm-footer, html[data-theme=dark] .Editable-toolbar, html[data-theme=dark] .AnswerForm-fullscreenContent .Editable-toolbar, html[data-theme=dark] .KfeCollection-PcCollegeCard-wrapper, html[data-theme=dark] .KfeCollection-PcCollegeCard-root, html[data-theme=dark] .HotItem, html[data-theme=dark] .HotList, html[data-theme=dark] .HotListNavEditPad, html[data-theme=dark] .QuestionWaiting-typesTopper, html[data-theme=dark] .QuestionWaiting-types, html[data-theme=dark] .PostItem, html[data-theme=dark] .ClubSideBar section, html[data-theme=dark] .SearchSubTabs, html[data-theme=dark] .Club-SearchPosts-Content, html[data-theme=dark] .Club-content, html[data-theme=dark] .ClubJoinOrCheckinButton, html[data-theme=dark] .ClubEdit, html[data-theme=dark] .CornerButton, html[data-theme=dark] .Notifications-Section-header, html[data-theme=dark] .NotificationList, .NotificationList-Item.NotificationList-Item:after, .NotificationList-DateSplit.NotificationList-DateSplit:after, html[data-theme=dark] .Chat, .ChatUserListItem:after, .ChatListGroup-SectionTitle--bottomBorder:after, html[data-theme=dark] .ActionMenu, .ChatSideBar-Search--active, html[data-theme=dark] .ChatSideBar-Search-ResultListWrap, html[data-theme=dark] .QuestionMainDivider-inner, html[data-theme=dark] .Topic-bar, html[data-theme=dark] .AnnotationTag, html[data-theme=dark] .HoverCard, html[data-theme=dark] .HoverCard-loading, html[data-theme=dark] .ExploreSpecialCard, html[data-theme=dark] .ExploreHomePage-ContentSection-moreButton a, html[data-theme=dark] .ExploreRoundtableCard, html[data-theme=dark] .ExploreCollectionCard, html[data-theme=dark] .ExploreColumnCard, html[data-theme=dark] .RichText .lazy[data-lazy-status], html[data-theme=dark] #TopstoryContent > div:first-child, html[data-theme=dark] .Topstory-newUserFollowCountPanel, html[data-theme=dark] .AnswerForm-fullscreenContent .RichText, html[data-theme=dark] .Club-Search-Content, html[data-theme=dark] .WriteIndexLayout .Sticky {background: #2D333B !important;}\nhtml[data-theme=dark] .CommentListV2-header-divider, html[data-theme=dark] .CommentsV2-openComment-divider, html[data-theme=dark] .AnswerForm-fullscreenScroller, html[data-theme=dark] .HotListNav-item, html[data-theme=dark] .AutoInviteItem-wrapper--desktop, html[data-theme=dark] .ExploreSpecialCard-contentTag, html[data-theme=dark] .ExploreCollectionCard-contentTypeTag, html[data-theme=dark] .Reward-TipjarDialog-tagLine, html[data-theme=dark] .AnswerForm-footer.useNewEditorSetting > div, html[data-theme=dark] .AnswerForm-fullscreenContent > div:first-child, html[data-theme=dark] .Editable-toolbar button:hover, html[data-theme=dark] .AuthorInfo.AnswerAdd-info + div {background-color: #222933 !important;}\nhtml[data-theme=dark] .CornerButton:hover {background: #3f4752 !important;} /* 右下角按钮 */\n\n/* 背景颜色 - 引用 */\nhtml[data-theme=dark] .ztext blockquote {color: #768390 !important;border-left: 3px solid #3b3b3b !important;}\n\n/* 背景颜色 - 卡片 */\nhtml[data-theme=dark] .MCNLinkCard, html[data-theme=dark] .LinkCard-content, html[data-theme=dark] .ZVideoLinkCard-info {background-color: #22272e !important;}\nhtml[data-theme=dark] .Post-content .MCNLinkCard, html[data-theme=dark] .Post-content .LinkCard-content, html[data-theme=dark] .Post-content .ZVideoLinkCard-info {background-color: #2D333B !important;}\nhtml[data-theme=dark] .LinkCard-backdrop {background-image: url() !important;}\n\n/* 背景颜色 - 头像 */\nhtml[data-theme=dark] .Avatar, html[data-theme=dark] .UserAvatar {background-color: #2d333b !important;}\nhtml[data-theme=dark] .UserAvatar {border: 4px solid #2d333b !important;}\n\n/* 划词提示文字和背景颜色 */\nhtml[data-theme=dark] .css-fg13ww {color: #adbac7 !important; background-color: #363d47 !important; border-radius: 10px !important;}\n\n/* 通知信息中点评论链接时，在弹出的评论框中 \"高亮\" 目标评论 */\nhtml[data-theme=dark] .CommentItemV2[tabindex='-1'] {background-color: #343a44 !important;}\n\n/* 搜索框 */\nhtml[data-theme=dark] .Input-wrapper.Input-wrapper--grey, html[data-theme=dark] .ChatSideBar-Search-Input input {background: #333a44 !important;}\n\n/* 加载动画 */\nhtml[data-theme=dark] .PlaceHolder-bg {background: -webkit-gradient(linear,left top,right top,from(#22272e),color-stop(20%,#2d333b),color-stop(40%,#22272e),to(#22272e)) !important;background: linear-gradient(90deg,#22272e 0,#2d333b 20%,#22272e 40%,#22272e) !important;}\nhtml[data-theme=dark] .PlaceHolder-inner {background: #22272e !important;color: #2d333b !important;}\n\n/* 私信 */\nhtml[data-theme=dark] .Input-wrapper {background-color: #30363f !important;}\nhtml[data-theme=dark] .TextMessage-sender, html[data-theme=\"dark\"] .TextMessage-sender::after {background-color: #57616f !important;}\nhtml[data-theme=dark] .TextMessage-receiver, html[data-theme=\"dark\"] .TextMessage-receiver::after {background-color: #1e5fbf !important;}\n\nhtml[data-theme=dark] .TextMessage-sender, html[data-theme=dark] .TextMessage-receiver {color: #dcdcdc !important;}\n/*html[data-theme=dark] .MessagesBox::-webkit-scrollbar {width: 0px !important;height: 0px !important;}*/\nhtml[data-theme=dark] .ToolBar, html[data-theme=dark] .Input-wrapper, html[data-theme=dark] .ClubTopPosts, html[data-theme=dark] .ChatSideBar-Search-Input input {border: none !important;}\n\nhtml[data-theme=dark] .ChatBoxModal-closeIcon {fill: #8590a6 !important;}\n\n/* 私信网页 */\nhtml[data-theme=dark] .ChatUserListItem .Chat-ActionMenuPopover-Button {background: -webkit-gradient(linear,left top,right top,from(rgba(18,18,18,0)),color-stop(20%,#22272e)) !important;background: linear-gradient(90deg,rgba(18,18,18,0),#22272e 20%) !important;}\nhtml[data-theme=dark] .css-1j6tmrz {border: 2px solid #2d333b !important;}\n\n/* 选项鼠标指向时背景颜色 */\nhtml[data-theme=dark] .Messages-item:hover, html[data-theme=dark] .GlobalSideBar-navLink:hover, html[data-theme=dark] .Menu-item.is-active, html[data-theme=dark] .ActionMenu-item:hover, html[data-theme=dark] .ChatUserListItem--active, html[data-theme=dark] .Messages-newItem {background-color: #272c33 !important;}\n/* 通知 */\nhtml[data-theme=dark] .PushNotifications-item a {color: #8ab5e0 !important;}\n\n/* 封面大图/文章头部大图 */\nhtml[data-theme=dark] img.UserCover-image, html[data-theme=dark] img.TitleImage {opacity: 0.7 !important;}\n/* 其他图片 */\nhtml[data-theme=dark] img {opacity: 0.8 !important;}\n/* GIF 动图、放大图除外 */\nhtml[data-theme=dark] .GifPlayer img, html[data-theme=dark] .ImageView-img, html[data-theme=dark]>body>img {opacity: 1 !important;}\n\n/* 边框 */\nhtml[data-theme=dark] .Topbar, html[data-theme=dark] .CommentsV2-footer, html[data-theme=dark] .Topstory-mainColumnCard .Card:not(.Topstory-tabCard), html[data-theme=dark] .NestComment:not(:last-child):after, html[data-theme=dark] .NestComment--rootComment:after, html[data-theme=dark] .NestComment .NestComment--child:after, html[data-theme=dark] .NestComment .NestComment--child:after, html[data-theme=dark] .CommentsV2-replyNum, html[data-theme=dark] .CommentItemV2:not(:first-child):after, html[data-theme=dark] .Tabs, html[data-theme=dark] .Popover-arrow:after, html[data-theme=dark] .SelfCollectionItem-innerContainer, html[data-theme=dark] .CollectionDetailPageItem-innerContainer {border-bottom: 1px solid #282d35 !important;}\nhtml[data-theme=dark] .CommentEditorV2-inputWrap--active, html[data-theme=dark] .CommentEditorV2-inputWrap, html[data-theme=dark] .PostItem, html[data-theme=dark] .AnswerForm .Editable-toolbar, html[data-theme=dark] .Editable-toolbar span {border: none !important;}\nhtml[data-theme=dark] .InputLike {border: 1px solid #424b56 !important;}\nhtml[data-theme=dark] .Popover .InputLike {border: 1px solid #2d333b !important;}\nhtml[data-theme=dark] .HotLanding-contentItem:not(:last-child) {border-bottom: 1px solid #424b56 !important;}\nhtml[data-theme=dark] .HotLanding-content {border-left: 2px solid #424b56 !important;}\n\nhtml[data-theme=dark] .Popover-content, html[data-theme=dark] .Popover-arrow:after {border: 1px solid #22272e !important;}\n\n/* 滚动条 */\nhtml[data-theme=dark] body::-webkit-scrollbar, html[data-theme=\"dark\"] .MessagesBox::-webkit-scrollbar, html[data-theme=\"dark\"] .Messages-list::-webkit-scrollbar, html[data-theme=dark] .PushNotifications-list::-webkit-scrollbar, html[data-theme=dark] .CommentListV2::-webkit-scrollbar, .ChatListGroup-SectionContent::-webkit-scrollbar, html[data-theme=dark] .ChatSideBar-Search-ResultListWrap::-webkit-scrollbar, html[data-theme=dark] .ChatBox textarea.Input::-webkit-scrollbar {width: 6px !important;height: 1px !important;}\nhtml[data-theme=dark] body::-webkit-scrollbar-thumb, html[data-theme=\"dark\"] .MessagesBox::-webkit-scrollbar-thumb, html[data-theme=\"dark\"] .Messages-list::-webkit-scrollbar-thumb, html[data-theme=dark] .PushNotifications-list::-webkit-scrollbar-thumb, html[data-theme=dark] .CommentListV2::-webkit-scrollbar-thumb, .ChatListGroup-SectionContent::-webkit-scrollbar-thumb, html[data-theme=dark] .ChatSideBar-Search-ResultListWrap::-webkit-scrollbar-thumb, html[data-theme=dark] .ChatBox textarea.Input::-webkit-scrollbar-thumb {background: #3f4752 !important;}\nhtml[data-theme=dark] body::-webkit-scrollbar-track {background: #22272e !important;}\nhtml[data-theme=dark] .MessagesBox::-webkit-scrollbar-track, html[data-theme=\"dark\"] .Messages-list::-webkit-scrollbar-track, html[data-theme=dark] .PushNotifications-list::-webkit-scrollbar-track, html[data-theme=dark] .CommentListV2::-webkit-scrollbar-track, .ChatListGroup-SectionContent::-webkit-scrollbar-track, html[data-theme=dark] .ChatSideBar-Search-ResultListWrap::-webkit-scrollbar-track, html[data-theme=dark] .ChatBox textarea.Input::-webkit-scrollbar-track {background: #2d333b !important;}\n\n/* 滚动条 - 回答目录 */\nhtml[data-theme=dark] .AnswerItem .RichContent-hasCatalog .RichContent-inner .Catalog.isCatalogV2::-webkit-scrollbar {width: 0 !important;}\nhtml[data-theme=dark] .AnswerItem .RichContent-hasCatalog .RichContent-inner .Catalog.isCatalogV2 > :first-child {background: #2D333B !important;}\n\nhtml {scrollbar-width: thin; scrollbar-color: #3f4752 #22272e;}\n.MessagesBox, .Messages-list, .PushNotifications-list, .CommentListV2, .ChatListGroup-SectionContent, .ChatSideBar-Search-ResultListWrap {scrollbar-width: thin; scrollbar-color: #3f4752 #2D333B;}\n\n/* 背景颜色 - 专栏/文章 */\nhtml[data-theme=dark] .WhiteBg-body, html[data-theme=dark] .Post-content, html[data-theme=dark] .Post-Row-Content .Post-Row-Content-left {background: #22272E !important;}\nhtml[data-theme=dark] .ColumnPageHeader, html[data-theme=dark] .BottomInfo {background: #1c2129 !important;}\n\n/* 按钮颜色 */\n.TopstoryTabs-link.is-active, html[data-theme=dark] .TopstoryTabs-link.is-active, html[data-theme=dark] .VoteButton, .Tag, html[data-theme=dark] .Tag, html[data-theme=dark] .HotListNav-item.is-active, html[data-theme=dark] .RichText a.UserLink-link {color: #3faaff !important;}\n/*html[data-theme=dark] .Tabs-link.is-active:after {background: #2196F3 !important;}*/\nhtml[data-theme=dark] .Reward-rewardBtn, html[data-theme=dark] .SearchBar-searchIcon.hasValue, html[data-theme=dark] .Chat-UnreadCount, html[data-theme=dark] .Payment-CheckedButton {color: #ffffff !important;}\n\n/* 关闭查看回复时的高闪 */\nhtml[data-theme=dark] .CommentItemV2--highlighted {-webkit-animation: nano !important;animation: nano !important;}\n\n/* 赞赏 */\nhtml[data-theme=dark] .Reward-TipjarDialog-amountList .Button--red, html[data-theme=dark] .Reward-TipjarDialog-amountList .Button--red, html[data-theme=dark] .Reward-TipjarDialog-amountInput .SimpleInput {color: #d3d3d3 !important; background-color: #353b44 !important; border: none !important;}\n\n/* 赞同 */\nhtml[data-theme=dark] .VoteButton.is-active {color: #d6edff !important;}\n\n/* 创作中心 - 分析图表 */\nhtml[data-theme=dark] .CreatorSection-body .AnalyticsChart text {fill: #adbac7 !important;}\n`,\n            style_darkMode_1_x = `/* 问题日志页 */\nhtml[data-theme=dark] .zu-top {background: #2D333B !important;border: none !important;}\nhtml[data-theme=dark] .zm-tag-editor-labels.zg-clear a {background: rgba(51,119,255,.1) !important;}\nhtml[data-theme=dark] .zu-main {background: #2D333B !important;padding-left: 20px;padding-right: 20px;}\nhtml[data-theme=dark] .zm-item+.zm-item {border-top: 1px solid #424b56;}\nhtml[data-theme=dark] a {color: #D4E5F4 !important;}\nhtml[data-theme=dark] ins, html[data-theme=dark] ins a {color: #009688 !important;}\nhtml[data-theme=dark] del a {color: #E91E63 !important;}\nhtml[data-theme=dark] div#zh-hovercard a {color: #353535 !important;}\n            `,\n            style_darkMode_2 = `/* 暗黑模式（方案 2） */\nhtml {filter: invert(90%) !important; text-shadow: 0 0 0 !important;}\nhtml[data-theme=light] body.ZVideo-body {background-color: #fff;}\nimg, .ZVideoItem-video, .ZVideo-video, .VideoAnswerPlayer-video {filter: invert(1) !important;}\n.css-5ym188, body>div>div>span+div>div[style='opacity: 1;'] {background-color: rgba(255, 255, 255, 0.65) !important;}\n.GifPlayer img, .GifPlayer.isPlaying video {filter: invert(1) !important;}\n.GifPlayer.isPlaying img.ztext-gif.GifPlayer-gif2mp4Image, img[alt=\"[公式]\"] {filter: none !important;}\n`,\n            style_darkMode_2_firefox = `/* 暗黑模式（方案 2） */\nhtml {filter: invert(90%) !important; background-image: url(); text-shadow: 0 0 0 !important;}\nhtml[data-theme=light] body.ZVideo-body {background-color: #fff;}\nimg, .ZVideoItem-video, .ZVideo-video, .VideoAnswerPlayer-video {filter: invert(1) !important;}\n.GifPlayer img, .GifPlayer.isPlaying video {filter: invert(1) !important;}\n.GifPlayer.isPlaying img.ztext-gif.GifPlayer-gif2mp4Image {filter: none !important;}\n`,\n            style_darkMode_3 = `/* 暗黑模式（方案 3） */\nhtml {filter: brightness(70%) !important;}\n`,\n            style_darkMode_3_firefox = `/* 暗黑模式（方案 3） */\nhtml {filter: brightness(70%) !important; background-image: url();}\n`,\n            style_darkMode_4 = `/* 暗黑模式（方案 4） */\nhtml {filter: brightness(65%) sepia(30%) !important;}\n`,\n             style_darkMode_4_firefox = `/* 暗黑模式（方案 4） */\nhtml {filter: brightness(65%) sepia(30%) !important; background-image: url();}\n`\n        let style_Add = document.createElement('style');\n\n\n\n        // 如果开启了 [暗黑模式]\n        if (menu_value('menu_darkMode')) {\n            // firefox 浏览器\n            if (navigator.userAgent.toLowerCase().indexOf('firefox') > -1) {\n                style_darkMode_2 = style_darkMode_2_firefox\n                style_darkMode_3 = style_darkMode_3_firefox\n                style_darkMode_4 = style_darkMode_4_firefox\n            }\n\n            // 如果开启了 [暗黑模式跟随浏览器] 且 当前浏览器是暗黑模式\n            if (menu_value('menu_darkModeAuto') && !window.matchMedia('(prefers-color-scheme: dark)').matches) {\n                // 如果是暗黑模式，则需要改为白天模式\n                if (getTheme() === 'dark') {\n                    setTheme('light');\n                }\n            } else {\n                // 如果暗黑模式为 1\n                if (menu_value('menu_darkModeType') === 1) {\n                    // 如果当前知乎主题为白天模式，那就是改为暗黑模式\n                    if (getTheme() === 'light') {\n                        setTheme('dark');\n                    }\n                    // 如果是问题日志页，则改为暗黑模式\n                    if (location.pathname.indexOf('/log') > -1) {\n                        document.documentElement.setAttribute('data-theme', 'dark');\n                        style_darkMode_1 += style_darkMode_1_x;\n                    }\n                } else { // 如果是其他暗黑模式，则需要确保为白天模式\n                    if (getTheme() === 'dark') {\n                        setTheme('light');\n                    }\n                }\n                switch(menu_value('menu_darkModeType')) {\n                    case 1:\n                        if (!(location.hostname.indexOf('zhuanlan') > -1 && (location.pathname.indexOf('/edit') > -1 || location.pathname.indexOf('/write') > -1))) style += style_darkMode_1;\n                        break;\n                    case 2:\n                        style += style_darkMode_2;\n                        break;\n                    case 3:\n                        style += style_darkMode_3;\n                        break;\n                    case 4:\n                        style += style_darkMode_4;\n                        break;\n                }\n            }\n        } else {\n            if (getTheme() === 'dark'){\n                setTheme('light');\n            }\n        }\n\n        if (location.pathname === '/' || location.pathname === '/hot' || location.pathname === '/follow') style += style_index;\n        if (menu_value('menu_darkMode') && menu_value('menu_darkModeType') === 1 && (location.pathname.indexOf('/special/') > -1 || location.pathname.indexOf('/pub/') > -1)) style += style_darkMode_2 + 'video {filter: invert(1) !important;}';\n\n        // 宽屏显示\n        if (menu_value('menu_widescreenDisplayIndex')) style += style_widescreenDisplayIndex;\n        if (menu_value('menu_widescreenDisplayQuestion') && location.pathname.indexOf('/question/') > -1) style += style_widescreenDisplayQuestion;\n        if (menu_value('menu_widescreenDisplaySearch') && (location.pathname === '/search' || location.pathname.indexOf('/club/') > -1 || location.pathname.indexOf('/topic/') > -1)) style += style_widescreenDisplaySearch;\n        if (menu_value('menu_widescreenDisplayCollection') && location.pathname.indexOf('/collection/') > -1) style += style_widescreenDisplayCollection;\n        if (menu_value('menu_widescreenDisplayPost') && location.hostname.indexOf('zhuanlan') > -1 && (location.pathname.indexOf('/edit') === -1 || location.pathname.indexOf('/write') === -1)) style += style_widescreenDisplayPost;\n        if (menu_value('menu_widescreenDisplayPeople') && location.pathname.indexOf('/people/') > -1) style += style_widescreenDisplayPeople;\n\n        // 调整图片最大高度\n        if (menu_value('menu_picHeight')) style += style_4;\n        // 隐藏文章开头大图\n        if (menu_value('menu_postimg')) style += style_2;\n\n        if (document.lastChild) {\n            document.lastChild.appendChild(style_Add).textContent = style;\n        } else { // 避免网站加载速度太慢的备用措施\n            let timer1 = setInterval(function(){ // 每 10 毫秒检查一下 html 是否已存在\n                if (document.lastChild) {\n                    clearInterval(timer1); // 取消定时器\n                    document.lastChild.appendChild(style_Add).textContent = style;\n                }\n            });\n        }\n    }\n\n    function hideTitle() {\n        // 获取需要控制的元素\n        const floatingElement = document.getElementsByTagName('header')[0];\n        let beforeScrollTop = document.documentElement.scrollTop || document.body.scrollTop,\n            scrollTop = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop,\n            scrollHeight = window.innerHeight || document.documentElement.clientHeight\n\n        window.addEventListener('scroll', function (e) {\n            var afterScrollTop = document.documentElement.scrollTop || document.body.scrollTop,\n                delta = afterScrollTop - beforeScrollTop;\n            //console.log(delta,floatingElement)\n            if (delta == 0) return false;\n            if (delta > 0) {// 向下滚动 隐藏\n                floatingElement.hidden = true;\n            } else {\n                // 向上滚动 显示\n                floatingElement.hidden = false;\n            }\n            beforeScrollTop = afterScrollTop;\n        }, false);\n    }\n\n    // 获取知乎 Cookie 中的主题类型\n    function getTheme() {\n        let name = 'theme=',\n            ca = document.cookie.split(';');\n        for (let i=0; i<ca.length; i++) {\n            let c = ca[i].trim();\n            if (c.indexOf(name)==0) return c.substring(name.length,c.length);\n        }\n        return 'light';\n    }\n\n    // 修改知乎 Cookie 中的主题类型\n    function setTheme(theme) {\n        switch(theme) {\n            case 'light':\n                document.cookie='theme=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/';\n                document.lastChild.setAttribute('data-theme', 'light');\n                location.reload(); // 刷新网页\n                break;\n            case 'dark':\n                document.cookie='theme=dark; expires=Thu, 18 Dec 2031 12:00:00 GMT; path=/';\n                document.lastChild.setAttribute('data-theme', 'dark');\n                if (GM_getValue('menu_darkMode')) location.reload(); // 刷新网页\n                break;\n        }\n    }\n})();"
  },
  {
    "path": "Zhihu-Enhanced.user.js",
    "content": "// ==UserScript==\n// @name         Zhihu enhancement\n// @name:zh-CN   知乎增强\n// @name:zh-TW   知乎增強\n// @name:ru      Улучшение Zhihu\n// @version      2.3.27\n// @author       X.I.U\n// @description  A more personalized Zhihu experience~\n// @description:zh-CN  移除登录弹窗、屏蔽指定类别（视频、盐选、文章、想法、关注[赞同/关注了XX]等）、屏蔽低赞/低评回答、屏蔽用户、屏蔽关键词、默认收起回答、快捷收起回答/评论（左键两侧）、快捷回到顶部（右键两侧）、区分问题文章、移除高亮链接、净化搜索热门、净化标题消息、展开问题描述、显示问题作者、默认高清原图（无水印）、置顶显示时间、完整问题时间、直达问题按钮、默认站外直链...\n// @description:zh-TW  移除登錄彈窗、屏蔽指定類別（視頻、鹽選、文章、想法、關注[贊同/關注了XX]等）、屏蔽低贊/低評回答、屏蔽用戶、屏蔽關鍵詞、默認收起回答、快捷收起回答/評論、快捷回到頂部、區分問題文章、移除高亮鏈接、默認高清原圖（無水印）、默認站外直鏈...\n// @description:ru  Более персонализированный опыт пользования сайтом Zhihu~\n// @match        *://www.zhihu.com/*\n// @match        *://zhuanlan.zhihu.com/*\n// @exclude      https://www.zhihu.com/signin*\n// @icon         data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAFo0lEQVR4nJWXT4hlVxHGf9/tJyYuzJtxIziQN8RBFDEtIWB0MW+Mi4CIk4UuAtqvAxPcqAkJRNxMshDUTc8s3TjdO3c9QbIKod+o4CIuZtRFDEi3EIgEM/02jpPIPZ+LqnPv6TeB4IHLPfeeP1X11VdV54i2vewtOhaITcQDdEgdthAdINAGNkgd0IEVbwR17rAmx1TniSVil6e0V0UKgJc8pWdfG5yvwqRhs1FQIyQ3trvcpxsVGd4xf/gelO24yV0usK1VB6APOMDMKSADBShIBWNwj1WwjClAzLEL0CMc86jj9cl/LgRs8ZjCJvexH5r/xAuJa260TatG6DosIee4lHO0ZnWDXH5bgYQ8uql122Iis2Xnj4JtRH675AIHMAQKuAsdrLV3dYXTwQ7Bir1jrzJ+Wyw698yVkLmgxgVg+PGjcPw8zD6JKcgFUcD94AoNa0eXkO600lVqXOPqPrPZNT6tjylYBRZfgp0n4GgFR7dDkEieeNys6ZPCBq4MCicXdFLWdIKBHtMFfC4JY8Hf/nxEyY0jmD+IM7Cgy77gxtto+jF4+NMj8+tY84YOLd8JnZJPpiDxI7shUigimJ2Gwxf5yLb9aryvffOj5+pXKbzJDxOVoIw7REkLhedno7+6CzffgdkpmE3z+5/Nrq7JJMfejc3bNj+TnT4tTyRtmLiAlARKliK09Uis2fsTPPcqvvwNdPlxuP4mbO+P4aQObz0cG958F77+mxMJh9kDcPh0IpCcUIerqycYuc8FGX7zczB/CI6O4cofAA9GjuRjUFhN2I0hmISlNFCUzCGMSkxqfFJw3XD6cXjuOt57A1YfpM/KSSEqY9zLo4w0psLsVnknyhkVYgNPMlRQh+qE63+GSsaBoK2VJcdTKTcKDLmhA/o1BDKFKzKl3aOJcoNBu3SHAAe4ahwwKgBkFRhdMMIc6Chzf+VphruT6urwZBh1aEQXjL/2fZidHoVP74/3xS8GP1IBLQ/hxuGonCLFxpZKjtTpDpRrSjYwYa2p4GcvoPm59ZFU5L54apvP4MZhY2XJMh1u+DB0Qk7ybaIR2EGHl34LV1/HGU5CsP8MbH4Gnvw1vPJX7G48pGw/OiLgyoEKf4PAYH0f6VtdIOAmlwCwugOrO0mDOHRodjrG/vGv9HvyQEprRwQjPB3rWg5oXBNR0A+Vf2wtJwDZaP5ZPL0fVv+B4zto5yJjKK6R0CUPMI7K6jUEsgpKGYqTwXpneGiExKnR4iuZ6d6Ggx/C7FNwdBuu/C6ROBmiUU/6PDuWhh9tEssQHxFQVlmP3wKfPY23Hotfe3+Eq8tYf/kJmE2jdK8pIPWJTDmJAFmq1We57iNnDQol9HWFDbr8rfg8eg+Wb8KV19DyrQjLa08hNal4/hD4l3D+LNr/HvhncPhC49+Ev5475DHfeUjjGrPt4jHY+upgvZOAPL0XRJ2fgwdPNS7IdvADuPgF7m15UDEDOhaXXKQT6RyAzTNw8DxMPxHWn/1p6ObMjc8+DjvfhVMvwOr9EcLjnwc6V38PL78Gq7vYG8PBxAqTzUbInJwoGtlbfA3tfCeEL/8G23sZEaAMIV99HW2egdW/m9Is/Mpf0O4bsPw7tY4os+OAbuUXHZKe8W3gVDLeEjr/uTgRHb0Hy7fyf0PUQd2YH4eZesrRmMBqDhF5gRFiIxSRQoGJxS0Kc8XNRSasHlqStOZ3Nf1aKVQzIKkMzeHTGZaRoEzWmyxIyw6zW6FRQ6c2NapC5pCjuAl5+Od7Tru41vxagEpTOeN0LAq7oe0lH0DeC6uVH0Lito03kbVUnmSrp+yE/967Y8dNfqEvdwD+L09a3BrgbqA/IZS4H4osLE3mHlDzYB30iUJ7XwwklrzPhXWk4ZIXdGxROM//g0ZbQrKXVza0EQcQiWNvcIuOXXbG6/n/AAwhLDO9HaqBAAAAAElFTkSuQmCC\n// @grant        GM_xmlhttpRequest\n// @grant        GM_registerMenuCommand\n// @grant        GM_unregisterMenuCommand\n// @grant        GM_openInTab\n// @grant        GM_getValue\n// @grant        GM_setValue\n// @grant        GM_notification\n// @grant        GM_info\n// @grant        window.onurlchange\n// @sandbox      JavaScript\n// @license      GPL-3.0 License\n// @run-at       document-end\n// @namespace    https://greasyfork.org/scripts/4122051\n// @supportURL   https://github.com/XIU2/UserScript\n// @homepageURL  https://github.com/XIU2/UserScript\n// ==/UserScript==\n\n'use strict';\nvar menu_ALL = [\n    ['menu_defaultCollapsedAnswer', '默认收起回答', '默认收起回答', true],\n    ['menu_collapsedAnswer', '一键收起回答/评论', '一键收起回答/评论', true],\n    ['menu_collapsedNowAnswer', '快捷收起回答/评论 (点击两侧空白处)', '快捷收起回答/评论', true],\n    ['menu_backToTop', '快捷回到顶部 (右键两侧空白处)', '快捷回到顶部', true],\n    ['menu_blockLowCount', '屏蔽低赞低评', '设置要屏蔽 低于多少赞同/评价 的回答（默认不需要留空即可）<br/>（例如设置 0 则无人赞同/评价的回答会被屏蔽<br/>（例如设置 20 则赞同/评价数量低于 20 的回答会被屏蔽<br/>（修改后，后续加载的回答会立即生效，但不影响当前网页已有内容', ''],\n    ['menu_blockLowUpvoteCount', '最低赞同数 [首页]', '最低赞同数（首页）', ''],\n    ['menu_blockLowCommentCount', '最低评价数 [首页]', '最低评价数（首页）', ''],\n    ['menu_blockLowUpvoteCountQuestion', '最低赞同数 [问题页]', '最低赞同数（问题页）', ''],\n    ['menu_blockLowCommentCountQuestion', '最低评价数 [问题页]', '最低评价数（问题页）', ''],\n    ['menu_blockLowUpvoteCountFollow', '最低赞同数 [关注页]', '最低赞同数（关注页）', ''],\n    ['menu_blockLowCommentCountFollow', '最低评价数 [关注页]', '最低评价数（关注页）', ''],\n    ['menu_blockUsers', '屏蔽指定用户', '屏蔽指定用户', true],\n    ['menu_customBlockUsers', '自定义屏蔽用户', '自定义屏蔽用户', ['故事档案局', '盐选推荐', '盐选科普', '盐选成长计划', '知乎盐选会员', '知乎盐选创作者', '盐选心理', '盐选健康必修课', '盐选奇妙物语', '盐选生活馆', '盐选职场', '盐选文学甄选', '盐选作者小管家', '盐选博物馆', '盐选点金', '盐选测评室', '盐选科技前沿', '盐选会员精品']],\n    ['menu_blockKeywords', '屏蔽指定关键词', '屏蔽指定关键词', true],\n    ['menu_blockKeywordsComment', '屏蔽关键词 - 评论区', '屏蔽关键词 - 评论区', true],\n    ['menu_customBlockKeywords', '自定义屏蔽关键词', '自定义屏蔽关键词', []],\n    ['menu_addSelectedBlockKeywords', '添加选中文字到屏蔽词 ↑', '添加选中文字到屏蔽词', []],\n    ['menu_blockType', '屏蔽指定类别 (视频/文章等)', '勾选 = 屏蔽该类别的信息流', ''],\n    ['menu_blockTypeVideo', '视频 [首页、搜索页、问题页、关注页]', '视频（首页、搜索页、问题页、关注页）', true],\n    ['menu_blockTypeArticle', '文章 [首页、搜索页、关注页]', '文章（首页、搜索页、关注页）', false],\n    ['menu_blockTypePin', '想法 [首页、关注页]', '想法（首页、关注页）', false],\n    ['menu_blockTypeFollowAgree', '赞同了XX [关注页]', '赞同了XX（关注页）', false],\n    ['menu_blockTypeFollowQuestion', '关注了XX [关注页]', '关注了XX（关注页）', false],\n    ['menu_blockTypeTopic', '话题 [搜索页]', '话题（搜索页）', false],\n    ['menu_blockTypeSearch', '杂志文章、盐选专栏、相关搜索等 [搜索页]', '相关搜索、杂志、盐选等（搜索页）', false],\n    ['menu_blockYanXuan', '盐选内容 [问题页]', '盐选内容（问题页）', false],\n    ['menu_blockTypeLiveHot', '热榜文章、直播、广告等 [热榜]', '热榜文章、直播、广告等 [热榜]', true],\n    ['menu_cleanHighlightLink', '移除高亮链接 (高亮的文字链接)', '移除高亮链接', true],\n    ['menu_cleanSearch', '净化搜索热门 (默认搜索词及热门搜索)', '净化搜索热门', false],\n    ['menu_cleanTitles', '净化标题消息 (标题中的私信/消息)', '净化标题提醒', false],\n    ['menu_questionRichTextMore', '展开问题描述', '展开问题描述', false],\n    ['menu_publishTop', '置顶显示时间', '置顶显示时间', true],\n    ['menu_typeTips', '区分问题文章', '区分问题文章', true],\n    ['menu_toQuestion', '直达问题按钮', '直达问题按钮', true]\n], menu_ID = [];\nfor (let i=0;i<menu_ALL.length;i++){ // 如果读取到的值为 null 就写入默认值\n    if (GM_getValue(menu_ALL[i][0]) == null){GM_setValue(menu_ALL[i][0], menu_ALL[i][3])};\n}\nregisterMenuCommand();\n\n// 注册脚本菜单\nfunction registerMenuCommand() {\n    if (menu_ID.length > menu_ALL.length){ // 如果菜单ID数组多于菜单数组，说明不是首次添加菜单，需要卸载所有脚本菜单\n        for (let i=0;i<menu_ID.length;i++){\n            GM_unregisterMenuCommand(menu_ID[i]);\n        }\n    }\n    for (let i=0;i<menu_ALL.length;i++){ // 循环注册脚本菜单\n        menu_ALL[i][3] = GM_getValue(menu_ALL[i][0]);\n        if (menu_ALL[i][0] === 'menu_blockLowCount') {\n            menu_ID[i] = GM_registerMenuCommand(`#️⃣ ${menu_ALL[i][1]}`, function(){menu_setting('checkbox', menu_ALL[i][1], menu_ALL[i][2], true, [menu_ALL[i+1], menu_ALL[i+2], menu_ALL[i+3], menu_ALL[i+4], menu_ALL[i+5], menu_ALL[i+6]])});\n            //menu_ID[i] = GM_registerMenuCommand(`#️⃣ ${menu_ALL[i][1]}`, function(){customBlockLowCount(menu_ALL[i][0],'设置要屏蔽 低于多少赞同 的回答？\\n（例如设置 50 则赞同数低于 50 的回答会被屏蔽\\n（目前该功能适用于 首页信息流、问题页\\n（点击 [确定] 修改后，后续加载的回答会立即生效，不影响当前已有\\n（如不需要请留空并直接点击 [确定] 即可')});\n        //} else if (menu_ALL[i][0] === 'menu_blockLowCommentCount') {\n            //menu_ID[i] = GM_registerMenuCommand(`#️⃣ ${menu_ALL[i][1]}`, function(){customBlockLowCount(menu_ALL[i][0],'设置要屏蔽 低于多少评价 的回答？\\n（例如设置 20 则评价数低于 20 的回答会被屏蔽\\n（目前该功能适用于 首页信息流、问题页\\n（点击 [确定] 修改后，后续加载的回答会立即生效，不影响当前已有\\n（如不需要请留空并直接点击 [确定] 即可')});\n        } else if (menu_ALL[i][0] === 'menu_customBlockUsers') { // 只有 [屏蔽指定用户] 启用时，才注册菜单 [自定义屏蔽用户]\n            if (menu_value('menu_blockUsers')) menu_ID[i] = GM_registerMenuCommand(`#️⃣ ${menu_ALL[i][1]}`, function(){customBlockUsers()});\n        } else if (menu_ALL[i][0] === 'menu_blockKeywordsComment') { // 只有 [屏蔽指定关键词] 启用时，才注册菜单 [屏蔽关键词 - 评论区]\n            if (menu_value('menu_blockKeywords')) menu_ID[i] = GM_registerMenuCommand(`${menu_ALL[i][3]?'✅':'❌'} ${menu_ALL[i][1]}`, function(){menu_switch(`${menu_ALL[i][3]}`,`${menu_ALL[i][0]}`,`${menu_ALL[i][2]}`)});\n        } else if (menu_ALL[i][0] === 'menu_customBlockKeywords') { // 只有 [屏蔽指定关键词] 启用时，才注册菜单 [自定义屏蔽关键词]\n            if (menu_value('menu_blockKeywords')) menu_ID[i] = GM_registerMenuCommand(`#️⃣ ${menu_ALL[i][1]}`, function(){customBlockKeywords()});\n        } else if (menu_ALL[i][0] === 'menu_addSelectedBlockKeywords') { // 只有 [屏蔽指定关键词] 启用时，才注册菜单 [添加选中文字到屏蔽词]\n            if (menu_value('menu_blockKeywords')) menu_ID[i] = GM_registerMenuCommand(`#️⃣ ${menu_ALL[i][1]}`, function(){addSelectedKeywordToBlocklist()});\n        } else if (menu_ALL[i][0] === 'menu_blockType') { // 屏蔽指定类别 使用单独的设置界面\n            menu_ID[i] = GM_registerMenuCommand(`#️⃣ ${menu_ALL[i][1]}`, function(){menu_setting('checkbox', menu_ALL[i][1], menu_ALL[i][2], true, [menu_ALL[i+1], menu_ALL[i+2], menu_ALL[i+3], menu_ALL[i+4], menu_ALL[i+5], menu_ALL[i+6], menu_ALL[i+7], menu_ALL[i+8], menu_ALL[i+9]])});\n        } else if (menu_ALL[i][0].indexOf('menu_blockType') == -1 && menu_ALL[i][0] != 'menu_blockYanXuan' && menu_ALL[i][0].indexOf('menu_blockLow') == -1) { // 排除使用单独设置界面的 屏蔽指定类别 项\n            menu_ID[i] = GM_registerMenuCommand(`${menu_ALL[i][3]?'✅':'❌'} ${menu_ALL[i][1]}`, function(){menu_switch(`${menu_ALL[i][3]}`,`${menu_ALL[i][0]}`,`${menu_ALL[i][2]}`)});\n        }\n    }\n    menu_ID[menu_ID.length] = GM_registerMenuCommand('💬 反馈 & 建议', function () {window.GM_openInTab('https://github.com/XIU2/UserScript#xiu2userscript', {active: true,insert: true,setParent: true});window.GM_openInTab('https://greasyfork.org/zh-CN/scripts/419081/feedback', {active: true,insert: true,setParent: true});});\n}\n\n\n// 菜单开关\nfunction menu_switch(menu_status, Name, Tips) {\n    if (menu_status == 'true'){\n        GM_setValue(`${Name}`, false);\n        GM_notification({text: `已关闭 [${Tips}] 功能\\n（点击刷新网页后生效）`, timeout: 3500, onclick: function(){location.reload();}});\n    }else{\n        GM_setValue(`${Name}`, true);\n        GM_notification({text: `已开启 [${Tips}] 功能\\n（点击刷新网页后生效）`, timeout: 3500, onclick: function(){location.reload();}});\n    }\n    registerMenuCommand(); // 重新注册脚本菜单\n};\n\n\n// 返回菜单值\nfunction menu_value(menuName) {\n    for (let menu of menu_ALL) {\n        if (menu[0] == menuName) {\n            return menu[3]\n        }\n    }\n}\n\n\n// 脚本设置\nfunction menu_setting(type, title, tips, line, menu) {\n    let _br = '', _html = `<style class=\"zhihuE_SettingStyle\">.zhihuE_SettingRoot {position: absolute;top: 50%;left: 50%;-webkit-transform: translate(-50%, -50%);-moz-transform: translate(-50%, -50%);-ms-transform: translate(-50%, -50%);-o-transform: translate(-50%, -50%);transform: translate(-50%, -50%);width: auto;min-width: 400px;max-width: 600px;height: auto;min-height: 150px;max-height: 400px;color: #535353;background-color: #fff;border-radius: 3px;}\n.zhihuE_SettingBackdrop_1 {position: fixed;top: 0;right: 0;bottom: 0;left: 0;z-index: 203;display: -webkit-box;display: -ms-flexbox;display: flex;-webkit-box-orient: vertical;-webkit-box-direction: normal;-ms-flex-direction: column;flex-direction: column;-webkit-box-pack: center;-ms-flex-pack: center;justify-content: center;overflow-x: hidden;overflow-y: auto;-webkit-transition: opacity .3s ease-out;transition: opacity .3s ease-out;}\n.zhihuE_SettingBackdrop_2 {position: absolute;top: 0;right: 0;bottom: 0;left: 0;z-index: 0;background-color: rgba(18,18,18,.65);-webkit-transition: background-color .3s ease-out;transition: background-color .3s ease-out;}\n.zhihuE_SettingRoot .zhihuE_SettingHeader {padding: 10px 20px;color: #fff;font-weight: bold;background-color: #3994ff;border-radius: 3px 3px 0 0;}\n.zhihuE_SettingRoot .zhihuE_SettingMain {padding: 10px 20px;border-radius: 0 0 3px 3px;}\n.zhihuE_SettingHeader span {float: right;cursor: pointer;}\n.zhihuE_SettingMain input {margin: 10px 6px 10px 0;vertical-align:middle;}\n.zhihuE_SettingMain input[type=text] {margin: 5px 6px 5px 0;padding-block: 0;}\n.zhihuE_SettingMain input[name=zhihuE_Setting_Checkbox] {cursor: pointer;}\n.zhihuE_SettingMain label {margin-right: 20px;user-select: none;cursor: pointer;vertical-align:middle;}\n.zhihuE_SettingMain hr {border: 0.5px solid #f4f4f4;}\n[data-theme=\"dark\"] .zhihuE_SettingRoot {color: #adbac7;background-color: #343A44;}\n[data-theme=\"dark\"] .zhihuE_SettingHeader {color: #d0d0d0;background-color: #2D333B;}\n[data-theme=\"dark\"] .zhihuE_SettingMain hr {border: 0.5px solid #2d333b;}</style>\n        <div class=\"zhihuE_SettingBackdrop_1\"><div class=\"zhihuE_SettingBackdrop_2\"></div><div class=\"zhihuE_SettingRoot\">\n            <div class=\"zhihuE_SettingHeader\">${title}<span class=\"zhihuE_SettingClose\" title=\"点击关闭\"><svg class=\"Zi Zi--Close Modal-closeIcon\" fill=\"currentColor\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\"><path d=\"M13.486 12l5.208-5.207a1.048 1.048 0 0 0-.006-1.483 1.046 1.046 0 0 0-1.482-.005L12 10.514 6.793 5.305a1.048 1.048 0 0 0-1.483.005 1.046 1.046 0 0 0-.005 1.483L10.514 12l-5.208 5.207a1.048 1.048 0 0 0 .006 1.483 1.046 1.046 0 0 0 1.482.005L12 13.486l5.207 5.208a1.048 1.048 0 0 0 1.483-.006 1.046 1.046 0 0 0 .005-1.482L13.486 12z\" fill-rule=\"evenodd\"></path></svg></span></div>\n            <div class=\"zhihuE_SettingMain\"><p>${tips}</p><hr>`\n    if (line) _br = '<br>'\n    for (let i=0; i<menu.length; i++) {\n        if (menu[i][0].indexOf('menu_blockLow') === 0) {\n            _html += `<label>${menu[i][1]}：<input name=\"${menu[i][0]}\" type=\"text\" oninput=\"value=value.replace(/[^\\\\d]/g,'')\" value=\"${GM_getValue(menu[i][0])}\" style=\"width: 50px;\"></label>${_br}`\n        } else if (GM_getValue(menu[i][0])) {\n            _html += `<label><input name=\"zhihuE_Setting_Checkbox\" type=\"checkbox\" value=\"${menu[i][0]}\" checked=\"checked\">${menu[i][1]}</label>${_br}`\n        } else {\n            _html += `<label><input name=\"zhihuE_Setting_Checkbox\" type=\"checkbox\" value=\"${menu[i][0]}\">${menu[i][1]}</label>${_br}`\n        }\n    }\n    _html += `</div></div></div>`\n    document.body.insertAdjacentHTML('beforeend', _html); // 插入网页末尾\n    setTimeout(function() { // 延迟 100 毫秒，避免太快\n        const doc = document.querySelector('.zhihuE_SettingBackdrop_1');\n        if (!doc) return\n        // 关闭按钮 点击事件\n        doc.querySelector('.zhihuE_SettingClose').onclick = function(){this.parentElement.parentElement.parentElement.remove();document.querySelector('.zhihuE_SettingStyle').remove();}\n        // 点击周围空白处 = 点击关闭按钮\n        doc.querySelector('.zhihuE_SettingBackdrop_2').onclick = function(event){if (event.target == this) {document.querySelector('.zhihuE_SettingClose').click();};}\n        // 复选框 点击事件\n        doc.querySelectorAll('input[name=zhihuE_Setting_Checkbox]').forEach(function (checkBox) {\n            checkBox.addEventListener('click', function(){if (this.checked) {console.log('this.value',true);GM_setValue(this.value, true);} else {console.log('this.value',false);GM_setValue(this.value, false);}});\n        })\n        // 输入框 变化事件\n        doc.querySelectorAll('input[type=text]').forEach(function (checkBox) {\n            checkBox.onchange = function(){GM_setValue(this.name, this.value);};\n        })\n    }, 100)\n}\n\n\n// 添加收起回答观察器\nfunction getCollapsedAnswerObserver() {\n    if (!window._collapsedAnswerObserver) {\n        const observer = new MutationObserver(mutations => {\n            for (const mutation of mutations) {\n                if (mutation.target.hasAttribute('script-collapsed')) return\n                // 短的回答\n                if (mutation.target.classList.contains('RichContent')) {\n                    for (const addedNode of mutation.addedNodes) {\n                        if (addedNode.nodeType != Node.ELEMENT_NODE) continue\n                        if (addedNode.className != 'RichContent-inner') continue\n                        if (addedNode.offsetHeight < 400) break\n                        //console.log('111',addedNode, addedNode.classList, addedNode.classList.contains('RichContent-inner'), addedNode.offsetHeight, addedNode.textContent.length)\n                        const button = mutation.target.querySelector('.ContentItem-actions.Sticky [data-zop-retract-question]');\n                        if (button) {\n                            mutation.target.setAttribute('script-collapsed', '');\n                            button.click();\n                            return\n                        }\n                    }\n                // 长的回答\n                } else if (mutation.target.tagName === 'DIV' && !mutation.target.style.cssText && !mutation.target.className) {\n                    if (mutation.target.parentElement.hasAttribute('script-collapsed')) return\n                    //console.log('222',mutation.target, mutation.target.querySelector('.ContentItem-actions.Sticky [data-zop-retract-question]'))\n                    const button = mutation.target.querySelector('.ContentItem-actions.Sticky [data-zop-retract-question]');\n                    if (button) {\n                        mutation.target.parentElement.setAttribute('script-collapsed', '');\n                        button.click();\n                        return\n                    }\n                }\n            }\n        })\n\n        observer.start = function() {\n            if (!this._active) {\n                this.observe(document, { childList: true, subtree: true });\n                this._active = true;\n            }\n        }\n        observer.end = function() {\n            if (this._active) {\n                this.disconnect();\n            }\n        }\n\n        window.addEventListener('urlchange', function() {\n            observer[location.href.indexOf('/answer/') === -1 ? 'start' : 'end']();\n        })\n        window._collapsedAnswerObserver = observer;\n    }\n    return window._collapsedAnswerObserver\n}\n\n\n// 默认收起回答\nfunction defaultCollapsedAnswer() {\n    if (!menu_value('menu_defaultCollapsedAnswer')) return\n    const observer = getCollapsedAnswerObserver();\n    if (location.href.indexOf('/answer/') === -1) {\n        observer.start();\n    }\n}\n\n\n// 一键收起回答+评论（全部）\nfunction collapsedAnswer() {\n    if (!menu_value('menu_collapsedAnswer')) return\n    //console.log('1111', document.querySelector('.CornerAnimayedFlex'))\n    if (document.querySelector('.CornerAnimayedFlex') && !document.getElementById('collapsed-button')) {\n        // 向网页中插入收起全部回答按钮+样式+绑定点击事件\n        document.head.appendChild(document.createElement('style')).textContent = '.CornerButton{margin-bottom:8px !important;}.CornerButtons{bottom:45px !important;}';\n        document.querySelector('.CornerAnimayedFlex').insertAdjacentHTML('afterBegin', '<button id=\"collapsed-button\" data-tooltip=\"收起全部回答/评论\" data-tooltip-position=\"left\" data-tooltip-will-hide-on-click=\"false\" aria-label=\"收起全部回答/评论\" type=\"button\" class=\"' + document.querySelector('.CornerAnimayedFlex>button').className + '\"><svg class=\"ContentItem-arrowIcon is-active\" aria-label=\"收起全部回答/评论\" fill=\"currentColor\" viewBox=\"0 0 24 24\" width=\"24\" height=\"24\"><path d=\"M16.036 19.59a1 1 0 0 1-.997.995H9.032a.996.996 0 0 1-.997-.996v-7.005H5.03c-1.1 0-1.36-.633-.578-1.416L11.33 4.29a1.003 1.003 0 0 1 1.412 0l6.878 6.88c.782.78.523 1.415-.58 1.415h-3.004v7.005z\"></path></svg></button>');\n        document.getElementById('collapsed-button').onclick = function () {\n\n            // 收起所有评论（悬浮的 [收起评论]）\n            document.querySelectorAll('.Comments-container').forEach(function (el) {\n                let commentCollapseButton = getXpath('//button[text()=\"收起评论\"]', el)\n                if (commentCollapseButton) commentCollapseButton.click();\n            });\n            // 收起所有评论（固定的 [收起评论]）\n            document.querySelectorAll('.RichContent >.ContentItem-actions>button:first-of-type').forEach(function (el) {\n                if (el.textContent.indexOf('收起评论') > -1) el.click()\n            });\n\n            if (location.pathname === '/' || location.pathname === '/hot' || location.pathname === '/follow') {// 对于首页的关注、推荐、热榜\n                document.querySelectorAll('.ContentItem-rightButton').forEach(function (el) {if (el.hasAttribute('data-zop-retract-question')) {el.click();};});\n            } else {\n                // 被 getCollapsedAnswerObserver 函数收起过的，固定 [收起] 按钮\n                document.querySelectorAll('[script-collapsed]').forEach(function(scriptCollapsed) {scriptCollapsed.querySelectorAll('.ContentItem-actions [data-zop-retract-question], .ContentItem-actions.Sticky [data-zop-retract-question]').forEach(function(button) {button.click();});})\n                // 被 getCollapsedAnswerObserver 函数收起过的，悬浮 [收起] 按钮（悬浮底部的横栏）\n                document.querySelectorAll('.RichContent:not([script-collapsed]) .ContentItem-actions.Sticky [data-zop-retract-question]').forEach(function(button) {\n                    let el = button.parentElement;\n                    while (!el.classList.contains('RichContent')) {el = el.parentElement;}\n                    if (el) el.setAttribute('script-collapsed', '');\n                    button.click();\n                })\n\n                const observer = getCollapsedAnswerObserver();\n                observer.start();\n\n                if (!menu_value('menu_defaultCollapsedAnswer') && !observer._disconnectListener) {\n                    window.addEventListener('urlchange', function() {\n                        observer.end();\n                        window._collapsedAnswerObserver = null;\n                    })\n                    observer._disconnectListener = true;\n                }\n            }\n        }\n    }\n}\n\n\n// 收起当前回答、评论（监听点击事件，点击网页两侧空白处）\nfunction collapsedNowAnswer(selectors) {\n    backToTop(selectors) // 快捷回到顶部\n    if (!menu_value('menu_collapsedNowAnswer')) return\n    document.querySelector(selectors).onclick = function(event){\n        if (event.target == this) {\n            // 下面这段主要是 [收起回答]，顺便 [收起评论]（如果展开了的话）\n            let rightButton = document.querySelector('.ContentItem-actions.Sticky.RichContent-actions.is-fixed.is-bottom')\n            if (rightButton) { // 悬浮在底部的 [收起回答]（此时正在浏览回答内容 [中间区域]）\n                // 固定的 [收起评论]（先看看是否展开评论）\n                let commentCollapseButton = rightButton.querySelector('button.Button.ContentItem-action.Button--plain.Button--withIcon.Button--withLabel:first-of-type')\n                //console.log('111')\n                if (commentCollapseButton && commentCollapseButton.textContent.indexOf('收起评论') > -1) commentCollapseButton.click();\n                // 再去收起回答\n                rightButton = rightButton.querySelector('.ContentItem-rightButton[data-zop-retract-question]')\n                //console.log('222')\n                if (rightButton) rightButton.click();\n\n            } else { // 固定在回答底部的 [收起回答]（此时正在浏览回答内容 [尾部区域]）\n\n                // 悬浮的 [收起评论]（此时正在浏览评论内容 [中间区域]）\n                //if (getXpath('//button[text()=\"收起评论\"]',document.querySelector('.Comments-container'))) {getXpath('//button[text()=\"收起评论\"]',document.querySelector('.Comments-container')).click();console.log('asfaf')}\n\n                let answerCollapseButton_ = false;\n                for (let el of document.querySelectorAll('.ContentItem-rightButton[data-zop-retract-question]')) { // 遍历所有回答底部的 [收起] 按钮\n                    if (isElementInViewport(el)) { // 判断该 [收起] 按钮是否在可视区域内\n                        // 固定的 [收起评论]（先看看是否展开评论，即存在 [收起评论] 按钮）\n                        let commentCollapseButton = el.parentNode.querySelector('button.Button.ContentItem-action.Button--plain.Button--withIcon.Button--withLabel:first-of-type')\n                        // 如果展开了评论，就收起评论\n                        //console.log('333')\n                        //if (commentCollapseButton && commentCollapseButton.textContent.indexOf('收起评论') > -1) commentCollapseButton.click();\n                        if (commentCollapseButton && commentCollapseButton.textContent.indexOf('收起评论') > -1) {\n                            commentCollapseButton.click();\n                            if (!isElementInViewport(commentCollapseButton)) scrollTo(0,el.offsetTop+50)\n                        }\n                        //console.log('444')\n                        el.click() // 再去收起回答\n                        answerCollapseButton_ = true; // 如果找到并点击收起了，就没必要执行下面的代码了（可视区域中没有 [收起回答] 时）\n                        break\n                    }\n                }\n                // 针对完全看不到 [收起回答] 按钮时（如 [头部区域]，以及部分明明很长却不显示悬浮横条的回答）\n                if (!answerCollapseButton_) {\n                    for (let el of document.querySelectorAll('.List-item, .Card.AnswerCard, .Card.TopstoryItem')) { // 遍历所有回答主体元素\n                        if (isElementInViewport_(el)) { // 判断该回答是否在可视区域内\n                            // 固定的 [收起评论]（先看看是否展开评论，即存在 [收起评论] 按钮）\n                            let commentCollapseButton = el.querySelector('button.Button.ContentItem-action.Button--plain.Button--withIcon.Button--withLabel:first-of-type')\n                            // 如果展开了评论，就收起评论\n                            //console.log('555',commentCollapseButton)\n                            if (commentCollapseButton && commentCollapseButton.textContent.indexOf('收起评论') > -1) {\n                                commentCollapseButton.click();\n                                if (!isElementInViewport(commentCollapseButton)) scrollTo(0,el.offsetTop+50)\n                            }\n                            let answerCollapseButton__ = el.querySelector('.ContentItem-rightButton[data-zop-retract-question]');\n                            //console.log('666')\n                            if (answerCollapseButton__) answerCollapseButton__.click() // 再去收起回答\n                            break\n                        }\n                    }\n                }\n            }\n\n            // 下面这段只针对 [收起评论]（如果展开了的话）\n            let commentCollapseButton_ = false, commentCollapseButton__ = false;\n            // 悬浮的 [收起评论]（此时正在浏览评论内容 [中间区域]）\n            let commentCollapseButton = getXpath('//button[text()=\"收起评论\"]',document.querySelector('.Comments-container'))\n            if (commentCollapseButton) {\n                //console.log('777', commentCollapseButton)\n                commentCollapseButton.click();\n            } else { // 固定的 [收起评论]（此时正在浏览评论内容 [头部区域]）\n                let commentCollapseButton_1 = document.querySelectorAll('.ContentItem-actions > button.Button.ContentItem-action.Button--plain.Button--withIcon.Button--withLabel:first-of-type, .ContentItem-action > button.Button.Button--plain.Button--withIcon.Button--withLabel:first-of-type')\n                if (commentCollapseButton_1.length > 0) {\n                    for (let el of commentCollapseButton_1) {\n                        if (el.textContent.indexOf('收起评论') > -1) {\n                            if (isElementInViewport(el)) {\n                                //console.log('888')\n                                el.click()\n                                commentCollapseButton_ = true // 如果找到并点击了，就没必要执行下面的代码了（可视区域中没有 [收起评论] 时）\n                                break\n                            }\n                        }\n                    }\n                }\n                if (commentCollapseButton_ == false) { // 可视区域中没有 [收起评论] 时（此时正在浏览评论内容 [头部区域] + [尾部区域](不上不下的，既看不到固定的 [收起评论] 又看不到悬浮的 [收起评论])），需要判断可视区域中是否存在评论元素\n                    let commentCollapseButton_1 = document.querySelectorAll('.Comments-container')\n                    if (commentCollapseButton_1.length > 0) {\n                        for (let el of commentCollapseButton_1) {\n                            if (isElementInViewport(el)) {\n                                let parentElement = findParentElement(el, 'List-item') || findParentElement(el, 'Card '),\n                                    commentCollapseButton = parentElement.querySelector('.ContentItem-actions > button.Button.ContentItem-action.Button--plain.Button--withIcon.Button--withLabel:first-of-type')\n                                if (commentCollapseButton.textContent.indexOf('收起评论') > -1) {\n                                    //console.log('999')\n                                    commentCollapseButton.click()\n                                    if (!isElementInViewport(commentCollapseButton)) {console.log(parentElement,parentElement.offsetTop,parentElement.offsetHeight);scrollTo(0,parentElement.offsetTop+parentElement.offsetHeight-50)}\n                                    commentCollapseButton__ = true // 如果找到并点击了，就没必要执行下面的代码了（可视区域中没有 评论元素 时）\n                                    break\n                                }\n                            }\n                        }\n                    }\n                    if (commentCollapseButton__ == false) { // 如果上面的都没找到，那么就尝试寻找评论末尾的 [评论回复框]\n                        let commentCollapseButton_2 = document.querySelectorAll('.Editable-content')\n                        if (commentCollapseButton_2.length > 0) {\n                            for (let el of commentCollapseButton_2) {\n                                if (isElementInViewport(el)) {\n                                    let parentElement = findParentElement(el, 'List-item') || findParentElement(el, 'Card '),\n                                    commentCollapseButton = parentElement.querySelector('.ContentItem-actions > button.Button.ContentItem-action.Button--plain.Button--withIcon.Button--withLabel:first-of-type')\n                                    //console.log(commentCollapseButton)\n                                    if (commentCollapseButton.textContent.indexOf('收起评论') > -1) {\n                                        //console.log('101010')\n                                        commentCollapseButton.click()\n                                        if (!isElementInViewport(commentCollapseButton)) {console.log(parentElement,parentElement.offsetTop,parentElement.offsetHeight);scrollTo(0,parentElement.offsetTop+parentElement.offsetHeight-50)}\n                                        break\n                                    }\n                                }\n                            }\n                        }\n                    }\n                }\n            }\n        }\n    }\n}\n\n\n// 回到顶部（监听点击事件，鼠标右键点击网页两侧空白处）\nfunction backToTop(selectors) {\n    if (!menu_value('menu_backToTop')) return\n    document.querySelector(selectors).oncontextmenu = function(event){\n        if (event.target == this) {\n            event.preventDefault();\n            window.scrollTo(0,0)\n        }\n    }\n}\n\n\n//获取元素是否在可视区域（完全可见）\nfunction isElementInViewport(el) {\n    let rect = el.getBoundingClientRect();\n    return (\n        rect.top >= 0 &&\n        rect.left >= 0 &&\n        rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&\n        rect.right <= (window.innerWidth || document.documentElement.clientWidth)\n    );\n}\n//获取元素是否在可视区域（部分可见）\nfunction isElementInViewport_(el) {\n    let rect = el.getBoundingClientRect();\n    return (\n    rect.top < (window.innerHeight || document.documentElement.clientHeight) &&\n    rect.bottom > 0\n  );\n}\n\n\n// 屏蔽低赞/低评回答\nfunction blockLowCount(type) {\n    switch(type) {\n        case 'index':\n            blockLowCount_('.Card.TopstoryItem.TopstoryItem-isRecommend', 'Card TopstoryItem TopstoryItem-isRecommend', 'menu_blockLowUpvoteCount', 'menu_blockLowCommentCount');\n            break;\n        case 'follow':\n            blockLowCount_('.Card.TopstoryItem.TopstoryItem-isFollow', 'Card TopstoryItem TopstoryItem-isFollow', 'menu_blockLowUpvoteCountFollow', 'menu_blockLowCommentCountFollow');\n            break;\n        case 'question':\n            blockLowCount_('.List-item', 'List-item', 'menu_blockLowUpvoteCountQuestion', 'menu_blockLowCommentCountQuestion');\n            break;\n    }\n\n\n    function blockLowCount_(className1, className2, menuUpvote, menuComment) {\n        // 前几条因为是直接加载的，而不是动态插入网页的，所以需要单独判断\n        function blockLowCount_now() {\n            document.querySelectorAll(className1).forEach(function(item1){\n                blockLowCount_1(item1,menuUpvote,'meta[itemprop=upvoteCount]');\n                blockLowCount_1(item1,menuComment,'meta[itemprop=commentCount]');\n            })\n        }\n\n        blockLowCount_now();\n        window.addEventListener('urlchange', function(){\n            setTimeout(blockLowCount_now, 1000); // 网页 URL 变化后再次执行\n        })\n\n        // 这个是监听网页插入事件，用来判断后续网页动态插入的元素\n        const callback = (mutationsList, observer) => {\n            for (const mutation of mutationsList) {\n                for (const target of mutation.addedNodes) {\n                    if (target.nodeType != 1) return\n                    if (target.className === className2) {\n                        blockLowCount_1(target,menuUpvote,'meta[itemprop=upvoteCount]');\n                        blockLowCount_1(target,menuComment,'meta[itemprop=commentCount]');\n                    }\n                }\n            }\n        };\n        const observer = new MutationObserver(callback);\n        observer.observe(document, { childList: true, subtree: true });\n    }\n\n\n    function blockLowCount_1(item1, menu, css) {\n        if (GM_getValue(menu)) {\n            let item = item1.querySelector(css);\n            //console.log(item)\n            if (item && item.content && Number(item.content) < Number(GM_getValue(menu))) {\n                if (menu.indexOf('Upvote') !== -1) {\n                    console.log('已屏蔽低赞回答：', item.content + '<' + GM_getValue(menu), item1, type);\n                } else {\n                    console.log('已屏蔽低评回答：', item.content + '<' + GM_getValue(menu), item1, type);\n                }\n                item1.hidden = true;\n                item1.style.display = 'none';\n            }\n        }\n    }\n}\n\n\n\n// 自定义屏蔽用户\nfunction customBlockUsers() {\n    let nowBlockUsers = '';\n    menu_value('menu_customBlockUsers').forEach(function(item){nowBlockUsers += '|' + item})\n    //console.log(nowBlockUsers.replace('|',''))\n    let newBlockUsers = prompt('编辑 [自定义屏蔽用户]\\n（不同用户名之间使用 \"|\" 分隔，例如：用户A|用户B|用户C ）', nowBlockUsers.replace('|',''));\n    if (newBlockUsers === '') {\n        GM_setValue('menu_customBlockUsers', []);\n        registerMenuCommand(); // 重新注册脚本菜单\n    } else if (newBlockUsers != null) {\n        GM_setValue('menu_customBlockUsers', newBlockUsers.split('|'));\n        registerMenuCommand(); // 重新注册脚本菜单\n    }\n};\n\n\n// 屏蔽指定用户\nfunction blockUsers(type) {\n    if (!menu_value('menu_blockUsers')) return\n    if (!menu_value('menu_customBlockUsers') || menu_value('menu_customBlockUsers').length < 1) return\n    switch(type) {\n        case 'index':\n            blockUsers_('.Card.TopstoryItem.TopstoryItem-isRecommend', 'Card TopstoryItem TopstoryItem-isRecommend');\n            break;\n        case 'follow':\n            blockUsers_('.Card.TopstoryItem.TopstoryItem-isFollow', 'Card TopstoryItem TopstoryItem-isFollow');\n            break;\n        case 'question':\n            blockUsers_question();\n            break;\n        case 'search':\n            blockUsers_search();\n            break;\n        case 'topic':\n            blockUsers_('.List-item.TopicFeedItem', 'List-item TopicFeedItem');\n            break;\n        case 'people':\n            blockUsers_button_people(); // 添加屏蔽用户按钮（用户主页）\n            break;\n    }\n    blockUsers_comment(); //       评论区\n    blockUsers_button(); //        加入黑名单按钮（用户信息悬浮框中）\n\n    function blockUsers_(className1, className2) {\n        // 前几条因为是直接加载的，而不是动态插入网页的，所以需要单独判断\n        function blockKeywords_now() {\n            document.querySelectorAll(className1).forEach(function(item1){\n                let item = item1.querySelector('.ContentItem.AnswerItem, .ContentItem.ArticleItem'); // 用户名所在元素\n                if (item) {\n                    for (const keyword of menu_value('menu_customBlockUsers')) { // 遍历用户名黑名单\n                        if (keyword != '' && item.dataset.zop.indexOf('authorName\":\"' + keyword + '\",') > -1) { // 找到就删除该信息流\n                            console.log('已屏蔽：' + item.dataset.zop);\n                            item1.hidden = true;\n                            break;\n                        }\n                    }\n                }\n            })\n        }\n\n        blockKeywords_now();\n        window.addEventListener('urlchange', function(){\n            setTimeout(blockKeywords_now, 1000); // 网页 URL 变化后再次执行\n        })\n\n        // 这个是监听网页插入事件，用来判断后续网页动态插入的元素\n        const callback = (mutationsList, observer) => {\n            for (const mutation of mutationsList) {\n                for (const target of mutation.addedNodes) {\n                    if (target.nodeType != 1) return\n                    if (target.className === className2) {\n                        let item = target.querySelector('.ContentItem.AnswerItem, .ContentItem.ArticleItem'); // 用户名所在元素\n                        if (item) {\n                            for (const keyword of menu_value('menu_customBlockUsers')) { // 遍历用户名黑名单\n                                if (keyword != '' && item.dataset.zop.indexOf('authorName\":\"' + keyword + '\",') > -1) { // 找到就删除该信息流\n                                    console.log('已屏蔽：' + item.dataset.zop);\n                                    target.hidden = true;\n                                    break;\n                                }\n                            }\n                        }\n                    }\n                }\n            }\n        };\n        const observer = new MutationObserver(callback);\n        observer.observe(document, { childList: true, subtree: true });\n    }\n\n\n    function blockUsers_question() {\n        const blockUsers_question_ = (mutationsList, observer) => {\n            for (const mutation of mutationsList) {\n                for (const target of mutation.addedNodes) {\n                    if (target.nodeType != 1) return\n                    if (target.className === 'List-item' || target.className === 'Card AnswerCard') {\n                        let item1 = target.querySelector('.ContentItem.AnswerItem');\n                        if (item1) {\n                            menu_value('menu_customBlockUsers').forEach(function(item2){ // 遍历用户黑名单\n                                if (item1.dataset.zop.indexOf('authorName\":\"' + item2 + '\",') > -1) { // 找到就删除该回答\n                                    console.log('已屏蔽：' + item1.dataset.zop)\n                                    target.hidden = true;\n                                }\n                            })\n                        }\n                    }\n                }\n            }\n        };\n\n        const blockUsers_question_answer_ = (mutationsList, observer) => {\n            for (const mutation of mutationsList) {\n                for (const target of mutation.addedNodes) {\n                    if (target.nodeType != 1) return\n                    target.querySelectorAll('.List-item, .Card.AnswerCard').forEach(function(item){\n                        let item1 = item.querySelector('.ContentItem.AnswerItem');\n                        if (item1) {\n                            menu_value('menu_customBlockUsers').forEach(function(item2){ // 遍历用户黑名单\n                                if (item1.dataset.zop.indexOf('authorName\":\"' + item2 + '\",') > -1) { // 找到就删除该回答\n                                    console.log('已屏蔽：' + item1.dataset.zop)\n                                    item.hidden = true;\n                                }\n                            })\n                        }\n                    })\n                }\n            }\n        };\n\n        if (location.pathname.indexOf('/answer/') > -1) { // 回答页（就是只有三个回答的页面）\n            const observer = new MutationObserver(blockUsers_question_answer_);\n            observer.observe(document, { childList: true, subtree: true });\n        } else { // 问题页（可以显示所有回答的页面）\n            const observer = new MutationObserver(blockUsers_question_);\n            observer.observe(document, { childList: true, subtree: true });\n        }\n\n        // 针对的是打开网页后直接加载的前面几个回答（上面哪些是针对动态加载的回答）\n        document.querySelectorAll('.List-item, .Card.AnswerCard').forEach(function(item){\n            let item1 = item.querySelector('.ContentItem.AnswerItem');\n            if (item1) {\n                menu_value('menu_customBlockUsers').forEach(function(item2){ // 遍历用户黑名单\n                    if (item1.dataset.zop.indexOf('authorName\":\"' + item2 + '\",') > -1) { // 找到就删除该回答\n                        console.log('已屏蔽：' + item1.dataset.zop)\n                        item.hidden = true;\n                    }\n                })\n            }\n        })\n    }\n\n    function blockUsers_search() {\n        function blockUsers_now() {\n            if (location.search.indexOf('type=content') === -1) return // 目前只支持搜索页的 [综合]\n            document.querySelectorAll('.Card.SearchResult-Card[data-za-detail-view-path-module=\"AnswerItem\"], .Card.SearchResult-Card[data-za-detail-view-path-module=\"PostItem\"]').forEach(function(item1){\n                let item = item1.querySelector('.RichText.ztext.CopyrightRichText-richText b'); // 用户名所在元素\n                if (item) {\n                    for (const keyword of menu_value('menu_customBlockUsers')) { // 遍历用户名黑名单\n                        if (keyword != '' && item.textContent === keyword) { // 找到就删除该信息流\n                            console.log('已屏蔽：' + item.textContent);\n                            item1.hidden = true;\n                            break;\n                        }\n                    }\n                }\n            })\n        }\n\n        setTimeout(blockUsers_now, 2000);\n        window.addEventListener('urlchange', function(){\n            setTimeout(blockUsers_now, 1000); // 网页 URL 变化后再次执行\n        })\n\n        const callback = (mutationsList, observer) => {\n            if (location.search.indexOf('type=content') === -1) return // 目前只支持搜索页的 [综合]\n            for (const mutation of mutationsList) {\n                for (const target of mutation.addedNodes) {\n                    if (target.nodeType != 1) return\n                    let item = target.querySelector('.Card.SearchResult-Card[data-za-detail-view-path-module=\"AnswerItem\"] .RichText.ztext.CopyrightRichText-richText b, .Card.SearchResult-Card[data-za-detail-view-path-module=\"PostItem\"] .RichText.ztext.CopyrightRichText-richText b');\n                    if (item) {\n                        for (const keyword of menu_value('menu_customBlockUsers')) { // 遍历用户名黑名单\n                            if (keyword != '' && item.textContent === keyword) { // 找到就删除该信息流\n                                console.log('已屏蔽：' + item.textContent);\n                                target.hidden = true;\n                                break;\n                            }\n                        }\n                    }\n                }\n            }\n        };\n        const observer = new MutationObserver(callback);\n        observer.observe(document, { childList: true, subtree: true });\n    }\n\n    function blockUsers_comment() {\n        const callback = (mutationsList, observer) => {\n            for (const mutation of mutationsList) {\n                for (const target of mutation.addedNodes) {\n                    if (target.nodeType != 1) return\n                    //console.log(target)\n                    if (target.tagName == 'DIV' && target.className.indexOf('css-') == 0 && target.dataset.id == undefined) {\n                        let item = target.querySelector('a[href^=\"https://www.zhihu.com/people/\"]>img.Avatar[alt][loading]')\n                        if (item) {\n                            //console.log(item)\n                            menu_value('menu_customBlockUsers').forEach(function(item1){ // 遍历用户黑名单\n                                if (item.alt === item1) { // 找到就删除该搜索结果\n                                    //console.log(item.alt,item1)\n                                    item.parentElement.parentElement.parentElement.parentElement.style.display = \"none\";\n                                }\n                            })\n\n                            // 添加屏蔽用户按钮（点赞、回复等按钮后面）\n                            /*if (item) {\n                            let footer = findParentElement(item, 'CommentItemV2-meta', true).parentElement.querySelector('.CommentItemV2-metaSibling > .CommentItemV2-footer'),\n                                userid = item.parentElement;\n                            if (userid && footer && !footer.lastElementChild.dataset.name) {\n                                userid = userid.href.split('/')[4];\n                                footer.insertAdjacentHTML('beforeend',`<button type=\"button\" data-name=\"${item.alt}\" data-userid=\"${userid}\" class=\"Button CommentItemV2-hoverBtn Button--plain\"><span style=\"display: inline-flex; align-items: center;\">&#8203;<svg class=\"Zi Zi--Like\" fill=\"currentColor\" viewBox=\"0 0 24 24\" width=\"16\" height=\"16\" style=\"transform: rotate(180deg); margin-right: 5px;\"><path d=\"M18.376 5.624c-3.498-3.499-9.254-3.499-12.752 0-3.499 3.498-3.499 9.254 0 12.752 3.498 3.499 9.254 3.499 12.752 0 3.499-3.498 3.499-9.14 0-12.752zm-1.693 1.693c2.37 2.37 2.596 6.094.678 8.69l-9.367-9.48c2.708-1.919 6.32-1.58 8.69.79zm-9.48 9.48c-2.37-2.37-2.595-6.095-.676-8.69l9.48 9.48c-2.822 1.918-6.433 1.58-8.803-.79z\" fill-rule=\"evenodd\"></path></svg></span>屏蔽用户</button>`);\n                                footer.lastElementChild.onclick = function(){blockUsers_button_add(this.dataset.name, this.dataset.userid, false)}\n                            }\n                        }*/\n                        }\n                    }\n                }\n            }\n        };\n        const observer = new MutationObserver(callback);\n        observer.observe(document, { childList: true, subtree: true });\n    }\n\n\n    // 添加屏蔽用户按钮（用户信息悬浮框中）\n    function blockUsers_button() {\n        const callback = (mutationsList, observer) => {\n            for (const mutation of mutationsList) {\n                for (const target of mutation.addedNodes) {\n                    if (target.nodeType != 1) return\n                    //console.log(target, target.className)\n                    if (target.tagName == 'DIV' && target.className && (target.className.indexOf('css-') == 0 || target.style == 'opacity: 1;')) {\n                        const item = target.querySelector('.MemberButtonGroup.ProfileButtonGroup.HoverCard-buttons'),\n                              item1 = target.querySelector('img.Avatar+div span.UserLink>a.UserLink-link[data-za-detail-view-element_name=User]');\n                        if (item1) {\n                            const name = item1.textContent, userid = item1.href.split('/')[4], users = menu_value('menu_customBlockUsers');\n                            for (let num = 0;num<users.length;num++) { // 判断是否已存在\n                                if (users[num] === name) { // 已存在\n                                    target.querySelectorAll('.Button.Button--primary.Button--red').forEach(function(item){item.style.display = 'none';}) // 隐藏知乎自带的已屏蔽按钮\n                                    item.insertAdjacentHTML('afterbegin', `<button type=\"button\" data-name=\"${name}\" data-userid=\"${userid}\" class=\"Button FollowButton Button--primary Button--red\"><span style=\"display: inline-flex; align-items: center;\">​<svg width=\"1.2em\" height=\"1.2em\" viewBox=\"0 0 24 24\" class=\"Zi Zi--Ban\" fill=\"currentColor\"><path fill-rule=\"evenodd\" d=\"M16.346 18.113a7.5 7.5 0 0 1-10.46-10.46l10.46 10.46Zm1.767-1.767L7.654 5.886a7.5 7.5 0 0 1 10.46 10.46ZM22 12c0 5.523-4.477 10-10 10S2 17.523 2 12 6.477 2 12 2s10 4.477 10 10Z\" clip-rule=\"evenodd\"></path></svg></span> 已屏蔽</button>`);\n                                    item.firstElementChild.onclick = function(){this.disabled = true;blockUsers_button_del(this.dataset.name, this.dataset.userid, false)}\n                                    return\n                                }\n                            };\n                            if (item && !target.querySelector('button[data-name][data-userid]')) {\n                                item.insertAdjacentHTML('beforeend', `<button type=\"button\" data-name=\"${name}\" data-userid=\"${userid}\" class=\"Button FollowButton Button--primary Button--red\" style=\"width: 100%;margin: 7px 0 0 0;\"><span style=\"display: inline-flex; align-items: center;\">​<svg width=\"1.2em\" height=\"1.2em\" viewBox=\"0 0 24 24\" class=\"Zi Zi--Ban\" fill=\"currentColor\"><path fill-rule=\"evenodd\" d=\"M16.346 18.113a7.5 7.5 0 0 1-10.46-10.46l10.46 10.46Zm1.767-1.767L7.654 5.886a7.5 7.5 0 0 1 10.46 10.46ZM22 12c0 5.523-4.477 10-10 10S2 17.523 2 12 6.477 2 12 2s10 4.477 10 10Z\" clip-rule=\"evenodd\"></path></svg></span> 屏蔽用户</button>`);\n                                item.lastElementChild.onclick = function(){this.disabled = true;blockUsers_button_add(this.dataset.name, this.dataset.userid, false)}\n                            }\n                        }\n                    }\n                }\n            }\n        };\n        const observer = new MutationObserver(callback);\n        observer.observe(document, { childList: true, subtree: true });\n    }\n\n    // 添加屏蔽用户按钮（用户主页）\n    function blockUsers_button_people() {\n        let item = document.querySelector('.MemberButtonGroup.ProfileButtonGroup.ProfileHeader-buttons'), // 获取按钮元素位置\n            name = document.querySelector('.ProfileHeader-name').firstChild.textContent, // 获取用户名\n            users = menu_value('menu_customBlockUsers'), // 读取屏蔽列表\n            userid = location.href.split('/')[4];\n        for (let num = 0;num<users.length;num++) { // 判断是否已存在\n            if (users[num] === name) { // 已存在\n                document.querySelectorAll('.Button.Button--primary.Button--red').forEach(function(item){item.style.display = 'none';}) // 隐藏知乎自带的已屏蔽按钮\n                item.insertAdjacentHTML('afterbegin', `<button type=\"button\" data-name=\"${name}\" data-userid=\"${userid}\" class=\"Button FollowButton Button--primary Button--red\" style=\"margin: 0 0 0 12px;\"><span style=\"display: inline-flex; align-items: center;\">​<svg width=\"1.2em\" height=\"1.2em\" viewBox=\"0 0 24 24\" class=\"Zi Zi--Ban\" fill=\"currentColor\"><path fill-rule=\"evenodd\" d=\"M16.346 18.113a7.5 7.5 0 0 1-10.46-10.46l10.46 10.46Zm1.767-1.767L7.654 5.886a7.5 7.5 0 0 1 10.46 10.46ZM22 12c0 5.523-4.477 10-10 10S2 17.523 2 12 6.477 2 12 2s10 4.477 10 10Z\" clip-rule=\"evenodd\"></path></svg></span> 已屏蔽</button>`);\n                item.firstElementChild.onclick = function(){this.disabled = true;blockUsers_button_del(this.dataset.name, this.dataset.userid, true)}\n                return\n            }\n        };\n        if (item) {\n            item.insertAdjacentHTML('beforeend', `<button type=\"button\" data-name=\"${name}\" data-userid=\"${userid}\" class=\"Button FollowButton Button--primary Button--red\" style=\"margin: 0 0 0 12px;\"><span style=\"display: inline-flex; align-items: center;\">​<svg width=\"1.2em\" height=\"1.2em\" viewBox=\"0 0 24 24\" class=\"Zi Zi--Ban\" fill=\"currentColor\"><path fill-rule=\"evenodd\" d=\"M16.346 18.113a7.5 7.5 0 0 1-10.46-10.46l10.46 10.46Zm1.767-1.767L7.654 5.886a7.5 7.5 0 0 1 10.46 10.46ZM22 12c0 5.523-4.477 10-10 10S2 17.523 2 12 6.477 2 12 2s10 4.477 10 10Z\" clip-rule=\"evenodd\"></path></svg></span> 屏蔽用户</button>`);\n            item.lastElementChild.onclick = function(){this.disabled = true;blockUsers_button_add(this.dataset.name, this.dataset.userid, true)}\n        }\n    }\n\n    // 屏蔽用户按钮绑定事件（添加）\n    function blockUsers_button_add(name, userid, reload) {\n        if (!name || !userid) return\n        let users = menu_value('menu_customBlockUsers'), // 读取屏蔽列表\n            index = users.indexOf(name);\n        if (index === -1) {\n            users.push(name); // 追加用户名\n            GM_setValue('menu_customBlockUsers', users); // 写入屏蔽列表\n            // 加入知乎自带的黑名单（和本脚本互补~\n            GM_xmlhttpRequest({url: `https://www.zhihu.com/api/v4/members/${userid}/actions/block`,method: 'POST',timeout: 2000});\n            // 是否刷新本页\n            if (reload) {\n                setTimeout(function(){location.reload()}, 200); // 刷新网页，延迟 200 毫秒，避免知乎反应慢~\n            } else {\n                GM_notification({text: `该用户已被屏蔽~\\n刷新网页后生效~`, timeout: 3000});\n            }\n        } else {\n            GM_notification({text: `该用户已经被屏蔽啦，无需重复屏蔽~`, timeout: 3000});\n        }\n    }\n\n\n    // 屏蔽用户按钮绑定事件（删除）\n    function blockUsers_button_del(name, userid, reload) {\n        if (!name || !userid) return\n        let users = menu_value('menu_customBlockUsers'), // 读取屏蔽列表\n            index = users.indexOf(name);\n        if (index > -1) {\n            users.splice(index, 1); // 移除用户名\n            GM_setValue('menu_customBlockUsers', users); // 写入屏蔽列表\n            // 移除知乎自带的黑名单\n            GM_xmlhttpRequest({url: `https://www.zhihu.com/api/v4/members/${userid}/actions/block`,method: 'DELETE',timeout: 2000});\n            // 是否刷新本页\n            if (reload) {\n                setTimeout(function(){location.reload()}, 200); // 刷新网页，延迟 200 毫秒，避免知乎反应慢~\n            } else {\n                GM_notification({text: `该用户已取消屏蔽啦~\\n刷新网页后生效~`, timeout: 3000});\n            }\n        } else {\n            GM_notification({text: `没有在屏蔽列表中找到该用户...`, timeout: 3000});\n        }\n    }\n}\n\n\n// 缓存最近一次选中的文字，避免从右键脚本菜单回调中取不到当前选区\nvar selectedTextForBlockKeywords = '';\n// 规范化屏蔽词文本：压缩多余空白并去掉首尾空格\nfunction normalizeBlockKeywordText(text) {\n    return (text || '').replace(/\\s+/g, ' ').trim();\n}\n\n// 读取当前选中的文字，兼容输入框和普通页面选区\nfunction getSelectedBlockKeywordText() {\n    let text = '';\n    const activeElement = document.activeElement;\n    if (activeElement && ((activeElement.tagName === 'TEXTAREA') || (activeElement.tagName === 'INPUT' && /^(?:text|search|url|tel|password)$/i.test(activeElement.type))) && typeof activeElement.selectionStart === 'number') {\n        text = activeElement.value.slice(activeElement.selectionStart, activeElement.selectionEnd);\n    }\n    if (!text && window.getSelection) {\n        text = window.getSelection().toString();\n    }\n    return normalizeBlockKeywordText(text);\n}\n\n// 记录最近一次选中的文字，供右键脚本菜单 [添加选中文字到屏蔽词] 使用\nfunction rememberSelectedBlockKeyword() {\n    const updateSelectedBlockKeyword = function() {\n        selectedTextForBlockKeywords = getSelectedBlockKeywordText();\n    }\n    document.addEventListener('selectionchange', updateSelectedBlockKeyword);\n    document.addEventListener('contextmenu', updateSelectedBlockKeyword, true);\n    window.addEventListener('urlchange', function(){selectedTextForBlockKeywords = '';});\n}\n\n// 将当前选中的文字直接加入 [自定义屏蔽关键词] 列表\nfunction addSelectedKeywordToBlocklist() {\n    if (!menu_value('menu_blockKeywords')) {\n        GM_notification({text: '请先开启 [屏蔽指定关键词] 功能~', timeout: 3000});\n        return\n    }\n\n    const keyword = getSelectedBlockKeywordText() || selectedTextForBlockKeywords;\n    if (!keyword) {\n        GM_notification({text: '未检测到选中的文字，请先选中内容后再使用该菜单~', timeout: 3000});\n        return\n    }\n\n    let keywords = (GM_getValue('menu_customBlockKeywords') || []).map(function(item){return normalizeBlockKeywordText(item)}).filter(function(item){return item !== ''});\n    if (keywords.some(function(item){return item.toLowerCase() === keyword.toLowerCase();})) {\n        GM_notification({text: `屏蔽词 [${keyword}] 已存在，无需重复添加~`, timeout: 3000});\n        return\n    }\n\n    keywords.push(keyword);\n    GM_setValue('menu_customBlockKeywords', keywords);\n    registerMenuCommand(); // 同步刷新缓存的菜单值\n    GM_notification({text: `已添加屏蔽词 [${keyword}]\\n后续加载的标题/评论会按该关键词过滤~`, timeout: 4000});\n}\n\n\n// 自定义屏蔽关键词（标题）\nfunction customBlockKeywords() {\n    let nowBlockKeywords = '';\n    menu_value('menu_customBlockKeywords').forEach(function(item){nowBlockKeywords += '|' + item})\n    let newBlockKeywords = prompt('编辑 [自定义屏蔽关键词]\\n（不同关键词之间使用 \"|\" 分隔，例如：关键词A|关键词B|关键词C \\n（关键词不区分大小写，支持表情如：[捂脸]|[飙泪笑]', nowBlockKeywords.replace('|',''));\n    if (newBlockKeywords === '') {\n        GM_setValue('menu_customBlockKeywords', []);\n        registerMenuCommand(); // 重新注册脚本菜单\n    } else if (newBlockKeywords != null) {\n        GM_setValue('menu_customBlockKeywords', newBlockKeywords.split('|'));\n        registerMenuCommand(); // 重新注册脚本菜单\n    }\n};\n\n\n// 屏蔽指定关键词\nfunction blockKeywords(type) {\n    if (!menu_value('menu_blockKeywords')) return\n    if (!menu_value('menu_customBlockKeywords') || menu_value('menu_customBlockKeywords').length < 1) return\n    switch(type) {\n        case 'index':\n            blockKeywords_('.Card.TopstoryItem.TopstoryItem-isRecommend', 'Card TopstoryItem TopstoryItem-isRecommend');\n            break;\n        case 'follow':\n            blockKeywords_('.Card.TopstoryItem.TopstoryItem-isFollow', 'Card TopstoryItem TopstoryItem-isFollow');\n            break;\n        case 'topic':\n            blockKeywords_('.List-item.TopicFeedItem', 'List-item TopicFeedItem');\n            break;\n        case 'people':\n            blockKeywords_('.List-item', 'List-item');\n            break;\n        case 'collection':\n            blockKeywords_('.Card.CollectionDetailPageItem', 'Card CollectionDetailPageItem');\n            break;\n        case 'search':\n            blockKeywords_search();\n            break;\n        case 'comment':\n            if (!menu_value('menu_blockKeywordsComment')) return // 如果 [屏蔽关键词 - 评论区] 未启用则跳过\n            blockKeywords_comment();\n            break;\n    }\n\n\n    function blockKeywords_(className1, className2) {\n        // 前几条因为是直接加载的，而不是动态插入网页的，所以需要单独判断\n        function blockKeywords_now() {\n            if (location.pathname === '/hot') {\n                document.querySelectorAll('.HotItem').forEach(function(item1){blockKeywords_1(item1, 'h2.HotItem-title');})\n            } else {\n                document.querySelectorAll(className1).forEach(function(item1){blockKeywords_1(item1, 'h2.ContentItem-title meta[itemprop=\"name\"], meta[itemprop=\"headline\"]');})\n            }\n        }\n\n        blockKeywords_now();\n        window.addEventListener('urlchange', function(){\n            setTimeout(blockKeywords_now, 1000); // 网页 URL 变化后再次执行\n        })\n\n        // 这个是监听网页插入事件，用来判断后续网页动态插入的元素\n        const callback = (mutationsList, observer) => {\n            for (const mutation of mutationsList) {\n                for (const target of mutation.addedNodes) {\n                    if (target.nodeType != 1) return\n                    if (target.className === className2) {blockKeywords_1(target, 'h2.ContentItem-title meta[itemprop=\"name\"], meta[itemprop=\"headline\"]');}\n                }\n            }\n        };\n        const observer = new MutationObserver(callback);\n        observer.observe(document, { childList: true, subtree: true });\n    }\n\n\n    function blockKeywords_search() {\n        function blockKeywords_now() {\n            if (location.search.indexOf('type=content') === -1) return // 目前只支持搜索页的 [综合]\n            document.querySelectorAll('.HotLanding-contentItem, .Card.SearchResult-Card[data-za-detail-view-path-module=\"AnswerItem\"], .Card.SearchResult-Card[data-za-detail-view-path-module=\"PostItem\"]').forEach(function(item1){blockKeywords_1(item1, 'a[data-za-detail-view-id]');})\n        }\n\n        setTimeout(blockKeywords_now, 2000);\n        window.addEventListener('urlchange', function(){\n            setTimeout(blockKeywords_now, 1000); // 网页 URL 变化后再次执行\n        })\n\n        const callback = (mutationsList, observer) => {\n            if (location.search.indexOf('type=content') === -1) return // 目前只支持搜索页的 [综合]\n            for (const mutation of mutationsList) {\n                for (const target of mutation.addedNodes) {\n                    if (target.nodeType != 1) return\n                    //console.log(target)\n                    if (target.tagName === 'DIV' && target.className === '') {\n                        let tt = target.querySelector('div[class=\"Card SearchResult-Card\"][data-za-detail-view-path-module=\"AnswerItem\"], div[class=\"Card SearchResult-Card\"][data-za-detail-view-path-module=\"PostItem\"]')\n                        if (tt) {blockKeywords_1(target.childNodes[0], 'a[data-za-detail-view-id]');}\n                    }\n                }\n            }\n        };\n        const observer = new MutationObserver(callback);\n        observer.observe(document, { childList: true, subtree: true });\n    }\n\n\n    function blockKeywords_comment() {\n        function filterComment(comment) {\n            let content = comment.querySelector('.CommentContent'); // 寻找评论文字所在元素\n            let text = content.textContent.toLowerCase(); // 全部转为小写（用来不区分大小写）\n            content.querySelectorAll('img.sticker[alt]').forEach((img)=>{text += img.alt}) // 将评论中的表情添加到待遍历的评论文字中\n\n            let keywords = menu_value('menu_customBlockKeywords');\n            for (const keyword of keywords) { // 遍历关键词黑名单\n                if (keyword != '' && text.indexOf(keyword.toLowerCase()) > -1) { // 找到就删除该评论\n                    console.log('已屏蔽评论：' + text);\n                    content.dataset.text = content.innerHTML\n                    content.onclick = (e)=>{if (e.target.dataset.text) {e.target.innerHTML = e.target.dataset.text;e.target.removeAttribute('data-text');}}\n                    content.textContent = '[该评论已屏蔽，可点击显示]';\n                }\n            }\n        }\n\n        const callback = (mutationsList, observer) => {\n            for (const mutation of mutationsList) {\n                for (const target of mutation.addedNodes) {\n                    if (target.nodeType != 1) return\n                    //console.log(target);\n                    if (target.tagName == 'DIV' && target.className.indexOf('css-') == 0 && target.dataset.id == undefined) {\n                        let item = target.querySelector('a[href^=\"https://www.zhihu.com/people/\"]>img.Avatar[alt][loading]')\n                        if (item) {\n                            //console.log(item)\n                            filterComment(item.parentElement.parentElement.parentElement.parentElement)\n                        }\n                    }\n\n                    /*if (target.tagName == 'DIV' && target.dataset.id !== undefined) {\n                        console.log(target);\n                        for (const node of target.querySelectorAll('*')) {\n                            if (node.className === 'CommentItemV2-metaSibling') filterComment(node);\n                        }\n                    }*/\n                }\n            }\n        };\n        const observer = new MutationObserver(callback);\n        observer.observe(document, { childList: true, subtree: true });\n    }\n\n    function blockKeywords_1(item1, css) {\n        let item = item1.querySelector(css); // 标题所在元素\n        //console.log(item)\n        if (item) {\n            for (const keyword of menu_value('menu_customBlockKeywords')) { // 遍历关键词黑名单\n                let text = item.content || item.textContent;\n                //console.log(text,keyword)\n                if (keyword != '' && text.toLowerCase().indexOf(keyword.toLowerCase()) > -1) { // 找到就删除该信息流\n                    console.log('已屏蔽：' + text);\n                    item1.hidden = true;\n                    item1.style.display = 'none';\n                    break;\n                }\n            }\n        }\n    }\n}\n\n\n// 屏蔽指定类别（视频/文章等）\nfunction blockType(type) {\n    let name;\n    // 一开始加载的信息流 + 添加标签样式\n    if (type === 'search') { // 搜索页\n        if (!menu_value('menu_blockTypeVideo') && !menu_value('menu_blockTypeArticle') && !menu_value('menu_blockTypePin') && !menu_value('menu_blockTypeTopic') && !menu_value('menu_blockTypeSearch')) return\n        if (menu_value('menu_blockTypeSearch') && location.pathname === '/search') setTimeout(function(){document.querySelectorAll('.RelevantQuery').forEach((r)=>{r.parentElement.parentElement.hidden = true});}, 2000)\n        name = 'h2.ContentItem-title a:not(.zhihu_e_toQuestion), a.KfeCollection-PcCollegeCard-link, h2.SearchTopicHeader-Title a'\n        addSetInterval_(name);\n    } else if (type === 'question') { // 问题页\n        if (!menu_value('menu_blockTypeVideo')) return\n        document.lastChild.appendChild(document.createElement('style')).textContent = `.VideoAnswerPlayer, .VideoAnswerPlayer video, .VideoAnswerPlayer-video, .VideoAnswerPlayer-iframe {display: none !important;}`;\n        name = '.VideoAnswerPlayer'\n        document.querySelectorAll(name).forEach(function(item){blockType_(item);})\n    } else if (type === 'follow') { // 首页 - 关注\n        if (!menu_value('menu_blockTypeFollowAgree') && !menu_value('menu_blockTypeFollowQuestion')) return\n        if (menu_value('menu_blockTypeFollowAgree')) name = '.TopstoryItem-isFollow .FeedSource-byline' // 赞同了XX\n        if (menu_value('menu_blockTypeFollowQuestion')) {if (name) {name += ',.ContentItem[data-za-detail-view-path-module=QuestionItem]:not(.AnswerItem):not(.PinItem)'} else {name = '.ContentItem[data-za-detail-view-path-module=QuestionItem]:not(.AnswerItem):not(.PinItem)'}} // 关注了XX\n        if (!name) return\n        document.querySelectorAll(name).forEach(function(item){blockType_(item);})\n    } else { // 首页\n        if (!menu_value('menu_blockTypeVideo') && !menu_value('menu_blockTypeArticle') && !menu_value('menu_blockTypePin')) return\n        if (menu_value('menu_blockTypeVideo')) document.lastChild.appendChild(document.createElement('style')).textContent = `.Card .ZVideoItem-video, .VideoAnswerPlayer video, nav.TopstoryTabs > a[aria-controls=\"Topstory-zvideo\"] {display: none !important;}`;\n        name = 'h2.ContentItem-title a:not(.zhihu_e_toQuestion)'\n        if (menu_value('menu_blockTypePin')) name = 'h2.ContentItem-title a:not(.zhihu_e_toQuestion), .ContentItem.PinItem'\n        document.querySelectorAll(name).forEach(function(item){blockType_(item);})\n    }\n\n    // 后续加载的信息流\n    const observer = new MutationObserver(mutationsList => {\n        for (const mutation of mutationsList) {\n            for (const target of mutation.addedNodes) {\n                if (target.nodeType != 1) return\n                if (target.className === \"Card SearchResult-Card\" && target.dataset.zaDetailViewPathModule === undefined) {\n                    // 移除相关搜索\n                    if (menu_value('menu_blockTypeSearch') && location.pathname === '/search' && location.search.indexOf('type=content') > -1) target.hidden = true;\n                } else {\n                    blockType_(target.querySelector(name));\n                }\n            }\n        }\n    });\n    observer.observe(document, { childList: true, subtree: true });\n\n    window.addEventListener('urlchange', function(){\n        addSetInterval_(name);\n        // 移除相关搜索\n        if (menu_value('menu_blockTypeSearch') && location.pathname === '/search' && location.search.indexOf('type=content') > -1) setTimeout(function(){document.querySelectorAll('.RelevantQuery').forEach((r)=>{r.parentElement.parentElement.hidden = true});}, 1500)\n    })\n\n    function blockType_(titleA) {\n        if (!titleA) return // 判断是否为真\n        //console.log(titleA.href)\n        if (location.pathname === '/search') { // 搜索页\n            if (location.search.indexOf('type=content') === -1) return //   仅限搜索页的 [综合]\n            if (titleA.href.indexOf('/zvideo/') > -1 || titleA.href.indexOf('video.zhihu.com') > -1) { // 如果是视频\n                if (menu_value('menu_blockTypeVideo')) findParentElement(titleA, 'Card').remove();\n            } else if (titleA.href.indexOf('zhuanlan.zhihu.com') > -1) { // 如果是文章\n                if (menu_value('menu_blockTypeArticle')) findParentElement(titleA, 'Card SearchResult-Card').hidden = true;\n            } else if (titleA.href.indexOf('/topic/') > -1) { //            如果是话题\n                if (menu_value('menu_blockTypeTopic')) findParentElement(titleA, 'Card SearchResult-Card').hidden = true;\n            } else if (titleA.href.indexOf('/market/') > -1) { //           如果是杂志文章等乱七八糟的\n                if (menu_value('menu_blockTypeSearch')) findParentElement(titleA, 'Card SearchResult-Card').hidden = true;\n            }\n        } else if (location.pathname.indexOf('/question/') > -1) { // 问题页\n            if (menu_value('menu_blockTypeVideo')) findParentElement(titleA, 'List-item').hidden = true;\n        } else if (location.pathname.indexOf('/follow') > -1) { // 首页 - 关注\n            if (type === 'follow') {\n                if ((menu_value('menu_blockTypeFollowAgree') && titleA.className.indexOf('FeedSource-byline') != -1) || (menu_value('menu_blockTypeFollowQuestion') && titleA.dataset.zaDetailViewPathModule == 'QuestionItem')) findParentElement(titleA, 'Card TopstoryItem TopstoryItem-isFollow').hidden = true; // 赞同了XX + 关注了XX\n            }\n            if (titleA.className == 'ContentItem PinItem' && menu_value('menu_blockTypePin')) findParentElement(titleA, 'Card TopstoryItem TopstoryItem-isFollow').hidden = true; // 如果是想法\n        } else { // 首页\n            if (titleA.className == 'ContentItem PinItem') { // 如果是想法（针对无标题）\n                if (menu_value('menu_blockTypePin')) findParentElement(titleA, 'Card TopstoryItem TopstoryItem-isRecommend').hidden = true;\n            /*} else if (titleA.href.indexOf('/pin/') > -1) { // 如果是想法\n                if (menu_value('menu_blockTypePin')) findParentElement(titleA, 'Card TopstoryItem TopstoryItem-isRecommend').hidden = true;*/\n            } else if (titleA.href.indexOf('/zvideo/') > -1 || titleA.href.indexOf('video.zhihu.com') > -1) { // 如果是视频\n                if (menu_value('menu_blockTypeVideo')) {findParentElement(titleA, 'Card TopstoryItem TopstoryItem-isRecommend').hidden = true;}\n            } else if (titleA.href.indexOf('/answer/') > -1) { //           如果是问题（视频回答）\n                if (findParentElement(titleA, 'ContentItem AnswerItem').querySelector('.VideoAnswerPlayer')) {\n                    if (menu_value('menu_blockTypeVideo')) {findParentElement(titleA, 'Card TopstoryItem TopstoryItem-isRecommend').hidden = true; findParentElement(titleA, 'ContentItem AnswerItem').remove();}\n                }\n            } else if (titleA.href.indexOf('/education/video-course/') > -1) { // 如果是视频课程\n                if (menu_value('menu_blockTypeVideo')) {findParentElement(titleA, 'Card TopstoryItem TopstoryItem-isRecommend').hidden = true;}\n            } else if (titleA.href.indexOf('zhuanlan.zhihu.com') > -1) { // 如果是文章\n                if (menu_value('menu_blockTypeArticle')) findParentElement(titleA, 'Card TopstoryItem TopstoryItem-isRecommend').hidden = true;\n            }\n        }\n    }\n\n    function addSetInterval_(A) {\n        let timer = setInterval(function(){\n            let aTag = document.querySelectorAll(A);\n            if (aTag.length > 0) {\n                clearInterval(timer);\n                aTag.forEach(function(item){blockType_(item);})\n            }\n        });\n    }\n}\n\n\n// 寻找父元素\nfunction findParentElement(item, className, type = false) {\n    if (item.parentElement) {\n        //console.log(item.parentElement)\n        if (type) { // true = 完全一致，false = 包含即可\n            if (item.parentElement.className && item.parentElement.className === className) {\n                //console.log(item.parentElement.className)\n                return item.parentElement;\n            } else {\n                let temp = findParentElement(item.parentElement, className, true)\n                if (temp) return temp\n            }\n        } else {\n            if (item.parentElement.className && item.parentElement.className.indexOf(className) > -1) {\n                return item.parentElement;\n            } else {\n                let temp = findParentElement(item.parentElement, className)\n                if (temp) return temp\n            }\n        }\n    }\n    return\n}\n\n\n// 移除高亮链接\nfunction cleanHighlightLink() {\n    if (!menu_value('menu_cleanHighlightLink')) return;\n    const callback = (mutationsList, observer) => {\n        for (const mutation of mutationsList) {\n            for (const target of mutation.addedNodes) {\n                if (target.nodeType != 1 || target.tagName != 'A') break\n                if (target.dataset.zaNotTrackLink && target.href.indexOf('https://zhida.zhihu.com/search?') > -1) {\n                    target.parentElement.replaceWith(target.textContent);\n                }\n            }\n        }\n    };\n    const observer = new MutationObserver(callback);\n    observer.observe(document, { childList: true, subtree: true });\n\n    // 针对的是打开网页后直接加载的前面几个回答（上面哪些是针对动态加载的回答）\n    document.querySelectorAll('span > a[data-za-not-track-link][href^=\"https://zhida.zhihu.com/search?\"]').forEach(e => e.parentElement.replaceWith(e.textContent))\n}\n\n\n// 屏蔽盐选内容\nfunction blockYanXuan() {\n    if (!menu_value('menu_blockYanXuan')) return\n    const blockYanXuan_question = (mutationsList, observer) => {\n        for (const mutation of mutationsList) {\n            for (const target of mutation.addedNodes) {\n                if (target.nodeType != 1) return\n                if (target.className === 'List-item' || target.className === 'Card AnswerCard') {\n                    if (target.querySelector('.KfeCollection-AnswerTopCard-Container, .KfeCollection-PurchaseBtn')) {\n                        target.hidden = true;\n                    }\n                }\n            }\n        }\n    };\n\n    const blockYanXuan_question_answer = (mutationsList, observer) => {\n        for (const mutation of mutationsList) {\n            for (const target of mutation.addedNodes) {\n                if (target.nodeType != 1) return\n                target.querySelectorAll('.List-item, .Card.AnswerCard').forEach(function(item){\n                    if (item.querySelector('.KfeCollection-AnswerTopCard-Container, .KfeCollection-PurchaseBtn')) {\n                        item.hidden = true;\n                    }\n                })\n            }\n        }\n    };\n\n    if (location.pathname.indexOf('/answer/') > -1) { // 回答页（就是只有三个回答的页面）\n        const observer = new MutationObserver(blockYanXuan_question_answer);\n        observer.observe(document, { childList: true, subtree: true });\n    } else { // 问题页（可以显示所有回答的页面）\n        const observer = new MutationObserver(blockYanXuan_question);\n        observer.observe(document, { childList: true, subtree: true });\n    }\n\n    // 针对的是打开网页后直接加载的前面几个回答（上面哪些是针对动态加载的回答）\n    document.querySelectorAll('.List-item, .Card.AnswerCard').forEach(function(item){\n        if (item.querySelector('.KfeCollection-AnswerTopCard-Container, .KfeCollection-PurchaseBtn')) {\n            item.hidden = true;\n        }\n    })\n}\n\n\n// 区分问题文章\nfunction addTypeTips() {\n    if (!menu_value('menu_typeTips')) return\n    let style = `font-weight: bold;font-size: 13px;padding: 1px 4px 0;border-radius: 2px;display: inline-block;vertical-align: top;margin: ${(location.pathname === '/search') ? '2' : '4'}px 4px 0 0;`\n    document.body.appendChild(document.createElement('style')).textContent = `/* 区分问题文章 */\n.AnswerItem .ContentItem-title a:not(.zhihu_e_toQuestion)::before {content:'问题';color: #f68b83;background-color: #f68b8333;${style}}\n/* 针对的是部分搜索词下搜索页开头的 \"最新讨论\" 之类的非常规元素 */\n.HotLanding-contentItem .ContentItem[data-za-detail-view-path-module=Content] .ContentItem-title a:not(.zhihu_e_toQuestion)::before {content:'问题';color: #f68b83;background-color: #f68b8333;${style}}\n.TopstoryQuestionAskItem .ContentItem-title a:not(.zhihu_e_toQuestion)::before {content:'问题';color: #ff5a4e;background-color: #ff5a4e33;${style}}\n.ZVideoItem .ContentItem-title a::before, .ZvideoItem .ContentItem-title a::before {content:'视频';color: #00BCD4;background-color: #00BCD433;${style}}\n.PinItem .ContentItem-title a::before {content:'想法';color: #4CAF50;background-color: #4CAF5033;${style}}\n.ArticleItem .ContentItem-title a::before {content:'文章';color: #2196F3;background-color: #2196F333;${style}}`;\n}\n\n\n// 直达问题按钮\nfunction addToQuestion() {\n    if (!menu_value('menu_toQuestion')) return\n\n    // 一开始加载的信息流 + 添加按钮样式\n    if (location.pathname === '/search') {\n        document.lastChild.appendChild(document.createElement('style')).textContent = `a.zhihu_e_toQuestion {font-size: 13px !important;font-weight: normal !important;padding: 1px 6px 0 !important;border-radius: 2px !important;display: inline-block !important;vertical-align: top !important;height: 20.67px !important;line-height: 20.67px !important;margin-top: 2px !important;}`;\n        addSetInterval_('h2.ContentItem-title a:not(.zhihu_e_tips)');\n    } else {\n        document.lastChild.appendChild(document.createElement('style')).textContent = `a.zhihu_e_toQuestion {font-size: 13px !important;font-weight: normal !important;padding: 1px 6px 0 !important;border-radius: 2px !important;display: inline-block !important;vertical-align: top !important;margin-top: 4px !important;}`;\n        document.querySelectorAll('h2.ContentItem-title a:not(.zhihu_e_tips)').forEach(function(item){addTypeTips_(item);})\n    }\n\n    // 后续加载的信息流\n    const observer = new MutationObserver(mutationsList => {\n        for (const mutation of mutationsList) {\n            for (const target of mutation.addedNodes) {\n                if (target.nodeType != 1) return\n                addTypeTips_(target.querySelector('h2.ContentItem-title a:not(.zhihu_e_tips)'));\n            }\n        }\n    });\n    observer.observe(document, { childList: true, subtree: true });\n\n    window.addEventListener('urlchange', function(){\n        addSetInterval_('h2.ContentItem-title a:not(.zhihu_e_tips)');\n    })\n\n    function addTypeTips_(titleA) {\n        if (!titleA) return // 判断是否为真\n        if (titleA.parentElement.querySelector('a.zhihu_e_toQuestion')) return // 判断是否已添加\n        if (titleA.textContent.indexOf('?') != -1) { // 把问题末尾英文问好 [?] 的替换为中文问好 [？]，这样按钮与标题之间的间距就刚刚好~\n            titleA.innerHTML = titleA.innerHTML.replace('?', \"？\")\n        }\n        if (/answer\\/\\d+/.test(titleA.href)) { //  如果是指向回答的问题（而非指向纯问题的链接）\n            const titleA_meta = titleA.parentElement.parentElement.querySelector('meta[itemprop=\"url\"]'); // 获取该问题页地址\n            if (!titleA_meta) return // 判断元素是否存在（针对的是部分搜索词下搜索页开头的 \"最新讨论\" 之类的非常规元素）\n            titleA.insertAdjacentHTML('afterend', `<a class=\"zhihu_e_toQuestion VoteButton\" href=\"${titleA_meta.content}\" target=\"_blank\">直达问题</a>`);\n        }\n    }\n\n    function addSetInterval_(A) {\n        let timer = setInterval(function(){\n            let aTag = document.querySelectorAll(A);\n            if (aTag.length > 0) {\n                clearInterval(timer);\n                aTag.forEach(function(item){addTypeTips_(item);})\n            }\n        });\n    }\n}\n\n\n// 展开问题描述\nfunction questionRichTextMore() {\n    if (!menu_value('menu_questionRichTextMore')) return\n    let button = document.querySelector('button.QuestionRichText-more');\n    if (button) button.click()\n}\n\n// 移除登录弹窗\nfunction removeLogin() {\n    const removeLoginModal = (mutationsList, observer) => {\n        for (const mutation of mutationsList) {\n            for (const target of mutation.addedNodes) {\n                if (target.nodeType != 1) return\n                if (target.querySelector('.signFlowModal')) {\n                    let button = target.querySelector('.Button.Modal-closeButton.Button--plain');\n                    if (button) button.click();\n                } else if (getXpath('//button[text()=\"立即登录/注册\"]',target)) {\n                    target.remove();\n                }\n            }\n        }\n    };\n\n    // 未登录时才会监听并移除登录弹窗\n    if(location.hostname === 'zhuanlan.zhihu.com') { // 如果是文章页\n        if (!document.querySelector('.ColumnPageHeader-profile>.AppHeader-menu')) { // 未登录\n            const observer = new MutationObserver(removeLoginModal);\n            observer.observe(document, { childList: true, subtree: true });\n            if (getXpath('//button[text()=\"登录/注册\"]')) getXpath('//button[text()=\"登录/注册\"]').outerHTML = '<a class=\"Button AppHeader-login Button--blue\" href=\"https://www.zhihu.com/signin\" target=\"_blank\">登录/注册</a>'; // [登录] 按钮跳转至登录页面\n        }\n    } else { // 不是文章页\n        if (!document.querySelector('.AppHeader-profile>.AppHeader-menu')) { // 未登录\n            const observer = new MutationObserver(removeLoginModal);\n            observer.observe(document, { childList: true, subtree: true });\n            document.lastElementChild.appendChild(document.createElement('style')).textContent = '.Question-mainColumnLogin, button.AppHeader-login {display: none !important;}'; // 屏蔽问题页中间的登录提示\n            if (getXpath('//button[text()=\"登录/注册\"]')) getXpath('//button[text()=\"登录/注册\"]').outerHTML = '<a class=\"Button AppHeader-login Button--blue\" href=\"https://www.zhihu.com/signin\" target=\"_blank\">登录/注册</a>'; // [登录] 按钮跳转至登录页面\n        }\n    }\n}\n\n// 净化标题消息\nfunction cleanTitles() {\n    if (!menu_value('menu_cleanTitles')) return\n\n    // 方案一\n    const elTitle = document.head.querySelector('title');\n    const original = elTitle.textContent;\n    const observer = new MutationObserver(function() {\n        if (elTitle.textContent != original) { // 避免重复执行\n            elTitle.textContent = original;\n        }\n    });\n    observer.observe(elTitle, { childList: true });\n\n    // 方案二\n    // if (Reflect.getOwnPropertyDescriptor(document, 'title')) {\n    //     const elTitle = document.head.querySelector('title');\n    //     const original = elTitle.textContent;\n    //     const observer = new MutationObserver(function() {\n    //         if (elTitle.textContent != original) { // 避免重复执行\n    //             elTitle.textContent = original;\n    //         }\n    //     });\n    //     observer.observe(elTitle, { childList: true });\n    // } else {\n    //     const title = document.title;\n    //     Reflect.defineProperty(document, 'title', {\n    //         set: () => {},\n    //         get: () => title,\n    //     });\n    // }\n}\n\n\n// 净化搜索热门\nfunction cleanSearch() {\n    if (!menu_value('menu_cleanSearch')) return\n\n    const el = document.querySelector('.SearchBar-input > input');\n    const observer = new MutationObserver((mutationsList, observer) => {\n        if (mutationsList[0].attributeName === 'placeholder' && mutationsList[0].target.placeholder != '') mutationsList[0].target.placeholder = '';\n    });\n    el.placeholder = '';\n    observer.observe(el, { attributes: true });\n    document.documentElement.appendChild(document.createElement('style')).textContent = '.AutoComplete-group > .SearchBar-label:not(.SearchBar-label--history), .AutoComplete-group > [id^=\"AutoComplete2-topSearch-\"], .AutoComplete-group > [id^=\"AutoComplete3-topSearch-\"] {display: none !important;}';\n}\n\n\n// 快捷关闭悬浮评论（监听点击事件，点击网页两侧空白处）\nfunction closeFloatingComments() {\n    const closeFloatingCommentsModal = (mutationsList, observer) => {\n        for (const mutation of mutationsList) {\n            for (const target of mutation.addedNodes) {\n                if (target.nodeType != 1) return\n                let button = document.querySelector('button[aria-label=\"关闭\"]');\n                if (button) {button.parentElement.parentElement.onclick = function(event){if (event.target.parentElement == this) {button.click();}}}\n            }\n        }\n    };\n    const observer = new MutationObserver(closeFloatingCommentsModal);\n    observer.observe(document, { childList: true, subtree: true });\n}\n\n\n// 监听 XMLHttpRequest 事件\n/*function EventXMLHttpRequest() {\n    var _send = window.XMLHttpRequest.prototype.send\n    function sendReplacement(data) {\n        addTypeTips();\n        return _send.apply(this, arguments);\n    }\n    window.XMLHttpRequest.prototype.send = sendReplacement;\n}*/\n\n\n// 自定义 urlchange 事件（用来监听 URL 变化）\nfunction addUrlChangeEvent() {\n    history.pushState = ( f => function pushState(){\n        var ret = f.apply(this, arguments);\n        window.dispatchEvent(new Event('pushstate'));\n        window.dispatchEvent(new Event('urlchange'));\n        return ret;\n    })(history.pushState);\n\n    history.replaceState = ( f => function replaceState(){\n        var ret = f.apply(this, arguments);\n        window.dispatchEvent(new Event('replacestate'));\n        window.dispatchEvent(new Event('urlchange'));\n        return ret;\n    })(history.replaceState);\n\n    window.addEventListener('popstate',()=>{\n        window.dispatchEvent(new Event('urlchange'))\n    });\n}\n\n\nfunction getXpath(xpath, contextNode, doc = document) {\n    contextNode = contextNode || doc;\n    try {\n        const result = doc.evaluate(xpath, contextNode, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null);\n        // 应该总是返回一个元素节点\n        return result.singleNodeValue && result.singleNodeValue.nodeType === 1 && result.singleNodeValue;\n    } catch (err) {\n        throw new Error(`无效 Xpath: ${xpath}`);\n    }\n}\n\n\n// 显示问题作者\nfunction question_author() {\n    if (document.querySelector('.BrandQuestionSymbol, .QuestionAuthor, .SpecialQuestionAuthor')) return\n    let qJson = JSON.parse(document.querySelector('#js-initialData').textContent).initialState.entities.questions[/\\d+/.exec(location.pathname)[0]].author,\n        html = `<div class=\"BrandQuestionSymbol\"><a class=\"BrandQuestionSymbol-brandLink\" href=\"/people/${qJson.urlToken}\"><img role=\"presentation\" src=\"${qJson.avatarUrl}\" class=\"BrandQuestionSymbol-logo\" alt=\"\"><span class=\"BrandQuestionSymbol-name\">${qJson.name}</span></a><div class=\"BrandQuestionSymbol-divider\" style=\"margin-left: 5px;margin-right: 10px;\"></div></div>`;\n        //html = `<div class=\"QuestionAuthor\"><div class=\"AuthorInfo AuthorInfo--plain\" itemprop=\"author\" itemscope=\"\" itemtype=\"http://schema.org/Person\"><div class=\"AuthorInfo\"><span class=\"UserLink AuthorInfo-avatarWrapper\"><div class=\"Popover\"><div id=\"Popover18-toggle\" aria-haspopup=\"true\" aria-expanded=\"false\" aria-owns=\"Popover18-content\"><a class=\"UserLink-link\" data-za-detail-view-element_name=\"User\" target=\"_blank\" href=\"${qJson.urlToken}\"><img class=\"Avatar AuthorInfo-avatar\" width=\"24\" height=\"24\" src=\"${qJson.avatarUrl}\"></a></div></div></span><div class=\"AuthorInfo-content\"><div class=\"AuthorInfo-head\"><span class=\"UserLink AuthorInfo-name\"><div class=\"Popover\"><div id=\"Popover19-toggle\" aria-haspopup=\"true\" aria-expanded=\"false\" aria-owns=\"Popover19-content\"><a class=\"UserLink-link\" data-za-detail-view-element_name=\"User\" target=\"_blank\" href=\"${qJson.urlToken}\">${qJson.name}</a></div></div></span></div></div></div></div></div>`\n    document.querySelector('.QuestionHeader-topics').insertAdjacentHTML('beforebegin', html);\n    //document.querySelector('.QuestionPage h1.QuestionHeader-title').insertAdjacentHTML('afterend', html);\n}\n\n\n// [完整显示时间 + 置顶显示时间] 功能修改自：https://greasyfork.org/scripts/402808（从 JQuery 改为原生 JavaScript，且精简、优化了代码）\n// 完整显示时间 + 置顶显示时间\nfunction topTime_(css, classs) {\n    document.querySelectorAll(css).forEach(function(_this) {\n        let t = _this.querySelector('.ContentItem-time'); if (!t) return\n        if (!(t.classList.contains('full')) && t.querySelector('a') && t.querySelector('a').textContent != null) {\n            // 完整显示时间\n            topTime_allTime(t)\n            // 发布时间置顶\n            topTime_publishTop(t, _this, classs)\n        }\n    });\n}\n\n\n// 完整显示时间 + 置顶显示时间 - 文章\nfunction topTime_post() {\n    let t = document.querySelector('.ContentItem-time:not(.xiu-time)'); if (!t) return\n    // 完整显示时间\n    if (t.textContent.indexOf('编辑于') > -1 && !(t.classList.contains('xiu-time'))) {\n        let tt = t.textContent;\n        t.click();\n        t.textContent = (t.textContent + ' ，' + tt)\n        t.classList.add('xiu-time');\n    }\n\n    // 置顶显示时间\n    if (menu_value('menu_publishTop') && !(document.querySelector('.Post-Header > .ContentItem-time')) && !(document.querySelector('.ContentItem-meta > .ContentItem-time'))) {\n        let temp_time = t.cloneNode(true);\n        temp_time.style.padding = '0px';\n        document.querySelector('.Post-Header').insertAdjacentElement('beforeEnd', temp_time);\n    }\n}\n\n\n// 完整显示时间\nfunction topTime_allTime(t) {\n    if (t.textContent.indexOf('发布于') > -1 && t.textContent.indexOf('编辑于') == -1) {\n        t.querySelector('a').textContent = (t.querySelector('a').dataset.tooltip);\n        t.classList.add('full');\n    } else if (t.textContent.indexOf('发布于') == -1 && t.textContent.indexOf('编辑于') > -1) {\n        t.querySelector('a').textContent = (t.querySelector('a').dataset.tooltip) + ' ，' + (t.querySelector('a').textContent);\n        t.classList.add('full');\n    }\n}\n\n\n// 置顶显示时间\nfunction topTime_publishTop(t, _this, _class) {\n    if (!menu_value('menu_publishTop')) return\n    if (!t.parentNode.classList.contains(_class)) {\n        let temp_time = t.cloneNode(true);\n        temp_time.style.padding = '0px';\n        // 对于较短的回答，隐藏回答底部的时间\n        if (_this.offsetHeight < 600) t.style.display = 'none';\n        _this.querySelector('.' + _class).insertAdjacentElement('beforeEnd', temp_time);\n    }\n}\n\n\n// 问题创建时间\nfunction question_time() {\n    if (!(document.querySelector('.QuestionPage .QuestionHeader-side .QuestionTime-xiu'))) {\n        document.querySelector('.QuestionPage .QuestionHeader-side').insertAdjacentHTML('beforeEnd', '<div class=\"QuestionTime-xiu\" style=\"color: #9098ac; margin-top: 5px; font-size: 13px; font-style: italic;\"><p>创建时间：' + getUTC8(new Date(document.querySelector('.QuestionPage > meta[itemprop=dateCreated]').content)) + '</p><p>最后编辑：' + getUTC8(new Date(document.querySelector('.QuestionPage > meta[itemprop=dateModified]').content)) + '</p></div>');\n    }\n}\n\n\n// UTC 标准时转 UTC+8 北京时间，修改自：https://greasyfork.org/zh-CN/scripts/402808（精简）\nfunction getUTC8(t) {\n    return (t.getFullYear() + '-' + (((t.getMonth() + 1) < 10) ? ('0' + (t.getMonth() + 1)) : (t.getMonth() + 1)) + '-' + ((t.getDate() < 10) ? ('0' + t.getDate()) : t.getDate()) + '\\xa0\\xa0' + ((t.getHours() < 10) ? ('0' + t.getHours()) : t.getHours()) + ':' + ((t.getMinutes() < 10) ? ('0' + t.getMinutes()) : t.getMinutes()) + ':' + ((t.getSeconds() < 10) ? ('0' + t.getSeconds()) : t.getSeconds()));\n}\n\n\n// 默认高清原图（无水印）\nfunction originalPic(){\n    document.querySelectorAll('img[data-original][data-original-token][data-lazy-status]:not([data-original-xiu]):not(.comment_sticker):not(.Avatar)').forEach(function(one){one.src = 'https://' + one.dataset.original.split('/')[2] + '/' + one.dataset.originalToken + '.webp'; one.dataset.originalXiu = 'true';});\n}\n\n\n// 默认站外直链，修改自：https://greasyfork.org/scripts/402808（从 JQuery 改为原生 JavaScript，且精简、优化了代码）\nfunction directLink () {\n    document.querySelectorAll('a.external[href*=\"link.zhihu.com/?target=\"], a.LinkCard[href*=\"link.zhihu.com/?target=\"]:not(.MCNLinkCard):not(.ZVideoLinkCard):not(.ADLinkCardContainer)').forEach(function (_this) {_this.href = decodeURIComponent(_this.href.substring(_this.href.indexOf('link.zhihu.com/?target=') + 23));});\n}\n\n\n// 默认折叠邀请，修改自：https://greasyfork.org/scripts/402808（从 JQuery 改为原生 JavaScript，且精简、优化了代码）\nfunction questionInvitation(){\n    let time = setInterval(function(){\n        let q = document.querySelector('.QuestionInvitation-content'); if (!q) return\n        clearInterval(time);\n        q.style.display = 'none';\n        document.querySelector('.QuestionInvitation-title').innerHTML = document.querySelector('.QuestionInvitation-title').innerText + '<span style=\"cursor: pointer; font-size: 14px; color: #919aae;\"> 展开/折叠</span>'\n        // 点击事件（展开/折叠）\n        document.querySelector('.Topbar').onclick = function(){\n            let q = document.querySelector('.QuestionInvitation-content')\n            if (q.style.display == 'none') {\n                q.style.display = ''\n            } else {\n                q.style.display = 'none'\n            }\n        }\n    });\n}\n\n// 屏蔽热榜杂项\nfunction blockHotOther() {\n    if (!menu_value('menu_blockTypeLiveHot')) return;\n\n    const isQuestionItem = (hotItem) => {\n        const linkItem = hotItem.querySelector('.HotItem-content a');\n        if (linkItem === null) return false;\n        return /\\/question\\/\\d+/.test(linkItem.href);\n    }\n\n    const block = () => {\n        removeLiveItems();\n        fixItemRank();\n    };\n\n    // 移除非问题的内容\n    const removeLiveItems = () => {\n        const hotItems = document.querySelectorAll('.HotList-list .HotItem');\n        for (const item of hotItems) {\n            if (!isQuestionItem(item)) item.remove();\n        }\n    }\n\n    // 修复排行榜序号\n    const fixItemRank = () => {\n        const hotItems = document.querySelectorAll('.HotList-list .HotItem:not([hidden])');\n        hotItems.forEach((item, index) => {\n            const rank = item.querySelector('.HotItem-index .HotItem-rank');\n            if (rank !== null) rank.innerText = index + 1;\n        });\n    }\n\n    const blockLive_content = (mutationsList, observer) => {\n        for (const mutation of mutationsList) {\n            for (const target of mutation.addedNodes) {\n                if (target.classList.contains('.HotItem')) {\n                    block();\n                }\n            }\n        }\n    }\n\n    const observer = new MutationObserver(blockLive_content);\n    observer.observe(document, { childList: true, subtree: true });\n\n    // 初始移除\n    block();\n}\n\n// 将关注/推荐/热榜/专栏的选项去掉默认的点击事件改成静态链接（针对首页互相切换（知乎这里切换是动态加载的），为了避免功能交叉混乱\n// 针对所有页面\nfunction switchHome() {\n    document.querySelectorAll('header.AppHeader nav').forEach((a)=>{a.outerHTML = a.outerHTML;})\n}\n// 针对首页几个页面\nfunction switchHomeRecommend() {\n    document.querySelectorAll('header.AppHeader nav>a:not([target])[href=\"https://www.zhihu.com/\"]').forEach((a)=>{a.addEventListener('click', function(e){e.preventDefault();document.cookie='tst=r; expires=Thu, 18 Dec 2099 12:00:00 GMT; domain=.zhihu.com; path=/';location.href=this.href;return false;})})\n}\n\n(function() {\n    if (window.onurlchange === undefined) {addUrlChangeEvent();} // Tampermonkey v4.11 版本添加的 onurlchange 事件 grant，可以监控 pjax 等网页的 URL 变化\n    rememberSelectedBlockKeyword(); // 记录当前选中的文字，供右键脚本菜单直接加入屏蔽词\n\n    removeLogin(); // 移除登录弹窗，Violentmonkey 不能延迟执行这个\n    cleanTitles(); // 净化标题消息，不能延迟执行\n    // Violentmonkey 比 Tampermonkey 加载更早，会导致一些元素还没加载，因此需要延迟一会儿\n    // Tampermonkey 4.18.0 版本可能需要延迟一会执行\n    if (GM_info.scriptHandler === 'Violentmonkey' || (GM_info.scriptHandler === 'Tampermonkey' && parseFloat(GM_info.version.slice(0,4)) >= 4.18)) {\n        setTimeout(start, 200);\n    } else {\n        start();\n    }\n\n    function start(){\n        switchHome(); // 将关注/推荐/热榜/专栏的选项去掉默认的点击事件改成静态链接（针对首页互相切换（知乎这里切换是动态加载的），为了避免功能交叉混乱\n        cleanHighlightLink(); //                                               移除高亮链接\n        originalPic();directLink(); // 先立即执行一次\n        setInterval(originalPic,500); //                                       默认高清原图（无水印）\n        setInterval(directLink, 500); //                                       默认站外直链\n        if (location.hostname != 'zhuanlan.zhihu.com') {\n            if (location.pathname.indexOf('/column/') === -1) cleanSearch(); //净化搜索热门\n            collapsedAnswer(); //                                              一键收起回答\n        }\n        closeFloatingComments(); //                                            快捷关闭悬浮评论（监听点击事件，点击网页两侧空白处）\n        blockKeywords('comment'); //                                           屏蔽指定关键词（评论）\n\n\n        if (location.pathname.indexOf('question') > -1 && location.href.indexOf('/log') == -1) { //       回答页 //\n            if (location.pathname.indexOf('waiting') == -1) {\n                collapsedNowAnswer('.QuestionPage'); //                        收起当前回答 + 快捷返回顶部\n                collapsedNowAnswer('.Question-main'); //                       收起当前回答 + 快捷返回顶部\n                questionRichTextMore(); //                                     展开问题描述\n                if (location.pathname.indexOf('answer') == -1) { //  问题页而不是回答页\n                    blockLowCount('question'); //                              屏蔽低赞/低评回答\n                } else { // 将回答页的的查看全部回答选项去掉默认的点击事件改成静态链接，为了避免功能交叉混乱\n                    document.querySelectorAll('div.Card.ViewAll>a').forEach((a)=>{a.outerHTML = a.outerHTML;})\n                }\n                blockUsers('question'); //                                     屏蔽指定用户\n                blockYanXuan(); //                                             屏蔽盐选内容\n                blockType('question'); //                                      屏蔽指定类别（视频/文章等）\n                defaultCollapsedAnswer(); //                                   默认收起回答\n            }\n            setInterval(function(){topTime_('.ContentItem.AnswerItem', 'ContentItem-meta')}, 300); // 置顶显示时间\n            setTimeout(function(){question_time(); question_author()}, 100); //问题创建时间 + 显示问题作者\n            questionInvitation(); //                                           默认折叠邀请\n\n        } else if (location.pathname === '/search') { //          搜索结果页 //\n            collapsedNowAnswer('main div'); //                                 收起当前回答 + 快捷返回顶部\n            collapsedNowAnswer('.Search-container'); //                        收起当前回答 + 快捷返回顶部\n            setInterval(function(){topTime_('.ContentItem.AnswerItem, .ContentItem.ArticleItem', 'SearchItem-meta')}, 300); // 置顶显示时间\n            addTypeTips(); //                                                  区分问题文章\n            addToQuestion(); //                                                直达问题按钮\n            blockUsers('search'); //                                           屏蔽指定用户\n            blockKeywords('search'); //                                        屏蔽指定关键词\n            blockType('search'); //                                            屏蔽指定类别（视频/文章等）\n\n\n        } else if (location.pathname.indexOf('/topic/') > -1) { //   话题页 //\n            if (location.pathname.indexOf('/hot') > -1 || location.href.indexOf('/top-answers') > -1) { // 仅限 [讨论] [精华]\n                collapsedNowAnswer('main.App-main'); //                        收起当前回答 + 快捷返回顶部\n                setInterval(function(){topTime_('.ContentItem.AnswerItem, .ContentItem.ArticleItem', 'ContentItem-meta')}, 300); // 置顶显示时间\n                addTypeTips(); //                                              区分问题文章\n                addToQuestion(); //                                            直达问题按钮\n                blockUsers('topic'); //                                        屏蔽指定用户\n                blockKeywords('topic'); //                                     屏蔽指定关键词\n            }\n\n        } else if (location.hostname === 'zhuanlan.zhihu.com'){ //    文章 //\n            backToTop('.Post-content'); //                                     快捷返回顶部\n            backToTop('.Post-Row-Content'); //                                 快捷返回顶部\n            setTimeout(topTime_post, 300); //                                  置顶显示时间\n            blockUsers(); //                                                   屏蔽指定用户\n\n\n        } else if (location.pathname.indexOf('/column/') > -1) { //    专栏 //\n            setTimeout(function(){\n                collapsedAnswer(); //                                           一键收起回答\n                collapsedNowAnswer('main div'); //                              收起当前回答 + 快捷返回顶部\n                setInterval(function(){topTime_('.ContentItem.AnswerItem, .ContentItem.ArticleItem', 'ContentItem-meta')}, 300); // 置顶显示时间\n                blockUsers(); //                                                屏蔽指定用户\n            }, 300);\n\n\n        } else if (location.pathname.indexOf('/people/') > -1 || location.href.indexOf('org') > -1) { // 用户主页 //\n            if (location.pathname.split('/').length === 3) addTypeTips();addToQuestion(); // 区分问题文章、直达问题按钮\n            collapsedNowAnswer('main div'); //                                 收起当前回答 + 快捷返回顶部\n            collapsedNowAnswer('.Profile-main'); //                            收起当前回答 + 快捷返回顶部\n            setInterval(function(){topTime_('.ContentItem.AnswerItem, .ContentItem.ArticleItem', 'ContentItem-meta')}, 300); // 置顶显示时间\n            blockUsers('people'); //                                           屏蔽指定用户\n            blockKeywords('people'); //                                        屏蔽指定关键词\n\n\n        } else if (location.pathname.indexOf('/collection/') > -1) { // 收藏夹 //\n            addTypeTips(); //                                                  区分问题文章\n            addToQuestion(); //                                                直达问题按钮\n            collapsedNowAnswer('main'); //                                     收起当前回答 + 快捷返回顶部\n            collapsedNowAnswer('.CollectionsDetailPage'); //                   收起当前回答 + 快捷返回顶部\n            setInterval(function(){topTime_('.ContentItem.AnswerItem, .ContentItem.ArticleItem', 'ContentItem-meta')}, 300); // 置顶显示时间\n            blockKeywords('collection'); //                                    屏蔽指定关键词\n\n        } else if (location.pathname.indexOf('/pin/') > -1) { // 想法 //\n            backToTop('main[role=main]'); //                                   快捷返回顶部\n            setInterval(function(){topTime_('.ContentItem.PinItem', 'ContentItem-meta')}, 300); // 置顶显示时间\n\n        } else if (['/','/hot','/follow','/column-square','/ring-feeds'].indexOf(location.pathname) !== -1) { //    首页 //\n            switchHomeRecommend(); // 针对首页推荐\n            // 解决屏蔽类别后，因为首页信息流太少而没有滚动条导致无法加载更多内容的问题\n            document.lastElementChild.appendChild(document.createElement('style')).textContent = '.Topstory-container {min-height: 1500px;}';\n            if (menu_value('menu_blockTypeVideo')) document.lastChild.appendChild(document.createElement('style')).textContent = `.Card .ZVideoItem-video, nav.TopstoryTabs > a[aria-controls=\"Topstory-zvideo\"] {display: none !important;}`;\n\n            collapsedNowAnswer('main div'); //                                 收起当前回答 + 快捷返回顶部\n            collapsedNowAnswer('.Topstory-container'); //                      收起当前回答 + 快捷返回顶部\n            if (location.pathname !== '/column-square'){ // 不是首页 - 专栏时\n                setInterval(function(){topTime_('.TopstoryItem', 'ContentItem-meta')}, 300); // 置顶显示时间\n                addTypeTips(); //                                                  区分问题文章\n                addToQuestion(); //                                                直达问题按钮\n                if (location.pathname == '/') { // 推荐\n                    blockLowCount('index'); //                                     屏蔽低赞/低评回答\n                    blockUsers('index'); //                                        屏蔽指定用户\n                    blockKeywords('index'); //                                     屏蔽指定关键词\n                    blockType(); //                                                屏蔽指定类别（视频/文章等）\n                } else if (location.pathname == '/hot') { // 热榜\n                    blockKeywords('index'); //                                     屏蔽指定关键词\n                    blockHotOther(); //                                            屏蔽热榜杂项\n                } else if (location.pathname == '/follow') { // 关注\n                    blockLowCount('follow'); //                                    屏蔽低赞/低评回答\n                    blockUsers('follow'); //                                       屏蔽指定用户\n                    blockKeywords('follow'); //                                    屏蔽指定关键词\n                    blockType(); //                                                屏蔽指定类别（视频/文章等）\n                    blockType('follow'); //                                        屏蔽指定类别（赞同了XX/关注了XX等）\n                }\n            }\n        }\n    }\n})();"
  },
  {
    "path": "Zhiyoo-Beautification.user.js",
    "content": "// ==UserScript==\n// @name         智友邦论坛美化\n// @version      1.0.2\n// @author       X.I.U\n// @description  精简多余内容、样式优化、宽屏显示\n// @icon         http://bbs.zhiyoo.net/favicon.ico\n// @match        *://bbs.zhiyoo.net/*\n// @license      GPL-3.0 License\n// @run-at       document-start\n// @namespace    https://greasyfork.org/scripts/412361\n// @supportURL   https://github.com/XIU2/UserScript\n// @homepageURL  https://github.com/XIU2/UserScript\n// ==/UserScript==\n\n'use strict';\n(function() {\n    let style_Add = document.createElement('style');\n    style_Add.innerHTML = `\n/* 精简多于内容 */\n.forum_top,#main_sidebar,.drag,.nav,.tps,.bm.bml,.ct2 .sd,.mn div.box.cl:nth-of-type(3),#f_pst,.plc.plm,#diy_like1,#hm_qrcode_main,#ft,.po.bbd.reply_p,.ft_top.cl,div a[href=\"https://weibo.com/372458419\"] {\n\tdisplay: none !important;\n}\n/* 调整主体宽度（因为隐藏了右侧侧栏） */\n.ct2 .mn,#wp .forum-left,#thread_types1 {\n\twidth: auto !important;\n}\n/* 隐藏底部 */\n#footer {\n    height: 0 !important;\n    margin: 0 !important;\n}\n/* 调整帖子内，标题文字大小 */\n#thread_subject {\n\tfont-size: 19px !important;\n}\n/* 调整帖子内，隐藏内容提示区域样式 */\n.locked a {\n\tcolor: #ffffff;\n\tborder: 1px dashed #ffffff;\n\tpadding: 0 5px 3px;\n\tmargin: 0 5px;\n\tfont-size: 20px;\n\tbackground-color: #e24e72;\n}\n/* 调整帖子内，图片最大宽度（即一排可以放三个图片） */\n#postlist .pcb img {\n\tmax-width: 30%;\n}`;\n    if (document.head) {\n        document.head.appendChild(style_Add);\n    } else {\n        let timer = setInterval(function(){\n            if (document.head) {\n                document.head.appendChild(style_Add);\n                clearInterval(timer);\n            }\n        }, 1);\n    }\n})();"
  },
  {
    "path": "Zhiyoo-Enhanced.user.js",
    "content": "// ==UserScript==\n// @name         智友邦论坛增强\n// @version      1.1.9\n// @author       X.I.U\n// @description  自动签到、自动回复、自动无缝翻页、回到顶部（右键点击两侧空白处）、清理置顶帖子、简化附件兑换/下载、清理帖子标题〖XXX〗【XXX】文字\n// @icon         http://bbs.zhiyoo.net/favicon.ico\n// @match        *://bbs.zhiyoo.net/*\n// @match        *://www.zhiyoo.net/search.php*\n// @grant        GM_xmlhttpRequest\n// @grant        GM_registerMenuCommand\n// @grant        GM_unregisterMenuCommand\n// @grant        GM_openInTab\n// @grant        GM_getValue\n// @grant        GM_setValue\n// @grant        GM_notification\n// @license      GPL-3.0 License\n// @run-at       document-end\n// @namespace    https://greasyfork.org/scripts/412362\n// @supportURL   https://github.com/XIU2/UserScript\n// @homepageURL  https://github.com/XIU2/UserScript\n// ==/UserScript==\n\n(function() {\n    'use strict';\n    var menu_ALL = [\n        ['menu_autoReply', '自动回复', '自动回复', true],\n        ['menu_pageLoading', '自动无缝翻页', '自动无缝翻页', true],\n        ['menu_backToTop', '回到顶部（右键点击两侧空白处）', '回到顶部', true],\n        ['menu_cleanTopPost', '清理置顶帖子', '清理置顶帖子', true],\n        ['menu_cleanPostTitle', '清理帖子标题开头〖〗【】文字', '清理帖子标题开头〖〗【】文字', true],\n        ['menu_qianDaoRedirectURL', '当前页面设为签到后重定向地址', '已设置当前页面为签到后重定向地址', 'http://bbs.zhiyoo.net/forum.php?mod=forumdisplay&fid=42&filter=author&orderby=dateline']\n    ], menu_ID = [];\n    for (let i=0;i<menu_ALL.length;i++){ // 如果读取到的值为 null 就写入默认值\n        if (GM_getValue(menu_ALL[i][0]) == null){GM_setValue(menu_ALL[i][0], menu_ALL[i][3])};\n    }\n    registerMenuCommand();\n\n    // 注册脚本菜单\n    function registerMenuCommand() {\n        if (menu_ID.length > menu_ALL.length){ // 如果菜单ID数组多于菜单数组，说明不是首次添加菜单，需要卸载所有脚本菜单\n            for (let i=0;i<menu_ID.length;i++){\n                GM_unregisterMenuCommand(menu_ID[i]);\n            }\n        }\n        for (let i=0;i<menu_ALL.length;i++){ // 循环注册脚本菜单\n            menu_ALL[i][3] = GM_getValue(menu_ALL[i][0]);\n            if (menu_ALL[i][0] == 'menu_qianDaoRedirectURL') {\n                menu_ID[i] = GM_registerMenuCommand(`#️⃣ ${menu_ALL[i][1]}`, function(){GM_setValue(`${menu_ALL[i][0]}`, location.href);GM_notification({text: `${menu_ALL[i][2]}`, timeout: 3000});})\n            } else {\n                menu_ID[i] = GM_registerMenuCommand(`${menu_ALL[i][3]?'✅':'❌'} ${menu_ALL[i][1]}`, function(){menu_switch(`${menu_ALL[i][3]}`,`${menu_ALL[i][0]}`,`${menu_ALL[i][2]}`)});\n            }\n        }\n        menu_ID[menu_ID.length] = GM_registerMenuCommand('💬 反馈 & 建议', function () {window.GM_openInTab('https://github.com/XIU2/UserScript#xiu2userscript', {active: true,insert: true,setParent: true});window.GM_openInTab('https://greasyfork.org/zh-CN/scripts/412362/feedback', {active: true,insert: true,setParent: true});});\n    }\n\n    // 菜单开关\n    function menu_switch(menu_status, Name, Tips) {\n        if (menu_status == 'true'){\n            GM_setValue(`${Name}`, false);\n            GM_notification({text: `已关闭 [${Tips}] 功能\\n（点击刷新网页后生效）`, timeout: 3500, onclick: function(){location.reload();}});\n        }else{\n            GM_setValue(`${Name}`, true);\n            GM_notification({text: `已开启 [${Tips}] 功能\\n（点击刷新网页后生效）`, timeout: 3500, onclick: function(){location.reload();}});\n        }\n        registerMenuCommand(); // 重新注册脚本菜单\n    };\n\n    // 返回菜单值\n    function menu_value(menuName) {\n        for (let menu of menu_ALL) {\n            if (menu[0] == menuName) {\n                return menu[3]\n            }\n        }\n    }\n\n\n    // 随机回复帖子的内容\n    var replyList = [\n        \"感谢楼主分享的内容！\",\n        \"感谢分享！给你点赞！\",\n        \"感谢分享！论坛因你更精彩！\",\n        \"看看隐藏内容是什么！谢谢！\",\n        \"先下载看看好不好用！\",\n        \"楼主一生平安！好人一生平安！\",\n        \"搞机上智友提问下资源！\",\n        \"马克！智友邦你搞机！\",\n        \"你说的观点我也很支持！\",\n        \"楼主太棒了！我先下为敬！\",\n        \"给楼主点赞，希望继续分享！\",\n        \"感谢智友帮论坛，感谢LZ热心分享！\",\n        \"感谢楼主分享优质内容，希望继续努力！\",\n        \"下载试用一下，如果用着不错就给楼主顶贴！\",\n        \"这么好的东西！感谢楼主分享！感谢智友帮论坛！\",\n        \"希望楼主继续分享更多好用的东西！谢谢！\",\n        \"看到楼主这么努力分享，我只能顶个贴感谢一下了！\",\n        \"好东西，拿走了，临走顶个贴感谢一下楼主！\",\n        \"这就非常给力了！感谢分享！\",\n        \"厉害了！先收藏，再回复！谢谢！\"\n    ];\n\n    // 帖子数量，避免重复清理帖子列表中帖子标题开头的〖XXX〗【XXX】文字，用于提高效率\n    var postNum = 0;\n\n    // 检查是否登陆\n    var loginStatus = false;\n    if (document.querySelector('.Quater_user.logined')){\n        loginStatus = true;\n    }\n\n    // 默认 ID 为 0\n    var curSite = {SiteTypeID: 0};\n\n    // 自动翻页规则\n    let DBSite = {\n        forumdisplay: {\n            SiteTypeID: 1,\n            pager: {\n                nextLink: '//a[@class=\"nxt\"][@href]',\n                pageElement: 'css;table#threadlisttableid > tbody[id^=\"normalthread_\"]',\n                HT_insert: ['css;table#threadlisttableid', 2],\n                replaceE: 'css;div.pg'\n            }\n        },\n        search: {\n            SiteTypeID: 2,\n            pager: {\n                nextLink: '//a[@class=\"nxt\"][@href]',\n                pageElement: 'css;div#threadlist > ul',\n                HT_insert: ['css;div#threadlist', 2],\n                replaceE: 'css;div.pg'\n            }\n        }\n    };\n\n    // 用于脚本内部判断当前 URL 类型\n    let SiteType = {\n        FORUMDISPLAY: DBSite.forumdisplay.SiteTypeID, // 各板块帖子列表\n        SEARCH: DBSite.search.SiteTypeID // 搜索结果列表\n    };\n\n    var attachmentHrefTime = 0;\n    curSite.pageUrl = \"\"; // 下一页URL\n\n    var patt_thread = /\\/thread-\\d+-\\d+\\-\\d+.html/, //      匹配 /thread-XXX-X-X.html 帖子正则表达式\n        patt_search = /\\/thread-\\d+-\\d+\\-\\d+.html/, //      匹配搜索结果列表正则表达式\n        patt_posttitle = /^〖.+〗(：)?|^【.+】(：)?/, //    匹配帖子标题中的〖XXX〗【XXX】正则表达式\n        patt_attachment_href = /(?<=\\\\').+(?=\\\\')/\n\n    if (location.pathname === '/plugin.php'){\n        switch(getQueryVariable(\"id\"))\n        {\n            case 'dsu_paulsign:sign': //                被重定向到签到页面\n                qiandao(); //                           自动签到\n                break;\n            case 'piaobo_attachment': //                兑换附件后的提示页面\n                attachmentBack(); //                    立即返回帖子\n                break;\n            case 'threed_attach:downld': //             附件下载页面\n                goPan(); //                             跳转至网盘页\n                break;\n        }\n    }else if(location.pathname === '/forum.php'){\n        switch(getQueryVariable(\"mod\"))\n        {\n            case 'viewthread': //                      浏览帖子内容\n                showHide(); //                         先看看是否有隐藏内容，如果已显示则定位到隐藏内容区域，如果没有隐藏内容，则啥都不干\n                autoReply(); //                        自动回复（有隐藏内容才会回复），回复过就定位到底部（隐藏内容区域）\n                var attachmentHref_Interval = setInterval(attachmentHref,100); // 兑换附件按钮改为直链（不再弹出确认提示框）\n                break;\n            case 'forumdisplay': //                    浏览帖子列表\n                curSite = DBSite.forumdisplay; //      帖子列表页（自动翻页）\n                cleanTop(); //                         清理置顶帖子\n                cleanPostTitle(); //                   清理帖子列表中帖子标题开头的〖XXX〗【XXX】文字\n                pageLoading(); //                      自动无缝翻页\n                break;\n        }\n        backToTop(); // 回到顶部（右键点击两侧空白处）\n    }else if(location.pathname === '/search.php'){\n        curSite = DBSite.search; //                    搜索结果列表页（自动翻页）\n        pageLoading(); //                              自动无缝翻页\n    }else if (patt_thread.test(location.pathname)){ // 对于 /thread-XXX-X-X.html 这种帖子页面也和上面一样\n        showHide();\n        autoReply();\n    }\n\n\n    // 自动签到\n    function qiandao(){\n        if (loginStatus){\n            if(document.getElementById('yl'))\n            {\n                document.getElementById('yl').click();\n                document.querySelector('td.tr3.tac div a').click();\n            }\n            setTimeout(location.href=menu_value('menu_qianDaoRedirectURL'), 2000); // 跳转到指定URL\n        }\n    }\n\n\n    // 自动回复\n    function autoReply(){\n        if (!menu_value('menu_autoReply')) return\n        if (loginStatus){\n            // 存在隐藏内容，自动回复\n            if (document.getElementsByClassName(\"showhide\").length == 0){\n                writeReply();\n                // 如果使用了我的 [智友邦美化] 脚本，则定位至底部，反之定位至隐藏内容区域\n                if (document.getElementById(\"fastpostmessage\").offsetParent == null){\n                    setTimeout(function(){window.scrollTo(0,99999999)}, 1000);\n                }else{\n                    setTimeout(function(){window.scrollTo(0,document.querySelector('.showhide').offsetTop)}, 1000);\n                }\n            }\n        }\n    }\n\n\n    // 写入自动回复内容\n    function writeReply(){\n        let textarea = document.getElementById(\"fastpostmessage\");\n        if (textarea){\n            // 随机写入回复内容\n            textarea.value = textarea.value + replyList[Math.floor((Math.random()*replyList.length))] + replyList[Math.floor((Math.random()*replyList.length))];\n            //console.log(`${textarea.value}`)\n            let fastpostsubmit = document.getElementById(\"fastpostsubmit\");\n            if (fastpostsubmit){\n                setTimeout(function(){fastpostsubmit.click()}, 200);\n            }\n        }\n    }\n\n\n    // 定位到隐藏内容区域\n    function showHide(){\n        if (loginStatus){\n            // 如果已显示隐藏内容，则定位到隐藏内容区域\n            // 如果没有发现已显示隐藏内容，就不定位了\n            if (document.getElementsByClassName(\"showhide\").length > 0){\n                // 如果使用了我的 [智友邦美化] 脚本，则定位至底部，反之定位至隐藏内容区域\n                if (document.getElementById(\"fastpostmessage\").offsetParent == null){\n                    setTimeout(function(){window.scrollTo(0,99999999)}, 1000);\n                }else{\n                    setTimeout(function(){window.scrollTo(0,document.querySelector('.showhide').offsetTop)}, 1000);\n                }\n            }\n        }\n    }\n\n\n    // 回到顶部（右键点击空白处）\n    function backToTop() {\n        if (!menu_value('menu_backToTop')) return\n        document.getElementById(\"nv_forum\").oncontextmenu = function(event){\n            if (event.target==this) {\n                event.preventDefault();\n                window.scrollTo(0,0)\n            }\n        }\n    }\n\n\n    // 清理置顶帖子\n    function cleanTop(){\n        if (!menu_value('menu_cleanTopPost')) return\n        let showhide = document.querySelectorAll(\"a.showhide.y\");\n        if (showhide.length > 0){\n            showhide.forEach(el=>el.click());\n        }\n    }\n\n\n    // 兑换附件后立即返回\n    function attachmentBack() {\n        let attachmentback = document.querySelector('#messagetext p.alert_btnleft a');\n        if (attachmentback){\n            attachmentback.click();\n        }\n    }\n\n\n    // 附件下载页直接跳转至网盘\n    function goPan() {\n        let gopan = document.querySelector('.threed_panbox .panframe .pan_left p a');\n        if (gopan){\n            location.href=gopan.href;\n        }\n    }\n\n\n    // 兑换附件按钮改为直链（不再弹出确认提示框）\n    function attachmentHref() {\n        attachmentHrefTime += 1; // 计算该函数执行次数\n        let attachmenthref = document.querySelector('.tab_button .button a');\n        if (attachmenthref && attachmenthref.href == \"javascript:;\"){\n            let attachmenthref_href = attachmenthref.onclick.toString();\n            attachmenthref.href = attachmenthref_href.match(patt_attachment_href)[0];\n            attachmenthref.onclick = null;\n        }\n        if (attachmentHrefTime == 50 || document.getElementsByClassName(\"showhide\").length > 0){ // 当该函数执行超过50次（5秒），或没有隐藏内容时停止定时执行\n            clearInterval(attachmentHref_Interval)\n        }\n    }\n\n\n    // 清理帖子列表中帖子标题开头的〖XXX〗【XXX】文字\n    function cleanPostTitle(){\n        if (!menu_value('menu_cleanPostTitle')) return\n        let cleanposttitle = document.querySelectorAll(\"a.s.xst\");\n        if (cleanposttitle.length > 0){\n            for(let num = postNum;num<cleanposttitle.length;num++){\n                cleanposttitle[num].innerText = cleanposttitle[num].innerText.replace(patt_posttitle, ``);\n                postNum += 1;\n            }\n        }\n    }\n\n\n    // 自动无缝翻页\n    function pageLoading() {\n        if (!menu_value('menu_pageLoading')) return\n        if (curSite.SiteTypeID > 0){\n            windowScroll(function (direction, e) {\n                if (direction === 'down') { //           下滑才准备翻页\n                    let scrollTop = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop;\n                    let scrollDelta = 666;\n                    if (document.documentElement.scrollHeight <= document.documentElement.clientHeight + scrollTop + scrollDelta) {\n                        ShowPager.loadMorePage();\n                    }\n                }\n            });\n        }\n    }\n\n\n    // 滚动条事件\n    function windowScroll(fn1) {\n        var beforeScrollTop = document.documentElement.scrollTop,\n            fn = fn1 || function () {};\n        setTimeout(function () { // 延时执行，避免刚载入到页面就触发翻页事件\n            window.addEventListener('scroll', function (e) {\n                var afterScrollTop = document.documentElement.scrollTop,\n                    delta = afterScrollTop - beforeScrollTop;\n                if (delta == 0) return false;\n                fn(delta > 0 ? 'down' : 'up', e);\n                beforeScrollTop = afterScrollTop;\n            }, false);\n        }, 1000)\n    }\n\n\n    // 修改自 https://greasyfork.org/scripts/14178 , https://github.com/machsix/Super-preloader\n    var ShowPager = {\n        getFullHref: function (e) {\n            if (e != null && e.nodeType === 1 && e.href && e.href.slice(0,4) === 'http') return e.href;\n            return '';\n        },\n        createDocumentByString: function (e) {\n            if (e) {\n                if ('HTML' !== document.documentElement.nodeName) return (new DOMParser).parseFromString(e, 'application/xhtml+xml');\n                var t;\n                try { t = (new DOMParser).parseFromString(e, 'text/html');} catch (e) {}\n                if (t) return t;\n                if (document.implementation.createHTMLDocument) {\n                    t = document.implementation.createHTMLDocument('ADocument');\n                } else {\n                    try {((t = document.cloneNode(!1)).appendChild(t.importNode(document.documentElement, !1)), t.documentElement.appendChild(t.createElement('head')), t.documentElement.appendChild(t.createElement('body')));} catch (e) {}\n                }\n                if (t) {\n                    var r = document.createRange(),\n                        n = r.createContextualFragment(e);\n                    r.selectNodeContents(document.body);\n                    t.body.appendChild(n);\n                    for (var a, o = { TITLE: !0, META: !0, LINK: !0, STYLE: !0, BASE: !0}, i = t.body, s = i.childNodes, c = s.length - 1; c >= 0; c--) o[(a = s[c]).nodeName] && i.removeChild(a);\n                    return t;\n                }\n            } else console.error('没有找到要转成 DOM 的字符串');\n        },\n        loadMorePage: function () {\n            if (curSite.pager) {\n                let curPageEle = getElementByXpath(curSite.pager.nextLink);\n                var url = this.getFullHref(curPageEle);\n                //console.log(`${url} ${curSite.pageUrl}`);\n                if(url === '') return;\n                if(curSite.pageUrl === url) return;// 不会重复加载相同的页面\n                curSite.pageUrl = url;\n                // 读取下一页的数据\n                curSite.pager.startFilter && curSite.pager.startFilter();\n                GM_xmlhttpRequest({\n                    url: url,\n                    method: \"GET\",\n                    timeout: 5000,\n                    onload: function (response) {\n                        try {\n                            var newBody = ShowPager.createDocumentByString(response.responseText);\n                            let pageElems = getAllElements(curSite.pager.pageElement, newBody, newBody);\n                            let toElement = getAllElements(curSite.pager.HT_insert[0])[0];\n                            if (pageElems.length >= 0) {\n                                let addTo = \"beforeend\";\n                                if (curSite.pager.HT_insert[1] == 1) addTo = \"beforebegin\";\n                                // 插入新页面元素\n                                pageElems.forEach(function (one) {\n                                    toElement.insertAdjacentElement(addTo, one);\n                                });\n                                // 清理帖子列表中帖子标题开头的〖XXX〗【XXX】文字\n                                cleanPostTitle();\n                                // 替换待替换元素\n                                try {\n                                    let oriE = getAllElements(curSite.pager.replaceE);\n                                    let repE = getAllElements(curSite.pager.replaceE, newBody, newBody);\n                                    if (oriE.length === repE.length) {\n                                        for (var i = 0; i < oriE.length; i++) {\n                                            oriE[i].outerHTML = repE[i].outerHTML;\n                                        }\n                                    }\n                                } catch (e) {\n                                    console.log(e);\n                                }\n                            }\n                        } catch (e) {\n                            console.log(e);\n                        }\n                    }\n                });\n            }\n        },\n    };\n    function getElementByCSS(css, contextNode = document) {\n        return contextNode.querySelector(css);\n    }\n    function getAllElementsByCSS(css, contextNode = document) {\n        return [].slice.call(contextNode.querySelectorAll(css));\n    }\n    function getElementByXpath(xpath, contextNode, doc = document) {\n        contextNode = contextNode || doc;\n        try {\n            const result = doc.evaluate(xpath, contextNode, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null);\n            // 应该总是返回一个元素节点\n            return result.singleNodeValue && result.singleNodeValue.nodeType === 1 && result.singleNodeValue;\n        } catch (err) {\n            throw new Error(`Invalid xpath: ${xpath}`);\n        }\n    }\n    function getAllElementsByXpath(xpath, contextNode, doc = document) {\n        contextNode = contextNode || doc;\n        const result = [];\n        try {\n            const query = doc.evaluate(xpath, contextNode, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);\n            for (let i = 0; i < query.snapshotLength; i++) {\n                const node = query.snapshotItem(i);\n                // 如果是 Element 节点\n                if (node.nodeType === 1) result.push(node);\n            }\n        } catch (err) {\n            throw new Error(`无效 Xpath: ${xpath}`);\n        }\n        return result;\n    }\n    function getAllElements(selector, contextNode = undefined, doc = document, win = window, _cplink = undefined) {\n        if (!selector) return [];\n        contextNode = contextNode || doc;\n        if (typeof selector === 'string') {\n            if (selector.search(/^css;/i) === 0) {\n                return getAllElementsByCSS(selector.slice(4), contextNode);\n            } else {\n                return getAllElementsByXpath(selector, contextNode, doc);\n            }\n        } else {\n            const query = selector(doc, win, _cplink);\n            if (!Array.isArray(query)) {\n                throw new Error('getAllElements 返回错误类型');\n            } else {\n                return query;\n            }\n        }\n    }\n\n\n    // 获取GET参数\n    function getQueryVariable(variable) {\n        var query = window.location.search.substring(1);\n        var vars = query.split(\"&\");\n        for (var i=0;i<vars.length;i++) {\n            var pair = vars[i].split(\"=\");\n            if(pair[0] == variable){return pair[1];}\n        }\n        return(false);\n    }\n})();\n"
  },
  {
    "path": "other/Autopage/ruleUpdateTime.json",
    "content": "1736291521"
  },
  {
    "path": "other/Autopage/rules.json",
    "content": "{\n\t\"百度搜索\": {\n\t\t\"host\": [\"www.baidu.com\",\"ipv6.baidu.com\"],\n\t\t\"url\": \"fun.isUrlC(); if (fun.isMobile()) {location.hostname = 'm.baidu.com';} else {return (fun.lp() == '/s')}\",\n\t\t\"style\": \".new-pmd .c-img-border {position: initial !important;} .op-bk-polysemy-video__wrap.c-gap-bottom, #content_left:not([style])>.result-op[tpl='new_baikan_index'], #content_left:not([style])>.result-op[tpl='ai_ask'] {display: none !important;}\",\n\t\t\"history\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"#page strong+a:not(.n)\",\n\t\t\t\"pageE\": \"#content_left\",\n\t\t\t\"replaceE\": \"#page\"\n\t\t}\n\t},\n\t\"百度搜索 - 手机版\": {\n\t\t\"host\": \"m.baidu.com\",\n\t\t\"url\": \"return (location.pathname.slice(location.pathname.length - 2,location.pathname.length) == '/s')\",\n\t\t\"style\": \"div.result[tpl='recommend_list'],#page-copyright,.hint-fold-results-box\",\n\t\t\"history\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a[class^='new-nextpage']\",\n\t\t\t\"pageE\": \"#results\",\n\t\t\t\"replaceE\": \"#page-controller\"\n\t\t}\n\t},\n\t\"百度站内搜索\": {\n\t\t\"host\": \"zhannei.baidu.com\",\n\t\t\"url\": \"/^\\\\/cse\\\\/site/\",\n\t\t\"history\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.pager-next-foot\",\n\t\t\t\"pageE\": \".result\",\n\t\t\t\"replaceE\": \"#pageFooter\"\n\t\t}\n\t},\n\t\"谷歌搜索 - 手机版\": {\n\t\t\"host\": \"/^www\\\\.google\\\\./\",\n\t\t\"url\": \"return (fun.lp() == '/search' && (!fun.indexOF('tbm=','s') || (fun.indexOF('tbm=nws','s') || fun.indexOF('tbm=vid','s') || fun.indexOF('tbm=bks','s'))) && (fun.indexOF('sclient=mobile','s') || fun.isMobile()))\",\n\t\t\"pager\": {\n\t\t\t\"type\": 2,\n\t\t\t\"nextL\": \"#botstuff a[jsaction][href][aria-label]>div\",\n\t\t\t\"isHidden\": true\n\t\t}\n\t},\n\t\"谷歌搜索\": {\n\t\t\"host\": \"/^www\\\\.google\\\\./\",\n\t\t\"url\": \"return (fun.lp() == '/search' && (!fun.indexOF('tbm=','s') || (fun.indexOF('tbm=nws','s') || fun.indexOF('tbm=vid','s') || fun.indexOF('tbm=bks','s'))))\",\n\t\t\"history\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"#pnnext,footer>div:first-child a[aria-label]\",\n\t\t\t\"pageE\": \"id('search')/div | id('rso')/div | //style[not(contains(text(),'table,div,span,p{display:none}'))] | //body//script[@nonce][not(@src)][contains(text(),'_setImagesSrc')]\",\n\t\t\t\"replaceE\": \"#navcnt,#rcnt div[role='navigation'],#botstuff div[role='navigation'],#main>footer>div:first-child\",\n\t\t\t\"scriptT\": 2,\n\t\t\t\"scrollD\": 2500\n\t\t}\n\t},\n\t\"必应搜索 + 手机版\": {\n\t\t\"host\": [\"www.bing.com\",\"cn.bing.com\",\"www4.bing.com\",\"global.bing.com\"],\n\t\t\"url\": \"fun.isUrlC();if (fun.lp() == '/search') {if (fun.isMobile()){rule.blank=3;rule.pager.type=6;rule.pager.loadTime=1000;};return true;}\",\n\t\t\"style\": \"#b_footer,.b_msg,#bnp_rich_div,.cn_related_search_upsell_container\",\n\t\t\"history\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.sb_pagN,a.sb_halfnext,a.sb_fullnpl\",\n\t\t\t\"pageE\": \"#b_results>li.b_algo\",\n\t\t\t\"replaceE\": \"#b_results>.b_pag,#b_PagAboveFooter\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"pageE.forEach(function (one) {fun.getAllCSS('div.rms_iac[data-src]',one).forEach(function (one1) {one1.outerHTML = `<img src=\\\"${one1.dataset.src}\\\" height=\\\"32\\\" width=\\\"32\\\" role=\\\"presentation\\\" class=\\\"rms_img\\\">`; }) }); return pageE\"\n\t\t}\n\t},\n\t\"搜狗搜索\": {\n\t\t\"host\": \"www.sogou.com\",\n\t\t\"url\": \"/^\\\\/.+/\",\n\t\t\"history\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"#sogou_next\",\n\t\t\t\"pageE\": \".results\",\n\t\t\t\"replaceE\": \"#pagebar_container\",\n\t\t\t\"scriptT\": 3\n\t\t}\n\t},\n\t\"搜狗搜索 - 手机版\": {\n\t\t\"host\": [\"m.sogou.com\",\"wap.sogou.com\"],\n\t\t\"url\": \"/^\\\\/.+/\",\n\t\t\"pager\": {\n\t\t\t\"type\": 2,\n\t\t\t\"nextL\": \"#ajax_next_page\",\n\t\t\t\"isHidden\": true\n\t\t}\n\t},\n\t\"搜狗微信 - 首页\": {\n\t\t\"host\": \"weixin.sogou.com\",\n\t\t\"url\": \"return (fun.lp() == '/')\",\n\t\t\"pager\": {\n\t\t\t\"type\": 2,\n\t\t\t\"nextL\": \"#look-more\",\n\t\t\t\"interval\": 1000\n\t\t}\n\t},\n\t\"搜狗微信 - 搜索\": {\n\t\t\"host\": \"weixin.sogou.com\",\n\t\t\"url\": \"/^\\\\/weixin/\",\n\t\t\"history\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"#sogou_next\",\n\t\t\t\"pageE\": \"ul[class*='news-list']>li\",\n\t\t\t\"replaceE\": \"#pagebar_container\"\n\t\t}\n\t},\n\t\"头条搜索 - 手机版\": {\n\t\t\"host\": \"so.toutiao.com\",\n\t\t\"url\": \"return (fun.lp() == '/search/' || fun.isMobile())\",\n\t\t\"history\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"#page-bottom a[class*='containerRight_'],#page-bottom a[class*='container_']\",\n\t\t\t\"pageE\": \"#results>div\",\n\t\t\t\"replaceE\": \"#page-bottom\"\n\t\t}\n\t},\n\t\"头条搜索\": {\n\t\t\"host\": \"so.toutiao.com\",\n\t\t\"url\": \"/^\\\\/search/\",\n\t\t\"history\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//div[contains(@class,'-pagination')]/a[string()='下一页']\",\n\t\t\t\"pageE\": \"div[class*='-result-list']>.result-content[data-i]\",\n\t\t\t\"replaceE\": \"div[class*='-pagination']\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"if (fun.getXpath('//div[contains(@class,\\\"-header\\\") and string()=\\\"相关搜索\\\"]',pageE[pageE.length - 1])) {pageE[pageE.length - 1].style.display = 'none';}; return pageE\"\n\t\t}\n\t},\n\t\"神马搜索\": {\n\t\t\"host\": [\"m.sm.cn\",\"quark.sm.cn\"],\n\t\t\"url\": \"/^\\\\/s/\",\n\t\t\"pager\": {\n\t\t\t\"type\": 2,\n\t\t\t\"nextL\": \"#pager:not(.loading)\"\n\t\t}\n\t},\n\t\"无追搜索\": {\n\t\t\"host\": \"www.wuzhuiso.com\",\n\t\t\"url\": \"if (fun.isMobile()) {return}; fun.isUrlC(); return (fun.lp() == '/s' && !fun.indexOF('a=image','s'))\",\n\t\t\"style\": \".so-lazyimg{opacity: 1 !important;} .result {border: none !important;}\",\n\t\t\"history\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"#snext\",\n\t\t\t\"pageE\": \".result,head>style\",\n\t\t\t\"replaceE\": \"#page\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE,[0,'img[data-isrc]','data-isrc'])\"\n\t\t}\n\t},\n\t\"360 搜索\": {\n\t\t\"host\": [\"www.so.com\",\"news.so.com\"],\n\t\t\"url\": \"/^\\\\/(n)?s/\",\n\t\t\"style\": \"img {opacity: 1 !important;}\",\n\t\t\"history\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a#snext\",\n\t\t\t\"pageE\": \"ul.result>li,style:not(src)\",\n\t\t\t\"replaceE\": \"#page\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE,[0,'img[data-isrc]','data-isrc'])\"\n\t\t}\n\t},\n\t\"DuckDuckGo 搜索\": {\n\t\t\"host\": \"duckduckgo.com\",\n\t\t\"url\": \"fun.isUrlC(); if (fun.getCookie('av') != '1') {document.cookie='av=1; expires=Thu, 18 Dec 2031 12:00:00 GMT; path=/'; location.reload();}\",\n\t\t\"history\": false\n\t},\n\t\"Startpage 搜索\": {\n\t\t\"host\": [\"startpage.com\",\"www.startpage.com\"],\n\t\t\"url\": \"/\\\\/search/\",\n\t\t\"history\": false,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"js; return fun.getNextF('//div[contains(@class,\\\"pagination\\\")]/form[last()]')\",\n\t\t\t\"pageE\": \".result,head>style[data-emotion]\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t}\n\t},\n\t\"Libre Search\": {\n\t\t\"host\": \"so.ddns-ip.net\",\n\t\t\"url\": \"/^\\\\/search/\",\n\t\t\"history\": false,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"js; return fun.getNextF('.next_page')\",\n\t\t\t\"pageE\": \"#urls>[class^=template_group_], #urls>.result\",\n\t\t\t\"replaceE\": \"#pagination\"\n\t\t}\n\t},\n\t\"Yandex 搜索 - 手机版\": {\n\t\t\"host\": [\"ya.ru\",\"yandex.com\",\"yandex.ru\",\"yandex.ua\",\"yandex.by\",\"yandex.kz\",\"yandex.uz\",\"yandex.com.tr\"],\n\t\t\"url\": \"/^\\\\/search\\\\/touch\\\\//\",\n\t\t\"pager\": {\n\t\t\t\"type\": 2,\n\t\t\t\"nextL\": \".Pager:not(.Pager_progress_yes)>button.Pager-More\",\n\t\t\t\"interval\": 1500,\n\t\t\t\"scrollD\": 1000\n\t\t}\n\t},\n\t\"Yandex 搜索\": {\n\t\t\"host\": [\"ya.ru\",\"yandex.com\",\"yandex.ru\",\"yandex.ua\",\"yandex.by\",\"yandex.kz\",\"yandex.uz\",\"yandex.com.tr\"],\n\t\t\"url\": \"/^\\\\/search/\",\n\t\t\"history\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.Pager-Item_type_next,a.pager__item_kind_next\",\n\t\t\t\"pageE\": \"#search-result,style\",\n\t\t\t\"replaceE\": \".Pager,.pager\"\n\t\t}\n\t},\n\t\"Yandex 搜索 - 视频\": {\n\t\t\"host\": [\"ya.ru\",\"yandex.com\",\"yandex.ru\",\"yandex.ua\",\"yandex.by\",\"yandex.kz\",\"yandex.uz\",\"yandex.com.tr\"],\n\t\t\"url\": \"/^\\\\/video\\\\/search/\",\n\t\t\"hiddenPN\": true,\n\t\t\"pager\": {\n\t\t\t\"type\": 2,\n\t\t\t\"nextL\": \"button.more__button\",\n\t\t\t\"interval\": 1000\n\t\t}\n\t},\n\t\"Yahoo 搜索\": {\n\t\t\"host\": [\"search.yahoo.com\",\"hk.search.yahoo.com\"],\n\t\t\"url\": \"/\\\\/search/\",\n\t\t\"history\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".pagination a.next\",\n\t\t\t\"pageE\": \"#web ol>li\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t}\n\t},\n\t\"Yahoo 搜索 - JP\": {\n\t\t\"host\": \"search.yahoo.co.jp\",\n\t\t\"url\": \"/\\\\/search/\",\n\t\t\"history\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".Pagenation__next>a\",\n\t\t\t\"pageE\": \".Contents__innerGroupBody>div\",\n\t\t\t\"replaceE\": \".Pagenation\"\n\t\t}\n\t},\n\t\"Brave 搜索\": {\n\t\t\"host\": \"search.brave.com\",\n\t\t\"url\": \"/^\\\\/search/\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"#pagination>a:last-child\",\n\t\t\t\"pageE\": \"#results>div:not([id])\",\n\t\t\t\"replaceE\": \"#pagination\"\n\t\t}\n\t},\n\t\"Qwant 搜索\": {\n\t\t\"host\": \"www.qwant.com\",\n\t\t\"url\": \"fun.isUrlC(); return (fun.indexOF('q=','s') && fun.indexOF('t=web','s'))\",\n\t\t\"pager\": {\n\t\t\t\"type\": 2,\n\t\t\t\"nextL\": \"button[data-testid='buttonShowMore']\"\n\t\t}\n\t},\n\t\"Ecosia 搜索\": {\n\t\t\"host\": \"www.ecosia.org\",\n\t\t\"url\": \"/^\\\\/search/\",\n\t\t\"history\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a[data-test-id=next-button]\",\n\t\t\t\"pageE\": \".mainline__result-wrapper\",\n\t\t\t\"replaceE\": \".simplified-pagination\"\n\t\t}\n\t},\n\t\"ASK 搜索\": {\n\t\t\"host\": [\"ask.com\",\"www.ask.com\"],\n\t\t\"url\": \"/^\\\\/web/\",\n\t\t\"style\": \".PartialSearchResults-heading\",\n\t\t\"history\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"li.PartialWebPagination-next>a\",\n\t\t\t\"pageE\": \".PartialSearchResults.mid\",\n\t\t\t\"replaceE\": \".PartialWebPagination\"\n\t\t}\n\t},\n\t\"Presearch\": {\n\t\t\"host\": \"presearch.com\",\n\t\t\"url\": \"/^\\\\/search/\",\n\t\t\"style\": \"[x-if^='state.results.pages']+div,.text-gray-300>[x-data]\",\n\t\t\"pager\": {\n\t\t\t\"type\": 6,\n\t\t\t\"nextL\": \"a[\\\\:class*='${state.results.pages[state.results.pages.length-1]']\",\n\t\t\t\"pageE\": \"[x-for^='(result']~div\",\n\t\t\t\"replaceE\": \"[x-if^='state.results.pages']+div\",\n\t\t\t\"loadTime\": 1000,\n\t\t\t\"scrollD\": 3000\n\t\t}\n\t},\n\t\"WebCrawler 搜索\": {\n\t\t\"host\": \"www.webcrawler.com\",\n\t\t\"url\": \"return (fun.indexOF('qc=web','s') || !fun.indexOF('qc=','s'))\",\n\t\t\"history\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.pagination__num--next\",\n\t\t\t\"pageE\": \".content-answers-top-wrap,.content-answers-top-wrap~div\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t}\n\t},\n\t\"4get.ca 搜索\": {\n\t\t\"host\": \"4get.ca\",\n\t\t\"url\": \"/^\\\\/(web|images|videos|news|music)/\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".nextpage\",\n\t\t\t\"pageE\": \".text-result, .image-wrapper\"\n\t\t}\n\t},\n\t\"百度贴吧 - 搜索页\": {\n\t\t\"host\": \"tieba.baidu.com\",\n\t\t\"url\": \"/^\\\\/f\\\\/search\\\\/res/\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.next\",\n\t\t\t\"pageE\": \".s_post_list > div\",\n\t\t\t\"replaceE\": \".pager\"\n\t\t}\n\t},\n\t\"百度贴吧 - 帖子内\": {\n\t\t\"host\": [\"tieba.baidu.com\",\"jump2.bdimg.com\"],\n\t\t\"url\": \"if (location.hostname == 'jump2.bdimg.com') location.hostname = 'tieba.baidu.com'; return (fun.indexOF('/p/')) \",\n\t\t\"iframe\": true,\n\t\t\"thread\": true,\n\t\t\"style\": \".d_sign_split,img.j_user_sign,.d_author .d_pb_icons,.save_face_bg,.save_face_bg_2,li.d_name a.icon_tbworld,.lzl_cnt a.icon_tbworld,.topic_list_box.topic-fixed {display: none !important;} a.p_author_face.j_frame_guide {background: none repeat scroll 0 0 #FFF !important;border: 1px solid #CCC !important;padding: inherit !important;} .red_text,.red-text,.vip_red,.vip-red,.vip_red:hover,.vip-red:hover,.vip_red:visited,.vip-red:visited {color: #2d64b3 !important;}\",\n\t\t\"pager\": {\n\t\t\t\"type\": 5,\n\t\t\t\"nextL\": \"//li[contains(@class,'pb_list_pager')]/a[text()='下一页']\",\n\t\t\t\"style\": \"ul.tbui_aside_float_bar,.core_title_wrap_bright.tbui_follow_fixed.core_title_absolute_bright {display: none !important;}\"\n\t\t}\n\t},\n\t\"百度贴吧\": {\n\t\t\"host\": \"tieba.baidu.com\",\n\t\t\"url\": \"/^\\\\/f/\",\n\t\t\"style\": \"img.j_retract {margin-top: 0 !important;margin-bottom: 0 !important;}\",\n\t\t\"history\": false,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"js; if (fun.getCSS('a.next.pagination-item')) return (fun.getCSS('a.next.pagination-item').href + '&pagelets=frs-list%2Fpagelet%2Fthread&pagelets_stamp=' + new Date().getTime())\",\n\t\t\t\"pageE\": \"//script[contains(text(),'Bigpipe.register(\\\"frs-list/pagelet/thread_list\\\", ')]\",\n\t\t\t\"insertP\": [\"#thread_list\",3],\n\t\t\t\"interval\": 2000,\n\t\t\t\"scrollD\": 3000\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"let scriptText = pageE[0].textContent.replace('Bigpipe.register(\\\"frs-list/pagelet/thread_list\\\", ',''); scriptText = scriptText.slice(0,scriptText.indexOf(').')); let temp = document.createElement('div'); temp.innerHTML = JSON.parse(scriptText).content; fun.getCSS('#frs_list_pager').innerHTML = fun.getCSS('#frs_list_pager',temp).innerHTML; return fun.src_bF(fun.getAllCSS('#thread_list>li',temp))\"\n\t\t}\n\t},\n\t\"豆瓣\": {\n\t\t\"host\": \"movie.douban.com\",\n\t\t\"url\": \"/^\\\\/(explore|tv\\\\/)/\",\n\t\t\"pager\": {\n\t\t\t\"type\": 2,\n\t\t\t\"nextL\": \".explore-more>button:not(.processing)\"\n\t\t}\n\t},\n\t\"豆瓣 - 短评\": {\n\t\t\"host\": \"movie.douban.com\",\n\t\t\"url\": \"/^\\\\/subject\\\\/\\\\d+\\\\/comments/\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.next\",\n\t\t\t\"pageE\": \".comment-item\",\n\t\t\t\"replaceE\": \"#paginator\"\n\t\t}\n\t},\n\t\"豆瓣 - top250/分集短评/剧评影评/在看/想看/看过/作品/图片\": {\n\t\t\"host\": [\"movie.douban.com\",\"music.douban.com\",\"book.douban.com\"],\n\t\t\"url\": \"return (fun.lp() == '/top250' || fun.indexOF(/^\\\\/subject\\\\/\\\\d+\\\\/(episode|tv_discuss|reviews|photos)/) || fun.indexOF(/^\\\\/people\\\\/.+\\\\/(do|wish|collect)/) || fun.indexOF(/^\\\\/celebrity\\\\/\\\\d+\\\\/(movies|photos)/))\",\n\t\t\"blank\": 5,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"link[rel='next']\",\n\t\t\t\"pageE\": \".grid_view,.article>.indent>p.ul,.article>.indent>table,#comments,.review-list,.interest-list,.grid-view,.grid_view>ul>li,.poster-col3>li\",\n\t\t\t\"replaceE\": \".paginator\",\n\t\t\t\"scrollD\": 2500\n\t\t}\n\t},\n\t\"豆瓣 - 广播/日记/书评/影评评论\": {\n\t\t\"host\": [\"www.douban.com\",\"book.douban.com\",\"movie.douban.com\"],\n\t\t\"url\": \"return ((fun.indexOF(/^\\\\/people\\\\/.+\\\\/status/) && (!fun.indexOF('tab=','s') || fun.indexOF('tab=comment','s'))) || (fun.indexOF(/^\\\\/note\\\\/\\\\d+\\\\//) && !fun.indexOF('type=','s')) || fun.indexOF(/^\\\\/review\\\\/\\\\d+\\\\//))\",\n\t\t\"pager\": {\n\t\t\t\"type\": 6,\n\t\t\t\"nextL\": \"a.next\",\n\t\t\t\"pageE\": \".comments-list-wrapper\",\n\t\t\t\"replaceE\": \".paginator\",\n\t\t\t\"loadTime\": 1000\n\t\t}\n\t},\n\t\"豆瓣 - 片单/标签/人物图片/人物作品/小组讨论精选/广播/日记\": {\n\t\t\"host\": \"www.douban.com\",\n\t\t\"url\": \"return (fun.indexOF(/^\\\\/(doulist|tag)\\\\//) || fun.indexOF(/^\\\\/personage\\\\/\\\\d+\\\\/(photos|creations)/) || fun.lp() == '/group/explore' || ((fun.indexOF(/^\\\\/people\\\\/.+\\\\/status/) && fun.indexOF('tab=','s') && !fun.indexOF('tab=collect','s'))) || (fun.indexOF(/^\\\\/note\\\\/\\\\d+\\\\//) && fun.indexOF('type=','s')))\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"link[rel='next']\",\n\t\t\t\"pageE\": \".doulist-item,.article>.mod:not([id='doulist-info']),ul.pics>li,ul.creations>li.creation,.channel-item,.list\",\n\t\t\t\"replaceE\": \".paginator\"\n\t\t}\n\t},\n\t\"豆瓣 - 小组/讨论区 - 帖子内\": {\n\t\t\"host\": [\"www.douban.com\",\"movie.douban.com\"],\n\t\t\"url\": \"return (fun.indexOF('/group/topic/') || fun.indexOF(/^\\\\/subject\\\\/.+\\\\/discussion\\\\/\\\\d+/))\",\n\t\t\"thread\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"link[rel='next']\",\n\t\t\t\"pageE\": \".comment-item,.list>ul>li\",\n\t\t\t\"replaceE\": \".paginator\",\n\t\t\t\"scrollD\": 2500\n\t\t},\n\t\t\"function\": {\n\t\t\t\"aF\": \"fun.getAllCSS('.cmt-img:not([data-render-type=video])>img[data-render-type=gif]:not([data-status=playing])').forEach((img)=>{img.outerHTML='<video class=\\\"image-gif-player\\\" loop=\\\"\\\" preload=\\\"auto\\\" autoplay=\\\"\\\" poster=\\\"'+img.dataset.orig+'\\\" crossorigin=\\\"anonymous\\\" playsinline=\\\"true\\\" webkit-playsinline=\\\"true\\\" type=\\\"video/mp4\\\" src=\\\"'+img.dataset.orig.replace('.jpg','.mp4')+'\\\" data-status=\\\"playing\\\" style=\\\"display: block;\\\"></video>';})\"\n\t\t}\n\t},\n\t\"豆瓣 - 小组/讨论区\": {\n\t\t\"host\": [\"www.douban.com\",\"movie.douban.com\"],\n\t\t\"url\": \"/^\\\\/(group|subject)\\\\/.+\\\\/discussion/\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"link[rel='next']\",\n\t\t\t\"pageE\": \"table.olt>tbody>tr:not(:first-of-type)\",\n\t\t\t\"replaceE\": \".paginator\"\n\t\t}\n\t},\n\t\"烂番茄\": {\n\t\t\"host\": \"www.rottentomatoes.com\",\n\t\t\"url\": \"/\\\\/browse\\\\//\",\n\t\t\"pager\": {\n\t\t\t\"type\": 2,\n\t\t\t\"nextL\": \"#show-more-btn>button\"\n\t\t}\n\t},\n\t\"IMDb\": {\n\t\t\"host\": \"www.imdb.com\",\n\t\t\"url\": \"/\\\\/search\\\\//\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".next-page\",\n\t\t\t\"pageE\": \".lister-item\",\n\t\t\t\"replaceE\": \".desc\",\n\t\t\t\"scrollD\": 2500\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE,[0,'img[loadlate]','loadlate'])\"\n\t\t}\n\t},\n\t\"The Movie Database\": {\n\t\t\"host\": \"www.themoviedb.org\",\n\t\t\"url\": \"if (fun.indexOF('/search/')){return true;}else{setTimeout(()=>{document.querySelector('#pagination_page_1 a.load_more').click();},1000)}\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.next_page\",\n\t\t\t\"pageE\": \".results>.card\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t}\n\t},\n\t\"知乎 - 用户主页/收藏夹\": {\n\t\t\"host\": \"www.zhihu.com\",\n\t\t\"url\": \"fun.isUrlC(); if (fun.indexOF(/\\\\/people\\\\/.+\\\\/.+/) || fun.indexOF('/collection/')) {if (self != top) {fun.insStyle('#ProfileHeader {display: none !important;}')}; return true;}\",\n\t\t\"blank\": 2,\n\t\t\"iframe\": true,\n\t\t\"pager\": {\n\t\t\t\"type\": 5,\n\t\t\t\"nextL\": \"js; let next = fun.getCSS('.Pagination .PaginationButton--current+button:not(.PaginationButton-next)');if (next) return (location.origin + location.pathname + '?page=' + next.textContent)\"\n\t\t}\n\t},\n\t\"简书\": {\n\t\t\"host\": \"www.jianshu.com\",\n\t\t\"url\": \"/^\\\\/$/\",\n\t\t\"pager\": {\n\t\t\t\"type\": 2,\n\t\t\t\"nextL\": \"a.load-more\",\n\t\t\t\"isHidden\": true,\n\t\t\t\"interval\": 500,\n\t\t\t\"scrollD\": 1000\n\t\t}\n\t},\n\t\"微博评论\": {\n\t\t\"host\": \"weibo.com\",\n\t\t\"pager\": {\n\t\t\t\"type\": 2,\n\t\t\t\"nextL\": \"a[action-type='click_more_comment']\",\n\t\t\t\"nextTextOf\": \"查看更多\"\n\t\t}\n\t},\n\t\"天涯社区\": {\n\t\t\"host\": \"bbs.tianya.cn\",\n\t\t\"url\": \"/\\\\/list/\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//div[contains(@class,'pages')]/div[@class='links']/a[text()='下一页']\",\n\t\t\t\"pageE\": \".tab-bbs-list>tbody:not(:first-of-type)\",\n\t\t\t\"replaceE\": \"//div[contains(@class,'pages')]\"\n\t\t}\n\t},\n\t\"天涯社区 - 帖子内\": {\n\t\t\"host\": \"bbs.tianya.cn\",\n\t\t\"url\": \"/\\\\/post/\",\n\t\t\"thread\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.js-keyboard-next\",\n\t\t\t\"pageE\": \".atl-main>div[class='atl-item']\",\n\t\t\t\"replaceE\": \".atl-pages>form\"\n\t\t}\n\t},\n\t\"虎扑社区 - 帖子内\": {\n\t\t\"host\": \"bbs.hupu.com\",\n\t\t\"url\": \"return fun.indexOF('.html')\",\n\t\t\"thread\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"li.hupu-rc-pagination-next>a\",\n\t\t\t\"pageE\": \".post-reply-list \",\n\t\t\t\"replaceE\": \"ul.hupu-rc-pagination\"\n\t\t}\n\t},\n\t\"虎扑社区 - 搜索页\": {\n\t\t\"host\": \"bbs.hupu.com\",\n\t\t\"url\": \"/^\\\\/search/\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"js; return fun.getNextEP('li.hupu-rc-pagination-item-active+li.hupu-rc-pagination-item>a','page=',/page=\\\\d+/)\",\n\t\t\t\"pageE\": \".content-outline\",\n\t\t\t\"replaceE\": \".hupu-rc-pagination\"\n\t\t}\n\t},\n\t\"虎扑社区\": {\n\t\t\"host\": \"bbs.hupu.com\",\n\t\t\"url\": \"return fun.isPager('r')\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"js; let next = fun.getCSS('li.hupu-rc-pagination-item-active+li.hupu-rc-pagination-item>a'); if (next) return (location.origin + location.pathname.replace(/-\\\\d+/,'') + '-' + next.textContent)\",\n\t\t\t\"pageE\": \"li.bbs-sl-web-post-body\",\n\t\t\t\"replaceE\": \"ul.hupu-rc-pagination\"\n\t\t}\n\t},\n\t\"NGA\": {\n\t\t\"host\": [\"bbs.nga.cn\",\"ngabbs.com\",\"nga.178.com\",\"g.nga.cn\"],\n\t\t\"url\": \"fun.isUrlC(); if(!window.__APPEMBED && !window.cookieInterval){window.cookieInterval = setInterval(()=>{if (!window.__APPEMBED) {document.cookie = 'guestJs=' + fun.getCookie('guestJs').replace(/^\\\\d+/,parseInt(new Date().getTime()/1000-parseInt(Math.random()*(300-100)+100))) + ';domain=' + location.host + ';expires=Thu, 18 Dec 2031 12:00:00 GMT; path=/;samesite=none;secure=false';document.cookie = 'lastvisit=' + parseInt(new Date().getTime()/1000-parseInt(Math.random()*(100-1)+1)) + ';samesite=none;secure=false;domain=' + location.host;};},10000)}; return (fun.lp() == '/thread.php')\",\n\t\t\"iframe\": true,\n\t\t\"gmxhr\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"#pagebbtm a[title='下一页']\",\n\t\t\t\"pageE\": \"#topicrows>tbody,#topicrows>script\",\n\t\t\t\"replaceE\": \"div[name='pageball']\",\n\t\t\t\"scriptT\": 2\n\t\t},\n\t\t\"function\": {\n\t\t\t\"aF\": \"document.body.appendChild(document.createElement('script')).textContent = 'commonui.topicArg.loadAll();';\"\n\t\t}\n\t},\n\t\"NGA - 帖子内\": {\n\t\t\"host\": [\"bbs.nga.cn\",\"ngabbs.com\",\"nga.178.com\",\"g.nga.cn\"],\n\t\t\"url\": \"/^\\\\/read\\\\.php\",\n\t\t\"iframe\": true,\n\t\t\"history\": false,\n\t\t\"thread\": true,\n\t\t\"gmxhr\": true,\n\t\t\"retry\": 1000,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"#pagebbtm a[title*='下一页']\",\n\t\t\t\"pageE\": \"id('m_posts_c')/* | //script[contains(text(),'commonui.userInfo.setAll')]\",\n\t\t\t\"replaceE\": \"div[name='pageball']\",\n\t\t\t\"scriptT\": 2\n\t\t}\n\t},\n\t\"V2EX - 帖子内\": {\n\t\t\"host\": [\"v2ex.com\",\"www.v2ex.com\"],\n\t\t\"url\": \"/^\\\\/t\\\\//\",\n\t\t\"thread\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".page_current+a\",\n\t\t\t\"pageE\": \".cell[id^='r_']\",\n\t\t\t\"replaceE\": \"//a[@class='page_current']/../..\"\n\t\t}\n\t},\n\t\"V2EX\": {\n\t\t\"host\": [\"v2ex.com\",\"www.v2ex.com\"],\n\t\t\"url\": \"return fun.isPager('n')\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".page_current+a\",\n\t\t\t\"pageE\": \".cell.item,#notifications>div,#TopicsNode>div,#Main>.box>.dock_area,#Main>.box>.dock_area+.inner,#Main>.box>.dock_area+.cell:not([style]), table.data>tbody>tr:not(:first-child)\",\n\t\t\t\"replaceE\": \"//a[@class='page_current']/../..\"\n\t\t}\n\t},\n\t\"煎蛋网\": {\n\t\t\"host\": \"jandan.net\",\n\t\t\"url\": \"/^(\\\\/$|\\\\/page\\\\/)/\",\n\t\t\"style\": \".nav_prev,.nav_next,.post-item>.col-md-12,.post.f:not(.list-post)\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//div[@class='page-navi']/a[contains(text(),'下一页') or contains(text(),'更多文章')]\",\n\t\t\t\"pageE\": \".post-list>.post-item\",\n\t\t\t\"replaceE\": \".page-navi\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE)\"\n\t\t}\n\t},\n\t\"龙的天空\": {\n\t\t\"host\": \"www.lkong.com\",\n\t\t\"url\": \"fun.isUrlC(); return (fun.indexOF('/forum/'))\",\n\t\t\"history\": false,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"js; let next = fun.getCSS('li.ant-pagination-next'),page; if (next && next.getAttribute('aria-disabled') === 'false') { page = fun.getCSS('li.ant-pagination-item-active[title]'); if (page && page.title) {return (location.origin + location.pathname + '?page=' + ++page.title);}}; return '';\",\n\t\t\t\"pageE\": \"//div[@class='main-title']/../.. | //head/style[@data-emotion-css]\",\n\t\t\t\"replaceE\": \"ul.ant-pagination\"\n\t\t}\n\t},\n\t\"龙的天空 - 帖子内\": {\n\t\t\"host\": \"www.lkong.com\",\n\t\t\"url\": \"/\\\\/thread\\\\//\",\n\t\t\"thread\": true,\n\t\t\"history\": false,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"js; let next = fun.getCSS('li.ant-pagination-next'),page; if (next && next.getAttribute('aria-disabled') === 'false') { page = fun.getCSS('li.ant-pagination-item-active[title]'); if (page && page.title) {return (location.origin + location.pathname + '?page=' + ++page.title);}}; return '';\",\n\t\t\t\"pageE\": \"//div[@class='main-content']/.. | //head/style[@data-emotion-css]\",\n\t\t\t\"replaceE\": \"ul.ant-pagination\"\n\t\t}\n\t},\n\t\"水木社区\": {\n\t\t\"host\": \"www.newsmth.net\",\n\t\t\"url\": \"return (location.href.indexOf('board/') != -1)\",\n\t\t\"style\": \"[id*='banner'],[class*='banner']\",\n\t\t\"blank\": 4,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".page-select+li.page-normal>a\",\n\t\t\t\"pageE\": \".board-list>tbody>tr:not(.top)\",\n\t\t\t\"replaceE\": \".pagination\",\n\t\t\t\"scrollD\": 800\n\t\t}\n\t},\n\t\"水木社区 - 帖子内\": {\n\t\t\"host\": \"www.newsmth.net\",\n\t\t\"url\": \"return (location.href.indexOf('article/') != -1)\",\n\t\t\"style\": \"[id*='banner'],[class*='banner']\",\n\t\t\"thread\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".page-select+li.page-normal>a\",\n\t\t\t\"pageE\": \".b-content>*\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t}\n\t},\n\t\"看雪论坛\": {\n\t\t\"host\": \"bbs.pediy.com\",\n\t\t\"url\": \"/\\\\/forum-/\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//a[@class='page-link' and text()='▶']\",\n\t\t\t\"pageE\": \"table.threadlist>tbody>tr\",\n\t\t\t\"replaceE\": \"ul.pagination\"\n\t\t}\n\t},\n\t\"看雪论坛 - 帖子内\": {\n\t\t\"host\": \"bbs.pediy.com\",\n\t\t\"url\": \"/\\\\/thread-/\",\n\t\t\"thread\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//a[@class='page-link' and text()='▶']\",\n\t\t\t\"pageE\": \"table.postlist>tbody>tr[data-pid]\",\n\t\t\t\"replaceE\": \"ul.pagination\"\n\t\t}\n\t},\n\t\"番组计划\": {\n\t\t\"host\": [\"bgm.tv\",\"bangumi.tv\",\"chii.in\"],\n\t\t\"url\": \"return (fun.indexOF(/\\\\/(browser|subject_search|tag|wish|forum|comments)/) || fun.isPager())\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//div[@class='page_inner']/a[text()='››']\",\n\t\t\t\"pageE\": \"ul#browserItemList>li,.topic_list>tbody:last-of-type>tr.topic,#comment_box>.item\",\n\t\t\t\"replaceE\": \".page_inner\"\n\t\t}\n\t},\n\t\"2DFan\": {\n\t\t\"host\": [\"2dfan.com\",\"www.2dfan.com\",\"ddfan.org\",\"/^ddfan\\\\.[a-z]+$/\",\"/^galge\\\\.[a-z]+$/\",\"/^fan2d\\\\.[a-z]+$/\"],\n\t\t\"url\": \"return fun.isPager('p,r')\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a[rel='next']\",\n\t\t\t\"pageE\": \".media-list>.media,.topic-list>tbody>tr\",\n\t\t\t\"replaceE\": \".pagination>ul\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE,[0,'img[data-normal]','data-normal'])\"\n\t\t}\n\t},\n\t\"2DFan - 评论\": {\n\t\t\"host\": [\"2dfan.com\",\"www.2dfan.com\",\"ddfan.org\",\"/^ddfan\\\\.[a-z]+$/\",\"/^galge\\\\.[a-z]+$/\",\"/^fan2d\\\\.[a-z]+$/\"],\n\t\t\"url\": \"if (fun.getCSS('#comments')&&fun.getCSS('.pagination')){[].slice.call(fun.getAllCSS('#comments>div')).reverse().forEach((e)=>{document.querySelector('#comments>.pagination').insertAdjacentElement('beforebegin',e);});return true}\",\n\t\t\"history\": false,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a[rel='prev']\",\n\t\t\t\"pageE\": \"body\",\n\t\t\t\"insertP\": [\"#comments>.media\",5]\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"o=document.createElement('div'); o.innerHTML=JSON.parse(pageE[0].textContent).comments; fun.getCSS('.pagination').outerHTML = o.querySelector('.pagination').outerHTML; return [].slice.call(o.querySelectorAll('.media:not(.no-btm-border)')).reverse()\"\n\t\t}\n\t},\n\t\"2Libra\": {\n\t\t\"host\": \"2libra.com\",\n\t\t\"url\": \"fun.isUrlC();if (fun.lp() == '/' || fun.indexOF(/^\\\\/node\\\\//) || fun.isPager()){return true;}else if(fun.indexOF(/^\\\\/post\\\\//)){rule.pager.pageE='[data-main-left] div.card.border-base-content\\\\\\\\/10';rule.thread=true;}else if(fun.indexOF(/^\\\\/user\\\\/(.+)\\\\/(post|comment)/)){rule.pager.type=1;rule.pager.pageE='.bg-base-100>div>ul>li.items-center, [data-main-left] div.card.border-base-content\\\\\\\\/10>div:not([class])>div>div.border-base-content\\\\\\\\/10';}else{return false;};return true\",\n\t\t\"blank\": 3,\n\t\t\"history\": false,\n\t\t\"pager\": {\n\t\t\t\"type\": 6,\n\t\t\t\"nextL\": \".join-item.btn.btn-sm.btn-active+a\",\n\t\t\t\"pageE\": \"ul.card>li.items-center\",\n\t\t\t\"loadTime\": 600\n\t\t}\n\t},\n\t\"巴哈姆特\": {\n\t\t\"host\": \"forum.gamer.com.tw\",\n\t\t\"url\": \"/^\\\\/B\\\\.php/\",\n\t\t\"blank\": 4,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.next\",\n\t\t\t\"pageE\": \".b-list>tbody>tr:not(.b-list__head)\",\n\t\t\t\"replaceE\": \".b-pager\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"aF\": \"Forum.B.lazyThumbnail();Forum.Common.drawNoImageCanvas();\"\n\t\t}\n\t},\n\t\"巴哈姆特動畫瘋 - list\": {\n\t\t\"host\": \"ani.gamer.com.tw\",\n\t\t\"url\": \"return fun.isPager()\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.next\",\n\t\t\t\"pageE\": \".theme-list-block>a\",\n\t\t\t\"replaceE\": \".page_control\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE)\"\n\t\t}\n\t},\n\t\"懂车帝论坛\": {\n\t\t\"host\": \"www.dongchedi.com\",\n\t\t\"url\": \"fun.isUrlC(); return (fun.indexOF('/community/'))\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"li.pagination-item.is-active+li>a\",\n\t\t\t\"pageE\": \".data-wrapper>section.community-card,style\",\n\t\t\t\"replaceE\": \"//ul[./li[contains(@class,'pagination-item')]]\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"pageE.forEach(function (one) { one.querySelectorAll('.g-load-img-wrap,.tw-absolute.tw-cursor-pointer,.avatar').forEach(function (now) { fun.getCSS('noscript+img',now).src = fun.getCSS('noscript>img',now).src; }); }); return pageE\"\n\t\t}\n\t},\n\t\"宽带山论坛\": {\n\t\t\"host\": \"club.kdslife.com\",\n\t\t\"url\": \"/^\\\\/f_/\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//div[@class='fr i3_r']/a[text()='后一页']\",\n\t\t\t\"pageE\": \"ul.main_List>li.i2:not(.h_bg)\",\n\t\t\t\"replaceE\": \"ul.main_List>li.i3\"\n\t\t}\n\t},\n\t\"宽带山论坛 - 帖子内\": {\n\t\t\"host\": \"club.kdslife.com\",\n\t\t\"url\": \"/^\\\\/t_/\",\n\t\t\"thread\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//div[@class='pages']/a[text()='>>']\",\n\t\t\t\"pageE\": \"#reply_list_panel>*,script[src*='ui/js/kds.js']\",\n\t\t\t\"replaceE\": \".pages\",\n\t\t\t\"scriptT\": 2\n\t\t}\n\t},\n\t\"篱笆网论坛\": {\n\t\t\"host\": \"www.libaclub.com\",\n\t\t\"url\": \"fun.insStyle('li.ui-list-merchant-ad,.ui-nav-appImage {display: none !important;}'); return (fun.lp() == '/' || fun.indexOF('/date_'))\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//div[@class='ui-crumbs-more']/a[@class='fn-link'][1]\",\n\t\t\t\"pageE\": \"ul.ui-list>li:not(.ui-list-item-head):not(.ui-list-merchant-ad)\",\n\t\t\t\"replaceE\": \"div.ui-crumbs-more\"\n\t\t}\n\t},\n\t\"篱笆网论坛 - 帖子列表\": {\n\t\t\"host\": \"www.libaclub.com\",\n\t\t\"url\": \"/^\\\\/f_/\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.ui-paging-next\",\n\t\t\t\"pageE\": \"ul.ui-list>li:not(.ui-list-item-head):not(.ui-list-merchant-ad)\",\n\t\t\t\"replaceE\": \"div.ui-paging\"\n\t\t}\n\t},\n\t\"篱笆网论坛 - 帖子内\": {\n\t\t\"host\": \"www.libaclub.com\",\n\t\t\"url\": \"/\\\\/(t|reply)_/\",\n\t\t\"thread\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.ui-paging-next\",\n\t\t\t\"pageE\": \".ui-box-content>div.ui-topic,.ui-box-content>a[name]\",\n\t\t\t\"insertP\": [\".ui-box-content\",3],\n\t\t\t\"replaceE\": \"div.ui-paging\"\n\t\t}\n\t},\n\t\"篱笆网论坛 - 帖子内 - 打印版\": {\n\t\t\"host\": \"www.libaclub.com\",\n\t\t\"url\": \"/\\\\/prt_/\",\n\t\t\"thread\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.ui-paging-next\",\n\t\t\t\"pageE\": \"ul.ui-list>li\",\n\t\t\t\"replaceE\": \"div.ui-paging\"\n\t\t}\n\t},\n\t\"篱笆网论坛 - 搜索页\": {\n\t\t\"host\": \"www.libaclub.com\",\n\t\t\"url\": \"/\\\\/facade.php/\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//div[@class='ui-page']/a[contains(text(),'下一页')]\",\n\t\t\t\"pageE\": \".ui-box-main>ul.ui-list>li\",\n\t\t\t\"replaceE\": \"div.ui-page\"\n\t\t}\n\t},\n\t\"淘股吧 - 论坛\": {\n\t\t\"host\": \"www.tgb.cn\",\n\t\t\"url\": \"/^\\\\/(bbs|zongban|dianzan|jinghua|ttcl)\\\\//\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"js; let next = fun.getCSS('.next-page.pageDisabled'),next_ = '/'; if (next) {next = next.getAttribute('onclick').replace('gotoPage(','').replace(')','').split(','); if (fun.indexOF(/\\\\/dianzan|jinghua\\\\//)) next_ = '-'; if (parseInt(next[0]) <= parseInt(next[2])) {return (`${location.origin}/${location.pathname.split('/')[1]}/${next[0]}${next_}${next[1]}`)};}; return '';\",\n\t\t\t\"pageE\": \".Nbbs-tiezi-lists\",\n\t\t\t\"replaceE\": \".t_page\"\n\t\t}\n\t},\n\t\"淘股吧 - 生活圈\": {\n\t\t\"host\": \"www.tgb.cn\",\n\t\t\"url\": \"/^\\\\/shenghuoba\\\\//\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"js; let next = fun.getCSS('#N_go_pageBtn'),next_ = location.pathname.split('/')[2].split('-')[0]; if (next && (parseInt(next.dataset.now) + 1 <= parseInt(next.dataset.total))) {if (!next_) next_ = 'H'; return (`${location.origin}/shenghuoba/${next_}-${parseInt(next.dataset.now) + 1}`)}; return '';\",\n\t\t\t\"pageE\": \".lifeContent-topicList-item\",\n\t\t\t\"replaceE\": \".N_sortPage \"\n\t\t}\n\t},\n\t\"淘股吧 - 帖子内\": {\n\t\t\"host\": \"www.tgb.cn\",\n\t\t\"url\": \"/^\\\\/a\\\\//\",\n\t\t\"thread\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"js; let next = fun.getXpath('//div[contains(@class,\\\"t_page01\\\")]/a[contains(text(),\\\"下一页\\\")]');if (next) {next = next.getAttribute('onclick').replace('gotoPageTopic(','').replace(')','').split(','); if (parseInt(next[0]) <= parseInt(next[1])) {return (`${location.origin}/Article/${fun.getCSS(\\\"#looktopicID\\\").value}/${next[0]}`)}}; return '';\",\n\t\t\t\"pageE\": \".comment-data\",\n\t\t\t\"replaceE\": \".t_page\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE)\"\n\t\t}\n\t},\n\t\"淘股吧 - 帖子内 - 只看楼主\": {\n\t\t\"host\": \"www.tgb.cn\",\n\t\t\"url\": \"/^\\\\/topic\\\\/lookUserTopic/\",\n\t\t\"thread\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"js; let next = fun.getXpath('//div[contains(@class,\\\"t_page01\\\")]/a[contains(text(),\\\"下一页\\\")]');if (next) {next = next.getAttribute('onclick').replace('gotoPageLookTopic(','').replace(')','').split(',');return fun.getNextUP('pageNo=',/pageNo=\\\\d+/,location.pathname,'2',next[1])}; return '';\",\n\t\t\t\"pageE\": \".comment-data\",\n\t\t\t\"replaceE\": \".t_page\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE)\"\n\t\t}\n\t},\n\t\"芥子空间论坛\": {\n\t\t\"host\": \"bbs.lieyou888.com\",\n\t\t\"url\": \"/^\\\\/forum/\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//div[contains(@class,'_pageNav')]/a[text()='下一页']\",\n\t\t\t\"pageE\": \"ul.gb-bbs-list>li\",\n\t\t\t\"replaceE\": \"._pageNav\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE,[0,'img[original]','original'])\"\n\t\t}\n\t},\n\t\"汽车之家论坛\": {\n\t\t\"host\": \"club.autohome.com.cn\",\n\t\t\"url\": \"fun.isUrlC(); return fun.indexOF('/bbs/forum')\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"type\": 6,\n\t\t\t\"nextL\": \"js; return fun.getNextUPN(/(?<=-)\\\\d+(?=\\\\.html)/,/-\\\\d+\\\\.html$/,'-','.html','2',fun.getCSS('.athm-page__num>a:last-of-type').textContent)\",\n\t\t\t\"pageE\": \".post-list>li\",\n\t\t\t\"loadTime\": 1000,\n\t\t\t\"scrollD\": 3000\n\t\t}\n\t},\n\t\"爱卡汽车网论坛\": {\n\t\t\"host\": \"www.xcar.com.cn\",\n\t\t\"url\": \"return (fun.lp() == '/bbs/forumdisplay.php' && !fun.getCSS('.article_more_item'))\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.page_down\",\n\t\t\t\"pageE\": \".table-section>dl:not(.table_head)\",\n\t\t\t\"replaceE\": \".forumList_page\"\n\t\t}\n\t},\n\t\"飞客网论坛\": {\n\t\t\"host\": \"www.flyert.com\",\n\t\t\"url\": \"return (fun.indexOF('/forum-') || fun.indexOF('mod=forumdisplay','s'))\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.nxt:not([href*='javascript'])\",\n\t\t\t\"pageE\": \"#threadlist table>tbody[id^='normalthread_']\",\n\t\t\t\"replaceE\": \".pg\",\n\t\t\t\"scrollD\": 2500\n\t\t}\n\t},\n\t\"飞客网论坛 - 帖子内\": {\n\t\t\"host\": \"www.flyert.com\",\n\t\t\"url\": \"return (fun.indexOF('/forum') || fun.indexOF('mod=viewthread','s'))\",\n\t\t\"thread\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.nxt:not([href*='javascript'])\",\n\t\t\t\"pageE\": \"#postlist>.comiis_viewbox\",\n\t\t\t\"replaceE\": \".comiis_pgs>.pg\",\n\t\t\t\"scrollD\": 3000\n\t\t}\n\t},\n\t\"CPC 中文印刷社区\": {\n\t\t\"host\": \"www.cnprint.org\",\n\t\t\"url\": \"/\\\\/forum\\\\//\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a[rel='next']\",\n\t\t\t\"pageE\": \"tbody[id*='threadbits_forum']>tr\",\n\t\t\t\"replaceE\": \".pagenav\",\n\t\t\t\"scrollD\": 2500\n\t\t}\n\t},\n\t\"CPC 中文印刷社区 - 帖子内\": {\n\t\t\"host\": \"www.cnprint.org\",\n\t\t\"url\": \"/\\\\/thread\\\\//\",\n\t\t\"thread\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a[rel='next']\",\n\t\t\t\"pageE\": \"#posts>div:not([id])\",\n\t\t\t\"replaceE\": \".pagenav\"\n\t\t}\n\t},\n\t\"中国香港社区\": {\n\t\t\"host\": \"/^.+\\\\.discuss\\\\.com\\\\.hk$/\",\n\t\t\"url\": \"return (fun.lp() == '/forumdisplay.php')\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".pagination a.next\",\n\t\t\t\"pageE\": \"tbody[id^='normalthread_']\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t}\n\t},\n\t\"中国香港论坛 - 帖子内\": {\n\t\t\"host\": \"/^.+\\\\.discuss\\\\.com\\\\.hk$/\",\n\t\t\"url\": \"return (fun.lp() == '/viewthread.php')\",\n\t\t\"thread\": true,\n\t\t\"style\": \".viewthread.mt-0:not(:first-of-type) .viewthread__head\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".pagination a.next\",\n\t\t\t\"pageE\": \".viewthread\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t}\n\t},\n\t\"CPC中文印刷社区\": {\n\t\t\"host\": \"www.cnprint.org\",\n\t\t\"url\": \"if(fun.indexOF(/^\\\\/bbs\\\\/forumdisplay\\\\.php/)){rule.blank=3;return true;}else if(fun.indexOF(/^\\\\/bbs\\\\/showthread\\\\.php/)){return true;}\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a[rel=next]\",\n\t\t\t\"pageE\": \"tbody[id^=threadbits_forum_]>tr, #posts>div[align]\",\n\t\t\t\"replaceE\": \".pagenav\"\n\t\t}\n\t},\n\t\"Mobile01 - 论坛\": {\n\t\t\"host\": \"www.mobile01.com\",\n\t\t\"url\": \"if(fun.indexOF(/^\\\\/topicdetail\\\\.php/)){rule.thread=true;return true;}else if(fun.indexOF(/^\\\\/forumtopic\\\\.php/)){rule.blank=3;return true;}\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".l-pagination__page.is-active+li>a\",\n\t\t\t\"pageE\": \".l-listTable__tbody>.l-listTable__tr,.l-articlePage:not(:nth-child(2))\",\n\t\t\t\"replaceE\": \".l-pagination\"\n\t\t}\n\t},\n\t\"TGFC Lifestyle\": {\n\t\t\"host\": \"bbs.tgfcer.com\",\n\t\t\"url\": \"return (fun.lp() == '/forumdisplay.php' || fun.indexOF('/forum'))\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".pages a.next\",\n\t\t\t\"pageE\": \"tbody[id^='normalthread_']\",\n\t\t\t\"replaceE\": \".pages\"\n\t\t}\n\t},\n\t\"TGFC Lifestyle - 帖子内\": {\n\t\t\"host\": \"bbs.tgfcer.com\",\n\t\t\"url\": \"return ((fun.lp() == '/viewthread.php' || fun.indexOF('/thread')))\",\n\t\t\"thread\": true,\n\t\t\"style\": \".viewthread:not(:first-of-type) h1\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".pages a.next\",\n\t\t\t\"pageE\": \".viewthread\",\n\t\t\t\"replaceE\": \".pages\"\n\t\t}\n\t},\n\t\"archlinux - bbs\": {\n\t\t\"host\": [\"bbs.archlinux.org\",\"bbs.archlinuxcn.org\"],\n\t\t\"url\": \"/^\\\\/(viewforum|viewtopic)\\\\.php/\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a[rel=next]\",\n\t\t\t\"pageE\": \"#vf tbody>tr, .blockpost[id]\",\n\t\t\t\"replaceE\": \".pagelink\"\n\t\t}\n\t},\n\t\"archlinux - wiki\": {\n\t\t\"host\": [\"wiki.archlinux.org\",\"wiki.archlinuxcn.org\"],\n\t\t\"url\": \"/^\\\\/wzh\\\\/index\\\\.php/\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.mw-nextlink\",\n\t\t\t\"pageE\": \".mw-search-result\",\n\t\t\t\"replaceE\": \".mw-pager-navigation-bar\"\n\t\t}\n\t},\n\t\"archlinux - aur\": {\n\t\t\"host\": [\"archlinux.org\",\"aur.archlinux.org\"],\n\t\t\"url\": \"/^\\\\/packages/\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".next>a,span.page+a.page\",\n\t\t\t\"pageE\": \"#pkglist-results tbody>tr\",\n\t\t\t\"replaceE\": \".pkglist-nav\"\n\t\t}\n\t},\n\t\"北+\": {\n\t\t\"host\": [\"/^((www|bbs)\\\\.)?(soul|snow|south|spring|summer|north|white|level|east)-plus\\\\.(net|org)$/\",\"bbs.imoutolove.me\"],\n\t\t\"url\": \"return (fun.lp() == '/thread.php' || fun.lp() == '/search.php')\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//div[@class='pages']/ul/li[./b]/following-sibling::li[1][not(@class)]/a[not(text()='»')]\",\n\t\t\t\"pageE\": \"tr.tr3\",\n\t\t\t\"replaceE\": \".pages\"\n\t\t}\n\t},\n\t\"北+ - 图墙\": {\n\t\t\"host\": [\"/^((www|bbs)\\\\.)?(soul|snow|south|spring|summer|north|white|level|east)-plus\\\\.(net|org)$/\",\"bbs.imoutolove.me\"],\n\t\t\"url\": \"return (fun.lp() == '/thread_new.php')\",\n\t\t\"style\": \"img.lazy {display: inline !important;}\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//div[@class='pages']/ul/li[./b]/following-sibling::li[1][not(@class)]/a[not(text()='»')]\",\n\t\t\t\"pageE\": \"li.dcsns-li\",\n\t\t\t\"replaceE\": \".pages\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE)\"\n\t\t}\n\t},\n\t\"北+ - 帖子内\": {\n\t\t\"host\": [\"/^((www|bbs)\\\\.)?(soul|snow|south|spring|summer|north|white|level|east)-plus\\\\.(net|org)$/\",\"bbs.imoutolove.me\"],\n\t\t\"url\": \"return (fun.lp() == '/read.php')\",\n\t\t\"thread\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//div[@class='pages']/ul/li[./b]/following-sibling::li[1][not(@class)]/a[not(text()='»')]\",\n\t\t\t\"pageE\": \"form[name=delatc]>*:not(input)\",\n\t\t\t\"replaceE\": \".pages\"\n\t\t}\n\t},\n\t\"北+ - 用户页\": {\n\t\t\"host\": [\"/^((www|bbs)\\\\.)?(soul|snow|south|spring|summer|north|white|level|east)-plus\\\\.(net|org)$/\",\"bbs.imoutolove.me\"],\n\t\t\"url\": \"return (fun.lp() == '/u.php' && (fun.indexOF('action-topic-','s') || fun.indexOF('action-post-','s')))\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//div[@class='pages']/ul/li[./b]/following-sibling::li[1][not(@class)]/a[not(text()='»')]\",\n\t\t\t\"pageE\": \"#u-contentmain table tr\",\n\t\t\t\"replaceE\": \".pages\"\n\t\t}\n\t},\n\t\"纯美苹果园\": {\n\t\t\"host\": \"www.goddessfantasy.net\",\n\t\t\"url\": \"return (fun.indexOF('board=','s'))\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//div[contains(@class,'pagelinks')]/a[@class='navPages' and text()='»']\",\n\t\t\t\"pageE\": \".table_grid>tbody>tr\",\n\t\t\t\"replaceE\": \".pagelinks\"\n\t\t}\n\t},\n\t\"纯美苹果园 - 帖子内\": {\n\t\t\"host\": \"www.goddessfantasy.net\",\n\t\t\"url\": \"return (fun.indexOF('topic=','s'))\",\n\t\t\"thread\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//div[contains(@class,'pagelinks')]/a[@class='navPages' and text()='»']\",\n\t\t\t\"pageE\": \"#quickModForm>*\",\n\t\t\t\"replaceE\": \".pagelinks\"\n\t\t}\n\t},\n\t\"A 岛 - 手机版 - 帖子列表\": {\n\t\t\"host\": [\"adnmb3.com\",\"www.tnmb.org\",\"nimingban.xyz\",\"nimingban.org\",\"www.nmbxd.com\",\"www.nmbxd1.com\"],\n\t\t\"url\": \"/\\\\/(m|Mobile)\\\\/(f|timeline)\\\\//\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//li[contains(@class,'pagination-next')]//a[text()='下一页']\",\n\t\t\t\"pageE\": \".h-middle>div[id^='threads_'],.h-middle>hr.h-middle>div[id^='threads_'],.h-middle>hr:nth-of-type(n+2),script[src$='/h.mobile.js']\",\n\t\t\t\"insertP\": [\"#h-threads-pagination\",1],\n\t\t\t\"replaceE\": \"#h-threads-pagination\",\n\t\t\t\"scriptT\": 2\n\t\t}\n\t},\n\t\"A 岛 - 手机版 - 帖子内\": {\n\t\t\"host\": [\"adnmb3.com\",\"www.tnmb.org\",\"nimingban.xyz\",\"nimingban.org\",\"www.nmbxd.com\",\"www.nmbxd1.com\"],\n\t\t\"url\": \"/\\\\/m\\\\/t\\\\//\",\n\t\t\"thread\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//li[contains(@class,'pagination-next')]//a[text()='下一页']\",\n\t\t\t\"pageE\": \".h-threads-replylist>div,script[src$='/h.mobile.js']\",\n\t\t\t\"replaceE\": \"#h-threads-pagination\",\n\t\t\t\"scriptT\": 2\n\t\t}\n\t},\n\t\"A 岛\": {\n\t\t\"host\": [\"adnmb3.com\",\"www.tnmb.org\",\"nimingban.xyz\",\"nimingban.org\",\"www.nmbxd.com\",\"www.nmbxd1.com\"],\n\t\t\"url\": \"/\\\\/(f|Forum)\\\\//\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//ul[contains(@class,'pagination')]//a[text()='下一页']\",\n\t\t\t\"pageE\": \".h-threads-list>*,script[src$='/h.desktop.js']\",\n\t\t\t\"replaceE\": \"//ul[contains(@class,'pagination')]\",\n\t\t\t\"scriptT\": 2\n\t\t}\n\t},\n\t\"A 岛 - 帖子内\": {\n\t\t\"host\": [\"adnmb3.com\",\"www.tnmb.org\",\"nimingban.xyz\",\"nimingban.org\",\"www.nmbxd.com\",\"www.nmbxd1.com\"],\n\t\t\"url\": \"/\\\\/t\\\\//\",\n\t\t\"thread\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//ul[contains(@class,'pagination')]//a[text()='下一页']\",\n\t\t\t\"pageE\": \".h-threads-list>.h-threads-item>.h-threads-item-replys,.h-threads-list>.h-threads-item>.h-threads-item-replies,script[src$='/h.desktop.js']\",\n\t\t\t\"replaceE\": \"//ul[contains(@class,'pagination')]\",\n\t\t\t\"scriptT\": 2\n\t\t}\n\t},\n\t\"BOG 匿名版\": {\n\t\t\"host\": \"bog.ac\",\n\t\t\"url\": \"/^\\\\/(f|t)\\\\//\",\n\t\t\"style\": \"body{position: initial !important;}\",\n\t\t\"blank\": 4,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//a[(@class='page-next' and starts-with(@href,'/f/')) or (@class='page-last' and text()='上一页' and starts-with(@href,'/t/'))]\",\n\t\t\t\"pageE\": \".item\",\n\t\t\t\"replaceE\": \".page-main\"\n\t\t}\n\t},\n\t\"4 Chan\": {\n\t\t\"host\": [\"boards.4chan.org\",\"boards.4channel.org\"],\n\t\t\"url\": \"return (!fun.indexOF('/search') && !fun.indexOF('/thread/'))\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".pagelist strong+a\",\n\t\t\t\"pageE\": \".thread,.thread+hr\",\n\t\t\t\"replaceE\": \".pagelist\"\n\t\t}\n\t},\n\t\"LowEndTalk\": {\n\t\t\"host\": \"lowendtalk.com\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.Next\",\n\t\t\t\"pageE\": \"ul.DataList>li\",\n\t\t\t\"replaceE\": \".Pager\"\n\t\t}\n\t},\n\t\"盘友社区 - 帖子内\": {\n\t\t\"host\": \"www.panyoubbs.com\",\n\t\t\"url\": \"/^\\\\/thread\\\\//\",\n\t\t\"thread\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".active+li:not(.disabled)>a\",\n\t\t\t\"pageE\": \".thread-list\",\n\t\t\t\"replaceE\": \".page\"\n\t\t}\n\t},\n\t\"盘友社区\": {\n\t\t\"host\": \"www.panyoubbs.com\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".active+li:not(.disabled)>a\",\n\t\t\t\"pageE\": \".list\",\n\t\t\t\"replaceE\": \".page\"\n\t\t}\n\t},\n\t\"CADTutor/LoversLab\": {\n\t\t\"host\": [\"www.cadtutor.net\",\"www.loverslab.com\"],\n\t\t\"url\": \"/\\\\/(forum\\\\/\\\\d)|search/\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"li.ipsPagination_next:not(.ipsPagination_inactive)>a\",\n\t\t\t\"pageE\": \"ol.ipsDataList>li[data-rowid],ol.ipsStream>li\",\n\t\t\t\"replaceE\": \"ul.ipsPagination\"\n\t\t}\n\t},\n\t\"CADTutor/LoversLab - 帖子内\": {\n\t\t\"host\": [\"www.cadtutor.net\",\"www.loverslab.com\"],\n\t\t\"url\": \"/\\\\/topic\\\\//\",\n\t\t\"thread\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"li.ipsPagination_next:not(.ipsPagination_inactive)>a\",\n\t\t\t\"pageE\": \"#elPostFeed>form>*:not(input):not(div)\",\n\t\t\t\"replaceE\": \"ul.ipsPagination\"\n\t\t}\n\t},\n\t\"TheSwamp\": {\n\t\t\"host\": \"www.theswamp.org\",\n\t\t\"url\": \"/board=/\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".pagelinks>strong+a\",\n\t\t\t\"pageE\": \"#messageindex tbody>tr:not([class])\",\n\t\t\t\"replaceE\": \".pagelinks\"\n\t\t}\n\t},\n\t\"TheSwamp - 帖子内\": {\n\t\t\"host\": \"www.theswamp.org\",\n\t\t\"url\": \"/topic=/\",\n\t\t\"thread\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".pagelinks>strong+a\",\n\t\t\t\"pageE\": \"#forumposts form>*\",\n\t\t\t\"replaceE\": \".pagelinks\"\n\t\t}\n\t},\n\t\"Ventoy 论坛\": {\n\t\t\"host\": \"forums.ventoy.net\",\n\t\t\"url\": \"/^\\\\/(forumdisplay|search)\\\\.php/\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".pagination_next\",\n\t\t\t\"pageE\": \".tborder>tbody>tr.inline_row\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t}\n\t},\n\t\"Ventoy 论坛 - 帖子内\": {\n\t\t\"host\": \"forums.ventoy.net\",\n\t\t\"url\": \"/^\\\\/showthread\\\\.php/\",\n\t\t\"thread\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".pagination:not(#breadcrumb_multipage_popup) .pagination_next\",\n\t\t\t\"pageE\": \"#posts>*\",\n\t\t\t\"replaceE\": \".pagination:not(#breadcrumb_multipage_popup)\"\n\t\t}\n\t},\n\t\"ptt.cc\": {\n\t\t\"host\": \"www.ptt.cc\",\n\t\t\"url\": \"/^\\\\/bbs\\\\/.+\\\\/index/\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//a[@class='btn wide'][contains(text(),'‹')]\",\n\t\t\t\"pageE\": \".r-ent\",\n\t\t\t\"replaceE\": \".btn-group-paging\"\n\t\t}\n\t},\n\t\"Microsoft Community - 帖子内\": {\n\t\t\"host\": \"answers.microsoft.com\",\n\t\t\"url\": \"/\\\\/forum\\\\/all\\\\//\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"js; return fun.getNextEP('.pageNumberLayout.selectedPageNumber+span.pageNumberLayout>a','page=',/page=\\\\d+/)\",\n\t\t\t\"pageE\": \".thread-message\",\n\t\t\t\"replaceE\": \".pagingControl\"\n\t\t}\n\t},\n\t\"nodeseek\": {\n\t\t\"host\": [\"www.nodeseek.com\",\"www.deepflood.com\"],\n\t\t\"url\": \"return fun.isPager()\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.pager-next\",\n\t\t\t\"pageE\": \"li.post-list-item,li.content-item\",\n\t\t\t\"replaceE\": \".nsk-pager\"\n\t\t}\n\t},\n\t\"Pixiv - 分类页\": {\n\t\t\"host\": \"www.pixiv.net\",\n\t\t\"url\": \"fun.isUrlC(); if (fun.isMobile()) {return false}; if (fun.lp() == '/') {fun.blank();} else if (fun.indexOF('/tags/')) {return true;} else if (fun.indexOF('/artworks/')) {setTimeout(()=>{fun.getXpath('//button[contains(string(),\\\"查看全部\\\") or contains(string(),\\\"See all\\\") or contains(string(),\\\"すべて見る\\\") or contains(string(),\\\"모두 보기\\\")]').click();},3000)}\",\n\t\t\"style\": \"ul[class*='-1 ']>li {display: inline !important;} #root{margin-bottom: -175px;} ul>li>button[class^='sc-'],a[href^='/premium/lead/lp'] {display: none !important;}\",\n\t\t\"iframe\": true,\n\t\t\"pager\": {\n\t\t\t\"type\": 5,\n\t\t\t\"nextL\": \"a[aria-disabled='false'][class*='filterProps-Styled-Component'][href]:last-child\"\n\t\t}\n\t},\n\t\"Pixiv - 用户作品页\": {\n\t\t\"host\": \"www.pixiv.net\",\n\t\t\"url\": \"if (fun.isMobile()) {return false}; return (fun.indexOF('/users/') && fun.indexOF(/\\\\/(artworks|illustrations|manga)/))\",\n\t\t\"iframe\": true,\n\t\t\"style\": \"ul[class*='-1 ']>li {display: inline !important;} #root{margin-bottom: -125px;} ul>li>button[class^='sc-'][style='background-color: rgb(0,0,0);'],a[href^='/premium/lead/lp'] {display: none !important;}\",\n\t\t\"pager\": {\n\t\t\t\"type\": 5,\n\t\t\t\"nextL\": \"a[aria-disabled='false'][class*='filterProps-Styled-Component'][href]:last-child\"\n\t\t}\n\t},\n\t\"Pixiv - 手机版 - 分类页\": {\n\t\t\"host\": \"www.pixiv.net\",\n\t\t\"url\": \"if (!fun.isMobile()) {return false}; if (fun.indexOF('/tags/')) {if (self != top) {fun.insStyle('.search-header {display: none !important;}')}; return true;} else if (fun.indexOF('/artworks/')) {setTimeout(()=>{fun.getCSS('.work-details-thumb-buttons>.button-link').click();},3000)}\",\n\t\t\"style\": \".banner-ad-footer-scale,footer\",\n\t\t\"iframe\": true,\n\t\t\"pager\": {\n\t\t\t\"type\": 5,\n\t\t\t\"nextL\": \"a.next\"\n\t\t}\n\t},\n\t\"Pixiv - 手机版 - 用户作品页\": {\n\t\t\"host\": \"www.pixiv.net\",\n\t\t\"url\": \"if (!fun.isMobile()) {return false}; if (fun.indexOF('/users/') && fun.indexOF(/\\\\/(artworks|illustrations|manga)/)) {if (self != top) {fun.insStyle('.masthead.cover-bg,.user-details {display: none !important;}')}; return true}\",\n\t\t\"style\": \".banner-ad-footer-scale,footer {display: none !important;} .user-details {margin-top: 0 !important;}\",\n\t\t\"iframe\": true,\n\t\t\"pager\": {\n\t\t\t\"type\": 5,\n\t\t\t\"nextL\": \"a.next\"\n\t\t}\n\t},\n\t\"Vilipix\": {\n\t\t\"host\": \"www.vilipix.com\",\n\t\t\"url\": \"fun.isUrlC(); if (fun.lp() == '/') {fun.blank();} else if (fun.indexOF(/\\\\/(tags|user|new|ranking)/)) {return true;}\",\n\t\t\"blank\": 2,\n\t\t\"pager\": {\n\t\t\t\"type\": 6,\n\t\t\t\"nextL\": \"js; let next = fun.getCSS('li.number.active+li.number'); if (next) return (location.origin + location.pathname + '?p=' + next.textContent)\",\n\t\t\t\"pageE\": \"ul.illust-content>li\",\n\t\t\t\"replaceE\": \"ul.el-pager\",\n\t\t\t\"loadTime\": 800\n\t\t}\n\t},\n\t\"Pixivision\": {\n\t\t\"host\": \"www.pixivision.net\",\n\t\t\"url\": \"return (!fun.indexOF('/a/'))\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.next\",\n\t\t\t\"pageE\": \"li.article-card-container\",\n\t\t\t\"replaceE\": \"._pager\"\n\t\t}\n\t},\n\t\"Buhitter\": {\n\t\t\"host\": \"buhitter.com\",\n\t\t\"url\": \"/^\\\\/(category|search)/\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".page-item.disabled+li>a\",\n\t\t\t\"pageE\": \"#tweets-area>div\",\n\t\t\t\"replaceE\": \".pagination\",\n\t\t\t\"scrollD\": 2500\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE)\"\n\t\t}\n\t},\n\t\"站酷 - 首页推荐\": {\n\t\t\"host\": \"www.zcool.com.cn\",\n\t\t\"url\": \"return (fun.lp() == '/' || fun.lp() == '/home' || fun.lp() == '/focus')\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.laypage_next\",\n\t\t\t\"pageE\": \".card-box\",\n\t\t\t\"replaceE\": \".pageturning\"\n\t\t}\n\t},\n\t\"古田路9号\": {\n\t\t\"host\": \"www.gtn9.com\",\n\t\t\"url\": \"/^\\\\/(index|work_list|activity_list|perspectives_list)\\\\.aspx/\",\n\t\t\"style\": \".collects {display: block;}\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".tcdPageCode>span.current+a.tcdNumber\",\n\t\t\t\"pageE\": \".content_list_box\",\n\t\t\t\"replaceE\": \".tcdPageCode\"\n\t\t}\n\t},\n\t\"古田路9号 - 搜索页\": {\n\t\t\"host\": \"www.gtn9.com\",\n\t\t\"url\": \"/^\\\\/search_list\\\\.aspx/\",\n\t\t\"style\": \".collects {display: block;}\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".tcdPageCode>span.current+a.tcdNumber\",\n\t\t\t\"pageE\": \"//div[@class='content_list_box'] | //body/script[contains(text(),'function loadcount()')]\",\n\t\t\t\"replaceE\": \".tcdPageCode\",\n\t\t\t\"scriptT\": 2\n\t\t},\n\t\t\"function\": {\n\t\t\t\"aF\": \"document.body.appendChild(document.createElement('script')).textContent = 'loadcount()'\"\n\t\t}\n\t},\n\t\"古田路9号 - 毕设展\": {\n\t\t\"host\": \"www.gtn9.com\",\n\t\t\"url\": \"/^\\\\/exhibition_list_new\\\\.aspx/\",\n\t\t\"style\": \".collects {display: block;}\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".tcdPageCode>span.current+a.tcdNumber\",\n\t\t\t\"pageE\": \".activityBox >*\",\n\t\t\t\"replaceE\": \".tcdPageCode\",\n\t\t\t\"scriptT\": 2\n\t\t}\n\t},\n\t\"古田路9号 - 毕设展2\": {\n\t\t\"host\": \"www.gtn9.com\",\n\t\t\"url\": \"/^\\\\/exhibition_list\\\\.aspx/\",\n\t\t\"style\": \".collectss {display: block;} .list_tan_box {display: none !important;}\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".tcdPageCode>span.current+a.tcdNumber\",\n\t\t\t\"pageE\": \".content_lists_box\",\n\t\t\t\"replaceE\": \".tcdPageCode\"\n\t\t}\n\t},\n\t\"NEWCGER\": {\n\t\t\"host\": \"www.newcger.com\",\n\t\t\"url\": \"return fun.isPager('r')\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.current+a\",\n\t\t\t\"pageE\": \".imageTextItem>li\",\n\t\t\t\"replaceE\": \".pageNav\"\n\t\t}\n\t},\n\t\"图怪兽\": {\n\t\t\"host\": \"818ps.com\",\n\t\t\"url\": \"/^\\\\/search\\\\//\",\n\t\t\"style\": \".footer>div {background-color: #fff !important;}\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"li.toppage>a\",\n\t\t\t\"pageE\": \"#masonry\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE)\"\n\t\t}\n\t},\n\t\"千图网\": {\n\t\t\"host\": \"www.58pic.com\",\n\t\t\"url\": \"/\\\\/(c|tupian|piccate|pmulti|scene)\\\\//\",\n\t\t\"style\": \".qtw-card.place-box,.card-lazy,.is-line .is-back,.qtd-next-card,.login-model,.login-tip-page,.login-tip-header {display: none !important;} .pic-container.qtd-card-line-container>.qtd-card,.pic-container.qtd-card-mansory-container>.qtd-card {width: 316px;height: 428px;} .search-page-container {position: initial !important;}\",\n\t\t\"pager\": {\n\t\t\t\"type\": 3,\n\t\t\t\"nextL\": \"//div[contains(@class,'page-box')]//a[text()='下一页']\",\n\t\t\t\"pageE\": \".qtd-card-container>.qtd-card[data-id],.pic-container>.active,.pic-container>.qtd-card[data-id],.card-grid-box.is-new:not(.favorites-box)>div,.list-box>div\",\n\t\t\t\"replaceE\": \".page-box\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE)\"\n\t\t}\n\t},\n\t\"千库网\": {\n\t\t\"host\": \"588ku.com\",\n\t\t\"style\": \".listlogin-box.listloginBox,.CLdialogV1,.editIndexEntry,.globalRSideB\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//ul[contains(@class,'page-list')]//a[text()='下一页']\",\n\t\t\t\"pageE\": \".data-box .dataList,.data-box .data-list\",\n\t\t\t\"insertP\": [\".data-box .dataList,.data-box .data-list\",3],\n\t\t\t\"replaceE\": \"ul.page-list\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE)\"\n\t\t}\n\t},\n\t\"昵图网\": {\n\t\t\"host\": [\"www.nipic.com\",\"soso.nipic.com\"],\n\t\t\"url\": \"return fun.isPager()\",\n\t\t\"style\": \"li.search-works-item,a.search-works-nextpage\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".common-page-box>.page-num-on+a,.seo-page>.seo-page-on+a\",\n\t\t\t\"pageE\": \"#img-list-outer>li.new-search-works-item,li.new-works-box\",\n\t\t\t\"replaceE\": \".common-page-box,.seo-page\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE)\"\n\t\t}\n\t},\n\t\"摄图网\": {\n\t\t\"host\": [\"699pic.com\",\"xsj.699pic.com\"],\n\t\t\"url\": \"return fun.isPager('r')\",\n\t\t\"style\": \".lastNavItem,.yaoxinAct-rukou\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".downPage\",\n\t\t\t\"pageE\": \".swipeboxEx>*,.search-video-wrap>.video-list>ul,ul.music-list,#all-fonts-box,.img-list>.img-list-box,.video-list-box\",\n\t\t\t\"replaceE\": \".pagelist\",\n\t\t\t\"scriptT\": 2\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"pageE.forEach(function (one) {if (one.className === 'list' && one.dataset.w != undefined) {one.style.width = `${one.dataset.w}px`;}}); return fun.src_bF(pageE)\"\n\t\t}\n\t},\n\t\"众图网\": {\n\t\t\"host\": \"www.ztupic.com\",\n\t\t\"url\": \"return (fun.lp() != '/' && !fun.indexOF('/sucai/'))\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"li.page-item.active+li.page-item>a[href]\",\n\t\t\t\"pageE\": \".floor_item\",\n\t\t\t\"replaceE\": \"ul.pagination\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE)\"\n\t\t}\n\t},\n\t\"我图网\": {\n\t\t\"host\": [\"www.ooopic.com\",\"so.ooopic.com\",\"weili.ooopic.com\"],\n\t\t\"url\": \"return (fun.lp() != '/' && !fun.indexOF('/weili_'))\",\n\t\t\"style\": \".overWidth.clearfix.masonry {height: auto !important;} .pic-list,.video-list {position: relative !important;float: left !important;top: auto !important;left: auto !important;}\",\n\t\t\"history\": false,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.next_page,a.so-next\",\n\t\t\t\"pageE\": \".pic-item\",\n\t\t\t\"replaceE\": \".page\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE)\"\n\t\t}\n\t},\n\t\"包图网 - 音乐页\": {\n\t\t\"host\": \"ibaotu.com\",\n\t\t\"url\": \"/\\\\/(yinxiao|peiyue)/\",\n\t\t\"style\": \".searchAdver\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.next\",\n\t\t\t\"pageE\": \"ul.media-list-ul>li[pr-data-title]\",\n\t\t\t\"replaceE\": \".pagelist\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE,[0,'img[data-url]','data-url'])\"\n\t\t}\n\t},\n\t\"包图网 - 字体页\": {\n\t\t\"host\": \"ibaotu.com\",\n\t\t\"url\": \"/\\\\/font\\\\//\",\n\t\t\"style\": \".searchAdver\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.next\",\n\t\t\t\"pageE\": \".baotufonts-list>a\",\n\t\t\t\"replaceE\": \".pagelist\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE,[0,'img[data-url]','data-url'])\"\n\t\t}\n\t},\n\t\"包图网\": {\n\t\t\"host\": \"ibaotu.com\",\n\t\t\"url\": \"return (fun.lp() != '/' && !fun.indexOF('/sucai/'))\",\n\t\t\"style\": \".searchAdver\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.next\",\n\t\t\t\"pageE\": \".pr-container[pr-data-title]:not(.searchAdver)\",\n\t\t\t\"replaceE\": \".pagelist\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE,[0,'img[data-url]','data-url'])\"\n\t\t}\n\t},\n\t\"全景酷逊素材\": {\n\t\t\"host\": [\"www.360kuxun.com\",\"png.360kuxun.com\"],\n\t\t\"url\": \"return fun.isPager()\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//a[@class='next page-numbers'] | //div[@class='pagebox']/a[text()='下一页 »']\",\n\t\t\t\"pageE\": \".card-columns\",\n\t\t\t\"replaceE\": \".pagination,.pagebox\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE)\"\n\t\t}\n\t},\n\t\"觅元素\": {\n\t\t\"host\": \"www.51yuansu.com\",\n\t\t\"url\": \"return fun.isPager()\",\n\t\t\"style\": \"li.pic-item{max-height: 330px;width: auto;} #f-content>div{position: static !important; float: left !important; width: 285px !important;}\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".nextpage\",\n\t\t\t\"pageE\": \"li.pic-item,#f-content>div\",\n\t\t\t\"replaceE\": \".pager-wrap\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE)\"\n\t\t}\n\t},\n\t\"vcg.com\": {\n\t\t\"host\": \"www.vcg.com\",\n\t\t\"url\": \"fun.isUrlC(); return fun.indexOF(/^\\\\/creative-(image|illustration)\\\\//)\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.paginationClickBox+a\",\n\t\t\t\"pageE\": \".galleryItem\",\n\t\t\t\"replaceE\": \".center_page\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE)\"\n\t\t}\n\t},\n\t\"Pixabay\": {\n\t\t\"host\": \"pixabay.com\",\n\t\t\"url\": \"/\\\\/search\\\\//\",\n\t\t\"blank\": 4,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//a[string()='›']\",\n\t\t\t\"pageE\": \".search-results>div\",\n\t\t\t\"replaceE\": \"div>.paginator\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE,[0,'img[data-lazy]','data-lazy'])\"\n\t\t}\n\t},\n\t\"Pngtree\": {\n\t\t\"host\": [\"pngtree.com\",\"zh.pngtree.com\"],\n\t\t\"url\": \"return (!fun.indexOF('/freepng/') && !fun.indexOF('/freebackground/'))\",\n\t\t\"style\": \"div[class*='-banner'],.COLLECT,.v2-footer,#v2-foot,.transform-login {display: none !important;} img[data-original] {opacity: 1 !important;}\",\n\t\t\"pager\": {\n\t\t\t\"type\": 6,\n\t\t\t\"nextL\": \".nextPage\",\n\t\t\t\"pageE\": \"//*[self::div or self::li][@data-id]/..\",\n\t\t\t\"replaceE\": \".pageCont\",\n\t\t\t\"loadTime\": 200,\n\t\t\t\"scrollD\": 5000\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE)\"\n\t\t}\n\t},\n\t\"Hippopx\": {\n\t\t\"host\": \"www.hippopx.com\",\n\t\t\"url\": \"/\\\\/(query|search)/\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".nextpage\",\n\t\t\t\"pageE\": \"#mainlist\",\n\t\t\t\"replaceE\": \".prevnext\"\n\t\t}\n\t},\n\t\"Unsplash\": {\n\t\t\"host\": \"unsplash.com\",\n\t\t\"url\": \"fun.isUrlC(); if(fun.indexOF('/s/photos/')){setTimeout((f=fun)=>{f.getXpath(\\\"//button[text()='Load more photos']\\\").click();},2000)}\"\n\t},\n\t\"图行天下\": {\n\t\t\"host\": \"www.photophoto.cn\",\n\t\t\"url\": \"return (fun.lp() != '/' && !fun.indexOF('/sucai/'))\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.last\",\n\t\t\t\"pageE\": \"#Masonry\",\n\t\t\t\"replaceE\": \"#page\"\n\t\t}\n\t},\n\t\"搜图神器\": {\n\t\t\"host\": \"www.logosc.cn\",\n\t\t\"url\": \"/\\\\/so\\\\//\",\n\t\t\"pager\": {\n\t\t\t\"type\": 2,\n\t\t\t\"nextL\": \"button.so-pablo-button\",\n\t\t\t\"interval\": 1500\n\t\t}\n\t},\n\t\"素材中国\": {\n\t\t\"host\": \"www.sccnn.com\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//ul[@class='listpage']//a[text()='>']\",\n\t\t\t\"pageE\": \"td[valign='TOP']:not([width]) tr[valign='Middle']\",\n\t\t\t\"replaceE\": \"ul.listpage\"\n\t\t}\n\t},\n\t\"素材中国 - 搜索页\": {\n\t\t\"host\": \"so.sccnn.com\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"font[color='Red']+a.F16\",\n\t\t\t\"pageE\": \"//tr[@valign='Top'][1]/preceding-sibling::tr\",\n\t\t\t\"replaceE\": \"//tr[@valign='Top'][last()]\"\n\t\t}\n\t},\n\t\"iconfont\": {\n\t\t\"host\": \"www.iconfont.cn\",\n\t\t\"url\": \"fun.isUrlC(); return (fun.indexOF(/^\\\\/(search|collections|illustrations|illustrations_3d|lotties)\\\\/index/))\",\n\t\t\"blank\": 2,\n\t\t\"style\": \".footer,header .bind-tips,.block-pagination-wrap,#magix_vf_main .block-sub-banner:not([p-id='96']),#J_block_sidebar\",\n\t\t\"iframe\": true,\n\t\t\"pager\": {\n\t\t\t\"type\": 5,\n\t\t\t\"nextL\": \"js; return fun.getNextEP('li.active+li:not(.disabled)>a','page=',/page=\\\\d+/)\",\n\t\t\t\"scrollD\": 1000\n\t\t}\n\t},\n\t\"IconArchive\": {\n\t\t\"host\": \"iconarchive.com\",\n\t\t\"url\": \"/\\\\/(tag|search|category)/\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.next\",\n\t\t\t\"pageE\": \".icondetail\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t}\n\t},\n\t\"Mixkit\": {\n\t\t\"host\": \"mixkit.co\",\n\t\t\"url\": \"/^\\\\/.+/\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.pagination__link--next\",\n\t\t\t\"pageE\": \".item-grid-item\",\n\t\t\t\"replaceE\": \".pagination__wrapper\"\n\t\t}\n\t},\n\t\"第一PPT\": {\n\t\t\"host\": \"www.1ppt.com\",\n\t\t\"url\": \"return (fun.lp() != '/' && !fun.indexOF('/article/'))\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"li.thisclass+li:not(.nohref)>a\",\n\t\t\t\"pageE\": \"ul.tplist\",\n\t\t\t\"replaceE\": \".pages\"\n\t\t}\n\t},\n\t\"普象网 - 帖子内\": {\n\t\t\"host\": \"www.puxiang.com\",\n\t\t\"url\": \"/^\\\\/forum\\\\/thread/\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"li.next>a\",\n\t\t\t\"pageE\": \".forum-post-item\",\n\t\t\t\"replaceE\": \".pagerbar\"\n\t\t}\n\t},\n\t\"普象网 - 帖子列表\": {\n\t\t\"host\": \"www.puxiang.com\",\n\t\t\"url\": \"/^\\\\/forum/\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"li.next>a\",\n\t\t\t\"pageE\": \".forum-detail-item\",\n\t\t\t\"replaceE\": \".pagerbar\"\n\t\t}\n\t},\n\t\"普象网 - 收藏夹\": {\n\t\t\"host\": \"www.puxiang.com\",\n\t\t\"url\": \"return (fun.lp() == '/search/favorite')\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"li.next>a\",\n\t\t\t\"pageE\": \".collect-list>div\",\n\t\t\t\"replaceE\": \".pagerbar\"\n\t\t}\n\t},\n\t\"普象网 - 作品集/搜索页\": {\n\t\t\"host\": \"www.puxiang.com\",\n\t\t\"url\": \"return (fun.lp() == '/' || fun.lp() == '/search/puxiang' || fun.lp() == '/list' || fun.lp() == '/galleries' || fun.lp() == '/articles')\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"li.next>a\",\n\t\t\t\"pageE\": \".work-list>div\",\n\t\t\t\"replaceE\": \".pagerbar\"\n\t\t}\n\t},\n\t\"学犀牛 - 帖子列表\": {\n\t\t\"host\": [\"www.xuexiniu.com\",\"bbs.xuexiniu.com\"],\n\t\t\"url\": \"return (fun.getCSS('body#nv_forum.pg_forumdisplay') && fun.getCSS('ul.waterfall'))\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.nxt:not([href*='javascript'])\",\n\t\t\t\"pageE\": \".waterfall>li\",\n\t\t\t\"replaceE\": \".pg\"\n\t\t}\n\t},\n\t\"学犀牛 - 帖子列表2\": {\n\t\t\"host\": [\"www.xuexiniu.com\",\"bbs.xuexiniu.com\"],\n\t\t\"url\": \"return fun.getCSS('body#nv_forum.pg_forumdisplay')\",\n\t\t\"history\": false,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.nxt:not([href^='javascript']) ,a.next:not([href^='javascript'])\",\n\t\t\t\"pageE\": \"id('threadlist')//table[./tbody[contains(@id,'normalthread_')]]/tbody[not(@id='separatorline')]\",\n\t\t\t\"replaceE\": \".pg,.pages\"\n\t\t}\n\t},\n\t\"学犀牛 - 帖子内\": {\n\t\t\"host\": [\"www.xuexiniu.com\",\"bbs.xuexiniu.com\"],\n\t\t\"url\": \"return fun.getCSS('body#nv_forum.pg_viewthread')\",\n\t\t\"thread\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.nxt:not([href*='javascript'])\",\n\t\t\t\"pageE\": \"#zhanzhuai_primary>.box\",\n\t\t\t\"replaceE\": \".pg\"\n\t\t}\n\t},\n\t\"学犀牛 - 搜索页\": {\n\t\t\"host\": \"www.xuexiniu.com\",\n\t\t\"url\": \"/\\\\/search\\\\.php/\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.nxt:not([href*='javascript'])\",\n\t\t\t\"pageE\": \".yangshi.yangshi2\",\n\t\t\t\"insertP\": [\".page\",1],\n\t\t\t\"replaceE\": \".page\"\n\t\t}\n\t},\n\t\"学犀牛 - 分类页\": {\n\t\t\"host\": \"www.xuexiniu.com\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//a[@class='page-link' and contains(text(),'下一页')]\",\n\t\t\t\"pageE\": \".row>.col-sm-6\",\n\t\t\t\"replaceE\": \"ul.pagination\"\n\t\t}\n\t},\n\t\"欧模网\": {\n\t\t\"host\": \"www.om.cn\",\n\t\t\"url\": \"/^\\\\/.+/\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"li.next>a\",\n\t\t\t\"pageE\": \".main_content>ul>li\",\n\t\t\t\"replaceE\": \"ul.pagination\"\n\t\t}\n\t},\n\t\"模匠网\": {\n\t\t\"host\": \"www.3dsmj.com\",\n\t\t\"url\": \"return fun.isPager('p')\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".active.page-item+li:not(.disabled)>a\",\n\t\t\t\"pageE\": \".content-top1>div\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE,[0,'img[data-url]','data-url'])\"\n\t\t}\n\t},\n\t\"下得乐\": {\n\t\t\"host\": [\"www.xiadele.com\",\"search.xiadele.com\"],\n\t\t\"url\": \"/^\\\\/.+/\",\n\t\t\"style\": \".last-li-carousel-img\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"li.next_page a[rel='next']\",\n\t\t\t\"pageE\": \"ul.list-page-ul>li\",\n\t\t\t\"replaceE\": \"ul.pagination\"\n\t\t}\n\t},\n\t\"酷家乐\": {\n\t\t\"host\": \"www.kujiale.cn\",\n\t\t\"url\": \"/^\\\\/decoproduct\\\\/model/\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".page-next\",\n\t\t\t\"pageE\": \".J_modelList>li\",\n\t\t\t\"replaceE\": \"#pagination\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE,[0,'img[data-url]','data-url'])\"\n\t\t}\n\t},\n\t\"建E室内设计网\": {\n\t\t\"host\": \"www.justeasy.cn\",\n\t\t\"url\": \"/\\\\/search-/\",\n\t\t\"pager\": {\n\t\t\t\"type\": 6,\n\t\t\t\"nextL\": \".pagination li.active+li>a\",\n\t\t\t\"pageE\": \"#ajax_ul_list>div,#caselist>li\",\n\t\t\t\"replaceE\": \".pagination\",\n\t\t\t\"loadTime\": 1500,\n\t\t\t\"scrollD\": 4000\n\t\t}\n\t},\n\t\"字客网\": {\n\t\t\"host\": \"www.fontke.com\",\n\t\t\"url\": \"return ((fun.indexOF('/list/') && fun.getCSS('.index-family')) || fun.indexOF('/search/'))\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".next>a\",\n\t\t\t\"pageE\": \".index-family ul:not(.page)>li:not(.head),script[src*='base.js'],.inform-list>ul>li\",\n\t\t\t\"replaceE\": \".page\",\n\t\t\t\"scriptT\": 2\n\t\t}\n\t},\n\t\"FontMeme\": {\n\t\t\"host\": \"fontmeme.com\",\n\t\t\"url\": \"/^\\\\/ziti\\\\//\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".pagingLinkSelected+.pagingLink>a\",\n\t\t\t\"pageE\": \".fontPreviewWrapper\",\n\t\t\t\"replaceE\": \".pagingWrapper\"\n\t\t}\n\t},\n\t\"魔顿\": {\n\t\t\"host\": \"www.modown.cn\",\n\t\t\"url\": \"/\\\\/category\\\\//\",\n\t\t\"pager\": {\n\t\t\t\"type\": 2,\n\t\t\t\"nextL\": \".pagination-trigger>a\"\n\t\t}\n\t},\n\t\"3DM - 分类页\": {\n\t\t\"host\": \"www.3dmgame.com\",\n\t\t\"url\": \"return fun.isPager('p')\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"li.next>a\",\n\t\t\t\"pageE\": \".Llist_b>div.lis\",\n\t\t\t\"replaceE\": \".pagewrap\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE)\"\n\t\t}\n\t},\n\t\"3DM - 游戏专区 - 分类页\": {\n\t\t\"host\": \"www.3dmgame.com\",\n\t\t\"url\": \"return fun.isPager('p')\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"li.next>a\",\n\t\t\t\"pageE\": \".newsleft>ul>li\",\n\t\t\t\"replaceE\": \".pagewrap\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE)\"\n\t\t}\n\t},\n\t\"3DM - 游戏专区 - 资源页\": {\n\t\t\"host\": \"www.3dmgame.com\",\n\t\t\"url\": \"return fun.indexOF('/resource')\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"li.next>a\",\n\t\t\t\"pageE\": \".item>ul\",\n\t\t\t\"insertP\": [\".item>ul:last-child\",1],\n\t\t\t\"replaceE\": \".pagewrap\"\n\t\t}\n\t},\n\t\"3DM\": {\n\t\t\"host\": \"www.3dmgame.com\",\n\t\t\"pager\": {\n\t\t\t\"type\": 3,\n\t\t\t\"nextL\": \"li.next>a\",\n\t\t\t\"pageE\": \".news_warp_center>*,script[src*='common.js']\",\n\t\t\t\"replaceE\": \".pagewrap\",\n\t\t\t\"scrollE\": \".pagewrap\",\n\t\t\t\"scriptT\": 2,\n\t\t\t\"scrollD\": 500\n\t\t}\n\t},\n\t\"3DM MOD站\": {\n\t\t\"host\": \"mod.3dmgame.com\",\n\t\t\"history\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"js; return fun.getNextEP('//li[@class=\\\"page-list active\\\"]/following-sibling::li[contains(@class,\\\"page-list\\\")]/a','Page=',/Page=\\\\d+/)\",\n\t\t\t\"pageE\": \"//div[contains(@class,'game-mod-list') or contains(@class,'search-mod-list')] | //script[not(@src or @type)][contains(text(),'.game-mod-page') or contains(text(),'.search-mod-page')]\",\n\t\t\t\"scriptT\": 2\n\t\t}\n\t},\n\t\"3DM - 搜索\": {\n\t\t\"host\": \"so.3dmgame.com\",\n\t\t\"url\": \"/keyword=/\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"span.curr+a\",\n\t\t\t\"pageE\": \".search_lis,.search_wrap>script[src='/p/js/pager.min.js'],.search_wrap>script:not([src])\",\n\t\t\t\"scriptT\": 2\n\t\t},\n\t\t\"function\": {\n\t\t\t\"aF\": \"setTimeout(function(f=fun){document.body.appendChild(document.createElement('script')).textContent = f.getXpath('//body/script[contains(text(),\\\"kkpager\\\")][last()]').textContent},500)\"\n\t\t}\n\t},\n\t\"游侠网\": {\n\t\t\"host\": \"www.ali213.net\",\n\t\t\"url\": \"return fun.isPager('n')\",\n\t\t\"pager\": {\n\t\t\t\"type\": 3,\n\t\t\t\"nextL\": \"#after_this_page\",\n\t\t\t\"pageE\": \"#Content >*:not(.news_ding):not(.page_fenye)\",\n\t\t\t\"insertP\": [\".page_fenye\",1],\n\t\t\t\"replaceE\": \".page_fenye\",\n\t\t\t\"scrollE\": \".page_fenye\",\n\t\t\t\"scriptT\": 2,\n\t\t\t\"scrollD\": 100\n\t\t}\n\t},\n\t\"游侠网 - 分类页 - 大侠号\": {\n\t\t\"host\": \"www.ali213.net\",\n\t\t\"url\": \"/^\\\\/news\\\\/zl\\\\//\",\n\t\t\"pager\": {\n\t\t\t\"type\": 2,\n\t\t\t\"nextL\": \".load-more:not([style*='none'])\"\n\t\t}\n\t},\n\t\"游侠网 - 分类页\": {\n\t\t\"host\": \"www.ali213.net\",\n\t\t\"url\": \"/^\\\\/news/\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.p_curpage+a:not(.p_redirect)\",\n\t\t\t\"pageE\": \".n_lone,.list-body-news-item\",\n\t\t\t\"replaceE\": \".p_bar\"\n\t\t}\n\t},\n\t\"游侠网 - 专题列表\": {\n\t\t\"host\": \"www.ali213.net\",\n\t\t\"url\": \"/^\\\\/zt\\\\//\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".down_gametool_con1>a.active+a\",\n\t\t\t\"pageE\": \".list\",\n\t\t\t\"replaceE\": \".down_gametool_con1\",\n\t\t\t\"scrollD\": 700\n\t\t}\n\t},\n\t\"游侠网 - 下载页\": {\n\t\t\"host\": \"down.ali213.net\",\n\t\t\"url\": \"return fun.isPager('p')\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.page-next\",\n\t\t\t\"pageE\": \".famous-ul>.famous-li\",\n\t\t\t\"replaceE\": \".page-container\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE)\"\n\t\t}\n\t},\n\t\"游侠网 - 攻略页\": {\n\t\t\"host\": \"gl.ali213.net\",\n\t\t\"style\": \".n_show_b,a.morezjjump\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"type\": 3,\n\t\t\t\"nextL\": \"a.active.n+a:not(.next)\",\n\t\t\t\"pageE\": \".c-detail>*\",\n\t\t\t\"replaceE\": \".page_fenye\",\n\t\t\t\"scrollE\": \".page_fenye\",\n\t\t\t\"scrollD\": 300\n\t\t}\n\t},\n\t\"游侠网 - 图库\": {\n\t\t\"host\": \"pic.ali213.net\",\n\t\t\"style\": \"a.prev,a.next\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.next\",\n\t\t\t\"pageE\": \"#image-show>img\",\n\t\t\t\"replaceE\": \"#image-show>a\"\n\t\t}\n\t},\n\t\"游民星空\": {\n\t\t\"host\": \"www.gamersky.com\",\n\t\t\"url\": \"/^\\\\/(zl|ent|news|handbook|hardware)\\\\/.+\\\\.shtml/\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"type\": 3,\n\t\t\t\"nextL\": \"//div[@class='page_css']/a[text()='下一页']\",\n\t\t\t\"pageE\": \".Mid2L_con>*:not(.gs_nc_editor):not(.pagecss):not(.page_css):not(.gs_ccs_solve):not(.post_ding)\",\n\t\t\t\"insertP\": [\".Mid2L_con>.pagecss,.Mid2L_con>.page_css\",1],\n\t\t\t\"replaceE\": \".page_css\",\n\t\t\t\"scrollE\": \".page_css\",\n\t\t\t\"forceHTTPS\": true,\n\t\t\t\"scrollD\": 200\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"pageE.forEach(function (one) {if (one.tagName === 'P' && one.textContent.indexOf('更多相关') > -1) {one.style.display = 'none';}}); return fun.src_bF(pageE)\"\n\t\t}\n\t},\n\t\"游研社\": {\n\t\t\"host\": \"www.yystv.cn\",\n\t\t\"url\": \"fun.isPager('p')\",\n\t\t\"pager\": {\n\t\t\t\"type\": 6,\n\t\t\t\"nextL\": \"js; return fun.getNextEP('.cur-page+li','page=',/page=\\\\d+/)\",\n\t\t\t\"pageE\": \"ul.list-container>li\",\n\t\t\t\"replaceE\": \".page-num-list\",\n\t\t\t\"loadTime\": 300\n\t\t}\n\t},\n\t\"机核 GCORES\": {\n\t\t\"host\": \"www.gcores.com\",\n\t\t\"url\": \"fun.isUrlC(); fun.getAllCSS('.navLayout_side,.gtabs,.loadingPlaceholder>.row').forEach(function (o) {o.innerHTML = o.innerHTML;}); return (fun.lp() != '/' && (fun.indexOF('/collections/') || !fun.indexOF(/\\\\/\\\\d+$/)))\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"li.pagination_item.is_active+li>a,li.pagination_item.active+li>a\",\n\t\t\t\"pageE\": \".loadingPlaceholder>.row>div\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t}\n\t},\n\t\"机游网\": {\n\t\t\"host\": \"pcgamexiazai.com\",\n\t\t\"url\": \"/^\\\\/games/\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"li.active+li>a\",\n\t\t\t\"pageE\": \".game-box>li\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t}\n\t},\n\t\"modland\": {\n\t\t\"host\": \"www.modland.net\",\n\t\t\"url\": \"return fun.isPager()\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"li.active.page-item+li>a\",\n\t\t\t\"pageE\": \".mods>.post\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t}\n\t},\n\t\"Modrinth\": {\n\t\t\"host\": \"modrinth.com\",\n\t\t\"url\": \"fun.isUrlC(); return (fun.lp() == '/mods')\",\n\t\t\"blank\": 4,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"js; let n = fun.getCSS('.page-number-container:not(.page-number)+.page-number-container>a'),m = fun.getSearch('m')||'20'; if (n && n.innerText){return fun.getNextSP((parseInt(n.innerText)-1)*parseInt(m),'o=',/o=\\\\d+/);}\",\n\t\t\t\"pageE\": \"article.project-card\",\n\t\t\t\"replaceE\": \".paginates\"\n\t\t}\n\t},\n\t\"SpigotMC\": {\n\t\t\"host\": \"www.spigotmc.org\",\n\t\t\"url\": \"/\\\\/resources\\\\/(categories|authors)?/\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//a[@class='text' and contains(text(),'>')]\",\n\t\t\t\"pageE\": \"li.resourceListItem\",\n\t\t\t\"replaceE\": \".PageNav\"\n\t\t}\n\t},\n\t\"MCMOD.cn\": {\n\t\t\"host\": [\"www.mcmod.cn\",\"search.mcmod.cn\"],\n\t\t\"url\": \"/^\\\\/((modlist|worldgen|verify|history)\\\\.html|s)/\",\n\t\t\"style\": \"[data-name='worldgen-list']+.common-comment-block\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".page-item.active+.page-item>a\",\n\t\t\t\"pageE\": \".modlist-list-frame>.modlist-block,.worldgen-list,.verify-list-list-table>tbody>tr,.history-list-frame,.search-result-list\",\n\t\t\t\"replaceE\": \".pagination:not([data-name='comment-list'])\"\n\t\t}\n\t},\n\t\"CurseForge\": {\n\t\t\"host\": \"www.curseforge.com\",\n\t\t\"url\": \"return fun.isPager()\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".btn-next\",\n\t\t\t\"pageE\": \".results-container>div\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t}\n\t},\n\t\"CurseForge - legacy\": {\n\t\t\"host\": \"legacy.curseforge.com\",\n\t\t\"url\": \"return fun.isPager()\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".pagination-next>a\",\n\t\t\t\"pageE\": \"div.my-2\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t}\n\t},\n\t\"Planet Minecraft\": {\n\t\t\"host\": \"www.planetminecraft.com\",\n\t\t\"url\": \"return (!fun.indexOF('/forums/') && !fun.indexOF('/posts/'))\",\n\t\t\"style\": \".resource .r-preview>a img[loading=lazy]:not(.lazyloaded) {visibility: initial !important;}\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.pagination_next\",\n\t\t\t\"pageE\": \".resource_block>ul.resource_list>li\",\n\t\t\t\"replaceE\": \".pagination\",\n\t\t\t\"scrollD\": 3000\n\t\t}\n\t},\n\t\"异星工厂 Mod\": {\n\t\t\"host\": \"mods.factorio.com\",\n\t\t\"url\": \"return (!fun.indexOF(/^\\\\/mod\\\\//))\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.active+a:not(.disabled)\",\n\t\t\t\"pageE\": \".mod-list\",\n\t\t\t\"replaceE\": \"//a[contains(@class,'active')]/..\"\n\t\t}\n\t},\n\t\"Steam 创意工坊 - 项目列表\": {\n\t\t\"host\": \"steamcommunity.com\",\n\t\t\"url\": \"return (fun.indexOF('/workshop/browse') || fun.indexOF('/myworkshopfiles/'))\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//a[@class='pagebtn' and text()='>']\",\n\t\t\t\"pageE\": \".workshopBrowseItems>*,.workshopItemSubscription,.workshopItemSubscription+script\",\n\t\t\t\"replaceE\": \".workshopBrowsePaging,.workshopBrowsePagingWithBG\",\n\t\t\t\"scriptT\": 2\n\t\t}\n\t},\n\t\"Steam 社区 - 活动评论\": {\n\t\t\"host\": \"steamcommunity.com\",\n\t\t\"url\": \"return (fun.indexOF(/eventcomments\\\\/\\\\d/))\",\n\t\t\"style\": \".forum_paging_controls\",\n\t\t\"history\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"js; return fun.getNextUP('ctp=',/ctp=\\\\d+/,location.pathname,'2',fun.getCSS('span.commentthread_pagelinks>a:last-child').textContent)\",\n\t\t\t\"pageE\": \".commentthread_comments>.commentthread_comment\",\n\t\t\t\"replaceE\": \".forum_paging .forum_paging_summary\",\n\t\t\t\"scriptT\": 1\n\t\t}\n\t},\n\t\"小霸王其乐无穷\": {\n\t\t\"host\": \"www.yikm.net\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//ul[@class='pager']//a[text()='下一页']\",\n\t\t\t\"pageE\": \"//h2[contains(text(),'所有游戏') or contains(text(),'搜索结果')]/following-sibling::div[1]/div\",\n\t\t\t\"replaceE\": \"ul.pager\"\n\t\t}\n\t},\n\t\"Switch520\": {\n\t\t\"host\": \"xxxxx520.com\",\n\t\t\"url\": \"return (!fun.indexOF('.html'))\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.next\",\n\t\t\t\"pageE\": \".row.posts-wrapper>div\",\n\t\t\t\"replaceE\": \"ul.page-numbers\"\n\t\t}\n\t},\n\t\"4K 游戏网\": {\n\t\t\"host\": \"4k-w.com\",\n\t\t\"url\": \"return (fun.indexOF('/game/') || fun.indexOF('s=','s'))\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.selected.disabled+a\",\n\t\t\t\"pageE\": \"#post-list\",\n\t\t\t\"replaceE\": \".ajax-pager\"\n\t\t}\n\t},\n\t\"koyso\": {\n\t\t\"host\": \"koyso.to\",\n\t\t\"url\": \"return fun.isPager()\",\n\t\t\"style\": \".skeleton\",\n\t\t\"blank\": 4,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"js; return fun.getNextEP('.page_num[style]+a.page_num','page=',/page=\\\\d+/)\",\n\t\t\t\"pageE\": \".games_content\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE)\"\n\t\t}\n\t},\n\t\"cs.rin.ru - 帖子列表\": {\n\t\t\"host\": \"cs.rin.ru\",\n\t\t\"url\": \"return (fun.lp() == '/forum/viewforum.php')\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"#pagecontent .gensmall[align='right'] strong~a\",\n\t\t\t\"pageE\": \"#pagecontent>table.tablebg>tbody>tr:not([align])\",\n\t\t\t\"replaceE\": \"#pagecontent .gensmall[align='right']\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"for (let i = 0; i < pageE.length; i++) {if (pageE[i].textContent.replace(/\\\\n|\\\\t/g,'') === 'Topics') {pageE.splice(0,i+1); break;}}; return pageE;\"\n\t\t}\n\t},\n\t\"cs.rin.ru - 帖子内\": {\n\t\t\"host\": \"cs.rin.ru\",\n\t\t\"url\": \"return (fun.lp() == '/forum/viewtopic.php')\",\n\t\t\"thread\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"#pageheader .gensmall strong~a\",\n\t\t\t\"pageE\": \"#pagecontent>table.tablebg:not(:nth-last-child(2)):not(:nth-child(2))\",\n\t\t\t\"replaceE\": \"#pagecontent >table:not(.tablebg),#pageheader p.gensmall\"\n\t\t}\n\t},\n\t\"cs.rin.ru - 搜索页\": {\n\t\t\"host\": \"cs.rin.ru\",\n\t\t\"url\": \"return (fun.lp() == '/forum/search.php')\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"#wrapcentre>.nav strong~a\",\n\t\t\t\"pageE\": \"#wrapcentre>form>table.tablebg>tbody>tr[class^='row'],#wrapcentre>form>table.tablebg>tbody>tr[valign]\",\n\t\t\t\"replaceE\": \"#wrapcentre>div\"\n\t\t}\n\t},\n\t\"Nexus-Games\": {\n\t\t\"host\": \"nexus-games.net\",\n\t\t\"url\": \"return fun.isPager()\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".next>a\",\n\t\t\t\"pageE\": \".game-list>.game\",\n\t\t\t\"replaceE\": \".post-pagination\"\n\t\t}\n\t},\n\t\"RuTracker / Pornolab - 帖子列表\": {\n\t\t\"host\": [\"rutracker.org\",\"rutracker.net\",\"pornolab.net\"],\n\t\t\"url\": \"/(viewforum|tracker)\\\\.php/\",\n\t\t\"blank\": 4,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"#pagination b~a.pg,.nav b~a.pg\",\n\t\t\t\"pageE\": \"tr[id^='tr-'],tr[id^='trs-']\",\n\t\t\t\"replaceE\": \"#pagination,.bottom_info>.nav\"\n\t\t}\n\t},\n\t\"RuTracker / Pornolab - 帖子内\": {\n\t\t\"host\": [\"rutracker.org\",\"rutracker.net\",\"pornolab.net\"],\n\t\t\"url\": \"/viewtopic\\\\.php/\",\n\t\t\"thread\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"#pagination b~a.pg\",\n\t\t\t\"pageE\": \"tbody[id^='post_']\",\n\t\t\t\"replaceE\": \"#pagination\"\n\t\t}\n\t},\n\t\"RuTrackerIN - 帖子列表\": {\n\t\t\"host\": \"rutracker.in\",\n\t\t\"url\": \"/viewforum\\\\.php/\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".gensmall[align='right'] strong~a\",\n\t\t\t\"pageE\": \"//table[@class='tablebg']/tbody/tr[./td[@class='row1']]\",\n\t\t\t\"replaceE\": \".gensmall[align='right']\"\n\t\t}\n\t},\n\t\"byrut.org\": {\n\t\t\"host\": \"byrut.org\",\n\t\t\"url\": \"return !fun.isTitle('Поиск по сайту')\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//span[@class='pnext']/..\",\n\t\t\t\"pageE\": \".short_item,.comments-tree-item\",\n\t\t\t\"replaceE\": \".bottom-page\"\n\t\t}\n\t},\n\t\"byrutgame\": {\n\t\t\"host\": \"byrutgame.org\",\n\t\t\"url\": \"if(fun.getCSS('.show_more')){rule.pager.type=2;rule.pager.nextL='.active .show_more:not(.disabled)';return true;}else{return fun.isPager();}\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".page_next>a\",\n\t\t\t\"pageE\": \".short_item\",\n\t\t\t\"replaceE\": \".navigation\"\n\t\t}\n\t},\n\t\"steamrip\": {\n\t\t\"host\": \"steamrip.com\",\n\t\t\"url\": \"return fun.isPager()\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.next.page-numbers,li.the-next-page>a\",\n\t\t\t\"pageE\": \"li.post-item,.post-element\",\n\t\t\t\"replaceE\": \".pages-numbers\"\n\t\t}\n\t},\n\t\"GBAtemp - 帖子内\": {\n\t\t\"host\": \"gbatemp.net\",\n\t\t\"url\": \"/^\\\\/threads\\\\//\",\n\t\t\"thread\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.pageNav-jump--next\",\n\t\t\t\"pageE\": \"article.message\",\n\t\t\t\"replaceE\": \".pageNav\"\n\t\t}\n\t},\n\t\"GBAtemp\": {\n\t\t\"host\": \"gbatemp.net\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.pageNav-jump--next\",\n\t\t\t\"pageE\": \".structItemContainer>div\",\n\t\t\t\"replaceE\": \".pageNav\"\n\t\t}\n\t},\n\t\"Ova Games\": {\n\t\t\"host\": \"www.ovagames.com\",\n\t\t\"url\": \"return fun.isPager('n')\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".nextpostslink\",\n\t\t\t\"pageE\": \".single-entry-titles,.post-wrapper\",\n\t\t\t\"replaceE\": \".wp-pagenavi\"\n\t\t}\n\t},\n\t\"gog-games.to\": {\n\t\t\"host\": \"gog-games.to\",\n\t\t\"url\": \"/^\\\\/search\\\\//\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"span.btn.blue+a:not([disabled])\",\n\t\t\t\"pageE\": \"a[data-id]\"\n\t\t}\n\t},\n\t\"SteamUnlocked\": {\n\t\t\"host\": \"steamunlocked.org\",\n\t\t\"url\": \"return fun.isPager()\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"span.page-numbers.current+a\",\n\t\t\t\"pageE\": \".cover-item.category\",\n\t\t\t\"replaceE\": \".nav-links\"\n\t\t}\n\t},\n\t\"bilibili - 搜索页\": {\n\t\t\"host\": \"search.bilibili.com\",\n\t\t\"url\": \"fun.isUrlC(); return ((fun.lp() == '/all' || fun.lp() == '/video' || fun.lp() == '/pgc' || fun.lp() == '/article') && !fun.getCSS('ul.video-list') && !fun.getCSS('#article-list'))\",\n\t\t\"style\": \".to_hide_md:not(.to_hide_xl) {display: initial !important;}\",\n\t\t\"history\": true,\n\t\t\"pager\": {\n\t\t\t\"type\": 6,\n\t\t\t\"nextL\": \"js; return fun.getNextEP('.vui_pagenation--btn-num.vui_button--active+button.vui_pagenation--btn-num','page=',/page=\\\\d+(&o=\\\\d+)?/)\",\n\t\t\t\"pageE\": \".video-list-item,.media-list>div,.video-list>div\",\n\t\t\t\"replaceE\": \".vui_pagenation--btns\",\n\t\t\t\"loadTime\": 600,\n\t\t\t\"scrollD\": 3000\n\t\t}\n\t},\n\t\"NO视频\": {\n\t\t\"host\": \"www.novipnoad.com\",\n\t\t\"url\": \"return (fun.lp() != '/' && !fun.indexOF('.html'))\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.nextpostslink\",\n\t\t\t\"pageE\": \".video-listing-content .row>div\",\n\t\t\t\"replaceE\": \".wp-pagenavi\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE)\"\n\t\t}\n\t},\n\t\"低端影视\": {\n\t\t\"host\": [\"ddrk.me\",\"ddys.tv\"],\n\t\t\"url\": \"return (fun.lp() == '/' || fun.indexOF(/^\\\\/page\\\\//) || fun.indexOF(/\\\\/(category|tag)\\\\//))\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.next\",\n\t\t\t\"pageE\": \".post-box-list>article\",\n\t\t\t\"replaceE\": \".pagination_wrap\"\n\t\t}\n\t},\n\t\"mini4k.io\": {\n\t\t\"host\": \"mini4k.io\",\n\t\t\"url\": \"return fun.isPager()\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.pager__item--next\",\n\t\t\t\"pageE\": \"li.column\"\n\t\t}\n\t},\n\t\"厂长资源\": {\n\t\t\"host\": [\"czspp.com\",\"www.czspp.com\"],\n\t\t\"url\": \"return fun.isPager()\",\n\t\t\"style\": \".bt_img>ul>li>a {height: 337.778px;}\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.current+a\",\n\t\t\t\"pageE\": \".bt_img>ul\",\n\t\t\t\"replaceE\": \".pagenavi_txt\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE)\"\n\t\t}\n\t},\n\t\"电影狗\": {\n\t\t\"host\": \"www.dianyinggou.com\",\n\t\t\"url\": \"return fun.isPager('p,r')\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".mainPage>li.selected+li>a\",\n\t\t\t\"pageE\": \".movies\",\n\t\t\t\"replaceE\": \".mainPage\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE,[0,'img[data-url]','data-url'])\"\n\t\t}\n\t},\n\t\"91 美剧网\": {\n\t\t\"host\": \"/mjw\\\\d+\\\\.com$/\",\n\t\t\"url\": \"return (fun.isTitle('91美剧') && !fun.indexOF('/w/') && !fun.indexOF('/dp/'))\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".next-page>a\",\n\t\t\t\"pageE\": \".m-movies>article\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE)\"\n\t\t}\n\t},\n\t\"网飞猫\": {\n\t\t\"host\": [\"www.ncat1.app\",\"/^www\\\\.nca(t)?\\\\d+\\\\.com$/\"],\n\t\t\"url\": \"return fun.isPager()\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".page-item-next\",\n\t\t\t\"pageE\": \".module-item\",\n\t\t\t\"replaceE\": \".pagenation-box\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"pageE.forEach((a)=>{let b=fun.getCSS('img[data-original]:not(#noneCoverImg)',a); b.src=window.RDUL[0]+b.dataset.original});return pageE;\"\n\t\t}\n\t},\n\t\"ZzzFun 动漫\": {\n\t\t\"host\": \"www.zzzfun.com\",\n\t\t\"url\": \"/^\\\\/vod_(type|show|search)/\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"#page a[title='下一页']\",\n\t\t\t\"pageE\": \"ul.search-result>a,ul.show-list>li\",\n\t\t\t\"replaceE\": \"#page\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE)\"\n\t\t}\n\t},\n\t\"吐槽弹幕网\": {\n\t\t\"host\": \"www.tucao.one\",\n\t\t\"url\": \"return (fun.indexOF('/list/'))\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".pagego a\",\n\t\t\t\"pageE\": \".list>ul>li\",\n\t\t\t\"replaceE\": \".newpages,.pagego,#float_show\"\n\t\t}\n\t},\n\t\"吐槽弹幕网 - 搜索页\": {\n\t\t\"host\": \"www.tucao.one\",\n\t\t\"url\": \"return (fun.indexOF('search','s'))\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//a[@class='a1'][contains(text(),'下一页')]\",\n\t\t\t\"pageE\": \".search_list>*\",\n\t\t\t\"replaceE\": \".pages\"\n\t\t}\n\t},\n\t\"怡萱动漫\": {\n\t\t\"host\": \"www.yxdm.li\",\n\t\t\"url\": \"return (fun.indexOF('/search') || fun.indexOF('/category') || fun.indexOF('/resource'))\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//a[@class='nextPage' or text()='下一页']\",\n\t\t\t\"pageE\": \".dhnew>ul>li\",\n\t\t\t\"replaceE\": \".pagelist\"\n\t\t}\n\t},\n\t\"妮可动漫\": {\n\t\t\"host\": \"www.nicotv.me\",\n\t\t\"url\": \"return (fun.indexOF('/search') || fun.indexOF('/type'))\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//ul[contains(@class,'pagination ')]//a[text()='»']\",\n\t\t\t\"pageE\": \"ul.list-unstyled>li\",\n\t\t\t\"replaceE\": \"ul.pagination \"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE)\"\n\t\t}\n\t},\n\t\"漫岛动漫\": {\n\t\t\"host\": \"www.mandao.tv\",\n\t\t\"url\": \"return (fun.lp() != '/' && !fun.indexOF('/man'))\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//div[contains(@class,'page')]/a[text()='>']\",\n\t\t\t\"pageE\": \".index-tj>ul>li\",\n\t\t\t\"replaceE\": \".page\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE)\"\n\t\t}\n\t},\n\t\"AGE 动漫\": {\n\t\t\"host\": [\"www.agefans.com\",\"www.age.tv\",\"/^www\\\\.(agedm|agemys)\\\\./\"],\n\t\t\"url\": \"/^\\\\/(catalog|search|recommend)/\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"li.page-item.active+li>a\",\n\t\t\t\"pageE\": \"#cata_video_list .cata_video_item,#recommend_video_wrapper>div>div>div>.position-relative\",\n\t\t\t\"replaceE\": \".pagination\",\n\t\t\t\"forceHTTPS\": true\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE)\"\n\t\t}\n\t},\n\t\"NT 动漫\": {\n\t\t\"host\": \"/^www\\\\.ntdm\\\\d\\\\.com$/\",\n\t\t\"url\": \"return fun.isPager()\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//a[@class='pbutton  asciifont'][text()='下一页']\",\n\t\t\t\"pageE\": \"ul.ul_li_a6>li,.blockcontent1>.cell\",\n\t\t\t\"replaceE\": \"#container>div[style='text-align: center; line-height: 36px;']\"\n\t\t}\n\t},\n\t\"嘀哩嘀哩 动漫+omofun 动漫\": {\n\t\t\"host\": [\"dilidilidm.com\",\"/^(www\\\\.)omofun[a-z]\\\\.[a-z]+$/\"],\n\t\t\"url\": \"return fun.isPager()\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//ul[contains(@class,'hl-page-wrap')]//a[@class='active']/../following-sibling::li[1]/a\",\n\t\t\t\"pageE\": \".hl-list-item\",\n\t\t\t\"replaceE\": \".hl-page-wrap\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE,[1,'a[data-original]','data-original'])\"\n\t\t}\n\t},\n\t\"NyaFun 动漫\": {\n\t\t\"host\": \"www.nyacg.net\",\n\t\t\"url\": \"return fun.isPager()\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".page-info>a[title='下一页']\",\n\t\t\t\"pageE\": \".public-list-box\",\n\t\t\t\"replaceE\": \".pages\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE)\"\n\t\t}\n\t},\n\t\"奇米奇米动漫\": {\n\t\t\"host\": \"www.qimiqimi.net\",\n\t\t\"url\": \"return fun.isPager()\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.page_current+a\",\n\t\t\t\"pageE\": \".img-list>li\",\n\t\t\t\"replaceE\": \".list-page\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE,[0,'img[original]','original'])\"\n\t\t}\n\t},\n\t\"anime1\": {\n\t\t\"host\": \"anime1.me\",\n\t\t\"url\": \"/^\\\\/$/\",\n\t\t\"hiddenPN\": true,\n\t\t\"history\": false,\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"js; let next = fun.getCSS('a.paginate_button.next');if (next && next.className.indexOf('disabled') === -1) {let oldList = fun.getCSS('#table-list>tbody').innerHTML;if (oldList) {next.click(); fun.getCSS('#table-list>tbody').insertAdjacentHTML('afterbegin',oldList);}}\",\n\t\t\t\"pageE\": \"#table-list>tbody\",\n\t\t\t\"scrollD\": 800\n\t\t}\n\t},\n\t\"初音社\": {\n\t\t\"host\": \"www.mikuclub.online\",\n\t\t\"url\": \"/^\\\\/[a-z]/\",\n\t\t\"pager\": {\n\t\t\t\"type\": 2,\n\t\t\t\"nextL\": \"button.get-next-page:not([disabled]),.wpf-more-topics>a\",\n\t\t\t\"interval\": 1000\n\t\t}\n\t},\n\t\"音范丝\": {\n\t\t\"host\": \"/^www\\\\.yinfans\\\\./\",\n\t\t\"style\": \"#post_container>li {position: static !important; float: left !important; height: 620px !important;}\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.next\",\n\t\t\t\"pageE\": \"#post_container>li\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t}\n\t},\n\t\"片源网\": {\n\t\t\"host\": \"pianyuan.org\",\n\t\t\"url\": \"return (fun.lp() == '/')\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.next\",\n\t\t\t\"pageE\": \"table>tbody>tr:not(.firstr)\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE)\",\n\t\t\t\"aF\": \"document.body.appendChild(document.createElement('script')).textContent = 'this.imagePreview()'\"\n\t\t}\n\t},\n\t\"片源网 - 分类/搜索页\": {\n\t\t\"host\": \"pianyuan.org\",\n\t\t\"url\": \"return (!fun.indexOF('.html'))\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.next\",\n\t\t\t\"pageE\": \"div[role='main']>div:not(.pagelist)\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE)\"\n\t\t}\n\t},\n\t\"磁力狗\": {\n\t\t\"host\": [\"clg.im\",\"ciligou.top\",\"clg00.site\"],\n\t\t\"url\": \"/^\\\\/search/\",\n\t\t\"style\": \"body,html {overflow-x: initial !important;}\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".pagination>li.active+li>a\",\n\t\t\t\"pageE\": \"#Search_list_wrapper>li\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t}\n\t},\n\t\"雨花阁\": {\n\t\t\"host\": \"/^www\\\\.yuhuage\\\\d{2}\\\\.xyz$/\",\n\t\t\"url\": \"/\\\\/search\\\\//\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a[title='下一页']\",\n\t\t\t\"pageE\": \".search-item\",\n\t\t\t\"replaceE\": \".bottom-pager\"\n\t\t}\n\t},\n\t\"BT 之家\": {\n\t\t\"host\": [\"/btbtt/\",\"/bt\\\\d{3,4}\\\\.com$/\"],\n\t\t\"url\": \"return (fun.getCSS(\\\".logo>a[title='BT之家']\\\") && (fun.lp() == '/' || fun.indexOF(/^\\\\/(index|forum|search)-/)))\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//div[@class='page']/a[text()='▶' or text()='下一页']\",\n\t\t\t\"pageE\": \"#threadlist\",\n\t\t\t\"replaceE\": \".page\"\n\t\t}\n\t},\n\t\"BD 影视\": {\n\t\t\"host\": [\"www.bd2020.com\",\"www.bd2020.co\"],\n\t\t\"url\": \"return (fun.lp() != '/' && !fun.indexOF(/\\\\/d+.htm/))\",\n\t\t\"pager\": {\n\t\t\t\"type\": 2,\n\t\t\t\"nextL\": \"div.layui-flow-more>a\",\n\t\t\t\"nextText\": \"加载更多\"\n\t\t}\n\t},\n\t\"高清电台\": {\n\t\t\"host\": \"gaoqing.fm\",\n\t\t\"pager\": {\n\t\t\t\"type\": 2,\n\t\t\t\"nextL\": \".col-md-12>a,#loadmore>a\",\n\t\t\t\"interval\": 1500\n\t\t}\n\t},\n\t\"Kimivod\": {\n\t\t\"host\": \"kimivod.com\",\n\t\t\"url\": \"return fun.isPager()\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".pagination__next\",\n\t\t\t\"pageE\": \".container_list>.post\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE)\"\n\t\t}\n\t},\n\t\"VCB-Studio\": {\n\t\t\"host\": \"vcb-s.com\",\n\t\t\"url\": \"return fun.isPager()\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".active+li>a\",\n\t\t\t\"pageE\": \".article\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t}\n\t},\n\t\"爱恋动漫/漫猫动漫/末日动漫\": {\n\t\t\"host\": [\"www.kisssub.org\",\"www.comicat.org\",\"www.anix.moe\",\"/^(share|www)\\\\.acgnx\\\\./\"],\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.nextprev:last-of-type\",\n\t\t\t\"pageE\": \"#data_list>tr\",\n\t\t\t\"replaceE\": \".pages\",\n\t\t\t\"scrollD\": 2500\n\t\t}\n\t},\n\t\n\t\"动漫花园\": {\n\t\t\"host\": [\"dmhy.org\",\"www.dmhy.org\",\"share.dmhy.org\",\"dmhy.anoneko.com\"],\n\t\t\"url\": \"return fun.isPager('r')\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//div[@class='nav_title']/a[contains(text(),'下一')]\",\n\t\t\t\"pageE\": \"#topic_list>tbody>tr\",\n\t\t\t\"replaceE\": \".table.clear .nav_title\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"aF\": \"document.body.appendChild(document.createElement('script')).textContent = `$('#topic_list>tbody>tr:even:not(.even):not(.odd)').addClass('even'); $('#topic_list>tbody>tr:odd:not(.even):not(.odd)').addClass('odd');`\"\n\t\t}\n\t},\n\t\"蜜柑计划 - Mikan\": {\n\t\t\"host\": \"mikanani.me\",\n\t\t\"url\": \"/^\\\\/Home\\\\/Classic/\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"js; return fun.getNextEPN('.pagination>li.active+li:not([style]):not([class])>a',/\\\\/\\\\d+$/,'/')\",\n\t\t\t\"pageE\": \"//table/tbody/tr | //body/script[contains(text(),'.classic-view-pagination')]\",\n\t\t\t\"scriptT\": 2\n\t\t}\n\t},\n\t\"蜜柑计划 - Mikan - 搜索页\": {\n\t\t\"host\": \"mikanani.me\",\n\t\t\"url\": \"if(fun.indexOF(/^\\\\/Home\\\\/Search/)){fun.insStyle('.js-search-results-row {display: table-row !important;}');return true;}\",\n\t\t\"hiddenPN\": true\n\t},\n\t\"扶她动漫\": {\n\t\t\"host\": [\"futaacg.com\",\"www.futaacg.com\"],\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"ul.pagination a[rel='next']\",\n\t\t\t\"pageE\": \".topic-list>div\",\n\t\t\t\"replaceE\": \"ul.pagination\"\n\t\t}\n\t},\n\t\"AniRena\": {\n\t\t\"host\": \"www.anirena.com\",\n\t\t\"url\": \"return (fun.lp() == '/' || fun.lp() == '/index.php')\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.disabled+a:not(.disabled)\",\n\t\t\t\"pageE\": \".full2,.full2+script\",\n\t\t\t\"replaceE\": \".full3.buttons\",\n\t\t\t\"scriptT\": 2\n\t\t}\n\t},\n\t\"ACG.RIP\": {\n\t\t\"host\": [\"acg.rip\",\"acgrip.art\"],\n\t\t\"url\": \"return (!fun.indexOF('/t/'))\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"li.next>a\",\n\t\t\t\"pageE\": \"table.post-index>tbody>tr\",\n\t\t\t\"replaceE\": \"ul.pagination\"\n\t\t}\n\t},\n\t\"萌番组 lite\": {\n\t\t\"host\": \"bangumi.moe\",\n\t\t\"url\": \"/^\\\\/lite/\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//section/a[./span[contains(@class,'next')]]\",\n\t\t\t\"pageE\": \"li.torrent-li\",\n\t\t\t\"replaceE\": \".page-btn-section\"\n\t\t}\n\t},\n\t\"萌番组\": {\n\t\t\"host\": \"bangumi.moe\",\n\t\t\"pager\": {\n\t\t\t\"type\": 2,\n\t\t\t\"nextL\": \"[torrent-list='lattorrents'] button[ng-click='loadMore()'] ,[torrent-list='torrents'] button[ng-click='loadMore()']\",\n\t\t\t\"interval\": 1000\n\t\t}\n\t},\n\t\"MioBT/简单动漫\": {\n\t\t\"host\": \"miobt.com\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//a[@class='nextprev'][contains(text(),'〉') or contains(text(),'下一页') or contains(text(),'»')]\",\n\t\t\t\"pageE\": \"#data_list>tr\",\n\t\t\t\"replaceE\": \".pages\"\n\t\t}\n\t},\n\t\"零度动漫\": {\n\t\t\"host\": \"bt.acgzero.com\",\n\t\t\"url\": \"return (fun.lp() == '/')\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"li.active.page-item+li.page-item>a\",\n\t\t\t\"pageE\": \"table>tbody\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t}\n\t},\n\t\"SkrBT / BT1207\": {\n\t\t\"host\": [\"/skrbt/\",\"/bt1207/\"],\n\t\t\"url\": \"return (fun.getCSS(\\\"link[href*='/skrbt/'],img[src*='/skrbt/'],img[src*='/bt1207/']\\\") && fun.lp() == '/search')\",\n\t\t\"history\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"js;let page = fun.getCSS('a[onclick][aria-label=\\\"Next\\\"]'); if (page) {page = /(?<=\\\\()\\\\d+(?=\\\\))/.exec(page.onclick)[0];} else {return '';}; if (page) {return fun.getNextF('#search-form').replace(/p=\\\\d+/,'p=' + page)} else {return '';}\",\n\t\t\t\"pageE\": \"div[class='row']>.col-md-6>ul\",\n\t\t\t\"insertP\": [\"nav[aria-label*='Page']\",1],\n\t\t\t\"replaceE\": \"ul.pagination\",\n\t\t\t\"scrollD\": 900\n\t\t}\n\t},\n\t\"Nyaa\": {\n\t\t\"host\": [\"nyaa.si\",\"sukebei.nyaa.si\"],\n\t\t\"url\": \"return (fun.lp()=='/')\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a[rel='next'],li.next>a\",\n\t\t\t\"pageE\": \"table.torrent-list>tbody>tr\",\n\t\t\t\"replaceE\": \"ul.pagination\"\n\t\t}\n\t},\n\t\"YTS\": {\n\t\t\"host\": [\"yts.bz\",\"yts.lt\",\"yts.gg\",\"yts.am\",\"yts.ag\"],\n\t\t\"url\": \"/^\\\\/browse-movies/\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//ul[contains(@class,'tsc_pagination')]/li[./a[@class='current']]/following-sibling::li[1]/a\",\n\t\t\t\"pageE\": \".browse-movie-wrap\",\n\t\t\t\"replaceE\": \".tsc_pagination\"\n\t\t}\n\t},\n\t\"1337x\": {\n\t\t\"host\": \"/1337x\\\\./\",\n\t\t\"url\": \"return (fun.isTitle('1337x') && fun.getCSS('.pagination>ul'))\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".pagination li.active+li>a\",\n\t\t\t\"pageE\": \"table.table-list>tbody>tr\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t}\n\t},\n\t\"TheRARBG\": {\n\t\t\"host\": \"therarbg.to\",\n\t\t\"url\": \"if(fun.indexOF('/get-posts/')){fun.cleanuEvent('thead.table1head',500);return true}\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".active+li.page-item>a\",\n\t\t\t\"pageE\": \".row.p-1 tr.list-entry\",\n\t\t\t\"replaceE\": \".pagination\",\n\t\t\t\"scrollD\": 1300\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE)\"\n\t\t}\n\t},\n\t\"Zooqle\": {\n\t\t\"host\": \"zooqle.com\",\n\t\t\"url\": \"return (fun.lp() == '/search' || fun.indexOF('/browse/') || fun.indexOF('/mov/'))\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a[aria-label='Next']\",\n\t\t\t\"pageE\": \".table>tbody>tr\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t}\n\t},\n\t\"BitSearch\": {\n\t\t\"host\": \"bitsearch.to\",\n\t\t\"url\": \"/^\\\\/(search|library|anime|videos|music|softwares)/\",\n\t\t\"blank\": 5,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.active+a\",\n\t\t\t\"pageE\": \".movie-grid>*,.search-result\"\n\t\t}\n\t},\n\t\"MagnetDL\": {\n\t\t\"host\": \"www.magnetdl.com\",\n\t\t\"url\": \"return fun.isPager()\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"id('pages')/a[contains(text(),'>')]\",\n\t\t\t\"pageE\": \".download>tbody>tr:not(:nth-last-child(-n+2))\"\n\t\t}\n\t},\n\t\"Knaben\": {\n\t\t\"host\": \"knaben.eu\",\n\t\t\"url\": \"/^\\\\/(search|browse)\\\\//\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"#nextPage\",\n\t\t\t\"pageE\": \"tbody>tr\"\n\t\t}\n\t},\n\t\"idope\": {\n\t\t\"host\": \"/^idope\\\\..+/\",\n\t\t\"url\": \"/^\\\\/torrent-list\\\\//\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"js; return fun.getNextEP('.page[style]+.page','p=',/p=\\\\d+/)\",\n\t\t\t\"pageE\": \".resultdiv\",\n\t\t\t\"replaceE\": \"#div3\"\n\t\t}\n\t},\n\t\"Kickass Torrents\": {\n\t\t\"host\": [\"kickasss.to\",\"katcr.to\",\"kickasstorrent.cr\"],\n\t\t\"url\": \"return (fun.lp() != '/' && !fun.indexOF('.html') && !fun.indexOF('/popular'))\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.active+a\",\n\t\t\t\"pageE\": \"table.data.frontPageWidget>tbody>tr:not(.firstr)\",\n\t\t\t\"replaceE\": \".pages\"\n\t\t}\n\t},\n\t\"TorrentGalaxy\": {\n\t\t\"host\": \"/^torrentgalaxy\\\\.[a-z]{2,6}$/\",\n\t\t\"url\": \"/^\\\\/torrents\\\\.php/\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"li.page-item.active+li.page-item>a\",\n\t\t\t\"pageE\": \".tgxtable>div:not(.header)\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t}\n\t},\n\t\"TorrentDownloads\": {\n\t\t\"host\": \"www.torrentdownloads.pro\",\n\t\t\"url\": \"return fun.isPager('r')\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//div[@class='pagination_box']//a[text()='>>']\",\n\t\t\t\"pageE\": \".inner_container>.grey_bar3\",\n\t\t\t\"replaceE\": \".pagination_box\"\n\t\t}\n\t},\n\t\"LimeTorrents\": {\n\t\t\"host\": \"/^www\\\\.limetorrents\\\\./\",\n\t\t\"url\": \"return (fun.isTitle('LimeTorrents') && (fun.indexOF('/search/') || fun.indexOF('/browse-torrents')))\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a#next\",\n\t\t\t\"pageE\": \"table.table2>tbody>tr:not(:first-of-type)\",\n\t\t\t\"replaceE\": \".search_stat\"\n\t\t}\n\t},\n\t\"BTDig\": {\n\t\t\"host\": \"btdig.com\",\n\t\t\"url\": \"/^\\\\/search/\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//div[@style='display:table-cell;text-align:right']//a[contains(text(),'→')]\",\n\t\t\t\"pageE\": \"div[style='display:table;width:100%;text-align:left']>div\",\n\t\t\t\"replaceE\": \"div[style='display:table-cell;text-align:right']\"\n\t\t}\n\t},\n\t\"DirtyWarez\": {\n\t\t\"host\": \"forum.dirtywarez.com\",\n\t\t\"url\": \"/^\\\\/forums\\\\//\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//a[@class='text'][contains(text(),'>')]\",\n\t\t\t\"pageE\": \"li.discussionListItem\"\n\t\t}\n\t},\n\t\"Torrenting\": {\n\t\t\"host\": \"torrenting.com\",\n\t\t\"url\": \"/^\\\\/t($|\\\\?)/\",\n\t\t\"blank\": 4,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".page_nav>b+a\",\n\t\t\t\"pageE\": \".torrentsTableTr\"\n\t\t}\n\t},\n\t\"CGpeers\": {\n\t\t\"host\": \"cgpeers.to\",\n\t\t\"url\": \"return (fun.lp() == '/torrents.php')\",\n\t\t\"history\": false,\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".linkbox > a.pager_next\",\n\t\t\t\"pageE\": \"#torrent_table > tbody > tr:not(.colhead)\",\n\t\t\t\"replaceE\": \".linkbox\"\n\t\t}\n\t},\n\t\"WebHD\": {\n\t\t\"host\": \"webhd.top\",\n\t\t\"url\": \"return (fun.lp() == '/' || fun.indexOF('/list/new'))\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//a[@class='page-link'][contains(text(),'下一页')]\",\n\t\t\t\"pageE\": \".col-lg-9 .bg-white.shadow-sm.rounded-3>.row.gx-0\",\n\t\t\t\"replaceE\": \"ul.pagination\"\n\t\t}\n\t},\n\t\"WebHD - 搜索页\": {\n\t\t\"host\": \"webhd.top\",\n\t\t\"url\": \"/\\\\/search/\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//a[@class='page-link'][contains(text(),'下一页')]\",\n\t\t\t\"pageE\": \".col-lg-9 .bg-white.shadow-sm.rounded-3\",\n\t\t\t\"insertP\": [\"nav[aria-label='pagination']\",1],\n\t\t\t\"replaceE\": \"ul.pagination\"\n\t\t}\n\t},\n\t\"MINI4K - 论坛\": {\n\t\t\"host\": \"www.mini4k.com\",\n\t\t\"url\": \"return (fun.indexOF('/forum') && !fun.indexOF('/topic'))\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.pager__item--next\",\n\t\t\t\"pageE\": \"#block-white-content tbody>tr\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t}\n\t},\n\t\"MINI4K\": {\n\t\t\"host\": \"www.mini4k.com\",\n\t\t\"url\": \"return fun.isPager('r')\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.pager__item--next\",\n\t\t\t\"pageE\": \"div[class*='-item-list']>ul>li\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t}\n\t},\n\t\"HDSay 高清乐园\": {\n\t\t\"host\": \"www.hdsay.net\",\n\t\t\"url\": \"/^\\\\/forum\\\\/plate/\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.current+a.item\",\n\t\t\t\"pageE\": \"//tr[@class='row-split'][2]/following-sibling::tr\",\n\t\t\t\"replaceE\": \".hpaging\"\n\t\t}\n\t},\n\t\"SubHD - 论坛\": {\n\t\t\"host\": [\"subhd.tv\",\"subhdtw.com\",\"subhd.la\",\"subhd.cc\",\"subhd.me\"],\n\t\t\"url\": \"/^\\\\/forum\\\\/(forum|ask)/\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".page-item.active+li>a\",\n\t\t\t\"pageE\": \".bg-white.shadow-sm.rounded-3>div\",\n\t\t\t\"replaceE\": \"nav.clearfix\"\n\t\t}\n\t},\n\t\"SubHD\": {\n\t\t\"host\": [\"subhd.tv\",\"subhdtw.com\",\"subhd.la\",\"subhd.cc\",\"subhd.me\"],\n\t\t\"url\": \"return fun.isPager('r')\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".page-item.active+li>a\",\n\t\t\t\"pageE\": \".bg-white.shadow-sm.rounded-3\",\n\t\t\t\"insertP\": [\"nav.clearfix\",1],\n\t\t\t\"replaceE\": \"nav.clearfix\"\n\t\t}\n\t},\n\t\"伪射手网\": {\n\t\t\"host\": \"assrt.net\",\n\t\t\"url\": \"return (fun.lp() === '/sub/')\",\n\t\t\"history\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"js; return fun.getNextEP('#pl-current+a[href]:not([id])','page=',/page=\\\\d+/)\",\n\t\t\t\"pageE\": \".resultcard>div:not(#top-banner):not(#bottom-banner):not(.pagelinkcard)\",\n\t\t\t\"insertP\": [\".pagelinkcard\",1],\n\t\t\t\"replaceE\": \".pagelinkcard\"\n\t\t}\n\t},\n\t\"伪射手网 - 分类页\": {\n\t\t\"host\": \"assrt.net\",\n\t\t\"url\": \"/\\\\/list\\\\//\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//a[@id='pl-nav' and text()='>']\",\n\t\t\t\"pageE\": \"#resultsdiv>.subitem:not([id])\",\n\t\t\t\"replaceE\": \".pagelinkcard\"\n\t\t}\n\t},\n\t\"字幕库 zmk\": {\n\t\t\"host\": [\"srtku.com\",\"zmk.pw\",\"zimuku.org\",\"zimuku.pw\"],\n\t\t\"url\": \"if (!fun.indexOF('/detail/') && !fun.indexOF('/subs/')) {if (fun.lp() == '/') {fun.getCSS('.box>.table').insertAdjacentHTML('beforebegin','<div class=\\\"pagination\\\"></div>')}; return true;}\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.next\",\n\t\t\t\"pageE\": \".item,.box>.table>tbody>tr\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE)\"\n\t\t}\n\t},\n\t\"中文字幕网 zimuzimu\": {\n\t\t\"host\": \"cn.zimuzimu.com\",\n\t\t\"url\": \"return (fun.lp() == '/so_zimu.htm')\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"li.page-item.active+li>a\",\n\t\t\t\"pageE\": \"li.thread\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t}\n\t},\n\t\"点点字幕\": {\n\t\t\"host\": \"www.ddzimu.com\",\n\t\t\"url\": \"/\\\\/xslist\\\\.php/\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"li.disabled+li>a\",\n\t\t\t\"pageE\": \".list>ul>li:not(.first)\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t}\n\t},\n\t\"言耽社\": {\n\t\t\"host\": \"yandanshe.com\",\n\t\t\"url\": \"/^\\\\/\\\\d+\\\\//\",\n\t\t\"history\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"id('navigation')/ul/li[./span]/following-sibling::li[1]/a\",\n\t\t\t\"pageE\": \".post-content\",\n\t\t\t\"replaceE\": \"#navigation\",\n\t\t\t\"scrollD\": 3000\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE)\"\n\t\t}\n\t},\n\t\"言耽社 - 分类页\": {\n\t\t\"host\": \"yandanshe.com\",\n\t\t\"url\": \"/^\\\\/b/\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.next.page-numbers\",\n\t\t\t\"pageE\": \".list-grouped>div\",\n\t\t\t\"replaceE\": \".nav-links\"\n\t\t}\n\t},\n\t\"DL-Raw\": {\n\t\t\"host\": \"dl-raw.ac\",\n\t\t\"url\": \"/^\\\\/($|\\\\?s=|tag|page|category)/\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.next\",\n\t\t\t\"pageE\": \"div[id^=gridlane-grid-post-]\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t}\n\t},\n\t\"漫本\": {\n\t\t\"host\": \"www.manben.com\",\n\t\t\"url\": \"if (fun.indexOF(/^\\\\/m\\\\d+/)) {if (fun.getCookie('showtype') != '2') {document.cookie='showtype=2; expires=Thu, 18 Dec 2031 12:00:00 GMT; path=/';location.reload();}else{return true;}}\",\n\t\t\"style\": \".main{height: auto !important;overflow-y: hidden !important;} #comicContain img {min-height: 300px;} .comic-contain li{margin: 0 !important;} img.imgFloat_1,img.imgFloat_2,span.comic-ft {display: none !important;}\",\n\t\t\"history\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"#mainControlNext\",\n\t\t\t\"pageE\": \"//body/script[starts-with(text(),'eval(')]\",\n\t\t\t\"insertP\": [\"body\",3],\n\t\t\t\"replaceE\": \".main_control\",\n\t\t\t\"scriptT\": 2,\n\t\t\t\"interval\": 5000\n\t\t},\n\t\t\"function\": {\n\t\t\t\"aF\": \"let _img=''; for (let i=0;i<newImgs.length;i++){_img += `<li><img src=\\\"${newImgs[i]}\\\"></li>`;}; document.getElementById('comicContain').insertAdjacentHTML('beforeend',_img);\"\n\t\t}\n\t},\n\t\"好漫 6\": {\n\t\t\"host\": \"www.haoman6.com\",\n\t\t\"url\": \"/\\\\/chapter\\\\//\",\n\t\t\"style\": \".rd-guess,.rd-aside,.page-index__btn {display: none !important;} .rd-article__pic {display: initial !important;} .rd-article__pic>img {margin: 0 auto;display: block;height: auto;min-height: 200px;}\",\n\t\t\"history\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"js;return (location.origin + fun.getCSS('a.rd-aside__item.j-rd-next').getAttribute('_href'))\",\n\t\t\t\"pageE\": \".rd-article-wr>div\",\n\t\t\t\"replaceE\": \"a.last-crumb,.rd-aside\",\n\t\t\t\"interval\": 2000\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE)\"\n\t\t}\n\t},\n\t\"好漫 6 - 分类/搜索页\": {\n\t\t\"host\": \"www.haoman6.com\",\n\t\t\"url\": \"if (fun.indexOF('/comic/')) {if (fun.getCSS('.chapter__more')) fun.getCSS('.chapter__more').click();} else if (fun.indexOF('/category/') || fun.indexOF('/search')) {return true}\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.next\",\n\t\t\t\"pageE\": \".cate-comic-list>div\",\n\t\t\t\"replaceE\": \"#Pagination\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE)\"\n\t\t}\n\t},\n\t\"好漫 8\": {\n\t\t\"host\": \"www.haoman8.com\",\n\t\t\"url\": \"if (fun.indexOF(/^\\\\/comic\\\\/\\\\d+\\\\/\\\\d+$/)){if (fun.getCookie('pmode') != '2') {document.cookie='pmode=2; expires=Thu, 18 Dec 2031 12:00:00 GMT; path=/';location.reload();}else{fun.src_bF(fun.getAllCSS('img[data-echo]'),[0,'img[data-echo]','data-echo']); return true;}}\",\n\t\t\"style\": \"#readerContainer {position: initial !important;overflow: hidden !important;} #js_pageInfoText,#js_pageProgress,#js_ftAutoBtn {display: none !important;}\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"js;return (location.origin + fun.getCSS('#js_pageNextBtn').getAttribute('_href'))\",\n\t\t\t\"pageE\": \".acgn-reader-chapter__item[id]\",\n\t\t\t\"replaceE\": \"#js_footMenu\",\n\t\t\t\"interval\": 4000\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE,[0,'img[data-echo]','data-echo'])\"\n\t\t}\n\t},\n\t\"好漫 8 - 分类/搜索页\": {\n\t\t\"host\": \"www.haoman8.com\",\n\t\t\"url\": \"/\\\\/(category|search)/\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".acgn-pages>.on+a\",\n\t\t\t\"pageE\": \"li.acgn-item\",\n\t\t\t\"replaceE\": \".acgn-pages\"\n\t\t}\n\t},\n\t\"动漫狂\": {\n\t\t\"host\": [\"www.cartoonmad.com\",\"www.cartoonmad.cc\",\"cc.fun8.us\"],\n\t\t\"url\": \"/^\\\\/post\\\\/\\\\d+\\\\.html$/\",\n\t\t\"style\": \"body > table > tbody > tr:nth-child(3) > td > table > tbody > tr:first-child > td:not(:first-child) {display: none !important;} body > table > tbody > tr:nth-child(3) > td > table > tbody > tr:first-child > td:first-child img {max-width: 100%;height: auto;display: block !important;margin: 0 auto !important;}\",\n\t\t\"history\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"js; let next=fun.getXpath(\\\"//a[@class='pages'][contains(text(),'下一頁')][not(starts-with(@href,'thend.asp'))]\\\");if (next) {return next.href;} else {next=fun.getXpath(\\\"//a[@class='pages'][contains(string(),'下一話')]\\\");if (next) return next.href;}\",\n\t\t\t\"pageE\": \"img[onload]\",\n\t\t\t\"replaceE\": \"body > table > tbody > tr:first-child,body > table > tbody > tr:nth-child(4)\",\n\t\t\t\"interval\": 0\n\t\t}\n\t},\n\t\"动漫啦\": {\n\t\t\"host\": \"www.dongman.la\",\n\t\t\"url\": \"if (fun.indexOF('/chapter/')) {fun.src_bF(fun.getAllCSS('img.mdui-img-fluid[data-srcset]:not([src])'),[0,'img[data-srcset]','data-srcset']); return true}\",\n\t\t\"style\": \"button.prePic,button.nextPic,footer,header,#left-drawer {display: none !important;} body,#app {padding: 0 !important;} .slick-track {width: 100% !important;} .lazyBox {width: 100%; display: inline-block;}\",\n\t\t\"history\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//footer//a[./label[text()='下一章']]\",\n\t\t\t\"pageE\": \".lazyBox\",\n\t\t\t\"insertP\": [\".slick-track\",3],\n\t\t\t\"replaceE\": \"footer\",\n\t\t\t\"interval\": 2000,\n\t\t\t\"scrollD\": 3000\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE,[0,'img[data-srcset]','data-srcset'])\"\n\t\t}\n\t},\n\t\"动漫啦 - 分类页\": {\n\t\t\"host\": \"www.dongman.la\",\n\t\t\"url\": \"if (fun.indexOF('/detail/')) {setTimeout(()=>{fun.getCSS('a#zhankai').click();},500)} else if (fun.indexOF('/manhua/')) {return true}\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//a[@class='GPageLink' and text()='下一页']\",\n\t\t\t\"pageE\": \".cy_list_mh>ul\",\n\t\t\t\"replaceE\": \".NewPages\"\n\t\t}\n\t},\n\t\"漫漫聚\": {\n\t\t\"host\": \"www.manmanju.com\",\n\t\t\"url\": \"/^\\\\/comiclist\\\\/\\\\d+\\\\/\\\\d+\\\\/\\\\d+\\\\.htm$/\",\n\t\t\"history\": true,\n\t\t\"pager\": {\n\t\t\t\"type\": 6,\n\t\t\t\"nextL\": \"//a[./img[@src='/images/d.gif']][not(@href='/exit/exit.htm')]\",\n\t\t\t\"pageE\": \"//a/img[@src][not(contains(@src,'.gif'))]\",\n\t\t\t\"replaceE\": \"//a[./img[@src='/images/d.gif']]\",\n\t\t\t\"loadTime\": 200\n\t\t}\n\t},\n\t\"漫画皮\": {\n\t\t\"host\": \"www.manhuapi.com\",\n\t\t\"url\": \"/\\\\/chapter\\\\//\",\n\t\t\"history\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//div[@class='page']/a[text()='下一页' or text()='下一章']\",\n\t\t\t\"pageE\": \".mh_list img[src]\",\n\t\t\t\"replaceE\": \".page\"\n\t\t}\n\t},\n\t\"漫画皮 - 分类页\": {\n\t\t\"host\": \"www.manhuapi.com\",\n\t\t\"url\": \"return (!fun.indexOF(/\\\\/manhua\\\\/\\\\d+\\\\.html/))\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//div[@class='pages']/a[text()='下一页']\",\n\t\t\t\"pageE\": \".cy_list_mh>ul\",\n\t\t\t\"replaceE\": \".pages\"\n\t\t}\n\t},\n\t\"漫画人\": {\n\t\t\"host\": \"www.manhuaren.com\",\n\t\t\"url\": \"if (fun.indexOF(/^\\\\/m\\\\d/)) {let _img=''; for (let i=0;i<newImgs.length;i++){_img += `<img src=\\\"${newImgs[i]}\\\">`;}; document.getElementById('cp_img').innerHTML = _img; return true;}\",\n\t\t\"style\": \"#cp_img > img {min-height: 200px;}\",\n\t\t\"history\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"js; let next = fun.getXpath(\\\"//ul[@class='view-bottom-bar']//a[text()='下一章' and not(contains(@href,'-end'))]\\\"); if (next && next.href) {return (location.origin + next.href.split(\\\"'\\\")[1]);}\",\n\t\t\t\"pageE\": \"//body/script[starts-with(text(),'eval(')]\",\n\t\t\t\"insertP\": [\"body\",3],\n\t\t\t\"replaceE\": \".view-bottom-bar,.winnextchapter,.view-fix-bottom-bar\",\n\t\t\t\"scriptT\": 2,\n\t\t\t\"interval\": 4000\n\t\t},\n\t\t\"function\": {\n\t\t\t\"aF\": \"let _img=''; for (let i=0;i<newImgs.length;i++){_img += `<img src=\\\"${newImgs[i]}\\\">`;}; document.getElementById('cp_img').insertAdjacentHTML('beforeend',_img);\"\n\t\t}\n\t},\n\t\"漫画柜\": {\n\t\t\"host\": [\"www.mhgui.com\",\"tw.mhgui.com\",\"www.manhuagui.com\",\"tw.manhuagui.com\"],\n\t\t\"url\": \"if (fun.indexOF(/\\\\/comic\\\\/\\\\d+\\\\/\\\\d+\\\\.html/)) {if (localStorage.getItem('pageFunc') != '0') {localStorage.setItem('pageFunc','0'); location.reload();}; setTimeout(()=>{SMH.imgData = function(n) {imgDate = n;return}; fun.insScript('body > script:not([src])'); let _img = '',imgPath = `${location.protocol}//i.hamreus.com${imgDate.path}`; for (let i = 0; i < imgDate.files.length; i++) {_img += `<img src=\\\"${imgPath + imgDate.files[i]}?e=${imgDate.sl.e}&m=${imgDate.sl.m}\\\">`;}; document.getElementById('mangaBox').innerHTML = _img;},500); return true;}\",\n\t\t\"style\": \".sub-btn,.tc {display: none !important;} #mangaBox > img {min-height: 300px; width: auto !important;height: auto !important;display: block !important;margin: 0 auto !important;max-width: 99% !important;}\",\n\t\t\"history\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"js; let url = location.origin + location.pathname.replace(imgDate.cid.toString(),imgDate.nextId.toString()); if (imgDate.nextId && url != location.href) return url\",\n\t\t\t\"pageE\": \"body>script:not([src])\",\n\t\t\t\"insertP\": [\"body\",3],\n\t\t\t\"scriptT\": 2,\n\t\t\t\"interval\": 4000,\n\t\t\t\"scrollD\": 2500\n\t\t},\n\t\t\"function\": {\n\t\t\t\"aF\": \"let _img = '',imgPath = `${location.protocol}//i.hamreus.com${imgDate.path}`; for (let i = 0; i < imgDate.files.length; i++) {_img += `<img src=\\\"${imgPath + imgDate.files[i]}?e=${imgDate.sl.e}&m=${imgDate.sl.m}\\\">`;}; document.getElementById('mangaBox').insertAdjacentHTML('beforeend',_img);\"\n\t\t}\n\t},\n\t\"漫画柜 - 分类页\": {\n\t\t\"host\": [\"www.mhgui.com\",\"tw.mhgui.com\",\"www.manhuagui.com\",\"tw.manhuagui.com\"],\n\t\t\"url\": \"/^\\\\/(list|s)\\\\//\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".current+a\",\n\t\t\t\"pageE\": \".book-list>ul,.book-result>ul\",\n\t\t\t\"replaceE\": \".pager\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE)\"\n\t\t}\n\t},\n\t\"漫画DB\": {\n\t\t\"host\": \"www.manhuadb.com\",\n\t\t\"url\": \"if (fun.indexOF(/^\\\\/manhua\\\\/\\\\d+\\\\/.+\\\\.html/)) {if (fun.getCSS('img.img-fluid.show-pic')){fun.getCSS('img.img-fluid.show-pic').style.display = 'none';}; setTimeout(()=>{let _img = '',data = document.querySelector('.vg-r-data'),imgDate = JSON.parse(atob(img_data));for (let i = 0; i < imgDate.length; i++) {_img += `<img class=\\\"img-fluid show-pic\\\" src=\\\"${data.dataset.host + data.dataset.img_pre + imgDate[i].img}\\\">`;};document.querySelector('.pjax-container').insertAdjacentHTML('beforeend',_img);},500); return true;}\",\n\t\t\"style\": \".row.m-0.pt-3.ad_2_wrap,.row.m-0.ad_1_wrap,.pagination.justify-content-center,#left,#right {display: none !important;} .pjax-container>img {min-height: 300px;}\",\n\t\t\"history\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//ol[@class='links-of-books num_div']//a[@class='active ']/../following-sibling::li[1]/a\",\n\t\t\t\"pageE\": \"//body/script[starts-with(text(),'var img_data')]\",\n\t\t\t\"insertP\": [\"body\",3],\n\t\t\t\"replaceE\": \".vg-r-data,ol.links-of-books\",\n\t\t\t\"scriptT\": 2,\n\t\t\t\"interval\": 4000\n\t\t},\n\t\t\"function\": {\n\t\t\t\"aF\": \"let _img = '',data = fun.getCSS('.vg-r-data'),imgDate = JSON.parse(atob(img_data));for (let i = 0; i < imgDate.length; i++) {_img += `<img class=\\\"img-fluid show-pic\\\" src=\\\"${data.dataset.host + data.dataset.img_pre + imgDate[i].img}\\\">`;};fun.getCSS('.pjax-container').insertAdjacentHTML('beforeend',_img)\"\n\t\t}\n\t},\n\t\"漫画DB - 分类页\": {\n\t\t\"host\": [\"www.manhuadb.com\",\"www.manhuacat.com\"],\n\t\t\"url\": \"/\\\\/(list|update|search)/\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//div[contains(@class,'pagination')]//a[contains(text(),'下一页') or contains(text(),'下页')]\",\n\t\t\t\"pageE\": \".comic-main-section\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE)\"\n\t\t}\n\t},\n\t\"SF漫画\": {\n\t\t\"host\": \"manhua.sfacg.com\",\n\t\t\"url\": \"if (fun.indexOF(/^\\\\/mh\\\\/.+\\\\/\\\\d+\\\\//)) {setTimeout(()=>{let _img=''; for (let i=0;i<picAy.length;i++){_img += `<img src=\\\"${picAy[i]}\\\">`;}; document.getElementById('curPic').parentElement.outerHTML = _img;rule.pager.scrollD = 3000;},1000); rule.pager.scrollD = -9999999; return true;}\",\n\t\t\"style\": \".page_turning>a[href='javascript:PrePage();'], .page_turning>a[href='javascript:NextPage();'], #pageSel, #Pages, .tucao {display: none !important;} .Reduction_left{width: auto !important;}\",\n\t\t\"history\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"js; if(nextChap != 0) {return (location.origin + '/mh/' + comicFolder + '/' + nextChap + '/');}\",\n\t\t\t\"pageE\": \"#PicArea>tbody>tr>td>script\",\n\t\t\t\"insertP\": [\"body\",3],\n\t\t\t\"replaceE\": \".Reduction_left\",\n\t\t\t\"scriptT\": 2,\n\t\t\t\"interval\": 4000\n\t\t},\n\t\t\"function\": {\n\t\t\t\"aF\": \"common.getPics(c,chapId,nv,fn,function (json) {picAy = json.data;if (picAy.length == 0) {return;} else {let _img=''; for (let i=0;i<picAy.length;i++){_img += `<img src=\\\"${picAy[i]}\\\">`;}; fun.getCSS('#PicArea>tbody>tr>td>img').parentElement.insertAdjacentHTML('beforeend',_img);};}, function (info) {Message(info, 2);});\"\n\t\t}\n\t},\n\t\"SF漫画 - 书库\": {\n\t\t\"host\": \"manhua.sfacg.com\",\n\t\t\"url\": \"return fun.isPager()\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".pagebarNext>a\",\n\t\t\t\"pageE\": \"ul.Comic_Pic_List\",\n\t\t\t\"replaceE\": \".pagebar\"\n\t\t}\n\t},\n\t\"快岸漫画\": {\n\t\t\"host\": \"www.kanbook.net\",\n\t\t\"url\": \"if (fun.indexOF(/^\\\\/\\\\d+\\\\/\\\\d+\\\\/\\\\d+/)) {if (fun.getCSS('img.img-fluid')){fun.getCSS('img.img-fluid').style.display = 'none';}; setTimeout(()=>{let _img = '';for (let i = 0; i < imagesUrlArr.length; i++) {_img += `<img class=\\\"img-fluid d-md-block mx-auto\\\" src=\\\"${host + imagesUrlArr[i]}\\\">`;};document.querySelector('.content-wrapper').insertAdjacentHTML('beforeend',_img);},500); return true;}\",\n\t\t\"style\": \".pagination.justify-content-center,#left,#right,p[id^='page_c_'] {display: none !important;} .content-wrapper>img {min-height: 300px;}\",\n\t\t\"history\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"js; if (next_part != '' && next_part != location.pathname) return (location.origin + next_part)\",\n\t\t\t\"pageE\": \"//body/script[not(@src)]\",\n\t\t\t\"insertP\": [\"body\",3],\n\t\t\t\"scriptT\": 2,\n\t\t\t\"interval\": 4000\n\t\t},\n\t\t\"function\": {\n\t\t\t\"aF\": \"let _img = '';for (let i = 0; i < imagesUrlArr.length; i++) {_img += `<img class=\\\"img-fluid d-md-block mx-auto\\\" src=\\\"${host + imagesUrlArr[i]}\\\">`;};fun.getCSS('.content-wrapper').insertAdjacentHTML('beforeend',_img);\"\n\t\t}\n\t},\n\t\"动漫戏说\": {\n\t\t\"host\": \"comic.acgn.cc\",\n\t\t\"url\": \"if(fun.indexOF('/view-')){fun.getAllCSS('.pic[_src][id]').forEach(e => {e.outerHTML = `<div class='pic' _src><img src='${e.getAttribute('_src')}' class='img1'></div>`;}); return true;}\",\n\t\t\"style\": \".img1 {cursor: initial !important;} .btn_wrap,#ss-toolbar {display: none !important;}\",\n\t\t\"history\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"#next_chapter\",\n\t\t\t\"pageE\": \".pic[_src]\",\n\t\t\t\"replaceE\": \"[class^='display_']\",\n\t\t\t\"interval\": 4000\n\t\t},\n\t\t\"function\": {\n\t\t\t\"aF\": \"fun.getAllCSS('.pic[_src][id]').forEach(e => {e.outerHTML = `<div class='pic' _src><img src='${e.getAttribute('_src')}' class='img1'></div>`;});\"\n\t\t}\n\t},\n\t\"动漫戏说 - 分类页\": {\n\t\t\"host\": \"comic.acgn.cc\",\n\t\t\"url\": \"/^\\\\/(cate|pinyin)-/\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a[rel='next']\",\n\t\t\t\"pageE\": \"ul#display > li\",\n\t\t\t\"replaceE\": \"#pagination\"\n\t\t}\n\t},\n\t\"木马漫画 - 阅读页\": {\n\t\t\"host\": \"www.omyschool.com\",\n\t\t\"url\": \"/\\\\/article_detail\\\\//\",\n\t\t\"history\": true,\n\t\t\"pager\": {\n\t\t\t\"type\": 6,\n\t\t\t\"nextL\": \"a.nav_button.next\",\n\t\t\t\"pageE\": \".wrap_img[data-id]\",\n\t\t\t\"replaceE\": \".chapter_nav\",\n\t\t\t\"loadTime\": 2000,\n\t\t\t\"scrollD\": 3000\n\t\t}\n\t},\n\t\"木马漫画 - 分类页\": {\n\t\t\"host\": \"www.omyschool.com\",\n\t\t\"url\": \"return (!fun.indexOF('/article_list/'))\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.next.page-numbers\",\n\t\t\t\"pageE\": \"#book_list>.item\",\n\t\t\t\"replaceE\": \".uk-pagination\"\n\t\t}\n\t},\n\t\"如漫画\": {\n\t\t\"host\": \"www.rumanhua.com\",\n\t\t\"url\": \"return fun.isPager('n')\",\n\t\t\"pager\": {\n\t\t\t\"type\": 6,\n\t\t\t\"nextL\": \".main_control>a\",\n\t\t\t\"pageE\": \".chapter-img-box\",\n\t\t\t\"replaceE\": \".main_control\"\n\t\t}\n\t},\n\t\"开心漫\": {\n\t\t\"host\": \"www.kaixinman.com\",\n\t\t\"url\": \"/^\\\\/chapter\\\\//\",\n\t\t\"pager\": {\n\t\t\t\"type\": 6,\n\t\t\t\"nextL\": \"//div[@class='chapter-toolbar']/a[text()='下一章']\",\n\t\t\t\"pageE\": \".chapter-image\",\n\t\t\t\"replaceE\": \".chapter-toolbar\",\n\t\t\t\"loadTime\": 1000,\n\t\t\t\"scrollD\": 4000\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"pageE.forEach((i)=>{i.className=i.className.replace('loading','');i.style.cssText='background-image: none;';i.innerHTML='<img src=\\\"'+i.dataset.original+'\\\" referrerpolicy=\\\"no-referrer\\\">'}); return fun.src_bF(pageE)\"\n\t\t}\n\t},\n\t\"开心漫 - 列表\": {\n\t\t\"host\": \"www.kaixinman.com\",\n\t\t\"url\": \"/^\\\\/category\\\\//\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".page>li.active.hidden-sm+li>a\",\n\t\t\t\"pageE\": \".vodlist\",\n\t\t\t\"replaceE\": \".page\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE, [1, 'div[data-original]', 'data-original'])\"\n\t\t}\n\t},\n\t\"漫画星球 / 6 漫画\": {\n\t\t\"host\": [\"/\\\\.mhxqiu/\",\"/^www\\\\.sixmh\\\\d\\\\./\"],\n\t\t\"url\": \"if (fun.indexOF(/\\\\/\\\\d+\\\\.html/)) {return true;} else if (fun.indexOF(/\\\\/\\\\d+\\\\/$/)) {setTimeout(()=>{if (document.getElementById('zhankai')) document.getElementById('zhankai').click();},500);}\",\n\t\t\"style\": \".imgFloat_1,.imgFloat_2,.main_control,span.comic-ft {display: none !important;} html,body,#mainView {height: auto !important;} body.view .main ul.comic-contain li{margin:0 auto !important;} .comic-contain .loaded{box-shadow: none !important;}\",\n\t\t\"history\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"#mainControlNext\",\n\t\t\t\"pageE\": \"//script[contains(text(),'eval')]\",\n\t\t\t\"insertP\": [\"body\",3],\n\t\t\t\"replaceE\": \".main_control,h1.chaptername_title,span.title-comicHeading\",\n\t\t\t\"scriptT\": 2,\n\t\t\t\"interval\": 4000,\n\t\t\t\"scrollD\": 3000\n\t\t},\n\t\t\"function\": {\n\t\t\t\"aF\": \"let _img = ''; for (let i=0;i<newImgs.length;i++) {_img += `<li><div style=\\\"display: inline-block;zoom: 1;\\\"><img src=\\\"${newImgs[i]}\\\" class=\\\"loaded lazy\\\" style=\\\"opacity: 1;box-shadow:none;\\\"></div></li>`;}; document.getElementById('comicContain').insertAdjacentHTML('beforeend',_img);\"\n\t\t}\n\t},\n\t\"漫画星球 - 分类页\": {\n\t\t\"host\": [\"/\\\\.mhxqiu/\",\"/^www\\\\.sixmh\\\\d\\\\./\"],\n\t\t\"url\": \"/^\\\\/(sort|rank)\\\\//\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"#thisclass+li>a\",\n\t\t\t\"pageE\": \".cy_list_mh > ul\",\n\t\t\t\"replaceE\": \".NewPages\"\n\t\t}\n\t},\n\t\"漫画星球 / 6 漫画 - 手机版\": {\n\t\t\"host\": [\"/^(m\\\\.)?mhxqiu\\\\d\\\\./\",\"/^(m\\\\.)?sixmh\\\\d\\\\./\"],\n\t\t\"url\": \"/\\\\/\\\\d+\\\\.html$/\",\n\t\t\"style\": \".comic-recommend\",\n\t\t\"history\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"li.next>a\",\n\t\t\t\"pageE\": \"//body/script[contains(text(),'eval')]\",\n\t\t\t\"insertP\": [\"body\",3],\n\t\t\t\"replaceE\": \".end-btns\",\n\t\t\t\"scriptT\": 2,\n\t\t\t\"interval\": 4000\n\t\t},\n\t\t\"function\": {\n\t\t\t\"aF\": \"let _img = ''; for (let i=0;i<newImgs.length;i++) {_img += `<div class=\\\"chapter-img-box\\\"><img src=\\\"${newImgs[i]}\\\"></div>`;}; document.getElementById('mainView_img').insertAdjacentHTML('beforeend',_img);\"\n\t\t}\n\t},\n\t\"风之动漫\": {\n\t\t\"host\": [\"www.fffdm.com\",\"manhua.fffdm.com\"],\n\t\t\"url\": \"fun.isUrlC();return (location.pathname.split('/').length >= 4)\",\n\t\t\"style\": \"#header,footer {display: none !important;} #mhpic {display: block !important;margin: 0 auto !important;}\",\n\t\t\"history\": true,\n\t\t\"pager\": {\n\t\t\t\"type\": 6,\n\t\t\t\"nextL\": \"//div[@class='navigation']/a[text()='下一页'][@href]\",\n\t\t\t\"pageE\": \"#mhpic\",\n\t\t\t\"replaceE\": \".navigation\",\n\t\t\t\"loadTime\": 500\n\t\t}\n\t},\n\t\"包子漫画\": {\n\t\t\"host\": [\"www.czmanga.com\",\"cn.czmanga.com\",\"www.webmota.com\",\"cn.webmota.com\",\"cn.baozimh.com\",\"cn.baozimhcn.com\",\"tw.baozimhcn.com\",\"cn.dzmanga.com\",\"tw.dzmanga.com\",\"www.twmanga.com\",\"www.kukuc.co\",\"cn.kukuc.co\"],\n\t\t\"url\": \"if (fun.indexOF('/chapter/')) {return true;} else if (fun.indexOF('/comic/')) {if (fun.getCSS('#button_show_all_chatper')) {fun.getCSS('#button_show_all_chatper').click();}}\",\n\t\t\"style\": \"#footer,#header {display: none !important;} .header,.bottom-bar {opacity: 0.3;}\",\n\t\t\"history\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".comic-chapter>.next_chapter>a\",\n\t\t\t\"pageE\": \".comic-contain>div\",\n\t\t\t\"replaceE\": \".comic-chapter>.next_chapter,.bottom-bar,.header .title\"\n\t\t}\n\t},\n\t\"包子漫画org\": {\n\t\t\"host\": \"baozimh.org\",\n\t\t\"url\": \"/^\\\\/manga\\\\//\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//span[@class='btn_chapter_pagination' and text()='下一话']/..\",\n\t\t\t\"pageE\": \".gb-inside-container>img[data-src]\",\n\t\t\t\"replaceE\": \"#pagenation\",\n\t\t\t\"scrollD\": 500\n\t\t}\n\t},\n\t\"新新漫画\": {\n\t\t\"host\": [\"www.77mh.nl\",\"www.77mh.xyz\",\"www.77mh.me\"],\n\t\t\"url\": \"if (fun.indexOF(/\\\\/\\\\d+\\\\.html/)) {setTimeout(()=>{let _img = ''; for (let i = 0; i < arr.length; i++){_img += `<img src=\\\"${img_qianz}${arr[i]}\\\">`;}; document.getElementById('comicImg').innerHTML = _img;},500); return true;}\",\n\t\t\"style\": \".page_num,#bdtopbot {display: none !important;} #comicImg > img {display: block !important;margin: 0 auto !important; border: none !important; padding: 0 !important; max-width: 99% !important; height: auto !important;}\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"js; if (nextLink_b != '' && nextLink_b != location.pathname) return (location.origin + nextLink_b)\",\n\t\t\t\"pageE\": \"//script[not(@src)][contains(text(),'eval(')]|//script[contains(@src,'ct.js')]\",\n\t\t\t\"insertP\": [\"body\",3],\n\t\t\t\"scriptT\": 2,\n\t\t\t\"interval\": 4000,\n\t\t\t\"scrollD\": 5000\n\t\t},\n\t\t\"function\": {\n\t\t\t\"aF\": \"setTimeout(()=>{let _img = ''; msg = msg.split('|'); for (let i = 0; i < msg.length; i++){_img += `<img src=\\\"${img_qianz}${msg[i]}\\\">`;}; document.getElementById('comicImg').insertAdjacentHTML('beforeend',_img);},1000)\"\n\t\t}\n\t},\n\t\"新新漫画 - 分类页\": {\n\t\t\"host\": [\"www.77mh.nl\",\"so.77mh.nl\",\"www.77mh.xyz\",\"so.77mh.xyz\",\"www.77mh.me\",\"so.77mh.me\"],\n\t\t\"url\": \"if (fun.indexOF('/colist_')) {setTimeout(()=>{if (document.getElementById('listmore1')) document.getElementById('listmore1').click();},500)}else{return true;}\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.current+a,a.next\",\n\t\t\t\"pageE\": \".ar_list_co>ul\",\n\t\t\t\"replaceE\": \".pages_s\"\n\t\t}\n\t},\n\t\"笔屋漫画 - 分类页\": {\n\t\t\"host\": \"www.biwumh.com\",\n\t\t\"url\": \"/^\\\\/l\\\\//\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"#pagelink>strong+a\",\n\t\t\t\"pageE\": \"#sitebox\",\n\t\t\t\"replaceE\": \"#pagelink\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE,[0,'img[_src]','_src'])\"\n\t\t}\n\t},\n\t\"笔屋漫画\": {\n\t\t\"host\": \"www.biwumh.com\",\n\t\t\"url\": \"/^\\\\/\\\\d+\\\\/\\\\d+(_\\\\d+)?\\\\.html$/\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//p[@class='mlfy_page']/a[text()='下一页' or text()='下一章']\",\n\t\t\t\"pageE\": \"#TextContent>img\",\n\t\t\t\"replaceE\": \".mlfy_page\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE)\"\n\t\t}\n\t},\n\t\"鬼罗丽漫画\": {\n\t\t\"host\": [\"www.gllmh8.com\",\"m.gllmh8.com\"],\n\t\t\"url\": \"/^\\\\/./\",\n\t\t\"style\": \".article-content img {visibility: visible; opacity: 1;display: block;} #newsArticle img {margin-bottom: -1px;} .swiper-container {display: none !important;}\",\n\t\t\"history\": true,\n\t\t\"pager\": {\n\t\t\t\"type\": 3,\n\t\t\t\"nextL\": \"li.thisclass+li>a\",\n\t\t\t\"pageE\": \".article-content img,#newsArticle img,.listl>ul,ul.news_list_1\",\n\t\t\t\"replaceE\": \".pagination,.pages,.page\"\n\t\t}\n\t},\n\t\"古风漫画网 / 优酷漫画 / 36 漫画 / 360 漫画 / 漫漫台 / 古漫画 / 前未漫画 / 下拉式漫画 / 漫画1234 - 分类页\": {\n\t\t\"host\": [\"www.gufengmh.com\",\"/^www\\\\.gufengmh\\\\d/\",\"/^www\\\\.ykmh\\\\.[a-z]+$/\",\"www.123gf.com\",\"36manga.com\",\"www.36manga.com\",\"36manhua.com\",\"www.36manhua.com\",\"www.36man.cc\",\"www.manmantai.com\",\"www.xlsmh.com\",\"www.gmh1234.com\"],\n\t\t\"url\": \"/^\\\\/(comic\\\\/)?(update|list|search)/\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"li.next>a\",\n\t\t\t\"pageE\": \"li.item-lg,.list-comic\",\n\t\t\t\"replaceE\": \"ul.pagination\"\n\t\t}\n\t},\n\t\"古风漫画网 / 优酷漫画 / 36 漫画 / 360 漫画 / 漫漫台 / 古漫画 / 前未漫画 / 下拉式漫画 / 漫画1234\": {\n\t\t\"host\": [\"www.gufengmh.com\",\"/^www\\\\.gufengmh\\\\d/\",\"/^www\\\\.ykmh\\\\.[a-z]+$/\",\"www.123gf.com\",\"36manga.com\",\"www.36manga.com\",\"36manhua.com\",\"www.36manhua.com\",\"www.36man.cc\",\"www.manmantai.com\",\"www.xlsmh.com\",\"www.gmh1234.com\"],\n\t\t\"url\": \"if (fun.indexOF(/\\\\/\\\\d+\\\\.html$/)) {if (/^www\\\\.(123gf|ykmh|izhegu|qianwee|manmantai)\\\\.[a-z]+$/.test(location.hostname)|| location.hostname.indexOf('36man') != -1) {if (localStorage.getItem('chapterScroll') != '\\\"pagination\\\"') {localStorage.setItem('chapterScroll','\\\"pagination\\\"'); location.reload();} else {setTimeout(()=>{let _img = '',host = SinMH.getResHostDomain(); if (/^www\\\\.(ykmh|izhegu)\\\\.[a-z]+$/.test(location.hostname)) {chapterPath=''}else if (location.hostname.indexOf('36man') == -1||location.hostname=='www.123gf.com'||location.hostname=='www.gmh1234.com'){host+='/'}; if (/^www\\\\.(ykmh)\\\\.[a-z]+$/.test(location.hostname) || location.hostname == 'www.36man.cc' ||(location.hostname == 'www.manmantai.com' && chapterImages[0].slice(0,4) == 'http')){host=''}; for (let i=0;i<chapterImages.length;i++){_img += `<img src=\\\"${host}${chapterPath}${chapterImages[i]}\\\">`;}; document.getElementById('images').innerHTML = _img;},500); return true;}} else if (localStorage.getItem('chapterScroll') != '\\\"scroll\\\"') {localStorage.setItem('chapterScroll','\\\"scroll\\\"'); location.reload();}else{return true}}\",\n\t\t\"style\": \".img_land_prev,.img_land_next,#sider-left,#sider-right,p.img_info,.tc,.chapter-view + .w996,.chapter-view>div[style]:not([id]):not([class]) {display: none !important;} #images{min-height: 6000px !important;} #images>img {display: inline-block !important;min-height: 400px;margin: 0 auto !important;border: none !important;padding: 0 !important;max-width: 99% !important;height: auto !important;}\",\n\t\t\"history\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"js; let url = comicUrl.replace('.html','/').replace('http://',location.protocol+'//') + nextChapterData.id + '.html'; if (nextChapterData.id != null && url && url != '.html' && url != location.href) return url\",\n\t\t\t\"pageE\": \"//script[contains(text(),'chapterImages')]\",\n\t\t\t\"insertP\": [\"body\",3],\n\t\t\t\"scriptT\": 2,\n\t\t\t\"interval\": 4000,\n\t\t\t\"scrollD\": 4000\n\t\t},\n\t\t\"function\": {\n\t\t\t\"aF\": \"let _img = '',host = SinMH.getResHostDomain(); if (/^www\\\\.(ykmh|100fanwo|izhegu|xlsmh)\\\\.[a-z]+$/.test(location.hostname)) {chapterPath=''}else if (location.hostname.indexOf('36man') == -1||location.hostname=='www.123gf.com'||location.hostname=='www.gmh1234.com'){host+='/'}; if (/^www\\\\.(ykmh)\\\\.[a-z]+$/.test(location.hostname) || location.hostname == 'www.36man.cc' ||(location.hostname == 'www.manmantai.com' && chapterImages[0].slice(0,4) == 'http') ||location.hostname == 'www.xlsmh.com'){host=''};  for (let i=0;i<chapterImages.length;i++){_img += `<img src=\\\"${host}${chapterPath}${chapterImages[i]}\\\">`;}; document.getElementById('images').insertAdjacentHTML('beforeend',_img);\"\n\t\t}\n\t},\n\t\"爱漫之家 / 733 动漫\": {\n\t\t\"host\": [\"www.52fuman.xyz\",\"www.733.so\"],\n\t\t\"url\": \"if (fun.indexOF(/\\\\/\\\\d+\\\\.html$/)) {let _img='',imgArr=qTcms_S_m_murl.split('$qingtiandy$'); for (let i=0;i<imgArr.length;i++){if(location.hostname == 'www.733.so'){imgArr[i]=f_qTcms_Pic_curUrl_realpic(imgArr[i])};_img += `<img src=\\\"${imgArr[i]}\\\">`;}; fun.getCSS('#qTcms_Pic_middle td').innerHTML=_img; return true}\",\n\t\t\"style\": \"#sider-left,#sider-right,.tc.w996 {display: none !important;} #images{min-height: 6000px !important;} #qTcms_Pic_middle img {display: inline-block !important;min-height: 400px;margin: 0 auto !important;border: none !important;padding: 0 !important;max-width: 99% !important;height: auto !important;}\",\n\t\t\"history\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"js; if (qTcms_Pic_nextArr.slice(0,10) != 'javascript') return location.origin + qTcms_Pic_nextArr\",\n\t\t\t\"pageE\": \"//script[contains(text(),'qTcms_S_m_murl')]\",\n\t\t\t\"insertP\": [\"body\",3],\n\t\t\t\"scriptT\": 2,\n\t\t\t\"interval\": 4000,\n\t\t\t\"scrollD\": 4000\n\t\t},\n\t\t\"function\": {\n\t\t\t\"aF\": \"let _img='',imgArr=base64_decode(qTcms_S_m_murl_e).split('$qingtiandy$'); for (let i=0;i<imgArr.length;i++){if(location.hostname == 'www.733.so'){imgArr[i]=f_qTcms_Pic_curUrl_realpic(imgArr[i])};_img += `<img src=\\\"${imgArr[i]}\\\">`;}; fun.getCSS('#qTcms_Pic_middle td').insertAdjacentHTML('beforeend',_img);\"\n\t\t}\n\t},\n\t\"二次元动漫\": {\n\t\t\"host\": \"www.2animx.com\",\n\t\t\"url\": \"if(fun.indexOF('/index-look-')){setTimeout(()=>{window.page=function(){return false}},2000);return true}\",\n\t\t\"style\": \"#img_ad_img>img[alt] {max-width: 99% !important;display: block !important;margin: 0 auto !important;}\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//a[text()='下一頁' or text()='下一章'][not(starts-with(@href,'javascript'))]\",\n\t\t\t\"pageE\": \"#ComicPic\",\n\t\t\t\"replaceE\": \".c\",\n\t\t\t\"scrollD\": 4000\n\t\t}\n\t},\n\t\"砂之船动漫家\": {\n\t\t\"host\": \"www.szcdmj.com\",\n\t\t\"url\": \"if (fun.indexOF('/szcchapter/')) {return true;} else if (fun.indexOF('/szcbook/')) {if (fun.getCSS('#detail-list-more')) {fun.getCSS('#detail-list-more').click();}}\",\n\t\t\"style\": \".header {opacity: 0.3 !important;}\",\n\t\t\"history\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//div[@class='fanye'][1]/a[@href][text()='下一页' or text()='下一话']\",\n\t\t\t\"pageE\": \".comicpage\",\n\t\t\t\"replaceE\": \".fanye,h1.title\",\n\t\t\t\"interval\": 1000\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE)\"\n\t\t}\n\t},\n\t\"砂之船动漫家 - 分类/搜索页\": {\n\t\t\"host\": \"www.szcdmj.com\",\n\t\t\"url\": \"/^\\\\/(szcbolist|update)/\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"#nextPage\",\n\t\t\t\"pageE\": \"ul.mh-list > li\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t}\n\t},\n\t\"G站漫画\": {\n\t\t\"host\": [\"manhuafree.com\",\"manhuascans.org\"],\n\t\t\"url\": \"return fun.isPager('n')\",\n\t\t\"pager\": {\n\t\t\t\"type\": 6,\n\t\t\t\"nextL\": \"#nextChapterLink\",\n\t\t\t\"pageE\": \"#chapcontent>div\",\n\t\t\t\"replaceE\": \"#nextChapterLink,#preChapterLink\",\n\t\t\t\"loadTime\": 1000,\n\t\t\t\"scrollD\": 4000\n\t\t}\n\t},\n\t\"G站漫画 - 分类页\": {\n\t\t\"host\": [\"manhuafree.com\",\"manhuascans.org\"],\n\t\t\"url\": \"return fun.isPager()\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a[aria-label^=下]\",\n\t\t\t\"pageE\": \".cardlist>div\",\n\t\t\t\"replaceE\": \".cardlist+div\"\n\t\t}\n\t},\n\t\"COLAMANGA 漫画\": {\n\t\t\"host\": \"www.colamanga.com\",\n\t\t\"url\": \"if (fun.indexOF('.html')){if (!(fun.getCookie('mh_readmode') === '' || fun.getCookie('mh_readmode') === '3')) {document.cookie='mh_readmode=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/'; location.reload();}; return true;} else if (fun.indexOF(/\\\\/\\\\d+\\\\/$/)) {setTimeout(()=>{if (document.querySelector('a.website-display-all')) document.querySelector('a.website-display-all').click();},500);}\",\n\t\t\"style\": \".mh_readend,.mh_footpager,.mh_readmode,.fed-foot-info\",\n\t\t\"iframe\": true,\n\t\t\"history\": true,\n\t\t\"pager\": {\n\t\t\t\"type\": 5,\n\t\t\t\"nextL\": \"//a[contains(@class,'read_page_link') and contains(string(),'下一章')][not(contains(@href,'javascript'))]\",\n\t\t\t\"interval\": 4000,\n\t\t\t\"scrollD\": 500\n\t\t}\n\t},\n\t\"COLAMANGA 漫画 - 分类页\": {\n\t\t\"host\": \"www.colamanga.com\",\n\t\t\"url\": \"return (fun.lp() == '/show' || fun.lp() == '/search')\",\n\t\t\"blank\": 4,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"js; return fun.getNextEP('.fed-page-info a.fed-btns-green+a[onclick]','page=',/page=\\\\d+/)\",\n\t\t\t\"pageE\": \"ul.fed-list-info > li,dl.fed-deta-info\",\n\t\t\t\"replaceE\": \".fed-page-info\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE,[1,'a[data-original]','data-original'])\"\n\t\t}\n\t},\n\t\"flamescans 漫画\": {\n\t\t\"host\": \"flamescans.org\",\n\t\t\"url\": \"return fun.getCSS('#readerarea')\",\n\t\t\"pager\": {\n\t\t\t\"type\": 3,\n\t\t\t\"nextL\": \".ch-next-btn:not(.disabled)\",\n\t\t\t\"pageE\": \"id('readerarea')/p|//script[starts-with(text(),'ts_reader.run(')]\",\n\t\t\t\"scriptT\": 2,\n\t\t\t\"replaceE\": \".nextprev\",\n\t\t\t\"scrollE\": \".chnav.cbot\",\n\t\t\t\"scrollD\": 3000\n\t\t}\n\t},\n\t\"WEBTOON漫画\": {\n\t\t\"host\": \"www.webtoons.com\",\n\t\t\"url\": \"/\\\\/viewer\\\\?/\",\n\t\t\"style\": \"#_bottomDisplay,#footer{display: none !important;}#content{padding-bottom: 0 !important;}\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".pg_next._nextEpisode\",\n\t\t\t\"pageE\": \"#_imageList>img\",\n\t\t\t\"replaceE\": \"#toolbar>.paginate,#_bottomEpisodeList\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE, [0,'img[data-url]','data-url'])\",\n\t\t\t\"aF\": \"fun.getAllCSS('#_bottomEpisodeList img[data-url][src$=png]').forEach(i=>{i.src=i.dataset.url;});\"\n\t\t}\n\t},\n\t\"MYCOMIC\": {\n\t\t\"host\": \"mycomic.com\",\n\t\t\"url\": \"/^\\\\/chapters\\\\/\\\\d+/\",\n\t\t\"style\": \".-mx-4.sm\\\\:mx-0,.-mx-4.sm\\\\:mx-0+div {display: none !important;} header {opacity: 0.4;}\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"div[data-flux-button-group]>a:last-child\",\n\t\t\t\"pageE\": \"img.page\",\n\t\t\t\"replaceE\": \"div[data-flux-button-group]\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE)\"\n\t\t}\n\t},\n\t\"MYCOMIC - 资料页\": {\n\t\t\"host\": \"mycomic.com\",\n\t\t\"url\": \"/^\\\\/comics([^\\\\/]|$)/\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"span[aria-current]+a\",\n\t\t\t\"pageE\": \".group.relative\",\n\t\t\t\"replaceE\": \"nav[role=navigation]\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE)\"\n\t\t}\n\t},\n\t\"起点中文\": {\n\t\t\"host\": \"www.qidian.com\",\n\t\t\"url\": \"/^\\\\/(all|rank|finish|free)/\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//a[contains(@class,'-pagination-current')]/../following-sibling::li[1]/a\",\n\t\t\t\"pageE\": \"#book-img-text>ul\",\n\t\t\t\"replaceE\": \"#page-container\"\n\t\t}\n\t},\n\t\"起点图数据\": {\n\t\t\"host\": \"www.qidiantu.com\",\n\t\t\"url\": \"/^\\\\/info\\\\/\\\\d+/\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".pagination>.active+li>a\",\n\t\t\t\"pageE\": \".alert-info~.panel.panel-default\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t}\n\t},\n\t\"起点图数据 - 书单\": {\n\t\t\"host\": \"www.qidiantu.com\",\n\t\t\"url\": \"/^\\\\/booklist\\\\/\\\\d+/\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//a[@class='btn btn-primary'][text()='后十本'][1]\",\n\t\t\t\"pageE\": \".well.well-sm.table-responsive\",\n\t\t\t\"replaceE\": \"//a[@class='btn btn-primary'][text()='后十本'][1]\"\n\t\t}\n\t},\n\t\"七猫中文 - 阅读页\": {\n\t\t\"host\": \"www.qimao.com\",\n\t\t\"url\": \"return (fun.indexOF(/\\\\/shuku\\\\/\\\\d+-\\\\d+\\\\//) || fun.indexOF('/reader/index/'))\",\n\t\t\"history\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//div[@class='reader-footer']/a[text()='下一章']\",\n\t\t\t\"pageE\": \".article>p\",\n\t\t\t\"replaceE\": \".reader-footer\"\n\t\t}\n\t},\n\t\"下书网\": {\n\t\t\"host\": \"mip.xiashucom.com\",\n\t\t\"url\": \"/\\\\/yue_/\",\n\t\t\"history\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.pt-nextchapter\",\n\t\t\t\"pageE\": \".pt-read-text>p\",\n\t\t\t\"replaceE\": \".pt-read-btn\"\n\t\t}\n\t},\n\t\"下书网 - 手机版\": {\n\t\t\"host\": \"wap.xiashucom.com\",\n\t\t\"url\": \"/\\\\/yue_/\",\n\t\t\"history\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".pt-nextchapter>a\",\n\t\t\t\"pageE\": \"#pt-pop\",\n\t\t\t\"replaceE\": \".border-c\"\n\t\t}\n\t},\n\t\"御书网\": {\n\t\t\"host\": \"www.yushubo.com\",\n\t\t\"url\": \"/^\\\\/read_/\",\n\t\t\"style\": \".readbg.mt10\",\n\t\t\"history\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//div[contains(@class,'articlebtn')]/a[contains(text(),'下一页') or contains(text(),'下一章')]\",\n\t\t\t\"pageE\": \"#BookText\",\n\t\t\t\"insertP\": [\"#BookText\",6],\n\t\t\t\"replaceE\": \".articlebtn\"\n\t\t}\n\t},\n\t\"御书网 - 分类页\": {\n\t\t\"host\": \"www.yushubo.com\",\n\t\t\"url\": \"/^\\\\/(lists|all)\\\\//\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"id('pager')//a[contains(text(),'下一页')]\",\n\t\t\t\"pageE\": \"ul.search-list,.books-list\",\n\t\t\t\"replaceE\": \"#pager\"\n\t\t}\n\t},\n\t\"御书网 - 手机版\": {\n\t\t\"host\": \"m.yushubo.com\",\n\t\t\"url\": \"/^\\\\/read_/\",\n\t\t\"style\": \".member,iframe,[data-url],article[id^='article'],[style*='position:']\",\n\t\t\"history\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//a[@class='btn-next'][text()='下一页' or text()='下一章']\",\n\t\t\t\"pageE\": \".read-section\",\n\t\t\t\"insertP\": [\".read-section\",6],\n\t\t\t\"replaceE\": \".chapter-porn\"\n\t\t}\n\t},\n\t\"搜小说\": {\n\t\t\"host\": \"www.soxscc.org\",\n\t\t\"url\": \"if (fun.indexOF(/\\\\/\\\\d{4,}.html/)) {fun.xs_bF(fun.getAllCSS('.content'),[/(<br>)?(&nbsp;)+您可以在百度.+?最新章节！/,'']); return true}\",\n\t\t\"style\": \".content>p,img\",\n\t\t\"history\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//font[contains(text(),'下一章')]/following-sibling::a[1]\",\n\t\t\t\"pageE\": \".content\",\n\t\t\t\"insertP\": [\".content\",6],\n\t\t\t\"insertP6Br\": true,\n\t\t\t\"replaceE\": \".pagego\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.xs_bF(pageE,[/(<br>)?(&nbsp;)+您可以在百度.+?最新章节！/,''])\"\n\t\t}\n\t},\n\t\"和图书\": {\n\t\t\"host\": [\"hetushu.com\",\"www.hetushu.com\",\"hetubook.com\",\"www.hetubook.com\"],\n\t\t\"url\": \"/^\\\\/book\\\\/\\\\d+\\\\/\\\\d+\\\\.html$/\",\n\t\t\"style\": \"body,#center,#cbox,#content {overflow: initial !important;position: initial !important;} #right,.sidebarbox{position: fixed !important;right: 0;} #Autopage_iframe{display: none;}\",\n\t\t\"pager\": {\n\t\t\t\"type\": 6,\n\t\t\t\"nextL\": \"#next\",\n\t\t\t\"pageE\": \"#content>h2:not(.h2)~*\",\n\t\t\t\"replaceE\": \".next,.pre\",\n\t\t\t\"loadTime\": 500\n\t\t}\n\t},\n\t\"owlook\": {\n\t\t\"host\": [\"www.owlook.com.cn\",\"www1.owlook.com.cn\",\"owlook.com.cn\"],\n\t\t\"url\": \"/^\\\\/owllook_content/\",\n\t\t\"history\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//div[@class='pre_next']/a[contains(text(),'下一')]\",\n\t\t\t\"pageE\": \"#chaptercontent\",\n\t\t\t\"insertP\": [\"#chaptercontent\",6],\n\t\t\t\"replaceE\": \".pre_next\"\n\t\t}\n\t},\n\t\"无弹窗小说网\": {\n\t\t\"host\": \"www.530p.com\",\n\t\t\"url\": \"return (fun.indexOF(/\\\\/\\\\d{4,}\\\\.htm/))\",\n\t\t\"history\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"#nextLink\",\n\t\t\t\"pageE\": \"#cp_content\",\n\t\t\t\"insertP\": [\"#cp_content\",6],\n\t\t\t\"replaceE\": \"#pg_bar\"\n\t\t}\n\t},\n\t\"读书族小说网\": {\n\t\t\"host\": \"m.xiaoshuo77.net\",\n\t\t\"url\": \"if (fun.indexOF('.html')) {fun.xs_bF(fun.getAllCSS('#novelcontent'),[/(<br>)?(&nbsp;)+内容未完，下一页.*$|【本章阅读.*$/,'<br>']); return true}\",\n\t\t\"style\": \"#novelcontent>p,img\",\n\t\t\"history\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".page_chapter a.p4\",\n\t\t\t\"pageE\": \"#novelcontent\",\n\t\t\t\"insertP\": [\"#novelcontent\",6],\n\t\t\t\"replaceE\": \".page_chapter\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.xs_bF(pageE,[/(<br>)?(&nbsp;)+内容未完，下一页.*$|【本章阅读.*$/,'<br>'])\"\n\t\t}\n\t},\n\t\"笔趣阁 - cnhxfilm.com\": {\n\t\t\"host\": \"www.cnhxfilm.com\",\n\t\t\"url\": \"/\\\\d+\\\\/\\\\d+\\\\.html/\",\n\t\t\"history\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"#next1\",\n\t\t\t\"pageE\": \"article.font_max\",\n\t\t\t\"insertP\": [\"article.font_max\",6],\n\t\t\t\"replaceE\": \".nav-bottom\"\n\t\t}\n\t},\n\t\"铅笔小说\": {\n\t\t\"host\": [\"www.23qb.com\",\"www.23qb.net\",\"m.x23qb.com\"],\n\t\t\"url\": \"if (fun.indexOF(/\\\\/book\\\\/\\\\d+\\\\/.+\\\\.html/)) {fun.xs_bF(fun.getAllCSS('#mlfy_main_text>*'),[/（继续下一页）.+|铅笔小说.+/,'']); return true}\",\n\t\t\"history\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"js; if (ReadParams.url_next.slice(ReadParams.url_next.length-5) === '.html') return (location.origin + ReadParams.url_next)\",\n\t\t\t\"pageE\": \"id('TextContent')/p | //script[contains(text(),'ReadParams')]\",\n\t\t\t\"replaceE\": \".chepnav\",\n\t\t\t\"scriptT\": 2\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.xs_bF(pageE,[/.*继续下一页.*|.*铅笔小说.*/,''])\"\n\t\t}\n\t},\n\t\"铅笔小说 - 分类页\": {\n\t\t\"host\": [\"www.23qb.com\",\"www.23qb.net\",\"m.x23qb.com\"],\n\t\t\"url\": \"return (fun.lp() != '/' && !fun.indexOF(/\\\\/book\\\\/\\\\d+\\\\//))\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".pages a.next,.pages>strong+a\",\n\t\t\t\"pageE\": \"#sitebox>dl\",\n\t\t\t\"replaceE\": \".pages\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE,[0,'img[_src]','_src'])\"\n\t\t}\n\t},\n\t\"7017k小说网\": {\n\t\t\"host\": \"www.7017k.net\",\n\t\t\"url\": \"/\\\\/\\\\d+\\\\.html$/\",\n\t\t\"history\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".next>a\",\n\t\t\t\"pageE\": \".box_box\",\n\t\t\t\"insertP\": [\".box_box\",6],\n\t\t\t\"insertP6Br\": true,\n\t\t\t\"replaceE\": \".u\"\n\t\t}\n\t},\n\t\"柒六八文学小说网\": {\n\t\t\"host\": [\"www.778668.com\",\"m.778668.com\"],\n\t\t\"url\": \"if(fun.indexOF(/^\\\\/.+\\\\/\\\\d+_\\\\d+\\\\.html$/)){fun.xs_bF(fun.getAllCSS('.pt-read-text>p,#pt-pop>a>font>p'),[/(^微信小程序.+|本章未完，请点击.+页$)/,'']); return true}\",\n\t\t\"retry\": 3000,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.pt-nextchapter[href$='.html'],.pt-nextchapter>a[href$='.html']\",\n\t\t\t\"pageE\": \".pt-read-text>p,#pt-pop>a>font>p\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.xs_bF(pageE,[/(^微信小程序.+|本章未完，请点击.+页$)/,''])\"\n\t\t}\n\t},\n\t\"TXT小说网 exotxt.net\": {\n\t\t\"host\": \"www.exotxt.net\",\n\t\t\"url\": \"/^\\\\/\\\\d+\\\\/\\\\d+\\\\/\\\\d+(_\\\\d+)?\\\\.html\",\n\t\t\"style\": \".info_dv1>p:last-of-type,#tag_news\",\n\t\t\"pager\": {\n\t\t\t\"type\": 6,\n\t\t\t\"nextL\": \"//div[@class='read_btn']/a[text()='下一章'][not(contains(@href,'index.html'))]\",\n\t\t\t\"pageE\": \".info_dv1>p:not(:last-of-type)\",\n\t\t\t\"replaceE\": \".read_btn\"\n\t\t}\n\t},\n\t\"繁体小说 www.novels.com.tw\": {\n\t\t\"host\": \"www.novels.com.tw\",\n\t\t\"url\": \"/\\\\d\\\\.html\\\\?aid/\",\n\t\t\"style\": \".container>aside\",\n\t\t\"pager\": {\n\t\t\t\"type\": 6,\n\t\t\t\"nextL\": \"#next_url\",\n\t\t\t\"pageE\": \"#article.content>p\",\n\t\t\t\"replaceE\": \".read_nav\",\n\t\t\t\"loadTime\": 1000,\n\t\t\t\"scrollD\": 1000\n\t\t}\n\t},\n\t\"得奇小说网\": {\n\t\t\"host\": \"www.deqixs.com\",\n\t\t\"url\": \"return fun.isPager()\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//div[@class='prenext']/span/a[text()='下一页' or text()='下一章']|//div[@class='page']//a[text()='下一页']\",\n\t\t\t\"pageE\": \".con>p,.item\",\n\t\t\t\"replaceE\": \".prenext,.page\"\n\t\t}\n\t},\n\t\"爱下电子书\": {\n\t\t\"host\": \"ixdzs8.com\",\n\t\t\"url\": \"/^\\\\/read\\\\/.+\\\\.html$/\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".chapter-next\",\n\t\t\t\"pageE\": \".page-content>section\",\n\t\t\t\"replaceE\": \"chapter-act\"\n\t\t}\n\t},\n\t\"飘天文学\": {\n\t\t\"host\": \"www.piaotia.com\",\n\t\t\"url\": \"/^\\\\/html\\\\/\\\\d+\\\\/\\\\d+\\\\/\\\\d+\\\\.html\",\n\t\t\"style\": \"#content>*:not(br):not(:nth-child(1))\",\n\t\t\"pager\": {\n\t\t\t\"type\": 6,\n\t\t\t\"nextL\": \"(//a[contains(text(), '下一章')])[last()]\",\n\t\t\t\"pageE\": \"#content\",\n\t\t\t\"insertP\": [\"#content\",6],\n\t\t\t\"replaceE\": \".bottomlink\",\n\t\t\t\"loadTime\": 500\n\t\t}\n\t},\n\t\"皇帝之家\": {\n\t\t\"host\": \"www.huangdizhijia.com\",\n\t\t\"url\": \"/chapter-\\\\d+\\\\.html/\",\n\t\t\"history\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//div[contains(@class,'tag-view-type')]//a[text()='下一章']\",\n\t\t\t\"pageE\": \".tagCol>p\",\n\t\t\t\"insertP\": [\".tagCol>p\",6],\n\t\t\t\"replaceE\": \".tag-view-type\"\n\t\t}\n\t},\n\t\"皇帝之家 - 分类标签搜索页\": {\n\t\t\"host\": \"www.huangdizhijia.com\",\n\t\t\"url\": \"return (fun.indexOF('/male/') || fun.indexOF('/tags.php') || fun.indexOF('/search.php'))\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//div[contains(@class,'paginator')]//a[contains(text(),'下一页')]\",\n\t\t\t\"pageE\": \"li.subject-item\",\n\t\t\t\"replaceE\": \".paginator\"\n\t\t}\n\t},\n\t\"轻之文库\": {\n\t\t\"host\": \"www.linovel.net\",\n\t\t\"url\": \"if (fun.indexOF(/\\\\/book\\\\/\\\\d+\\\\/.+\\\\.html/)) {fun.insStyle('.reward-section {display: none !important;}');} else if (fun.indexOF('/cat/')) {return true;}\",\n\t\t\"history\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//ul[@class='pagination']/li/a[contains(text(),'下一页')]\",\n\t\t\t\"pageE\": \".rank-book-list>div\",\n\t\t\t\"replaceE\": \"ul.pagination\"\n\t\t}\n\t},\n\t\"话本小说网\": {\n\t\t\"host\": \"www.ihuaben.com\",\n\t\t\"url\": \"return (fun.indexOF(/\\\\/\\\\d{4,}.html/))\",\n\t\t\"style\": \".discription>p>i,img,#container,#BDBannerBottom_PC,iframe,.navFooter {display: none !important;} .discription>p {font-size: 16px; min-height: 24px; padding-bottom: 24px;}\",\n\t\t\"history\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"id('preAndNextBar')/a[contains(text(),'下一章')]\",\n\t\t\t\"pageE\": \"#contentsource>p\",\n\t\t\t\"insertP\": [\".discription\",3],\n\t\t\t\"replaceE\": \"#preAndNextBar\"\n\t\t}\n\t},\n\t\"哔哩轻小说\": {\n\t\t\"host\": \"www.linovelib.com\",\n\t\t\"url\": \"if (fun.indexOF(/\\\\/novel\\\\/\\\\d+\\\\/.+\\\\.html/)){setTimeout(()=>{let ac=fun.getCSS('#TextContent');if(ac){ac.classList.add('a123456');ac.classList.remove('adv-box');ac.style='display: block !important;';let ax=fun.getXpath(\\\"//head/style[not(@type)][normalize-space()='']\\\");document.head.appendChild(document.createElement('style')).textContent = Array.from(ax.sheet.cssRules).map(r => {return r.cssText;}).join(' ').replaceAll('#TextContent ','.a123456#TextContent ');ax.remove();}},300);return true;}\",\n\t\t\"history\": true,\n\t\t\"pager\": {\n\t\t\t\"type\": 6,\n\t\t\t\"nextL\": \"//div[@class='mlfy_page']/a[contains(text(),'下一页') or contains(text(),'下一章')]\",\n\t\t\t\"pageE\": \"//div[@id='TextContent'] | //head/style[not(@type)][normalize-space()='']\",\n\t\t\t\"replaceE\": \".mlfy_page\",\n\t\t\t\"loadTime\": 1000\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"const ra='a'+Math.random().toString(36).slice(-6);pageE.forEach(function (a) {if(a.tagName=='STYLE'){a.textContent=Array.from(a.sheet.cssRules).map(r => {return r.cssText;}).join(' ').replaceAll('#TextContent ','.'+ra+'#TextContent ');}else if(a.tagName=='DIV'){a.classList.add(ra);a.classList.remove('adv-box');a.style='display: block !important;'};}); return pageE\",\n\t\t\t\"aF\": \"document.body.appendChild(document.createElement('script')).textContent='yuedu()'\"\n\t\t}\n\t},\n\t\"哔哩轻小说 - 文库\": {\n\t\t\"host\": \"www.linovelib.com\",\n\t\t\"url\": \"/\\\\/wenku\\\\//\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"#pagelink>a.next\",\n\t\t\t\"pageE\": \".store_collist>div.bookbox\",\n\t\t\t\"replaceE\": \"#pagelink\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE)\"\n\t\t}\n\t},\n\t\"哔哩轻小说 - 全本\": {\n\t\t\"host\": \"www.linovelib.com\",\n\t\t\"url\": \"return (fun.indexOF('/top/') || fun.indexOF('/topfull/') || fun.indexOF('toplist.php'))\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"#pagelink>a.next\",\n\t\t\t\"pageE\": \".rankpage_box>div.rank_d_list\",\n\t\t\t\"replaceE\": \"#pagelink\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE)\"\n\t\t}\n\t},\n\t\"哔哩轻小说 - 手机版\": {\n\t\t\"host\": \"www.bilinovel.com\",\n\t\t\"url\": \"if (fun.indexOF(/\\\\/novel\\\\/\\\\d+\\\\/.+\\\\.html/)){setTimeout(()=>{let ac=fun.getCSS('#acontent');if(ac){ac.classList.add('a123456');ac.classList.remove('adv-box');ac.style='display: block !important;';let ax=fun.getXpath(\\\"//head/style[not(@type)][normalize-space()='']\\\");document.head.appendChild(document.createElement('style')).textContent = Array.from(ax.sheet.cssRules).map(r => {return r.cssText;}).join(' ').replaceAll('#acontent ','.a123456#acontent ');ax.remove();}},300);return true;}\",\n\t\t\"history\": true,\n\t\t\"pager\": {\n\t\t\t\"type\": 6,\n\t\t\t\"nextL\": \"js; if (ReadParams.url_next.slice(ReadParams.url_next.length-5) === '.html') return (location.origin + ReadParams.url_next)\",\n\t\t\t\"pageE\": \"//div[@id='acontent'] | //body/script[contains(text(),'var ReadParams')] | //head/style[not(@type)][normalize-space()='']\",\n\t\t\t\"scriptT\": 2,\n\t\t\t\"loadTime\": 1000\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"const ra='a'+Math.random().toString(36).slice(-6);pageE.forEach(function (a) {if(a.tagName=='STYLE'){a.textContent=Array.from(a.sheet.cssRules).map(r => {return r.cssText;}).join(' ').replaceAll('#acontent ','.'+ra+'#acontent ');}else if(a.tagName=='DIV'){a.classList.add(ra);a.classList.remove('adv-box');a.style='display: block !important;'};}); return pageE\"\n\t\t}\n\t},\n\t\"哔哩轻小说 - 手机版 - 文库\": {\n\t\t\"host\": \"www.bilinovel.com\",\n\t\t\"url\": \"/\\\\/(wenku|sa)\\\\//\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"#pagelink>strong+a ,#pagelink a.next\",\n\t\t\t\"pageE\": \"ol.book-ol>li\",\n\t\t\t\"replaceE\": \"#pagelink\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE)\"\n\t\t}\n\t},\n\t\"刺猬猫阅读\": {\n\t\t\"host\": \"www.ciweimao.com\",\n\t\t\"url\": \"/^\\\\/chapter\\\\/\\\\d+/\",\n\t\t\"pager\": {\n\t\t\t\"type\": 6,\n\t\t\t\"nextL\": \"#J_BtnPageNext\",\n\t\t\t\"pageE\": \"#J_BookRead>p\",\n\t\t\t\"replaceE\": \".book-read-page\",\n\t\t\t\"loadTime\": 1000\n\t\t}\n\t},\n\t\"SF轻小说\": {\n\t\t\"host\": \"book.sfacg.com\",\n\t\t\"url\": \"/^\\\\/Novel\\\\/\\\\d+\\\\/\\\\d+\\\\/\\\\d+\\\\//\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//div[@class='fn-btn']/a[text()='下一章']\",\n\t\t\t\"pageE\": \"#ChapterBody>p\",\n\t\t\t\"replaceE\": \"#article>.fn-btn\"\n\t\t}\n\t},\n\t\"SF轻小说 - 书库\": {\n\t\t\"host\": \"book.sfacg.com\",\n\t\t\"url\": \"/^\\\\/List\\\\//\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".pagebarNext>a\",\n\t\t\t\"pageE\": \".Comic_Pic_List\",\n\t\t\t\"replaceE\": \".pagebar\",\n\t\t\t\"forceHTTPS\": true\n\t\t}\n\t},\n\t\"必读推荐\": {\n\t\t\"host\": \"www.bidutuijian.com\",\n\t\t\"url\": \"/^\\\\/books\\\\/.+\\\\/(?:(?!0000)\\\\d{4})\\\\.html/\",\n\t\t\"style\": \".row\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".nav>span>a:last-of-type:not([href='#'])\",\n\t\t\t\"pageE\": \"#main>.main1:nth-child(3)>p\",\n\t\t\t\"replaceE\": \".nav\"\n\t\t}\n\t},\n\t\"晋江文学城\": {\n\t\t\"host\": \"www.jjwxc.net\",\n\t\t\"url\": \"/chapterid=/\",\n\t\t\"style\": \".noveltext>div\",\n\t\t\"pager\": {\n\t\t\t\"type\": 3,\n\t\t\t\"nextL\": \"//span[@class='bigtext' and text()='下一章→']/..\",\n\t\t\t\"pageE\": \".noveltext\",\n\t\t\t\"replaceE\": \".noveltitle[height]\"\n\t\t}\n\t},\n\t\"樱花文学 novnov\": {\n\t\t\"host\": \"novnov.net\",\n\t\t\"url\": \"/^\\\\/(book\\\\/chapter\\\\/|library|search)/\",\n\t\t\"style\": \".nextbox,.linea\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".nextp>a,li.current+li>a\",\n\t\t\t\"pageE\": \".novelcontent>p,.vlist>.nlist>li,.searchlist>ul>li\",\n\t\t\t\"replaceE\": \".footerbox,.changepage\"\n\t\t}\n\t},\n\t\"AO3 - 列表页/搜索页\": {\n\t\t\"host\": [\"archiveofourown.org\",\"i.ao3is.top\"],\n\t\t\"url\": \"return (fun.indexOF(/\\\\/works$/) || fun.lp() == '/works/search')\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"li.next a\",\n\t\t\t\"pageE\": \"li.work[id^='work_']\",\n\t\t\t\"replaceE\": \".pagination\",\n\t\t\t\"scrollD\": 2500\n\t\t}\n\t},\n\t\"AO3 - 阅读页\": {\n\t\t\"host\": [\"archiveofourown.org\",\"i.ao3is.top\"],\n\t\t\"url\": \"/\\\\/works\\\\/\\\\d+\\\\/chapters\\\\//\",\n\t\t\"history\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"li.chapter.next a\",\n\t\t\t\"pageE\": \"#workskin>div\",\n\t\t\t\"replaceE\": \"#main ul.navigation,#feedback>ul.actions\"\n\t\t}\n\t},\n\t\"boxnovel.com\": {\n\t\t\"host\": \"boxnovel.com\",\n\t\t\"url\": \"return fun.isPager()\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"#manga-reading-nav-foot .next_page,.nav-previous.float-left>a\",\n\t\t\t\"pageE\": \".reading-content>.text-left>p,.page-listing-item\",\n\t\t\t\"replaceE\": \"#manga-reading-nav-head,#manga-reading-nav-foot,.paging-navigation\"\n\t\t}\n\t},\n\t\"红袖招\": {\n\t\t\"host\": \"hongxiuzhao.org\",\n\t\t\"url\": \"return (fun.getCSS('.pager')&&fun.getCSS('.article-content'))\",\n\t\t\"style\": \".article-content>*:not(p:not([style])):not(h1),.browser_tips\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//div[@class='pager']/a[contains(text(),'下一页')]\",\n\t\t\t\"pageE\": \".article-content>p:not([style]):not(:last-of-type)\",\n\t\t\t\"replaceE\": \".pager\"\n\t\t}\n\t},\n\t\"八叉书库\": {\n\t\t\"host\": \"www.8xsk.xyz\",\n\t\t\"url\": \"/^\\\\/novel\\\\d+\\\\/chapter/\",\n\t\t\"pager\": {\n\t\t\t\"type\": 6,\n\t\t\t\"nextL\": \"#next_chap\",\n\t\t\t\"pageE\": \"#chapter-content\",\n\t\t\t\"replaceE\": \".chapter-nav\",\n\t\t\t\"loadTime\": 1000\n\t\t}\n\t},\n\t\"蓝鲨\": {\n\t\t\"host\": \"www.lan-sha.com\",\n\t\t\"url\": \"return (!fun.indexOF('.html'))\",\n\t\t\"style\": \"#app {overflow: initial !important;}\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.current+a\",\n\t\t\t\"pageE\": \"li.post-item\",\n\t\t\t\"replaceE\": \".pages\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE)\"\n\t\t}\n\t},\n\t\"分享者 - 搜索页\": {\n\t\t\"host\": \"www.sharerw.com\",\n\t\t\"url\": \"return (fun.lp() == '/search.php')\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"span.next>a\",\n\t\t\t\"pageE\": \"#mainbox>article\",\n\t\t\t\"replaceE\": \".pagebar\"\n\t\t}\n\t},\n\t\"分享者\": {\n\t\t\"host\": \"www.sharerw.com\",\n\t\t\"url\": \"return (!fun.indexOF('.html'))\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"span.next>a\",\n\t\t\t\"pageE\": \".new-post>article\",\n\t\t\t\"replaceE\": \".pagebar\"\n\t\t}\n\t},\n\t\"扩展迷\": {\n\t\t\"host\": \"www.extfans.com\",\n\t\t\"url\": \"/^\\\\/.+/\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.page-next\",\n\t\t\t\"pageE\": \".app-item-content,.article-item-content\",\n\t\t\t\"replaceE\": \".pagination-content\"\n\t\t}\n\t},\n\t\"扩展派\": {\n\t\t\"host\": \"www.crxfun.com\",\n\t\t\"url\": \"/^\\\\/(all|hot|recommend)/\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.page-link[aria-label='Next']\",\n\t\t\t\"pageE\": \".body-c-body>div\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t}\n\t},\n\t\"轻狂志 - 文章评论\": {\n\t\t\"host\": \"www.flighty.cn\",\n\t\t\"url\": \"return (fun.indexOF(/\\\\/\\\\d+_\\\\d+\\\\.html/))\",\n\t\t\"pager\": {\n\t\t\t\"type\": 2,\n\t\t\t\"nextL\": \".cmt-more-wrap-gw\"\n\t\t}\n\t},\n\t\"轻狂志\": {\n\t\t\"host\": \"www.flighty.cn\",\n\t\t\"url\": \"/^\\\\/./\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".pages .thisclass+li>a\",\n\t\t\t\"pageE\": \".items\",\n\t\t\t\"replaceE\": \".pages\"\n\t\t}\n\t},\n\t\"黑域基地\": {\n\t\t\"host\": \"www.hybase.com\",\n\t\t\"url\": \"return fun.isPager('r')\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"#pages>b+a\",\n\t\t\t\"pageE\": \".entry\",\n\t\t\t\"replaceE\": \"#pages\"\n\t\t}\n\t},\n\t\"小众软件\": {\n\t\t\"host\": \"www.appinn.com\",\n\t\t\"url\": \"return (fun.lp() == '/' || fun.indexOF('/category/'))\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.next.page-numbers\",\n\t\t\t\"pageE\": \"section#latest-posts>article\",\n\t\t\t\"replaceE\": \"div.nav-links\"\n\t\t}\n\t},\n\t\"乐软博客\": {\n\t\t\"host\": \"www.isharepc.com\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.next.page-numbers\",\n\t\t\t\"pageE\": \".content>div.post\",\n\t\t\t\"replaceE\": \"nav.pagination\"\n\t\t}\n\t},\n\t\"果核剥壳-首页\": {\n\t\t\"host\": \"www.ghxi.com\",\n\t\t\"url\": \"return (fun.lp() == '/' && !location.search)\",\n\t\t\"pager\": {\n\t\t\t\"type\": 2,\n\t\t\t\"nextL\": \".active .load-more\",\n\t\t\t\"interval\": 1000,\n\t\t\t\"scrollD\": 4000\n\t\t}\n\t},\n\t\"果核剥壳 - 分类/搜索页\": {\n\t\t\"host\": \"www.ghxi.com\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.next\",\n\t\t\t\"pageE\": \"ul.post-loop>li\",\n\t\t\t\"replaceE\": \"ul.pagination\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE)\"\n\t\t}\n\t},\n\t\"六音软件\": {\n\t\t\"host\": \"www.6yit.com\",\n\t\t\"url\": \"return (!fun.indexOF('.html'))\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.next.page-numbers\",\n\t\t\t\"pageE\": \"posts.posts-item.list\",\n\t\t\t\"replaceE\": \".pagenav\"\n\t\t}\n\t},\n\t\"反斗软件\": {\n\t\t\"host\": [\"www.apprcn.com\",\"free.apprcn.com\"],\n\t\t\"url\": \"return ((fun.lp() == '/' || fun.indexOF(/^\\\\/page\\\\//)) || fun.indexOF('/category/'))\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".pagination li.current+li>a\",\n\t\t\t\"pageE\": \"article.article\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t}\n\t},\n\t\"微当下载 - 搜索页\": {\n\t\t\"host\": \"www.weidown.com\",\n\t\t\"url\": \"return (fun.indexOF('/search/'))\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"#pageGroup>span+a\",\n\t\t\t\"pageE\": \".articleListWrapper>.richTextItem.search\",\n\t\t\t\"replaceE\": \"#pageGroup\",\n\t\t\t\"forceHTTPS\": true\n\t\t}\n\t},\n\t\"微当下载-专题页\": {\n\t\t\"host\": \"www.weidown.com\",\n\t\t\"url\": \"return (fun.indexOF('/special'))\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"#pageGroup>span+a\",\n\t\t\t\"pageE\": \".special>.item,.articleWrapper>div\",\n\t\t\t\"replaceE\": \"#pageGroup\",\n\t\t\t\"forceHTTPS\": true\n\t\t}\n\t},\n\t\"微当下载\": {\n\t\t\"host\": \"www.weidown.com\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"#pageGroup>span+a\",\n\t\t\t\"pageE\": \"(//div[contains(@class,'articleWrapper')])[1]/div\",\n\t\t\t\"replaceE\": \"#pageGroup\",\n\t\t\t\"forceHTTPS\": true\n\t\t}\n\t},\n\t\"大眼仔旭\": {\n\t\t\"host\": \"www.dayanzai.me\",\n\t\t\"url\": \"return (!fun.indexOF('.html') && (fun.lp() != '/' || fun.indexOF('s=','s')))\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".page>span+a\",\n\t\t\t\"pageE\": \"ul.c-news\",\n\t\t\t\"replaceE\": \".page\"\n\t\t}\n\t},\n\t\"绿软家园-最近更新\": {\n\t\t\"host\": \"www.downg.com\",\n\t\t\"url\": \"/\\\\/new\\\\//\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.nextpage\",\n\t\t\t\"pageE\": \".ApdList>ul.ApdLi\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t}\n\t},\n\t\"423down\": {\n\t\t\"host\": \"www.423down.com\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//span[@class='current']/following-sibling::a[1] | //span[@class='page-numbers current']/preceding-sibling::a[1]\",\n\t\t\t\"pageE\": \".content>.excerpt,.commentlist>li\",\n\t\t\t\"replaceE\": \".paging,.pagenav\"\n\t\t}\n\t},\n\t\"华军软件园\": {\n\t\t\"host\": \"www.onlinedown.net\",\n\t\t\"url\": \"/^\\\\/(sort\\\\/.+|search)/\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".g-pages a.z-cur+a\",\n\t\t\t\"pageE\": \".m-list,.m-list2\",\n\t\t\t\"replaceE\": \".g-pages\"\n\t\t}\n\t},\n\t\"发烧友绿软\": {\n\t\t\"host\": \"fsylr.com\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.next.page-numbers\",\n\t\t\t\"pageE\": \".posts-con>div:not([class*='posts-'])\",\n\t\t\t\"replaceE\": \"nav.pagination\"\n\t\t}\n\t},\n\t\"异次元软件-评论\": {\n\t\t\"host\": \"www.iplaysoft.com\",\n\t\t\"url\": \"return (fun.indexOF('.html') || fun.indexOF('/p/'))\",\n\t\t\"pager\": {\n\t\t\t\"type\": 2,\n\t\t\t\"nextL\": \"#loadHistoryComments\",\n\t\t\t\"nextTextOf\": \"展开后面\"\n\t\t}\n\t},\n\t\"异次元软件\": {\n\t\t\"host\": \"www.iplaysoft.com\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".pagenavi a[title='下一页']\",\n\t\t\t\"pageE\": \"#postlist>div.entry\",\n\t\t\t\"replaceE\": \".pagenavi-button,.pagenavi\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE)\"\n\t\t}\n\t},\n\t\"悪魔の小站\": {\n\t\t\"host\": \"www.mubolin.cn\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.next.page-numbers\",\n\t\t\t\"pageE\": \"#recent-content>div\",\n\t\t\t\"replaceE\": \"nav.pagination\"\n\t\t}\n\t},\n\t\"老殁 | 殁漂遥\": {\n\t\t\"host\": \"www.mpyit.com\",\n\t\t\"url\": \"return ((fun.lp() == '/' || fun.indexOF(/^\\\\/page\\\\//)) && !location.search)\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.page-numbers[title='下一页']\",\n\t\t\t\"pageE\": \"#post>div[id^='post-']\",\n\t\t\t\"replaceE\": \"#post>#pagenavi\"\n\t\t}\n\t},\n\t\"老殁 | 殁漂遥 - 搜索页/分类页\": {\n\t\t\"host\": \"www.mpyit.com\",\n\t\t\"url\": \"return (fun.indexOF('/category/') || fun.indexOF('?s=','s'))\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.page-numbers[title='下一页']\",\n\t\t\t\"pageE\": \"#content>div[class^='entry_box']\",\n\t\t\t\"replaceE\": \"#content>#pagenavi\"\n\t\t}\n\t},\n\t\"腾龙工作室\": {\n\t\t\"host\": \"www.tenlonstudio.com\",\n\t\t\"url\": \"return (fun.lp() !== '/' && !fun.indexOF('.html') && fun.getXpath('//div[@class=\\\"btn-pager\\\"]/a[contains(text(),\\\"❯\\\")]'))\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//div[@class='btn-pager']/a[contains(text(),'❯')]\",\n\t\t\t\"pageE\": \"li.post-list-item\",\n\t\t\t\"replaceE\": \".ajax-pager\"\n\t\t}\n\t},\n\t\"腾龙工作室 / 阿酷杂货铺 - 动态加载\": {\n\t\t\"host\": [\"www.tenlonstudio.com\",\"www.coolexe.com\"],\n\t\t\"url\": \"return (fun.lp() !== '/' && !fun.indexOF('.html'))\",\n\t\t\"history\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"js; return fun.getNextUPN(/(?<=\\\\/page\\\\/)\\\\d+/,/\\\\/page\\\\/\\\\d+/,'/page/','','2',fun.getCSS('.btn-group>button:last-of-type').textContent)\",\n\t\t\t\"pageE\": \"li.post-list-item\"\n\t\t}\n\t},\n\t\"异星软件空间\": {\n\t\t\"host\": \"www.yxssp.com\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//div[contains(@class,'page-nav')]/a[last()]\",\n\t\t\t\"pageE\": \".td-modules-container.td-module-number4>div\",\n\t\t\t\"replaceE\": \".page-nav.td-pb-padding-side\"\n\t\t}\n\t},\n\t\"奔跑中的奶酪\": {\n\t\t\"host\": \"www.runningcheese.com\",\n\t\t\"url\": \"return fun.isPager('r')\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.next.page-numbers\",\n\t\t\t\"pageE\": \".ajaxpost\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t}\n\t},\n\t\"Nite07 的小窝\": {\n\t\t\"host\": \"www.nite07.com\",\n\t\t\"url\": \"return (fun.lp() == '/' || fun.indexOF('/page/'))\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.next\",\n\t\t\t\"pageE\": \".recent-post-item:not(.swiper)\",\n\t\t\t\"replaceE\": \"#pagination\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE,[0,'img[data-lazy-src]','data-lazy-src'])\"\n\t\t}\n\t},\n\t\"小鱼儿 yr 系统 - 搜索页\": {\n\t\t\"host\": \"www.yrxitong.com\",\n\t\t\"url\": \"return (fun.lp() == '/sr.jsp')\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"span.pageNext>a\",\n\t\t\t\"pageE\": \"#containerFormsCenter .newsList>div\",\n\t\t\t\"replaceE\": \".pagenation\"\n\t\t}\n\t},\n\t\"小鱼儿 yr 系统\": {\n\t\t\"host\": \"www.yrxitong.com\",\n\t\t\"url\": \"return (!fun.indexOF('/h-nd-'))\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"div.pageNext>a\",\n\t\t\t\"pageE\": \"#containerFormsCenter .m_news_list>div\",\n\t\t\t\"replaceE\": \".jz_pagenation_wrap\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE,[1,'a[data-original]','data-original'])\"\n\t\t}\n\t},\n\t\"sordum\": {\n\t\t\"host\": \"www.sordum.org\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.next.page-numbers\",\n\t\t\t\"pageE\": \".article>article\",\n\t\t\t\"replaceE\": \"nav.navigation.posts-navigation\"\n\t\t}\n\t},\n\t\"winaero\": {\n\t\t\"host\": \"winaero.com\",\n\t\t\"url\": \"return ((fun.lp() == '/' || fun.indexOF(/^\\\\/page\\\\//)) || fun.indexOF('/category/'))\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.next.page-numbers\",\n\t\t\t\"pageE\": \"#main>article\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t}\n\t},\n\t\"lrepacks\": {\n\t\t\"host\": \"lrepacks.net\",\n\t\t\"url\": \"return (!fun.indexOF('.html'))\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".page_next>a\",\n\t\t\t\"pageE\": \"#main .post-list article\",\n\t\t\t\"replaceE\": \".page_nav\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"pageE.forEach(function (one) {let now = one.querySelector('.slideUp,.elementFade'); if (now) {now.className = now.className.replace('slideUp','slideUpRun').replace('elementFade','elementFadeRun');};}); return pageE\"\n\t\t}\n\t},\n\t\"dlandroid\": {\n\t\t\"host\": \"dlandroid.com\",\n\t\t\"url\": \"return (fun.indexOF('/cat/') || (fun.lp() === '/' && fun.indexOF('?s=','s')))\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.next.page-numbers\",\n\t\t\t\"pageE\": \"div.post\",\n\t\t\t\"replaceE\": \".navigation\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE)\"\n\t\t}\n\t},\n\t\"apkmirror\": {\n\t\t\"host\": \"www.apkmirror.com\",\n\t\t\"url\": \"return fun.isPager('r')\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"type\": 3,\n\t\t\t\"nextL\": \"a.nextpostslink\",\n\t\t\t\"pageE\": \"[role='main'] .listWidget>div:not([class]),#primary .listWidget>div:not([class])\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t}\n\t},\n\t\"winhelponline\": {\n\t\t\"host\": \"www.winhelponline.com\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"span.prev>a\",\n\t\t\t\"pageE\": \"#main>article\",\n\t\t\t\"replaceE\": \"nav.paging-navigation\"\n\t\t}\n\t},\n\t\"windowslatest\": {\n\t\t\"host\": \"www.windowslatest.com\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//div[contains(@class,'page-nav')]/a[last()]\",\n\t\t\t\"pageE\": \".td-ss-main-content>div:not(.td-block-title-wrap):not(.page-nav)\",\n\t\t\t\"replaceE\": \".page-nav\"\n\t\t}\n\t},\n\t\"thewindowsclub\": {\n\t\t\"host\": \"www.thewindowsclub.com\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"li.pagination-next>a\",\n\t\t\t\"pageE\": \"#genesis-content>article.post\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t}\n\t},\n\t\"Wiley Online Library + ACS (Publications)\": {\n\t\t\"host\": [\"pubs.acs.org\",\"onlinelibrary.wiley.com\"],\n\t\t\"url\": \"/\\\\/doSearch/\",\n\t\t\"blank\": 3,\n\t\t\"history\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.pagination__btn--next\",\n\t\t\t\"pageE\": \"ul.items-results>*\",\n\t\t\t\"replaceE\": \".pagination\",\n\t\t\t\"scrollD\": 3000\n\t\t}\n\t},\n\t\"Library Genesis\": {\n\t\t\"host\": \"/libgen/\",\n\t\t\"url\": \"return (fun.isTitle('Library Genesis') && fun.lp() == '/index.php' && fun.indexOF('req=','s'))\",\n\t\t\"blank\": 3,\n\t\t\"history\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//div[@class='paginator']//span/strong/../../following-sibling::td[1]//a\",\n\t\t\t\"pageE\": \"#tablelibgen>tbody>tr,.paginator+script:not([src])\",\n\t\t\t\"replaceE\": \".paginator\",\n\t\t\t\"scriptT\": 2\n\t\t}\n\t},\n\t\"ScienceDirect\": {\n\t\t\"host\": \"www.sciencedirect.com\",\n\t\t\"url\": \"fun.isUrlC(); if (fun.lp() == '/search') {setTimeout(()=>{fun.insStyle('html,body {height: ' + (document.documentElement.scrollHeight || document.body.scrollHeight) + 'px;}')},2000); return true}\",\n\t\t\"style\": \"footer\",\n\t\t\"blank\": 3,\n\t\t\"iframe\": true,\n\t\t\"pager\": {\n\t\t\t\"type\": 5,\n\t\t\t\"nextL\": \"a[data-aa-name='srp-next-page']\"\n\t\t}\n\t},\n\t\"Z-Library\": {\n\t\t\"host\": \"/(^lib-.+\\\\.\\\\d+lib\\\\.[a-z]+$|(\\\\dlib|b-ok\\\\d?|booksc|z-lib)\\\\.)/\",\n\t\t\"url\": \"return (fun.isTitle('Z-Library') && fun.indexOF('/s/'))\",\n\t\t\"blank\": 3,\n\t\t\"history\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//div[@class='paginator ' or @class='paginator']//span/strong/../../following-sibling::td[1]//a\",\n\t\t\t\"pageE\": \"//*[@id='searchResultBox'] | //script[contains(string(),'pagerOptions')]\",\n\t\t\t\"replaceE\": \".paginator\",\n\t\t\t\"scriptT\": 2\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE)\"\n\t\t}\n\t},\n\t\"account.zlib.pro\": {\n\t\t\"host\": \"account.zlib.pro\",\n\t\t\"url\": \"return !fun.indexOF('/line_')\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"li.active+li>a\",\n\t\t\t\"pageE\": \".container:not(.top)\",\n\t\t\t\"replaceE\": \".pagination\",\n\t\t\t\"scrollD\": 500\n\t\t}\n\t},\n\t\"PubMed\": {\n\t\t\"host\": \"pubmed.ncbi.nlm.nih.gov\",\n\t\t\"pager\": {\n\t\t\t\"type\": 2,\n\t\t\t\"nextL\": \"button.load-button.next-page\",\n\t\t\t\"scrollD\": 1000\n\t\t}\n\t},\n\t\"X-MOL\": {\n\t\t\"host\": \"www.x-mol.com\",\n\t\t\"url\": \"return (fun.indexOF('/search/q') || fun.indexOF('/paper/'))\",\n\t\t\"history\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"js; return fun.getNextEP('.pagination li.active+li>a','pageIndex=',/pageIndex=\\\\d+/)\",\n\t\t\t\"pageE\": \".magazine-senior-search-results-list>ul>li,.magazine-model-content-new>ul>li\",\n\t\t\t\"insertP\": [\".magazine-senior-search-results-list>ul,.magazine-model-content-new>ul\",3],\n\t\t\t\"replaceE\": \".pagination\"\n\t\t}\n\t},\n\t\"IEU OpenGWAS project\": {\n\t\t\"host\": \"gwas.mrcieu.ac.uk\",\n\t\t\"url\": \"/^\\\\/datasets\\\\//\",\n\t\t\"pager\": {\n\t\t\t\"type\": 3,\n\t\t\t\"nextL\": \".next>a\",\n\t\t\t\"pageE\": \"#search tbody>tr\",\n\t\t\t\"replaceE\": \".pagination\",\n\t\t\t\"interval\": 0,\n\t\t\t\"scrollD\": 200\n\t\t}\n\t},\n\t\"维普网\": {\n\t\t\"host\": \"www.cqvip.com\",\n\t\t\"url\": \"/\\\\/search/\",\n\t\t\"pager\": {\n\t\t\t\"type\": 6,\n\t\t\t\"nextL\": \"//ul[@class='pagenum']//a[text()='下一页']\",\n\t\t\t\"pageE\": \"ul.prolist:last-child>li\",\n\t\t\t\"replaceE\": \"ul.pagenum\",\n\t\t\t\"loadTime\": 5000,\n\t\t\t\"scrollD\": 4000\n\t\t}\n\t},\n\t\"科研通 - 帖子内\": {\n\t\t\"host\": \"www.ablesci.com\",\n\t\t\"url\": \"/\\\\/detail/\",\n\t\t\"thread\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"li.next>a\",\n\t\t\t\"pageE\": \"ul#jieda>li\",\n\t\t\t\"replaceE\": \".pages\"\n\t\t}\n\t},\n\t\"科研通\": {\n\t\t\"host\": \"www.ablesci.com\",\n\t\t\"url\": \"return fun.isPager('p')\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"li.next>a\",\n\t\t\t\"pageE\": \"ul.fly-list>li\",\n\t\t\t\"replaceE\": \".pages\"\n\t\t}\n\t},\n\t\"小木虫\": {\n\t\t\"host\": \"muchong.com\",\n\t\t\"url\": \"return (fun.indexOF('/f-') || fun.indexOF('search.php'))\",\n\t\t\"style\": \"tr.forum_head\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//div[contains(@class,'xmc_Pages')]//a[text()='下一页']\",\n\t\t\t\"pageE\": \".forum_body table>tbody\",\n\t\t\t\"replaceE\": \".xmc_Pages\"\n\t\t}\n\t},\n\t\"小木虫 - 帖子内\": {\n\t\t\"host\": \"muchong.com\",\n\t\t\"url\": \"/\\\\/t-/\",\n\t\t\"style\": \"tr.forum_head\",\n\t\t\"thread\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//div[contains(@class,'xmc_Pages')]//a[text()='下一页']\",\n\t\t\t\"pageE\": \"#maincontent>table>tbody:not(.header)\",\n\t\t\t\"replaceE\": \".xmc_Pages\"\n\t\t}\n\t},\n\t\"小木虫 - 考研调剂\": {\n\t\t\"host\": \"muchong.com\",\n\t\t\"url\": \"return (fun.lp() == '/bbs/kaoyan.php')\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//div[contains(@class,'xmc_Pages')]//a[text()='下一页']\",\n\t\t\t\"pageE\": \".forum_body_manage\",\n\t\t\t\"replaceE\": \".xmc_Pages\"\n\t\t}\n\t},\n\t\"315学术网\": {\n\t\t\"host\": \"www.315xs.com\",\n\t\t\"url\": \"/\\\\/search\\\\.php/\",\n\t\t\"retry\": 3100,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//ul[@class='pagelist']//a[text()='下一页']\",\n\t\t\t\"pageE\": \".resultlist>dl\",\n\t\t\t\"replaceE\": \".pagelist\",\n\t\t\t\"interval\": 3100,\n\t\t\t\"scrollD\": 700\n\t\t}\n\t},\n\t\"百度学术\": {\n\t\t\"host\": \"xueshu.baidu.com\",\n\t\t\"url\": \"return (fun.lp() == '/s')\",\n\t\t\"history\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"id('page')/a[./i[@class='c-icon-pager-next']]\",\n\t\t\t\"pageE\": \"#bdxs_result_lists>div.result\",\n\t\t\t\"replaceE\": \"#page\"\n\t\t}\n\t},\n\t\"百度学术 - journal\": {\n\t\t\"host\": \"xueshu.baidu.com\",\n\t\t\"url\": \"/journal\\\\/navigation/\",\n\t\t\"history\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.res-page-next\",\n\t\t\t\"pageE\": \"#journaldetail>div\",\n\t\t\t\"replaceE\": \".res-page\"\n\t\t}\n\t},\n\t\"百度学术 - paper\": {\n\t\t\"host\": \"xueshu.baidu.com\",\n\t\t\"url\": \"/paper\\\\/show/\",\n\t\t\"history\": true,\n\t\t\"pager\": {\n\t\t\t\"type\": 2,\n\t\t\t\"nextL\": \"div:not([style*='display: none'])>.more_btn\",\n\t\t\t\"nextText\": \"加载更多\"\n\t\t}\n\t},\n\t\"谷歌学术\": {\n\t\t\"host\": [\"/^scholar\\\\.google\\\\./\",\"xs2.dailyheadlines.cc\",\"xueshu.dailyheadlines.cc\",\"sc.panda321.com\",\"scholar.lanfanshu.cn\",\"scholar.mirrors.pw\"],\n\t\t\"history\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//a[./span[contains(@class,'next')]]\",\n\t\t\t\"pageE\": \"#gs_res_ccl_mid>*\",\n\t\t\t\"replaceE\": \"#gs_n\",\n\t\t\t\"scriptT\": 1\n\t\t}\n\t},\n\t\"必应学术\": {\n\t\t\"host\": [\"www.bing.com\",\"cn.bing.com\",\"www4.bing.com\"],\n\t\t\"url\": \"return (fun.lp() == '/academic/search')\",\n\t\t\"style\": \"li.aca_algo_count\",\n\t\t\"history\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.sb_pagN\",\n\t\t\t\"pageE\": \"#b_results>li.aca_algo\",\n\t\t\t\"replaceE\": \"#b_results .b_pag\"\n\t\t}\n\t},\n\t\"全国图书参考咨询联盟\": {\n\t\t\"host\": \"/^.+\\\\.ucdrs.superlib.net$/\",\n\t\t\"url\": \"/^\\\\/search/\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"#pageinfo>b+a\",\n\t\t\t\"pageE\": \".book1\",\n\t\t\t\"replaceE\": \"#pageinfo\",\n\t\t\t\"scrollD\": 1000\n\t\t}\n\t},\n\t\"再问科研\": {\n\t\t\"host\": \"www.izaiwen.cn\",\n\t\t\"url\": \"return fun.isPager()\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".page-item.active+li>a\",\n\t\t\t\"pageE\": \".item-box\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t}\n\t},\n\t\"StackOverflow\": {\n\t\t\"host\": \"stackoverflow.com\",\n\t\t\"url\": \"return (fun.lp() == '/search' || (fun.indexOF(/^\\\\/questions/) && !fun.indexOF(/^\\\\/questions\\\\/\\\\d+/)) || fun.lp() == '/tags' || fun.lp() == '/users')\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a[rel='next']\",\n\t\t\t\"pageE\": \"#questions>div,.js-search-results>div:first-child>div,#tags-browser>div,#user-browser>div:first-child>div\",\n\t\t\t\"replaceE\": \".pager\"\n\t\t}\n\t},\n\t\"SegmentFault\": {\n\t\t\"host\": \"segmentfault.com\",\n\t\t\"url\": \"fun.isUrlC(); return (fun.lp() == '/search' || fun.indexOF('/questions'))\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//a[@class='page-link'][text()='下一页']\",\n\t\t\t\"pageE\": \"ul.list-group>li,li.list-group-item\",\n\t\t\t\"replaceE\": \"ul.pagination\"\n\t\t}\n\t},\n\t\"w3cschool.cn\": {\n\t\t\"host\": \"www.w3cschool.cn\",\n\t\t\"url\": \"return (location.pathname.split('/').length>2)\",\n\t\t\"style\": \".widget-body,#rfbanner\",\n\t\t\"history\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".next-link>a\",\n\t\t\t\"pageE\": \"#pro-mian-header,.content-bg\",\n\t\t\t\"replaceE\": \".content-links,.splitter-sidebar\"\n\t\t}\n\t},\n\t\"w3school.com.cn\": {\n\t\t\"host\": \"www.w3school.com.cn\",\n\t\t\"url\": \"return (location.pathname.split('/').length>2)\",\n\t\t\"style\": \"#maincontent h1:not(:nth-of-type(1)) {margin-top: 30px;}\",\n\t\t\"history\": true,\n\t\t\"pager\": {\n\t\t\t\"type\": 3,\n\t\t\t\"nextL\": \"js; let next = fun.getCSS('li.next>a[href]'); if (next && next.href.indexOf('/index.') === -1) return next.href\",\n\t\t\t\"pageE\": \"#maincontent>*:not([class*='prenextnav']):not(#bpn):not(#tpn)\",\n\t\t\t\"insertP\": [\"id('bpn') | //div[contains(@class,'prenextnav')][last()]\",1],\n\t\t\t\"replaceE\": \"ul.prenext,#navsecond\",\n\t\t\t\"scrollE\": \"id('bpn') | //div[contains(@class,'prenextnav')][last()]\",\n\t\t\t\"forceHTTPS\": true,\n\t\t\t\"scrollD\": 800\n\t\t}\n\t},\n\t\"菜鸟教程 - 分类页\": {\n\t\t\"host\": \"www.runoob.com\",\n\t\t\"url\": \"return (fun.indexOF('/w3cnote') && !fun.indexOF('.html'))\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"li.next-page>a\",\n\t\t\t\"pageE\": \".archive-list>.archive-list-item\",\n\t\t\t\"replaceE\": \"#wp_page_numbers\",\n\t\t\t\"forceHTTPS\": true\n\t\t}\n\t},\n\t\"菜鸟教程 - 文章页\": {\n\t\t\"host\": \"www.runoob.com\",\n\t\t\"url\": \"/^\\\\/w3cnote\\\\/.+\\\\.html$/\",\n\t\t\"history\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//ul[@class='membership']/li[not(a)]/following-sibling::li[1]/a\",\n\t\t\t\"pageE\": \".article-heading,.article-body\",\n\t\t\t\"replaceE\": \".right-column ul.membership\",\n\t\t\t\"forceHTTPS\": true\n\t\t}\n\t},\n\t\"菜鸟教程\": {\n\t\t\"host\": \"www.runoob.com\",\n\t\t\"url\": \"return (location.pathname.split('/').length>2 && fun.getCSS('#leftcolumn'))\",\n\t\t\"style\": \"#comments,#postcomments,#respond,#footer {display: none !important;} .article-intro h1:not(:nth-of-type(1)) {margin: 30px 0 10px 0;} .middle-column {min-height: 1000px;}\",\n\t\t\"history\": true,\n\t\t\"pager\": {\n\t\t\t\"type\": 3,\n\t\t\t\"nextL\": \"js; let next = fun.getCSS('#leftcolumn>a[style]~a[href]'); if (next && next.href.split('/').length === location.href.split('/').length && next.href.split('/')[3] === location.href.split('/')[3]) {return next.href;}; next.href = location.href; return ''\",\n\t\t\t\"pageE\": \"#content>*,script[src*='assets/js/main.min.js']\",\n\t\t\t\"replaceE\": \".previous-next-links,#leftcolumn\",\n\t\t\t\"scrollE\": \".article>.sidebar-box\",\n\t\t\t\"scriptT\": 2,\n\t\t\t\"forceHTTPS\": true,\n\t\t\t\"scrollD\": 500\n\t\t}\n\t},\n\t\"博客园 - 文章列表\": {\n\t\t\"host\": \"www.cnblogs.com\",\n\t\t\"url\": \"return fun.isPager('p')\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//div[@class='pager']//a[contains(text(),'>')]\",\n\t\t\t\"pageE\": \"#post_list>article\",\n\t\t\t\"replaceE\": \".pager\"\n\t\t}\n\t},\n\t\"博客园 - 文章列表 - 个人\": {\n\t\t\"host\": \"www.cnblogs.com\",\n\t\t\"url\": \"if (location.pathname.split('/').length === 3 && fun.getCSS('.topicListFooter')) { if (!fun.getCSS('#homepage_top_pager')) {fun.getCSS('#centercontent,.forFlow').insertAdjacentHTML('afterbegin','<div id=\\\"homepage_top_pager\\\" class=\\\"topicListFooter\\\"></div>'); fun.getCSS('#centercontent,.forFlow').insertAdjacentHTML('beforeend','<div id=\\\"homepage_bottom_pager\\\" class=\\\"topicListFooter\\\"></div>');}; return true}\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//div[@class='topicListFooter']//a[contains(text(),'下一页')]\",\n\t\t\t\"pageE\": \"div.day\",\n\t\t\t\"replaceE\": \".topicListFooter\"\n\t\t}\n\t},\n\t\"博客园 - 搜索页\": {\n\t\t\"host\": \"zzk.cnblogs.com\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//div[@class='pager']//a[contains(text(),'>')]\",\n\t\t\t\"pageE\": \"div.searchItem\",\n\t\t\t\"replaceE\": \".pager\"\n\t\t}\n\t},\n\t\"力扣\": {\n\t\t\"host\": \"leetcode-cn.com\",\n\t\t\"url\": \"return (fun.lp() == '/')\",\n\t\t\"style\": \"html,body {height: 100%; overflow: unset !important;}\",\n\t\t\"pager\": {\n\t\t\t\"type\": 2,\n\t\t\t\"nextL\": \"button[class*='-LoadMoreButton']\"\n\t\t}\n\t},\n\t\"CNodeJS\": {\n\t\t\"host\": \"cnodejs.org\",\n\t\t\"url\": \"return (fun.lp() == '/')\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"li.disabled+li:not(.disabled)>a\",\n\t\t\t\"pageE\": \"#topic_list\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t}\n\t},\n\t\"Go 语言中文网\": {\n\t\t\"host\": \"studygolang.com\",\n\t\t\"url\": \"return (fun.lp() == '/' || fun.indexOF(/^\\\\/(go|topics|articles|projects|resources)/))\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"li.next>a\",\n\t\t\t\"pageE\": \".cell.item,.topic,.article,.resources\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t}\n\t},\n\t\"Ruby China\": {\n\t\t\"host\": \"ruby-china.org\",\n\t\t\"url\": \"fun.isUrlC(); return (fun.lp() == '/' || fun.lp() == '/jobs' || fun.lp() == '/search' || (fun.indexOF('/topics') && !fun.indexOF(/^\\\\/topics\\\\/\\\\d+/)))\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"li.next>a\",\n\t\t\t\"pageE\": \".item-list,.result\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t}\n\t},\n\t\"Bootcss 中文网\": {\n\t\t\"host\": \"v4.bootcss.com\",\n\t\t\"url\": \"/^\\\\/docs\\\\//\",\n\t\t\"style\": \"#TableOfContents\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".bd-sidenav-active+li>a,.bd-toc-item.active+.bd-toc-item>a\",\n\t\t\t\"pageE\": \"main>*\",\n\t\t\t\"replaceE\": \".bd-links\"\n\t\t}\n\t},\n\t\"51CTO\": {\n\t\t\"host\": \"www.51cto.com\",\n\t\t\"url\": \"return (fun.lp() == '/' || fun.lp() == '/dev')\",\n\t\t\"pager\": {\n\t\t\t\"type\": 2,\n\t\t\t\"nextL\": \".more-btn\"\n\t\t}\n\t},\n\t\"51CTO - 分类页\": {\n\t\t\"host\": [\"www.51cto.com\",\"os.51cto.com\",\"server.51cto.com\",\"network.51cto.com\",\"developer.51cto.com\",\"www.cioage.com\"],\n\t\t\"url\": \"return (!fun.indexOF('/article/'))\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.next\",\n\t\t\t\"pageE\": \".topic-list-content\",\n\t\t\t\"replaceE\": \".topic-page\"\n\t\t}\n\t},\n\t\"51CTO - 博客\": {\n\t\t\"host\": \"blog.51cto.com\",\n\t\t\"url\": \"return (fun.indexOF(/^\\\\/(nav|topic)/) || (fun.indexOF(/^\\\\/u_\\\\d+/) && !fun.indexOF(/^\\\\/u_\\\\d+\\\\/\\\\d+/)))\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"li.next>a\",\n\t\t\t\"pageE\": \".date-list,#common-article-listbox-1,ul.search-artical\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t}\n\t},\n\t\"Chrome Debelopers 文档\": {\n\t\t\"host\": \"developer.chrome.com\",\n\t\t\"url\": \"/^\\\\/docs\\\\/.+\\\\/.+\\\\//\",\n\t\t\"style\": \".visibility-hidden {visibility: unset !important;} h1.type--h2 {margin-top: 80px;}\",\n\t\t\"history\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//main//a[@class='navigation-tree__link' and @data-state='active']/following-sibling::a[@class='navigation-tree__link'][not(@target='_blank')] | //main//a[@class='navigation-tree__link' and @data-state='active']/following-sibling::div[@class='navigation-tree__nested']/a[@class='navigation-tree__link'][not(@target='_blank')] | //main//a[@class='navigation-tree__link' and @data-state='active']/../following-sibling::div[@class='navigation-tree__nested']/a[@class='navigation-tree__link'][not(@target='_blank')]\",\n\t\t\t\"pageE\": \"main article>*\",\n\t\t\t\"replaceE\": \"main navigation-tree,main .scrollbar\"\n\t\t}\n\t},\n\t\"pypi.org\": {\n\t\t\"host\": \"pypi.org\",\n\t\t\"url\": \"/^\\\\/search\\\\//\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"span.button--primary+a.button.button-group__button\",\n\t\t\t\"pageE\": \"ul[aria-label='Search results']>li\",\n\t\t\t\"replaceE\": \".button-group--pagination\"\n\t\t}\n\t},\n\t\"Gitee - Explore/Issues/Pulls/Releases/Tags\": {\n\t\t\"host\": \"gitee.com\",\n\t\t\"url\": \"return (fun.indexOF('/explore/') || fun.indexOF(/\\\\/(issues|pulls|releases|tags)$/))\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a[rel='next']\",\n\t\t\t\"pageE\": \".items>.item,.issue-wrapper,.pull-request__wrapper,.release-tag-item,.tag-item\",\n\t\t\t\"replaceE\": \".pagination\",\n\t\t\t\"scrollD\": 2500\n\t\t}\n\t},\n\t\"Gitee - Search\": {\n\t\t\"host\": \"search.gitee.com\",\n\t\t\"url\": \"return (location.search != '')\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"li.next:not(.disabled)>a\",\n\t\t\t\"pageE\": \"#hits-list>div\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t}\n\t},\n\t\"Github\": {\n\t\t\"host\": \"github.com\",\n\t\t\"url\": \"fun.isUrlC(); return (fun.lp() == '/')\",\n\t\t\"pager\": {\n\t\t\t\"type\": 2,\n\t\t\t\"nextL\": \".js-ajax-pagination[action^='/conduit/for_you_feed']>button:not([disabled])\"\n\t\t}\n\t},\n\t\"Github - Star/Repositories/Dependents/NotificationsSubscriptions\": {\n\t\t\"host\": \"github.com\",\n\t\t\"url\": \"/(tab=(stars|repositories)|\\\\/network\\\\/dependents|^\\\\/notifications\\\\/subscriptions(\\\\?|$))/\",\n\t\t\"blank\": 4,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".paginate-container>div>:last-child\",\n\t\t\t\"pageE\": \"#user-starred-repos div[class^='col-']:first-of-type>div:not(.position-relative):not(.paginate-container),#user-repositories-list>ul>li,.Box>[data-test-id='dg-repo-pkg-dependent'],#threads-unsubscribe-form>ul>li\",\n\t\t\t\"replaceE\": \".paginate-container\"\n\t\t}\n\t},\n\t\"Github - Pull/Discussions/Releases/Actions/OrgRepositories\": {\n\t\t\"host\": \"github.com\",\n\t\t\"url\": \"return (fun.indexOF(/\\\\/(pulls|discussions|releases)$/) || fun.indexOF('/discussions/categories') || fun.indexOF(/\\\\/actions($|\\\\/workflows)/) || fun.indexOF(/^\\\\/orgs\\\\/.+\\\\/repositories/))\",\n\t\t\"blank\": 4,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.next_page\",\n\t\t\t\"pageE\": \"div[id^='issue_'],ul[aria-labelledby='discussions-list']>li,#release_page_title+div[data-pjax]>section,div[id^='check_suite_'],#org-repositories li.Box-row\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t}\n\t},\n\t\"Github - Issue/Discussions/Pull - loadmore\": {\n\t\t\"host\": \"github.com\",\n\t\t\"url\": \"return fun.indexOF(/\\\\/(issues|discussions|pull)\\\\/\\\\d+$/)\",\n\t\t\"pager\": {\n\t\t\t\"type\": 2,\n\t\t\t\"nextL\": \"button[data-testid=issue-timeline-load-more-load-top][aria-disabled=false], button.ajax-pagination-btn[data-disable-with=Loading…]:not([disabled])\",\n\t\t\t\"scrollD\": 9999\n\t\t}\n\t},\n\t\"Github - Issues\": {\n\t\t\"host\": \"github.com\",\n\t\t\"url\": \"return fun.indexOF(/\\\\/issues$/)\",\n\t\t\"style\": \"[class*='IssueItem-module__ListItem_'] div[class*=LoadingSkeleton]\",\n\t\t\"blank\": 6,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"js; return fun.getNextUP('page=',/page=\\\\d+/,fun.lp(),'2',fun.getXpath('//a[@rel=\\\\'next\\\\'][not(@aria-disabled)]/preceding-sibling::a[1][not(@aria-current)]').textContent)\",\n\t\t\t\"pageE\": \"div[class^='IssueRow-module_']\",\n\t\t\t\"replaceE\": \"nav[class^=prc-Pagination-PaginationContainer-]\"\n\t\t}\n\t},\n\t\"Github - Commits\": {\n\t\t\"host\": \"github.com\",\n\t\t\"url\": \"/\\\\/commits/\",\n\t\t\"style\": \"[class*=LoadingSkeleton-sc-]\",\n\t\t\"blank\": 4,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a[data-testid=pagination-next-button]:not([aria-disabled])\",\n\t\t\t\"pageE\": \"div[class^='prc-Timeline-Timeline-']>div\"\n\t\t}\n\t},\n\t\"Github - Tags\": {\n\t\t\"host\": \"github.com\",\n\t\t\"url\": \"/\\\\/tags/\",\n\t\t\"blank\": 4,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".pagination>:last-child\",\n\t\t\t\"pageE\": \".Box-body>div.Box-row\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t}\n\t},\n\t\"Github - Notifications\": {\n\t\t\"host\": \"github.com\",\n\t\t\"url\": \"/^\\\\/notifications(\\\\?|$)/\",\n\t\t\"blank\": 4,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"nav.paginate-container>a[aria-label='Next']\",\n\t\t\t\"pageE\": \"li.notifications-list-item\",\n\t\t\t\"replaceE\": \"nav.paginate-container,.js-notifications-list-paginator-counts\"\n\t\t}\n\t},\n\t\"Github - Search\": {\n\t\t\"host\": \"github.com\",\n\t\t\"url\": \"/\\\\/search\\\\?/\",\n\t\t\"style\": \"header.AppHeader {position: fixed !important;width: 100% !important;top: 0px !important;z-index: 100 !important;} .application-main {margin-top: 64px !important;}\",\n\t\t\"blank\": 4,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a[rel=next][class^=prc-Pagination]\",\n\t\t\t\"pageE\": \"[data-testid=results-list]>div,.repo-list>li,.code-list-item,#commit_search_results>div,.issue-list-item,.discussion-list-item,#package_search_results>div,#marketplace_search_results>div:first-child>div,.topic-list-item,#wiki_search_results>div:first-child>div,#user_search_results>div:first-child>div\",\n\t\t\t\"replaceE\": \"nav[class^=prc-Pagination-PaginationContainer]\"\n\t\t}\n\t},\n\t\"Github - Gist - Search/discover\": {\n\t\t\"host\": \"gist.github.com\",\n\t\t\"url\": \"return ((fun.lp() == '/search' && location.search != '') || fun.lp() == '/discover')\",\n\t\t\"blank\": 4,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.next_page,.pagination>:last-child:not([class])\",\n\t\t\t\"pageE\": \".gist-snippet\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t}\n\t},\n\t\"OI-Wiki\": {\n\t\t\"host\": \"oi-wiki.org\",\n\t\t\"style\": \"blockquote.page-copyright,h2#__comments,form#gitalk-form\",\n\t\t\"history\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"li.md-nav__item.md-nav__item--active.md-nav__item--nested li.md-nav__item--active+li a\",\n\t\t\t\"pageE\": \"article.md-content__inner\",\n\t\t\t\"insertP\": [\"article.md-content__inner\",6],\n\t\t\t\"replaceE\": \".md-sidebar.md-sidebar--primary\"\n\t\t}\n\t},\n\t\"dusaiphoto\": {\n\t\t\"host\": \"www.dusaiphoto.com\",\n\t\t\"url\": \"/\\\\/article\\\\//\",\n\t\t\"style\": \"h1.article-title {margin-top: 80px;}\",\n\t\t\"history\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.hvr-bounce-to-left\",\n\t\t\t\"pageE\": \"#main>.mt-4 >div>.mb-4,#article_body\",\n\t\t\t\"replaceE\": \".col-12.font-title,#sidebar\"\n\t\t}\n\t},\n\t\"果壳网\": {\n\t\t\"host\": \"www.guokr.com\",\n\t\t\"pager\": {\n\t\t\t\"type\": 2,\n\t\t\t\"nextL\": \"div[class*='LoadMoreWrap']\",\n\t\t\t\"interval\": 1500\n\t\t}\n\t},\n\t\"蓝点网\": {\n\t\t\"host\": \"www.landian.vip\",\n\t\t\"url\": \"return (fun.lp() != '/' && !fun.indexOF('/archives/') && !fun.indexOF('/search/'))\",\n\t\t\"style\": \".pagination\",\n\t\t\"history\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"js; return fun.getNextUPN(/(?<=\\\\/page\\\\/)\\\\d+/,/\\\\/page\\\\/\\\\d+/,'/page/','','2',fun.getCSS('.pagination>button.end').textContent)\",\n\t\t\t\"pageE\": \".content li.color-border\"\n\t\t}\n\t},\n\t\"可能吧\": {\n\t\t\"host\": \"kenengba.com\",\n\t\t\"url\": \"/(^\\\\/$|\\\\/page\\\\/|\\\\/category\\\\/|\\\\/tag\\\\/)/\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//div[@class='pagebar']/a[@href and text()='>>']\",\n\t\t\t\"pageE\": \"article.post\",\n\t\t\t\"replaceE\": \".pagebar\",\n\t\t\t\"scrollD\": 3000\n\t\t}\n\t},\n\t\"超能网\": {\n\t\t\"host\": \"www.expreview.com\",\n\t\t\"pager\": {\n\t\t\t\"type\": 2,\n\t\t\t\"nextL\": \"#show_article_red_1SHOW\",\n\t\t\t\"interval\": 1500\n\t\t}\n\t},\n\t\"IT之家\": {\n\t\t\"host\": \"/\\\\.ithome\\\\.com$/\",\n\t\t\"pager\": {\n\t\t\t\"type\": 2,\n\t\t\t\"nextL\": \"a.more\",\n\t\t\t\"interval\": 1500\n\t\t}\n\t},\n\t\"36氪\": {\n\t\t\"host\": [\"36kr.com\",\"www.36kr.com\"],\n\t\t\"url\": \"if (fun.lp() != '/' && !fun.indexOF('/p/')) {return true;}\",\n\t\t\"pager\": {\n\t\t\t\"type\": 2,\n\t\t\t\"nextL\": \".kr-loading-more-button.show\",\n\t\t\t\"nextText\": \"查看更多\"\n\t\t}\n\t},\n\t\"36氪 - 手机版\": {\n\t\t\"host\": \"m.36kr.com\",\n\t\t\"pager\": {\n\t\t\t\"type\": 2,\n\t\t\t\"nextL\": \".kr-loading-more-button-default\",\n\t\t\t\"nextText\": \"查看更多\"\n\t\t}\n\t},\n\t\"少数派\": {\n\t\t\"host\": \"sspai.com\",\n\t\t\"url\": \"/\\\\/(matrix|column)/\",\n\t\t\"pager\": {\n\t\t\t\"type\": 2,\n\t\t\t\"nextL\": \".button-show-more\",\n\t\t\t\"nextText\": \"加载更多\"\n\t\t}\n\t},\n\t\"观察者网\": {\n\t\t\"host\": \"www.guancha.cn\",\n\t\t\"url\": \"/\\\\/list_/\",\n\t\t\"history\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"js; return fun.getNextUPN(/(?<=\\\\/list_)\\\\d+(?=\\\\.shtml)/,/\\\\/list_.+/,'/list_','.shtml','2',fun.getXpath('id(\\\"Pagination\\\")/*[contains(@class,\\\"next\\\")]/preceding-sibling::*[1]').textContent)\",\n\t\t\t\"pageE\": \".column-list>li\"\n\t\t}\n\t},\n\t\"Chiphell\": {\n\t\t\"host\": \"www.chiphell.com\",\n\t\t\"url\": \"/^\\\\/(article-|portal\\\\.php)/\",\n\t\t\"pager\": {\n\t\t\t\"type\": 3,\n\t\t\t\"nextL\": \".nxt\",\n\t\t\t\"pageE\": \"td#article_content,.bm_c.xld>dl\",\n\t\t\t\"insertP\": [\"td#article_content,.bm_c.xld\",6],\n\t\t\t\"replaceE\": \".pg\"\n\t\t}\n\t},\n\t\"致美化\": {\n\t\t\"host\": \"zhutix.com\",\n\t\t\"url\": \"return fun.isPager('p')\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//li[@class='next-page']/a | //div[@class='btn-pager']/a[text()='❯']\",\n\t\t\t\"pageE\": \"#post-list>ul>li\",\n\t\t\t\"replaceE\": \".pagination,.b2-pagenav.post-nav\"\n\t\t}\n\t},\n\t\"致美化 - 分类页\": {\n\t\t\"host\": \"zhutix.com\",\n\t\t\"url\": \"return (fun.lp() != '/')\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"li.next-page a\",\n\t\t\t\"pageE\": \"#primary-home>div:not(.pagination)\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t}\n\t},\n\t\"蓝奏云 - 分享链接列表\": {\n\t\t\"host\": \"/\\\\.lanzou[a-z]\\\\./\",\n\t\t\"hiddenPN\": true,\n\t\t\"pager\": {\n\t\t\t\"type\": 2,\n\t\t\t\"nextL\": \"#filemore\",\n\t\t\t\"nextTextOf\": \"更多\",\n\t\t\t\"isHidden\": true,\n\t\t\t\"scrollD\": 800\n\t\t}\n\t},\n\t\"蓝奏云 - 后台\": {\n\t\t\"host\": \"pc.woozooo.com\",\n\t\t\"iframe\": true,\n\t\t\"hiddenPN\": true,\n\t\t\"pager\": {\n\t\t\t\"type\": 2,\n\t\t\t\"nextL\": \"#filemore>span[onclick]\",\n\t\t\t\"nextText\": \"显示更多文件\",\n\t\t\t\"isHidden\": true,\n\t\t\t\"scrollD\": 800\n\t\t}\n\t},\n\t\"阿里盘搜\": {\n\t\t\"host\": \"/^www\\\\.upyunso[0-9]?\\\\.com$/\",\n\t\t\"url\": \"return (fun.lp() == '/search.html')\",\n\t\t\"style\": \".pager-wrap\",\n\t\t\"history\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"js; return fun.getNextUP('page=',/page=\\\\d+/)\",\n\t\t\t\"pageE\": \"#res_list>div\"\n\t\t}\n\t},\n\t\"奈斯搜索\": {\n\t\t\"host\": \"www.niceso.fun\",\n\t\t\"url\": \"return fun.isPager('r')\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.btn:not([href])+a.btn.btn-line\",\n\t\t\t\"pageE\": \".search-item,.forum-topic-item\",\n\t\t\t\"replaceE\": \".page-num-box\"\n\t\t}\n\t},\n\t\"wikihow\": {\n\t\t\"host\": [\"www.wikihow.com\",\"zh.wikihow.com\"],\n\t\t\"url\": \"return (fun.indexOF('/Category:'))\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.pag_next\",\n\t\t\t\"pageE\": \"#cat_all>.cat_grid>div\",\n\t\t\t\"replaceE\": \"#large_pagination\",\n\t\t\t\"scriptT\": 3\n\t\t}\n\t},\n\t\"wikihow - 搜索页\": {\n\t\t\"host\": [\"www.wikihow.com\",\"zh.wikihow.com\"],\n\t\t\"url\": \"return (fun.indexOF('/wikiHowTo') && fun.indexOF('?search=','s'))\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"#searchresults_footer>a.buttonright\",\n\t\t\t\"pageE\": \"#searchresults_list>a\",\n\t\t\t\"replaceE\": \"#searchresults_footer\"\n\t\t}\n\t},\n\t\"译学馆\": {\n\t\t\"host\": \"www.yxgapp.com\",\n\t\t\"url\": \"/\\\\/(\\\\?s=|category)/\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".page-numbers.current+a.page-numbers\",\n\t\t\t\"pageE\": \"article.post\",\n\t\t\t\"replaceE\": \"nav.elementor-pagination\"\n\t\t}\n\t},\n\t\"中华典藏\": {\n\t\t\"host\": \"www.zhonghuadiancang.com\",\n\t\t\"url\": \"/\\\\/\\\\d+\\\\.html$/\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//div[@class='m-page']//button[text()='下一章']/..\",\n\t\t\t\"pageE\": \"#content>p\",\n\t\t\t\"replaceE\": \".m-page\"\n\t\t}\n\t},\n\t\"AfreecaTV\": {\n\t\t\"host\": \"www.afreecatv.com\",\n\t\t\"pager\": {\n\t\t\t\"type\": 2,\n\t\t\t\"nextL\": \".btn-more>button\",\n\t\t\t\"interval\": 2000\n\t\t}\n\t},\n\t\"GreasyFork\": {\n\t\t\"host\": [\"greasyfork.org\",\"cn-greasyfork.org\",\"sleazyfork.org\"],\n\t\t\"url\": \"return (fun.indexOF(/\\\\/(scripts|feedback)$/) || fun.indexOF(/\\\\/scripts\\\\/(by-site|libraries|code-search)/) || (fun.indexOF('/discussions') && !fun.indexOF(/\\\\/\\\\d+/)))\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.next_page\",\n\t\t\t\"pageE\": \"ol#browse-script-list>li,.script-discussion-list,.discussion-list>div\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t}\n\t},\n\t\"OpenUserJS\": {\n\t\t\"host\": \"openuserjs.org\",\n\t\t\"url\": \"return fun.isPager('n')\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"li.active+li>a\",\n\t\t\t\"pageE\": \".panel>table>tbody>tr.tr-link,.panel>.table-responsive>table>tbody>tr.tr-link,[id^='comment-']\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t}\n\t},\n\t\"UserScript\": {\n\t\t\"host\": \"www.userscript.zone\",\n\t\t\"url\": \"return (fun.lp() == '/search')\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"js; return fun.getNextF('.next>form')\",\n\t\t\t\"pageE\": \".row.script\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t}\n\t},\n\t\"UserStyles\": {\n\t\t\"host\": \"userstyles.world\",\n\t\t\"url\": \"return (fun.lp() == '/explore')\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.Pagination-button.next\",\n\t\t\t\"pageE\": \".card\",\n\t\t\t\"replaceE\": \".Pagination\"\n\t\t}\n\t},\n\t\"Quicker\": {\n\t\t\"host\": \"getquicker.net\",\n\t\t\"url\": \"/^\\\\/(Share\\\\/|Search\\\\?|QA($|\\\\?))/\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//a[@class='page-link' and text()='下一页']\",\n\t\t\t\"pageE\": \"table.table >tbody>tr:not(:first-child),.result-item,.question-item,script[src^='/js/site.js']\",\n\t\t\t\"replaceE\": \"ul.pagination\",\n\t\t\t\"scriptT\": 2\n\t\t}\n\t},\n\t\"Xposed\": {\n\t\t\"host\": \"repo.xposed.info\",\n\t\t\"url\": \"/\\\\/module-overview/\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"li.pager-next>a\",\n\t\t\t\"pageE\": \".view-content>table>tbody>tr\",\n\t\t\t\"replaceE\": \"ul.pager\"\n\t\t}\n\t},\n\t\"asciinema\": {\n\t\t\"host\": \"asciinema.org\",\n\t\t\"url\": \"/^\\\\/explore/\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.page-link[rel='next']\",\n\t\t\t\"pageE\": \".asciicast-list\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t}\n\t},\n\t\"Amazon\": {\n\t\t\"host\": \"/^www\\\\.amazon\\\\.([a-z]+|com?\\\\.[a-z]+)$/\",\n\t\t\"url\": \"/\\\\/s\\\\?/\",\n\t\t\"pager\": {\n\t\t\t\"type\": 3,\n\t\t\t\"nextL\": \"a.s-pagination-next\",\n\t\t\t\"pageE\": \".s-result-item[data-component-type='s-search-result']\",\n\t\t\t\"replaceE\": \".s-pagination-container\"\n\t\t}\n\t},\n\t\"Amazon - gp\": {\n\t\t\"host\": \"/^www\\\\.amazon\\\\.([a-z]+|com?\\\\.[a-z]+)$/\",\n\t\t\"url\": \"return fun.isPager()\",\n\t\t\"style\": \"#navFooter,#rhf\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"type\": 6,\n\t\t\t\"nextL\": \".a-selected+li.a-normal>a\",\n\t\t\t\"pageE\": \".a-ordered-list>li.zg-no-numbers\",\n\t\t\t\"replaceE\": \".a-pagination\",\n\t\t\t\"loadTime\": 7000,\n\t\t\t\"scrollD\": 1000\n\t\t}\n\t},\n\t\"eBay\": {\n\t\t\"host\": \"/^(www|[a-z]{2})\\\\.ebay\\\\.([a-z]+|com?\\\\.[a-z]+)$/\",\n\t\t\"url\": \"/^\\\\/sch\\\\//\",\n\t\t\"pager\": {\n\t\t\t\"type\": 3,\n\t\t\t\"nextL\": \"a.pagination__next\",\n\t\t\t\"pageE\": \"ul.srp-results>li.s-item\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t}\n\t},\n\t\"什么值得买 - 分类/搜索页\": {\n\t\t\"host\": [\"www.smzdm.com\",\"search.smzdm.com\"],\n\t\t\"url\": \"return (location.hostname === 'search.smzdm.com' || fun.indexOF('/fenlei/') || fun.indexOF(/\\\\/mall\\\\/.+\\\\/.+/))\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//ul[@class='pagenation-list']//a[contains(text() ,'下一页')] | //ul[@class='pagenation-list']/li[contains(@class,'next-page')]/a\",\n\t\t\t\"pageE\": \"#feed-main-list>li\",\n\t\t\t\"replaceE\": \"ul.pagenation-list\"\n\t\t}\n\t},\n\t\"没得比 - 分类/搜索页\": {\n\t\t\"host\": \"www.meidebi.com\",\n\t\t\"url\": \"return (fun.indexOF('/fenlei/') || fun.lp() == '/Search')\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.next\",\n\t\t\t\"pageE\": \".share-list>ul>li\",\n\t\t\t\"replaceE\": \".h-pages\"\n\t\t}\n\t},\n\t\"逛丢 - 分类/搜索页\": {\n\t\t\"host\": \"guangdiu.com\",\n\t\t\"url\": \"/^\\\\/($|\\\\?|index\\\\.|cate\\\\.|search\\\\.)/\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"#nextpage\",\n\t\t\t\"pageE\": \".gooditem\",\n\t\t\t\"replaceE\": \".page\"\n\t\t}\n\t},\n\t\"APSGO 软购\": {\n\t\t\"host\": \"apsgo.com\",\n\t\t\"url\": \"/^\\\\/search/\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"type\": 6,\n\t\t\t\"nextL\": \"js; return fun.getNextEP('li.ant-pagination-item-active+li.ant-pagination-item>a','page=',/page=\\\\d+/)\",\n\t\t\t\"pageE\": \".pull-right .p-list>.item\",\n\t\t\t\"replaceE\": \".ant-pagination\",\n\t\t\t\"loadTime\": 500,\n\t\t\t\"scrollD\": 5000\n\t\t}\n\t},\n\t\"駿河屋 - 搜索页\": {\n\t\t\"host\": \"www.suruga-ya.jp\",\n\t\t\"url\": \"/^\\\\/search/\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"li.next>a\",\n\t\t\t\"pageE\": \"#search_result>.item_box\",\n\t\t\t\"replaceE\": \"#pager\",\n\t\t\t\"scrollD\": 2500\n\t\t}\n\t},\n\t\"孔夫子旧书网 - 搜索\": {\n\t\t\"host\": \"search.kongfz.com\",\n\t\t\"url\": \"/^\\\\/item_result\\\\//\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"js;return fun.getNextEP('.item-page.active+a.item-page','pagenum=',/pagenum=\\\\d+/)\",\n\t\t\t\"pageE\": \"#listBox>div,script[src*=Isbn_item-result_item-result_page]\",\n\t\t\t\"replaceE\": \".pager\",\n\t\t\t\"scriptT\": 2\n\t\t}\n\t},\n\t\"书签地球\": {\n\t\t\"host\": \"www.bookmarkearth.cn\",\n\t\t\"url\": \"return (fun.lp() == '/' || fun.lp() == '/page')\",\n\t\t\"history\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"js; return fun.getNextUP('currentPage=',/currentPage=\\\\d+/,'/page','2',fun.getCSS('ul.pager').dataset.totalpage)\",\n\t\t\t\"pageE\": \".document-piece\",\n\t\t\t\"replaceE\": \"ul.pager\"\n\t\t}\n\t},\n\t\"书签地球 - 搜索页\": {\n\t\t\"host\": \"www.bookmarkearth.cn\",\n\t\t\"url\": \"return (fun.lp() == '/s/search')\",\n\t\t\"history\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"js; return fun.getNextEP('a.cut-page-item.active+a.cut-page-item','currentPage=',/currentPage=\\\\d+/)\",\n\t\t\t\"pageE\": \".document-piece\",\n\t\t\t\"replaceE\": \".cut-page\"\n\t\t}\n\t},\n\t\"kmoe\": {\n\t\t\"host\": [\"mox.moe\",\"kox.moe\",\"kxo.moe\",\"koz.moe\",\"kxx.moe\",\"kzz.moe\"],\n\t\t\"url\": \"return fun.isPager()\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"type\": 6,\n\t\t\t\"nextL\": \"(//tr[@style='vertical-align:top'])[1]//button[@class='bt_sml_main'][starts-with(text(), '下')]/..\",\n\t\t\t\"pageE\": \"tr.listbg\",\n\t\t\t\"replaceE\": \"tr[style='vertical-align:top']:first-child\"\n\t\t}\n\t},\n\t\"摩点众筹\": {\n\t\t\"host\": \"zhongchou.modian.com\",\n\t\t\"url\": \"return (fun.getCSS('.page')&&fun.getCSS('.pro_ul>li'))\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".next\",\n\t\t\t\"pageE\": \".pro_ul>li,body>script[language='javascript']\",\n\t\t\t\"insertP\": [\".pro_ul\",3],\n\t\t\t\"scriptT\": 2\n\t\t}\n\t},\n\t\"彼岸图网\": {\n\t\t\"host\": \"pic.netbian.com\",\n\t\t\"style\": \"li.nextpage {display: none !important;} .alist>ul {height: auto !important;} .alist>ul>li {position: static !important; float: left !important; height: 550px !important;}\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//div[@class='page']/a[contains(text(),'下一页')]\",\n\t\t\t\"pageE\": \".slist>ul>li:not(.nextpage),.alist>ul>li\",\n\t\t\t\"replaceE\": \".page\"\n\t\t}\n\t},\n\t\"3G壁纸\": {\n\t\t\"host\": \"www.3gbizhi.com\",\n\t\t\"url\": \"return fun.isPager()\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".cur+a\",\n\t\t\t\"pageE\": \".contlistw>.cl>li\"\n\t\t}\n\t},\n\t\"nastol\": {\n\t\t\"host\": \"www.nastol.com.ua\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//a[./span[@class='nav-next']]\",\n\t\t\t\"pageE\": \"#dle-content>div\",\n\t\t\t\"replaceE\": \".navigation\"\n\t\t}\n\t},\n\t\"hdqwalls\": {\n\t\t\"host\": \"hdqwalls.com\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a#next\",\n\t\t\t\"pageE\": \".wallpapers_container>div.wall-resp\",\n\t\t\t\"replaceE\": \"ul.pagination\"\n\t\t}\n\t},\n\t\"WallpapersCraft\": {\n\t\t\"host\": \"wallpaperscraft.com\",\n\t\t\"url\": \"return fun.isPager()\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".pager__item_selected+li>a\",\n\t\t\t\"pageE\": \".wallpapers__item\",\n\t\t\t\"replaceE\": \".pager\"\n\t\t}\n\t},\n\t\"10wallpaper.com\": {\n\t\t\"host\": \"10wallpaper.com\",\n\t\t\"url\": \"return fun.isPager()\",\n\t\t\"style\": \"#pics-list>p {display: inline-block !important;}\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".nowpg+a\",\n\t\t\t\"pageE\": \"#pics-list>p\",\n\t\t\t\"replaceE\": \".pg_pointer\"\n\t\t}\n\t},\n\t\"哲风壁纸\": {\n\t\t\"host\": \"haowallpaper.com\",\n\t\t\"url\": \"/^\\\\/(homeView|mobileView)($|\\\\?)/\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"type\": 6,\n\t\t\t\"nextL\": \"js; return fun.getNextEP('.page-content>.current+.isDefault','page=',/page=\\\\d+/)\",\n\t\t\t\"pageE\": \"#main-content .card\",\n\t\t\t\"replaceE\": \".page-main\"\n\t\t}\n\t},\n\t\"Anime Pictures\": {\n\t\t\"host\": \"anime-pictures.net\",\n\t\t\"url\": \"return (fun.indexOF('/pictures/') && !fun.indexOF('/view_post/'))\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".active+a\",\n\t\t\t\"pageE\": \".posts_block,.image_body,table.all_tags,table.scores,table#comments\",\n\t\t\t\"replaceE\": \".numeric_pages\"\n\t\t}\n\t},\n\t\"新片场\": {\n\t\t\"host\": \"www.xinpianchang.com\",\n\t\t\"url\": \"return (fun.lp() != '/')\",\n\t\t\"style\": \".lazy-img {opacity: 1 !important;}\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".page>a[title='下一页']\",\n\t\t\t\"pageE\": \"div[class*='-container'] div[class*='-con']>ul>li,div[class*='-container'] div[class*='-con']>div[class*='-wrap']>ul>li\",\n\t\t\t\"insertP\": [\"div[class*='-container'] div[class*='-con']>ul,div[class*='-container'] div[class*='-con']>div[class*='-wrap']>ul\",3],\n\t\t\t\"replaceE\": \".page\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE,[0,'img[_src]','_src'])\"\n\t\t}\n\t},\n\t\"UrleBird\": {\n\t\t\"host\": \"urlebird.com\",\n\t\t\"url\": \"/^\\\\/(trending|user|hash|song)\\\\//\",\n\t\t\"pager\": {\n\t\t\t\"type\": 2,\n\t\t\t\"nextL\": \"#btn_more_videos:not([disabled]),#load_more:not([disabled]),#hash_load_more:not([disabled]),#song_load_more:not([disabled])\"\n\t\t}\n\t},\n\t\"UrleBird - videos\": {\n\t\t\"host\": \"urlebird.com\",\n\t\t\"url\": \"/^\\\\/videos\\\\//\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"li.page-item.active+li>a\",\n\t\t\t\"pageE\": \".thumb\",\n\t\t\t\"replaceE\": \"ul.pagination\"\n\t\t}\n\t},\n\t\"ScriptCat\": {\n\t\t\"host\": \"scriptcat.org\",\n\t\t\"url\": \"/^\\\\/search/\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//a[.//i[text()='keyboard_arrow_right']]\",\n\t\t\t\"pageE\": \".q-card__section>.q-card--bordered\",\n\t\t\t\"replaceE\": \".q-pagination\"\n\t\t}\n\t},\n\t\"叽哩叽哩日报\": {\n\t\t\"host\": \"www.jiligamefun.com\",\n\t\t\"url\": \"return (fun.indexOF('/category/'))\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.poi-pager__item.poi-pager__item_next\",\n\t\t\t\"pageE\": \".inn-archive__container>article\",\n\t\t\t\"replaceE\": \".poi-pager\"\n\t\t}\n\t},\n\t\"BOSS直聘\": {\n\t\t\"host\": \"www.zhipin.com\",\n\t\t\"url\": \"return fun.isPager()\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".next\",\n\t\t\t\"pageE\": \".job-list>ul>li\",\n\t\t\t\"replaceE\": \".page\"\n\t\t}\n\t},\n\t\"立创开源硬件平台\": {\n\t\t\"host\": \"www.oshwhub.com\",\n\t\t\"url\": \"/^\\\\/explore/\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.current+a\",\n\t\t\t\"pageE\": \".each-project\",\n\t\t\t\"replaceE\": \".page\",\n\t\t\t\"scriptT\": 0\n\t\t}\n\t},\n\t\"资本市场电子化信息披露平台\": {\n\t\t\"host\": \"eid.csrc.gov.cn\",\n\t\t\"url\": \"/\\\\/\\\\d+\\\\/index/\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"js; if (fun.getCSS('li.on+li:not(.click)>a') == null) {return}; if (fun.indexOF('_f.html')) {fun.getCSS('#channelFilterForm').action = `index_${fun.getCSS('li.on+li:not(.click)>a').textContent}_f.html`; return fun.getNextF('#channelFilterForm');} else {return fun.getCSS('img[src$=\\\"location.png\\\"]~a:last-of-type').href.replace('.html',`_${fun.getCSS('li.on+li:not(.click)>a').textContent}.html`);}\",\n\t\t\t\"pageE\": \"table>tbody>tr:not(:first-of-type)\",\n\t\t\t\"replaceE\": \"ul.g-ul\"\n\t\t}\n\t},\n\t\"二手车之家\": {\n\t\t\"host\": \"www.che168.com\",\n\t\t\"url\": \"return (fun.lp() != '/' && !fun.indexOF('/dealer/'))\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.page-item-next\",\n\t\t\t\"pageE\": \"ul.viewlist_ul>li\",\n\t\t\t\"replaceE\": \".page\"\n\t\t}\n\t},\n\t\"盖世汽车英文版\": {\n\t\t\"host\": \"autonews.gasgoo.com\",\n\t\t\"url\": \"return (fun.lp() != '/' && !fun.indexOF('.html'))\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.pageright\",\n\t\t\t\"pageE\": \".newsListShow>ul\",\n\t\t\t\"replaceE\": \".page\"\n\t\t}\n\t},\n\t\"新东方在线\": {\n\t\t\"host\": \"cet4.koolearn.com\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"id('page')/a[text()='下一页']\",\n\t\t\t\"pageE\": \"ul.xqy_entry_list>li,.xqy_core_text>p:not([style='text-align:center'])\",\n\t\t\t\"insertP\": [\"ul.xqy_entry_list,.xqy_core_text\",3],\n\t\t\t\"replaceE\": \"#page\"\n\t\t}\n\t},\n\t\"古诗文网\": {\n\t\t\"host\": [\"www.gushiwen.cn\",\"so.gushiwen.cn\",\"m.gushiwen.cn\",\"shiwens.com\"],\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.amore\",\n\t\t\t\"pageE\": \".left .sons:not([id]),.sonspic\",\n\t\t\t\"replaceE\": \".pagesright\"\n\t\t}\n\t},\n\t\"文档库\": {\n\t\t\"host\": \"www.wendangku.net\",\n\t\t\"url\": \"/\\\\/doc\\\\//\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.next\",\n\t\t\t\"pageE\": \"#contents>*:not(.pages)\",\n\t\t\t\"replaceE\": \".pages\"\n\t\t}\n\t},\n\t\"文档之家\": {\n\t\t\"host\": \"www.doczj.com\",\n\t\t\"url\": \"/^\\\\/doc\\\\//\",\n\t\t\"pager\": {\n\t\t\t\"type\": 3,\n\t\t\t\"nextL\": \"a.next\",\n\t\t\t\"pageE\": \"#contents>*:not(.pages):not(#downcontainer)\",\n\t\t\t\"replaceE\": \".pages\",\n\t\t\t\"scrollD\": 600\n\t\t}\n\t},\n\t\"答题无忧\": {\n\t\t\"host\": \"www.dati56.com\",\n\t\t\"url\": \"/^\\\\/post\\\\//\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//a[@class='cur']/../following-sibling::li/a\",\n\t\t\t\"pageE\": \".content>p\",\n\t\t\t\"replaceE\": \".ipage\",\n\t\t\t\"scrollD\": 3000\n\t\t}\n\t},\n\t\"如意了教育 - 学校/数据/试卷\": {\n\t\t\"host\": \"www.ruyile.com\",\n\t\t\"url\": \"/^\\\\/(xuexiao|data|shijuan)\\\\/($|\\\\?|p)/\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".fy>strong+a\",\n\t\t\t\"pageE\": \".xxlb>.sk,.m1_z>.lbk,.m1_z>.m2_lb\",\n\t\t\t\"replaceE\": \".fy\"\n\t\t}\n\t},\n\t\"美团技术团队\": {\n\t\t\"host\": \"tech.meituan.com\",\n\t\t\"url\": \"/^\\\\/($|page|tags)/\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a[aria-label='Next'],a.home-browser-more-btn\",\n\t\t\t\"pageE\": \".post-container-wrapper\",\n\t\t\t\"replaceE\": \".pagination,.home-more-container\"\n\t\t}\n\t},\n\t\"CocoaControls\": {\n\t\t\"host\": \"www.cocoacontrols.com\",\n\t\t\"url\": \"fun.isUrlC(); return (fun.lp()=='/' || fun.indexOF('/controls'))\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".next>a\",\n\t\t\t\"pageE\": \".cc-inner-page-frame>.grid\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t}\n\t},\n\t\"中国科普博览 - 科学大院\": {\n\t\t\"host\": \"www.kepu.net.cn\",\n\t\t\"url\": \"/^\\\\/dayuan\\\\//\",\n\t\t\"pager\": {\n\t\t\t\"type\": 6,\n\t\t\t\"nextL\": \".text_align_center.mt50>span+a\",\n\t\t\t\"pageE\": \".dy>li\",\n\t\t\t\"replaceE\": \".text_align_center.mt50\"\n\t\t}\n\t},\n\t\"学佛网\": {\n\t\t\"host\": \"www.xuefo.tw\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//font/a[text()='下页']\",\n\t\t\t\"pageE\": \"#AutoNumber1>tbody>tr\",\n\t\t\t\"replaceE\": \"//font[./a[text()='下页']]\"\n\t\t}\n\t},\n\t\"佛弟子文库\": {\n\t\t\"host\": \"www.fodizi.net\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.current+a\",\n\t\t\t\"pageE\": \"div.wrap>a[href$='.html']\",\n\t\t\t\"replaceE\": \".page\"\n\t\t}\n\t},\n\t\"中國評論新聞\": {\n\t\t\"host\": [\"www.crntt.com\",\"hk.crntt.com\"],\n\t\t\"url\": \"return fun.isPager('n')\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//img[contains(@src,'next_page.gif')]/..|//a[text()='下一頁']\",\n\t\t\t\"pageE\": \"table[width='100%'][border='0'][cellspacing='0'][cellpadding='0'][height='200']>tbody>tr, table[width='97%'][border='0'][cellspacing='0'][cellpadding='5']>tbody>tr:not(:last-child)\"\n\t\t}\n\t},\n\t\"东方资讯\": {\n\t\t\"host\": \"mini.eastday.com\",\n\t\t\"url\": \"/\\\\/nsa\\\\//\",\n\t\t\"pager\": {\n\t\t\t\"type\": 3,\n\t\t\t\"nextL\": \"a.cur+a\",\n\t\t\t\"pageE\": \"#J-contain_detail_cnt\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE,[0,'img[data-url]','data-url'])\"\n\t\t}\n\t},\n\t\"美食天下\": {\n\t\t\"host\": \"www.meishichina.com\",\n\t\t\"url\": \"return fun.isPager()\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".now_page+a\",\n\t\t\t\"pageE\": \".main .plist>li\",\n\t\t\t\"replaceE\": \".ui-page-inner\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE)\"\n\t\t}\n\t},\n\t\"美食天下2\": {\n\t\t\"host\": \"home.meishichina.com\",\n\t\t\"url\": \"return fun.isPager()\",\n\t\t\"pager\": {\n\t\t\t\"type\": 2,\n\t\t\t\"nextL\": \"#recipeindex_living_loading>a\"\n\t\t}\n\t},\n\t\"Xvideos\": {\n\t\t\"host\": [\"www.xnxx.com\",\"www.xvideos.com\"],\n\t\t\"url\": \"return fun.isPager('p,r')\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.next-page,a.next\",\n\t\t\t\"pageE\": \".mozaique>*\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE)\",\n\t\t\t\"aF\": \"document.body.appendChild(document.createElement('script')).textContent = 'xv.thumb_block_initiator.init_listing();';\"\n\t\t}\n\t},\n\t\"PornHub\": {\n\t\t\"host\": \"/\\\\.pornhub\\\\.com$/\",\n\t\t\"url\": \"return fun.isPager()\",\n\t\t\"style\": \".footerContentWrapper,.pre-footer\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".page_next>a\",\n\t\t\t\"pageE\": \".container ul.videos:not(#bottomVideos)>li[data-video-id], .container ul.videoList>li[data-video-id]\",\n\t\t\t\"replaceE\": \".pagination3\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE)\"\n\t\t}\n\t},\n\t\"YouPorn\": {\n\t\t\"host\": \"www.youporn.com\",\n\t\t\"url\": \"return (!fun.indexOF('/watch/'))\",\n\t\t\"blank\": 1,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a[aria-label='Next page']\",\n\t\t\t\"pageE\": \".video-box\",\n\t\t\t\"replaceE\": \"#pagination\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE)\"\n\t\t}\n\t},\n\t\"RedTube\": {\n\t\t\"host\": \"www.redtube.com\",\n\t\t\"url\": \"return (fun.lp() != '/pornstar' && !fun.indexOF(/^\\\\/\\\\d+$/) && fun.isPager('r'))\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"#wp_navNext\",\n\t\t\t\"pageE\": \".videoblock_list:not([id*='_vid_']):not([id*='_premium_']),.content_limit>ul>li.channel-box\",\n\t\t\t\"replaceE\": \"#w_pagination\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE)\"\n\t\t}\n\t},\n\t\"Tube8\": {\n\t\t\"host\": \"www.tube8.com\",\n\t\t\"url\": \"return (!fun.indexOF(/\\\\/\\\\d{5,}\\\\/$/))\",\n\t\t\"style\": \"#home_page_wrapper>.sectionWrapper:nth-last-child(-n+3) {display: none;}\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"#pagination_next\",\n\t\t\t\"pageE\": \"#category_video_list .video_box,#result_container>.video_box,.sectionWrapper .video_box\",\n\t\t\t\"replaceE\": \"#pagination\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE,[0,'img[data-thumb]','data-thumb'])\"\n\t\t}\n\t},\n\t\"Thumbzilla\": {\n\t\t\"host\": \"www.thumbzilla.com\",\n\t\t\"url\": \"return (!fun.indexOF('/video/'))\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".page_next>a\",\n\t\t\t\"pageE\": \".responsiveListing>li:not([id])\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t}\n\t},\n\t\"91Porn\": {\n\t\t\"host\": [\"91porn.com\",\"0118.workarea7.live\"],\n\t\t\"url\": \"/\\\\/v\\\\.php/\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"id('paging')//a[text()='»']\",\n\t\t\t\"pageE\": \".row .row>div\",\n\t\t\t\"replaceE\": \"#paging\"\n\t\t}\n\t},\n\t\"91pron.men\": {\n\t\t\"host\": [\"91pron.men\",\"/^.+\\\\.(yennew\\\\.com|scvhuen\\\\.click|bbbsss\\\\.org)$/\"],\n\t\t\"url\": \"return fun.isPager()\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"span[aria-current]+a\",\n\t\t\t\"pageE\": \".grid.grid-cols-2.md\\\\:grid-cols-3.xl\\\\:grid-cols-4.gap-5>div\",\n\t\t\t\"replaceE\": \"//span[@aria-current]/../../..\"\n\t\t}\n\t},\n\t\"xHamster\": {\n\t\t\"host\": [\"xhamster.com\",\"/^[a-z]{2}\\\\.xhamster\\\\.com$/\",\"/^[a-z]{2}\\\\..*(xh).*\\\\.[a-z]{2,}$/\"],\n\t\t\"url\": \"return ((fun.isTitle('xHamster') || fun.getCSS('meta[name=application-name][content=xHamster]')) && !fun.indexOF('/videos/') && !fun.indexOF('/photos/gallery'))\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"type\": 3,\n\t\t\t\"nextL\": \"li.next>a,a[rel=next]\",\n\t\t\t\"pageE\": \".thumb-list,.channels-thumbs\",\n\t\t\t\"replaceE\": \".pager-section\",\n\t\t\t\"scrollD\": 500\n\t\t}\n\t},\n\t\"EPORNER\": {\n\t\t\"host\": \"www.eporner.com\",\n\t\t\"url\": \"return (!fun.indexOF('/video-'))\",\n\t\t\"style\": \"#mainBlogPosts,.footer-text,footer\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".nmnext\",\n\t\t\t\"pageE\": \"#vidresults>[id],script[src*='/ajax']\",\n\t\t\t\"replaceE\": \".numlist2\",\n\t\t\t\"scriptT\": 2\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE)\"\n\t\t}\n\t},\n\t\"YouJizz\": {\n\t\t\"host\": \"www.youjizz.com\",\n\t\t\"url\": \"return (fun.lp() == '/' || (!fun.indexOF('/videos/') && fun.indexOF('.html')))\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".pagination-next\",\n\t\t\t\"pageE\": \".video-thumb\",\n\t\t\t\"replaceE\": \".pagination,.mobilePager\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE)\"\n\t\t}\n\t},\n\t\"DaftSex\": {\n\t\t\"host\": \"daftsex.com\",\n\t\t\"url\": \"fun.isUrlC(); return (!fun.indexOF('/watch/') && fun.getCSS('.more'))\",\n\t\t\"pager\": {\n\t\t\t\"type\": 2,\n\t\t\t\"nextL\": \".more\",\n\t\t\t\"interval\": 1000\n\t\t}\n\t},\n\t\"DaftSex - other\": {\n\t\t\"host\": \"daftsex.com\",\n\t\t\"url\": \"return (!fun.indexOF('/watch/') && fun.isPager('r'))\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"li.active+li>a\",\n\t\t\t\"pageE\": \".video-item\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t}\n\t},\n\t\"SEX.COM\": {\n\t\t\"host\": \"www.sex.com\",\n\t\t\"url\": \"/^\\\\/(pins|pics|gifs|videos)/\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"type\": 6,\n\t\t\t\"nextL\": \"button.active+a\",\n\t\t\t\"pageE\": \"#masonry_container\",\n\t\t\t\"replaceE\": \".pagination\",\n\t\t\t\"loadTime\": 600,\n\t\t\t\"scrollD\": 3000\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE)\"\n\t\t}\n\t},\n\t\"t66y - 帖子列表\": {\n\t\t\"host\": [\"t66y.com\",\"www.t66y.com\"],\n\t\t\"url\": \"/^\\\\/thread/\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//div[@class='pages']/a[text()='下一頁']\",\n\t\t\t\"pageE\": \"#tbody>tr,.list.t_one,.list.t_one+.line\",\n\t\t\t\"replaceE\": \".pages\"\n\t\t}\n\t},\n\t\"t66y - 帖子内\": {\n\t\t\"host\": [\"t66y.com\",\"www.t66y.com\"],\n\t\t\"url\": \"/^\\\\/(read\\\\.php|htm_data|htm_mob)/\",\n\t\t\"style\": \".tips {position: absolute!important; top: -100%!important;}\",\n\t\t\"thread\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//div[@class='pages']/a[text()='下一頁']\",\n\t\t\t\"pageE\": \"#main>.t.t2,#main>a[name],#main>form>.t.t2,#main>form>a[name],#main>div[style*='overflow:hidden'],#main>.line\",\n\t\t\t\"replaceE\": \".pages\"\n\t\t}\n\t},\n\t\"M系镜像\": {\n\t\t\"host\": \"mirror.chromaso.net\",\n\t\t\"url\": \"if(fun.indexOF(/^\\\\/thread\\\\/.+/)){rule.thread=true;rule.pager.pageE='.container>.mm-post';return true;}else if(fun.indexOF(/^\\\\/(forum|search)\\\\/.+/)){rule.blank=3;return true;}\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".pagination>.active+li>a\",\n\t\t\t\"pageE\": \"#thread-table-main>tbody>tr\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t}\n\t},\n\t\"肉视频\": {\n\t\t\"host\": [\"rou.video\",\"rouva2.xyz\"],\n\t\t\"url\": \"/^\\\\/(t\\\\/|(v|search)($|\\\\?))/\",\n\t\t\"style\": \".grid>div[data-slot=card]+div:not([data-slot=card])\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a[aria-current=page]+a\",\n\t\t\t\"pageE\": \".grid>div[data-slot=card]\",\n\t\t\t\"replaceE\": \"//nav[@aria-label='Pagination']/../..\"\n\t\t}\n\t},\n\t\"Latino Hentai\": {\n\t\t\"host\": \"latinohentai.com\",\n\t\t\"url\": \"return (!fun.indexOF('/ver/'))\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".current+a\",\n\t\t\t\"pageE\": \".items\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t}\n\t},\n\t\"Hentai Anime Zone\": {\n\t\t\"host\": \"hentaianimezone.com\",\n\t\t\"url\": \"return (!fun.indexOF('.html'))\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".navigation>span+a\",\n\t\t\t\"pageE\": \".thumb\",\n\t\t\t\"replaceE\": \".navigation\"\n\t\t}\n\t},\n\t\"underhentai\": {\n\t\t\"host\": \"www.underhentai.net\",\n\t\t\"url\": \"return fun.isPager()\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"span.page-num.active+a.page-num\",\n\t\t\t\"pageE\": \"article.data-block\"\n\t\t}\n\t},\n\t\"Avbebe\": {\n\t\t\"host\": \"avbebe.com\",\n\t\t\"url\": \"return (!fun.indexOF(/^\\\\/archives\\\\/\\\\d/))\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"li.active_page+li>a,.navigation>.floatleft>a\",\n\t\t\t\"pageE\": \"#index-news>.posts-default,#archive-posts>.posts-default\",\n\t\t\t\"replaceE\": \"#wp_page_numbers,.navigation\"\n\t\t}\n\t},\n\t\"H 次元\": {\n\t\t\"host\": \"h-ciyuan.com\",\n\t\t\"url\": \"return (fun.lp() == '/' ||fun.indexOF('/category/') || fun.indexOF('/tag/'))\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.next\",\n\t\t\t\"pageE\": \".gridview-posts\",\n\t\t\t\"replaceE\": \".category\"\n\t\t}\n\t},\n\t\"MissAV\": {\n\t\t\"host\": [\"/^missav.[a-z]+/\",\"/^missav\\\\d+\\\\.com$/\"],\n\t\t\"url\": \"if((fun.indexOF(/^\\\\/dm\\\\d+\\\\//) || fun.indexOF('/search/') || fun.indexOF(/\\\\/\\\\(actresses|actors|genres|series|makers|directors\\\\)\\\\//)) && fun.isPager('n')){if(fun.isMobile()){rule.blank=0;};return true;}\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"type\": 3,\n\t\t\t\"nextL\": \"a[rel=next]\",\n\t\t\t\"pageE\": \"div[x-init*=initLozad]>div\",\n\t\t\t\"replaceE\": \"//span[@aria-current='page']/../../..\",\n\t\t\t\"scrollD\": 500\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE)\"\n\t\t}\n\t},\n\t\"123av\": {\n\t\t\"host\": [\"/^123av\\\\.[a-z]+$/\",\"/^1av\\\\.[a-z]+$/\"],\n\t\t\"url\": \"return fun.isPager()\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a[rel=next]\",\n\t\t\t\"pageE\": \".box-item-list>div, body>script[src*='app.js']\",\n\t\t\t\"replaceE\": \".pagination\",\n\t\t\t\"scriptT\": 2\n\t\t}\n\t},\n\t\"javxx\": {\n\t\t\"host\": \"javxx.com\",\n\t\t\"url\": \"fun.isUrlC();return (!fun.indexOF(/^\\\\/[a-z]+\\\\/v\\\\//) && !fun.indexOF(/^\\\\/[a-z]+$/))\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".page-item.active+li>a\",\n\t\t\t\"pageE\": \".vid-items>.item\",\n\t\t\t\"replaceE\": \"ul.pagination\"\n\t\t}\n\t},\n\t\"av6k.org\": {\n\t\t\"host\": \"/^([0-9a-z-]+\\\\.)?av6k([0-9a-z]+)?\\\\.[a-z]+$/\",\n\t\t\"url\": \"fun.insStyle('.clickadu,.clickadulist,#footer,.links,.links-top,.links-top2,.links-top3,a[href^=\\\\'http://\\\\'],.footlink,body>div[id][style],#shareQrcode');if(fun.isTitle('AV6K') && fun.lp() !== '/' && fun.getAllCSS('.pages_c').length === 2)return fun.isPager()\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".thisclass+li>a\",\n\t\t\t\"pageE\": \".listA\",\n\t\t\t\"replaceE\": \".pages_c\"\n\t\t}\n\t},\n\t\"JavDB\": {\n\t\t\"host\": \"/^javdb/\",\n\t\t\"url\": \"return (fun.isTitle('JavDB') && !fun.indexOF('/v/') && fun.isPager('r'))\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.pagination-next\",\n\t\t\t\"pageE\": \".movie-list,#videos,#makers,#series,#actors>div\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t}\n\t},\n\t\"JavBus / AVMOO\": {\n\t\t\"host\": [\"/^www\\\\.(jav.+|.+jav)\\\\./\",\"/^avmoo\\\\./\"],\n\t\t\"url\": \"return ((fun.getCSS('img[alt=\\\"JavBus\\\" i]')||fun.isTitle('JavBus')||fun.isTitle('AVMOO')) && !fun.indexOF('/forum/'))\",\n\t\t\"style\": \"#waterfall>.item {position: static !important; float: left !important; height: 400px !important;}\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"#next,.pagination>.active+li>a\",\n\t\t\t\"pageE\": \"#waterfall>.item\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t}\n\t},\n\t\"Javhd.today\": {\n\t\t\"host\": \"javhd.today\",\n\t\t\"url\": \"return (fun.lp() != '/' && fun.lp() != '/channels/')\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".pagination>li.active+li>a\",\n\t\t\t\"pageE\": \"ul.videos,ul.playlists,div.models\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t}\n\t},\n\t\"Jable.TV\": {\n\t\t\"host\": [\"jable.tv\",\"fs1.app\"],\n\t\t\"url\": \"return (fun.lp() != '/' && !fun.indexOF('/videos/'))\",\n\t\t\"blank\": 3,\n\t\t\"history\": false,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"js; let next = fun.getXpath(\\\"//li[@class='page-item' and ./span[contains(@class,'active')]]/following-sibling::li/a\\\"); if (next) {return `${location.origin}${location.pathname}?mode=async&function=get_block&block_id=${next.dataset.blockId}&${next.dataset.parameters.replace('from_videos+','from_videos=' + next.textContent + '&').replaceAll(':','=').replaceAll(';','&').replaceAll('+','&')}&_=${+new Date()}`;}\",\n\t\t\t\"pageE\": \"section>.row\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"aF\": \"const newItems = fun.getAll('img[data-preview]:not(.preview-initialized)'); newItems.forEach(item => item.classList.add('preview-initialized')); $(newItems).videopreview();\"\n\t\t}\n\t},\n\t\"JavDisk\": {\n\t\t\"host\": [\"javdisk.com\",\"javtrust.com\"],\n\t\t\"url\": \"return (fun.lp() != '/' && (fun.indexOF('/movie/hot') || !fun.indexOF('/movie/')))\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"li.active+li>a\",\n\t\t\t\"pageE\": \".main-item\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE)\"\n\t\t}\n\t},\n\t\"JavDove 番号鸽\": {\n\t\t\"host\": \"/^(www\\\\.)?javdove/\",\n\t\t\"url\": \"/\\\\/videos/\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".prevnext[rel='next']\",\n\t\t\t\"pageE\": \".row>.col-video\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE)\"\n\t\t}\n\t},\n\t\"JAV吧 JAV8\": {\n\t\t\"host\": [\"jav98.xyz\",\"/^jav8\\\\.[a-z]+$/\"],\n\t\t\"url\": \"return fun.isPager()\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".pagination-next\",\n\t\t\t\"pageE\": \"a.work\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t}\n\t},\n\t\"JieAV\": {\n\t\t\"host\": [\"www.jieav.com\",\"www.qinav.com\",\"www.qinimg.com\",\"www.yinmh.com\",\"www.txtxi.com\",\"www.dnaav.com\",\"www.jiedm.com\",\"www.ruav.xyz\",\"www.feiav.com\"],\n\t\t\"url\": \"return fun.isPager('r')\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.active+a\",\n\t\t\t\"pageE\": \".list_box>ul\",\n\t\t\t\"replaceE\": \".pages\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE,[0,'img[img]','img'])\"\n\t\t}\n\t},\n\t\"tokyomotion\": {\n\t\t\"host\": \"www.tokyomotion.net\",\n\t\t\"url\": \"return fun.isPager()\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".prevnext\",\n\t\t\t\"pageE\": \"(//div[@class='row']/div[@class='col-sm-12']/div[@class='row'])[last()]/div\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t}\n\t},\n\t\"porn78.info\": {\n\t\t\"host\": [\"porn78.info\",\"nyaa.porn78.info\"],\n\t\t\"url\": \"return fun.isPager('n')\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".next>a\",\n\t\t\t\"pageE\": \"#portfolio>li\",\n\t\t\t\"replaceE\": \".general-pagination\"\n\t\t}\n\t},\n\t\"Netflav\": {\n\t\t\"host\": \"netflav.com\",\n\t\t\"url\": \"fun.isUrlC(); return (fun.lp() != '/' && !fun.indexOF(/^\\\\/(video|actress|browse|genre)$/))\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"type\": 6,\n\t\t\t\"nextL\": \"js; return fun.getNextEP('a.active.item+a.item:not(.icon)','page=',/page=\\\\d+/)\",\n\t\t\t\"pageE\": \".grid_0_cell\",\n\t\t\t\"replaceE\": \".pagination\",\n\t\t\t\"loadTime\": 1200,\n\t\t\t\"scrollD\": 3000\n\t\t}\n\t},\n\t\"Porn87\": {\n\t\t\"host\": \"porn87.com\",\n\t\t\"url\": \"return (fun.lp() == '/' || fun.lp() == '/main/tag' || fun.lp() == '/main/search')\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".pagination-next:not(.mobile_pagination)>a\",\n\t\t\t\"pageE\": \".column:not(.native_ads)\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t}\n\t},\n\t\"GGJAV\": {\n\t\t\"host\": \"ggjav.com\",\n\t\t\"url\": \"return (fun.lp() != '/' && fun.lp() != '/home/' && fun.lp() != '/main/video')\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".pager>a:last-child[href]\",\n\t\t\t\"pageE\": \".item.columns:not(.native_ads),.columns.model_chunk\",\n\t\t\t\"replaceE\": \".pager\"\n\t\t}\n\t},\n\t\"BuzzAV\": {\n\t\t\"host\": \"www.buzzav.com\",\n\t\t\"url\": \"/\\\\/(videos|albums)/\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".page-item.active+li>a\",\n\t\t\t\"pageE\": \".content-left>.row.content-row\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t}\n\t},\n\t\"AVJOY\": {\n\t\t\"host\": \"avjoy.me\",\n\t\t\"url\": \"return fun.isPager()\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".active+li.page-item>a\",\n\t\t\t\"pageE\": \".content-left>.content-row>div\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t}\n\t},\n\t\"AV6K\": {\n\t\t\"host\": \"av6k.com\",\n\t\t\"url\": \"return (fun.lp() != '/' && !fun.indexOF('/search') && !fun.indexOF(/\\\\/\\\\d+\\\\.html$/))\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".thisclass+li>a\",\n\t\t\t\"pageE\": \".listA\",\n\t\t\t\"replaceE\": \".pages_c\"\n\t\t}\n\t},\n\t\"HuangboAV\": {\n\t\t\"host\": \"huangboav.com\",\n\t\t\"url\": \"return (fun.indexOF(/^\\\\/(category|tag)\\\\//) || location.search != '')\",\n\t\t\"style\": \"img[data-src] {opacity: 1 !important;}\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//a[@class='current']/../following-sibling::li[1]/a\",\n\t\t\t\"pageE\": \".page-header~div:not(.pagination):not(.clear)\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE)\"\n\t\t}\n\t},\n\t\"SupJav\": {\n\t\t\"host\": \"supjav.com\",\n\t\t\"url\": \"return (fun.indexOF('/category/') || fun.indexOF('/tag/') || fun.indexOF('/popular') || fun.indexOF('s=','s'))\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"li.active+li > a\",\n\t\t\t\"pageE\": \".posts\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE)\"\n\t\t}\n\t},\n\t\"141 JAV\": {\n\t\t\"host\": [\"www.141jav.com\",\"www.141ppv.com\"],\n\t\t\"url\": \"if(fun.lp()=='/'){setTimeout(`document.getElementById('button-load-more').click()`,2000);}else if(!fun.indexOF('torrent')){return true;}\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.pagination-next\",\n\t\t\t\"pageE\": \"body>.container>.card,body>.container>.columns\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t}\n\t},\n\t\"JavBooks\": {\n\t\t\"host\": [\"javbooks.com\",\"jmvbt.com\",\"/^[a-z]{2}\\\\d{4}\\\\.com$/\"],\n\t\t\"url\": \"return (fun.isTitle('Javbooks') && !fun.indexOF('/content_'))\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"span.pageback>a\",\n\t\t\t\"pageE\": \".Po_topic,.Po_u_topic\",\n\t\t\t\"replaceE\": \".PageBar\"\n\t\t}\n\t},\n\t\"JAV Library\": {\n\t\t\"host\": [\"www.javlib.com\",\"www.javlibrary.com\",\"www.o58c.com\"],\n\t\t\"url\": \"/\\\\/(vl_|public)/\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.next\",\n\t\t\t\"pageE\": \".video,table.pubgroup>tbody>tr:not(#header),table.post\",\n\t\t\t\"replaceE\": \".page_selector\"\n\t\t}\n\t},\n\t\"JavTorrent\": {\n\t\t\"host\": [\"ijavtorrent.com\",\"projectjav.com\"],\n\t\t\"url\": \"return (!fun.indexOF('/movie/') && !fun.indexOF('/article/') && !fun.indexOF('/actress/'))\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.gonext\",\n\t\t\t\"pageE\": \".movie-list,.articles-list,.actress-list\",\n\t\t\t\"replaceE\": \"//a[contains(@class,'gonext')]/..\",\n\t\t\t\"scrollD\": 2500\n\t\t}\n\t},\n\t\"YavTube\": {\n\t\t\"host\": [\"yavtube.com\",\"r18hub.com\"],\n\t\t\"url\": \"return fun.isPager()\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"li.active+li.wave-effect>a\",\n\t\t\t\"pageE\": \"ul.item-list\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE)\"\n\t\t}\n\t},\n\t\"YavTube - 作品页\": {\n\t\t\"host\": [\"yavtube.com\",\"r18hub.com\"],\n\t\t\"url\": \"/^\\\\/model\\\\//\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"section.active li.active+li.wave-effect>a\",\n\t\t\t\"pageE\": \"section.model-items-container:first-of-type>ul\",\n\t\t\t\"insertP\": [\"section.active>ul\",5],\n\t\t\t\"replaceE\": \"section.active .pagination,section.model-items-container:not([style='display: none;']):first-of-type .pagination\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE)\"\n\t\t}\n\t},\n\t\"avtop10\": {\n\t\t\"host\": \"avtop10.com\",\n\t\t\"url\": \"return fun.isPager()\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"#nextUrl\",\n\t\t\t\"pageE\": \".item-new>div\",\n\t\t\t\"replaceE\": \".page-box\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE)\"\n\t\t}\n\t},\n\t\"TaSexy\": {\n\t\t\"host\": \"www.tasexy.top\",\n\t\t\"url\": \"return fun.isPager()\",\n\t\t\"style\": \".iframe,li[id^=sexy_]\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.active+a\",\n\t\t\t\"pageE\": \".list_box>ul:nth-of-type(2)~ul\",\n\t\t\t\"replaceE\": \".pages\"\n\t\t}\n\t},\n\t\"caribbeancom\": {\n\t\t\"host\": [\"www.caribbeancom.com\",\"en.caribbeancom.com\"],\n\t\t\"url\": \"return (fun.isPager()|fun.indexOF(/\\\\/(listpages|search)\\\\//))\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a[rel=next]\",\n\t\t\t\"pageE\": \".list>.flex-grid>.grid-item, .grid.is-movie>.entry\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t}\n\t},\n\t\"16k.club\": {\n\t\t\"host\": \"www.16k.club\",\n\t\t\"url\": \"return fun.isPager()\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"type\": 6,\n\t\t\t\"nextL\": \".m-pagination-next>a\",\n\t\t\t\"pageE\": \".container>.row.grid\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t}\n\t},\n\t\"GGBases\": {\n\t\t\"host\": \"www.ggbases.com\",\n\t\t\"url\": \"return fun.isPager()\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"li[class*=pfhover]+li>a\",\n\t\t\t\"pageE\": \"tr.dtr,head>style\",\n\t\t\t\"replaceE\": \"div[class^=pages]\",\n\t\t\t\"scriptT\": 1\n\t\t}\n\t},\n\t\"UraakaList\": {\n\t\t\"host\": \"uraakalist.com\",\n\t\t\"url\": \"/^\\\\/.+/\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.next_page\",\n\t\t\t\"pageE\": \".image-list>.card,.prof-list>.prof-card\",\n\t\t\t\"replaceE\": \"[id='pagenation']\"\n\t\t}\n\t},\n\t\"俺の3Dエロ動画\": {\n\t\t\"host\": \"oreno3d.com\",\n\t\t\"url\": \"return (!fun.indexOF('/movies/'))\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a[rel='next']\",\n\t\t\t\"pageE\": \".g-main-grid>article\",\n\t\t\t\"replaceE\": \".pagination\",\n\t\t\t\"scrollD\": 2500\n\t\t}\n\t},\n\t\"FC2 电子市场\": {\n\t\t\"host\": \"adult.contents.fc2.com\",\n\t\t\"url\": \"/^\\\\/search\\\\//\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"span.items+a[data-link-name='pager']\",\n\t\t\t\"pageE\": \".c-cntCard-110-f\",\n\t\t\t\"replaceE\": \".c-pager-101\"\n\t\t}\n\t},\n\t\"ec.sod.co.jp\": {\n\t\t\"host\": \"ec.sod.co.jp\",\n\t\t\"url\": \"/^\\\\/prime\\\\/videos\\\\/genre\\\\/\\\\?/\",\n\t\t\"blank\": 4,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".page_list_li_on+.page_list_li>a\",\n\t\t\t\"pageE\": \"#videos_s_mainbox\",\n\t\t\t\"replaceE\": \"#page_list\"\n\t\t}\n\t},\n\t\"7mmtv\": {\n\t\t\"host\": \"7mmtv.sx\",\n\t\t\"url\": \"return (document.title.indexOf('7mmtv') != -1 && fun.lp() != '/' && !fun.indexOF('_content/'))\",\n\t\t\"blank\": 4,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"li.page-item.current+li.page-item>a\",\n\t\t\t\"pageE\": \"main .row.content\",\n\t\t\t\"replaceE\": \".pagination-row\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"aF\": \"document.body.appendChild(document.createElement('script')).textContent = 'window.document.dispatchEvent(new Event(\\\"DOMContentLoaded\\\",{bubbles: true,cancelable: true}));'\"\n\t\t}\n\t},\n\t\"7mmtv - 漫画\": {\n\t\t\"host\": \"/^.+\\\\.7mmtv\\\\.sx$/\",\n\t\t\"url\": \"if (document.title.indexOf('7mmtv') != -1 && fun.indexOF('/hcomic_content/')) {let _img=''; for (let i=1;i<=Large_cgurl.length;i++){_img += `<li><img src=\\\"${Large_cgurl[i]}\\\" class=\\\"img-responsive\\\"></li>`;}; document.getElementById('show_cg_html').innerHTML = _img; return true;}\",\n\t\t\"style\": \".video-introduction-images-row>center>*:not(#content)\",\n\t\t\"hiddenPN\": true\n\t},\n\t\"imhentai.xxx\": {\n\t\t\"host\": \"imhentai.xxx\",\n\t\t\"url\": \"return fun.isPager()\",\n\t\t\"blank\": 4,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".page-item.active+li:not(.disabled)>a\",\n\t\t\t\"pageE\": \".thumb\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t}\n\t},\n\t\"imhentai.xxx - 图片页\": {\n\t\t\"host\": \"imhentai.xxx\",\n\t\t\"url\": \"if(fun.indexOF('/view/')){setTimeout(()=>{let _img='',iext_nx='',Pages=parseInt(document.getElementById('pages').value),image_dir=document.getElementById('image_dir').value,gallery_id=document.getElementById('gallery_id').value;for(let i=1;i<=Pages;i++){if(g_th[i].split(',')[0]=='j'){iext_nx='jpg'}else if(g_th[i].split(',')[0]=='p'){iext_nx='png'}else if(g_th[i].split(',')[0]=='b'){iext_nx='bmp'}else if(g_th[i].split(',')[0]=='g'){iext_nx='gif'};_img+=`<img src=\\\"//${random_server}/${image_dir}/${gallery_id}/${i}.${iext_nx}\\\">`;};console.log(_img);document.querySelector('.pre_img').outerHTML=_img;},1000);return true}\",\n\t\t\"style\": \".nav_pagination\",\n\t\t\"hiddenPN\": true\n\t},\n\t\"Hentai.tv\": {\n\t\t\"host\": \"hentai.tv\",\n\t\t\"url\": \"/^\\\\/(trending|genre)\\\\//\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.page-links.current+a.page-links\",\n\t\t\t\"pageE\": \"a.card.row\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t}\n\t},\n\t\"CartoonPornVideos\": {\n\t\t\"host\": \"www.cartoonpornvideos.com\",\n\t\t\"url\": \"return fun.isPager('r')\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".next\",\n\t\t\t\"pageE\": \".thumb-list>div\",\n\t\t\t\"replaceE\": \".content>.pagination\"\n\t\t}\n\t},\n\t\"rule34video\": {\n\t\t\"host\": \"rule34video.com\",\n\t\t\"url\": \"return (!fun.indexOF('/search')&&fun.isPager())\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".next>a\",\n\t\t\t\"pageE\": \".thumbs>.thumb\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE)\"\n\t\t}\n\t},\n\t\"hanime1\": {\n\t\t\"host\": \"hanime1.me\",\n\t\t\"url\": \"/^\\\\/search/\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a[rel='next']\",\n\t\t\t\"pageE\": \".home-rows-videos-wrapper\",\n\t\t\t\"replaceE\": \".pagination\",\n\t\t\t\"scrollD\": 2500\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE)\"\n\t\t}\n\t},\n\t\"hanime1 - 漫画 - 分类页\": {\n\t\t\"host\": \"hanime1.me\",\n\t\t\"url\": \"return (fun.lp() == '/comics' || fun.indexOF(/^\\\\/(tags|artists|characters|parodies|groups)\\\\//))\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a[rel='next']\",\n\t\t\t\"pageE\": \".comic-rows-videos-div\",\n\t\t\t\"replaceE\": \".pagination\",\n\t\t\t\"forceHTTPS\": true,\n\t\t\t\"scrollD\": 2500\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE,[0,'img[data-srcset]','data-srcset'])\"\n\t\t}\n\t},\n\t\"hanime1 - 漫画\": {\n\t\t\"host\": \"hanime1.me\",\n\t\t\"url\": \"/^\\\\/comic\\\\/\\\\d+\\\\/\\\\d/\",\n\t\t\"style\": \"#current-page-image {display: block !important; margin: 0 auto !important; max-height: calc(250vh) !important;}\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.comic-show-content-nav-item-wrapper.arrow-right\",\n\t\t\t\"pageE\": \"img#current-page-image\",\n\t\t\t\"replaceE\": \".comic-show-content-nav\"\n\t\t}\n\t},\n\t\"污污漫画\": {\n\t\t\"host\": \"www.comicbox.xyz\",\n\t\t\"url\": \"/^\\\\/chapter\\\\/\\\\d+/\",\n\t\t\"style\": \".global-navbar\",\n\t\t\"pager\": {\n\t\t\t\"type\": 6,\n\t\t\t\"nextL\": \"//div[@class='fanye']/a[text()='下一章']\",\n\t\t\t\"pageE\": \".comicpage>div\",\n\t\t\t\"replaceE\": \".fanye\",\n\t\t\t\"loadTime\": 1000,\n\t\t\t\"scrollD\": 4000\n\t\t}\n\t},\n\t\"禁漫天堂\": {\n\t\t\"host\": [\"18comic.vip\",\"18comic.org\",\"/^jmcomic-zzz.[a-z]+$/\",\"/^18comic-[a-z]+.[a-z]+$/\",\"/^jm-?comic[0-9]?\\\\.[a-z]+$/\"],\n\t\t\"url\": \"if (fun.indexOF(/^\\\\/photo\\\\//)){setTimeout(()=>{document.body.appendChild(document.createElement('script')).textContent = `var old_onImageLoaded = onImageLoaded; onImageLoaded = function(e){aid = parseInt(/photos\\\\\\\\/\\\\\\\\d+/.exec(e.src)[0].replace('photos/','')); if(aid>scramble_id){old_onImageLoaded(e);}}`; fun.src_bF(fun.getAllCSS('.scramble-page'),[0,'img[data-original]:not(.lazy-loaded)','data-original']);},3000); return true}\",\n\t\t\"style\": \"[data-group],div[data-page],.thumb-overlay-albums>*:not(.scramble-page):not(.scramble-page1) {display: none !important;} #Comic_Top_Nav[style*='display: block'] {opacity: 0.3;}\",\n\t\t\"history\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"#next_series>a[href]\",\n\t\t\t\"pageE\": \".scramble-page,.scramble-page1\",\n\t\t\t\"replaceE\": \".menu-bolock-ul,#next_series\",\n\t\t\t\"interval\": 5000,\n\t\t\t\"scrollD\": 3000\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"pageE.forEach(function (o) {o.className+=1;let b=o.querySelector('img');if(b){b.onload=e=>{onImageLoaded(e.target)}}}); return fun.src_bF(pageE)\"\n\t\t}\n\t},\n\t\"禁漫天堂 - 分类页\": {\n\t\t\"host\": [\"18comic.vip\",\"18comic.org\",\"/^jmcomic-zzz.[a-z]+$/\",\"/^18comic-[a-z]+.[a-z]+$/\",\"/^jm-?comic[0-9]?\\\\.[a-z]+$/\"],\n\t\t\"url\": \"/^\\\\/(albums|search|blogs|videos|movies)/\",\n\t\t\"style\": \".row>[style='z-index: 0;'],.col-lg-3.col-md-3.col-sm-3.col-xs-6\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"#wrapper>.container>div:not(.row)>.pagination .prevnext\",\n\t\t\t\"pageE\": \"#wrapper>.container>.row:not(:last-of-type):not(.visible-xs)\",\n\t\t\t\"replaceE\": \"#wrapper>.container>div:not(.row)>.pagination\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE)\"\n\t\t}\n\t},\n\t\"177 漫画/xxiav\": {\n\t\t\"host\": [\"www.177picyy.com\",\"www.xxiav.com\"],\n\t\t\"url\": \"/\\\\d+\\\\.html/\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//div[@class='page-links']/a[./span[./i[@class='be be-arrowright']]]\",\n\t\t\t\"pageE\": \".single-content>p\",\n\t\t\t\"replaceE\": \".page-links\",\n\t\t\t\"scrollD\": 3000\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE,[0,'img[data-lazy-src]','data-lazy-src'])\"\n\t\t}\n\t},\n\t\"18 禁漫\": {\n\t\t\"host\": \"www.18mh.cc\",\n\t\t\"url\": \"/^\\\\/index-look/\",\n\t\t\"style\": \".e img {display: block; margin: 0 auto;}\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//div[@class='c']/a[text()='下一頁' or text()='下一章'][not(@class='n fanye')]\",\n\t\t\t\"pageE\": \".e>img:not([style='display:none;'])\",\n\t\t\t\"replaceE\": \".c,.b\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE,[0,'img[data-url]','data-url'])\"\n\t\t}\n\t},\n\t\"ACG漫画网\": {\n\t\t\"host\": [\"www.acgxmh.com\",\"www.porn-comic.com\",\"www.hentai-acg.com\",\"/^(www\\\\.)?acgmh[a-z]\\\\.com$/\"],\n\t\t\"url\": \"return fun.isPager()\",\n\t\t\"style\": \".pre_picture,.next_picture\",\n\t\t\"pager\": {\n\t\t\t\"type\": 3,\n\t\t\t\"nextL\": \".page>span+a:not(.a1)\",\n\t\t\t\"pageE\": \".manga-picture>picture,.manga-picture>img,#list>li\",\n\t\t\t\"replaceE\": \".page\"\n\t\t}\n\t},\n\t\"rule34comic.party\": {\n\t\t\"host\": \"rule34comic.party\",\n\t\t\"url\": \"return fun.isPager()\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".item.pager.next>a\",\n\t\t\t\"pageE\": \".item.thumb \",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE)\"\n\t\t}\n\t},\n\t\"rule34comic.party - read\": {\n\t\t\"host\": \"rule34comic.party\",\n\t\t\"url\": \"if(fun.indexOF(/^\\\\/read\\\\/.*\\\\/\\\\d+/)){document.querySelector('img[data-original]').src=document.querySelector('img[data-original]').dataset.original;setTimeout(()=>{fun.src_bF(fun.getAllCSS('img.hidden[data-src]'));},2000);document.body.appendChild(document.createElement('script')).textContent = 'document.querySelector(\\\\'.thumbs-gallery-read\\\\').addEventListener(\\\\'error\\\\', function(event) {if (event.target.tagName === \\\\'IMG\\\\') {const img = event.target;console.log(`重试加载图片: ${img.src} 尝试 ${img.dataset.attempts}`);img.src = img.src;}}, true);';return true;}\",\n\t\t\"style\": \".video_container img.hidden{display: block !important;} .read-comic-prev,.read-comic-next,#scrollToFixed{display: none !important;}\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.read-comic-next\",\n\t\t\t\"pageE\": \".thumbs-gallery-read>img\",\n\t\t\t\"replaceE\": \"a.read-comic-next\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE)\"\n\t\t}\n\t},\n\t\"E-Hentai\": {\n\t\t\"host\": [\"e-hentai.org\",\"exhentai.org\"],\n\t\t\"url\": \"if(fun.getCSS('.itg,#gdt,#img')){setTimeout(()=>{window.nl=()=>{return false}},2000);return true}\",\n\t\t\"style\": \"#img {max-width: 100% !important;height: auto !important;min-height: 400px;}\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"type\": 3,\n\t\t\t\"nextL\": \"//table[@class='ptb']//a[string()='>'] | (//a[@id='next'])[last()] | id('dnext')\",\n\t\t\t\"pageE\": \".itg>div,.itg>tbody>tr:not(:first-of-type),#gdt>*:not(.c),#img\",\n\t\t\t\"replaceE\": \".ptt,.ptb,.sn,.searchnav\",\n\t\t\t\"scrollE\": \"//table[@class='ptb'] | (//a[@id='next'])[last()] | id('dnext')\"\n\t\t}\n\t},\n\t\"nhentai\": {\n\t\t\"host\": [\"nhentai.net\",\"nhentai.to\",\"web.zorocdn.xyz\"],\n\t\t\"url\": \"if (fun.indexOF(/^\\\\/g\\\\/\\\\d+\\\\/\\\\d+\\\\//)){const imageA = document.querySelector('#image-container>a'); imageA.outerHTML=imageA.innerHTML;return true;} else {return (fun.getCSS('a.next') && fun.getCSS('.gallery'));}\",\n\t\t\"style\": \"section#image-container img {max-width: 100% !important;height: auto !important;display: block !important;margin: 0 auto !important;}\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.next,.current+a.page\",\n\t\t\t\"pageE\": \".container>.gallery,#image-container img\",\n\t\t\t\"replaceE\": \".pagination,.reader-pagination\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"if (fun.getCSS('.container>.gallery') && typeof _n_app !== 'undefined' && _n_app.options.blacklisted_tags != null && _n_app.options.blacklisted_tags.length != 0) {pageE.forEach(function (one) {let tags = one.dataset.tags.split(' ');for (let i=0; i < tags.length; i++){for (let ii=0; ii < _n_app.options.blacklisted_tags.length; ii++){if (tags[i] == _n_app.options.blacklisted_tags[ii]) {one.classList.add('blacklisted');};};};});}; return fun.src_bF(pageE)\"\n\t\t}\n\t},\n\t\"nhentai.xxx\": {\n\t\t\"host\": \"nhentai.xxx\",\n\t\t\"url\": \"return fun.isPager()\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"li.active+li:not(.disabled)>a\",\n\t\t\t\"pageE\": \".gallery_item\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE)\"\n\t\t}\n\t},\n\t\"nhentai.xxx - g\": {\n\t\t\"host\": \"nhentai.xxx\",\n\t\t\"url\": \"if(fun.indexOF(/^\\\\/g\\\\/\\\\d+\\\\/\\\\d+\\\\//)){const imageA = fun.getCSS('.fw_img');imageA.outerHTML=imageA.innerHTML;return true;}\",\n\t\t\"style\": \".pg_prv,.pg_nxt\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"js;return fun.getNextUPN(/^\\\\/g\\\\/\\\\d+\\\\/(\\\\d+)\\\\//,/\\\\/(\\\\d+)\\\\/$/,'/','/','2',fun.getCSS('.tp').textContent)\",\n\t\t\t\"pageE\": \"#fimg\",\n\t\t\t\"replaceE\": \".reader_nav\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE)\"\n\t\t}\n\t},\n\t\"HentaiFox\": {\n\t\t\"host\": \"hentaifox.com\",\n\t\t\"url\": \"return fun.isPager()\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".active+li.page-item:not(.disabled)>a\",\n\t\t\t\"pageE\": \".lc_galleries>.thumb\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t}\n\t},\n\t\"HentaiFox-g\": {\n\t\t\"host\": \"hentaifox.com\",\n\t\t\"url\": \"if(fun.indexOF(/^\\\\/g\\\\/\\\\d+\\\\/\\\\d+\\\\//)){const a=fun.getCSS('#gimg');a.parentElement.outerHTML=a.outerHTML;return true;}\",\n\t\t\"style\": \".page_next,.page_prev,.gallery_pagination\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"js; return fun.getNextUPN(/^\\\\/g\\\\/\\\\d+\\\\/(\\\\d+)/,/(?<=^\\\\/g\\\\/\\\\d+)\\\\/\\\\d+\\\\//,'/','/','2',fun.getCSS('.total_pages').textContent)\",\n\t\t\t\"pageE\": \".full_image img\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE)\"\n\t\t}\n\t},\n\t\"HentaiEra\": {\n\t\t\"host\": \"hentaiera.com\",\n\t\t\"url\": \"return fun.isPager()\",\n\t\t\"style\": \".blacklisted {z-index: 0;opacity: 1;-webkit-filter: none;filter: none;pointer-events: auto;}\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".pgi_itm.active+li.pgi_itm:not(.disabled)>a\",\n\t\t\t\"pageE\": \".thumb\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t}\n\t},\n\t\"HentaiEra-gallery\": {\n\t\t\"host\": \"hentaiera.com\",\n\t\t\"url\": \"/^\\\\/gallery\\\\/\\\\d+/\",\n\t\t\"hiddenPN\": true\n\t},\n\t\"HentaiEra-view\": {\n\t\t\"host\": \"hentaiera.com\",\n\t\t\"url\": \"if(fun.indexOF(/^\\\\/view\\\\/\\\\d+\\\\/\\\\d+\\\\//)){const a=fun.getCSS('#gimg');a.src=a.dataset.src;a.parentElement.outerHTML=a.outerHTML;window.scrollTo=()=>{return false;};return true;}\",\n\t\t\"style\": \".page_next,.page_prev,.nav_pagination,#footer_bar\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"js; const next = fun.getCSS('.nav_next:not([disabled])');if(next){let gimg = fun.getCSS('#gimg'),gimg_clone = gimg.cloneNode();gimg_clone.src='';gimg.insertAdjacentElement('afterend', gimg_clone);gimg.id='';next.click();fun.pageNumIncrement();}\"\n\t\t}\n\t},\n\t\"9hentai\": {\n\t\t\"host\": \"www1.9hentai.com\",\n\t\t\"url\": \"/^\\\\/g\\\\/\\\\d+\\\\/\\\\d+\\\\//\",\n\t\t\"pager\": {\n\t\t\t\"type\": 6,\n\t\t\t\"nextL\": \"a[data-target='#jumpPageModal']+a\",\n\t\t\t\"pageE\": \"#img-reader\",\n\t\t\t\"replaceE\": \".viewer-control\",\n\t\t\t\"loadTime\": 500\n\t\t}\n\t},\n\t\"xxxclub\": {\n\t\t\"host\": \"xxxclub.to\",\n\t\t\"url\": \"return fun.isPager()\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".browsepagination>a:not(.page-link)\",\n\t\t\t\"pageE\": \".browsetableinside>ul>li:not(:first-child)\",\n\t\t\t\"replaceE\": \".browsepagination\"\n\t\t}\n\t},\n\t\"Orzqwq\": {\n\t\t\"host\": \"orzqwq.com\",\n\t\t\"url\": \"if(fun.indexOF(/\\\\/p\\\\/\\\\d\\\\/$/)){let t = setInterval(()=>{if(typeof chapter_preloaded_images !== 'undefined'){let _img=''; for (let i=0;i<=chapter_preloaded_images.length;i++){_img += `<img src=\\\"${chapter_preloaded_images[i]}\\\">`;}; document.querySelector('.reading-content').innerHTML = _img;clearInterval(t);}},500); return true;}\",\n\t\t\"hiddenPN\": true\n\t},\n\t\"hitomi\": {\n\t\t\"host\": \"hitomi.la\",\n\t\t\"url\": \"if(fun.indexOF('/reader/')){window.imgIndex = 1;return true;}\",\n\t\t\"style\": \"body {height: auto !important; overflow: auto !important;} #comicImages.fitVertical img {margin: 0 auto;display: block;max-height: calc(1000px - 41px);} .navbar-static-top {display: none;}\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"js;if(window.imgIndex +1 >= our_galleryinfo.length){return}; document.getElementById('comicImages').insertAdjacentHTML('beforeend',`<img src=\\\"${url_from_url_from_hash(galleryinfo['id'],our_galleryinfo[window.imgIndex],(our_galleryinfo[0].hasavif?'avif':'webp'))}\\\">`);window.imgIndex+=1;fun.pageNumIncrement();\"\n\t\t}\n\t},\n\t\"MANGA1000\": {\n\t\t\"host\": \"manga1000.top\",\n\t\t\"url\": \"/^\\\\/\\\\d+\\\\/\\\\d+\\\\//\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"js; return (location.origin+fun.getCSS('ul.chapter_select option[selected]').previousElementSibling.value)\",\n\t\t\t\"pageE\": \".chapter-content>img,.chapter-content>br\",\n\t\t\t\"replaceE\": \".chapter_select\",\n\t\t\t\"interval\": 2000\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE)\"\n\t\t}\n\t},\n\t\"MANGA1000 - 分类/搜索页\": {\n\t\t\"host\": \"manga1000.top\",\n\t\t\"url\": \"/^\\\\/manga-list/\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//a[text()='»']\",\n\t\t\t\"pageE\": \".thumb-item-flow\",\n\t\t\t\"replaceE\": \".pagination,.col-md-8>.btn-group:first-child\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE,[1,'[data-bg]','data-bg'])\"\n\t\t}\n\t},\n\t\"yande\": {\n\t\t\"host\": [\"konachan.net\",\"konachan.com\",\"yande.re\"],\n\t\t\"url\": \"return (fun.lp() == '/post')\",\n\t\t\"style\": \".javascript-hide {display: inline-block !important;} ul#post-list-posts img,ul#post-list-posts .inner{width: auto !important; height: auto !important;} ul#post-list-posts li {width: 33% !important;} a.directlink {margin: 0 !important;}\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.next_page\",\n\t\t\t\"pageE\": \"ul#post-list-posts\",\n\t\t\t\"replaceE\": \"#paginator\"\n\t\t}\n\t},\n\t\"Gelbooru\": {\n\t\t\"host\": [\"gelbooru.com\",\"tbib.org\",\"safebooru.org\",\"illusioncards.booru.org\",\"rule34.xxx\",\"hypnohub.net\",\"xbooru.com\"],\n\t\t\"url\": \"/s=list/\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a[alt='next']\",\n\t\t\t\"pageE\": \".thumbnail-container,span.thumb\",\n\t\t\t\"replaceE\": \"#paginator\"\n\t\t}\n\t},\n\t\"Rule34\": {\n\t\t\"host\": [\"rule34hentai.net\",\"rule34.paheal.net\"],\n\t\t\"url\": \"return (fun.lp() == '/' || fun.indexOF('/post/list'))\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"#paginator b+a\",\n\t\t\t\"pageE\": \".thumb\",\n\t\t\t\"replaceE\": \"#paginator\"\n\t\t}\n\t},\n\t\"Danbooru\": {\n\t\t\"host\": [\"danbooru.donmai.us\",\"e621.net\"],\n\t\t\"url\": \"return (fun.lp() == '/' || fun.lp() == '/posts')\",\n\t\t\"style\": \".post-preview:not(.blacklist-initialized),.image-container:not(.blacklist-initialized){visibility: initial !important;}\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a[rel='next']\",\n\t\t\t\"pageE\": \"article\",\n\t\t\t\"replaceE\": \".paginator\"\n\t\t}\n\t},\n\t\"kemono.su\": {\n\t\t\"host\": \"kemono.su\",\n\t\t\"url\": \"/^\\\\/(posts|patreon|artists)/\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"type\": 6,\n\t\t\t\"nextL\": \"a.next\",\n\t\t\t\"pageE\": \".card-list__items\",\n\t\t\t\"replaceE\": \".paginator>menu\",\n\t\t\t\"loadTime\": 1000\n\t\t}\n\t},\n\t\"BepisDB\": {\n\t\t\"host\": \"db.bepis.moe\",\n\t\t\"url\": \"return fun.isPager()\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".page-item.active+li>a\",\n\t\t\t\"pageE\": \"#inner-card-body>div\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t}\n\t},\n\t\"xchina.co\": {\n\t\t\"host\": [\"xchina.co\",\"/^xchina\\\\.[a-z]+$/\",\"crxs.me\",\"litu100.xyz\",\"8se.me\",\"shise.me\"],\n\t\t\"url\": \"return fun.isPager()\",\n\t\t\"style\": \".quickGuide,.outer-banner,.item[class*=exoclick],.item[class=item],.photos>div,.media,.static-container-4,.static-container-5,.recommendation_widget\",\n\t\t\"pager\": {\n\t\t\t\"type\": 3,\n\t\t\t\"nextL\": \"a.next\",\n\t\t\t\"pageE\": \".videos>div.item:not([class*=exoclick]):not([class=item]), .videos>.video, .list>div.item:not([class*=exoclick]):not([class=item]), .photos>a, .fiction-body>.content>p, .fiction-body>.content>.chapters, .lists>a, .comic>div:not([class])\",\n\t\t\t\"replaceE\": \".pager,.prevNext\",\n\t\t\t\"scrollE\": \".pager+div+.pager,.prevNext\",\n\t\t\t\"scrollD\": 1000\n\t\t}\n\t},\n\t\"西斯新聞\": {\n\t\t\"host\": \"sexynews.gamme.com.tw\",\n\t\t\"url\": \"return fun.isPager()\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".navi-next\",\n\t\t\t\"pageE\": \".List-4\",\n\t\t\t\"replaceE\": \".navi-pages\"\n\t\t}\n\t},\n\t\"Hentai Foundry\": {\n\t\t\"host\": \"www.hentai-foundry.com\",\n\t\t\"url\": \"return (fun.lp() != '/' && fun.isPager('p'))\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".next>a\",\n\t\t\t\"pageE\": \".thumb_square\",\n\t\t\t\"replaceE\": \".pager\"\n\t\t}\n\t},\n\t\"The Hentai World\": {\n\t\t\"host\": \"thehentaiworld.com\",\n\t\t\"url\": \"return (fun.lp() == '/' || fun.indexOF(/^\\\\/(tag|page|hentai-images)\\\\//))\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.next,.current+.minithumb>a\",\n\t\t\t\"pageE\": \".thumb,#doujin>a\",\n\t\t\t\"replaceE\": \".navigation,#miniThumbContainer\"\n\t\t}\n\t},\n\t\"LoLHentai\": {\n\t\t\"host\": \"www.lolhentai.net\",\n\t\t\"url\": \"/\\\\/(category|tags)\\\\//\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a[rel='next']\",\n\t\t\t\"pageE\": \".gthumb\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t}\n\t},\n\t\"Hentai Cosplays - 图片页\": {\n\t\t\"host\": [\"/hentai-cosplays\\\\.com$/\",\"/porn-images-xxx\\\\.com$/\",\"/hentai-img\\\\.com$/\"],\n\t\t\"url\": \"/^\\\\/image\\\\//\",\n\t\t\"style\": \".icon-good-thumbnail,.icon-bad-thumbnail {display: none !important;} .icon-overlay img {min-height: 200px;}\",\n\t\t\"pager\": {\n\t\t\t\"type\": 3,\n\t\t\t\"nextL\": \"id('paginator')//a[contains(text(),'>')] | //a[@rel='next']\",\n\t\t\t\"pageE\": \"#detail_list,#display_image_detail>.icon-overlay\",\n\t\t\t\"replaceE\": \"#paginator,.paginator_area\"\n\t\t}\n\t},\n\t\"Hentai Cosplays - 分类页\": {\n\t\t\"host\": [\"/hentai-cosplays\\\\.com$/\",\"/porn-images-xxx\\\\.com$/\",\"/hentai-img\\\\.com$/\"],\n\t\t\"url\": \"/^\\\\/./\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"type\": 3,\n\t\t\t\"nextL\": \"a.nextpostslink,a.paginator_page[rel='next']\",\n\t\t\t\"pageE\": \"#center>#display_area_image>#image-list,#page>#right_sidebar>#entry_list\",\n\t\t\t\"replaceE\": \".wp-pagenavi,#page>#page_nation\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE)\"\n\t\t}\n\t},\n\t\"绅士仓库\": {\n\t\t\"host\": \"/^cangku\\\\./\",\n\t\t\"url\": \"if (document.title.indexOf('绅士') == -1){return}; fun.isUrlC(); if (fun.lp() != '/rank'){setTimeout(`let a='.mr-auto,.navbar-brand.active,.simple-navbar';if(location.pathname.indexOf('/search/')!=-1){a='.mr-auto,.navbar-brand.active'};document.querySelectorAll(a).forEach(function (o) {o.innerHTML = o.innerHTML;})`,1500);} return (fun.lp() == '/' || fun.indexOF('/category/') || fun.indexOF('/user/'))\",\n\t\t\"history\": true,\n\t\t\"pager\": {\n\t\t\t\"type\": 6,\n\t\t\t\"nextL\": \"js; return fun.getNextEP('li.number.active+li.number','page=',/page=\\\\d+/)\",\n\t\t\t\"pageE\": \".post-list>.row,.category-post>.row,#user-post>.row,#user-favorite>.row,#user-comment .comment-list\",\n\t\t\t\"replaceE\": \".el-pager\",\n\t\t\t\"loadTime\": 1500\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE,[1,'div[data-src]','data-src'])\"\n\t\t}\n\t},\n\t\"绅士仓库 - 排行/作者墙\": {\n\t\t\"host\": \"/^cangku\\\\./\",\n\t\t\"url\": \"return (fun.isTitle('绅士') && (fun.lp() == '/rank' || fun.lp() == '/author'))\",\n\t\t\"pager\": {\n\t\t\t\"type\": 2,\n\t\t\t\"nextL\": \".container .el-button:not(.is-loading)\"\n\t\t}\n\t},\n\t\"绅士会所\": {\n\t\t\"host\": [\"www.hentaiclub.net\",\"/^www\\\\.sshs\\\\./\"],\n\t\t\"url\": \"return (fun.isTitle('绅士会所') && !fun.indexOF('/archives/'))\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"li.next-page>a\",\n\t\t\t\"pageE\": \"article[class]:not(.excerpt-minic-index)\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t}\n\t},\n\t\"绅士漫画\": {\n\t\t\"host\": [\"/^(www\\\\.)?(wnacg|htcomic)(\\\\d+)?\\\\.[a-z]+$/\",\"/^(www\\\\.)?(qy|wn)\\\\d+\\\\.[a-z]+$/\"],\n\t\t\"url\": \"/^\\\\/(albums|search|photos-index)/\",\n\t\t\"style\": \"a.btn[href^='/photos-slide-']{color:#fff !important;background:#ff604a !important;font-weight:bold !important;font-size:22px !important;letter-spacing:10px !important;width:210px !important;height:30px !important;}\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"span.thispage+a\",\n\t\t\t\"pageE\": \"li.gallary_item\",\n\t\t\t\"replaceE\": \".paginator\"\n\t\t}\n\t},\n\t\"绅士漫画 - 阅读页(非下拉阅读)\": {\n\t\t\"host\": [\"/^(www\\\\.)?(wnacg|htcomic)(\\\\d+)?\\\\.[a-z]+$/\",\"/^(www\\\\.)?(qy|wn)\\\\d+\\\\.[a-z]+$/\"],\n\t\t\"url\": \"if(fun.indexOF(/^\\\\/photos-view-id-\\\\d+\\\\.html/) || fun.indexOF('?ctl=photos&act=view&id=','s')){const img=fun.getCSS('#picarea');img.parentElement.outerHTML=img.outerHTML;return true;}\",\n\t\t\"style\": \"#tuzaoblock,#bodywrap,.tocaowrap\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"js;const next=fun.getCSS('.pageselect>[selected]+option');if(next){return location.href.replace(/\\\\d+/,next.value);}\",\n\t\t\t\"pageE\": \"#picarea\",\n\t\t\t\"replaceE\": \".newpagewrap\"\n\t\t}\n\t},\n\t\"巴卡漫画\": {\n\t\t\"host\": [\"bakamh.com\",\"bakamh.ru\",\"/^baka\\\\d\\\\.[a-z]+$/\"],\n\t\t\"url\": \"/^\\\\/manga\\\\/.+\\\\/c-/\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".nav-next>a\",\n\t\t\t\"pageE\": \".reading-content>.page-break\",\n\t\t\t\"replaceE\": \".select-pagination,.select-view\"\n\t\t}\n\t},\n\t\"巴卡漫画 - 列表页\": {\n\t\t\"host\": [\"bakamh.com\",\"bakamh.ru\",\"/^baka\\\\d\\\\.[a-z]+$/\"],\n\t\t\"url\": \"return fun.isPager()\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.nextpostslink\",\n\t\t\t\"pageE\": \"#loop-content>.page-listing-item\",\n\t\t\t\"replaceE\": \".wp-pagenavi\"\n\t\t}\n\t},\n\t\"鸟鸟韩漫\": {\n\t\t\"host\": [\"/^nnhanman\\\\.[a-z]+/\",\"/^nnhanman\\\\d\\\\.com/\",\"/^nnhm\\\\d\\\\.[a-z]+/\"],\n\t\t\"url\": \"/^\\\\/comic\\\\/.+\\\\/chapter-\\\\d+\\\\.html/\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"#k_Pic_nextArr\",\n\t\t\t\"pageE\": \"#m_r_imgbox_0 img\",\n\t\t\t\"replaceE\": \"#action\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE)\"\n\t\t}\n\t},\n\t\"灵梦御所\": {\n\t\t\"host\": \"blog.reimu.net\",\n\t\t\"url\": \"return (!fun.indexOF('/post/') && !fun.getCSS('#comments,.comments-area,#disqus_thread'))\",\n\t\t\"blank\": 5,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".current+a\",\n\t\t\t\"pageE\": \"article.post\"\n\t\t}\n\t},\n\t\"福利姬美图\": {\n\t\t\"host\": \"fuligirl.top\",\n\t\t\"url\": \"return fun.isPager()\",\n\t\t\"pager\": {\n\t\t\t\"type\": 3,\n\t\t\t\"nextL\": \"a[rel=next]\",\n\t\t\t\"pageE\": \"img.my-1,#main>.grid>div\",\n\t\t\t\"replaceE\": \"nav[role=navigation]\"\n\t\t}\n\t},\n\t\"fulitu.cc\": {\n\t\t\"host\": \"www.fulitu.cc\",\n\t\t\"url\": \"return fun.isPager()\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".next>a\",\n\t\t\t\"pageE\": \"#masonry>.item\",\n\t\t\t\"replaceE\": \".page-navigator\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE)\"\n\t\t}\n\t},\n\t\"xiutaku\": {\n\t\t\"host\": \"xiutaku.com\",\n\t\t\"url\": \"return fun.isPager()\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"type\": 3,\n\t\t\t\"nextL\": \"//a[@class='pagination-link is-current']/../following-sibling::*[1]/a\",\n\t\t\t\"pageE\": \".article-fulltext>p,.main-body>.blog.columns\",\n\t\t\t\"replaceE\": \".pagination\",\n\t\t\t\"scrollE\": \".article-fulltext+hr,.pagination.is-small\"\n\t\t}\n\t},\n\t\"秀人集\": {\n\t\t\"host\": [\"/^www.\\\\d{6}.xyz$/\",\"/^www.xr\\\\d{2}.xyz$/\",\"/\\\\.xiuren([a-z]|\\\\d)+\\\\./\"],\n\t\t\"url\": \"return (fun.isPager() && fun.lp() != '/' && !fun.indexOF('/search/'))\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".current+a\",\n\t\t\t\"pageE\": \".content>p,.update_area li.i_list\",\n\t\t\t\"replaceE\": \".page\"\n\t\t}\n\t},\n\t\"极品性感美女\": {\n\t\t\"host\": [\"www.xgmn.vip\",\"/^www.xg\\\\d{2}.xyz$/\",\"/^www.xgmn\\\\d{2}.xyz$/\",\"www.jpmn5.com\",\"www.jpmn5.cc\"],\n\t\t\"url\": \"return (fun.lp() != '/' && !fun.indexOF('/search/'))\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".current+a\",\n\t\t\t\"pageE\": \".article-content>p,body.home .related_posts>ul\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t}\n\t},\n\t\"mm.tvv.tw\": {\n\t\t\"host\": \"mm.tvv.tw\",\n\t\t\"url\": \"return (!fun.indexOF('.html'))\",\n\t\t\"style\": \".blog-listing {position: relative !important;float: left !important;top: auto !important;left: auto !important;} .blog-title>a {white-space: nowrap;overflow: hidden;text-overflow: ellipsis;} .blog-image img {min-height: 300px;}\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.next\",\n\t\t\t\"pageE\": \".blog-listing\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t}\n\t},\n\t\"mm131\": {\n\t\t\"host\": [\"www.mmm131.com\",\"m.mmm131.com\"],\n\t\t\"url\": \"return (fun.lp() != '/')\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".page_now+a,.paging>a:not(.rw),#xbtn\",\n\t\t\t\"pageE\": \".content-pic,dl.list-left>dd:not([class='page']),article:not([id])>.single-post-content img,#content>article[id]\",\n\t\t\t\"replaceE\": \".content-page,.page,.paging,#webpage\"\n\t\t}\n\t},\n\t\"mm131_m\": {\n\t\t\"host\": \"m.mmm131.com\",\n\t\t\"style\": \".bannert,.bannerb,bannert_ios,.bannerb_ios\",\n\t\t\"pager\": {\n\t\t\t\"type\": 2,\n\t\t\t\"nextL\": \"#webpage>span[onclick]\",\n\t\t\t\"isHidden\": true\n\t\t}\n\t},\n\t\"爱妹子\": {\n\t\t\"host\": \"xx.knit.bid\",\n\t\t\"url\": \"return fun.getCSS('li.active+li>a')\",\n\t\t\"blank\": 4,\n\t\t\"pager\": {\n\t\t\t\"type\": 3,\n\t\t\t\"nextL\": \"js; return fun.getNextEPN('li.active+li>a',/page\\\\/\\\\d+\\\\//,'page/','/')\",\n\t\t\t\"pageE\": \".image-container>article, .image-container>.item-image\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE)\"\n\t\t}\n\t},\n\t\"chottie\": {\n\t\t\"host\": \"chottie.com\",\n\t\t\"url\": \"if (fun.indexOF(/^\\\\/blog\\\\/archives/)){fun.insStyle('div[pagetotal]>div>div {display: block !important;} a>.v-image {width: auto !important;}');setTimeout(()=>{fun.getCSS('.v-btn-toggle>button:last-of-type').click();},1000)}\"\n\t},\n\t\"XiuRenBox\": {\n\t\t\"host\": \"www.xiurenbox.com\",\n\t\t\"url\": \"return fun.isPager()\",\n\t\t\"style\": \".page-click-zone\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".next\",\n\t\t\t\"pageE\": \".wp-block-image>img\",\n\t\t\t\"replaceE\": \".simple-page-nav\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE, [0,'img[data-lazy-src]','data-lazy-src'])\"\n\t\t}\n\t},\n\t\"MrCong\": {\n\t\t\"host\": \"mrcong.com\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".current+a\",\n\t\t\t\"pageE\": \"#fukie2>p>img,article.item-list\",\n\t\t\t\"replaceE\": \".page-link,.pagination\",\n\t\t\t\"scrollD\": 3000\n\t\t}\n\t},\n\t\"buondua\": {\n\t\t\"host\": \"buondua.com\",\n\t\t\"pager\": {\n\t\t\t\"type\": 3,\n\t\t\t\"nextL\": \"//a[@class='pagination-next']|//a[@class='pagination-link is-current']/../following-sibling::span[1]/a\",\n\t\t\t\"pageE\": \".article-fulltext,.main-body>.blog.columns\",\n\t\t\t\"replaceE\": \".pagination\",\n\t\t\t\"scrollE\": \".pagination[role='navigation'],.article-fulltext~.pagination\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE)\"\n\t\t}\n\t},\n\t\"foamgirl\": {\n\t\t\"host\": \"foamgirl.net\",\n\t\t\"url\": \"return fun.isPager()\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".page-numbers.current+a:not(.prev)\",\n\t\t\t\"pageE\": \".imageclick-imgbox,#index_ajax_list>li\",\n\t\t\t\"replaceE\": \".nav-links\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE)\"\n\t\t}\n\t},\n\t\"74P福利社\": {\n\t\t\"host\": \"www.74p.net\",\n\t\t\"url\": \"return fun.isPager()\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"type\": 3,\n\t\t\t\"nextL\": \"a.next.page-numbers\",\n\t\t\t\"pageE\": \"#image_div>p>img,#index_ajax_list>li\",\n\t\t\t\"replaceE\": \".nav-links\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE)\"\n\t\t}\n\t},\n\t\"美图乐\": {\n\t\t\"host\": \"meitulu.cc\",\n\t\t\"url\": \"return fun.isPager()\",\n\t\t\"style\": \".list-img img{opacity: 1 !important;}\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"type\": 3,\n\t\t\t\"nextL\": \".page-item.active+li.page-none>a\",\n\t\t\t\"pageE\": \".content img,header+.list>ul>li\",\n\t\t\t\"replaceE\": \".page\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE)\"\n\t\t}\n\t},\n\t\"M5MM\": {\n\t\t\"host\": \"www.m5mm.com\",\n\t\t\"url\": \"return fun.isPager()\",\n\t\t\"pager\": {\n\t\t\t\"type\": 3,\n\t\t\t\"nextL\": \"a.current+a\",\n\t\t\t\"pageE\": \".vipimglist img\",\n\t\t\t\"replaceE\": \".page_navi\"\n\t\t}\n\t},\n\t\"爱看美女\": {\n\t\t\"host\": [\"ikmn.cc\",\"www.ikmn.cc\",\"/^(www\\\\.)?ikmn\\\\d{2}\\\\.xyz$/\"],\n\t\t\"url\": \"return fun.isPager()\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.current+a\",\n\t\t\t\"pageE\": \".info-imtg-box>p\"\n\t\t}\n\t},\n\t\"宅男女神\": {\n\t\t\"host\": [\"www.gnvshen.com\",\"www.fnvshen.com\",\"www.haonvshen.com\"],\n\t\t\"url\": \"/^\\\\/(g|gallery|tag)\\\\//\",\n\t\t\"pager\": {\n\t\t\t\"type\": 3,\n\t\t\t\"nextL\": \"#pages>span +a:not(.a1),a.cur+a\",\n\t\t\t\"pageE\": \"#hgallery>img,#listdiv>ul>li\",\n\t\t\t\"replaceE\": \"#pages,.pagesYY\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE)\"\n\t\t}\n\t},\n\t\"爱女神 - 图片页\": {\n\t\t\"host\": \"www.99nvshen.com\",\n\t\t\"url\": \"/^\\\\/(gallery|galleryList|modelList)\\\\//\",\n\t\t\"pager\": {\n\t\t\t\"type\": 3,\n\t\t\t\"nextL\": \"a[aria-label='Next']\",\n\t\t\t\"pageE\": \"//nav[@class='pagination-box']/preceding-sibling::div[1][@class='book-list']\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t}\n\t},\n\t\"xsnvshen\": {\n\t\t\"host\": \"/^(www|m)\\\\.xsnvshen\\\\.[a-z]+$/\",\n\t\t\"url\": \"if(!fun.isMobile() && fun.indexOF(/^\\\\/album\\\\/\\\\d+/)){rule.pager={};rule.hiddenPN=true;rule.blank=0;rule.style='.workContentWrapper {display: none !important;} .showlists.hide {display: unset !important;} .showlists li {float: unset !important;} .swl-item .swi-hd {width: unset !important;height: unset !important;} .showlists img {max-width: unset !important;max-height: unset !important;width: 100% !important;}';return true;}else{return fun.isPager();}\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"#pageNum .active+a,.pg_next\",\n\t\t\t\"pageE\": \".camWholeBoxUl>li,.container>#arcbox img,.body>.list.cl>li\",\n\t\t\t\"replaceE\": \"#pageNum\"\n\t\t}\n\t},\n\t\"秀人美女\": {\n\t\t\"host\": [\"/^www\\\\.xrmn.+/\",\"/^www.xiu\\\\d+\\\\./\"],\n\t\t\"url\": \"return (fun.isPager() && fun.indexOF(/(^\\\\/.)|(\\\\d+\\\\.html$)/))\",\n\t\t\"pager\": {\n\t\t\t\"type\": 3,\n\t\t\t\"nextL\": \"a.current+a\",\n\t\t\t\"pageE\": \".content_left>p,.update_area ul.update_area_lists>li\",\n\t\t\t\"replaceE\": \".page\"\n\t\t}\n\t},\n\t\"xiurentu.pics\": {\n\t\t\"host\": \"xiurentu.pics\",\n\t\t\"url\": \"return fun.isPager()\",\n\t\t\"pager\": {\n\t\t\t\"type\": 3,\n\t\t\t\"nextL\": \"a[rel=next]\",\n\t\t\t\"pageE\": \"img.block.my-1,#main>.grid.gap-3.grid-cols-2.md\\\\:grid-cols-3.lg\\\\:grid-cols-4>div\",\n\t\t\t\"replaceE\": \"nav[role=navigation]\"\n\t\t}\n\t},\n\t\"美人图\": {\n\t\t\"host\": \"/^meirentu\\\\..+/\",\n\t\t\"url\": \"return fun.isPager()\",\n\t\t\"pager\": {\n\t\t\t\"type\": 3,\n\t\t\t\"nextL\": \"a.current+a\",\n\t\t\t\"pageE\": \".content_left img,.update_area ul.update_area_lists>li\",\n\t\t\t\"replaceE\": \".page\"\n\t\t}\n\t},\n\t\"精品美女吧\": {\n\t\t\"host\": [\"www.jpmnb.com\",\"www.jpmnb.net\",\"www.jpmn8.com\"],\n\t\t\"url\": \"/(^\\\\/.)|(\\\\d+\\\\.html$)/\",\n\t\t\"style\": \"img[onload] {min-height: 500px;}\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".current+a\",\n\t\t\t\"pageE\": \"img[onload],article.excerpt\",\n\t\t\t\"replaceE\": \".pagination1\",\n\t\t\t\"scrollD\": 3000\n\t\t}\n\t},\n\t\"ku+taotu\": {\n\t\t\"host\": [\"/^www\\\\.ku\\\\d+\\\\./\",\"/^www\\\\.taotu\\\\d+\\\\./\"],\n\t\t\"url\": \"return fun.isPager()\",\n\t\t\"style\": \".content img {min-height: 500px;} .Title9,.dibu1,.dibu2 {display: none !important;}\",\n\t\t\"pager\": {\n\t\t\t\"type\": 3,\n\t\t\t\"nextL\": \".thisclass+li>a,.this-page+a:not(.no-page)\",\n\t\t\t\"pageE\": \".content,.TypeList,.m-list.ml1,.slider-c>.row>div\",\n\t\t\t\"replaceE\": \".NewPages,.page\"\n\t\t}\n\t},\n\t\"kingdom\": {\n\t\t\"host\": \"www.kingdom-en.com\",\n\t\t\"url\": \"/(^\\\\/.)|(\\\\d+\\\\.html$)/\",\n\t\t\"style\": \".pic_center img {min-height: 300px;}\",\n\t\t\"pager\": {\n\t\t\t\"type\": 3,\n\t\t\t\"nextL\": \".page_nowindex+a,a.page_next\",\n\t\t\t\"pageE\": \".pic_center,.channel_list3\",\n\t\t\t\"replaceE\": \".pages2,.article_page,.pages\"\n\t\t}\n\t},\n\t\"kissgoddess\": {\n\t\t\"host\": [\"kissgoddess.com\",\"tw.kissgoddess.com\",\"jp.kissgoddess.com\"],\n\t\t\"url\": \"/^\\\\/album|category\\\\//\",\n\t\t\"style\": \".td-gallery-content>img {min-height: 300px;}\",\n\t\t\"pager\": {\n\t\t\t\"type\": 3,\n\t\t\t\"nextL\": \"a.a1:last-of-type\",\n\t\t\t\"pageE\": \".td-gallery-content>img,.td-category-span\",\n\t\t\t\"replaceE\": \"#pages\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE)\"\n\t\t}\n\t},\n\t\"24tupian\": {\n\t\t\"host\": \"www.24tupian.org\",\n\t\t\"url\": \"/\\\\/\\\\d{4}\\\\/.+\\\\.html/\",\n\t\t\"style\": \"#imgshow img {max-width: 98%;}\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//div[@class='bb']//li[./img[@id='bimg']]/following-sibling::li[1]/a\",\n\t\t\t\"pageE\": \"#imgshow img\",\n\t\t\t\"replaceE\": \".bb ul\"\n\t\t}\n\t},\n\t\"爱美女\": {\n\t\t\"host\": \"www.2meinv.com\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"//div[@class='page-show' or contains(@class,'article-page')]/a[text()='下一页']\",\n\t\t\t\"pageE\": \".pp.hh img,ul.detail-list,.arcmain li,#listcon>ul\",\n\t\t\t\"replaceE\": \".page-show,.article-page\"\n\t\t}\n\t},\n\t\"娱乐吧\": {\n\t\t\"host\": [\"www.yuleba.org\",\"m.yuleba.org\",\"m.entba.net\"],\n\t\t\"url\": \"/^\\\\/a|b\\\\//\",\n\t\t\"style\": \".b_img>.paging {float: left;}\",\n\t\t\"pager\": {\n\t\t\t\"type\": 3,\n\t\t\t\"nextL\": \"//div[@class='paging']/a[text()='下一页']\",\n\t\t\t\"pageE\": \".b_img:not(:nth-child(7))>ul,.a_img>.main>p\",\n\t\t\t\"replaceE\": \".paging\"\n\t\t}\n\t},\n\t\"凸凹吧/撸女吧\": {\n\t\t\"host\": [\"www.tuao8.com\",\"www.tuao8.xyz\",\"www.tuaom.cc\",\"www.lunu.cc\",\"www.97mm.cc\"],\n\t\t\"url\": \"/^\\\\/(post|web)\\\\//\",\n\t\t\"style\": \"img[src$='.gif']\",\n\t\t\"pager\": {\n\t\t\t\"type\": 3,\n\t\t\t\"nextL\": \"li.next-page>a\",\n\t\t\t\"pageE\": \".entry img,.article-content img\",\n\t\t\t\"replaceE\": \"#dm-fy\"\n\t\t}\n\t},\n\t\"仙女图\": {\n\t\t\"host\": \"www.xiannvtu.com\",\n\t\t\"url\": \"/^\\\\/v\\\\//\",\n\t\t\"pager\": {\n\t\t\t\"type\": 3,\n\t\t\t\"nextL\": \"//div[@class='page' or @class='fenye']//a[text()='下一页']\",\n\t\t\t\"pageE\": \".picbox img,#content>.post>.post-content img\",\n\t\t\t\"replaceE\": \".page,.fenye\"\n\t\t}\n\t},\n\t\"imn5_net\": {\n\t\t\"host\": \"www.imn5.net\",\n\t\t\"url\": \"/\\\\/\\\\d+(_\\\\d+)?\\\\.html$/\",\n\t\t\"pager\": {\n\t\t\t\"type\": 3,\n\t\t\t\"nextL\": \"a.current+a\",\n\t\t\t\"pageE\": \".imgwebp\",\n\t\t\t\"replaceE\": \".page\"\n\t\t}\n\t},\n\t\"24FA\": {\n\t\t\"host\": [\"/^(www\\\\.)?24fa\\\\.[a-z]+$/\",\"/^(www\\\\.)?24fa.?\\\\.com$/\",\"/^(www\\\\.)?24[a-z]{2}\\\\.cc$/\",\"/^(www\\\\.)?\\\\d{3}w\\\\.cc$/\",\"/^(www\\\\.)?\\\\d{3}\\\\.(mom|one)$\"],\n\t\t\"url\": \"return (fun.isTitle('24FA') && fun.isPager())\",\n\t\t\"style\": \".moreR {display: none;} #content img {width: auto; max-width: 99%; height: auto; display: block; margin: 0 auto;}\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"li.p_current+li>a\",\n\t\t\t\"pageE\": \"#content img,#dlNews>tbody>tr,.summary\",\n\t\t\t\"replaceE\": \".pager\",\n\t\t\t\"scrollD\": 3500\n\t\t}\n\t},\n\t\"missbby.com\": {\n\t\t\"host\": \"missbby.com\",\n\t\t\"url\": \"return fun.isPager()\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"type\": 3,\n\t\t\t\"nextL\": \".justify-center.items-center+div>a.bg-pink-500+a, .flex.space-x-2>a.hover\\\\:bg-pink-500\",\n\t\t\t\"pageE\": \"//div[@class='md:px-16 xl:px-20 max-w-3xl mx-auto justify-center items-center flex flex-col min-h-screen']/div | (//div[@class='mx-auto max-w-7xl px-4' or @id='S:0']//div[@class='grid grid-cols-1 md:grid-cols-3 gap-y-6 gap-x-4 xl:grid-cols-4'])[last()]/div\"\n\t\t}\n\t},\n\t\"遛无写真\": {\n\t\t\"host\": \"www.6evu.com\",\n\t\t\"url\": \"/^\\\\/\\\\d+\\\\.html/\",\n\t\t\"style\": \"#post_content>.code-block,.single-ad,.single-adphone\",\n\t\t\"pager\": {\n\t\t\t\"type\": 3,\n\t\t\t\"nextL\": \".pagelist>span+a\",\n\t\t\t\"pageE\": \"#post_content\",\n\t\t\t\"replaceE\": \".pagelist\"\n\t\t}\n\t},\n\t\"推图网\": {\n\t\t\"host\": \"m.tuiimg.com\",\n\t\t\"url\": \"return (fun.lp() == '/')\",\n\t\t\"hiddenPN\": true,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"js; showmore()\",\n\t\t\t\"interval\": 3000\n\t\t}\n\t},\n\t\"推图网 - 图片页\": {\n\t\t\"host\": [\"www.tuiimg.com\",\"m.tuiimg.com\"],\n\t\t\"url\": \"if (fun.indexOF(/\\\\/\\\\d+\\\\/$/)) {let _img=''; for (_pd[2]=1;_pd[2]<=_pd[3];_pd[2]++){_img += `<img src=\\\"${fileurl}${_pd[2]}.jpg\\\">`;}; document.getElementById('content').innerHTML = _img; return true;}\",\n\t\t\"style\": \"#page,#tips\",\n\t\t\"hiddenPN\": true\n\t},\n\t\"推图网 - 分类页\": {\n\t\t\"host\": [\"www.tuiimg.com\",\"m.tuiimg.com\"],\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".page>.now+a,.page>em+a\",\n\t\t\t\"pageE\": \"#main>li,.beauty>ul>li\",\n\t\t\t\"replaceE\": \".page\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE,[0,'img[realsrc]','realsrc'])\"\n\t\t}\n\t},\n\t\"Hit-x-Hot\": {\n\t\t\"host\": \"hitxhot.com\",\n\t\t\"url\": \"/\\\\/gallerys/\",\n\t\t\"style\": \".contain.refill:not(.relatedvideos)\",\n\t\t\"pager\": {\n\t\t\t\"type\": 3,\n\t\t\t\"nextL\": \"//a[@class='page-numbers' and text()='Next >']\",\n\t\t\t\"pageE\": \".contentme\",\n\t\t\t\"replaceE\": \".pagination-site\"\n\t\t}\n\t},\n\t\"美图网 tuli\": {\n\t\t\"host\": [\"www.tuli.cc\",\"m.tuli.cc\"],\n\t\t\"url\": \"/\\\\/\\\\d+(_\\\\d+)?\\\\.html$/\",\n\t\t\"pager\": {\n\t\t\t\"type\": 3,\n\t\t\t\"nextL\": \"li.thisclass+li>a\",\n\t\t\t\"pageE\": \".bodyintroduce,.picbox>img\",\n\t\t\t\"replaceE\": \".pageart>ul\"\n\t\t}\n\t},\n\t\"新闻吧 - xinwenba.net\": {\n\t\t\"host\": [\"www.xinwenba.net\",\"m.xinwenba.net\",\"m.xwbar.com\"],\n\t\t\"url\": \"/\\\\/view-/\",\n\t\t\"pager\": {\n\t\t\t\"type\": 3,\n\t\t\t\"nextL\": \"//div[@class='paging']/li/a[text()='下一页']\",\n\t\t\t\"pageE\": \".view_img>.main\",\n\t\t\t\"replaceE\": \".paging\"\n\t\t}\n\t},\n\t\"微图坊\": {\n\t\t\"host\": \"/^www\\\\.v2ph\\\\.[a-z]+$/\",\n\t\t\"url\": \"/^\\\\/album\\\\//\",\n\t\t\"style\": \".album-photo,.photos-list img {opacity: 1 !important; position: unset !important; padding: 0 !important;}\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".active.page-item+li>a\",\n\t\t\t\"pageE\": \".album-photo\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE)\"\n\t\t}\n\t},\n\t\"美女目录网\": {\n\t\t\"host\": \"www.mnmulu.com\",\n\t\t\"url\": \"/^\\\\/(index|photos)\\\\//\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"li.page-item.active+li.page-item>a\",\n\t\t\t\"pageE\": \".photo-list\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t}\n\t},\n\t\"美女写真网 - hh1234/jutu123\": {\n\t\t\"host\": [\"www.hh1234.cc\",\"www.jutu123.net\"],\n\t\t\"url\": \"/\\\\/\\\\d+(_\\\\d+)?\\\\.html$/\",\n\t\t\"pager\": {\n\t\t\t\"type\": 3,\n\t\t\t\"nextL\": \".current+a\",\n\t\t\t\"pageE\": \".content>img\",\n\t\t\t\"replaceE\": \".page-list,.pages\"\n\t\t}\n\t},\n\t\"爱看图吧\": {\n\t\t\"host\": \"www.9iktb.com\",\n\t\t\"url\": \"/^\\\\/gallery\\\\//\",\n\t\t\"style\": \".gallery-detail-img>img {min-height: 300px;}\",\n\t\t\"pager\": {\n\t\t\t\"type\": 3,\n\t\t\t\"nextL\": \"li.active+li>a\",\n\t\t\t\"pageE\": \".gallery-detail-content\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t}\n\t},\n\t\"2avtt.com\": {\n\t\t\"host\": [\"www.2avtt.com\",\"m.2avtt.com\"],\n\t\t\"url\": \"/\\\\/\\\\d+(_\\\\d+)?\\\\.html$/\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".thisclass+li>a,.wallpaper-container>a:last-of-type\",\n\t\t\t\"pageE\": \"#photoMain,.wallpaper-container>a\",\n\t\t\t\"replaceE\": \".page\"\n\t\t}\n\t},\n\t\"Cool18.com\": {\n\t\t\"host\": \"www.cool18.com\",\n\t\t\"url\": \"/\\\\/index\\\\.php/\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"id('d_list_page')/a[text()='下一页'] | //table//a[text()='下一页']\",\n\t\t\t\"pageE\": \"#d_list>ul,table.dc_bar2\",\n\t\t\t\"replaceE\": \"#d_list_page,#d_list_foot,table.dc_bar\"\n\t\t}\n\t},\n\t\"Theav\": {\n\t\t\"host\": [\"theavporn.com\",\"the01.fun\",\"/^theav\\\\d{3}\\\\.com/\",\"/^thepa\\\\d{2}\\\\.xyz$/\",\"/^tav\\\\d{3}\\\\.xyz$/\"],\n\t\t\"url\": \"return fun.isPager()\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".pagination>.item.active+div[class=item]>a\",\n\t\t\t\"pageE\": \".thumbs>.thumb\",\n\t\t\t\"replaceE\": \".pagination\"\n\t\t},\n\t\t\"function\": {\n\t\t\t\"bF\": \"return fun.src_bF(pageE)\"\n\t\t}\n\t},\n\t\"taotuxp.com\": {\n\t\t\"host\": \"www.taotuxp.com\",\n\t\t\"url\": \"/^\\\\/\\\\d+\\\\.html/\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".pagelist>span+a\",\n\t\t\t\"pageE\": \"#post_content>p\",\n\t\t\t\"replaceE\": \".pagelist\"\n\t\t}\n\t},\n\t\"4khd.com\": {\n\t\t\"host\": [\"4khd.com\",\"www.4khd.com\",\"/^(.+)\\\\.xxtt\\\\.ink$/\",\"/^(.+)\\\\.uuss\\\\.uk$/\"],\n\t\t\"url\": \"/^\\\\/content\\\\//\",\n\t\t\"pager\": {\n\t\t\t\"type\": 3,\n\t\t\t\"nextL\": \".numpages.current+li>a\",\n\t\t\t\"pageE\": \"#basicExample>a\",\n\t\t\t\"replaceE\": \".page-links\"\n\t\t}\n\t},\n\t\"俊美图\": {\n\t\t\"host\": \"www.meijuntu.com\",\n\t\t\"url\": \"return fun.isPager('r')\",\n\t\t\"style\": \"a.pre_picture,a.next_picture\",\n\t\t\"pager\": {\n\t\t\t\"type\": 3,\n\t\t\t\"nextL\": \".pages>span +a:not(.a1)\",\n\t\t\t\"pageE\": \".pictures>img,.pic-list>ul\",\n\t\t\t\"replaceE\": \".pages\"\n\t\t}\n\t},\n\t\"愛麗絲書屋 - 分类/搜索\": {\n\t\t\"host\": [\"www.alicesw.com\",\"www.alicesw.tw\",\"/^(.+)\\\\.(alicesw2|als1006)\\\\.([a-z]+)$/\"],\n\t\t\"url\": \"/^\\\\/(lists|search\\\\.html)/\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".layui-laypage-next,.active+li>a\",\n\t\t\t\"pageE\": \".list-group-item,.rec_rullist>ul,ul.txt-list>li\",\n\t\t\t\"replaceE\": \".pagination,.pager\"\n\t\t}\n\t},\n\t\"黑料网\": {\n\t\t\"host\": [\"18hlw.com\",\"www.hlwxx.com\",\"/.*/\"],\n\t\t\"url\": \"return (!fun.indexOF('/archives/') && fun.isTitle('黑料网') && fun.isPager())\",\n\t\t\"style\": \".video-item {height: auto !important;} #notice_container, .infomation, .addbox{display: none !important;}\",\n\t\t\"blank\": 3,\n\t\t\"pager\": {\n\t\t\t\"nextL\": \"a.next\",\n\t\t\t\"pageE\": \".video-item\"\n\t\t}\n\t},\n\t\"子夜动漫/七味网 类通用规则\": {\n\t\t\"url\": \"return fun.isPager()\",\n\t\t\"pager\": {\n\t\t\t\"nextL\": \".page-active+a\",\n\t\t\t\"pageE\": \".content-list>li\",\n\t\t\t\"replaceE\": \".pages\"\n\t\t}\n\t}\n}\n"
  }
]