<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="zh-Hans-CN">
	<id>http://fandombackroomscn.icu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Aread</id>
	<title>FBC镜像站 - 用户贡献 [zh-cn]</title>
	<link rel="self" type="application/atom+xml" href="http://fandombackroomscn.icu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Aread"/>
	<link rel="alternate" type="text/html" href="http://fandombackroomscn.icu/index.php/%E7%89%B9%E6%AE%8A:%E7%94%A8%E6%88%B7%E8%B4%A1%E7%8C%AE/Aread"/>
	<updated>2026-08-06T09:14:15Z</updated>
	<subtitle>用户贡献</subtitle>
	<generator>MediaWiki 1.46.0</generator>
	<entry>
		<id>http://fandombackroomscn.icu/index.php?title=%E7%94%A8%E6%88%B7%E8%AE%A8%E8%AE%BA:Aread&amp;diff=131</id>
		<title>用户讨论:Aread</title>
		<link rel="alternate" type="text/html" href="http://fandombackroomscn.icu/index.php?title=%E7%94%A8%E6%88%B7%E8%AE%A8%E8%AE%BA:Aread&amp;diff=131"/>
		<updated>2026-08-06T06:28:11Z</updated>

		<summary type="html">&lt;p&gt;Aread：​/* CSS咋修 */ 回复&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== CSS咋修 ==&lt;br /&gt;
&lt;br /&gt;
我改不来饿啊啊啊啊&lt;br /&gt;
&lt;br /&gt;
以及集群ZH800那块怎么折叠也炸了 [[用户:Minceraft8nxs|Minceraft8nxs]]（[[用户讨论:Minceraft8nxs|留言]]） 2026年8月6日 (四) 14:06 (CST)&lt;br /&gt;
&lt;br /&gt;
:我真不清楚，可能还是东西没搬完模块没弄完的问题。 [[用户:Aread|Aread]]（[[用户讨论:Aread|留言]]） 2026年8月6日 (四) 14:28 (CST)&lt;/div&gt;</summary>
		<author><name>Aread</name></author>
	</entry>
	<entry>
		<id>http://fandombackroomscn.icu/index.php?title=MediaWiki:Common.js&amp;diff=95</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="http://fandombackroomscn.icu/index.php?title=MediaWiki:Common.js&amp;diff=95"/>
		<updated>2026-08-06T05:58:21Z</updated>

		<summary type="html">&lt;p&gt;Aread：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* 这里的任何JavaScript将为所有用户在每次页面加载时加载。 */&lt;br /&gt;
// 点击播放或暂停音频&lt;br /&gt;
(function () {&lt;br /&gt;
    const eles = document.querySelectorAll(&#039;.js-action-play&#039;);&lt;br /&gt;
    eles.forEach(function (e) {&lt;br /&gt;
        const targetId = e.getAttribute(&#039;data-media-id&#039;);&lt;br /&gt;
        if (!targetId) {&lt;br /&gt;
            console.error(&#039;No data-media-id present on element&#039;, e);&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        const target = document.getElementsByClassName(&#039;media-id-&#039; + targetId)[0].getElementsByClassName(&amp;quot;mw-file-element&amp;quot;)[0];&lt;br /&gt;
        if (!target) {&lt;br /&gt;
            console.error(&#039;No element found with .media-id-&#039; + targetId, e);&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        e.addEventListener(&#039;click&#039;, function () {&lt;br /&gt;
            console.log(target);&lt;br /&gt;
            if (target.paused || target.ended) {&lt;br /&gt;
                target.play();&lt;br /&gt;
            } else {&lt;br /&gt;
                target.pause();&lt;br /&gt;
            }&lt;br /&gt;
        });&lt;br /&gt;
    });&lt;br /&gt;
})();&lt;br /&gt;
&lt;br /&gt;
mw.loader.load([&amp;quot;mediawiki.util&amp;quot;, &amp;quot;mediawiki.Title&amp;quot;]);&lt;br /&gt;
mw.hook(&amp;quot;wikipage.content&amp;quot;).add(function () {&lt;br /&gt;
    // 单页内联CSS与CSS触发器&lt;br /&gt;
    $(&amp;quot;span.import-css&amp;quot;).each(function () {&lt;br /&gt;
        var css = mw.util.addCSS($(this).attr(&amp;quot;data-css&amp;quot;));&lt;br /&gt;
        $(css.ownerNode).addClass(&amp;quot;import-css&amp;quot;)&lt;br /&gt;
            .attr(&amp;quot;data-css-hash&amp;quot;, $(this).attr(&amp;quot;data-css-hash&amp;quot;))&lt;br /&gt;
            .attr(&amp;quot;data-from&amp;quot;, $(this).attr(&amp;quot;data-from&amp;quot;))&lt;br /&gt;
            .attr(&amp;quot;data-trigger&amp;quot;, $(this).attr(&amp;quot;data-trigger&amp;quot;));&lt;br /&gt;
        var trigger = $(this).attr(&amp;quot;data-trigger&amp;quot;);&lt;br /&gt;
        var triggerOpened = false;&lt;br /&gt;
        if (trigger != &amp;quot;none&amp;quot;) {&lt;br /&gt;
            css.disabled = true;&lt;br /&gt;
            $(&amp;quot;.csstrigger-&amp;quot; + trigger).click(function () {&lt;br /&gt;
                css.disabled = !css.disabled;&lt;br /&gt;
                triggerOpened = true;&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
        $(&amp;quot;.css-toggler&amp;quot;).click(function () {&lt;br /&gt;
            if ((trigger != &amp;quot;none&amp;quot; &amp;amp;&amp;amp; triggerOpened) || (trigger == &amp;quot;none&amp;quot;)) css.disabled = !css.disabled;&lt;br /&gt;
        });&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    // 播放或暂停所有音频&lt;br /&gt;
    $(&amp;quot;.audio-toggler&amp;quot;).click(function () {&lt;br /&gt;
        $(&amp;quot;audio&amp;quot;).get().forEach(function (audio) { if (audio.paused || audio.ended) { audio.play(); } else { audio.pause(); } });&lt;br /&gt;
    });&lt;br /&gt;
    &lt;br /&gt;
    // Button Audio修复&lt;br /&gt;
mw.hook(&amp;quot;wikipage.content&amp;quot;).add(function () {&lt;br /&gt;
&lt;br /&gt;
    $(&amp;quot;.t-audio&amp;quot;).each(function () {&lt;br /&gt;
&lt;br /&gt;
        var toggle = $(this).attr(&amp;quot;data-toggle&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        if (!toggle) return;&lt;br /&gt;
&lt;br /&gt;
        $(&amp;quot;.t-audio-toggle-&amp;quot; + toggle).click(function () {&lt;br /&gt;
&lt;br /&gt;
            var audio = $(&amp;quot;.t-audio-toggle-&amp;quot; + toggle + &amp;quot; audio&amp;quot;)[0];&lt;br /&gt;
&lt;br /&gt;
            if (!audio) return;&lt;br /&gt;
&lt;br /&gt;
            if (audio.paused || audio.ended) {&lt;br /&gt;
                audio.play();&lt;br /&gt;
            } else {&lt;br /&gt;
                audio.pause();&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
        });&lt;br /&gt;
&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
    // 站点公告切换&lt;br /&gt;
    $(&amp;quot;.sitenotice-tab-container&amp;quot;).each(function () {&lt;br /&gt;
        var container = $(this);&lt;br /&gt;
        function switchTab(offset) {&lt;br /&gt;
            return function () {&lt;br /&gt;
                var tabs = container.children(&amp;quot;.sitenotice-tab&amp;quot;).toArray();&lt;br /&gt;
                var no = Number(container.find(&amp;quot;.sitenotice-tab-no&amp;quot;)[0].innerText) + offset;&lt;br /&gt;
                var count = tabs.length;&lt;br /&gt;
                if (no &amp;lt; 1) no = count;&lt;br /&gt;
                else if (no &amp;gt; count) no = 1;&lt;br /&gt;
                for (var i = 0; i &amp;lt; count; i++)&lt;br /&gt;
                    tabs[i].style.display = (i + 1 == no ? null : &amp;quot;none&amp;quot;);&lt;br /&gt;
                container.find(&amp;quot;.sitenotice-tab-no&amp;quot;)[0].innerText = no;&lt;br /&gt;
            };&lt;br /&gt;
        }&lt;br /&gt;
        container.find(&amp;quot;.sitenotice-tab-arrow.prev&amp;quot;).click(switchTab(-1));&lt;br /&gt;
        container.find(&amp;quot;.sitenotice-tab-arrow.next&amp;quot;).click(switchTab(1));&lt;br /&gt;
    });&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
// 联立JS脚本页&lt;br /&gt;
$.getJSON(mw.util.wikiScript(&amp;quot;index&amp;quot;), {&lt;br /&gt;
    title: &amp;quot;MediaWiki:Custom-ImportScripts.json&amp;quot;,&lt;br /&gt;
    action: &amp;quot;raw&amp;quot;&lt;br /&gt;
}).done(function (result, status) {&lt;br /&gt;
    if (status != &amp;quot;success&amp;quot; || typeof (result) != &amp;quot;object&amp;quot;) return;&lt;br /&gt;
    var scripts = result[mw.config.get(&amp;quot;wgPageName&amp;quot;)];&lt;br /&gt;
    if (scripts) {&lt;br /&gt;
        if (typeof (scripts) == &amp;quot;string&amp;quot;) scripts = [scripts];&lt;br /&gt;
        importArticles({ type: &amp;quot;script&amp;quot;, articles: scripts }); // importArticles仅接受MediaWiki命名空间&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
// CSS页预览&lt;br /&gt;
(function () {&lt;br /&gt;
    var page = mw.config.get(&#039;wgPageName&#039;) || &#039;&#039;;&lt;br /&gt;
    var model = mw.config.get(&#039;wgPageContentModel&#039;);&lt;br /&gt;
    if (!page || model !== &#039;css&#039;) return;&lt;br /&gt;
    var rawUrl = mw.util.getUrl(page, { action: &#039;raw&#039;, ctype: &#039;text/css&#039; });&lt;br /&gt;
    fetch(rawUrl, { credentials: &#039;same-origin&#039; })&lt;br /&gt;
        .then(function (res) {&lt;br /&gt;
            if (!res.ok) throw new Error(&#039;HTTP &#039; + res.status);&lt;br /&gt;
            return res.text();&lt;br /&gt;
        })&lt;br /&gt;
        .then(function (cssText) {&lt;br /&gt;
            if (!cssText) return;&lt;br /&gt;
            var style = document.createElement(&#039;style&#039;);&lt;br /&gt;
            style.type = &#039;text/css&#039;;&lt;br /&gt;
            style.setAttribute(&#039;data-injected-from&#039;, page);&lt;br /&gt;
            style.appendChild(document.createTextNode(cssText));&lt;br /&gt;
            document.head.appendChild(style);&lt;br /&gt;
        })&lt;br /&gt;
        .catch(function (err) {&lt;br /&gt;
            console.error(&#039;加载CSS源失败: &#039;, page, err);&lt;br /&gt;
        });&lt;br /&gt;
}());&lt;br /&gt;
&lt;br /&gt;
// New JS 4 Wordrain&lt;br /&gt;
/* Word Rain System v2.1 - Fandom Optimized */&lt;br /&gt;
window.wordRainSystem = (function () {&lt;br /&gt;
    &#039;use strict&#039;;&lt;br /&gt;
&lt;br /&gt;
    const instances = new Map();&lt;br /&gt;
    let styleAdded = false;&lt;br /&gt;
&lt;br /&gt;
    function addCoreStyles() {&lt;br /&gt;
        if (styleAdded) return;&lt;br /&gt;
&lt;br /&gt;
        mw.util.addCSS(`&lt;br /&gt;
      .word-drop {&lt;br /&gt;
        position: fixed;&lt;br /&gt;
        top: -50px;&lt;br /&gt;
        opacity: 0.9;&lt;br /&gt;
        animation: wordFall linear infinite;&lt;br /&gt;
        pointer-events: none;&lt;br /&gt;
        z-index: 9998;&lt;br /&gt;
        white-space: nowrap;&lt;br /&gt;
        text-shadow: 0 0 5px currentColor;&lt;br /&gt;
        will-change: transform, opacity;&lt;br /&gt;
        font-weight: bold;&lt;br /&gt;
      }&lt;br /&gt;
      &lt;br /&gt;
      @keyframes wordFall {&lt;br /&gt;
        0% { transform: translateY(-100vh) translateX(-5px); }&lt;br /&gt;
        100% { transform: translateY(100vh) translateX(5px); }&lt;br /&gt;
      }&lt;br /&gt;
      &lt;br /&gt;
      .word-rain-toggle[data-state=&amp;quot;on&amp;quot;] {&lt;br /&gt;
        background: rgba(0,255,0,0.2) !important;&lt;br /&gt;
        border-color: #0f0 !important;&lt;br /&gt;
        color: #0f0 !important;&lt;br /&gt;
        text-shadow: 0 0 8px #0f0;&lt;br /&gt;
        box-shadow: 0 0 12px #0f0;&lt;br /&gt;
      }&lt;br /&gt;
    `);&lt;br /&gt;
        styleAdded = true;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function createDrop(instance) {&lt;br /&gt;
        const drop = document.createElement(&#039;div&#039;);&lt;br /&gt;
        drop.className = &#039;word-drop&#039;;&lt;br /&gt;
&lt;br /&gt;
        // 随机位置&lt;br /&gt;
        const leftPos = 5 + Math.random() * 90;&lt;br /&gt;
        drop.style.left = `${leftPos}vw`;&lt;br /&gt;
&lt;br /&gt;
        // 随机颜色&lt;br /&gt;
        const colors = instance.config.colors;&lt;br /&gt;
        drop.style.color = colors[Math.floor(Math.random() * colors.length)];&lt;br /&gt;
&lt;br /&gt;
        // 字体设置&lt;br /&gt;
        drop.style.fontSize = `${instance.config.size + Math.floor(Math.random() * 6)}px`;&lt;br /&gt;
        drop.style.fontFamily = instance.config.font;&lt;br /&gt;
&lt;br /&gt;
        // 随机词语&lt;br /&gt;
        const words = instance.config.words;&lt;br /&gt;
        drop.textContent = words[Math.floor(Math.random() * words.length)];&lt;br /&gt;
&lt;br /&gt;
        // 动画参数&lt;br /&gt;
        const baseSpeed = 10000 - (instance.config.speed * 800);&lt;br /&gt;
        const duration = (baseSpeed + Math.random() * 3000) / 1000;&lt;br /&gt;
        drop.style.animation = `wordFall ${duration}s linear infinite`;&lt;br /&gt;
&lt;br /&gt;
        document.body.appendChild(drop);&lt;br /&gt;
&lt;br /&gt;
        // 自动清理&lt;br /&gt;
        setTimeout(() =&amp;gt; {&lt;br /&gt;
            drop.remove();&lt;br /&gt;
        }, duration * 1000);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return {&lt;br /&gt;
        init: function () {&lt;br /&gt;
            mw.hook(&#039;wikipage.content&#039;).add(function ($content) {&lt;br /&gt;
                $content.find(&#039;.word-rain-widget&#039;).each(function () {&lt;br /&gt;
                    const $widget = $(this);&lt;br /&gt;
                    if ($widget.data(&#039;initialized&#039;)) return;&lt;br /&gt;
&lt;br /&gt;
                    // 初始化配置&lt;br /&gt;
                    const config = {&lt;br /&gt;
                        words: $widget.data(&#039;words&#039;).split(&#039;,&#039;),&lt;br /&gt;
                        colors: $widget.data(&#039;colors&#039;).split(&#039;,&#039;),&lt;br /&gt;
                        font: $widget.data(&#039;font&#039;),&lt;br /&gt;
                        size: parseInt($widget.data(&#039;size&#039;)) || 18,&lt;br /&gt;
                        speed: Math.min(10, Math.max(1, parseInt($widget.data(&#039;speed&#039;)) || 5)),&lt;br /&gt;
                        density: Math.min(50, Math.max(1, parseInt($widget.data(&#039;density&#039;)) || 30))&lt;br /&gt;
                    };&lt;br /&gt;
&lt;br /&gt;
                    // 生成实例ID&lt;br /&gt;
                    const instanceId = `wordrain-${Date.now()}-${Math.random().toString(36).substr(2, 5)}`;&lt;br /&gt;
&lt;br /&gt;
                    instances.set(instanceId, {&lt;br /&gt;
                        config: config,&lt;br /&gt;
                        interval: null,&lt;br /&gt;
                        active: false&lt;br /&gt;
                    });&lt;br /&gt;
&lt;br /&gt;
                    // 标记初始化&lt;br /&gt;
                    $widget.data(&#039;initialized&#039;, true)&lt;br /&gt;
                        .data(&#039;instance-id&#039;, instanceId);&lt;br /&gt;
&lt;br /&gt;
                    // 初始化按钮状态&lt;br /&gt;
                    const $btn = $widget.find(&#039;.word-rain-toggle&#039;);&lt;br /&gt;
                    $btn.data(&#039;instance-id&#039;, instanceId)&lt;br /&gt;
                        .attr(&#039;data-state&#039;, &#039;off&#039;)&lt;br /&gt;
                        .text($widget.data(&#039;button-off&#039;));&lt;br /&gt;
                });&lt;br /&gt;
            });&lt;br /&gt;
&lt;br /&gt;
            // 全局点击处理&lt;br /&gt;
            $(document).on(&#039;click&#039;, &#039;.word-rain-toggle&#039;, function () {&lt;br /&gt;
                const instanceId = $(this).data(&#039;instance-id&#039;);&lt;br /&gt;
                const instance = instances.get(instanceId);&lt;br /&gt;
&lt;br /&gt;
                if (!instance) return;&lt;br /&gt;
&lt;br /&gt;
                if (!instance.active) {&lt;br /&gt;
                    // 启动特效&lt;br /&gt;
                    instance.active = true;&lt;br /&gt;
                    instance.interval = setInterval(&lt;br /&gt;
                        () =&amp;gt; createDrop(instance),&lt;br /&gt;
                        Math.max(50, 1000 / instance.config.density)&lt;br /&gt;
                    );&lt;br /&gt;
&lt;br /&gt;
                    $(this).attr(&#039;data-state&#039;, &#039;on&#039;)&lt;br /&gt;
                        .text($(this).closest(&#039;.word-rain-widget&#039;).data(&#039;button-on&#039;));&lt;br /&gt;
                } else {&lt;br /&gt;
                    // 停止特效&lt;br /&gt;
                    instance.active = false;&lt;br /&gt;
                    clearInterval(instance.interval);&lt;br /&gt;
                    instance.interval = null;&lt;br /&gt;
                    document.querySelectorAll(&#039;.word-drop&#039;).forEach(drop =&amp;gt; drop.remove());&lt;br /&gt;
&lt;br /&gt;
                    $(this).attr(&#039;data-state&#039;, &#039;off&#039;)&lt;br /&gt;
                        .text($(this).closest(&#039;.word-rain-widget&#039;).data(&#039;button-off&#039;));&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
&lt;br /&gt;
            // 页面卸载时清理&lt;br /&gt;
            window.addEventListener(&#039;beforeunload&#039;, () =&amp;gt; {&lt;br /&gt;
                instances.forEach(instance =&amp;gt; {&lt;br /&gt;
                    clearInterval(instance.interval);&lt;br /&gt;
                    document.querySelectorAll(&#039;.word-drop&#039;).forEach(drop =&amp;gt; drop.remove());&lt;br /&gt;
                });&lt;br /&gt;
            });&lt;br /&gt;
&lt;br /&gt;
            // 添加核心样式&lt;br /&gt;
            addCoreStyles();&lt;br /&gt;
        },&lt;br /&gt;
&lt;br /&gt;
        // 公共方法&lt;br /&gt;
        getInstances: () =&amp;gt; instances,&lt;br /&gt;
        stopAll: () =&amp;gt; {&lt;br /&gt;
            instances.forEach(instance =&amp;gt; {&lt;br /&gt;
                clearInterval(instance.interval);&lt;br /&gt;
                instance.active = false;&lt;br /&gt;
            });&lt;br /&gt;
            document.querySelectorAll(&#039;.word-drop&#039;).forEach(drop =&amp;gt; drop.remove());&lt;br /&gt;
        }&lt;br /&gt;
    };&lt;br /&gt;
})();&lt;br /&gt;
&lt;br /&gt;
// 初始化&lt;br /&gt;
mw.loader.using([&#039;mediawiki.util&#039;, &#039;jquery&#039;]).then(function () {&lt;br /&gt;
    wordRainSystem.init();&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
/* Image Slider System */&lt;br /&gt;
window.imageSlider = (function () {&lt;br /&gt;
    &#039;use strict&#039;;&lt;br /&gt;
&lt;br /&gt;
    const sliders = new Map();&lt;br /&gt;
&lt;br /&gt;
    function initSlider(container) {&lt;br /&gt;
        const images = container.dataset.images.split(&#039;,&#039;);&lt;br /&gt;
        const captions = container.dataset.captions.split(&#039;,&#039;);&lt;br /&gt;
        const track = container.querySelector(&#039;.slider-track&#039;);&lt;br /&gt;
        let currentIndex = 0;&lt;br /&gt;
        let autoPlayInterval = null;&lt;br /&gt;
&lt;br /&gt;
        // 动态生成幻灯片&lt;br /&gt;
        images.forEach((image, index) =&amp;gt; {&lt;br /&gt;
            const slide = document.createElement(&#039;div&#039;);&lt;br /&gt;
            slide.className = &#039;slide-item&#039;;&lt;br /&gt;
            slide.style.backgroundImage = `url(${mw.config.get(&#039;wgScriptPath&#039;)}/images/${image.trim()})`;&lt;br /&gt;
&lt;br /&gt;
            const overlay = document.createElement(&#039;div&#039;);&lt;br /&gt;
            overlay.className = &#039;image-overlay&#039;;&lt;br /&gt;
            slide.appendChild(overlay);&lt;br /&gt;
&lt;br /&gt;
            const caption = document.createElement(&#039;div&#039;);&lt;br /&gt;
            caption.className = &#039;slide-caption&#039;;&lt;br /&gt;
            caption.textContent = (captions[index] || &#039;&#039;).replace(/[{}]/g, &#039;&#039;); // 移除描述中的{}&lt;br /&gt;
            slide.appendChild(caption);&lt;br /&gt;
&lt;br /&gt;
            // 确保每张图片的描述都能显示&lt;br /&gt;
            slide.addEventListener(&#039;mouseenter&#039;, () =&amp;gt; {&lt;br /&gt;
                overlay.style.opacity = &#039;0.7&#039;;&lt;br /&gt;
                caption.style.bottom = &#039;0&#039;;&lt;br /&gt;
            });&lt;br /&gt;
&lt;br /&gt;
            slide.addEventListener(&#039;mouseleave&#039;, () =&amp;gt; {&lt;br /&gt;
                overlay.style.opacity = &#039;0&#039;;&lt;br /&gt;
                caption.style.bottom = &#039;-50px&#039;;&lt;br /&gt;
            });&lt;br /&gt;
&lt;br /&gt;
            track.appendChild(slide);&lt;br /&gt;
        });&lt;br /&gt;
&lt;br /&gt;
        function goToSlide(index) {&lt;br /&gt;
            currentIndex = (index + images.length) % images.length;&lt;br /&gt;
            track.style.transform = `translateX(-${currentIndex * 100}%)`;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function startAutoPlay() {&lt;br /&gt;
            if (container.dataset.autoplay === &#039;1&#039;) {&lt;br /&gt;
                autoPlayInterval = setInterval(() =&amp;gt; {&lt;br /&gt;
                    goToSlide(currentIndex + 1);&lt;br /&gt;
                }, parseInt(container.dataset.speed));&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function stopAutoPlay() {&lt;br /&gt;
            clearInterval(autoPlayInterval);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // 事件绑定&lt;br /&gt;
        container.querySelector(&#039;.prev-slide&#039;).addEventListener(&#039;click&#039;, () =&amp;gt; goToSlide(currentIndex - 1));&lt;br /&gt;
        container.querySelector(&#039;.next-slide&#039;).addEventListener(&#039;click&#039;, () =&amp;gt; goToSlide(currentIndex + 1));&lt;br /&gt;
&lt;br /&gt;
        // 悬停暂停&lt;br /&gt;
        if (container.dataset.autoplay === &#039;1&#039;) {&lt;br /&gt;
            container.addEventListener(&#039;mouseenter&#039;, stopAutoPlay);&lt;br /&gt;
            container.addEventListener(&#039;mouseleave&#039;, startAutoPlay);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        startAutoPlay();&lt;br /&gt;
        sliders.set(container, { goToSlide, stopAutoPlay });&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return {&lt;br /&gt;
        init: function () {&lt;br /&gt;
            mw.hook(&#039;wikipage.content&#039;).add(function ($content) {&lt;br /&gt;
                $content.find(&#039;.js-slider-container&#039;).each(function () {&lt;br /&gt;
                    if (!this.dataset.initialized) {&lt;br /&gt;
                        this.dataset.initialized = true;&lt;br /&gt;
                        initSlider(this);&lt;br /&gt;
                    }&lt;br /&gt;
                });&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
    };&lt;br /&gt;
})();&lt;br /&gt;
&lt;br /&gt;
// 初始化&lt;br /&gt;
mw.loader.using(&#039;mediawiki.util&#039;).then(function () {&lt;br /&gt;
    imageSlider.init();&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Flat3D&lt;br /&gt;
/* 3D Image Hover System */&lt;br /&gt;
window.image3DSystem = (function () {&lt;br /&gt;
    &#039;use strict&#039;;&lt;br /&gt;
&lt;br /&gt;
    function initImageCards(container) {&lt;br /&gt;
        const images = container.dataset.images.split(&#039;,&#039;);&lt;br /&gt;
        const captions = container.dataset.captions.split(&#039;,&#039;);&lt;br /&gt;
        const grid = container.querySelector(&#039;.image-grid&#039;);&lt;br /&gt;
&lt;br /&gt;
        images.forEach((image, index) =&amp;gt; {&lt;br /&gt;
            const card = document.createElement(&#039;div&#039;);&lt;br /&gt;
            card.className = &#039;image-card&#039;;&lt;br /&gt;
&lt;br /&gt;
            const content = document.createElement(&#039;div&#039;);&lt;br /&gt;
            content.className = &#039;image-content&#039;;&lt;br /&gt;
            content.style.backgroundImage = `url(${mw.config.get(&#039;wgScriptPath&#039;)}/images/${image.trim()})`;&lt;br /&gt;
&lt;br /&gt;
            const caption = document.createElement(&#039;div&#039;);&lt;br /&gt;
            caption.className = &#039;caption&#039;;&lt;br /&gt;
&lt;br /&gt;
            // 解析Fandom内链&lt;br /&gt;
            const captionText = (captions[index] || &#039;&#039;).replace(/[{}]/g, &#039;&#039;);&lt;br /&gt;
            const linkMatch = captionText.match(/\[\[(.*?)\]\]/);&lt;br /&gt;
            if (linkMatch) {&lt;br /&gt;
                const linkParts = linkMatch[1].split(&#039;|&#039;);&lt;br /&gt;
                const linkText = linkParts[1] || linkParts[0];&lt;br /&gt;
                const linkHref = mw.util.getUrl(linkParts[0]);&lt;br /&gt;
&lt;br /&gt;
                const link = document.createElement(&#039;a&#039;);&lt;br /&gt;
                link.href = linkHref;&lt;br /&gt;
                link.textContent = linkText;&lt;br /&gt;
                link.style.color = &#039;#fff&#039;;&lt;br /&gt;
                link.style.textDecoration = &#039;none&#039;;&lt;br /&gt;
                caption.appendChild(link);&lt;br /&gt;
            } else {&lt;br /&gt;
                caption.textContent = captionText;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            card.appendChild(content);&lt;br /&gt;
            card.appendChild(caption);&lt;br /&gt;
            grid.appendChild(card);&lt;br /&gt;
&lt;br /&gt;
            // 性能优化&lt;br /&gt;
            card.style.willChange = &#039;transform&#039;;&lt;br /&gt;
        });&lt;br /&gt;
&lt;br /&gt;
        // 移动端优化&lt;br /&gt;
        if (&#039;ontouchstart&#039; in window) {&lt;br /&gt;
            grid.querySelectorAll(&#039;.image-card&#039;).forEach(card =&amp;gt; {&lt;br /&gt;
                card.addEventListener(&#039;click&#039;, function () {&lt;br /&gt;
                    this.classList.toggle(&#039;hover-active&#039;);&lt;br /&gt;
                });&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return {&lt;br /&gt;
        init: function () {&lt;br /&gt;
            mw.hook(&#039;wikipage.content&#039;).add(function ($content) {&lt;br /&gt;
                $content.find(&#039;.flat-3d-container&#039;).each(function () {&lt;br /&gt;
                    if (!this.dataset.initialized) {&lt;br /&gt;
                        this.dataset.initialized = true;&lt;br /&gt;
                        initImageCards(this);&lt;br /&gt;
                    }&lt;br /&gt;
                });&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
    };&lt;br /&gt;
})();&lt;br /&gt;
&lt;br /&gt;
// 初始化&lt;br /&gt;
mw.loader.using(&#039;mediawiki.util&#039;).then(function () {&lt;br /&gt;
    image3DSystem.init();&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
// Fandom Compass图标&lt;br /&gt;
$(&#039;.fandom-community-header__community-name-wrapper&#039;).append(&lt;br /&gt;
    $(&#039;&amp;lt;a/&amp;gt;&#039;).addClass(&#039;compass-wiki-badge&#039;).attr(&#039;href&#039;, &#039;//community.fandom.com/wiki/Fandom_Compass&#039;).append(&lt;br /&gt;
        $(&#039;&amp;lt;img/&amp;gt;&#039;).css(&#039;height&#039;, &#039;70px&#039;).css(&#039;position&#039;, &#039;relative&#039;).css(&#039;top&#039;, &#039;20px&#039;)&lt;br /&gt;
            .attr(&#039;src&#039;, &#039;https://static.wikia.nocookie.net/backrooms/images/c/ca/Fandom_Compass_dark.png/revision/latest?cb=20250412193710&amp;amp;format=original&amp;amp;path-prefix=zh&#039;).attr(&#039;title&#039;, &#039;本站点已是Fandom Compass计划的成员之一。&#039;)&lt;br /&gt;
    ));&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
$(document).ready(function () {&lt;br /&gt;
    mw.hook(&#039;wikipage.content&#039;).add(function ($content) {&lt;br /&gt;
        // 为每个播放器创建独立的控制器&lt;br /&gt;
        $content.find(&#039;.player-container&#039;).each(function () {&lt;br /&gt;
            const $player = $(this);&lt;br /&gt;
            const playerState = {&lt;br /&gt;
                isPlaying: false,&lt;br /&gt;
                isDragging: false,&lt;br /&gt;
                progress: $player.find(&#039;.progress&#039;),&lt;br /&gt;
                playBtn: $player.find(&#039;.play-btn&#039;),&lt;br /&gt;
                audio: new Audio($player.data(&#039;audio-src&#039;)),&lt;br /&gt;
                volumeControl: $player.find(&#039;.volume-control&#039;),&lt;br /&gt;
                volumeContainer: $player.find(&#039;.volume-slider-container&#039;),&lt;br /&gt;
                volumeFill: $player.find(&#039;.volume-slider-fill&#039;),&lt;br /&gt;
                volumeThumb: $player.find(&#039;.volume-slider-thumb&#039;),&lt;br /&gt;
                volumeIcon: $player.find(&#039;.volume-icon&#039;)&lt;br /&gt;
            };&lt;br /&gt;
&lt;br /&gt;
            // 设置专辑封面&lt;br /&gt;
            const albumArt = $player.find(&#039;.album-art&#039;);&lt;br /&gt;
            albumArt.css(&#039;background-image&#039;, `url(${$player.data(&#039;album-art&#039;)})`);&lt;br /&gt;
            // 播放/暂停控制&lt;br /&gt;
            playerState.playBtn.on(&#039;click&#039;, function () {&lt;br /&gt;
                if (playerState.isPlaying) {&lt;br /&gt;
                    playerState.audio.pause();&lt;br /&gt;
                    playerState.isPlaying = false;&lt;br /&gt;
                    $(this).text(&#039;▶&#039;);&lt;br /&gt;
                } else {&lt;br /&gt;
                    playerState.audio.play();&lt;br /&gt;
                    playerState.isPlaying = true;&lt;br /&gt;
                    $(this).text(&#039;⏸&#039;);&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
            // 进度更新&lt;br /&gt;
            $(playerState.audio).on(&#039;timeupdate&#039;, function () {&lt;br /&gt;
                const percentage = (this.currentTime / this.duration) * 100;&lt;br /&gt;
                playerState.progress.css(&#039;width&#039;, percentage + &#039;%&#039;);&lt;br /&gt;
            });&lt;br /&gt;
            // 进度条点击&lt;br /&gt;
            $player.find(&#039;.progress-bar&#039;).on(&#039;click&#039;, function (e) {&lt;br /&gt;
                const percent = e.offsetX / $(this).width();&lt;br /&gt;
                playerState.audio.currentTime = percent * playerState.audio.duration;&lt;br /&gt;
            });&lt;br /&gt;
            // 音量控制函数&lt;br /&gt;
            function updateVolume(e) {&lt;br /&gt;
                const rect = playerState.volumeContainer[0].getBoundingClientRect();&lt;br /&gt;
                const x = e.clientX - rect.left;&lt;br /&gt;
                const percentage = Math.max(0, Math.min(100, (x / rect.width) * 100));&lt;br /&gt;
&lt;br /&gt;
                playerState.volumeFill.css(&#039;transform&#039;, `scaleX(${percentage / 100})`);&lt;br /&gt;
                playerState.volumeThumb.css(&#039;right&#039;, `${100 - percentage}%`);&lt;br /&gt;
                playerState.audio.volume = percentage / 100;&lt;br /&gt;
                updateVolumeIcon(percentage);&lt;br /&gt;
            }&lt;br /&gt;
            // 音量拖动事件&lt;br /&gt;
            playerState.volumeContainer.on(&#039;mousedown&#039;, function (e) {&lt;br /&gt;
                playerState.isDragging = true;&lt;br /&gt;
                updateVolume(e);&lt;br /&gt;
            });&lt;br /&gt;
            $(document).on(&#039;mousemove&#039;, function (e) {&lt;br /&gt;
                if (playerState.isDragging) {&lt;br /&gt;
                    updateVolume(e);&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
            $(document).on(&#039;mouseup&#039;, function () {&lt;br /&gt;
                playerState.isDragging = false;&lt;br /&gt;
            });&lt;br /&gt;
            // 更新音量图标&lt;br /&gt;
            function updateVolumeIcon(value) {&lt;br /&gt;
                if (value == 0) {&lt;br /&gt;
                    playerState.volumeIcon.text(&#039;🔇&#039;);&lt;br /&gt;
                } else if (value &amp;lt; 50) {&lt;br /&gt;
                    playerState.volumeIcon.text(&#039;🔉&#039;);&lt;br /&gt;
                } else {&lt;br /&gt;
                    playerState.volumeIcon.text(&#039;🔊&#039;);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            // 音量图标双击事件&lt;br /&gt;
            playerState.volumeIcon.on(&#039;dblclick&#039;, function () {&lt;br /&gt;
                if (playerState.audio.volume &amp;gt; 0) {&lt;br /&gt;
                    playerState.audio.volume = 0;&lt;br /&gt;
                    playerState.volumeFill.css(&#039;transform&#039;, &#039;scaleX(0)&#039;);&lt;br /&gt;
                    playerState.volumeThumb.css(&#039;right&#039;, &#039;100%&#039;);&lt;br /&gt;
                    playerState.volumeIcon.text(&#039;🔇&#039;);&lt;br /&gt;
                } else {&lt;br /&gt;
                    playerState.audio.volume = 1;&lt;br /&gt;
                    playerState.volumeFill.css(&#039;transform&#039;, &#039;scaleX(1)&#039;);&lt;br /&gt;
                    playerState.volumeThumb.css(&#039;right&#039;, &#039;0%&#039;);&lt;br /&gt;
                    playerState.volumeIcon.text(&#039;🔊&#039;);&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
        });&lt;br /&gt;
    });&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
// 投票偏移量&lt;br /&gt;
(function () {&lt;br /&gt;
    if (typeof jQuery === &#039;undefined&#039;) return;&lt;br /&gt;
    var $ = jQuery;&lt;br /&gt;
    var _getJSON = $.getJSON;&lt;br /&gt;
    function num(x) {&lt;br /&gt;
        if (x === null || x === undefined) return 0;&lt;br /&gt;
        var s = String(x).replace(/,/g, &#039;&#039;).trim();&lt;br /&gt;
        if (s === &#039;&#039;) return 0;&lt;br /&gt;
        var n = parseFloat(s);&lt;br /&gt;
        return isNaN(n) ? 0 : n;&lt;br /&gt;
    }&lt;br /&gt;
    function collectOffsetsForThread(threadId) {&lt;br /&gt;
        var offsets = [];&lt;br /&gt;
        var totalOffset = 0;&lt;br /&gt;
        $(&#039;tr[data-vote-id=&amp;quot;&#039; + threadId + &#039;&amp;quot;]&#039;).each(function () {&lt;br /&gt;
            var $tr = $(this);&lt;br /&gt;
            var $table = $tr.closest(&#039;table&#039;);&lt;br /&gt;
            if ($table.hasClass(&#039;talescon-table&#039;)) {&lt;br /&gt;
                var ch = this.children;&lt;br /&gt;
                var o0 = num(ch[2] &amp;amp;&amp;amp; ch[2].textContent);&lt;br /&gt;
                var o1 = num(ch[3] &amp;amp;&amp;amp; ch[3].textContent);&lt;br /&gt;
                var o2 = num(ch[4] &amp;amp;&amp;amp; ch[4].textContent);&lt;br /&gt;
                offsets[0] = (offsets[0] || 0) + o0;&lt;br /&gt;
                offsets[1] = (offsets[1] || 0) + o1;&lt;br /&gt;
                offsets[2] = (offsets[2] || 0) + o2;&lt;br /&gt;
                totalOffset += (o0 + o1 + o2);&lt;br /&gt;
            } else if ($table.hasClass(&#039;themedcon4-table&#039;)) {&lt;br /&gt;
                var cells = this.children;&lt;br /&gt;
                for (var i = 0; i &amp;lt;= 4; i++) {&lt;br /&gt;
                    var idx = 3 + i;&lt;br /&gt;
                    var o = num(cells[idx] &amp;amp;&amp;amp; cells[idx].textContent);&lt;br /&gt;
                    offsets[i] = (offsets[i] || 0) + o;&lt;br /&gt;
                    totalOffset += o;&lt;br /&gt;
                }&lt;br /&gt;
            } else {&lt;br /&gt;
                var i = 0;&lt;br /&gt;
                while ($tr.attr(&#039;data-offset-&#039; + i) !== undefined) {&lt;br /&gt;
                    var o = num($tr.attr(&#039;data-offset-&#039; + i));&lt;br /&gt;
                    offsets[i] = (offsets[i] || 0) + o;&lt;br /&gt;
                    totalOffset += o;&lt;br /&gt;
                    i++;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        });&lt;br /&gt;
        return { offsets: offsets, totalOffset: totalOffset };&lt;br /&gt;
    }&lt;br /&gt;
    $.getJSON = function () {&lt;br /&gt;
        var args = Array.prototype.slice.call(arguments);&lt;br /&gt;
        var dataArg = null;&lt;br /&gt;
        if (args.length &amp;gt;= 2 &amp;amp;&amp;amp; typeof args[1] === &#039;object&#039;) {&lt;br /&gt;
            dataArg = args[1];&lt;br /&gt;
        } else if (args.length === 1 &amp;amp;&amp;amp; typeof args[0] === &#039;object&#039;) {&lt;br /&gt;
            dataArg = args[0];&lt;br /&gt;
        }&lt;br /&gt;
        var jq = _getJSON.apply($, args);&lt;br /&gt;
        try {&lt;br /&gt;
            if (dataArg &amp;amp;&amp;amp; dataArg.controller === &#039;DiscussionThread&#039; &amp;amp;&amp;amp; dataArg.method === &#039;getThread&#039; &amp;amp;&amp;amp; dataArg.threadId) {&lt;br /&gt;
                jq.done(function (result) {&lt;br /&gt;
                    try {&lt;br /&gt;
                        if (!result || !result.poll || !Array.isArray(result.poll.answers)) return;&lt;br /&gt;
                        var threadId = String(dataArg.threadId);&lt;br /&gt;
                        var collected = collectOffsetsForThread(threadId);&lt;br /&gt;
                        var offsets = collected.offsets || [];&lt;br /&gt;
                        var totalOffset = collected.totalOffset || 0;&lt;br /&gt;
                        var sumAdded = 0;&lt;br /&gt;
                        for (var i = 0; i &amp;lt; result.poll.answers.length; i++) {&lt;br /&gt;
                            var add = num(offsets[i]);&lt;br /&gt;
                            if (add) {&lt;br /&gt;
                                result.poll.answers[i].votes = (num(result.poll.answers[i].votes) + add);&lt;br /&gt;
                                sumAdded += add;&lt;br /&gt;
                            }&lt;br /&gt;
                        }&lt;br /&gt;
                        if (sumAdded) {&lt;br /&gt;
                            result.poll.totalVotes = num(result.poll.totalVotes) + sumAdded;&lt;br /&gt;
                        }&lt;br /&gt;
                    } catch (e) {&lt;br /&gt;
                        console.error(&#039;vote-offset-interceptor inner error&#039;, e);&lt;br /&gt;
                    }&lt;br /&gt;
                });&lt;br /&gt;
            }&lt;br /&gt;
        } catch (e) {&lt;br /&gt;
            console.error(&#039;vote-offset-interceptor attach error&#039;, e);&lt;br /&gt;
        }&lt;br /&gt;
        return jq;&lt;br /&gt;
    };&lt;br /&gt;
})();&lt;br /&gt;
&lt;br /&gt;
// 投票&lt;br /&gt;
var config = config || mw.config.get();&lt;br /&gt;
mw.hook(&amp;quot;wikipage.content&amp;quot;).add(function () {&lt;br /&gt;
    if (![&amp;quot;view&amp;quot;, &amp;quot;edit&amp;quot;, &amp;quot;submit&amp;quot;].includes(config.wgAction)) return;&lt;br /&gt;
    if (window.NervieJS) return;&lt;br /&gt;
    window.NervieJS = true;&lt;br /&gt;
    mw.loader.load(&amp;quot;mediawiki.util&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    $(&amp;quot;.talescon-table tbody tr&amp;quot;).each(function () {&lt;br /&gt;
        var thisElement = this;&lt;br /&gt;
        $.getJSON(mw.util.wikiScript(&amp;quot;wikia&amp;quot;), {&lt;br /&gt;
            controller: &amp;quot;DiscussionThread&amp;quot;,&lt;br /&gt;
            method: &amp;quot;getThread&amp;quot;,&lt;br /&gt;
            format: &amp;quot;json&amp;quot;,&lt;br /&gt;
            threadId: this.getAttribute(&amp;quot;data-vote-id&amp;quot;)&lt;br /&gt;
        }).done(function (result) {&lt;br /&gt;
            thisElement.children[2].textContent = result.poll.answers[0].votes;&lt;br /&gt;
            thisElement.children[3].textContent = result.poll.answers[1].votes;&lt;br /&gt;
            thisElement.children[4].textContent = result.poll.answers[2].votes;&lt;br /&gt;
            thisElement.children[5].textContent = ((result.poll.answers[0].votes - result.poll.answers[2].votes) / result.poll.totalVotes).toFixed(4);&lt;br /&gt;
        });&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    $(&amp;quot;.themedcon4-table tbody tr&amp;quot;).each(function () {&lt;br /&gt;
        var cells = this.children;&lt;br /&gt;
        $.getJSON(mw.util.wikiScript(&amp;quot;wikia&amp;quot;), {&lt;br /&gt;
            controller: &amp;quot;DiscussionThread&amp;quot;,&lt;br /&gt;
            method: &amp;quot;getThread&amp;quot;,&lt;br /&gt;
            format: &amp;quot;json&amp;quot;,&lt;br /&gt;
            threadId: this.getAttribute(&amp;quot;data-vote-id&amp;quot;)&lt;br /&gt;
        }).done(function (result) {&lt;br /&gt;
            cells[3].textContent = result.poll.answers[0].votes;&lt;br /&gt;
            cells[4].textContent = result.poll.answers[1].votes;&lt;br /&gt;
            cells[5].textContent = result.poll.answers[2].votes;&lt;br /&gt;
            cells[6].textContent = result.poll.answers[3].votes;&lt;br /&gt;
            cells[7].textContent = result.poll.answers[4].votes;&lt;br /&gt;
            cells[8].textContent = (&lt;br /&gt;
                (result.poll.answers[0].votes&lt;br /&gt;
                    + result.poll.answers[1].votes / 2&lt;br /&gt;
                    - result.poll.answers[3].votes / 2&lt;br /&gt;
                    - result.poll.answers[4].votes) / result.poll.totalVotes&lt;br /&gt;
            ).toFixed(4);&lt;br /&gt;
        });&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    $.getJSON(mw.util.wikiScript(&amp;quot;index&amp;quot;), {&lt;br /&gt;
        title: &amp;quot;User:HyperNervie/竞赛2.json&amp;quot;,&lt;br /&gt;
        action: &amp;quot;raw&amp;quot;,&lt;br /&gt;
        ctype: &amp;quot;application/json&amp;quot;&lt;br /&gt;
    }).done(function (result, status) {&lt;br /&gt;
        if (status != &amp;quot;success&amp;quot; || typeof (result) != &amp;quot;object&amp;quot;) return;&lt;br /&gt;
        var entries_loaded = 0;&lt;br /&gt;
        mw.hook(&amp;quot;pollLoader.loaded&amp;quot;).add(function () {&lt;br /&gt;
            if (++entries_loaded &amp;lt; result.length) return;&lt;br /&gt;
            result.sort(function (a, b) { return b.rating - a.rating; });&lt;br /&gt;
            $(&amp;quot;table.contest-results tbody&amp;quot;).empty();&lt;br /&gt;
            result.forEach(function (entry, place) {&lt;br /&gt;
                $(&amp;quot;table.contest-results tbody&amp;quot;).append(&lt;br /&gt;
                    &amp;quot;&amp;lt;tr&amp;gt;&amp;quot; +&lt;br /&gt;
                    &amp;quot;&amp;lt;td&amp;gt;&amp;quot; + (place + 1) + &amp;quot;&amp;lt;/td&amp;gt;&amp;quot; +&lt;br /&gt;
                    &amp;quot;&amp;lt;td&amp;gt;&amp;quot; +&lt;br /&gt;
                    &#039;&amp;lt;a href=&amp;quot;&#039; + mw.util.getUrl(entry.name) + &#039;&amp;quot; &#039; +&lt;br /&gt;
                    &#039;title=&amp;quot;&#039; + entry.name + &#039;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                    (entry.title || entry.name) +&lt;br /&gt;
                    &amp;quot;&amp;lt;/a&amp;gt;&amp;quot; +&lt;br /&gt;
                    &amp;quot;&amp;lt;/td&amp;gt;&amp;quot; +&lt;br /&gt;
                    &amp;quot;&amp;lt;td&amp;gt;&amp;quot; +&lt;br /&gt;
                    &#039;&amp;lt;a href=&amp;quot;&#039; + mw.util.getUrl(&amp;quot;User:&amp;quot; + entry.author) + &#039;&amp;quot; &#039; +&lt;br /&gt;
                    &#039;title=&amp;quot;User:&#039; + entry.author + &#039;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                    entry.author +&lt;br /&gt;
                    &amp;quot;&amp;lt;/a&amp;gt;&amp;quot; +&lt;br /&gt;
                    &amp;quot;&amp;lt;/td&amp;gt;&amp;quot; +&lt;br /&gt;
                    &amp;quot;&amp;lt;td&amp;gt;&amp;quot; + entry.upvote + &amp;quot;&amp;lt;/td&amp;gt;&amp;quot; +&lt;br /&gt;
                    &amp;quot;&amp;lt;td&amp;gt;&amp;quot; + entry.novote + &amp;quot;&amp;lt;/td&amp;gt;&amp;quot; +&lt;br /&gt;
                    &amp;quot;&amp;lt;td&amp;gt;&amp;quot; + entry.downvote + &amp;quot;&amp;lt;/td&amp;gt;&amp;quot; +&lt;br /&gt;
                    &amp;quot;&amp;lt;td&amp;gt;&amp;quot; + entry.rating.toFixed(4) + &amp;quot;&amp;lt;/td&amp;gt;&amp;quot; +&lt;br /&gt;
                    &amp;quot;&amp;lt;/tr&amp;gt;&amp;quot;&lt;br /&gt;
                );&lt;br /&gt;
            });&lt;br /&gt;
            $(&amp;quot;table.contest-results&amp;quot;).makeCollapsible();&lt;br /&gt;
        });&lt;br /&gt;
        result.forEach(function (entry) {&lt;br /&gt;
            $.getJSON(mw.util.wikiScript(&amp;quot;wikia&amp;quot;), {&lt;br /&gt;
                controller: &amp;quot;DiscussionThread&amp;quot;,&lt;br /&gt;
                method: &amp;quot;getThread&amp;quot;,&lt;br /&gt;
                format: &amp;quot;json&amp;quot;,&lt;br /&gt;
                threadId: entry.poll_id&lt;br /&gt;
            }).done(function (result, status) {&lt;br /&gt;
                if (status != &amp;quot;success&amp;quot; || typeof (result) != &amp;quot;object&amp;quot;) return;&lt;br /&gt;
                entry.upvote = result.poll.answers[0].votes;&lt;br /&gt;
                entry.novote = result.poll.answers[1].votes;&lt;br /&gt;
                entry.downvote = result.poll.answers[2].votes;&lt;br /&gt;
                entry.rating = (entry.upvote - entry.downvote) / result.poll.totalVotes;&lt;br /&gt;
                mw.hook(&amp;quot;pollLoader.loaded&amp;quot;).fire();&lt;br /&gt;
            });&lt;br /&gt;
        });&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    $.getJSON(mw.util.wikiScript(&amp;quot;api&amp;quot;), {&lt;br /&gt;
        action: &amp;quot;query&amp;quot;,&lt;br /&gt;
        formatversion: 2,&lt;br /&gt;
        format: &amp;quot;json&amp;quot;,&lt;br /&gt;
        meta: &amp;quot;siteinfo&amp;quot;,&lt;br /&gt;
        siprop: &amp;quot;interwikimap&amp;quot;,&lt;br /&gt;
        siinlanguagecode: config.wgUserVariant&lt;br /&gt;
    }, function (result, status) {&lt;br /&gt;
        if (status != &amp;quot;success&amp;quot; || typeof (result) != &amp;quot;object&amp;quot; || !result.batchcomplete) return;&lt;br /&gt;
        $(&amp;quot;table.global-interwiki tbody&amp;quot;).empty();&lt;br /&gt;
        $(&amp;quot;table.local-interwiki tbody&amp;quot;).empty();&lt;br /&gt;
        $(&amp;quot;table.interlang tbody&amp;quot;).empty();&lt;br /&gt;
        result.query.interwikimap.forEach(function (obj) {&lt;br /&gt;
            if (!obj.local)&lt;br /&gt;
                $(&amp;quot;table.global-interwiki tbody&amp;quot;).append(&lt;br /&gt;
                    &amp;quot;&amp;lt;tr&amp;gt;&amp;quot; +&lt;br /&gt;
                    &amp;quot;&amp;lt;td&amp;gt;&amp;quot; + obj.prefix.toLowerCase() + &amp;quot;&amp;lt;/td&amp;gt;&amp;quot; +&lt;br /&gt;
                    &amp;quot;&amp;lt;td&amp;gt;&amp;quot; + obj.url + &amp;quot;&amp;lt;/td&amp;gt;&amp;quot; +&lt;br /&gt;
                    &amp;quot;&amp;lt;/tr&amp;gt;&amp;quot;&lt;br /&gt;
                );&lt;br /&gt;
            else if (obj.language)&lt;br /&gt;
                $(&amp;quot;table.interlang tbody&amp;quot;).append(&lt;br /&gt;
                    &amp;quot;&amp;lt;tr&amp;gt;&amp;quot; +&lt;br /&gt;
                    &amp;quot;&amp;lt;td&amp;gt;&amp;quot; + obj.prefix + &amp;quot;&amp;lt;/td&amp;gt;&amp;quot; +&lt;br /&gt;
                    &amp;quot;&amp;lt;td&amp;gt;&amp;quot; + obj.language + &amp;quot;&amp;lt;/td&amp;gt;&amp;quot; +&lt;br /&gt;
                    &amp;quot;&amp;lt;td&amp;gt;&amp;quot; + obj.url + &amp;quot;&amp;lt;/td&amp;gt;&amp;quot; +&lt;br /&gt;
                    &amp;quot;&amp;lt;/tr&amp;gt;&amp;quot;&lt;br /&gt;
                );&lt;br /&gt;
            else&lt;br /&gt;
                $(&amp;quot;table.local-interwiki tbody&amp;quot;).append(&lt;br /&gt;
                    &amp;quot;&amp;lt;tr&amp;gt;&amp;quot; +&lt;br /&gt;
                    &amp;quot;&amp;lt;td&amp;gt;&amp;quot; + obj.prefix.toLowerCase() + &amp;quot;&amp;lt;/td&amp;gt;&amp;quot; +&lt;br /&gt;
                    &amp;quot;&amp;lt;td&amp;gt;&amp;quot; + obj.url + &amp;quot;&amp;lt;/td&amp;gt;&amp;quot; +&lt;br /&gt;
                    &amp;quot;&amp;lt;/tr&amp;gt;&amp;quot;&lt;br /&gt;
                );&lt;br /&gt;
        });&lt;br /&gt;
        $(&amp;quot;table.global-interwiki&amp;quot;).makeCollapsible();&lt;br /&gt;
        $(&amp;quot;table.local-interwiki&amp;quot;).makeCollapsible();&lt;br /&gt;
        $(&amp;quot;table.interlang&amp;quot;).makeCollapsible();&lt;br /&gt;
    });&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
// 这是一个假的用户登录框，仅仅用于页面的演出效果，这意味着这个用户登陆框不会记录用户的任何密码或用户名信息，也不会对用户的信息安全造成任何威胁。使用这些代码的页面创建者会在当页自定义一个假的用户名和密码。如果用户不想，这个假的用户登录框不会泄露用户的任何真实信息。&lt;br /&gt;
// This is a fake user login From, only used for the page&#039;s visual effect. It means that this login box won&#039;t record any user&#039;s password or username information, nor will it pose any threat to user information security. The page creator using this code can customize a fake username and password on the page. If users don&#039;t want to, this fake login Form won&#039;t leak any real information about them.&lt;br /&gt;
// This has NOTHING to do with Fandom Login Forms.&lt;br /&gt;
mw.loader.using([&#039;mediawiki.util&#039;]).then(function () {&lt;br /&gt;
  var THEME_KEYS = {&lt;br /&gt;
    bg: &#039;--fl-bg&#039;,&lt;br /&gt;
    panel: &#039;--fl-panel&#039;,&lt;br /&gt;
    accent: &#039;--fl-accent&#039;,&lt;br /&gt;
    text: &#039;--fl-text&#039;,&lt;br /&gt;
    muted: &#039;--fl-muted&#039;,&lt;br /&gt;
    danger: &#039;--fl-danger&#039;,&lt;br /&gt;
    border: &#039;--fl-border&#039;,&lt;br /&gt;
    radius: &#039;--fl-radius&#039;,&lt;br /&gt;
    font: &#039;--fl-font&#039;,&lt;br /&gt;
    titleSize: &#039;--fl-title-size&#039;,&lt;br /&gt;
    width: &#039;--fl-width&#039;,&lt;br /&gt;
    pad: &#039;--fl-pad&#039;,&lt;br /&gt;
    inputBg: &#039;--fl-input-bg&#039;,&lt;br /&gt;
    inputBorder: &#039;--fl-input-border&#039;,&lt;br /&gt;
    buttonText: &#039;--fl-button-text&#039;&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
  function addStyles() {&lt;br /&gt;
    if (document.getElementById(&#039;fandom-login-gate-style&#039;)) return;&lt;br /&gt;
    var style = document.createElement(&#039;style&#039;);&lt;br /&gt;
    style.id = &#039;fandom-login-gate-style&#039;;&lt;br /&gt;
    style.textContent = [&lt;br /&gt;
      &#039;.fandom-login-gate{&#039;,&lt;br /&gt;
      &#039;  --fl-bg:#1a1f2e;&#039;,&lt;br /&gt;
      &#039;  --fl-panel:#243044;&#039;,&lt;br /&gt;
      &#039;  --fl-accent:#5b9fd4;&#039;,&lt;br /&gt;
      &#039;  --fl-text:#e8eef5;&#039;,&lt;br /&gt;
      &#039;  --fl-muted:#9aa8bc;&#039;,&lt;br /&gt;
      &#039;  --fl-danger:#e07070;&#039;,&lt;br /&gt;
      &#039;  --fl-border:1px solid #3a4a63;&#039;,&lt;br /&gt;
      &#039;  --fl-radius:0;&#039;,&lt;br /&gt;
      &#039;  --fl-font:Georgia,&amp;quot;Noto Serif SC&amp;quot;,serif;&#039;,&lt;br /&gt;
      &#039;  --fl-title-size:1.35em;&#039;,&lt;br /&gt;
      &#039;  --fl-width:420px;&#039;,&lt;br /&gt;
      &#039;  --fl-pad:1.5em 1.4em 1.3em;&#039;,&lt;br /&gt;
      &#039;  --fl-input-bg:var(--fl-panel);&#039;,&lt;br /&gt;
      &#039;  --fl-input-border:1px solid #4a5d7a;&#039;,&lt;br /&gt;
      &#039;  --fl-button-text:#0f1724;&#039;,&lt;br /&gt;
      &#039;  max-width:var(--fl-width);&#039;,&lt;br /&gt;
      &#039;  margin:1.5em auto;&#039;,&lt;br /&gt;
      &#039;  font-family:var(--fl-font);&#039;,&lt;br /&gt;
      &#039;}&#039;,&lt;br /&gt;
      &#039;.fandom-login-panel{&#039;,&lt;br /&gt;
      &#039;  background:linear-gradient(160deg,color-mix(in srgb,var(--fl-panel) 85%,white),var(--fl-bg));&#039;,&lt;br /&gt;
      &#039;  border:var(--fl-border);&#039;,&lt;br /&gt;
      &#039;  border-radius:var(--fl-radius);&#039;,&lt;br /&gt;
      &#039;  padding:var(--fl-pad);&#039;,&lt;br /&gt;
      &#039;  color:var(--fl-text);&#039;,&lt;br /&gt;
      &#039;}&#039;,&lt;br /&gt;
      &#039;.fandom-login-title{font-size:var(--fl-title-size);letter-spacing:.04em;margin-bottom:1em;text-align:center}&#039;,&lt;br /&gt;
      &#039;.fandom-login-form label{display:block;font-size:.85em;color:var(--fl-muted);margin:.75em 0 .35em}&#039;,&lt;br /&gt;
      &#039;.fandom-login-form input{&#039;,&lt;br /&gt;
      &#039;  width:100%;box-sizing:border-box;&#039;,&lt;br /&gt;
      &#039;  background:var(--fl-input-bg);&#039;,&lt;br /&gt;
      &#039;  border:var(--fl-input-border);&#039;,&lt;br /&gt;
      &#039;  border-radius:var(--fl-radius);&#039;,&lt;br /&gt;
      &#039;  color:var(--fl-text);&#039;,&lt;br /&gt;
      &#039;  padding:.55em .7em;outline:none;&#039;,&lt;br /&gt;
      &#039;  font-family:inherit;&#039;,&lt;br /&gt;
      &#039;}&#039;,&lt;br /&gt;
      &#039;.fandom-login-form input:focus{border-color:var(--fl-accent)}&#039;,&lt;br /&gt;
      &#039;.fandom-login-form button{&#039;,&lt;br /&gt;
      &#039;  display:block;width:100%;margin-top:1.1em;padding:.65em;&#039;,&lt;br /&gt;
      &#039;  background:var(--fl-accent);border:0;&#039;,&lt;br /&gt;
      &#039;  border-radius:var(--fl-radius);&#039;,&lt;br /&gt;
      &#039;  color:var(--fl-button-text);font-weight:700;cursor:pointer;&#039;,&lt;br /&gt;
      &#039;  font-family:inherit;&#039;,&lt;br /&gt;
      &#039;}&#039;,&lt;br /&gt;
      &#039;.fandom-login-form button:hover{filter:brightness(1.08)}&#039;,&lt;br /&gt;
      &#039;.fandom-login-error{color:var(--fl-danger);text-align:center;margin:.8em 0 0;font-size:.9em}&#039;,&lt;br /&gt;
      &#039;.fl-expect-user,.fl-expect-pass,.fl-theme{display:none!important}&#039;,&lt;br /&gt;
      &#039;.fandom-login-gate:not(.is-unlocked) .fandom-login-secret{display:none!important}&#039;,&lt;br /&gt;
      &#039;.fandom-login-gate.is-unlocked .fandom-login-panel{display:none!important}&#039;,&lt;br /&gt;
      &#039;.fandom-login-gate.is-unlocked .fandom-login-secret{display:block!important}&#039;&lt;br /&gt;
    ].join(&#039;&#039;);&lt;br /&gt;
    document.head.appendChild(style);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function readCred($gate, name) {&lt;br /&gt;
    var $node = $gate.find(&#039;.fl-expect-&#039; + name).first();&lt;br /&gt;
    if ($node.length) return $.trim($node.text());&lt;br /&gt;
    return String($gate.attr(&#039;data-&#039; + name) || &#039;&#039;);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function applyTheme($gate) {&lt;br /&gt;
    var el = $gate.get(0);&lt;br /&gt;
    if (!el) return;&lt;br /&gt;
    Object.keys(THEME_KEYS).forEach(function (key) {&lt;br /&gt;
      var raw = $gate.attr(&#039;data-fl-&#039; + key.toLowerCase()) || $gate.attr(&#039;data-fl-&#039; + key);&lt;br /&gt;
      if (raw) el.style.setProperty(THEME_KEYS[key], raw);&lt;br /&gt;
    });&lt;br /&gt;
    var themeText = $.trim($gate.find(&#039;.fl-theme&#039;).first().text() || &#039;&#039;);&lt;br /&gt;
    if (themeText) {&lt;br /&gt;
      themeText.split(/[;\n]/).forEach(function (pair) {&lt;br /&gt;
        var m = $.trim(pair).match(/^([a-zA-Z]+)\s*:\s*(.+)$/);&lt;br /&gt;
        if (!m) return;&lt;br /&gt;
        var key = m[1];&lt;br /&gt;
        var val = $.trim(m[2]);&lt;br /&gt;
        var map = {&lt;br /&gt;
          bg: &#039;bg&#039;, panel: &#039;panel&#039;, accent: &#039;accent&#039;, text: &#039;text&#039;, muted: &#039;muted&#039;,&lt;br /&gt;
          danger: &#039;danger&#039;, border: &#039;border&#039;, radius: &#039;radius&#039;, font: &#039;font&#039;,&lt;br /&gt;
          width: &#039;width&#039;, pad: &#039;pad&#039;,&lt;br /&gt;
          titlesize: &#039;titleSize&#039;, &#039;title-size&#039;: &#039;titleSize&#039;, titleSize: &#039;titleSize&#039;,&lt;br /&gt;
          inputbg: &#039;inputBg&#039;, &#039;input-bg&#039;: &#039;inputBg&#039;, inputBg: &#039;inputBg&#039;,&lt;br /&gt;
          inputborder: &#039;inputBorder&#039;, &#039;input-border&#039;: &#039;inputBorder&#039;, inputBorder: &#039;inputBorder&#039;,&lt;br /&gt;
          buttontext: &#039;buttonText&#039;, &#039;button-text&#039;: &#039;buttonText&#039;, buttonText: &#039;buttonText&#039;&lt;br /&gt;
        };&lt;br /&gt;
        var normalized = map[key] || map[key.toLowerCase()];&lt;br /&gt;
        if (normalized &amp;amp;&amp;amp; THEME_KEYS[normalized]) {&lt;br /&gt;
          el.style.setProperty(THEME_KEYS[normalized], val);&lt;br /&gt;
        }&lt;br /&gt;
      });&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function bindGates($root) {&lt;br /&gt;
    addStyles();&lt;br /&gt;
    $root.find(&#039;.fandom-login-gate&#039;).addBack(&#039;.fandom-login-gate&#039;).each(function () {&lt;br /&gt;
      var $gate = $(this);&lt;br /&gt;
      if (!$gate.hasClass(&#039;fandom-login-gate&#039;) || $gate.data(&#039;bound&#039;)) return;&lt;br /&gt;
      $gate.data(&#039;bound&#039;, true);&lt;br /&gt;
      applyTheme($gate);&lt;br /&gt;
      var user = readCred($gate, &#039;user&#039;);&lt;br /&gt;
      var pass = readCred($gate, &#039;pass&#039;);&lt;br /&gt;
      var $form = $gate.find(&#039;.fandom-login-form&#039;);&lt;br /&gt;
      var $error = $gate.find(&#039;.fandom-login-error&#039;);&lt;br /&gt;
&lt;br /&gt;
      $form.empty().append(&lt;br /&gt;
        $(&#039;&amp;lt;label&amp;gt;&#039;).text(&#039;用户名&#039;).append(&lt;br /&gt;
          $(&#039;&amp;lt;input type=&amp;quot;text&amp;quot; class=&amp;quot;fl-user&amp;quot; autocomplete=&amp;quot;off&amp;quot; spellcheck=&amp;quot;false&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
        ),&lt;br /&gt;
        $(&#039;&amp;lt;label&amp;gt;&#039;).text(&#039;密码&#039;).append(&lt;br /&gt;
          $(&#039;&amp;lt;input type=&amp;quot;password&amp;quot; class=&amp;quot;fl-pass&amp;quot; autocomplete=&amp;quot;off&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
        ),&lt;br /&gt;
        $(&#039;&amp;lt;button&amp;gt;&#039;, { type: &#039;button&#039;, &#039;class&#039;: &#039;fl-submit&#039;, text: &#039;解锁&#039; })&lt;br /&gt;
      );&lt;br /&gt;
&lt;br /&gt;
      function tryUnlock() {&lt;br /&gt;
        if ($form.find(&#039;.fl-user&#039;).val() === user &amp;amp;&amp;amp; $form.find(&#039;.fl-pass&#039;).val() === pass) {&lt;br /&gt;
          $error.hide();&lt;br /&gt;
          $gate.addClass(&#039;is-unlocked&#039;);&lt;br /&gt;
        } else {&lt;br /&gt;
          $error.show();&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
      $form.on(&#039;click&#039;, &#039;.fl-submit&#039;, tryUnlock);&lt;br /&gt;
      $form.on(&#039;keydown&#039;, &#039;input&#039;, function (e) {&lt;br /&gt;
        if (e.key === &#039;Enter&#039;) tryUnlock();&lt;br /&gt;
      });&lt;br /&gt;
    });&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  mw.hook(&#039;wikipage.content&#039;).add(bindGates);&lt;br /&gt;
  bindGates($(document));&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
//67890&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//这是一个假的用户登录框，仅仅用于页面的演出效果，这意味着这个用户登陆框不会记录用户的任何密码或用户名信息，也不会对用户的信息安全造成任何威胁。使用这些代码的页面创建者会在当页自定义一个假的用户名和密码。如果用户不想，这个假的用户登录框不会泄露用户的任何真实信息。&lt;br /&gt;
//This is a fake user login From, only used for the page&#039;s visual effect. It means that this login box won&#039;t record any user&#039;s password or username information, nor will it pose any threat to user information security. The page creator using this code can customize a fake username and password on the page. If users don&#039;t want to, this fake login Form won&#039;t leak any real information about them.&lt;br /&gt;
//This has NOTHING to do with Fandom Login Forms.&lt;/div&gt;</summary>
		<author><name>Aread</name></author>
	</entry>
	<entry>
		<id>http://fandombackroomscn.icu/index.php?title=%E6%A8%A1%E6%9D%BF:CSS&amp;diff=91</id>
		<title>模板:CSS</title>
		<link rel="alternate" type="text/html" href="http://fandombackroomscn.icu/index.php?title=%E6%A8%A1%E6%9D%BF:CSS&amp;diff=91"/>
		<updated>2026-08-06T05:55:52Z</updated>

		<summary type="html">&lt;p&gt;Aread：​创建页面，内容为“{{#invoke:CSS|import_css}}”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#invoke:CSS|import_css}}&lt;/div&gt;</summary>
		<author><name>Aread</name></author>
	</entry>
	<entry>
		<id>http://fandombackroomscn.icu/index.php?title=%E6%A8%A1%E6%9D%BF:Blurimage&amp;diff=90</id>
		<title>模板:Blurimage</title>
		<link rel="alternate" type="text/html" href="http://fandombackroomscn.icu/index.php?title=%E6%A8%A1%E6%9D%BF:Blurimage&amp;diff=90"/>
		<updated>2026-08-06T05:54:57Z</updated>

		<summary type="html">&lt;p&gt;Aread：​创建页面，内容为“&amp;lt;center&amp;gt;&amp;lt;div class=&amp;quot;marginblock&amp;quot; style=&amp;quot;display: inline-flex; box-shadow: 2px 2px 6px rgba(0,0,0,0.6); width:{{{width|300px}}}; overflow: hidden; z-index: 4; position:relative; float:{{{align|right}}}; padding:0; flex-direction: column; clear:{{{align|right}}};margin-{{{align|right}}}:0.5rem !important;&amp;quot;&amp;gt; &amp;lt;div class=&amp;quot;no-margin-p fit-image&amp;quot; style=&amp;quot;margin:0;box-shadow: 0px 0px 10px rgba(0,0,0,0.6);&amp;quot;&amp;gt;File:{{{file|Lvl10.jpg}}}|{{{hovertext|}}}|alt={{{alt|}}}|link…”&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;center&amp;gt;&amp;lt;div class=&amp;quot;marginblock&amp;quot; style=&amp;quot;display: inline-flex; box-shadow: 2px 2px 6px rgba(0,0,0,0.6); width:{{{width|300px}}}; overflow: hidden; z-index: 4; position:relative; float:{{{align|right}}}; padding:0; flex-direction: column; clear:{{{align|right}}};margin-{{{align|right}}}:0.5rem !important;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;no-margin-p fit-image&amp;quot; style=&amp;quot;margin:0;box-shadow: 0px 0px 10px rgba(0,0,0,0.6);&amp;quot;&amp;gt;[[File:{{{file|Lvl10.jpg}}}|{{{hovertext|}}}|alt={{{alt|}}}|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;blurbehind&amp;quot; style=&amp;quot;background: rgba(0,0,0,0.2);padding: 1rem 1em;position:relative; font-size: {{{font-size|90%}}}; font-weight: bold; text-shadow: 0px 0px 3px black; box-shadow: 0px 0px 10px rgba(0,0,0,0.6); z-index: 5; float:right; margin:0;&amp;quot;&amp;gt;{{{caption|这个小玩意比原来的那个图像块漂亮多了。为什么不用用呢？}}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mobile-hidden cover-image&amp;quot; style=&amp;quot;position: absolute; top:{{{top|0}}}; {{{bg-align|left}}}:0; z-index: -1;&amp;quot;&amp;gt;[[File:{{{file|Lvl10.jpg}}}|link=]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/center&amp;gt;&lt;/div&gt;</summary>
		<author><name>Aread</name></author>
	</entry>
	<entry>
		<id>http://fandombackroomscn.icu/index.php?title=MediaWiki:ImportJS&amp;diff=66</id>
		<title>MediaWiki:ImportJS</title>
		<link rel="alternate" type="text/html" href="http://fandombackroomscn.icu/index.php?title=MediaWiki:ImportJS&amp;diff=66"/>
		<updated>2026-08-06T05:32:21Z</updated>

		<summary type="html">&lt;p&gt;Aread：​清空全部内容&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Aread</name></author>
	</entry>
	<entry>
		<id>http://fandombackroomscn.icu/index.php?title=MediaWiki:ImportJS&amp;diff=65</id>
		<title>MediaWiki:ImportJS</title>
		<link rel="alternate" type="text/html" href="http://fandombackroomscn.icu/index.php?title=MediaWiki:ImportJS&amp;diff=65"/>
		<updated>2026-08-06T05:32:03Z</updated>

		<summary type="html">&lt;p&gt;Aread：​test&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;dev:AjaxRC.js&lt;br /&gt;
dev:AjaxPoll.js&lt;br /&gt;
dev:AllPagesHideRedirect/code.js&lt;br /&gt;
dev:Accordion.js&lt;br /&gt;
dev:BackToTopButton/code.js&lt;br /&gt;
dev:BalancedTabber.js&lt;br /&gt;
dev:BilibiliVideo.js&lt;br /&gt;
dev:CatFilter/code.js&lt;br /&gt;
dev:CategoryMaintenanceTables.js&lt;br /&gt;
dev:CategorySorter.js&lt;br /&gt;
dev:Countdown/code.js&lt;br /&gt;
dev:DataTables.js&lt;br /&gt;
dev:DeleteTalkpage.js&lt;br /&gt;
dev:DivEditor/code.js&lt;br /&gt;
dev:EditConflictAlert/code.js&lt;br /&gt;
dev:EditLeaderboard.js&lt;br /&gt;
dev:FastFileDelete.js&lt;br /&gt;
dev:FileTools.js&lt;br /&gt;
dev:FirstEditDate.js&lt;br /&gt;
dev:HTML5AudioPlayer/code.js&lt;br /&gt;
dev:ImageCompare.js&lt;br /&gt;
dev:ImportJSPage/code.js&lt;br /&gt;
dev:InactiveUsers/code.js&lt;br /&gt;
dev:InputUsername/code.js&lt;br /&gt;
dev:LinkPreview/code.js&lt;br /&gt;
dev:MassEdit/code.js&lt;br /&gt;
dev:Medals/code.js&lt;br /&gt;
dev:MarkBlocked.js&lt;br /&gt;
dev:ModernLeaderboard.js&lt;br /&gt;
dev:MediaWikiBacklink/code.js&lt;br /&gt;
dev:MessageWallUserTags/code.js&lt;br /&gt;
dev:OrganizedSocialActivity.js&lt;br /&gt;
dev:ProtectionIcons.js&lt;br /&gt;
dev:ProfileTags.js&lt;br /&gt;
dev:QuickPurge.js&lt;br /&gt;
dev:RedirectManagement/code.js&lt;br /&gt;
dev:ReferencePopups/code.js&lt;br /&gt;
dev:ReferencePopups/custom.js&lt;br /&gt;
dev:RevisionDelete.js&lt;br /&gt;
dev:SandboxTab/code.js&lt;br /&gt;
dev:SearchSuggest/code.js&lt;br /&gt;
dev:SeeMoreActivityButton/code.js&lt;br /&gt;
dev:SelectContent.js&lt;br /&gt;
dev:ShortUrl.js&lt;br /&gt;
dev:SketchfabIntegrator.js&lt;br /&gt;
dev:Toggler.js&lt;br /&gt;
dev:User Avatar Finder/code.js&lt;br /&gt;
dev:UserAvatarLink.js&lt;br /&gt;
dev:UserFunctions.js&lt;br /&gt;
dev:UndeleteBacklink.js&lt;/div&gt;</summary>
		<author><name>Aread</name></author>
	</entry>
	<entry>
		<id>http://fandombackroomscn.icu/index.php?title=MediaWiki:Common.js&amp;diff=63</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="http://fandombackroomscn.icu/index.php?title=MediaWiki:Common.js&amp;diff=63"/>
		<updated>2026-08-06T05:29:06Z</updated>

		<summary type="html">&lt;p&gt;Aread：​清空全部内容&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Aread</name></author>
	</entry>
	<entry>
		<id>http://fandombackroomscn.icu/index.php?title=MediaWiki:Common.js&amp;diff=60</id>
		<title>MediaWiki:Common.js</title>
		<link rel="alternate" type="text/html" href="http://fandombackroomscn.icu/index.php?title=MediaWiki:Common.js&amp;diff=60"/>
		<updated>2026-08-06T05:19:52Z</updated>

		<summary type="html">&lt;p&gt;Aread：​测试，如有异常将立刻回退。&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;/* 这里的任何JavaScript将为所有用户在每次页面加载时加载。 */&lt;br /&gt;
// 点击播放或暂停音频&lt;br /&gt;
(function () {&lt;br /&gt;
    const eles = document.querySelectorAll(&#039;.js-action-play&#039;);&lt;br /&gt;
    eles.forEach(function (e) {&lt;br /&gt;
        const targetId = e.getAttribute(&#039;data-media-id&#039;);&lt;br /&gt;
        if (!targetId) {&lt;br /&gt;
            console.error(&#039;No data-media-id present on element&#039;, e);&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        const target = document.getElementsByClassName(&#039;media-id-&#039; + targetId)[0].getElementsByClassName(&amp;quot;mw-file-element&amp;quot;)[0];&lt;br /&gt;
        if (!target) {&lt;br /&gt;
            console.error(&#039;No element found with .media-id-&#039; + targetId, e);&lt;br /&gt;
            return;&lt;br /&gt;
        }&lt;br /&gt;
        e.addEventListener(&#039;click&#039;, function () {&lt;br /&gt;
            console.log(target);&lt;br /&gt;
            if (target.paused || target.ended) {&lt;br /&gt;
                target.play();&lt;br /&gt;
            } else {&lt;br /&gt;
                target.pause();&lt;br /&gt;
            }&lt;br /&gt;
        });&lt;br /&gt;
    });&lt;br /&gt;
})();&lt;br /&gt;
&lt;br /&gt;
mw.loader.load([&amp;quot;mediawiki.util&amp;quot;, &amp;quot;mediawiki.Title&amp;quot;]);&lt;br /&gt;
mw.hook(&amp;quot;wikipage.content&amp;quot;).add(function () {&lt;br /&gt;
    // 单页内联CSS与CSS触发器&lt;br /&gt;
    $(&amp;quot;span.import-css&amp;quot;).each(function () {&lt;br /&gt;
        var css = mw.util.addCSS($(this).attr(&amp;quot;data-css&amp;quot;));&lt;br /&gt;
        $(css.ownerNode).addClass(&amp;quot;import-css&amp;quot;)&lt;br /&gt;
            .attr(&amp;quot;data-css-hash&amp;quot;, $(this).attr(&amp;quot;data-css-hash&amp;quot;))&lt;br /&gt;
            .attr(&amp;quot;data-from&amp;quot;, $(this).attr(&amp;quot;data-from&amp;quot;))&lt;br /&gt;
            .attr(&amp;quot;data-trigger&amp;quot;, $(this).attr(&amp;quot;data-trigger&amp;quot;));&lt;br /&gt;
        var trigger = $(this).attr(&amp;quot;data-trigger&amp;quot;);&lt;br /&gt;
        var triggerOpened = false;&lt;br /&gt;
        if (trigger != &amp;quot;none&amp;quot;) {&lt;br /&gt;
            css.disabled = true;&lt;br /&gt;
            $(&amp;quot;.csstrigger-&amp;quot; + trigger).click(function () {&lt;br /&gt;
                css.disabled = !css.disabled;&lt;br /&gt;
                triggerOpened = true;&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
        $(&amp;quot;.css-toggler&amp;quot;).click(function () {&lt;br /&gt;
            if ((trigger != &amp;quot;none&amp;quot; &amp;amp;&amp;amp; triggerOpened) || (trigger == &amp;quot;none&amp;quot;)) css.disabled = !css.disabled;&lt;br /&gt;
        });&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    // 播放或暂停所有音频&lt;br /&gt;
    $(&amp;quot;.audio-toggler&amp;quot;).click(function () {&lt;br /&gt;
        $(&amp;quot;audio&amp;quot;).get().forEach(function (audio) { if (audio.paused || audio.ended) { audio.play(); } else { audio.pause(); } });&lt;br /&gt;
    });&lt;br /&gt;
    &lt;br /&gt;
    // Button Audio修复&lt;br /&gt;
mw.hook(&amp;quot;wikipage.content&amp;quot;).add(function () {&lt;br /&gt;
&lt;br /&gt;
    $(&amp;quot;.t-audio&amp;quot;).each(function () {&lt;br /&gt;
&lt;br /&gt;
        var toggle = $(this).attr(&amp;quot;data-toggle&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
        if (!toggle) return;&lt;br /&gt;
&lt;br /&gt;
        $(&amp;quot;.t-audio-toggle-&amp;quot; + toggle).click(function () {&lt;br /&gt;
&lt;br /&gt;
            var audio = $(&amp;quot;.t-audio-toggle-&amp;quot; + toggle + &amp;quot; audio&amp;quot;)[0];&lt;br /&gt;
&lt;br /&gt;
            if (!audio) return;&lt;br /&gt;
&lt;br /&gt;
            if (audio.paused || audio.ended) {&lt;br /&gt;
                audio.play();&lt;br /&gt;
            } else {&lt;br /&gt;
                audio.pause();&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
        });&lt;br /&gt;
&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
    // 站点公告切换&lt;br /&gt;
    $(&amp;quot;.sitenotice-tab-container&amp;quot;).each(function () {&lt;br /&gt;
        var container = $(this);&lt;br /&gt;
        function switchTab(offset) {&lt;br /&gt;
            return function () {&lt;br /&gt;
                var tabs = container.children(&amp;quot;.sitenotice-tab&amp;quot;).toArray();&lt;br /&gt;
                var no = Number(container.find(&amp;quot;.sitenotice-tab-no&amp;quot;)[0].innerText) + offset;&lt;br /&gt;
                var count = tabs.length;&lt;br /&gt;
                if (no &amp;lt; 1) no = count;&lt;br /&gt;
                else if (no &amp;gt; count) no = 1;&lt;br /&gt;
                for (var i = 0; i &amp;lt; count; i++)&lt;br /&gt;
                    tabs[i].style.display = (i + 1 == no ? null : &amp;quot;none&amp;quot;);&lt;br /&gt;
                container.find(&amp;quot;.sitenotice-tab-no&amp;quot;)[0].innerText = no;&lt;br /&gt;
            };&lt;br /&gt;
        }&lt;br /&gt;
        container.find(&amp;quot;.sitenotice-tab-arrow.prev&amp;quot;).click(switchTab(-1));&lt;br /&gt;
        container.find(&amp;quot;.sitenotice-tab-arrow.next&amp;quot;).click(switchTab(1));&lt;br /&gt;
    });&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
// 联立JS脚本页&lt;br /&gt;
$.getJSON(mw.util.wikiScript(&amp;quot;index&amp;quot;), {&lt;br /&gt;
    title: &amp;quot;MediaWiki:Custom-ImportScripts.json&amp;quot;,&lt;br /&gt;
    action: &amp;quot;raw&amp;quot;&lt;br /&gt;
}).done(function (result, status) {&lt;br /&gt;
    if (status != &amp;quot;success&amp;quot; || typeof (result) != &amp;quot;object&amp;quot;) return;&lt;br /&gt;
    var scripts = result[mw.config.get(&amp;quot;wgPageName&amp;quot;)];&lt;br /&gt;
    if (scripts) {&lt;br /&gt;
        if (typeof (scripts) == &amp;quot;string&amp;quot;) scripts = [scripts];&lt;br /&gt;
        importArticles({ type: &amp;quot;script&amp;quot;, articles: scripts }); // importArticles仅接受MediaWiki命名空间&lt;br /&gt;
    }&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
// CSS页预览&lt;br /&gt;
(function () {&lt;br /&gt;
    var page = mw.config.get(&#039;wgPageName&#039;) || &#039;&#039;;&lt;br /&gt;
    var model = mw.config.get(&#039;wgPageContentModel&#039;);&lt;br /&gt;
    if (!page || model !== &#039;css&#039;) return;&lt;br /&gt;
    var rawUrl = mw.util.getUrl(page, { action: &#039;raw&#039;, ctype: &#039;text/css&#039; });&lt;br /&gt;
    fetch(rawUrl, { credentials: &#039;same-origin&#039; })&lt;br /&gt;
        .then(function (res) {&lt;br /&gt;
            if (!res.ok) throw new Error(&#039;HTTP &#039; + res.status);&lt;br /&gt;
            return res.text();&lt;br /&gt;
        })&lt;br /&gt;
        .then(function (cssText) {&lt;br /&gt;
            if (!cssText) return;&lt;br /&gt;
            var style = document.createElement(&#039;style&#039;);&lt;br /&gt;
            style.type = &#039;text/css&#039;;&lt;br /&gt;
            style.setAttribute(&#039;data-injected-from&#039;, page);&lt;br /&gt;
            style.appendChild(document.createTextNode(cssText));&lt;br /&gt;
            document.head.appendChild(style);&lt;br /&gt;
        })&lt;br /&gt;
        .catch(function (err) {&lt;br /&gt;
            console.error(&#039;加载CSS源失败: &#039;, page, err);&lt;br /&gt;
        });&lt;br /&gt;
}());&lt;br /&gt;
&lt;br /&gt;
// New JS 4 Wordrain&lt;br /&gt;
/* Word Rain System v2.1 - Fandom Optimized */&lt;br /&gt;
window.wordRainSystem = (function () {&lt;br /&gt;
    &#039;use strict&#039;;&lt;br /&gt;
&lt;br /&gt;
    const instances = new Map();&lt;br /&gt;
    let styleAdded = false;&lt;br /&gt;
&lt;br /&gt;
    function addCoreStyles() {&lt;br /&gt;
        if (styleAdded) return;&lt;br /&gt;
&lt;br /&gt;
        mw.util.addCSS(`&lt;br /&gt;
      .word-drop {&lt;br /&gt;
        position: fixed;&lt;br /&gt;
        top: -50px;&lt;br /&gt;
        opacity: 0.9;&lt;br /&gt;
        animation: wordFall linear infinite;&lt;br /&gt;
        pointer-events: none;&lt;br /&gt;
        z-index: 9998;&lt;br /&gt;
        white-space: nowrap;&lt;br /&gt;
        text-shadow: 0 0 5px currentColor;&lt;br /&gt;
        will-change: transform, opacity;&lt;br /&gt;
        font-weight: bold;&lt;br /&gt;
      }&lt;br /&gt;
      &lt;br /&gt;
      @keyframes wordFall {&lt;br /&gt;
        0% { transform: translateY(-100vh) translateX(-5px); }&lt;br /&gt;
        100% { transform: translateY(100vh) translateX(5px); }&lt;br /&gt;
      }&lt;br /&gt;
      &lt;br /&gt;
      .word-rain-toggle[data-state=&amp;quot;on&amp;quot;] {&lt;br /&gt;
        background: rgba(0,255,0,0.2) !important;&lt;br /&gt;
        border-color: #0f0 !important;&lt;br /&gt;
        color: #0f0 !important;&lt;br /&gt;
        text-shadow: 0 0 8px #0f0;&lt;br /&gt;
        box-shadow: 0 0 12px #0f0;&lt;br /&gt;
      }&lt;br /&gt;
    `);&lt;br /&gt;
        styleAdded = true;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    function createDrop(instance) {&lt;br /&gt;
        const drop = document.createElement(&#039;div&#039;);&lt;br /&gt;
        drop.className = &#039;word-drop&#039;;&lt;br /&gt;
&lt;br /&gt;
        // 随机位置&lt;br /&gt;
        const leftPos = 5 + Math.random() * 90;&lt;br /&gt;
        drop.style.left = `${leftPos}vw`;&lt;br /&gt;
&lt;br /&gt;
        // 随机颜色&lt;br /&gt;
        const colors = instance.config.colors;&lt;br /&gt;
        drop.style.color = colors[Math.floor(Math.random() * colors.length)];&lt;br /&gt;
&lt;br /&gt;
        // 字体设置&lt;br /&gt;
        drop.style.fontSize = `${instance.config.size + Math.floor(Math.random() * 6)}px`;&lt;br /&gt;
        drop.style.fontFamily = instance.config.font;&lt;br /&gt;
&lt;br /&gt;
        // 随机词语&lt;br /&gt;
        const words = instance.config.words;&lt;br /&gt;
        drop.textContent = words[Math.floor(Math.random() * words.length)];&lt;br /&gt;
&lt;br /&gt;
        // 动画参数&lt;br /&gt;
        const baseSpeed = 10000 - (instance.config.speed * 800);&lt;br /&gt;
        const duration = (baseSpeed + Math.random() * 3000) / 1000;&lt;br /&gt;
        drop.style.animation = `wordFall ${duration}s linear infinite`;&lt;br /&gt;
&lt;br /&gt;
        document.body.appendChild(drop);&lt;br /&gt;
&lt;br /&gt;
        // 自动清理&lt;br /&gt;
        setTimeout(() =&amp;gt; {&lt;br /&gt;
            drop.remove();&lt;br /&gt;
        }, duration * 1000);&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return {&lt;br /&gt;
        init: function () {&lt;br /&gt;
            mw.hook(&#039;wikipage.content&#039;).add(function ($content) {&lt;br /&gt;
                $content.find(&#039;.word-rain-widget&#039;).each(function () {&lt;br /&gt;
                    const $widget = $(this);&lt;br /&gt;
                    if ($widget.data(&#039;initialized&#039;)) return;&lt;br /&gt;
&lt;br /&gt;
                    // 初始化配置&lt;br /&gt;
                    const config = {&lt;br /&gt;
                        words: $widget.data(&#039;words&#039;).split(&#039;,&#039;),&lt;br /&gt;
                        colors: $widget.data(&#039;colors&#039;).split(&#039;,&#039;),&lt;br /&gt;
                        font: $widget.data(&#039;font&#039;),&lt;br /&gt;
                        size: parseInt($widget.data(&#039;size&#039;)) || 18,&lt;br /&gt;
                        speed: Math.min(10, Math.max(1, parseInt($widget.data(&#039;speed&#039;)) || 5)),&lt;br /&gt;
                        density: Math.min(50, Math.max(1, parseInt($widget.data(&#039;density&#039;)) || 30))&lt;br /&gt;
                    };&lt;br /&gt;
&lt;br /&gt;
                    // 生成实例ID&lt;br /&gt;
                    const instanceId = `wordrain-${Date.now()}-${Math.random().toString(36).substr(2, 5)}`;&lt;br /&gt;
&lt;br /&gt;
                    instances.set(instanceId, {&lt;br /&gt;
                        config: config,&lt;br /&gt;
                        interval: null,&lt;br /&gt;
                        active: false&lt;br /&gt;
                    });&lt;br /&gt;
&lt;br /&gt;
                    // 标记初始化&lt;br /&gt;
                    $widget.data(&#039;initialized&#039;, true)&lt;br /&gt;
                        .data(&#039;instance-id&#039;, instanceId);&lt;br /&gt;
&lt;br /&gt;
                    // 初始化按钮状态&lt;br /&gt;
                    const $btn = $widget.find(&#039;.word-rain-toggle&#039;);&lt;br /&gt;
                    $btn.data(&#039;instance-id&#039;, instanceId)&lt;br /&gt;
                        .attr(&#039;data-state&#039;, &#039;off&#039;)&lt;br /&gt;
                        .text($widget.data(&#039;button-off&#039;));&lt;br /&gt;
                });&lt;br /&gt;
            });&lt;br /&gt;
&lt;br /&gt;
            // 全局点击处理&lt;br /&gt;
            $(document).on(&#039;click&#039;, &#039;.word-rain-toggle&#039;, function () {&lt;br /&gt;
                const instanceId = $(this).data(&#039;instance-id&#039;);&lt;br /&gt;
                const instance = instances.get(instanceId);&lt;br /&gt;
&lt;br /&gt;
                if (!instance) return;&lt;br /&gt;
&lt;br /&gt;
                if (!instance.active) {&lt;br /&gt;
                    // 启动特效&lt;br /&gt;
                    instance.active = true;&lt;br /&gt;
                    instance.interval = setInterval(&lt;br /&gt;
                        () =&amp;gt; createDrop(instance),&lt;br /&gt;
                        Math.max(50, 1000 / instance.config.density)&lt;br /&gt;
                    );&lt;br /&gt;
&lt;br /&gt;
                    $(this).attr(&#039;data-state&#039;, &#039;on&#039;)&lt;br /&gt;
                        .text($(this).closest(&#039;.word-rain-widget&#039;).data(&#039;button-on&#039;));&lt;br /&gt;
                } else {&lt;br /&gt;
                    // 停止特效&lt;br /&gt;
                    instance.active = false;&lt;br /&gt;
                    clearInterval(instance.interval);&lt;br /&gt;
                    instance.interval = null;&lt;br /&gt;
                    document.querySelectorAll(&#039;.word-drop&#039;).forEach(drop =&amp;gt; drop.remove());&lt;br /&gt;
&lt;br /&gt;
                    $(this).attr(&#039;data-state&#039;, &#039;off&#039;)&lt;br /&gt;
                        .text($(this).closest(&#039;.word-rain-widget&#039;).data(&#039;button-off&#039;));&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
&lt;br /&gt;
            // 页面卸载时清理&lt;br /&gt;
            window.addEventListener(&#039;beforeunload&#039;, () =&amp;gt; {&lt;br /&gt;
                instances.forEach(instance =&amp;gt; {&lt;br /&gt;
                    clearInterval(instance.interval);&lt;br /&gt;
                    document.querySelectorAll(&#039;.word-drop&#039;).forEach(drop =&amp;gt; drop.remove());&lt;br /&gt;
                });&lt;br /&gt;
            });&lt;br /&gt;
&lt;br /&gt;
            // 添加核心样式&lt;br /&gt;
            addCoreStyles();&lt;br /&gt;
        },&lt;br /&gt;
&lt;br /&gt;
        // 公共方法&lt;br /&gt;
        getInstances: () =&amp;gt; instances,&lt;br /&gt;
        stopAll: () =&amp;gt; {&lt;br /&gt;
            instances.forEach(instance =&amp;gt; {&lt;br /&gt;
                clearInterval(instance.interval);&lt;br /&gt;
                instance.active = false;&lt;br /&gt;
            });&lt;br /&gt;
            document.querySelectorAll(&#039;.word-drop&#039;).forEach(drop =&amp;gt; drop.remove());&lt;br /&gt;
        }&lt;br /&gt;
    };&lt;br /&gt;
})();&lt;br /&gt;
&lt;br /&gt;
// 初始化&lt;br /&gt;
mw.loader.using([&#039;mediawiki.util&#039;, &#039;jquery&#039;]).then(function () {&lt;br /&gt;
    wordRainSystem.init();&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
/* Image Slider System */&lt;br /&gt;
window.imageSlider = (function () {&lt;br /&gt;
    &#039;use strict&#039;;&lt;br /&gt;
&lt;br /&gt;
    const sliders = new Map();&lt;br /&gt;
&lt;br /&gt;
    function initSlider(container) {&lt;br /&gt;
        const images = container.dataset.images.split(&#039;,&#039;);&lt;br /&gt;
        const captions = container.dataset.captions.split(&#039;,&#039;);&lt;br /&gt;
        const track = container.querySelector(&#039;.slider-track&#039;);&lt;br /&gt;
        let currentIndex = 0;&lt;br /&gt;
        let autoPlayInterval = null;&lt;br /&gt;
&lt;br /&gt;
        // 动态生成幻灯片&lt;br /&gt;
        images.forEach((image, index) =&amp;gt; {&lt;br /&gt;
            const slide = document.createElement(&#039;div&#039;);&lt;br /&gt;
            slide.className = &#039;slide-item&#039;;&lt;br /&gt;
            slide.style.backgroundImage = `url(${mw.config.get(&#039;wgScriptPath&#039;)}/images/${image.trim()})`;&lt;br /&gt;
&lt;br /&gt;
            const overlay = document.createElement(&#039;div&#039;);&lt;br /&gt;
            overlay.className = &#039;image-overlay&#039;;&lt;br /&gt;
            slide.appendChild(overlay);&lt;br /&gt;
&lt;br /&gt;
            const caption = document.createElement(&#039;div&#039;);&lt;br /&gt;
            caption.className = &#039;slide-caption&#039;;&lt;br /&gt;
            caption.textContent = (captions[index] || &#039;&#039;).replace(/[{}]/g, &#039;&#039;); // 移除描述中的{}&lt;br /&gt;
            slide.appendChild(caption);&lt;br /&gt;
&lt;br /&gt;
            // 确保每张图片的描述都能显示&lt;br /&gt;
            slide.addEventListener(&#039;mouseenter&#039;, () =&amp;gt; {&lt;br /&gt;
                overlay.style.opacity = &#039;0.7&#039;;&lt;br /&gt;
                caption.style.bottom = &#039;0&#039;;&lt;br /&gt;
            });&lt;br /&gt;
&lt;br /&gt;
            slide.addEventListener(&#039;mouseleave&#039;, () =&amp;gt; {&lt;br /&gt;
                overlay.style.opacity = &#039;0&#039;;&lt;br /&gt;
                caption.style.bottom = &#039;-50px&#039;;&lt;br /&gt;
            });&lt;br /&gt;
&lt;br /&gt;
            track.appendChild(slide);&lt;br /&gt;
        });&lt;br /&gt;
&lt;br /&gt;
        function goToSlide(index) {&lt;br /&gt;
            currentIndex = (index + images.length) % images.length;&lt;br /&gt;
            track.style.transform = `translateX(-${currentIndex * 100}%)`;&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function startAutoPlay() {&lt;br /&gt;
            if (container.dataset.autoplay === &#039;1&#039;) {&lt;br /&gt;
                autoPlayInterval = setInterval(() =&amp;gt; {&lt;br /&gt;
                    goToSlide(currentIndex + 1);&lt;br /&gt;
                }, parseInt(container.dataset.speed));&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        function stopAutoPlay() {&lt;br /&gt;
            clearInterval(autoPlayInterval);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        // 事件绑定&lt;br /&gt;
        container.querySelector(&#039;.prev-slide&#039;).addEventListener(&#039;click&#039;, () =&amp;gt; goToSlide(currentIndex - 1));&lt;br /&gt;
        container.querySelector(&#039;.next-slide&#039;).addEventListener(&#039;click&#039;, () =&amp;gt; goToSlide(currentIndex + 1));&lt;br /&gt;
&lt;br /&gt;
        // 悬停暂停&lt;br /&gt;
        if (container.dataset.autoplay === &#039;1&#039;) {&lt;br /&gt;
            container.addEventListener(&#039;mouseenter&#039;, stopAutoPlay);&lt;br /&gt;
            container.addEventListener(&#039;mouseleave&#039;, startAutoPlay);&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
        startAutoPlay();&lt;br /&gt;
        sliders.set(container, { goToSlide, stopAutoPlay });&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return {&lt;br /&gt;
        init: function () {&lt;br /&gt;
            mw.hook(&#039;wikipage.content&#039;).add(function ($content) {&lt;br /&gt;
                $content.find(&#039;.js-slider-container&#039;).each(function () {&lt;br /&gt;
                    if (!this.dataset.initialized) {&lt;br /&gt;
                        this.dataset.initialized = true;&lt;br /&gt;
                        initSlider(this);&lt;br /&gt;
                    }&lt;br /&gt;
                });&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
    };&lt;br /&gt;
})();&lt;br /&gt;
&lt;br /&gt;
// 初始化&lt;br /&gt;
mw.loader.using(&#039;mediawiki.util&#039;).then(function () {&lt;br /&gt;
    imageSlider.init();&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// Flat3D&lt;br /&gt;
/* 3D Image Hover System */&lt;br /&gt;
window.image3DSystem = (function () {&lt;br /&gt;
    &#039;use strict&#039;;&lt;br /&gt;
&lt;br /&gt;
    function initImageCards(container) {&lt;br /&gt;
        const images = container.dataset.images.split(&#039;,&#039;);&lt;br /&gt;
        const captions = container.dataset.captions.split(&#039;,&#039;);&lt;br /&gt;
        const grid = container.querySelector(&#039;.image-grid&#039;);&lt;br /&gt;
&lt;br /&gt;
        images.forEach((image, index) =&amp;gt; {&lt;br /&gt;
            const card = document.createElement(&#039;div&#039;);&lt;br /&gt;
            card.className = &#039;image-card&#039;;&lt;br /&gt;
&lt;br /&gt;
            const content = document.createElement(&#039;div&#039;);&lt;br /&gt;
            content.className = &#039;image-content&#039;;&lt;br /&gt;
            content.style.backgroundImage = `url(${mw.config.get(&#039;wgScriptPath&#039;)}/images/${image.trim()})`;&lt;br /&gt;
&lt;br /&gt;
            const caption = document.createElement(&#039;div&#039;);&lt;br /&gt;
            caption.className = &#039;caption&#039;;&lt;br /&gt;
&lt;br /&gt;
            // 解析Fandom内链&lt;br /&gt;
            const captionText = (captions[index] || &#039;&#039;).replace(/[{}]/g, &#039;&#039;);&lt;br /&gt;
            const linkMatch = captionText.match(/\[\[(.*?)\]\]/);&lt;br /&gt;
            if (linkMatch) {&lt;br /&gt;
                const linkParts = linkMatch[1].split(&#039;|&#039;);&lt;br /&gt;
                const linkText = linkParts[1] || linkParts[0];&lt;br /&gt;
                const linkHref = mw.util.getUrl(linkParts[0]);&lt;br /&gt;
&lt;br /&gt;
                const link = document.createElement(&#039;a&#039;);&lt;br /&gt;
                link.href = linkHref;&lt;br /&gt;
                link.textContent = linkText;&lt;br /&gt;
                link.style.color = &#039;#fff&#039;;&lt;br /&gt;
                link.style.textDecoration = &#039;none&#039;;&lt;br /&gt;
                caption.appendChild(link);&lt;br /&gt;
            } else {&lt;br /&gt;
                caption.textContent = captionText;&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
            card.appendChild(content);&lt;br /&gt;
            card.appendChild(caption);&lt;br /&gt;
            grid.appendChild(card);&lt;br /&gt;
&lt;br /&gt;
            // 性能优化&lt;br /&gt;
            card.style.willChange = &#039;transform&#039;;&lt;br /&gt;
        });&lt;br /&gt;
&lt;br /&gt;
        // 移动端优化&lt;br /&gt;
        if (&#039;ontouchstart&#039; in window) {&lt;br /&gt;
            grid.querySelectorAll(&#039;.image-card&#039;).forEach(card =&amp;gt; {&lt;br /&gt;
                card.addEventListener(&#039;click&#039;, function () {&lt;br /&gt;
                    this.classList.toggle(&#039;hover-active&#039;);&lt;br /&gt;
                });&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    return {&lt;br /&gt;
        init: function () {&lt;br /&gt;
            mw.hook(&#039;wikipage.content&#039;).add(function ($content) {&lt;br /&gt;
                $content.find(&#039;.flat-3d-container&#039;).each(function () {&lt;br /&gt;
                    if (!this.dataset.initialized) {&lt;br /&gt;
                        this.dataset.initialized = true;&lt;br /&gt;
                        initImageCards(this);&lt;br /&gt;
                    }&lt;br /&gt;
                });&lt;br /&gt;
            });&lt;br /&gt;
        }&lt;br /&gt;
    };&lt;br /&gt;
})();&lt;br /&gt;
&lt;br /&gt;
// 初始化&lt;br /&gt;
mw.loader.using(&#039;mediawiki.util&#039;).then(function () {&lt;br /&gt;
    image3DSystem.init();&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
// Fandom Compass图标&lt;br /&gt;
$(&#039;.fandom-community-header__community-name-wrapper&#039;).append(&lt;br /&gt;
    $(&#039;&amp;lt;a/&amp;gt;&#039;).addClass(&#039;compass-wiki-badge&#039;).attr(&#039;href&#039;, &#039;//community.fandom.com/wiki/Fandom_Compass&#039;).append(&lt;br /&gt;
        $(&#039;&amp;lt;img/&amp;gt;&#039;).css(&#039;height&#039;, &#039;70px&#039;).css(&#039;position&#039;, &#039;relative&#039;).css(&#039;top&#039;, &#039;20px&#039;)&lt;br /&gt;
            .attr(&#039;src&#039;, &#039;https://static.wikia.nocookie.net/backrooms/images/c/ca/Fandom_Compass_dark.png/revision/latest?cb=20250412193710&amp;amp;format=original&amp;amp;path-prefix=zh&#039;).attr(&#039;title&#039;, &#039;本站点已是Fandom Compass计划的成员之一。&#039;)&lt;br /&gt;
    ));&lt;br /&gt;
&lt;br /&gt;
//&lt;br /&gt;
$(document).ready(function () {&lt;br /&gt;
    mw.hook(&#039;wikipage.content&#039;).add(function ($content) {&lt;br /&gt;
        // 为每个播放器创建独立的控制器&lt;br /&gt;
        $content.find(&#039;.player-container&#039;).each(function () {&lt;br /&gt;
            const $player = $(this);&lt;br /&gt;
            const playerState = {&lt;br /&gt;
                isPlaying: false,&lt;br /&gt;
                isDragging: false,&lt;br /&gt;
                progress: $player.find(&#039;.progress&#039;),&lt;br /&gt;
                playBtn: $player.find(&#039;.play-btn&#039;),&lt;br /&gt;
                audio: new Audio($player.data(&#039;audio-src&#039;)),&lt;br /&gt;
                volumeControl: $player.find(&#039;.volume-control&#039;),&lt;br /&gt;
                volumeContainer: $player.find(&#039;.volume-slider-container&#039;),&lt;br /&gt;
                volumeFill: $player.find(&#039;.volume-slider-fill&#039;),&lt;br /&gt;
                volumeThumb: $player.find(&#039;.volume-slider-thumb&#039;),&lt;br /&gt;
                volumeIcon: $player.find(&#039;.volume-icon&#039;)&lt;br /&gt;
            };&lt;br /&gt;
&lt;br /&gt;
            // 设置专辑封面&lt;br /&gt;
            const albumArt = $player.find(&#039;.album-art&#039;);&lt;br /&gt;
            albumArt.css(&#039;background-image&#039;, `url(${$player.data(&#039;album-art&#039;)})`);&lt;br /&gt;
            // 播放/暂停控制&lt;br /&gt;
            playerState.playBtn.on(&#039;click&#039;, function () {&lt;br /&gt;
                if (playerState.isPlaying) {&lt;br /&gt;
                    playerState.audio.pause();&lt;br /&gt;
                    playerState.isPlaying = false;&lt;br /&gt;
                    $(this).text(&#039;▶&#039;);&lt;br /&gt;
                } else {&lt;br /&gt;
                    playerState.audio.play();&lt;br /&gt;
                    playerState.isPlaying = true;&lt;br /&gt;
                    $(this).text(&#039;⏸&#039;);&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
            // 进度更新&lt;br /&gt;
            $(playerState.audio).on(&#039;timeupdate&#039;, function () {&lt;br /&gt;
                const percentage = (this.currentTime / this.duration) * 100;&lt;br /&gt;
                playerState.progress.css(&#039;width&#039;, percentage + &#039;%&#039;);&lt;br /&gt;
            });&lt;br /&gt;
            // 进度条点击&lt;br /&gt;
            $player.find(&#039;.progress-bar&#039;).on(&#039;click&#039;, function (e) {&lt;br /&gt;
                const percent = e.offsetX / $(this).width();&lt;br /&gt;
                playerState.audio.currentTime = percent * playerState.audio.duration;&lt;br /&gt;
            });&lt;br /&gt;
            // 音量控制函数&lt;br /&gt;
            function updateVolume(e) {&lt;br /&gt;
                const rect = playerState.volumeContainer[0].getBoundingClientRect();&lt;br /&gt;
                const x = e.clientX - rect.left;&lt;br /&gt;
                const percentage = Math.max(0, Math.min(100, (x / rect.width) * 100));&lt;br /&gt;
&lt;br /&gt;
                playerState.volumeFill.css(&#039;transform&#039;, `scaleX(${percentage / 100})`);&lt;br /&gt;
                playerState.volumeThumb.css(&#039;right&#039;, `${100 - percentage}%`);&lt;br /&gt;
                playerState.audio.volume = percentage / 100;&lt;br /&gt;
                updateVolumeIcon(percentage);&lt;br /&gt;
            }&lt;br /&gt;
            // 音量拖动事件&lt;br /&gt;
            playerState.volumeContainer.on(&#039;mousedown&#039;, function (e) {&lt;br /&gt;
                playerState.isDragging = true;&lt;br /&gt;
                updateVolume(e);&lt;br /&gt;
            });&lt;br /&gt;
            $(document).on(&#039;mousemove&#039;, function (e) {&lt;br /&gt;
                if (playerState.isDragging) {&lt;br /&gt;
                    updateVolume(e);&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
            $(document).on(&#039;mouseup&#039;, function () {&lt;br /&gt;
                playerState.isDragging = false;&lt;br /&gt;
            });&lt;br /&gt;
            // 更新音量图标&lt;br /&gt;
            function updateVolumeIcon(value) {&lt;br /&gt;
                if (value == 0) {&lt;br /&gt;
                    playerState.volumeIcon.text(&#039;🔇&#039;);&lt;br /&gt;
                } else if (value &amp;lt; 50) {&lt;br /&gt;
                    playerState.volumeIcon.text(&#039;🔉&#039;);&lt;br /&gt;
                } else {&lt;br /&gt;
                    playerState.volumeIcon.text(&#039;🔊&#039;);&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
            // 音量图标双击事件&lt;br /&gt;
            playerState.volumeIcon.on(&#039;dblclick&#039;, function () {&lt;br /&gt;
                if (playerState.audio.volume &amp;gt; 0) {&lt;br /&gt;
                    playerState.audio.volume = 0;&lt;br /&gt;
                    playerState.volumeFill.css(&#039;transform&#039;, &#039;scaleX(0)&#039;);&lt;br /&gt;
                    playerState.volumeThumb.css(&#039;right&#039;, &#039;100%&#039;);&lt;br /&gt;
                    playerState.volumeIcon.text(&#039;🔇&#039;);&lt;br /&gt;
                } else {&lt;br /&gt;
                    playerState.audio.volume = 1;&lt;br /&gt;
                    playerState.volumeFill.css(&#039;transform&#039;, &#039;scaleX(1)&#039;);&lt;br /&gt;
                    playerState.volumeThumb.css(&#039;right&#039;, &#039;0%&#039;);&lt;br /&gt;
                    playerState.volumeIcon.text(&#039;🔊&#039;);&lt;br /&gt;
                }&lt;br /&gt;
            });&lt;br /&gt;
        });&lt;br /&gt;
    });&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
// 投票偏移量&lt;br /&gt;
(function () {&lt;br /&gt;
    if (typeof jQuery === &#039;undefined&#039;) return;&lt;br /&gt;
    var $ = jQuery;&lt;br /&gt;
    var _getJSON = $.getJSON;&lt;br /&gt;
    function num(x) {&lt;br /&gt;
        if (x === null || x === undefined) return 0;&lt;br /&gt;
        var s = String(x).replace(/,/g, &#039;&#039;).trim();&lt;br /&gt;
        if (s === &#039;&#039;) return 0;&lt;br /&gt;
        var n = parseFloat(s);&lt;br /&gt;
        return isNaN(n) ? 0 : n;&lt;br /&gt;
    }&lt;br /&gt;
    function collectOffsetsForThread(threadId) {&lt;br /&gt;
        var offsets = [];&lt;br /&gt;
        var totalOffset = 0;&lt;br /&gt;
        $(&#039;tr[data-vote-id=&amp;quot;&#039; + threadId + &#039;&amp;quot;]&#039;).each(function () {&lt;br /&gt;
            var $tr = $(this);&lt;br /&gt;
            var $table = $tr.closest(&#039;table&#039;);&lt;br /&gt;
            if ($table.hasClass(&#039;talescon-table&#039;)) {&lt;br /&gt;
                var ch = this.children;&lt;br /&gt;
                var o0 = num(ch[2] &amp;amp;&amp;amp; ch[2].textContent);&lt;br /&gt;
                var o1 = num(ch[3] &amp;amp;&amp;amp; ch[3].textContent);&lt;br /&gt;
                var o2 = num(ch[4] &amp;amp;&amp;amp; ch[4].textContent);&lt;br /&gt;
                offsets[0] = (offsets[0] || 0) + o0;&lt;br /&gt;
                offsets[1] = (offsets[1] || 0) + o1;&lt;br /&gt;
                offsets[2] = (offsets[2] || 0) + o2;&lt;br /&gt;
                totalOffset += (o0 + o1 + o2);&lt;br /&gt;
            } else if ($table.hasClass(&#039;themedcon4-table&#039;)) {&lt;br /&gt;
                var cells = this.children;&lt;br /&gt;
                for (var i = 0; i &amp;lt;= 4; i++) {&lt;br /&gt;
                    var idx = 3 + i;&lt;br /&gt;
                    var o = num(cells[idx] &amp;amp;&amp;amp; cells[idx].textContent);&lt;br /&gt;
                    offsets[i] = (offsets[i] || 0) + o;&lt;br /&gt;
                    totalOffset += o;&lt;br /&gt;
                }&lt;br /&gt;
            } else {&lt;br /&gt;
                var i = 0;&lt;br /&gt;
                while ($tr.attr(&#039;data-offset-&#039; + i) !== undefined) {&lt;br /&gt;
                    var o = num($tr.attr(&#039;data-offset-&#039; + i));&lt;br /&gt;
                    offsets[i] = (offsets[i] || 0) + o;&lt;br /&gt;
                    totalOffset += o;&lt;br /&gt;
                    i++;&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        });&lt;br /&gt;
        return { offsets: offsets, totalOffset: totalOffset };&lt;br /&gt;
    }&lt;br /&gt;
    $.getJSON = function () {&lt;br /&gt;
        var args = Array.prototype.slice.call(arguments);&lt;br /&gt;
        var dataArg = null;&lt;br /&gt;
        if (args.length &amp;gt;= 2 &amp;amp;&amp;amp; typeof args[1] === &#039;object&#039;) {&lt;br /&gt;
            dataArg = args[1];&lt;br /&gt;
        } else if (args.length === 1 &amp;amp;&amp;amp; typeof args[0] === &#039;object&#039;) {&lt;br /&gt;
            dataArg = args[0];&lt;br /&gt;
        }&lt;br /&gt;
        var jq = _getJSON.apply($, args);&lt;br /&gt;
        try {&lt;br /&gt;
            if (dataArg &amp;amp;&amp;amp; dataArg.controller === &#039;DiscussionThread&#039; &amp;amp;&amp;amp; dataArg.method === &#039;getThread&#039; &amp;amp;&amp;amp; dataArg.threadId) {&lt;br /&gt;
                jq.done(function (result) {&lt;br /&gt;
                    try {&lt;br /&gt;
                        if (!result || !result.poll || !Array.isArray(result.poll.answers)) return;&lt;br /&gt;
                        var threadId = String(dataArg.threadId);&lt;br /&gt;
                        var collected = collectOffsetsForThread(threadId);&lt;br /&gt;
                        var offsets = collected.offsets || [];&lt;br /&gt;
                        var totalOffset = collected.totalOffset || 0;&lt;br /&gt;
                        var sumAdded = 0;&lt;br /&gt;
                        for (var i = 0; i &amp;lt; result.poll.answers.length; i++) {&lt;br /&gt;
                            var add = num(offsets[i]);&lt;br /&gt;
                            if (add) {&lt;br /&gt;
                                result.poll.answers[i].votes = (num(result.poll.answers[i].votes) + add);&lt;br /&gt;
                                sumAdded += add;&lt;br /&gt;
                            }&lt;br /&gt;
                        }&lt;br /&gt;
                        if (sumAdded) {&lt;br /&gt;
                            result.poll.totalVotes = num(result.poll.totalVotes) + sumAdded;&lt;br /&gt;
                        }&lt;br /&gt;
                    } catch (e) {&lt;br /&gt;
                        console.error(&#039;vote-offset-interceptor inner error&#039;, e);&lt;br /&gt;
                    }&lt;br /&gt;
                });&lt;br /&gt;
            }&lt;br /&gt;
        } catch (e) {&lt;br /&gt;
            console.error(&#039;vote-offset-interceptor attach error&#039;, e);&lt;br /&gt;
        }&lt;br /&gt;
        return jq;&lt;br /&gt;
    };&lt;br /&gt;
})();&lt;br /&gt;
&lt;br /&gt;
// 投票&lt;br /&gt;
var config = config || mw.config.get();&lt;br /&gt;
mw.hook(&amp;quot;wikipage.content&amp;quot;).add(function () {&lt;br /&gt;
    if (![&amp;quot;view&amp;quot;, &amp;quot;edit&amp;quot;, &amp;quot;submit&amp;quot;].includes(config.wgAction)) return;&lt;br /&gt;
    if (window.NervieJS) return;&lt;br /&gt;
    window.NervieJS = true;&lt;br /&gt;
    mw.loader.load(&amp;quot;mediawiki.util&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    $(&amp;quot;.talescon-table tbody tr&amp;quot;).each(function () {&lt;br /&gt;
        var thisElement = this;&lt;br /&gt;
        $.getJSON(mw.util.wikiScript(&amp;quot;wikia&amp;quot;), {&lt;br /&gt;
            controller: &amp;quot;DiscussionThread&amp;quot;,&lt;br /&gt;
            method: &amp;quot;getThread&amp;quot;,&lt;br /&gt;
            format: &amp;quot;json&amp;quot;,&lt;br /&gt;
            threadId: this.getAttribute(&amp;quot;data-vote-id&amp;quot;)&lt;br /&gt;
        }).done(function (result) {&lt;br /&gt;
            thisElement.children[2].textContent = result.poll.answers[0].votes;&lt;br /&gt;
            thisElement.children[3].textContent = result.poll.answers[1].votes;&lt;br /&gt;
            thisElement.children[4].textContent = result.poll.answers[2].votes;&lt;br /&gt;
            thisElement.children[5].textContent = ((result.poll.answers[0].votes - result.poll.answers[2].votes) / result.poll.totalVotes).toFixed(4);&lt;br /&gt;
        });&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    $(&amp;quot;.themedcon4-table tbody tr&amp;quot;).each(function () {&lt;br /&gt;
        var cells = this.children;&lt;br /&gt;
        $.getJSON(mw.util.wikiScript(&amp;quot;wikia&amp;quot;), {&lt;br /&gt;
            controller: &amp;quot;DiscussionThread&amp;quot;,&lt;br /&gt;
            method: &amp;quot;getThread&amp;quot;,&lt;br /&gt;
            format: &amp;quot;json&amp;quot;,&lt;br /&gt;
            threadId: this.getAttribute(&amp;quot;data-vote-id&amp;quot;)&lt;br /&gt;
        }).done(function (result) {&lt;br /&gt;
            cells[3].textContent = result.poll.answers[0].votes;&lt;br /&gt;
            cells[4].textContent = result.poll.answers[1].votes;&lt;br /&gt;
            cells[5].textContent = result.poll.answers[2].votes;&lt;br /&gt;
            cells[6].textContent = result.poll.answers[3].votes;&lt;br /&gt;
            cells[7].textContent = result.poll.answers[4].votes;&lt;br /&gt;
            cells[8].textContent = (&lt;br /&gt;
                (result.poll.answers[0].votes&lt;br /&gt;
                    + result.poll.answers[1].votes / 2&lt;br /&gt;
                    - result.poll.answers[3].votes / 2&lt;br /&gt;
                    - result.poll.answers[4].votes) / result.poll.totalVotes&lt;br /&gt;
            ).toFixed(4);&lt;br /&gt;
        });&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    $.getJSON(mw.util.wikiScript(&amp;quot;index&amp;quot;), {&lt;br /&gt;
        title: &amp;quot;User:HyperNervie/竞赛2.json&amp;quot;,&lt;br /&gt;
        action: &amp;quot;raw&amp;quot;,&lt;br /&gt;
        ctype: &amp;quot;application/json&amp;quot;&lt;br /&gt;
    }).done(function (result, status) {&lt;br /&gt;
        if (status != &amp;quot;success&amp;quot; || typeof (result) != &amp;quot;object&amp;quot;) return;&lt;br /&gt;
        var entries_loaded = 0;&lt;br /&gt;
        mw.hook(&amp;quot;pollLoader.loaded&amp;quot;).add(function () {&lt;br /&gt;
            if (++entries_loaded &amp;lt; result.length) return;&lt;br /&gt;
            result.sort(function (a, b) { return b.rating - a.rating; });&lt;br /&gt;
            $(&amp;quot;table.contest-results tbody&amp;quot;).empty();&lt;br /&gt;
            result.forEach(function (entry, place) {&lt;br /&gt;
                $(&amp;quot;table.contest-results tbody&amp;quot;).append(&lt;br /&gt;
                    &amp;quot;&amp;lt;tr&amp;gt;&amp;quot; +&lt;br /&gt;
                    &amp;quot;&amp;lt;td&amp;gt;&amp;quot; + (place + 1) + &amp;quot;&amp;lt;/td&amp;gt;&amp;quot; +&lt;br /&gt;
                    &amp;quot;&amp;lt;td&amp;gt;&amp;quot; +&lt;br /&gt;
                    &#039;&amp;lt;a href=&amp;quot;&#039; + mw.util.getUrl(entry.name) + &#039;&amp;quot; &#039; +&lt;br /&gt;
                    &#039;title=&amp;quot;&#039; + entry.name + &#039;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                    (entry.title || entry.name) +&lt;br /&gt;
                    &amp;quot;&amp;lt;/a&amp;gt;&amp;quot; +&lt;br /&gt;
                    &amp;quot;&amp;lt;/td&amp;gt;&amp;quot; +&lt;br /&gt;
                    &amp;quot;&amp;lt;td&amp;gt;&amp;quot; +&lt;br /&gt;
                    &#039;&amp;lt;a href=&amp;quot;&#039; + mw.util.getUrl(&amp;quot;User:&amp;quot; + entry.author) + &#039;&amp;quot; &#039; +&lt;br /&gt;
                    &#039;title=&amp;quot;User:&#039; + entry.author + &#039;&amp;quot;&amp;gt;&#039; +&lt;br /&gt;
                    entry.author +&lt;br /&gt;
                    &amp;quot;&amp;lt;/a&amp;gt;&amp;quot; +&lt;br /&gt;
                    &amp;quot;&amp;lt;/td&amp;gt;&amp;quot; +&lt;br /&gt;
                    &amp;quot;&amp;lt;td&amp;gt;&amp;quot; + entry.upvote + &amp;quot;&amp;lt;/td&amp;gt;&amp;quot; +&lt;br /&gt;
                    &amp;quot;&amp;lt;td&amp;gt;&amp;quot; + entry.novote + &amp;quot;&amp;lt;/td&amp;gt;&amp;quot; +&lt;br /&gt;
                    &amp;quot;&amp;lt;td&amp;gt;&amp;quot; + entry.downvote + &amp;quot;&amp;lt;/td&amp;gt;&amp;quot; +&lt;br /&gt;
                    &amp;quot;&amp;lt;td&amp;gt;&amp;quot; + entry.rating.toFixed(4) + &amp;quot;&amp;lt;/td&amp;gt;&amp;quot; +&lt;br /&gt;
                    &amp;quot;&amp;lt;/tr&amp;gt;&amp;quot;&lt;br /&gt;
                );&lt;br /&gt;
            });&lt;br /&gt;
            $(&amp;quot;table.contest-results&amp;quot;).makeCollapsible();&lt;br /&gt;
        });&lt;br /&gt;
        result.forEach(function (entry) {&lt;br /&gt;
            $.getJSON(mw.util.wikiScript(&amp;quot;wikia&amp;quot;), {&lt;br /&gt;
                controller: &amp;quot;DiscussionThread&amp;quot;,&lt;br /&gt;
                method: &amp;quot;getThread&amp;quot;,&lt;br /&gt;
                format: &amp;quot;json&amp;quot;,&lt;br /&gt;
                threadId: entry.poll_id&lt;br /&gt;
            }).done(function (result, status) {&lt;br /&gt;
                if (status != &amp;quot;success&amp;quot; || typeof (result) != &amp;quot;object&amp;quot;) return;&lt;br /&gt;
                entry.upvote = result.poll.answers[0].votes;&lt;br /&gt;
                entry.novote = result.poll.answers[1].votes;&lt;br /&gt;
                entry.downvote = result.poll.answers[2].votes;&lt;br /&gt;
                entry.rating = (entry.upvote - entry.downvote) / result.poll.totalVotes;&lt;br /&gt;
                mw.hook(&amp;quot;pollLoader.loaded&amp;quot;).fire();&lt;br /&gt;
            });&lt;br /&gt;
        });&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    $.getJSON(mw.util.wikiScript(&amp;quot;api&amp;quot;), {&lt;br /&gt;
        action: &amp;quot;query&amp;quot;,&lt;br /&gt;
        formatversion: 2,&lt;br /&gt;
        format: &amp;quot;json&amp;quot;,&lt;br /&gt;
        meta: &amp;quot;siteinfo&amp;quot;,&lt;br /&gt;
        siprop: &amp;quot;interwikimap&amp;quot;,&lt;br /&gt;
        siinlanguagecode: config.wgUserVariant&lt;br /&gt;
    }, function (result, status) {&lt;br /&gt;
        if (status != &amp;quot;success&amp;quot; || typeof (result) != &amp;quot;object&amp;quot; || !result.batchcomplete) return;&lt;br /&gt;
        $(&amp;quot;table.global-interwiki tbody&amp;quot;).empty();&lt;br /&gt;
        $(&amp;quot;table.local-interwiki tbody&amp;quot;).empty();&lt;br /&gt;
        $(&amp;quot;table.interlang tbody&amp;quot;).empty();&lt;br /&gt;
        result.query.interwikimap.forEach(function (obj) {&lt;br /&gt;
            if (!obj.local)&lt;br /&gt;
                $(&amp;quot;table.global-interwiki tbody&amp;quot;).append(&lt;br /&gt;
                    &amp;quot;&amp;lt;tr&amp;gt;&amp;quot; +&lt;br /&gt;
                    &amp;quot;&amp;lt;td&amp;gt;&amp;quot; + obj.prefix.toLowerCase() + &amp;quot;&amp;lt;/td&amp;gt;&amp;quot; +&lt;br /&gt;
                    &amp;quot;&amp;lt;td&amp;gt;&amp;quot; + obj.url + &amp;quot;&amp;lt;/td&amp;gt;&amp;quot; +&lt;br /&gt;
                    &amp;quot;&amp;lt;/tr&amp;gt;&amp;quot;&lt;br /&gt;
                );&lt;br /&gt;
            else if (obj.language)&lt;br /&gt;
                $(&amp;quot;table.interlang tbody&amp;quot;).append(&lt;br /&gt;
                    &amp;quot;&amp;lt;tr&amp;gt;&amp;quot; +&lt;br /&gt;
                    &amp;quot;&amp;lt;td&amp;gt;&amp;quot; + obj.prefix + &amp;quot;&amp;lt;/td&amp;gt;&amp;quot; +&lt;br /&gt;
                    &amp;quot;&amp;lt;td&amp;gt;&amp;quot; + obj.language + &amp;quot;&amp;lt;/td&amp;gt;&amp;quot; +&lt;br /&gt;
                    &amp;quot;&amp;lt;td&amp;gt;&amp;quot; + obj.url + &amp;quot;&amp;lt;/td&amp;gt;&amp;quot; +&lt;br /&gt;
                    &amp;quot;&amp;lt;/tr&amp;gt;&amp;quot;&lt;br /&gt;
                );&lt;br /&gt;
            else&lt;br /&gt;
                $(&amp;quot;table.local-interwiki tbody&amp;quot;).append(&lt;br /&gt;
                    &amp;quot;&amp;lt;tr&amp;gt;&amp;quot; +&lt;br /&gt;
                    &amp;quot;&amp;lt;td&amp;gt;&amp;quot; + obj.prefix.toLowerCase() + &amp;quot;&amp;lt;/td&amp;gt;&amp;quot; +&lt;br /&gt;
                    &amp;quot;&amp;lt;td&amp;gt;&amp;quot; + obj.url + &amp;quot;&amp;lt;/td&amp;gt;&amp;quot; +&lt;br /&gt;
                    &amp;quot;&amp;lt;/tr&amp;gt;&amp;quot;&lt;br /&gt;
                );&lt;br /&gt;
        });&lt;br /&gt;
        $(&amp;quot;table.global-interwiki&amp;quot;).makeCollapsible();&lt;br /&gt;
        $(&amp;quot;table.local-interwiki&amp;quot;).makeCollapsible();&lt;br /&gt;
        $(&amp;quot;table.interlang&amp;quot;).makeCollapsible();&lt;br /&gt;
    });&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
// 这是一个假的用户登录框，仅仅用于页面的演出效果，这意味着这个用户登陆框不会记录用户的任何密码或用户名信息，也不会对用户的信息安全造成任何威胁。使用这些代码的页面创建者会在当页自定义一个假的用户名和密码。如果用户不想，这个假的用户登录框不会泄露用户的任何真实信息。&lt;br /&gt;
// This is a fake user login From, only used for the page&#039;s visual effect. It means that this login box won&#039;t record any user&#039;s password or username information, nor will it pose any threat to user information security. The page creator using this code can customize a fake username and password on the page. If users don&#039;t want to, this fake login Form won&#039;t leak any real information about them.&lt;br /&gt;
// This has NOTHING to do with Fandom Login Forms.&lt;br /&gt;
mw.loader.using([&#039;mediawiki.util&#039;]).then(function () {&lt;br /&gt;
  var THEME_KEYS = {&lt;br /&gt;
    bg: &#039;--fl-bg&#039;,&lt;br /&gt;
    panel: &#039;--fl-panel&#039;,&lt;br /&gt;
    accent: &#039;--fl-accent&#039;,&lt;br /&gt;
    text: &#039;--fl-text&#039;,&lt;br /&gt;
    muted: &#039;--fl-muted&#039;,&lt;br /&gt;
    danger: &#039;--fl-danger&#039;,&lt;br /&gt;
    border: &#039;--fl-border&#039;,&lt;br /&gt;
    radius: &#039;--fl-radius&#039;,&lt;br /&gt;
    font: &#039;--fl-font&#039;,&lt;br /&gt;
    titleSize: &#039;--fl-title-size&#039;,&lt;br /&gt;
    width: &#039;--fl-width&#039;,&lt;br /&gt;
    pad: &#039;--fl-pad&#039;,&lt;br /&gt;
    inputBg: &#039;--fl-input-bg&#039;,&lt;br /&gt;
    inputBorder: &#039;--fl-input-border&#039;,&lt;br /&gt;
    buttonText: &#039;--fl-button-text&#039;&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
  function addStyles() {&lt;br /&gt;
    if (document.getElementById(&#039;fandom-login-gate-style&#039;)) return;&lt;br /&gt;
    var style = document.createElement(&#039;style&#039;);&lt;br /&gt;
    style.id = &#039;fandom-login-gate-style&#039;;&lt;br /&gt;
    style.textContent = [&lt;br /&gt;
      &#039;.fandom-login-gate{&#039;,&lt;br /&gt;
      &#039;  --fl-bg:#1a1f2e;&#039;,&lt;br /&gt;
      &#039;  --fl-panel:#243044;&#039;,&lt;br /&gt;
      &#039;  --fl-accent:#5b9fd4;&#039;,&lt;br /&gt;
      &#039;  --fl-text:#e8eef5;&#039;,&lt;br /&gt;
      &#039;  --fl-muted:#9aa8bc;&#039;,&lt;br /&gt;
      &#039;  --fl-danger:#e07070;&#039;,&lt;br /&gt;
      &#039;  --fl-border:1px solid #3a4a63;&#039;,&lt;br /&gt;
      &#039;  --fl-radius:0;&#039;,&lt;br /&gt;
      &#039;  --fl-font:Georgia,&amp;quot;Noto Serif SC&amp;quot;,serif;&#039;,&lt;br /&gt;
      &#039;  --fl-title-size:1.35em;&#039;,&lt;br /&gt;
      &#039;  --fl-width:420px;&#039;,&lt;br /&gt;
      &#039;  --fl-pad:1.5em 1.4em 1.3em;&#039;,&lt;br /&gt;
      &#039;  --fl-input-bg:var(--fl-panel);&#039;,&lt;br /&gt;
      &#039;  --fl-input-border:1px solid #4a5d7a;&#039;,&lt;br /&gt;
      &#039;  --fl-button-text:#0f1724;&#039;,&lt;br /&gt;
      &#039;  max-width:var(--fl-width);&#039;,&lt;br /&gt;
      &#039;  margin:1.5em auto;&#039;,&lt;br /&gt;
      &#039;  font-family:var(--fl-font);&#039;,&lt;br /&gt;
      &#039;}&#039;,&lt;br /&gt;
      &#039;.fandom-login-panel{&#039;,&lt;br /&gt;
      &#039;  background:linear-gradient(160deg,color-mix(in srgb,var(--fl-panel) 85%,white),var(--fl-bg));&#039;,&lt;br /&gt;
      &#039;  border:var(--fl-border);&#039;,&lt;br /&gt;
      &#039;  border-radius:var(--fl-radius);&#039;,&lt;br /&gt;
      &#039;  padding:var(--fl-pad);&#039;,&lt;br /&gt;
      &#039;  color:var(--fl-text);&#039;,&lt;br /&gt;
      &#039;}&#039;,&lt;br /&gt;
      &#039;.fandom-login-title{font-size:var(--fl-title-size);letter-spacing:.04em;margin-bottom:1em;text-align:center}&#039;,&lt;br /&gt;
      &#039;.fandom-login-form label{display:block;font-size:.85em;color:var(--fl-muted);margin:.75em 0 .35em}&#039;,&lt;br /&gt;
      &#039;.fandom-login-form input{&#039;,&lt;br /&gt;
      &#039;  width:100%;box-sizing:border-box;&#039;,&lt;br /&gt;
      &#039;  background:var(--fl-input-bg);&#039;,&lt;br /&gt;
      &#039;  border:var(--fl-input-border);&#039;,&lt;br /&gt;
      &#039;  border-radius:var(--fl-radius);&#039;,&lt;br /&gt;
      &#039;  color:var(--fl-text);&#039;,&lt;br /&gt;
      &#039;  padding:.55em .7em;outline:none;&#039;,&lt;br /&gt;
      &#039;  font-family:inherit;&#039;,&lt;br /&gt;
      &#039;}&#039;,&lt;br /&gt;
      &#039;.fandom-login-form input:focus{border-color:var(--fl-accent)}&#039;,&lt;br /&gt;
      &#039;.fandom-login-form button{&#039;,&lt;br /&gt;
      &#039;  display:block;width:100%;margin-top:1.1em;padding:.65em;&#039;,&lt;br /&gt;
      &#039;  background:var(--fl-accent);border:0;&#039;,&lt;br /&gt;
      &#039;  border-radius:var(--fl-radius);&#039;,&lt;br /&gt;
      &#039;  color:var(--fl-button-text);font-weight:700;cursor:pointer;&#039;,&lt;br /&gt;
      &#039;  font-family:inherit;&#039;,&lt;br /&gt;
      &#039;}&#039;,&lt;br /&gt;
      &#039;.fandom-login-form button:hover{filter:brightness(1.08)}&#039;,&lt;br /&gt;
      &#039;.fandom-login-error{color:var(--fl-danger);text-align:center;margin:.8em 0 0;font-size:.9em}&#039;,&lt;br /&gt;
      &#039;.fl-expect-user,.fl-expect-pass,.fl-theme{display:none!important}&#039;,&lt;br /&gt;
      &#039;.fandom-login-gate:not(.is-unlocked) .fandom-login-secret{display:none!important}&#039;,&lt;br /&gt;
      &#039;.fandom-login-gate.is-unlocked .fandom-login-panel{display:none!important}&#039;,&lt;br /&gt;
      &#039;.fandom-login-gate.is-unlocked .fandom-login-secret{display:block!important}&#039;&lt;br /&gt;
    ].join(&#039;&#039;);&lt;br /&gt;
    document.head.appendChild(style);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function readCred($gate, name) {&lt;br /&gt;
    var $node = $gate.find(&#039;.fl-expect-&#039; + name).first();&lt;br /&gt;
    if ($node.length) return $.trim($node.text());&lt;br /&gt;
    return String($gate.attr(&#039;data-&#039; + name) || &#039;&#039;);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function applyTheme($gate) {&lt;br /&gt;
    var el = $gate.get(0);&lt;br /&gt;
    if (!el) return;&lt;br /&gt;
    Object.keys(THEME_KEYS).forEach(function (key) {&lt;br /&gt;
      var raw = $gate.attr(&#039;data-fl-&#039; + key.toLowerCase()) || $gate.attr(&#039;data-fl-&#039; + key);&lt;br /&gt;
      if (raw) el.style.setProperty(THEME_KEYS[key], raw);&lt;br /&gt;
    });&lt;br /&gt;
    var themeText = $.trim($gate.find(&#039;.fl-theme&#039;).first().text() || &#039;&#039;);&lt;br /&gt;
    if (themeText) {&lt;br /&gt;
      themeText.split(/[;\n]/).forEach(function (pair) {&lt;br /&gt;
        var m = $.trim(pair).match(/^([a-zA-Z]+)\s*:\s*(.+)$/);&lt;br /&gt;
        if (!m) return;&lt;br /&gt;
        var key = m[1];&lt;br /&gt;
        var val = $.trim(m[2]);&lt;br /&gt;
        var map = {&lt;br /&gt;
          bg: &#039;bg&#039;, panel: &#039;panel&#039;, accent: &#039;accent&#039;, text: &#039;text&#039;, muted: &#039;muted&#039;,&lt;br /&gt;
          danger: &#039;danger&#039;, border: &#039;border&#039;, radius: &#039;radius&#039;, font: &#039;font&#039;,&lt;br /&gt;
          width: &#039;width&#039;, pad: &#039;pad&#039;,&lt;br /&gt;
          titlesize: &#039;titleSize&#039;, &#039;title-size&#039;: &#039;titleSize&#039;, titleSize: &#039;titleSize&#039;,&lt;br /&gt;
          inputbg: &#039;inputBg&#039;, &#039;input-bg&#039;: &#039;inputBg&#039;, inputBg: &#039;inputBg&#039;,&lt;br /&gt;
          inputborder: &#039;inputBorder&#039;, &#039;input-border&#039;: &#039;inputBorder&#039;, inputBorder: &#039;inputBorder&#039;,&lt;br /&gt;
          buttontext: &#039;buttonText&#039;, &#039;button-text&#039;: &#039;buttonText&#039;, buttonText: &#039;buttonText&#039;&lt;br /&gt;
        };&lt;br /&gt;
        var normalized = map[key] || map[key.toLowerCase()];&lt;br /&gt;
        if (normalized &amp;amp;&amp;amp; THEME_KEYS[normalized]) {&lt;br /&gt;
          el.style.setProperty(THEME_KEYS[normalized], val);&lt;br /&gt;
        }&lt;br /&gt;
      });&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  function bindGates($root) {&lt;br /&gt;
    addStyles();&lt;br /&gt;
    $root.find(&#039;.fandom-login-gate&#039;).addBack(&#039;.fandom-login-gate&#039;).each(function () {&lt;br /&gt;
      var $gate = $(this);&lt;br /&gt;
      if (!$gate.hasClass(&#039;fandom-login-gate&#039;) || $gate.data(&#039;bound&#039;)) return;&lt;br /&gt;
      $gate.data(&#039;bound&#039;, true);&lt;br /&gt;
      applyTheme($gate);&lt;br /&gt;
      var user = readCred($gate, &#039;user&#039;);&lt;br /&gt;
      var pass = readCred($gate, &#039;pass&#039;);&lt;br /&gt;
      var $form = $gate.find(&#039;.fandom-login-form&#039;);&lt;br /&gt;
      var $error = $gate.find(&#039;.fandom-login-error&#039;);&lt;br /&gt;
&lt;br /&gt;
      $form.empty().append(&lt;br /&gt;
        $(&#039;&amp;lt;label&amp;gt;&#039;).text(&#039;用户名&#039;).append(&lt;br /&gt;
          $(&#039;&amp;lt;input type=&amp;quot;text&amp;quot; class=&amp;quot;fl-user&amp;quot; autocomplete=&amp;quot;off&amp;quot; spellcheck=&amp;quot;false&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
        ),&lt;br /&gt;
        $(&#039;&amp;lt;label&amp;gt;&#039;).text(&#039;密码&#039;).append(&lt;br /&gt;
          $(&#039;&amp;lt;input type=&amp;quot;password&amp;quot; class=&amp;quot;fl-pass&amp;quot; autocomplete=&amp;quot;off&amp;quot;&amp;gt;&#039;)&lt;br /&gt;
        ),&lt;br /&gt;
        $(&#039;&amp;lt;button&amp;gt;&#039;, { type: &#039;button&#039;, &#039;class&#039;: &#039;fl-submit&#039;, text: &#039;解锁&#039; })&lt;br /&gt;
      );&lt;br /&gt;
&lt;br /&gt;
      function tryUnlock() {&lt;br /&gt;
        if ($form.find(&#039;.fl-user&#039;).val() === user &amp;amp;&amp;amp; $form.find(&#039;.fl-pass&#039;).val() === pass) {&lt;br /&gt;
          $error.hide();&lt;br /&gt;
          $gate.addClass(&#039;is-unlocked&#039;);&lt;br /&gt;
        } else {&lt;br /&gt;
          $error.show();&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
      $form.on(&#039;click&#039;, &#039;.fl-submit&#039;, tryUnlock);&lt;br /&gt;
      $form.on(&#039;keydown&#039;, &#039;input&#039;, function (e) {&lt;br /&gt;
        if (e.key === &#039;Enter&#039;) tryUnlock();&lt;br /&gt;
      });&lt;br /&gt;
    });&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  mw.hook(&#039;wikipage.content&#039;).add(bindGates);&lt;br /&gt;
  bindGates($(document));&lt;br /&gt;
});&lt;br /&gt;
&lt;br /&gt;
//67890&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//这是一个假的用户登录框，仅仅用于页面的演出效果，这意味着这个用户登陆框不会记录用户的任何密码或用户名信息，也不会对用户的信息安全造成任何威胁。使用这些代码的页面创建者会在当页自定义一个假的用户名和密码。如果用户不想，这个假的用户登录框不会泄露用户的任何真实信息。&lt;br /&gt;
//This is a fake user login From, only used for the page&#039;s visual effect. It means that this login box won&#039;t record any user&#039;s password or username information, nor will it pose any threat to user information security. The page creator using this code can customize a fake username and password on the page. If users don&#039;t want to, this fake login Form won&#039;t leak any real information about them.&lt;br /&gt;
//This has NOTHING to do with Fandom Login Forms.&lt;/div&gt;</summary>
		<author><name>Aread</name></author>
	</entry>
	<entry>
		<id>http://fandombackroomscn.icu/index.php?title=%E7%94%A8%E6%88%B7:Aread&amp;diff=6</id>
		<title>用户:Aread</title>
		<link rel="alternate" type="text/html" href="http://fandombackroomscn.icu/index.php?title=%E7%94%A8%E6%88%B7:Aread&amp;diff=6"/>
		<updated>2026-08-06T01:54:29Z</updated>

		<summary type="html">&lt;p&gt;Aread：​&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;正版面包是我1111&lt;/div&gt;</summary>
		<author><name>Aread</name></author>
	</entry>
</feed>