diff --git a/code/app/home/config/router.php b/code/app/home/config/router.php new file mode 100644 index 0000000..ca774a5 --- /dev/null +++ b/code/app/home/config/router.php @@ -0,0 +1,226 @@ +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("/pc/",'Index/getPcIndex')->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('class', 'Novel/getNovelCategory')->ext('html')->append(['boolIsMobile' => true]); +Route::rule('/pc/class', 'Novel/getNovelCategory')->ext('html')->append(['boolIsMobile' => false]); + +//排行榜 +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('chapters', 'Novel/getNovelChapterAll')->ext('html')->append(['boolIsMobile' => true]); +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..f17ac48 100644 --- a/code/app/home/controller/Index.php +++ b/code/app/home/controller/Index.php @@ -7,14 +7,301 @@ 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'], + + ]; + + // 模拟数据-推荐等级为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..c99ff41 100644 --- a/code/app/home/controller/Novel.php +++ b/code/app/home/controller/Novel.php @@ -7,11 +7,487 @@ 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 getNovelCategory(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/getNovelCategory'); + } + } + + // 小说详情 + 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/hzpxw/Index/index.html b/code/app/home/view/hzpxw/Index/index.html new file mode 100644 index 0000000..46ec3ce --- /dev/null +++ b/code/app/home/view/hzpxw/Index/index.html @@ -0,0 +1,67 @@ +{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 $key=>$category} + {if $key == 0} + {include file="Public/novelListH" /} + {/if} + {/foreach} + +
+
+
书友推荐
+ {foreach $arrRecommendNovel as $key=>$category} + {if $key == 0} + {include file="Public/novelListH" /} + {/if} + {/foreach} + +
+
+
最近入库
+ +
+
+
最近更新
+ +
+{/block} {block name="customize"} {/block} \ No newline at end of file diff --git a/code/app/home/view/hzpxw/Novel/getNovelCategory.html b/code/app/home/view/hzpxw/Novel/getNovelCategory.html new file mode 100644 index 0000000..14ed519 --- /dev/null +++ b/code/app/home/view/hzpxw/Novel/getNovelCategory.html @@ -0,0 +1,69 @@ +{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"} + +
+ 首页 + >>分类 + >>小说分类 - 小说列表 +
+ +
+ 首 页 +  1   +  2   +  3   +  4   +  5   +  6   +  7   +  8   +  9   +  10   + 下一页 +
+{/block} + +{block name="customize"} {/block} \ No newline at end of file diff --git a/code/app/home/view/hzpxw/Novel/getNovelChapter.html b/code/app/home/view/hzpxw/Novel/getNovelChapter.html new file mode 100644 index 0000000..153ef98 --- /dev/null +++ b/code/app/home/view/hzpxw/Novel/getNovelChapter.html @@ -0,0 +1,116 @@ +{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"} +

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

+

101 朕拳打南山敬老院(第1页)

+
+ 上页 + 目录 + 存书签 + 下页 +
+
+

当然,在开始修史前,编修们决定给许烟杪做个特训。

+

“来,许郎,我问你,你是史官,要记录一件事:皇帝得了一匹烈马,三年过去马仍桀骜,将军为其驯马,短短百日即令马服从,帝问其如何做到,他告知:使马忍渴受训,从人驱遣。”

+

许烟杪琢磨了一下,开始下笔。

+

——经过两年的工作环境熏陶,他已经可以相对熟练地使用文言文了。

+

“上得烈马,三年不得乘。将军献言:百日可令其驯服。遂使之。果得,上问其由。曰:使马久渴则从人。”

+

编修看毕,很是惊喜:“许郎初涉修史,便已摸到精髓了!不错,记史便是越简练越好,‘上得烈马,三年不得乘’,此句便足以超过九成史官!”

+

许烟杪眼神清亮:“谢编修!”

+

那编修一愣:“你谢我作甚?”

+

许烟杪不好意思地笑:“此前我听编修言你们修前朝史已修了十年,便怕我的到来给诸位添麻烦。”

+

那编修本来平静的情绪,又微妙起了望不见的波澜。他深深看了许烟杪一眼,本来觉得这白泽过来当个吉祥物,提供正史就可以了,至于史书,编得大差不差就行,反正也不是指望他来做这个的。

+

但此刻,编修提笔,在纸上写了一句话:“你来看看。”

+

许烟杪探头,就见他写的文字下面,是板板正正的:上得烈马,三年不得乘。将军闻之,以渴服马,解上愁。

+

许烟杪眼睛一下子亮了起来。

+

他明白了!

+

+

老皇帝进入椒房殿的时候,窦皇后都吓了一跳:“怎这般狼狈!”

+

怎么胡子乱糟糟的!衣服也有褶皱了!

+

老皇帝骂道:“匹夫!皆是匹夫!”

+

然后气冲冲地向窦皇后诉说自己刚才的遭遇:“他们一个个闹着要上吊不算,还言语围攻朕!还捋朕的龙须!朕不想和他们计较,要走,还抓着不让朕走!”

+

——气到‘朕’字都冒出来了。

+

窦皇后:“……”

+

都把大臣们气到上手抓着皇帝不让他走了……尤其是她家五郎这种暴脾气的皇帝……

+

“五郎,你和我说真话。”窦皇后表情一下子严肃起来:“你不会是一气之下,砸了大臣的祖坟吧?”

+

她本来是挑严重的说,没想到对面的人诡异地沉默了。

+

“……你?”窦皇后的尾音不是很稳。

+

老皇帝咳嗽一声:“也没这么严重,比这个轻一点……也不是,轻了一些……呃,总之就是轻了。”

+

要不是实在心虚,他也不会只是在老婆面前骂几句这群粗鄙之人不要太过分。

+

——早就让人拖出去打板子了。

+

窦皇后:“究竟是何事?”

+

老皇帝眼神一漂:“让许烟杪去修周史。”

+

窦皇后:“……”

+

这和掘人家祖坟也没差多少了。真的怨不得大臣一气之下做出以下犯上的事情。

+

但看看丈夫下巴上面被揪得乱糟糟的胡子,窦皇后还是没忍住笑出声。

+

老皇帝:“妹子!你又不帮我!”

+

窦皇后乐不可支:“你啊,大臣也不是泥捏的,这匹夫一怒……还好只是揪揪胡子,拉着衣服不让你走。”

+
+ +
+ 上页 + 书页 + 存书签 + 下页 +
+ +
+
+ 书友点击: + 见微知著(弟妹 H) + 、私吻蝴蝶骨 + 、官途,搭上女领导之后! + 、当明星从跑龙套开始 + 、投喂流放罪臣后,她被迫现形了 + 、龙傲天的反派小师妹 + 、龙凤猪旅行团 + 、袅袅春腰 + 、无敌从觉醒武器大师开始 + 、下乡的姐姐回来了 + 、 +
+
+
+
+ 书友推荐: + 以婚为名 + 、袅袅春腰 + 、官婿美人香 + 、望门娇媳 + 、以你为名的夏天 + 、官道之权势滔天 + 、被嫡姐换亲之后 + 、他的暗卫 + 、我的年轻岳母 + 、下乡的姐姐回来了 + 、 +
+
+
+
+ 书友收藏: + 潘多拉的复仇(高干,nph) + 、千里宦途 + 、医道官途 + 、官途,搭上女领导之后! + 、从边军走出来的悍卒 + 、非常权途 + 、重生1958:发家致富从南锣鼓巷开始 + 、听说你暗恋我 + 、退婚后,我娶了未婚妻的堂妹 + 、升迁之路 + 、 +
+
+{/block} + +{block name="customize"} {/block} \ No newline at end of file diff --git a/code/app/home/view/hzpxw/Novel/getNovelChapterAll.html b/code/app/home/view/hzpxw/Novel/getNovelChapterAll.html new file mode 100644 index 0000000..b538d15 --- /dev/null +++ b/code/app/home/view/hzpxw/Novel/getNovelChapterAll.html @@ -0,0 +1,644 @@ +{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"} +
+ 满朝文武都能听到我的心声 +

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

+

+ + 白色的木 +

+

+ 其他小说 + 连载中 +

+

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

+

最后更新:2024-06-05 17:53:58

+
+ +
+
满朝文武都能听到我的心声 章节列表(第2页)
+
+ 上一页 + + 下一页 +
+ +
+ 上一页 + + 下一页 +
+
+
+
+ 书友点击: + 不乖(姐夫,出轨) + 、官道之权势滔天 + 、蝶变 + 、苟在修真世界 + 、玻璃灯 + 、私吻蝴蝶骨 + 、被嫡姐换亲之后 + 、没你就不行之新征途 + 、他的暗卫 + 、翡翠衾(nph) + 、女神攻略手册 + 、我的年轻岳母 + 、鱼目珠子(高干1v1) + 、直播写纯爱文的我在虫族封神 + 、触手怪她只想生存 + 、归雾 + 、潘多拉的复仇 + 、千里宦途 + 、岁岁平安 + 、吃了肉,就不能吃我了 + 、 +
+
+
+
+ 书友推荐: + 我的年轻岳母 + 、直播写纯爱文的我在虫族封神 + 、归雾 + 、无敌从觉醒武器大师开始 + 、古代猎户的养家日常 + 、认知性偏差 + 、被嫡姐换亲之后 + 、私吻蝴蝶骨 + 、替身男配只想赚钱 + 、黑心大小姐带着空间下乡啦 + 、逐澳游戏 + 、吃了肉,就不能吃我了 + 、一品红人 + 、七零宠婚:撩硬汉!生三胎 + 、大王万万不可! + 、误入官路 + 、含泪做1 + 、蝶变 + 、无敌六皇子 + 、没你就不行之新征途 + 、 +
+
+
+
+ 书友收藏: + 癌症晚期,前任女友疯狂报复我 + 、天才少年,开局便是救世主 + 、大王万万不可! + 、梨汁软糖【1V1甜H】 + 、诱奸儿媳 + 、官场之狐 + 、钟离先生一直在穿越 + 、云婳谢景行 + 、官途:权力巅峰 + 、蝶变 + 、开局一杆大狙,爆杀十万鞑子 + 、一品红人 + 、吃了肉,就不能吃我了 + 、官婿美人香全文完结 + 、青花冷(先婚后爱H) + 、七零大杂院小寡妇 + 、官场:扶摇直上九万里 + 、官路浮沉 + 、从边军走出来的悍卒 + 、触手怪她只想生存 + 、 +
+
+{/block} + +{block name="customize"} {/block} \ No newline at end of file diff --git a/code/app/home/view/hzpxw/Novel/getNovelInfo.html b/code/app/home/view/hzpxw/Novel/getNovelInfo.html new file mode 100644 index 0000000..82d4516 --- /dev/null +++ b/code/app/home/view/hzpxw/Novel/getNovelInfo.html @@ -0,0 +1,699 @@ +{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"} +
+ 和扶弟魔老婆离婚后,我直接走上巅峰! +

+ 和扶弟魔老婆离婚后,我直接走上巅峰! +

+

+ + 天命人悟猴 +

+

+ 都市小说 + 连载中 +

+

+ 最新章节:第344章 +

+

最后更新:2025-03-20 11:17:50

+
+ +
+
和扶弟魔老婆离婚后,我直接走上巅峰!小说简介
+
+

结婚两年半,妻子为了弟弟掏空家产,甚至拿走给工人的工资!面对妻子赵梦莹胡搅蛮缠的一家人,以及对方的颠倒黑白,许平安一通电话打给以前的战友。他不忍了!一场意外,再次见到高中同学,对方脱胎换骨。许平安也很惊讶,却不知自己是某人心中的白月光。离了赵梦莹,许平安逐渐走向人生巅峰,收获真爱,而前妻却开始死缠烂打。呵呵,他瞧不上! +

+
+
+
+
和扶弟魔老婆离婚后,我直接走上巅峰! 最新章节
+ +
和扶弟魔老婆离婚后,我直接走上巅峰! 章节列表(第1页/100章)
+ +
+
+
+ 书友点击: + 我的年轻岳母 + 、琉璃阶上 + 、被嫡姐换亲之后 + 、以你为名的夏天 + 、在北宋当陪房 + 、直播写纯爱文的我在虫族封神 + 、嫁给铁哥们 + 、一品红人 + 、官途,搭上女领导之后! + 、玻璃灯 + 、千里宦途 + 、重生七零:糙汉老公掐腰宠 + 、投喂流放罪臣后,她被迫现形了 + 、龙凤猪旅行团 + 、陈放顾静姝 + 、翡翠衾(nph) + 、替嫡姐爬上龙床,她宠冠后宫 + 、替身男配只想赚钱 + 、穿书后成了狼孩 + 、归雾 + 、 +
+
+
+
+ 书友推荐: + 官婿美人香 + 、人间政道 + 、没你就不行之新征途 + 、直播写纯爱文的我在虫族封神 + 、七零宠婚:撩硬汉!生三胎 + 、替身男配只想赚钱 + 、翡翠衾(nph) + 、结局前炮灰们掀了马甲 + 、鱼目珠子(高干1v1) + 、婚后心动:凌总追妻有点甜 + 、大王万万不可! + 、认知性偏差 + 、以你为名的夏天 + 、当明星从跑龙套开始 + 、含泪做1 + 、龙凤猪旅行团 + 、他的暗卫 + 、一品红人 + 、无敌从觉醒武器大师开始 + 、他说我不配 + 、 +
+
+
+
+ 书友收藏: + 天才少年,开局便是救世主 + 、当明星从跑龙套开始 + 、蝶变 + 、官途,搭上女领导之后! + 、华娱从男模开始 + 、升迁之路 + 、优质肉棒攻略系统(np高辣文) + 、退婚后,我娶了未婚妻的堂妹 + 、官场:救了女领导后,我一路飞升 + 、官场之狐 + 、替嫡姐爬上龙床,她宠冠后宫 + 、绝品宏图 + 、吃了肉,就不能吃我了 + 、官场:扶摇直上九万里 + 、官路浮沉 + 、医道官途 + 、开局一杆大狙,爆杀十万鞑子 + 、被嫡姐换亲之后 + 、你男朋友下面真大(校园 np 高h) + 、非常权途 + 、 +
+
+{/block} + +{block name="customize"} {/block} \ No newline at end of file diff --git a/code/app/home/view/hzpxw/Novel/getNovelRank.html b/code/app/home/view/hzpxw/Novel/getNovelRank.html new file mode 100644 index 0000000..a7cbea2 --- /dev/null +++ b/code/app/home/view/hzpxw/Novel/getNovelRank.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"} + +
+ 首页 + >>排行 + >>月排行榜 +
+ +
+ 首 页 +  1   +  2   +  3   +  4   +  5   +  6   +  7   +  8   +  9   +  10   + 下一页 +
+{/block} + +{block name="customize"} {/block} \ No newline at end of file diff --git a/code/app/home/view/hzpxw/Novel/getSearchNovel.html b/code/app/home/view/hzpxw/Novel/getSearchNovel.html new file mode 100644 index 0000000..937a350 --- /dev/null +++ b/code/app/home/view/hzpxw/Novel/getSearchNovel.html @@ -0,0 +1,37 @@ +{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"} + +
+ "我" + 相关结果: +
+ +
+ 首 页 +  1   +  2   +  3   +  4   +  5   +  6   +  7   +  8   +  9   +  10   + 下一页 +
+{/block} + +{block name="customize"} {/block} \ No newline at end of file diff --git a/code/app/home/view/hzpxw/Novel/getSeoInfo.html b/code/app/home/view/hzpxw/Novel/getSeoInfo.html new file mode 100644 index 0000000..172afb8 --- /dev/null +++ b/code/app/home/view/hzpxw/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"} +
+ +
+
+

深度解说列表

+
+
+ +
+
+{/block} + +{block name="customize"} {/block} \ No newline at end of file diff --git a/code/app/home/view/hzpxw/Novel/getSeoList.html b/code/app/home/view/hzpxw/Novel/getSeoList.html new file mode 100644 index 0000000..1eadedf --- /dev/null +++ b/code/app/home/view/hzpxw/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"} +
+ +
+
+ +
+ +
+ +
+
+

深度解说列表

+
+
+ +
+ +
+{/block} + +{block name="customize"} {/block} \ No newline at end of file diff --git a/code/app/home/view/hzpxw/Pc/Public/chapterTableAll.html b/code/app/home/view/hzpxw/Pc/Public/chapterTableAll.html new file mode 100644 index 0000000..2e765a4 --- /dev/null +++ b/code/app/home/view/hzpxw/Pc/Public/chapterTableAll.html @@ -0,0 +1 @@ +
第1912章
\ No newline at end of file diff --git a/code/app/home/view/hzpxw/Pc/Public/footer.html b/code/app/home/view/hzpxw/Pc/Public/footer.html new file mode 100644 index 0000000..adc12bf --- /dev/null +++ b/code/app/home/view/hzpxw/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/hzpxw/Pc/Public/historyNovelList.html b/code/app/home/view/hzpxw/Pc/Public/historyNovelList.html new file mode 100644 index 0000000..07b4640 --- /dev/null +++ b/code/app/home/view/hzpxw/Pc/Public/historyNovelList.html @@ -0,0 +1,23 @@ + + + + + + + 我真是一条龙 + + + 老读者必看公告!!! + + + 兔子很淡定 + + 3天前 + + 已完结 + + 阅读 + 删除 + + \ No newline at end of file diff --git a/code/app/home/view/hzpxw/Pc/Public/hostListImg.html b/code/app/home/view/hzpxw/Pc/Public/hostListImg.html new file mode 100644 index 0000000..9056817 --- /dev/null +++ b/code/app/home/view/hzpxw/Pc/Public/hostListImg.html @@ -0,0 +1,13 @@ + +
+
永恒之门 +
+
+
六界三道永恒之门
+
关于永恒之门神魔混战,万界崩塌,只永恒仙域长存世间。尘世罹苦,妖祟邪乱,诸神明弃众生而不朽。万古后,一尊名为赵云的战神,凝练了天地玄黄,重铸了宇宙洪荒,自碧落凡尘,一路打上了永恒仙域,以神之名,君临万道。自此,他说的话,便是神话。... +
+
+
+
\ No newline at end of file diff --git a/code/app/home/view/hzpxw/Pc/Public/hostListText.html b/code/app/home/view/hzpxw/Pc/Public/hostListText.html new file mode 100644 index 0000000..5e2b744 --- /dev/null +++ b/code/app/home/view/hzpxw/Pc/Public/hostListText.html @@ -0,0 +1,7 @@ + +
  • + + 步步升云 + + 钓人的鱼 +
  • \ No newline at end of file diff --git a/code/app/home/view/hzpxw/Pc/Public/indexCategoryNewsList.html b/code/app/home/view/hzpxw/Pc/Public/indexCategoryNewsList.html new file mode 100644 index 0000000..9f8c3ba --- /dev/null +++ b/code/app/home/view/hzpxw/Pc/Public/indexCategoryNewsList.html @@ -0,0 +1 @@ +
  • 逆天邪神/火星引力
  • \ No newline at end of file diff --git a/code/app/home/view/hzpxw/Pc/Public/indexCategoryNewsOne.html b/code/app/home/view/hzpxw/Pc/Public/indexCategoryNewsOne.html new file mode 100644 index 0000000..ff31541 --- /dev/null +++ b/code/app/home/view/hzpxw/Pc/Public/indexCategoryNewsOne.html @@ -0,0 +1,10 @@ +
    +
    重生巫族,我为盘古立神像
    +
    +
    重生巫族,我为盘古立神像
    +
    关于重生巫族,我为盘古立神像天生万物以养人,人无一物可报天,浩瀚如洪荒世界,在亿万生灵只知
    +
    +
    +
    \ No newline at end of file diff --git a/code/app/home/view/hzpxw/Pc/Public/indexNewsUpdateList.html b/code/app/home/view/hzpxw/Pc/Public/indexNewsUpdateList.html new file mode 100644 index 0000000..2dc6664 --- /dev/null +++ b/code/app/home/view/hzpxw/Pc/Public/indexNewsUpdateList.html @@ -0,0 +1,13 @@ + +
  • + [玄幻修真] + + 太荒吞天诀 + + + 第四千一百六十八章 熟悉的气息 + + 铁马飞桥 + 03-20 +
  • \ No newline at end of file diff --git a/code/app/home/view/hzpxw/Pc/User/getBookShelf.html b/code/app/home/view/hzpxw/Pc/User/getBookShelf.html new file mode 100644 index 0000000..34efd82 --- /dev/null +++ b/code/app/home/view/hzpxw/Pc/User/getBookShelf.html @@ -0,0 +1,42 @@ +{extend name="basePc" /} +{block name='nav-active-class'}boy{/block} +{block name="title"}{/block} +{block name="head-js"}{/block} + + +{block name="main"} +
    + + +
    +
    +

    【阅读记录】列表 最多显示100条

    + +
    +
    +

    热门小说

    + +
    +
    +
    + + + +
    +{/block} + +{block name="customize"} {/block} \ No newline at end of file diff --git a/code/app/home/view/hzpxw/Pc/User/getHistory.html b/code/app/home/view/hzpxw/Pc/User/getHistory.html new file mode 100644 index 0000000..34efd82 --- /dev/null +++ b/code/app/home/view/hzpxw/Pc/User/getHistory.html @@ -0,0 +1,42 @@ +{extend name="basePc" /} +{block name='nav-active-class'}boy{/block} +{block name="title"}{/block} +{block name="head-js"}{/block} + + +{block name="main"} +
    + + +
    +
    +

    【阅读记录】列表 最多显示100条

    + +
    +
    +

    热门小说

    + +
    +
    +
    + + + +
    +{/block} + +{block name="customize"} {/block} \ No newline at end of file diff --git a/code/app/home/view/hzpxw/Pc/getNovelCategory.html b/code/app/home/view/hzpxw/Pc/getNovelCategory.html new file mode 100644 index 0000000..afe51d1 --- /dev/null +++ b/code/app/home/view/hzpxw/Pc/getNovelCategory.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 $arrRecommendSerializationNovel as $key=>$Novel} + {if $key < 6} {include file="Pc/Public/hostListImg" /} {/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/Pc/getNovelChapter.html b/code/app/home/view/hzpxw/Pc/getNovelChapter.html new file mode 100644 index 0000000..72b0d1f --- /dev/null +++ b/code/app/home/view/hzpxw/Pc/getNovelChapter.html @@ -0,0 +1,132 @@ +{extend name="basePc" /} +{block name='nav-active-class'}boy{/block} +{block name="title"}{/block} +{block name="head-js"}{/block} + + +{block name="main"} + +
    +
    +
    + 耗子小说网 + >千里宦途 + >第578章 什么样子 + +
    +
    +

    第578章 什么样子(第1页)

    + +
    + +
    +

    晚上八点钟,冯宇走出孙记私房菜馆,两人没有谈拢,最终不欢而散。

    +

    相比冯宇的满面愁容,洪波则是一脸得意的走出私房菜馆,看着冯宇离开的方向,冷哼一声。

    +

    刚才在包厢里,他故意引导冯宇说出了那天找自己的经过,不但偷录了音,微型摄像头还把冯宇说话的整个过程录了下来。

    +

    “冯宇啊冯宇,要怪就怪出了事你想拿老子顶缸,把老子当傻子,一点实惠没有,还想让老子给你卖命,真以为你一个县委书记秘书有什么了不起,呸。”洪波心里暗骂一声。

    +

    当晚洪波睡得很香,冯宇则是辗转反侧,到天亮的时候才眯了一会。

    +

    早晨,洪波并没去上班,而是直接开车去了市区。

    +

    冯宇顶着熊猫眼来到了县委,杨志看了他一眼,眉头紧锁了起来。

    +

    他一直对形象十分重视,所以要求身边的人也要随时随地保持自己的形象。

    +

    冯宇以前都做得很好,可是今天早晨却是头发混乱,眼圈十分重,一副无精打采的样子。

    +

    冯宇将刚沏好的茶放在杨志面前。

    +

    杨志看了他一眼,道:“冯宇,如果你觉得在我身边压力过大,我可以把你调到轻松的部门。”

    +

    本来无精打采的冯宇,听到杨志的话,瞬间身体打了一个激灵,立刻开口说道:“杨书记,我没事,我没感觉到压力,在您身边在我的荣幸,你的批评是对我的鞭策,我一定把工作做好……”

    +

    冯宇紧张的说了很多,直到杨志摆了一下手,他的话才戛然而止。

    +

    “你看看你今天的形象,昨晚去干嘛了?没睡觉吗?”杨志问道。

    +

    冯宇看着杨志,这几天他承受了十分巨大的压力,此时终于有点扛不住了。

    +

    “杨书记,我……”冯宇红了眼圈,一个大男人想要落泪。

    +

    不知道是真的,还是演的,反正效果不错,杨志看到落泪的冯宇,明显语气变得温和起来:“什么事,还能让你一个县委书记的秘书急得落泪?”

    +

    “杨书记,我犯了错误。”冯宇低头说道。

    +

    他扛不住了,不如跟杨志说实话,不然等市纪委下来调查,他的结果可能更惨。

    +

    “说。”杨志喝了口茶,说道。

    +

    “杨书记,上次您让我给小羊饼干加把火,于是我就找了……”冯宇把事情详细的讲了一遍,最后说道:“阳城县那边已经把许强秘密抓捕了,可能很快就能查到咱们县住建局洪波头上,可是这几天我跟他谈了好几次,洪波都不愿意把事情扛下来。” +

    +

    “甚至他还威胁我,只要市纪委找到他,他就立刻把我供出来,当时我说只要你把事情扛下来,书记您会想办法让他的处分最小,保住他的党籍和级别,等沉寂几年,未来还能重新起复。”

    +

    “洪波还是没松口,他说……”冯宇变得犹犹豫豫起来。

    +

    “说什么?”杨志问道。

    +

    明知后面的话可能不太好听,但是他还是问了。

    +

    “他说杨书记你还是管好自己,上次就被王子枫玩得团团……”

    +

    砰!

    +

    转字还没有说出口,冯宇就听到杨志生气的拍了桌子。

    +
    + +
    +
    + +
    书友推荐:私吻蝴蝶骨袅袅春腰吃了肉,就不能吃我了女神攻略手册触手怪她只想生存逐澳游戏没你就不行之新征途望门娇媳无敌六皇子认知性偏差以你为名的夏天古代猎户的养家日常一品红人官道之权势滔天青花冷(先婚后爱H)官途,搭上女领导之后!蝶变见微知著(弟妹 H)替身男配只想赚钱龙凤猪旅行团
    + +
    书友收藏:退婚后,我娶了未婚妻的堂妹天才少年,开局便是救世主绝品宏图官场:扶摇直上九万里官道之权势滔天就职供销社,我在60年代搞代购官婿美人香全文完结潘多拉的复仇(高干,nph)重生1958:发家致富从南锣鼓巷开始以你为名的夏天投喂流放罪臣后,她被迫现形了癌症晚期,前任女友疯狂报复我异世特工替嫡姐爬上龙床,她宠冠后宫娱乐春秋(加料福利版)陈放顾静姝从边军走出来的悍卒潘多拉的复仇认知性偏差梨汁软糖【1V1甜H】
    +{/block} + +{block name="customize"} {/block} + +{block name="footer-js"} + + + +{/block} \ No newline at end of file diff --git a/code/app/home/view/hzpxw/Pc/getNovelChapterAll.html b/code/app/home/view/hzpxw/Pc/getNovelChapterAll.html new file mode 100644 index 0000000..544b592 --- /dev/null +++ b/code/app/home/view/hzpxw/Pc/getNovelChapterAll.html @@ -0,0 +1,179 @@ +{extend name="basePc" /} +{block name='nav-active-class'}boy{/block} +{block name="title"}{/block} +{block name="head-js"}{/block} + + +{block name="main"} +
    +
    + +
    +
    +
    +
    《武裂苍穹》正文目录
    +
    上一页下一页
    + {foreach $arrNovelChapterAll as $category} + {include file="Pc/Public/chapterTableAll" /} + {/foreach} +
    返回《武裂苍穹》第一页
    +
    上一页下一页
    +
    +
    +
    + + + + +
    + +
    +
    +{/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"} +
    + +
    +
    +

    深度解说列表

    +
    +
    + +
    +
    +{/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/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/getNovelCategory.html b/code/app/home/view/kuangyu/Novel/getNovelCategory.html new file mode 100644 index 0000000..585b1ea --- /dev/null +++ b/code/app/home/view/kuangyu/Novel/getNovelCategory.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/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"} +
    +
    +
    +

    目录

    + 关闭 +
    +
    + +
    +
    + +{/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"} +
    + +
    +
    +

    深度解说列表

    +
    +
    + +
    +
    +{/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"} +
    + +
    +
    + +
    + +
    + +
    +
    +

    深度解说列表

    +
    +
    + +
    + +
    +{/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"} +
    + +
    +
    +

    我的书架

    + 管理 + 完成 +
    +
    + +
    +
    +{/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 $arrAdBanner as $key=>$Novel} + {include file="Pc/Public/adBanner" /} + {/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"} +
    + +
    +
    +
    + + + 搜索 +
    +
    +
    +
    + 所属频道 + +
    +
    + 所属分类 + +
    +
    + 是否完结 + +
    + +
    + 更新时间 + +
    +
    + 排序方式 + +
    +
    +
    + + + +
    + + +
    + +
    + +
    + +
    +{/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"} +
    + +
    +
    +
    + + + 搜索 +
    +
    +
    + + + +
    + + +
    +
    + +
    + +
    +{/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"} +
    + +
    +
    +

    深度解说列表

    +
    +
    + +
    +
    +{/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 $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/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/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("