From bc13f9b0098c6dfa58bbf018bf6948e4591ac4f7 Mon Sep 17 00:00:00 2001 From: make Date: Tue, 25 Mar 2025 17:45:16 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=B0=8F=E8=AF=B4?= =?UTF-8?q?=E6=A8=A1=E6=9D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- code/app/home/config/router.php | 220 + code/app/home/controller/Index.php | 292 +- code/app/home/controller/Novel.php | 404 ++ code/app/home/controller/User.php | 300 ++ code/app/home/view/default/Index/index.html | 5 +- code/app/home/view/kuangyu/Index/index.html | 133 + .../home/view/kuangyu/Novel/getBoyNovel.html | 45 + .../home/view/kuangyu/Novel/getLibrary.html | 79 + .../view/kuangyu/Novel/getNovelChapter.html | 253 + .../home/view/kuangyu/Novel/getNovelInfo.html | 209 + .../home/view/kuangyu/Novel/getNovelRank.html | 129 + .../view/kuangyu/Novel/getSearchNovel.html | 72 + .../home/view/kuangyu/Novel/getSeoInfo.html | 29 + .../home/view/kuangyu/Novel/getSeoList.html | 45 + .../home/view/kuangyu/Pc/Public/adBanner.html | 11 + .../kuangyu/Pc/Public/chapterTableAll.html | 6 + .../view/kuangyu/Pc/Public/endNovelList.html | 11 + .../home/view/kuangyu/Pc/Public/footer.html | 22 + .../kuangyu/Pc/Public/historyNovelList.html | 23 + .../view/kuangyu/Pc/Public/hostListImg.html | 15 + .../view/kuangyu/Pc/Public/hostListText.html | 3 + .../kuangyu/Pc/Public/indexBoyNewsList.html | 17 + .../kuangyu/Pc/Public/indexBoyNewsOne.html | 44 + .../kuangyu/Pc/Public/indexBoyRankList.html | 16 + .../kuangyu/Pc/Public/indexBoyRankOne.html | 26 + .../Pc/Public/indexNewsUpdateList.html | 12 + .../kuangyu/Pc/Public/shukuNovelList.html | 32 + .../view/kuangyu/Pc/Public/swiperListImg.html | 7 + .../kuangyu/Pc/Public/swiperListText.html | 6 + .../view/kuangyu/Pc/User/getBookShelf.html | 42 + .../home/view/kuangyu/Pc/User/getHistory.html | 42 + code/app/home/view/kuangyu/Pc/User/index.html | 143 + .../home/view/kuangyu/Pc/getBookShelf.html | 39 + .../app/home/view/kuangyu/Pc/getBoyNovel.html | 81 + code/app/home/view/kuangyu/Pc/getLibrary.html | 111 + .../home/view/kuangyu/Pc/getNovelChapter.html | 411 ++ .../view/kuangyu/Pc/getNovelChapterAll.html | 28 + .../home/view/kuangyu/Pc/getNovelInfo.html | 186 + .../home/view/kuangyu/Pc/getNovelRank.html | 165 + .../home/view/kuangyu/Pc/getSearchNovel.html | 68 + code/app/home/view/kuangyu/Pc/getSeoInfo.html | 29 + code/app/home/view/kuangyu/Pc/getSeoList.html | 89 + .../home/view/kuangyu/Pc/getUserIndex.html | 143 + code/app/home/view/kuangyu/Pc/index.html | 255 + .../view/kuangyu/Public/chapterTable.html | 3 + .../view/kuangyu/Public/chapterTableAll.html | 12 + code/app/home/view/kuangyu/Public/footer.html | 26 + .../view/kuangyu/Public/historyNovelList.html | 19 + .../home/view/kuangyu/Public/novelListH.html | 19 + .../view/kuangyu/Public/novelListRank.html | 5 + .../home/view/kuangyu/Public/novelListS.html | 10 + .../home/view/kuangyu/User/getBookShelf.html | 30 + .../home/view/kuangyu/User/getHistory.html | 30 + code/app/home/view/kuangyu/User/index.html | 60 + code/app/home/view/kuangyu/baseH5.html | 107 + code/app/home/view/kuangyu/baseH5User.html | 50 + code/app/home/view/kuangyu/basePc.html | 78 + code/app/home/view/kuangyu/basePcUser.html | 131 + code/app/model/AutoSwitchViewModel.php | 2 + code/config/app.php | 1 + code/public/public/jquery/jquery-3.7.1.min.js | 4146 +++++++++++++++++ code/public/public/layer/layer-bf.js | 167 + code/public/public/layer/layer.css | 355 ++ code/public/public/layer/layer.js | 101 + code/public/public/layer/layer.min.js | 2 + code/public/public/layer/need/layer.css | 1 + code/public/public/layer/教程.md | 5 + .../public/lazyload/jquery.lazyload.min.js | 2 + code/public/public/swiper/swiper-4.5.3.min.js | 13 + code/public/public/swiper/swiper.min.css | 12 + .../template/kuangyu/comment/js/comment.js | 93 + .../template/kuangyu/comment/style/style.css | 130 + .../kuangyu/home/bai_web/css/style.css | 561 +++ .../kuangyu/home/bai_web/images/1120x100.png | Bin 0 -> 46989 bytes .../kuangyu/home/bai_web/images/default.png | Bin 0 -> 4274 bytes .../kuangyu/home/bai_web/images/foot_line.jpg | Bin 0 -> 1204 bytes .../kuangyu/home/bai_web/images/gotop.png | Bin 0 -> 2601 bytes .../kuangyu/home/bai_web/images/grey.gif | Bin 0 -> 43 bytes .../kuangyu/home/bai_web/images/iconC.png | Bin 0 -> 7076 bytes .../kuangyu/home/bai_web/images/pdIcon.png | Bin 0 -> 27990 bytes .../kuangyu/home/bai_web/images/sj_icon.png | Bin 0 -> 6163 bytes .../kuangyu/home/bai_web/images/wanjie.png | 13 + .../kuangyu/home/bai_web/js/global.js | 213 + .../kuangyu/home/new_wap/css/style.css | 2496 ++++++++++ .../kuangyu/home/new_wap/images/bookcase.png | Bin 0 -> 2589 bytes .../home/new_wap/images/hasreading.png | Bin 0 -> 2884 bytes .../home/new_wap/images/icon-search.png | Bin 0 -> 2628 bytes .../kuangyu/home/new_wap/images/ranking.png | Bin 0 -> 2680 bytes .../kuangyu/home/new_wap/images/user.png | Bin 0 -> 2083 bytes .../kuangyu/home/new_wap/js/global.js | 71 + .../template/kuangyu/home/new_wap/js/home.js | 76 + .../template/kuangyu/public/js/common.js | 293 ++ .../template/kuangyu/reader/wap/css/style.css | 1101 +++++ .../reader/wap/images/skin-default-b.jpg | Bin 0 -> 5257 bytes .../reader/wap/images/skin-default-m.jpg | Bin 0 -> 9937 bytes .../reader/wap/images/skin-default-s.png | Bin 0 -> 3287 bytes .../reader/wap/images/skin-default-t.jpg | Bin 0 -> 6045 bytes .../template/kuangyu/reader/wap/js/global.js | 636 +++ .../template/kuangyu/reader/wap/js/reader.js | 1092 +++++ .../kuangyu/reader/wap/js/zepto.min.js | 2 + .../reader/web/css/fonts/qd_iconfont.ttf | Bin 0 -> 50220 bytes .../reader/web/css/fonts/qd_iconfont.woff | Bin 0 -> 30972 bytes .../template/kuangyu/reader/web/css/style.css | 1471 ++++++ .../reader/web/images/base_theme_popup.png | Bin 0 -> 713 bytes .../kuangyu/reader/web/images/basic_bg.png | Bin 0 -> 559 bytes .../reader/web/images/body_base_bg.png | Bin 0 -> 749 bytes .../kuangyu/reader/web/images/user-icon.png | Bin 0 -> 1689 bytes .../template/kuangyu/reader/web/js/global.js | 964 ++++ .../template/kuangyu/user/wap/css/style.css | 954 ++++ .../kuangyu/user/wap/font/iconfont.eot | Bin 0 -> 7168 bytes .../kuangyu/user/wap/font/iconfont.svg | 77 + .../kuangyu/user/wap/font/iconfont.ttf | Bin 0 -> 7000 bytes .../kuangyu/user/wap/font/iconfont.woff | Bin 0 -> 4576 bytes .../kuangyu/user/wap/images/bookMore_ico1.png | Bin 0 -> 1063 bytes .../kuangyu/user/wap/images/book_ico1.png | Bin 0 -> 1864 bytes .../kuangyu/user/wap/images/edit02.png | Bin 0 -> 1505 bytes .../kuangyu/user/wap/images/email.png | Bin 0 -> 528 bytes .../kuangyu/user/wap/images/headerBorder.png | Bin 0 -> 3764 bytes .../kuangyu/user/wap/images/laji_ico.png | Bin 0 -> 1131 bytes .../kuangyu/user/wap/images/leftRedJ.png | Bin 0 -> 1109 bytes .../kuangyu/user/wap/images/lockIco.png | Bin 0 -> 1389 bytes .../kuangyu/user/wap/images/passIco.png | Bin 0 -> 1328 bytes .../kuangyu/user/wap/images/point.jpg | Bin 0 -> 1336 bytes .../kuangyu/user/wap/images/shujiaEmpty.png | Bin 0 -> 3969 bytes .../kuangyu/user/wap/images/timeJt.png | Bin 0 -> 1144 bytes .../kuangyu/user/wap/images/tp_02.png | Bin 0 -> 4048 bytes .../kuangyu/user/wap/images/tp_03.png | Bin 0 -> 4356 bytes .../kuangyu/user/wap/images/tp_04.png | Bin 0 -> 4294 bytes .../template/kuangyu/user/wap/images/tp_1.png | Bin 0 -> 4235 bytes .../kuangyu/user/wap/images/tp_close.png | Bin 0 -> 1201 bytes .../kuangyu/user/wap/images/user-bg.png | Bin 0 -> 55571 bytes .../kuangyu/user/wap/images/user-icon.png | Bin 0 -> 1689 bytes .../kuangyu/user/wap/images/userIco.png | Bin 0 -> 1612 bytes .../kuangyu/user/wap/images/userlogin.png | Bin 0 -> 2208 bytes .../kuangyu/user/wap/js/flexible.min.js | 1 + .../template/kuangyu/user/wap/js/user.js | 99 + .../template/kuangyu/user/web/css/user.css | 2391 ++++++++++ .../kuangyu/user/web/font/iconfont.eot | Bin 0 -> 7168 bytes .../kuangyu/user/web/font/iconfont.svg | 77 + .../kuangyu/user/web/font/iconfont.ttf | Bin 0 -> 7000 bytes .../kuangyu/user/web/font/iconfont.woff | Bin 0 -> 4576 bytes .../kuangyu/user/web/images/loginBg.jpg | Bin 0 -> 55110 bytes .../kuangyu/user/web/images/sprite.png | Bin 0 -> 10485 bytes .../kuangyu/user/web/images/user-bg.png | Bin 0 -> 24720 bytes .../kuangyu/user/web/images/user-bg2.png | Bin 0 -> 15803 bytes .../kuangyu/user/web/images/user-icon.png | Bin 0 -> 1689 bytes .../kuangyu/user/web/js/jquery.SuperSlide.js | 608 +++ .../template/kuangyu/user/web/js/user.js | 46 + 148 files changed, 23147 insertions(+), 3 deletions(-) create mode 100644 code/app/home/config/router.php create mode 100644 code/app/home/controller/User.php create mode 100644 code/app/home/view/kuangyu/Index/index.html create mode 100644 code/app/home/view/kuangyu/Novel/getBoyNovel.html create mode 100644 code/app/home/view/kuangyu/Novel/getLibrary.html create mode 100644 code/app/home/view/kuangyu/Novel/getNovelChapter.html create mode 100644 code/app/home/view/kuangyu/Novel/getNovelInfo.html create mode 100644 code/app/home/view/kuangyu/Novel/getNovelRank.html create mode 100644 code/app/home/view/kuangyu/Novel/getSearchNovel.html create mode 100644 code/app/home/view/kuangyu/Novel/getSeoInfo.html create mode 100644 code/app/home/view/kuangyu/Novel/getSeoList.html create mode 100644 code/app/home/view/kuangyu/Pc/Public/adBanner.html create mode 100644 code/app/home/view/kuangyu/Pc/Public/chapterTableAll.html create mode 100644 code/app/home/view/kuangyu/Pc/Public/endNovelList.html create mode 100644 code/app/home/view/kuangyu/Pc/Public/footer.html create mode 100644 code/app/home/view/kuangyu/Pc/Public/historyNovelList.html create mode 100644 code/app/home/view/kuangyu/Pc/Public/hostListImg.html create mode 100644 code/app/home/view/kuangyu/Pc/Public/hostListText.html create mode 100644 code/app/home/view/kuangyu/Pc/Public/indexBoyNewsList.html create mode 100644 code/app/home/view/kuangyu/Pc/Public/indexBoyNewsOne.html create mode 100644 code/app/home/view/kuangyu/Pc/Public/indexBoyRankList.html create mode 100644 code/app/home/view/kuangyu/Pc/Public/indexBoyRankOne.html create mode 100644 code/app/home/view/kuangyu/Pc/Public/indexNewsUpdateList.html create mode 100644 code/app/home/view/kuangyu/Pc/Public/shukuNovelList.html create mode 100644 code/app/home/view/kuangyu/Pc/Public/swiperListImg.html create mode 100644 code/app/home/view/kuangyu/Pc/Public/swiperListText.html create mode 100644 code/app/home/view/kuangyu/Pc/User/getBookShelf.html create mode 100644 code/app/home/view/kuangyu/Pc/User/getHistory.html create mode 100644 code/app/home/view/kuangyu/Pc/User/index.html create mode 100644 code/app/home/view/kuangyu/Pc/getBookShelf.html create mode 100644 code/app/home/view/kuangyu/Pc/getBoyNovel.html create mode 100644 code/app/home/view/kuangyu/Pc/getLibrary.html create mode 100644 code/app/home/view/kuangyu/Pc/getNovelChapter.html create mode 100644 code/app/home/view/kuangyu/Pc/getNovelChapterAll.html create mode 100644 code/app/home/view/kuangyu/Pc/getNovelInfo.html create mode 100644 code/app/home/view/kuangyu/Pc/getNovelRank.html create mode 100644 code/app/home/view/kuangyu/Pc/getSearchNovel.html create mode 100644 code/app/home/view/kuangyu/Pc/getSeoInfo.html create mode 100644 code/app/home/view/kuangyu/Pc/getSeoList.html create mode 100644 code/app/home/view/kuangyu/Pc/getUserIndex.html create mode 100644 code/app/home/view/kuangyu/Pc/index.html create mode 100644 code/app/home/view/kuangyu/Public/chapterTable.html create mode 100644 code/app/home/view/kuangyu/Public/chapterTableAll.html create mode 100644 code/app/home/view/kuangyu/Public/footer.html create mode 100644 code/app/home/view/kuangyu/Public/historyNovelList.html create mode 100644 code/app/home/view/kuangyu/Public/novelListH.html create mode 100644 code/app/home/view/kuangyu/Public/novelListRank.html create mode 100644 code/app/home/view/kuangyu/Public/novelListS.html create mode 100644 code/app/home/view/kuangyu/User/getBookShelf.html create mode 100644 code/app/home/view/kuangyu/User/getHistory.html create mode 100644 code/app/home/view/kuangyu/User/index.html create mode 100644 code/app/home/view/kuangyu/baseH5.html create mode 100644 code/app/home/view/kuangyu/baseH5User.html create mode 100644 code/app/home/view/kuangyu/basePc.html create mode 100644 code/app/home/view/kuangyu/basePcUser.html create mode 100644 code/public/public/jquery/jquery-3.7.1.min.js create mode 100644 code/public/public/layer/layer-bf.js create mode 100644 code/public/public/layer/layer.css create mode 100644 code/public/public/layer/layer.js create mode 100644 code/public/public/layer/layer.min.js create mode 100644 code/public/public/layer/need/layer.css create mode 100644 code/public/public/layer/教程.md create mode 100644 code/public/public/lazyload/jquery.lazyload.min.js create mode 100644 code/public/public/swiper/swiper-4.5.3.min.js create mode 100644 code/public/public/swiper/swiper.min.css create mode 100644 code/public/template/kuangyu/comment/js/comment.js create mode 100644 code/public/template/kuangyu/comment/style/style.css create mode 100644 code/public/template/kuangyu/home/bai_web/css/style.css create mode 100644 code/public/template/kuangyu/home/bai_web/images/1120x100.png create mode 100644 code/public/template/kuangyu/home/bai_web/images/default.png create mode 100644 code/public/template/kuangyu/home/bai_web/images/foot_line.jpg create mode 100644 code/public/template/kuangyu/home/bai_web/images/gotop.png create mode 100644 code/public/template/kuangyu/home/bai_web/images/grey.gif create mode 100644 code/public/template/kuangyu/home/bai_web/images/iconC.png create mode 100644 code/public/template/kuangyu/home/bai_web/images/pdIcon.png create mode 100644 code/public/template/kuangyu/home/bai_web/images/sj_icon.png create mode 100644 code/public/template/kuangyu/home/bai_web/images/wanjie.png create mode 100644 code/public/template/kuangyu/home/bai_web/js/global.js create mode 100644 code/public/template/kuangyu/home/new_wap/css/style.css create mode 100644 code/public/template/kuangyu/home/new_wap/images/bookcase.png create mode 100644 code/public/template/kuangyu/home/new_wap/images/hasreading.png create mode 100644 code/public/template/kuangyu/home/new_wap/images/icon-search.png create mode 100644 code/public/template/kuangyu/home/new_wap/images/ranking.png create mode 100644 code/public/template/kuangyu/home/new_wap/images/user.png create mode 100644 code/public/template/kuangyu/home/new_wap/js/global.js create mode 100644 code/public/template/kuangyu/home/new_wap/js/home.js create mode 100644 code/public/template/kuangyu/public/js/common.js create mode 100644 code/public/template/kuangyu/reader/wap/css/style.css create mode 100644 code/public/template/kuangyu/reader/wap/images/skin-default-b.jpg create mode 100644 code/public/template/kuangyu/reader/wap/images/skin-default-m.jpg create mode 100644 code/public/template/kuangyu/reader/wap/images/skin-default-s.png create mode 100644 code/public/template/kuangyu/reader/wap/images/skin-default-t.jpg create mode 100644 code/public/template/kuangyu/reader/wap/js/global.js create mode 100644 code/public/template/kuangyu/reader/wap/js/reader.js create mode 100644 code/public/template/kuangyu/reader/wap/js/zepto.min.js create mode 100644 code/public/template/kuangyu/reader/web/css/fonts/qd_iconfont.ttf create mode 100644 code/public/template/kuangyu/reader/web/css/fonts/qd_iconfont.woff create mode 100644 code/public/template/kuangyu/reader/web/css/style.css create mode 100644 code/public/template/kuangyu/reader/web/images/base_theme_popup.png create mode 100644 code/public/template/kuangyu/reader/web/images/basic_bg.png create mode 100644 code/public/template/kuangyu/reader/web/images/body_base_bg.png create mode 100644 code/public/template/kuangyu/reader/web/images/user-icon.png create mode 100644 code/public/template/kuangyu/reader/web/js/global.js create mode 100644 code/public/template/kuangyu/user/wap/css/style.css create mode 100644 code/public/template/kuangyu/user/wap/font/iconfont.eot create mode 100644 code/public/template/kuangyu/user/wap/font/iconfont.svg create mode 100644 code/public/template/kuangyu/user/wap/font/iconfont.ttf create mode 100644 code/public/template/kuangyu/user/wap/font/iconfont.woff create mode 100644 code/public/template/kuangyu/user/wap/images/bookMore_ico1.png create mode 100644 code/public/template/kuangyu/user/wap/images/book_ico1.png create mode 100644 code/public/template/kuangyu/user/wap/images/edit02.png create mode 100644 code/public/template/kuangyu/user/wap/images/email.png create mode 100644 code/public/template/kuangyu/user/wap/images/headerBorder.png create mode 100644 code/public/template/kuangyu/user/wap/images/laji_ico.png create mode 100644 code/public/template/kuangyu/user/wap/images/leftRedJ.png create mode 100644 code/public/template/kuangyu/user/wap/images/lockIco.png create mode 100644 code/public/template/kuangyu/user/wap/images/passIco.png create mode 100644 code/public/template/kuangyu/user/wap/images/point.jpg create mode 100644 code/public/template/kuangyu/user/wap/images/shujiaEmpty.png create mode 100644 code/public/template/kuangyu/user/wap/images/timeJt.png create mode 100644 code/public/template/kuangyu/user/wap/images/tp_02.png create mode 100644 code/public/template/kuangyu/user/wap/images/tp_03.png create mode 100644 code/public/template/kuangyu/user/wap/images/tp_04.png create mode 100644 code/public/template/kuangyu/user/wap/images/tp_1.png create mode 100644 code/public/template/kuangyu/user/wap/images/tp_close.png create mode 100644 code/public/template/kuangyu/user/wap/images/user-bg.png create mode 100644 code/public/template/kuangyu/user/wap/images/user-icon.png create mode 100644 code/public/template/kuangyu/user/wap/images/userIco.png create mode 100644 code/public/template/kuangyu/user/wap/images/userlogin.png create mode 100644 code/public/template/kuangyu/user/wap/js/flexible.min.js create mode 100644 code/public/template/kuangyu/user/wap/js/user.js create mode 100644 code/public/template/kuangyu/user/web/css/user.css create mode 100644 code/public/template/kuangyu/user/web/font/iconfont.eot create mode 100644 code/public/template/kuangyu/user/web/font/iconfont.svg create mode 100644 code/public/template/kuangyu/user/web/font/iconfont.ttf create mode 100644 code/public/template/kuangyu/user/web/font/iconfont.woff create mode 100644 code/public/template/kuangyu/user/web/images/loginBg.jpg create mode 100644 code/public/template/kuangyu/user/web/images/sprite.png create mode 100644 code/public/template/kuangyu/user/web/images/user-bg.png create mode 100644 code/public/template/kuangyu/user/web/images/user-bg2.png create mode 100644 code/public/template/kuangyu/user/web/images/user-icon.png create mode 100644 code/public/template/kuangyu/user/web/js/jquery.SuperSlide.js create mode 100644 code/public/template/kuangyu/user/web/js/user.js diff --git a/code/app/home/config/router.php b/code/app/home/config/router.php new file mode 100644 index 0000000..ab6dec0 --- /dev/null +++ b/code/app/home/config/router.php @@ -0,0 +1,220 @@ +append(['boolIsMobile' => true]); +// Route::alias("/pc/index.html", "/")->append(['boolIsMobile' => false]); + +Route::rule("/",'Index/index')->ext('html')->append(['boolIsMobile' => true]); +Route::rule("/index",'Index/index')->ext('html')->append(['boolIsMobile' => true]); +Route::rule("/pc/index",'Index/getPcIndex')->ext('html')->append(['boolIsMobile' => false]); + +// 男生/女生 +Route::rule('boy', 'Novel/getBoyNovel')->ext('html')->append(['boolIsMobile' => true,'strChannel'=>'boy']); +Route::rule('pc/boy', 'Novel/getBoyNovel')->ext('html')->append(['boolIsMobile' => false,'strChannel'=>'boy']); +Route::rule('girl', 'Novel/getBoyNovel')->ext('html')->append(['boolIsMobile' => true,'strChannel'=>'girl']); +Route::rule('pc/girl', 'Novel/getBoyNovel')->ext('html')->append(['boolIsMobile' => false,'strChannel'=>'girl']); + + +//排行榜 +Route::rule('rank', 'Novel/getNovelRank')->ext('html')->append(['boolIsMobile' => true]); +Route::rule("/pc/rank",'Novel/getNovelRank')->ext('html')->append(['boolIsMobile' => false]); + +// 书库 +Route::rule('shuku', 'Novel/getLibrary')->ext('html')->append(['boolIsMobile' => true]); +Route::rule('pc/shuku', 'Novel/getLibrary')->ext('html')->append(['boolIsMobile' => false]); + +// 深度SEO +Route::rule('seo/list', 'Novel/getSeoList')->ext('html')->append(['boolIsMobile' => true]); +Route::rule('pc/seo/list', 'Novel/getSeoList')->ext('html')->append(['boolIsMobile' => false]); +Route::rule('seo/info', 'Novel/getSeoInfo')->ext('html')->append(['boolIsMobile' => true]); +Route::rule('pc/seo/info', 'Novel/getSeoInfo')->ext('html')->append(['boolIsMobile' => false]); + + +// 小说详情 +Route::rule('info', 'Novel/getNovelInfo')->ext('html')->append(['boolIsMobile' => true]); +Route::rule('pc/info', 'Novel/getNovelInfo')->ext('html')->append(['boolIsMobile' => false]); + +// 小说章节 +Route::rule('chapter', 'Novel/getNovelChapter')->ext('html')->append(['boolIsMobile' => true]); +Route::rule('pc/chapter', 'Novel/getNovelChapter')->ext('html')->append(['boolIsMobile' => false]); + +Route::rule('pc/chapters', 'Novel/getNovelChapterAll')->ext('html')->append(['boolIsMobile' => false]); + +// 搜索小说 +Route::rule('search', 'Novel/getSearchNovel')->ext('html')->append(['boolIsMobile' => true]); +Route::rule('pc/search', 'Novel/getSearchNovel')->ext('html')->append(['boolIsMobile' => false]); + +// 小说用户中心 +Route::rule('/user', 'User/Index')->ext('html')->append(['boolIsMobile' => true]); +Route::rule('/pc/user', 'User/Index')->ext('html')->append(['boolIsMobile' => false]); + +// 历史记录 +Route::rule('history', 'User/getHistory')->ext('html')->append(['boolIsMobile' => true]); +Route::rule('/pc/history', 'User/getHistory')->ext('html')->append(['boolIsMobile' => false]); + +// 书架 +Route::rule('bookshelf', 'User/getBookShelf')->ext('html')->append(['boolIsMobile' => true]); +Route::rule('/pc/bookshelf', 'User/getBookShelf')->ext('html')->append(['boolIsMobile' => false]); + + + + + + + + + + + + + + + + +// if(config('app.default_index_info_isopen')){ +// # SEO首页-此为了 那些那详情页做首页推广的站点 +// Route::get("/", "Novel/getDetail")->name("Novel@getDetail")->cache('/index.html', 600, 'index'); + +// // 影视首页 +// Route::get("/nindex", "Novel/Index")->name("Novel@Index")->cache('/nindex.html', 600, 'nindex'); +// }else{ +// Route::get("/", "Novel/Index")->name("Novel@Index")->cache('/index.html', 600, 'index'); +// } + + + +// # 定义所有分类路由 +// $arrRoutes = [ +// # 小说推荐 +// [ +// 'class'=>'Novel/getRankList', +// 'name'=>'Novel@getTuijianList', +// 'path'=>[ +// '/tj/:intTjdj-[:intPage]', +// '/tuijian/:intTjdj-[:intPage]', +// '/recommend/:intTjdj-[:intPage]', +// '/nice/:intTjdj-[:intPage]', +// '/good/:intTjdj-[:intPage]', +// '/推荐/:intTjdj-[:intPage]', +// ], +// ], +// # 小说分类 +// [ +// 'class'=>'Novel/getCategoryList', +// 'name'=>'Novel@getCategoryList', +// 'path'=>[ +// '/list/:intCId-:intSort-:intStatus-[:intPage]', +// '/fenlei/:intCId-:intSort-:intStatus-[:intPage]', +// '/class/:intCId-:intSort-:intStatus-[:intPage]', +// '/type/:intCId-:intSort-:intStatus-[:intPage]', +// '/leixin/:intCId-:intSort-:intStatus-[:intPage]', +// '/小说分类/:intCId-:intSort-:intStatus-[:intPage]', +// ], +// ], +// # 小说排行 +// [ +// 'class'=>'Novel/getNovelRankList', +// 'name'=>'Novel@getNovelRankList', +// 'path'=>[ +// '/paihang/:intCId-:intSort-[:intPage]', +// '/paihanbang/:intCId-:intSort-[:intPage]', +// '/rank/:intCId-:intSort-[:intPage]', +// '/sort/:intCId-:intSort-[:intPage]', +// '/pb/:intCId-:intSort-[:intPage]', +// '/排行榜/:intCId-:intSort-[:intPage]', +// ], +// ], + +// # 小说章节 +// [ +// 'class'=>'Novel/getReader', +// 'name'=>'Novel@getReader', +// 'path'=>[ +// '/xq/:intNovelId/:intZhangJiePaiXu-[:strSort]', +// '/xiaoshuo/:intNovelId/:intZhangJiePaiXu-[:strSort]', +// '/novel/:intNovelId/:intZhangJiePaiXu-[:strSort]', +// '/info/:intNovelId/:intZhangJiePaiXu-[:strSort]', +// '/shu/:intNovelId/:intZhangJiePaiXu-[:strSort]', +// '/小说/:intNovelId/:intZhangJiePaiXu-[:strSort]', + +// '/book/:intNovelId/:intZhangJiePaiXu-[:strSort]', +// '/kan/:intNovelId/:intZhangJiePaiXu-[:strSort]', +// '/show/:intNovelId/:intZhangJiePaiXu-[:strSort]', +// '/yuedu/:intNovelId/:intZhangJiePaiXu-[:strSort]', +// '/see/:intNovelId/:intZhangJiePaiXu-[:strSort]', +// '/相关/:intNovelId/:intZhangJiePaiXu-[:strSort]', +// ], +// ], + +// # 小说详情 +// [ +// 'class'=>'Novel/getDetail', +// 'name'=>'Novel@getDetail', +// 'path'=>[ +// '/xq/:intNovelId-[:intCurrentPage]-[:strSort]', +// '/xiaoshuo/:intNovelId-[:intCurrentPage]-[:strSort]', +// '/novel/:intNovelId-[:intCurrentPage]-[:strSort]', +// '/info/:intNovelId-[:intCurrentPage]-[:strSort]', +// '/shu/:intNovelId-[:intCurrentPage]-[:strSort]', +// '/小说/:intNovelId-[:intCurrentPage]-[:strSort]', + +// '/book/:intNovelId-[:intCurrentPage]-[:strSort]', +// '/kan/:intNovelId-[:intCurrentPage]-[:strSort]', +// '/show/:intNovelId-[:intCurrentPage]-[:strSort]', +// '/yuedu/:intNovelId-[:intCurrentPage]-[:strSort]', +// '/see/:intNovelId-[:intCurrentPage]-[:strSort]', +// '/相关/:intNovelId-[:intCurrentPage]-[:strSort]', +// ], +// ], +// # 搜索 - 小说 +// [ +// 'class'=>'Search/getNovel', +// 'name'=>'Search@getNovel', +// 'path'=>[ +// '/search', +// ], +// ], +// # 书架 +// [ +// 'class'=>'Search/getShujia', +// 'name'=>'Search/getShujia', +// 'path'=>[ +// '/shujia', +// ], +// ], +// # 收藏 +// [ +// 'class'=>'Search/addSc', +// 'name'=>'Search/addSc', +// 'path'=>[ +// '/sc', +// ], +// ], +// ]; + +// // Route::get('/sc', 'Novel/addSc') +// // ->middleware('Throttle:5,60') // 限制 1 分钟内最多 5 次 +// // ->name('Novel@addSc'); + +// # 遍历所有分类,注册路由 +// foreach ($arrRoutes as $Routes) { +// foreach ($Routes['path'] as $strPath) { +// Route::get($strPath, $Routes['class']) +// ->name($Routes['name']) +// ->pattern([ +// 'intTjdj' => '\d+', # 推荐等级 +// 'intPage' => '\d+', # 分页 +// 'intCId' => '\d+', +// 'intSort' => '\d+', +// 'intNovelId' => '\d+', +// 'intZhangJiePaiXu' => '\d+', +// 'strSort' => '\w+', +// 'intStatus' => '\d+', +// ]) +// ->cache([$strPath, 3600, strtoupper($strPath) . '_PAGE']); +// } +// } diff --git a/code/app/home/controller/Index.php b/code/app/home/controller/Index.php index 6de3884..f069bf3 100644 --- a/code/app/home/controller/Index.php +++ b/code/app/home/controller/Index.php @@ -7,14 +7,302 @@ namespace app\home\controller; use app\home\BaseController; use storage\StorageCore; use think\facade\View; +use app\Request; class Index extends BaseController { - public function index() + // 首页-H5 + public function index(Request $Request) { - return View::fetch(); + // 获取路由附加的参数 + $boolIsMobile = $Request->param('boolIsMobile'); + + // 模拟数据-推荐等级为9的 随机8个小说 + $arrRecommendNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ['id' => 6, 'name' => '小说3', 'author' => '作者3'], + ['id' => 7, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + + ]; + + // 模拟数据-最新 随机8个小说 + $arrNewsNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ['id' => 6, 'name' => '小说3', 'author' => '作者3'], + ['id' => 7, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ]; + + // 模拟数据-日排行榜 随机10个小说 + $arrDayRankNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ['id' => 6, 'name' => '小说3', 'author' => '作者3'], + ['id' => 7, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ['id' => 9, 'name' => '小说3', 'author' => '作者3'], + ['id' => 10, 'name' => '小说3', 'author' => '作者3'], + ]; + // 模拟数据-周排行榜 随机10个小说 + $arrWeekRankNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ['id' => 6, 'name' => '小说3', 'author' => '作者3'], + ['id' => 7, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ['id' => 9, 'name' => '小说3', 'author' => '作者3'], + ['id' => 10, 'name' => '小说3', 'author' => '作者3'], + ]; + // 模拟数据-月排行榜 随机10个小说 + $arrMoonRankNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ['id' => 6, 'name' => '小说3', 'author' => '作者3'], + ['id' => 7, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ['id' => 9, 'name' => '小说3', 'author' => '作者3'], + ['id' => 10, 'name' => '小说3', 'author' => '作者3'], + ]; + // 模拟数据-完结小说 总排行榜 随机10个小说 + $arrEndNovelRankNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ['id' => 6, 'name' => '小说3', 'author' => '作者3'], + ['id' => 7, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ['id' => 9, 'name' => '小说3', 'author' => '作者3'], + ['id' => 10, 'name' => '小说3', 'author' => '作者3'], + ]; + + View::assign([ + 'arrRecommendNovel' => $arrRecommendNovel, + 'arrNewsNovel' => $arrNewsNovel, + 'arrDayRankNovel' => $arrDayRankNovel, + 'arrWeekRankNovel' => $arrWeekRankNovel, + 'arrMoonRankNovel' => $arrMoonRankNovel, + 'arrEndNovelRankNovel' => $arrEndNovelRankNovel, + 'strPageCode' => 'home' + ]); + + if ($boolIsMobile) { + return View::fetch(); + } else { + return View::fetch('pc/index'); + } } + // 首页数据-PC + public function getPcIndex(Request $Request) + { + // 获取路由附加的参数 + $boolIsMobile = $Request->param('boolIsMobile'); + + // 模拟数据-推荐等级为9的连载的 随机15个小说 + $arrRecommendSerializationNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ['id' => 6, 'name' => '小说3', 'author' => '作者3'], + ['id' => 7, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ['id' => 9, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ['id' => 15, 'name' => '小说3', 'author' => '作者3'], + ]; + + // 模拟数据-推荐等级为9的完结的 随机12个小说 + $arrRecommendEndNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ['id' => 6, 'name' => '小说3', 'author' => '作者3'], + ['id' => 7, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ['id' => 9, 'name' => '小说3', 'author' => '作者3'], + ['id' => 10, 'name' => '小说3', 'author' => '作者3'], + ['id' => 11, 'name' => '小说3', 'author' => '作者3'], + ['id' => 12, 'name' => '小说3', 'author' => '作者3'], + + ]; + + // 模拟数据-男生频道,最新的 随机5个小说 + $arrBoyNewsNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ]; + + // 模拟数据-男生频道,周排行榜 随机10个小说 + $arrBoyWeekRankNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ['id' => 6, 'name' => '小说3', 'author' => '作者3'], + ['id' => 7, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ['id' => 9, 'name' => '小说3', 'author' => '作者3'], + ['id' => 10, 'name' => '小说3', 'author' => '作者3'], + ]; + + // 模拟数据-男生频道,月排行榜 随机10个小说 + $arrBoyMoonRankNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ['id' => 6, 'name' => '小说3', 'author' => '作者3'], + ['id' => 7, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ['id' => 9, 'name' => '小说3', 'author' => '作者3'], + ['id' => 10, 'name' => '小说3', 'author' => '作者3'], + ]; + + // 模拟数据-男生频道,总排行榜 随机10个小说 + $arrBoyTotalRankNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ['id' => 6, 'name' => '小说3', 'author' => '作者3'], + ['id' => 7, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ['id' => 9, 'name' => '小说3', 'author' => '作者3'], + ['id' => 10, 'name' => '小说3', 'author' => '作者3'], + ]; + + // 模拟数据-女生频道,最新的 随机5个小说 + $arrGirlNewsNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ]; + + // 模拟数据-女生频道,周排行榜 随机10个小说 + $arrGirlWeekRankNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ['id' => 6, 'name' => '小说3', 'author' => '作者3'], + ['id' => 7, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ['id' => 9, 'name' => '小说3', 'author' => '作者3'], + ['id' => 10, 'name' => '小说3', 'author' => '作者3'], + ]; + // 模拟数据-女生频道,月排行榜 随机10个小说 + $arrGirlMoonRankNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ['id' => 6, 'name' => '小说3', 'author' => '作者3'], + ['id' => 7, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ['id' => 9, 'name' => '小说3', 'author' => '作者3'], + ['id' => 10, 'name' => '小说3', 'author' => '作者3'], + ]; + // 模拟数据-女生频道,总排行榜 随机10个小说 + $arrBGirlTotalRankNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ['id' => 6, 'name' => '小说3', 'author' => '作者3'], + ['id' => 7, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ['id' => 9, 'name' => '小说3', 'author' => '作者3'], + ['id' => 10, 'name' => '小说3', 'author' => '作者3'], + ]; + + // 模拟数据-最近更新-随机50 + $arrNewsUpdateNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ['id' => 6, 'name' => '小说3', 'author' => '作者3'], + ['id' => 7, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ['id' => 9, 'name' => '小说3', 'author' => '作者3'], + ['id' => 10, 'name' => '小说3', 'author' => '作者3'], + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ['id' => 6, 'name' => '小说3', 'author' => '作者3'], + ['id' => 7, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ['id' => 9, 'name' => '小说3', 'author' => '作者3'], + ['id' => 10, 'name' => '小说3', 'author' => '作者3'], + ]; + + View::assign([ + 'arrNewsUpdateNovel' => $arrNewsUpdateNovel, + 'arrRecommendSerializationNovel' => $arrRecommendSerializationNovel, + 'arrRecommendEndNovel' => $arrRecommendEndNovel, + 'arrBoyNewsNovel' => $arrBoyNewsNovel, + 'arrBoyWeekRankNovel' => $arrBoyWeekRankNovel, + 'arrBoyMoonRankNovel' => $arrBoyMoonRankNovel, + 'arrBoyTotalRankNovel' => $arrBoyTotalRankNovel, + 'arrGirlNewsNovel' => $arrGirlNewsNovel, + 'arrGirlWeekRankNovel' => $arrGirlWeekRankNovel, + 'arrGirlMoonRankNovel' => $arrGirlMoonRankNovel, + 'arrBGirlTotalRankNovel' => $arrBGirlTotalRankNovel, + 'arrAdBanner' => [], + 'strPageCode' => 'home' + ]); + + if ($boolIsMobile) { + return View::fetch(); + } else { + return View::fetch('pc/index'); + } + } + + + public function test() { diff --git a/code/app/home/controller/Novel.php b/code/app/home/controller/Novel.php index 0576f5d..dde53fe 100644 --- a/code/app/home/controller/Novel.php +++ b/code/app/home/controller/Novel.php @@ -7,11 +7,415 @@ namespace app\home\controller; use app\home\BaseController; use storage\StorageCore; use think\facade\View; +use app\Request; class Novel extends BaseController { public function index() { + return View::fetch(); } + + // 小说排行 + public function getNovelRank(Request $Request) + { + $boolIsMobile = $Request->param('boolIsMobile'); + // 模拟数据-日排行榜 随机10个小说 + $arrDayRankNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ['id' => 6, 'name' => '小说3', 'author' => '作者3'], + ['id' => 7, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ['id' => 9, 'name' => '小说3', 'author' => '作者3'], + ['id' => 10, 'name' => '小说3', 'author' => '作者3'], + ]; + // 模拟数据-周排行榜 随机10个小说 + $arrWeekRankNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ['id' => 6, 'name' => '小说3', 'author' => '作者3'], + ['id' => 7, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ['id' => 9, 'name' => '小说3', 'author' => '作者3'], + ['id' => 10, 'name' => '小说3', 'author' => '作者3'], + ]; + // 模拟数据-月排行榜 随机10个小说 + $arrMoonRankNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ['id' => 6, 'name' => '小说3', 'author' => '作者3'], + ['id' => 7, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ['id' => 9, 'name' => '小说3', 'author' => '作者3'], + ['id' => 10, 'name' => '小说3', 'author' => '作者3'], + ]; + // 模拟数据-总排行榜 随机10个小说 + $arrTotalRankNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ['id' => 6, 'name' => '小说3', 'author' => '作者3'], + ['id' => 7, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ['id' => 9, 'name' => '小说3', 'author' => '作者3'], + ['id' => 10, 'name' => '小说3', 'author' => '作者3'], + ]; + // 模拟数据-新书榜 随机10个小说 + $arrNewsNovelRankNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ['id' => 6, 'name' => '小说3', 'author' => '作者3'], + ['id' => 7, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ['id' => 9, 'name' => '小说3', 'author' => '作者3'], + ['id' => 10, 'name' => '小说3', 'author' => '作者3'], + ]; + + // 模拟数据-完结榜 随机10个小说 + $arrEdnNovelRankNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ['id' => 6, 'name' => '小说3', 'author' => '作者3'], + ['id' => 7, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ['id' => 9, 'name' => '小说3', 'author' => '作者3'], + ['id' => 10, 'name' => '小说3', 'author' => '作者3'], + ]; + + + View::assign([ + 'arrDayRankNovel' => $arrDayRankNovel, + 'arrWeekRankNovel' => $arrWeekRankNovel, + 'arrMoonRankNovel' => $arrMoonRankNovel, + 'arrTotalRankNovel' => $arrTotalRankNovel, + 'arrNewsNovelRankNovel' => $arrNewsNovelRankNovel, + 'arrEdnNovelRankNovel' => $arrEdnNovelRankNovel, + 'strPageCode' => 'rank' + ]); + if ($boolIsMobile) { + return View::fetch(); + } else { + return View::fetch('pc/getNovelRank'); + } + } + + // 书库 + public function getLibrary(Request $Request) + { + $boolIsMobile = $Request->param('boolIsMobile'); + + // 模拟数据 + $arrNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ['id' => 6, 'name' => '小说3', 'author' => '作者3'], + ['id' => 7, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ]; + + View::assign([ + 'arrNovel' => $arrNovel, + 'strPageCode' => 'library' + ]); + if ($boolIsMobile) { + return View::fetch(); + } else { + return View::fetch('pc/getLibrary'); + } + } + + // 书架 + public function getBookShelf(Request $Request) + { + $boolIsMobile = $Request->param('boolIsMobile'); + + // 模拟数据 + $arrNewsNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ['id' => 6, 'name' => '小说3', 'author' => '作者3'], + ['id' => 7, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ]; + + View::assign([ + 'arrNewsNovel' => $arrNewsNovel, + 'strPageCode' => 'bookshelf' + ]); + if ($boolIsMobile) { + return View::fetch(); + } else { + return View::fetch('pc/getBookShelf'); + } + } + + // 男生女生频道 + public function getBoyNovel(Request $Request) + { + $boolIsMobile = $Request->param('boolIsMobile'); + $strChannel = $Request->param('strChannel'); // 区分男生/女生频道 + + // 模拟数据-推荐等级为9的,连载的,男生频道/女生频道, 随机12个小说 + $arrRecommendSerializationNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ['id' => 6, 'name' => '小说3', 'author' => '作者3'], + ['id' => 7, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ['id' => 9, 'name' => '小说3', 'author' => '作者3'], + ['id' => 10, 'name' => '小说3', 'author' => '作者3'], + ['id' => 11, 'name' => '小说3', 'author' => '作者3'], + ['id' => 12, 'name' => '小说3', 'author' => '作者3'], + ]; + // 模拟数据-推荐等级为9的,完结的,男生频道/女生频道, 随机8个小说 + $arrRecommendEndNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ['id' => 6, 'name' => '小说3', 'author' => '作者3'], + ['id' => 7, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + + ]; + + // 模拟数据-最近更新-随机50 + $arrNewsUpdateNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ['id' => 6, 'name' => '小说3', 'author' => '作者3'], + ['id' => 7, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ['id' => 9, 'name' => '小说3', 'author' => '作者3'], + ['id' => 10, 'name' => '小说3', 'author' => '作者3'], + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ['id' => 6, 'name' => '小说3', 'author' => '作者3'], + ['id' => 7, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ['id' => 9, 'name' => '小说3', 'author' => '作者3'], + ['id' => 10, 'name' => '小说3', 'author' => '作者3'], + ]; + + View::assign([ + 'arrNewsUpdateNovel' => $arrNewsUpdateNovel, + 'arrRecommendSerializationNovel' => $arrRecommendSerializationNovel, + 'arrRecommendEndNovel' => $arrRecommendEndNovel, + 'arrAdBanner' => [], + 'strPageCode' => $strChannel + ]); + if ($boolIsMobile) { + return View::fetch(); + } else { + return View::fetch('pc/getBoyNovel'); + } + } + + // 小说详情 + public function getNovelInfo(Request $Request) + { + $boolIsMobile = $Request->param('boolIsMobile'); + + // 模拟数据-随机推荐数据10条 + $arrRecommendNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ['id' => 6, 'name' => '小说3', 'author' => '作者3'], + ['id' => 7, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ]; + + View::assign([ + 'arrRecommendNovel' => $arrRecommendNovel, + 'strPageCode' => 'boy' + ]); + if ($boolIsMobile) { + return View::fetch(); + } else { + return View::fetch('pc/getNovelInfo'); + } + } + + // 小说章节 + public function getNovelChapter(Request $Request) + { + $boolIsMobile = $Request->param('boolIsMobile'); + + // 模拟数据 + $arrNewsNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ['id' => 6, 'name' => '小说3', 'author' => '作者3'], + ['id' => 7, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ]; + + View::assign([ + 'arrNewsNovel' => $arrNewsNovel, + 'strPageCode' => 'boy' + ]); + if ($boolIsMobile) { + return View::fetch(); + } else { + return View::fetch('pc/getNovelChapter'); + } + } + + // 小说章节-所有章节 + public function getNovelChapterAll(Request $Request) + { + $boolIsMobile = $Request->param('boolIsMobile'); + + // 模拟数据 + $arrNovelChapterAll = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ['id' => 6, 'name' => '小说3', 'author' => '作者3'], + ['id' => 7, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ]; + + View::assign([ + 'arrNovelChapterAll' => $arrNovelChapterAll, + 'strPageCode' => 'boy' + ]); + if ($boolIsMobile) { + return View::fetch(); + } else { + return View::fetch('pc/getNovelChapterAll'); + } + } + + + + // 小说章节-搜索 + public function getSearchNovel(Request $Request) + { + $boolIsMobile = $Request->param('boolIsMobile'); + + // 模拟数据 + $arrSearchNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ['id' => 6, 'name' => '小说3', 'author' => '作者3'], + ['id' => 7, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ]; + + View::assign([ + 'arrSearchNovel' => $arrSearchNovel, + 'strPageCode' => 'search' + ]); + if ($boolIsMobile) { + return View::fetch(); + } else { + return View::fetch('pc/getSearchNovel'); + } + } + + // 小说章节-SEO-自定义页面-列表 + public function getSeoList(Request $Request) + { + $boolIsMobile = $Request->param('boolIsMobile'); + + // 模拟数据 + $arrNewsNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ['id' => 6, 'name' => '小说3', 'author' => '作者3'], + ['id' => 7, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ]; + + View::assign([ + 'arrNewsNovel' => $arrNewsNovel, + 'strPageCode' => 'article' + ]); + if ($boolIsMobile) { + return View::fetch(); + } else { + return View::fetch('pc/getSeoList'); + } + } + + // 小说章节-SEO-自定义页面-详情 + public function getSeoInfo(Request $Request) + { + $boolIsMobile = $Request->param('boolIsMobile'); + + // 模拟数据 + $arrNewsNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ['id' => 6, 'name' => '小说3', 'author' => '作者3'], + ['id' => 7, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ]; + + View::assign([ + 'arrNewsNovel' => $arrNewsNovel, + 'strPageCode' => 'article' + ]); + if ($boolIsMobile) { + return View::fetch(); + } else { + return View::fetch('pc/getSeoInfo'); + } + } + + + } diff --git a/code/app/home/controller/User.php b/code/app/home/controller/User.php new file mode 100644 index 0000000..2baf88a --- /dev/null +++ b/code/app/home/controller/User.php @@ -0,0 +1,300 @@ +param('boolIsMobile'); + + // 模拟数据 + $arrNewsNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + + ]; + + View::assign([ + 'arrNewsNovel' => $arrNewsNovel, + ]); + + if ($boolIsMobile) { + return View::fetch(); + } else { + return View::fetch('Pc/User/index'); + } + } + + public function getBookShelf(Request $Request) + { + // 获取路由附加的参数 + $boolIsMobile = $Request->param('boolIsMobile'); + + // 模拟数据 + $arrNewsNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + + ]; + + View::assign([ + 'arrNewsNovel' => $arrNewsNovel, + ]); + + if ($boolIsMobile) { + return View::fetch(); + } else { + return View::fetch('Pc/User/getBookShelf'); + } + } + + public function getHistory(Request $Request) + { + // 获取路由附加的参数 + $boolIsMobile = $Request->param('boolIsMobile'); + + // 模拟数据 + $arrNewsNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + + ]; + + View::assign([ + 'arrNewsNovel' => $arrNewsNovel, + ]); + + if ($boolIsMobile) { + return View::fetch(); + } else { + return View::fetch('Pc/User/history'); + } + } + + + + + + public function getPcIndex(Request $Request) + { + // 获取路由附加的参数 + $boolIsMobile = $Request->param('boolIsMobile'); + + // 模拟数据-推荐等级为9的连载的 随机15个小说 + $arrRecommendSerializationNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ['id' => 6, 'name' => '小说3', 'author' => '作者3'], + ['id' => 7, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ['id' => 9, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ['id' => 15, 'name' => '小说3', 'author' => '作者3'], + ]; + // 模拟数据-推荐等级为9的完结的 随机12个小说 + $arrRecommendEndNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ['id' => 6, 'name' => '小说3', 'author' => '作者3'], + ['id' => 7, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ['id' => 9, 'name' => '小说3', 'author' => '作者3'], + ['id' => 10, 'name' => '小说3', 'author' => '作者3'], + ['id' => 11, 'name' => '小说3', 'author' => '作者3'], + ['id' => 12, 'name' => '小说3', 'author' => '作者3'], + + ]; + + // 模拟数据-男生频道,最新的 随机5个小说 + $arrBoyNewsNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ]; + // 模拟数据-男生频道,周排行榜 随机10个小说 + $arrBoyWeekRankNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ['id' => 6, 'name' => '小说3', 'author' => '作者3'], + ['id' => 7, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ['id' => 9, 'name' => '小说3', 'author' => '作者3'], + ['id' => 10, 'name' => '小说3', 'author' => '作者3'], + ]; + // 模拟数据-男生频道,月排行榜 随机10个小说 + $arrBoyMoonRankNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ['id' => 6, 'name' => '小说3', 'author' => '作者3'], + ['id' => 7, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ['id' => 9, 'name' => '小说3', 'author' => '作者3'], + ['id' => 10, 'name' => '小说3', 'author' => '作者3'], + ]; + // 模拟数据-男生频道,总排行榜 随机10个小说 + $arrBoyTotalRankNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ['id' => 6, 'name' => '小说3', 'author' => '作者3'], + ['id' => 7, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ['id' => 9, 'name' => '小说3', 'author' => '作者3'], + ['id' => 10, 'name' => '小说3', 'author' => '作者3'], + ]; + + + + // 模拟数据-男生频道,最新的 随机5个小说 + $arrGirlNewsNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ]; + // 模拟数据-男生频道,周排行榜 随机10个小说 + $arrGirlWeekRankNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ['id' => 6, 'name' => '小说3', 'author' => '作者3'], + ['id' => 7, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ['id' => 9, 'name' => '小说3', 'author' => '作者3'], + ['id' => 10, 'name' => '小说3', 'author' => '作者3'], + ]; + // 模拟数据-男生频道,月排行榜 随机10个小说 + $arrGirlMoonRankNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ['id' => 6, 'name' => '小说3', 'author' => '作者3'], + ['id' => 7, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ['id' => 9, 'name' => '小说3', 'author' => '作者3'], + ['id' => 10, 'name' => '小说3', 'author' => '作者3'], + ]; + // 模拟数据-男生频道,总排行榜 随机10个小说 + $arrBGirlTotalRankNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ['id' => 6, 'name' => '小说3', 'author' => '作者3'], + ['id' => 7, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ['id' => 9, 'name' => '小说3', 'author' => '作者3'], + ['id' => 10, 'name' => '小说3', 'author' => '作者3'], + ]; + + + // 模拟数据-最近更新-随机50 + $arrNewsUpdateNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ['id' => 6, 'name' => '小说3', 'author' => '作者3'], + ['id' => 7, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ['id' => 9, 'name' => '小说3', 'author' => '作者3'], + ['id' => 10, 'name' => '小说3', 'author' => '作者3'], + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ['id' => 6, 'name' => '小说3', 'author' => '作者3'], + ['id' => 7, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ['id' => 9, 'name' => '小说3', 'author' => '作者3'], + ['id' => 10, 'name' => '小说3', 'author' => '作者3'], + ]; + + View::assign([ + 'arrNewsUpdateNovel' => $arrNewsUpdateNovel, + 'arrRecommendSerializationNovel' => $arrRecommendSerializationNovel, + 'arrRecommendEndNovel' => $arrRecommendEndNovel, + 'arrBoyNewsNovel' => $arrBoyNewsNovel, + 'arrBoyWeekRankNovel' => $arrBoyWeekRankNovel, + 'arrBoyMoonRankNovel' => $arrBoyMoonRankNovel, + 'arrBoyTotalRankNovel' => $arrBoyTotalRankNovel, + 'arrGirlNewsNovel' => $arrGirlNewsNovel, + 'arrGirlWeekRankNovel' => $arrGirlWeekRankNovel, + 'arrGirlMoonRankNovel' => $arrGirlMoonRankNovel, + 'arrBGirlTotalRankNovel' => $arrBGirlTotalRankNovel, + 'arrAdBanner' => [], + + ]); + + if ($boolIsMobile) { + return View::fetch(); + } else { + return View::fetch('pc/index'); + } + } + + + + public function test() + { + + $strNovelKey = "novels/12/chapters/3001.txt"; + $StorageCore = StorageCore::getInstance(); + + // $content = '我是一个大傻逼'; + + $content = file_get_contents('123.txt'); + + if ($StorageCore->has($strNovelKey)) { + // $MinIO->update($strNovelKey, $content); // 更新已有文件 + } else { + $StorageCore->write($strNovelKey, $content); // 创建新文件 + } + + echo $StorageCore->read($strNovelKey); + return; + } +} diff --git a/code/app/home/view/default/Index/index.html b/code/app/home/view/default/Index/index.html index 0472b6e..50c2012 100644 --- a/code/app/home/view/default/Index/index.html +++ b/code/app/home/view/default/Index/index.html @@ -1 +1,4 @@ -12312321 \ No newline at end of file +12312321 + +/info/id +/xs/id \ No newline at end of file diff --git a/code/app/home/view/kuangyu/Index/index.html b/code/app/home/view/kuangyu/Index/index.html new file mode 100644 index 0000000..4531f3c --- /dev/null +++ b/code/app/home/view/kuangyu/Index/index.html @@ -0,0 +1,133 @@ +{extend name="baseH5" /} +{block name='nav-active-class'}home{/block} +{block name="title"}{/block} +{block name="head-js"}{/block} + +{block name="logo-html"} +

+ 狂雨小说 +

+{/block} + +{block name="main"} + +
+ +
+
+
+
+ +
+
+ + +
+
+ + + + +
+
+

热门小说

+
+
+
    + {foreach $arrRecommendNovel as $category} + {include file="Public/novelListS" /} + {/foreach} +
+
+
+ + +
+
+

最新小说

+
+
+
    + {foreach $arrNewsNovel as $category} + {include file="Public/novelListH" /} + {/foreach} +
+
+
+ + +
+
+

小说排行榜

+
+
+
    +
  1. 日排榜
  2. +
  3. 周排榜
  4. +
  5. 月排榜
  6. +
  7. 完结榜
  8. +
+
+ +
+
+
    + {foreach $arrDayRankNovel as $category} + {include file="Public/novelListH" /} + {/foreach} +
+
+
+ + + + + + +
+ +
+{/block} {block name="customize"} {/block} \ No newline at end of file diff --git a/code/app/home/view/kuangyu/Novel/getBoyNovel.html b/code/app/home/view/kuangyu/Novel/getBoyNovel.html new file mode 100644 index 0000000..585b1ea --- /dev/null +++ b/code/app/home/view/kuangyu/Novel/getBoyNovel.html @@ -0,0 +1,45 @@ +{extend name="baseH5" /} +{block name='nav-active-class'}home{/block} +{block name="title"}{/block} +{block name="head-js"}{/block} + +{block name="logo-html"} +

+ 狂雨小说/{eq name="strPageCode" value="boy"}男生 {else/}女生{/eq} +

+{/block} + +{block name="main"} + +
+ + +
+
+

热门推荐

+
+
+
    + {foreach $arrRecommendSerializationNovel as $category} + {include file="Public/novelListS" /} + {/foreach} +
+
+
+ + +
+
+

最近更新

+
+
+
    + {foreach $arrNewsUpdateNovel as $category} + {include file="Public/novelListH" /} + {/foreach} +
+
+
+ +
+{/block} {block name="customize"} {/block} \ No newline at end of file diff --git a/code/app/home/view/kuangyu/Novel/getLibrary.html b/code/app/home/view/kuangyu/Novel/getLibrary.html new file mode 100644 index 0000000..7c1b0a7 --- /dev/null +++ b/code/app/home/view/kuangyu/Novel/getLibrary.html @@ -0,0 +1,79 @@ +{extend name="baseH5" /} +{block name='nav-active-class'}home{/block} +{block name="title"}{/block} +{block name="head-js"}{/block} + +{block name="logo-html"} +

+ 狂雨小说/书库 +

+{/block} + +{block name="main"} +
+ + +
+
+
    + + {foreach $arrNovel as $category} + {include file="Public/novelListH" /} + {/foreach} + + +
+
+
+
    +
  • «
  • +
  • »
  • +
+
+
+ +
+{/block} + +{block name="customize"} {/block} \ No newline at end of file diff --git a/code/app/home/view/kuangyu/Novel/getNovelChapter.html b/code/app/home/view/kuangyu/Novel/getNovelChapter.html new file mode 100644 index 0000000..901807e --- /dev/null +++ b/code/app/home/view/kuangyu/Novel/getNovelChapter.html @@ -0,0 +1,253 @@ + + + + + + + + + 01 天龙问世_我真是一条龙-狂雨小说 + + + + + + + + + + +
+ +
+ +

下拉阅读上一章

+
+ + +
+
+ +

“谁读的火焰风暴!”事已至此,秦渊只能依靠自己跟自己吐槽来安抚他生无可恋的内心了。

+ +
+
+ + + +
+
+

01 天龙问世

+
+ 你刚刚阅读到这里 +

1/1

+
+
+
+ + + 返回 + + +
+ + +
+
+ 加入书架 + +
+ +
+ +
+
+
+ +
+
    +
  • + + +
  • +
  • + + +
  • +
  • + + +
  • +
  • + + +
  • +
+
+
+
    +
  • + + +
  • +
  • + + +
  • +
+
+
+ +
+ + + + + + + + + + + \ No newline at end of file diff --git a/code/app/home/view/kuangyu/Novel/getNovelInfo.html b/code/app/home/view/kuangyu/Novel/getNovelInfo.html new file mode 100644 index 0000000..88c20ef --- /dev/null +++ b/code/app/home/view/kuangyu/Novel/getNovelInfo.html @@ -0,0 +1,209 @@ +{extend name="baseH5" /} +{block name='nav-active-class'}home{/block} +{block name="title"}{/block} +{block name="head-js"}{/block} + +{block name="logo-html"} + +{/block} + +{block name="main"} +
+ +
+
+
+
+ 我真是一条龙 + 已完结 +
+
+

我真是一条龙

+

+ 分类:耽美百合 + 作者:兔子很淡定 + 字数:54.20万字 + 阅读:0 +

+
+
+
+ +
+
+
+

+ 我的父亲告诉我,在我出生那一年,天上金光闪耀,隐隐约约中,好像能看到云朵里有条龙在盘旋,紧接着,一道金光照入我们的村子,我便出生了……为寻答案来人间,天龙问世扰乾坤。 + 无情无义闹天下,千军万马赴黄泉。 + 本站提示:各位书友要是觉得《我真是一条龙》还不错的话请不要忘记向您QQ群和微博里的朋友推荐哦! +

+
+
+
+
+ + +
+
+
+

精简阅读

+
+
+
+

+ 我的父亲告诉我,在我出生那一年,天上金光闪耀,隐隐约约中,好像能看到云朵里有条龙在盘旋,紧接着,一道金光照入我们的村子,我便出生了……为寻答案来人间,天龙问世扰乾坤。 + 无情无义闹天下,千军万马赴黄泉。 + 本站提示:各位书友要是觉得《我真是一条龙》还不错的话请不要忘记向您QQ群和微博里的朋友推荐哦! +

+

相邻推荐:逆天网游系统  穿越之血色主宰  我的史诗传说  随身带个英雄联盟  无终骨  和智能女神共事的日子  我是都市小蚂蚁  以太坊  祸乱星河  科魔多  和病娇大佬协议订婚后  混迹异界玩网游  共创和谐虚空  惊天犯案  永恒魔尊  楚谣  英灵游戏  梦里为王  绝美仙女老婆  夜半谈鬼  狼牙兵王曾经的老四txt  狼牙兵王大结局是什么  狼牙兵王虎和主角关系  狼牙兵王陈塘免费全文阅读  狼牙兵王苏扬在线阅读  狼牙兵王女主  狼牙狼王于枫  狼牙兵王全文免费阅读  狼牙兵王萧战全文阅读  狼牙兵王安安结局  狼牙兵王陈塘  狼牙兵王百科  狼牙兵王苏扬颖儿  狼牙兵王在线阅读  狼牙兵王为什么不更新  狼牙兵王百度百科  狼牙兵王陈塘笔趣阁  狼牙兵王 + 蝼蚁望天  狼牙兵王怎么不更新了  狼牙兵王蝼蚁望天  狼牙兵王阅读全文  丛林狼最强兵王罗铮  狼牙兵王怎么下架了  狼牙兵王蝼蚁望天怎么不更新了  狼牙兵王安安  狼牙兵王全本txt  狼牙兵王陈塘读集(沧海残阳)  狼牙兵王中寅虎和主角关系  狼牙兵王江一凡  狼牙兵王全文在线阅读  狼牙兵王曾经的老四  狼牙兵王怎么停更了  狼牙兵王女主角是谁  狼牙兵王 + 第1章  狼牙兵王陈塘怎么不更新了  狼牙兵王陈塘续集  狼牙兵王陈塘全文阅读  狼牙兵王辰南笔趣阁  狼牙兵王媚烟  狼牙兵王辰南  狼牙兵王在线观看  狼牙兵王苏扬  狼牙兵王叶谦全集  狼牙兵王林峰  狼牙兵王陈唐  狼牙兵王后续  狼牙兵王陈塘最新章节  狼牙兵王完结版  狼牙兵王免费阅读  狼牙兵王第二部  狼牙兵王寅虎和陈塘什么关系  狼牙兵王陈塘2  狼牙兵王辰南全本  狼牙兵王笔趣阁  狼牙兵王完整版  狼牙兵王人物介绍  狼牙兵王txt  狼牙兵王TXT  

+
+
+ + +
+
+ + + + +
+
+

同类作品

+
+
+
    + {foreach $arrRecommendNovel as $category} + {include file="Public/novelListS" /} + {/foreach} +
+
+
+
+{/block} + +{block name="customize"} +
+
+
+

目录

+ 关闭 +
+
+
    + {foreach $arrRecommendNovel as $category} + {include file="Public/chapterTable" /} + {/foreach} +
+
+
+ +{/block} \ No newline at end of file diff --git a/code/app/home/view/kuangyu/Novel/getNovelRank.html b/code/app/home/view/kuangyu/Novel/getNovelRank.html new file mode 100644 index 0000000..459a474 --- /dev/null +++ b/code/app/home/view/kuangyu/Novel/getNovelRank.html @@ -0,0 +1,129 @@ +{extend name="baseH5" /} +{block name='nav-active-class'}home{/block} +{block name="title"}{/block} +{block name="head-js"}{/block} + +{block name="logo-html"} +

+ 狂雨小说/排行榜 +

+{/block} + +{block name="main"} +
+ + +
+
+

日点击榜

+
+
+
    + {foreach $arrDayRankNovel as $key => $vo} + {if $key == 0} + {include file="Public/novelListH" /} + {/if} + {if $key >= 1} + {include file="Public/novelListRank" /} + {/if} + + {/foreach} +
+
+
+ +
+
+

周点击榜

+
+
+
    + {foreach $arrWeekRankNovel as $key => $vo} + {if $key == 0} + {include file="Public/novelListH" /} + {/if} + {if $key >= 1} + {include file="Public/novelListRank" /} + {/if} + + {/foreach} +
+
+
+ +
+
+

月点击榜

+
+
+
    + {foreach $arrMoonRankNovel as $key => $vo} + {if $key == 0} + {include file="Public/novelListH" /} + {/if} + {if $key >= 1} + {include file="Public/novelListRank" /} + {/if} + + {/foreach} +
+
+
+ +
+
+

总点击榜

+
+
+
    + {foreach $arrTotalRankNovel as $key => $vo} + {if $key == 0} + {include file="Public/novelListH" /} + {/if} + {if $key >= 1} + {include file="Public/novelListRank" /} + {/if} + {/foreach} +
+
+
+ +
+
+

新书榜

+
+
+
    + {foreach $arrNewsNovelRankNovel as $key => $vo} + {if $key == 0} + {include file="Public/novelListH" /} + {/if} + {if $key >= 1} + {include file="Public/novelListRank" /} + {/if} + {/foreach} +
+
+
+ +
+
+

完结榜

+
+
+
    + {foreach $arrEdnNovelRankNovel as $key => $vo} + {if $key == 0} + {include file="Public/novelListH" /} + {/if} + {if $key >= 1} + {include file="Public/novelListRank" /} + {/if} + {/foreach} +
+
+
+
+{/block} + +{block name="customize"} {/block} \ No newline at end of file diff --git a/code/app/home/view/kuangyu/Novel/getSearchNovel.html b/code/app/home/view/kuangyu/Novel/getSearchNovel.html new file mode 100644 index 0000000..c85ccd0 --- /dev/null +++ b/code/app/home/view/kuangyu/Novel/getSearchNovel.html @@ -0,0 +1,72 @@ +{extend name="baseH5" /} +{block name='nav-active-class'}home{/block} +{block name="title"}{/block} +{block name="head-js"}{/block} + +{block name="logo-html"} +

+ 狂雨小说 +

+{/block} + +{block name="main"} + + +
+ +
+{/block} + +{block name="customize"} {/block} \ No newline at end of file diff --git a/code/app/home/view/kuangyu/Novel/getSeoInfo.html b/code/app/home/view/kuangyu/Novel/getSeoInfo.html new file mode 100644 index 0000000..172afb8 --- /dev/null +++ b/code/app/home/view/kuangyu/Novel/getSeoInfo.html @@ -0,0 +1,29 @@ +{extend name="baseH5" /} +{block name='nav-active-class'}home{/block} +{block name="title"}{/block} +{block name="head-js"}{/block} + +{block name="logo-html"} +

+ 狂雨小说 +

+{/block} + +{block name="main"} +
+ +
+
+

深度解说列表

+
+
+
    + {foreach $arrNewsNovel as $key2 => $vo} + {include file="Public/novelListRank" /} + {/foreach} +
+
+
+{/block} + +{block name="customize"} {/block} \ No newline at end of file diff --git a/code/app/home/view/kuangyu/Novel/getSeoList.html b/code/app/home/view/kuangyu/Novel/getSeoList.html new file mode 100644 index 0000000..1eadedf --- /dev/null +++ b/code/app/home/view/kuangyu/Novel/getSeoList.html @@ -0,0 +1,45 @@ +{extend name="baseH5" /} +{block name='nav-active-class'}home{/block} +{block name="title"}{/block} +{block name="head-js"}{/block} + +{block name="logo-html"} +

+ 狂雨小说/文章 +

+{/block} + +{block name="main"} +
+ +
+ + +
+ +
+
+

深度解说列表

+
+
+
    + {foreach $arrNewsNovel as $key => $vo} + {include file="Public/novelListRank" /} + + {/foreach} +
+
+ +
+{/block} + +{block name="customize"} {/block} \ No newline at end of file diff --git a/code/app/home/view/kuangyu/Pc/Public/adBanner.html b/code/app/home/view/kuangyu/Pc/Public/adBanner.html new file mode 100644 index 0000000..bd8e696 --- /dev/null +++ b/code/app/home/view/kuangyu/Pc/Public/adBanner.html @@ -0,0 +1,11 @@ + + + + + diff --git a/code/app/home/view/kuangyu/Pc/Public/chapterTableAll.html b/code/app/home/view/kuangyu/Pc/Public/chapterTableAll.html new file mode 100644 index 0000000..9879351 --- /dev/null +++ b/code/app/home/view/kuangyu/Pc/Public/chapterTableAll.html @@ -0,0 +1,6 @@ +
  • + 01 天龙问世 +
  • +
  • + 02 沧武的小霸王 +
  • \ No newline at end of file diff --git a/code/app/home/view/kuangyu/Pc/Public/endNovelList.html b/code/app/home/view/kuangyu/Pc/Public/endNovelList.html new file mode 100644 index 0000000..103482d --- /dev/null +++ b/code/app/home/view/kuangyu/Pc/Public/endNovelList.html @@ -0,0 +1,11 @@ +
  • + + 落魄千金美食发家日常 + + +
  • \ No newline at end of file diff --git a/code/app/home/view/kuangyu/Pc/Public/footer.html b/code/app/home/view/kuangyu/Pc/Public/footer.html new file mode 100644 index 0000000..adc12bf --- /dev/null +++ b/code/app/home/view/kuangyu/Pc/Public/footer.html @@ -0,0 +1,22 @@ +
    +
    +
    +

    友情链接

    + +
    +
    +
    +

    + Copyright (C) 2008-2020 All rights reserved +
    + +

    +

    请所有作者发布作品时务必遵守国家互联网信息管理办法规定,我们拒绝任何色情小说,一经发现,即作删除!本站所收录作品、社区、书库评论及本站所做之广告均属其个人行为,与本站立场无关

    +
    +
    + + 返回顶部 + \ No newline at end of file diff --git a/code/app/home/view/kuangyu/Pc/Public/historyNovelList.html b/code/app/home/view/kuangyu/Pc/Public/historyNovelList.html new file mode 100644 index 0000000..07b4640 --- /dev/null +++ b/code/app/home/view/kuangyu/Pc/Public/historyNovelList.html @@ -0,0 +1,23 @@ + + + + + + + 我真是一条龙 + + + 老读者必看公告!!! + + + 兔子很淡定 + + 3天前 + + 已完结 + + 阅读 + 删除 + + \ No newline at end of file diff --git a/code/app/home/view/kuangyu/Pc/Public/hostListImg.html b/code/app/home/view/kuangyu/Pc/Public/hostListImg.html new file mode 100644 index 0000000..35991a3 --- /dev/null +++ b/code/app/home/view/kuangyu/Pc/Public/hostListImg.html @@ -0,0 +1,15 @@ + \ No newline at end of file diff --git a/code/app/home/view/kuangyu/Pc/Public/hostListText.html b/code/app/home/view/kuangyu/Pc/Public/hostListText.html new file mode 100644 index 0000000..2dd4c25 --- /dev/null +++ b/code/app/home/view/kuangyu/Pc/Public/hostListText.html @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/code/app/home/view/kuangyu/Pc/Public/indexBoyNewsList.html b/code/app/home/view/kuangyu/Pc/Public/indexBoyNewsList.html new file mode 100644 index 0000000..bded07a --- /dev/null +++ b/code/app/home/view/kuangyu/Pc/Public/indexBoyNewsList.html @@ -0,0 +1,17 @@ +
  • +

    玻璃焰

    +
    + 美绿哔哔 + 武侠仙侠 + + 玻璃焰 + +

    [已签约实体待上市]【天生坏种x清冷校花】【大学校园、男追女、协议情侣、强制爱、破镜重圆】黎幸在整个西京大学都很有名。 + 高考状元,够美,够穷。这样的人,外貌不是恩赐,是原罪。楼崇,出生即登上金字塔最顶层的存在优越家世,顶级皮囊但却是个十足十的人渣。 + ——这样两个毫无交集的人,某天却被人撞见楼崇的阿斯顿马丁车内黎幸被单手抱起跨坐在腿上,后背抵着方向盘车窗光影交错,男人冷白精致的侧脸清晰可见,扣着她的手腕,亲自教她怎么扯开自己的领结。 + —— “协议女友,知道什么意思吗?” “意思是牵手,接吻,拥抱,上床。” “以及,爱上我。” “一步不能少。”—— “玻璃焰,玻璃高温产生的火焰,银蓝色,很美。” + 本站提示:各位书友要是觉得《玻璃焰》还不错的话请不要忘记向您QQ群和微博里的朋友推荐哦!

    +
    +
  • \ No newline at end of file diff --git a/code/app/home/view/kuangyu/Pc/Public/indexBoyNewsOne.html b/code/app/home/view/kuangyu/Pc/Public/indexBoyNewsOne.html new file mode 100644 index 0000000..300db10 --- /dev/null +++ b/code/app/home/view/kuangyu/Pc/Public/indexBoyNewsOne.html @@ -0,0 +1,44 @@ +
    +

    渣攻的白月光总对我打直球

    + + 渣攻的白月光总对我打直球 + +
    +
    + 作者:不见仙踪 + 分类:武侠仙侠 + 字数:24.20万字+ + 进度:已完结 + 总点击:0 +
    +

    【下本开《分手后四个鬼攻同时找上我》嗷~】 大二上学期,宣从南被一个温柔至极的男人追求;大二下学期,宣从南和沈迁在一起。 + 两个人谈了一年恋爱,宣从南发现,沈迁照常温柔,但他却常常把这样的话挂在嘴边: “不要笑。” “安静一点。” “不要太闹腾。” “眼里不要有温度。” “这样才像他。” 宣从南:……哦。 + 宣从南走了,潇洒果决,晚上却在路边捡到一个看起来落魄至极的男人。他耷拉着眉眼,带口罩,安静地坐在花坛边,似乎是在晒月光。 这人倒是很安静,还不笑,更不闹腾,眼里也没有温度。 + 宣从南把人捡回家了。他发现,这个名叫顾拾的男人竟然是娱乐圈里的顶流,只不过他不太关注娱乐圈,这才错误地把拥有千万粉丝的人捡回了家。 + 宣从南还发现,顾拾虽然过分冷淡,但他打直球说能不能喜欢我;顾拾虽然安静不闹腾,但他打直球说能不能抱抱我;顾拾虽然眼睛里没什么温度,但他打直球说能不能做…… 宣从南:这就是顶流吗? + “同居”段时间,两人顺理成章地谈恋爱。 又同居段时间,宣从南忽而得知顾拾就是沈迁爱而不得的白月光。 宣从南:……命运啊。 + 为了避免尴尬,他收拾行李又打算跑,刚走到门口却只听一道开门声,顾拾裹挟着外面的寒气进来,轻轻带上门。 宣从南:…… 顾拾冷淡的目光从上到下打量他,最后落在行李箱上。 “去哪儿?”他问。 + 宣从南捏紧行李杆,正欲说话,顾拾又道: “你想甩了我?” …… 这天晚上有狗仔拍到顾拾进了一间出租屋。 除了顾拾,窗户玻璃上还映出另外一道男性身影,他手边还有个行李箱。 + 紧接着,一向喜怒不形于色的顾拾猛地推开行李箱,拽起另一人的手腕去了卧室。 一夜没出来。 【阅读指南】: *1V1,HE,甜文。 *攻非常非常非常爱受,非常非常非常宠受 + *攻能直球绿茶也能偏执疯批,属性复杂,天使们直接看文叭 *有打脸剧情 *无原型,勿代入现实。我写文为了快乐,也只想让读者快乐~ *感谢支持正版,给大家鞠躬啦~ + ★下本《分手后四个鬼攻同时找上我》求收藏~ 宴祀亭是个小道士,山生山长,没见过外面的天,最大的雄心壮志是杀死鬼王。 但他怕鬼,还花心。 下山后进城,他在酒吧泡了一个大学教授做男朋友。 + 教授克制古板,一副性冷淡的模样。 但他“暴力”且沉沦地教会了宴祀亭在床上的108种姿势。 每天晚上宴祀亭都被哔的“身心俱散”。 随着感情渐深,教授带宴祀亭回家见父母。 他家里有鬼,好多鬼。 + 那些鬼躲在门外、趴在床底听他和教授...... 宴祀亭瑟瑟发抖,教授却像没事人,依然一次比一次深入。 宴祀亭:师父救命—— + 日复一日,教授变得愈发过分。他中午要抱宴祀亭亲昵,下午要抱宴祀亭厮磨,晚上要抱宴祀亭深入交流,非常不节制。 最后他还设门禁时间限制宴祀亭的出行,控制欲极强。 宴祀亭受不了,把人踹了。 + 他谈了第二个男朋友。 但为什么温柔先生最后因他变得野蛮,各种道具都上场; 绅士先生因他变成恶棍,让他不准离开自己的视线; 禁欲先生因他变得纵荡,永远都要按着他驰骋...... + 宴祀亭:师父我遇到了好多变态,我要回山立刻马上! 身心遭受“严重摧残”的宴祀亭决定封心锁爱,这辈子都不要泡男人了,要去完成自己的雄心壮志——杀死鬼王。 + 紧接着被甩的教授将他堵在家门口,唇角带笑声含魅:“不是要杀我吗?我来了。” 晦暗夜色下,教授身后又慢慢浮现出温柔先生、绅士先生、禁欲先生的身影,他们都在盯着宴祀亭。 + 教授柔声道:“你是要我们一起来,还是一个一个来呢。” 宴祀亭抖如筛糠无可逃脱地被他们推进了卧室。恶鬼们商量谁先来,最后愉快地决定一起。 “不要,救命啊啊啊啊啊啊啊啊啊——” *切片攻 + *所有躲门外趴床底听床戏的,都是攻的切片 ★求预收《不是人也能攻我?》收藏~ 司徒禁肩宽窄腰身材好,胸肌饱满腿长,在男同界是被许多人觊觎的优质1。 + 有人找司徒禁拍钙片,身为直男的司徒禁果断拒绝。 等再醒来,司徒禁发现他穿到了异世界。 这里到处是妖魔鬼怪。 + 司徒禁有个极倒霉的倒霉体质,喝凉水塞牙缝,吃东西噎喉咙,睡觉能窒息。再又一次平地摔跤后,司徒禁气得破口大骂。 那些神经病又来了。 玛德,这次还敢撕他衣服! + 这个世界不止他一个倒霉蛋,还有ABCDE等男人进来了。 老乡见老乡两眼泪汪汪,司徒禁和大家互相扶持,把这群想上他的变态杀得四处逃窜。 然后有一天,司徒禁看见男人 A 帮鬼撕碎了他的上衣。 + 司徒禁:? 男人B帮鬼扯烂了他的裤子。 司徒禁:?? 男人C帮鬼拽掉了他的衬衫夹。 司徒禁:??? 混乱中,谁摸了他的胸肌! 谁捏了他的屁股!! 谁掰开了他的腿!!! + 司徒禁冷笑:想攻我的千千万,你算哪块小饼干?! ABCDE 得逞,鬼得逞,怪物藤蔓得手,触手得逞...... 被迫野战后司徒禁躺在草地里抽事后烟,沉思:是个人都能攻我?不是人也能攻我? + 而他不知道,他进入的异世界其实是一个系列视频,无数观众坐在电视机前,每天就为了看他闯关。 司徒禁:什么关?“床”关吗? *切片攻,每个都为了受打得头破血流,甚至想杀了自己的分身 + *受极度理智冷静大胸美人 *攻疯得一批,每个切片都想独占囚禁受 *直播镜头前的观众只能看正经闯关,其他的看不到,花钱做榜一也没用 + 本站提示:各位书友要是觉得《渣攻的白月光总对我打直球》还不错的话请不要忘记向您QQ群和微博里的朋友推荐哦!

    +
    +
    \ No newline at end of file diff --git a/code/app/home/view/kuangyu/Pc/Public/indexBoyRankList.html b/code/app/home/view/kuangyu/Pc/Public/indexBoyRankList.html new file mode 100644 index 0000000..6afa01c --- /dev/null +++ b/code/app/home/view/kuangyu/Pc/Public/indexBoyRankList.html @@ -0,0 +1,16 @@ +
  • + {$key+=1} +

    娱乐宗师

    +
    + + 娱乐宗师 + +
    + 作者:猩猩崛起 + 类别:武侠仙侠 +

    小工作室的微电影导演,重生平行世界!踏上娱乐征途! + 本站提示:各位书友要是觉得《娱乐宗师》还不错的话请不要忘记向您QQ群和微博里的朋友推荐哦!

    +
    +
    +
  • \ No newline at end of file diff --git a/code/app/home/view/kuangyu/Pc/Public/indexBoyRankOne.html b/code/app/home/view/kuangyu/Pc/Public/indexBoyRankOne.html new file mode 100644 index 0000000..48ef8c7 --- /dev/null +++ b/code/app/home/view/kuangyu/Pc/Public/indexBoyRankOne.html @@ -0,0 +1,26 @@ +
  • + 1 +

    捻转步舞曲[花滑] +

    +
    + + 捻转步舞曲[花滑] + +
    + 作者:梧桐树下wt + 类别:武侠仙侠 +

    【本文将会于2023年9月30日星期六入V,谢谢支持!】 【求投票——《成长·逆袭》主题征文——作品投票——鱼跃龙门后来居上】 + 【每5K营养液加更一章】 作为刚升组没多久,在华国内难得可以跳跃演绎两手抓的男子单人花滑选手,郁辰被队里的教练们给予极大的厚望。 + 并且整个教练团也在想尽各种方法教导这位,冰上冰下两个样子,经常会躲起来不见人的闷葫芦。 “到底有什么办法,能让那家伙在冰下的时候,有上冰那会百分之一的灵气啊!” + 只有郁辰他本人知道——他无论什么时候,都爱惨了艺术与冰面结合起来的样子。 ——只是台下之后,不会表达而已。 + 一切的变动,从他没忍住在莫斯科赛后偷瞒着教练,去看了一场芭蕾舞舞台剧之后。 追着一见钟情的男孩来到异国,并且努力学了中文的佐切卡:你好,郁!能我你拥抱? + 沉思了好久,才理清楚他语法顺序的郁辰:你学顺了中文再和我说话吧。 佐切卡(惊喜):那就是可以了! + 于是某位男单运动员就被纤细高挑练跳舞的熊抱住了一个下午,跑都跑不掉。 来自莫斯科的芭蕾舞者X略显自闭的花滑选手 1、故事里面所有人物故事,经历都没有原型。 + 2、作者对于花滑的认知还没有到完全专业水平,但是所有技术动作描写,比赛规则描述,都有资料支持。 + 3、如果有技术问题需要讨论可以随时留评,我看到后会回复的。看了每章词汇解释还是不懂的话也可以留评,我会想办法换一种解释试试看的(作者是真想教会你们滑冰系列)。 + 4、最重要一点——无论怎么样的情感下,都请不要轻易怀疑运动员对该项目的热爱。 5、停在‘4’好像不太好,所以写了个‘5’。 + 本站提示:各位书友要是觉得《捻转步舞曲[花滑]》还不错的话请不要忘记向您QQ群和微博里的朋友推荐哦!

    +
    +
    +
  • \ No newline at end of file diff --git a/code/app/home/view/kuangyu/Pc/Public/indexNewsUpdateList.html b/code/app/home/view/kuangyu/Pc/Public/indexNewsUpdateList.html new file mode 100644 index 0000000..be6b631 --- /dev/null +++ b/code/app/home/view/kuangyu/Pc/Public/indexNewsUpdateList.html @@ -0,0 +1,12 @@ +
  • + +
  • \ No newline at end of file diff --git a/code/app/home/view/kuangyu/Pc/Public/shukuNovelList.html b/code/app/home/view/kuangyu/Pc/Public/shukuNovelList.html new file mode 100644 index 0000000..71bc1f2 --- /dev/null +++ b/code/app/home/view/kuangyu/Pc/Public/shukuNovelList.html @@ -0,0 +1,32 @@ +
  • + + 落魄千金美食发家日常 + +
    +

    落魄千金美食发家日常

    +

    + 作者:鱼昆子 + 分类:男生 + 状态:已完结 + 总字数:43.80万字+ +

    +

    + 标签: + +

    +

    最近更新:219 桃花酿 +

    +

    正文已完结,福利番外待续! 预收《癫疯人生有多爽你知道吗》《当家主母的咸鱼美食日常》戳专栏求收藏。 ——————— 温仲夏身为百万粉丝美食博主,一朝穿越。 + 好消息,穿成尚书千金。 坏消息,父兄获罪被贬到千里之外。 身边只有一个柔弱的嫂嫂和年幼的小弟。 开局就是一个交不上房租,大雪天几乎要流落街头的惨境。 温仲夏来不及哭,撸起袖子就是干。 + 红烧肉火锅烧烤爆米花卷饼卤肉奶茶小蛋糕…… 她就不信这些东京人都不爱吃。 不成的话,她还有麻辣烫烤鸭炸鸡酸辣粉炸酱面汤圆大馄饨…… 一不小心,落魄千金混成东京知名女掌柜。 …… 小剧场: + 一众贵女听闻温仲夏当街叫卖吃食后,纷纷对她这种抛头露面的行为狠狠批判。 几天后,她们却在温仲夏的食店门口不期而遇。 “你怎么来了,不会是来买蛋挞的吧?” “难道你也是?” + “我可不是,我还要买奶油蛋糕呢。” 说好的不齿与之为伍呢? 这时店内传来吆喝:“数量有限,先到先得。” 贵女们忙不迭地往里冲。 “我先来的!” ①本文主线是美食和日常。 + ②背景主要参考宋朝,不严谨的地方请见谅。 + 本站提示:各位书友要是觉得《落魄千金美食发家日常》还不错的话请不要忘记向您QQ群和微博里的朋友推荐哦!

    +
    +
    + 更新时间:2025-03-20 23:59 + 立即阅读 +
    +
  • \ No newline at end of file diff --git a/code/app/home/view/kuangyu/Pc/Public/swiperListImg.html b/code/app/home/view/kuangyu/Pc/Public/swiperListImg.html new file mode 100644 index 0000000..c4e378a --- /dev/null +++ b/code/app/home/view/kuangyu/Pc/Public/swiperListImg.html @@ -0,0 +1,7 @@ +
  • + + 落魄千金美食发家日常 + +
  • diff --git a/code/app/home/view/kuangyu/Pc/Public/swiperListText.html b/code/app/home/view/kuangyu/Pc/Public/swiperListText.html new file mode 100644 index 0000000..f1fd07f --- /dev/null +++ b/code/app/home/view/kuangyu/Pc/Public/swiperListText.html @@ -0,0 +1,6 @@ +
  • + +1 +落魄千金美食发家日常 +
  • \ No newline at end of file diff --git a/code/app/home/view/kuangyu/Pc/User/getBookShelf.html b/code/app/home/view/kuangyu/Pc/User/getBookShelf.html new file mode 100644 index 0000000..fdce419 --- /dev/null +++ b/code/app/home/view/kuangyu/Pc/User/getBookShelf.html @@ -0,0 +1,42 @@ +{extend name="basePcUser" /} +{block name='nav-active-class'}home{/block} +{block name="title"}{/block} +{block name="head-js"}{/block} + + +{block name="main"} +
    + +
    + 我的书架 +
    +
    + + + + + + + + + + + + {foreach $arrNewsNovel as $key=>$Novel} + {include file="Pc/Public/historyNovelList" /} + {/foreach} + + +
    封面书名最新章节作者更新时间状态操作
    +
    +
    +
    +
    +
    +
    +
    +
    + +{/block} + +{block name="customize"} {/block} \ No newline at end of file diff --git a/code/app/home/view/kuangyu/Pc/User/getHistory.html b/code/app/home/view/kuangyu/Pc/User/getHistory.html new file mode 100644 index 0000000..9b3c8ef --- /dev/null +++ b/code/app/home/view/kuangyu/Pc/User/getHistory.html @@ -0,0 +1,42 @@ +{extend name="basePcUser" /} +{block name='nav-active-class'}home{/block} +{block name="title"}{/block} +{block name="head-js"}{/block} + + +{block name="main"} +
    +
    + 最近阅读 +
    +
    + + + + + + + + + + + + {foreach $arrNewsNovel as $key=>$Novel} + {include file="Pc/Public/historyNovelList" /} + + {/foreach} + +
    封面书名最新章节作者更新时间状态操作
    +
    +
    +
    +
    +
    +
    +
    +
    + + +{/block} + +{block name="customize"} {/block} \ No newline at end of file diff --git a/code/app/home/view/kuangyu/Pc/User/index.html b/code/app/home/view/kuangyu/Pc/User/index.html new file mode 100644 index 0000000..3fdf0ad --- /dev/null +++ b/code/app/home/view/kuangyu/Pc/User/index.html @@ -0,0 +1,143 @@ +{extend name="basePcUser" /} +{block name='nav-active-class'}home{/block} +{block name="title"}{/block} +{block name="head-js"}{/block} + + +{block name="main"} +
    + +
    + +
    +
    +
    + 我的书架 + 查看更多>> +
    + +
    +
    +
    + 最近阅读 + 查看更多>> +
    + +
    +
    +
    + 热读作品 +
      +
    • +
    • +
    • +
    +
    +
    + {foreach $arrNewsNovel as $key=>$Novel} + + {/foreach} + +
    +
    +
    + +
    +
    +
    推荐作品
    +
      + {foreach $arrNewsNovel as $key=>$Novel} +
    • + + + +

      + + 我真是一条龙 + + + 兔子很淡定 + + + 我的父亲告诉我,在我出生那一年,天上金光闪耀,隐隐约约中,好像能看到云朵里有条龙在盘旋,紧接着,一道金光照入我们的村子,我便出生了……为寻答案来人间,天龙问世扰乾坤。 + 无情无义闹天下,千军万马赴黄泉。 + 本站提示:各位书友要是觉得《我真是一条龙》还不错的话请不要忘记向您QQ群和微博里的朋友推荐哦! +

      +
    • + {/foreach} + +
    +
    +
    +
    +
    +{/block} + +{block name="customize"} {/block} \ No newline at end of file diff --git a/code/app/home/view/kuangyu/Pc/getBookShelf.html b/code/app/home/view/kuangyu/Pc/getBookShelf.html new file mode 100644 index 0000000..d907894 --- /dev/null +++ b/code/app/home/view/kuangyu/Pc/getBookShelf.html @@ -0,0 +1,39 @@ +{extend name="baseH5" /} +{block name='nav-active-class'}home{/block} +{block name="title"}{/block} +{block name="head-js"}{/block} + +{block name="logo-html"} +

    + 狂雨小说 +

    +{/block} + +{block name="main"} +
    + +
    +
    +

    我的书架

    + 管理 + 完成 +
    +
    +
      + {foreach $arrNewsNovel as $category} + {include file="Public/novelListH" /} + {/foreach} +
    +
    +
    +{/block} + +{block name="customize"} {/block} \ No newline at end of file diff --git a/code/app/home/view/kuangyu/Pc/getBoyNovel.html b/code/app/home/view/kuangyu/Pc/getBoyNovel.html new file mode 100644 index 0000000..18a4610 --- /dev/null +++ b/code/app/home/view/kuangyu/Pc/getBoyNovel.html @@ -0,0 +1,81 @@ +{extend name="basePc" /} +{block name='nav-active-class'}boy{/block} +{block name="title"}{/block} +{block name="head-js"}{/block} + + +{block name="main"} + +
    + + +
    +
    + +

    热门推荐

    + +
    +
      + {foreach $arrRecommendSerializationNovel as $key=>$Novel} + {include file="Pc/Public/endNovelList" /} + {/foreach} + +
    +
    +
    + {foreach $arrAdBanner as $key=>$Novel} + {include file="Pc/Public/adBanner" /} + {/foreach} +
    + + + + +
    +
    +

    完本推荐

    +
    +
      + {foreach $arrRecommendEndNovel as $key=>$Novel} + {include file="Pc/Public/endNovelList" /} + {/foreach} +
    +
    + +
    + {foreach $arrAdBanner as $key=>$Novel} + {include file="Pc/Public/adBanner" /} + {/foreach} +
    + +
    +
    + +

    作品更新

    + +
    +
    +
    +
      +
    1. +
        +
      • 类别
      • +
      • 书名
      • +
      • 最新更新章节
      • +
      • 作者
      • +
      • 更新时间
      • +
      +
    2. + {foreach $arrNewsUpdateNovel as $key=>$Novel} + {if $key >= 1} + {include file="Pc/Public/indexNewsUpdateList" /} + {/if} + {/foreach} +
    +
    +
    +
    +
    +{/block} + +{block name="customize"} {/block} \ No newline at end of file diff --git a/code/app/home/view/kuangyu/Pc/getLibrary.html b/code/app/home/view/kuangyu/Pc/getLibrary.html new file mode 100644 index 0000000..2018def --- /dev/null +++ b/code/app/home/view/kuangyu/Pc/getLibrary.html @@ -0,0 +1,111 @@ +{extend name="basePc" /} +{block name='nav-active-class'}home{/block} +{block name="title"}{/block} +{block name="head-js"}{/block} + + +{block name="main"} +
    + +
    +
    +
    + + + 搜索 +
    +
    +
    +
    + 所属频道 + +
    +
    + 所属分类 + +
    +
    + 是否完结 + +
    + +
    + 更新时间 + +
    +
    + 排序方式 + +
    +
    +
    + + + +
    +
      + {foreach $arrNovel as $key=>$Novel} + {include file="Pc/Public/shukuNovelList" /} + {/foreach} +
    + +
    + +
    + +
    + +
    +{/block} + +{block name="customize"} {/block} \ No newline at end of file diff --git a/code/app/home/view/kuangyu/Pc/getNovelChapter.html b/code/app/home/view/kuangyu/Pc/getNovelChapter.html new file mode 100644 index 0000000..bd81280 --- /dev/null +++ b/code/app/home/view/kuangyu/Pc/getNovelChapter.html @@ -0,0 +1,411 @@ + + + + + + + + 01 天龙问世_我真是一条龙-狂雨小说 + + + + + +
    +
    +
    +
    + + +
    + +
    +
    +
    + 首页 + + 女生 + + 耽美百合 + + 我真是一条龙 +
    +
    +
    +
    +
    +
    +

    01 天龙问世

    +
    +
    + 我真是一条龙 + 兔子很淡定 + 2000 + 2025-03-20 23:59 +
    +
    +
    +
    +

      章节内容转码失败!

    +

    +
    +
    +
    + + + +
    + +
    + 上一章 + | + 下一章 +
    +
    +
    +
    +
    +
    +
    + + 目录 + +
    +
    + + 设置 + +
    + +
    + + 书架 + +
    +
    + + 详情 + +
    +
    + + + + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + + + + + + + + \ No newline at end of file diff --git a/code/app/home/view/kuangyu/Pc/getNovelChapterAll.html b/code/app/home/view/kuangyu/Pc/getNovelChapterAll.html new file mode 100644 index 0000000..9687479 --- /dev/null +++ b/code/app/home/view/kuangyu/Pc/getNovelChapterAll.html @@ -0,0 +1,28 @@ +{extend name="basePc" /} +{block name='nav-active-class'}home{/block} +{block name="title"}{/block} +{block name="head-js"}{/block} + + +{block name="main"} +
    +
    +
    +

    落魄千金美食发家日常

    +

    作者:鱼昆子

    +
    +
    +
    章节列表
    +
    +
      + {foreach $arrNovelChapterAll as $category} +
    • 1 穿越
    • + {/foreach} +
    +
    +
    +
    +
    +{/block} + +{block name="customize"} {/block} \ No newline at end of file diff --git a/code/app/home/view/kuangyu/Pc/getNovelInfo.html b/code/app/home/view/kuangyu/Pc/getNovelInfo.html new file mode 100644 index 0000000..9d82740 --- /dev/null +++ b/code/app/home/view/kuangyu/Pc/getNovelInfo.html @@ -0,0 +1,186 @@ +{extend name="basePc" /} +{block name='nav-active-class'}home{/block} +{block name="title"}{/block} +{block name="head-js"}{/block} + + +{block name="main"} +
    + +
    +
    + +
    +
    +

    我真是一条龙

    + 0分 +
    +

    + 作者:兔子很淡定 + 创建日期:2025-03-20 23:59 +

    +
    +

    简介

    +
    +

    + 我的父亲告诉我,在我出生那一年,天上金光闪耀,隐隐约约中,好像能看到云朵里有条龙在盘旋,紧接着,一道金光照入我们的村子,我便出生了……为寻答案来人间,天龙问世扰乾坤。 + 无情无义闹天下,千军万马赴黄泉。 + 本站提示:各位书友要是觉得《我真是一条龙》还不错的话请不要忘记向您QQ群和微博里的朋友推荐哦!

    + 展开 + +
    +
    +
    +

    精简阅读

    +
    +

    + 我的父亲告诉我,在我出生那一年,天上金光闪耀,隐隐约约中,好像能看到云朵里有条龙在盘旋,紧接着,一道金光照入我们的村子,我便出生了……为寻答案来人间,天龙问世扰乾坤。 + 无情无义闹天下,千军万马赴黄泉。 + 本站提示:各位书友要是觉得《我真是一条龙》还不错的话请不要忘记向您QQ群和微博里的朋友推荐哦!

    + 展开 + +
    +
    + + +
    +
    +
    +
    +

    小说信息

    +

    类别:耽美百合

    +

    总字数:54.20万+

    +

    总点击量:0

    +

    月点击量:0

    +

    周点击量:0

    +

    日点击量:0

    +

    收藏:0

    +
    +
    +

    作者其他作品

    +
    +
      +
    +
    +
    +
    +
    + + +
    + + + + +
    +
    +

    精品推荐

    +
      + {foreach $arrRecommendNovel as $key=>$Novel} +
    • +

      我真是一条龙

      +
      + + 我真是一条龙 + +
      + 兔子很淡定 + 耽美百合 +

      + 我的父亲告诉我,在我出生那一年,天上金光闪耀,隐隐约约中,好像能看到云朵里有条龙在盘旋,紧接着,一道金光照入我们的村子,我便出生了……为寻答案来人间,天龙问世扰乾坤。 + 无情无义闹天下,千军万马赴黄泉。 + 本站提示:各位书友要是觉得《我真是一条龙》还不错的话请不要忘记向您QQ群和微博里的朋友推荐哦!

      +
      +
      +
    • + {/foreach} + +
    +
    +
    + +
    +
    + +{/block} + +{block name="customize"} + +{/block} + +{block name="footer-js"} + + +{/block} \ No newline at end of file diff --git a/code/app/home/view/kuangyu/Pc/getNovelRank.html b/code/app/home/view/kuangyu/Pc/getNovelRank.html new file mode 100644 index 0000000..5baed35 --- /dev/null +++ b/code/app/home/view/kuangyu/Pc/getNovelRank.html @@ -0,0 +1,165 @@ +{extend name="basePc" /} +{block name='nav-active-class'}home{/block} +{block name="title"}{/block} +{block name="head-js"}{/block} +{block name='body-class'}body-rank-class{/block} + +{block name="main"} +
    + + + + +
    +
    +
    +

    日点击榜

    +
    +
    +
    +
      + {foreach $arrDayRankNovel as $key=>$Novel} + {if $key == 0} + {include file="Pc/Public/indexBoyRankOne" /} + {/if} + {if $key >= 1} + {include file="Pc/Public/indexBoyRankList" /} + {/if} + {/foreach} +
    +
    + +
    +
    +
    +
    +

    周点击榜

    +
    +
    +
    +
      + {foreach $arrWeekRankNovel as $key=>$Novel} + {if $key == 0} + {include file="Pc/Public/indexBoyRankOne" /} + {/if} + {if $key >= 1} + {include file="Pc/Public/indexBoyRankList" /} + {/if} + {/foreach} +
    +
    + +
    +
    +
    +
    +

    月点击榜

    +
    +
    +
    +
      + {foreach $arrMoonRankNovel as $key=>$Novel} + {if $key == 0} + {include file="Pc/Public/indexBoyRankOne" /} + {/if} + {if $key >= 1} + {include file="Pc/Public/indexBoyRankList" /} + {/if} + {/foreach} +
    +
    + +
    +
    +
    +
    +

    总点击榜

    +
    +
    +
    +
      + {foreach $arrTotalRankNovel as $key=>$Novel} + {if $key == 0} + {include file="Pc/Public/indexBoyRankOne" /} + {/if} + {if $key >= 1} + {include file="Pc/Public/indexBoyRankList" /} + {/if} + {/foreach} +
    +
    + +
    +
    +
    +
    +

    新书榜

    +
    +
    +
    +
      + {foreach $arrNewsNovelRankNovel as $key=>$Novel} + {if $key == 0} + {include file="Pc/Public/indexBoyRankOne" /} + {/if} + {if $key >= 1} + {include file="Pc/Public/indexBoyRankList" /} + {/if} + {/foreach} +
    +
    + +
    +
    +
    +
    +

    完结榜

    +
    +
    +
    +
      + {foreach $arrEdnNovelRankNovel as $key=>$Novel} + {if $key == 0} + {include file="Pc/Public/indexBoyRankOne" /} + {/if} + {if $key >= 1} + {include file="Pc/Public/indexBoyRankList" /} + {/if} + {/foreach} +
    +
    + +
    +
    +
    + +
    +{/block} + +{block name="customize"} {/block} \ No newline at end of file diff --git a/code/app/home/view/kuangyu/Pc/getSearchNovel.html b/code/app/home/view/kuangyu/Pc/getSearchNovel.html new file mode 100644 index 0000000..e5a3892 --- /dev/null +++ b/code/app/home/view/kuangyu/Pc/getSearchNovel.html @@ -0,0 +1,68 @@ +{extend name="basePc" /} +{block name='nav-active-class'}home{/block} +{block name="title"}{/block} +{block name="head-js"}{/block} + + +{block name="main"} +
    + +
    +
    +
    + + + 搜索 +
    +
    +
    + + + +
    +
      + {foreach $arrSearchNovel as $key=>$Novel} +
    • + + 1秒1技能点,你说我凡阶天赋修炼慢? + +
      +

      + 11技能点,你说我凡阶天赋修炼慢? +

      +

      + 作者:青城老鬼 + 分类: + 状态:已完结 + 总字数:38.00万字+ +

      +

      + 标签: + +

      +

      最近更新:第190章 武破虚空,新的开始

      +

      深海中潜藏的巨兽掀起灭世海啸!山间凶兽朝着钢铁巨城露出凶猛的獠牙。 即将参加高考的武道学生徐天觉醒深红系统。却没想觉醒日被未婚妻强行退婚,面对众人诋毁,未婚妻的鄙视。 + 地阶天赋又如何,深红,给我加点! + 本站提示:各位书友要是觉得《1秒1技能点,你说我凡阶天赋修炼慢?》还不错的话请不要忘记向您QQ群和微博里的朋友推荐哦!

      +
      +
      + 更新时间:2025-03-20 23:57 + 立即阅读 +
      +
    • + {/foreach}
    + +
    +
    + +
    + +
    +{/block} + +{block name="customize"} {/block} \ No newline at end of file diff --git a/code/app/home/view/kuangyu/Pc/getSeoInfo.html b/code/app/home/view/kuangyu/Pc/getSeoInfo.html new file mode 100644 index 0000000..172afb8 --- /dev/null +++ b/code/app/home/view/kuangyu/Pc/getSeoInfo.html @@ -0,0 +1,29 @@ +{extend name="baseH5" /} +{block name='nav-active-class'}home{/block} +{block name="title"}{/block} +{block name="head-js"}{/block} + +{block name="logo-html"} +

    + 狂雨小说 +

    +{/block} + +{block name="main"} +
    + +
    +
    +

    深度解说列表

    +
    +
    +
      + {foreach $arrNewsNovel as $key2 => $vo} + {include file="Public/novelListRank" /} + {/foreach} +
    +
    +
    +{/block} + +{block name="customize"} {/block} \ No newline at end of file diff --git a/code/app/home/view/kuangyu/Pc/getSeoList.html b/code/app/home/view/kuangyu/Pc/getSeoList.html new file mode 100644 index 0000000..423dc98 --- /dev/null +++ b/code/app/home/view/kuangyu/Pc/getSeoList.html @@ -0,0 +1,89 @@ +{extend name="basePc" /} +{block name='nav-active-class'}home{/block} +{block name="title"}{/block} +{block name="head-js"}{/block} + + +{block name="main"} +
    + + +
    + +
    + + + +
    +
    + + +
    + +
    +
    +
      +
    1. +
        +
      • 分类
      • +
      • 书名
      • +
      • 描述
      • +
      • 作者
      • +
      • 更新时间
      • +
      +
    2. + {foreach $arrNewsNovel as $key=>$Novel} + {if $key >= 1} + {include file="Pc/Public/indexNewsUpdateList" /} + {/if} + {/foreach} +
    +
    +
    +
    + + +
    + + +
    + +
    + +
    + +
    +{/block} + +{block name="customize"} {/block} \ No newline at end of file diff --git a/code/app/home/view/kuangyu/Pc/getUserIndex.html b/code/app/home/view/kuangyu/Pc/getUserIndex.html new file mode 100644 index 0000000..198f188 --- /dev/null +++ b/code/app/home/view/kuangyu/Pc/getUserIndex.html @@ -0,0 +1,143 @@ +{extend name="basePcUser" /} +{block name='nav-active-class'}home{/block} +{block name="title"}{/block} +{block name="head-js"}{/block} + + +{block name="main"} +
    + +
    + +
    +
    +
    + 我的书架 + 查看更多>> +
    + +
    +
    +
    + 最近阅读 + 查看更多>> +
    + +
    +
    +
    + 热读作品 +
      +
    • +
    • +
    • +
    +
    +
    + {foreach $arrNewsNovel as $key=>$Novel} + + {/foreach} + +
    +
    +
    + +
    +
    +
    推荐作品
    +
      + {foreach $arrNewsNovel as $key=>$Novel} +
    • + + + +

      + + 我真是一条龙 + + + 兔子很淡定 + + + 我的父亲告诉我,在我出生那一年,天上金光闪耀,隐隐约约中,好像能看到云朵里有条龙在盘旋,紧接着,一道金光照入我们的村子,我便出生了……为寻答案来人间,天龙问世扰乾坤。 + 无情无义闹天下,千军万马赴黄泉。 + 本站提示:各位书友要是觉得《我真是一条龙》还不错的话请不要忘记向您QQ群和微博里的朋友推荐哦! +

      +
    • + {/foreach} + +
    +
    +
    +
    +
    +{/block} + +{block name="customize"} {/block} \ No newline at end of file diff --git a/code/app/home/view/kuangyu/Pc/index.html b/code/app/home/view/kuangyu/Pc/index.html new file mode 100644 index 0000000..eea13e3 --- /dev/null +++ b/code/app/home/view/kuangyu/Pc/index.html @@ -0,0 +1,255 @@ +{extend name="basePc" /} +{block name='nav-active-class'}home{/block} +{block name="title"}{/block} +{block name="head-js"}{/block} + + +{block name="main"} +
    +
    +
    +
    +
      + {foreach $arrRecommendSerializationNovel as $key=>$Novel} + {if $key < 5} {include file="Pc/Public/swiperListImg" /} {/if} {/foreach}
    +
    +
      + {foreach $arrRecommendSerializationNovel as $key=>$Novel} + {if $key < 5} {include file="Pc/Public/swiperListText" /} {/if} {/foreach} +
    +
    +

    落魄千金美食发家日常

    +

    正文已完结,福利番外待续! 预收《癫疯人生有多爽你知道吗》《当家主母的咸鱼美食日常》戳专栏求收藏。 ——————— 温仲夏身为百万粉丝美食博主,一朝穿越。 + 好消息,穿成尚书千金。 坏消息,父兄获罪被贬到千里之外。 身边只有一个柔弱的嫂嫂和年幼的小弟。 开局就是一个交不上房租,大雪天几乎要流落街头的惨境。 温仲夏来不及哭,撸起袖子就是干。 + 红烧肉火锅烧烤爆米花卷饼卤肉奶茶小蛋糕…… 她就不信这些东京人都不爱吃。 不成的话,她还有麻辣烫烤鸭炸鸡酸辣粉炸酱面汤圆大馄饨…… 一不小心,落魄千金混成东京知名女掌柜。 …… + 小剧场: + 一众贵女听闻温仲夏当街叫卖吃食后,纷纷对她这种抛头露面的行为狠狠批判。 几天后,她们却在温仲夏的食店门口不期而遇。 “你怎么来了,不会是来买蛋挞的吧?” “难道你也是?” + “我可不是,我还要买奶油蛋糕呢。” 说好的不齿与之为伍呢? 这时店内传来吆喝:“数量有限,先到先得。” 贵女们忙不迭地往里冲。 “我先来的!” ①本文主线是美食和日常。 + ②背景主要参考宋朝,不严谨的地方请见谅。 + 本站提示:各位书友要是觉得《落魄千金美食发家日常》还不错的话请不要忘记向您QQ群和微博里的朋友推荐哦!

    +
    +
    +
    + {foreach $arrRecommendSerializationNovel as $key=>$Novel} + {if $key > 4 && $key < 9} + {include file="Pc/Public/hostListImg" /} + {/if} + {/foreach} + {foreach $arrRecommendSerializationNovel as $key=>$Novel} + {if $key > 8 } + {include file="Pc/Public/hostListText" /} + {/if} + {/foreach} + +
    +
    + +
    +
    + +

    完本推荐

    + +
    +
      + {foreach $arrRecommendEndNovel as $key=>$Novel} + {include file="Pc/Public/endNovelList" /} + {/foreach} + +
    +
    + +
    + {foreach $arrAdBanner as $key=>$Novel} + {include file="Pc/Public/adBanner" /} + {/foreach} +
    + + + +
    +
    + +

    男生频道

    + +
    + {foreach $arrBoyNewsNovel as $key=>$Novel} + {if $key == 0} + {include file="Pc/Public/indexBoyNewsOne" /} + {/if} + {/foreach} +
    +
      + {foreach $arrBoyNewsNovel as $key=>$Novel} + {if $key >= 1} + {include file="Pc/Public/indexBoyNewsList" /} + {/if} + {/foreach} +
    +
    +
    +

    + 排行榜 + +

    +
    +
      + {foreach $arrBoyWeekRankNovel as $key=>$Novel} + {if $key == 0} + {include file="Pc/Public/indexBoyRankOne" /} + {/if} + {if $key >= 1} + {include file="Pc/Public/indexBoyRankList" /} + {/if} + {/foreach} +
    + 查看更多 +
    + + +
    +
    + +
    + {foreach $arrAdBanner as $key=>$Novel} + {include file="Pc/Public/adBanner" /} + {/foreach} +
    + +
    +
    + +

    女生频道

    + +
    + {foreach $arrGirlNewsNovel as $key=>$Novel} + {if $key == 0} + {include file="Pc/Public/indexBoyNewsOne" /} + {/if} + {/foreach} +
    +
      + {foreach $arrGirlNewsNovel as $key=>$Novel} + {if $key >= 1} + {include file="Pc/Public/indexBoyNewsList" /} + {/if} + {/foreach} +
    +
    +
    +

    + 排行榜 + +

    +
    +
      + {foreach $arrGirlWeekRankNovel as $key=>$Novel} + {if $key == 0} + {include file="Pc/Public/indexBoyRankOne" /} + {/if} + {if $key >= 1} + {include file="Pc/Public/indexBoyRankList" /} + {/if} + {/foreach} +
    + 查看更多 +
    + + +
    +
    + +
    + {foreach $arrAdBanner as $key=>$Novel} + {include file="Pc/Public/adBanner" /} + {/foreach} +
    + +
    +
    + +

    作品更新

    + +
    +
    +
    +
      +
    1. +
        +
      • 类别
      • +
      • 书名
      • +
      • 最新更新章节
      • +
      • 作者
      • +
      • 更新时间
      • +
      +
    2. + {foreach $arrNewsUpdateNovel as $key=>$Novel} + {if $key >= 1} + {include file="Pc/Public/indexNewsUpdateList" /} + {/if} + {/foreach} +
    +
    +
    +
    +
    +{/block} + +{block name="customize"} {/block} \ No newline at end of file diff --git a/code/app/home/view/kuangyu/Public/chapterTable.html b/code/app/home/view/kuangyu/Public/chapterTable.html new file mode 100644 index 0000000..9f93359 --- /dev/null +++ b/code/app/home/view/kuangyu/Public/chapterTable.html @@ -0,0 +1,3 @@ +
  • + 01 天龙问世 +
  • \ No newline at end of file diff --git a/code/app/home/view/kuangyu/Public/chapterTableAll.html b/code/app/home/view/kuangyu/Public/chapterTableAll.html new file mode 100644 index 0000000..c296f50 --- /dev/null +++ b/code/app/home/view/kuangyu/Public/chapterTableAll.html @@ -0,0 +1,12 @@ +
  • + + 01 天龙问世 + +
  • +
  • + + 02 沧武的小霸王 + +
  • \ No newline at end of file diff --git a/code/app/home/view/kuangyu/Public/footer.html b/code/app/home/view/kuangyu/Public/footer.html new file mode 100644 index 0000000..727e92e --- /dev/null +++ b/code/app/home/view/kuangyu/Public/footer.html @@ -0,0 +1,26 @@ + \ No newline at end of file diff --git a/code/app/home/view/kuangyu/Public/historyNovelList.html b/code/app/home/view/kuangyu/Public/historyNovelList.html new file mode 100644 index 0000000..ca5bf18 --- /dev/null +++ b/code/app/home/view/kuangyu/Public/historyNovelList.html @@ -0,0 +1,19 @@ +
  • + +
    +
    + 我真是一条龙 + 耽美百合 + + + 老读者必看公告!!! + + 4天前 + 继续阅读 + +
    +
    + +
  • \ No newline at end of file diff --git a/code/app/home/view/kuangyu/Public/novelListH.html b/code/app/home/view/kuangyu/Public/novelListH.html new file mode 100644 index 0000000..f594bca --- /dev/null +++ b/code/app/home/view/kuangyu/Public/novelListH.html @@ -0,0 +1,19 @@ +
  • + 我真是一条龙 + 我真是一条龙 +

    + 我的父亲告诉我,在我出生那一年,天上金光闪耀,隐隐约约中,好像能看到云朵里有条龙在盘旋,紧接着,一道金光照入我们的村子,我便出生了……为寻答案来人间,天龙问世扰乾坤。 + 无情无义闹天下,千军万马赴黄泉。 + 本站提示:各位书友要是觉得《我真是一条龙》还不错的话请不要忘记向您QQ群和微博里的朋友推荐哦! +

    +

    + + 作者:兔子很淡定 + + 耽美百合 + + 已完结 +

    +
  • + diff --git a/code/app/home/view/kuangyu/Public/novelListRank.html b/code/app/home/view/kuangyu/Public/novelListRank.html new file mode 100644 index 0000000..83b97dd --- /dev/null +++ b/code/app/home/view/kuangyu/Public/novelListRank.html @@ -0,0 +1,5 @@ +
  • +
    + 我真是一条龙 +
    {$key+=1} +
  • \ No newline at end of file diff --git a/code/app/home/view/kuangyu/Public/novelListS.html b/code/app/home/view/kuangyu/Public/novelListS.html new file mode 100644 index 0000000..2fa923d --- /dev/null +++ b/code/app/home/view/kuangyu/Public/novelListS.html @@ -0,0 +1,10 @@ +
  • + + 落魄千金美食发家日常 + 落魄千金美食发家日常 + + 作者:鱼昆子 + + +
  • \ No newline at end of file diff --git a/code/app/home/view/kuangyu/User/getBookShelf.html b/code/app/home/view/kuangyu/User/getBookShelf.html new file mode 100644 index 0000000..610a01a --- /dev/null +++ b/code/app/home/view/kuangyu/User/getBookShelf.html @@ -0,0 +1,30 @@ +{extend name="baseH5User" /} +{block name='nav-active-class'}home{/block} +{block name="title"}{/block} +{block name="head-js"}{/block} + +{block name="head-name"}我的书架{/block} +{block name="main"} +
    +
    + + 管理 +
    +
    +
    +
      + {foreach $arrNewsNovel as $key => $vo} + + {include file="Public/historyNovelList" /} + + {/foreach} +
    +
    +
    +
    +
    +
    + +{/block} + +{block name="customize"} {/block} \ No newline at end of file diff --git a/code/app/home/view/kuangyu/User/getHistory.html b/code/app/home/view/kuangyu/User/getHistory.html new file mode 100644 index 0000000..1de31c3 --- /dev/null +++ b/code/app/home/view/kuangyu/User/getHistory.html @@ -0,0 +1,30 @@ +{extend name="baseH5User" /} +{block name='nav-active-class'}home{/block} +{block name="title"}{/block} +{block name="head-js"}{/block} + +{block name="head-name"}最近阅读{/block} +{block name="main"} +
    +
    + + 管理 +
    +
    +
    +
      + {foreach $arrNewsNovel as $key => $vo} + + {include file="Public/historyNovelList" /} + + {/foreach} +
    +
    +
    +
    +
    +
    + +{/block} + +{block name="customize"} {/block} \ No newline at end of file diff --git a/code/app/home/view/kuangyu/User/index.html b/code/app/home/view/kuangyu/User/index.html new file mode 100644 index 0000000..e37fe98 --- /dev/null +++ b/code/app/home/view/kuangyu/User/index.html @@ -0,0 +1,60 @@ +{extend name="baseH5User" /} +{block name='nav-active-class'}home{/block} +{block name="title"}{/block} +{block name="head-js"}{/block} + +{block name="head-name"}用户中心{/block} +{block name="main"} +
    +
    +
    + +
    + +
    + +
    + 123456 +
    +
    +
    +
      +
    • 经验0
    • +
    • 积分0
    • +
    • 推荐票0
    • +
    +
    + +
    + +
    + + + +
    +
    + +{/block} + +{block name="customize"} {/block} \ No newline at end of file diff --git a/code/app/home/view/kuangyu/baseH5.html b/code/app/home/view/kuangyu/baseH5.html new file mode 100644 index 0000000..c607ac6 --- /dev/null +++ b/code/app/home/view/kuangyu/baseH5.html @@ -0,0 +1,107 @@ + + + + + + + + 狂雨小说 + + + + + + {block name="head-css"}{/block} + {block name="head-js"}{/block} + + + +
    + {block name="logo-html"}{/block} + + + + + + +
    + + + + + + + + {block name="main"} {site:wz wz="主内容" /}{/block} + + {include file="Public/footer" /} + + {block name="customize"}{/block} + + + + + + + + + + + \ No newline at end of file diff --git a/code/app/home/view/kuangyu/baseH5User.html b/code/app/home/view/kuangyu/baseH5User.html new file mode 100644 index 0000000..9206c2d --- /dev/null +++ b/code/app/home/view/kuangyu/baseH5User.html @@ -0,0 +1,50 @@ + + + + + + 狂雨小说 + + + + + + +
    +
    + + {block name="main"} {/block} + +
    + + + + + + \ No newline at end of file diff --git a/code/app/home/view/kuangyu/basePc.html b/code/app/home/view/kuangyu/basePc.html new file mode 100644 index 0000000..afbb0f1 --- /dev/null +++ b/code/app/home/view/kuangyu/basePc.html @@ -0,0 +1,78 @@ + + + + + + + + + 狂雨小说 + + + {block name="head-css"}{/block} + {block name="head-js"}{/block} + + + + +
    +
    +

    + + 狂雨小说 + +

    + +
    + + +
    +
    +
    + + + {block name="main"} {/block} + + {include file="Pc/Public/footer" /} + + {block name="customize"}{/block} + + + + + + + + {block name="footer-js"}{/block} + + + + \ No newline at end of file diff --git a/code/app/home/view/kuangyu/basePcUser.html b/code/app/home/view/kuangyu/basePcUser.html new file mode 100644 index 0000000..ddab4dd --- /dev/null +++ b/code/app/home/view/kuangyu/basePcUser.html @@ -0,0 +1,131 @@ + + + + + + 狂雨小说 + + + + +
    +
    + + + +
    +
    +
    + +
    +
    +
    + +
    +
    123456
    +
    +
      +
    • + + 经验:0 +
    • +
    • + + 积分:0 +
    • +
    • + + + 推荐票:0 +
    • +
    +
    +
    +

    + + 关注中心 +

    + +

    + + 设置 +

    + +
    + + {block name="main"} {/block} +
    + + + + + + + + \ No newline at end of file diff --git a/code/app/model/AutoSwitchViewModel.php b/code/app/model/AutoSwitchViewModel.php index 2dcf1a5..756ddca 100644 --- a/code/app/model/AutoSwitchViewModel.php +++ b/code/app/model/AutoSwitchViewModel.php @@ -14,6 +14,8 @@ class AutoSwitchViewModel $strDomain = $Request->rootDomain(); + // var_dump($strDomain); + $DomainModel = DomainModel::getDomainByCache($strDomain); $TemplatesModel = TemplatesModel::getValByCode($DomainModel->t_id); diff --git a/code/config/app.php b/code/config/app.php index 41ce8eb..c3a318d 100644 --- a/code/config/app.php +++ b/code/config/app.php @@ -21,6 +21,7 @@ return [ 'admin' => 'admin' ], + // 域名绑定(自动多应用模式有效) 'domain_bind' => [ '*' => 'home', diff --git a/code/public/public/jquery/jquery-3.7.1.min.js b/code/public/public/jquery/jquery-3.7.1.min.js new file mode 100644 index 0000000..1cded40 --- /dev/null +++ b/code/public/public/jquery/jquery-3.7.1.min.js @@ -0,0 +1,4146 @@ +/*! jQuery v3.7.1 | (c) OpenJS Foundation and other contributors | jquery.org/license */ +!function(e, t) { + "use strict"; + "object" == typeof module && "object" == typeof module.exports ? module.exports = e.document ? t(e, !0) : function(e) { + if (!e.document) + throw new Error("jQuery requires a window with a document"); + return t(e) + } + : t(e) +}("undefined" != typeof window ? window : this, function(ie, e) { + "use strict"; + var oe = [] + , r = Object.getPrototypeOf + , ae = oe.slice + , g = oe.flat ? function(e) { + return oe.flat.call(e) + } + : function(e) { + return oe.concat.apply([], e) + } + , s = oe.push + , se = oe.indexOf + , n = {} + , i = n.toString + , ue = n.hasOwnProperty + , o = ue.toString + , a = o.call(Object) + , le = {} + , v = function(e) { + return "function" == typeof e && "number" != typeof e.nodeType && "function" != typeof e.item + } + , y = function(e) { + return null != e && e === e.window + } + , C = ie.document + , u = { + type: !0, + src: !0, + nonce: !0, + noModule: !0 + }; + function m(e, t, n) { + var r, i, o = (n = n || C).createElement("script"); + if (o.text = e, + t) + for (r in u) + (i = t[r] || t.getAttribute && t.getAttribute(r)) && o.setAttribute(r, i); + n.head.appendChild(o).parentNode.removeChild(o) + } + function x(e) { + return null == e ? e + "" : "object" == typeof e || "function" == typeof e ? n[i.call(e)] || "object" : typeof e + } + var t = "3.7.1" + , l = /HTML$/i + , ce = function(e, t) { + return new ce.fn.init(e,t) + }; + function c(e) { + var t = !!e && "length"in e && e.length + , n = x(e); + return !v(e) && !y(e) && ("array" === n || 0 === t || "number" == typeof t && 0 < t && t - 1 in e) + } + function fe(e, t) { + return e.nodeName && e.nodeName.toLowerCase() === t.toLowerCase() + } + ce.fn = ce.prototype = { + jquery: t, + constructor: ce, + length: 0, + toArray: function() { + return ae.call(this) + }, + get: function(e) { + return null == e ? ae.call(this) : e < 0 ? this[e + this.length] : this[e] + }, + pushStack: function(e) { + var t = ce.merge(this.constructor(), e); + return t.prevObject = this, + t + }, + each: function(e) { + return ce.each(this, e) + }, + map: function(n) { + return this.pushStack(ce.map(this, function(e, t) { + return n.call(e, t, e) + })) + }, + slice: function() { + return this.pushStack(ae.apply(this, arguments)) + }, + first: function() { + return this.eq(0) + }, + last: function() { + return this.eq(-1) + }, + even: function() { + return this.pushStack(ce.grep(this, function(e, t) { + return (t + 1) % 2 + })) + }, + odd: function() { + return this.pushStack(ce.grep(this, function(e, t) { + return t % 2 + })) + }, + eq: function(e) { + var t = this.length + , n = +e + (e < 0 ? t : 0); + return this.pushStack(0 <= n && n < t ? [this[n]] : []) + }, + end: function() { + return this.prevObject || this.constructor() + }, + push: s, + sort: oe.sort, + splice: oe.splice + }, + ce.extend = ce.fn.extend = function() { + var e, t, n, r, i, o, a = arguments[0] || {}, s = 1, u = arguments.length, l = !1; + for ("boolean" == typeof a && (l = a, + a = arguments[s] || {}, + s++), + "object" == typeof a || v(a) || (a = {}), + s === u && (a = this, + s--); s < u; s++) + if (null != (e = arguments[s])) + for (t in e) + r = e[t], + "__proto__" !== t && a !== r && (l && r && (ce.isPlainObject(r) || (i = Array.isArray(r))) ? (n = a[t], + o = i && !Array.isArray(n) ? [] : i || ce.isPlainObject(n) ? n : {}, + i = !1, + a[t] = ce.extend(l, o, r)) : void 0 !== r && (a[t] = r)); + return a + } + , + ce.extend({ + expando: "jQuery" + (t + Math.random()).replace(/\D/g, ""), + isReady: !0, + error: function(e) { + throw new Error(e) + }, + noop: function() {}, + isPlainObject: function(e) { + var t, n; + return !(!e || "[object Object]" !== i.call(e)) && (!(t = r(e)) || "function" == typeof (n = ue.call(t, "constructor") && t.constructor) && o.call(n) === a) + }, + isEmptyObject: function(e) { + var t; + for (t in e) + return !1; + return !0 + }, + globalEval: function(e, t, n) { + m(e, { + nonce: t && t.nonce + }, n) + }, + each: function(e, t) { + var n, r = 0; + if (c(e)) { + for (n = e.length; r < n; r++) + if (!1 === t.call(e[r], r, e[r])) + break + } else + for (r in e) + if (!1 === t.call(e[r], r, e[r])) + break; + return e + }, + text: function(e) { + var t, n = "", r = 0, i = e.nodeType; + if (!i) + while (t = e[r++]) + n += ce.text(t); + return 1 === i || 11 === i ? e.textContent : 9 === i ? e.documentElement.textContent : 3 === i || 4 === i ? e.nodeValue : n + }, + makeArray: function(e, t) { + var n = t || []; + return null != e && (c(Object(e)) ? ce.merge(n, "string" == typeof e ? [e] : e) : s.call(n, e)), + n + }, + inArray: function(e, t, n) { + return null == t ? -1 : se.call(t, e, n) + }, + isXMLDoc: function(e) { + var t = e && e.namespaceURI + , n = e && (e.ownerDocument || e).documentElement; + return !l.test(t || n && n.nodeName || "HTML") + }, + merge: function(e, t) { + for (var n = +t.length, r = 0, i = e.length; r < n; r++) + e[i++] = t[r]; + return e.length = i, + e + }, + grep: function(e, t, n) { + for (var r = [], i = 0, o = e.length, a = !n; i < o; i++) + !t(e[i], i) !== a && r.push(e[i]); + return r + }, + map: function(e, t, n) { + var r, i, o = 0, a = []; + if (c(e)) + for (r = e.length; o < r; o++) + null != (i = t(e[o], o, n)) && a.push(i); + else + for (o in e) + null != (i = t(e[o], o, n)) && a.push(i); + return g(a) + }, + guid: 1, + support: le + }), + "function" == typeof Symbol && (ce.fn[Symbol.iterator] = oe[Symbol.iterator]), + ce.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "), function(e, t) { + n["[object " + t + "]"] = t.toLowerCase() + }); + var pe = oe.pop + , de = oe.sort + , he = oe.splice + , ge = "[\\x20\\t\\r\\n\\f]" + , ve = new RegExp("^" + ge + "+|((?:^|[^\\\\])(?:\\\\.)*)" + ge + "+$","g"); + ce.contains = function(e, t) { + var n = t && t.parentNode; + return e === n || !(!n || 1 !== n.nodeType || !(e.contains ? e.contains(n) : e.compareDocumentPosition && 16 & e.compareDocumentPosition(n))) + } + ; + var f = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g; + function p(e, t) { + return t ? "\0" === e ? "\ufffd" : e.slice(0, -1) + "\\" + e.charCodeAt(e.length - 1).toString(16) + " " : "\\" + e + } + ce.escapeSelector = function(e) { + return (e + "").replace(f, p) + } + ; + var ye = C + , me = s; + !function() { + var e, b, w, o, a, T, r, C, d, i, k = me, S = ce.expando, E = 0, n = 0, s = W(), c = W(), u = W(), h = W(), l = function(e, t) { + return e === t && (a = !0), + 0 + }, f = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", t = "(?:\\\\[\\da-fA-F]{1,6}" + ge + "?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+", p = "\\[" + ge + "*(" + t + ")(?:" + ge + "*([*^$|!~]?=)" + ge + "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + t + "))|)" + ge + "*\\]", g = ":(" + t + ")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|" + p + ")*)|.*)\\)|)", v = new RegExp(ge + "+","g"), y = new RegExp("^" + ge + "*," + ge + "*"), m = new RegExp("^" + ge + "*([>+~]|" + ge + ")" + ge + "*"), x = new RegExp(ge + "|>"), j = new RegExp(g), A = new RegExp("^" + t + "$"), D = { + ID: new RegExp("^#(" + t + ")"), + CLASS: new RegExp("^\\.(" + t + ")"), + TAG: new RegExp("^(" + t + "|[*])"), + ATTR: new RegExp("^" + p), + PSEUDO: new RegExp("^" + g), + CHILD: new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + ge + "*(even|odd|(([+-]|)(\\d*)n|)" + ge + "*(?:([+-]|)" + ge + "*(\\d+)|))" + ge + "*\\)|)","i"), + bool: new RegExp("^(?:" + f + ")$","i"), + needsContext: new RegExp("^" + ge + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + ge + "*((?:-\\d)?\\d*)" + ge + "*\\)|)(?=[^-]|$)","i") + }, N = /^(?:input|select|textarea|button)$/i, q = /^h\d$/i, L = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, H = /[+~]/, O = new RegExp("\\\\[\\da-fA-F]{1,6}" + ge + "?|\\\\([^\\r\\n\\f])","g"), P = function(e, t) { + var n = "0x" + e.slice(1) - 65536; + return t || (n < 0 ? String.fromCharCode(n + 65536) : String.fromCharCode(n >> 10 | 55296, 1023 & n | 56320)) + }, M = function() { + V() + }, R = J(function(e) { + return !0 === e.disabled && fe(e, "fieldset") + }, { + dir: "parentNode", + next: "legend" + }); + try { + k.apply(oe = ae.call(ye.childNodes), ye.childNodes), + oe[ye.childNodes.length].nodeType + } catch (e) { + k = { + apply: function(e, t) { + me.apply(e, ae.call(t)) + }, + call: function(e) { + me.apply(e, ae.call(arguments, 1)) + } + } + } + function I(t, e, n, r) { + var i, o, a, s, u, l, c, f = e && e.ownerDocument, p = e ? e.nodeType : 9; + if (n = n || [], + "string" != typeof t || !t || 1 !== p && 9 !== p && 11 !== p) + return n; + if (!r && (V(e), + e = e || T, + C)) { + if (11 !== p && (u = L.exec(t))) + if (i = u[1]) { + if (9 === p) { + if (!(a = e.getElementById(i))) + return n; + if (a.id === i) + return k.call(n, a), + n + } else if (f && (a = f.getElementById(i)) && I.contains(e, a) && a.id === i) + return k.call(n, a), + n + } else { + if (u[2]) + return k.apply(n, e.getElementsByTagName(t)), + n; + if ((i = u[3]) && e.getElementsByClassName) + return k.apply(n, e.getElementsByClassName(i)), + n + } + if (!(h[t + " "] || d && d.test(t))) { + if (c = t, + f = e, + 1 === p && (x.test(t) || m.test(t))) { + (f = H.test(t) && U(e.parentNode) || e) == e && le.scope || ((s = e.getAttribute("id")) ? s = ce.escapeSelector(s) : e.setAttribute("id", s = S)), + o = (l = Y(t)).length; + while (o--) + l[o] = (s ? "#" + s : ":scope") + " " + Q(l[o]); + c = l.join(",") + } + try { + return k.apply(n, f.querySelectorAll(c)), + n + } catch (e) { + h(t, !0) + } finally { + s === S && e.removeAttribute("id") + } + } + } + return re(t.replace(ve, "$1"), e, n, r) + } + function W() { + var r = []; + return function e(t, n) { + return r.push(t + " ") > b.cacheLength && delete e[r.shift()], + e[t + " "] = n + } + } + function F(e) { + return e[S] = !0, + e + } + function $(e) { + var t = T.createElement("fieldset"); + try { + return !!e(t) + } catch (e) { + return !1 + } finally { + t.parentNode && t.parentNode.removeChild(t), + t = null + } + } + function B(t) { + return function(e) { + return fe(e, "input") && e.type === t + } + } + function _(t) { + return function(e) { + return (fe(e, "input") || fe(e, "button")) && e.type === t + } + } + function z(t) { + return function(e) { + return "form"in e ? e.parentNode && !1 === e.disabled ? "label"in e ? "label"in e.parentNode ? e.parentNode.disabled === t : e.disabled === t : e.isDisabled === t || e.isDisabled !== !t && R(e) === t : e.disabled === t : "label"in e && e.disabled === t + } + } + function X(a) { + return F(function(o) { + return o = +o, + F(function(e, t) { + var n, r = a([], e.length, o), i = r.length; + while (i--) + e[n = r[i]] && (e[n] = !(t[n] = e[n])) + }) + }) + } + function U(e) { + return e && "undefined" != typeof e.getElementsByTagName && e + } + function V(e) { + var t, n = e ? e.ownerDocument || e : ye; + return n != T && 9 === n.nodeType && n.documentElement && (r = (T = n).documentElement, + C = !ce.isXMLDoc(T), + i = r.matches || r.webkitMatchesSelector || r.msMatchesSelector, + r.msMatchesSelector && ye != T && (t = T.defaultView) && t.top !== t && t.addEventListener("unload", M), + le.getById = $(function(e) { + return r.appendChild(e).id = ce.expando, + !T.getElementsByName || !T.getElementsByName(ce.expando).length + }), + le.disconnectedMatch = $(function(e) { + return i.call(e, "*") + }), + le.scope = $(function() { + return T.querySelectorAll(":scope") + }), + le.cssHas = $(function() { + try { + return T.querySelector(":has(*,:jqfake)"), + !1 + } catch (e) { + return !0 + } + }), + le.getById ? (b.filter.ID = function(e) { + var t = e.replace(O, P); + return function(e) { + return e.getAttribute("id") === t + } + } + , + b.find.ID = function(e, t) { + if ("undefined" != typeof t.getElementById && C) { + var n = t.getElementById(e); + return n ? [n] : [] + } + } + ) : (b.filter.ID = function(e) { + var n = e.replace(O, P); + return function(e) { + var t = "undefined" != typeof e.getAttributeNode && e.getAttributeNode("id"); + return t && t.value === n + } + } + , + b.find.ID = function(e, t) { + if ("undefined" != typeof t.getElementById && C) { + var n, r, i, o = t.getElementById(e); + if (o) { + if ((n = o.getAttributeNode("id")) && n.value === e) + return [o]; + i = t.getElementsByName(e), + r = 0; + while (o = i[r++]) + if ((n = o.getAttributeNode("id")) && n.value === e) + return [o] + } + return [] + } + } + ), + b.find.TAG = function(e, t) { + return "undefined" != typeof t.getElementsByTagName ? t.getElementsByTagName(e) : t.querySelectorAll(e) + } + , + b.find.CLASS = function(e, t) { + if ("undefined" != typeof t.getElementsByClassName && C) + return t.getElementsByClassName(e) + } + , + d = [], + $(function(e) { + var t; + r.appendChild(e).innerHTML = "", + e.querySelectorAll("[selected]").length || d.push("\\[" + ge + "*(?:value|" + f + ")"), + e.querySelectorAll("[id~=" + S + "-]").length || d.push("~="), + e.querySelectorAll("a#" + S + "+*").length || d.push(".#.+[+~]"), + e.querySelectorAll(":checked").length || d.push(":checked"), + (t = T.createElement("input")).setAttribute("type", "hidden"), + e.appendChild(t).setAttribute("name", "D"), + r.appendChild(e).disabled = !0, + 2 !== e.querySelectorAll(":disabled").length && d.push(":enabled", ":disabled"), + (t = T.createElement("input")).setAttribute("name", ""), + e.appendChild(t), + e.querySelectorAll("[name='']").length || d.push("\\[" + ge + "*name" + ge + "*=" + ge + "*(?:''|\"\")") + }), + le.cssHas || d.push(":has"), + d = d.length && new RegExp(d.join("|")), + l = function(e, t) { + if (e === t) + return a = !0, + 0; + var n = !e.compareDocumentPosition - !t.compareDocumentPosition; + return n || (1 & (n = (e.ownerDocument || e) == (t.ownerDocument || t) ? e.compareDocumentPosition(t) : 1) || !le.sortDetached && t.compareDocumentPosition(e) === n ? e === T || e.ownerDocument == ye && I.contains(ye, e) ? -1 : t === T || t.ownerDocument == ye && I.contains(ye, t) ? 1 : o ? se.call(o, e) - se.call(o, t) : 0 : 4 & n ? -1 : 1) + } + ), + T + } + for (e in I.matches = function(e, t) { + return I(e, null, null, t) + } + , + I.matchesSelector = function(e, t) { + if (V(e), + C && !h[t + " "] && (!d || !d.test(t))) + try { + var n = i.call(e, t); + if (n || le.disconnectedMatch || e.document && 11 !== e.document.nodeType) + return n + } catch (e) { + h(t, !0) + } + return 0 < I(t, T, null, [e]).length + } + , + I.contains = function(e, t) { + return (e.ownerDocument || e) != T && V(e), + ce.contains(e, t) + } + , + I.attr = function(e, t) { + (e.ownerDocument || e) != T && V(e); + var n = b.attrHandle[t.toLowerCase()] + , r = n && ue.call(b.attrHandle, t.toLowerCase()) ? n(e, t, !C) : void 0; + return void 0 !== r ? r : e.getAttribute(t) + } + , + I.error = function(e) { + throw new Error("Syntax error, unrecognized expression: " + e) + } + , + ce.uniqueSort = function(e) { + var t, n = [], r = 0, i = 0; + if (a = !le.sortStable, + o = !le.sortStable && ae.call(e, 0), + de.call(e, l), + a) { + while (t = e[i++]) + t === e[i] && (r = n.push(i)); + while (r--) + he.call(e, n[r], 1) + } + return o = null, + e + } + , + ce.fn.uniqueSort = function() { + return this.pushStack(ce.uniqueSort(ae.apply(this))) + } + , + (b = ce.expr = { + cacheLength: 50, + createPseudo: F, + match: D, + attrHandle: {}, + find: {}, + relative: { + ">": { + dir: "parentNode", + first: !0 + }, + " ": { + dir: "parentNode" + }, + "+": { + dir: "previousSibling", + first: !0 + }, + "~": { + dir: "previousSibling" + } + }, + preFilter: { + ATTR: function(e) { + return e[1] = e[1].replace(O, P), + e[3] = (e[3] || e[4] || e[5] || "").replace(O, P), + "~=" === e[2] && (e[3] = " " + e[3] + " "), + e.slice(0, 4) + }, + CHILD: function(e) { + return e[1] = e[1].toLowerCase(), + "nth" === e[1].slice(0, 3) ? (e[3] || I.error(e[0]), + e[4] = +(e[4] ? e[5] + (e[6] || 1) : 2 * ("even" === e[3] || "odd" === e[3])), + e[5] = +(e[7] + e[8] || "odd" === e[3])) : e[3] && I.error(e[0]), + e + }, + PSEUDO: function(e) { + var t, n = !e[6] && e[2]; + return D.CHILD.test(e[0]) ? null : (e[3] ? e[2] = e[4] || e[5] || "" : n && j.test(n) && (t = Y(n, !0)) && (t = n.indexOf(")", n.length - t) - n.length) && (e[0] = e[0].slice(0, t), + e[2] = n.slice(0, t)), + e.slice(0, 3)) + } + }, + filter: { + TAG: function(e) { + var t = e.replace(O, P).toLowerCase(); + return "*" === e ? function() { + return !0 + } + : function(e) { + return fe(e, t) + } + }, + CLASS: function(e) { + var t = s[e + " "]; + return t || (t = new RegExp("(^|" + ge + ")" + e + "(" + ge + "|$)")) && s(e, function(e) { + return t.test("string" == typeof e.className && e.className || "undefined" != typeof e.getAttribute && e.getAttribute("class") || "") + }) + }, + ATTR: function(n, r, i) { + return function(e) { + var t = I.attr(e, n); + return null == t ? "!=" === r : !r || (t += "", + "=" === r ? t === i : "!=" === r ? t !== i : "^=" === r ? i && 0 === t.indexOf(i) : "*=" === r ? i && -1 < t.indexOf(i) : "$=" === r ? i && t.slice(-i.length) === i : "~=" === r ? -1 < (" " + t.replace(v, " ") + " ").indexOf(i) : "|=" === r && (t === i || t.slice(0, i.length + 1) === i + "-")) + } + }, + CHILD: function(d, e, t, h, g) { + var v = "nth" !== d.slice(0, 3) + , y = "last" !== d.slice(-4) + , m = "of-type" === e; + return 1 === h && 0 === g ? function(e) { + return !!e.parentNode + } + : function(e, t, n) { + var r, i, o, a, s, u = v !== y ? "nextSibling" : "previousSibling", l = e.parentNode, c = m && e.nodeName.toLowerCase(), f = !n && !m, p = !1; + if (l) { + if (v) { + while (u) { + o = e; + while (o = o[u]) + if (m ? fe(o, c) : 1 === o.nodeType) + return !1; + s = u = "only" === d && !s && "nextSibling" + } + return !0 + } + if (s = [y ? l.firstChild : l.lastChild], + y && f) { + p = (a = (r = (i = l[S] || (l[S] = {}))[d] || [])[0] === E && r[1]) && r[2], + o = a && l.childNodes[a]; + while (o = ++a && o && o[u] || (p = a = 0) || s.pop()) + if (1 === o.nodeType && ++p && o === e) { + i[d] = [E, a, p]; + break + } + } else if (f && (p = a = (r = (i = e[S] || (e[S] = {}))[d] || [])[0] === E && r[1]), + !1 === p) + while (o = ++a && o && o[u] || (p = a = 0) || s.pop()) + if ((m ? fe(o, c) : 1 === o.nodeType) && ++p && (f && ((i = o[S] || (o[S] = {}))[d] = [E, p]), + o === e)) + break; + return (p -= g) === h || p % h == 0 && 0 <= p / h + } + } + }, + PSEUDO: function(e, o) { + var t, a = b.pseudos[e] || b.setFilters[e.toLowerCase()] || I.error("unsupported pseudo: " + e); + return a[S] ? a(o) : 1 < a.length ? (t = [e, e, "", o], + b.setFilters.hasOwnProperty(e.toLowerCase()) ? F(function(e, t) { + var n, r = a(e, o), i = r.length; + while (i--) + e[n = se.call(e, r[i])] = !(t[n] = r[i]) + }) : function(e) { + return a(e, 0, t) + } + ) : a + } + }, + pseudos: { + not: F(function(e) { + var r = [] + , i = [] + , s = ne(e.replace(ve, "$1")); + return s[S] ? F(function(e, t, n, r) { + var i, o = s(e, null, r, []), a = e.length; + while (a--) + (i = o[a]) && (e[a] = !(t[a] = i)) + }) : function(e, t, n) { + return r[0] = e, + s(r, null, n, i), + r[0] = null, + !i.pop() + } + }), + has: F(function(t) { + return function(e) { + return 0 < I(t, e).length + } + }), + contains: F(function(t) { + return t = t.replace(O, P), + function(e) { + return -1 < (e.textContent || ce.text(e)).indexOf(t) + } + }), + lang: F(function(n) { + return A.test(n || "") || I.error("unsupported lang: " + n), + n = n.replace(O, P).toLowerCase(), + function(e) { + var t; + do { + if (t = C ? e.lang : e.getAttribute("xml:lang") || e.getAttribute("lang")) + return (t = t.toLowerCase()) === n || 0 === t.indexOf(n + "-") + } while ((e = e.parentNode) && 1 === e.nodeType); + return !1 + } + }), + target: function(e) { + var t = ie.location && ie.location.hash; + return t && t.slice(1) === e.id + }, + root: function(e) { + return e === r + }, + focus: function(e) { + return e === function() { + try { + return T.activeElement + } catch (e) {} + }() && T.hasFocus() && !!(e.type || e.href || ~e.tabIndex) + }, + enabled: z(!1), + disabled: z(!0), + checked: function(e) { + return fe(e, "input") && !!e.checked || fe(e, "option") && !!e.selected + }, + selected: function(e) { + return e.parentNode && e.parentNode.selectedIndex, + !0 === e.selected + }, + empty: function(e) { + for (e = e.firstChild; e; e = e.nextSibling) + if (e.nodeType < 6) + return !1; + return !0 + }, + parent: function(e) { + return !b.pseudos.empty(e) + }, + header: function(e) { + return q.test(e.nodeName) + }, + input: function(e) { + return N.test(e.nodeName) + }, + button: function(e) { + return fe(e, "input") && "button" === e.type || fe(e, "button") + }, + text: function(e) { + var t; + return fe(e, "input") && "text" === e.type && (null == (t = e.getAttribute("type")) || "text" === t.toLowerCase()) + }, + first: X(function() { + return [0] + }), + last: X(function(e, t) { + return [t - 1] + }), + eq: X(function(e, t, n) { + return [n < 0 ? n + t : n] + }), + even: X(function(e, t) { + for (var n = 0; n < t; n += 2) + e.push(n); + return e + }), + odd: X(function(e, t) { + for (var n = 1; n < t; n += 2) + e.push(n); + return e + }), + lt: X(function(e, t, n) { + var r; + for (r = n < 0 ? n + t : t < n ? t : n; 0 <= --r; ) + e.push(r); + return e + }), + gt: X(function(e, t, n) { + for (var r = n < 0 ? n + t : n; ++r < t; ) + e.push(r); + return e + }) + } + }).pseudos.nth = b.pseudos.eq, + { + radio: !0, + checkbox: !0, + file: !0, + password: !0, + image: !0 + }) + b.pseudos[e] = B(e); + for (e in { + submit: !0, + reset: !0 + }) + b.pseudos[e] = _(e); + function G() {} + function Y(e, t) { + var n, r, i, o, a, s, u, l = c[e + " "]; + if (l) + return t ? 0 : l.slice(0); + a = e, + s = [], + u = b.preFilter; + while (a) { + for (o in n && !(r = y.exec(a)) || (r && (a = a.slice(r[0].length) || a), + s.push(i = [])), + n = !1, + (r = m.exec(a)) && (n = r.shift(), + i.push({ + value: n, + type: r[0].replace(ve, " ") + }), + a = a.slice(n.length)), + b.filter) + !(r = D[o].exec(a)) || u[o] && !(r = u[o](r)) || (n = r.shift(), + i.push({ + value: n, + type: o, + matches: r + }), + a = a.slice(n.length)); + if (!n) + break + } + return t ? a.length : a ? I.error(e) : c(e, s).slice(0) + } + function Q(e) { + for (var t = 0, n = e.length, r = ""; t < n; t++) + r += e[t].value; + return r + } + function J(a, e, t) { + var s = e.dir + , u = e.next + , l = u || s + , c = t && "parentNode" === l + , f = n++; + return e.first ? function(e, t, n) { + while (e = e[s]) + if (1 === e.nodeType || c) + return a(e, t, n); + return !1 + } + : function(e, t, n) { + var r, i, o = [E, f]; + if (n) { + while (e = e[s]) + if ((1 === e.nodeType || c) && a(e, t, n)) + return !0 + } else + while (e = e[s]) + if (1 === e.nodeType || c) + if (i = e[S] || (e[S] = {}), + u && fe(e, u)) + e = e[s] || e; + else { + if ((r = i[l]) && r[0] === E && r[1] === f) + return o[2] = r[2]; + if ((i[l] = o)[2] = a(e, t, n)) + return !0 + } + return !1 + } + } + function K(i) { + return 1 < i.length ? function(e, t, n) { + var r = i.length; + while (r--) + if (!i[r](e, t, n)) + return !1; + return !0 + } + : i[0] + } + function Z(e, t, n, r, i) { + for (var o, a = [], s = 0, u = e.length, l = null != t; s < u; s++) + (o = e[s]) && (n && !n(o, r, i) || (a.push(o), + l && t.push(s))); + return a + } + function ee(d, h, g, v, y, e) { + return v && !v[S] && (v = ee(v)), + y && !y[S] && (y = ee(y, e)), + F(function(e, t, n, r) { + var i, o, a, s, u = [], l = [], c = t.length, f = e || function(e, t, n) { + for (var r = 0, i = t.length; r < i; r++) + I(e, t[r], n); + return n + }(h || "*", n.nodeType ? [n] : n, []), p = !d || !e && h ? f : Z(f, u, d, n, r); + if (g ? g(p, s = y || (e ? d : c || v) ? [] : t, n, r) : s = p, + v) { + i = Z(s, l), + v(i, [], n, r), + o = i.length; + while (o--) + (a = i[o]) && (s[l[o]] = !(p[l[o]] = a)) + } + if (e) { + if (y || d) { + if (y) { + i = [], + o = s.length; + while (o--) + (a = s[o]) && i.push(p[o] = a); + y(null, s = [], i, r) + } + o = s.length; + while (o--) + (a = s[o]) && -1 < (i = y ? se.call(e, a) : u[o]) && (e[i] = !(t[i] = a)) + } + } else + s = Z(s === t ? s.splice(c, s.length) : s), + y ? y(null, t, s, r) : k.apply(t, s) + }) + } + function te(e) { + for (var i, t, n, r = e.length, o = b.relative[e[0].type], a = o || b.relative[" "], s = o ? 1 : 0, u = J(function(e) { + return e === i + }, a, !0), l = J(function(e) { + return -1 < se.call(i, e) + }, a, !0), c = [function(e, t, n) { + var r = !o && (n || t != w) || ((i = t).nodeType ? u(e, t, n) : l(e, t, n)); + return i = null, + r + } + ]; s < r; s++) + if (t = b.relative[e[s].type]) + c = [J(K(c), t)]; + else { + if ((t = b.filter[e[s].type].apply(null, e[s].matches))[S]) { + for (n = ++s; n < r; n++) + if (b.relative[e[n].type]) + break; + return ee(1 < s && K(c), 1 < s && Q(e.slice(0, s - 1).concat({ + value: " " === e[s - 2].type ? "*" : "" + })).replace(ve, "$1"), t, s < n && te(e.slice(s, n)), n < r && te(e = e.slice(n)), n < r && Q(e)) + } + c.push(t) + } + return K(c) + } + function ne(e, t) { + var n, v, y, m, x, r, i = [], o = [], a = u[e + " "]; + if (!a) { + t || (t = Y(e)), + n = t.length; + while (n--) + (a = te(t[n]))[S] ? i.push(a) : o.push(a); + (a = u(e, (v = o, + m = 0 < (y = i).length, + x = 0 < v.length, + r = function(e, t, n, r, i) { + var o, a, s, u = 0, l = "0", c = e && [], f = [], p = w, d = e || x && b.find.TAG("*", i), h = E += null == p ? 1 : Math.random() || .1, g = d.length; + for (i && (w = t == T || t || i); l !== g && null != (o = d[l]); l++) { + if (x && o) { + a = 0, + t || o.ownerDocument == T || (V(o), + n = !C); + while (s = v[a++]) + if (s(o, t || T, n)) { + k.call(r, o); + break + } + i && (E = h) + } + m && ((o = !s && o) && u--, + e && c.push(o)) + } + if (u += l, + m && l !== u) { + a = 0; + while (s = y[a++]) + s(c, f, t, n); + if (e) { + if (0 < u) + while (l--) + c[l] || f[l] || (f[l] = pe.call(r)); + f = Z(f) + } + k.apply(r, f), + i && !e && 0 < f.length && 1 < u + y.length && ce.uniqueSort(r) + } + return i && (E = h, + w = p), + c + } + , + m ? F(r) : r))).selector = e + } + return a + } + function re(e, t, n, r) { + var i, o, a, s, u, l = "function" == typeof e && e, c = !r && Y(e = l.selector || e); + if (n = n || [], + 1 === c.length) { + if (2 < (o = c[0] = c[0].slice(0)).length && "ID" === (a = o[0]).type && 9 === t.nodeType && C && b.relative[o[1].type]) { + if (!(t = (b.find.ID(a.matches[0].replace(O, P), t) || [])[0])) + return n; + l && (t = t.parentNode), + e = e.slice(o.shift().value.length) + } + i = D.needsContext.test(e) ? 0 : o.length; + while (i--) { + if (a = o[i], + b.relative[s = a.type]) + break; + if ((u = b.find[s]) && (r = u(a.matches[0].replace(O, P), H.test(o[0].type) && U(t.parentNode) || t))) { + if (o.splice(i, 1), + !(e = r.length && Q(o))) + return k.apply(n, r), + n; + break + } + } + } + return (l || ne(e, c))(r, t, !C, n, !t || H.test(e) && U(t.parentNode) || t), + n + } + G.prototype = b.filters = b.pseudos, + b.setFilters = new G, + le.sortStable = S.split("").sort(l).join("") === S, + V(), + le.sortDetached = $(function(e) { + return 1 & e.compareDocumentPosition(T.createElement("fieldset")) + }), + ce.find = I, + ce.expr[":"] = ce.expr.pseudos, + ce.unique = ce.uniqueSort, + I.compile = ne, + I.select = re, + I.setDocument = V, + I.tokenize = Y, + I.escape = ce.escapeSelector, + I.getText = ce.text, + I.isXML = ce.isXMLDoc, + I.selectors = ce.expr, + I.support = ce.support, + I.uniqueSort = ce.uniqueSort + }(); + var d = function(e, t, n) { + var r = [] + , i = void 0 !== n; + while ((e = e[t]) && 9 !== e.nodeType) + if (1 === e.nodeType) { + if (i && ce(e).is(n)) + break; + r.push(e) + } + return r + } + , h = function(e, t) { + for (var n = []; e; e = e.nextSibling) + 1 === e.nodeType && e !== t && n.push(e); + return n + } + , b = ce.expr.match.needsContext + , w = /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i; + function T(e, n, r) { + return v(n) ? ce.grep(e, function(e, t) { + return !!n.call(e, t, e) !== r + }) : n.nodeType ? ce.grep(e, function(e) { + return e === n !== r + }) : "string" != typeof n ? ce.grep(e, function(e) { + return -1 < se.call(n, e) !== r + }) : ce.filter(n, e, r) + } + ce.filter = function(e, t, n) { + var r = t[0]; + return n && (e = ":not(" + e + ")"), + 1 === t.length && 1 === r.nodeType ? ce.find.matchesSelector(r, e) ? [r] : [] : ce.find.matches(e, ce.grep(t, function(e) { + return 1 === e.nodeType + })) + } + , + ce.fn.extend({ + find: function(e) { + var t, n, r = this.length, i = this; + if ("string" != typeof e) + return this.pushStack(ce(e).filter(function() { + for (t = 0; t < r; t++) + if (ce.contains(i[t], this)) + return !0 + })); + for (n = this.pushStack([]), + t = 0; t < r; t++) + ce.find(e, i[t], n); + return 1 < r ? ce.uniqueSort(n) : n + }, + filter: function(e) { + return this.pushStack(T(this, e || [], !1)) + }, + not: function(e) { + return this.pushStack(T(this, e || [], !0)) + }, + is: function(e) { + return !!T(this, "string" == typeof e && b.test(e) ? ce(e) : e || [], !1).length + } + }); + var k, S = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/; + (ce.fn.init = function(e, t, n) { + var r, i; + if (!e) + return this; + if (n = n || k, + "string" == typeof e) { + if (!(r = "<" === e[0] && ">" === e[e.length - 1] && 3 <= e.length ? [null, e, null] : S.exec(e)) || !r[1] && t) + return !t || t.jquery ? (t || n).find(e) : this.constructor(t).find(e); + if (r[1]) { + if (t = t instanceof ce ? t[0] : t, + ce.merge(this, ce.parseHTML(r[1], t && t.nodeType ? t.ownerDocument || t : C, !0)), + w.test(r[1]) && ce.isPlainObject(t)) + for (r in t) + v(this[r]) ? this[r](t[r]) : this.attr(r, t[r]); + return this + } + return (i = C.getElementById(r[2])) && (this[0] = i, + this.length = 1), + this + } + return e.nodeType ? (this[0] = e, + this.length = 1, + this) : v(e) ? void 0 !== n.ready ? n.ready(e) : e(ce) : ce.makeArray(e, this) + } + ).prototype = ce.fn, + k = ce(C); + var E = /^(?:parents|prev(?:Until|All))/ + , j = { + children: !0, + contents: !0, + next: !0, + prev: !0 + }; + function A(e, t) { + while ((e = e[t]) && 1 !== e.nodeType) + ; + return e + } + ce.fn.extend({ + has: function(e) { + var t = ce(e, this) + , n = t.length; + return this.filter(function() { + for (var e = 0; e < n; e++) + if (ce.contains(this, t[e])) + return !0 + }) + }, + closest: function(e, t) { + var n, r = 0, i = this.length, o = [], a = "string" != typeof e && ce(e); + if (!b.test(e)) + for (; r < i; r++) + for (n = this[r]; n && n !== t; n = n.parentNode) + if (n.nodeType < 11 && (a ? -1 < a.index(n) : 1 === n.nodeType && ce.find.matchesSelector(n, e))) { + o.push(n); + break + } + return this.pushStack(1 < o.length ? ce.uniqueSort(o) : o) + }, + index: function(e) { + return e ? "string" == typeof e ? se.call(ce(e), this[0]) : se.call(this, e.jquery ? e[0] : e) : this[0] && this[0].parentNode ? this.first().prevAll().length : -1 + }, + add: function(e, t) { + return this.pushStack(ce.uniqueSort(ce.merge(this.get(), ce(e, t)))) + }, + addBack: function(e) { + return this.add(null == e ? this.prevObject : this.prevObject.filter(e)) + } + }), + ce.each({ + parent: function(e) { + var t = e.parentNode; + return t && 11 !== t.nodeType ? t : null + }, + parents: function(e) { + return d(e, "parentNode") + }, + parentsUntil: function(e, t, n) { + return d(e, "parentNode", n) + }, + next: function(e) { + return A(e, "nextSibling") + }, + prev: function(e) { + return A(e, "previousSibling") + }, + nextAll: function(e) { + return d(e, "nextSibling") + }, + prevAll: function(e) { + return d(e, "previousSibling") + }, + nextUntil: function(e, t, n) { + return d(e, "nextSibling", n) + }, + prevUntil: function(e, t, n) { + return d(e, "previousSibling", n) + }, + siblings: function(e) { + return h((e.parentNode || {}).firstChild, e) + }, + children: function(e) { + return h(e.firstChild) + }, + contents: function(e) { + return null != e.contentDocument && r(e.contentDocument) ? e.contentDocument : (fe(e, "template") && (e = e.content || e), + ce.merge([], e.childNodes)) + } + }, function(r, i) { + ce.fn[r] = function(e, t) { + var n = ce.map(this, i, e); + return "Until" !== r.slice(-5) && (t = e), + t && "string" == typeof t && (n = ce.filter(t, n)), + 1 < this.length && (j[r] || ce.uniqueSort(n), + E.test(r) && n.reverse()), + this.pushStack(n) + } + }); + var D = /[^\x20\t\r\n\f]+/g; + function N(e) { + return e + } + function q(e) { + throw e + } + function L(e, t, n, r) { + var i; + try { + e && v(i = e.promise) ? i.call(e).done(t).fail(n) : e && v(i = e.then) ? i.call(e, t, n) : t.apply(void 0, [e].slice(r)) + } catch (e) { + n.apply(void 0, [e]) + } + } + ce.Callbacks = function(r) { + var e, n; + r = "string" == typeof r ? (e = r, + n = {}, + ce.each(e.match(D) || [], function(e, t) { + n[t] = !0 + }), + n) : ce.extend({}, r); + var i, t, o, a, s = [], u = [], l = -1, c = function() { + for (a = a || r.once, + o = i = !0; u.length; l = -1) { + t = u.shift(); + while (++l < s.length) + !1 === s[l].apply(t[0], t[1]) && r.stopOnFalse && (l = s.length, + t = !1) + } + r.memory || (t = !1), + i = !1, + a && (s = t ? [] : "") + }, f = { + add: function() { + return s && (t && !i && (l = s.length - 1, + u.push(t)), + function n(e) { + ce.each(e, function(e, t) { + v(t) ? r.unique && f.has(t) || s.push(t) : t && t.length && "string" !== x(t) && n(t) + }) + }(arguments), + t && !i && c()), + this + }, + remove: function() { + return ce.each(arguments, function(e, t) { + var n; + while (-1 < (n = ce.inArray(t, s, n))) + s.splice(n, 1), + n <= l && l-- + }), + this + }, + has: function(e) { + return e ? -1 < ce.inArray(e, s) : 0 < s.length + }, + empty: function() { + return s && (s = []), + this + }, + disable: function() { + return a = u = [], + s = t = "", + this + }, + disabled: function() { + return !s + }, + lock: function() { + return a = u = [], + t || i || (s = t = ""), + this + }, + locked: function() { + return !!a + }, + fireWith: function(e, t) { + return a || (t = [e, (t = t || []).slice ? t.slice() : t], + u.push(t), + i || c()), + this + }, + fire: function() { + return f.fireWith(this, arguments), + this + }, + fired: function() { + return !!o + } + }; + return f + } + , + ce.extend({ + Deferred: function(e) { + var o = [["notify", "progress", ce.Callbacks("memory"), ce.Callbacks("memory"), 2], ["resolve", "done", ce.Callbacks("once memory"), ce.Callbacks("once memory"), 0, "resolved"], ["reject", "fail", ce.Callbacks("once memory"), ce.Callbacks("once memory"), 1, "rejected"]] + , i = "pending" + , a = { + state: function() { + return i + }, + always: function() { + return s.done(arguments).fail(arguments), + this + }, + "catch": function(e) { + return a.then(null, e) + }, + pipe: function() { + var i = arguments; + return ce.Deferred(function(r) { + ce.each(o, function(e, t) { + var n = v(i[t[4]]) && i[t[4]]; + s[t[1]](function() { + var e = n && n.apply(this, arguments); + e && v(e.promise) ? e.promise().progress(r.notify).done(r.resolve).fail(r.reject) : r[t[0] + "With"](this, n ? [e] : arguments) + }) + }), + i = null + }).promise() + }, + then: function(t, n, r) { + var u = 0; + function l(i, o, a, s) { + return function() { + var n = this + , r = arguments + , e = function() { + var e, t; + if (!(i < u)) { + if ((e = a.apply(n, r)) === o.promise()) + throw new TypeError("Thenable self-resolution"); + t = e && ("object" == typeof e || "function" == typeof e) && e.then, + v(t) ? s ? t.call(e, l(u, o, N, s), l(u, o, q, s)) : (u++, + t.call(e, l(u, o, N, s), l(u, o, q, s), l(u, o, N, o.notifyWith))) : (a !== N && (n = void 0, + r = [e]), + (s || o.resolveWith)(n, r)) + } + } + , t = s ? e : function() { + try { + e() + } catch (e) { + ce.Deferred.exceptionHook && ce.Deferred.exceptionHook(e, t.error), + u <= i + 1 && (a !== q && (n = void 0, + r = [e]), + o.rejectWith(n, r)) + } + } + ; + i ? t() : (ce.Deferred.getErrorHook ? t.error = ce.Deferred.getErrorHook() : ce.Deferred.getStackHook && (t.error = ce.Deferred.getStackHook()), + ie.setTimeout(t)) + } + } + return ce.Deferred(function(e) { + o[0][3].add(l(0, e, v(r) ? r : N, e.notifyWith)), + o[1][3].add(l(0, e, v(t) ? t : N)), + o[2][3].add(l(0, e, v(n) ? n : q)) + }).promise() + }, + promise: function(e) { + return null != e ? ce.extend(e, a) : a + } + } + , s = {}; + return ce.each(o, function(e, t) { + var n = t[2] + , r = t[5]; + a[t[1]] = n.add, + r && n.add(function() { + i = r + }, o[3 - e][2].disable, o[3 - e][3].disable, o[0][2].lock, o[0][3].lock), + n.add(t[3].fire), + s[t[0]] = function() { + return s[t[0] + "With"](this === s ? void 0 : this, arguments), + this + } + , + s[t[0] + "With"] = n.fireWith + }), + a.promise(s), + e && e.call(s, s), + s + }, + when: function(e) { + var n = arguments.length + , t = n + , r = Array(t) + , i = ae.call(arguments) + , o = ce.Deferred() + , a = function(t) { + return function(e) { + r[t] = this, + i[t] = 1 < arguments.length ? ae.call(arguments) : e, + --n || o.resolveWith(r, i) + } + }; + if (n <= 1 && (L(e, o.done(a(t)).resolve, o.reject, !n), + "pending" === o.state() || v(i[t] && i[t].then))) + return o.then(); + while (t--) + L(i[t], a(t), o.reject); + return o.promise() + } + }); + var H = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/; + ce.Deferred.exceptionHook = function(e, t) { + ie.console && ie.console.warn && e && H.test(e.name) && ie.console.warn("jQuery.Deferred exception: " + e.message, e.stack, t) + } + , + ce.readyException = function(e) { + ie.setTimeout(function() { + throw e + }) + } + ; + var O = ce.Deferred(); + function P() { + C.removeEventListener("DOMContentLoaded", P), + ie.removeEventListener("load", P), + ce.ready() + } + ce.fn.ready = function(e) { + return O.then(e)["catch"](function(e) { + ce.readyException(e) + }), + this + } + , + ce.extend({ + isReady: !1, + readyWait: 1, + ready: function(e) { + (!0 === e ? --ce.readyWait : ce.isReady) || (ce.isReady = !0) !== e && 0 < --ce.readyWait || O.resolveWith(C, [ce]) + } + }), + ce.ready.then = O.then, + "complete" === C.readyState || "loading" !== C.readyState && !C.documentElement.doScroll ? ie.setTimeout(ce.ready) : (C.addEventListener("DOMContentLoaded", P), + ie.addEventListener("load", P)); + var M = function(e, t, n, r, i, o, a) { + var s = 0 + , u = e.length + , l = null == n; + if ("object" === x(n)) + for (s in i = !0, + n) + M(e, t, s, n[s], !0, o, a); + else if (void 0 !== r && (i = !0, + v(r) || (a = !0), + l && (a ? (t.call(e, r), + t = null) : (l = t, + t = function(e, t, n) { + return l.call(ce(e), n) + } + )), + t)) + for (; s < u; s++) + t(e[s], n, a ? r : r.call(e[s], s, t(e[s], n))); + return i ? e : l ? t.call(e) : u ? t(e[0], n) : o + } + , R = /^-ms-/ + , I = /-([a-z])/g; + function W(e, t) { + return t.toUpperCase() + } + function F(e) { + return e.replace(R, "ms-").replace(I, W) + } + var $ = function(e) { + return 1 === e.nodeType || 9 === e.nodeType || !+e.nodeType + }; + function B() { + this.expando = ce.expando + B.uid++ + } + B.uid = 1, + B.prototype = { + cache: function(e) { + var t = e[this.expando]; + return t || (t = {}, + $(e) && (e.nodeType ? e[this.expando] = t : Object.defineProperty(e, this.expando, { + value: t, + configurable: !0 + }))), + t + }, + set: function(e, t, n) { + var r, i = this.cache(e); + if ("string" == typeof t) + i[F(t)] = n; + else + for (r in t) + i[F(r)] = t[r]; + return i + }, + get: function(e, t) { + return void 0 === t ? this.cache(e) : e[this.expando] && e[this.expando][F(t)] + }, + access: function(e, t, n) { + return void 0 === t || t && "string" == typeof t && void 0 === n ? this.get(e, t) : (this.set(e, t, n), + void 0 !== n ? n : t) + }, + remove: function(e, t) { + var n, r = e[this.expando]; + if (void 0 !== r) { + if (void 0 !== t) { + n = (t = Array.isArray(t) ? t.map(F) : (t = F(t))in r ? [t] : t.match(D) || []).length; + while (n--) + delete r[t[n]] + } + (void 0 === t || ce.isEmptyObject(r)) && (e.nodeType ? e[this.expando] = void 0 : delete e[this.expando]) + } + }, + hasData: function(e) { + var t = e[this.expando]; + return void 0 !== t && !ce.isEmptyObject(t) + } + }; + var _ = new B + , z = new B + , X = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/ + , U = /[A-Z]/g; + function V(e, t, n) { + var r, i; + if (void 0 === n && 1 === e.nodeType) + if (r = "data-" + t.replace(U, "-$&").toLowerCase(), + "string" == typeof (n = e.getAttribute(r))) { + try { + n = "true" === (i = n) || "false" !== i && ("null" === i ? null : i === +i + "" ? +i : X.test(i) ? JSON.parse(i) : i) + } catch (e) {} + z.set(e, t, n) + } else + n = void 0; + return n + } + ce.extend({ + hasData: function(e) { + return z.hasData(e) || _.hasData(e) + }, + data: function(e, t, n) { + return z.access(e, t, n) + }, + removeData: function(e, t) { + z.remove(e, t) + }, + _data: function(e, t, n) { + return _.access(e, t, n) + }, + _removeData: function(e, t) { + _.remove(e, t) + } + }), + ce.fn.extend({ + data: function(n, e) { + var t, r, i, o = this[0], a = o && o.attributes; + if (void 0 === n) { + if (this.length && (i = z.get(o), + 1 === o.nodeType && !_.get(o, "hasDataAttrs"))) { + t = a.length; + while (t--) + a[t] && 0 === (r = a[t].name).indexOf("data-") && (r = F(r.slice(5)), + V(o, r, i[r])); + _.set(o, "hasDataAttrs", !0) + } + return i + } + return "object" == typeof n ? this.each(function() { + z.set(this, n) + }) : M(this, function(e) { + var t; + if (o && void 0 === e) + return void 0 !== (t = z.get(o, n)) ? t : void 0 !== (t = V(o, n)) ? t : void 0; + this.each(function() { + z.set(this, n, e) + }) + }, null, e, 1 < arguments.length, null, !0) + }, + removeData: function(e) { + return this.each(function() { + z.remove(this, e) + }) + } + }), + ce.extend({ + queue: function(e, t, n) { + var r; + if (e) + return t = (t || "fx") + "queue", + r = _.get(e, t), + n && (!r || Array.isArray(n) ? r = _.access(e, t, ce.makeArray(n)) : r.push(n)), + r || [] + }, + dequeue: function(e, t) { + t = t || "fx"; + var n = ce.queue(e, t) + , r = n.length + , i = n.shift() + , o = ce._queueHooks(e, t); + "inprogress" === i && (i = n.shift(), + r--), + i && ("fx" === t && n.unshift("inprogress"), + delete o.stop, + i.call(e, function() { + ce.dequeue(e, t) + }, o)), + !r && o && o.empty.fire() + }, + _queueHooks: function(e, t) { + var n = t + "queueHooks"; + return _.get(e, n) || _.access(e, n, { + empty: ce.Callbacks("once memory").add(function() { + _.remove(e, [t + "queue", n]) + }) + }) + } + }), + ce.fn.extend({ + queue: function(t, n) { + var e = 2; + return "string" != typeof t && (n = t, + t = "fx", + e--), + arguments.length < e ? ce.queue(this[0], t) : void 0 === n ? this : this.each(function() { + var e = ce.queue(this, t, n); + ce._queueHooks(this, t), + "fx" === t && "inprogress" !== e[0] && ce.dequeue(this, t) + }) + }, + dequeue: function(e) { + return this.each(function() { + ce.dequeue(this, e) + }) + }, + clearQueue: function(e) { + return this.queue(e || "fx", []) + }, + promise: function(e, t) { + var n, r = 1, i = ce.Deferred(), o = this, a = this.length, s = function() { + --r || i.resolveWith(o, [o]) + }; + "string" != typeof e && (t = e, + e = void 0), + e = e || "fx"; + while (a--) + (n = _.get(o[a], e + "queueHooks")) && n.empty && (r++, + n.empty.add(s)); + return s(), + i.promise(t) + } + }); + var G = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source + , Y = new RegExp("^(?:([+-])=|)(" + G + ")([a-z%]*)$","i") + , Q = ["Top", "Right", "Bottom", "Left"] + , J = C.documentElement + , K = function(e) { + return ce.contains(e.ownerDocument, e) + } + , Z = { + composed: !0 + }; + J.getRootNode && (K = function(e) { + return ce.contains(e.ownerDocument, e) || e.getRootNode(Z) === e.ownerDocument + } + ); + var ee = function(e, t) { + return "none" === (e = t || e).style.display || "" === e.style.display && K(e) && "none" === ce.css(e, "display") + }; + function te(e, t, n, r) { + var i, o, a = 20, s = r ? function() { + return r.cur() + } + : function() { + return ce.css(e, t, "") + } + , u = s(), l = n && n[3] || (ce.cssNumber[t] ? "" : "px"), c = e.nodeType && (ce.cssNumber[t] || "px" !== l && +u) && Y.exec(ce.css(e, t)); + if (c && c[3] !== l) { + u /= 2, + l = l || c[3], + c = +u || 1; + while (a--) + ce.style(e, t, c + l), + (1 - o) * (1 - (o = s() / u || .5)) <= 0 && (a = 0), + c /= o; + c *= 2, + ce.style(e, t, c + l), + n = n || [] + } + return n && (c = +c || +u || 0, + i = n[1] ? c + (n[1] + 1) * n[2] : +n[2], + r && (r.unit = l, + r.start = c, + r.end = i)), + i + } + var ne = {}; + function re(e, t) { + for (var n, r, i, o, a, s, u, l = [], c = 0, f = e.length; c < f; c++) + (r = e[c]).style && (n = r.style.display, + t ? ("none" === n && (l[c] = _.get(r, "display") || null, + l[c] || (r.style.display = "")), + "" === r.style.display && ee(r) && (l[c] = (u = a = o = void 0, + a = (i = r).ownerDocument, + s = i.nodeName, + (u = ne[s]) || (o = a.body.appendChild(a.createElement(s)), + u = ce.css(o, "display"), + o.parentNode.removeChild(o), + "none" === u && (u = "block"), + ne[s] = u)))) : "none" !== n && (l[c] = "none", + _.set(r, "display", n))); + for (c = 0; c < f; c++) + null != l[c] && (e[c].style.display = l[c]); + return e + } + ce.fn.extend({ + show: function() { + return re(this, !0) + }, + hide: function() { + return re(this) + }, + toggle: function(e) { + return "boolean" == typeof e ? e ? this.show() : this.hide() : this.each(function() { + ee(this) ? ce(this).show() : ce(this).hide() + }) + } + }); + var xe, be, we = /^(?:checkbox|radio)$/i, Te = /<([a-z][^\/\0>\x20\t\r\n\f]*)/i, Ce = /^$|^module$|\/(?:java|ecma)script/i; + xe = C.createDocumentFragment().appendChild(C.createElement("div")), + (be = C.createElement("input")).setAttribute("type", "radio"), + be.setAttribute("checked", "checked"), + be.setAttribute("name", "t"), + xe.appendChild(be), + le.checkClone = xe.cloneNode(!0).cloneNode(!0).lastChild.checked, + xe.innerHTML = "", + le.noCloneChecked = !!xe.cloneNode(!0).lastChild.defaultValue, + xe.innerHTML = "", + le.option = !!xe.lastChild; + var ke = { + thead: [1, "", "
    "], + col: [2, "", "
    "], + tr: [2, "", "
    "], + td: [3, "", "
    "], + _default: [0, "", ""] + }; + function Se(e, t) { + var n; + return n = "undefined" != typeof e.getElementsByTagName ? e.getElementsByTagName(t || "*") : "undefined" != typeof e.querySelectorAll ? e.querySelectorAll(t || "*") : [], + void 0 === t || t && fe(e, t) ? ce.merge([e], n) : n + } + function Ee(e, t) { + for (var n = 0, r = e.length; n < r; n++) + _.set(e[n], "globalEval", !t || _.get(t[n], "globalEval")) + } + ke.tbody = ke.tfoot = ke.colgroup = ke.caption = ke.thead, + ke.th = ke.td, + le.option || (ke.optgroup = ke.option = [1, ""]); + var je = /<|&#?\w+;/; + function Ae(e, t, n, r, i) { + for (var o, a, s, u, l, c, f = t.createDocumentFragment(), p = [], d = 0, h = e.length; d < h; d++) + if ((o = e[d]) || 0 === o) + if ("object" === x(o)) + ce.merge(p, o.nodeType ? [o] : o); + else if (je.test(o)) { + a = a || f.appendChild(t.createElement("div")), + s = (Te.exec(o) || ["", ""])[1].toLowerCase(), + u = ke[s] || ke._default, + a.innerHTML = u[1] + ce.htmlPrefilter(o) + u[2], + c = u[0]; + while (c--) + a = a.lastChild; + ce.merge(p, a.childNodes), + (a = f.firstChild).textContent = "" + } else + p.push(t.createTextNode(o)); + f.textContent = "", + d = 0; + while (o = p[d++]) + if (r && -1 < ce.inArray(o, r)) + i && i.push(o); + else if (l = K(o), + a = Se(f.appendChild(o), "script"), + l && Ee(a), + n) { + c = 0; + while (o = a[c++]) + Ce.test(o.type || "") && n.push(o) + } + return f + } + var De = /^([^.]*)(?:\.(.+)|)/; + function Ne() { + return !0 + } + function qe() { + return !1 + } + function Le(e, t, n, r, i, o) { + var a, s; + if ("object" == typeof t) { + for (s in "string" != typeof n && (r = r || n, + n = void 0), + t) + Le(e, s, n, r, t[s], o); + return e + } + if (null == r && null == i ? (i = n, + r = n = void 0) : null == i && ("string" == typeof n ? (i = r, + r = void 0) : (i = r, + r = n, + n = void 0)), + !1 === i) + i = qe; + else if (!i) + return e; + return 1 === o && (a = i, + (i = function(e) { + return ce().off(e), + a.apply(this, arguments) + } + ).guid = a.guid || (a.guid = ce.guid++)), + e.each(function() { + ce.event.add(this, t, i, r, n) + }) + } + function He(e, r, t) { + t ? (_.set(e, r, !1), + ce.event.add(e, r, { + namespace: !1, + handler: function(e) { + var t, n = _.get(this, r); + if (1 & e.isTrigger && this[r]) { + if (n) + (ce.event.special[r] || {}).delegateType && e.stopPropagation(); + else if (n = ae.call(arguments), + _.set(this, r, n), + this[r](), + t = _.get(this, r), + _.set(this, r, !1), + n !== t) + return e.stopImmediatePropagation(), + e.preventDefault(), + t + } else + n && (_.set(this, r, ce.event.trigger(n[0], n.slice(1), this)), + e.stopPropagation(), + e.isImmediatePropagationStopped = Ne) + } + })) : void 0 === _.get(e, r) && ce.event.add(e, r, Ne) + } + ce.event = { + global: {}, + add: function(t, e, n, r, i) { + var o, a, s, u, l, c, f, p, d, h, g, v = _.get(t); + if ($(t)) { + n.handler && (n = (o = n).handler, + i = o.selector), + i && ce.find.matchesSelector(J, i), + n.guid || (n.guid = ce.guid++), + (u = v.events) || (u = v.events = Object.create(null)), + (a = v.handle) || (a = v.handle = function(e) { + return "undefined" != typeof ce && ce.event.triggered !== e.type ? ce.event.dispatch.apply(t, arguments) : void 0 + } + ), + l = (e = (e || "").match(D) || [""]).length; + while (l--) + d = g = (s = De.exec(e[l]) || [])[1], + h = (s[2] || "").split(".").sort(), + d && (f = ce.event.special[d] || {}, + d = (i ? f.delegateType : f.bindType) || d, + f = ce.event.special[d] || {}, + c = ce.extend({ + type: d, + origType: g, + data: r, + handler: n, + guid: n.guid, + selector: i, + needsContext: i && ce.expr.match.needsContext.test(i), + namespace: h.join(".") + }, o), + (p = u[d]) || ((p = u[d] = []).delegateCount = 0, + f.setup && !1 !== f.setup.call(t, r, h, a) || t.addEventListener && t.addEventListener(d, a)), + f.add && (f.add.call(t, c), + c.handler.guid || (c.handler.guid = n.guid)), + i ? p.splice(p.delegateCount++, 0, c) : p.push(c), + ce.event.global[d] = !0) + } + }, + remove: function(e, t, n, r, i) { + var o, a, s, u, l, c, f, p, d, h, g, v = _.hasData(e) && _.get(e); + if (v && (u = v.events)) { + l = (t = (t || "").match(D) || [""]).length; + while (l--) + if (d = g = (s = De.exec(t[l]) || [])[1], + h = (s[2] || "").split(".").sort(), + d) { + f = ce.event.special[d] || {}, + p = u[d = (r ? f.delegateType : f.bindType) || d] || [], + s = s[2] && new RegExp("(^|\\.)" + h.join("\\.(?:.*\\.|)") + "(\\.|$)"), + a = o = p.length; + while (o--) + c = p[o], + !i && g !== c.origType || n && n.guid !== c.guid || s && !s.test(c.namespace) || r && r !== c.selector && ("**" !== r || !c.selector) || (p.splice(o, 1), + c.selector && p.delegateCount--, + f.remove && f.remove.call(e, c)); + a && !p.length && (f.teardown && !1 !== f.teardown.call(e, h, v.handle) || ce.removeEvent(e, d, v.handle), + delete u[d]) + } else + for (d in u) + ce.event.remove(e, d + t[l], n, r, !0); + ce.isEmptyObject(u) && _.remove(e, "handle events") + } + }, + dispatch: function(e) { + var t, n, r, i, o, a, s = new Array(arguments.length), u = ce.event.fix(e), l = (_.get(this, "events") || Object.create(null))[u.type] || [], c = ce.event.special[u.type] || {}; + for (s[0] = u, + t = 1; t < arguments.length; t++) + s[t] = arguments[t]; + if (u.delegateTarget = this, + !c.preDispatch || !1 !== c.preDispatch.call(this, u)) { + a = ce.event.handlers.call(this, u, l), + t = 0; + while ((i = a[t++]) && !u.isPropagationStopped()) { + u.currentTarget = i.elem, + n = 0; + while ((o = i.handlers[n++]) && !u.isImmediatePropagationStopped()) + u.rnamespace && !1 !== o.namespace && !u.rnamespace.test(o.namespace) || (u.handleObj = o, + u.data = o.data, + void 0 !== (r = ((ce.event.special[o.origType] || {}).handle || o.handler).apply(i.elem, s)) && !1 === (u.result = r) && (u.preventDefault(), + u.stopPropagation())) + } + return c.postDispatch && c.postDispatch.call(this, u), + u.result + } + }, + handlers: function(e, t) { + var n, r, i, o, a, s = [], u = t.delegateCount, l = e.target; + if (u && l.nodeType && !("click" === e.type && 1 <= e.button)) + for (; l !== this; l = l.parentNode || this) + if (1 === l.nodeType && ("click" !== e.type || !0 !== l.disabled)) { + for (o = [], + a = {}, + n = 0; n < u; n++) + void 0 === a[i = (r = t[n]).selector + " "] && (a[i] = r.needsContext ? -1 < ce(i, this).index(l) : ce.find(i, this, null, [l]).length), + a[i] && o.push(r); + o.length && s.push({ + elem: l, + handlers: o + }) + } + return l = this, + u < t.length && s.push({ + elem: l, + handlers: t.slice(u) + }), + s + }, + addProp: function(t, e) { + Object.defineProperty(ce.Event.prototype, t, { + enumerable: !0, + configurable: !0, + get: v(e) ? function() { + if (this.originalEvent) + return e(this.originalEvent) + } + : function() { + if (this.originalEvent) + return this.originalEvent[t] + } + , + set: function(e) { + Object.defineProperty(this, t, { + enumerable: !0, + configurable: !0, + writable: !0, + value: e + }) + } + }) + }, + fix: function(e) { + return e[ce.expando] ? e : new ce.Event(e) + }, + special: { + load: { + noBubble: !0 + }, + click: { + setup: function(e) { + var t = this || e; + return we.test(t.type) && t.click && fe(t, "input") && He(t, "click", !0), + !1 + }, + trigger: function(e) { + var t = this || e; + return we.test(t.type) && t.click && fe(t, "input") && He(t, "click"), + !0 + }, + _default: function(e) { + var t = e.target; + return we.test(t.type) && t.click && fe(t, "input") && _.get(t, "click") || fe(t, "a") + } + }, + beforeunload: { + postDispatch: function(e) { + void 0 !== e.result && e.originalEvent && (e.originalEvent.returnValue = e.result) + } + } + } + }, + ce.removeEvent = function(e, t, n) { + e.removeEventListener && e.removeEventListener(t, n) + } + , + ce.Event = function(e, t) { + if (!(this instanceof ce.Event)) + return new ce.Event(e,t); + e && e.type ? (this.originalEvent = e, + this.type = e.type, + this.isDefaultPrevented = e.defaultPrevented || void 0 === e.defaultPrevented && !1 === e.returnValue ? Ne : qe, + this.target = e.target && 3 === e.target.nodeType ? e.target.parentNode : e.target, + this.currentTarget = e.currentTarget, + this.relatedTarget = e.relatedTarget) : this.type = e, + t && ce.extend(this, t), + this.timeStamp = e && e.timeStamp || Date.now(), + this[ce.expando] = !0 + } + , + ce.Event.prototype = { + constructor: ce.Event, + isDefaultPrevented: qe, + isPropagationStopped: qe, + isImmediatePropagationStopped: qe, + isSimulated: !1, + preventDefault: function() { + var e = this.originalEvent; + this.isDefaultPrevented = Ne, + e && !this.isSimulated && e.preventDefault() + }, + stopPropagation: function() { + var e = this.originalEvent; + this.isPropagationStopped = Ne, + e && !this.isSimulated && e.stopPropagation() + }, + stopImmediatePropagation: function() { + var e = this.originalEvent; + this.isImmediatePropagationStopped = Ne, + e && !this.isSimulated && e.stopImmediatePropagation(), + this.stopPropagation() + } + }, + ce.each({ + altKey: !0, + bubbles: !0, + cancelable: !0, + changedTouches: !0, + ctrlKey: !0, + detail: !0, + eventPhase: !0, + metaKey: !0, + pageX: !0, + pageY: !0, + shiftKey: !0, + view: !0, + "char": !0, + code: !0, + charCode: !0, + key: !0, + keyCode: !0, + button: !0, + buttons: !0, + clientX: !0, + clientY: !0, + offsetX: !0, + offsetY: !0, + pointerId: !0, + pointerType: !0, + screenX: !0, + screenY: !0, + targetTouches: !0, + toElement: !0, + touches: !0, + which: !0 + }, ce.event.addProp), + ce.each({ + focus: "focusin", + blur: "focusout" + }, function(r, i) { + function o(e) { + if (C.documentMode) { + var t = _.get(this, "handle") + , n = ce.event.fix(e); + n.type = "focusin" === e.type ? "focus" : "blur", + n.isSimulated = !0, + t(e), + n.target === n.currentTarget && t(n) + } else + ce.event.simulate(i, e.target, ce.event.fix(e)) + } + ce.event.special[r] = { + setup: function() { + var e; + if (He(this, r, !0), + !C.documentMode) + return !1; + (e = _.get(this, i)) || this.addEventListener(i, o), + _.set(this, i, (e || 0) + 1) + }, + trigger: function() { + return He(this, r), + !0 + }, + teardown: function() { + var e; + if (!C.documentMode) + return !1; + (e = _.get(this, i) - 1) ? _.set(this, i, e) : (this.removeEventListener(i, o), + _.remove(this, i)) + }, + _default: function(e) { + return _.get(e.target, r) + }, + delegateType: i + }, + ce.event.special[i] = { + setup: function() { + var e = this.ownerDocument || this.document || this + , t = C.documentMode ? this : e + , n = _.get(t, i); + n || (C.documentMode ? this.addEventListener(i, o) : e.addEventListener(r, o, !0)), + _.set(t, i, (n || 0) + 1) + }, + teardown: function() { + var e = this.ownerDocument || this.document || this + , t = C.documentMode ? this : e + , n = _.get(t, i) - 1; + n ? _.set(t, i, n) : (C.documentMode ? this.removeEventListener(i, o) : e.removeEventListener(r, o, !0), + _.remove(t, i)) + } + } + }), + ce.each({ + mouseenter: "mouseover", + mouseleave: "mouseout", + pointerenter: "pointerover", + pointerleave: "pointerout" + }, function(e, i) { + ce.event.special[e] = { + delegateType: i, + bindType: i, + handle: function(e) { + var t, n = e.relatedTarget, r = e.handleObj; + return n && (n === this || ce.contains(this, n)) || (e.type = r.origType, + t = r.handler.apply(this, arguments), + e.type = i), + t + } + } + }), + ce.fn.extend({ + on: function(e, t, n, r) { + return Le(this, e, t, n, r) + }, + one: function(e, t, n, r) { + return Le(this, e, t, n, r, 1) + }, + off: function(e, t, n) { + var r, i; + if (e && e.preventDefault && e.handleObj) + return r = e.handleObj, + ce(e.delegateTarget).off(r.namespace ? r.origType + "." + r.namespace : r.origType, r.selector, r.handler), + this; + if ("object" == typeof e) { + for (i in e) + this.off(i, t, e[i]); + return this + } + return !1 !== t && "function" != typeof t || (n = t, + t = void 0), + !1 === n && (n = qe), + this.each(function() { + ce.event.remove(this, e, n, t) + }) + } + }); + var Oe = /\s*$/g; + function Re(e, t) { + return fe(e, "table") && fe(11 !== t.nodeType ? t : t.firstChild, "tr") && ce(e).children("tbody")[0] || e + } + function Ie(e) { + return e.type = (null !== e.getAttribute("type")) + "/" + e.type, + e + } + function We(e) { + return "true/" === (e.type || "").slice(0, 5) ? e.type = e.type.slice(5) : e.removeAttribute("type"), + e + } + function Fe(e, t) { + var n, r, i, o, a, s; + if (1 === t.nodeType) { + if (_.hasData(e) && (s = _.get(e).events)) + for (i in _.remove(t, "handle events"), + s) + for (n = 0, + r = s[i].length; n < r; n++) + ce.event.add(t, i, s[i][n]); + z.hasData(e) && (o = z.access(e), + a = ce.extend({}, o), + z.set(t, a)) + } + } + function $e(n, r, i, o) { + r = g(r); + var e, t, a, s, u, l, c = 0, f = n.length, p = f - 1, d = r[0], h = v(d); + if (h || 1 < f && "string" == typeof d && !le.checkClone && Pe.test(d)) + return n.each(function(e) { + var t = n.eq(e); + h && (r[0] = d.call(this, e, t.html())), + $e(t, r, i, o) + }); + if (f && (t = (e = Ae(r, n[0].ownerDocument, !1, n, o)).firstChild, + 1 === e.childNodes.length && (e = t), + t || o)) { + for (s = (a = ce.map(Se(e, "script"), Ie)).length; c < f; c++) + u = e, + c !== p && (u = ce.clone(u, !0, !0), + s && ce.merge(a, Se(u, "script"))), + i.call(n[c], u, c); + if (s) + for (l = a[a.length - 1].ownerDocument, + ce.map(a, We), + c = 0; c < s; c++) + u = a[c], + Ce.test(u.type || "") && !_.access(u, "globalEval") && ce.contains(l, u) && (u.src && "module" !== (u.type || "").toLowerCase() ? ce._evalUrl && !u.noModule && ce._evalUrl(u.src, { + nonce: u.nonce || u.getAttribute("nonce") + }, l) : m(u.textContent.replace(Me, ""), u, l)) + } + return n + } + function Be(e, t, n) { + for (var r, i = t ? ce.filter(t, e) : e, o = 0; null != (r = i[o]); o++) + n || 1 !== r.nodeType || ce.cleanData(Se(r)), + r.parentNode && (n && K(r) && Ee(Se(r, "script")), + r.parentNode.removeChild(r)); + return e + } + ce.extend({ + htmlPrefilter: function(e) { + return e + }, + clone: function(e, t, n) { + var r, i, o, a, s, u, l, c = e.cloneNode(!0), f = K(e); + if (!(le.noCloneChecked || 1 !== e.nodeType && 11 !== e.nodeType || ce.isXMLDoc(e))) + for (a = Se(c), + r = 0, + i = (o = Se(e)).length; r < i; r++) + s = o[r], + u = a[r], + void 0, + "input" === (l = u.nodeName.toLowerCase()) && we.test(s.type) ? u.checked = s.checked : "input" !== l && "textarea" !== l || (u.defaultValue = s.defaultValue); + if (t) + if (n) + for (o = o || Se(e), + a = a || Se(c), + r = 0, + i = o.length; r < i; r++) + Fe(o[r], a[r]); + else + Fe(e, c); + return 0 < (a = Se(c, "script")).length && Ee(a, !f && Se(e, "script")), + c + }, + cleanData: function(e) { + for (var t, n, r, i = ce.event.special, o = 0; void 0 !== (n = e[o]); o++) + if ($(n)) { + if (t = n[_.expando]) { + if (t.events) + for (r in t.events) + i[r] ? ce.event.remove(n, r) : ce.removeEvent(n, r, t.handle); + n[_.expando] = void 0 + } + n[z.expando] && (n[z.expando] = void 0) + } + } + }), + ce.fn.extend({ + detach: function(e) { + return Be(this, e, !0) + }, + remove: function(e) { + return Be(this, e) + }, + text: function(e) { + return M(this, function(e) { + return void 0 === e ? ce.text(this) : this.empty().each(function() { + 1 !== this.nodeType && 11 !== this.nodeType && 9 !== this.nodeType || (this.textContent = e) + }) + }, null, e, arguments.length) + }, + append: function() { + return $e(this, arguments, function(e) { + 1 !== this.nodeType && 11 !== this.nodeType && 9 !== this.nodeType || Re(this, e).appendChild(e) + }) + }, + prepend: function() { + return $e(this, arguments, function(e) { + if (1 === this.nodeType || 11 === this.nodeType || 9 === this.nodeType) { + var t = Re(this, e); + t.insertBefore(e, t.firstChild) + } + }) + }, + before: function() { + return $e(this, arguments, function(e) { + this.parentNode && this.parentNode.insertBefore(e, this) + }) + }, + after: function() { + return $e(this, arguments, function(e) { + this.parentNode && this.parentNode.insertBefore(e, this.nextSibling) + }) + }, + empty: function() { + for (var e, t = 0; null != (e = this[t]); t++) + 1 === e.nodeType && (ce.cleanData(Se(e, !1)), + e.textContent = ""); + return this + }, + clone: function(e, t) { + return e = null != e && e, + t = null == t ? e : t, + this.map(function() { + return ce.clone(this, e, t) + }) + }, + html: function(e) { + return M(this, function(e) { + var t = this[0] || {} + , n = 0 + , r = this.length; + if (void 0 === e && 1 === t.nodeType) + return t.innerHTML; + if ("string" == typeof e && !Oe.test(e) && !ke[(Te.exec(e) || ["", ""])[1].toLowerCase()]) { + e = ce.htmlPrefilter(e); + try { + for (; n < r; n++) + 1 === (t = this[n] || {}).nodeType && (ce.cleanData(Se(t, !1)), + t.innerHTML = e); + t = 0 + } catch (e) {} + } + t && this.empty().append(e) + }, null, e, arguments.length) + }, + replaceWith: function() { + var n = []; + return $e(this, arguments, function(e) { + var t = this.parentNode; + ce.inArray(this, n) < 0 && (ce.cleanData(Se(this)), + t && t.replaceChild(e, this)) + }, n) + } + }), + ce.each({ + appendTo: "append", + prependTo: "prepend", + insertBefore: "before", + insertAfter: "after", + replaceAll: "replaceWith" + }, function(e, a) { + ce.fn[e] = function(e) { + for (var t, n = [], r = ce(e), i = r.length - 1, o = 0; o <= i; o++) + t = o === i ? this : this.clone(!0), + ce(r[o])[a](t), + s.apply(n, t.get()); + return this.pushStack(n) + } + }); + var _e = new RegExp("^(" + G + ")(?!px)[a-z%]+$","i") + , ze = /^--/ + , Xe = function(e) { + var t = e.ownerDocument.defaultView; + return t && t.opener || (t = ie), + t.getComputedStyle(e) + } + , Ue = function(e, t, n) { + var r, i, o = {}; + for (i in t) + o[i] = e.style[i], + e.style[i] = t[i]; + for (i in r = n.call(e), + t) + e.style[i] = o[i]; + return r + } + , Ve = new RegExp(Q.join("|"),"i"); + function Ge(e, t, n) { + var r, i, o, a, s = ze.test(t), u = e.style; + return (n = n || Xe(e)) && (a = n.getPropertyValue(t) || n[t], + s && a && (a = a.replace(ve, "$1") || void 0), + "" !== a || K(e) || (a = ce.style(e, t)), + !le.pixelBoxStyles() && _e.test(a) && Ve.test(t) && (r = u.width, + i = u.minWidth, + o = u.maxWidth, + u.minWidth = u.maxWidth = u.width = a, + a = n.width, + u.width = r, + u.minWidth = i, + u.maxWidth = o)), + void 0 !== a ? a + "" : a + } + function Ye(e, t) { + return { + get: function() { + if (!e()) + return (this.get = t).apply(this, arguments); + delete this.get + } + } + } + !function() { + function e() { + if (l) { + u.style.cssText = "position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0", + l.style.cssText = "position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%", + J.appendChild(u).appendChild(l); + var e = ie.getComputedStyle(l); + n = "1%" !== e.top, + s = 12 === t(e.marginLeft), + l.style.right = "60%", + o = 36 === t(e.right), + r = 36 === t(e.width), + l.style.position = "absolute", + i = 12 === t(l.offsetWidth / 3), + J.removeChild(u), + l = null + } + } + function t(e) { + return Math.round(parseFloat(e)) + } + var n, r, i, o, a, s, u = C.createElement("div"), l = C.createElement("div"); + l.style && (l.style.backgroundClip = "content-box", + l.cloneNode(!0).style.backgroundClip = "", + le.clearCloneStyle = "content-box" === l.style.backgroundClip, + ce.extend(le, { + boxSizingReliable: function() { + return e(), + r + }, + pixelBoxStyles: function() { + return e(), + o + }, + pixelPosition: function() { + return e(), + n + }, + reliableMarginLeft: function() { + return e(), + s + }, + scrollboxSize: function() { + return e(), + i + }, + reliableTrDimensions: function() { + var e, t, n, r; + return null == a && (e = C.createElement("table"), + t = C.createElement("tr"), + n = C.createElement("div"), + e.style.cssText = "position:absolute;left:-11111px;border-collapse:separate", + t.style.cssText = "box-sizing:content-box;border:1px solid", + t.style.height = "1px", + n.style.height = "9px", + n.style.display = "block", + J.appendChild(e).appendChild(t).appendChild(n), + r = ie.getComputedStyle(t), + a = parseInt(r.height, 10) + parseInt(r.borderTopWidth, 10) + parseInt(r.borderBottomWidth, 10) === t.offsetHeight, + J.removeChild(e)), + a + } + })) + }(); + var Qe = ["Webkit", "Moz", "ms"] + , Je = C.createElement("div").style + , Ke = {}; + function Ze(e) { + var t = ce.cssProps[e] || Ke[e]; + return t || (e in Je ? e : Ke[e] = function(e) { + var t = e[0].toUpperCase() + e.slice(1) + , n = Qe.length; + while (n--) + if ((e = Qe[n] + t)in Je) + return e + }(e) || e) + } + var et = /^(none|table(?!-c[ea]).+)/ + , tt = { + position: "absolute", + visibility: "hidden", + display: "block" + } + , nt = { + letterSpacing: "0", + fontWeight: "400" + }; + function rt(e, t, n) { + var r = Y.exec(t); + return r ? Math.max(0, r[2] - (n || 0)) + (r[3] || "px") : t + } + function it(e, t, n, r, i, o) { + var a = "width" === t ? 1 : 0 + , s = 0 + , u = 0 + , l = 0; + if (n === (r ? "border" : "content")) + return 0; + for (; a < 4; a += 2) + "margin" === n && (l += ce.css(e, n + Q[a], !0, i)), + r ? ("content" === n && (u -= ce.css(e, "padding" + Q[a], !0, i)), + "margin" !== n && (u -= ce.css(e, "border" + Q[a] + "Width", !0, i))) : (u += ce.css(e, "padding" + Q[a], !0, i), + "padding" !== n ? u += ce.css(e, "border" + Q[a] + "Width", !0, i) : s += ce.css(e, "border" + Q[a] + "Width", !0, i)); + return !r && 0 <= o && (u += Math.max(0, Math.ceil(e["offset" + t[0].toUpperCase() + t.slice(1)] - o - u - s - .5)) || 0), + u + l + } + function ot(e, t, n) { + var r = Xe(e) + , i = (!le.boxSizingReliable() || n) && "border-box" === ce.css(e, "boxSizing", !1, r) + , o = i + , a = Ge(e, t, r) + , s = "offset" + t[0].toUpperCase() + t.slice(1); + if (_e.test(a)) { + if (!n) + return a; + a = "auto" + } + return (!le.boxSizingReliable() && i || !le.reliableTrDimensions() && fe(e, "tr") || "auto" === a || !parseFloat(a) && "inline" === ce.css(e, "display", !1, r)) && e.getClientRects().length && (i = "border-box" === ce.css(e, "boxSizing", !1, r), + (o = s in e) && (a = e[s])), + (a = parseFloat(a) || 0) + it(e, t, n || (i ? "border" : "content"), o, r, a) + "px" + } + function at(e, t, n, r, i) { + return new at.prototype.init(e,t,n,r,i) + } + ce.extend({ + cssHooks: { + opacity: { + get: function(e, t) { + if (t) { + var n = Ge(e, "opacity"); + return "" === n ? "1" : n + } + } + } + }, + cssNumber: { + animationIterationCount: !0, + aspectRatio: !0, + borderImageSlice: !0, + columnCount: !0, + flexGrow: !0, + flexShrink: !0, + fontWeight: !0, + gridArea: !0, + gridColumn: !0, + gridColumnEnd: !0, + gridColumnStart: !0, + gridRow: !0, + gridRowEnd: !0, + gridRowStart: !0, + lineHeight: !0, + opacity: !0, + order: !0, + orphans: !0, + scale: !0, + widows: !0, + zIndex: !0, + zoom: !0, + fillOpacity: !0, + floodOpacity: !0, + stopOpacity: !0, + strokeMiterlimit: !0, + strokeOpacity: !0 + }, + cssProps: {}, + style: function(e, t, n, r) { + if (e && 3 !== e.nodeType && 8 !== e.nodeType && e.style) { + var i, o, a, s = F(t), u = ze.test(t), l = e.style; + if (u || (t = Ze(s)), + a = ce.cssHooks[t] || ce.cssHooks[s], + void 0 === n) + return a && "get"in a && void 0 !== (i = a.get(e, !1, r)) ? i : l[t]; + "string" === (o = typeof n) && (i = Y.exec(n)) && i[1] && (n = te(e, t, i), + o = "number"), + null != n && n == n && ("number" !== o || u || (n += i && i[3] || (ce.cssNumber[s] ? "" : "px")), + le.clearCloneStyle || "" !== n || 0 !== t.indexOf("background") || (l[t] = "inherit"), + a && "set"in a && void 0 === (n = a.set(e, n, r)) || (u ? l.setProperty(t, n) : l[t] = n)) + } + }, + css: function(e, t, n, r) { + var i, o, a, s = F(t); + return ze.test(t) || (t = Ze(s)), + (a = ce.cssHooks[t] || ce.cssHooks[s]) && "get"in a && (i = a.get(e, !0, n)), + void 0 === i && (i = Ge(e, t, r)), + "normal" === i && t in nt && (i = nt[t]), + "" === n || n ? (o = parseFloat(i), + !0 === n || isFinite(o) ? o || 0 : i) : i + } + }), + ce.each(["height", "width"], function(e, u) { + ce.cssHooks[u] = { + get: function(e, t, n) { + if (t) + return !et.test(ce.css(e, "display")) || e.getClientRects().length && e.getBoundingClientRect().width ? ot(e, u, n) : Ue(e, tt, function() { + return ot(e, u, n) + }) + }, + set: function(e, t, n) { + var r, i = Xe(e), o = !le.scrollboxSize() && "absolute" === i.position, a = (o || n) && "border-box" === ce.css(e, "boxSizing", !1, i), s = n ? it(e, u, n, a, i) : 0; + return a && o && (s -= Math.ceil(e["offset" + u[0].toUpperCase() + u.slice(1)] - parseFloat(i[u]) - it(e, u, "border", !1, i) - .5)), + s && (r = Y.exec(t)) && "px" !== (r[3] || "px") && (e.style[u] = t, + t = ce.css(e, u)), + rt(0, t, s) + } + } + }), + ce.cssHooks.marginLeft = Ye(le.reliableMarginLeft, function(e, t) { + if (t) + return (parseFloat(Ge(e, "marginLeft")) || e.getBoundingClientRect().left - Ue(e, { + marginLeft: 0 + }, function() { + return e.getBoundingClientRect().left + })) + "px" + }), + ce.each({ + margin: "", + padding: "", + border: "Width" + }, function(i, o) { + ce.cssHooks[i + o] = { + expand: function(e) { + for (var t = 0, n = {}, r = "string" == typeof e ? e.split(" ") : [e]; t < 4; t++) + n[i + Q[t] + o] = r[t] || r[t - 2] || r[0]; + return n + } + }, + "margin" !== i && (ce.cssHooks[i + o].set = rt) + }), + ce.fn.extend({ + css: function(e, t) { + return M(this, function(e, t, n) { + var r, i, o = {}, a = 0; + if (Array.isArray(t)) { + for (r = Xe(e), + i = t.length; a < i; a++) + o[t[a]] = ce.css(e, t[a], !1, r); + return o + } + return void 0 !== n ? ce.style(e, t, n) : ce.css(e, t) + }, e, t, 1 < arguments.length) + } + }), + ((ce.Tween = at).prototype = { + constructor: at, + init: function(e, t, n, r, i, o) { + this.elem = e, + this.prop = n, + this.easing = i || ce.easing._default, + this.options = t, + this.start = this.now = this.cur(), + this.end = r, + this.unit = o || (ce.cssNumber[n] ? "" : "px") + }, + cur: function() { + var e = at.propHooks[this.prop]; + return e && e.get ? e.get(this) : at.propHooks._default.get(this) + }, + run: function(e) { + var t, n = at.propHooks[this.prop]; + return this.options.duration ? this.pos = t = ce.easing[this.easing](e, this.options.duration * e, 0, 1, this.options.duration) : this.pos = t = e, + this.now = (this.end - this.start) * t + this.start, + this.options.step && this.options.step.call(this.elem, this.now, this), + n && n.set ? n.set(this) : at.propHooks._default.set(this), + this + } + }).init.prototype = at.prototype, + (at.propHooks = { + _default: { + get: function(e) { + var t; + return 1 !== e.elem.nodeType || null != e.elem[e.prop] && null == e.elem.style[e.prop] ? e.elem[e.prop] : (t = ce.css(e.elem, e.prop, "")) && "auto" !== t ? t : 0 + }, + set: function(e) { + ce.fx.step[e.prop] ? ce.fx.step[e.prop](e) : 1 !== e.elem.nodeType || !ce.cssHooks[e.prop] && null == e.elem.style[Ze(e.prop)] ? e.elem[e.prop] = e.now : ce.style(e.elem, e.prop, e.now + e.unit) + } + } + }).scrollTop = at.propHooks.scrollLeft = { + set: function(e) { + e.elem.nodeType && e.elem.parentNode && (e.elem[e.prop] = e.now) + } + }, + ce.easing = { + linear: function(e) { + return e + }, + swing: function(e) { + return .5 - Math.cos(e * Math.PI) / 2 + }, + _default: "swing" + }, + ce.fx = at.prototype.init, + ce.fx.step = {}; + var st, ut, lt, ct, ft = /^(?:toggle|show|hide)$/, pt = /queueHooks$/; + function dt() { + ut && (!1 === C.hidden && ie.requestAnimationFrame ? ie.requestAnimationFrame(dt) : ie.setTimeout(dt, ce.fx.interval), + ce.fx.tick()) + } + function ht() { + return ie.setTimeout(function() { + st = void 0 + }), + st = Date.now() + } + function gt(e, t) { + var n, r = 0, i = { + height: e + }; + for (t = t ? 1 : 0; r < 4; r += 2 - t) + i["margin" + (n = Q[r])] = i["padding" + n] = e; + return t && (i.opacity = i.width = e), + i + } + function vt(e, t, n) { + for (var r, i = (yt.tweeners[t] || []).concat(yt.tweeners["*"]), o = 0, a = i.length; o < a; o++) + if (r = i[o].call(n, t, e)) + return r + } + function yt(o, e, t) { + var n, a, r = 0, i = yt.prefilters.length, s = ce.Deferred().always(function() { + delete u.elem + }), u = function() { + if (a) + return !1; + for (var e = st || ht(), t = Math.max(0, l.startTime + l.duration - e), n = 1 - (t / l.duration || 0), r = 0, i = l.tweens.length; r < i; r++) + l.tweens[r].run(n); + return s.notifyWith(o, [l, n, t]), + n < 1 && i ? t : (i || s.notifyWith(o, [l, 1, 0]), + s.resolveWith(o, [l]), + !1) + }, l = s.promise({ + elem: o, + props: ce.extend({}, e), + opts: ce.extend(!0, { + specialEasing: {}, + easing: ce.easing._default + }, t), + originalProperties: e, + originalOptions: t, + startTime: st || ht(), + duration: t.duration, + tweens: [], + createTween: function(e, t) { + var n = ce.Tween(o, l.opts, e, t, l.opts.specialEasing[e] || l.opts.easing); + return l.tweens.push(n), + n + }, + stop: function(e) { + var t = 0 + , n = e ? l.tweens.length : 0; + if (a) + return this; + for (a = !0; t < n; t++) + l.tweens[t].run(1); + return e ? (s.notifyWith(o, [l, 1, 0]), + s.resolveWith(o, [l, e])) : s.rejectWith(o, [l, e]), + this + } + }), c = l.props; + for (!function(e, t) { + var n, r, i, o, a; + for (n in e) + if (i = t[r = F(n)], + o = e[n], + Array.isArray(o) && (i = o[1], + o = e[n] = o[0]), + n !== r && (e[r] = o, + delete e[n]), + (a = ce.cssHooks[r]) && "expand"in a) + for (n in o = a.expand(o), + delete e[r], + o) + n in e || (e[n] = o[n], + t[n] = i); + else + t[r] = i + }(c, l.opts.specialEasing); r < i; r++) + if (n = yt.prefilters[r].call(l, o, c, l.opts)) + return v(n.stop) && (ce._queueHooks(l.elem, l.opts.queue).stop = n.stop.bind(n)), + n; + return ce.map(c, vt, l), + v(l.opts.start) && l.opts.start.call(o, l), + l.progress(l.opts.progress).done(l.opts.done, l.opts.complete).fail(l.opts.fail).always(l.opts.always), + ce.fx.timer(ce.extend(u, { + elem: o, + anim: l, + queue: l.opts.queue + })), + l + } + ce.Animation = ce.extend(yt, { + tweeners: { + "*": [function(e, t) { + var n = this.createTween(e, t); + return te(n.elem, e, Y.exec(t), n), + n + } + ] + }, + tweener: function(e, t) { + v(e) ? (t = e, + e = ["*"]) : e = e.match(D); + for (var n, r = 0, i = e.length; r < i; r++) + n = e[r], + yt.tweeners[n] = yt.tweeners[n] || [], + yt.tweeners[n].unshift(t) + }, + prefilters: [function(e, t, n) { + var r, i, o, a, s, u, l, c, f = "width"in t || "height"in t, p = this, d = {}, h = e.style, g = e.nodeType && ee(e), v = _.get(e, "fxshow"); + for (r in n.queue || (null == (a = ce._queueHooks(e, "fx")).unqueued && (a.unqueued = 0, + s = a.empty.fire, + a.empty.fire = function() { + a.unqueued || s() + } + ), + a.unqueued++, + p.always(function() { + p.always(function() { + a.unqueued--, + ce.queue(e, "fx").length || a.empty.fire() + }) + })), + t) + if (i = t[r], + ft.test(i)) { + if (delete t[r], + o = o || "toggle" === i, + i === (g ? "hide" : "show")) { + if ("show" !== i || !v || void 0 === v[r]) + continue; + g = !0 + } + d[r] = v && v[r] || ce.style(e, r) + } + if ((u = !ce.isEmptyObject(t)) || !ce.isEmptyObject(d)) + for (r in f && 1 === e.nodeType && (n.overflow = [h.overflow, h.overflowX, h.overflowY], + null == (l = v && v.display) && (l = _.get(e, "display")), + "none" === (c = ce.css(e, "display")) && (l ? c = l : (re([e], !0), + l = e.style.display || l, + c = ce.css(e, "display"), + re([e]))), + ("inline" === c || "inline-block" === c && null != l) && "none" === ce.css(e, "float") && (u || (p.done(function() { + h.display = l + }), + null == l && (c = h.display, + l = "none" === c ? "" : c)), + h.display = "inline-block")), + n.overflow && (h.overflow = "hidden", + p.always(function() { + h.overflow = n.overflow[0], + h.overflowX = n.overflow[1], + h.overflowY = n.overflow[2] + })), + u = !1, + d) + u || (v ? "hidden"in v && (g = v.hidden) : v = _.access(e, "fxshow", { + display: l + }), + o && (v.hidden = !g), + g && re([e], !0), + p.done(function() { + for (r in g || re([e]), + _.remove(e, "fxshow"), + d) + ce.style(e, r, d[r]) + })), + u = vt(g ? v[r] : 0, r, p), + r in v || (v[r] = u.start, + g && (u.end = u.start, + u.start = 0)) + } + ], + prefilter: function(e, t) { + t ? yt.prefilters.unshift(e) : yt.prefilters.push(e) + } + }), + ce.speed = function(e, t, n) { + var r = e && "object" == typeof e ? ce.extend({}, e) : { + complete: n || !n && t || v(e) && e, + duration: e, + easing: n && t || t && !v(t) && t + }; + return ce.fx.off ? r.duration = 0 : "number" != typeof r.duration && (r.duration in ce.fx.speeds ? r.duration = ce.fx.speeds[r.duration] : r.duration = ce.fx.speeds._default), + null != r.queue && !0 !== r.queue || (r.queue = "fx"), + r.old = r.complete, + r.complete = function() { + v(r.old) && r.old.call(this), + r.queue && ce.dequeue(this, r.queue) + } + , + r + } + , + ce.fn.extend({ + fadeTo: function(e, t, n, r) { + return this.filter(ee).css("opacity", 0).show().end().animate({ + opacity: t + }, e, n, r) + }, + animate: function(t, e, n, r) { + var i = ce.isEmptyObject(t) + , o = ce.speed(e, n, r) + , a = function() { + var e = yt(this, ce.extend({}, t), o); + (i || _.get(this, "finish")) && e.stop(!0) + }; + return a.finish = a, + i || !1 === o.queue ? this.each(a) : this.queue(o.queue, a) + }, + stop: function(i, e, o) { + var a = function(e) { + var t = e.stop; + delete e.stop, + t(o) + }; + return "string" != typeof i && (o = e, + e = i, + i = void 0), + e && this.queue(i || "fx", []), + this.each(function() { + var e = !0 + , t = null != i && i + "queueHooks" + , n = ce.timers + , r = _.get(this); + if (t) + r[t] && r[t].stop && a(r[t]); + else + for (t in r) + r[t] && r[t].stop && pt.test(t) && a(r[t]); + for (t = n.length; t--; ) + n[t].elem !== this || null != i && n[t].queue !== i || (n[t].anim.stop(o), + e = !1, + n.splice(t, 1)); + !e && o || ce.dequeue(this, i) + }) + }, + finish: function(a) { + return !1 !== a && (a = a || "fx"), + this.each(function() { + var e, t = _.get(this), n = t[a + "queue"], r = t[a + "queueHooks"], i = ce.timers, o = n ? n.length : 0; + for (t.finish = !0, + ce.queue(this, a, []), + r && r.stop && r.stop.call(this, !0), + e = i.length; e--; ) + i[e].elem === this && i[e].queue === a && (i[e].anim.stop(!0), + i.splice(e, 1)); + for (e = 0; e < o; e++) + n[e] && n[e].finish && n[e].finish.call(this); + delete t.finish + }) + } + }), + ce.each(["toggle", "show", "hide"], function(e, r) { + var i = ce.fn[r]; + ce.fn[r] = function(e, t, n) { + return null == e || "boolean" == typeof e ? i.apply(this, arguments) : this.animate(gt(r, !0), e, t, n) + } + }), + ce.each({ + slideDown: gt("show"), + slideUp: gt("hide"), + slideToggle: gt("toggle"), + fadeIn: { + opacity: "show" + }, + fadeOut: { + opacity: "hide" + }, + fadeToggle: { + opacity: "toggle" + } + }, function(e, r) { + ce.fn[e] = function(e, t, n) { + return this.animate(r, e, t, n) + } + }), + ce.timers = [], + ce.fx.tick = function() { + var e, t = 0, n = ce.timers; + for (st = Date.now(); t < n.length; t++) + (e = n[t])() || n[t] !== e || n.splice(t--, 1); + n.length || ce.fx.stop(), + st = void 0 + } + , + ce.fx.timer = function(e) { + ce.timers.push(e), + ce.fx.start() + } + , + ce.fx.interval = 13, + ce.fx.start = function() { + ut || (ut = !0, + dt()) + } + , + ce.fx.stop = function() { + ut = null + } + , + ce.fx.speeds = { + slow: 600, + fast: 200, + _default: 400 + }, + ce.fn.delay = function(r, e) { + return r = ce.fx && ce.fx.speeds[r] || r, + e = e || "fx", + this.queue(e, function(e, t) { + var n = ie.setTimeout(e, r); + t.stop = function() { + ie.clearTimeout(n) + } + }) + } + , + lt = C.createElement("input"), + ct = C.createElement("select").appendChild(C.createElement("option")), + lt.type = "checkbox", + le.checkOn = "" !== lt.value, + le.optSelected = ct.selected, + (lt = C.createElement("input")).value = "t", + lt.type = "radio", + le.radioValue = "t" === lt.value; + var mt, xt = ce.expr.attrHandle; + ce.fn.extend({ + attr: function(e, t) { + return M(this, ce.attr, e, t, 1 < arguments.length) + }, + removeAttr: function(e) { + return this.each(function() { + ce.removeAttr(this, e) + }) + } + }), + ce.extend({ + attr: function(e, t, n) { + var r, i, o = e.nodeType; + if (3 !== o && 8 !== o && 2 !== o) + return "undefined" == typeof e.getAttribute ? ce.prop(e, t, n) : (1 === o && ce.isXMLDoc(e) || (i = ce.attrHooks[t.toLowerCase()] || (ce.expr.match.bool.test(t) ? mt : void 0)), + void 0 !== n ? null === n ? void ce.removeAttr(e, t) : i && "set"in i && void 0 !== (r = i.set(e, n, t)) ? r : (e.setAttribute(t, n + ""), + n) : i && "get"in i && null !== (r = i.get(e, t)) ? r : null == (r = ce.find.attr(e, t)) ? void 0 : r) + }, + attrHooks: { + type: { + set: function(e, t) { + if (!le.radioValue && "radio" === t && fe(e, "input")) { + var n = e.value; + return e.setAttribute("type", t), + n && (e.value = n), + t + } + } + } + }, + removeAttr: function(e, t) { + var n, r = 0, i = t && t.match(D); + if (i && 1 === e.nodeType) + while (n = i[r++]) + e.removeAttribute(n) + } + }), + mt = { + set: function(e, t, n) { + return !1 === t ? ce.removeAttr(e, n) : e.setAttribute(n, n), + n + } + }, + ce.each(ce.expr.match.bool.source.match(/\w+/g), function(e, t) { + var a = xt[t] || ce.find.attr; + xt[t] = function(e, t, n) { + var r, i, o = t.toLowerCase(); + return n || (i = xt[o], + xt[o] = r, + r = null != a(e, t, n) ? o : null, + xt[o] = i), + r + } + }); + var bt = /^(?:input|select|textarea|button)$/i + , wt = /^(?:a|area)$/i; + function Tt(e) { + return (e.match(D) || []).join(" ") + } + function Ct(e) { + return e.getAttribute && e.getAttribute("class") || "" + } + function kt(e) { + return Array.isArray(e) ? e : "string" == typeof e && e.match(D) || [] + } + ce.fn.extend({ + prop: function(e, t) { + return M(this, ce.prop, e, t, 1 < arguments.length) + }, + removeProp: function(e) { + return this.each(function() { + delete this[ce.propFix[e] || e] + }) + } + }), + ce.extend({ + prop: function(e, t, n) { + var r, i, o = e.nodeType; + if (3 !== o && 8 !== o && 2 !== o) + return 1 === o && ce.isXMLDoc(e) || (t = ce.propFix[t] || t, + i = ce.propHooks[t]), + void 0 !== n ? i && "set"in i && void 0 !== (r = i.set(e, n, t)) ? r : e[t] = n : i && "get"in i && null !== (r = i.get(e, t)) ? r : e[t] + }, + propHooks: { + tabIndex: { + get: function(e) { + var t = ce.find.attr(e, "tabindex"); + return t ? parseInt(t, 10) : bt.test(e.nodeName) || wt.test(e.nodeName) && e.href ? 0 : -1 + } + } + }, + propFix: { + "for": "htmlFor", + "class": "className" + } + }), + le.optSelected || (ce.propHooks.selected = { + get: function(e) { + var t = e.parentNode; + return t && t.parentNode && t.parentNode.selectedIndex, + null + }, + set: function(e) { + var t = e.parentNode; + t && (t.selectedIndex, + t.parentNode && t.parentNode.selectedIndex) + } + }), + ce.each(["tabIndex", "readOnly", "maxLength", "cellSpacing", "cellPadding", "rowSpan", "colSpan", "useMap", "frameBorder", "contentEditable"], function() { + ce.propFix[this.toLowerCase()] = this + }), + ce.fn.extend({ + addClass: function(t) { + var e, n, r, i, o, a; + return v(t) ? this.each(function(e) { + ce(this).addClass(t.call(this, e, Ct(this))) + }) : (e = kt(t)).length ? this.each(function() { + if (r = Ct(this), + n = 1 === this.nodeType && " " + Tt(r) + " ") { + for (o = 0; o < e.length; o++) + i = e[o], + n.indexOf(" " + i + " ") < 0 && (n += i + " "); + a = Tt(n), + r !== a && this.setAttribute("class", a) + } + }) : this + }, + removeClass: function(t) { + var e, n, r, i, o, a; + return v(t) ? this.each(function(e) { + ce(this).removeClass(t.call(this, e, Ct(this))) + }) : arguments.length ? (e = kt(t)).length ? this.each(function() { + if (r = Ct(this), + n = 1 === this.nodeType && " " + Tt(r) + " ") { + for (o = 0; o < e.length; o++) { + i = e[o]; + while (-1 < n.indexOf(" " + i + " ")) + n = n.replace(" " + i + " ", " ") + } + a = Tt(n), + r !== a && this.setAttribute("class", a) + } + }) : this : this.attr("class", "") + }, + toggleClass: function(t, n) { + var e, r, i, o, a = typeof t, s = "string" === a || Array.isArray(t); + return v(t) ? this.each(function(e) { + ce(this).toggleClass(t.call(this, e, Ct(this), n), n) + }) : "boolean" == typeof n && s ? n ? this.addClass(t) : this.removeClass(t) : (e = kt(t), + this.each(function() { + if (s) + for (o = ce(this), + i = 0; i < e.length; i++) + r = e[i], + o.hasClass(r) ? o.removeClass(r) : o.addClass(r); + else + void 0 !== t && "boolean" !== a || ((r = Ct(this)) && _.set(this, "__className__", r), + this.setAttribute && this.setAttribute("class", r || !1 === t ? "" : _.get(this, "__className__") || "")) + })) + }, + hasClass: function(e) { + var t, n, r = 0; + t = " " + e + " "; + while (n = this[r++]) + if (1 === n.nodeType && -1 < (" " + Tt(Ct(n)) + " ").indexOf(t)) + return !0; + return !1 + } + }); + var St = /\r/g; + ce.fn.extend({ + val: function(n) { + var r, e, i, t = this[0]; + return arguments.length ? (i = v(n), + this.each(function(e) { + var t; + 1 === this.nodeType && (null == (t = i ? n.call(this, e, ce(this).val()) : n) ? t = "" : "number" == typeof t ? t += "" : Array.isArray(t) && (t = ce.map(t, function(e) { + return null == e ? "" : e + "" + })), + (r = ce.valHooks[this.type] || ce.valHooks[this.nodeName.toLowerCase()]) && "set"in r && void 0 !== r.set(this, t, "value") || (this.value = t)) + })) : t ? (r = ce.valHooks[t.type] || ce.valHooks[t.nodeName.toLowerCase()]) && "get"in r && void 0 !== (e = r.get(t, "value")) ? e : "string" == typeof (e = t.value) ? e.replace(St, "") : null == e ? "" : e : void 0 + } + }), + ce.extend({ + valHooks: { + option: { + get: function(e) { + var t = ce.find.attr(e, "value"); + return null != t ? t : Tt(ce.text(e)) + } + }, + select: { + get: function(e) { + var t, n, r, i = e.options, o = e.selectedIndex, a = "select-one" === e.type, s = a ? null : [], u = a ? o + 1 : i.length; + for (r = o < 0 ? u : a ? o : 0; r < u; r++) + if (((n = i[r]).selected || r === o) && !n.disabled && (!n.parentNode.disabled || !fe(n.parentNode, "optgroup"))) { + if (t = ce(n).val(), + a) + return t; + s.push(t) + } + return s + }, + set: function(e, t) { + var n, r, i = e.options, o = ce.makeArray(t), a = i.length; + while (a--) + ((r = i[a]).selected = -1 < ce.inArray(ce.valHooks.option.get(r), o)) && (n = !0); + return n || (e.selectedIndex = -1), + o + } + } + } + }), + ce.each(["radio", "checkbox"], function() { + ce.valHooks[this] = { + set: function(e, t) { + if (Array.isArray(t)) + return e.checked = -1 < ce.inArray(ce(e).val(), t) + } + }, + le.checkOn || (ce.valHooks[this].get = function(e) { + return null === e.getAttribute("value") ? "on" : e.value + } + ) + }); + var Et = ie.location + , jt = { + guid: Date.now() + } + , At = /\?/; + ce.parseXML = function(e) { + var t, n; + if (!e || "string" != typeof e) + return null; + try { + t = (new ie.DOMParser).parseFromString(e, "text/xml") + } catch (e) {} + return n = t && t.getElementsByTagName("parsererror")[0], + t && !n || ce.error("Invalid XML: " + (n ? ce.map(n.childNodes, function(e) { + return e.textContent + }).join("\n") : e)), + t + } + ; + var Dt = /^(?:focusinfocus|focusoutblur)$/ + , Nt = function(e) { + e.stopPropagation() + }; + ce.extend(ce.event, { + trigger: function(e, t, n, r) { + var i, o, a, s, u, l, c, f, p = [n || C], d = ue.call(e, "type") ? e.type : e, h = ue.call(e, "namespace") ? e.namespace.split(".") : []; + if (o = f = a = n = n || C, + 3 !== n.nodeType && 8 !== n.nodeType && !Dt.test(d + ce.event.triggered) && (-1 < d.indexOf(".") && (d = (h = d.split(".")).shift(), + h.sort()), + u = d.indexOf(":") < 0 && "on" + d, + (e = e[ce.expando] ? e : new ce.Event(d,"object" == typeof e && e)).isTrigger = r ? 2 : 3, + e.namespace = h.join("."), + e.rnamespace = e.namespace ? new RegExp("(^|\\.)" + h.join("\\.(?:.*\\.|)") + "(\\.|$)") : null, + e.result = void 0, + e.target || (e.target = n), + t = null == t ? [e] : ce.makeArray(t, [e]), + c = ce.event.special[d] || {}, + r || !c.trigger || !1 !== c.trigger.apply(n, t))) { + if (!r && !c.noBubble && !y(n)) { + for (s = c.delegateType || d, + Dt.test(s + d) || (o = o.parentNode); o; o = o.parentNode) + p.push(o), + a = o; + a === (n.ownerDocument || C) && p.push(a.defaultView || a.parentWindow || ie) + } + i = 0; + while ((o = p[i++]) && !e.isPropagationStopped()) + f = o, + e.type = 1 < i ? s : c.bindType || d, + (l = (_.get(o, "events") || Object.create(null))[e.type] && _.get(o, "handle")) && l.apply(o, t), + (l = u && o[u]) && l.apply && $(o) && (e.result = l.apply(o, t), + !1 === e.result && e.preventDefault()); + return e.type = d, + r || e.isDefaultPrevented() || c._default && !1 !== c._default.apply(p.pop(), t) || !$(n) || u && v(n[d]) && !y(n) && ((a = n[u]) && (n[u] = null), + ce.event.triggered = d, + e.isPropagationStopped() && f.addEventListener(d, Nt), + n[d](), + e.isPropagationStopped() && f.removeEventListener(d, Nt), + ce.event.triggered = void 0, + a && (n[u] = a)), + e.result + } + }, + simulate: function(e, t, n) { + var r = ce.extend(new ce.Event, n, { + type: e, + isSimulated: !0 + }); + ce.event.trigger(r, null, t) + } + }), + ce.fn.extend({ + trigger: function(e, t) { + return this.each(function() { + ce.event.trigger(e, t, this) + }) + }, + triggerHandler: function(e, t) { + var n = this[0]; + if (n) + return ce.event.trigger(e, t, n, !0) + } + }); + var qt = /\[\]$/ + , Lt = /\r?\n/g + , Ht = /^(?:submit|button|image|reset|file)$/i + , Ot = /^(?:input|select|textarea|keygen)/i; + function Pt(n, e, r, i) { + var t; + if (Array.isArray(e)) + ce.each(e, function(e, t) { + r || qt.test(n) ? i(n, t) : Pt(n + "[" + ("object" == typeof t && null != t ? e : "") + "]", t, r, i) + }); + else if (r || "object" !== x(e)) + i(n, e); + else + for (t in e) + Pt(n + "[" + t + "]", e[t], r, i) + } + ce.param = function(e, t) { + var n, r = [], i = function(e, t) { + var n = v(t) ? t() : t; + r[r.length] = encodeURIComponent(e) + "=" + encodeURIComponent(null == n ? "" : n) + }; + if (null == e) + return ""; + if (Array.isArray(e) || e.jquery && !ce.isPlainObject(e)) + ce.each(e, function() { + i(this.name, this.value) + }); + else + for (n in e) + Pt(n, e[n], t, i); + return r.join("&") + } + , + ce.fn.extend({ + serialize: function() { + return ce.param(this.serializeArray()) + }, + serializeArray: function() { + return this.map(function() { + var e = ce.prop(this, "elements"); + return e ? ce.makeArray(e) : this + }).filter(function() { + var e = this.type; + return this.name && !ce(this).is(":disabled") && Ot.test(this.nodeName) && !Ht.test(e) && (this.checked || !we.test(e)) + }).map(function(e, t) { + var n = ce(this).val(); + return null == n ? null : Array.isArray(n) ? ce.map(n, function(e) { + return { + name: t.name, + value: e.replace(Lt, "\r\n") + } + }) : { + name: t.name, + value: n.replace(Lt, "\r\n") + } + }).get() + } + }); + var Mt = /%20/g + , Rt = /#.*$/ + , It = /([?&])_=[^&]*/ + , Wt = /^(.*?):[ \t]*([^\r\n]*)$/gm + , Ft = /^(?:GET|HEAD)$/ + , $t = /^\/\// + , Bt = {} + , _t = {} + , zt = "*/".concat("*") + , Xt = C.createElement("a"); + function Ut(o) { + return function(e, t) { + "string" != typeof e && (t = e, + e = "*"); + var n, r = 0, i = e.toLowerCase().match(D) || []; + if (v(t)) + while (n = i[r++]) + "+" === n[0] ? (n = n.slice(1) || "*", + (o[n] = o[n] || []).unshift(t)) : (o[n] = o[n] || []).push(t) + } + } + function Vt(t, i, o, a) { + var s = {} + , u = t === _t; + function l(e) { + var r; + return s[e] = !0, + ce.each(t[e] || [], function(e, t) { + var n = t(i, o, a); + return "string" != typeof n || u || s[n] ? u ? !(r = n) : void 0 : (i.dataTypes.unshift(n), + l(n), + !1) + }), + r + } + return l(i.dataTypes[0]) || !s["*"] && l("*") + } + function Gt(e, t) { + var n, r, i = ce.ajaxSettings.flatOptions || {}; + for (n in t) + void 0 !== t[n] && ((i[n] ? e : r || (r = {}))[n] = t[n]); + return r && ce.extend(!0, e, r), + e + } + Xt.href = Et.href, + ce.extend({ + active: 0, + lastModified: {}, + etag: {}, + ajaxSettings: { + url: Et.href, + type: "GET", + isLocal: /^(?:about|app|app-storage|.+-extension|file|res|widget):$/.test(Et.protocol), + global: !0, + processData: !0, + async: !0, + contentType: "application/x-www-form-urlencoded; charset=UTF-8", + accepts: { + "*": zt, + text: "text/plain", + html: "text/html", + xml: "application/xml, text/xml", + json: "application/json, text/javascript" + }, + contents: { + xml: /\bxml\b/, + html: /\bhtml/, + json: /\bjson\b/ + }, + responseFields: { + xml: "responseXML", + text: "responseText", + json: "responseJSON" + }, + converters: { + "* text": String, + "text html": !0, + "text json": JSON.parse, + "text xml": ce.parseXML + }, + flatOptions: { + url: !0, + context: !0 + } + }, + ajaxSetup: function(e, t) { + return t ? Gt(Gt(e, ce.ajaxSettings), t) : Gt(ce.ajaxSettings, e) + }, + ajaxPrefilter: Ut(Bt), + ajaxTransport: Ut(_t), + ajax: function(e, t) { + "object" == typeof e && (t = e, + e = void 0), + t = t || {}; + var c, f, p, n, d, r, h, g, i, o, v = ce.ajaxSetup({}, t), y = v.context || v, m = v.context && (y.nodeType || y.jquery) ? ce(y) : ce.event, x = ce.Deferred(), b = ce.Callbacks("once memory"), w = v.statusCode || {}, a = {}, s = {}, u = "canceled", T = { + readyState: 0, + getResponseHeader: function(e) { + var t; + if (h) { + if (!n) { + n = {}; + while (t = Wt.exec(p)) + n[t[1].toLowerCase() + " "] = (n[t[1].toLowerCase() + " "] || []).concat(t[2]) + } + t = n[e.toLowerCase() + " "] + } + return null == t ? null : t.join(", ") + }, + getAllResponseHeaders: function() { + return h ? p : null + }, + setRequestHeader: function(e, t) { + return null == h && (e = s[e.toLowerCase()] = s[e.toLowerCase()] || e, + a[e] = t), + this + }, + overrideMimeType: function(e) { + return null == h && (v.mimeType = e), + this + }, + statusCode: function(e) { + var t; + if (e) + if (h) + T.always(e[T.status]); + else + for (t in e) + w[t] = [w[t], e[t]]; + return this + }, + abort: function(e) { + var t = e || u; + return c && c.abort(t), + l(0, t), + this + } + }; + if (x.promise(T), + v.url = ((e || v.url || Et.href) + "").replace($t, Et.protocol + "//"), + v.type = t.method || t.type || v.method || v.type, + v.dataTypes = (v.dataType || "*").toLowerCase().match(D) || [""], + null == v.crossDomain) { + r = C.createElement("a"); + try { + r.href = v.url, + r.href = r.href, + v.crossDomain = Xt.protocol + "//" + Xt.host != r.protocol + "//" + r.host + } catch (e) { + v.crossDomain = !0 + } + } + if (v.data && v.processData && "string" != typeof v.data && (v.data = ce.param(v.data, v.traditional)), + Vt(Bt, v, t, T), + h) + return T; + for (i in (g = ce.event && v.global) && 0 == ce.active++ && ce.event.trigger("ajaxStart"), + v.type = v.type.toUpperCase(), + v.hasContent = !Ft.test(v.type), + f = v.url.replace(Rt, ""), + v.hasContent ? v.data && v.processData && 0 === (v.contentType || "").indexOf("application/x-www-form-urlencoded") && (v.data = v.data.replace(Mt, "+")) : (o = v.url.slice(f.length), + v.data && (v.processData || "string" == typeof v.data) && (f += (At.test(f) ? "&" : "?") + v.data, + delete v.data), + !1 === v.cache && (f = f.replace(It, "$1"), + o = (At.test(f) ? "&" : "?") + "_=" + jt.guid++ + o), + v.url = f + o), + v.ifModified && (ce.lastModified[f] && T.setRequestHeader("If-Modified-Since", ce.lastModified[f]), + ce.etag[f] && T.setRequestHeader("If-None-Match", ce.etag[f])), + (v.data && v.hasContent && !1 !== v.contentType || t.contentType) && T.setRequestHeader("Content-Type", v.contentType), + T.setRequestHeader("Accept", v.dataTypes[0] && v.accepts[v.dataTypes[0]] ? v.accepts[v.dataTypes[0]] + ("*" !== v.dataTypes[0] ? ", " + zt + "; q=0.01" : "") : v.accepts["*"]), + v.headers) + T.setRequestHeader(i, v.headers[i]); + if (v.beforeSend && (!1 === v.beforeSend.call(y, T, v) || h)) + return T.abort(); + if (u = "abort", + b.add(v.complete), + T.done(v.success), + T.fail(v.error), + c = Vt(_t, v, t, T)) { + if (T.readyState = 1, + g && m.trigger("ajaxSend", [T, v]), + h) + return T; + v.async && 0 < v.timeout && (d = ie.setTimeout(function() { + T.abort("timeout") + }, v.timeout)); + try { + h = !1, + c.send(a, l) + } catch (e) { + if (h) + throw e; + l(-1, e) + } + } else + l(-1, "No Transport"); + function l(e, t, n, r) { + var i, o, a, s, u, l = t; + h || (h = !0, + d && ie.clearTimeout(d), + c = void 0, + p = r || "", + T.readyState = 0 < e ? 4 : 0, + i = 200 <= e && e < 300 || 304 === e, + n && (s = function(e, t, n) { + var r, i, o, a, s = e.contents, u = e.dataTypes; + while ("*" === u[0]) + u.shift(), + void 0 === r && (r = e.mimeType || t.getResponseHeader("Content-Type")); + if (r) + for (i in s) + if (s[i] && s[i].test(r)) { + u.unshift(i); + break + } + if (u[0]in n) + o = u[0]; + else { + for (i in n) { + if (!u[0] || e.converters[i + " " + u[0]]) { + o = i; + break + } + a || (a = i) + } + o = o || a + } + if (o) + return o !== u[0] && u.unshift(o), + n[o] + }(v, T, n)), + !i && -1 < ce.inArray("script", v.dataTypes) && ce.inArray("json", v.dataTypes) < 0 && (v.converters["text script"] = function() {} + ), + s = function(e, t, n, r) { + var i, o, a, s, u, l = {}, c = e.dataTypes.slice(); + if (c[1]) + for (a in e.converters) + l[a.toLowerCase()] = e.converters[a]; + o = c.shift(); + while (o) + if (e.responseFields[o] && (n[e.responseFields[o]] = t), + !u && r && e.dataFilter && (t = e.dataFilter(t, e.dataType)), + u = o, + o = c.shift()) + if ("*" === o) + o = u; + else if ("*" !== u && u !== o) { + if (!(a = l[u + " " + o] || l["* " + o])) + for (i in l) + if ((s = i.split(" "))[1] === o && (a = l[u + " " + s[0]] || l["* " + s[0]])) { + !0 === a ? a = l[i] : !0 !== l[i] && (o = s[0], + c.unshift(s[1])); + break + } + if (!0 !== a) + if (a && e["throws"]) + t = a(t); + else + try { + t = a(t) + } catch (e) { + return { + state: "parsererror", + error: a ? e : "No conversion from " + u + " to " + o + } + } + } + return { + state: "success", + data: t + } + }(v, s, T, i), + i ? (v.ifModified && ((u = T.getResponseHeader("Last-Modified")) && (ce.lastModified[f] = u), + (u = T.getResponseHeader("etag")) && (ce.etag[f] = u)), + 204 === e || "HEAD" === v.type ? l = "nocontent" : 304 === e ? l = "notmodified" : (l = s.state, + o = s.data, + i = !(a = s.error))) : (a = l, + !e && l || (l = "error", + e < 0 && (e = 0))), + T.status = e, + T.statusText = (t || l) + "", + i ? x.resolveWith(y, [o, l, T]) : x.rejectWith(y, [T, l, a]), + T.statusCode(w), + w = void 0, + g && m.trigger(i ? "ajaxSuccess" : "ajaxError", [T, v, i ? o : a]), + b.fireWith(y, [T, l]), + g && (m.trigger("ajaxComplete", [T, v]), + --ce.active || ce.event.trigger("ajaxStop"))) + } + return T + }, + getJSON: function(e, t, n) { + return ce.get(e, t, n, "json") + }, + getScript: function(e, t) { + return ce.get(e, void 0, t, "script") + } + }), + ce.each(["get", "post"], function(e, i) { + ce[i] = function(e, t, n, r) { + return v(t) && (r = r || n, + n = t, + t = void 0), + ce.ajax(ce.extend({ + url: e, + type: i, + dataType: r, + data: t, + success: n + }, ce.isPlainObject(e) && e)) + } + }), + ce.ajaxPrefilter(function(e) { + var t; + for (t in e.headers) + "content-type" === t.toLowerCase() && (e.contentType = e.headers[t] || "") + }), + ce._evalUrl = function(e, t, n) { + return ce.ajax({ + url: e, + type: "GET", + dataType: "script", + cache: !0, + async: !1, + global: !1, + converters: { + "text script": function() {} + }, + dataFilter: function(e) { + ce.globalEval(e, t, n) + } + }) + } + , + ce.fn.extend({ + wrapAll: function(e) { + var t; + return this[0] && (v(e) && (e = e.call(this[0])), + t = ce(e, this[0].ownerDocument).eq(0).clone(!0), + this[0].parentNode && t.insertBefore(this[0]), + t.map(function() { + var e = this; + while (e.firstElementChild) + e = e.firstElementChild; + return e + }).append(this)), + this + }, + wrapInner: function(n) { + return v(n) ? this.each(function(e) { + ce(this).wrapInner(n.call(this, e)) + }) : this.each(function() { + var e = ce(this) + , t = e.contents(); + t.length ? t.wrapAll(n) : e.append(n) + }) + }, + wrap: function(t) { + var n = v(t); + return this.each(function(e) { + ce(this).wrapAll(n ? t.call(this, e) : t) + }) + }, + unwrap: function(e) { + return this.parent(e).not("body").each(function() { + ce(this).replaceWith(this.childNodes) + }), + this + } + }), + ce.expr.pseudos.hidden = function(e) { + return !ce.expr.pseudos.visible(e) + } + , + ce.expr.pseudos.visible = function(e) { + return !!(e.offsetWidth || e.offsetHeight || e.getClientRects().length) + } + , + ce.ajaxSettings.xhr = function() { + try { + return new ie.XMLHttpRequest + } catch (e) {} + } + ; + var Yt = { + 0: 200, + 1223: 204 + } + , Qt = ce.ajaxSettings.xhr(); + le.cors = !!Qt && "withCredentials"in Qt, + le.ajax = Qt = !!Qt, + ce.ajaxTransport(function(i) { + var o, a; + if (le.cors || Qt && !i.crossDomain) + return { + send: function(e, t) { + var n, r = i.xhr(); + if (r.open(i.type, i.url, i.async, i.username, i.password), + i.xhrFields) + for (n in i.xhrFields) + r[n] = i.xhrFields[n]; + for (n in i.mimeType && r.overrideMimeType && r.overrideMimeType(i.mimeType), + i.crossDomain || e["X-Requested-With"] || (e["X-Requested-With"] = "XMLHttpRequest"), + e) + r.setRequestHeader(n, e[n]); + o = function(e) { + return function() { + o && (o = a = r.onload = r.onerror = r.onabort = r.ontimeout = r.onreadystatechange = null, + "abort" === e ? r.abort() : "error" === e ? "number" != typeof r.status ? t(0, "error") : t(r.status, r.statusText) : t(Yt[r.status] || r.status, r.statusText, "text" !== (r.responseType || "text") || "string" != typeof r.responseText ? { + binary: r.response + } : { + text: r.responseText + }, r.getAllResponseHeaders())) + } + } + , + r.onload = o(), + a = r.onerror = r.ontimeout = o("error"), + void 0 !== r.onabort ? r.onabort = a : r.onreadystatechange = function() { + 4 === r.readyState && ie.setTimeout(function() { + o && a() + }) + } + , + o = o("abort"); + try { + r.send(i.hasContent && i.data || null) + } catch (e) { + if (o) + throw e + } + }, + abort: function() { + o && o() + } + } + }), + ce.ajaxPrefilter(function(e) { + e.crossDomain && (e.contents.script = !1) + }), + ce.ajaxSetup({ + accepts: { + script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript" + }, + contents: { + script: /\b(?:java|ecma)script\b/ + }, + converters: { + "text script": function(e) { + return ce.globalEval(e), + e + } + } + }), + ce.ajaxPrefilter("script", function(e) { + void 0 === e.cache && (e.cache = !1), + e.crossDomain && (e.type = "GET") + }), + ce.ajaxTransport("script", function(n) { + var r, i; + if (n.crossDomain || n.scriptAttrs) + return { + send: function(e, t) { + r = ce(" + + +{/block} + +{block name="customize"} {/block} \ No newline at end of file diff --git a/code/app/home/view/hzpxw/Pc/getNovelInfo.html b/code/app/home/view/hzpxw/Pc/getNovelInfo.html new file mode 100644 index 0000000..0cb544f --- /dev/null +++ b/code/app/home/view/hzpxw/Pc/getNovelInfo.html @@ -0,0 +1,269 @@ +{extend name="basePc" /} +{block name='nav-active-class'}boy{/block} +{block name="title"}{/block} +{block name="head-js"}{/block} + + +{block name="main"} +
    +
    +
    +
    +
    +

    剑出霜满城

    +

    作者:馀杯    状态:连载中

    +

    分类:玄幻修真        加入书架 +         章节目录

    +

    最新章节:第1912章

    +

    更新时间:2025-03-25 09:08:59

    +
    + +
    + +
    +
    +
    +
    +
    《剑出霜满城》最新章节
    + {foreach $arrRecommendNovel as $category} + {include file="Pc/Public/chapterTableAll" /} + {/foreach} + +
    《剑出霜满城》正文目录
    + {foreach $arrRecommendNovel as $category} + {include file="Pc/Public/chapterTableAll" /} + {/foreach} +
    >> 查看《剑出霜满城》更多章节列表 <<
    +
    +
    +
    + +
    书友推荐:私吻蝴蝶骨袅袅春腰吃了肉,就不能吃我了女神攻略手册触手怪她只想生存逐澳游戏没你就不行之新征途望门娇媳无敌六皇子认知性偏差以你为名的夏天古代猎户的养家日常一品红人官道之权势滔天青花冷(先婚后爱H)官途,搭上女领导之后!蝶变见微知著(弟妹 H)替身男配只想赚钱龙凤猪旅行团开局揭皇榜,皇后竟是我亲娘官途,搭上女领导之后!升迁之路格格党官道征途:从跟老婆离婚开始零度小说网权力巅峰:从城建办主任开始官梯险情相亲认错人,闪婚千亿女总裁二嫁好孕,残疾世子宠疯了神站文学网不乖官路女人香学姐蓄意勾引深入浅出九一书库仙帝重生,我有一个紫云葫芦财阀小甜妻:老公,乖乖宠我空白在综艺直播里高潮不断七八中文网官运,挖笋挖出个青云之路!精英小说网为夫体弱多病迟音(1v1)大秦第一熊孩子看奇中文网通房撩人,她掏空世子金库要跑路酒厂卧底的我成了boss三五文学我靠读书成圣人落尘小说网万人迷她千娇百媚[穿书]超级仙学院大明:我只想做一个小县令啊官场:从读心术开始崛起魔蝎小说逆袭人生,从绝境走向权力巅峰清穿后被康熙巧取豪夺了装疯卖傻三年,从边疆开始崛起神站完本官阶,从亲子鉴定平步青云!逆袭人生,从绝境走向权力巅峰寒门官路2:权变前妻太撩人:傅总把持不住了落尘小说铅笔小说网强宠上瘾,病娇大小姐求放过重生大画家,有系统就是任性笔看阁野性缠绵斗罗里的藤虎一笑合欢宗双修日常看书网燕尔(古言1v1)天医出狱出狱后,首富老公逼我生三胎笔笔趣小说异界最强赘婿边疆来了个娇媳妇[年代]一问小说网阁笔趣官阶,从亲子鉴定平步青云!一天花掉四百亿之后[足球]小药店通古今,我暴富不难吧?笔趣阁前门村的留守妇女秘书太厉害,倾城女领导直呼受不了笔下文学驾崩百年,朕成了暴君的白月光我和我妈的那些事儿(无绿修改)合欢御女录荒岛狂龙三五小说薄太太今天又被扒马甲了三A小说网顶点小说恶霸文学叭叭小说BL小说末世对照组:大佬带全系异能守护华夏哥哥爱上的女神邪帝轻点爱:腹黑鬼医狂妃人生如局不良娇妻:老师,晚上好亮剑:开局拿下鬼子据点豪门后妈在娃综靠反向贴贴爆火了签到十年,我成圣了诡墓密码绝世废柴狂妃锦鲤娇妻:摄政王宠妻手册反派崽崽不好养,山神外挂上大分吾弟大秦第一纨绔玄学崽崽五岁半,这家没我都得散穿越之娇俏小甜妻完本神站两小无猜凡人之我为厉天尊穿越七零:撩最强男神养傲娇的崽天剑神帝苟在四合院捡漏正道潜龙天域苍穹只想当侯爷,奈何妻妾想打天下萌宠甜心:恶魔少爷深深吻开局父母祭天,她带空间养家致富祁同伟:学生时代开始签到关系重回2009,从不当舔狗开始透骨欢爱欲之潮NP直上青云深度补习>上流社会共享女友镇龙棺,阎王命上瘾禁忌爱欲之潮假千金身世曝光,玄学大佬杀疯了臣服议事桌上的官途:权力巅峰开局手搓歼10,被女儿开去航展曝光了!关于我哥和我男朋友互换身体这件事村野流香万人嫌的大师兄重生后,天道跪舔落伍文学神医毒妃腹黑宝宝镇南王女总裁的贴身高手重返1987携空间嫁山野糙汉,暴富荒年官运,挖笋挖出个青云之路!修仙暴徒九龙乾坤诀官道雄途镇国狂龙盖世狂龙天剑神帝婚后热恋宦海官途:从撞破上司好事开始苟着苟着我成了反派真爱狂医下山,都市我为王官道升天官道之破局闪婚女领导后,我一路青云直上快穿之我在年代文里抱大腿帝剑天玄诀闪婚夜,残疾老公站起来了师娘,你真美迟音官妻太荒吞天诀乡村绝色村姑九天剑主春漾穿成虐文主角后我和霸总he了日复一日真千金霸气归来,五个哥哥磕头认错机娘世界,校花老师要上天了农门医女:我带着全家致富了大明:诏狱讲课,老朱偷听人麻了四合院:带着娄晓娥提前躺平蛟龙出渊,十个师姐又美又飒!被骂赔钱货,看我种田跑商成富婆悟性逆天:模型机悟出龙警3000!脱下她的情趣内衣山雨欲来离婚后,渣爹做梦都在偷妈咪小夫人奶又甜,大叔彻底失了控我委身病娇反派后,男主黑化了图谋不轨七零甜蜜蜜,糙汉宠翻小辣媳末世:开局疯狂囤物资,美女急哭了千亿总裁宠妻成狂病弱太子妃超凶的医妃她日日想休夫放开她,让我来财阀小娇妻:叔,你要宠坏我了!财阀小娇妻:叔,你要宠坏我了!搬空敌人珍藏后,疯批王爷我罩了!
    + + + +
    +
    +{/block} + +{block name="customize"} {/block} \ No newline at end of file diff --git a/code/app/home/view/hzpxw/Pc/getNovelRank.html b/code/app/home/view/hzpxw/Pc/getNovelRank.html new file mode 100644 index 0000000..f954f83 --- /dev/null +++ b/code/app/home/view/hzpxw/Pc/getNovelRank.html @@ -0,0 +1,54 @@ +{extend name="basePc" /} +{block name='nav-active-class'}boy{/block} +{block name="title"}{/block} +{block name="head-js"}{/block} + + +{block name="main"} + +
    + +
    +
    + {foreach $arrNewsNovelRankNovel as $key=>$Novel} + {if $key < 6} {include file="Pc/Public/hostListImg" /} {/if} + {/foreach} +
    +
    + +
    + +
    +

    《玄幻修真》 - 小说列表玄幻修真完本榜

    +
      + {foreach $arrNewsNovelRankNovel as $key=>$Novel} + {include file="Pc/Public/indexNewsUpdateList" /} + {/foreach} +
    +
    + +
    +

    最新入库

    +
      + {foreach $arrNewsNovelRankNovel as $key=>$Novel} + {include file="Pc/Public/hostListText" /} + {/foreach} +
    +
    + + + +
    +
    +{/block} + +{block name="customize"} {/block} \ No newline at end of file diff --git a/code/app/home/view/hzpxw/Pc/getSearchNovel.html b/code/app/home/view/hzpxw/Pc/getSearchNovel.html new file mode 100644 index 0000000..1bca516 --- /dev/null +++ b/code/app/home/view/hzpxw/Pc/getSearchNovel.html @@ -0,0 +1,46 @@ +{extend name="basePc" /} +{block name='nav-active-class'}boy{/block} +{block name="title"}{/block} +{block name="head-js"}{/block} + + +{block name="main"} + +
    + + +
    + +
    +

    '玄幻修真' - 相关搜索结果

    +
      + {foreach $arrSearchNovel as $key=>$Novel} + {include file="Pc/Public/indexNewsUpdateList" /} + {/foreach} +
    +
    + +
    +

    最新入库

    +
      + {foreach $arrSearchNovel as $key=>$Novel} + {include file="Pc/Public/hostListText" /} + {/foreach} +
    +
    + + + +
    +
    +{/block} + +{block name="customize"} {/block} \ No newline at end of file diff --git a/code/app/home/view/hzpxw/Pc/getSeoInfo.html b/code/app/home/view/hzpxw/Pc/getSeoInfo.html new file mode 100644 index 0000000..172afb8 --- /dev/null +++ b/code/app/home/view/hzpxw/Pc/getSeoInfo.html @@ -0,0 +1,29 @@ +{extend name="baseH5" /} +{block name='nav-active-class'}home{/block} +{block name="title"}{/block} +{block name="head-js"}{/block} + +{block name="logo-html"} +

    + 狂雨小说 +

    +{/block} + +{block name="main"} +
    + +
    +
    +

    深度解说列表

    +
    +
    +
      + {foreach $arrNewsNovel as $key2 => $vo} + {include file="Public/novelListRank" /} + {/foreach} +
    +
    +
    +{/block} + +{block name="customize"} {/block} \ No newline at end of file diff --git a/code/app/home/view/hzpxw/Pc/getSeoList.html b/code/app/home/view/hzpxw/Pc/getSeoList.html new file mode 100644 index 0000000..423dc98 --- /dev/null +++ b/code/app/home/view/hzpxw/Pc/getSeoList.html @@ -0,0 +1,89 @@ +{extend name="basePc" /} +{block name='nav-active-class'}home{/block} +{block name="title"}{/block} +{block name="head-js"}{/block} + + +{block name="main"} +
    + + +
    + +
    + + + +
    +
    + + +
    + +
    +
    +
      +
    1. +
        +
      • 分类
      • +
      • 书名
      • +
      • 描述
      • +
      • 作者
      • +
      • 更新时间
      • +
      +
    2. + {foreach $arrNewsNovel as $key=>$Novel} + {if $key >= 1} + {include file="Pc/Public/indexNewsUpdateList" /} + {/if} + {/foreach} +
    +
    +
    +
    + + +
    + + +
    + +
    + +
    + +
    +{/block} + +{block name="customize"} {/block} \ No newline at end of file diff --git a/code/app/home/view/hzpxw/Pc/index.html b/code/app/home/view/hzpxw/Pc/index.html new file mode 100644 index 0000000..71794c6 --- /dev/null +++ b/code/app/home/view/hzpxw/Pc/index.html @@ -0,0 +1,144 @@ +{extend name="basePc" /} +{block name='nav-active-class'}home{/block} +{block name="title"}{/block} +{block name="head-js"}{/block} + + +{block name="main"} +
    +
    +
    + {foreach $arrRecommendSerializationNovel as $key=>$Novel} + {if $key < 4} {include file="Pc/Public/hostListImg" /} {/if} {/foreach} +
    +
    +

    经典推荐

    +
      + {foreach $arrRecommendSerializationNovel as $key=>$Novel} + {if $key > 3} + {include file="Pc/Public/hostListText" /} + {/if} + {/foreach} +
    +
    +
    +
    +
    +
    +

    玄幻魔法

    + {foreach $arrRecommendSerializationNovel as $key=>$Novel} + {if $key == 0} + {include file="Pc/Public/indexCategoryNewsOne" /} + {/if} + {/foreach} +
      + {foreach $arrRecommendSerializationNovel as $key=>$Novel} + {if $key >= 1} + {include file="Pc/Public/indexCategoryNewsList" /} + {/if} + {/foreach} +
    +
    +
    +

    武侠修真

    + {foreach $arrRecommendSerializationNovel as $key=>$Novel} + {if $key == 0} + {include file="Pc/Public/indexCategoryNewsOne" /} + {/if} + {/foreach} +
      + {foreach $arrRecommendSerializationNovel as $key=>$Novel} + {if $key >= 1} + {include file="Pc/Public/indexCategoryNewsList" /} + {/if} + {/foreach} +
    +
    +
    +

    都市言情

    + {foreach $arrRecommendSerializationNovel as $key=>$Novel} + {if $key == 0} + {include file="Pc/Public/indexCategoryNewsOne" /} + {/if} + {/foreach} +
      + {foreach $arrRecommendSerializationNovel as $key=>$Novel} + {if $key >= 1} + {include file="Pc/Public/indexCategoryNewsList" /} + {/if} + {/foreach} +
    +
    +
    +
    +
    +
    +

    穿越小说

    + {foreach $arrRecommendSerializationNovel as $key=>$Novel} + {if $key == 0} + {include file="Pc/Public/indexCategoryNewsOne" /} + {/if} + {/foreach} +
      + {foreach $arrRecommendSerializationNovel as $key=>$Novel} + {if $key >= 1} + {include file="Pc/Public/indexCategoryNewsList" /} + {/if} + {/foreach} +
    +
    +
    +

    网游动漫

    + {foreach $arrRecommendSerializationNovel as $key=>$Novel} + {if $key == 0} + {include file="Pc/Public/indexCategoryNewsOne" /} + {/if} + {/foreach} +
      + {foreach $arrRecommendSerializationNovel as $key=>$Novel} + {if $key >= 1} + {include file="Pc/Public/indexCategoryNewsList" /} + {/if} + {/foreach} +
    +
    +
    +

    科幻小说

    + {foreach $arrRecommendSerializationNovel as $key=>$Novel} + {if $key == 0} + {include file="Pc/Public/indexCategoryNewsOne" /} + {/if} + {/foreach} +
      + {foreach $arrRecommendSerializationNovel as $key=>$Novel} + {if $key >= 1} + {include file="Pc/Public/indexCategoryNewsList" /} + {/if} + {/foreach} +
    +
    +
    +
    +
    +
    +

    最近更新小说列表

    +
      + {foreach $arrRecommendSerializationNovel as $key=>$Novel} + {include file="Pc/Public/indexNewsUpdateList" /} + {/foreach} +
    +
    +
    +

    最新入库小说

    +
      + {foreach $arrRecommendSerializationNovel as $key=>$Novel} + {include file="Pc/Public/hostListText" /} + {/foreach} +
    +
    +
    +
    +
    + {/block} + + {block name="customize"} {/block} \ No newline at end of file diff --git a/code/app/home/view/hzpxw/Public/chapterTable.html b/code/app/home/view/hzpxw/Public/chapterTable.html new file mode 100644 index 0000000..9f93359 --- /dev/null +++ b/code/app/home/view/hzpxw/Public/chapterTable.html @@ -0,0 +1,3 @@ +
  • + 01 天龙问世 +
  • \ No newline at end of file diff --git a/code/app/home/view/hzpxw/Public/chapterTableAll.html b/code/app/home/view/hzpxw/Public/chapterTableAll.html new file mode 100644 index 0000000..c296f50 --- /dev/null +++ b/code/app/home/view/hzpxw/Public/chapterTableAll.html @@ -0,0 +1,12 @@ +
  • + + 01 天龙问世 + +
  • +
  • + + 02 沧武的小霸王 + +
  • \ No newline at end of file diff --git a/code/app/home/view/hzpxw/Public/footer.html b/code/app/home/view/hzpxw/Public/footer.html new file mode 100644 index 0000000..727e92e --- /dev/null +++ b/code/app/home/view/hzpxw/Public/footer.html @@ -0,0 +1,26 @@ + \ No newline at end of file diff --git a/code/app/home/view/hzpxw/Public/historyNovelList.html b/code/app/home/view/hzpxw/Public/historyNovelList.html new file mode 100644 index 0000000..ca5bf18 --- /dev/null +++ b/code/app/home/view/hzpxw/Public/historyNovelList.html @@ -0,0 +1,19 @@ +
  • + +
    +
    + 我真是一条龙 + 耽美百合 + + + 老读者必看公告!!! + + 4天前 + 继续阅读 + +
    +
    + +
  • \ No newline at end of file diff --git a/code/app/home/view/hzpxw/Public/newsUpdateNovelList.html b/code/app/home/view/hzpxw/Public/newsUpdateNovelList.html new file mode 100644 index 0000000..65baad0 --- /dev/null +++ b/code/app/home/view/hzpxw/Public/newsUpdateNovelList.html @@ -0,0 +1,4 @@ +
  • [03-20] +

    夏野堂

    +

    万人嫌师兄被魔尊掳走後

    +
  • \ No newline at end of file diff --git a/code/app/home/view/hzpxw/Public/novelListH.html b/code/app/home/view/hzpxw/Public/novelListH.html new file mode 100644 index 0000000..7840ca8 --- /dev/null +++ b/code/app/home/view/hzpxw/Public/novelListH.html @@ -0,0 +1,11 @@ + +
    + 1 + + 医道官途 +

    医道官途

    +

    帷赫其他小说

    +

    天才中医凌游,在大学毕业后为逝世的爷爷回村守孝三年,并且继承了爷爷生前经营的医馆三七堂。

    +
    \ No newline at end of file diff --git a/code/app/home/view/hzpxw/Public/novelListRank.html b/code/app/home/view/hzpxw/Public/novelListRank.html new file mode 100644 index 0000000..bab7f32 --- /dev/null +++ b/code/app/home/view/hzpxw/Public/novelListRank.html @@ -0,0 +1,17 @@ +
  • + + 满朝文武都能听到我的心声 + +

    + 满朝文武都能听到我的心声 +

    +

    + 白色的木 +

    +

    *古代奇幻轻小说坏消息许烟杪穿越回古代了,而他本人四肢不勤五谷不分,专业还是对古...

    +

    + 最新:第224章许郎此去光耀万里 +

    +
  • \ No newline at end of file diff --git a/code/app/home/view/hzpxw/Public/novelListS.html b/code/app/home/view/hzpxw/Public/novelListS.html new file mode 100644 index 0000000..567a8d2 --- /dev/null +++ b/code/app/home/view/hzpxw/Public/novelListS.html @@ -0,0 +1,8 @@ + +
  • + + 绝品风流狂医 +

    绝品风流狂医

    + 花开彼岸 +
  • \ No newline at end of file diff --git a/code/app/home/view/hzpxw/Public/novelTextList.html b/code/app/home/view/hzpxw/Public/novelTextList.html new file mode 100644 index 0000000..929889c --- /dev/null +++ b/code/app/home/view/hzpxw/Public/novelTextList.html @@ -0,0 +1,4 @@ +
  • 2 +

    咸鱼继母日常

    +

    明栀

    +
  • \ No newline at end of file diff --git a/code/app/home/view/hzpxw/User/getBookShelf.html b/code/app/home/view/hzpxw/User/getBookShelf.html new file mode 100644 index 0000000..1cb5922 --- /dev/null +++ b/code/app/home/view/hzpxw/User/getBookShelf.html @@ -0,0 +1,32 @@ +{extend name="baseH5" /} +{block name='nav-active-class'}home{/block} +{block name="title"}{/block} +{block name="head-js"}{/block} + +{block name="logo-html"} + +{/block} + +{block name="main"} +
    +
    《阅读记录》最多显示100条,请收藏至书架
    + + + +
    +{/block} + +{block name="customize"} {/block} \ No newline at end of file diff --git a/code/app/home/view/hzpxw/User/getHistory.html b/code/app/home/view/hzpxw/User/getHistory.html new file mode 100644 index 0000000..1cb5922 --- /dev/null +++ b/code/app/home/view/hzpxw/User/getHistory.html @@ -0,0 +1,32 @@ +{extend name="baseH5" /} +{block name='nav-active-class'}home{/block} +{block name="title"}{/block} +{block name="head-js"}{/block} + +{block name="logo-html"} + +{/block} + +{block name="main"} +
    +
    《阅读记录》最多显示100条,请收藏至书架
    + + + +
    +{/block} + +{block name="customize"} {/block} \ No newline at end of file diff --git a/code/app/home/view/hzpxw/User/index.html b/code/app/home/view/hzpxw/User/index.html new file mode 100644 index 0000000..e37fe98 --- /dev/null +++ b/code/app/home/view/hzpxw/User/index.html @@ -0,0 +1,60 @@ +{extend name="baseH5User" /} +{block name='nav-active-class'}home{/block} +{block name="title"}{/block} +{block name="head-js"}{/block} + +{block name="head-name"}用户中心{/block} +{block name="main"} +
    +
    +
    + +
    + +
    + +
    + 123456 +
    +
    +
    +
      +
    • 经验0
    • +
    • 积分0
    • +
    • 推荐票0
    • +
    +
    + +
    + +
    + + + +
    +
    + +{/block} + +{block name="customize"} {/block} \ No newline at end of file diff --git a/code/app/home/view/hzpxw/baseH5.html b/code/app/home/view/hzpxw/baseH5.html new file mode 100644 index 0000000..3be0b21 --- /dev/null +++ b/code/app/home/view/hzpxw/baseH5.html @@ -0,0 +1,58 @@ + + + + + + 耗子小说网_最值得收藏的热门小说阅读网 + + + + + + + + + + + + + + +
    + + + + + {block name="main"} {/block} + +
    + + + + + + + \ No newline at end of file diff --git a/code/app/home/view/hzpxw/baseH5User.html b/code/app/home/view/hzpxw/baseH5User.html new file mode 100644 index 0000000..9206c2d --- /dev/null +++ b/code/app/home/view/hzpxw/baseH5User.html @@ -0,0 +1,50 @@ + + + + + + 狂雨小说 + + + + + + +
    +
    + + {block name="main"} {/block} + +
    + + + + + + \ No newline at end of file diff --git a/code/app/home/view/hzpxw/basePc.html b/code/app/home/view/hzpxw/basePc.html new file mode 100644 index 0000000..bcd76c5 --- /dev/null +++ b/code/app/home/view/hzpxw/basePc.html @@ -0,0 +1,100 @@ + + + + + 耗子小说网_最值得收藏的热门小说阅读网 + + + + + + + + + + + + + + + + + + +
    + + + {block name="main"} {/block} + + + + {block name="customize"}{/block} + + {block name="footer-js"} {/block} + + + + \ No newline at end of file diff --git a/code/app/home/view/hzpxw/basePcUser.html b/code/app/home/view/hzpxw/basePcUser.html new file mode 100644 index 0000000..ddab4dd --- /dev/null +++ b/code/app/home/view/hzpxw/basePcUser.html @@ -0,0 +1,131 @@ + + + + + + 狂雨小说 + + + + +
    +
    + + + +
    +
    +
    + +
    +
    +
    + +
    +
    123456
    +
    +
      +
    • + + 经验:0 +
    • +
    • + + 积分:0 +
    • +
    • + + + 推荐票:0 +
    • +
    +
    +
    +

    + + 关注中心 +

    + +

    + + 设置 +

    + +
    + + {block name="main"} {/block} +
    + + + + + + + + \ No newline at end of file diff --git a/code/app/home/view/hzpxw/index.md b/code/app/home/view/hzpxw/index.md new file mode 100644 index 0000000..3a3526e --- /dev/null +++ b/code/app/home/view/hzpxw/index.md @@ -0,0 +1,2 @@ +耗子小说网模板 +源地址: https://hzpxw.net/ \ No newline at end of file diff --git a/code/app/home/view/kuangyu/index.md b/code/app/home/view/kuangyu/index.md new file mode 100644 index 0000000..232c5a2 --- /dev/null +++ b/code/app/home/view/kuangyu/index.md @@ -0,0 +1,2 @@ +狂雨小说模板 +源地址: test.nove66.net , cms 模板部署在虚拟机 \ No newline at end of file diff --git a/code/public/template/hzpxw/book_m/css/common.css b/code/public/template/hzpxw/book_m/css/common.css new file mode 100644 index 0000000..adb1079 --- /dev/null +++ b/code/public/template/hzpxw/book_m/css/common.css @@ -0,0 +1,281 @@ +/*@import url(https://lf9-cdn-tos.bytecdntp.com/cdn/expire-1-M/layui/2.6.8/css/layui.css);*/ +body,html{margin:0;padding:0;width:100%;height:100%;background-color:#efefef} +.hide{display:none} +.left{float:left!important} +.right{float:right!important} +.i_home:after{content:'\e68e'} +.i_back:after{content:'\e603'} +.i_menu:after{content:'\e65f'} +.i_search:after{content:'\e615'} +.i_history:after{content:'\e705'} +.i_cancel:after{content:'\1007'} +.i_more:after{content:'\e602'} +.i_author:after{content:'\e606'} +.i_sort:after{content:'\e715'} +.i_top:after{content:'\e735'} +.i_visit:after{content:'\e756'} +.i_vote:after{content:'\e6c6'} +.i_mark:after{content:'\e600'} +.i_size:after{content:'\e642'} +.i_time:after{content:'\e60e'} +.i_set:after{content:'\e614'} +.i_book:after{content:'\e705'} +.i_read:after{content:'\e60a'} +.i_prev:after{content:'\e65a'} +.i_next:after{content:'\e65b'} +.i_down:after{content:'\e64c'} +.header{top:0;right:0;left:0;z-index:9999;padding:0 5px;height:45px;background-color:darkcyan;text-align:center;} +.header i{float:right;display:block;width:45px;height:45px;color:#fff;font-size:25px;line-height:48px} +.header i.i_back{float:left} +.header a{display:inline-block} +.header a.logo{float:left;height:45px;color:#fff;font-weight:600;font-size:20px;line-height:46px} +.header h1,.header p{overflow:hidden;height:45px;color:#fff;font-size:18px;line-height:46px} +.header ul{display:inline-block;overflow:hidden;margin-top:8px;border-radius:45px;background-color:#fff} +.header li{display:inline-block;padding:1px} +.header li a{display:inline-block;padding:2px 10px;color:#333;font-size:17px} +.header li.now a{border-radius:45px;background-color:darkcyan;color:#fff} +div.menu{box-shadow:0 0 10px 5px rgba(0,0,0,.1)} +div.menu a{display:block;padding:10px 15px;color:#00aded;font-size:14px} +div.menu a+a{border-top:1px solid #ddd} +.footer{margin:10px 10px 0;padding:10px;border-top:1px solid #ccc;text-align:center} +.footer p{color:#666;line-height:25px} +.footer a{padding:0 3px;color:#999} +.nav{top:49px;right:0;left:0;z-index:9999;height:35px;background-color:#fff;text-align:center} +.nav li{display:inline-block;width:19%;height:35px} +.nav li a{display:block;height:34px;color:#666;font-size:16px;line-height:35px} +.nav li.now a{border-bottom:2px solid darkcyan;color:darkcyan} + +.account{margin:15px} +.search{display:-webkit-flex;display:flex;padding:10px 10px 0;height:35px} +.search span{position:relative;display:inline-block;margin-right:10px;padding:0 45px;height:35px;border-radius:35px;background-color:#fff;line-height:35px;flex-grow:1} +.search span i{position:absolute;top:0;right:0;display:block;width:38px;height:35px;color:#ccc;text-align:center;font-size:20px;line-height:38px} +.search span i:first-child{right:auto;left:0;color:#aaa} +.search span input{width:100%;height:25px;border:0 none;font-size:15px;line-height:25px} +.search button{padding:0 12px;height:35px;border-radius:4px;background-color:darkcyan;font-size:17px;line-height:35px} +.search.in{padding:10px;} +.search.in button{background-color:darkcyan} +.search+.layui-btn-container{padding:11px 0 0 11px;background-color:#fff} +.path{padding:6px 10px} +.path a{padding:5px;color:#666} +.caption{margin-top:10px;padding:6px;border:1px solid #cacaca;background-color:#E1ECED;color:#8f8f8f;font-weight:700;font-family:"Microsoft YaHei",微软雅黑,宋体,仿宋_GB2312,Verdana,Arial,sans-seri} +.caption span{float:right} +.caption a{color:#0067c8} +.search+.caption{padding-bottom:0;font-size:15px} +.last{padding:12px 15px;border-top:1px solid #e5e5e5;background-color:#fff;color:#999;font-size:15px} +.last p{float:left} +.last a{display:block;color:#00aeef} +.library{padding:10px 10px 5px;background-color:#f4f4f4;-webkit-user-select:none;user-select:none} +.library ul{display:none} +.library ul.filter{display:block} +.library ul.filter li{cursor:pointer} +.library ul.filter li i:after{content:'\e61a'} +.library ul.filter li.active i:after{content:'\e619'} +.library ul li{display:inline-block;overflow:hidden;width:32%;height:30px;color:#333;text-align:center;line-height:30px} +.library li a{padding:4px 10px;border:1px solid #e5e5e5;border-radius:20px;color:#666} +.library li.on a{border-color:darkcyan;background-color:darkcyan;color:#fff} +.library li i{color:#999;font-size:12px} +.sort{margin:5px} +.sort li{display:inline-block;width:32%} +.sort li i{position:relative;top:1.5px;float:right;display:block;width:50px;border-left:1px solid #ddd;color:#ff6000;text-align:right;font-style:normal} +.sort li a{display:block;margin:5px;padding:8px;border:1px solid #ddd;background-color:#fcfcfc;text-align: center;color:#666} +.sort li a:active,.sort li a:hover{background-color:#f4f4f4} +.top li{margin:10px;border:1px solid #ddd;background-color:#fff} +.top li p{padding:10px;border-bottom:1px solid #ddd;background-color:#fff} +.top li a{display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box;padding:10px 0;width:25%;color:darkcyan;text-align:center} +.top li a:first-child{padding-left:10px;width:100%;color:#666;text-align:left} +.top li a+a{border-left:1px solid #ddd} +.top li a:active,.top li a:hover{background-color:#f4f4f4} +.top li a>i{float:right;margin-right:10px} +.box{margin:10px 0;border-top:1px solid #e5e5e5;border-bottom:1px solid #e5e5e5;background-color:#fff} +.box .title{position:relative;overflow:hidden;padding:10px 20px 5px 30px;height:20px;color:#666;font-size:16px;line-height:20px} +.box .title:before{position:absolute;top:10px;left:15px;display:block;width:1px;height:16px;border:2px solid #52c3f2;border-radius:2px;background-color:#52c3f2;content:' '} +.box .title a{position:relative;display:block;color:#666} +.box .title a:after{position:absolute;top:4px;right:1px;display:block;width:9px;height:9px;border-top:3px solid #52c3f2;border-right:3px solid #52c3f2;content:' ';-webkit-transform:rotate(45deg);transform:rotate(45deg)} +.cover{overflow-x:auto;margin:0 10px;white-space:nowrap} +.cover li{display:inline-block;overflow:hidden;padding:5px;width:106px;height:200px} +.cover li a{color:#888} +.cover li img{padding:1px;width:100px;height:150px;border:1px solid #e5e5e5} +.cover li img:active,.cover li img:hover{padding:0;border:2px solid darkcyan} +.cover li p{overflow:hidden;height:25px;color:#333;font-size:15px;line-height:25px} +.vote{padding:5px 10px} +.vote span.layui-badge{float:left;margin:5px 8px 0 4px} +.vote img{float:left;margin-right:15px;margin-right:10px;padding:2px;width:100px;height:150px;border:1px solid #e5e5e5} +.vote img:active,.vote img:hover{padding:1px;border:2px solid darkcyan} +.vote p{overflow:hidden} +.vote p.bookname{height:35px;font-size:17px;line-height:35px} +.vote p.author{height:25px;font-size:15px;line-height:25px} +.vote p.intro{margin:10px 0 15px;height:80px;font-size:14px;line-height:20px} +.vote p span.data{float:right;margin-right:5px} +.vlist{padding:0 10px} +.vlist li{overflow:hidden;border-top:1px solid #eee;color:#666} +.vlist li a{position:relative;display:block;overflow:hidden;padding:10px 5px;height:20px;border-left:5px solid #fff} +.vlist li span{position:absolute;top:11px;left:5px;color:#0078ad} +.vlist li.now{background-color:#f7fdff;margin-bottom: 10px;} +.vlist li.now a{color:darkcyan;border-left-color:darkcyan} +.vlist li.now span{float:right;color:#009688} +.vlist p{overflow:hidden;margin-left:50px;height:20px;font-size:16px;line-height:20px} +.vlist p.bookname{float:left;margin-left:26px} +.vlist p.author{float:right;font-size:14px} +.title+.vlist li:first-child{border-top:0 none} +.alist{padding:10px;background-color:#fff} +.alist li+li{border-top:1px solid #eee} +.alist li a{display:block;overflow:hidden;padding:10px;height:20px;font-size:16px;line-height:20px} +.ilist{padding:8px 5px} +.ilist li{display:inline-block;padding:8px 0;width:32%;text-align:center} +.ilist li img{width:100px;height:150px;border:1px solid #ccc} +.ilist li p{overflow:hidden;padding:0 5px;height:30px;color:#555;font-size:16px;line-height:30px} +.ilist li i.layui-icon{position:relative;display:none} +.ilist.edit li i.layui-icon{display:inline} +.ilist li i.layui-icon:before{position:absolute;top:-80px;right:-15px;z-index:999;color:#727272;content:'\1007';font-size:32px} +.ilist li i.layui-icon:active:before,.ilist li i.layui-icon:hover:before{color:#dd5a4c} +.ilist li i.layui-icon:after{position:absolute;top:-72px;right:-7px;display:block;width:15px;height:15px;background-color:#fff;content:' '} +.clear{display:none;margin:0 10px} +.list{padding:0 15px;border-bottom:1px solid #e5e5e5;background-color:#fff} +.list li{padding:10px 5px;margin-bottom: 10px;} +.list li+li{border-top:1px solid #e5e5e5} +.list li img{float:left;margin:5px 10px 0 0;width:86px;height:116px;border:1px solid #e5e5e5} +.list li p{line-height:25px} +.list li p i{color:#0067c8;font-style:normal} +.list li p.data{height:20px;color:#888;line-height:20px} +.list li p.chapter{height:25px;line-height:25px;overflow: hidden;} +.list li p.chapter a{color:#333} + +.list li p.intro{height:40px;line-height:20px} +.list li p.data+p.intro{height:60px;line-height:20px} +.list li span.data{float:right;color:#ff6000;font-size:14px} +.list li span.data i{margin-right:2px;color:#999;vertical-align:-1px} +.list a.mark_read{float:right;display:block} +.list a.mark_del{float:right;display:none} +.list.edit a.mark_read{display:none} +.list.edit a.mark_del{display:block} +.list.lite{padding:0 10px} +.list.lite li{padding:5px;border-top:0 none} +.layui-btns {margin-left: 10px;height: 38px;line-height: 30px;border: 1px solid transparent;padding: 0 28px;background-color: #009688;color: #fff;white-space: nowrap;text-align: center;font-size: 14px;border-radius: 2px;cursor: pointer;} +.load-more{margin:10px} +.detail{padding:10px;margin-top:10px;height:150px;background-color:#fff} +.detail img{float:left;margin:0 15px 0 5px;margin-right:10px;padding:1px;width:108px;height:150px;border:1px solid #e5e5e5} +.detail p{overflow:hidden;height:30px;color:#666;line-height:30px} +.detail p.name{height:32px;font-size:20px;line-height:32px} +.detail p.name strong{color:darkcyan;} +.detail p.author{height:32px;color:#444;font-size:16px;line-height:32px} +.detail p.author i{margin-right:5px;color:#ff5722;vertical-align:-1px;font-weight:700} +.action{padding:5px 10px 10px;background-color:#fff;text-align:center} +.action li{display:inline-block;width:23.8%} +.action li a{display:block;margin:5px;padding:2px;border:1px solid darkcyan;border-radius:3px;background-color:#fff;color:darkcyan;font-size:13.8px} +.action li:nth-child(2) a{background-color:darkcyan;color:#fff} +.title+.intro{padding:5px 15px 0;color:#666;text-indent:2em;font-size:12px;line-height:22px;line-height:180%} +.update{margin:0 10px;padding:10px 5px;border-top:1px solid #e5e5e5;color:#666;font-size:15px} +.update a{color:#ff6000} +.bookname{color:#333;font-size:16px} +.author{color:#666;font-size:14px} +.intro{color:#999;font-size:13px} +.intro p+p{margin-top:2px} +.intro a{color:#83af9b;} +.read{background-color:#fff} +.read li{border-top:1px solid #e5e5e5} +.read li a{display:block;overflow:hidden;padding:0 12px;height:45px;border-left:5px solid #fff;font-size:15px;line-height:45px} +.read li.now{background-color:#f7fdff} +.read li.now a{color:darkcyan;border-left-color:darkcyan} +.read li.now span{float:right;color:#009688} +.index-container{display: flex;justify-content: space-between;padding: 10px;} +#indexselect{width: 49%;margin: 0 1rem;text-indent: 5px;border: none;border: 1px solid #8D6661;background: #fff;outline: none;} +.index-container-btn{background: #008b8b;border-radius: 3px;height: 34px;line-height: 34px;text-align: center;display: block;color: #fff;width: 25%;} + +#chapter{height:auto;min-height:100%;-webkit-user-select:none;user-select:none} +.headline{margin:5px;text-align:center;font-weight:500;font-size:16px;} +.content p{margin:10px;text-indent:2em;font-size:18px;line-height:180%} +.pager{padding:0;text-align:center;height: 36px;line-height: 36px;} +.pager a {display: inline-block;margin-right: 3px;width: 20%;height: 33px;border: 1px solid #ece6da;background:darkcyan;color:#fff;line-height: 33px;} +.pagelist{margin:10px 0;text-align:center;line-height:30px} +.pagelist a,.pagelist span{display:inline-block;margin:2px;padding:0 10px;border:1px solid #ccc;border-radius:3px;background-color:#fff;color:#666;font-size:15px;-webkit-user-select:none;user-select:none} +.pagelist #s{padding-right:10px;background-color:#008b8b;color:#fbfbfb;font-style:normal} +.pagelist a,.pagelist b{color:darkcyan;} +.pagelist a:active,.pagenum:active{border-color:#dd5114} +.shadow{position:fixed;top:0;right:0;bottom:0;left:0;z-index:99999} +#chapter .header{top:-45px;overflow:hidden;background-color:#0067c8;color:#fff;-webkit-transition:top .2s;transition:top .2s} +#chapter .header p{text-align:left} +.tabbar{position:fixed;right:0;bottom:-100px;left:0;height:100px;background-color:#0067c8;color:#f4f4f4;text-align:center;-webkit-transition:bottom .2s;transition:bottom .2s} +.tabbar li{display:inline-block;width:20%;height:50px;font-size:12px;line-height:20px} +.tabbar li.now,.tabbar li:active,.tabbar li:hover{background-color:#333} +.tabbar li i{display:block;height:25px;font-size:17px;line-height:33px} +.setting{position:fixed;right:0;bottom:100px;left:0;display:none;height:200px;background-color:#333;color:#f4f4f4;text-align:center} +.setting ul{position:relative;margin:10px;padding:0 0 0 50px} +.setting ul:before{position:absolute;top:0;left:0;width:50px;height:50px;line-height:50px} +.size:before{content:'字号'} +.size li{display:inline-block;margin:10px 0;width:50%;line-height:28px} +.size li:before{display:block;overflow:hidden;margin:0 10px;border:1px solid #fff;border-radius:30px;content:'A+'} +.size li:first-child:before{content:'A-'} +.size li.disabled:before{border-color:#999;color:#999} +.theme:before{content:'主题'} +.theme li{float:left;display:inline;margin:5px 0;line-height:36px} +.theme li:before{display:inline-block;overflow:hidden;margin:0 10px;padding:1px;width:36px;border:1px solid #fff;border-radius:50px;line-height:36px} +.theme li.now:before{padding:0;border:2px solid #ff6000} +.theme li:nth-child(1):before{background-color:#ecd9ac;color:#3c3c3c;content:'白天'} +.theme li:nth-child(2):before{background-color:#32373b;color:#999;content:'夜间'} +.theme li:nth-child(3):before{background-color:#f2e7cc;color:#643525;content:'怀旧'} +.theme li:nth-child(4):before{background-color:#fbf6ec;color:#c71585;content:'浪漫'} +.theme li:nth-child(5):before{background-color:#DCECD2;color:#000;content:'护眼'} +.theme li:nth-child(6):before{background-color:#bbe9f0;color:#2c3838;content:'青春'} +.theme li:nth-child(7):before{background-color:#e6e6e6;color:#333;content:'灰色'} +.style_0{background-color:#Fcfcfc;color:#3c3c3c} +.style_1{background-color:#32373b;color:#999} +.style_2{background-color:#f2e7cc;color:#643525} +.style_3{background-color:#fbf6ec;color:#c71585} +.style_4{background-color:#cce8cf;color:#555d54} +.style_5{background-color:#bbe9f0;color:#2c3838} +.style_6{background-color:#e6e6e6;color:#333} +#help{background-color:rgba(0,0,0,.5)} +#help li{position:absolute;color:#fff;text-align:center;font-size:16px} +#help li:before{display:inline-block;height:100%;content:' ';vertical-align:middle} +.help-top{top:0;right:35%;left:35%;height:30%;border-right:2px dashed #fff} +.help-bottom{right:35%;bottom:0;left:35%;height:30%;border-left:2px dashed #fff} +.help-left{top:30%;bottom:30%;left:0;width:35%} +.help-right{top:30%;right:0;bottom:30%;width:35%} +.help-center{top:30%;right:35%;bottom:30%;left:35%;border:2px dashed #fff} +.new{margin-top:5px;border-top:1px solid #e5e5e5;color:#666} +.new a{color:#0067c8;} +.tui{margin:8px 0;border:1px solid;border-color:#fff #efefef #d3d3d3 #efefef;box-shadow:0 1px 1px #efefef} +.tui strong{margin-right:2px;padding:3px;background:#333;color:#fff;font-weight:400;font-size:10.5px} +.lasttop,.listtop,.newtop,.quantop,.readtop{overflow:hidden;margin:1px;box-shadow:0 1px 1px #efefef} +.lasttop a,.listtop a,.newtop a,.quantop a,.readtop a{margin:0 3px;color:#101010;font-size:9.5px} +#navdown,#navup{clear:both;display:block;overflow:hidden;margin:0 auto;max-height:120px;text-align:center;word-wrap:break-word} +#navcon{clear:both;display:block;overflow:hidden;margin:10px 0 5px 0;max-height:120px;text-align:center;word-wrap:break-word} +.reg{float:right;padding-right:10px;font-size:16px;color:#fff} +.reg a{color:#fff} +.reg .login{background:#0b5252;padding:5px;margin-top:10px;margin-left:5px;border-radius:3px;color:#fff;height:20px;font-size:14px} + +.page_num{text-align: center;font-size: 14px;box-sizing: border-box;padding: 10px;width:350px;margin: 0 auto;} +.page_num select{padding: 0 10px;height: 34px;line-height: 35px;box-sizing: border-box;border: 1px solid #7d9465;background: #fff;border-radius: 5px;margin: 0 10px;width: 140px;cursor: pointer;} +.page_num a{height:34px;line-height: 35px;padding: 0 15px;display: block;margin: 0;box-sizing: border-box;background: #dcebcd; +color: #004d00;border-radius:5px;transition: all 0.3s;} +.page_num a:hover{background: #004d00;color:#fff} +.habt{font-size: 14px;font-weight: normal;color: #F44336;} +.z{float: left;} +.y{float: right;} + +.dvfd{background: #fff;width: 200px;height: 140px;position: absolute;top: 50%;left: 50%;margin-top: -70px;margin-left: -100px;box-shadow: 0 0 5px rgba(0, 0, 0, 0.35);text-align: center;border-radius: 5px;z-index: 99999;position: fixed;} +.dvfd .red{display: block;margin:35px 0 15px;font-size: 18px;} +.dvfd .qdbtn{background: #03A9F4;display: inline-block;padding: 5px 30px;color: #fff;border-radius: 3px;font-size: 16px;border: solid 1px #2196F3;} +.dvfd .qdbtn:hover{background: #F44336;border: solid 1px #E91E63;} +.novel_login #login{line-height: 50px;background: #fff;overflow: hidden;padding: 10px;box-sizing: border-box;position: relative;} +.novel_login #login h2{font-size: 18px;text-align: center;height: 34px;line-height: 24px;border-bottom: 1px solid #eee;color: #2c7498;letter-spacing: 0.5em;} + +.novel_login #login a{height:30px; line-height:30px;color: #F44336;} +.novel_login #login i{ position:absolute;left:29%;} +.novel_login #login input[type="text"],#login input[type="password"]{width:220px;padding:0px;border:none;outline:medium;height:30px; line-height:30px;padding-left:10px;background: #F7F7F7;} +.novel_login .login_name,.login_pass,.login_email,.login_code{width:100%;overflow: hidden;box-sizing: border-box;} +.novel_login #login .l1,#login .l2{ float:left;} +.login_xs #logintips{text-align: center;color: #de2900;} +.novel_login #login .l1{text-align: right;} +.novel_login #login .l2{width:100%;text-align: left;position: absolute;box-sizing: border-box;padding-left:100px;right:10px;overflow: hidden;} +.novel_login .login_name input{-webkit-appearance: none;} +.novel_login .login_pass input{-webkit-appearance: none;} +.novel_login .login_code input{-webkit-appearance: none;} +.novel_login .login_code2{margin:0;padding: 0 0 10px;text-align:center;border-bottom: 1px solid #eee;} +.novel_login .login_code2>img{display: block;margin:20px auto 0;cursor: pointer;width: 150px;} +.novel_login .login_btn{text-align: center;margin:0;overflow: hidden;} +.novel_login .login_btn a{display:block;color: #fff;border-radius: 2px;text-align: center;margin:20px 60px;box-sizing:border-box;border: 1px solid #2196F3;color:#2196F3;height: 40px;line-height: 40px;} +.novel_login .login_btn a.ok{color:#fff;background:#03A9F4;} +.novel_login .login_btn a.ok:hover{background:#3F51B5;border: 1px solid #3F51B5;} +.novel_login #login .login_save{width:20px;height:20px; padding:5px;} +.novel_login .login_code{margin-bottom:0;} \ No newline at end of file diff --git a/code/public/template/hzpxw/book_m/css/iconfont.ttf b/code/public/template/hzpxw/book_m/css/iconfont.ttf new file mode 100644 index 0000000000000000000000000000000000000000..06e30f9e2a856cbfefff25111ceb4b9c034f35fd GIT binary patch literal 46508 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
    _X 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