3327-luogu | 洛谷颜色自定义

可以根据个人喜好,自定义洛谷各个地方的颜色。

Εγκατάσταση αυτού του κώδικαΒοήθεια
Κώδικας προτεινόμενος από τον δημιιουργό

Μπορεί, επίσης, να σας αρέσει ο κώδικας 洛谷讨论区显示时间改成具体时间.

Εγκατάσταση αυτού του κώδικα
// ==UserScript==
// @name          3327-luogu | 洛谷颜色自定义
// @namespace     https://www.luogu.com.cn/user/542457
// @description   可以根据个人喜好,自定义洛谷各个地方的颜色。
// @author        cff_0102
// @run-at        document-end
// @version       3.0.2
// @license       MIT
// @match         https://www.luogu.com.cn/*
// @match         https://www.luogu.com/*
// @match         https://www.luogu.org/
// @exclude       https://www.luogu.com.cn/blog*
// @exclude       https://www.luogu.com.cn/article*
// @exclude       https://www.luogu.com/article*
// @icon          https://www.luogu.com.cn/favicon.ico
// ==/UserScript==
(function(){'use strict';var BGI = '',BGC = '',FIL = '';// 修改下面的代码可实现自定义
    function changeColors(){//↓ 更改这里的八个十六进制颜色即可更改洛谷相应版块的颜色
        const newcolor1 = '#34495e'; // “全部板块”的颜色
        const newcolor2 = '#8e44ad'; // “站务版”的颜色
        const newcolor3 = '#52c41a'; // “题目总版”的颜色
        const newcolor4 = '#e74c3c'; // “学术版”的颜色
        const newcolor5 = '#3ba4a4'; // “灌水区”的颜色
        const newcolor6 = '#f39c11'; // “工单反馈版”的颜色
        const newcolor7 = '#996600'; // “小黑屋”的颜色
        const newcolor8 = '#3498db'; // 团队内帖子的颜色
        const ch1 = 1;// 是否更改帖子的背景色(0 或 1)(见 1.0.2 版本发布内容)
        // 更改上面的颜色(并保存更改后的脚本)即可实现更改洛谷对应讨论区的颜色
        const cht = 1;// 是否更改题目 tag 颜色
        const newzw = '#bfbfbf';// 如果更改题目 tag 颜色,暂无评定 tag 的颜色
        const newrm = '#fe4c61';// 如果更改题目 tag 颜色,入门 tag 的颜色
        const newpj = '#f39c11';// 如果更改题目 tag 颜色,普及- tag 的颜色
        const newpt = '#ffc116';// 如果更改题目 tag 颜色,普及/提高− tag 的颜色
        const newtp = '#52c41a';// 如果更改题目 tag 颜色,普及+/提高 tag 的颜色
        const newtg = '#3498db';// 如果更改题目 tag 颜色,提高+/省选− tag 的颜色
        const newsx = '#9d3dcf';// 如果更改题目 tag 颜色,省选/NOI− tag 的颜色
        const newht = '#0e1d69';// 如果更改题目 tag 颜色,NOI/NOI+/CTSC tag 的颜色
        const newsf = '#2949b4';// 如果更改题目 tag 颜色,算法 tag 的颜色
        const newly = '#13c2c2';// 如果更改题目 tag 颜色,来源 tag 的颜色
        const newsj = '#3498db';// 如果更改题目 tag 颜色,时间 tag 的颜色
        const newqy = '#52c41a';// 如果更改题目 tag 颜色,区域 tag 的颜色
        const newts = '#f39c11';// 如果更改题目 tag 颜色,特殊题目 tag 的颜色
        // 上面是关于题目 tag 颜色的设置
        const txtc = '#236464';// 洛谷所有字体和图标颜色(如讨论列表左侧栏未被选中的字的颜色等)(#000000 就是洛谷默认的黑色,不想更改就填 #000000)
        const bgc = '#ffffffc0';// 洛谷各个页面卡片颜色(后两位是不透明度)(洛谷原版是 #ffffffff,不想更改就填 #ffffffff)
        const chm = 0;// 是否更改私信中消息的背景(为 1 的话就将背景设成卡片颜色)
        const opt = 1;// 是否更改页面的背景(0 或 1 或 2,0 表示不更改,仍保持原来的灰色;1 表示更改为纯色;2 表示更改为图片)
        const bgc1 = '#e8f9f8';// 如果 opt 为 1,要更改的背景颜色(#efefef 是洛谷默认背景色)(顺带一提,这个背景色其实是和 https://www.luogu.com.cn/theme/design/98289 相匹配的)
        const bgi2 = 'url("https://s1.ax1x.com/2023/06/03/pCpu4hT.png")';// 如果 opt 为 2,要更改的背景图片链接(更改双引号中间的内容即可)
        const delzt = 0;// 是否隐藏主题(即顶栏和底栏)(此时建议同时更改页面背景)
        const chd = 1;// 是否更改顶栏的背景和字体颜色(字体颜色就是上面的 txtc)
        const hdbgc = '#ffffffc0';// 如果更改,顶栏的背景色
        // 上面是关于全洛谷页面显示的设置
        // 更改上面的设置即可更改显示效果(调的好还可以配出深色模式!)
        // 建议在某个地方保存自己的设置,以免更新时回到原来的设置!更新前先复制以上部分的设置,再进行更新,更新结束后再将上面的设置改回来。
        /*
        附:
        1. 类似“深色模式”:
        const newcolor1 = '#3498db'; // “全部板块”的颜色
        const newcolor2 = '#8e44ad'; // “站务版”的颜色
        const newcolor3 = '#52c41a'; // “题目总版”的颜色
        const newcolor4 = '#e74c3c'; // “学术版”的颜色
        const newcolor5 = '#3ba4a4'; // “灌水区”的颜色
        const newcolor6 = '#f39c11'; // “工单反馈版”的颜色
        const newcolor7 = '#996600'; // “小黑屋”的颜色
        const newcolor8 = '#3498db'; // 团队内帖子的颜色
        const ch1 = 1;// 是否更改帖子的背景色(0 或 1)(见 1.0.2 版本发布内容)
        // 更改上面的颜色(并保存更改后的脚本)即可实现更改洛谷对应讨论区的颜色
        const cht = 1;// 是否更改题目 tag 颜色
        const newzw = '#bfbfbf';// 如果更改题目 tag 颜色,暂无评定 tag 的颜色
        const newrm = '#fe4c61';// 如果更改题目 tag 颜色,入门 tag 的颜色
        const newpj = '#f39c11';// 如果更改题目 tag 颜色,普及- tag 的颜色
        const newpt = '#ffc116';// 如果更改题目 tag 颜色,普及/提高− tag 的颜色
        const newtp = '#52c41a';// 如果更改题目 tag 颜色,普及+/提高 tag 的颜色
        const newtg = '#3498db';// 如果更改题目 tag 颜色,提高+/省选− tag 的颜色
        const newsx = '#9d3dcf';// 如果更改题目 tag 颜色,省选/NOI− tag 的颜色
        const newht = '#0e1d69';// 如果更改题目 tag 颜色,NOI/NOI+/CTSC tag 的颜色
        const newsf = '#2949b4';// 如果更改题目 tag 颜色,算法 tag 的颜色
        const newly = '#13c2c2';// 如果更改题目 tag 颜色,来源 tag 的颜色
        const newsj = '#3498db';// 如果更改题目 tag 颜色,时间 tag 的颜色
        const newqy = '#52c41a';// 如果更改题目 tag 颜色,区域 tag 的颜色
        const newts = '#f39c11';// 如果更改题目 tag 颜色,特殊题目 tag 的颜色
        // 上面是关于题目 tag 颜色的设置
        const txtc = '#e5e5e5';// 洛谷所有字体和图标颜色(如讨论列表左侧栏未被选中的字的颜色等)(#000000 就是洛谷默认的黑色,不想更改就填 #000000)
        const bgc = '#5e5e5ec0';// 洛谷各个页面卡片颜色(后两位是不透明度)(洛谷原版是 #ffffffff,不想更改就填 #ffffffff)
        const chm = 1;// 是否更改私信中消息的背景(为 1 的话就将背景设成卡片颜色)
        const opt = 1;// 是否更改页面的背景(0 或 1 或 2,0 表示不更改,仍保持原来的灰色;1 表示更改为纯色;2 表示更改为图片)
        const bgc1 = '#2b2b2b';// 如果 opt 为 1,要更改的背景颜色(#efefef 是洛谷默认背景色)(顺带一提,这个背景色其实是和 https://www.luogu.com.cn/theme/design/210036 相匹配的)
        const bgi2 = 'url("https://s1.ax1x.com/2023/06/03/pCpu4hT.png")';// 如果 opt 为 2,要更改的背景图片链接(更改双引号中间的内容即可)
        const delzt = 1;// 是否隐藏主题(即顶栏和底栏)(此时建议同时更改页面背景)
        const chd = 1;// 是否更改顶栏的背景和字体颜色(字体颜色就是上面的 txtc)
        const hdbgc = '#5e5e5ec0';// 如果更改,顶栏的背景色
        // 上面是关于全洛谷页面显示的设置
        2. 洛谷原版:
        const newcolor1 = '#272727'; // “全部板块”的颜色
        const newcolor2 = '#14558f'; // “站务版”的颜色
        const newcolor3 = '#f39c11'; // “题目总版”的颜色
        const newcolor4 = '#9d3dcf'; // “学术版”的颜色
        const newcolor5 = '#52c41a'; // “灌水区”的颜色
        const newcolor6 = '#2949b4'; // “工单反馈版”的颜色
        const newcolor7 = '#272727'; // “小黑屋”的颜色
        const newcolor8 = '#272727'; // 团队内帖子的颜色
        const ch1 = 0;// 是否更改帖子的背景色(0 或 1)(见 1.0.2 版本发布内容)
        // 更改上面的颜色(并保存更改后的脚本)即可实现更改洛谷对应讨论区的颜色
        const cht = 0;// 是否更改题目 tag 颜色
        const newzw = '#bfbfbf';// 如果更改题目 tag 颜色,暂无评定 tag 的颜色
        const newrm = '#fe4c61';// 如果更改题目 tag 颜色,入门 tag 的颜色
        const newpj = '#f39c11';// 如果更改题目 tag 颜色,普及- tag 的颜色
        const newpt = '#ffc116';// 如果更改题目 tag 颜色,普及/提高− tag 的颜色
        const newtp = '#52c41a';// 如果更改题目 tag 颜色,普及+/提高 tag 的颜色
        const newtg = '#3498db';// 如果更改题目 tag 颜色,提高+/省选− tag 的颜色
        const newsx = '#9d3dcf';// 如果更改题目 tag 颜色,省选/NOI− tag 的颜色
        const newht = '#0e1d69';// 如果更改题目 tag 颜色,NOI/NOI+/CTSC tag 的颜色
        const newsf = '#2949b4';// 如果更改题目 tag 颜色,算法 tag 的颜色
        const newly = '#13c2c2';// 如果更改题目 tag 颜色,来源 tag 的颜色
        const newsj = '#3498db';// 如果更改题目 tag 颜色,时间 tag 的颜色
        const newqy = '#52c41a';// 如果更改题目 tag 颜色,区域 tag 的颜色
        const newts = '#f39c11';// 如果更改题目 tag 颜色,特殊题目 tag 的颜色
        // 上面是关于题目 tag 颜色的设置
        const txtc = '#000000';// 洛谷所有字体和图标颜色(如讨论列表左侧栏未被选中的字的颜色等)(#000000 就是洛谷默认的黑色,不想更改就填 #000000)
        const bgc = '#ffffffff';// 洛谷各个页面卡片颜色(后两位是不透明度)(洛谷原版是 #ffffffff,不想更改就填 #ffffffff)
        const chm = 0;// 是否更改私信中消息的背景(为 1 的话就将背景设成卡片颜色)
        const opt = 0;// 是否更改页面的背景(0 或 1 或 2,0 表示不更改,仍保持原来的灰色;1 表示更改为纯色;2 表示更改为图片)
        const bgc1 = '#e8f9f8';// 如果 opt 为 1,要更改的背景颜色(#efefef 是洛谷默认背景色)(顺带一提,这个背景色其实是和 https://www.luogu.com.cn/theme/design/98289 相匹配的)
        const bgi2 = 'url("https://s1.ax1x.com/2023/06/03/pCpu4hT.png")';// 如果 opt 为 2,要更改的背景图片链接(更改双引号中间的内容即可)
        const delzt = 0;// 是否隐藏主题(即顶栏和底栏)(此时建议同时更改页面背景)
        const chd = 0;// 是否更改顶栏的背景和字体颜色(字体颜色就是上面的 txtc)
        const hdbgc = '#ffffffc0';// 如果更改,顶栏的背景色
        // 上面是关于全洛谷页面显示的设置
        */

        function hexToRgb(hex) {hex = hex.replace(/^#/, '');const bigint = parseInt(hex, 16);const r = (bigint >> 16) & 255;const g = (bigint >> 8) & 255;const b = bigint & 255;return { r, g, b };}
        function lighterColor(hex) {hex = hex.replace(/^#/, '');const bigint = parseInt(hex, 16);let r = (bigint >> 16) & 255;let g = (bigint >> 8) & 255;let b = bigint & 255;r = Math.floor(255 - (255 - r) / 2);g = Math.floor(255 - (255 - g) / 2);b = Math.floor(255 - (255 - b) / 2);const newHex = ((1 << 24) | (r << 16) | (g << 8) | b).toString(16).slice(1);return `#${newHex}`;}

        // 下面这个函数可以关闭广告。不想关的话注释掉就行了。
        function closeDivsWithAttributes(attributeValue) {
            var divElements = document.getElementsByTagName('div');
            for (var i = 0; i < divElements.length; i++) {
                var div = divElements[i];
                if (div.getAttribute('data-v-0a593618') === attributeValue) {
                    div.remove();
                }
            }
        }
        closeDivsWithAttributes("");

        //帖子列表右侧帖子字体颜色
        var elements = document.querySelectorAll('div.avatar-right');
        for (var i = 0; i < elements.length; i++) {
            let e1 = elements[i].querySelectorAll('a.row.content-left.title.link.color-default');
            for(let ee of e1)ee.style.color = txtc;
            let e2 = elements[i].querySelectorAll('div.time');
            for(let ee of e2)ee.style.color = /*averageHexColor(txtc,bgc)*/txtc;
            let e3 = elements[i].querySelectorAll('span.forum-name');
            for(let ee of e3)ee.style.color = txtc;
            let e4 = elements[i].querySelectorAll('g');
            for(let ee of e4)ee.style.color = txtc;
        }
        //帖子列表左侧栏字体颜色
        elements = document.querySelector('div.card.left.padding-default');
        if(elements){
            elements = elements.querySelector('div.section');
            if(elements){
                let e1 = elements.querySelectorAll('a.forum-container.section-item.row-item.color-default.link');
                for (let ee of e1) {
                    let e2List = ee.querySelectorAll('span.forum-name');
                    for (let e2 of e2List) {
                        if (e2.classList.contains('active')) {
                            e2.style.color = ''; // 清除style.color属性
                        } else {
                            e2.style.color = txtc;
                        }
                    }
                }
            }
        }

        if(window.location.href.startsWith('https://www.luogu.com.cn/theme/list')||window.location.href.startsWith('https://www.luogu.com/theme/list')){
            elements = document.querySelector('h1.lfe-h1');
            elements.textContent="主题商店(温馨提醒:更换主题后要刷新,防止插件出现不可避免的 bug)"
        }

        if (chd) {
            // 更改顶栏背景颜色
            var targetCSS = [
                "#app > .main-container > .header-layout.tiny{",
                "    height: 4em !important;",
                `    background: ${hdbgc} !important;`,
                "}",
            ].join('\n');
            var existingStyles = document.querySelectorAll("style");
            var lastLines = "";
            let f = 0;
            for (let i = 0; i < existingStyles.length; i++) {
                var style = existingStyles[i];
                var styleText = style.textContent || style.innerText;
                var lines = styleText.split('\n');
                var numLinesToCheck = 4;
                if (lines.length >= numLinesToCheck) {
                    lastLines = lines.slice(-numLinesToCheck).join('\n');
                    if (lastLines === targetCSS) {
                        f = 1;
                        break;
                    }
                }
            }
            if(f){}
            else if (typeof GM_addStyle != "undefined") {
                GM_addStyle(targetCSS);
            } else if (typeof PRO_addStyle != "undefined") {
                PRO_addStyle(targetCSS);
            } else if (typeof addStyle != "undefined") {
                addStyle(targetCSS);
            } else {
                var node = document.createElement("style");
                node.type = "text/css";
                node.appendChild(document.createTextNode(targetCSS));
                var heads = document.getElementsByTagName("head");
                if (heads.length > 0) {
                    heads[0].appendChild(node);
                } else {
                    document.documentElement.appendChild(node);
                }
            }
            // 更改字体颜色
            var tmp = document.querySelector('div.wrapper.wrapped.lfe-body.header-layout.tiny');
            if(tmp){
                var pmet = tmp.querySelector('div.link-container');
                if(pmet){
                    var backgroundDivs = pmet.querySelectorAll('a.header-link.color-none');
                    backgroundDivs.forEach(function(div) {
                        div.style.color = txtc;
                    });
                }
                backgroundDivs = tmp.querySelectorAll('svg[data-v-0640126c]:not(div.center svg[data-v-0640126c])');
                backgroundDivs.forEach(function(div) {
                    div.style.color = txtc;
                });
                backgroundDivs = tmp.querySelectorAll('svg[data-v-258e49ac]:not(div.dropdown svg[data-v-258e49ac])');
                backgroundDivs.forEach(function(div) {
                    div.style.color = txtc;
                });
            }
            tmp = document.querySelector('div.user-nav');
            if(tmp){
                backgroundDivs = tmp.querySelectorAll('svg[data-v-0640126c]:not(div.dropdown svg[data-v-0640126c])');
                backgroundDivs.forEach(function(div) {
                    div.style.color = txtc;
                });
                backgroundDivs = tmp.querySelectorAll('svg[data-v-258e49ac]:not(div.dropdown svg[data-v-258e49ac])');
                backgroundDivs.forEach(function(div) {
                    div.style.color = txtc;
                });
            }
        }

        const elementsWithCustomStyle = document.querySelectorAll('[style*="--forum-color: #f39c11; color: var(--forum-color);"]');// 题目讨论版
        elementsWithCustomStyle.forEach(function (element) {
            element.style.cssText = `--forum-color: ${newcolor3}; color: var(--forum-color);`;
        });
        var currentURL = window.location.href;

        /*
        // 检查链接是否以特定URL开头
        if (currentURL.startsWith("https://www.luogu.com.cn/discuss/new")) {
            // 获取所有class为card padding-default的元素
            elements = document.querySelectorAll(".card.padding-default");

            // 遍历元素并修改背景颜色
            elements.forEach(function(element) {
                element.style.backgroundColor = bgc;
            });
        }
        */
        const forumElement = document.querySelector("section.side");
        if(forumElement){
            // 获取所属板块的文本内容
            const forumTextElement = forumElement.querySelector("a.color-default");
            if(forumTextElement){
                const forumText = forumTextElement.textContent.trim();
                const temp = document.querySelector("section.main");
                const temp1 = temp.querySelector("div.card.padding-default");
                // 根据所属板块的文本内容判断是否需要修改颜色
                if (forumText === '站务版' && !(window.location.href.startsWith('https://www.luogu.com.cn/discuss/new')||window.location.href.startsWith('https://www.luogu.com/discuss/new'))/* 防止在帖子发布页(https://www.luogu.com.cn/discuss/new?forum=xxx)底下也出现站务版颜色边框 */) {
                    const newColor = newcolor2; // 设置新的颜色值
                    const rgbColor = hexToRgb(newColor); // 将十六进制颜色转换为 RGB 形式
                    // 修改元素的颜色属性
                    temp1.style.cssText = `border-bottom: 2px solid rgb(${rgbColor.r}, ${rgbColor.g}, ${rgbColor.b});`;
                }else if (forumText === '题目总版') {
                    const newColor = newcolor3; // 设置新的颜色值
                    const rgbColor = hexToRgb(newColor); // 将十六进制颜色转换为 RGB 形式
                    // 修改元素的颜色属性
                    temp1.style.cssText = `border-bottom: 2px solid rgb(${rgbColor.r}, ${rgbColor.g}, ${rgbColor.b});`;
                }else if (forumText === '学术版') {
                    const newColor = newcolor4; // 设置新的颜色值
                    const rgbColor = hexToRgb(newColor); // 将十六进制颜色转换为 RGB 形式
                    // 修改元素的颜色属性
                    temp1.style.cssText = `border-bottom: 2px solid rgb(${rgbColor.r}, ${rgbColor.g}, ${rgbColor.b});`;
                }else if (forumText === '灌水区') {
                    const newColor = newcolor5; // 设置新的颜色值
                    const rgbColor = hexToRgb(newColor); // 将十六进制颜色转换为 RGB 形式
                    // 修改元素的颜色属性
                    temp1.style.cssText = `border-bottom: 2px solid rgb(${rgbColor.r}, ${rgbColor.g}, ${rgbColor.b});`;
                }else if (forumText === '工单反馈版') {
                    const newColor = newcolor6; // 设置新的颜色值
                    const rgbColor = hexToRgb(newColor); // 将十六进制颜色转换为 RGB 形式
                    // 修改元素的颜色属性
                    temp1.style.cssText = `border-bottom: 2px solid rgb(${rgbColor.r}, ${rgbColor.g}, ${rgbColor.b});`;
                }else if (forumText === '小黑屋') {
                    const newColor = newcolor7; // 设置新的颜色值
                    const rgbColor = hexToRgb(newColor); // 将十六进制颜色转换为 RGB 形式
                    // 修改元素的颜色属性
                    temp1.style.cssText = `border-bottom: 2px solid rgb(${rgbColor.r}, ${rgbColor.g}, ${rgbColor.b});`;
                }else if (forumText.startsWith('团队')){// 团队帖子内
                    const newColor = newcolor8; // 设置新的颜色值
                    const rgbColor = hexToRgb(newColor); // 将十六进制颜色转换为 RGB 形式
                    // 修改元素的颜色属性
                    temp1.style.cssText = `border-bottom: 2px solid rgb(${rgbColor.r}, ${rgbColor.g}, ${rgbColor.b});`;
                }else if ((window.location.href.startsWith('https://www.luogu.com.cn/discuss/')||window.location.href.startsWith('https://www.luogu.com/discuss/'))/* 确保在讨论区 */ && !(window.location.href.startsWith('https://www.luogu.com.cn/discuss/new')||window.location.href.startsWith('https://www.luogu.com/discuss/new'))/* 防止在帖子发布页(https://www.luogu.com.cn/discuss/new?forum=xxx)底下也出现题目版颜色边框 */){// 在题目详情页中
                    // console.log(forumText);
                    const newColor = newcolor3; // 设置新的颜色值
                    const rgbColor = hexToRgb(newColor); // 将十六进制颜色转换为 RGB 形式
                    // 修改元素的颜色属性
                    temp1.style.cssText = `border-bottom: 2px solid rgb(${rgbColor.r}, ${rgbColor.g}, ${rgbColor.b});`;
                }
            }
        }
        const a=document.querySelectorAll("[title=全部板块]");
        for(let x of a) x.style.cssText = `--forum-color: ${newcolor1}; color: var(--forum-color);`; //洛谷蓝
        const b=document.querySelectorAll("[title=站务版]");
        for(let x of b) x.style.cssText = `--forum-color: ${newcolor2}; color: var(--forum-color);`; //紫名紫
        const c=document.querySelectorAll("[title=题目总版]");
        for(let x of c) x.style.cssText = `--forum-color: ${newcolor3}; color: var(--forum-color);`; // AC 绿
        const d=document.querySelectorAll("[title=学术版]");
        for(let x of d) x.style.cssText = `--forum-color: ${newcolor4}; color: var(--forum-color);`; //红名红
        const e=document.querySelectorAll("[title=灌水区]");
        for(let x of e) x.style.cssText = `--forum-color: ${newcolor5}; color: var(--forum-color);`;
        const f=document.querySelectorAll("[title=工单反馈版]");
        for(let x of f) x.style.cssText = `--forum-color: ${newcolor6}; color: var(--forum-color);`; //排行橙
        const g=document.querySelectorAll("[title=小黑屋]");
        for(let x of g){x.style.cssText = `--forum-color: ${newcolor7}; color: var(--forum-color);`; //棕名棕
                        const svgElement = x.querySelector("svg");
                        const pathElement = svgElement.querySelector("path");
                        pathElement.setAttribute("d", "M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48"); //更改小黑屋图标(从四个方块改成一个方块)
                       }
        const h=document.querySelectorAll("[title^=团队]");
        for(let x of h){x.style.cssText = `--forum-color: ${newcolor8}; color: var(--forum-color);`; //比赛蓝
                        const svgElement = x.querySelector("svg");
                        const pathElement = svgElement.querySelector("path");
                        pathElement.setAttribute("d", "M400 32H48C21.5 32 0 53.5 0 80v352c0 26.5 21.5 48 48 48h352c26.5 0 48-21.5 48-48V80c0-26.5-21.5-48-48-48"); //更改小黑屋图标(从四个方块改成一个方块)
                       }
        function averageHexColor(hexColor, customColor) {
            // 提取原始颜色的R、G、B值和A值
            const originalR = parseInt(hexColor.slice(1, 3), 16);
            const originalG = parseInt(hexColor.slice(3, 5), 16);
            const originalB = parseInt(hexColor.slice(5, 7), 16);
            const originalA = parseInt(hexColor.slice(7, 9), 16);

            // 提取自定义颜色的R、G、B值
            const customR = parseInt(customColor.slice(1, 3), 16);
            const customG = parseInt(customColor.slice(3, 5), 16);
            const customB = parseInt(customColor.slice(5, 7), 16);

            // 创建新的颜色
            const averageR = Math.round((originalR + customR) / 2);
            const averageG = Math.round((originalG + customG) / 2);
            const averageB = Math.round((originalB + customB) / 2);

            // 将新的R、G、B值转换为16进制,并确保它们有两位
            const newR = ('0' + averageR.toString(16)).slice(-2);
            const newG = ('0' + averageG.toString(16)).slice(-2);
            const newB = ('0' + averageB.toString(16)).slice(-2);

            // 构建新的hex颜色字符串
            const newHexColor = `#${newR}${newG}${newB}${hexColor.slice(7, 9)}`;

            return newHexColor;
        }
        function combineColors(rgbaHex, rgbHex) {
            // 将RGBA和RGB颜色值从十六进制转换为对应的红、绿、蓝和透明度值
            const rgba = hexToRGBA(rgbaHex);
            const rgb = hexToRGB(rgbHex);

            //console.log(rgba,rgb);
            // 计算新的RGBA值,将各个通道进行加权平均
            const newRed = (rgba.red + rgb.red) / 2;
            const newGreen = (rgba.green + rgb.green) / 2;
            const newBlue = (rgba.blue + rgb.blue) / 2;
            const newAlpha = rgba.alpha; // 保持第一个颜色的透明度不变

            //console.log(newRed, newGreen, newBlue, newAlpha);
            // 将新的RGBA值转换回十六进制颜色表示法
            const combinedColorHex = rgbaToHex(newRed, newGreen, newBlue, newAlpha);

            return combinedColorHex;
        }

        function hexToRGBA(hex) {
            // 从RGBA十六进制表示法中提取红、绿、蓝和透明度值
            const bigint = parseInt(hex.slice(1), 16);
            const red = (bigint >> 24) & 255;
            const green = (bigint >> 16) & 255;
            const blue = (bigint >> 8) & 255;
            const alpha = (bigint & 255) / 255; // 将透明度值归一化为 [0, 1] 范围

            return { red, green, blue, alpha };
        }

        function hexToRGB(hex) {
            // 从RGB十六进制表示法中提取红、绿、蓝值
            const bigint = parseInt(hex.slice(1), 16);
            const red = (bigint >> 16) & 255;
            const green = (bigint >> 8) & 255;
            const blue = bigint & 255;

            return { red, green, blue };
        }

        function rgbaToHex(red, green, blue, alpha) {
            // 将红、绿、蓝和透明度值转换为RGBA十六进制表示法
            const r = Math.round(red);
            const g = Math.round(green);
            const b = Math.round(blue);
            const a = Math.round(alpha * 255 / 2);

            //console.log(r,g,b,a,`#${(1 << 24) | (r << 16) | (g << 8) | b}${a.toString(16).padStart(2, '0')}`);
            return `#${((r << 16) | (g << 8) | b).toString(16).padStart(6, '0')}${a.toString(16).padStart(2, '0')}`;
        }
        if(!window.location.href.startsWith('https://www.luogu.com.cn/blog/')){
            let temp1 = document.querySelectorAll("div.card");
            for(let temp2 of temp1){
                if (!temp2.classList.contains("reply-editor")&&!temp2.classList.contains("modal-card")&&!temp2.classList.contains("reply-card")&&!temp2.classList.contains("float-card")){
                    temp2.style.backgroundColor = bgc;
                    temp2.style.color = txtc;
                }else{
                    temp2.style.backgroundColor = bgc.slice(0, -2);
                }
            }
            temp1 = document.querySelectorAll("div.edit-reply-container.in-position div.card.reply-editor.padding-default");
            for(let temp2 of temp1){
                temp2.style.backgroundColor = bgc;
            }
            temp1 = document.querySelectorAll("div.am-modal-dialog");
            for(let temp2 of temp1){
                temp2.style.backgroundColor = bgc.slice(0, -2);
            }
            temp1 = document.querySelectorAll("div.lg-article");
            for(let temp2 of temp1){
                temp2.style.backgroundColor = bgc;
            }
            temp1 = document.querySelectorAll("div.am-comment-bd");
            for(let temp2 of temp1){
                temp2.style.backgroundColor = bgc;
            }
            temp1 = document.querySelectorAll("section.am-panel.am-panel-default.lg-summary");
            for(let temp2 of temp1){
                temp2.style.backgroundColor = bgc;//console.log(combineColors(bgc,((opt == 1)?(bgc1):(bgc.slice(0,-2)))));
            }
            temp1 = document.querySelectorAll("div.text.lfe-form-sz-middle");
            for(let temp2 of temp1){
                temp2.style.backgroundColor = bgc;
            }
            temp1 = document.querySelectorAll("button.exlg-emo-btn");// extend-luogu
            for(let temp2 of temp1){
                temp2.style.backgroundColor = bgc;
                temp2.style.color = txtc;
                temp2.style.cursor = 'pointer';
            }
            temp1 = document.querySelectorAll("ul.mp-editor-menu.exlg-emo.exlg-show-emo.exlg-show-emo-long");// extend-luogu
            for(let temp2 of temp1){
                temp2.style.backgroundColor = combineColors(bgc,((opt == 1)?(bgc1):(bgc.slice(0,-2))));
                //console.log(combineColors(bgc,((opt == 1)?(bgc1):(bgc.slice(0,-2)))));
            }
            temp1 = document.querySelectorAll("span.exlg-window");// extend-luogu
            for(let temp2 of temp1){
                temp2.style.backgroundColor = bgc.slice(0, -2);
            }
            temp1 = document.querySelectorAll("span[data-v-71731098][data-v-19de5e77].lfe-caption");
            for(let temp2 of temp1){
                temp2.style.backgroundColor = bgc.slice(0, -2);
            }
            temp1 = document.querySelectorAll("textarea");
            for(let temp2 of temp1){
                temp2.style.backgroundColor = bgc.slice(0, -2);
                temp2.style.color = txtc;
                temp2.style.caretColor = txtc;
            }
            temp1 = document.querySelectorAll("input");
            for(let temp2 of temp1){
                temp2.style.backgroundColor = bgc.slice(0, -2);
                temp2.style.color = txtc;
                temp2.style.caretColor = txtc;
            }
            temp1 = document.querySelectorAll("section.am-panel:not(.am-panel-default.lg-summary)");
            for(let temp2 of temp1){
                temp2.style.backgroundColor = bgc.slice(0, -2);
            }
            temp1 = document.querySelectorAll("div.mp-editor-toolbar");
            for(let temp2 of temp1){
                temp2.style.backgroundColor = bgc.slice(0, -2);
            }
            temp1 = document.querySelectorAll("div.mp-preview-area");
            for(let temp2 of temp1){
                temp2.style.backgroundColor = bgc.slice(0, -2);
            }
            temp1 = document.querySelectorAll("div.mp-preview-content");
            for(let temp2 of temp1){
                temp2.style.color = txtc;
            }
            //temp1 = document.querySelectorAll("div.CodeMirror-gutters");
            //for(let temp2 of temp1){
            //    temp2.style.backgroundColor = bgc;
            //}
            temp1 = document.querySelectorAll("div.CodeMirror-scroll");
            for(let temp2 of temp1){
                temp2.style.backgroundColor = bgc.slice(0, -2);
                temp2.style.color = txtc;
            }
            temp1 = document.querySelectorAll("div.CodeMirror-cursor");
            for(let temp2 of temp1){
                temp2.style.borderLeft = "1px solid "+txtc;
            }
            temp1 = document.querySelectorAll("div.dropdown");
            for(let temp2 of temp1){
                temp2.style.backgroundColor = bgc.slice(0, -2);
            }
            temp1 = document.querySelectorAll("div.message-block div.message");
            for(let temp2 of temp1){
                temp2.style.backgroundColor = (chm)?(bgc):("#e8e8e8");
            }
            temp1 = document.querySelectorAll("div.drop");
            for(let temp2 of temp1){
                temp2.style.backgroundColor = bgc.slice(0, -2);
            }
            temp1 = document.querySelectorAll("div.content-wrapper");
            for(let temp2 of temp1){
                temp2.style.backgroundColor = bgc.slice(0, -2);
            }
            temp1 = document.querySelectorAll("div.btn-edit-reply");
            for(let temp2 of temp1){
                temp2.style.backgroundColor = bgc.slice(0, -2);
            }
            temp1 = document.querySelectorAll("header.am-comment-hd");
            for(let temp2 of temp1){
                temp2.style.backgroundColor = averageHexColor(bgc,averageHexColor(bgc,averageHexColor(bgc,'#7F7F7F')));
            }
            temp1 = document.querySelectorAll("div[data-v-f9624136][data-v-19de5e77].card.log.padding-default div[data-v-19de5e77][data-v-f9624136].author");
            for(let temp2 of temp1){
                temp2.style.backgroundColor = averageHexColor(bgc,averageHexColor(bgc,averageHexColor(bgc,'#7F7F7F')));
            }
            temp1 = document.querySelectorAll("button[data-v-453d795e]:not(.selected)");
            for(let temp2 of temp1){
                temp2.style.backgroundColor = bgc.slice(0, -2);
                temp2.style.color = txtc;
                // 找到所有包含SVG图像的<img>元素
                const imgElements = temp2.querySelectorAll('img[data-v-453d795e][src^="data:image/svg+xml;base64,"]');

                // 定义要替换的颜色
                var tttttemp = hexToRGB(txtc);
                const newFillColor = `fill: rgba(${tttttemp.red},${tttttemp.green},${tttttemp.blue},1);`;

                imgElements.forEach(imgElement => {
                    // 获取原始的SVG文本
                    const originalSvgBase64 = imgElement.getAttribute('src').replace(/^data:image\/svg\+xml;base64,/, '');
                    const originalSvgText = atob(originalSvgBase64);

                    // 在SVG文本中查找并替换颜色
                    const modifiedSvgText = originalSvgText.replace(/fill: rgba\(0,0,0,0.65\);/g, newFillColor);

                    // 将修改后的SVG文本重新编码为Base64
                    const modifiedSvgBase64 = btoa(modifiedSvgText);

                    // 更新<img>元素的src属性
                    imgElement.setAttribute('src', `data:image/svg+xml;base64,${modifiedSvgBase64}`);
                });

            }
            temp1 = document.querySelectorAll("button[data-v-453d795e].selected");
            for(let temp2 of temp1){
                temp2.style.backgroundColor = "";
                temp2.style.color = "";
            }
            temp1 = document.querySelectorAll("div.inner-card");
            for(let temp2 of temp1){
                temp2.style.backgroundColor = bgc.slice(0, -2);
            }
            temp1 = document.querySelectorAll("code");
            for(let temp2 of temp1){
                temp2.style.backgroundColor = bgc.slice(0, -2);
                temp2.style.color = txtc;
            }
            temp1 = document.querySelectorAll("div.marked pre");
            for(let temp2 of temp1){
                temp2.style.backgroundColor = bgc.slice(0, -2);
            }
            temp1 = document.querySelectorAll("div.sample-wrap.sample pre");
            for(let temp2 of temp1){
                temp2.style.backgroundColor = bgc.slice(0, -2);
            }
            temp1 = document.querySelectorAll("div.bottom.float-bottom");
            for(let temp2 of temp1){
                temp2.style.backgroundColor = bgc;
            }
            temp1 = document.querySelectorAll("div[data-v-b5709dda].bottom:not(.float-bottom)");
            for(let temp2 of temp1){
                temp2.style.backgroundColor = "";
            }
            /*temp1 = document.querySelectorAll("div.swal2-popup.swal2-modal.swal2-show");
            for(let temp2 of temp1){
                temp2.style.backgroundColor = bgc.slice(0, -2);
                var temp11 = document.querySelector("h2.swal2-title");
                temp11.style.color = txtc;
            }*///如果不注释掉,“xx成功”的打钩会变的很奇怪,干脆不改了
            temp1 = document.querySelectorAll("div.marked h3.exlg-code-title.exlg-beautified-cbex");// exlg
            for(let temp2 of temp1){
                temp2.style.color = averageHexColor(txtc,bgc);
            }
        }
        if(ch1){
            let c=document.getElementsByClassName("card post-item padding-default");
            for (let el of c) {
                if (el.querySelector("[title=站务版]")!=null) {
                    el.style.cssText=`background-color: ${lighterColor(lighterColor(newcolor2))}A0; color: var(--forum-color);`;
                } else if (el.querySelector("[title=题目总版]")!=null) {
                    el.style.cssText=`background-color: ${lighterColor(lighterColor(newcolor3))}A0; color: var(--forum-color);`;
                } else if (el.querySelector("[title=学术版]")!=null) {
                    el.style.cssText=`background-color: ${lighterColor(lighterColor(newcolor4))}A0; color: var(--forum-color);`;
                } else if (el.querySelector("[title=灌水区]")!=null) {
                    el.style.cssText=`background-color: ${lighterColor(lighterColor(newcolor5))}A0; color: var(--forum-color);`;
                } else if (el.querySelector("[title=工单反馈版]")!=null) {
                    el.style.cssText=`background-color: ${lighterColor(lighterColor(newcolor6))}A0; color: var(--forum-color);`;
                } else if (el.querySelector("[title=小黑屋]")!=null) {
                    el.style.cssText=`background-color: ${lighterColor(lighterColor(newcolor7))}A0; color: var(--forum-color);`;
                } else if (el.querySelector("[title^=团队]")!=null) {
                    el.style.cssText=`background-color: ${lighterColor(lighterColor(newcolor8))}A0; color: var(--forum-color);`;
                } else {// 题目讨论区
                    el.style.cssText=`background-color: ${lighterColor(lighterColor(newcolor3))}A0; color: var(--forum-color);`;
                }
            }//改背景色
            c=document.getElementsByClassName("am-panel lg-index-contest am-panel-primary");
            for (let el of c) {
                let x=el.querySelector("div.am-panel-bd div.lg-inline-up span.lg-small a:not([class])");
                //console.log(x,x.textContent);
                if(x){
                    if (x.textContent.includes("站务版")) {
                        el.style.cssText=`background-color: ${lighterColor(lighterColor(newcolor2))}A0; color: var(--forum-color);`;
                    } else if (x.textContent.includes("题目总版")) {
                        el.style.cssText=`background-color: ${lighterColor(lighterColor(newcolor3))}A0; color: var(--forum-color);`;
                    } else if (x.textContent.includes("学术版")) {
                        el.style.cssText=`background-color: ${lighterColor(lighterColor(newcolor4))}A0; color: var(--forum-color);`;
                    } else if (x.textContent.includes("灌水区")) {
                        el.style.cssText=`background-color: ${lighterColor(lighterColor(newcolor5))}A0; color: var(--forum-color);`;
                    } else if (x.textContent.includes("工单反馈版")) {
                        el.style.cssText=`background-color: ${lighterColor(lighterColor(newcolor6))}A0; color: var(--forum-color);`;
                    } else if (x.textContent.includes("小黑屋")) {
                        el.style.cssText=`background-color: ${lighterColor(lighterColor(newcolor7))}A0; color: var(--forum-color);`;
                    } else {// 题目讨论区
                        el.style.cssText=`background-color: ${lighterColor(lighterColor(newcolor3))}A0; color: var(--forum-color);`;
                    }
                }
            }//改背景色
            c=document.querySelectorAll("div[data-v-6f2f45fc][data-v-b5709dda].row");
            for (let el of c) {
                let x=el.querySelector("div.inner-card div.box.left-box div.post-source a.color-none");
                if(x){
                    el=el.querySelector("div.inner-card");
                    if (x.textContent.includes("站务版")) {
                        el.style.cssText=`background-color: ${lighterColor(lighterColor(newcolor2))}A0; color: var(--forum-color);`;
                    } else if (x.textContent.includes("题目总版")) {
                        el.style.cssText=`background-color: ${lighterColor(lighterColor(newcolor3))}A0; color: var(--forum-color);`;
                    } else if (x.textContent.includes("学术版")) {
                        el.style.cssText=`background-color: ${lighterColor(lighterColor(newcolor4))}A0; color: var(--forum-color);`;
                    } else if (x.textContent.includes("灌水区")) {
                        el.style.cssText=`background-color: ${lighterColor(lighterColor(newcolor5))}A0; color: var(--forum-color);`;
                    } else if (x.textContent.includes("工单反馈版")) {
                        el.style.cssText=`background-color: ${lighterColor(lighterColor(newcolor6))}A0; color: var(--forum-color);`;
                    } else if (x.textContent.includes("小黑屋")) {
                        el.style.cssText=`background-color: ${lighterColor(lighterColor(newcolor7))}A0; color: var(--forum-color);`;
                    } else if (x.textContent.includes("团队")) {
                        el.style.cssText=`background-color: ${lighterColor(lighterColor(newcolor8))}A0; color: var(--forum-color);`;
                    } else {// 题目讨论区
                        el.style.cssText=`background-color: ${lighterColor(lighterColor(newcolor3))}A0; color: var(--forum-color);`;
                    }
                }
            }//改背景色
            c=document.querySelectorAll("div[data-v-b878863e][data-v-fa6f155e][data-v-f9624136].discuss");//团队
            for(let el of c)el.style.cssText=`background-color: ${lighterColor(lighterColor(newcolor8))}A0; color: var(--forum-color);`;
        }

        function areColorsEqual(rgbString, hexString) {
            // 从RGB(A)字符串中提取R、G、B和A值(如果存在)
            function extractRGBValues(rgbString) {
                const regex = /rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*([\d.]+))?\)/;
                const matches = rgbString.match(regex);
                if (matches) {
                    const [, r, g, b, a] = matches;
                    return {
                        r: parseInt(r),
                        g: parseInt(g),
                        b: parseInt(b),
                        a: a ? parseFloat(a) : 1.0
                    };
                }
                return null;
            }
            // 从HEX字符串中提取RGB和A值(如果存在)
            function extractHexValues(hexString) {
                const regex = /^#([0-9a-fA-F]{6})([0-9a-fA-F]{2})?$/;
                const matches = hexString.match(regex);
                if (matches) {
                    const [, hexRGB, hexA] = matches;
                    const r = parseInt(hexRGB.substring(0, 2), 16);
                    const g = parseInt(hexRGB.substring(2, 4), 16);
                    const b = parseInt(hexRGB.substring(4, 6), 16);
                    const a = hexA ? parseInt(hexA, 16) / 255.0 : 1.0;
                    return {
                        r,
                        g,
                        b,
                        a
                    };
                }
                return null;
            }
            const rgbValues = extractRGBValues(rgbString);
            const hexValues = extractHexValues(hexString);
            if (
                rgbValues &&
                hexValues &&
                rgbValues.r === hexValues.r &&
                rgbValues.g === hexValues.g &&
                rgbValues.b === hexValues.b &&
                rgbValues.a === hexValues.a
            ) {
                return true;
            }
            return false;
        }

        //更改背景
        var mainElement = document.querySelector('.wrapped.lfe-body.mobile-body');
        var bodyElement = document.body;
        if (!mainElement) mainElement = document.querySelector('.lfe-body.mobile-body');
        if (!mainElement) mainElement = document.querySelector('main[data-v-51efdf02]');
        if (mainElement) {
            if (opt === 1) {
                mainElement.style.background = bgc1;
            } else if (opt) {
                bodyElement.style.backgroundImage = bgi2;
                bodyElement.style.backgroundSize = 'cover';
                bodyElement.style.backgroundRepeat = 'no-repeat';
                bodyElement.style.backgroundAttachment = 'fixed';
                mainElement.style.backgroundColor = 'transparent';
            }
            // 更改完正常的背景,还需要顺便更改顶栏背景颜色
            let tmp = document.querySelector('div.wrapper.wrapped.lfe-body.header-layout.tiny');
            if (tmp) {// 有顶栏
                backgroundDivs = tmp.querySelectorAll('div.background');
                backgroundDivs.forEach(function (div) {
                    if (div.style.backgroundImage && BGI === "") {
                        BGI = div.style.backgroundImage;
                    }
                    if ((opt === 1 && !areColorsEqual(div.style.backgroundColor, bgc1)) || (opt === 2 && !areColorsEqual(div.style.backgroundColor, '#00000000'))) {
                        BGC = div.style.backgroundColor;
                    }
                    if (div.style.filter && FIL === "") {
                        FIL = div.style.filter;
                    }
                    div.style.filter = "";
                    div.style.backgroundImage = "";
                    if (opt === 1) {
                        div.style.backgroundColor = bgc1;
                    } else if (opt) {
                        div.style.backgroundColor = '#00000000';
                    }
                });
                if(delzt){
                    tmp = document.querySelector('div.wrapper.wrapped.lfe-body:not(.header-layout)').querySelector('div.background');;
                    tmp.style.filter = "";
                    tmp.style.backgroundImage = "";
                    if (opt === 1) {
                        tmp.style.backgroundColor = bgc1;
                    } else if (opt) {
                        tmp.style.backgroundColor = '#00000000';
                    }
                }
            } else {// 没有,改回去
                //console.log("else");
                if(!delzt){
                    tmp = document.querySelector('div.wrapper.wrapped.lfe-body.header-layout.narrow');
                    if(!tmp)tmp = document.querySelector('div.wrapper.wrapped.lfe-body.header-layout.normal');
                    if(tmp){
                        backgroundDivs = tmp.querySelectorAll('div.background');
                        backgroundDivs.forEach(function (div) {
                            if (FIL) div.style.filter = FIL;
                            if (BGI) div.style.backgroundImage = BGI;
                            if (BGC) div.style.backgroundColor = BGC;
                        });
                    }
                }else{
                    tmp = document.querySelector('div.wrapper.wrapped.lfe-body.header-layout').querySelector('div.background');;
                    tmp.style.filter = "";
                    tmp.style.backgroundImage = "";
                    if (opt === 1) {
                        tmp.style.backgroundColor = bgc1;
                    } else if (opt) {
                        tmp.style.backgroundColor = '#00000000';
                    }
                    tmp = document.querySelector('div.wrapper.wrapped.lfe-body:not(.header-layout)').querySelector('div.background');;
                    tmp.style.filter = "";
                    tmp.style.backgroundImage = "";
                    if (opt === 1) {
                        tmp.style.backgroundColor = bgc1;
                    } else if (opt) {
                        tmp.style.backgroundColor = '#00000000';
                    }
                }
            }
        }
        // 删除 exlg 插件在 luogu.org 右下角造出的神奇玩意
        // 以下由 ChatGPT 编写
        // 递归函数,用于遍历并删除当前元素的子元素中包含 "exlg" 的元素
        function removeElementsWithExlg(element) {
            const children = element.children;
            for (let i = children.length - 1; i >= 0; i--) {
                const child = children[i];
                if (child.outerHTML.includes("exlg")) {
                    // 如果子元素包含 "exlg",则删除它
                    element.removeChild(child);
                } else {
                    // 否则继续递归遍历
                    removeElementsWithExlg(child);
                }
            }
        }
        // 调用函数,从整个文档开始遍历
        if(window.location.href === 'https://www.luogu.org/'){removeElementsWithExlg(document.body);}

        // 更改字体颜色
        var targetCSS1 = [
            ".lfe-body{",
            `    color: ${txtc};`,
            "}",
            ".message-block.left > .message[data-v-5c0627c6]:after {",
            `    border-right-color: ${(chm)?(bgc):("#e8e8e8")}!important;`,
            "}",
            ".message-block.right > .message[data-v-5c0627c6]:after {",
            `    border-left-color: ${(chm)?(bgc):("#e8e8e8")}!important;`,
            "}",
            ".item[data-v-4d6dca7a]:hover {",
            `    background-color: ${averageHexColor(txtc,bgc)}!important;`,
            "}",
            "li[data-v-4bbcea26]:hover {",
            `    background-color: ${averageHexColor(txtc,bgc)}!important;`,
            "}",
            ".expand[data-v-f3aa455a] {",
            `    background: linear-gradient(rgba(255, 255, 255, 0), ${combineColors(bgc,((opt == 1)?(bgc1):(bgc.slice(0,-2))))})!important;`,
            "}",
            ".expand[data-v-602e5c62] {",
            `    background: linear-gradient(rgba(255, 255, 255, 0), ${combineColors(bgc,((opt == 1)?(bgc1):(bgc.slice(0,-2))))})!important;`,
            "}",
            ".expand[data-v-15e4f65b] {",
            `    background: linear-gradient(rgba(255, 255, 255, 0), ${combineColors(bgc,((opt == 1)?(bgc1):(bgc.slice(0,-2))))})!important;`,
            "}",
            `input::input-placeholder{color:  ${averageHexColor(txtc,bgc)} !important;}`,
            "::-webkit-input-placeholder { /* WebKit browsers */",
            `    color: ${averageHexColor(txtc,bgc)} !important;`,
            "}",
            ":-moz-placeholder { /* Mozilla Firefox 4 to 18 */",
            `    color: ${averageHexColor(txtc,bgc)} !important;`,
            "}",
            "::-moz-placeholder { /* Mozilla Firefox 19  */",
            `    color: ${averageHexColor(txtc,bgc)} !important;`,
            "}",
            ":-ms-input-placeholder { /* Internet Explorer 10  */",
            `    color: ${averageHexColor(txtc,bgc)} !important;`,
            "}",
            ".action > *[data-v-d05d45ec] {",
            `    color: ${averageHexColor(txtc,bgc)} !important;`,
            "}",
            ".lfe-form-sz-tiny {",
            "  font-size: 0.875em;",
            "  padding: 0.0625em 0.25em;",
            "}",
            ".comment .author[data-v-561761e6] {",
            `  background-color: ${bgc}`,
            "}",
            ".action > *[data-v-561761e6] {",
            `  color: ${txtc}`,
            "}",
            ".color-default[data-v-0640126c][data-v-561761e6] {",
            `  color: ${averageHexColor(txtc,bgc)}`,
            "}",
            ".color-default[data-v-0640126c][data-v-561761e6][data-v-15e4f65b]{",
            "  color: #3498db;",
            "}",
            ".color-default[data-v-0640126c][data-v-561761e6]:hover {",
            `  color: #0056b3;`,
            "}",
            "[data-v-429fbdfe] .select-header-tiny .selected>span{",
            "  color: var(--l-simple-select--color,var(--lfe-color--primary,#3498db))!important",
            "}",
        ].join('\n');
        var existingStyles1 = document.querySelectorAll("style");
        var lastLines1 = "";
        let f1 = 0;
        for (let i = 0; i < existingStyles1.length; i++) {
            var style1 = existingStyles1[i];
            var styleText1 = style1.textContent || style1.innerText;
            var lines1 = styleText1.split('\n');
            var numLinesToCheck1 = lines1.length;
            if (lines1.length >= numLinesToCheck1) {
                lastLines1 = lines1.slice(-numLinesToCheck1).join('\n');
                if (lastLines1 === targetCSS1) {
                    f1 = 1;
                    break;
                }
            }
        }
        if(f1){}
        else if (typeof GM_addStyle != "undefined") {
            GM_addStyle(targetCSS1);
        } else if (typeof PRO_addStyle != "undefined") {
            PRO_addStyle(targetCSS1);
        } else if (typeof addStyle != "undefined") {
            addStyle(targetCSS1);
        } else {
            var node1 = document.createElement("style");
            node1.type = "text/css";
            node1.appendChild(document.createTextNode(targetCSS1));
            var heads1 = document.getElementsByTagName("head");
            if (heads1.length > 0) {
                heads1[0].appendChild(node1);
            } else {
                document.documentElement.appendChild(node1);
            }
        }
        let tmp1 = document.querySelectorAll('strong:not(a strong)');
        if(tmp1){
            for(var sb of tmp1)sb.style.color = txtc;
        }
        tmp1 = document.querySelectorAll('li');
        if(tmp1){
            for(var sb1 of tmp1)sb1.style.color = txtc;
        }
        tmp1 = document.querySelectorAll('li.menu.active-menu');
        if(tmp1){
            for(var seb1 of tmp1)seb1.style.color = '';
        }
        tmp1 = document.querySelectorAll('li[data-v-01f8a102]');
        if(tmp1){
            for(var seb22 of tmp1){
                seb22.style.color = txtc;
                var tmmp2 = seb22.querySelector('span');
                tmmp2.style.color = "";
            }
        }
        tmp1 = document.querySelectorAll('li[data-v-01f8a102].selected');
        if(tmp1){
            for(var seb223 of tmp1){
                seb223.style.color = "";
                var tmmp23 = seb223.querySelector('span');
                tmmp23.style.color = "";
            }
        }
        tmp1 = document.querySelectorAll('a[data-v-a97ae32a]');
        if(tmp1){
            for(var s_b of tmp1)s_b.style.color = txtc;
        }
        tmp1 = document.querySelectorAll('div[data-v-0bcd986d]');
        if(tmp1){
            for(var s1b of tmp1)s1b.style.color = txtc;
        }
        tmp1 = document.querySelectorAll('span[data-v-0bcd986d]');
        if(tmp1){
            for(var bs of tmp1)bs.style.color = txtc;
        }
        tmp1 = document.querySelectorAll('div.delete');
        if(tmp1){
            for(var bss of tmp1)bss.style.color = txtc;
        }
        tmp1 = document.querySelectorAll('div.content.marked');
        if(tmp1){
            for(var bbss of tmp1)bbss.style.color = txtc;
        }
        tmp1 = document.querySelectorAll('div.am-modal-hd');
        if(tmp1){
            for(var bbss1 of tmp1)bbss1.style.color = txtc;
        }
        tmp1 = document.querySelectorAll('div.am-modal-bd');
        if(tmp1){
            for(var bbss2 of tmp1)bbss2.style.color = txtc;
        }
        tmp1 = document.querySelectorAll('div.title');
        if(tmp1){
            for(var bbs of tmp1)bbs.style.color = txtc;
        }
        tmp1 = document.querySelectorAll('span.item-title');
        if(tmp1){
            for(var lgbbs of tmp1)lgbbs.style.color = txtc;
        }
        tmp1 = document.querySelectorAll("i.am-icon-minus");
        for(var abcaa of tmp1){
            abcaa.style.color=txtc;
        }
        // 定义一个函数来替换字符串中的内容
        function replaceTextContent(element) {
            // 获取元素的源码
            var html = element.innerHTML;
            // 将"Highcharts.getOptions().colors[数字]"替换为 txtc
            html = html.replace(/Highcharts\.getOptions\(\)\.colors\[\d+\]/g, txtc);
            // 将"#666666"替换为 averageHexColor(txtc,bgc) 返回的值
            html = html.replace(/#666666/g, averageHexColor(txtc,bgc));
            // 更新元素的源码
            if(element.innerHTML != html)element.innerHTML = html;
        }
        var divs = document.querySelectorAll('g.highcharts-axis.highcharts-yaxis');
        for (var i11 = 0; i11 < divs.length; i11++) {
            replaceTextContent(divs[i11]);
        }
        var divs1 = document.querySelectorAll('.highcharts-axis-labels');
        for (var i111 = 0; i111 < divs1.length; i111++) {
            replaceTextContent(divs1[i111]);
        }
        tmp1 = document.querySelectorAll('[data-v-04eb14e9][data-v-f9624136]:not(ul.luogu):not(path):not(svg):not(span.clear-filter):not(span.hide-on-narrow)');
        if(tmp1){
            for (var ls of tmp1) {
                if (!ls.closest('li')&&ls.className!="block-item tag"&&ls.className!="color-default"&&ls.className!="combo-wrapper block-item combo"&&ls.className!="delete") {
                    if(ls.className!="block-item select-button lfe-form-sz-middle"&&ls.className!="result-count"&&ls.className!="lfe-caption")ls.style.color = txtc;
                    else ls.style.color = averageHexColor(txtc,bgc);
                }else{
                    ls.style.color = "";
                }
            }
        }
        tmp1 = document.querySelectorAll('span.lfe-placeholder');
        if(tmp1){
            for(var lss of tmp1)if(lss.textContent=="题目难度")lss.style.color=averageHexColor(txtc,bgc);else lss.style.color = txtc;
        }
        tmp1 = document.querySelectorAll('span.exlg-windiv-left-tag');// exlg
        if(tmp1){
            for(var exlgbbs of tmp1)exlgbbs.style.color = txtc;
        }
        tmp1 = document.querySelectorAll('span[id="version-text"]');// exlg
        if(tmp1){//console.log(1);
            for(var exlgs of tmp1){
                var firstSpan = exlgs.querySelector('span[title="当前版本"]');
                firstSpan.style.color = txtc;
                var thirdSpan = exlgs.querySelector('span[title="最新版本"]');
                if(thirdSpan)thirdSpan.style.color = txtc;
            }
        }
        tmp1 = document.querySelectorAll('span.info-content');
        if(tmp1){
            for(var ssb of tmp1)ssb.style.color = averageHexColor(txtc,bgc);
        }
        tmp1 = document.querySelectorAll('div.lfe-caption.grey');
        if(tmp1){
            for(var ssb1 of tmp1)ssb1.style.color = averageHexColor(txtc,bgc);
        }
        tmp1 = document.querySelectorAll('div.author div.time');
        if(tmp1){
            for(var ssb2 of tmp1)ssb2.style.color = averageHexColor(txtc,bgc);
        }
        //tmp1 = document.querySelectorAll('div.action a.color-default');
        //if(tmp1){
        //    for(var s2sb2 of tmp1)s2sb2.style.color = averageHexColor(txtc,bgc);
        //}
        tmp1 = document.querySelectorAll('div[data-v-1c7f56df][data-v-f9624136].lfe-caption.caption');
        if(tmp1){
            for(var sbp of tmp1)sbp.style.color = averageHexColor(txtc,bgc);
        }
        tmp1 = document.querySelectorAll('div[data-v-98eaadf6][data-v-f9624136].hint.fa-pull-right');
        if(tmp1){
            for(var sbp1 of tmp1)sbp1.style.color = averageHexColor(txtc,bgc);
        }
        tmp1 = document.querySelectorAll('.lg-small');
        if(tmp1){
            for(var sbb of tmp1)sbb.style.color = averageHexColor(txtc,averageHexColor(txtc,bgc));
        }
        tmp1 = document.querySelectorAll('.lg-small.lg-inline-up');
        if(tmp1){
            for(var sssssssbb of tmp1)sssssssbb.style.color = averageHexColor(txtc,bgc);
        }
        tmp1 = document.querySelectorAll('span[data-v-71731098][data-v-c0f00ef2].lfe-caption');
        if(tmp1){
            for(var sssssssbbb of tmp1)sssssssbbb.style.backgroundColor = bgc.slice(0, -2);
        }
        tmp1 = document.querySelectorAll('div.am-comment-meta');
        if(tmp1){
            for(var ssbb of tmp1)ssbb.style.color = averageHexColor(txtc,bgc);
        }
        tmp1 = document.querySelectorAll('div[data-v-d05d45ec][data-v-f9624136].author');
        if(tmp1){
            for(var ssbb1 of tmp1)ssbb1.style.backgroundColor = averageHexColor(bgc,averageHexColor(bgc,averageHexColor(bgc,'#7F7F7F')));
        }
        tmp1 = document.querySelectorAll('div[data-v-5e80acb2][data-v-18fb1b28][data-v-f9624136]');
        if(tmp1){
            for(var rg of tmp1)rg.style.color = averageHexColor(txtc,bgc);
        }
        tmp1 = document.querySelectorAll('span[data-v-18fb1b28][data-v-f9624136]');
        if(tmp1){
            for(var sy of tmp1)sy.style.color = averageHexColor(txtc,bgc);
        }
        tmp1 = document.querySelectorAll('div.meta');
        if(tmp1){
            for(var tc of tmp1)tc.style.color = averageHexColor(txtc,bgc);
        }
        tmp1 = document.querySelectorAll('span[data-v-530f8b1f].lfe-caption');
        if(tmp1){
            for(var tc1 of tmp1)tc1.style.color = averageHexColor(txtc,bgc);
        }
        tmp1 = document.querySelectorAll('time.time');
        if(tmp1){
            for(var sj of tmp1)sj.style.color = averageHexColor(txtc,bgc);
        }
        tmp1 = document.querySelectorAll('time[data-v-e7b78994]');
        if(tmp1){
            for(var bbsj of tmp1)bbsj.style.color = averageHexColor(txtc,bgc);
        }
        tmp1 = document.querySelectorAll('span[data-v-e7b78994]:not([class])');
        if(tmp1){
            for(var bbsw of tmp1)bbsw.style.color = averageHexColor(txtc,bgc);
        }
        tmp1 = document.querySelectorAll('span[data-v-bd496524].key');
        if(tmp1){
            for(var kp of tmp1)kp.style.color = averageHexColor(txtc,bgc);
        }
        var ttt=document.querySelectorAll(".am-panel.lg-index-contest.am-panel-primary .lg-small");
        for(var abc of ttt){
            //abc.style.color=txtc;
        }
        ttt=document.querySelectorAll("div[data-v-6f2f45fc][data-v-b5709dda].row div.inner-card time");
        for(abc of ttt){
            abc.style.color=txtc;/*console.log(1);*/
        }
        tmp1 = document.querySelectorAll('span[data-v-71731098][data-v-0bcd986d][data-v-f9624136].lfe-caption');
        for(abc of tmp1){
            abc.style.color="#ffffff";
        }
        // 滚动条总是在屏幕的固定的地方,太烦了
        /*bug 太多了,放弃了
        var dropdowns = document.querySelectorAll('div[data-v-4bbcea26].dropdown');
        for (var dropdown of dropdowns) {
            if(!(dropdown.innerHTML.includes("辱骂与不友善内容"))){
                dropdown.style.position = 'absolute';
                dropdown.style.left = '';
                dropdown.style.top = '';
            }
        }*/
        // 自定义题目标签
        if(cht){
            var dbits = document.querySelectorAll('div.block-item.tag');
            for(var dbit of dbits){
                //console.log(stn);
                var stn = dbit.style.cssText;
                if(stn == 'background-color: rgb(41, 73, 180);'){
                    dbit.style.backgroundColor = newsf;
                }if(stn == 'background-color: rgb(19, 194, 194);'){
                    dbit.style.backgroundColor = newly;
                }if(stn == 'background-color: rgb(52, 152, 219);'){
                    dbit.style.backgroundColor = newsj;
                }if(stn == 'background-color: rgb(82, 196, 26);'){
                    dbit.style.backgroundColor = newqy;
                }if(stn == 'background-color: rgb(243, 156, 17);'){
                    dbit.style.backgroundColor = newts;
                }
                stn = dbit.innerText;// 加空格为了防止类似“CSP-J 入门级”的 tag 变色
                //console.log(stn);
                if(stn.includes('暂无评定 ')){
                    dbit.style.backgroundColor = newzw;
                }if(stn.includes('入门 ')){
                    dbit.style.backgroundColor = newrm;
                }if(stn.includes('普及− ')){
                    dbit.style.backgroundColor = newpj;
                }if(stn.includes('普及/提高− ')){
                    dbit.style.backgroundColor = newpt;
                }if(stn.includes('普及+/提高 ')){
                    dbit.style.backgroundColor = newtp;
                }if(stn.includes('提高+/省选− ')){
                    dbit.style.backgroundColor = newtg;
                }if(stn.includes('省选/NOI− ')){
                    dbit.style.backgroundColor = newsx;
                }if(stn.includes('NOI/NOI+/CTSC ')){
                    dbit.style.backgroundColor = newht;
                }
            }
            dbits = document.querySelectorAll('a.tag.color-none span.lfe-caption');
            for(dbit of dbits){
                //console.log(stn);
                stn = dbit.style.cssText;
                if(stn == 'color: rgb(255, 255, 255); background: rgb(41, 73, 180);'){
                    dbit.style.background = newsf;
                }if(stn == 'color: rgb(255, 255, 255); background: rgb(19, 194, 194);'){
                    dbit.style.background = newly;
                }if(stn == 'color: rgb(255, 255, 255); background: rgb(52, 152, 219);'){
                    dbit.style.background = newsj;
                }if(stn == 'color: rgb(255, 255, 255); background: rgb(82, 196, 26);'){
                    dbit.style.background = newqy;
                }if(stn == 'color: rgb(255, 255, 255); background: rgb(243, 156, 17);'){
                    dbit.style.background = newts;
                }
            }
            dbits = document.querySelectorAll('div.difficulty a[data-v-0640126c][data-v-beeebc6e].color-default span.lfe-caption');
            for(dbit of dbits){
                stn = dbit.innerText;
                //console.log(stn);
                if(stn.includes('暂无评定')){
                    dbit.style.background = newzw;
                }if(stn.includes('入门')){
                    dbit.style.background = newrm;
                }if(stn.includes('普及−')){
                    dbit.style.background = newpj;
                }if(stn.includes('普及/提高−')){
                    dbit.style.background = newpt;
                }if(stn.includes('普及+/提高')){
                    dbit.style.background = newtp;
                }if(stn.includes('提高+/省选−')){
                    dbit.style.background = newtg;
                }if(stn.includes('省选/NOI−')){
                    dbit.style.background = newsx;
                }if(stn.includes('NOI/NOI+/CTSC')){
                    dbit.style.background = newht;
                }
            }
            dbits = document.querySelectorAll('span[data-v-8b7f80ba] a[data-v-0640126c][data-v-263e39b8][data-v-ea4425c6].color-none span[data-v-263e39b8]');
            for(dbit of dbits){
                stn = dbit.innerText;
                //console.log(stn);
                if(stn.includes('暂无评定')){
                    dbit.style.color = newzw;
                }if(stn.includes('入门')){
                    dbit.style.color = newrm;
                }if(stn.includes('普及−')){
                    dbit.style.color = newpj;
                }if(stn.includes('普及/提高−')){
                    dbit.style.color = newpt;
                }if(stn.includes('普及+/提高')){
                    dbit.style.color = newtp;
                }if(stn.includes('提高+/省选−')){
                    dbit.style.color = newtg;
                }if(stn.includes('省选/NOI−')){
                    dbit.style.color = newsx;
                }if(stn.includes('NOI/NOI+/CTSC')){
                    dbit.style.color = newht;
                }
            }
            dbits = document.querySelectorAll('div[data-v-581a38cc] div[data-v-c4278d4c][data-v-581a38cc] div[data-v-2a31ee10][data-v-c4278d4c][data-v-581a38cc] div[data-v-2a31ee10].tag');
            for(dbit of dbits){
                stn = dbit.style.cssText;
                if(stn == 'background-color: rgb(41, 73, 180);'){
                    dbit.style.backgroundColor = newsf;
                }if(stn == 'background-color: rgb(19, 194, 194);'){
                    dbit.style.backgroundColor = newly;
                }if(stn == 'background-color: rgb(52, 152, 219);'){
                    dbit.style.backgroundColor = newsj;
                }if(stn == 'background-color: rgb(82, 196, 26);'){
                    dbit.style.backgroundColor = newqy;
                }if(stn == 'background-color: rgb(243, 156, 17);'){
                    dbit.style.backgroundColor = newts;
                }
            }
            dbits = document.querySelectorAll('div.tags span[data-v-71731098][data-v-32a8fe5a][data-v-abfce16a][data-v-f9624136].lfe-caption.tag.selected');
            for(dbit of dbits){
                stn = getComputedStyle(dbit).getPropertyValue("--tag-color");
                if(stn == '#2949b4'){
                    dbit.style.setProperty("--tag-color",newsf);
                }if(stn == '#13c2c2'){
                    dbit.style.setProperty("--tag-color",newly);
                }if(stn == '#3498db'){
                    dbit.style.setProperty("--tag-color",newsj);
                }if(stn == '#52c41a'){
                    dbit.style.setProperty("--tag-color",newqy);
                }if(stn == '#f39c11'){
                    dbit.style.setProperty("--tag-color",newts);
                }
            }
            dbits = document.querySelectorAll('div.tags span[data-v-71731098][data-v-32a8fe5a][data-v-abfce16a][data-v-f9624136].lfe-caption.tag:not(.selected)');
            for(dbit of dbits){
                dbit.style.setProperty("background",bgc);
            }
        }
        // 获取所有带有 data-v-31929e12 和 data-v-f9624136 属性的 div 元素
        var divsToRemove = document.querySelectorAll('div[data-v-f9624136][style="background-color: rgb(255, 235, 236); border-radius: 5px; border: 1px solid rgb(225, 50, 56); padding: 1em; font-style: italic;"]');
        // 遍历每个 div 元素并删除它们
        divsToRemove.forEach(function(div) {
            div.remove();
        });
        // 获取所有带有 data-v-e5ad98f0 和 data-v-b03c2e52 属性的 div 元素
        var divsToClearStyle = document.querySelectorAll('div[data-v-e5ad98f0]');
        // 遍历每个 div 元素并清空它们的 style 属性
        divsToClearStyle.forEach(function(div) {
            div.style = '';
        });
        // 找到网页中的 div.user-action 元素
        var userActionDiv = document.querySelector('div.user-action');
        var loggedout = document.querySelector('a.login');
        if(userActionDiv&&!loggedout){
            var tmpttt = userActionDiv.querySelector('nbutton');
            var tmpttt2 = userActionDiv.querySelector('span');
            if(!tmpttt&&!tmpttt2){
                // 创建一个包含<a></a>代码的字符串
                var linkHtml = '<a data-v-0640126c="" data-v-7d9c5470="" href="/article/mine" class="color-none"><button data-v-cc52fb5c="" data-v-7d9c5470="" type="button" class="btn btn-config lfe-form-sz-middle" style="border-color: rgba(255, 255, 255, 0.5); color: rgb(255, 255, 255); background-color: rgba(0, 0, 0, 0.5);">我的专栏文章</button></a><nbutton type="not-button" class="btn btn-config lfe-form-sz-tiny" style="border-color: rgba(255, 255, 255, 1); color: rgb(255, 255, 255,1); background-color: rgba(0, 0, 0, 0);"></nbutton>'; // 这里可以是您想要显示的链接和文本内容
                // 将包含<a></a>代码的字符串插入到 div.user-action 元素的最前面
                if (userActionDiv) {
                    userActionDiv.insertAdjacentHTML('afterbegin', linkHtml);
                }
            }
        }
    }
    //更新速度,单位毫秒,太小可能造成卡顿
    setInterval(changeColors, 250);
})();