diff --git a/code/app/home/config/router.php b/code/app/home/config/router.php new file mode 100644 index 0000000..ab6dec0 --- /dev/null +++ b/code/app/home/config/router.php @@ -0,0 +1,220 @@ +append(['boolIsMobile' => true]); +// Route::alias("/pc/index.html", "/")->append(['boolIsMobile' => false]); + +Route::rule("/",'Index/index')->ext('html')->append(['boolIsMobile' => true]); +Route::rule("/index",'Index/index')->ext('html')->append(['boolIsMobile' => true]); +Route::rule("/pc/index",'Index/getPcIndex')->ext('html')->append(['boolIsMobile' => false]); + +// 男生/女生 +Route::rule('boy', 'Novel/getBoyNovel')->ext('html')->append(['boolIsMobile' => true,'strChannel'=>'boy']); +Route::rule('pc/boy', 'Novel/getBoyNovel')->ext('html')->append(['boolIsMobile' => false,'strChannel'=>'boy']); +Route::rule('girl', 'Novel/getBoyNovel')->ext('html')->append(['boolIsMobile' => true,'strChannel'=>'girl']); +Route::rule('pc/girl', 'Novel/getBoyNovel')->ext('html')->append(['boolIsMobile' => false,'strChannel'=>'girl']); + + +//排行榜 +Route::rule('rank', 'Novel/getNovelRank')->ext('html')->append(['boolIsMobile' => true]); +Route::rule("/pc/rank",'Novel/getNovelRank')->ext('html')->append(['boolIsMobile' => false]); + +// 书库 +Route::rule('shuku', 'Novel/getLibrary')->ext('html')->append(['boolIsMobile' => true]); +Route::rule('pc/shuku', 'Novel/getLibrary')->ext('html')->append(['boolIsMobile' => false]); + +// 深度SEO +Route::rule('seo/list', 'Novel/getSeoList')->ext('html')->append(['boolIsMobile' => true]); +Route::rule('pc/seo/list', 'Novel/getSeoList')->ext('html')->append(['boolIsMobile' => false]); +Route::rule('seo/info', 'Novel/getSeoInfo')->ext('html')->append(['boolIsMobile' => true]); +Route::rule('pc/seo/info', 'Novel/getSeoInfo')->ext('html')->append(['boolIsMobile' => false]); + + +// 小说详情 +Route::rule('info', 'Novel/getNovelInfo')->ext('html')->append(['boolIsMobile' => true]); +Route::rule('pc/info', 'Novel/getNovelInfo')->ext('html')->append(['boolIsMobile' => false]); + +// 小说章节 +Route::rule('chapter', 'Novel/getNovelChapter')->ext('html')->append(['boolIsMobile' => true]); +Route::rule('pc/chapter', 'Novel/getNovelChapter')->ext('html')->append(['boolIsMobile' => false]); + +Route::rule('pc/chapters', 'Novel/getNovelChapterAll')->ext('html')->append(['boolIsMobile' => false]); + +// 搜索小说 +Route::rule('search', 'Novel/getSearchNovel')->ext('html')->append(['boolIsMobile' => true]); +Route::rule('pc/search', 'Novel/getSearchNovel')->ext('html')->append(['boolIsMobile' => false]); + +// 小说用户中心 +Route::rule('/user', 'User/Index')->ext('html')->append(['boolIsMobile' => true]); +Route::rule('/pc/user', 'User/Index')->ext('html')->append(['boolIsMobile' => false]); + +// 历史记录 +Route::rule('history', 'User/getHistory')->ext('html')->append(['boolIsMobile' => true]); +Route::rule('/pc/history', 'User/getHistory')->ext('html')->append(['boolIsMobile' => false]); + +// 书架 +Route::rule('bookshelf', 'User/getBookShelf')->ext('html')->append(['boolIsMobile' => true]); +Route::rule('/pc/bookshelf', 'User/getBookShelf')->ext('html')->append(['boolIsMobile' => false]); + + + + + + + + + + + + + + + + +// if(config('app.default_index_info_isopen')){ +// # SEO首页-此为了 那些那详情页做首页推广的站点 +// Route::get("/", "Novel/getDetail")->name("Novel@getDetail")->cache('/index.html', 600, 'index'); + +// // 影视首页 +// Route::get("/nindex", "Novel/Index")->name("Novel@Index")->cache('/nindex.html', 600, 'nindex'); +// }else{ +// Route::get("/", "Novel/Index")->name("Novel@Index")->cache('/index.html', 600, 'index'); +// } + + + +// # 定义所有分类路由 +// $arrRoutes = [ +// # 小说推荐 +// [ +// 'class'=>'Novel/getRankList', +// 'name'=>'Novel@getTuijianList', +// 'path'=>[ +// '/tj/:intTjdj-[:intPage]', +// '/tuijian/:intTjdj-[:intPage]', +// '/recommend/:intTjdj-[:intPage]', +// '/nice/:intTjdj-[:intPage]', +// '/good/:intTjdj-[:intPage]', +// '/推荐/:intTjdj-[:intPage]', +// ], +// ], +// # 小说分类 +// [ +// 'class'=>'Novel/getCategoryList', +// 'name'=>'Novel@getCategoryList', +// 'path'=>[ +// '/list/:intCId-:intSort-:intStatus-[:intPage]', +// '/fenlei/:intCId-:intSort-:intStatus-[:intPage]', +// '/class/:intCId-:intSort-:intStatus-[:intPage]', +// '/type/:intCId-:intSort-:intStatus-[:intPage]', +// '/leixin/:intCId-:intSort-:intStatus-[:intPage]', +// '/小说分类/:intCId-:intSort-:intStatus-[:intPage]', +// ], +// ], +// # 小说排行 +// [ +// 'class'=>'Novel/getNovelRankList', +// 'name'=>'Novel@getNovelRankList', +// 'path'=>[ +// '/paihang/:intCId-:intSort-[:intPage]', +// '/paihanbang/:intCId-:intSort-[:intPage]', +// '/rank/:intCId-:intSort-[:intPage]', +// '/sort/:intCId-:intSort-[:intPage]', +// '/pb/:intCId-:intSort-[:intPage]', +// '/排行榜/:intCId-:intSort-[:intPage]', +// ], +// ], + +// # 小说章节 +// [ +// 'class'=>'Novel/getReader', +// 'name'=>'Novel@getReader', +// 'path'=>[ +// '/xq/:intNovelId/:intZhangJiePaiXu-[:strSort]', +// '/xiaoshuo/:intNovelId/:intZhangJiePaiXu-[:strSort]', +// '/novel/:intNovelId/:intZhangJiePaiXu-[:strSort]', +// '/info/:intNovelId/:intZhangJiePaiXu-[:strSort]', +// '/shu/:intNovelId/:intZhangJiePaiXu-[:strSort]', +// '/小说/:intNovelId/:intZhangJiePaiXu-[:strSort]', + +// '/book/:intNovelId/:intZhangJiePaiXu-[:strSort]', +// '/kan/:intNovelId/:intZhangJiePaiXu-[:strSort]', +// '/show/:intNovelId/:intZhangJiePaiXu-[:strSort]', +// '/yuedu/:intNovelId/:intZhangJiePaiXu-[:strSort]', +// '/see/:intNovelId/:intZhangJiePaiXu-[:strSort]', +// '/相关/:intNovelId/:intZhangJiePaiXu-[:strSort]', +// ], +// ], + +// # 小说详情 +// [ +// 'class'=>'Novel/getDetail', +// 'name'=>'Novel@getDetail', +// 'path'=>[ +// '/xq/:intNovelId-[:intCurrentPage]-[:strSort]', +// '/xiaoshuo/:intNovelId-[:intCurrentPage]-[:strSort]', +// '/novel/:intNovelId-[:intCurrentPage]-[:strSort]', +// '/info/:intNovelId-[:intCurrentPage]-[:strSort]', +// '/shu/:intNovelId-[:intCurrentPage]-[:strSort]', +// '/小说/:intNovelId-[:intCurrentPage]-[:strSort]', + +// '/book/:intNovelId-[:intCurrentPage]-[:strSort]', +// '/kan/:intNovelId-[:intCurrentPage]-[:strSort]', +// '/show/:intNovelId-[:intCurrentPage]-[:strSort]', +// '/yuedu/:intNovelId-[:intCurrentPage]-[:strSort]', +// '/see/:intNovelId-[:intCurrentPage]-[:strSort]', +// '/相关/:intNovelId-[:intCurrentPage]-[:strSort]', +// ], +// ], +// # 搜索 - 小说 +// [ +// 'class'=>'Search/getNovel', +// 'name'=>'Search@getNovel', +// 'path'=>[ +// '/search', +// ], +// ], +// # 书架 +// [ +// 'class'=>'Search/getShujia', +// 'name'=>'Search/getShujia', +// 'path'=>[ +// '/shujia', +// ], +// ], +// # 收藏 +// [ +// 'class'=>'Search/addSc', +// 'name'=>'Search/addSc', +// 'path'=>[ +// '/sc', +// ], +// ], +// ]; + +// // Route::get('/sc', 'Novel/addSc') +// // ->middleware('Throttle:5,60') // 限制 1 分钟内最多 5 次 +// // ->name('Novel@addSc'); + +// # 遍历所有分类,注册路由 +// foreach ($arrRoutes as $Routes) { +// foreach ($Routes['path'] as $strPath) { +// Route::get($strPath, $Routes['class']) +// ->name($Routes['name']) +// ->pattern([ +// 'intTjdj' => '\d+', # 推荐等级 +// 'intPage' => '\d+', # 分页 +// 'intCId' => '\d+', +// 'intSort' => '\d+', +// 'intNovelId' => '\d+', +// 'intZhangJiePaiXu' => '\d+', +// 'strSort' => '\w+', +// 'intStatus' => '\d+', +// ]) +// ->cache([$strPath, 3600, strtoupper($strPath) . '_PAGE']); +// } +// } diff --git a/code/app/home/controller/Index.php b/code/app/home/controller/Index.php index 6de3884..f069bf3 100644 --- a/code/app/home/controller/Index.php +++ b/code/app/home/controller/Index.php @@ -7,14 +7,302 @@ namespace app\home\controller; use app\home\BaseController; use storage\StorageCore; use think\facade\View; +use app\Request; class Index extends BaseController { - public function index() + // 首页-H5 + public function index(Request $Request) { - return View::fetch(); + // 获取路由附加的参数 + $boolIsMobile = $Request->param('boolIsMobile'); + + // 模拟数据-推荐等级为9的 随机8个小说 + $arrRecommendNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ['id' => 6, 'name' => '小说3', 'author' => '作者3'], + ['id' => 7, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + + ]; + + // 模拟数据-最新 随机8个小说 + $arrNewsNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ['id' => 6, 'name' => '小说3', 'author' => '作者3'], + ['id' => 7, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ]; + + // 模拟数据-日排行榜 随机10个小说 + $arrDayRankNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ['id' => 6, 'name' => '小说3', 'author' => '作者3'], + ['id' => 7, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ['id' => 9, 'name' => '小说3', 'author' => '作者3'], + ['id' => 10, 'name' => '小说3', 'author' => '作者3'], + ]; + // 模拟数据-周排行榜 随机10个小说 + $arrWeekRankNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ['id' => 6, 'name' => '小说3', 'author' => '作者3'], + ['id' => 7, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ['id' => 9, 'name' => '小说3', 'author' => '作者3'], + ['id' => 10, 'name' => '小说3', 'author' => '作者3'], + ]; + // 模拟数据-月排行榜 随机10个小说 + $arrMoonRankNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ['id' => 6, 'name' => '小说3', 'author' => '作者3'], + ['id' => 7, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ['id' => 9, 'name' => '小说3', 'author' => '作者3'], + ['id' => 10, 'name' => '小说3', 'author' => '作者3'], + ]; + // 模拟数据-完结小说 总排行榜 随机10个小说 + $arrEndNovelRankNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ['id' => 6, 'name' => '小说3', 'author' => '作者3'], + ['id' => 7, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ['id' => 9, 'name' => '小说3', 'author' => '作者3'], + ['id' => 10, 'name' => '小说3', 'author' => '作者3'], + ]; + + View::assign([ + 'arrRecommendNovel' => $arrRecommendNovel, + 'arrNewsNovel' => $arrNewsNovel, + 'arrDayRankNovel' => $arrDayRankNovel, + 'arrWeekRankNovel' => $arrWeekRankNovel, + 'arrMoonRankNovel' => $arrMoonRankNovel, + 'arrEndNovelRankNovel' => $arrEndNovelRankNovel, + 'strPageCode' => 'home' + ]); + + if ($boolIsMobile) { + return View::fetch(); + } else { + return View::fetch('pc/index'); + } } + // 首页数据-PC + public function getPcIndex(Request $Request) + { + // 获取路由附加的参数 + $boolIsMobile = $Request->param('boolIsMobile'); + + // 模拟数据-推荐等级为9的连载的 随机15个小说 + $arrRecommendSerializationNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ['id' => 6, 'name' => '小说3', 'author' => '作者3'], + ['id' => 7, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ['id' => 9, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ['id' => 15, 'name' => '小说3', 'author' => '作者3'], + ]; + + // 模拟数据-推荐等级为9的完结的 随机12个小说 + $arrRecommendEndNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ['id' => 6, 'name' => '小说3', 'author' => '作者3'], + ['id' => 7, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ['id' => 9, 'name' => '小说3', 'author' => '作者3'], + ['id' => 10, 'name' => '小说3', 'author' => '作者3'], + ['id' => 11, 'name' => '小说3', 'author' => '作者3'], + ['id' => 12, 'name' => '小说3', 'author' => '作者3'], + + ]; + + // 模拟数据-男生频道,最新的 随机5个小说 + $arrBoyNewsNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ]; + + // 模拟数据-男生频道,周排行榜 随机10个小说 + $arrBoyWeekRankNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ['id' => 6, 'name' => '小说3', 'author' => '作者3'], + ['id' => 7, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ['id' => 9, 'name' => '小说3', 'author' => '作者3'], + ['id' => 10, 'name' => '小说3', 'author' => '作者3'], + ]; + + // 模拟数据-男生频道,月排行榜 随机10个小说 + $arrBoyMoonRankNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ['id' => 6, 'name' => '小说3', 'author' => '作者3'], + ['id' => 7, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ['id' => 9, 'name' => '小说3', 'author' => '作者3'], + ['id' => 10, 'name' => '小说3', 'author' => '作者3'], + ]; + + // 模拟数据-男生频道,总排行榜 随机10个小说 + $arrBoyTotalRankNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ['id' => 6, 'name' => '小说3', 'author' => '作者3'], + ['id' => 7, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ['id' => 9, 'name' => '小说3', 'author' => '作者3'], + ['id' => 10, 'name' => '小说3', 'author' => '作者3'], + ]; + + // 模拟数据-女生频道,最新的 随机5个小说 + $arrGirlNewsNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ]; + + // 模拟数据-女生频道,周排行榜 随机10个小说 + $arrGirlWeekRankNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ['id' => 6, 'name' => '小说3', 'author' => '作者3'], + ['id' => 7, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ['id' => 9, 'name' => '小说3', 'author' => '作者3'], + ['id' => 10, 'name' => '小说3', 'author' => '作者3'], + ]; + // 模拟数据-女生频道,月排行榜 随机10个小说 + $arrGirlMoonRankNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ['id' => 6, 'name' => '小说3', 'author' => '作者3'], + ['id' => 7, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ['id' => 9, 'name' => '小说3', 'author' => '作者3'], + ['id' => 10, 'name' => '小说3', 'author' => '作者3'], + ]; + // 模拟数据-女生频道,总排行榜 随机10个小说 + $arrBGirlTotalRankNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ['id' => 6, 'name' => '小说3', 'author' => '作者3'], + ['id' => 7, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ['id' => 9, 'name' => '小说3', 'author' => '作者3'], + ['id' => 10, 'name' => '小说3', 'author' => '作者3'], + ]; + + // 模拟数据-最近更新-随机50 + $arrNewsUpdateNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ['id' => 6, 'name' => '小说3', 'author' => '作者3'], + ['id' => 7, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ['id' => 9, 'name' => '小说3', 'author' => '作者3'], + ['id' => 10, 'name' => '小说3', 'author' => '作者3'], + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ['id' => 6, 'name' => '小说3', 'author' => '作者3'], + ['id' => 7, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ['id' => 9, 'name' => '小说3', 'author' => '作者3'], + ['id' => 10, 'name' => '小说3', 'author' => '作者3'], + ]; + + View::assign([ + 'arrNewsUpdateNovel' => $arrNewsUpdateNovel, + 'arrRecommendSerializationNovel' => $arrRecommendSerializationNovel, + 'arrRecommendEndNovel' => $arrRecommendEndNovel, + 'arrBoyNewsNovel' => $arrBoyNewsNovel, + 'arrBoyWeekRankNovel' => $arrBoyWeekRankNovel, + 'arrBoyMoonRankNovel' => $arrBoyMoonRankNovel, + 'arrBoyTotalRankNovel' => $arrBoyTotalRankNovel, + 'arrGirlNewsNovel' => $arrGirlNewsNovel, + 'arrGirlWeekRankNovel' => $arrGirlWeekRankNovel, + 'arrGirlMoonRankNovel' => $arrGirlMoonRankNovel, + 'arrBGirlTotalRankNovel' => $arrBGirlTotalRankNovel, + 'arrAdBanner' => [], + 'strPageCode' => 'home' + ]); + + if ($boolIsMobile) { + return View::fetch(); + } else { + return View::fetch('pc/index'); + } + } + + + public function test() { diff --git a/code/app/home/controller/Novel.php b/code/app/home/controller/Novel.php index 0576f5d..dde53fe 100644 --- a/code/app/home/controller/Novel.php +++ b/code/app/home/controller/Novel.php @@ -7,11 +7,415 @@ namespace app\home\controller; use app\home\BaseController; use storage\StorageCore; use think\facade\View; +use app\Request; class Novel extends BaseController { public function index() { + return View::fetch(); } + + // 小说排行 + public function getNovelRank(Request $Request) + { + $boolIsMobile = $Request->param('boolIsMobile'); + // 模拟数据-日排行榜 随机10个小说 + $arrDayRankNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ['id' => 6, 'name' => '小说3', 'author' => '作者3'], + ['id' => 7, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ['id' => 9, 'name' => '小说3', 'author' => '作者3'], + ['id' => 10, 'name' => '小说3', 'author' => '作者3'], + ]; + // 模拟数据-周排行榜 随机10个小说 + $arrWeekRankNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ['id' => 6, 'name' => '小说3', 'author' => '作者3'], + ['id' => 7, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ['id' => 9, 'name' => '小说3', 'author' => '作者3'], + ['id' => 10, 'name' => '小说3', 'author' => '作者3'], + ]; + // 模拟数据-月排行榜 随机10个小说 + $arrMoonRankNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ['id' => 6, 'name' => '小说3', 'author' => '作者3'], + ['id' => 7, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ['id' => 9, 'name' => '小说3', 'author' => '作者3'], + ['id' => 10, 'name' => '小说3', 'author' => '作者3'], + ]; + // 模拟数据-总排行榜 随机10个小说 + $arrTotalRankNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ['id' => 6, 'name' => '小说3', 'author' => '作者3'], + ['id' => 7, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ['id' => 9, 'name' => '小说3', 'author' => '作者3'], + ['id' => 10, 'name' => '小说3', 'author' => '作者3'], + ]; + // 模拟数据-新书榜 随机10个小说 + $arrNewsNovelRankNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ['id' => 6, 'name' => '小说3', 'author' => '作者3'], + ['id' => 7, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ['id' => 9, 'name' => '小说3', 'author' => '作者3'], + ['id' => 10, 'name' => '小说3', 'author' => '作者3'], + ]; + + // 模拟数据-完结榜 随机10个小说 + $arrEdnNovelRankNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ['id' => 6, 'name' => '小说3', 'author' => '作者3'], + ['id' => 7, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ['id' => 9, 'name' => '小说3', 'author' => '作者3'], + ['id' => 10, 'name' => '小说3', 'author' => '作者3'], + ]; + + + View::assign([ + 'arrDayRankNovel' => $arrDayRankNovel, + 'arrWeekRankNovel' => $arrWeekRankNovel, + 'arrMoonRankNovel' => $arrMoonRankNovel, + 'arrTotalRankNovel' => $arrTotalRankNovel, + 'arrNewsNovelRankNovel' => $arrNewsNovelRankNovel, + 'arrEdnNovelRankNovel' => $arrEdnNovelRankNovel, + 'strPageCode' => 'rank' + ]); + if ($boolIsMobile) { + return View::fetch(); + } else { + return View::fetch('pc/getNovelRank'); + } + } + + // 书库 + public function getLibrary(Request $Request) + { + $boolIsMobile = $Request->param('boolIsMobile'); + + // 模拟数据 + $arrNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ['id' => 6, 'name' => '小说3', 'author' => '作者3'], + ['id' => 7, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ]; + + View::assign([ + 'arrNovel' => $arrNovel, + 'strPageCode' => 'library' + ]); + if ($boolIsMobile) { + return View::fetch(); + } else { + return View::fetch('pc/getLibrary'); + } + } + + // 书架 + public function getBookShelf(Request $Request) + { + $boolIsMobile = $Request->param('boolIsMobile'); + + // 模拟数据 + $arrNewsNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ['id' => 6, 'name' => '小说3', 'author' => '作者3'], + ['id' => 7, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ]; + + View::assign([ + 'arrNewsNovel' => $arrNewsNovel, + 'strPageCode' => 'bookshelf' + ]); + if ($boolIsMobile) { + return View::fetch(); + } else { + return View::fetch('pc/getBookShelf'); + } + } + + // 男生女生频道 + public function getBoyNovel(Request $Request) + { + $boolIsMobile = $Request->param('boolIsMobile'); + $strChannel = $Request->param('strChannel'); // 区分男生/女生频道 + + // 模拟数据-推荐等级为9的,连载的,男生频道/女生频道, 随机12个小说 + $arrRecommendSerializationNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ['id' => 6, 'name' => '小说3', 'author' => '作者3'], + ['id' => 7, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ['id' => 9, 'name' => '小说3', 'author' => '作者3'], + ['id' => 10, 'name' => '小说3', 'author' => '作者3'], + ['id' => 11, 'name' => '小说3', 'author' => '作者3'], + ['id' => 12, 'name' => '小说3', 'author' => '作者3'], + ]; + // 模拟数据-推荐等级为9的,完结的,男生频道/女生频道, 随机8个小说 + $arrRecommendEndNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ['id' => 6, 'name' => '小说3', 'author' => '作者3'], + ['id' => 7, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + + ]; + + // 模拟数据-最近更新-随机50 + $arrNewsUpdateNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ['id' => 6, 'name' => '小说3', 'author' => '作者3'], + ['id' => 7, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ['id' => 9, 'name' => '小说3', 'author' => '作者3'], + ['id' => 10, 'name' => '小说3', 'author' => '作者3'], + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ['id' => 6, 'name' => '小说3', 'author' => '作者3'], + ['id' => 7, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ['id' => 9, 'name' => '小说3', 'author' => '作者3'], + ['id' => 10, 'name' => '小说3', 'author' => '作者3'], + ]; + + View::assign([ + 'arrNewsUpdateNovel' => $arrNewsUpdateNovel, + 'arrRecommendSerializationNovel' => $arrRecommendSerializationNovel, + 'arrRecommendEndNovel' => $arrRecommendEndNovel, + 'arrAdBanner' => [], + 'strPageCode' => $strChannel + ]); + if ($boolIsMobile) { + return View::fetch(); + } else { + return View::fetch('pc/getBoyNovel'); + } + } + + // 小说详情 + public function getNovelInfo(Request $Request) + { + $boolIsMobile = $Request->param('boolIsMobile'); + + // 模拟数据-随机推荐数据10条 + $arrRecommendNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ['id' => 6, 'name' => '小说3', 'author' => '作者3'], + ['id' => 7, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ]; + + View::assign([ + 'arrRecommendNovel' => $arrRecommendNovel, + 'strPageCode' => 'boy' + ]); + if ($boolIsMobile) { + return View::fetch(); + } else { + return View::fetch('pc/getNovelInfo'); + } + } + + // 小说章节 + public function getNovelChapter(Request $Request) + { + $boolIsMobile = $Request->param('boolIsMobile'); + + // 模拟数据 + $arrNewsNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ['id' => 6, 'name' => '小说3', 'author' => '作者3'], + ['id' => 7, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ]; + + View::assign([ + 'arrNewsNovel' => $arrNewsNovel, + 'strPageCode' => 'boy' + ]); + if ($boolIsMobile) { + return View::fetch(); + } else { + return View::fetch('pc/getNovelChapter'); + } + } + + // 小说章节-所有章节 + public function getNovelChapterAll(Request $Request) + { + $boolIsMobile = $Request->param('boolIsMobile'); + + // 模拟数据 + $arrNovelChapterAll = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ['id' => 6, 'name' => '小说3', 'author' => '作者3'], + ['id' => 7, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ]; + + View::assign([ + 'arrNovelChapterAll' => $arrNovelChapterAll, + 'strPageCode' => 'boy' + ]); + if ($boolIsMobile) { + return View::fetch(); + } else { + return View::fetch('pc/getNovelChapterAll'); + } + } + + + + // 小说章节-搜索 + public function getSearchNovel(Request $Request) + { + $boolIsMobile = $Request->param('boolIsMobile'); + + // 模拟数据 + $arrSearchNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ['id' => 6, 'name' => '小说3', 'author' => '作者3'], + ['id' => 7, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ]; + + View::assign([ + 'arrSearchNovel' => $arrSearchNovel, + 'strPageCode' => 'search' + ]); + if ($boolIsMobile) { + return View::fetch(); + } else { + return View::fetch('pc/getSearchNovel'); + } + } + + // 小说章节-SEO-自定义页面-列表 + public function getSeoList(Request $Request) + { + $boolIsMobile = $Request->param('boolIsMobile'); + + // 模拟数据 + $arrNewsNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ['id' => 6, 'name' => '小说3', 'author' => '作者3'], + ['id' => 7, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ]; + + View::assign([ + 'arrNewsNovel' => $arrNewsNovel, + 'strPageCode' => 'article' + ]); + if ($boolIsMobile) { + return View::fetch(); + } else { + return View::fetch('pc/getSeoList'); + } + } + + // 小说章节-SEO-自定义页面-详情 + public function getSeoInfo(Request $Request) + { + $boolIsMobile = $Request->param('boolIsMobile'); + + // 模拟数据 + $arrNewsNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ['id' => 6, 'name' => '小说3', 'author' => '作者3'], + ['id' => 7, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ]; + + View::assign([ + 'arrNewsNovel' => $arrNewsNovel, + 'strPageCode' => 'article' + ]); + if ($boolIsMobile) { + return View::fetch(); + } else { + return View::fetch('pc/getSeoInfo'); + } + } + + + } diff --git a/code/app/home/controller/User.php b/code/app/home/controller/User.php new file mode 100644 index 0000000..2baf88a --- /dev/null +++ b/code/app/home/controller/User.php @@ -0,0 +1,300 @@ +param('boolIsMobile'); + + // 模拟数据 + $arrNewsNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + + ]; + + View::assign([ + 'arrNewsNovel' => $arrNewsNovel, + ]); + + if ($boolIsMobile) { + return View::fetch(); + } else { + return View::fetch('Pc/User/index'); + } + } + + public function getBookShelf(Request $Request) + { + // 获取路由附加的参数 + $boolIsMobile = $Request->param('boolIsMobile'); + + // 模拟数据 + $arrNewsNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + + ]; + + View::assign([ + 'arrNewsNovel' => $arrNewsNovel, + ]); + + if ($boolIsMobile) { + return View::fetch(); + } else { + return View::fetch('Pc/User/getBookShelf'); + } + } + + public function getHistory(Request $Request) + { + // 获取路由附加的参数 + $boolIsMobile = $Request->param('boolIsMobile'); + + // 模拟数据 + $arrNewsNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + + ]; + + View::assign([ + 'arrNewsNovel' => $arrNewsNovel, + ]); + + if ($boolIsMobile) { + return View::fetch(); + } else { + return View::fetch('Pc/User/history'); + } + } + + + + + + public function getPcIndex(Request $Request) + { + // 获取路由附加的参数 + $boolIsMobile = $Request->param('boolIsMobile'); + + // 模拟数据-推荐等级为9的连载的 随机15个小说 + $arrRecommendSerializationNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ['id' => 6, 'name' => '小说3', 'author' => '作者3'], + ['id' => 7, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ['id' => 9, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ['id' => 15, 'name' => '小说3', 'author' => '作者3'], + ]; + // 模拟数据-推荐等级为9的完结的 随机12个小说 + $arrRecommendEndNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ['id' => 6, 'name' => '小说3', 'author' => '作者3'], + ['id' => 7, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ['id' => 9, 'name' => '小说3', 'author' => '作者3'], + ['id' => 10, 'name' => '小说3', 'author' => '作者3'], + ['id' => 11, 'name' => '小说3', 'author' => '作者3'], + ['id' => 12, 'name' => '小说3', 'author' => '作者3'], + + ]; + + // 模拟数据-男生频道,最新的 随机5个小说 + $arrBoyNewsNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ]; + // 模拟数据-男生频道,周排行榜 随机10个小说 + $arrBoyWeekRankNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ['id' => 6, 'name' => '小说3', 'author' => '作者3'], + ['id' => 7, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ['id' => 9, 'name' => '小说3', 'author' => '作者3'], + ['id' => 10, 'name' => '小说3', 'author' => '作者3'], + ]; + // 模拟数据-男生频道,月排行榜 随机10个小说 + $arrBoyMoonRankNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ['id' => 6, 'name' => '小说3', 'author' => '作者3'], + ['id' => 7, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ['id' => 9, 'name' => '小说3', 'author' => '作者3'], + ['id' => 10, 'name' => '小说3', 'author' => '作者3'], + ]; + // 模拟数据-男生频道,总排行榜 随机10个小说 + $arrBoyTotalRankNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ['id' => 6, 'name' => '小说3', 'author' => '作者3'], + ['id' => 7, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ['id' => 9, 'name' => '小说3', 'author' => '作者3'], + ['id' => 10, 'name' => '小说3', 'author' => '作者3'], + ]; + + + + // 模拟数据-男生频道,最新的 随机5个小说 + $arrGirlNewsNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ]; + // 模拟数据-男生频道,周排行榜 随机10个小说 + $arrGirlWeekRankNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ['id' => 6, 'name' => '小说3', 'author' => '作者3'], + ['id' => 7, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ['id' => 9, 'name' => '小说3', 'author' => '作者3'], + ['id' => 10, 'name' => '小说3', 'author' => '作者3'], + ]; + // 模拟数据-男生频道,月排行榜 随机10个小说 + $arrGirlMoonRankNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ['id' => 6, 'name' => '小说3', 'author' => '作者3'], + ['id' => 7, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ['id' => 9, 'name' => '小说3', 'author' => '作者3'], + ['id' => 10, 'name' => '小说3', 'author' => '作者3'], + ]; + // 模拟数据-男生频道,总排行榜 随机10个小说 + $arrBGirlTotalRankNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ['id' => 6, 'name' => '小说3', 'author' => '作者3'], + ['id' => 7, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ['id' => 9, 'name' => '小说3', 'author' => '作者3'], + ['id' => 10, 'name' => '小说3', 'author' => '作者3'], + ]; + + + // 模拟数据-最近更新-随机50 + $arrNewsUpdateNovel = [ + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ['id' => 6, 'name' => '小说3', 'author' => '作者3'], + ['id' => 7, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ['id' => 9, 'name' => '小说3', 'author' => '作者3'], + ['id' => 10, 'name' => '小说3', 'author' => '作者3'], + ['id' => 1, 'name' => '小说1', 'author' => '作者1'], + ['id' => 2, 'name' => '小说2', 'author' => '作者2'], + ['id' => 3, 'name' => '小说3', 'author' => '作者3'], + ['id' => 4, 'name' => '小说3', 'author' => '作者3'], + ['id' => 5, 'name' => '小说3', 'author' => '作者3'], + ['id' => 6, 'name' => '小说3', 'author' => '作者3'], + ['id' => 7, 'name' => '小说3', 'author' => '作者3'], + ['id' => 8, 'name' => '小说3', 'author' => '作者3'], + ['id' => 9, 'name' => '小说3', 'author' => '作者3'], + ['id' => 10, 'name' => '小说3', 'author' => '作者3'], + ]; + + View::assign([ + 'arrNewsUpdateNovel' => $arrNewsUpdateNovel, + 'arrRecommendSerializationNovel' => $arrRecommendSerializationNovel, + 'arrRecommendEndNovel' => $arrRecommendEndNovel, + 'arrBoyNewsNovel' => $arrBoyNewsNovel, + 'arrBoyWeekRankNovel' => $arrBoyWeekRankNovel, + 'arrBoyMoonRankNovel' => $arrBoyMoonRankNovel, + 'arrBoyTotalRankNovel' => $arrBoyTotalRankNovel, + 'arrGirlNewsNovel' => $arrGirlNewsNovel, + 'arrGirlWeekRankNovel' => $arrGirlWeekRankNovel, + 'arrGirlMoonRankNovel' => $arrGirlMoonRankNovel, + 'arrBGirlTotalRankNovel' => $arrBGirlTotalRankNovel, + 'arrAdBanner' => [], + + ]); + + if ($boolIsMobile) { + return View::fetch(); + } else { + return View::fetch('pc/index'); + } + } + + + + public function test() + { + + $strNovelKey = "novels/12/chapters/3001.txt"; + $StorageCore = StorageCore::getInstance(); + + // $content = '我是一个大傻逼'; + + $content = file_get_contents('123.txt'); + + if ($StorageCore->has($strNovelKey)) { + // $MinIO->update($strNovelKey, $content); // 更新已有文件 + } else { + $StorageCore->write($strNovelKey, $content); // 创建新文件 + } + + echo $StorageCore->read($strNovelKey); + return; + } +} diff --git a/code/app/home/view/default/Index/index.html b/code/app/home/view/default/Index/index.html index 0472b6e..50c2012 100644 --- a/code/app/home/view/default/Index/index.html +++ b/code/app/home/view/default/Index/index.html @@ -1 +1,4 @@ -12312321 \ No newline at end of file +12312321 + +/info/id +/xs/id \ No newline at end of file diff --git a/code/app/home/view/kuangyu/Index/index.html b/code/app/home/view/kuangyu/Index/index.html new file mode 100644 index 0000000..4531f3c --- /dev/null +++ b/code/app/home/view/kuangyu/Index/index.html @@ -0,0 +1,133 @@ +{extend name="baseH5" /} +{block name='nav-active-class'}home{/block} +{block name="title"}{/block} +{block name="head-js"}{/block} + +{block name="logo-html"} +

+ 狂雨小说 +

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

热门小说

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

最新小说

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

小说排行榜

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

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

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

热门推荐

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

最近更新

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

+ 狂雨小说/书库 +

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

下拉阅读上一章

+
+ + +
+
+ +

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

+ +
+
+ + + +
+
+

01 天龙问世

+
+ 你刚刚阅读到这里 +

1/1

+
+
+
+ + + 返回 + + +
+ + +
+
+ 加入书架 +
+ + +

返回首页

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

我真是一条龙

+

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

+
+
+
+ +
+
+
+

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

+
+
+
+
+ + +
+
+
+

精简阅读

+
+
+
+

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

+

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

+
+
+ + +
+
+ + +
+
+

目录

+
+ +
+ +
+
+

同类作品

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

目录

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