From b256c0f8e4446bd82892d04d45e71fd8fd7cd2a4 Mon Sep 17 00:00:00 2001
From: Shu-Ying <1754798088@qq.com>
Date: Thu, 13 Aug 2026 17:25:11 +0800
Subject: [PATCH] =?UTF-8?q?=F0=9F=8E=89=202.0.1.0=E7=89=88=E6=9C=AC?=
=?UTF-8?q?=E5=8F=91=E5=B8=83?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
✨ 重构活动BOSS武将包并新增独立PVP武将包
✨ 完善天书动态难度、过关奖励与羁绊系统
🎨 新增自定义技能选择、羁绊谱册及移动端适配
🔊 整理BOSS配音、图片与模块资源路径
🐛 修复天书关卡、伤害保护及武将包加载问题
---
dist/manifest.json | 2951 +++++++++++++++++
extension.css | 1326 ++++++++
extension.js | 724 +---
function.js | 338 ++
menu.js | 292 +-
.../dead/天书乱斗/kuafu_boss_shuying.mp3 | Bin 0 -> 50219 bytes
.../dead/青青子衿/yuanshu_boss_shuying.mp3 | Bin 0 -> 122776 bytes
.../dead/青青子衿/zhangjiao_boss_shuying.mp3 | Bin 0 -> 43185 bytes
pve/audio/skill/天书乱斗/lieben_shuying1.mp3 | Bin 0 -> 38328 bytes
.../skill/天书乱斗/yinjiang_shuying1.mp3 | Bin 0 -> 44717 bytes
pve/audio/skill/天书乱斗/zhuri_shuying1.mp3 | Bin 0 -> 37542 bytes
pve/audio/skill/青青子衿/duoxi_shuying1.mp3 | Bin 0 -> 20476 bytes
pve/audio/skill/青青子衿/guidao_shuying1.mp3 | Bin 0 -> 36288 bytes
pve/audio/skill/青青子衿/leiji_shuying1.mp3 | Bin 0 -> 28556 bytes
pve/audio/skill/青青子衿/wangzun_shuying1.mp3 | Bin 0 -> 98220 bytes
pve/audio/skill/青青子衿/yinlei_shuying1.mp3 | Bin 0 -> 37751 bytes
pve/audio/skill/青青子衿/yongsi_shuying1.mp3 | Bin 0 -> 121208 bytes
.../skill/青青子衿/zhuzheng_shuying1.mp3 | Bin 0 -> 33154 bytes
pve/boss/sets.js | 2 +-
pve/boss/sets/qingqingzijin/character.js | 25 +
.../sets/qingqingzijin/dynamicTranslate.js | 22 +
pve/boss/sets/qingqingzijin/skill.js | 510 +++
pve/boss/sets/qingqingzijin/translate.js | 16 +
pve/boss/sets/tianshu/character.js | 24 +-
pve/boss/sets/tianshu/dynamicTranslate.js | 60 +
pve/boss/sets/tianshu/skill.js | 407 ++-
pve/boss/sets/tianshu/translate.js | 22 +-
pve/boss/sets/tianshu/voices.js | 11 +-
pve/boss/sets/zhuoguiquxie/character.js | 30 +-
pve/boss/sets/zhuoguiquxie/index.js | 2 +-
pve/boss/sets/zhuoguiquxie/skill.js | 96 +-
pve/boss/sets/zhuoguiquxie/sort.js | 2 +-
pve/boss/sets/zhuoguiquxie/voices.js | 35 +-
pve/boss/voices.js | 16 +-
.../baiwuchang_boss_shuying.png | Bin
.../baowei_boss_shuying.png | Bin
.../guiwang_boss_shuying.png | Bin
.../heibaiwuchang_boss_shuying.png | Bin
.../heiwuchang_boss_shuying.png | Bin
.../huangfeng_boss_shuying.png | Bin
.../mamian_boss_shuying.png | Bin
.../mengpo_boss_shuying.png | Bin
.../niaozui_boss_shuying.png | Bin
.../niutou_boss_shuying.png | Bin
.../niutoumamian_boss_shuying.png | Bin
.../riyeyoushen_boss_shuying.png | Bin
.../yanluowang_boss_shuying.png | Bin
.../yvsai_boss_shuying.png | Bin
tianshu/bondSkills.js | 1273 +++++++
tianshu/config.js | 585 +++-
tianshu/extension.js | 444 ++-
tools/generate_manifest.py | 204 ++
tools/manifest_config.json | 21 +
update.txt | 40 +-
54 files changed, 8508 insertions(+), 970 deletions(-)
create mode 100644 dist/manifest.json
create mode 100644 pve/audio/dead/天书乱斗/kuafu_boss_shuying.mp3
create mode 100644 pve/audio/dead/青青子衿/yuanshu_boss_shuying.mp3
create mode 100644 pve/audio/dead/青青子衿/zhangjiao_boss_shuying.mp3
create mode 100644 pve/audio/skill/天书乱斗/lieben_shuying1.mp3
create mode 100644 pve/audio/skill/天书乱斗/yinjiang_shuying1.mp3
create mode 100644 pve/audio/skill/天书乱斗/zhuri_shuying1.mp3
create mode 100644 pve/audio/skill/青青子衿/duoxi_shuying1.mp3
create mode 100644 pve/audio/skill/青青子衿/guidao_shuying1.mp3
create mode 100644 pve/audio/skill/青青子衿/leiji_shuying1.mp3
create mode 100644 pve/audio/skill/青青子衿/wangzun_shuying1.mp3
create mode 100644 pve/audio/skill/青青子衿/yinlei_shuying1.mp3
create mode 100644 pve/audio/skill/青青子衿/yongsi_shuying1.mp3
create mode 100644 pve/audio/skill/青青子衿/zhuzheng_shuying1.mp3
rename pve/images/{捉鬼驱邪 => 驱鬼逐邪}/baiwuchang_boss_shuying.png (100%)
rename pve/images/{捉鬼驱邪 => 驱鬼逐邪}/baowei_boss_shuying.png (100%)
rename pve/images/{捉鬼驱邪 => 驱鬼逐邪}/guiwang_boss_shuying.png (100%)
rename pve/images/{捉鬼驱邪 => 驱鬼逐邪}/heibaiwuchang_boss_shuying.png (100%)
rename pve/images/{捉鬼驱邪 => 驱鬼逐邪}/heiwuchang_boss_shuying.png (100%)
rename pve/images/{捉鬼驱邪 => 驱鬼逐邪}/huangfeng_boss_shuying.png (100%)
rename pve/images/{捉鬼驱邪 => 驱鬼逐邪}/mamian_boss_shuying.png (100%)
rename pve/images/{捉鬼驱邪 => 驱鬼逐邪}/mengpo_boss_shuying.png (100%)
rename pve/images/{捉鬼驱邪 => 驱鬼逐邪}/niaozui_boss_shuying.png (100%)
rename pve/images/{捉鬼驱邪 => 驱鬼逐邪}/niutou_boss_shuying.png (100%)
rename pve/images/{捉鬼驱邪 => 驱鬼逐邪}/niutoumamian_boss_shuying.png (100%)
rename pve/images/{捉鬼驱邪 => 驱鬼逐邪}/riyeyoushen_boss_shuying.png (100%)
rename pve/images/{捉鬼驱邪 => 驱鬼逐邪}/yanluowang_boss_shuying.png (100%)
rename pve/images/{捉鬼驱邪 => 驱鬼逐邪}/yvsai_boss_shuying.png (100%)
create mode 100644 tianshu/bondSkills.js
create mode 100644 tools/generate_manifest.py
create mode 100644 tools/manifest_config.json
diff --git a/dist/manifest.json b/dist/manifest.json
new file mode 100644
index 0000000..522863a
--- /dev/null
+++ b/dist/manifest.json
@@ -0,0 +1,2951 @@
+{
+ "version": "2.0.1.0",
+ "generated_at": "2026-08-13T09:24:08.169785+00:00",
+ "algorithm": "sha256",
+ "file_count": 276,
+ "folder_sha256": "2c4cb3f294d31638f276b0f37607ea30877b309307e5ee1b87d85052bf5ed663",
+ "core": [
+ "extension.js",
+ "menu.js",
+ "function.js",
+ "update.js",
+ "mengsan/mode.js",
+ "mengsan/config.js",
+ "mengsan/state.js",
+ "mengsan/style.css",
+ "tianshu/extension.js",
+ "tianshu/config.js",
+ "pve/boss/index.js",
+ "pve/boss/character.js",
+ "pve/boss/skill.js",
+ "pve/boss/dynamicTranslate.js",
+ "pve/boss/translate.js"
+ ],
+ "assets": [
+ "LICENSE",
+ "character/audio/zuoci/huashen_shuying1.mp3",
+ "character/audio/zuoci/huashen_shuying2.mp3",
+ "character/audio/zuoci/jihun_shuying1.mp3",
+ "character/audio/zuoci/jihun_shuying2.mp3",
+ "character/audio/zuoci/xinsheng_shuying1.mp3",
+ "character/audio/zuoci/xinsheng_shuying2.mp3",
+ "character/audio/zuoci/zuoci_shuying.mp3",
+ "character/character.js",
+ "character/characterFilter.js",
+ "character/characterTitle.js",
+ "character/dynamicTranslate.js",
+ "character/images/zuoci_shuying.jpg",
+ "character/index.js",
+ "character/intro.js",
+ "character/perfectPairs.js",
+ "character/skill.js",
+ "character/sort.js",
+ "character/translate.js",
+ "character/voices.js",
+ "extension.css",
+ "pve/audio/dead/十二生肖/chenlong.mp3",
+ "pve/audio/dead/十二生肖/chouniu.mp3",
+ "pve/audio/dead/十二生肖/haizhu.mp3",
+ "pve/audio/dead/十二生肖/maotu.mp3",
+ "pve/audio/dead/十二生肖/shenhou.mp3",
+ "pve/audio/dead/十二生肖/sishe.mp3",
+ "pve/audio/dead/十二生肖/weiyang.mp3",
+ "pve/audio/dead/十二生肖/wuma.mp3",
+ "pve/audio/dead/十二生肖/xvgou.mp3",
+ "pve/audio/dead/十二生肖/yinhu.mp3",
+ "pve/audio/dead/十二生肖/youji.mp3",
+ "pve/audio/dead/十二生肖/zishu.mp3",
+ "pve/audio/dead/天书乱斗/hanba_boss_shuying.mp3",
+ "pve/audio/dead/天书乱斗/kuafu_boss_shuying.mp3",
+ "pve/audio/dead/天书乱斗/xuannv_boss_shuying.mp3",
+ "pve/audio/dead/青青子衿/caocao_boss_shuying.mp3",
+ "pve/audio/dead/青青子衿/dongzhuo_boss_shuying.mp3",
+ "pve/audio/dead/青青子衿/lvbu_boss_shuying.mp3",
+ "pve/audio/dead/青青子衿/simayi_boss_shuying.mp3",
+ "pve/audio/dead/青青子衿/yuanshu_boss_shuying.mp3",
+ "pve/audio/dead/青青子衿/zhangjiao_boss_shuying.mp3",
+ "pve/audio/dead/驱鬼逐邪/guiwang.mp3",
+ "pve/audio/dead/驱鬼逐邪/heibaiwuchang.mp3",
+ "pve/audio/dead/驱鬼逐邪/niutoumamian.mp3",
+ "pve/audio/dead/驱鬼逐邪/riyeyoushen.mp3",
+ "pve/audio/skill/十二生肖/chenlong_shuying1.mp3",
+ "pve/audio/skill/十二生肖/chouniu_shuying1.mp3",
+ "pve/audio/skill/十二生肖/haizhu_shuying1.mp3",
+ "pve/audio/skill/十二生肖/moutu_shuying1.mp3",
+ "pve/audio/skill/十二生肖/shenhou_shuying1.mp3",
+ "pve/audio/skill/十二生肖/sishe_shuying1.mp3",
+ "pve/audio/skill/十二生肖/weiyang_shuying1.mp3",
+ "pve/audio/skill/十二生肖/wuma_shuying1.mp3",
+ "pve/audio/skill/十二生肖/xvgou_shuying1.mp3",
+ "pve/audio/skill/十二生肖/yinhu_shuying1.mp3",
+ "pve/audio/skill/十二生肖/youji_shuying1.mp3",
+ "pve/audio/skill/十二生肖/zishu_shuying1.mp3",
+ "pve/audio/skill/天书乱斗/dishi_shuying1.mp3",
+ "pve/audio/skill/天书乱斗/fenshi_shuying1.mp3",
+ "pve/audio/skill/天书乱斗/fenshi_shuying2.mp3",
+ "pve/audio/skill/天书乱斗/jiutian_shuying1.mp3",
+ "pve/audio/skill/天书乱斗/lieben_shuying1.mp3",
+ "pve/audio/skill/天书乱斗/xinji_shuying1.mp3",
+ "pve/audio/skill/天书乱斗/xinji_shuying2.mp3",
+ "pve/audio/skill/天书乱斗/xuanlie_shuying1.mp3",
+ "pve/audio/skill/天书乱斗/yinjiang_shuying1.mp3",
+ "pve/audio/skill/天书乱斗/zhiri_shuying1.mp3",
+ "pve/audio/skill/天书乱斗/zhiri_shuying2.mp3",
+ "pve/audio/skill/天书乱斗/zhuri_shuying1.mp3",
+ "pve/audio/skill/青青子衿/baonue_shuying1.mp3",
+ "pve/audio/skill/青青子衿/duoxi_shuying1.mp3",
+ "pve/audio/skill/青青子衿/fankui_shuying1.mp3",
+ "pve/audio/skill/青青子衿/guicai_shuying1.mp3",
+ "pve/audio/skill/青青子衿/guidao_shuying1.mp3",
+ "pve/audio/skill/青青子衿/jianxiong_shuying1.mp3",
+ "pve/audio/skill/青青子衿/jiuchi_shuying1.mp3",
+ "pve/audio/skill/青青子衿/langgu_shuying1.mp3",
+ "pve/audio/skill/青青子衿/leiji_shuying1.mp3",
+ "pve/audio/skill/青青子衿/lingba_shuying1.mp3",
+ "pve/audio/skill/青青子衿/qubu_shuying1.mp3",
+ "pve/audio/skill/青青子衿/roulin_shuying1.mp3",
+ "pve/audio/skill/青青子衿/shenij_shuying1.mp3",
+ "pve/audio/skill/青青子衿/shenij_shuying2.mp3",
+ "pve/audio/skill/青青子衿/wangzun_shuying1.mp3",
+ "pve/audio/skill/青青子衿/wushuang_shuying1.mp3",
+ "pve/audio/skill/青青子衿/wushuang_shuying2.mp3",
+ "pve/audio/skill/青青子衿/yinlei_shuying1.mp3",
+ "pve/audio/skill/青青子衿/yishen_shuying1.mp3",
+ "pve/audio/skill/青青子衿/yongsi_shuying1.mp3",
+ "pve/audio/skill/青青子衿/yuanlv_shuying1.mp3",
+ "pve/audio/skill/青青子衿/zhanjia_shuying1.mp3",
+ "pve/audio/skill/青青子衿/zhanjia_shuying2.mp3",
+ "pve/audio/skill/青青子衿/zhuzheng_shuying1.mp3",
+ "pve/audio/skill/驱鬼逐邪/anchao_shuying1.mp3",
+ "pve/audio/skill/驱鬼逐邪/aotang_shuying1.mp3",
+ "pve/audio/skill/驱鬼逐邪/bingyi_shuying1.mp3",
+ "pve/audio/skill/驱鬼逐邪/danshi_shuying1.mp3",
+ "pve/audio/skill/驱鬼逐邪/dianwei_shuying1.mp3",
+ "pve/audio/skill/驱鬼逐邪/duane_shuying1.mp3",
+ "pve/audio/skill/驱鬼逐邪/duzhen_shuying1.mp3",
+ "pve/audio/skill/驱鬼逐邪/eli_shuying1.mp3",
+ "pve/audio/skill/驱鬼逐邪/guimei_shuying1.mp3",
+ "pve/audio/skill/驱鬼逐邪/guixi_shuying1.mp3",
+ "pve/audio/skill/驱鬼逐邪/guizhao_shuying1.mp3",
+ "pve/audio/skill/驱鬼逐邪/huiyun_shuying1.mp3",
+ "pve/audio/skill/驱鬼逐邪/jizhou_shuying1.mp3",
+ "pve/audio/skill/驱鬼逐邪/manji_shuying1.mp3",
+ "pve/audio/skill/驱鬼逐邪/mingchong_shuying1.mp3",
+ "pve/audio/skill/驱鬼逐邪/mizui_shuying1.mp3",
+ "pve/audio/skill/驱鬼逐邪/qiangzheng_shuying1.mp3",
+ "pve/audio/skill/驱鬼逐邪/shiyu_shuying1.mp3",
+ "pve/audio/skill/驱鬼逐邪/suoxue_shuying1.mp3",
+ "pve/audio/skill/驱鬼逐邪/taiping_shuying1.mp3",
+ "pve/audio/skill/驱鬼逐邪/xiaoshou_shuying1.mp3",
+ "pve/audio/skill/驱鬼逐邪/xingpan_shuying1.mp3",
+ "pve/audio/skill/驱鬼逐邪/xixing_shuying1.mp3",
+ "pve/audio/skill/驱鬼逐邪/xuanpan_shuying1.mp3",
+ "pve/audio/skill/驱鬼逐邪/xuanpan_shuying2.mp3",
+ "pve/audio/skill/驱鬼逐邪/yezhong_shuying1.mp3",
+ "pve/audio/skill/驱鬼逐邪/yunju_shuying1.mp3",
+ "pve/audio/skill/驱鬼逐邪/zhoucha_shuying1.mp3",
+ "pve/boss/card.js",
+ "pve/boss/characterFilter.js",
+ "pve/boss/characterTitle.js",
+ "pve/boss/intro.js",
+ "pve/boss/merge.js",
+ "pve/boss/perfectPairs.js",
+ "pve/boss/pinyin.js",
+ "pve/boss/sets.js",
+ "pve/boss/sets/qingqingzijin/card.js",
+ "pve/boss/sets/qingqingzijin/character.js",
+ "pve/boss/sets/qingqingzijin/characterFilter.js",
+ "pve/boss/sets/qingqingzijin/characterTitle.js",
+ "pve/boss/sets/qingqingzijin/dynamicTranslate.js",
+ "pve/boss/sets/qingqingzijin/index.js",
+ "pve/boss/sets/qingqingzijin/intro.js",
+ "pve/boss/sets/qingqingzijin/perfectPairs.js",
+ "pve/boss/sets/qingqingzijin/pinyin.js",
+ "pve/boss/sets/qingqingzijin/skill.js",
+ "pve/boss/sets/qingqingzijin/sort.js",
+ "pve/boss/sets/qingqingzijin/translate.js",
+ "pve/boss/sets/qingqingzijin/voices.js",
+ "pve/boss/sets/shiershengxiao/card.js",
+ "pve/boss/sets/shiershengxiao/character.js",
+ "pve/boss/sets/shiershengxiao/characterFilter.js",
+ "pve/boss/sets/shiershengxiao/characterTitle.js",
+ "pve/boss/sets/shiershengxiao/dynamicTranslate.js",
+ "pve/boss/sets/shiershengxiao/index.js",
+ "pve/boss/sets/shiershengxiao/intro.js",
+ "pve/boss/sets/shiershengxiao/perfectPairs.js",
+ "pve/boss/sets/shiershengxiao/pinyin.js",
+ "pve/boss/sets/shiershengxiao/skill.js",
+ "pve/boss/sets/shiershengxiao/sort.js",
+ "pve/boss/sets/shiershengxiao/translate.js",
+ "pve/boss/sets/shiershengxiao/voices.js",
+ "pve/boss/sets/tianshu/card.js",
+ "pve/boss/sets/tianshu/character.js",
+ "pve/boss/sets/tianshu/characterFilter.js",
+ "pve/boss/sets/tianshu/characterTitle.js",
+ "pve/boss/sets/tianshu/dynamicTranslate.js",
+ "pve/boss/sets/tianshu/index.js",
+ "pve/boss/sets/tianshu/intro.js",
+ "pve/boss/sets/tianshu/perfectPairs.js",
+ "pve/boss/sets/tianshu/pinyin.js",
+ "pve/boss/sets/tianshu/skill.js",
+ "pve/boss/sets/tianshu/sort.js",
+ "pve/boss/sets/tianshu/translate.js",
+ "pve/boss/sets/tianshu/voices.js",
+ "pve/boss/sets/zhuoguiquxie/card.js",
+ "pve/boss/sets/zhuoguiquxie/character.js",
+ "pve/boss/sets/zhuoguiquxie/characterFilter.js",
+ "pve/boss/sets/zhuoguiquxie/characterTitle.js",
+ "pve/boss/sets/zhuoguiquxie/dynamicTranslate.js",
+ "pve/boss/sets/zhuoguiquxie/index.js",
+ "pve/boss/sets/zhuoguiquxie/intro.js",
+ "pve/boss/sets/zhuoguiquxie/perfectPairs.js",
+ "pve/boss/sets/zhuoguiquxie/pinyin.js",
+ "pve/boss/sets/zhuoguiquxie/skill.js",
+ "pve/boss/sets/zhuoguiquxie/sort.js",
+ "pve/boss/sets/zhuoguiquxie/translate.js",
+ "pve/boss/sets/zhuoguiquxie/voices.js",
+ "pve/boss/shared.js",
+ "pve/boss/sort.js",
+ "pve/boss/voices.js",
+ "pve/images/tianshu.jpg",
+ "pve/images/十二生肖/chenlong_boss_shuying.png",
+ "pve/images/十二生肖/chouniu_boss_shuying.png",
+ "pve/images/十二生肖/haizhu_boss_shuying.png",
+ "pve/images/十二生肖/maotu_boss_shuying.png",
+ "pve/images/十二生肖/shenhou_boss_shuying.png",
+ "pve/images/十二生肖/sishe_boss_shuying.png",
+ "pve/images/十二生肖/weiyang_boss_shuying.png",
+ "pve/images/十二生肖/wuma_boss_shuying.png",
+ "pve/images/十二生肖/xvgou_boss_shuying.png",
+ "pve/images/十二生肖/yinhu_boss_shuying.png",
+ "pve/images/十二生肖/youji_boss_shuying.png",
+ "pve/images/十二生肖/zishu_boss_shuying.png",
+ "pve/images/天书乱斗/baiqi_boss_shuying.png",
+ "pve/images/天书乱斗/hanba_boss_shuying.png",
+ "pve/images/天书乱斗/huoshenzhurong_boss_shuying.png",
+ "pve/images/天书乱斗/kuafu_boss_shuying.png",
+ "pve/images/天书乱斗/shaohao_boss_shuying.png",
+ "pve/images/天书乱斗/shuishengonggong_boss_shuying.png",
+ "pve/images/天书乱斗/xuannv_boss_shuying.png",
+ "pve/images/虚拟偶像/xiaojiu_xvni_shuying.png",
+ "pve/images/虚拟偶像/xiaole_xvni_shuying.png",
+ "pve/images/虚拟偶像/xiaosha_xvni_shuying.png",
+ "pve/images/虚拟偶像/xiaoshan_xvni_shuying.png",
+ "pve/images/虚拟偶像/xiaotao_xvni_shuying.png",
+ "pve/images/青青子衿/caocao_boss_shuying.jpg",
+ "pve/images/青青子衿/dongzhuo_boss_shuying.jpg",
+ "pve/images/青青子衿/lvbu_boss_shuying.jpg",
+ "pve/images/青青子衿/simayi_boss_shuying.jpg",
+ "pve/images/青青子衿/yuanshu_boss_shuying.jpg",
+ "pve/images/青青子衿/zhangjiao_boss_shuying.jpg",
+ "pve/images/驱鬼逐邪/baiwuchang_boss_shuying.png",
+ "pve/images/驱鬼逐邪/baowei_boss_shuying.png",
+ "pve/images/驱鬼逐邪/guiwang_boss_shuying.png",
+ "pve/images/驱鬼逐邪/heibaiwuchang_boss_shuying.png",
+ "pve/images/驱鬼逐邪/heiwuchang_boss_shuying.png",
+ "pve/images/驱鬼逐邪/huangfeng_boss_shuying.png",
+ "pve/images/驱鬼逐邪/mamian_boss_shuying.png",
+ "pve/images/驱鬼逐邪/mengpo_boss_shuying.png",
+ "pve/images/驱鬼逐邪/niaozui_boss_shuying.png",
+ "pve/images/驱鬼逐邪/niutou_boss_shuying.png",
+ "pve/images/驱鬼逐邪/niutoumamian_boss_shuying.png",
+ "pve/images/驱鬼逐邪/riyeyoushen_boss_shuying.png",
+ "pve/images/驱鬼逐邪/yanluowang_boss_shuying.png",
+ "pve/images/驱鬼逐邪/yvsai_boss_shuying.png",
+ "pve/images/龙舟/caoe_boss_shuying.png",
+ "pve/images/龙舟/hebo_boss_shuying.png",
+ "pve/images/龙舟/taoshen_boss_shuying.png",
+ "pve/images/龙舟/yuershen_boss_shuying.png",
+ "tianshu/bondSkills.js",
+ "tianshu/shuYing_Skill_Xvxiang1.mp3",
+ "update.txt",
+ "voices.js",
+ "yuanshen/extension.js",
+ "yuanshen/八重神子/1.jpg",
+ "yuanshen/八重神子/character.js",
+ "yuanshen/八重神子/shuYing_Shashengying1.mp3",
+ "yuanshen/八重神子/shuYing_Shashengying2.mp3",
+ "yuanshen/八重神子/shuYing_Shizuishi1.mp3",
+ "yuanshen/八重神子/shuYing_Shizuishi2.mp3",
+ "yuanshen/八重神子/shuYing_Shizuishi3.mp3",
+ "yuanshen/八重神子/shuYing_Shizuishi4.mp3",
+ "yuanshen/八重神子/shuYing_Tianhuxianzhen1.mp3",
+ "yuanshen/八重神子/shuYing_Tianhuxianzhen2.mp3",
+ "yuanshen/可莉/1.jpg",
+ "yuanshen/可莉/character.js",
+ "yuanshen/可莉/shuYing_Honghong1.mp3",
+ "yuanshen/可莉/shuYing_Honghong2.mp3",
+ "yuanshen/可莉/shuYing_Honghong3.mp3",
+ "yuanshen/可莉/shuYing_Lieyan1.mp3",
+ "yuanshen/可莉/shuYing_Lieyan_Damage1.mp3",
+ "yuanshen/可莉/shuYing_Lieyan_Damage2.mp3",
+ "yuanshen/可莉/shuYing_Lieyan_Damage3.mp3",
+ "yuanshen/可莉/shuYing_Pengpeng1.mp3",
+ "yuanshen/可莉/shuYing_Pengpeng2.mp3",
+ "yuanshen/可莉/shuYing_Pengpeng3.mp3"
+ ],
+ "remove": [],
+ "removeDirectories": [],
+ "files": {
+ "LICENSE": {
+ "size": 35147,
+ "sha256": "8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903"
+ },
+ "character/audio/zuoci/huashen_shuying1.mp3": {
+ "size": 120863,
+ "sha256": "6ba387a1629e1c20cb4c1cb654a99d9574d78a521f3f6bc93191dbf11e9985cc"
+ },
+ "character/audio/zuoci/huashen_shuying2.mp3": {
+ "size": 157957,
+ "sha256": "58c2cc83085f3887b8ad85d9448154b95d711fac2a63e171e63d6bae348c61fc"
+ },
+ "character/audio/zuoci/jihun_shuying1.mp3": {
+ "size": 117248,
+ "sha256": "22db1641f63955a99a009d6297c541492e585ca3ee18840bed9b27a5f79d67ad"
+ },
+ "character/audio/zuoci/jihun_shuying2.mp3": {
+ "size": 141824,
+ "sha256": "19ddabc7d1c2646294e8fe69d8e96b6d25dfbfff3266aa2087f3af8048498e9e"
+ },
+ "character/audio/zuoci/xinsheng_shuying1.mp3": {
+ "size": 125565,
+ "sha256": "91e6b58bcb82a4250362efc4c668dec6563d376a7f30450ada1c7871fb189baa"
+ },
+ "character/audio/zuoci/xinsheng_shuying2.mp3": {
+ "size": 142806,
+ "sha256": "f23168f7c4052836de9c021cb5983dca09c18651568754c6606017bc0f4913f3"
+ },
+ "character/audio/zuoci/zuoci_shuying.mp3": {
+ "size": 90038,
+ "sha256": "f330d2665fd2c9bb85cd4a80f596f44a283c715333a1bf8aafffa5ef030c5126"
+ },
+ "character/character.js": {
+ "size": 360,
+ "sha256": "749cb31ca7b2f32f87f5a290b28009f14644d9b0f1a03a01530af1d12265a9da"
+ },
+ "character/characterFilter.js": {
+ "size": 63,
+ "sha256": "92164cec19b58e3a27d92426fbe227c426dff1391b2f56b2329a676a5fc4faf7"
+ },
+ "character/characterTitle.js": {
+ "size": 61,
+ "sha256": "f4be860d37d46261a6d45e30bce661d301d79d548aeef0bfc2e8ad67fe783cea"
+ },
+ "character/dynamicTranslate.js": {
+ "size": 65,
+ "sha256": "d409295767b35e4867e5aa6fae92020f2a8943f71569af5539436648a345bd2f"
+ },
+ "character/images/zuoci_shuying.jpg": {
+ "size": 222468,
+ "sha256": "ff13df281bd289d63033d2c52b8d31f2a9f0a8d9cdc0ad525db06b899411f4cb"
+ },
+ "character/index.js": {
+ "size": 1002,
+ "sha256": "ef3dcf49147bead5a4b58c56aa23f983e7fda7c4769f276f1f228293f87acc33"
+ },
+ "character/intro.js": {
+ "size": 61,
+ "sha256": "68187ccda36e322c0483a735e6de6e04e5d7ded9e6f6aa9a3e931f4400db2a5e"
+ },
+ "character/perfectPairs.js": {
+ "size": 55,
+ "sha256": "7f2bd697eaaff284d2b356321a402a3cc7c0139ff6fdf339f6cbdd8da208a05f"
+ },
+ "character/skill.js": {
+ "size": 15439,
+ "sha256": "ad6859ff3ed9e05e67b991f85961b85b21af4d486a76660d29305e962120bb94"
+ },
+ "character/sort.js": {
+ "size": 112,
+ "sha256": "42cf6bb834aca4ff883aa196604f3d9d2d9047bb320cf56a633aae4ecbb5ce4c"
+ },
+ "character/translate.js": {
+ "size": 1126,
+ "sha256": "dd6e076e058514a11b5912c0893474494af825bc646e01e12c514296dc1390ab"
+ },
+ "character/voices.js": {
+ "size": 43,
+ "sha256": "d7f3da55f8b2e8bf77ace03bd4911497a4abb9e1f942555f7685337801278205"
+ },
+ "extension.css": {
+ "size": 51738,
+ "sha256": "356aa9473ab72ad43850c13451fd15a25c6ce2d93678cd0dcba5568d10443b40"
+ },
+ "extension.js": {
+ "size": 14743,
+ "sha256": "3dae019a7941072f2c8b67ce14f697f9d4aa0a8bebc4187e913da5468bd88955"
+ },
+ "function.js": {
+ "size": 33746,
+ "sha256": "df1aa3102a214986723af365da1029485680519d355a1ff88973eb36f8a6f909"
+ },
+ "mengsan/config.js": {
+ "size": 2211,
+ "sha256": "1283490af94dc3429330f6f7c192b1492b52d686018f2d68cb8482c0bc04e549"
+ },
+ "mengsan/mode.js": {
+ "size": 22867,
+ "sha256": "88a707ac6b59160e9735770d649d8d1e5c695298628c924306b824cef7e1cc27"
+ },
+ "mengsan/state.js": {
+ "size": 8175,
+ "sha256": "1096d195396f5a0fbe15c7d3627834cb3e415a5878c411eb41d9897af9abf46d"
+ },
+ "mengsan/style.css": {
+ "size": 6859,
+ "sha256": "fdce7bb71f7290254d984a35415e5012f829ae9992765d1f3282f35528c1b92b"
+ },
+ "menu.js": {
+ "size": 22310,
+ "sha256": "3a603a82bb80897cf809ba80ebd55bbf66634cdbe807ed33ad2e43d845d48211"
+ },
+ "pve/audio/dead/十二生肖/chenlong.mp3": {
+ "size": 68757,
+ "sha256": "c59400dc4e2ed6de182c662e585711d3432aa3b302f440cd07f8f277431f7144"
+ },
+ "pve/audio/dead/十二生肖/chouniu.mp3": {
+ "size": 65413,
+ "sha256": "3d948ab1d3410b707e5a2ca8d18cb7089e6645b673e0d38ebb8926cce0e117f1"
+ },
+ "pve/audio/dead/十二生肖/haizhu.mp3": {
+ "size": 79624,
+ "sha256": "88d4613ab13bccc4139efaf7e7eb51156575d9999869432a7fd331cf01a84f26"
+ },
+ "pve/audio/dead/十二生肖/maotu.mp3": {
+ "size": 52039,
+ "sha256": "6b52043e333e539b41190d4d4ef10dddb17c0d83ced6aee1440f7ba3f4d64bb9"
+ },
+ "pve/audio/dead/十二生肖/shenhou.mp3": {
+ "size": 41590,
+ "sha256": "0448a8fca9e01c8e45e3773df49f587c905a1ce85f5a22c02f80013c0343340a"
+ },
+ "pve/audio/dead/十二生肖/sishe.mp3": {
+ "size": 47441,
+ "sha256": "e77095a7a57e68d1336c4af3dff05a71a58a961e272f33b33a8d678f9984b32f"
+ },
+ "pve/audio/dead/十二生肖/weiyang.mp3": {
+ "size": 50367,
+ "sha256": "4f76f2d3caf11514abd4b37ca0f018333e850b2085d585ea72204145139ceeb6"
+ },
+ "pve/audio/dead/十二生肖/wuma.mp3": {
+ "size": 62070,
+ "sha256": "ab3368d1289b1cc49530624eddf159d59ace17ea2d307857594d603c84073425"
+ },
+ "pve/audio/dead/十二生肖/xvgou.mp3": {
+ "size": 60398,
+ "sha256": "2c882f4fd9d5fe331ee54898e2b92f00acf484d1e9df50aa8e6aa8e9f26588d6"
+ },
+ "pve/audio/dead/十二生肖/yinhu.mp3": {
+ "size": 77116,
+ "sha256": "f941d70b87b36c4b8f2eb760edf63a48e2f2c656536b610235cf5467488b99c2"
+ },
+ "pve/audio/dead/十二生肖/youji.mp3": {
+ "size": 59562,
+ "sha256": "005575600947bd6ac5c97670e07b4140d968911d596a82e76d7b5c124b6325e5"
+ },
+ "pve/audio/dead/十二生肖/zishu.mp3": {
+ "size": 55800,
+ "sha256": "6d4e0388dc7a03201998743cf2c9e345002580c00573cb7c020fbced61b79818"
+ },
+ "pve/audio/dead/天书乱斗/hanba_boss_shuying.mp3": {
+ "size": 17297,
+ "sha256": "1eef36bdb352fb06cc88a51ca1d16a41e726423ea4ffa00dd4ba130ce7abab02"
+ },
+ "pve/audio/dead/天书乱斗/kuafu_boss_shuying.mp3": {
+ "size": 50219,
+ "sha256": "d3d01433a134ec7733a45e12454de276bfd5de654e077a08817dc6fb0160dfe5"
+ },
+ "pve/audio/dead/天书乱斗/xuannv_boss_shuying.mp3": {
+ "size": 57056,
+ "sha256": "7c22ad127a07a01743599e1671152eb05f164b9a990f513f0e607e64624cb017"
+ },
+ "pve/audio/dead/青青子衿/caocao_boss_shuying.mp3": {
+ "size": 118668,
+ "sha256": "9d75a078f17e3d645c50d308901fdcf99da0532e5a239785c29416cba5cd105c"
+ },
+ "pve/audio/dead/青青子衿/dongzhuo_boss_shuying.mp3": {
+ "size": 54275,
+ "sha256": "0dc28bcfad7592e49f9ad37cf2a005d0d86af862014b35f08032d89a3773f6b4"
+ },
+ "pve/audio/dead/青青子衿/lvbu_boss_shuying.mp3": {
+ "size": 98188,
+ "sha256": "5895d9fdfd1fa849e5e7a780a169e8494896ac965b50d0db5946846d0cabcb50"
+ },
+ "pve/audio/dead/青青子衿/simayi_boss_shuying.mp3": {
+ "size": 37856,
+ "sha256": "e16e5c74f5619f75cd4b952a5d74ae81138c820325b9b0682da558ec3eb1eba1"
+ },
+ "pve/audio/dead/青青子衿/yuanshu_boss_shuying.mp3": {
+ "size": 122776,
+ "sha256": "859e59d44146f6ef07286b939acaa15b87de6b4b529fcd51c6f29708f7ff1bba"
+ },
+ "pve/audio/dead/青青子衿/zhangjiao_boss_shuying.mp3": {
+ "size": 43185,
+ "sha256": "f51532c17e59d1b5ffe8c09ece871b3e563ccbeaa58486e1d0fe7ace74eb8356"
+ },
+ "pve/audio/dead/驱鬼逐邪/guiwang.mp3": {
+ "size": 72116,
+ "sha256": "62360fc121a5a4f4f929c19a80d4c4f63a1812d57c1506d11492e93085d214c9"
+ },
+ "pve/audio/dead/驱鬼逐邪/heibaiwuchang.mp3": {
+ "size": 60757,
+ "sha256": "32e5d699e76ed6237c2d29ddddaadb522f0a9e36c1da1a5c57ad5ed5eb2d8b82"
+ },
+ "pve/audio/dead/驱鬼逐邪/niutoumamian.mp3": {
+ "size": 80822,
+ "sha256": "9a7c33b75ba3799ecadbe12031150e9921f8f878a588adc6207fc2188414236b"
+ },
+ "pve/audio/dead/驱鬼逐邪/riyeyoushen.mp3": {
+ "size": 48889,
+ "sha256": "7bb22a88d326667253df464a3665a7f9ef8a04de4f10e142b455e5848c942be7"
+ },
+ "pve/audio/skill/十二生肖/chenlong_shuying1.mp3": {
+ "size": 62905,
+ "sha256": "c46b30ad29ee2e8267f9980a2e9aa3bd789d798cfb3f3c365228f6f083a8b5cd"
+ },
+ "pve/audio/skill/十二生肖/chouniu_shuying1.mp3": {
+ "size": 49949,
+ "sha256": "2e54102385815b4159ba3aa35bde87b9c65d42fcacec9030935a0242e7961ee4"
+ },
+ "pve/audio/skill/十二生肖/haizhu_shuying1.mp3": {
+ "size": 26961,
+ "sha256": "6a18ce4e4e93a51713ab1493f33644155afda37402fc70aa86d6161247880fe2"
+ },
+ "pve/audio/skill/十二生肖/moutu_shuying1.mp3": {
+ "size": 40754,
+ "sha256": "9b077ddb25ca9bf6049a74254d9a87f3093efa9e3e78dd68caa142ce5ce68667"
+ },
+ "pve/audio/skill/十二生肖/shenhou_shuying1.mp3": {
+ "size": 34066,
+ "sha256": "5030646db02a0fd8de2c3665733fdf5c9af50f9cbd6b85591597a224deab106f"
+ },
+ "pve/audio/skill/十二生肖/sishe_shuying1.mp3": {
+ "size": 58726,
+ "sha256": "a6b9e0eebdd3bb78e9e03e2cb97bd60277f3ae01e62318ffba345c41a8867703"
+ },
+ "pve/audio/skill/十二生肖/weiyang_shuying1.mp3": {
+ "size": 50785,
+ "sha256": "419126a2a438eb0a5220d18059af42e2b400eb6c1730086880f12405e232e621"
+ },
+ "pve/audio/skill/十二生肖/wuma_shuying1.mp3": {
+ "size": 30305,
+ "sha256": "1a57e5b8f3eefcf6172fb05ee5a7a1314e50b396526c0fe464a3659ccb493f41"
+ },
+ "pve/audio/skill/十二生肖/xvgou_shuying1.mp3": {
+ "size": 53710,
+ "sha256": "a5b78b4d92d535d652725f56bfe2ff58c203007ec97b92954144b23496b113c4"
+ },
+ "pve/audio/skill/十二生肖/yinhu_shuying1.mp3": {
+ "size": 31141,
+ "sha256": "5dd1f7bcc07736c0f6e204f0cd4bd3c0c5f6a53c561959683f2d49427ca2e341"
+ },
+ "pve/audio/skill/十二生肖/youji_shuying1.mp3": {
+ "size": 53292,
+ "sha256": "279c283f8a05689ed8edddea7fe9081555acb2b33f95fd8535686cfd2b825013"
+ },
+ "pve/audio/skill/十二生肖/zishu_shuying1.mp3": {
+ "size": 29469,
+ "sha256": "9259ab36cb01fc217110194ecd041e0c18ca3f79c9be5ee8c2084895675926ff"
+ },
+ "pve/audio/skill/天书乱斗/dishi_shuying1.mp3": {
+ "size": 36880,
+ "sha256": "0a3ddd792bb1203b029e88497abb8cf2af8d939079e59491ce0f6da384d22fc9"
+ },
+ "pve/audio/skill/天书乱斗/fenshi_shuying1.mp3": {
+ "size": 18727,
+ "sha256": "b4c4b0e738efe31c35832666ab66307c149dc6899e7e76004f44ef0eac0c5e3c"
+ },
+ "pve/audio/skill/天书乱斗/fenshi_shuying2.mp3": {
+ "size": 18207,
+ "sha256": "9738a8844a2a47363297ba55c5558591225b7a8deb5de2e941764b5945bcde7c"
+ },
+ "pve/audio/skill/天书乱斗/jiutian_shuying1.mp3": {
+ "size": 52571,
+ "sha256": "60ee41fb6da1eb3e2e095a5fd94f62b938956a2933a70fdcae25ead795a6c35a"
+ },
+ "pve/audio/skill/天书乱斗/lieben_shuying1.mp3": {
+ "size": 38328,
+ "sha256": "0a900ec7b47e83b6164cd739f2cc1e9145d49db6afb5b5e2e69ba24f52e76b1d"
+ },
+ "pve/audio/skill/天书乱斗/xinji_shuying1.mp3": {
+ "size": 19897,
+ "sha256": "982f5af2233ef665acadb6a8f20d579041cc1193ae6f52710e31cba4187102de"
+ },
+ "pve/audio/skill/天书乱斗/xinji_shuying2.mp3": {
+ "size": 26137,
+ "sha256": "ca7ef203e544b50a5b5d2cb1660247a4a03fab79235a370dad63f7b808002408"
+ },
+ "pve/audio/skill/天书乱斗/xuanlie_shuying1.mp3": {
+ "size": 52377,
+ "sha256": "d4a06b7e9e4c7d3eea51fec34231e28c83822832daa379cb2f639fb9cfb71312"
+ },
+ "pve/audio/skill/天书乱斗/yinjiang_shuying1.mp3": {
+ "size": 44717,
+ "sha256": "f15beca09271c30b65d2d250bf84fb0a2fdda1a40e5d0b725187716fbdf41f86"
+ },
+ "pve/audio/skill/天书乱斗/zhiri_shuying1.mp3": {
+ "size": 18077,
+ "sha256": "ab8fa7d09f3a664c2e86a790e0cd5d12aff4759a3e16cec5a4a1c86d569991d4"
+ },
+ "pve/audio/skill/天书乱斗/zhiri_shuying2.mp3": {
+ "size": 18597,
+ "sha256": "acd8f6770a27d10726b6f7c38964cd2f5c05e204a65d3d193a7572d7bef417a2"
+ },
+ "pve/audio/skill/天书乱斗/zhuri_shuying1.mp3": {
+ "size": 37542,
+ "sha256": "04f158b9c8a92d651aa10fa9663f521a45b6479088875b8a15d9f89ffdbfda38"
+ },
+ "pve/audio/skill/青青子衿/baonue_shuying1.mp3": {
+ "size": 42049,
+ "sha256": "627d08b60c0f1077b74de11c8be40e22aa00740b67f0878c9ec7b99fe9728148"
+ },
+ "pve/audio/skill/青青子衿/duoxi_shuying1.mp3": {
+ "size": 20476,
+ "sha256": "cc28dd8e8f474e02d8204bfa7525da6d9bef62fc6b097d2aa8236a3ad9ebcf18"
+ },
+ "pve/audio/skill/青青子衿/fankui_shuying1.mp3": {
+ "size": 23296,
+ "sha256": "48027f1f9acd6565a33127e4dbea6ce404e0e5a7f9c4a2e2c010d238569f9580"
+ },
+ "pve/audio/skill/青青子衿/guicai_shuying1.mp3": {
+ "size": 33904,
+ "sha256": "193d6ef68bc61d3e058a1b64fe349f08ccf5092318092eec7b017f76777b8de9"
+ },
+ "pve/audio/skill/青青子衿/guidao_shuying1.mp3": {
+ "size": 36288,
+ "sha256": "41e676469edd523e00a2a3efeed3ae28b03a941647466e1ed966a579c8bb48f2"
+ },
+ "pve/audio/skill/青青子衿/jianxiong_shuying1.mp3": {
+ "size": 66841,
+ "sha256": "cba3603b06a730e3a65e600ac3d930717e090b93da470373145784d1edbcec88"
+ },
+ "pve/audio/skill/青青子衿/jiuchi_shuying1.mp3": {
+ "size": 66187,
+ "sha256": "f9cf8a703ee6bd21455c7ae94d94ef663f66b58c66b87b88e126c5aef9228481"
+ },
+ "pve/audio/skill/青青子衿/langgu_shuying1.mp3": {
+ "size": 49363,
+ "sha256": "65077daf3f241c84d7fb094eed1b72bc85fb61f170ae7194125744c43cc91328"
+ },
+ "pve/audio/skill/青青子衿/leiji_shuying1.mp3": {
+ "size": 28556,
+ "sha256": "1d6c9e9e1779a2733b25a547bfbb91e585deb8c05993cccf4cbe0ab31e1bb20f"
+ },
+ "pve/audio/skill/青青子衿/lingba_shuying1.mp3": {
+ "size": 78544,
+ "sha256": "749a87ac8b203793c5d86a211f57b1c05665a6b6773b6d7643e3fc85239bef46"
+ },
+ "pve/audio/skill/青青子衿/qubu_shuying1.mp3": {
+ "size": 48632,
+ "sha256": "bf45831f607da1d737a7c373219217fb81e9832e2acba772fede54600964fc99"
+ },
+ "pve/audio/skill/青青子衿/roulin_shuying1.mp3": {
+ "size": 76218,
+ "sha256": "e8f7dfd9d7205e2ee2e48b6c69410ab7e61c0a1f49884a3ddb6662e5b4f5d43c"
+ },
+ "pve/audio/skill/青青子衿/shenij_shuying1.mp3": {
+ "size": 85336,
+ "sha256": "3bcbdce44a5071f22da4d8fb9f481b6c5b6e0699bc7167ebf2049b18e9c35f27"
+ },
+ "pve/audio/skill/青青子衿/shenij_shuying2.mp3": {
+ "size": 80112,
+ "sha256": "bf8139d20ca5bd8c351ddad9cb0bf4de3ccb76ce41630498dced0a63f9107145"
+ },
+ "pve/audio/skill/青青子衿/wangzun_shuying1.mp3": {
+ "size": 98220,
+ "sha256": "6a022af97a73ed351c70eec2e3dee99c89faf5301a7c6494f96b15135336a1f5"
+ },
+ "pve/audio/skill/青青子衿/wushuang_shuying1.mp3": {
+ "size": 70185,
+ "sha256": "d1fcfdb5591dc75f24607e7d5cacdb2c1be505fd5a4321cec4379b30a4e8ee96"
+ },
+ "pve/audio/skill/青青子衿/wushuang_shuying2.mp3": {
+ "size": 64961,
+ "sha256": "f28014f8625a344395183e43c2999753f21a713fe4bb10e61a5be107f5515f11"
+ },
+ "pve/audio/skill/青青子衿/yinlei_shuying1.mp3": {
+ "size": 37751,
+ "sha256": "f3d6c2b9211b9449dceac0659cc1606b4dcd23d443f3cf9511cfad56fad840b3"
+ },
+ "pve/audio/skill/青青子衿/yishen_shuying1.mp3": {
+ "size": 83142,
+ "sha256": "74e7952802c46dd71b90e8dcb4e7f28c8936319e9598d35a7f6e907be930ad78"
+ },
+ "pve/audio/skill/青青子衿/yongsi_shuying1.mp3": {
+ "size": 121208,
+ "sha256": "0bb47e02b23c2f081ab1d6a16004a41f8f9ade4f5c38d25e1524d1464add9e65"
+ },
+ "pve/audio/skill/青青子衿/yuanlv_shuying1.mp3": {
+ "size": 33271,
+ "sha256": "5970922b1d22cd8d0aea8913d9ec6fb9cd7205138376376f6acc79c4010351ab"
+ },
+ "pve/audio/skill/青青子衿/zhanjia_shuying1.mp3": {
+ "size": 74887,
+ "sha256": "97043c9bdb1767448f3db27c9b93057953546bd5508c73f023d8fe8a80c7ee5b"
+ },
+ "pve/audio/skill/青青子衿/zhanjia_shuying2.mp3": {
+ "size": 97353,
+ "sha256": "b3be2b1ba6dc6d56c8290bdc63b6b9f649b6cac1030f35517b3e3862705a3472"
+ },
+ "pve/audio/skill/青青子衿/zhuzheng_shuying1.mp3": {
+ "size": 33154,
+ "sha256": "516680e7bdaed978b59df34608756ceaede4e657b951a5b1ca42558235bf29d5"
+ },
+ "pve/audio/skill/驱鬼逐邪/anchao_shuying1.mp3": {
+ "size": 167583,
+ "sha256": "ed7a272d02d27120403f0609ea46b4d7c3cdee6038e4a41fad8b6131cd466049"
+ },
+ "pve/audio/skill/驱鬼逐邪/aotang_shuying1.mp3": {
+ "size": 61234,
+ "sha256": "fcbc95580168119636de36c286b97cb7c82734b5dd3be3ad1f155b95242478bf"
+ },
+ "pve/audio/skill/驱鬼逐邪/bingyi_shuying1.mp3": {
+ "size": 59562,
+ "sha256": "4d0fc66b7c014a73f38d007b44f0e297f4c89f60a9e0c1e0bc89dc49de6558b8"
+ },
+ "pve/audio/skill/驱鬼逐邪/danshi_shuying1.mp3": {
+ "size": 37072,
+ "sha256": "3b72a040db3a1c6ea263005b682f7cfe288319968f554a3e48d23e2f74b6f0e3"
+ },
+ "pve/audio/skill/驱鬼逐邪/dianwei_shuying1.mp3": {
+ "size": 38505,
+ "sha256": "db780f51a2ffe8d6e000fe3dced37f68103ab3efdc775271349b66c689b2eee6"
+ },
+ "pve/audio/skill/驱鬼逐邪/duane_shuying1.mp3": {
+ "size": 138661,
+ "sha256": "5d0b3cbf36a1afc6b54387044bf1f0340e9c8f8fbd930b30c76c66faf4ab4509"
+ },
+ "pve/audio/skill/驱鬼逐邪/duzhen_shuying1.mp3": {
+ "size": 162965,
+ "sha256": "415d961902b13f5fb201d0d8203776d909810e4706e38ead4df14f27fc17eae9"
+ },
+ "pve/audio/skill/驱鬼逐邪/eli_shuying1.mp3": {
+ "size": 66667,
+ "sha256": "fdc658c08650d244db6171ccc3ff1000a8c15cd7f273232012d9dd23fb2d829f"
+ },
+ "pve/audio/skill/驱鬼逐邪/guimei_shuying1.mp3": {
+ "size": 70847,
+ "sha256": "4197185eb357f7a3dabc8f94e15baf86959f52f1b75de4c1ec469499d882a432"
+ },
+ "pve/audio/skill/驱鬼逐邪/guixi_shuying1.mp3": {
+ "size": 165079,
+ "sha256": "fa052318af33693f7c94c19b3af98bedae646594a8e711d451da64c7e3343d3d"
+ },
+ "pve/audio/skill/驱鬼逐邪/guizhao_shuying1.mp3": {
+ "size": 55307,
+ "sha256": "aaa97c11a5e5cdda233f5edc08373ac775d2726004b0c836ca3c9c5de492a644"
+ },
+ "pve/audio/skill/驱鬼逐邪/huiyun_shuying1.mp3": {
+ "size": 140925,
+ "sha256": "337df12e5260011e853b50dbfd759c716bd0928e3d4f99b300bf97dd1907ec83"
+ },
+ "pve/audio/skill/驱鬼逐邪/jizhou_shuying1.mp3": {
+ "size": 33894,
+ "sha256": "92dd5a462b05f979e53196d4d35059d000ce63ff1a9ceb8c2d1064c816684702"
+ },
+ "pve/audio/skill/驱鬼逐邪/manji_shuying1.mp3": {
+ "size": 43834,
+ "sha256": "635bd0506fbaa8a2aa2b373ce8831f5494aa7f829bb1285376e49c50957a7246"
+ },
+ "pve/audio/skill/驱鬼逐邪/mingchong_shuying1.mp3": {
+ "size": 161713,
+ "sha256": "c4172728884f1bd2e4a08583327f3c08f4d97c0a1448869d0b2789b88d7ab70c"
+ },
+ "pve/audio/skill/驱鬼逐邪/mizui_shuying1.mp3": {
+ "size": 263385,
+ "sha256": "42ad74b6cfd7bd8befd7b92e184ddcedbcfc0d03b87fe34f431ace3029f1d0cf"
+ },
+ "pve/audio/skill/驱鬼逐邪/qiangzheng_shuying1.mp3": {
+ "size": 182005,
+ "sha256": "00b1340862233e32a2951408222b5199934a7d9e5e9273b41f539029a3f9b338"
+ },
+ "pve/audio/skill/驱鬼逐邪/shiyu_shuying1.mp3": {
+ "size": 59040,
+ "sha256": "7207807ca95ae00cf08682bb8a7d98c6b08a237ab0848bfdffcaaea033ff1f4a"
+ },
+ "pve/audio/skill/驱鬼逐邪/suoxue_shuying1.mp3": {
+ "size": 64995,
+ "sha256": "314be7e1b07aa370e86167f7ef2a489de9c93037ac96f6bd1c69cc64e787fd54"
+ },
+ "pve/audio/skill/驱鬼逐邪/taiping_shuying1.mp3": {
+ "size": 176371,
+ "sha256": "3fc93c12aa18905066e7bb888cb65bd8f72fce77a71c511bb6311bee4cad4dc7"
+ },
+ "pve/audio/skill/驱鬼逐邪/xiaoshou_shuying1.mp3": {
+ "size": 41954,
+ "sha256": "78458f9488f349c4e76c08c42071c31782a4bdd6fbda0f0acca247c4fa57f04d"
+ },
+ "pve/audio/skill/驱鬼逐邪/xingpan_shuying1.mp3": {
+ "size": 91763,
+ "sha256": "8c46e26869d68a632b54dad60e786d8619c6b7dac17ebcb332db8a66d42f80e8"
+ },
+ "pve/audio/skill/驱鬼逐邪/xixing_shuying1.mp3": {
+ "size": 181379,
+ "sha256": "a553a85e898f534f270902e9d00e60e2821dbbe9a6deb344f08c6080eedf9a5c"
+ },
+ "pve/audio/skill/驱鬼逐邪/xuanpan_shuying1.mp3": {
+ "size": 84795,
+ "sha256": "0449dfff43b748208ddd0df5202a2bb0ecc99e09bed27f16c314378fa00cba10"
+ },
+ "pve/audio/skill/驱鬼逐邪/xuanpan_shuying2.mp3": {
+ "size": 79398,
+ "sha256": "39e7c45efa5502645b61a8de29c1ab9c380fced3be58b78caab0607ad183dd38"
+ },
+ "pve/audio/skill/驱鬼逐邪/yezhong_shuying1.mp3": {
+ "size": 157201,
+ "sha256": "d5e4498f1f1775237ccc4987c1ad47483b23e3bdb653995cb85ced6cf1c2d224"
+ },
+ "pve/audio/skill/驱鬼逐邪/yunju_shuying1.mp3": {
+ "size": 57472,
+ "sha256": "afa7538f321ffe3ab23f53cba62967b8b2db9141e9a2c8860c8b51d4310d9f22"
+ },
+ "pve/audio/skill/驱鬼逐邪/zhoucha_shuying1.mp3": {
+ "size": 153445,
+ "sha256": "ab0ec7394ee47c6d2b71a2a6617e854c9a6725a965af693ef18ce3b659e9fedd"
+ },
+ "pve/boss/card.js": {
+ "size": 171,
+ "sha256": "3c0a2d89226ed8ea5dfb5238221d63b117a6624e027cde03ba6671dfd5548c2c"
+ },
+ "pve/boss/character.js": {
+ "size": 260,
+ "sha256": "3777e2a7cc00bf3b6e9842f65acf314df2786cb8596ee213254e074738782de4"
+ },
+ "pve/boss/characterFilter.js": {
+ "size": 210,
+ "sha256": "e0cffda20018e8abb3c208359221633f049c77d9246bfc492f740430162c05a1"
+ },
+ "pve/boss/characterTitle.js": {
+ "size": 207,
+ "sha256": "f28a5994a540f50851a2a8c66733e8d326f8de59169f2f22a556243837cf0bc2"
+ },
+ "pve/boss/dynamicTranslate.js": {
+ "size": 287,
+ "sha256": "924be3ff97147ac8f113eb35ef1aeadab0b3227b1eca61fe5d4d5197242ced30"
+ },
+ "pve/boss/index.js": {
+ "size": 1137,
+ "sha256": "578e2c7f50e42c5e92b445e9bcf0dafa68f28ff2415877c4b1ff492783152372"
+ },
+ "pve/boss/intro.js": {
+ "size": 207,
+ "sha256": "6fe542ceb77e006a80810c95145b614ae13487acad5abd59059652417dbfb3ac"
+ },
+ "pve/boss/merge.js": {
+ "size": 940,
+ "sha256": "47e0aa7f324b0e8d13737aa07065a18bef69049a6c4c5eafd61996024e84b387"
+ },
+ "pve/boss/perfectPairs.js": {
+ "size": 198,
+ "sha256": "228d84d6013ad2b11f789363854bc05dcfe259fdfadaee84acb95421497927ca"
+ },
+ "pve/boss/pinyin.js": {
+ "size": 178,
+ "sha256": "34acc90748a2ce6de749d841e371b11a75bd169b782d6bd2672cb50a70bdb21b"
+ },
+ "pve/boss/sets.js": {
+ "size": 502,
+ "sha256": "78de634dd7eebc7b6657b23bafa74ea274568e303179eb489f052bae1d19d044"
+ },
+ "pve/boss/sets/qingqingzijin/card.js": {
+ "size": 126,
+ "sha256": "5fa35745834d9494a4be460c4f1cb842ee56ec797f7eaa45b7df6122c87c92ee"
+ },
+ "pve/boss/sets/qingqingzijin/character.js": {
+ "size": 2464,
+ "sha256": "8f7b1710cec7d7d90f62127330abb838163d91c29603fab7b8920711b1ec31e7"
+ },
+ "pve/boss/sets/qingqingzijin/characterFilter.js": {
+ "size": 66,
+ "sha256": "0dc51d476375435b50ea965fd540a6afb19134d974fe183bd924225dc3842062"
+ },
+ "pve/boss/sets/qingqingzijin/characterTitle.js": {
+ "size": 64,
+ "sha256": "b736420c47616f5e6493bc0e5d00a1a6803e8540e312ff99b0a5ae2d2de17b6f"
+ },
+ "pve/boss/sets/qingqingzijin/dynamicTranslate.js": {
+ "size": 4248,
+ "sha256": "13ef52691ea5f23176608b21471d80e03285941e7687f69c3c93af5aeccf7e64"
+ },
+ "pve/boss/sets/qingqingzijin/index.js": {
+ "size": 1002,
+ "sha256": "850ce3d5771d926310a26293d40e9724c2dca292bb178d121d69a251e089ef26"
+ },
+ "pve/boss/sets/qingqingzijin/intro.js": {
+ "size": 64,
+ "sha256": "17fc80689618ad9d3601cc9ccb692e38eb7b66de82e21c75c246c749f2bdf1fd"
+ },
+ "pve/boss/sets/qingqingzijin/perfectPairs.js": {
+ "size": 58,
+ "sha256": "a9b5f18910cf92cd6a727cf254ad8d6e1e2ba60a9cf35e9a458da34ce4fda49f"
+ },
+ "pve/boss/sets/qingqingzijin/pinyin.js": {
+ "size": 48,
+ "sha256": "4a8648524425c2edfb8595971476398ff3c513d27ff4850895c0839945b5c1c6"
+ },
+ "pve/boss/sets/qingqingzijin/skill.js": {
+ "size": 32647,
+ "sha256": "c8d59ee3938a960416cf21330d3b5561d9bc63ad2b65db790de7791058bdb437"
+ },
+ "pve/boss/sets/qingqingzijin/sort.js": {
+ "size": 340,
+ "sha256": "c14a970e669bff9a46fa95a1fe225c6256c7b6bf5904255d86ae7193a2fbb247"
+ },
+ "pve/boss/sets/qingqingzijin/translate.js": {
+ "size": 4639,
+ "sha256": "e802c830329f35d2619cd1b0573699bf7f43cb3da7bc4bdc10344620793187aa"
+ },
+ "pve/boss/sets/qingqingzijin/voices.js": {
+ "size": 46,
+ "sha256": "54787af1d4efcd35f20c5eca55db2e60f0cd160d7fed728440542f118e7ae44a"
+ },
+ "pve/boss/sets/shiershengxiao/card.js": {
+ "size": 126,
+ "sha256": "5fa35745834d9494a4be460c4f1cb842ee56ec797f7eaa45b7df6122c87c92ee"
+ },
+ "pve/boss/sets/shiershengxiao/character.js": {
+ "size": 4340,
+ "sha256": "90b33dfe2843a1fbef325fd4c0e56c72e603d67b6d80858d7f78fc4092f7a33b"
+ },
+ "pve/boss/sets/shiershengxiao/characterFilter.js": {
+ "size": 66,
+ "sha256": "0dc51d476375435b50ea965fd540a6afb19134d974fe183bd924225dc3842062"
+ },
+ "pve/boss/sets/shiershengxiao/characterTitle.js": {
+ "size": 64,
+ "sha256": "b736420c47616f5e6493bc0e5d00a1a6803e8540e312ff99b0a5ae2d2de17b6f"
+ },
+ "pve/boss/sets/shiershengxiao/dynamicTranslate.js": {
+ "size": 68,
+ "sha256": "906eb5fd3a454b60015c93756f9c7c5314a226972b9361b227d498d28bae1544"
+ },
+ "pve/boss/sets/shiershengxiao/index.js": {
+ "size": 1002,
+ "sha256": "7f38b79454730d249bac4b13644338e8f92e962f69e6bdb547540e7b296d5d34"
+ },
+ "pve/boss/sets/shiershengxiao/intro.js": {
+ "size": 64,
+ "sha256": "17fc80689618ad9d3601cc9ccb692e38eb7b66de82e21c75c246c749f2bdf1fd"
+ },
+ "pve/boss/sets/shiershengxiao/perfectPairs.js": {
+ "size": 58,
+ "sha256": "a9b5f18910cf92cd6a727cf254ad8d6e1e2ba60a9cf35e9a458da34ce4fda49f"
+ },
+ "pve/boss/sets/shiershengxiao/pinyin.js": {
+ "size": 48,
+ "sha256": "4a8648524425c2edfb8595971476398ff3c513d27ff4850895c0839945b5c1c6"
+ },
+ "pve/boss/sets/shiershengxiao/skill.js": {
+ "size": 15413,
+ "sha256": "e180512e49aa6f9274253c70d56987080a61ec0388999a3cbec269024ffe8306"
+ },
+ "pve/boss/sets/shiershengxiao/sort.js": {
+ "size": 406,
+ "sha256": "be03f8ab9f2be5c32ea37df8f058788fd19750ede246e2038406c90dc6ce2cea"
+ },
+ "pve/boss/sets/shiershengxiao/translate.js": {
+ "size": 2941,
+ "sha256": "c2f770ecea7c27a54fc665c621dc95655e9a827836990fd9eee65dd327ddbd31"
+ },
+ "pve/boss/sets/shiershengxiao/voices.js": {
+ "size": 1507,
+ "sha256": "45e6a08bfe638bbc2f79edd7642e1303090c8e81be65fce9886199563bc95311"
+ },
+ "pve/boss/sets/tianshu/card.js": {
+ "size": 126,
+ "sha256": "5fa35745834d9494a4be460c4f1cb842ee56ec797f7eaa45b7df6122c87c92ee"
+ },
+ "pve/boss/sets/tianshu/character.js": {
+ "size": 2509,
+ "sha256": "97ae40a03a777ce170d4ddef64132d071b5b379574ed87ec326f10ca52ca3e2f"
+ },
+ "pve/boss/sets/tianshu/characterFilter.js": {
+ "size": 66,
+ "sha256": "0dc51d476375435b50ea965fd540a6afb19134d974fe183bd924225dc3842062"
+ },
+ "pve/boss/sets/tianshu/characterTitle.js": {
+ "size": 64,
+ "sha256": "b736420c47616f5e6493bc0e5d00a1a6803e8540e312ff99b0a5ae2d2de17b6f"
+ },
+ "pve/boss/sets/tianshu/dynamicTranslate.js": {
+ "size": 5803,
+ "sha256": "15e4e97f0ab62f916f1fd42966ad93c18748bf9ef56ecd2f56d97be62b9ece70"
+ },
+ "pve/boss/sets/tianshu/index.js": {
+ "size": 1002,
+ "sha256": "cc538ae9e76177c89ca2e67edde68d68f371700a802cc9d5348e521a8e664b68"
+ },
+ "pve/boss/sets/tianshu/intro.js": {
+ "size": 64,
+ "sha256": "17fc80689618ad9d3601cc9ccb692e38eb7b66de82e21c75c246c749f2bdf1fd"
+ },
+ "pve/boss/sets/tianshu/perfectPairs.js": {
+ "size": 58,
+ "sha256": "a9b5f18910cf92cd6a727cf254ad8d6e1e2ba60a9cf35e9a458da34ce4fda49f"
+ },
+ "pve/boss/sets/tianshu/pinyin.js": {
+ "size": 48,
+ "sha256": "4a8648524425c2edfb8595971476398ff3c513d27ff4850895c0839945b5c1c6"
+ },
+ "pve/boss/sets/tianshu/skill.js": {
+ "size": 23174,
+ "sha256": "2768ff21576e5d9a55b1d97d9bb866060370e342cb95f9cd5be0e341470acced"
+ },
+ "pve/boss/sets/tianshu/sort.js": {
+ "size": 400,
+ "sha256": "42238b8b9a1a1fcbdd4f6d2f8092a49558ef923a1443f07f57371f40bd4506c4"
+ },
+ "pve/boss/sets/tianshu/translate.js": {
+ "size": 4799,
+ "sha256": "baa234a4f9b902e647f0df3a5189ac65312332fa20c998727c855d9afad0c56c"
+ },
+ "pve/boss/sets/tianshu/voices.js": {
+ "size": 609,
+ "sha256": "020d42f5a8ab6cfe2189de4f8b27aea2f5eb8f0c92eabeccc30a69311fc684bb"
+ },
+ "pve/boss/sets/zhuoguiquxie/card.js": {
+ "size": 126,
+ "sha256": "5fa35745834d9494a4be460c4f1cb842ee56ec797f7eaa45b7df6122c87c92ee"
+ },
+ "pve/boss/sets/zhuoguiquxie/character.js": {
+ "size": 3411,
+ "sha256": "c6a79c1c08f94156276fcaa45236f9bc2166a4e2e0351f286981ef5dac5c73dc"
+ },
+ "pve/boss/sets/zhuoguiquxie/characterFilter.js": {
+ "size": 66,
+ "sha256": "0dc51d476375435b50ea965fd540a6afb19134d974fe183bd924225dc3842062"
+ },
+ "pve/boss/sets/zhuoguiquxie/characterTitle.js": {
+ "size": 64,
+ "sha256": "b736420c47616f5e6493bc0e5d00a1a6803e8540e312ff99b0a5ae2d2de17b6f"
+ },
+ "pve/boss/sets/zhuoguiquxie/dynamicTranslate.js": {
+ "size": 7041,
+ "sha256": "fadb1892b7209b031674f31ecbb4932a27ede38ad649a42ec689f4db1b02bf78"
+ },
+ "pve/boss/sets/zhuoguiquxie/index.js": {
+ "size": 1002,
+ "sha256": "892502aaa8fdf6cf1874ab8e564504053ae8168d37c41e2abcb1546e9f90357d"
+ },
+ "pve/boss/sets/zhuoguiquxie/intro.js": {
+ "size": 64,
+ "sha256": "17fc80689618ad9d3601cc9ccb692e38eb7b66de82e21c75c246c749f2bdf1fd"
+ },
+ "pve/boss/sets/zhuoguiquxie/perfectPairs.js": {
+ "size": 58,
+ "sha256": "a9b5f18910cf92cd6a727cf254ad8d6e1e2ba60a9cf35e9a458da34ce4fda49f"
+ },
+ "pve/boss/sets/zhuoguiquxie/pinyin.js": {
+ "size": 48,
+ "sha256": "4a8648524425c2edfb8595971476398ff3c513d27ff4850895c0839945b5c1c6"
+ },
+ "pve/boss/sets/zhuoguiquxie/skill.js": {
+ "size": 43229,
+ "sha256": "81c625e3f4c1ec77dea2556dc391182e241811b84d92dbfa4b72ebb50b604817"
+ },
+ "pve/boss/sets/zhuoguiquxie/sort.js": {
+ "size": 390,
+ "sha256": "3855904cdc28e6301b9f9177b6c8e04d943ef44fd002a2ce83de5aab7572930c"
+ },
+ "pve/boss/sets/zhuoguiquxie/translate.js": {
+ "size": 6787,
+ "sha256": "e714d7facef185ca0977521db78f327622a902c9b0659293d180c59f66179627"
+ },
+ "pve/boss/sets/zhuoguiquxie/voices.js": {
+ "size": 2115,
+ "sha256": "d93f873a87649d413d1fc7b827c8bdb01e5f61cc11d9650f64b59de9d575e9e1"
+ },
+ "pve/boss/shared.js": {
+ "size": 416,
+ "sha256": "9c0c7b0757172078f920a91cc27569456c2d1e3134130391c88ec5ab86370f79"
+ },
+ "pve/boss/skill.js": {
+ "size": 271,
+ "sha256": "dcfad38fde564a88baba111100cd9b121e156478e16c8b31a286adbb0aeffd23"
+ },
+ "pve/boss/sort.js": {
+ "size": 330,
+ "sha256": "f7ec05f54d771ded03a4c50b1b56a6b4e48cf530e4755796a879edd714278334"
+ },
+ "pve/boss/translate.js": {
+ "size": 272,
+ "sha256": "f58cf928b22b712fcb374f19e5fd3343d4035e2702388b0d09b11abdd1499376"
+ },
+ "pve/boss/voices.js": {
+ "size": 682,
+ "sha256": "a72b8a89b18f393665e773678630422bb8dd115abc6cb668374a7057be8659cb"
+ },
+ "pve/images/tianshu.jpg": {
+ "size": 250592,
+ "sha256": "41279c75555900dc0b7838b4fd9fcdfb31f0665a58d1dd0939b3e8466dd1225d"
+ },
+ "pve/images/十二生肖/chenlong_boss_shuying.png": {
+ "size": 640131,
+ "sha256": "295461a9645027b49b77ace76ae27d3c982a9b9725bcaee061e08486b0b6417d"
+ },
+ "pve/images/十二生肖/chouniu_boss_shuying.png": {
+ "size": 539618,
+ "sha256": "dd32bf059e65ee0d2e3e0858ef3f2e06d1b6004c4c6d709df3a2504d9a57b6e0"
+ },
+ "pve/images/十二生肖/haizhu_boss_shuying.png": {
+ "size": 603527,
+ "sha256": "ee86311fc07b564e5ad548ec1f87f327a997cfea5be8ce5e196d86015f2f5290"
+ },
+ "pve/images/十二生肖/maotu_boss_shuying.png": {
+ "size": 550227,
+ "sha256": "f6ab7a72a491d62c3da45eff30e6549541c817af045bdd3637dbb005d315a680"
+ },
+ "pve/images/十二生肖/shenhou_boss_shuying.png": {
+ "size": 532102,
+ "sha256": "0b7dcb96cec2720ccf93c925e3589486b6988b6e01b455093409b6afcde8d6c6"
+ },
+ "pve/images/十二生肖/sishe_boss_shuying.png": {
+ "size": 595306,
+ "sha256": "9474fb7924ba2a72ebfedcf74c4b93302717cbc11ee07760f5dcd004f3bb550d"
+ },
+ "pve/images/十二生肖/weiyang_boss_shuying.png": {
+ "size": 645101,
+ "sha256": "20ee22a70f4ad14b6640c29c3df60b5ad0efb44a21a3a729aef68971a0061276"
+ },
+ "pve/images/十二生肖/wuma_boss_shuying.png": {
+ "size": 613392,
+ "sha256": "02177ccf6bf619c69df89a64d99d39e75b42dfcd28f10855abdc372946e82d96"
+ },
+ "pve/images/十二生肖/xvgou_boss_shuying.png": {
+ "size": 529986,
+ "sha256": "8739d5e721ac60018d1447c6b88a8526cc94b59ab94596b2c65ebf0e1dae7025"
+ },
+ "pve/images/十二生肖/yinhu_boss_shuying.png": {
+ "size": 649795,
+ "sha256": "7d04e0fce9fafac5e950b4e3c5e8d632ab96af5d19a68b854afcc9873dcbfda2"
+ },
+ "pve/images/十二生肖/youji_boss_shuying.png": {
+ "size": 541535,
+ "sha256": "ab77742d979f642cf5fc3ca03b3bc4726b7150ed5fda477cdb2d041ff77994e5"
+ },
+ "pve/images/十二生肖/zishu_boss_shuying.png": {
+ "size": 666615,
+ "sha256": "45ab0411802c8e9bc946afc49def9aafda2bbe0e1dec03c32c1649a69693b612"
+ },
+ "pve/images/天书乱斗/baiqi_boss_shuying.png": {
+ "size": 797095,
+ "sha256": "46229cdb70ccf4ec541ce9b56c7a1f6c15c09b169bde592378393107cb3aa3d3"
+ },
+ "pve/images/天书乱斗/hanba_boss_shuying.png": {
+ "size": 588380,
+ "sha256": "352c79e97290f8dc2d015ef28c6a93a67ecf1b8717252fdaea996ff699a1754c"
+ },
+ "pve/images/天书乱斗/huoshenzhurong_boss_shuying.png": {
+ "size": 643230,
+ "sha256": "bd34d1c42e44f44ad9f6240fdae54d76a18b1e25efb9e991db41d10b5c7691b1"
+ },
+ "pve/images/天书乱斗/kuafu_boss_shuying.png": {
+ "size": 836115,
+ "sha256": "9b016aa4a7aecae8a48ebe38059e117f1fe6a2247cc943f9a0770091791492c5"
+ },
+ "pve/images/天书乱斗/shaohao_boss_shuying.png": {
+ "size": 711440,
+ "sha256": "ca847b86d0c22878a062b11ff240accaa538dfad7558f173d425c71078f4a1c5"
+ },
+ "pve/images/天书乱斗/shuishengonggong_boss_shuying.png": {
+ "size": 773985,
+ "sha256": "90450b2a87205bef389d4fc720c68a3cfb373620b41cd56e012d20d5200973ed"
+ },
+ "pve/images/天书乱斗/xuannv_boss_shuying.png": {
+ "size": 548495,
+ "sha256": "df4acdc59a400fa29db8982ccfb89aad9ea975474119a5c0979d6f1b5d8b1cd2"
+ },
+ "pve/images/虚拟偶像/xiaojiu_xvni_shuying.png": {
+ "size": 742108,
+ "sha256": "f5e6012fcc874f4b14497d6b0bf4dd1f909fa36f85fc0f9dc1bd8fbac82aefc4"
+ },
+ "pve/images/虚拟偶像/xiaole_xvni_shuying.png": {
+ "size": 760024,
+ "sha256": "d2636ea6d492dd5a9f4bda8a3e60e5c198282144f6acb0b601030ede30cab13c"
+ },
+ "pve/images/虚拟偶像/xiaosha_xvni_shuying.png": {
+ "size": 711605,
+ "sha256": "b34b1ad8235191cb2fbd7f0b5f1bc883f4672a1ff72fcee616656099670810da"
+ },
+ "pve/images/虚拟偶像/xiaoshan_xvni_shuying.png": {
+ "size": 669914,
+ "sha256": "e0fdbcf2cde0fe19216f27f9112eccb8cb2fda83166fde8fb8a8f14fd7683e9a"
+ },
+ "pve/images/虚拟偶像/xiaotao_xvni_shuying.png": {
+ "size": 780159,
+ "sha256": "6c22d112acaf8ab0421b9919cb20fa0841ab7d96a59c43c3839ec4c4a265e516"
+ },
+ "pve/images/青青子衿/caocao_boss_shuying.jpg": {
+ "size": 678999,
+ "sha256": "60e8b6ac74e796e42b6cab9bf7c422f8822df247ee322c7a011d43b089db20e0"
+ },
+ "pve/images/青青子衿/dongzhuo_boss_shuying.jpg": {
+ "size": 4020802,
+ "sha256": "c07bea94f14a11b260db61e08d50571f71d1937170f16d3a61ed4261880d9e4d"
+ },
+ "pve/images/青青子衿/lvbu_boss_shuying.jpg": {
+ "size": 593292,
+ "sha256": "6787f2d322dcb02edc41bb282388623ac6d1fe9bd5966ba6fe017a7cb2bbe929"
+ },
+ "pve/images/青青子衿/simayi_boss_shuying.jpg": {
+ "size": 7770307,
+ "sha256": "4752a33861a9ed55633de356e60819a73918cc99c82f3c0544a0befc29515473"
+ },
+ "pve/images/青青子衿/yuanshu_boss_shuying.jpg": {
+ "size": 2155807,
+ "sha256": "8a332adf1450a3300359294f0d4f393b160ef6a75cf2853ef19f881e49e6c857"
+ },
+ "pve/images/青青子衿/zhangjiao_boss_shuying.jpg": {
+ "size": 724819,
+ "sha256": "b36661396b6d2066f6d7dabdb6416f5e33688183b219af58577984d81fa0e6aa"
+ },
+ "pve/images/驱鬼逐邪/baiwuchang_boss_shuying.png": {
+ "size": 593197,
+ "sha256": "8c371dbe3fd33384482f6f3ed673e7717927e5d8c1d731b8a939b65ddcd373b9"
+ },
+ "pve/images/驱鬼逐邪/baowei_boss_shuying.png": {
+ "size": 604578,
+ "sha256": "66e4599e73de11f8663d911755cd108717c6165d672a8a91d03ebb833c7f2d13"
+ },
+ "pve/images/驱鬼逐邪/guiwang_boss_shuying.png": {
+ "size": 696250,
+ "sha256": "7196ed36bae58955db38be7d24101337cd83f4cfd89fac00d5ac609717899cc0"
+ },
+ "pve/images/驱鬼逐邪/heibaiwuchang_boss_shuying.png": {
+ "size": 703435,
+ "sha256": "ac9cccba3d2b926c2dd84aefba32ab0a9ee5d3edade78003f9ffdc2c48368f0d"
+ },
+ "pve/images/驱鬼逐邪/heiwuchang_boss_shuying.png": {
+ "size": 514674,
+ "sha256": "84b0ad42705843c74144f3ca655a411e2d10c0250c9733bf53e39c64fb7c64ac"
+ },
+ "pve/images/驱鬼逐邪/huangfeng_boss_shuying.png": {
+ "size": 635820,
+ "sha256": "2f6e94bad08dab522562f9b8658af365b8bce4a8d57fad346e3343036028c632"
+ },
+ "pve/images/驱鬼逐邪/mamian_boss_shuying.png": {
+ "size": 622621,
+ "sha256": "4f384d37b195249cee61b352808b19b9d3c982b2153e94fcdd847553f44ae695"
+ },
+ "pve/images/驱鬼逐邪/mengpo_boss_shuying.png": {
+ "size": 612824,
+ "sha256": "62af68a30166d9a83ea3b3077f1c204124fc8ec8e59fc69940e23ab5874f0c34"
+ },
+ "pve/images/驱鬼逐邪/niaozui_boss_shuying.png": {
+ "size": 631940,
+ "sha256": "7b72408ca47a2bd37c887f74b18410a8bda1c56ebf3cd4714ea40480a69450ba"
+ },
+ "pve/images/驱鬼逐邪/niutou_boss_shuying.png": {
+ "size": 583418,
+ "sha256": "6b15969118d9eb97a35afff4b28a0396156b1d8ba2e9bb56a2de9501ff1899a0"
+ },
+ "pve/images/驱鬼逐邪/niutoumamian_boss_shuying.png": {
+ "size": 734405,
+ "sha256": "9879fc5592f15754cafa73411db9eca47b8cba863f58be5c09e307202b792090"
+ },
+ "pve/images/驱鬼逐邪/riyeyoushen_boss_shuying.png": {
+ "size": 721592,
+ "sha256": "8269962db8806ce31e9000f6e4878790364bc7ca2655d8d9be961a13d5fdb433"
+ },
+ "pve/images/驱鬼逐邪/yanluowang_boss_shuying.png": {
+ "size": 652776,
+ "sha256": "e9d7d18f53b4d28add79aa677eeaf910f42af989ff0eaa3168de1bedbbb8ad7d"
+ },
+ "pve/images/驱鬼逐邪/yvsai_boss_shuying.png": {
+ "size": 669705,
+ "sha256": "bf3938a0114920cf6687c51b11709e6ad81a4575f5a9d992767110d43f93b139"
+ },
+ "pve/images/龙舟/caoe_boss_shuying.png": {
+ "size": 558756,
+ "sha256": "3048dc84f6155156a74a8cd73e63966c9c7d7f05ca4c1739f9caa032fdc470cb"
+ },
+ "pve/images/龙舟/hebo_boss_shuying.png": {
+ "size": 721105,
+ "sha256": "805cf95f9a1030e36b843d64220451841dce52da26d3b4c11c28cb49c3052d0d"
+ },
+ "pve/images/龙舟/taoshen_boss_shuying.png": {
+ "size": 588114,
+ "sha256": "9c194616195d12dac97a1b4faf065a2c0bf1e0ab2e06380d52370bb5d000934d"
+ },
+ "pve/images/龙舟/yuershen_boss_shuying.png": {
+ "size": 694241,
+ "sha256": "15adcfb80bd22035c604703005ae22d1721eeafcc0a1ee09c89c73713cd3d03a"
+ },
+ "tianshu/bondSkills.js": {
+ "size": 40151,
+ "sha256": "c2a7925e56b9baeb8812e8762e8dc2b471908c9d2faf9a0b3ebb3f7792afacb4"
+ },
+ "tianshu/config.js": {
+ "size": 29131,
+ "sha256": "5f23724ecad5141ed98674919282ec8fd53e666f23adb6f097dd14be466402ed"
+ },
+ "tianshu/extension.js": {
+ "size": 64398,
+ "sha256": "3e6934e7281bf84e40fd28ea12bee02272573ee1dbba9421c45823677e45021c"
+ },
+ "tianshu/shuYing_Skill_Xvxiang1.mp3": {
+ "size": 15451,
+ "sha256": "41914d7d542ddfb93c89aefffc245869d63a9fb2f52293df8e6667009832afd8"
+ },
+ "update.js": {
+ "size": 24145,
+ "sha256": "7594c68dd1308de5fd13ea7e76fde665a296400a7505b32054bf0d149986bb05"
+ },
+ "update.txt": {
+ "size": 1763,
+ "sha256": "0c8d90ecb09de1f92bf73ffa444d754fe1a8614029ae3b91d515c35f4863c2b5"
+ },
+ "voices.js": {
+ "size": 1711,
+ "sha256": "975c58fe201cbbc0027af5038504064382a195df278085a75eca03b2ddace75a"
+ },
+ "yuanshen/extension.js": {
+ "size": 1082,
+ "sha256": "a630d543c3648700cb2e3525588643382a0d72779aa8725ee5ecaa7ceaf48d0e"
+ },
+ "yuanshen/八重神子/1.jpg": {
+ "size": 331322,
+ "sha256": "e7a5f5d79278582e93c1b5277bc823f57c4e1ad2ce85ffa7d43ef1187aa5a5d7"
+ },
+ "yuanshen/八重神子/character.js": {
+ "size": 12302,
+ "sha256": "2a3dbbc035f9a6595906a3bce88b192bf521f94cab0b6f12df5833da3c2f6c4e"
+ },
+ "yuanshen/八重神子/shuYing_Shashengying1.mp3": {
+ "size": 15466,
+ "sha256": "78d65b08c36c9de3e4872864cf1c56ae83afad2b3909e47809ce088e5094e53d"
+ },
+ "yuanshen/八重神子/shuYing_Shashengying2.mp3": {
+ "size": 51411,
+ "sha256": "68cc826504f35d00a47924483d8cbd7151951f1f543dbbcccb124dd08e436a8b"
+ },
+ "yuanshen/八重神子/shuYing_Shizuishi1.mp3": {
+ "size": 87385,
+ "sha256": "ea491c16ae35fefb1eefd847367e9572c675543236accd8aa0ae4bf542d4989f"
+ },
+ "yuanshen/八重神子/shuYing_Shizuishi2.mp3": {
+ "size": 15588,
+ "sha256": "b6fa8eb8531aeb3ecc819bf45ba394d0d2fc147e3de93a58cc8af181e9b00dc5"
+ },
+ "yuanshen/八重神子/shuYing_Shizuishi3.mp3": {
+ "size": 64467,
+ "sha256": "11dc706d7d84f34c060d3a5252496e963a932f9534c5e15614d9186c388e69e3"
+ },
+ "yuanshen/八重神子/shuYing_Shizuishi4.mp3": {
+ "size": 18087,
+ "sha256": "b5c758c0e631e71e4896276e6c948f6e9748d22d92498058e55893de0ad9135f"
+ },
+ "yuanshen/八重神子/shuYing_Tianhuxianzhen1.mp3": {
+ "size": 81315,
+ "sha256": "7c4f4a6bc64eaa75b458d1cff5cb0a29ef9629eb7451349d87f9099b888f5e94"
+ },
+ "yuanshen/八重神子/shuYing_Tianhuxianzhen2.mp3": {
+ "size": 119436,
+ "sha256": "1a728ba036015b245e02d6d9048a1b4c4912d9dff9c65b4c3c7203501346c4aa"
+ },
+ "yuanshen/可莉/1.jpg": {
+ "size": 162111,
+ "sha256": "7664f30a84fcdf24b7d8719db74e89de97dca904fec62e514e5a611bae21d0cd"
+ },
+ "yuanshen/可莉/character.js": {
+ "size": 11072,
+ "sha256": "3ee1fc9fcf08ac0d1fa9a6f2e617a7a95a45d2cd313415f66906f64ec9299bf4"
+ },
+ "yuanshen/可莉/shuYing_Honghong1.mp3": {
+ "size": 134764,
+ "sha256": "7cc7e8f3557193ee38d5b0ab2935171ad318167598f3c87ce103395262461c3f"
+ },
+ "yuanshen/可莉/shuYing_Honghong2.mp3": {
+ "size": 17073,
+ "sha256": "8f7077498c6c640e716091c97a243bedb94f5d7aedee7eff820a226e78c6f961"
+ },
+ "yuanshen/可莉/shuYing_Honghong3.mp3": {
+ "size": 12432,
+ "sha256": "c6c9d4159ca783a842bd164ee275b583b4b2f754060ab1f3fe23e1f715faf4c6"
+ },
+ "yuanshen/可莉/shuYing_Lieyan1.mp3": {
+ "size": 40584,
+ "sha256": "8e81a21f608f9646430c7435762b0ee666d95795110bf40a454fdb834b1cf445"
+ },
+ "yuanshen/可莉/shuYing_Lieyan_Damage1.mp3": {
+ "size": 35919,
+ "sha256": "c763f23f3e636a8f990ce77259a4c85e54687254ae9dde1c386d7350dd47e9e6"
+ },
+ "yuanshen/可莉/shuYing_Lieyan_Damage2.mp3": {
+ "size": 30568,
+ "sha256": "7dc80482fc074ab89e6e359a56c6ca51255fcc3c32871e95b8c5438d4f5869bf"
+ },
+ "yuanshen/可莉/shuYing_Lieyan_Damage3.mp3": {
+ "size": 22160,
+ "sha256": "9fb6bde876fc09e526fd91489549242aae933ff241904721e01f5ff5241d8f93"
+ },
+ "yuanshen/可莉/shuYing_Pengpeng1.mp3": {
+ "size": 47823,
+ "sha256": "3f6114e53b492b2d69560cb23295c38ec5a88e7f80db29476dda6b6e07205534"
+ },
+ "yuanshen/可莉/shuYing_Pengpeng2.mp3": {
+ "size": 33969,
+ "sha256": "0fce4d614f3201750dd0272b19b9571aa78e1b84ead34a024b5583489924e45f"
+ },
+ "yuanshen/可莉/shuYing_Pengpeng3.mp3": {
+ "size": 16880,
+ "sha256": "f483e38a1edc32750a371aa8a2ce4d8b4361ab02a675bc6043ffafdcd2d77b06"
+ }
+ },
+ "tree": {
+ "type": "directory",
+ "name": "术樱包",
+ "children": {
+ "LICENSE": {
+ "type": "file",
+ "size": 35147,
+ "sha256": "8ceb4b9ee5adedde47b31e975c1d90c73ad27b6b165a1dcd80c7c545eb65b903"
+ },
+ "character": {
+ "type": "directory",
+ "children": {
+ "audio": {
+ "type": "directory",
+ "children": {
+ "zuoci": {
+ "type": "directory",
+ "children": {
+ "huashen_shuying1.mp3": {
+ "type": "file",
+ "size": 120863,
+ "sha256": "6ba387a1629e1c20cb4c1cb654a99d9574d78a521f3f6bc93191dbf11e9985cc"
+ },
+ "huashen_shuying2.mp3": {
+ "type": "file",
+ "size": 157957,
+ "sha256": "58c2cc83085f3887b8ad85d9448154b95d711fac2a63e171e63d6bae348c61fc"
+ },
+ "jihun_shuying1.mp3": {
+ "type": "file",
+ "size": 117248,
+ "sha256": "22db1641f63955a99a009d6297c541492e585ca3ee18840bed9b27a5f79d67ad"
+ },
+ "jihun_shuying2.mp3": {
+ "type": "file",
+ "size": 141824,
+ "sha256": "19ddabc7d1c2646294e8fe69d8e96b6d25dfbfff3266aa2087f3af8048498e9e"
+ },
+ "xinsheng_shuying1.mp3": {
+ "type": "file",
+ "size": 125565,
+ "sha256": "91e6b58bcb82a4250362efc4c668dec6563d376a7f30450ada1c7871fb189baa"
+ },
+ "xinsheng_shuying2.mp3": {
+ "type": "file",
+ "size": 142806,
+ "sha256": "f23168f7c4052836de9c021cb5983dca09c18651568754c6606017bc0f4913f3"
+ },
+ "zuoci_shuying.mp3": {
+ "type": "file",
+ "size": 90038,
+ "sha256": "f330d2665fd2c9bb85cd4a80f596f44a283c715333a1bf8aafffa5ef030c5126"
+ }
+ }
+ }
+ }
+ },
+ "character.js": {
+ "type": "file",
+ "size": 360,
+ "sha256": "749cb31ca7b2f32f87f5a290b28009f14644d9b0f1a03a01530af1d12265a9da"
+ },
+ "characterFilter.js": {
+ "type": "file",
+ "size": 63,
+ "sha256": "92164cec19b58e3a27d92426fbe227c426dff1391b2f56b2329a676a5fc4faf7"
+ },
+ "characterTitle.js": {
+ "type": "file",
+ "size": 61,
+ "sha256": "f4be860d37d46261a6d45e30bce661d301d79d548aeef0bfc2e8ad67fe783cea"
+ },
+ "dynamicTranslate.js": {
+ "type": "file",
+ "size": 65,
+ "sha256": "d409295767b35e4867e5aa6fae92020f2a8943f71569af5539436648a345bd2f"
+ },
+ "images": {
+ "type": "directory",
+ "children": {
+ "zuoci_shuying.jpg": {
+ "type": "file",
+ "size": 222468,
+ "sha256": "ff13df281bd289d63033d2c52b8d31f2a9f0a8d9cdc0ad525db06b899411f4cb"
+ }
+ }
+ },
+ "index.js": {
+ "type": "file",
+ "size": 1002,
+ "sha256": "ef3dcf49147bead5a4b58c56aa23f983e7fda7c4769f276f1f228293f87acc33"
+ },
+ "intro.js": {
+ "type": "file",
+ "size": 61,
+ "sha256": "68187ccda36e322c0483a735e6de6e04e5d7ded9e6f6aa9a3e931f4400db2a5e"
+ },
+ "perfectPairs.js": {
+ "type": "file",
+ "size": 55,
+ "sha256": "7f2bd697eaaff284d2b356321a402a3cc7c0139ff6fdf339f6cbdd8da208a05f"
+ },
+ "skill.js": {
+ "type": "file",
+ "size": 15439,
+ "sha256": "ad6859ff3ed9e05e67b991f85961b85b21af4d486a76660d29305e962120bb94"
+ },
+ "sort.js": {
+ "type": "file",
+ "size": 112,
+ "sha256": "42cf6bb834aca4ff883aa196604f3d9d2d9047bb320cf56a633aae4ecbb5ce4c"
+ },
+ "translate.js": {
+ "type": "file",
+ "size": 1126,
+ "sha256": "dd6e076e058514a11b5912c0893474494af825bc646e01e12c514296dc1390ab"
+ },
+ "voices.js": {
+ "type": "file",
+ "size": 43,
+ "sha256": "d7f3da55f8b2e8bf77ace03bd4911497a4abb9e1f942555f7685337801278205"
+ }
+ }
+ },
+ "extension.css": {
+ "type": "file",
+ "size": 51738,
+ "sha256": "356aa9473ab72ad43850c13451fd15a25c6ce2d93678cd0dcba5568d10443b40"
+ },
+ "extension.js": {
+ "type": "file",
+ "size": 14743,
+ "sha256": "3dae019a7941072f2c8b67ce14f697f9d4aa0a8bebc4187e913da5468bd88955"
+ },
+ "function.js": {
+ "type": "file",
+ "size": 33746,
+ "sha256": "df1aa3102a214986723af365da1029485680519d355a1ff88973eb36f8a6f909"
+ },
+ "mengsan": {
+ "type": "directory",
+ "children": {
+ "config.js": {
+ "type": "file",
+ "size": 2211,
+ "sha256": "1283490af94dc3429330f6f7c192b1492b52d686018f2d68cb8482c0bc04e549"
+ },
+ "mode.js": {
+ "type": "file",
+ "size": 22867,
+ "sha256": "88a707ac6b59160e9735770d649d8d1e5c695298628c924306b824cef7e1cc27"
+ },
+ "state.js": {
+ "type": "file",
+ "size": 8175,
+ "sha256": "1096d195396f5a0fbe15c7d3627834cb3e415a5878c411eb41d9897af9abf46d"
+ },
+ "style.css": {
+ "type": "file",
+ "size": 6859,
+ "sha256": "fdce7bb71f7290254d984a35415e5012f829ae9992765d1f3282f35528c1b92b"
+ }
+ }
+ },
+ "menu.js": {
+ "type": "file",
+ "size": 22310,
+ "sha256": "3a603a82bb80897cf809ba80ebd55bbf66634cdbe807ed33ad2e43d845d48211"
+ },
+ "pve": {
+ "type": "directory",
+ "children": {
+ "audio": {
+ "type": "directory",
+ "children": {
+ "dead": {
+ "type": "directory",
+ "children": {
+ "十二生肖": {
+ "type": "directory",
+ "children": {
+ "chenlong.mp3": {
+ "type": "file",
+ "size": 68757,
+ "sha256": "c59400dc4e2ed6de182c662e585711d3432aa3b302f440cd07f8f277431f7144"
+ },
+ "chouniu.mp3": {
+ "type": "file",
+ "size": 65413,
+ "sha256": "3d948ab1d3410b707e5a2ca8d18cb7089e6645b673e0d38ebb8926cce0e117f1"
+ },
+ "haizhu.mp3": {
+ "type": "file",
+ "size": 79624,
+ "sha256": "88d4613ab13bccc4139efaf7e7eb51156575d9999869432a7fd331cf01a84f26"
+ },
+ "maotu.mp3": {
+ "type": "file",
+ "size": 52039,
+ "sha256": "6b52043e333e539b41190d4d4ef10dddb17c0d83ced6aee1440f7ba3f4d64bb9"
+ },
+ "shenhou.mp3": {
+ "type": "file",
+ "size": 41590,
+ "sha256": "0448a8fca9e01c8e45e3773df49f587c905a1ce85f5a22c02f80013c0343340a"
+ },
+ "sishe.mp3": {
+ "type": "file",
+ "size": 47441,
+ "sha256": "e77095a7a57e68d1336c4af3dff05a71a58a961e272f33b33a8d678f9984b32f"
+ },
+ "weiyang.mp3": {
+ "type": "file",
+ "size": 50367,
+ "sha256": "4f76f2d3caf11514abd4b37ca0f018333e850b2085d585ea72204145139ceeb6"
+ },
+ "wuma.mp3": {
+ "type": "file",
+ "size": 62070,
+ "sha256": "ab3368d1289b1cc49530624eddf159d59ace17ea2d307857594d603c84073425"
+ },
+ "xvgou.mp3": {
+ "type": "file",
+ "size": 60398,
+ "sha256": "2c882f4fd9d5fe331ee54898e2b92f00acf484d1e9df50aa8e6aa8e9f26588d6"
+ },
+ "yinhu.mp3": {
+ "type": "file",
+ "size": 77116,
+ "sha256": "f941d70b87b36c4b8f2eb760edf63a48e2f2c656536b610235cf5467488b99c2"
+ },
+ "youji.mp3": {
+ "type": "file",
+ "size": 59562,
+ "sha256": "005575600947bd6ac5c97670e07b4140d968911d596a82e76d7b5c124b6325e5"
+ },
+ "zishu.mp3": {
+ "type": "file",
+ "size": 55800,
+ "sha256": "6d4e0388dc7a03201998743cf2c9e345002580c00573cb7c020fbced61b79818"
+ }
+ }
+ },
+ "天书乱斗": {
+ "type": "directory",
+ "children": {
+ "hanba_boss_shuying.mp3": {
+ "type": "file",
+ "size": 17297,
+ "sha256": "1eef36bdb352fb06cc88a51ca1d16a41e726423ea4ffa00dd4ba130ce7abab02"
+ },
+ "kuafu_boss_shuying.mp3": {
+ "type": "file",
+ "size": 50219,
+ "sha256": "d3d01433a134ec7733a45e12454de276bfd5de654e077a08817dc6fb0160dfe5"
+ },
+ "xuannv_boss_shuying.mp3": {
+ "type": "file",
+ "size": 57056,
+ "sha256": "7c22ad127a07a01743599e1671152eb05f164b9a990f513f0e607e64624cb017"
+ }
+ }
+ },
+ "青青子衿": {
+ "type": "directory",
+ "children": {
+ "caocao_boss_shuying.mp3": {
+ "type": "file",
+ "size": 118668,
+ "sha256": "9d75a078f17e3d645c50d308901fdcf99da0532e5a239785c29416cba5cd105c"
+ },
+ "dongzhuo_boss_shuying.mp3": {
+ "type": "file",
+ "size": 54275,
+ "sha256": "0dc28bcfad7592e49f9ad37cf2a005d0d86af862014b35f08032d89a3773f6b4"
+ },
+ "lvbu_boss_shuying.mp3": {
+ "type": "file",
+ "size": 98188,
+ "sha256": "5895d9fdfd1fa849e5e7a780a169e8494896ac965b50d0db5946846d0cabcb50"
+ },
+ "simayi_boss_shuying.mp3": {
+ "type": "file",
+ "size": 37856,
+ "sha256": "e16e5c74f5619f75cd4b952a5d74ae81138c820325b9b0682da558ec3eb1eba1"
+ },
+ "yuanshu_boss_shuying.mp3": {
+ "type": "file",
+ "size": 122776,
+ "sha256": "859e59d44146f6ef07286b939acaa15b87de6b4b529fcd51c6f29708f7ff1bba"
+ },
+ "zhangjiao_boss_shuying.mp3": {
+ "type": "file",
+ "size": 43185,
+ "sha256": "f51532c17e59d1b5ffe8c09ece871b3e563ccbeaa58486e1d0fe7ace74eb8356"
+ }
+ }
+ },
+ "驱鬼逐邪": {
+ "type": "directory",
+ "children": {
+ "guiwang.mp3": {
+ "type": "file",
+ "size": 72116,
+ "sha256": "62360fc121a5a4f4f929c19a80d4c4f63a1812d57c1506d11492e93085d214c9"
+ },
+ "heibaiwuchang.mp3": {
+ "type": "file",
+ "size": 60757,
+ "sha256": "32e5d699e76ed6237c2d29ddddaadb522f0a9e36c1da1a5c57ad5ed5eb2d8b82"
+ },
+ "niutoumamian.mp3": {
+ "type": "file",
+ "size": 80822,
+ "sha256": "9a7c33b75ba3799ecadbe12031150e9921f8f878a588adc6207fc2188414236b"
+ },
+ "riyeyoushen.mp3": {
+ "type": "file",
+ "size": 48889,
+ "sha256": "7bb22a88d326667253df464a3665a7f9ef8a04de4f10e142b455e5848c942be7"
+ }
+ }
+ }
+ }
+ },
+ "skill": {
+ "type": "directory",
+ "children": {
+ "十二生肖": {
+ "type": "directory",
+ "children": {
+ "chenlong_shuying1.mp3": {
+ "type": "file",
+ "size": 62905,
+ "sha256": "c46b30ad29ee2e8267f9980a2e9aa3bd789d798cfb3f3c365228f6f083a8b5cd"
+ },
+ "chouniu_shuying1.mp3": {
+ "type": "file",
+ "size": 49949,
+ "sha256": "2e54102385815b4159ba3aa35bde87b9c65d42fcacec9030935a0242e7961ee4"
+ },
+ "haizhu_shuying1.mp3": {
+ "type": "file",
+ "size": 26961,
+ "sha256": "6a18ce4e4e93a51713ab1493f33644155afda37402fc70aa86d6161247880fe2"
+ },
+ "moutu_shuying1.mp3": {
+ "type": "file",
+ "size": 40754,
+ "sha256": "9b077ddb25ca9bf6049a74254d9a87f3093efa9e3e78dd68caa142ce5ce68667"
+ },
+ "shenhou_shuying1.mp3": {
+ "type": "file",
+ "size": 34066,
+ "sha256": "5030646db02a0fd8de2c3665733fdf5c9af50f9cbd6b85591597a224deab106f"
+ },
+ "sishe_shuying1.mp3": {
+ "type": "file",
+ "size": 58726,
+ "sha256": "a6b9e0eebdd3bb78e9e03e2cb97bd60277f3ae01e62318ffba345c41a8867703"
+ },
+ "weiyang_shuying1.mp3": {
+ "type": "file",
+ "size": 50785,
+ "sha256": "419126a2a438eb0a5220d18059af42e2b400eb6c1730086880f12405e232e621"
+ },
+ "wuma_shuying1.mp3": {
+ "type": "file",
+ "size": 30305,
+ "sha256": "1a57e5b8f3eefcf6172fb05ee5a7a1314e50b396526c0fe464a3659ccb493f41"
+ },
+ "xvgou_shuying1.mp3": {
+ "type": "file",
+ "size": 53710,
+ "sha256": "a5b78b4d92d535d652725f56bfe2ff58c203007ec97b92954144b23496b113c4"
+ },
+ "yinhu_shuying1.mp3": {
+ "type": "file",
+ "size": 31141,
+ "sha256": "5dd1f7bcc07736c0f6e204f0cd4bd3c0c5f6a53c561959683f2d49427ca2e341"
+ },
+ "youji_shuying1.mp3": {
+ "type": "file",
+ "size": 53292,
+ "sha256": "279c283f8a05689ed8edddea7fe9081555acb2b33f95fd8535686cfd2b825013"
+ },
+ "zishu_shuying1.mp3": {
+ "type": "file",
+ "size": 29469,
+ "sha256": "9259ab36cb01fc217110194ecd041e0c18ca3f79c9be5ee8c2084895675926ff"
+ }
+ }
+ },
+ "天书乱斗": {
+ "type": "directory",
+ "children": {
+ "dishi_shuying1.mp3": {
+ "type": "file",
+ "size": 36880,
+ "sha256": "0a3ddd792bb1203b029e88497abb8cf2af8d939079e59491ce0f6da384d22fc9"
+ },
+ "fenshi_shuying1.mp3": {
+ "type": "file",
+ "size": 18727,
+ "sha256": "b4c4b0e738efe31c35832666ab66307c149dc6899e7e76004f44ef0eac0c5e3c"
+ },
+ "fenshi_shuying2.mp3": {
+ "type": "file",
+ "size": 18207,
+ "sha256": "9738a8844a2a47363297ba55c5558591225b7a8deb5de2e941764b5945bcde7c"
+ },
+ "jiutian_shuying1.mp3": {
+ "type": "file",
+ "size": 52571,
+ "sha256": "60ee41fb6da1eb3e2e095a5fd94f62b938956a2933a70fdcae25ead795a6c35a"
+ },
+ "lieben_shuying1.mp3": {
+ "type": "file",
+ "size": 38328,
+ "sha256": "0a900ec7b47e83b6164cd739f2cc1e9145d49db6afb5b5e2e69ba24f52e76b1d"
+ },
+ "xinji_shuying1.mp3": {
+ "type": "file",
+ "size": 19897,
+ "sha256": "982f5af2233ef665acadb6a8f20d579041cc1193ae6f52710e31cba4187102de"
+ },
+ "xinji_shuying2.mp3": {
+ "type": "file",
+ "size": 26137,
+ "sha256": "ca7ef203e544b50a5b5d2cb1660247a4a03fab79235a370dad63f7b808002408"
+ },
+ "xuanlie_shuying1.mp3": {
+ "type": "file",
+ "size": 52377,
+ "sha256": "d4a06b7e9e4c7d3eea51fec34231e28c83822832daa379cb2f639fb9cfb71312"
+ },
+ "yinjiang_shuying1.mp3": {
+ "type": "file",
+ "size": 44717,
+ "sha256": "f15beca09271c30b65d2d250bf84fb0a2fdda1a40e5d0b725187716fbdf41f86"
+ },
+ "zhiri_shuying1.mp3": {
+ "type": "file",
+ "size": 18077,
+ "sha256": "ab8fa7d09f3a664c2e86a790e0cd5d12aff4759a3e16cec5a4a1c86d569991d4"
+ },
+ "zhiri_shuying2.mp3": {
+ "type": "file",
+ "size": 18597,
+ "sha256": "acd8f6770a27d10726b6f7c38964cd2f5c05e204a65d3d193a7572d7bef417a2"
+ },
+ "zhuri_shuying1.mp3": {
+ "type": "file",
+ "size": 37542,
+ "sha256": "04f158b9c8a92d651aa10fa9663f521a45b6479088875b8a15d9f89ffdbfda38"
+ }
+ }
+ },
+ "青青子衿": {
+ "type": "directory",
+ "children": {
+ "baonue_shuying1.mp3": {
+ "type": "file",
+ "size": 42049,
+ "sha256": "627d08b60c0f1077b74de11c8be40e22aa00740b67f0878c9ec7b99fe9728148"
+ },
+ "duoxi_shuying1.mp3": {
+ "type": "file",
+ "size": 20476,
+ "sha256": "cc28dd8e8f474e02d8204bfa7525da6d9bef62fc6b097d2aa8236a3ad9ebcf18"
+ },
+ "fankui_shuying1.mp3": {
+ "type": "file",
+ "size": 23296,
+ "sha256": "48027f1f9acd6565a33127e4dbea6ce404e0e5a7f9c4a2e2c010d238569f9580"
+ },
+ "guicai_shuying1.mp3": {
+ "type": "file",
+ "size": 33904,
+ "sha256": "193d6ef68bc61d3e058a1b64fe349f08ccf5092318092eec7b017f76777b8de9"
+ },
+ "guidao_shuying1.mp3": {
+ "type": "file",
+ "size": 36288,
+ "sha256": "41e676469edd523e00a2a3efeed3ae28b03a941647466e1ed966a579c8bb48f2"
+ },
+ "jianxiong_shuying1.mp3": {
+ "type": "file",
+ "size": 66841,
+ "sha256": "cba3603b06a730e3a65e600ac3d930717e090b93da470373145784d1edbcec88"
+ },
+ "jiuchi_shuying1.mp3": {
+ "type": "file",
+ "size": 66187,
+ "sha256": "f9cf8a703ee6bd21455c7ae94d94ef663f66b58c66b87b88e126c5aef9228481"
+ },
+ "langgu_shuying1.mp3": {
+ "type": "file",
+ "size": 49363,
+ "sha256": "65077daf3f241c84d7fb094eed1b72bc85fb61f170ae7194125744c43cc91328"
+ },
+ "leiji_shuying1.mp3": {
+ "type": "file",
+ "size": 28556,
+ "sha256": "1d6c9e9e1779a2733b25a547bfbb91e585deb8c05993cccf4cbe0ab31e1bb20f"
+ },
+ "lingba_shuying1.mp3": {
+ "type": "file",
+ "size": 78544,
+ "sha256": "749a87ac8b203793c5d86a211f57b1c05665a6b6773b6d7643e3fc85239bef46"
+ },
+ "qubu_shuying1.mp3": {
+ "type": "file",
+ "size": 48632,
+ "sha256": "bf45831f607da1d737a7c373219217fb81e9832e2acba772fede54600964fc99"
+ },
+ "roulin_shuying1.mp3": {
+ "type": "file",
+ "size": 76218,
+ "sha256": "e8f7dfd9d7205e2ee2e48b6c69410ab7e61c0a1f49884a3ddb6662e5b4f5d43c"
+ },
+ "shenij_shuying1.mp3": {
+ "type": "file",
+ "size": 85336,
+ "sha256": "3bcbdce44a5071f22da4d8fb9f481b6c5b6e0699bc7167ebf2049b18e9c35f27"
+ },
+ "shenij_shuying2.mp3": {
+ "type": "file",
+ "size": 80112,
+ "sha256": "bf8139d20ca5bd8c351ddad9cb0bf4de3ccb76ce41630498dced0a63f9107145"
+ },
+ "wangzun_shuying1.mp3": {
+ "type": "file",
+ "size": 98220,
+ "sha256": "6a022af97a73ed351c70eec2e3dee99c89faf5301a7c6494f96b15135336a1f5"
+ },
+ "wushuang_shuying1.mp3": {
+ "type": "file",
+ "size": 70185,
+ "sha256": "d1fcfdb5591dc75f24607e7d5cacdb2c1be505fd5a4321cec4379b30a4e8ee96"
+ },
+ "wushuang_shuying2.mp3": {
+ "type": "file",
+ "size": 64961,
+ "sha256": "f28014f8625a344395183e43c2999753f21a713fe4bb10e61a5be107f5515f11"
+ },
+ "yinlei_shuying1.mp3": {
+ "type": "file",
+ "size": 37751,
+ "sha256": "f3d6c2b9211b9449dceac0659cc1606b4dcd23d443f3cf9511cfad56fad840b3"
+ },
+ "yishen_shuying1.mp3": {
+ "type": "file",
+ "size": 83142,
+ "sha256": "74e7952802c46dd71b90e8dcb4e7f28c8936319e9598d35a7f6e907be930ad78"
+ },
+ "yongsi_shuying1.mp3": {
+ "type": "file",
+ "size": 121208,
+ "sha256": "0bb47e02b23c2f081ab1d6a16004a41f8f9ade4f5c38d25e1524d1464add9e65"
+ },
+ "yuanlv_shuying1.mp3": {
+ "type": "file",
+ "size": 33271,
+ "sha256": "5970922b1d22cd8d0aea8913d9ec6fb9cd7205138376376f6acc79c4010351ab"
+ },
+ "zhanjia_shuying1.mp3": {
+ "type": "file",
+ "size": 74887,
+ "sha256": "97043c9bdb1767448f3db27c9b93057953546bd5508c73f023d8fe8a80c7ee5b"
+ },
+ "zhanjia_shuying2.mp3": {
+ "type": "file",
+ "size": 97353,
+ "sha256": "b3be2b1ba6dc6d56c8290bdc63b6b9f649b6cac1030f35517b3e3862705a3472"
+ },
+ "zhuzheng_shuying1.mp3": {
+ "type": "file",
+ "size": 33154,
+ "sha256": "516680e7bdaed978b59df34608756ceaede4e657b951a5b1ca42558235bf29d5"
+ }
+ }
+ },
+ "驱鬼逐邪": {
+ "type": "directory",
+ "children": {
+ "anchao_shuying1.mp3": {
+ "type": "file",
+ "size": 167583,
+ "sha256": "ed7a272d02d27120403f0609ea46b4d7c3cdee6038e4a41fad8b6131cd466049"
+ },
+ "aotang_shuying1.mp3": {
+ "type": "file",
+ "size": 61234,
+ "sha256": "fcbc95580168119636de36c286b97cb7c82734b5dd3be3ad1f155b95242478bf"
+ },
+ "bingyi_shuying1.mp3": {
+ "type": "file",
+ "size": 59562,
+ "sha256": "4d0fc66b7c014a73f38d007b44f0e297f4c89f60a9e0c1e0bc89dc49de6558b8"
+ },
+ "danshi_shuying1.mp3": {
+ "type": "file",
+ "size": 37072,
+ "sha256": "3b72a040db3a1c6ea263005b682f7cfe288319968f554a3e48d23e2f74b6f0e3"
+ },
+ "dianwei_shuying1.mp3": {
+ "type": "file",
+ "size": 38505,
+ "sha256": "db780f51a2ffe8d6e000fe3dced37f68103ab3efdc775271349b66c689b2eee6"
+ },
+ "duane_shuying1.mp3": {
+ "type": "file",
+ "size": 138661,
+ "sha256": "5d0b3cbf36a1afc6b54387044bf1f0340e9c8f8fbd930b30c76c66faf4ab4509"
+ },
+ "duzhen_shuying1.mp3": {
+ "type": "file",
+ "size": 162965,
+ "sha256": "415d961902b13f5fb201d0d8203776d909810e4706e38ead4df14f27fc17eae9"
+ },
+ "eli_shuying1.mp3": {
+ "type": "file",
+ "size": 66667,
+ "sha256": "fdc658c08650d244db6171ccc3ff1000a8c15cd7f273232012d9dd23fb2d829f"
+ },
+ "guimei_shuying1.mp3": {
+ "type": "file",
+ "size": 70847,
+ "sha256": "4197185eb357f7a3dabc8f94e15baf86959f52f1b75de4c1ec469499d882a432"
+ },
+ "guixi_shuying1.mp3": {
+ "type": "file",
+ "size": 165079,
+ "sha256": "fa052318af33693f7c94c19b3af98bedae646594a8e711d451da64c7e3343d3d"
+ },
+ "guizhao_shuying1.mp3": {
+ "type": "file",
+ "size": 55307,
+ "sha256": "aaa97c11a5e5cdda233f5edc08373ac775d2726004b0c836ca3c9c5de492a644"
+ },
+ "huiyun_shuying1.mp3": {
+ "type": "file",
+ "size": 140925,
+ "sha256": "337df12e5260011e853b50dbfd759c716bd0928e3d4f99b300bf97dd1907ec83"
+ },
+ "jizhou_shuying1.mp3": {
+ "type": "file",
+ "size": 33894,
+ "sha256": "92dd5a462b05f979e53196d4d35059d000ce63ff1a9ceb8c2d1064c816684702"
+ },
+ "manji_shuying1.mp3": {
+ "type": "file",
+ "size": 43834,
+ "sha256": "635bd0506fbaa8a2aa2b373ce8831f5494aa7f829bb1285376e49c50957a7246"
+ },
+ "mingchong_shuying1.mp3": {
+ "type": "file",
+ "size": 161713,
+ "sha256": "c4172728884f1bd2e4a08583327f3c08f4d97c0a1448869d0b2789b88d7ab70c"
+ },
+ "mizui_shuying1.mp3": {
+ "type": "file",
+ "size": 263385,
+ "sha256": "42ad74b6cfd7bd8befd7b92e184ddcedbcfc0d03b87fe34f431ace3029f1d0cf"
+ },
+ "qiangzheng_shuying1.mp3": {
+ "type": "file",
+ "size": 182005,
+ "sha256": "00b1340862233e32a2951408222b5199934a7d9e5e9273b41f539029a3f9b338"
+ },
+ "shiyu_shuying1.mp3": {
+ "type": "file",
+ "size": 59040,
+ "sha256": "7207807ca95ae00cf08682bb8a7d98c6b08a237ab0848bfdffcaaea033ff1f4a"
+ },
+ "suoxue_shuying1.mp3": {
+ "type": "file",
+ "size": 64995,
+ "sha256": "314be7e1b07aa370e86167f7ef2a489de9c93037ac96f6bd1c69cc64e787fd54"
+ },
+ "taiping_shuying1.mp3": {
+ "type": "file",
+ "size": 176371,
+ "sha256": "3fc93c12aa18905066e7bb888cb65bd8f72fce77a71c511bb6311bee4cad4dc7"
+ },
+ "xiaoshou_shuying1.mp3": {
+ "type": "file",
+ "size": 41954,
+ "sha256": "78458f9488f349c4e76c08c42071c31782a4bdd6fbda0f0acca247c4fa57f04d"
+ },
+ "xingpan_shuying1.mp3": {
+ "type": "file",
+ "size": 91763,
+ "sha256": "8c46e26869d68a632b54dad60e786d8619c6b7dac17ebcb332db8a66d42f80e8"
+ },
+ "xixing_shuying1.mp3": {
+ "type": "file",
+ "size": 181379,
+ "sha256": "a553a85e898f534f270902e9d00e60e2821dbbe9a6deb344f08c6080eedf9a5c"
+ },
+ "xuanpan_shuying1.mp3": {
+ "type": "file",
+ "size": 84795,
+ "sha256": "0449dfff43b748208ddd0df5202a2bb0ecc99e09bed27f16c314378fa00cba10"
+ },
+ "xuanpan_shuying2.mp3": {
+ "type": "file",
+ "size": 79398,
+ "sha256": "39e7c45efa5502645b61a8de29c1ab9c380fced3be58b78caab0607ad183dd38"
+ },
+ "yezhong_shuying1.mp3": {
+ "type": "file",
+ "size": 157201,
+ "sha256": "d5e4498f1f1775237ccc4987c1ad47483b23e3bdb653995cb85ced6cf1c2d224"
+ },
+ "yunju_shuying1.mp3": {
+ "type": "file",
+ "size": 57472,
+ "sha256": "afa7538f321ffe3ab23f53cba62967b8b2db9141e9a2c8860c8b51d4310d9f22"
+ },
+ "zhoucha_shuying1.mp3": {
+ "type": "file",
+ "size": 153445,
+ "sha256": "ab0ec7394ee47c6d2b71a2a6617e854c9a6725a965af693ef18ce3b659e9fedd"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "boss": {
+ "type": "directory",
+ "children": {
+ "card.js": {
+ "type": "file",
+ "size": 171,
+ "sha256": "3c0a2d89226ed8ea5dfb5238221d63b117a6624e027cde03ba6671dfd5548c2c"
+ },
+ "character.js": {
+ "type": "file",
+ "size": 260,
+ "sha256": "3777e2a7cc00bf3b6e9842f65acf314df2786cb8596ee213254e074738782de4"
+ },
+ "characterFilter.js": {
+ "type": "file",
+ "size": 210,
+ "sha256": "e0cffda20018e8abb3c208359221633f049c77d9246bfc492f740430162c05a1"
+ },
+ "characterTitle.js": {
+ "type": "file",
+ "size": 207,
+ "sha256": "f28a5994a540f50851a2a8c66733e8d326f8de59169f2f22a556243837cf0bc2"
+ },
+ "dynamicTranslate.js": {
+ "type": "file",
+ "size": 287,
+ "sha256": "924be3ff97147ac8f113eb35ef1aeadab0b3227b1eca61fe5d4d5197242ced30"
+ },
+ "index.js": {
+ "type": "file",
+ "size": 1137,
+ "sha256": "578e2c7f50e42c5e92b445e9bcf0dafa68f28ff2415877c4b1ff492783152372"
+ },
+ "intro.js": {
+ "type": "file",
+ "size": 207,
+ "sha256": "6fe542ceb77e006a80810c95145b614ae13487acad5abd59059652417dbfb3ac"
+ },
+ "merge.js": {
+ "type": "file",
+ "size": 940,
+ "sha256": "47e0aa7f324b0e8d13737aa07065a18bef69049a6c4c5eafd61996024e84b387"
+ },
+ "perfectPairs.js": {
+ "type": "file",
+ "size": 198,
+ "sha256": "228d84d6013ad2b11f789363854bc05dcfe259fdfadaee84acb95421497927ca"
+ },
+ "pinyin.js": {
+ "type": "file",
+ "size": 178,
+ "sha256": "34acc90748a2ce6de749d841e371b11a75bd169b782d6bd2672cb50a70bdb21b"
+ },
+ "sets.js": {
+ "type": "file",
+ "size": 502,
+ "sha256": "78de634dd7eebc7b6657b23bafa74ea274568e303179eb489f052bae1d19d044"
+ },
+ "sets": {
+ "type": "directory",
+ "children": {
+ "qingqingzijin": {
+ "type": "directory",
+ "children": {
+ "card.js": {
+ "type": "file",
+ "size": 126,
+ "sha256": "5fa35745834d9494a4be460c4f1cb842ee56ec797f7eaa45b7df6122c87c92ee"
+ },
+ "character.js": {
+ "type": "file",
+ "size": 2464,
+ "sha256": "8f7b1710cec7d7d90f62127330abb838163d91c29603fab7b8920711b1ec31e7"
+ },
+ "characterFilter.js": {
+ "type": "file",
+ "size": 66,
+ "sha256": "0dc51d476375435b50ea965fd540a6afb19134d974fe183bd924225dc3842062"
+ },
+ "characterTitle.js": {
+ "type": "file",
+ "size": 64,
+ "sha256": "b736420c47616f5e6493bc0e5d00a1a6803e8540e312ff99b0a5ae2d2de17b6f"
+ },
+ "dynamicTranslate.js": {
+ "type": "file",
+ "size": 4248,
+ "sha256": "13ef52691ea5f23176608b21471d80e03285941e7687f69c3c93af5aeccf7e64"
+ },
+ "index.js": {
+ "type": "file",
+ "size": 1002,
+ "sha256": "850ce3d5771d926310a26293d40e9724c2dca292bb178d121d69a251e089ef26"
+ },
+ "intro.js": {
+ "type": "file",
+ "size": 64,
+ "sha256": "17fc80689618ad9d3601cc9ccb692e38eb7b66de82e21c75c246c749f2bdf1fd"
+ },
+ "perfectPairs.js": {
+ "type": "file",
+ "size": 58,
+ "sha256": "a9b5f18910cf92cd6a727cf254ad8d6e1e2ba60a9cf35e9a458da34ce4fda49f"
+ },
+ "pinyin.js": {
+ "type": "file",
+ "size": 48,
+ "sha256": "4a8648524425c2edfb8595971476398ff3c513d27ff4850895c0839945b5c1c6"
+ },
+ "skill.js": {
+ "type": "file",
+ "size": 32647,
+ "sha256": "c8d59ee3938a960416cf21330d3b5561d9bc63ad2b65db790de7791058bdb437"
+ },
+ "sort.js": {
+ "type": "file",
+ "size": 340,
+ "sha256": "c14a970e669bff9a46fa95a1fe225c6256c7b6bf5904255d86ae7193a2fbb247"
+ },
+ "translate.js": {
+ "type": "file",
+ "size": 4639,
+ "sha256": "e802c830329f35d2619cd1b0573699bf7f43cb3da7bc4bdc10344620793187aa"
+ },
+ "voices.js": {
+ "type": "file",
+ "size": 46,
+ "sha256": "54787af1d4efcd35f20c5eca55db2e60f0cd160d7fed728440542f118e7ae44a"
+ }
+ }
+ },
+ "shiershengxiao": {
+ "type": "directory",
+ "children": {
+ "card.js": {
+ "type": "file",
+ "size": 126,
+ "sha256": "5fa35745834d9494a4be460c4f1cb842ee56ec797f7eaa45b7df6122c87c92ee"
+ },
+ "character.js": {
+ "type": "file",
+ "size": 4340,
+ "sha256": "90b33dfe2843a1fbef325fd4c0e56c72e603d67b6d80858d7f78fc4092f7a33b"
+ },
+ "characterFilter.js": {
+ "type": "file",
+ "size": 66,
+ "sha256": "0dc51d476375435b50ea965fd540a6afb19134d974fe183bd924225dc3842062"
+ },
+ "characterTitle.js": {
+ "type": "file",
+ "size": 64,
+ "sha256": "b736420c47616f5e6493bc0e5d00a1a6803e8540e312ff99b0a5ae2d2de17b6f"
+ },
+ "dynamicTranslate.js": {
+ "type": "file",
+ "size": 68,
+ "sha256": "906eb5fd3a454b60015c93756f9c7c5314a226972b9361b227d498d28bae1544"
+ },
+ "index.js": {
+ "type": "file",
+ "size": 1002,
+ "sha256": "7f38b79454730d249bac4b13644338e8f92e962f69e6bdb547540e7b296d5d34"
+ },
+ "intro.js": {
+ "type": "file",
+ "size": 64,
+ "sha256": "17fc80689618ad9d3601cc9ccb692e38eb7b66de82e21c75c246c749f2bdf1fd"
+ },
+ "perfectPairs.js": {
+ "type": "file",
+ "size": 58,
+ "sha256": "a9b5f18910cf92cd6a727cf254ad8d6e1e2ba60a9cf35e9a458da34ce4fda49f"
+ },
+ "pinyin.js": {
+ "type": "file",
+ "size": 48,
+ "sha256": "4a8648524425c2edfb8595971476398ff3c513d27ff4850895c0839945b5c1c6"
+ },
+ "skill.js": {
+ "type": "file",
+ "size": 15413,
+ "sha256": "e180512e49aa6f9274253c70d56987080a61ec0388999a3cbec269024ffe8306"
+ },
+ "sort.js": {
+ "type": "file",
+ "size": 406,
+ "sha256": "be03f8ab9f2be5c32ea37df8f058788fd19750ede246e2038406c90dc6ce2cea"
+ },
+ "translate.js": {
+ "type": "file",
+ "size": 2941,
+ "sha256": "c2f770ecea7c27a54fc665c621dc95655e9a827836990fd9eee65dd327ddbd31"
+ },
+ "voices.js": {
+ "type": "file",
+ "size": 1507,
+ "sha256": "45e6a08bfe638bbc2f79edd7642e1303090c8e81be65fce9886199563bc95311"
+ }
+ }
+ },
+ "tianshu": {
+ "type": "directory",
+ "children": {
+ "card.js": {
+ "type": "file",
+ "size": 126,
+ "sha256": "5fa35745834d9494a4be460c4f1cb842ee56ec797f7eaa45b7df6122c87c92ee"
+ },
+ "character.js": {
+ "type": "file",
+ "size": 2509,
+ "sha256": "97ae40a03a777ce170d4ddef64132d071b5b379574ed87ec326f10ca52ca3e2f"
+ },
+ "characterFilter.js": {
+ "type": "file",
+ "size": 66,
+ "sha256": "0dc51d476375435b50ea965fd540a6afb19134d974fe183bd924225dc3842062"
+ },
+ "characterTitle.js": {
+ "type": "file",
+ "size": 64,
+ "sha256": "b736420c47616f5e6493bc0e5d00a1a6803e8540e312ff99b0a5ae2d2de17b6f"
+ },
+ "dynamicTranslate.js": {
+ "type": "file",
+ "size": 5803,
+ "sha256": "15e4e97f0ab62f916f1fd42966ad93c18748bf9ef56ecd2f56d97be62b9ece70"
+ },
+ "index.js": {
+ "type": "file",
+ "size": 1002,
+ "sha256": "cc538ae9e76177c89ca2e67edde68d68f371700a802cc9d5348e521a8e664b68"
+ },
+ "intro.js": {
+ "type": "file",
+ "size": 64,
+ "sha256": "17fc80689618ad9d3601cc9ccb692e38eb7b66de82e21c75c246c749f2bdf1fd"
+ },
+ "perfectPairs.js": {
+ "type": "file",
+ "size": 58,
+ "sha256": "a9b5f18910cf92cd6a727cf254ad8d6e1e2ba60a9cf35e9a458da34ce4fda49f"
+ },
+ "pinyin.js": {
+ "type": "file",
+ "size": 48,
+ "sha256": "4a8648524425c2edfb8595971476398ff3c513d27ff4850895c0839945b5c1c6"
+ },
+ "skill.js": {
+ "type": "file",
+ "size": 23174,
+ "sha256": "2768ff21576e5d9a55b1d97d9bb866060370e342cb95f9cd5be0e341470acced"
+ },
+ "sort.js": {
+ "type": "file",
+ "size": 400,
+ "sha256": "42238b8b9a1a1fcbdd4f6d2f8092a49558ef923a1443f07f57371f40bd4506c4"
+ },
+ "translate.js": {
+ "type": "file",
+ "size": 4799,
+ "sha256": "baa234a4f9b902e647f0df3a5189ac65312332fa20c998727c855d9afad0c56c"
+ },
+ "voices.js": {
+ "type": "file",
+ "size": 609,
+ "sha256": "020d42f5a8ab6cfe2189de4f8b27aea2f5eb8f0c92eabeccc30a69311fc684bb"
+ }
+ }
+ },
+ "zhuoguiquxie": {
+ "type": "directory",
+ "children": {
+ "card.js": {
+ "type": "file",
+ "size": 126,
+ "sha256": "5fa35745834d9494a4be460c4f1cb842ee56ec797f7eaa45b7df6122c87c92ee"
+ },
+ "character.js": {
+ "type": "file",
+ "size": 3411,
+ "sha256": "c6a79c1c08f94156276fcaa45236f9bc2166a4e2e0351f286981ef5dac5c73dc"
+ },
+ "characterFilter.js": {
+ "type": "file",
+ "size": 66,
+ "sha256": "0dc51d476375435b50ea965fd540a6afb19134d974fe183bd924225dc3842062"
+ },
+ "characterTitle.js": {
+ "type": "file",
+ "size": 64,
+ "sha256": "b736420c47616f5e6493bc0e5d00a1a6803e8540e312ff99b0a5ae2d2de17b6f"
+ },
+ "dynamicTranslate.js": {
+ "type": "file",
+ "size": 7041,
+ "sha256": "fadb1892b7209b031674f31ecbb4932a27ede38ad649a42ec689f4db1b02bf78"
+ },
+ "index.js": {
+ "type": "file",
+ "size": 1002,
+ "sha256": "892502aaa8fdf6cf1874ab8e564504053ae8168d37c41e2abcb1546e9f90357d"
+ },
+ "intro.js": {
+ "type": "file",
+ "size": 64,
+ "sha256": "17fc80689618ad9d3601cc9ccb692e38eb7b66de82e21c75c246c749f2bdf1fd"
+ },
+ "perfectPairs.js": {
+ "type": "file",
+ "size": 58,
+ "sha256": "a9b5f18910cf92cd6a727cf254ad8d6e1e2ba60a9cf35e9a458da34ce4fda49f"
+ },
+ "pinyin.js": {
+ "type": "file",
+ "size": 48,
+ "sha256": "4a8648524425c2edfb8595971476398ff3c513d27ff4850895c0839945b5c1c6"
+ },
+ "skill.js": {
+ "type": "file",
+ "size": 43229,
+ "sha256": "81c625e3f4c1ec77dea2556dc391182e241811b84d92dbfa4b72ebb50b604817"
+ },
+ "sort.js": {
+ "type": "file",
+ "size": 390,
+ "sha256": "3855904cdc28e6301b9f9177b6c8e04d943ef44fd002a2ce83de5aab7572930c"
+ },
+ "translate.js": {
+ "type": "file",
+ "size": 6787,
+ "sha256": "e714d7facef185ca0977521db78f327622a902c9b0659293d180c59f66179627"
+ },
+ "voices.js": {
+ "type": "file",
+ "size": 2115,
+ "sha256": "d93f873a87649d413d1fc7b827c8bdb01e5f61cc11d9650f64b59de9d575e9e1"
+ }
+ }
+ }
+ }
+ },
+ "shared.js": {
+ "type": "file",
+ "size": 416,
+ "sha256": "9c0c7b0757172078f920a91cc27569456c2d1e3134130391c88ec5ab86370f79"
+ },
+ "skill.js": {
+ "type": "file",
+ "size": 271,
+ "sha256": "dcfad38fde564a88baba111100cd9b121e156478e16c8b31a286adbb0aeffd23"
+ },
+ "sort.js": {
+ "type": "file",
+ "size": 330,
+ "sha256": "f7ec05f54d771ded03a4c50b1b56a6b4e48cf530e4755796a879edd714278334"
+ },
+ "translate.js": {
+ "type": "file",
+ "size": 272,
+ "sha256": "f58cf928b22b712fcb374f19e5fd3343d4035e2702388b0d09b11abdd1499376"
+ },
+ "voices.js": {
+ "type": "file",
+ "size": 682,
+ "sha256": "a72b8a89b18f393665e773678630422bb8dd115abc6cb668374a7057be8659cb"
+ }
+ }
+ },
+ "images": {
+ "type": "directory",
+ "children": {
+ "tianshu.jpg": {
+ "type": "file",
+ "size": 250592,
+ "sha256": "41279c75555900dc0b7838b4fd9fcdfb31f0665a58d1dd0939b3e8466dd1225d"
+ },
+ "十二生肖": {
+ "type": "directory",
+ "children": {
+ "chenlong_boss_shuying.png": {
+ "type": "file",
+ "size": 640131,
+ "sha256": "295461a9645027b49b77ace76ae27d3c982a9b9725bcaee061e08486b0b6417d"
+ },
+ "chouniu_boss_shuying.png": {
+ "type": "file",
+ "size": 539618,
+ "sha256": "dd32bf059e65ee0d2e3e0858ef3f2e06d1b6004c4c6d709df3a2504d9a57b6e0"
+ },
+ "haizhu_boss_shuying.png": {
+ "type": "file",
+ "size": 603527,
+ "sha256": "ee86311fc07b564e5ad548ec1f87f327a997cfea5be8ce5e196d86015f2f5290"
+ },
+ "maotu_boss_shuying.png": {
+ "type": "file",
+ "size": 550227,
+ "sha256": "f6ab7a72a491d62c3da45eff30e6549541c817af045bdd3637dbb005d315a680"
+ },
+ "shenhou_boss_shuying.png": {
+ "type": "file",
+ "size": 532102,
+ "sha256": "0b7dcb96cec2720ccf93c925e3589486b6988b6e01b455093409b6afcde8d6c6"
+ },
+ "sishe_boss_shuying.png": {
+ "type": "file",
+ "size": 595306,
+ "sha256": "9474fb7924ba2a72ebfedcf74c4b93302717cbc11ee07760f5dcd004f3bb550d"
+ },
+ "weiyang_boss_shuying.png": {
+ "type": "file",
+ "size": 645101,
+ "sha256": "20ee22a70f4ad14b6640c29c3df60b5ad0efb44a21a3a729aef68971a0061276"
+ },
+ "wuma_boss_shuying.png": {
+ "type": "file",
+ "size": 613392,
+ "sha256": "02177ccf6bf619c69df89a64d99d39e75b42dfcd28f10855abdc372946e82d96"
+ },
+ "xvgou_boss_shuying.png": {
+ "type": "file",
+ "size": 529986,
+ "sha256": "8739d5e721ac60018d1447c6b88a8526cc94b59ab94596b2c65ebf0e1dae7025"
+ },
+ "yinhu_boss_shuying.png": {
+ "type": "file",
+ "size": 649795,
+ "sha256": "7d04e0fce9fafac5e950b4e3c5e8d632ab96af5d19a68b854afcc9873dcbfda2"
+ },
+ "youji_boss_shuying.png": {
+ "type": "file",
+ "size": 541535,
+ "sha256": "ab77742d979f642cf5fc3ca03b3bc4726b7150ed5fda477cdb2d041ff77994e5"
+ },
+ "zishu_boss_shuying.png": {
+ "type": "file",
+ "size": 666615,
+ "sha256": "45ab0411802c8e9bc946afc49def9aafda2bbe0e1dec03c32c1649a69693b612"
+ }
+ }
+ },
+ "天书乱斗": {
+ "type": "directory",
+ "children": {
+ "baiqi_boss_shuying.png": {
+ "type": "file",
+ "size": 797095,
+ "sha256": "46229cdb70ccf4ec541ce9b56c7a1f6c15c09b169bde592378393107cb3aa3d3"
+ },
+ "hanba_boss_shuying.png": {
+ "type": "file",
+ "size": 588380,
+ "sha256": "352c79e97290f8dc2d015ef28c6a93a67ecf1b8717252fdaea996ff699a1754c"
+ },
+ "huoshenzhurong_boss_shuying.png": {
+ "type": "file",
+ "size": 643230,
+ "sha256": "bd34d1c42e44f44ad9f6240fdae54d76a18b1e25efb9e991db41d10b5c7691b1"
+ },
+ "kuafu_boss_shuying.png": {
+ "type": "file",
+ "size": 836115,
+ "sha256": "9b016aa4a7aecae8a48ebe38059e117f1fe6a2247cc943f9a0770091791492c5"
+ },
+ "shaohao_boss_shuying.png": {
+ "type": "file",
+ "size": 711440,
+ "sha256": "ca847b86d0c22878a062b11ff240accaa538dfad7558f173d425c71078f4a1c5"
+ },
+ "shuishengonggong_boss_shuying.png": {
+ "type": "file",
+ "size": 773985,
+ "sha256": "90450b2a87205bef389d4fc720c68a3cfb373620b41cd56e012d20d5200973ed"
+ },
+ "xuannv_boss_shuying.png": {
+ "type": "file",
+ "size": 548495,
+ "sha256": "df4acdc59a400fa29db8982ccfb89aad9ea975474119a5c0979d6f1b5d8b1cd2"
+ }
+ }
+ },
+ "虚拟偶像": {
+ "type": "directory",
+ "children": {
+ "xiaojiu_xvni_shuying.png": {
+ "type": "file",
+ "size": 742108,
+ "sha256": "f5e6012fcc874f4b14497d6b0bf4dd1f909fa36f85fc0f9dc1bd8fbac82aefc4"
+ },
+ "xiaole_xvni_shuying.png": {
+ "type": "file",
+ "size": 760024,
+ "sha256": "d2636ea6d492dd5a9f4bda8a3e60e5c198282144f6acb0b601030ede30cab13c"
+ },
+ "xiaosha_xvni_shuying.png": {
+ "type": "file",
+ "size": 711605,
+ "sha256": "b34b1ad8235191cb2fbd7f0b5f1bc883f4672a1ff72fcee616656099670810da"
+ },
+ "xiaoshan_xvni_shuying.png": {
+ "type": "file",
+ "size": 669914,
+ "sha256": "e0fdbcf2cde0fe19216f27f9112eccb8cb2fda83166fde8fb8a8f14fd7683e9a"
+ },
+ "xiaotao_xvni_shuying.png": {
+ "type": "file",
+ "size": 780159,
+ "sha256": "6c22d112acaf8ab0421b9919cb20fa0841ab7d96a59c43c3839ec4c4a265e516"
+ }
+ }
+ },
+ "青青子衿": {
+ "type": "directory",
+ "children": {
+ "caocao_boss_shuying.jpg": {
+ "type": "file",
+ "size": 678999,
+ "sha256": "60e8b6ac74e796e42b6cab9bf7c422f8822df247ee322c7a011d43b089db20e0"
+ },
+ "dongzhuo_boss_shuying.jpg": {
+ "type": "file",
+ "size": 4020802,
+ "sha256": "c07bea94f14a11b260db61e08d50571f71d1937170f16d3a61ed4261880d9e4d"
+ },
+ "lvbu_boss_shuying.jpg": {
+ "type": "file",
+ "size": 593292,
+ "sha256": "6787f2d322dcb02edc41bb282388623ac6d1fe9bd5966ba6fe017a7cb2bbe929"
+ },
+ "simayi_boss_shuying.jpg": {
+ "type": "file",
+ "size": 7770307,
+ "sha256": "4752a33861a9ed55633de356e60819a73918cc99c82f3c0544a0befc29515473"
+ },
+ "yuanshu_boss_shuying.jpg": {
+ "type": "file",
+ "size": 2155807,
+ "sha256": "8a332adf1450a3300359294f0d4f393b160ef6a75cf2853ef19f881e49e6c857"
+ },
+ "zhangjiao_boss_shuying.jpg": {
+ "type": "file",
+ "size": 724819,
+ "sha256": "b36661396b6d2066f6d7dabdb6416f5e33688183b219af58577984d81fa0e6aa"
+ }
+ }
+ },
+ "驱鬼逐邪": {
+ "type": "directory",
+ "children": {
+ "baiwuchang_boss_shuying.png": {
+ "type": "file",
+ "size": 593197,
+ "sha256": "8c371dbe3fd33384482f6f3ed673e7717927e5d8c1d731b8a939b65ddcd373b9"
+ },
+ "baowei_boss_shuying.png": {
+ "type": "file",
+ "size": 604578,
+ "sha256": "66e4599e73de11f8663d911755cd108717c6165d672a8a91d03ebb833c7f2d13"
+ },
+ "guiwang_boss_shuying.png": {
+ "type": "file",
+ "size": 696250,
+ "sha256": "7196ed36bae58955db38be7d24101337cd83f4cfd89fac00d5ac609717899cc0"
+ },
+ "heibaiwuchang_boss_shuying.png": {
+ "type": "file",
+ "size": 703435,
+ "sha256": "ac9cccba3d2b926c2dd84aefba32ab0a9ee5d3edade78003f9ffdc2c48368f0d"
+ },
+ "heiwuchang_boss_shuying.png": {
+ "type": "file",
+ "size": 514674,
+ "sha256": "84b0ad42705843c74144f3ca655a411e2d10c0250c9733bf53e39c64fb7c64ac"
+ },
+ "huangfeng_boss_shuying.png": {
+ "type": "file",
+ "size": 635820,
+ "sha256": "2f6e94bad08dab522562f9b8658af365b8bce4a8d57fad346e3343036028c632"
+ },
+ "mamian_boss_shuying.png": {
+ "type": "file",
+ "size": 622621,
+ "sha256": "4f384d37b195249cee61b352808b19b9d3c982b2153e94fcdd847553f44ae695"
+ },
+ "mengpo_boss_shuying.png": {
+ "type": "file",
+ "size": 612824,
+ "sha256": "62af68a30166d9a83ea3b3077f1c204124fc8ec8e59fc69940e23ab5874f0c34"
+ },
+ "niaozui_boss_shuying.png": {
+ "type": "file",
+ "size": 631940,
+ "sha256": "7b72408ca47a2bd37c887f74b18410a8bda1c56ebf3cd4714ea40480a69450ba"
+ },
+ "niutou_boss_shuying.png": {
+ "type": "file",
+ "size": 583418,
+ "sha256": "6b15969118d9eb97a35afff4b28a0396156b1d8ba2e9bb56a2de9501ff1899a0"
+ },
+ "niutoumamian_boss_shuying.png": {
+ "type": "file",
+ "size": 734405,
+ "sha256": "9879fc5592f15754cafa73411db9eca47b8cba863f58be5c09e307202b792090"
+ },
+ "riyeyoushen_boss_shuying.png": {
+ "type": "file",
+ "size": 721592,
+ "sha256": "8269962db8806ce31e9000f6e4878790364bc7ca2655d8d9be961a13d5fdb433"
+ },
+ "yanluowang_boss_shuying.png": {
+ "type": "file",
+ "size": 652776,
+ "sha256": "e9d7d18f53b4d28add79aa677eeaf910f42af989ff0eaa3168de1bedbbb8ad7d"
+ },
+ "yvsai_boss_shuying.png": {
+ "type": "file",
+ "size": 669705,
+ "sha256": "bf3938a0114920cf6687c51b11709e6ad81a4575f5a9d992767110d43f93b139"
+ }
+ }
+ },
+ "龙舟": {
+ "type": "directory",
+ "children": {
+ "caoe_boss_shuying.png": {
+ "type": "file",
+ "size": 558756,
+ "sha256": "3048dc84f6155156a74a8cd73e63966c9c7d7f05ca4c1739f9caa032fdc470cb"
+ },
+ "hebo_boss_shuying.png": {
+ "type": "file",
+ "size": 721105,
+ "sha256": "805cf95f9a1030e36b843d64220451841dce52da26d3b4c11c28cb49c3052d0d"
+ },
+ "taoshen_boss_shuying.png": {
+ "type": "file",
+ "size": 588114,
+ "sha256": "9c194616195d12dac97a1b4faf065a2c0bf1e0ab2e06380d52370bb5d000934d"
+ },
+ "yuershen_boss_shuying.png": {
+ "type": "file",
+ "size": 694241,
+ "sha256": "15adcfb80bd22035c604703005ae22d1721eeafcc0a1ee09c89c73713cd3d03a"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ "tianshu": {
+ "type": "directory",
+ "children": {
+ "bondSkills.js": {
+ "type": "file",
+ "size": 40151,
+ "sha256": "c2a7925e56b9baeb8812e8762e8dc2b471908c9d2faf9a0b3ebb3f7792afacb4"
+ },
+ "config.js": {
+ "type": "file",
+ "size": 29131,
+ "sha256": "5f23724ecad5141ed98674919282ec8fd53e666f23adb6f097dd14be466402ed"
+ },
+ "extension.js": {
+ "type": "file",
+ "size": 64398,
+ "sha256": "3e6934e7281bf84e40fd28ea12bee02272573ee1dbba9421c45823677e45021c"
+ },
+ "shuYing_Skill_Xvxiang1.mp3": {
+ "type": "file",
+ "size": 15451,
+ "sha256": "41914d7d542ddfb93c89aefffc245869d63a9fb2f52293df8e6667009832afd8"
+ }
+ }
+ },
+ "update.js": {
+ "type": "file",
+ "size": 24145,
+ "sha256": "7594c68dd1308de5fd13ea7e76fde665a296400a7505b32054bf0d149986bb05"
+ },
+ "update.txt": {
+ "type": "file",
+ "size": 1763,
+ "sha256": "0c8d90ecb09de1f92bf73ffa444d754fe1a8614029ae3b91d515c35f4863c2b5"
+ },
+ "voices.js": {
+ "type": "file",
+ "size": 1711,
+ "sha256": "975c58fe201cbbc0027af5038504064382a195df278085a75eca03b2ddace75a"
+ },
+ "yuanshen": {
+ "type": "directory",
+ "children": {
+ "extension.js": {
+ "type": "file",
+ "size": 1082,
+ "sha256": "a630d543c3648700cb2e3525588643382a0d72779aa8725ee5ecaa7ceaf48d0e"
+ },
+ "八重神子": {
+ "type": "directory",
+ "children": {
+ "1.jpg": {
+ "type": "file",
+ "size": 331322,
+ "sha256": "e7a5f5d79278582e93c1b5277bc823f57c4e1ad2ce85ffa7d43ef1187aa5a5d7"
+ },
+ "character.js": {
+ "type": "file",
+ "size": 12302,
+ "sha256": "2a3dbbc035f9a6595906a3bce88b192bf521f94cab0b6f12df5833da3c2f6c4e"
+ },
+ "shuYing_Shashengying1.mp3": {
+ "type": "file",
+ "size": 15466,
+ "sha256": "78d65b08c36c9de3e4872864cf1c56ae83afad2b3909e47809ce088e5094e53d"
+ },
+ "shuYing_Shashengying2.mp3": {
+ "type": "file",
+ "size": 51411,
+ "sha256": "68cc826504f35d00a47924483d8cbd7151951f1f543dbbcccb124dd08e436a8b"
+ },
+ "shuYing_Shizuishi1.mp3": {
+ "type": "file",
+ "size": 87385,
+ "sha256": "ea491c16ae35fefb1eefd847367e9572c675543236accd8aa0ae4bf542d4989f"
+ },
+ "shuYing_Shizuishi2.mp3": {
+ "type": "file",
+ "size": 15588,
+ "sha256": "b6fa8eb8531aeb3ecc819bf45ba394d0d2fc147e3de93a58cc8af181e9b00dc5"
+ },
+ "shuYing_Shizuishi3.mp3": {
+ "type": "file",
+ "size": 64467,
+ "sha256": "11dc706d7d84f34c060d3a5252496e963a932f9534c5e15614d9186c388e69e3"
+ },
+ "shuYing_Shizuishi4.mp3": {
+ "type": "file",
+ "size": 18087,
+ "sha256": "b5c758c0e631e71e4896276e6c948f6e9748d22d92498058e55893de0ad9135f"
+ },
+ "shuYing_Tianhuxianzhen1.mp3": {
+ "type": "file",
+ "size": 81315,
+ "sha256": "7c4f4a6bc64eaa75b458d1cff5cb0a29ef9629eb7451349d87f9099b888f5e94"
+ },
+ "shuYing_Tianhuxianzhen2.mp3": {
+ "type": "file",
+ "size": 119436,
+ "sha256": "1a728ba036015b245e02d6d9048a1b4c4912d9dff9c65b4c3c7203501346c4aa"
+ }
+ }
+ },
+ "可莉": {
+ "type": "directory",
+ "children": {
+ "1.jpg": {
+ "type": "file",
+ "size": 162111,
+ "sha256": "7664f30a84fcdf24b7d8719db74e89de97dca904fec62e514e5a611bae21d0cd"
+ },
+ "character.js": {
+ "type": "file",
+ "size": 11072,
+ "sha256": "3ee1fc9fcf08ac0d1fa9a6f2e617a7a95a45d2cd313415f66906f64ec9299bf4"
+ },
+ "shuYing_Honghong1.mp3": {
+ "type": "file",
+ "size": 134764,
+ "sha256": "7cc7e8f3557193ee38d5b0ab2935171ad318167598f3c87ce103395262461c3f"
+ },
+ "shuYing_Honghong2.mp3": {
+ "type": "file",
+ "size": 17073,
+ "sha256": "8f7077498c6c640e716091c97a243bedb94f5d7aedee7eff820a226e78c6f961"
+ },
+ "shuYing_Honghong3.mp3": {
+ "type": "file",
+ "size": 12432,
+ "sha256": "c6c9d4159ca783a842bd164ee275b583b4b2f754060ab1f3fe23e1f715faf4c6"
+ },
+ "shuYing_Lieyan1.mp3": {
+ "type": "file",
+ "size": 40584,
+ "sha256": "8e81a21f608f9646430c7435762b0ee666d95795110bf40a454fdb834b1cf445"
+ },
+ "shuYing_Lieyan_Damage1.mp3": {
+ "type": "file",
+ "size": 35919,
+ "sha256": "c763f23f3e636a8f990ce77259a4c85e54687254ae9dde1c386d7350dd47e9e6"
+ },
+ "shuYing_Lieyan_Damage2.mp3": {
+ "type": "file",
+ "size": 30568,
+ "sha256": "7dc80482fc074ab89e6e359a56c6ca51255fcc3c32871e95b8c5438d4f5869bf"
+ },
+ "shuYing_Lieyan_Damage3.mp3": {
+ "type": "file",
+ "size": 22160,
+ "sha256": "9fb6bde876fc09e526fd91489549242aae933ff241904721e01f5ff5241d8f93"
+ },
+ "shuYing_Pengpeng1.mp3": {
+ "type": "file",
+ "size": 47823,
+ "sha256": "3f6114e53b492b2d69560cb23295c38ec5a88e7f80db29476dda6b6e07205534"
+ },
+ "shuYing_Pengpeng2.mp3": {
+ "type": "file",
+ "size": 33969,
+ "sha256": "0fce4d614f3201750dd0272b19b9571aa78e1b84ead34a024b5583489924e45f"
+ },
+ "shuYing_Pengpeng3.mp3": {
+ "type": "file",
+ "size": 16880,
+ "sha256": "f483e38a1edc32750a371aa8a2ce4d8b4361ab02a675bc6043ffafdcd2d77b06"
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/extension.css b/extension.css
index a26ffc5..9a974b2 100644
--- a/extension.css
+++ b/extension.css
@@ -492,3 +492,1329 @@
height: 98px;
}
}
+
+/* 天书过关技能选择:独立于十周年 UI,保持标题、预览、羁绊和选择区的固定层级。 */
+.shuYing-skill-reward-mask {
+ position: fixed !important;
+ inset: 0 !important;
+ z-index: 100000 !important;
+ display: flex !important;
+ align-items: center !important;
+ justify-content: center !important;
+ padding: 18px !important;
+ background: radial-gradient(circle at 50% 36%, rgba(95, 63, 28, 0.2), transparent 42%), rgba(5, 7, 10, 0.78) !important;
+ backdrop-filter: blur(3px);
+}
+
+.shuYing-skill-reward-mask *,
+.shuYing-skill-reward-mask *::before,
+.shuYing-skill-reward-mask *::after {
+ box-sizing: border-box !important;
+ float: none !important;
+ writing-mode: horizontal-tb !important;
+ letter-spacing: normal !important;
+}
+
+.shuYing-skill-reward-dialog {
+ position: relative !important;
+ display: grid !important;
+ grid-template-rows: auto minmax(0, 1fr) auto auto !important;
+ width: min(980px, 96vw) !important;
+ height: min(610px, 88vh) !important;
+ overflow: hidden !important;
+ border: 1px solid rgba(221, 179, 89, 0.78) !important;
+ border-radius: 10px !important;
+ background: linear-gradient(145deg, rgba(31, 27, 25, 0.98), rgba(13, 16, 21, 0.98)) !important;
+ box-shadow: 0 24px 70px rgba(0, 0, 0, 0.75), inset 0 1px rgba(255, 244, 205, 0.1) !important;
+ color: #eee5d2 !important;
+ font-family: "Microsoft YaHei", "SimHei", sans-serif !important;
+ text-align: left !important;
+}
+
+.shuYing-skill-reward-title {
+ position: static !important;
+ width: auto !important;
+ height: auto !important;
+ padding: 15px 22px 13px !important;
+ border-bottom: 1px solid rgba(221, 179, 89, 0.35) !important;
+ background: linear-gradient(90deg, rgba(112, 67, 25, 0.58), rgba(44, 33, 25, 0.22) 60%, transparent) !important;
+ color: #f3d58b !important;
+ font-family: "STKaiti", "KaiTi", serif !important;
+ font-size: clamp(20px, 2.5vw, 28px) !important;
+ font-weight: 700 !important;
+ line-height: 1.3 !important;
+ text-shadow: 0 2px 5px #000 !important;
+}
+
+.shuYing-skill-reward-title-character {
+ position: static !important;
+ display: inline !important;
+ width: auto !important;
+ height: auto !important;
+ margin: 0 6px !important;
+ color: #fff0b5 !important;
+ text-shadow: 0 0 7px rgba(255, 190, 67, 0.95), 0 2px 5px #000 !important;
+}
+
+.shuYing-skill-reward-content {
+ position: static !important;
+ display: grid !important;
+ grid-template-columns: minmax(0, 3fr) minmax(210px, 1fr) !important;
+ min-height: 0 !important;
+ padding: 18px 20px !important;
+ gap: 16px !important;
+}
+
+.shuYing-skill-reward-preview,
+.shuYing-skill-reward-bonds {
+ position: static !important;
+ display: flex !important;
+ min-width: 0 !important;
+ min-height: 0 !important;
+ flex-direction: column !important;
+ border: 1px solid rgba(255, 255, 255, 0.12) !important;
+ border-radius: 8px !important;
+ background: rgba(255, 255, 255, 0.035) !important;
+}
+
+.shuYing-skill-reward-preview {
+ padding: 22px 24px !important;
+}
+
+.shuYing-skill-reward-name {
+ position: static !important;
+ width: auto !important;
+ height: auto !important;
+ padding-bottom: 12px !important;
+ color: #f3d58b !important;
+ font-size: clamp(22px, 2.6vw, 30px) !important;
+ font-weight: 700 !important;
+ line-height: 1.35 !important;
+}
+
+.shuYing-skill-reward-info {
+ position: static !important;
+ width: auto !important;
+ height: auto !important;
+ overflow-y: auto !important;
+ color: #f2eee6 !important;
+ font-size: clamp(16px, 1.7vw, 20px) !important;
+ line-height: 1.75 !important;
+ word-break: break-word !important;
+}
+
+.shuYing-skill-reward-bonds {
+ padding: 0 13px 13px !important;
+}
+
+.shuYing-skill-reward-bond-title {
+ position: static !important;
+ width: auto !important;
+ height: auto !important;
+ padding: 13px 2px 10px !important;
+ color: #d9b86d !important;
+ font-family: "STKaiti", "KaiTi", serif !important;
+ font-size: 22px !important;
+ font-weight: 700 !important;
+ line-height: 1.2 !important;
+}
+
+.shuYing-skill-reward-bond-list {
+ position: static !important;
+ display: flex !important;
+ min-height: 0 !important;
+ flex: 1 1 auto !important;
+ flex-direction: column !important;
+ gap: 9px !important;
+ overflow-y: auto !important;
+}
+
+.shuYing-skill-reward-bond {
+ position: static !important;
+ padding: 10px !important;
+ border: 1px solid rgba(255, 255, 255, 0.13) !important;
+ border-radius: 7px !important;
+ background: rgba(0, 0, 0, 0.2) !important;
+}
+
+.shuYing-skill-reward-bond.active {
+ border-color: rgba(214, 164, 63, 0.65) !important;
+ background: rgba(128, 79, 25, 0.2) !important;
+}
+
+.shuYing-skill-reward-bond-head {
+ position: static !important;
+ display: flex !important;
+ justify-content: space-between !important;
+ gap: 8px !important;
+ width: auto !important;
+ height: auto !important;
+ color: #f1d07d !important;
+ font-size: 15px !important;
+ font-weight: 700 !important;
+ line-height: 1.4 !important;
+}
+
+.shuYing-skill-reward-bond-status,
+.shuYing-skill-reward-bond-effect,
+.shuYing-skill-reward-bond-empty {
+ position: static !important;
+ width: auto !important;
+ height: auto !important;
+ margin-top: 5px !important;
+ color: rgba(255, 255, 255, 0.78) !important;
+ font-size: 13px !important;
+ line-height: 1.5 !important;
+}
+
+.shuYing-skill-reward-bond-effect {
+ color: rgba(241, 208, 125, 0.8) !important;
+}
+
+.shuYing-skill-reward-choices {
+ position: static !important;
+ display: grid !important;
+ grid-template-columns: repeat(6, minmax(86px, 1fr)) !important;
+ gap: 8px !important;
+ padding: 14px 20px 18px !important;
+ border-top: 1px solid rgba(221, 179, 89, 0.3) !important;
+ background: rgba(0, 0, 0, 0.24) !important;
+}
+
+.shuYing-skill-reward-choice {
+ all: unset !important;
+ display: flex !important;
+ min-height: 48px !important;
+ align-items: center !important;
+ justify-content: center !important;
+ padding: 7px 10px !important;
+ border: 1px solid rgba(214, 175, 89, 0.42) !important;
+ border-radius: 6px !important;
+ background: linear-gradient(180deg, rgba(91, 61, 31, 0.8), rgba(45, 32, 23, 0.9)) !important;
+ color: #e9d6aa !important;
+ font-size: 16px !important;
+ line-height: 1.35 !important;
+ text-align: center !important;
+ text-shadow: 0 1px 3px #000 !important;
+ cursor: pointer !important;
+}
+
+.shuYing-skill-reward-choice:hover,
+.shuYing-skill-reward-choice:focus,
+.shuYing-skill-reward-choice.previewing,
+.shuYing-skill-reward-choice.selected {
+ border-color: #e7bd62 !important;
+ background: linear-gradient(180deg, rgba(135, 83, 30, 0.94), rgba(67, 43, 23, 0.96)) !important;
+ color: #ffe5a3 !important;
+ box-shadow: 0 0 16px rgba(213, 156, 54, 0.28) !important;
+}
+
+.shuYing-skill-reward-choice.selected {
+ outline: 2px solid rgba(245, 205, 112, 0.88) !important;
+ outline-offset: -4px !important;
+}
+
+.shuYing-skill-reward-choice.selected::after {
+ content: "已选择" !important;
+ position: absolute !important;
+ top: -8px !important;
+ right: 5px !important;
+ padding: 2px 6px !important;
+ border-radius: 999px !important;
+ background: #d9ad55 !important;
+ color: #27180c !important;
+ font-size: 10px !important;
+ font-weight: 700 !important;
+ line-height: 1.4 !important;
+}
+
+.shuYing-skill-reward-choice {
+ position: relative !important;
+}
+
+.shuYing-skill-reward-controls {
+ position: relative !important;
+ display: flex !important;
+ min-height: 56px !important;
+ align-items: center !important;
+ justify-content: center !important;
+ padding: 0 20px 16px !important;
+ background: rgba(0, 0, 0, 0.24) !important;
+}
+
+.shuYing-skill-reward-confirm {
+ all: unset !important;
+ display: flex !important;
+ min-width: 150px !important;
+ height: 40px !important;
+ align-items: center !important;
+ justify-content: center !important;
+ border: 1px solid rgba(232, 190, 99, 0.86) !important;
+ border-radius: 6px !important;
+ background: linear-gradient(180deg, rgba(139, 88, 32, 0.96), rgba(66, 42, 22, 0.98)) !important;
+ color: #ffe2a0 !important;
+ font-size: 17px !important;
+ font-weight: 700 !important;
+ line-height: 1 !important;
+ text-align: center !important;
+ text-shadow: 0 1px 3px #000 !important;
+ cursor: pointer !important;
+}
+
+.shuYing-skill-reward-confirm:hover,
+.shuYing-skill-reward-confirm:focus {
+ border-color: #ffe09a !important;
+ background: linear-gradient(180deg, rgba(166, 106, 40, 0.98), rgba(82, 51, 25, 0.98)) !important;
+ box-shadow: 0 0 16px rgba(218, 160, 57, 0.3) !important;
+}
+
+.shuYing-skill-reward-refresh {
+ all: unset !important;
+ position: absolute !important;
+ right: 20px !important;
+ bottom: 16px !important;
+ display: flex !important;
+ min-width: 132px !important;
+ height: 38px !important;
+ align-items: center !important;
+ justify-content: center !important;
+ border: 1px solid rgba(115, 174, 194, 0.78) !important;
+ border-radius: 6px !important;
+ background: linear-gradient(180deg, rgba(42, 88, 105, 0.96), rgba(25, 48, 61, 0.98)) !important;
+ color: #d9f4ff !important;
+ font-size: 13px !important;
+ font-weight: 700 !important;
+ line-height: 1 !important;
+ cursor: pointer !important;
+}
+
+.shuYing-skill-reward-refresh:hover,
+.shuYing-skill-reward-refresh:focus {
+ border-color: #b8ecff !important;
+ background: linear-gradient(180deg, rgba(54, 111, 132, 0.98), rgba(29, 61, 76, 0.98)) !important;
+ box-shadow: 0 0 16px rgba(88, 180, 214, 0.28) !important;
+}
+
+@media screen and (max-width: 720px), screen and (max-height: 520px) {
+ .shuYing-skill-reward-mask {
+ padding: 8px !important;
+ }
+
+ .shuYing-skill-reward-dialog {
+ width: 98vw !important;
+ height: 96vh !important;
+ }
+
+ .shuYing-skill-reward-content {
+ grid-template-columns: minmax(0, 1fr) minmax(150px, 0.42fr) !important;
+ padding: 10px !important;
+ gap: 8px !important;
+ }
+
+ .shuYing-skill-reward-preview {
+ padding: 13px !important;
+ }
+
+ .shuYing-skill-reward-choices {
+ grid-template-columns: repeat(6, minmax(78px, 1fr)) !important;
+ overflow-x: auto !important;
+ padding: 9px 10px 11px !important;
+ }
+
+ .shuYing-skill-reward-choice {
+ min-height: 40px !important;
+ font-size: 14px !important;
+ }
+
+ .shuYing-skill-reward-controls {
+ padding: 0 10px 10px !important;
+ }
+
+ .shuYing-skill-reward-confirm {
+ height: 36px !important;
+ }
+
+ .shuYing-skill-reward-refresh {
+ right: 10px !important;
+ bottom: 10px !important;
+ min-width: 112px !important;
+ height: 34px !important;
+ font-size: 12px !important;
+ }
+}
+
+/* 天书对局选择:三枚难度令牌与奖励界面共用材质,但保持更短、更聚焦的选择路径。 */
+.shuYing-option-dialog-mask {
+ position: fixed !important;
+ inset: 0 !important;
+ z-index: 100000 !important;
+ display: flex !important;
+ align-items: center !important;
+ justify-content: center !important;
+ padding: 18px !important;
+ background: radial-gradient(circle at 50% 42%, rgba(113, 75, 30, 0.22), transparent 45%), rgba(5, 7, 10, 0.8) !important;
+ backdrop-filter: blur(3px);
+}
+
+.shuYing-option-dialog-mask *,
+.shuYing-option-dialog-mask *::before,
+.shuYing-option-dialog-mask *::after {
+ box-sizing: border-box !important;
+ float: none !important;
+ writing-mode: horizontal-tb !important;
+ letter-spacing: normal !important;
+}
+
+.shuYing-option-dialog {
+ position: relative !important;
+ display: flex !important;
+ width: min(850px, 94vw) !important;
+ max-height: 90vh !important;
+ flex-direction: column !important;
+ overflow: hidden !important;
+ border: 1px solid rgba(221, 179, 89, 0.78) !important;
+ border-radius: 10px !important;
+ background: linear-gradient(145deg, rgba(31, 27, 25, 0.98), rgba(13, 16, 21, 0.98)) !important;
+ box-shadow: 0 24px 70px rgba(0, 0, 0, 0.75), inset 0 1px rgba(255, 244, 205, 0.1) !important;
+ color: #eee5d2 !important;
+ font-family: "Microsoft YaHei", "SimHei", sans-serif !important;
+ text-align: left !important;
+}
+
+.shuYing-option-dialog-title {
+ position: static !important;
+ width: auto !important;
+ height: auto !important;
+ padding: 16px 22px 8px !important;
+ color: #f3d58b !important;
+ font-family: "STKaiti", "KaiTi", serif !important;
+ font-size: clamp(22px, 3vw, 30px) !important;
+ font-weight: 700 !important;
+ line-height: 1.3 !important;
+ text-align: center !important;
+ text-shadow: 0 2px 5px #000 !important;
+}
+
+.shuYing-option-dialog-intro {
+ position: static !important;
+ width: auto !important;
+ height: auto !important;
+ padding: 0 22px 15px !important;
+ border-bottom: 1px solid rgba(221, 179, 89, 0.3) !important;
+ color: rgba(255, 255, 255, 0.72) !important;
+ font-size: 14px !important;
+ line-height: 1.65 !important;
+ text-align: center !important;
+}
+
+.shuYing-option-dialog-options {
+ position: static !important;
+ display: grid !important;
+ grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
+ gap: 14px !important;
+ padding: 22px !important;
+ overflow-y: auto !important;
+}
+
+.shuYing-option-dialog-card {
+ all: unset !important;
+ position: relative !important;
+ display: flex !important;
+ min-width: 0 !important;
+ min-height: 210px !important;
+ flex-direction: column !important;
+ align-items: flex-start !important;
+ padding: 18px !important;
+ overflow: hidden !important;
+ border: 1px solid rgba(214, 175, 89, 0.36) !important;
+ border-radius: 9px !important;
+ background: linear-gradient(155deg, rgba(84, 58, 32, 0.58), rgba(28, 25, 26, 0.92)) !important;
+ color: #eee5d2 !important;
+ cursor: pointer !important;
+}
+
+.shuYing-option-dialog-card::after {
+ content: "" !important;
+ position: absolute !important;
+ right: -35px !important;
+ bottom: -52px !important;
+ width: 120px !important;
+ height: 120px !important;
+ border: 1px solid rgba(237, 196, 101, 0.13) !important;
+ border-radius: 50% !important;
+ box-shadow: 0 0 0 14px rgba(237, 196, 101, 0.035), 0 0 0 28px rgba(237, 196, 101, 0.025) !important;
+ pointer-events: none !important;
+}
+
+.shuYing-option-dialog-card:hover,
+.shuYing-option-dialog-card:focus,
+.shuYing-option-dialog-card.selected {
+ border-color: #e2b85d !important;
+ background: linear-gradient(155deg, rgba(123, 76, 29, 0.78), rgba(38, 29, 26, 0.96)) !important;
+ box-shadow: 0 0 20px rgba(214, 156, 54, 0.24) !important;
+ transform: translateY(-2px) !important;
+}
+
+.shuYing-option-dialog-card.selected::before {
+ content: "已选择" !important;
+ position: absolute !important;
+ top: 12px !important;
+ right: 12px !important;
+ z-index: 1 !important;
+ padding: 3px 8px !important;
+ border-radius: 999px !important;
+ background: #d9ad55 !important;
+ color: #27180c !important;
+ font-size: 12px !important;
+ font-weight: 700 !important;
+ line-height: 1.4 !important;
+}
+
+.shuYing-option-dialog-card[data-tone="hard"] {
+ background: linear-gradient(155deg, rgba(88, 51, 31, 0.68), rgba(31, 25, 27, 0.94)) !important;
+}
+
+.shuYing-option-dialog-card[data-tone="nightmare"] {
+ border-color: rgba(178, 73, 69, 0.48) !important;
+ background: linear-gradient(155deg, rgba(91, 31, 33, 0.7), rgba(25, 19, 24, 0.96)) !important;
+}
+
+.shuYing-option-dialog-order {
+ position: static !important;
+ color: rgba(242, 210, 139, 0.48) !important;
+ font-family: Georgia, serif !important;
+ font-size: 13px !important;
+ line-height: 1 !important;
+}
+
+.shuYing-option-dialog-name {
+ position: static !important;
+ width: auto !important;
+ height: auto !important;
+ margin-top: 18px !important;
+ color: #f3d58b !important;
+ font-family: "STKaiti", "KaiTi", serif !important;
+ font-size: 30px !important;
+ font-weight: 700 !important;
+ line-height: 1.2 !important;
+ text-shadow: 0 2px 4px #000 !important;
+}
+
+.shuYing-option-dialog-tag {
+ position: static !important;
+ margin-top: 5px !important;
+ color: rgba(242, 210, 139, 0.68) !important;
+ font-size: 13px !important;
+ line-height: 1.4 !important;
+}
+
+.shuYing-option-dialog-description {
+ position: static !important;
+ width: auto !important;
+ height: auto !important;
+ margin-top: 16px !important;
+ color: rgba(255, 255, 255, 0.78) !important;
+ font-size: 14px !important;
+ line-height: 1.65 !important;
+ word-break: break-word !important;
+}
+
+.shuYing-option-dialog-controls {
+ position: static !important;
+ display: flex !important;
+ justify-content: center !important;
+ padding: 0 22px 20px !important;
+}
+
+.shuYing-option-dialog-confirm {
+ all: unset !important;
+ display: flex !important;
+ min-width: 150px !important;
+ height: 42px !important;
+ align-items: center !important;
+ justify-content: center !important;
+ border: 1px solid rgba(232, 190, 99, 0.86) !important;
+ border-radius: 6px !important;
+ background: linear-gradient(180deg, rgba(139, 88, 32, 0.96), rgba(66, 42, 22, 0.98)) !important;
+ color: #ffe2a0 !important;
+ font-size: 17px !important;
+ font-weight: 700 !important;
+ line-height: 1 !important;
+ text-align: center !important;
+ text-shadow: 0 1px 3px #000 !important;
+ cursor: pointer !important;
+}
+
+.shuYing-option-dialog-confirm:hover,
+.shuYing-option-dialog-confirm:focus {
+ border-color: #ffe09a !important;
+ background: linear-gradient(180deg, rgba(166, 106, 40, 0.98), rgba(82, 51, 25, 0.98)) !important;
+ box-shadow: 0 0 16px rgba(218, 160, 57, 0.3) !important;
+}
+
+@media screen and (max-width: 680px), screen and (max-height: 500px) {
+ .shuYing-option-dialog-mask {
+ padding: 8px !important;
+ }
+
+ .shuYing-option-dialog-options {
+ grid-template-columns: repeat(3, minmax(150px, 1fr)) !important;
+ gap: 9px !important;
+ padding: 12px !important;
+ overflow-x: auto !important;
+ }
+
+ .shuYing-option-dialog-card {
+ min-height: 150px !important;
+ padding: 13px !important;
+ }
+
+ .shuYing-option-dialog-name {
+ margin-top: 9px !important;
+ font-size: 24px !important;
+ }
+
+ .shuYing-option-dialog-description {
+ margin-top: 9px !important;
+ font-size: 12px !important;
+ }
+
+ .shuYing-option-dialog-controls {
+ padding: 0 12px 12px !important;
+ }
+
+ .shuYing-option-dialog-confirm {
+ height: 36px !important;
+ }
+}
+
+@media (prefers-reduced-motion: reduce) {
+ .shuYing-option-dialog-card,
+ .shuYing-skill-reward-choice {
+ transition: none !important;
+ transform: none !important;
+ }
+}
+
+/* 天书对局羁绊入口与概览:不依赖十周年 UI 节点,原版和扩展 UI 共用。 */
+.shuYing-bond-overview-button {
+ all: unset !important;
+ position: fixed !important;
+ left: 14px !important;
+ top: 46% !important;
+ z-index: 9990 !important;
+ display: flex !important;
+ width: 58px !important;
+ height: 34px !important;
+ align-items: center !important;
+ justify-content: center !important;
+ border: 1px solid rgba(225, 181, 88, 0.78) !important;
+ border-radius: 0 16px 16px 0 !important;
+ background: linear-gradient(180deg, rgba(105, 70, 31, 0.96), rgba(43, 31, 23, 0.96)) !important;
+ color: #ffe3a0 !important;
+ font-family: "STKaiti", "KaiTi", serif !important;
+ font-size: 16px !important;
+ font-weight: 700 !important;
+ line-height: 1 !important;
+ text-shadow: 0 1px 3px #000 !important;
+ box-shadow: 0 4px 14px rgba(0, 0, 0, 0.45) !important;
+ cursor: pointer !important;
+}
+
+.shuYing-bond-overview-button:hover,
+.shuYing-bond-overview-button:focus {
+ border-color: #ffe19a !important;
+ background: linear-gradient(180deg, rgba(139, 91, 36, 0.98), rgba(61, 42, 25, 0.98)) !important;
+}
+
+.shuYing-bond-overview-mask {
+ position: fixed !important;
+ inset: 0 !important;
+ z-index: 10020 !important;
+ display: flex !important;
+ align-items: center !important;
+ justify-content: center !important;
+ padding: 18px !important;
+ background: rgba(3, 4, 7, 0.76) !important;
+ backdrop-filter: blur(5px) !important;
+}
+
+.shuYing-bond-overview-mask *,
+.shuYing-bond-overview-mask *::before,
+.shuYing-bond-overview-mask *::after {
+ box-sizing: border-box !important;
+ position: static !important;
+ inset: auto !important;
+ float: none !important;
+ margin: 0 !important;
+ writing-mode: horizontal-tb !important;
+ -webkit-writing-mode: horizontal-tb !important;
+ text-orientation: mixed !important;
+ transform: none !important;
+ transition: none !important;
+}
+
+.shuYing-bond-overview {
+ position: relative !important;
+ display: flex !important;
+ width: min(680px, 94vw) !important;
+ max-height: 82vh !important;
+ flex-direction: column !important;
+ overflow: hidden !important;
+ border: 1px solid rgba(220, 175, 82, 0.76) !important;
+ border-radius: 9px !important;
+ background: linear-gradient(145deg, #251d15, #101216 55%, #090b0f) !important;
+ color: #eee5d5 !important;
+ box-shadow: 0 24px 70px rgba(0, 0, 0, 0.72) !important;
+ font-family: "Microsoft YaHei", sans-serif !important;
+ text-align: left !important;
+}
+
+.shuYing-bond-overview-title {
+ display: block !important;
+ width: auto !important;
+ height: auto !important;
+ min-height: 0 !important;
+ flex: 0 0 auto !important;
+ margin: 0 !important;
+ padding: 18px 22px 13px !important;
+ border-bottom: 1px solid rgba(215, 170, 80, 0.3) !important;
+ color: #f4d58b !important;
+ font-family: "STKaiti", "KaiTi", serif !important;
+ font-size: 25px !important;
+ line-height: 1.2 !important;
+}
+
+.shuYing-bond-overview-content {
+ display: grid !important;
+ width: auto !important;
+ height: auto !important;
+ min-height: 0 !important;
+ grid-auto-rows: max-content !important;
+ align-content: start !important;
+ grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
+ align-items: start !important;
+ gap: 12px !important;
+ padding: 16px !important;
+ overflow-y: auto !important;
+}
+
+.shuYing-bond-overview-player {
+ display: flex !important;
+ width: 100% !important;
+ height: max-content !important;
+ min-height: 0 !important;
+ flex-direction: column !important;
+ align-self: start !important;
+ overflow: hidden !important;
+ border: 1px solid rgba(220, 183, 111, 0.2) !important;
+ border-radius: 7px !important;
+ background: rgba(255, 255, 255, 0.035) !important;
+}
+
+.shuYing-bond-overview-player-name {
+ display: block !important;
+ width: auto !important;
+ height: auto !important;
+ min-height: 0 !important;
+ flex: 0 0 auto !important;
+ margin: 0 !important;
+ padding: 11px 13px !important;
+ border-bottom: 1px solid rgba(215, 170, 80, 0.18) !important;
+ color: #f3d58b !important;
+ font-size: 17px !important;
+ line-height: 1.3 !important;
+}
+
+.shuYing-bond-overview-item {
+ display: flex !important;
+ width: auto !important;
+ height: auto !important;
+ min-height: 0 !important;
+ flex: 0 0 auto !important;
+ flex-direction: column !important;
+ padding: 11px 13px !important;
+ border-bottom: 1px solid rgba(255, 255, 255, 0.07) !important;
+}
+
+.shuYing-bond-overview-item:last-child {
+ border-bottom: 0 !important;
+}
+
+.shuYing-bond-overview-item-head {
+ display: flex !important;
+ width: 100% !important;
+ height: auto !important;
+ min-height: 0 !important;
+ flex: 0 0 auto !important;
+ align-items: center !important;
+ justify-content: space-between !important;
+ gap: 12px !important;
+}
+
+.shuYing-bond-overview-name {
+ display: inline !important;
+ width: auto !important;
+ height: auto !important;
+ min-width: 0 !important;
+ color: #efca73 !important;
+ font-size: 14px !important;
+ font-weight: 700 !important;
+}
+
+.shuYing-bond-overview-level {
+ display: inline !important;
+ width: auto !important;
+ height: auto !important;
+ flex: 0 0 auto !important;
+ color: #aa9b7c !important;
+ font-size: 11px !important;
+}
+
+.shuYing-bond-overview-effect {
+ display: block !important;
+ margin-top: 6px !important;
+ color: #d4d0c7 !important;
+ font-size: 13px !important;
+ line-height: 1.6 !important;
+ white-space: normal !important;
+ overflow: visible !important;
+ word-break: break-word !important;
+}
+
+.shuYing-bond-overview-empty {
+ grid-column: 1 / -1 !important;
+ padding: 34px !important;
+ color: #99958c !important;
+ text-align: center !important;
+}
+
+.shuYing-bond-overview-close {
+ all: unset !important;
+ display: flex !important;
+ width: 140px !important;
+ height: 38px !important;
+ flex: 0 0 38px !important;
+ align-items: center !important;
+ justify-content: center !important;
+ align-self: center !important;
+ margin: 0 0 15px !important;
+ border: 1px solid rgba(221, 174, 84, 0.78) !important;
+ border-radius: 5px !important;
+ background: linear-gradient(180deg, #755023, #3a2818) !important;
+ color: #ffe2a4 !important;
+ font-weight: 700 !important;
+ cursor: pointer !important;
+}
+
+@media screen and (max-width: 650px), screen and (max-height: 520px) {
+ .shuYing-bond-overview-button {
+ left: 5px !important;
+ width: 48px !important;
+ height: 30px !important;
+ font-size: 14px !important;
+ }
+
+ .shuYing-bond-overview-content {
+ grid-template-columns: 1fr !important;
+ grid-auto-rows: max-content !important;
+ padding: 10px !important;
+ }
+
+ .shuYing-bond-overview {
+ width: 96vw !important;
+ max-height: 92vh !important;
+ }
+
+ .shuYing-bond-overview-title {
+ padding: 12px 16px 9px !important;
+ font-size: 21px !important;
+ }
+
+ .shuYing-bond-overview-player-name {
+ padding: 8px 11px !important;
+ font-size: 15px !important;
+ }
+
+ .shuYing-bond-overview-item {
+ padding: 8px 11px !important;
+ }
+
+ .shuYing-bond-overview-effect {
+ margin-top: 4px !important;
+ font-size: 12px !important;
+ line-height: 1.45 !important;
+ }
+}
+
+/* 天书羁绊谱册:从 config.bonds 实时生成,独立于游戏 UI 主题。 */
+.shuYing-bond-book-mask {
+ position: fixed !important;
+ inset: 0 !important;
+ z-index: 10000 !important;
+ display: flex !important;
+ align-items: center !important;
+ justify-content: center !important;
+ box-sizing: border-box !important;
+ padding: 22px !important;
+ background: rgba(3, 4, 7, 0.82) !important;
+ backdrop-filter: blur(7px) !important;
+ direction: ltr !important;
+ writing-mode: horizontal-tb !important;
+ -webkit-writing-mode: horizontal-tb !important;
+ text-orientation: mixed !important;
+}
+
+.shuYing-bond-book-mask *,
+.shuYing-bond-book-mask *::before,
+.shuYing-bond-book-mask *::after {
+ box-sizing: border-box !important;
+ position: static !important;
+ inset: auto !important;
+ float: none !important;
+ margin: 0 !important;
+ direction: ltr !important;
+ writing-mode: horizontal-tb !important;
+ -webkit-writing-mode: horizontal-tb !important;
+ text-orientation: mixed !important;
+ transform: none !important;
+ transition: none !important;
+}
+
+.shuYing-bond-book {
+ position: relative !important;
+ display: flex !important;
+ width: min(880px, 94vw) !important;
+ max-height: min(760px, 90vh) !important;
+ flex-direction: column !important;
+ overflow: hidden !important;
+ border: 1px solid rgba(215, 171, 81, 0.78) !important;
+ border-radius: 10px !important;
+ background:
+ linear-gradient(90deg, transparent 47px, rgba(199, 144, 53, 0.13) 48px, transparent 49px),
+ linear-gradient(145deg, #211a13 0%, #111216 46%, #090b0f 100%) !important;
+ color: #eee5d5 !important;
+ box-shadow: 0 28px 80px rgba(0, 0, 0, 0.72), inset 0 1px rgba(255, 226, 164, 0.08) !important;
+ font-family: "Microsoft YaHei", "STKaiti", sans-serif !important;
+ line-height: normal !important;
+ text-align: left !important;
+}
+
+.shuYing-bond-book-header {
+ position: static !important;
+ display: flex !important;
+ width: auto !important;
+ height: auto !important;
+ min-height: 0 !important;
+ align-items: flex-end !important;
+ justify-content: space-between !important;
+ gap: 20px !important;
+ padding: 24px 30px 15px !important;
+ border-bottom: 1px solid rgba(211, 164, 71, 0.35) !important;
+}
+
+.shuYing-bond-book-heading {
+ position: static !important;
+ display: block !important;
+ width: auto !important;
+ height: auto !important;
+ min-width: 0 !important;
+ overflow: visible !important;
+ transform: none !important;
+}
+
+.shuYing-bond-book-eyebrow {
+ position: static !important;
+ display: block !important;
+ width: auto !important;
+ height: auto !important;
+ margin-bottom: 5px !important;
+ color: #c99a4c !important;
+ font-family: Consolas, "Microsoft YaHei", sans-serif !important;
+ font-size: 11px !important;
+ font-weight: 700 !important;
+ line-height: 1.4 !important;
+ letter-spacing: 0.2em !important;
+ white-space: normal !important;
+ transform: none !important;
+}
+
+.shuYing-bond-book-title {
+ position: static !important;
+ display: block !important;
+ width: auto !important;
+ height: auto !important;
+ margin: 0 !important;
+ color: #ffe5aa !important;
+ font-family: "STKaiti", "KaiTi", serif !important;
+ font-size: 30px !important;
+ font-weight: 700 !important;
+ line-height: 1.15 !important;
+ letter-spacing: 0.08em !important;
+ white-space: normal !important;
+ overflow: visible !important;
+ text-shadow: 0 2px 8px rgba(0, 0, 0, 0.85) !important;
+ transform: none !important;
+}
+
+.shuYing-bond-book-count {
+ position: static !important;
+ display: block !important;
+ width: auto !important;
+ height: auto !important;
+ flex: 0 0 auto !important;
+ padding: 5px 10px !important;
+ border: 1px solid rgba(202, 153, 70, 0.5) !important;
+ border-radius: 999px !important;
+ color: #d9b66f !important;
+ font-size: 12px !important;
+ line-height: 1.4 !important;
+ white-space: nowrap !important;
+ transform: none !important;
+}
+
+.shuYing-bond-book-intro {
+ position: static !important;
+ display: block !important;
+ width: auto !important;
+ height: auto !important;
+ margin: 0 !important;
+ padding: 12px 30px !important;
+ background: rgba(0, 0, 0, 0.18) !important;
+ color: #aaa79f !important;
+ font-size: 13px !important;
+ line-height: 1.65 !important;
+ white-space: normal !important;
+ transform: none !important;
+}
+
+.shuYing-bond-book-content {
+ position: static !important;
+ display: grid !important;
+ width: auto !important;
+ height: auto !important;
+ grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
+ grid-auto-rows: max-content !important;
+ align-content: start !important;
+ align-items: start !important;
+ gap: 14px !important;
+ min-height: 150px !important;
+ padding: 18px 22px 22px !important;
+ overflow-x: hidden !important;
+ overflow-y: auto !important;
+ scrollbar-color: #8b642c rgba(255, 255, 255, 0.04) !important;
+}
+
+.shuYing-bond-book-card {
+ position: relative !important;
+ inset: auto !important;
+ display: flex !important;
+ width: 100% !important;
+ height: max-content !important;
+ min-height: 0 !important;
+ flex-direction: column !important;
+ margin: 0 !important;
+ align-self: start !important;
+ overflow: hidden !important;
+ border: 1px solid rgba(224, 195, 139, 0.18) !important;
+ border-radius: 7px !important;
+ background: linear-gradient(135deg, rgba(60, 45, 29, 0.56), rgba(18, 19, 23, 0.9)) !important;
+ box-shadow: inset 0 1px rgba(255, 255, 255, 0.035) !important;
+}
+
+.shuYing-bond-book-card-head {
+ position: static !important;
+ display: flex !important;
+ width: auto !important;
+ height: auto !important;
+ min-height: 0 !important;
+ flex: 0 0 auto !important;
+ align-items: center !important;
+ gap: 12px !important;
+ padding: 15px 16px 12px !important;
+ border-bottom: 1px solid rgba(215, 170, 80, 0.18) !important;
+}
+
+.shuYing-bond-book-seal {
+ position: static !important;
+ inset: auto !important;
+ display: flex !important;
+ width: 36px !important;
+ height: 36px !important;
+ flex: 0 0 36px !important;
+ align-items: center !important;
+ justify-content: center !important;
+ border: 1px solid #b96644 !important;
+ color: #e8a281 !important;
+ font-family: Georgia, serif !important;
+ font-size: 13px !important;
+ transform: rotate(-3deg) !important;
+}
+
+.shuYing-bond-book-name-wrap {
+ position: static !important;
+ display: block !important;
+ width: auto !important;
+ height: auto !important;
+ min-width: 0 !important;
+ overflow: visible !important;
+}
+
+.shuYing-bond-book-name {
+ position: static !important;
+ display: block !important;
+ width: auto !important;
+ height: auto !important;
+ margin: 0 0 2px !important;
+ color: #f6d88f !important;
+ font-family: "STKaiti", "KaiTi", serif !important;
+ font-size: 21px !important;
+ line-height: 1.2 !important;
+ white-space: normal !important;
+ transform: none !important;
+}
+
+.shuYing-bond-book-summary {
+ display: block !important;
+ width: auto !important;
+ height: auto !important;
+ padding: 13px 16px 11px !important;
+ border-bottom: 1px solid rgba(215, 170, 80, 0.14) !important;
+ background: rgba(8, 10, 12, 0.18) !important;
+}
+
+.shuYing-bond-book-tags {
+ display: flex !important;
+ width: auto !important;
+ height: auto !important;
+ flex-wrap: wrap !important;
+ align-items: flex-start !important;
+ gap: 7px 8px !important;
+}
+
+.shuYing-bond-book-tag {
+ display: inline-flex !important;
+ width: auto !important;
+ height: 25px !important;
+ align-items: center !important;
+ justify-content: center !important;
+ padding: 0 10px !important;
+ border: 1px solid rgba(171, 193, 104, 0.45) !important;
+ border-radius: 4px !important;
+ background: linear-gradient(180deg, rgba(93, 121, 54, 0.92), rgba(55, 78, 38, 0.94)) !important;
+ color: #f3efd5 !important;
+ font-family: "STKaiti", "KaiTi", serif !important;
+ font-size: 14px !important;
+ line-height: 1 !important;
+ white-space: nowrap !important;
+ box-shadow: inset 0 1px rgba(255, 255, 255, 0.1) !important;
+}
+
+.shuYing-bond-book-rule {
+ display: block !important;
+ width: auto !important;
+ height: auto !important;
+ margin-top: 9px !important;
+ color: #96938b !important;
+ font-size: 11px !important;
+ line-height: 1.5 !important;
+ white-space: normal !important;
+}
+
+.shuYing-bond-book-levels {
+ position: relative !important;
+ inset: auto !important;
+ display: flex !important;
+ width: 100% !important;
+ height: auto !important;
+ min-height: 0 !important;
+ flex: 0 0 auto !important;
+ flex-direction: column !important;
+ overflow: visible !important;
+ padding: 13px 16px 15px 28px !important;
+}
+
+.shuYing-bond-book-levels::before {
+ content: "" !important;
+ position: absolute !important;
+ top: 23px !important;
+ bottom: 26px !important;
+ left: 19px !important;
+ right: auto !important;
+ width: 1px !important;
+ background: linear-gradient(#d8a64d, rgba(216, 166, 77, 0.18)) !important;
+}
+
+.shuYing-bond-book-level {
+ position: relative !important;
+ inset: auto !important;
+ display: flex !important;
+ width: 100% !important;
+ height: auto !important;
+ min-height: 0 !important;
+ flex: 0 0 auto !important;
+ align-items: flex-start !important;
+ gap: 11px !important;
+ padding: 7px 0 10px !important;
+}
+
+.shuYing-bond-book-level-dot {
+ position: relative !important;
+ inset: auto !important;
+ z-index: 1 !important;
+ width: 9px !important;
+ height: 9px !important;
+ flex: 0 0 9px !important;
+ margin-left: -13px !important;
+ margin-top: 5px !important;
+ border: 2px solid #d7a64f !important;
+ border-radius: 50% !important;
+ background: #17151a !important;
+ box-shadow: 0 0 8px rgba(222, 167, 70, 0.46) !important;
+}
+
+.shuYing-bond-book-level-detail {
+ position: static !important;
+ display: block !important;
+ width: auto !important;
+ height: auto !important;
+ min-width: 0 !important;
+ min-height: 0 !important;
+ flex: 1 1 auto !important;
+ overflow: visible !important;
+}
+
+.shuYing-bond-book-level-name {
+ position: static !important;
+ display: block !important;
+ width: auto !important;
+ height: auto !important;
+ margin-bottom: 4px !important;
+ color: #cfa557 !important;
+ font-size: 12px !important;
+ font-weight: 700 !important;
+ letter-spacing: 0.12em !important;
+}
+
+.shuYing-bond-book-reward {
+ position: static !important;
+ display: block !important;
+ width: auto !important;
+ height: auto !important;
+ font-size: 13px !important;
+ line-height: 1.55 !important;
+ word-break: break-word !important;
+ white-space: normal !important;
+ overflow: visible !important;
+ transform: none !important;
+}
+
+.shuYing-bond-book-reward {
+ margin-top: 4px !important;
+ color: #f0cf82 !important;
+}
+
+.shuYing-bond-book-empty,
+.shuYing-bond-book-level-empty {
+ grid-column: 1 / -1 !important;
+ padding: 32px !important;
+ color: #8f8d87 !important;
+ text-align: center !important;
+}
+
+.shuYing-bond-book-controls {
+ position: static !important;
+ display: flex !important;
+ width: auto !important;
+ height: auto !important;
+ justify-content: center !important;
+ padding: 13px 22px 18px !important;
+ border-top: 1px solid rgba(215, 170, 80, 0.24) !important;
+ background: rgba(0, 0, 0, 0.2) !important;
+}
+
+.shuYing-bond-book-close {
+ all: unset !important;
+ display: flex !important;
+ min-width: 148px !important;
+ height: 39px !important;
+ align-items: center !important;
+ justify-content: center !important;
+ border: 1px solid rgba(221, 174, 84, 0.78) !important;
+ border-radius: 5px !important;
+ background: linear-gradient(180deg, #755023, #3a2818) !important;
+ color: #ffe2a4 !important;
+ font-size: 15px !important;
+ font-weight: 700 !important;
+ cursor: pointer !important;
+}
+
+.shuYing-bond-book-close:hover,
+.shuYing-bond-book-close:focus {
+ border-color: #ffe09a !important;
+ box-shadow: 0 0 14px rgba(218, 160, 57, 0.28) !important;
+}
+
+@media screen and (max-width: 700px), screen and (max-height: 540px) {
+ .shuYing-bond-book-mask {
+ padding: 8px !important;
+ }
+
+ .shuYing-bond-book {
+ width: 98vw !important;
+ max-height: 96vh !important;
+ }
+
+ .shuYing-bond-book-header {
+ min-height: 50px !important;
+ flex: 0 0 auto !important;
+ align-items: center !important;
+ padding: 10px 18px !important;
+ overflow: hidden !important;
+ }
+
+ .shuYing-bond-book-heading {
+ display: flex !important;
+ min-height: 29px !important;
+ align-items: center !important;
+ overflow: hidden !important;
+ }
+
+ .shuYing-bond-book-eyebrow {
+ display: none !important;
+ }
+
+ .shuYing-bond-book-title {
+ max-width: 100% !important;
+ font-size: 22px !important;
+ line-height: 1.25 !important;
+ white-space: nowrap !important;
+ overflow: hidden !important;
+ text-overflow: ellipsis !important;
+ }
+
+ .shuYing-bond-book-count {
+ padding: 4px 9px !important;
+ font-size: 11px !important;
+ }
+
+ .shuYing-bond-book-intro {
+ padding: 9px 18px !important;
+ font-size: 12px !important;
+ }
+
+ .shuYing-bond-book-content {
+ grid-template-columns: 1fr !important;
+ padding: 12px !important;
+ }
+
+ .shuYing-bond-book-controls {
+ padding: 9px 12px 12px !important;
+ }
+}
+
+@media (prefers-reduced-motion: reduce) {
+ .shuYing-bond-book-seal {
+ transform: none !important;
+ }
+}
diff --git a/extension.js b/extension.js
index f1b5cd4..d193ee1 100644
--- a/extension.js
+++ b/extension.js
@@ -5,7 +5,7 @@ import initShuYingMenu from "./menu.js";
export const type = "extension";
export let shuYing = new Object();
-const shuYingLocalVersion = "2.0.0.9";
+const shuYingLocalVersion = "2.0.1.0";
shuYing.name = "术樱包";
shuYing.editable = false;
@@ -82,7 +82,7 @@ shuYing.appendExtension = function (name, translate, obj) {
Object.assign(obj.translate, shuYing.voices || {});
oobj.translate = obj.translate;
game.import('character', () => { return oobj; });
- lib.config.all.characters.push(name);
+ lib.config.characters.push(name);
if (!lib.config.characters.contains(name)) {
lib.config.characters.push(name);
}
@@ -112,26 +112,6 @@ shuYing.mergeCharacterPack = function (target, source, sourceName = "附加模
return target;
};
-// 清理旧版本曾注册的独立武将包,防止历史配置让已合并模块继续出现在武将包列表。
-shuYing.removeLegacyCharacterPack = function (name) {
- const removeFrom = list => {
- if (!Array.isArray(list)) return false;
- let changed = false;
- for (let index = list.indexOf(name); index >= 0; index = list.indexOf(name)) {
- list.splice(index, 1);
- changed = true;
- }
- return changed;
- };
- removeFrom(lib.config.all.characters);
- if (removeFrom(lib.config.characters)) {
- game.saveConfig("characters", lib.config.characters);
- }
- removeFrom(lib.connectCharacterPack);
- delete lib.characterPack[name];
- delete lib.translate[`${name}_character_config`];
-};
-
shuYing.getVersion = (callback) => {
return updater.getOnlineVersion()
.then(version => {
@@ -196,46 +176,24 @@ shuYing.initCSS = () => {
//术樱包初始化Config配置文件
shuYing.initConfig = () => {
- if (lib.config.show_splash != 'off') game.saveConfig('show_splash', 'off'); //关闭启动页
+ // //崩坏3包
+ // if (lib.config.extension_shuYing_bengHuai_Off == undefined) {
+ // game.saveConfig('extension_shuYing_bengHuai_Off', true);
+ // }
- //崩坏3包
- if (lib.config.extension_shuYing_bengHuai_Off == undefined) {
- game.saveConfig('extension_shuYing_bengHuai_Off', true);
- }
+ // //原神包
+ // if (lib.config.extension_术樱包_yuanShenOff == undefined) {
+ // game.saveConfig('extension_术樱包_yuanShenOff', true);
+ // }
- //原神包
- if (lib.config.extension_术樱包_yuanShenOff == undefined) {
- game.saveConfig('extension_术樱包_yuanShenOff', true);
- }
+ // //崩铁包
+ // if (lib.config.extension_术樱包_bengTieOff == undefined) {
+ // game.saveConfig('extension_术樱包_bengTieOff', true);
+ // }
- //崩铁包
- if (lib.config.extension_术樱包_bengTieOff == undefined) {
- game.saveConfig('extension_术樱包_bengTieOff', true);
- }
-
- //天书包
- if (lib.config.extension_shuYing_tianShu_Off == undefined) {
- game.saveConfig('extension_shuYing_tianShu_Off', true);
- }
-
- //天书一共多少层
- if (lib.config.extension_shuYing_tianShu_Instances == undefined) {
- game.saveConfig('extension_shuYing_tianShu_Instances', 4);
- }
-
- //天书自定义Boss列表
- if (lib.config.extension_shuYing_tianShu_DiyBoss == undefined) {
- game.saveConfig('extension_shuYing_tianShu_DiyBoss', '');
- }
-
- //天书狂暴
- if (lib.config.extension_shuYing_tianShu_KuangBao == undefined) {
- game.saveConfig('extension_shuYing_tianShu_KuangBao', '');
- }
-
- //百战天书
- if (lib.config.extension_shuYing_baiZhan_Off == undefined) {
- game.saveConfig('extension_shuYing_baiZhan_Off', false);
+ //天书乱斗
+ if (lib.config.extension_术樱包_tianShu_Off == undefined) {
+ game.saveConfig('extension_术樱包_tianShu_Off', true);
}
//
@@ -243,14 +201,12 @@ shuYing.initConfig = () => {
//版本号
game.saveConfig('shuYing_local_version', shuYingLocalVersion);
-
};
//术樱包初始化武将包
shuYing.initCharacter = async () => {
let shuYingList;
- if (lib.config.mode == 'boss') {
- shuYing.removeLegacyCharacterPack("shuYing_pve_tianshu");
+ if (lib.config.mode == 'boss' && lib.config.extension_术樱包_tianShu_Off) {
let shuying_boss = await shuYing.loadModule("./pve/boss/index.js", "活动BOSS", true);
const initTianShu = await shuYing.loadModule("./tianshu/extension.js", "天书乱斗", true);
@@ -308,650 +264,6 @@ shuYing.help = () => {
};
-//添加自定义Boss TODO
-shuYing.newTianShuBossList = function () {
- _status.buttonNode; //用于判断输入框回车之后响应事件
- _status.nameList;
- let manual = ui.create.div('.manual', manual);
- let menu = ui.create.div('.menu', manual);
- let input = menu.appendChild(document.createElement('input'));
- input.onkeydown = function (e) {
- if (e && e.keyCode == 13) {
- if (_status.buttonNode == 2) {
- this.deleteBossList(dialog, manual, input.value);
- }
- else {
- this.searchBossList(dialog, manual, input.value);
- }
- }
- };
-
- let addNewBoss = ui.create.div('.addNewBoss', menu); //加入新boss
- let newBossList = ui.create.div('.newBossList', menu);
- let deleteNewBossAllList = ui.create.div('.deleteNewBossAllList', menu);
- let deleteNewBoss = ui.create.div('.deleteNewBoss', menu);
- let playerList = ui.create.div('.playerList', menu);
-
- let close = ui.create.div('.close', menu);
- let dialog = ui.create.dialog();
- dialog.noImage = true;
- dialog.style.backgroundImage = "";
-
- let content = manual.appendChild(dialog);
- content.classList.remove('nobutton');
- content.classList.add('content');
- content.style.transform = '';
- content.style.opacity = '';
- content.style.height = '';
-
- newBossList.innerHTML = '列表';
- newBossList.id = 'newBossList';
- newBossList.addEventListener('click', function () {
- this.addBossShow(dialog, manual);
- });
-
- deleteNewBossAllList.innerHTML = '清除';
- deleteNewBossAllList.addEventListener('click', function () {
- if (confirm('点击确定清除全部自定义Boss')) {
- game.saveConfig('extension_shuYing_tianShu_DiyBoss', '');
- this.addBossShow(dialog, manual);
- alert('清除完毕!');
- }
- });
-
- addNewBoss.innerHTML = '搜索';
- addNewBoss.addEventListener('click', function () {
- this.searchBossList(dialog, manual, input.value);
-
- input.value = "";
- _status.buttonNode = 1;
- });
-
- deleteNewBoss.innerHTML = '登陆'; //暂时弃用
- deleteNewBoss.addEventListener('click', function () {
- alert('暂未开放');
- //deleteNewBossList(dialog,manual,input.value);
- //input.value="";
- //_status.buttonNode=2;
- });
-
- playerList.innerHTML = '排行榜';
- playerList.addEventListener('click', function () {
- alert('暂未开放');
- });
-
- dialog.addText("使用说明: 点击列表查看自定义BOSS列表
" +
- "点击清空按钮清空自定义BOSS列表中全部Boss
" +
- "点击列表列举出Boss列表,并可以删除列表中的Boss
" +
- "点击搜索并在输入框内输入武将名称即可罗列相似武将
" +
- "需要注意的是,输入框需要输入武将名称而不是英文
一旦启用自定义Boss,那么必须保持不禁用武将和Boss列表大于1");
-
- // close1.addEventListener('click', function(){
- // alert(close1.value);
- // //game.tujianBegin(content , close , input.value , manual);
- // //input.value="";
- // });
-
- close.innerHTML = '关闭';
- close.addEventListener('click', function () {
- manual.remove();
- ui.arena.show();
- ui.system.show();
-
- game.resume2();
- if (game.onresume2) {
- game.onresume2();
- }
- ui.arena.classList.remove('menupaused');
- ui.historybar.classList.remove('menupaused');
- ui.window.classList.remove('touchinfohidden');
- ui.config2.classList.remove('pressdown2');
- ui.menuContainer.show();
- });
-
- _status.paused = true;
- ui.arena.classList.remove('menupaused');
- ui.arena.hide();
- ui.system.hide();
- ui.menuContainer.hide();
- ui.window.appendChild(manual);
-},
-
- //添加自定义Boss TODO
- shuYing.addBossShow = function (dialog, manual) {
- dialog = ui.create.dialog();
- dialog.noImage = true;
- dialog.style.backgroundImage = "";
-
- let content = manual.appendChild(dialog);
- content.classList.remove('nobutton');
- content.classList.add('content');
- content.style.transform = '';
- content.style.opacity = '';
- content.style.height = '';
-
- let list = lib.config.extension_术樱_tianshu_add_list;
- if (list == undefined || list == '') {
- dialog.addText("无BOSS");
- } else {
- list = list.split(",");
-
- for (let i = 0; i < list.length; i++) {
- for (let j in lib.character) {
- if (j == list[i]) {
- dialog.addSmall([[j], 'character']);
- let del = ui.create.div('.shadowed.reduce_radius.pointerdiv.tdnode');
- del.link = i;
- del.innerHTML = '' + '删除' + '';
- del.addEventListener(lib.config.touchscreen ? 'touchend' : 'click', function () {
- if (lib.config.extension_术樱_tianshu_add_list.length <= 1) {
- game.saveConfig('extension_术樱_tianshu_add_list', '');
- } else if (lib.config.extension_术樱_tianshu_add_list.length == 2) {
- if (this.link != 1) {
- game.saveConfig('extension_术樱_tianshu_add_list', list[this.link]);
- } else {
- game.saveConfig('extension_术樱_tianshu_add_list', list[0]);
- }
- } else {
- game.saveConfig('extension_术樱_tianshu_add_list', '');
- for (let k = 0; k < list.length; k++) {
- if (k == this.link) continue;
- if (lib.config.extension_术樱_tianshu_add_list == undefined || lib.config.extension_术樱_tianshu_add_list == '') {
- game.saveConfig('extension_术樱_tianshu_add_list', list[k]);
- } else {
- game.saveConfig('extension_术樱_tianshu_add_list', lib.config.extension_术樱_tianshu_add_list + ',' + list[k]);
- }
- }
- document.getElementById('newBossList').click(); //刷新列表
- }
- });
- dialog.addAuto(del);
- }
- }
- }
- }
- },
-
- //搜索Boss TODO
- shuYing.searchBossList = function (dialog, manual, val) {
- dialog = ui.create.dialog();
- dialog.noImage = true;
- dialog.style.backgroundImage = "";
-
- let content = manual.appendChild(dialog);
- content.classList.remove('nobutton');
- content.classList.add('content');
- content.style.transform = '';
- content.style.opacity = '';
- content.style.height = '';
-
- let result = val;
- let value = false;
- let list = [];
-
- if (result == "" || result == null) {
- result = "请输入武将名称";
- alert(result);
- } else {
- for (let a in lib.character) {
- if (lib.translate[a] && lib.translate[a].indexOf(result) != -1) {
- list.add(a);
- value = true;
- }
- }
-
- for (let i = 0; i < list.length; i++) {
- dialog.addSmall([[list[i]], 'character']);
- let add = ui.create.div('.shadowed.reduce_radius.pointerdiv.tdnode');
- add.link = i;
- add.innerHTML = '' + '加入' + '';
- add.addEventListener(lib.config.touchscreen ? 'touchend' : 'click', function () {
- if (lib.config.extension_术樱_tianshu_add_list == undefined || lib.config.extension_术樱_tianshu_add_list == '') {
- game.saveConfig('extension_术樱_tianshu_add_list', list[this.link]);
- } else {
- game.saveConfig('extension_术樱_tianshu_add_list', lib.config.extension_术樱_tianshu_add_list + ',' + list[this.link]);
- }
- alert('成功加入至列表');
- });
- dialog.addAuto(add);
- }
-
- _status.nameList = list;
-
- if (value == false) {
- alert('找不到名为' + result + '的武将!');
- }
- }
- },
-
- //删除Boss TODO
- shuYing.deleteBossList = function (dialog, manual, val) {
- dialog = ui.create.dialog();
- dialog.noImage = true;
- dialog.style.backgroundImage = "";
-
- let content = manual.appendChild(dialog);
- content.classList.remove('nobutton');
- content.classList.add('content');
- content.style.transform = '';
- content.style.opacity = '';
- content.style.height = '';
-
- let result = val;
-
- if (result == "" || result == null) {
- result = "你没有输入名称";
- alert(result);
- return;
- }
-
- let list = lib.config.extension_术樱_tianshu_add_list.split(",");
- let value = false;
- let newList = [];
-
- for (let i = 0; i < list.length; i++) {
- let pushBool = true;
- if (String(lib.translate[list[i]]) == String(result)) {
- if (confirm('已找到' + result + '武将,点击确定移除自定义Boss列表。')) {
- pushBool = false;
- }
- value = true;
- }
- if (pushBool) newList.push(list[i]);
- }
- if (newList) {
- game.saveConfig('extension_术樱_tianshu_add_list', '');
- for (let j = 0; j < newList.length; j++) {
- if (lib.config.extension_术樱_tianshu_add_list == undefined || lib.config.extension_术樱_tianshu_add_list == '') {
- game.saveConfig('extension_术樱_tianshu_add_list', newList[j]);
- } else {
- game.saveConfig('extension_术樱_tianshu_add_list', lib.config.extension_术樱_tianshu_add_list + ',' + newList[j]);
- }
- }
- }
-
-
- if (value == false) {
- alert('找不到名为' + result + '的武将或者武将不存在自定义Boss列表中。');
- }
- },
-
- shuYing.download_beta_version = function () {
- let online_version;
- let httpRequest = new XMLHttpRequest();
- httpRequest.open("GET", 'http://diuse.hao1237.top/Diuse/beta_extension/online_version.js', true);
- httpRequest.send(null);
- httpRequest.onreadystatechange = function () {
- if (httpRequest.readyState == 4 && httpRequest.status == 200) {
- online_version = httpRequest.responseText;
- game.saveConfig('Diuse_online_version', httpRequest.responseText)
- lib.init.js(url, 'version', function () {
- try {
- let local_version = Diuse_version;
- let Diuse_num = 1;
- } catch (error) {
- if (confirm('本地资源不完整!点击确认重新获取!')) {
- game.download('http://diuse.hao1237.top/Diuse/beta_extension/files.js', 'extension/术樱/files.js', function () { }, function () { });
- game.download('http://diuse.hao1237.top/Diuse/beta_extension/version.js', 'extension/术樱/version.js', function () { }, function () { });
- game.download('http://diuse.hao1237.top/Diuse/beta_extension/extension.js', 'extension/术樱/extension.js', function () {
- game.saveConfig('Diuse_local_version', online_version);
- Diuse_Button = true;
- alert('下载完成,重启生效');
- }, function () {
- Diuse_Button = true;
- alert('下载失败');
- });
- } else {
- Diuse_Button = true;
- }
- }
- if (local_version != online_version && Diuse_num == 1) {
- if (confirm('检测到最新测试版本为:' + online_version + '本地版本为:' + local_version)) {
- game.download('http://diuse.hao1237.top/Diuse/beta_extension/files.js', 'extension/术樱/files.js', function () { }, function () { });
- game.download('http://diuse.hao1237.top/Diuse/beta_extension/version.js', 'extension/术樱/version.js', function () { }, function () { });
- game.download('http://diuse.hao1237.top/Diuse/beta_extension/extension.js', 'extension/术樱/extension.js', function () {
- game.saveConfig('Diuse_local_version', online_version);
- Diuse_Button = true;
- alert('下载完成,重启生效');
- }, function () {
- Diuse_Button = true;
- alert('下载失败');
- });
- } else {
- Diuse_Button = true;
- }
- } else {
- if (Diuse_num == 1) {
- Diuse_Button = true;
- alert('本地版本为最新版');
- }
- }
- }, function () {
- if (confirm('本地资源不完整!点击确认重新获取!')) {
- game.download('http://diuse.hao1237.top/Diuse/beta_extension/files.js', 'extension/术樱/files.js', function () { }, function () { });
- game.download('http://diuse.hao1237.top/Diuse/beta_extension/version.js', 'extension/术樱/version.js', function () { }, function () { });
- game.download('http://diuse.hao1237.top/Diuse/beta_extension/extension.js', 'extension/术樱/extension.js', function () {
- game.saveConfig('Diuse_local_version', online_version);
- Diuse_Button = true;
- alert('下载完成,重启生效');
- }, function () {
- Diuse_Button = true;
- alert('下载失败');
- });
- } else {
- Diuse_Button = true;
- }
- });
- }
- };
- };
-
-shuYing.download_mp3 = function () {
- lib.init.js(url, 'files', function () {
- let list = Diuse_mp3;
- let num = 0;
- let num1 = list.length;
- document.body.appendChild(Diuse_Text);
- let download1 = function () {
- game.download('http://diuse.hao1237.top/Diuse/skin/' + list[0], 'extension/术樱/' + list[0], function () {
- num++
- list.remove(list[0]);
- if (list.length > 0) {
- Diuse_Text.innerHTML = '正在下载(' + num + '/' + num1 + ')';
- download1();
- } else {
- Diuse_Text.innerHTML = '下载完毕';
- Diuse_Button = true;
- alert('语音下载完毕!');
- document.body.removeChild(Diuse_Text);
- };
- }, function () {
- if (confirm('下载' + list[0] + '失败,是否继续下载?')) {
- download1();
- }
- });
- }
- download1();
- }, function () {
- Diuse_Button = true;
- alert('本地资源不完整!请检查文件完整性。');
- });
-};
-
-shuYing.download_static = function () {
- lib.init.js(url, 'files', function () {
- let list = Diuse_static;
- let num = 0;
- let num1 = list.length;
- document.body.appendChild(Diuse_Text);
- let download1 = function () {
- game.download('http://diuse.hao1237.top/Diuse/image/static/' + list[0], 'extension/术樱/' + list[0], function () {
- num++
- list.remove(list[0]);
- if (list.length > 0) {
- Diuse_Text.innerHTML = '正在下载(' + num + '/' + num1 + ')';
- download1();
- } else {
- Diuse_Text.innerHTML = '下载完毕';
- Diuse_Button = true;
- alert('静态皮肤下载完毕!');
- document.body.removeChild(Diuse_Text);
- };
- }, function () {
- if (confirm('下载' + list[0] + '失败,是否继续下载?')) {
- download1();
- }
- });
- }
- download1();
- }, function () {
- Diuse_Button = true;
- alert('本地资源不完整!请检查文件完整性。');
- });
-};
-
-shuYing.download_tianshu = function () {
- lib.init.js(url, 'files', function () {
- let list = Diuse_tianshu;
- let num = 0;
- let num1 = list.length;
- document.body.appendChild(Diuse_Text);
- let download1 = function () {
- game.download('http://diuse.hao1237.top/Diuse/image/tianshu/' + list[0], 'extension/术樱/' + list[0], function () {
- num++
- list.remove(list[0]);
- if (list.length > 0) {
- Diuse_Text.innerHTML = '正在下载(' + num + '/' + num1 + ')';
- download1();
- } else {
- Diuse_Text.innerHTML = '下载完毕';
- Diuse_Button = true;
- alert('天书皮肤下载完毕!');
- document.body.removeChild(Diuse_Text);
- };
- }, function () {
- if (confirm('下载' + list[0] + '失败,是否继续下载?')) {
- download1();
- }
- });
- }
- download1();
- }, function () {
- Diuse_Button = true;
- alert('本地资源不完整!请检查文件完整性。');
- });
-};
-
-shuYing.download_dynamic = function (dynamic_name) {
- if (lib.config.extension_术樱_Skin) {
- let url_files = dynamic_name.substring(0, dynamic_name.length - 4);
- skinList(url_files);
- } else {
- game.download('http://diuse.hao1237.top/Diuse/image/dynamic/' + dynamic_name, 'extension/术樱/' + dynamic_name, function () {
- Diuse_Button = true;
- alert('所选皮肤下载完毕!');
- }, function () {
- if (confirm('下载' + dynamic_name + '失败,是否继续下载?')) {
- download_dynamic(dynamic_name);
- }
- });
- }
-};
-
-shuYing.download_dynamic_all = function () {
- lib.init.js(url, 'files', function () {
- let list = Diuse_dynamic;
- let num = 0;
- let num1 = list.length;
- document.body.appendChild(Diuse_Text);
- let download1 = function () {
- game.download('http://diuse.hao1237.top/Diuse/image/dynamic/' + list[0], 'extension/术樱/' + list[0], function () {
- num++
- list.remove(list[0]);
- if (list.length > 0) {
- Diuse_Text.innerHTML = '正在下载(' + num + '/' + num1 + ')';
- download1();
- } else {
- Diuse_Text.innerHTML = '下载完毕';
- Diuse_Button = true;
- alert('动态皮肤下载完毕!');
- document.body.removeChild(Diuse_Text);
- };
- }, function () {
- if (confirm('下载' + list[0] + '失败,是否继续下载?')) {
- download1();
- }
- });
- }
- download1();
- }, function () {
- Diuse_Button = true;
- alert('本地资源不完整!请检查文件完整性。');
- });
-};
-
-shuYing.download_files_all = function () {
- lib.init.js(url, 'files', function () {
- let list = Diuse_dynamic;
- let num = 0;
- let num1 = list.length;
- document.body.appendChild(Diuse_Text);
- let download1 = function () {
- game.download('http://diuse.hao1237.top/Diuse/image/dynamic/' + list[0], 'extension/术樱/' + list[0], function () {
- num++
- list.remove(list[0]);
- if (list.length > 0) {
- Diuse_Text.innerHTML = '正在下载(' + num + '/' + num1 + ')';
- download1();
- } else {
- Diuse_Text.innerHTML = '下载完毕';
- Diuse_Button = true;
- alert('动态皮肤下载完毕!');
- document.body.removeChild(Diuse_Text);
- };
- }, function () {
- if (confirm('下载' + list[0] + '失败,是否继续下载?')) {
- download1();
- }
- });
- }
- download1();
- }, function () {
- Diuse_Button = true;
- alert('本地资源不完整!请检查文件完整性。');
- });
-};
-
-shuYing.skinList = function () {
- lib.init.js(url, 'files', function () {
- let num = 0;
- let skin_list = Skin;
- let skin_num;
- let file_url = 'image/skin/';
- let file_length = 0;
- document.body.appendChild(Diuse_Text);
- let down = function () {
- switch (skin_list[0]) {
- case 'Diuse_Fuhua': {
- skin_num = Diuse_Fuhua_Skin;
- break;
- }
- case 'Diuse_Bachongying': {
- skin_num = Diuse_Bachongying_Skin;
- break;
- }
- case 'Diuse_Buluoniya': {
- skin_num = Diuse_Buluoniya_Skin;
- break;
- }
- case 'Diuse_Kalian': {
- skin_num = Diuse_Kalian_Skin;
- break;
- }
- case 'Diuse_Shangxian': {
- skin_num = Diuse_Shangxian_Skin;
- break;
- }
- case 'Diuse_Shilv': {
- skin_num = Diuse_Shilv_Skin;
- break;
- }
- case 'Diuse_Xier': {
- skin_num = Diuse_Xier_Skin;
- break;
- }
- case 'Diuse_Yayi': {
- skin_num = Diuse_Yayi_Skin;
- break;
- }
- case 'Diuse_Yuexia': {
- skin_num = Diuse_Yuexia_Skin;
- break;
- }
- case 'Diuse_Konglv': {
- skin_num = Diuse_Konglv_Skin;
- break;
- }
- case 'Diuse_Heixi': {
- skin_num = Diuse_Heixi_Skin;
- break;
- }
- case 'Diuse_Bachongshenzi': {
- skin_num = Diuse_Bachongshenzi_Skin;
- break;
- }
- case 'Diuse_Keli': {
- skin_num = Diuse_Keli_Skin;
- break;
- }
- case 'Diuse_Shuangzi': {
- skin_num = Diuse_Shuangzi_Skin;
- break;
- }
- case 'Diuse_Lanmei': {
- skin_num = Diuse_Lanmei_Skin;
- break;
- }
- case 'Diuse_Yingtao': {
- skin_num = Diuse_Yingtao_Skin;
- break;
- }
- }
- url_Diuse_search = file_url + skin_list[0] + '/' + skin_num[0] + '.jpg';
- file_length += skin_list.length;
- game.readFile(url_Diuse_search, function () {
- num++;
- skin_num.remove(skin_num[0]);
- if (skin_list.length > 0 || skin_num.length > 0) {
- if (skin_num.length <= 0) skin_list.remove(skin_list[0]);
- Diuse_Text.innerHTML = '正在补充Skin(' + num + '/' + file_length + ')';
- down();
- } else {
- Diuse_Text.innerHTML = '补充完毕';
- Diuse_Button = true;
- alert('皮肤下载完毕!');
- document.body.removeChild(Diuse_Text);
- }
- }, function () {
- num++;
- skin_num.remove(skin_num[0]);
- if (skin_list.length > 0 || skin_num.length > 0) {
- if (skin_num.length <= 0) skin_list.remove(skin_list[0]);
- Diuse_Text.innerHTML = '正在补充Skin(' + num + '/' + file_length + ')';
- down();
- } else {
- Diuse_Text.innerHTML = '补充完毕';
- Diuse_Button = true;
- alert('皮肤下载完毕!');
- document.body.removeChild(Diuse_Text);
- };
- // game.download('https://diuse.coding.net/p/extension/d/noname_Skin/git/raw/master/Skin/'+skin_list[0]+'/'+skin_num[0]+'.jpg','image/skin/'+skin_list[0]+'/'+skin_num[0]+'.jpg',function(){
- // num++;
- // skin_num.remove(skin_num[0]);
- // if(skin_list.length>0||skin_num.length>0){
- // if(skin_num.length<=0) skin_list.remove(skin_list[0]);
- // Diuse_Text.innerHTML='正在补充Skin('+num+'/'+file_length+')';
- // down();
- // }else{
- // Diuse_Text.innerHTML='补充完毕';
- // Diuse_Button=true;
- // alert('皮肤下载完毕!');
- // document.body.removeChild(Diuse_Text);
- // };
- // },function(){
- // if(confirm('下载'+skin_list[0]+'失败,是否继续下载?')){
- // down();
- // }
- // });
- });
- }
- down();
- }, function () {
- Diuse_Button = true;
- alert('本地资源不完整!请检查文件完整性。');
- });
-};
-
//本地资源修复
shuYing.RepairBug = () => {
updater.repairCoreFiles(shuYing);
diff --git a/function.js b/function.js
index d6243e6..09d922b 100644
--- a/function.js
+++ b/function.js
@@ -223,4 +223,342 @@ export default function initFunction(lib, game, ui, get, ai, _status, shuYing =
renderGrid();
});
};
+
+ // 创建可复用的对局单选界面;单击选中卡片,确认后返回对应键值。
+ shuYing.chooseSingleOptionDialog = ({ title = "请选择", intro = "", options = [], defaultKey = null } = {}) => {
+ return new Promise(resolve => {
+ const items = options.map(option => typeof option == "string" ? { key: option, name: option } : option)
+ .filter(option => option?.key);
+ if (!items.length) {
+ resolve(null);
+ return;
+ }
+ const createNode = (tag, className, text, parent) => {
+ const node = document.createElement(tag);
+ if (className) node.className = className;
+ if (text !== undefined && text !== null) node.textContent = text;
+ if (parent) parent.appendChild(node);
+ return node;
+ };
+ const mask = createNode("div", "shuYing-option-dialog-mask", null, document.body);
+ const dialog = createNode("div", "shuYing-option-dialog", null, mask);
+ createNode("div", "shuYing-option-dialog-title", title, dialog);
+ if (intro) createNode("div", "shuYing-option-dialog-intro", intro, dialog);
+ const optionArea = createNode("div", "shuYing-option-dialog-options", null, dialog);
+ const controls = createNode("div", "shuYing-option-dialog-controls", null, dialog);
+ let closed = false;
+ let selectedKey = defaultKey && items.some(item => item.key == defaultKey) ? defaultKey : items[0].key;
+ const finish = key => {
+ if (closed) return;
+ closed = true;
+ mask.remove();
+ resolve(key);
+ };
+ const refreshSelection = () => {
+ optionArea.querySelectorAll(".shuYing-option-dialog-card").forEach(card => {
+ const selected = card.dataset.key == selectedKey;
+ card.classList.toggle("selected", selected);
+ card.setAttribute("aria-pressed", String(selected));
+ });
+ };
+ items.forEach((option, index) => {
+ const card = createNode("button", "shuYing-option-dialog-card", null, optionArea);
+ card.type = "button";
+ card.dataset.key = option.key;
+ card.dataset.tone = option.tone || option.key;
+ createNode("span", "shuYing-option-dialog-order", String(index + 1).padStart(2, "0"), card);
+ createNode("span", "shuYing-option-dialog-name", option.name || option.key, card);
+ if (option.tag) createNode("span", "shuYing-option-dialog-tag", option.tag, card);
+ if (option.description) createNode("span", "shuYing-option-dialog-description", option.description, card);
+ card.addEventListener("click", event => {
+ event.stopPropagation();
+ selectedKey = option.key;
+ refreshSelection();
+ });
+ });
+ const confirm = createNode("button", "shuYing-option-dialog-confirm", "确定", controls);
+ confirm.type = "button";
+ confirm.addEventListener("click", event => {
+ event.stopPropagation();
+ finish(selectedKey);
+ });
+ mask.addEventListener("click", event => event.stopPropagation());
+ dialog.addEventListener("click", event => event.stopPropagation());
+ refreshSelection();
+ const initial = Array.from(optionArea.querySelectorAll(".shuYing-option-dialog-card")).find(node => node.dataset.key == selectedKey)
+ || optionArea.querySelector(".shuYing-option-dialog-card");
+ initial?.focus({ preventScroll: true });
+ });
+ };
+
+ // 创建可复用的技能奖励选择界面;悬停预览,单击选中,确认后返回技能。
+ shuYing.chooseSkillRewardDialog = ({ title = "请选择技能", highlightText = "", choices = [], selectedSkills = [], bonds = [], player = null, canRefresh = false } = {}) => {
+ return new Promise(resolve => {
+ const skills = choices.filter(skill => typeof skill == "string" && skill);
+ if (!skills.length) {
+ resolve(null);
+ return;
+ }
+ const createNode = (tag, className, text, parent) => {
+ const node = document.createElement(tag);
+ if (className) node.className = className;
+ if (text !== undefined && text !== null) node.textContent = text;
+ if (parent) parent.appendChild(node);
+ return node;
+ };
+ const getSkillInfo = skill => {
+ if (typeof get.skillInfoTranslation == "function") {
+ const info = get.skillInfoTranslation(skill, player);
+ if (info) return info;
+ }
+ return lib.translate[`${skill}_info`] || "暂无技能描述";
+ };
+ const getPreviewSkills = previewSkill => Array.from(new Set(selectedSkills.concat(previewSkill || []).filter(Boolean)));
+ const getUniqueSkillNames = currentSkills => Array.from(new Set(
+ currentSkills.map(skill => lib.translate[skill]).filter(name => typeof name == "string" && name)
+ ));
+ const getCharacterNames = () => Array.from(new Set(
+ [player?.name, player?.name1, player?.name2]
+ .filter(name => typeof name == "string" && name)
+ .map(name => lib.translate[name] || get.translation(name))
+ .filter(name => typeof name == "string" && name)
+ ));
+ const getKeywordCount = (keyword, currentSkills) => {
+ const marker = `【${keyword}】`;
+ const matchedNames = new Set();
+ currentSkills.forEach(skill => {
+ if (getSkillInfo(skill).includes(marker)) matchedNames.add(lib.translate[skill] || skill);
+ });
+ return matchedNames.size;
+ };
+ const getLevelCondition = (bond, level) => {
+ const source = level?.condition || bond?.condition;
+ if (source) {
+ const condition = { ...source };
+ if (condition.count == null && level?.count != null) condition.count = level.count;
+ return condition;
+ }
+ return bond?.keyword ? { type: "keyword", keyword: bond.keyword, count: level?.count } : null;
+ };
+ const matchesCondition = (condition, currentSkills) => {
+ if (!condition || typeof condition != "object") return false;
+ if (!condition.type && Array.isArray(condition.all)) return condition.all.every(item => matchesCondition(item, currentSkills));
+ if (!condition.type && Array.isArray(condition.any)) return condition.any.some(item => matchesCondition(item, currentSkills));
+ if (!condition.type && condition.not) return !matchesCondition(condition.not, currentSkills);
+ if (condition.type == "keyword") return getKeywordCount(condition.keyword, currentSkills) >= Math.max(1, Number(condition.count) || 1);
+ if (condition.type == "skill") return currentSkills.includes(condition.skill);
+ if (condition.type == "skillName") return currentSkills.some(skill => lib.translate[skill] == condition.name);
+ if (condition.type == "skills") {
+ const all = Array.isArray(condition.all) ? condition.all : [];
+ const any = Array.isArray(condition.any) ? condition.any : [];
+ if (all.length && !all.every(skill => currentSkills.includes(skill))) return false;
+ if (any.length && !any.some(skill => currentSkills.includes(skill))) return false;
+ return Boolean(all.length || any.length);
+ }
+ if (condition.type == "skillNames") {
+ const names = new Set(getUniqueSkillNames(currentSkills));
+ const all = Array.from(new Set(Array.isArray(condition.all) ? condition.all.filter(Boolean) : []));
+ const any = Array.from(new Set(Array.isArray(condition.any) ? condition.any.filter(Boolean) : []));
+ if (all.length && !all.every(name => names.has(name))) return false;
+ const matchedAny = any.filter(name => names.has(name));
+ const need = Number(condition.count);
+ if (Number.isFinite(need) && need > 0) {
+ const matched = new Set(all.filter(name => names.has(name)).concat(matchedAny));
+ return matched.size >= Math.max(1, Math.floor(need));
+ }
+ if (any.length && !matchedAny.length) return false;
+ return Boolean(all.length || any.length);
+ }
+ if (condition.type == "characterSkillNames") {
+ const characters = Array.from(new Set((Array.isArray(condition.characters) ? condition.characters : [condition.character]).filter(Boolean)));
+ if (!characters.some(keyword => getCharacterNames().some(name => name.includes(keyword)))) return false;
+ const names = new Set(getUniqueSkillNames(currentSkills));
+ const all = Array.from(new Set(Array.isArray(condition.all) ? condition.all.filter(Boolean) : []));
+ const any = Array.from(new Set(Array.isArray(condition.any) ? condition.any.filter(Boolean) : []));
+ if (all.length && !all.every(name => names.has(name))) return false;
+ if (any.length && !any.some(name => names.has(name))) return false;
+ return Boolean(all.length || any.length);
+ }
+ return false;
+ };
+ const isConditionRelevant = (condition, currentSkills) => {
+ if (!condition || typeof condition != "object") return false;
+ if (!condition.type && Array.isArray(condition.all)) return condition.all.some(item => isConditionRelevant(item, currentSkills));
+ if (!condition.type && Array.isArray(condition.any)) return condition.any.some(item => isConditionRelevant(item, currentSkills));
+ if (!condition.type && condition.not) return false;
+ if (condition.type == "keyword") return getKeywordCount(condition.keyword, currentSkills) > 0;
+ if (condition.type == "skill") return currentSkills.includes(condition.skill);
+ if (condition.type == "skillName") return currentSkills.some(skill => lib.translate[skill] == condition.name);
+ if (condition.type == "skills") return [...(condition.all || []), ...(condition.any || [])].some(skill => currentSkills.includes(skill));
+ if (condition.type == "skillNames") {
+ const names = new Set(getUniqueSkillNames(currentSkills));
+ return [...(condition.all || []), ...(condition.any || [])].some(name => names.has(name));
+ }
+ if (condition.type == "characterSkillNames") {
+ const characters = Array.isArray(condition.characters) ? condition.characters : [condition.character];
+ return characters.some(keyword => getCharacterNames().some(name => name.includes(keyword)))
+ && [...(condition.all || []), ...(condition.any || [])].some(name => getUniqueSkillNames(currentSkills).includes(name));
+ }
+ return false;
+ };
+ const getConditionText = (condition, currentSkills) => {
+ if (!condition || typeof condition != "object") return "未配置激活条件";
+ if (!condition.type && Array.isArray(condition.all)) return condition.all.map(item => getConditionText(item, currentSkills)).join(";");
+ if (!condition.type && Array.isArray(condition.any)) return `满足任意一项:${condition.any.map(item => getConditionText(item, currentSkills)).join(";")}`;
+ if (!condition.type && condition.not) return `排除:${getConditionText(condition.not, currentSkills)}`;
+ if (condition.type == "keyword") {
+ const count = getKeywordCount(condition.keyword, currentSkills);
+ const need = Math.max(1, Number(condition.count) || 1);
+ return `包含【${condition.keyword}】的技能 ${Math.min(count, need)}/${need}`;
+ }
+ if (condition.type == "skill") return `${currentSkills.includes(condition.skill) ? "已" : "未"}选择【${get.translation(condition.skill)}】`;
+ if (condition.type == "skillName") return `${currentSkills.some(skill => lib.translate[skill] == condition.name) ? "已" : "未"}选择任意版本的【${condition.name}】`;
+ if (condition.type == "skills") {
+ const all = Array.isArray(condition.all) ? condition.all : [];
+ const any = Array.isArray(condition.any) ? condition.any : [];
+ if (all.length) return `指定技能 ${all.filter(skill => currentSkills.includes(skill)).length}/${all.length}`;
+ if (any.length) return `任选其一:${any.map(skill => `【${get.translation(skill)}】`).join("、")}`;
+ }
+ if (condition.type == "skillNames") {
+ const names = new Set(getUniqueSkillNames(currentSkills));
+ const all = Array.from(new Set(Array.isArray(condition.all) ? condition.all.filter(Boolean) : []));
+ const any = Array.from(new Set(Array.isArray(condition.any) ? condition.any.filter(Boolean) : []));
+ const candidates = Array.from(new Set(all.concat(any)));
+ const matched = candidates.filter(name => names.has(name)).length;
+ const need = Number(condition.count);
+ if (Number.isFinite(need) && need > 0) return `不同技能名称 ${Math.min(matched, Math.floor(need))}/${Math.floor(need)}`;
+ if (all.length) return `同名技能 ${all.filter(name => names.has(name)).length}/${all.length}`;
+ if (any.length) return `任选任意版本:${any.map(name => `【${name}】`).join("、")}`;
+ }
+ if (condition.type == "characterSkillNames") {
+ const characters = Array.from(new Set((Array.isArray(condition.characters) ? condition.characters : [condition.character]).filter(Boolean)));
+ const names = new Set(getUniqueSkillNames(currentSkills));
+ const all = Array.from(new Set(Array.isArray(condition.all) ? condition.all.filter(Boolean) : []));
+ const any = Array.from(new Set(Array.isArray(condition.any) ? condition.any.filter(Boolean) : []));
+ const characterReady = characters.some(keyword => getCharacterNames().some(name => name.includes(keyword)));
+ const skillText = all.length
+ ? `指定技能 ${all.filter(name => names.has(name)).length}/${all.length}`
+ : `任选技能:${any.map(name => `【${name}】`).join("、")}`;
+ return `${characterReady ? "武将名称已匹配" : `武将名称需包含【${characters.join("】或【")}】`};${skillText}`;
+ }
+ return "未配置激活条件";
+ };
+ const getLevelSkills = level => {
+ if (Array.isArray(level?.skills)) return level.skills.filter(Boolean);
+ return level?.skill ? [level.skill] : [];
+ };
+ const getLevelText = level => {
+ if (level?.text) return level.text;
+ const rewardSkills = getLevelSkills(level);
+ if (rewardSkills.length) return `获得技能【${rewardSkills.map(skill => get.translation(skill)).join("、")}】`;
+ return "羁绊效果待配置";
+ };
+
+ const mask = createNode("div", "shuYing-skill-reward-mask", null, document.body);
+ const dialog = createNode("div", "shuYing-skill-reward-dialog", null, mask);
+ const titleNode = createNode("div", "shuYing-skill-reward-title", null, dialog);
+ const highlightIndex = highlightText ? title.indexOf(highlightText) : -1;
+ if (highlightIndex < 0) titleNode.textContent = title;
+ else {
+ titleNode.append(document.createTextNode(title.slice(0, highlightIndex)));
+ createNode("span", "shuYing-skill-reward-title-character", highlightText, titleNode);
+ titleNode.append(document.createTextNode(title.slice(highlightIndex + highlightText.length)));
+ }
+ const content = createNode("div", "shuYing-skill-reward-content", null, dialog);
+ const preview = createNode("section", "shuYing-skill-reward-preview", null, content);
+ const previewName = createNode("div", "shuYing-skill-reward-name", "", preview);
+ const previewInfo = createNode("div", "shuYing-skill-reward-info", "", preview);
+ const bondPanel = createNode("aside", "shuYing-skill-reward-bonds", null, content);
+ createNode("div", "shuYing-skill-reward-bond-title", "羁绊", bondPanel);
+ const bondList = createNode("div", "shuYing-skill-reward-bond-list", null, bondPanel);
+ const choiceArea = createNode("div", "shuYing-skill-reward-choices", null, dialog);
+ const controls = createNode("div", "shuYing-skill-reward-controls", null, dialog);
+ let closed = false;
+ let previewSkill = skills[0];
+ let selectedSkill = skills[0];
+
+ const renderBonds = () => {
+ bondList.innerHTML = "";
+ if (!bonds.length) {
+ createNode("div", "shuYing-skill-reward-bond-empty", "暂无可激活羁绊", bondList);
+ return;
+ }
+ bonds.forEach(bond => {
+ const levels = (bond.levels || []).map((level, index) => ({
+ ...level,
+ rank: Number(level.level ?? level.count ?? index + 1) || index + 1,
+ })).sort((a, b) => a.rank - b.rank);
+ if (!levels.length) return;
+ const currentSkills = getPreviewSkills(previewSkill);
+ if (!levels.some(level => isConditionRelevant(getLevelCondition(bond, level), currentSkills))) return;
+ const reached = levels.filter(level => matchesCondition(getLevelCondition(bond, level), currentSkills));
+ const active = reached[reached.length - 1] || null;
+ const next = levels.find(level => level.rank > (active?.rank || 0)) || null;
+ const item = createNode("div", `shuYing-skill-reward-bond${active ? " active" : ""}`, null, bondList);
+ const head = createNode("div", "shuYing-skill-reward-bond-head", null, item);
+ createNode("span", "shuYing-skill-reward-bond-name", bond.name || (bond.keyword ? `【${bond.keyword}】羁绊` : bond.id || "未命名羁绊"), head);
+ createNode("span", "shuYing-skill-reward-bond-count", active ? `第${active.rank}级` : "待激活", head);
+ const status = active ? `已激活:${getLevelText(active)}` : getConditionText(getLevelCondition(bond, next), currentSkills);
+ createNode("div", "shuYing-skill-reward-bond-status", status, item);
+ if (next) {
+ createNode("div", "shuYing-skill-reward-bond-effect", `下一阶段:${getLevelText(next)}`, item);
+ if (active) createNode("div", "shuYing-skill-reward-bond-effect", getConditionText(getLevelCondition(bond, next), currentSkills), item);
+ }
+ });
+ if (!bondList.childNodes.length) createNode("div", "shuYing-skill-reward-bond-empty", "该技能暂无相关羁绊", bondList);
+ };
+
+ const renderPreview = skill => {
+ previewSkill = skill;
+ previewName.textContent = `【${get.translation(skill)}】`;
+ previewInfo.innerHTML = getSkillInfo(skill);
+ choiceArea.querySelectorAll(".shuYing-skill-reward-choice").forEach(node => {
+ node.classList.toggle("previewing", node.dataset.skill == skill);
+ node.classList.toggle("selected", node.dataset.skill == selectedSkill);
+ node.setAttribute("aria-pressed", String(node.dataset.skill == selectedSkill));
+ });
+ renderBonds();
+ };
+ const finish = skill => {
+ if (closed) return;
+ closed = true;
+ mask.remove();
+ resolve(skill);
+ };
+
+ skills.forEach(skill => {
+ const button = createNode("button", "shuYing-skill-reward-choice", get.translation(skill), choiceArea);
+ button.type = "button";
+ button.dataset.skill = skill;
+ button.addEventListener("mouseenter", () => renderPreview(skill));
+ button.addEventListener("focus", () => renderPreview(skill));
+ button.addEventListener("click", event => {
+ event.stopPropagation();
+ selectedSkill = skill;
+ renderPreview(skill);
+ });
+ });
+ const confirm = createNode("button", "shuYing-skill-reward-confirm", "确定", controls);
+ confirm.type = "button";
+ confirm.addEventListener("click", event => {
+ event.stopPropagation();
+ finish(selectedSkill);
+ });
+ if (canRefresh) {
+ const handCount = player?.countCards?.("h") || 0;
+ const discardCount = Math.ceil(handCount / 2);
+ const refresh = createNode("button", "shuYing-skill-reward-refresh", `刷新(弃${discardCount}张)`, controls);
+ refresh.type = "button";
+ refresh.title = "随机弃置一半手牌(向上取整),重新生成技能选项;本次只能使用一次";
+ refresh.addEventListener("click", event => {
+ event.stopPropagation();
+ finish({ refresh: true });
+ });
+ }
+ mask.addEventListener("click", event => event.stopPropagation());
+ dialog.addEventListener("click", event => event.stopPropagation());
+ renderPreview(previewSkill);
+ choiceArea.querySelector(".shuYing-skill-reward-choice")?.focus({ preventScroll: true });
+ });
+ };
}
diff --git a/menu.js b/menu.js
index 41dd449..13a3fd4 100644
--- a/menu.js
+++ b/menu.js
@@ -1,28 +1,198 @@
+import tianshuConfig from "./tianshu/config.js";
+
export default function initShuYingMenu({ lib, game, ui, shuYing, updater }) {
const menu = lib.extensionMenu.extension_术樱包;
- const createCollapseMenu = (title, endId) => ({
- name: `
=)=^eru06opi23%8lbXamGaEI%=p*$j!55)$f
z3V@NC*j@;+Q#(jBR~I+)SloFz-tFV4o#cme!zakzT|}Cr7tzH35a&UsaSs_j1f|aB
z)8*uM^x-S& `bFOFf
zxg0;?Q6xQh!WH>V71k zRWHiqDK
zNIa!3=d|&%(*#QO=U9FwmM6QBN0H3EcKE8Jp<8L+y&^@7`^%cXxvM@cB!7|$p>V(u
z>l39^WsHEYrRW2gU7SU2Xzi>Ua;E8Sp8jez_bpNtr(`GQZu1)(2fYYD%5q%jBjQ#!
zvwmCI7-9i-`@t-3?TTGsxd-!{8ywey4C61a&)Z_TZmdpgnD W-~>3YrRq@;}v9ftG;0TJ`PTV6zr>Izsen5i5`2HMxhxWI+MWwJhv?)@lzTgtRes
zv~#mApHdj9r4}p$fu1>GP+eVBxXf1R(+Ebw JenVr2gNbWjJW^q5Zq+VdFJI`1DQa14dIr%vt!_f9DulP5e$7X19z%>UrbR
zZaY#sarG&mf4#=@f55;6cfSLMiBU=}$Sahz98EVG%OHZ^y;d!iRMx!BSLU1D!(GOd
z7)-umdds4OBlg%<&NA+r=qHPZyrv{{ 7xy4Mcs{nub&m!xI
zoKGzVw=nT|Sh^j6&GEsZnnC^e6xL)Kj@D^EnEIjQ+@*ZDmNA6}0&UMZK(=%H8N{Al
z&xoSmX2T?Jwt6))qjj{9lNO)CGnWpjT$i*HsKf0FluI=a)o=Jt_-;uN95hsIm=C>1
zGOE0FR)5xg*m`H|t?`7BSGjQ9C#F=c;oma?0ueLl@s&-D%KdF3)>{IZL!r2z<+h+T
zL*9^diK9n-vd^anwI eRtTo4a$2-PYx%yE&2ms}OCi;#?A_05T_YRw$
zD+vGqfM5um8J&Z&8%^WHi($uDUodyJ!|_vj$^*K
zWqVgX_?4!iuePJfX@FDAj5xEYCV*na`7NNjulO~+vc=LokyI{~MTvCA4}EwKi*y6P
zKN_i$fwjzVj$|(%)gs%r1xYk(xX4zoxQXTP<3En`n$$nSeBxuvKRhqCmTwDHauca~
zgl|8@d?s_>Z}y|$8d1JJZ=X?G1|3(XPqpD^V=EE7hD)(lOh
&zgWidie<7_E_p_
z{Jo4<=E119P?+k(E>wMhY>h*_$K=?Pcb1*w{-~1eP^O^&3Bn}+#Xtn4;H*A{sks1c
z{Ggq-RPNs@I}n#VI7sqkSknLRA%t8vNR5wowdlRoHp%C>2q`
zjGJj8*c!IDH*AQVS|r?OnN;M_p7WOTx&*Dl?M?;FZKgis$Wb85y_v&NEz&7TgM$D_
zsMIJgGTgK@PEXpd2vL7LJr|S6N`dNJHz9XMzsW}dM?Upcij3FCI!ujnu+
VxX50)jNy6KpGw)|+*pP!2wbR4H!w+?{$asL=e
zNuX9C>8=xI65?+c_#?DE0qka%>Z1knGY2E1f6^W^trSm(g
zkA+Jiw#9Kp4FVmQKF*4qvX5=@xXjufiG|w~u~`@xwI&qUqf)PhfbX0edS_a(7j@os
z-kys3+56hxQd9pycCGyc;U*B(IUba#f!I@R=NB5;#nNai1V+>G2WLhH-j4=+sahjz
zoUgc7O;-T&MA!>j`rN-F3%Q8z
UN4ukDjzF_sbz26w0Fa-7NMx3&@is=Q$t3leR}*?EWBI
zPF9n?F6v(}R+yP?DJ+gF{#pSug8Qe9UAjhQkwdqn$MmFcE=#rjxLZob(!xAIVi9`6
zh#>F@iXj%-aF3wF4nctr@zU4tI#bCu>PIKdT%zf-;RY6-Of!*D?jgz|fj1rd{Enzp
zVenP&Gc8vWzs?dMq&pNxQ>v#6w(JBmGM*G_+@4gF6KulDn939G^&KC}G5mUe=ShT}
zpx&A0I#pa#*0!41>1S{eeEjpKbID{|VB9woL^Wchr^3G%M{UTO1d|L)>PVK=_*2X7
z4r7{nZLh>kywfdZa4HNVcjW7j^Xl`SzbV+6zehm3Vay+8{$2yGaF!*Fn2G}rtRky^
zBkl7QHDw2e18b`>!a7OW9~D*}x5B33ZME1?nUrGMzPCwarlz0)1pm5ZOA%uxKp^|H
zEr<%i`G;I3V9$l?$t#mwSpz%>BARxY_TfcSoFVvatIvuY21nC^9yyjQowl@$H44m8
zHZtcOzZK(38QmO+l9q*Qz&*ylA}r=f4I7F`pO2O1UswK%_iGisoPU0K1(AP*^|y-p
z5VHz;L4pI)AjA7>aLDhkEIsISLcOPzQw~)V8QB+hQjYCegkEu94);6RjKLWQ6qV$^
z9l-y+aRD%e?p4bQoPxl_$Ibn5e1bymOH67c8;6Q+yh}3FA{eLffp1RDy9L9|B|XyY
z>4<9u+2V$mnJ~xE